linux/virt/kvm
Christoffer Dall faa1b46c3e arm/arm64: KVM: vgic: Improve handling of GICD_I{CS}PENDRn
Writes to GICD_ISPENDRn and GICD_ICPENDRn are currently not handled
correctly for level-triggered interrupts.  The spec states that for
level-triggered interrupts, writes to the GICD_ISPENDRn activate the
output of a flip-flop which is in turn or'ed with the actual input
interrupt signal.  Correspondingly, writes to GICD_ICPENDRn simply
deactivates the output of that flip-flop, but does not (of course) affect
the external input signal.  Reads from GICC_IAR will also deactivate the
flip-flop output.

This requires us to track the state of the level-input separately from
the state in the flip-flop.  We therefore introduce two new variables on
the distributor struct to track these two states.  Astute readers may
notice that this is introducing more state than required (because an OR
of the two states gives you the pending state), but the remaining vgic
code uses the pending bitmap for optimized operations to figure out, at
the end of the day, if an interrupt is pending or not on the distributor
side.  Refactoring the code to consider the two state variables all the
places where we currently access the precomputed pending value, did not
look pretty.

Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
2014-09-18 18:44:31 -07:00
..
arm arm/arm64: KVM: vgic: Improve handling of GICD_I{CS}PENDRn 2014-09-18 18:44:31 -07:00
assigned-dev.c virt/kvm/assigned-dev.c: Set 'dev->irq_source_id' to '-1' after free it 2014-08-19 15:12:28 +02:00
async_pf.c At over 200 commits, covering almost all supported architectures, this 2014-06-04 08:47:12 -07:00
async_pf.h KVM: Halt vcpu if page it tries to access is swapped out 2011-01-12 11:21:39 +02:00
coalesced_mmio.c KVM: return an error code in kvm_vm_ioctl_register_coalesced_mmio() 2014-01-30 11:56:09 +01:00
coalesced_mmio.h KVM: Make coalesced mmio use a device per zone 2011-09-25 19:17:57 +03:00
eventfd.c KVM: EVENTFD: remove inclusion of irq.h 2014-09-11 11:31:19 +01:00
ioapic.c kvm: ioapic: conditionally delay irq delivery duringeoi broadcast 2014-09-16 14:44:48 +02:00
ioapic.h kvm: ioapic: conditionally delay irq delivery duringeoi broadcast 2014-09-16 14:44:48 +02:00
iodev.h KVM: remove in_range from io devices 2009-09-10 08:33:05 +03:00
iommu.c kvm: iommu: fix the third parameter of kvm_iommu_put_pages (CVE-2014-3601) 2014-08-19 15:04:45 +02:00
irq_comm.c KVM: Move all accesses to kvm::irq_routing into irqchip.c 2014-08-05 14:26:20 +02:00
irqchip.c KVM: Move irq notifier implementation into eventfd.c 2014-08-05 14:26:24 +02:00
Kconfig KVM: Give IRQFD its own separate enabling Kconfig option 2014-08-05 14:26:28 +02:00
kvm_main.c Merge remote-tracking branch 'kvm/next' into queue 2014-09-18 18:15:32 -07:00
vfio.c KVM: VFIO: register kvm_device_ops dynamically 2014-09-17 13:10:10 +02:00