gem5-users@gem5.org

The gem5 Users mailing list

View all threads

GEM5 Arm VGIC does not support 'HW' List Register feature

谭一凡
Fri, Jul 8, 2022 2:06 PM

Hi all,

I tried running a KVM guest on Arm GEM5 Linux, but GEM5 panicked at https://gem5.googlesource.com/public/gem5/+/refs/heads/stable/src/dev/arm/vgic.cc#126.

The comment above this panic said KVM does not use auto-EOI of HW interrupts via real GIC.

However, in later Linux version, function kvm_vgic_map_phys_irq would set the HW bit to 1, as in https://gem5.googlesource.com/arm/linux/+/refs/heads/gem5/v4.14/virt/kvm/arm/vgic/vgic.c#406.

I've tested gem5/v4.3, which is the oldest version branch of repo arm/linux in gem5 source. In https://gem5.googlesource.com/arm/linux/+/refs/heads/gem5/v4.3/virt/kvm/arm/vgic.c#1778, the code does not explicitly set HW to 1, but the virtual irq is also mapped to physical irq, and the GEM5 would panic at the same place.

Does this mean I could only boot host Linux of very old version without kvm_vgic_map_phys_irq? I wonder that, without the support of kvm_vgic_map_phys_irq, the performance would suffer. The EOI of virtual irq would bring about an additional VM exit.

Thanks!

Yifan Tan

Hi all, I tried running a KVM guest on Arm GEM5 Linux, but GEM5 panicked at https://gem5.googlesource.com/public/gem5/+/refs/heads/stable/src/dev/arm/vgic.cc#126. The comment above this `panic` said KVM does not use auto-EOI of HW interrupts via real GIC. However, in later Linux version, function `kvm_vgic_map_phys_irq` would set the HW bit to 1, as in https://gem5.googlesource.com/arm/linux/+/refs/heads/gem5/v4.14/virt/kvm/arm/vgic/vgic.c#406. I've tested gem5/v4.3, which is the oldest version branch of repo arm/linux in gem5 source. In https://gem5.googlesource.com/arm/linux/+/refs/heads/gem5/v4.3/virt/kvm/arm/vgic.c#1778, the code does not explicitly set HW to 1, but the virtual irq is also mapped to physical irq, and the GEM5 would panic at the same place. Does this mean I could only boot host Linux of very old version without `kvm_vgic_map_phys_irq`? I wonder that, without the support of `kvm_vgic_map_phys_irq`, the performance would suffer. The EOI of virtual irq would bring about an additional VM exit. Thanks! Yifan Tan