From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
Cc: xen-devel@lists.xenproject.org,
Stefano Stabellini <sstabellini@kernel.org>,
Julien Grall <julien@xen.org>,
Bertrand Marquis <bertrand.marquis@arm.com>,
Michal Orzel <michal.orzel@amd.com>,
Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH] misra: comment default case in single-clause switch
Date: Mon, 11 Aug 2025 23:14:31 +0200 [thread overview]
Message-ID: <d82cc723a17ec65f12fd60182fd6fe20@bugseng.com> (raw)
In-Reply-To: <1d3c5364b726e42a8c38c396f2e20efc52790f62.1754933752.git.dmytro_prokopchuk1@epam.com>
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_prokopchuk1@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
next prev parent reply other threads:[~2025-08-11 21:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-11 17:36 [PATCH] misra: comment default case in single-clause switch Dmytro Prokopchuk1
2025-08-11 17:40 ` Dmytro Prokopchuk1
2025-08-11 21:14 ` Nicola Vetrini [this message]
2025-08-12 7:19 ` Dmytro Prokopchuk1
2025-08-12 7:35 ` Jan Beulich
2025-08-12 7:49 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d82cc723a17ec65f12fd60182fd6fe20@bugseng.com \
--to=nicola.vetrini@bugseng.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=andrew.cooper3@citrix.com \
--cc=bertrand.marquis@arm.com \
--cc=dmytro_prokopchuk1@epam.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.