* [PATCH 1/2] x86/mm: address Misra C:2012 rule 16.2 [not found] <e3cdf68f-122a-4a41-a72c-8e6ed857b282@suse.com> @ 2026-05-13 14:05 ` Jan Beulich 2026-05-22 10:34 ` Roger Pau Monné [not found] ` <d04afa56-1197-4f5c-b158-b4b7eb7fc6b9@suse.com> 1 sibling, 1 reply; 4+ messages in thread From: Jan Beulich @ 2026-05-13 14:05 UTC (permalink / raw) To: xen-devel@lists.xenproject.org Cc: Andrew Cooper, Roger Pau Monné, Teddy Astie ... ("A switch label shall only be used when the most closely-enclosing compound statement is the body of a `switch' statement"). Use a form of fall-through instead. No difference in generated code, except for some line number changes. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2663,15 +2663,17 @@ static int validate_page(struct page_inf get_gpfn_from_mfn(mfn_x(page_to_mfn(page))), type, page->count_info, page->u.inuse.type_info); if ( page != current->arch.old_guest_table ) - page->u.inuse.type_info = 0; - else { - ASSERT((page->u.inuse.type_info & - (PGT_count_mask | PGT_validated)) == 1); - case -ERESTART: - get_page_light(page); - page->u.inuse.type_info |= PGT_partial; + page->u.inuse.type_info = 0; + break; } + + ASSERT((page->u.inuse.type_info & + (PGT_count_mask | PGT_validated)) == 1); + fallthrough; + case -ERESTART: + get_page_light(page); + page->u.inuse.type_info |= PGT_partial; break; } ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] x86/mm: address Misra C:2012 rule 16.2 2026-05-13 14:05 ` [PATCH 1/2] x86/mm: address Misra C:2012 rule 16.2 Jan Beulich @ 2026-05-22 10:34 ` Roger Pau Monné 0 siblings, 0 replies; 4+ messages in thread From: Roger Pau Monné @ 2026-05-22 10:34 UTC (permalink / raw) To: Jan Beulich; +Cc: xen-devel@lists.xenproject.org, Andrew Cooper, Teddy Astie On Wed, May 13, 2026 at 04:05:55PM +0200, Jan Beulich wrote: > ... ("A switch label shall only be used when the most closely-enclosing > compound statement is the body of a `switch' statement"). Use a form of > fall-through instead. No difference in generated code, except for some > line number changes. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Roger Pau Monné <roger.pau@citrix.com> Thanks, Roger. ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <d04afa56-1197-4f5c-b158-b4b7eb7fc6b9@suse.com>]
* Re: [PATCH 2/2] x86/PV: address Misra C:2012 rule 16.2 [not found] ` <d04afa56-1197-4f5c-b158-b4b7eb7fc6b9@suse.com> @ 2026-05-22 10:49 ` Roger Pau Monné 2026-05-22 11:00 ` Jan Beulich 0 siblings, 1 reply; 4+ messages in thread From: Roger Pau Monné @ 2026-05-22 10:49 UTC (permalink / raw) To: Jan Beulich; +Cc: xen-devel@lists.xenproject.org, Andrew Cooper, Teddy Astie On Wed, May 13, 2026 at 04:06:20PM +0200, Jan Beulich wrote: > ... ("A switch label shall only be used when the most closely-enclosing > compound statement is the body of a `switch' statement"). While I don't > really like doing so, use a few "goto" instead. No change in generated > code (somewhat to my surprise). > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Roger Pau Monné <roger.pau@citrix.com> With one alternative below if you would like to remove one of the introduced labels. > > --- a/xen/arch/x86/pv/emul-priv-op.c > +++ b/xen/arch/x86/pv/emul-priv-op.c > @@ -897,7 +897,7 @@ static int cf_check read_msr( > struct vcpu *curr = current; > const struct domain *currd = curr->domain; > const struct cpu_policy *cp = currd->arch.cpu_policy; > - bool vpmu_msr = false, warn = false; > + bool warn = false; > uint64_t tmp; > int ret; > > @@ -996,21 +996,21 @@ static int cf_check read_msr( > case MSR_CORE_PERF_FIXED_CTR0 ... MSR_CORE_PERF_FIXED_CTR2: > case MSR_CORE_PERF_FIXED_CTR_CTRL ... MSR_CORE_PERF_GLOBAL_OVF_CTRL: > if ( boot_cpu_data.vendor == X86_VENDOR_INTEL ) > - { > - vpmu_msr = true; > - /* fall through */ > + goto vpmu; > + goto check_relaxed; > + > case MSR_AMD_FAM15H_EVNTSEL0 ... MSR_AMD_FAM15H_PERFCTR5: > case MSR_K7_EVNTSEL0 ... MSR_K7_PERFCTR3: > - if ( vpmu_msr || (boot_cpu_data.vendor & > - (X86_VENDOR_AMD | X86_VENDOR_HYGON)) ) > - { > - if ( vpmu_do_rdmsr(reg, val) ) > - break; > - return X86EMUL_OKAY; > - } > + if ( boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON) ) > + { > + vpmu: > + if ( vpmu_do_rdmsr(reg, val) ) > + break; > + return X86EMUL_OKAY; > } > /* fall through */ > default: > + check_relaxed: Not sure it's much better, but I think you could avoid the vpmu label at the cost of keeping the vpmu_msr local variable: case MSR_CORE_PERF_FIXED_CTR0 ... MSR_CORE_PERF_FIXED_CTR2: case MSR_CORE_PERF_FIXED_CTR_CTRL ... MSR_CORE_PERF_GLOBAL_OVF_CTRL: if ( boot_cpu_data.vendor != X86_VENDOR_INTEL ) goto check_relaxed; vpmu_msr = true; fallthrough; case MSR_AMD_FAM15H_EVNTSEL0 ... MSR_AMD_FAM15H_PERFCTR5: case MSR_K7_EVNTSEL0 ... MSR_K7_PERFCTR3: if ( vpmu_msr || (boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)) ) Thanks, Roger. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] x86/PV: address Misra C:2012 rule 16.2 2026-05-22 10:49 ` [PATCH 2/2] x86/PV: " Roger Pau Monné @ 2026-05-22 11:00 ` Jan Beulich 0 siblings, 0 replies; 4+ messages in thread From: Jan Beulich @ 2026-05-22 11:00 UTC (permalink / raw) To: Roger Pau Monné Cc: xen-devel@lists.xenproject.org, Andrew Cooper, Teddy Astie On 22.05.2026 12:49, Roger Pau Monné wrote: > On Wed, May 13, 2026 at 04:06:20PM +0200, Jan Beulich wrote: >> ... ("A switch label shall only be used when the most closely-enclosing >> compound statement is the body of a `switch' statement"). While I don't >> really like doing so, use a few "goto" instead. No change in generated >> code (somewhat to my surprise). >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > Acked-by: Roger Pau Monné <roger.pau@citrix.com> Thanks. > With one alternative below if you would like to remove one of the > introduced labels. > >> >> --- a/xen/arch/x86/pv/emul-priv-op.c >> +++ b/xen/arch/x86/pv/emul-priv-op.c >> @@ -897,7 +897,7 @@ static int cf_check read_msr( >> struct vcpu *curr = current; >> const struct domain *currd = curr->domain; >> const struct cpu_policy *cp = currd->arch.cpu_policy; >> - bool vpmu_msr = false, warn = false; >> + bool warn = false; >> uint64_t tmp; >> int ret; >> >> @@ -996,21 +996,21 @@ static int cf_check read_msr( >> case MSR_CORE_PERF_FIXED_CTR0 ... MSR_CORE_PERF_FIXED_CTR2: >> case MSR_CORE_PERF_FIXED_CTR_CTRL ... MSR_CORE_PERF_GLOBAL_OVF_CTRL: >> if ( boot_cpu_data.vendor == X86_VENDOR_INTEL ) >> - { >> - vpmu_msr = true; >> - /* fall through */ >> + goto vpmu; >> + goto check_relaxed; >> + >> case MSR_AMD_FAM15H_EVNTSEL0 ... MSR_AMD_FAM15H_PERFCTR5: >> case MSR_K7_EVNTSEL0 ... MSR_K7_PERFCTR3: >> - if ( vpmu_msr || (boot_cpu_data.vendor & >> - (X86_VENDOR_AMD | X86_VENDOR_HYGON)) ) >> - { >> - if ( vpmu_do_rdmsr(reg, val) ) >> - break; >> - return X86EMUL_OKAY; >> - } >> + if ( boot_cpu_data.vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON) ) >> + { >> + vpmu: >> + if ( vpmu_do_rdmsr(reg, val) ) >> + break; >> + return X86EMUL_OKAY; >> } >> /* fall through */ >> default: >> + check_relaxed: > > Not sure it's much better, but I think you could avoid the vpmu label > at the cost of keeping the vpmu_msr local variable: > > case MSR_CORE_PERF_FIXED_CTR0 ... MSR_CORE_PERF_FIXED_CTR2: > case MSR_CORE_PERF_FIXED_CTR_CTRL ... MSR_CORE_PERF_GLOBAL_OVF_CTRL: > if ( boot_cpu_data.vendor != X86_VENDOR_INTEL ) > goto check_relaxed; > vpmu_msr = true; > fallthrough; > > case MSR_AMD_FAM15H_EVNTSEL0 ... MSR_AMD_FAM15H_PERFCTR5: > case MSR_K7_EVNTSEL0 ... MSR_K7_PERFCTR3: > if ( vpmu_msr || (boot_cpu_data.vendor & > (X86_VENDOR_AMD | X86_VENDOR_HYGON)) ) I was actually happy to see this last construct go away, which your variant would retain. Jan ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-05-22 11:01 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <e3cdf68f-122a-4a41-a72c-8e6ed857b282@suse.com>
2026-05-13 14:05 ` [PATCH 1/2] x86/mm: address Misra C:2012 rule 16.2 Jan Beulich
2026-05-22 10:34 ` Roger Pau Monné
[not found] ` <d04afa56-1197-4f5c-b158-b4b7eb7fc6b9@suse.com>
2026-05-22 10:49 ` [PATCH 2/2] x86/PV: " Roger Pau Monné
2026-05-22 11:00 ` Jan Beulich
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.