All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
To: Nicola Vetrini <nicola.vetrini@bugseng.com>
Cc: "xen-devel@lists.xenproject.org" <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: Tue, 12 Aug 2025 07:19:51 +0000	[thread overview]
Message-ID: <110fc2a9-2f48-4718-995b-3295b9c7e9aa@epam.com> (raw)
In-Reply-To: <d82cc723a17ec65f12fd60182fd6fe20@bugseng.com>



On 8/12/25 00:14, Nicola Vetrini wrote:
> 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.
> 

According to Jan's comment here
https://patchew.org/Xen/725ec86ac1aa883c35fb30b8f226c95cbe0934e9.1754322299.git.dmytro._5Fprokopchuk1@epam.com/
there were discussions about placing comments inside 'default' case.

Actually, my first patch removed 'default' case in single-clause switches.

Dmytro

>> 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;
> 

  reply	other threads:[~2025-08-12  7:20 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
2025-08-12  7:19   ` Dmytro Prokopchuk1 [this message]
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=110fc2a9-2f48-4718-995b-3295b9c7e9aa@epam.com \
    --to=dmytro_prokopchuk1@epam.com \
    --cc=Volodymyr_Babchuk@epam.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=bertrand.marquis@arm.com \
    --cc=julien@xen.org \
    --cc=michal.orzel@amd.com \
    --cc=nicola.vetrini@bugseng.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.