[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>
  • Date: Thu, 9 Jul 2026 11:33:56 +0000
  • Accept-language: en-US, uk-UA, ru-RU
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=On/+6T5e7fGEGXhL0HOug9LevHHShkMwKJfWSqo7x8w=; b=g8qUwwizT2dfKPnJLXPHwBDHJadR7+6fBsOV5spauOcan3SoCaNE/KsGeswNNhKmNj+p2d0kVXOejTMfkDz1D1Em+z9rn7jMYoyohcuVW4iNEjRUkuGcBk/8aIY/D/x4+KzJ7ySSJDPfBM8OQsKkKLpY6/3cds2vubV6DHcRk9GfQwE2kAeA9tPzSvYPyV2uprtImhCswjdDAR90/1rD7kr5EDfyrCQsLI9L+x7vGDI3SaZHjp9IWNk4H9VTZxjr6aKdeC44+/dUgsrY0KBeVamzAsnMkL1L2zmf6tZpr13UUFIpuuadYUOYF0LEhMwMXygANklMz3J4Ac0XFXJ4hg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oMFBaY9wN5ZuFpndd3fftTQd8O8gyNTvsx34lcZa71uViXg5OyjrWAUKG0CIzjV+9GQTAkO0zJs55P0A8eVx6Zez76aFeWX20+TCNGYz+LWO/YU7IW6WETobR2/SCJvZc+/C0DeTa7RwzQ62Riawz557R2a2gvADP1HyByH3ImwXen2o1hJtnmcx2e+2sM75sZOAMeNxiT8QZPXX3sB+Nbj5uBY8HXcMXMMg07sS3gFX7FuVM9kzCkFd1nzP/DnahIx1AkwsAqiWCqPpxj+PAmCqIY26f1U4s9Ui6isCwdpxin2eIkAif4mWlryp28VudKK3Cw7ECNR/1k46tx4QHA==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:x-ms-exchange-senderadcheck"
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 09 Jul 2026 11:34:06 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHcyEeH3FAPJgz8C0q4McY6u5ZElbXXzxqAgHMEWQCAGq9yAIAADjEAgAAMAIA=
  • Thread-topic: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1


On 7/9/26 13:50, Jan Beulich wrote:
> On 09.07.2026 12:00, Dmytro Prokopchuk1 wrote:
>> On 6/22/26 13:29, Dmytro Prokopchuk wrote:
>>> On 4/10/26 09:04, Jan Beulich wrote:
>>>> On 09.04.2026 19:37, Dmytro Prokopchuk1 wrote:
>>>>> MISRA C Rule 2.1 states: "A project shall not contain unreachable code".
>>>>>
>>>>> In certain build configurations,
>>>>
>>>> Can you give an example where ...
>>> If CONFIG_VM_EVENT is enabled on ARM.
>>>>
>>>>> the function 'altp2m_vcpu_idx()' is defined
>>>>> as an inline function that contains the 'BUG()' macro. This resulted
>>>>> in a
>>>>> violation because the 'BUG()' macro makes the function non-returning.
>>>>>
>>>>> To ensure compliance with MISRA C Rule 2.1, this patch removes the
>>>>> inline
>>>>> function implementation and its BUG()-based unreachable code. It is
>>>>> replaced
>>>>> with an unconditional function declaration for 'altp2m_vcpu_idx()'.
>>>>
>>>> ... a declaration is needed? The sole non-x86 reference I see is from
>>> Yes, declaration is needed. The file 'common/monitor.c' contains a usage
>>> of the 'altp2m_vcpu_idx()' and compiler must see it to avoid "error:
>>> implicit declaration of function ‘altp2m_vcpu_idx’".
>>>> common/monitor.c, and the sole relevant Kconfig option I can spot is
>>>> VM_EVENT. When that's off, the file won't be built at all.
>>> But when 'CONFIG_VM_EVENT=y' this file is compiled on ARM.
>>>>
>>>> Further, BUG() and a few more constructs have a dedicated deviation
>>>> already in place. I don't mind a useless function to be shrunk (or, as
>>>> per above, perhaps even dropped), but the justification then needs to
>>>> be different.
>>> Well, with Stefano's comment regarding return type, the commit subject
>>> and message could be rewritten like:
>>>
>>> generic/altp2m: align and simplify altp2m_vcpu_idx()
>>>
>>> The return type of 'altp2m_vcpu_idx()' in the generic altp2m.h header is
>>> currently 'unsigned int', which is inconsistent with its 'uint16_t'
>>> return type on x86 and the 'altp2m_idx' member of the monitor structures.
>>>
>>> To fix this type inconsistency and simplify the header, this patch
>>> replaces the static inline implementation of
>>> 'altp2m_vcpu_idx()' (contained a BUG() stub) with a simple function
>>> declaration returning
>>> uint16_t.
>>>
>>> For architectures using the generic altp2m.h header (such as ARM when
>>> CONFIG_VM_EVENT is enabled), common code calls to 'altp2m_vcpu_idx()' in
>>> common/monitor.c are guarded by 'altp2m_active()', which
>>> statically returns 'false'. The compiler's DCE will optimize out these
>>> calls, avoiding any linker issues for the missing definition.
>>
>> Hello Jan,
>>
>> kind reminder. Please, take a look.
> 
> I did, back then already. No specific question was asked for me to answer,
> so I was expecting a re-submission, allowing to see new description and
> code changes together. That'll then make it easier / more natural to
> comment on.
> 
> Jan

Ack.
I'll submit a new version.

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.