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

Re: [XEN PATCH v3 12/15] xen/x86: fix violations of MISRA C:2012 Rule 7.2



On Wed, 12 Jul 2023, Simone Ballarin wrote:
> From: Gianluca Luparini <gianluca.luparini@xxxxxxxxxxx>
> 
> The xen sources contains violations of MISRA C:2012 Rule 7.2 whose
> headline states:
> "A 'u' or 'U' suffix shall be applied to all integer constants
> that are represented in an unsigned type".
> 
> Add the 'U' suffix to integers literals with unsigned type.
> 
> For the sake of uniformity, the following changes are made:
> - add the 'U' suffix to all first macro's arguments in 'mce-apei.c'
> - add the 'U' suffix to switch cases in 'cpuid.c'
> - add 'U' suffixes to 'mask16' in 'stdvga.c'
> - add the 'U' suffix to macros in 'pci.h'
> 
> Signed-off-by: Gianluca Luparini <gianluca.luparini@xxxxxxxxxxx>
> Signed-off-by: Simone Ballarin <simone.ballarin@xxxxxxxxxxx>

The checked the patch and everything looks correct.

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


Two minor comments below that could or could not be addressed on commit.
It is fine either way for me.


> diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c
> index c3771c2e39..0e8694c188 100644
> --- a/xen/arch/x86/extable.c
> +++ b/xen/arch/x86/extable.c
> @@ -141,7 +141,7 @@ static int __init cf_check stub_selftest(void)
>            .rax = 0x0123456789abcdef,
>            .res.fields.trapnr = X86_EXC_GP },
>          { .opc = { endbr64, 0x02, 0x04, 0x04, 0xc3 }, /* add (%rsp,%rax),%al 
> */
> -          .rax = 0xfedcba9876543210,
> +          .rax = 0xfedcba9876543210UL,
>            .res.fields.trapnr = X86_EXC_SS },
>          { .opc = { endbr64, 0xcc, 0xc3, 0xc3, 0xc3 }, /* int3 */
>            .res.fields.trapnr = X86_EXC_BP },

I wonder if it would be easier to be consistent cross-arch and just use
ULL everywhere a 64-bit value is present.

I know it is not required on x86, so this is just an optional
comment, I'll leave it to the maintainers.


> @@ -325,83 +325,83 @@
>  
>  /* K7/K8 MSRs. Not complete. See the architecture manual for a more
>     complete list. */
> -#define MSR_K7_EVNTSEL0                      0xc0010000
> -#define MSR_K7_PERFCTR0                      0xc0010004
> -#define MSR_K7_EVNTSEL1                      0xc0010001
> -#define MSR_K7_PERFCTR1                      0xc0010005
> -#define MSR_K7_EVNTSEL2                      0xc0010002
> -#define MSR_K7_PERFCTR2                      0xc0010006
> -#define MSR_K7_EVNTSEL3                      0xc0010003
> -#define MSR_K7_PERFCTR3                      0xc0010007
> -#define MSR_K8_TOP_MEM1                      0xc001001a
> -#define MSR_K7_CLK_CTL                       0xc001001b
> -#define MSR_K8_TOP_MEM2                      0xc001001d
> -
> -#define MSR_K8_HWCR                  0xc0010015
> +#define MSR_K7_EVNTSEL0                      0xc0010000U
> +#define MSR_K7_PERFCTR0                      0xc0010004U
> +#define MSR_K7_EVNTSEL1                      0xc0010001U
> +#define MSR_K7_PERFCTR1                      0xc0010005U
> +#define MSR_K7_EVNTSEL2                      0xc0010002U
> +#define MSR_K7_PERFCTR2                      0xc0010006U
> +#define MSR_K7_EVNTSEL3                      0xc0010003U
> +#define MSR_K7_PERFCTR3                      0xc0010007U
> +#define MSR_K8_TOP_MEM1                      0xc001001aU
> +#define MSR_K7_CLK_CTL                       0xc001001bU
> +#define MSR_K8_TOP_MEM2                      0xc001001dU
> +
> +#define MSR_K8_HWCR                  0xc0010015U
>  #define K8_HWCR_TSC_FREQ_SEL         (1ULL << 24)
>  #define K8_HWCR_CPUID_USER_DIS               (1ULL << 35)
>  
> -#define MSR_K7_FID_VID_CTL           0xc0010041
> -#define MSR_K7_FID_VID_STATUS                0xc0010042
> -#define MSR_K8_PSTATE_LIMIT          0xc0010061
> -#define MSR_K8_PSTATE_CTRL           0xc0010062
> -#define MSR_K8_PSTATE_STATUS         0xc0010063
> -#define MSR_K8_PSTATE0                       0xc0010064
> -#define MSR_K8_PSTATE1                       0xc0010065
> -#define MSR_K8_PSTATE2                       0xc0010066
> -#define MSR_K8_PSTATE3                       0xc0010067
> -#define MSR_K8_PSTATE4                       0xc0010068
> -#define MSR_K8_PSTATE5                       0xc0010069
> -#define MSR_K8_PSTATE6                       0xc001006A
> -#define MSR_K8_PSTATE7                       0xc001006B
> -#define MSR_K8_ENABLE_C1E            0xc0010055
> -#define MSR_K8_VM_HSAVE_PA           0xc0010117
> -
> -#define MSR_AMD_FAM15H_EVNTSEL0              0xc0010200
> -#define MSR_AMD_FAM15H_PERFCTR0              0xc0010201
> -#define MSR_AMD_FAM15H_EVNTSEL1              0xc0010202
> -#define MSR_AMD_FAM15H_PERFCTR1              0xc0010203
> -#define MSR_AMD_FAM15H_EVNTSEL2              0xc0010204
> -#define MSR_AMD_FAM15H_PERFCTR2              0xc0010205
> -#define MSR_AMD_FAM15H_EVNTSEL3              0xc0010206
> -#define MSR_AMD_FAM15H_PERFCTR3              0xc0010207
> -#define MSR_AMD_FAM15H_EVNTSEL4              0xc0010208
> -#define MSR_AMD_FAM15H_PERFCTR4              0xc0010209
> -#define MSR_AMD_FAM15H_EVNTSEL5              0xc001020a
> -#define MSR_AMD_FAM15H_PERFCTR5              0xc001020b
> -
> -#define MSR_AMD_L7S0_FEATURE_MASK    0xc0011002
> -#define MSR_AMD_THRM_FEATURE_MASK    0xc0011003
> -#define MSR_K8_FEATURE_MASK          0xc0011004
> -#define MSR_K8_EXT_FEATURE_MASK              0xc0011005
> +#define MSR_K7_FID_VID_CTL           0xc0010041U
> +#define MSR_K7_FID_VID_STATUS                0xc0010042U
> +#define MSR_K8_PSTATE_LIMIT          0xc0010061U
> +#define MSR_K8_PSTATE_CTRL           0xc0010062U
> +#define MSR_K8_PSTATE_STATUS         0xc0010063U
> +#define MSR_K8_PSTATE0                       0xc0010064U
> +#define MSR_K8_PSTATE1                       0xc0010065U
> +#define MSR_K8_PSTATE2                       0xc0010066U
> +#define MSR_K8_PSTATE3                       0xc0010067U
> +#define MSR_K8_PSTATE4                       0xc0010068U
> +#define MSR_K8_PSTATE5                       0xc0010069U
> +#define MSR_K8_PSTATE6                       0xc001006AU
> +#define MSR_K8_PSTATE7                       0xc001006BU
> +#define MSR_K8_ENABLE_C1E            0xc0010055U
> +#define MSR_K8_VM_HSAVE_PA           0xc0010117U
> +
> +#define MSR_AMD_FAM15H_EVNTSEL0              0xc0010200U
> +#define MSR_AMD_FAM15H_PERFCTR0              0xc0010201U
> +#define MSR_AMD_FAM15H_EVNTSEL1              0xc0010202U
> +#define MSR_AMD_FAM15H_PERFCTR1              0xc0010203U
> +#define MSR_AMD_FAM15H_EVNTSEL2              0xc0010204U
> +#define MSR_AMD_FAM15H_PERFCTR2              0xc0010205U
> +#define MSR_AMD_FAM15H_EVNTSEL3              0xc0010206U
> +#define MSR_AMD_FAM15H_PERFCTR3              0xc0010207U
> +#define MSR_AMD_FAM15H_EVNTSEL4              0xc0010208U
> +#define MSR_AMD_FAM15H_PERFCTR4              0xc0010209U
> +#define MSR_AMD_FAM15H_EVNTSEL5              0xc001020aU
> +#define MSR_AMD_FAM15H_PERFCTR5              0xc001020bU
> +
> +#define MSR_AMD_L7S0_FEATURE_MASK    0xc0011002U
> +#define MSR_AMD_THRM_FEATURE_MASK    0xc0011003U
> +#define MSR_K8_FEATURE_MASK                  0xc0011004U
> +#define MSR_K8_EXT_FEATURE_MASK              0xc0011005U

Here MSR_K8_FEATURE_MASK has one more tab compared to the original code.
The code style might need adjusting, it can be done on commit.


>  /* AMD64 MSRs */
> -#define MSR_AMD64_NB_CFG             0xc001001f
> +#define MSR_AMD64_NB_CFG             0xc001001fU
>  #define AMD64_NB_CFG_CF8_EXT_ENABLE_BIT      46
> -#define MSR_AMD64_LS_CFG             0xc0011020
> -#define MSR_AMD64_IC_CFG             0xc0011021
> -#define MSR_AMD64_DC_CFG             0xc0011022
> -#define MSR_AMD64_DE_CFG             0xc0011029
> +#define MSR_AMD64_LS_CFG             0xc0011020U
> +#define MSR_AMD64_IC_CFG             0xc0011021U
> +#define MSR_AMD64_DC_CFG             0xc0011022U
> +#define MSR_AMD64_DE_CFG             0xc0011029U
>  #define AMD64_DE_CFG_LFENCE_SERIALISE        (_AC(1, ULL) << 1)
> -#define MSR_AMD64_EX_CFG             0xc001102c
> -#define MSR_AMD64_DE_CFG2            0xc00110e3
> +#define MSR_AMD64_EX_CFG             0xc001102cU
> +#define MSR_AMD64_DE_CFG2            0xc00110e3U
>  
> -#define MSR_AMD64_DR0_ADDRESS_MASK   0xc0011027
> -#define MSR_AMD64_DR1_ADDRESS_MASK   0xc0011019
> -#define MSR_AMD64_DR2_ADDRESS_MASK   0xc001101a
> -#define MSR_AMD64_DR3_ADDRESS_MASK   0xc001101b
> +#define MSR_AMD64_DR0_ADDRESS_MASK   0xc0011027U
> +#define MSR_AMD64_DR1_ADDRESS_MASK   0xc0011019U
> +#define MSR_AMD64_DR2_ADDRESS_MASK   0xc001101aU
> +#define MSR_AMD64_DR3_ADDRESS_MASK   0xc001101bU
>  
>  /* AMD Family10h machine check MSRs */
> -#define MSR_F10_MC4_MISC1            0xc0000408
> -#define MSR_F10_MC4_MISC2            0xc0000409
> -#define MSR_F10_MC4_MISC3            0xc000040A
> +#define MSR_F10_MC4_MISC1            0xc0000408U
> +#define MSR_F10_MC4_MISC2            0xc0000409U
> +#define MSR_F10_MC4_MISC3            0xc000040AU
>  
>  /* AMD Family10h Bus Unit MSRs */
> -#define MSR_F10_BU_CFG               0xc0011023
> -#define MSR_F10_BU_CFG2              0xc001102a
> +#define MSR_F10_BU_CFG               0xc0011023U
> +#define MSR_F10_BU_CFG2              0xc001102aU
>  
>  /* Other AMD Fam10h MSRs */
> -#define MSR_FAM10H_MMIO_CONF_BASE    0xc0010058
> +#define MSR_FAM10H_MMIO_CONF_BASE    0xc0010058U
>  #define FAM10H_MMIO_CONF_ENABLE         (1<<0)
>  #define FAM10H_MMIO_CONF_BUSRANGE_MASK       0xf
>  #define FAM10H_MMIO_CONF_BUSRANGE_SHIFT 2
> @@ -410,31 +410,31 @@
>  
>  /* AMD Microcode MSRs */
>  #define MSR_AMD_PATCHLEVEL           0x0000008b
> -#define MSR_AMD_PATCHLOADER          0xc0010020
> +#define MSR_AMD_PATCHLOADER          0xc0010020U
>  
>  /* AMD TSC RATE MSR */
> -#define MSR_AMD64_TSC_RATIO          0xc0000104
> +#define MSR_AMD64_TSC_RATIO          0xc0000104U
>  
>  /* AMD Lightweight Profiling MSRs */
> -#define MSR_AMD64_LWP_CFG            0xc0000105
> -#define MSR_AMD64_LWP_CBADDR         0xc0000106
> +#define MSR_AMD64_LWP_CFG            0xc0000105U
> +#define MSR_AMD64_LWP_CBADDR         0xc0000106U
>  
>  /* AMD OS Visible Workaround MSRs */
> -#define MSR_AMD_OSVW_ID_LENGTH          0xc0010140
> -#define MSR_AMD_OSVW_STATUS             0xc0010141
> +#define MSR_AMD_OSVW_ID_LENGTH          0xc0010140U
> +#define MSR_AMD_OSVW_STATUS             0xc0010141U
>  
>  /* AMD Protected Processor Inventory Number */
> -#define MSR_AMD_PPIN_CTL                0xc00102f0
> -#define MSR_AMD_PPIN                    0xc00102f1
> +#define MSR_AMD_PPIN_CTL                0xc00102f0U
> +#define MSR_AMD_PPIN                    0xc00102f1U
>  
>  /* K6 MSRs */
> -#define MSR_K6_EFER                  0xc0000080
> -#define MSR_K6_STAR                  0xc0000081
> -#define MSR_K6_WHCR                  0xc0000082
> -#define MSR_K6_UWCCR                 0xc0000085
> -#define MSR_K6_EPMR                  0xc0000086
> -#define MSR_K6_PSOR                  0xc0000087
> -#define MSR_K6_PFIR                  0xc0000088
> +#define MSR_K6_EFER                  0xc0000080U
> +#define MSR_K6_STAR                  0xc0000081U
> +#define MSR_K6_WHCR                  0xc0000082U
> +#define MSR_K6_UWCCR                 0xc0000085U
> +#define MSR_K6_EPMR                  0xc0000086U
> +#define MSR_K6_PSOR                  0xc0000087U
> +#define MSR_K6_PFIR                  0xc0000088U
>  
>  /* Centaur-Hauls/IDT defined MSRs. */
>  #define MSR_IDT_FCR1                 0x00000107
> @@ -459,10 +459,10 @@
>  #define MSR_VIA_BCR2                 0x00001147
>  
>  /* Transmeta defined MSRs */
> -#define MSR_TMTA_LONGRUN_CTRL                0x80868010
> -#define MSR_TMTA_LONGRUN_FLAGS               0x80868011
> -#define MSR_TMTA_LRTI_READOUT                0x80868018
> -#define MSR_TMTA_LRTI_VOLT_MHZ               0x8086801a
> +#define MSR_TMTA_LONGRUN_CTRL                0x80868010U
> +#define MSR_TMTA_LONGRUN_FLAGS               0x80868011U
> +#define MSR_TMTA_LRTI_READOUT                0x80868018U
> +#define MSR_TMTA_LRTI_VOLT_MHZ               0x8086801aU
>  
>  /* Intel defined MSRs. */
>  #define MSR_IA32_P5_MC_ADDR          0x00000000

[...]

> diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c
> index 288050cdba..1ebeb65ad6 100644
> --- a/xen/arch/x86/percpu.c
> +++ b/xen/arch/x86/percpu.c
> @@ -12,7 +12,7 @@ unsigned long __per_cpu_offset[NR_CPUS];
>   * possible #PF at (NULL + a little) which has security implications in the
>   * context of PV guests.
>   */
> -#define INVALID_PERCPU_AREA (0x8000000000000000L - (long)__per_cpu_start)
> +#define INVALID_PERCPU_AREA (0x8000000000000000UL - (long)__per_cpu_start)
>  #define PERCPU_ORDER get_order_from_bytes(__per_cpu_data_end - 
> __per_cpu_start)
>  
>  void __init percpu_init_areas(void)

Also here about 64-bit values



 


Rackspace

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