While trying to make Windows work with GICv3 emulation, I stumbled over the fact that it only supports ITT entry sizes that are power of 2 sized.
While the spec allows arbitrary sizes, in practice hardware will always expose power of 2 sizes and so this limitation is not really a problem in real world scenarios. However, we only expose a 12 byte ITT entry size which makes Windows blue screen on boot. The easy way to get around that problem is to bump the size to 16. That is a power of 2, basically is what hardware would expose given the amount of bits we need per entry and doesn't break any existing scenarios. To play it safe, this patch set only bumps them on newer machine types. Alexander Graf (2): hw/intc/arm_gicv3: Make ITT entry size configurable hw/intc/arm_gicv3: Bump ITT entry size to 16 hw/core/machine.c | 4 +++- hw/intc/arm_gicv3_its.c | 13 ++++++++++--- hw/intc/gicv3_internal.h | 2 +- include/hw/intc/arm_gicv3_its_common.h | 1 + 4 files changed, 15 insertions(+), 5 deletions(-) -- 2.37.1 (Apple Git-137.1)