On 16.10.2023 18:36, Nicola Vetrini wrote: > On 16/10/2023 17:42, Jan Beulich wrote: >> On 12.10.2023 17:28, Nicola Vetrini wrote: >>> --- a/xen/arch/x86/include/asm/io_apic.h >>> +++ b/xen/arch/x86/include/asm/io_apic.h >>> @@ -14,9 +14,10 @@ >>> * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar >>> */ >>> >>> -#define IO_APIC_BASE(idx) >>> \ >>> - ((volatile uint32_t *)(__fix_to_virt(FIX_IO_APIC_BASE_0 + (idx)) >>> \ >>> - + (mp_ioapics[idx].mpc_apicaddr & >>> ~PAGE_MASK))) >>> +#define IO_APIC_BASE(idx) \ >>> + ((volatile uint32_t *) \ >>> + (__fix_to_virt((unsigned int)FIX_IO_APIC_BASE_0 + (idx)) \ >>> + + (mp_ioapics[idx].mpc_apicaddr & ~PAGE_MASK))) >> >> Let's assume that down the road we want to make __fix_to_virt() an >> inline >> function (which perhaps it really ought to be already): Won't this >> trade >> one violation for another then? > > I don't think so: the violation is in the argument to the macro (i.e., > the fact that > idx is unsigned and FIX_IO_APIC_BASE_0 is a constant from a named enum). > Do you see a way in > which a MISRA rule is violated if __fix_to_virt becomes a function with > an unsigned int argument?
No. But I assumed such a function would take an enum parameter. Jan