All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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.