On 2025-08-11 19:36, Dmytro Prokopchuk1 wrote:
MISRA Rule 16.4: Every switch statement shall have a default label. The
default clause must contain either a statement or a comment prior to its
terminating break statement.

This change adds comments in default cases in single-clause switches to
avoid violations of the rule where the `default` clause lacks a suitable
comment or statement.


If you want to go this way then at least this config wants dropping:

-doc_begin="A switch statement with a single switch clause and no default label may be used in place of an equivalent if statement if it is considered to improve readability."
-config=MC3A2.R16.4,switch_clauses+={deliberate,"switch(1)&&default(0)"}
-doc_end

and probably this one too (haven't checked):

-doc_begin="A switch statement with a single switch clause and no default label may be used in place of an equivalent if statement if it is considered to improve readability."
-config=MC3A2.R16.6,switch_clauses+={deliberate, "default(0)"}
-doc_end

In the end it's a tradeoff; placing a comment with a suitable argumentation might be strictly better than simply tagging the tool report, at least from a developer's perspective. From a MISRA compliance standpoint in my opinion both are fine. Let's see what the maintainers think.

Signed-off-by: Dmytro Prokopchuk <dmytro_prokopch...@epam.com>
---
 xen/arch/arm/cpuerrata.c | 5 +++++
 xen/arch/arm/gic.c       | 6 ++++++
 xen/arch/arm/mmu/p2m.c   | 6 ++++++
 xen/arch/arm/time.c      | 6 ++++++
 xen/common/kexec.c       | 6 ++++++
 5 files changed, 29 insertions(+)

diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
index 17cf134f1b..e31c72694b 100644
--- a/xen/arch/arm/cpuerrata.c
+++ b/xen/arch/arm/cpuerrata.c
@@ -735,6 +735,11 @@ static int cpu_errata_callback(struct notifier_block *nfb,
         rc = enable_nonboot_cpu_caps(arm_errata);
         break;
     default:
+        /*
+ * Default case left empty as other notifier actions do not require handling here. + * The single CPU_STARTING action in the switch is sufficient because this function + * specifically handles enabling errata workarounds during CPU startup.
+         */
         break;
     }

diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index e80fe0ca24..dfbb0dfe08 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -436,6 +436,12 @@ static int cpu_gic_callback(struct notifier_block *nfb,
         release_irq(gic_hw_ops->info->maintenance_irq, NULL);
         break;
     default:
+        /*
+ * Default case left empty as other notifier actions do not require handling here. + * The CPU_DYING action specifically handles releasing resources acquired by + * init_maintenance_interrupt(), when the CPU is being taken offline. Other CPU
+         * actions do not require GIC-specific handling.
+         */
         break;
     }

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51abf3504f..d1f0ae0226 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1828,6 +1828,12 @@ static int cpu_virt_paging_callback(struct notifier_block *nfb,
         setup_virt_paging_one(NULL);
         break;
     default:
+        /*
+ * Default case left empty as other notifier actions do not require handling here. + * The CPU_STARTING action is specifically handled because this function sets up + * virtual paging for CPUs, particularly for non-boot CPUs during hotplug. Other
+         * actions do not involve virtual paging setup.
+         */
         break;
     }

diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index e74d30d258..4776110d97 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -382,6 +382,12 @@ static int cpu_time_callback(struct notifier_block *nfb,
         deinit_timer_interrupt();
         break;
     default:
+        /*
+ * Default case left empty as other notifier actions do not require handling here. + * The CPU_DYING action is specifically handled to revert actions done in + * init_timer_interrupt() and properly disable timer interrupts on the CPU being + * taken offline. Other actions do not involve timer deinitialization.
+         */
         break;
     }

diff --git a/xen/common/kexec.c b/xen/common/kexec.c
index 84fe8c3597..0f78087a4a 100644
--- a/xen/common/kexec.c
+++ b/xen/common/kexec.c
@@ -549,6 +549,12 @@ static int cf_check cpu_callback(
         kexec_init_cpu_notes(cpu);
         break;
     default:
+        /*
+ * Default case left empty as other notifier actions do not require handling here. + * The CPU_UP_PREPARE action is specifically handled to allocate crash note buffers + * for a newly onlined CPU. Other actions do not pertain to crash note allocation
+         * or memory preservation for kexec.
+         */
         break;
     }
     return NOTIFY_DONE;

--
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253

Reply via email to