From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@epam.com>
Cc: "Jan Beulich" <jbeulich@suse.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Doug Goldstein" <cardoe@cardoe.com>,
"Andrew Cooper" <andrew.cooper3@citrix.com>,
"Anthony PERARD" <anthony.perard@vates.tech>,
"Michal Orzel" <michal.orzel@amd.com>,
"Julien Grall" <julien@xen.org>,
"Roger Pau Monné" <roger.pau@citrix.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH] misra: add deviation of Rule 2.1 for BUG() macro
Date: Tue, 26 Aug 2025 21:15:32 +0200 [thread overview]
Message-ID: <97fe4a398af94ee08a15a586ac4a6b4e@bugseng.com> (raw)
In-Reply-To: <d9e9deaa-fa3e-4f4a-aa70-772af4bc1371@epam.com>
On 2025-08-26 20:07, Dmytro Prokopchuk1 wrote:
> On 8/25/25 13:07, Jan Beulich wrote:
>> On 24.08.2025 16:56, Dmytro Prokopchuk1 wrote:
>>> --- a/docs/misra/deviations.rst
>>> +++ b/docs/misra/deviations.rst
>>> @@ -97,6 +97,19 @@ Deviations related to MISRA C:2012 Rules:
>>> Xen expects developers to ensure code remains safe and
>>> reliable in builds,
>>> even when debug-only assertions like `ASSERT_UNREACHABLE()
>>> are removed.
>>>
>>> + * - R2.1
>>> + - The 'BUG()' macro is intentionally used in the
>>> 'prepare_acpi()' function
>>> + in specific build configuration (when the config CONFIG_ACPI
>>> is not
>>> + defined) to trigger an error if ACPI-related features are
>>> used incorrectly.
>>> + - Tagged as `deliberate` for ECLAIR.
>>
>> With
>>
>> #define acpi_disabled true
>>
>> in xen/acpi.h I don't see why we even have that inline stub. When it's
>> dropped
>> and the declaration left in place without #ifdef CONFIG_ACPI around
>> it, the
>> compiler will DCE the code (much like we arrange for in many other
>> places). No
>> deviation needed then.
>>
>> If such a deviation was to be added, it would need disambiguating. A
>> function
>> of the given name could appear in x86 as well. That wouldn't be
>> covered by the
>> Eclair config then, but it would be covered by the text here.
>>
>>> + * - R2.1
>>> + - The 'BUG()' macro is intentionally used in 'gicv3_do_LPI'()
>>> and
>>> + 'gicv3_its_setup_collection()' functions in specific build
>>> configuration
>>> + (when the config CONFIG_HAS_ITS is not defined) to catch and
>>> prevent any
>>> + unintended execution of code that should only run when ITS is
>>> available.
>>> + - Tagged as `deliberate` for ECLAIR.
>>
>> I didn't look at this, but I would very much hope that something
>> similar could
>> be done there as well.
>>
>> Jan
>
> After small changes related to prepare_acpi() function, Misra R2.1
> violation has gone. The compiler really does DCE:
>
> if ( acpi_disabled <<< this is TRUE )
> {
> rc = prepare_dtb_hwdom(d, kinfo);
> if ( rc < 0 )
> return rc;
> #ifdef CONFIG_HAS_PCI
> rc = pci_host_bridge_mappings(d);
> #endif
> }
> else
> rc = prepare_acpi(d, kinfo); <<< DCE
>
> I will publish it as separate patch.
> Thanks to Jan, I really appreciate his help.
>
>
> The situation with functions gicv3_do_LPI(),
> gicv3_its_setup_collection() and config CONFIG_HAS_ITS is little bit
> different.
> The compiler can do DCE in case when config CONFIG_HAS_ITS is "y", and
> Misra R2.1 violation related to these functions also can be resolved.
> Actually, no changes in source code need for that.
> But Eclair detects these violations because config CONFIG_HAS_ITS is
> "n", and source code is really compiled with inline stub functions
> (with
> BUG() macro).
> This is because config CONFIG_HAS_ITS is "experimental/unsupported"
>
> config HAS_ITS
> bool "GICv3 ITS MSI controller support (UNSUPPORTED)" if
> UNSUPPORTED
> depends on GICV3 && !NEW_VGIC && !ARM_32
>
> and to enable it need to set additional config: "CONFIG_UNSUPPORTED=y".
>
> I tried to test it (added "CONFIG_UNSUPPORTED=y" into
> automation/gitlab-ci/analyze.yaml file). You can see my CI pipeline:
> https://eclair-analysis-logs.xenproject.org/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/rule_2.1_gicv3_its_host_has_its_v2/ARM64/11144854092/PROJECT.ecd;/by_service.html#service&kind
>
> Unfortunately, I observed +6 new violations with that additional config
> "CONFIG_UNSUPPORTED=y".
>
> I don't know how and why these EXTRA_XEN_CONFIG were selected in the
> file 'automation/gitlab-ci/analyze.yaml'. And are we able to add new
> configs here ?....
>
You'll have to ask Stefano about that, but I doubt at this stage. Those
set of configs for Arm and X86 has been selected ~2 years ago.
> So, I see the next plan (just from my point of view):
> 1. Add "CONFIG_UNSUPPORTED=y" and resolve new violations.
> 2. Continue with proposed deviation
> 3. ... ?
>
> Thank you in advance.
> Dmytro.
--
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-26 19:15 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-24 14:56 [PATCH] misra: add deviation of Rule 2.1 for BUG() macro Dmytro Prokopchuk1
2025-08-24 15:29 ` Nicola Vetrini
2025-08-25 9:56 ` Dmytro Prokopchuk1
2025-08-25 10:07 ` Jan Beulich
2025-08-25 10:26 ` Dmytro Prokopchuk1
2025-08-26 18:07 ` Dmytro Prokopchuk1
2025-08-26 19:15 ` Nicola Vetrini [this message]
2025-08-26 23:51 ` Stefano Stabellini
2025-08-27 6:45 ` Dmytro Prokopchuk1
2025-08-27 6:43 ` 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=97fe4a398af94ee08a15a586ac4a6b4e@bugseng.com \
--to=nicola.vetrini@bugseng.com \
--cc=andrew.cooper3@citrix.com \
--cc=anthony.perard@vates.tech \
--cc=cardoe@cardoe.com \
--cc=dmytro_prokopchuk1@epam.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=roger.pau@citrix.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.