Thanks for the confirmation, something might be wrong with the interrupt used for my serial device.
tianocore doesn't use interrupts (other than timer).
Cloud Hypervisor only has an IOAPIC, it doesn't rely on any PIC, which is why I'm not sure what might be missing to get the EFI shell to receive the interrupts.
PIC is optional for microvm too, and everything works fine for me with "-machine microvm,rtc=on,pic=off,pit=off"