-/* Make sure all PT IRQs work w/ interrupt remapping or post interrupt */ - #if (CONFIG_MAX_PT_IRQ_ENTRIES <= 256) -#define MAX_IR_ENTRIES 256 - #else -#define MAX_IR_ENTRIES powerof2_roundup(CONFIG_MAX_PT_IRQ_ENTRIES) -#endif -
Can you add following comments at the 1st place (vtd.c) where the MACRO is used? MAX_IR_ENTRIES is roundup (to power of 2) of CONFIG_MAX_PT_IRQ_ENTRIES.
Now we did this check #if ((MAX_IR_ENTRIES < 256U) || (MAX_IR_ENTRIES > 0x10000U) || (MAX_IR_ENTRIES & (MAX_IR_ENTRIES -1)) != 0U) #error "MAX_IR_ENTRIES must in the region of [256,0x10000] and be 2^n" #endif in misc/hv_prebuild/static_checks.c already.
You can PR with above changes.
/* Values for entry_type in ACPI_DMAR_DEVICE_SCOPE - device types */ enum acpi_dmar_scope_type { ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, diff --git a/hypervisor/include/lib/util.h b/hypervisor/include/lib/util.h index ca3296556..d702ae253 100644 --- a/hypervisor/include/lib/util.h +++ b/hypervisor/include/lib/util.h @@ -25,27 +25,6 @@ /** Replaces 'x' by the string "x". */ #define STRINGIFY(x) #x
-/* - * This algorithm get the round up 2^n - * - * n = input - 1; 0x1002 ----> 0x1001 - * n |= n >> 1; 0x1001 | 0x800 - * n |= n >> 2; 0x1801 | 0x600 - * n |= n >> 4; 0x1e01 | 0x1e0 - * n |= n >> 8; 0x1fe1 | 0x1f - * n |= n >> 16; 0x1fff - * n |= n >> 32; 0x1fff - * n += 1; 0x2000 - */ -#define ROUND0(x) ((x)-1) -#define ROUND1(x) (ROUND0(x) |(ROUND0(x)>>1)) -#define ROUND2(x) (ROUND1(x) |(ROUND1(x)>>2)) -#define ROUND4(x) (ROUND2(x) |(ROUND2(x)>>4)) -#define ROUND8(x) (ROUND4(x) |(ROUND4(x)>>8)) - #define ROUND16(x) (ROUND8(x) |(ROUND8(x)>>16)) -#define ROUND32(x) (ROUND16(x) |(ROUND16(x)>>32)) -#define powerof2_roundup(x) ((ROUND32(x) == (~0UL)) ? ~0UL : (ROUND32(x) +1)) - /* Macro used to check if a value is aligned to the required boundary. * Returns TRUE if aligned; FALSE if not aligned * NOTE: The required alignment must be a power of 2 (2, 4, 8, 16, 32, etc) -- 2.17.1