MSI-X may allow us to support hypervisors that do not support legacy interrupts, which was the case for cloud-hypervisor (at least on x86). It also improves performance on x86 and supporting it on aarch64 may offer a similar benefit.
In order to add this feature, we need to figure out what is the correct pair of message address and message data. The implementation for x86 can serve as an example on how the values are written to the table once we figure out what they are. After configuration is implemented for x86, MSI-X related enum variants and declarations that are gated behind cfg(target_arch = "x86_64") will need to be modified to also allow aarch64. They cannot be removed completely for source files that are active under riscv, since we do not support PCI (which MSI-X is a feature of) at all on that platform.
It seems like message signalled interrupts on aarch64 need to be enabled before use. This configuration is probably interrupt controller specific, so any work on that will need to take into account the GIC version that is in use by hermit at that point.
MSI-X may allow us to support hypervisors that do not support legacy interrupts, which was the case for cloud-hypervisor (at least on x86). It also improves performance on x86 and supporting it on aarch64 may offer a similar benefit.
In order to add this feature, we need to figure out what is the correct pair of message address and message data. The implementation for x86 can serve as an example on how the values are written to the table once we figure out what they are. After configuration is implemented for x86, MSI-X related enum variants and declarations that are gated behind
cfg(target_arch = "x86_64")will need to be modified to also allow aarch64. They cannot be removed completely for source files that are active under riscv, since we do not support PCI (which MSI-X is a feature of) at all on that platform.It seems like message signalled interrupts on aarch64 need to be enabled before use. This configuration is probably interrupt controller specific, so any work on that will need to take into account the GIC version that is in use by hermit at that point.