On Tue, Jun 27, 2017 at 05:35:37PM +0200, Alexander Graf wrote: > When running with KVM enabled, you can choose between emulating the > gic in kernel or user space. If the kernel supports in-kernel virtualization > of the interrupt controller, it will default to that. If not, if will > default to user space emulation. > > Unfortunately when running in user mode gic emulation, we miss out on > interrupt events which are only available from kernel space, such as the timer. > This patch leverages the new kernel/user space pending line synchronization for > timer events. It does not handle PMU events yet. > > Signed-off-by: Alexander Graf <agraf@xxxxxxx> > Reviewed-by: Andrew Jones <drjones@xxxxxxxxxx> > > --- > > v1 -> v2: > > - whitespace fixes > - use !! to determine whether bit is set > - call in-kernel device IRQs out by their name everywhere > > v2 -> v3: > > - fix last occurence of calling out timer IRQs explicitly > --- > accel/kvm/kvm-all.c | 5 +++++ > accel/stubs/kvm-stub.c | 5 +++++ > hw/intc/arm_gic.c | 7 +++++++ > include/sysemu/kvm.h | 11 +++++++++++ > target/arm/cpu.h | 3 +++ > target/arm/kvm.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 6 files changed, 82 insertions(+) > Tried testing this on a gicv3 machine, a ThunderX2. The guest kernel complains with GICv3: GIC: unable to set SRE (disabled at EL2), panic ahead but no panic occurs. Instead it hangs in cpu_do_idle(), waiting forever for an interrupt. AAVMF also complains about SRE support, actually it asserts it. ASSERT [ArmGicDxe] /builddir/build/BUILD/ovmf-c325e41585e3/ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c(113): IccSre & (1 << 0) I still haven't seen any problems with gicv2 though. Thanks, drew