While reviewing Marcin's patch this morning, cross referencing different specifications and looking at various places around the source code in order to convinced myself he really hadn't missed something out (the existing plumbing made it *so* clean to add), my brain broke slightly at keeping track of PPIs/INTIDs between the various sources.
Moreover, I found the PPI() macro in virt.h to be doing the exact opposite of what I would have expected it to (it converts a PPI to an INTID rather than the other way around). So I refactored stuff so that: - PPIs defined by BSA are moved to a (new) common header. - The _IRQ definitions for those PPIs refer to the INTIDs. - sbsa-ref and virt both use these definitions. This change does objectively add a bit more noise to the code, since it means more locations need to use the PPI macro than before, but it felt like a readability improvement to me. Not even compilation tested, just the least confusing way of asking whether the change could be accepted at all. Leif Lindholm (3): include/hw/arm: move BSA definitions to bsa.h {include/}hw/arm: refactor BSA/virt PPI logic hw/arm/sbsa-ref: use bsa.h for PPI definitions hw/arm/sbsa-ref.c | 24 +++++++++++------------- hw/arm/virt-acpi-build.c | 4 ++-- hw/arm/virt.c | 9 +++++---- include/hw/arm/bsa.h | 35 +++++++++++++++++++++++++++++++++++ include/hw/arm/virt.h | 12 +----------- 5 files changed, 54 insertions(+), 30 deletions(-) create mode 100644 include/hw/arm/bsa.h -- 2.30.2