This is just a bunch of boilerplate code that extends the protocol HardwareInterrupt to HardwareInterrupt2, and adds some hooks that allow protocol clients to configure the interrupt type.
Patch #1 and patch #3 are complete afaict. Patch #2 needs to actual GIC manipulation code to be inserted, but I am sure someone else will be able to do this much more quickly.
Ard Biesheuvel (3): EmbeddedPkg: introduce HardwareInterrupt2 protocol ArmPkg/ArmGicDxe: expose HardwareInterrupt2 protocol ArmPkg/GenericWatchdogDxe: use HardwareInterrupt2 protocol to set interrupt type
ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c | 4 +- ArmPkg/Drivers/ArmGic/ArmGicDxe.h | 2 + ArmPkg/Drivers/ArmGic/ArmGicDxe.inf | 1 + ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 37 +++- ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 37 +++- ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.c | 26 +-- ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf | 4 +- EmbeddedPkg/EmbeddedPkg.dec | 1 + EmbeddedPkg/Include/Protocol/HardwareInterrupt2.h | 181 ++++++++++++++++++++ 9 files changed, 278 insertions(+), 15 deletions(-) create mode 100644 EmbeddedPkg/Include/Protocol/HardwareInterrupt2.h