diff mbox series

[2/3] xen/x86: address violations of MISRA C:2012 Rule 14.4

Message ID d494980216b8f0f870083fcfae7269f45e779780.1701941924.git.maria.celeste.cesario@bugseng.com (mailing list archive)
State Superseded
Headers show
Series xen: address violations of MISRA C:2012 Rule 14.4 | expand

Commit Message

Simone Ballarin Dec. 7, 2023, 9:48 a.m. UTC
From: Maria Celeste Cesario <maria.celeste.cesario@bugseng.com>

The xen sources contain violations of MISRA C:2012 Rule 14.4 whose
headline states:
"The controlling expression of an if statement and the controlling
expression of an iteration-statement shall have essentially Boolean type".

Add comparisons to avoid using enum constants as controlling expressions
to comply with Rule 14.4.
No functional change.

Signed-off-by: Maria Celeste Cesario  <maria.celeste.cesario@bugseng.com>
Signed-off-by: Simone Ballarin  <simone.ballarin@bugseng.com>
---
 xen/arch/x86/hpet.c                    | 6 +++---
 xen/arch/x86/msi.c                     | 4 ++--
 xen/arch/x86/x86_emulate/x86_emulate.c | 8 ++++----
 3 files changed, 9 insertions(+), 9 deletions(-)

Comments

Jan Beulich Dec. 7, 2023, 10:54 a.m. UTC | #1
On 07.12.2023 10:48, Simone Ballarin wrote:
> --- a/xen/arch/x86/hpet.c
> +++ b/xen/arch/x86/hpet.c
> @@ -279,7 +279,7 @@ static int hpet_msi_write(struct hpet_event_channel *ch, struct msi_msg *msg)
>  {
>      ch->msi.msg = *msg;
>  
> -    if ( iommu_intremap )
> +    if ( iommu_intremap != iommu_intremap_off )
>      {
>          int rc = iommu_update_ire_from_msi(&ch->msi, msg);
>  
> @@ -353,7 +353,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>      u32 cfg = hpet_read32(HPET_Tn_CFG(ch->idx));
>      irq_desc_t *desc = irq_to_desc(ch->msi.irq);
>  
> -    if ( iommu_intremap )
> +    if ( iommu_intremap != iommu_intremap_off )
>      {
>          ch->msi.hpet_id = hpet_blockid;
>          ret = iommu_setup_hpet_msi(&ch->msi);
> @@ -372,7 +372,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>          ret = __hpet_setup_msi_irq(desc);
>      if ( ret < 0 )
>      {
> -        if ( iommu_intremap )
> +        if ( iommu_intremap != iommu_intremap_off )
>              iommu_update_ire_from_msi(&ch->msi, NULL);
>          return ret;
>      }
> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
> index 7f8e794254..72dce2e4ab 100644
> --- a/xen/arch/x86/msi.c
> +++ b/xen/arch/x86/msi.c
> @@ -189,7 +189,7 @@ static int write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
>  {
>      entry->msg = *msg;
>  
> -    if ( iommu_intremap )
> +    if ( iommu_intremap != iommu_intremap_off )
>      {
>          int rc;
>  
> @@ -555,7 +555,7 @@ int msi_free_irq(struct msi_desc *entry)
>              destroy_irq(entry[nr].irq);
>  
>          /* Free the unused IRTE if intr remap enabled */
> -        if ( iommu_intremap )
> +        if ( iommu_intremap != iommu_intremap_off )
>              iommu_update_ire_from_msi(entry + nr, NULL);
>      }
>  

All of this would logically be part of patch 1. Is there a particular reason
why it wasn't done right there?

> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
> @@ -1320,7 +1320,7 @@ x86_emulate(
>          ea.bytes = 2;
>          goto srcmem_common;
>      case SrcMem:
> -        if ( state->simd_size )
> +        if ( state->simd_size != simd_none )
>              break;
>          ea.bytes = (d & ByteOp) ? 1 : op_bytes;
>      srcmem_common:
> @@ -1460,7 +1460,7 @@ x86_emulate(
>          /* Becomes a normal DstMem operation from here on. */
>      case DstMem:
>          generate_exception_if(ea.type == OP_MEM && evex.z, X86_EXC_UD);
> -        if ( state->simd_size )
> +        if ( state->simd_size != simd_none )
>          {
>              generate_exception_if(lock_prefix, X86_EXC_UD);
>              break;
> @@ -8176,7 +8176,7 @@ x86_emulate(
>          goto done;
>      }
>  
> -    if ( state->rmw )
> +    if ( state->rmw != rmw_NONE )
>      {
>          ea.val = src.val;
>          op_bytes = dst.bytes;
> @@ -8205,7 +8205,7 @@ x86_emulate(
>  
>          dst.type = OP_NONE;
>      }
> -    else if ( state->simd_size )
> +    else if ( state->simd_size != simd_none )
>      {
>          generate_exception_if(!op_bytes, X86_EXC_UD);
>          generate_exception_if((vex.opcx && (d & TwoOp) &&

I'd be (somewhat reluctantly) okay with ack-ing this part of the patch.

Jan
Simone Ballarin Dec. 7, 2023, 1:53 p.m. UTC | #2
On 07/12/23 11:54, Jan Beulich wrote:
> On 07.12.2023 10:48, Simone Ballarin wrote:
>> --- a/xen/arch/x86/hpet.c
>> +++ b/xen/arch/x86/hpet.c
>> @@ -279,7 +279,7 @@ static int hpet_msi_write(struct hpet_event_channel *ch, struct msi_msg *msg)
>>   {
>>       ch->msi.msg = *msg;
>>   
>> -    if ( iommu_intremap )
>> +    if ( iommu_intremap != iommu_intremap_off )
>>       {
>>           int rc = iommu_update_ire_from_msi(&ch->msi, msg);
>>   
>> @@ -353,7 +353,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>>       u32 cfg = hpet_read32(HPET_Tn_CFG(ch->idx));
>>       irq_desc_t *desc = irq_to_desc(ch->msi.irq);
>>   
>> -    if ( iommu_intremap )
>> +    if ( iommu_intremap != iommu_intremap_off )
>>       {
>>           ch->msi.hpet_id = hpet_blockid;
>>           ret = iommu_setup_hpet_msi(&ch->msi);
>> @@ -372,7 +372,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>>           ret = __hpet_setup_msi_irq(desc);
>>       if ( ret < 0 )
>>       {
>> -        if ( iommu_intremap )
>> +        if ( iommu_intremap != iommu_intremap_off )
>>               iommu_update_ire_from_msi(&ch->msi, NULL);
>>           return ret;
>>       }
>> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
>> index 7f8e794254..72dce2e4ab 100644
>> --- a/xen/arch/x86/msi.c
>> +++ b/xen/arch/x86/msi.c
>> @@ -189,7 +189,7 @@ static int write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
>>   {
>>       entry->msg = *msg;
>>   
>> -    if ( iommu_intremap )
>> +    if ( iommu_intremap != iommu_intremap_off )
>>       {
>>           int rc;
>>   
>> @@ -555,7 +555,7 @@ int msi_free_irq(struct msi_desc *entry)
>>               destroy_irq(entry[nr].irq);
>>   
>>           /* Free the unused IRTE if intr remap enabled */
>> -        if ( iommu_intremap )
>> +        if ( iommu_intremap != iommu_intremap_off )
>>               iommu_update_ire_from_msi(entry + nr, NULL);
>>       }
>>   
> 
> All of this would logically be part of patch 1. Is there a particular reason
> why it wasn't done right there?

These changes and the ones in patch 1 are related, but still remain
independent. Patch 1 can be accepted without patch 2 and vice versa.
So we've decided to split the commits because patch 1 is in common
code, while patch 2 is in x86-specific code.

No other real reasons, but in any case we can move these changes to
patch 1.

> 
>> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
>> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
>> @@ -1320,7 +1320,7 @@ x86_emulate(
>>           ea.bytes = 2;
>>           goto srcmem_common;
>>       case SrcMem:
>> -        if ( state->simd_size )
>> +        if ( state->simd_size != simd_none )
>>               break;
>>           ea.bytes = (d & ByteOp) ? 1 : op_bytes;
>>       srcmem_common:
>> @@ -1460,7 +1460,7 @@ x86_emulate(
>>           /* Becomes a normal DstMem operation from here on. */
>>       case DstMem:
>>           generate_exception_if(ea.type == OP_MEM && evex.z, X86_EXC_UD);
>> -        if ( state->simd_size )
>> +        if ( state->simd_size != simd_none )
>>           {
>>               generate_exception_if(lock_prefix, X86_EXC_UD);
>>               break;
>> @@ -8176,7 +8176,7 @@ x86_emulate(
>>           goto done;
>>       }
>>   
>> -    if ( state->rmw )
>> +    if ( state->rmw != rmw_NONE )
>>       {
>>           ea.val = src.val;
>>           op_bytes = dst.bytes;
>> @@ -8205,7 +8205,7 @@ x86_emulate(
>>   
>>           dst.type = OP_NONE;
>>       }
>> -    else if ( state->simd_size )
>> +    else if ( state->simd_size != simd_none )
>>       {
>>           generate_exception_if(!op_bytes, X86_EXC_UD);
>>           generate_exception_if((vex.opcx && (d & TwoOp) &&
> 
> I'd be (somewhat reluctantly) okay with ack-ing this part of the patch.
> 
> Jan
Jan Beulich Dec. 7, 2023, 2:15 p.m. UTC | #3
On 07.12.2023 14:53, Simone Ballarin wrote:
> On 07/12/23 11:54, Jan Beulich wrote:
>> On 07.12.2023 10:48, Simone Ballarin wrote:
>>> --- a/xen/arch/x86/hpet.c
>>> +++ b/xen/arch/x86/hpet.c
>>> @@ -279,7 +279,7 @@ static int hpet_msi_write(struct hpet_event_channel *ch, struct msi_msg *msg)
>>>   {
>>>       ch->msi.msg = *msg;
>>>   
>>> -    if ( iommu_intremap )
>>> +    if ( iommu_intremap != iommu_intremap_off )
>>>       {
>>>           int rc = iommu_update_ire_from_msi(&ch->msi, msg);
>>>   
>>> @@ -353,7 +353,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>>>       u32 cfg = hpet_read32(HPET_Tn_CFG(ch->idx));
>>>       irq_desc_t *desc = irq_to_desc(ch->msi.irq);
>>>   
>>> -    if ( iommu_intremap )
>>> +    if ( iommu_intremap != iommu_intremap_off )
>>>       {
>>>           ch->msi.hpet_id = hpet_blockid;
>>>           ret = iommu_setup_hpet_msi(&ch->msi);
>>> @@ -372,7 +372,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>>>           ret = __hpet_setup_msi_irq(desc);
>>>       if ( ret < 0 )
>>>       {
>>> -        if ( iommu_intremap )
>>> +        if ( iommu_intremap != iommu_intremap_off )
>>>               iommu_update_ire_from_msi(&ch->msi, NULL);
>>>           return ret;
>>>       }
>>> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
>>> index 7f8e794254..72dce2e4ab 100644
>>> --- a/xen/arch/x86/msi.c
>>> +++ b/xen/arch/x86/msi.c
>>> @@ -189,7 +189,7 @@ static int write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
>>>   {
>>>       entry->msg = *msg;
>>>   
>>> -    if ( iommu_intremap )
>>> +    if ( iommu_intremap != iommu_intremap_off )
>>>       {
>>>           int rc;
>>>   
>>> @@ -555,7 +555,7 @@ int msi_free_irq(struct msi_desc *entry)
>>>               destroy_irq(entry[nr].irq);
>>>   
>>>           /* Free the unused IRTE if intr remap enabled */
>>> -        if ( iommu_intremap )
>>> +        if ( iommu_intremap != iommu_intremap_off )
>>>               iommu_update_ire_from_msi(entry + nr, NULL);
>>>       }
>>>   
>>
>> All of this would logically be part of patch 1. Is there a particular reason
>> why it wasn't done right there?
> 
> These changes and the ones in patch 1 are related, but still remain
> independent. Patch 1 can be accepted without patch 2 and vice versa.
> So we've decided to split the commits because patch 1 is in common
> code, while patch 2 is in x86-specific code.

Just to clarify: While not located under arch/x86/, what patch 1 touches
is still x86-specific code. It's subject prefix also wrongly says
AMD/IOMMU: when it also touches VT-d code. Especially with the changes
here folded in, x86/IOMMU: might be more appropriate.

Jan
Simone Ballarin Dec. 7, 2023, 2:25 p.m. UTC | #4
On 07/12/23 15:15, Jan Beulich wrote:
> On 07.12.2023 14:53, Simone Ballarin wrote:
>> On 07/12/23 11:54, Jan Beulich wrote:
>>> On 07.12.2023 10:48, Simone Ballarin wrote:
>>>> --- a/xen/arch/x86/hpet.c
>>>> +++ b/xen/arch/x86/hpet.c
>>>> @@ -279,7 +279,7 @@ static int hpet_msi_write(struct hpet_event_channel *ch, struct msi_msg *msg)
>>>>    {
>>>>        ch->msi.msg = *msg;
>>>>    
>>>> -    if ( iommu_intremap )
>>>> +    if ( iommu_intremap != iommu_intremap_off )
>>>>        {
>>>>            int rc = iommu_update_ire_from_msi(&ch->msi, msg);
>>>>    
>>>> @@ -353,7 +353,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>>>>        u32 cfg = hpet_read32(HPET_Tn_CFG(ch->idx));
>>>>        irq_desc_t *desc = irq_to_desc(ch->msi.irq);
>>>>    
>>>> -    if ( iommu_intremap )
>>>> +    if ( iommu_intremap != iommu_intremap_off )
>>>>        {
>>>>            ch->msi.hpet_id = hpet_blockid;
>>>>            ret = iommu_setup_hpet_msi(&ch->msi);
>>>> @@ -372,7 +372,7 @@ static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
>>>>            ret = __hpet_setup_msi_irq(desc);
>>>>        if ( ret < 0 )
>>>>        {
>>>> -        if ( iommu_intremap )
>>>> +        if ( iommu_intremap != iommu_intremap_off )
>>>>                iommu_update_ire_from_msi(&ch->msi, NULL);
>>>>            return ret;
>>>>        }
>>>> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
>>>> index 7f8e794254..72dce2e4ab 100644
>>>> --- a/xen/arch/x86/msi.c
>>>> +++ b/xen/arch/x86/msi.c
>>>> @@ -189,7 +189,7 @@ static int write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
>>>>    {
>>>>        entry->msg = *msg;
>>>>    
>>>> -    if ( iommu_intremap )
>>>> +    if ( iommu_intremap != iommu_intremap_off )
>>>>        {
>>>>            int rc;
>>>>    
>>>> @@ -555,7 +555,7 @@ int msi_free_irq(struct msi_desc *entry)
>>>>                destroy_irq(entry[nr].irq);
>>>>    
>>>>            /* Free the unused IRTE if intr remap enabled */
>>>> -        if ( iommu_intremap )
>>>> +        if ( iommu_intremap != iommu_intremap_off )
>>>>                iommu_update_ire_from_msi(entry + nr, NULL);
>>>>        }
>>>>    
>>>
>>> All of this would logically be part of patch 1. Is there a particular reason
>>> why it wasn't done right there?
>>
>> These changes and the ones in patch 1 are related, but still remain
>> independent. Patch 1 can be accepted without patch 2 and vice versa.
>> So we've decided to split the commits because patch 1 is in common
>> code, while patch 2 is in x86-specific code.
> 
> Just to clarify: While not located under arch/x86/, what patch 1 touches
> is still x86-specific code. It's subject prefix also wrongly says
> AMD/IOMMU: when it also touches VT-d code. Especially with the changes
> here folded in, x86/IOMMU: might be more appropriate.
> 

OK, then I'll move the changes and use x86/IOMMU.
Thanks.

> Jan
>
Stefano Stabellini Dec. 8, 2023, 12:50 a.m. UTC | #5
On Thu, 7 Dec 2023, Simone Ballarin wrote:
> From: Maria Celeste Cesario <maria.celeste.cesario@bugseng.com>
> 
> The xen sources contain violations of MISRA C:2012 Rule 14.4 whose
> headline states:
> "The controlling expression of an if statement and the controlling
> expression of an iteration-statement shall have essentially Boolean type".
> 
> Add comparisons to avoid using enum constants as controlling expressions
> to comply with Rule 14.4.
> No functional change.
> 
> Signed-off-by: Maria Celeste Cesario  <maria.celeste.cesario@bugseng.com>
> Signed-off-by: Simone Ballarin  <simone.ballarin@bugseng.com>

I think it would have been better to put all the iommu_intremap changed
in the same patch (patch #1). But anyway:

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
diff mbox series

Patch

diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
index 7be26c6a9b..d1ddc8ddf6 100644
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -279,7 +279,7 @@  static int hpet_msi_write(struct hpet_event_channel *ch, struct msi_msg *msg)
 {
     ch->msi.msg = *msg;
 
-    if ( iommu_intremap )
+    if ( iommu_intremap != iommu_intremap_off )
     {
         int rc = iommu_update_ire_from_msi(&ch->msi, msg);
 
@@ -353,7 +353,7 @@  static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
     u32 cfg = hpet_read32(HPET_Tn_CFG(ch->idx));
     irq_desc_t *desc = irq_to_desc(ch->msi.irq);
 
-    if ( iommu_intremap )
+    if ( iommu_intremap != iommu_intremap_off )
     {
         ch->msi.hpet_id = hpet_blockid;
         ret = iommu_setup_hpet_msi(&ch->msi);
@@ -372,7 +372,7 @@  static int __init hpet_setup_msi_irq(struct hpet_event_channel *ch)
         ret = __hpet_setup_msi_irq(desc);
     if ( ret < 0 )
     {
-        if ( iommu_intremap )
+        if ( iommu_intremap != iommu_intremap_off )
             iommu_update_ire_from_msi(&ch->msi, NULL);
         return ret;
     }
diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index 7f8e794254..72dce2e4ab 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -189,7 +189,7 @@  static int write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
 {
     entry->msg = *msg;
 
-    if ( iommu_intremap )
+    if ( iommu_intremap != iommu_intremap_off )
     {
         int rc;
 
@@ -555,7 +555,7 @@  int msi_free_irq(struct msi_desc *entry)
             destroy_irq(entry[nr].irq);
 
         /* Free the unused IRTE if intr remap enabled */
-        if ( iommu_intremap )
+        if ( iommu_intremap != iommu_intremap_off )
             iommu_update_ire_from_msi(entry + nr, NULL);
     }
 
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index cf780da501..00b7365ed3 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -1320,7 +1320,7 @@  x86_emulate(
         ea.bytes = 2;
         goto srcmem_common;
     case SrcMem:
-        if ( state->simd_size )
+        if ( state->simd_size != simd_none )
             break;
         ea.bytes = (d & ByteOp) ? 1 : op_bytes;
     srcmem_common:
@@ -1460,7 +1460,7 @@  x86_emulate(
         /* Becomes a normal DstMem operation from here on. */
     case DstMem:
         generate_exception_if(ea.type == OP_MEM && evex.z, X86_EXC_UD);
-        if ( state->simd_size )
+        if ( state->simd_size != simd_none )
         {
             generate_exception_if(lock_prefix, X86_EXC_UD);
             break;
@@ -8176,7 +8176,7 @@  x86_emulate(
         goto done;
     }
 
-    if ( state->rmw )
+    if ( state->rmw != rmw_NONE )
     {
         ea.val = src.val;
         op_bytes = dst.bytes;
@@ -8205,7 +8205,7 @@  x86_emulate(
 
         dst.type = OP_NONE;
     }
-    else if ( state->simd_size )
+    else if ( state->simd_size != simd_none )
     {
         generate_exception_if(!op_bytes, X86_EXC_UD);
         generate_exception_if((vex.opcx && (d & TwoOp) &&