KVM: arm/arm64: vgic-new: Add MMIO handling framework
authorMarc Zyngier <marc.zyngier@arm.com>
Tue, 26 Apr 2016 10:06:12 +0000 (11:06 +0100)
committerChristoffer Dall <christoffer.dall@linaro.org>
Fri, 20 May 2016 13:39:49 +0000 (15:39 +0200)
commit4493b1c4866a03963a35be7d157c911a617a3694
tree612e202d4d5c4f9536d38637b7b1f7afafbe6b85
parent90eee56c5f9081686035972dfcddfd6c85cafdf9
KVM: arm/arm64: vgic-new: Add MMIO handling framework

Add an MMIO handling framework to the VGIC emulation:
Each register is described by its offset, size (or number of bits per
IRQ, if applicable) and the read/write handler functions. We provide
initialization macros to describe each GIC register later easily.

Separate dispatch functions for read and write accesses are connected
to the kvm_io_bus framework and binary-search for the responsible
register handler based on the offset address within the region.
We convert the incoming data (referenced by a pointer) to the host's
endianess and use pass-by-value to hand the data over to the actual
handler functions.

The register handler prototype and the endianess conversion are
courtesy of Christoffer Dall.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
include/kvm/vgic/vgic.h
virt/kvm/arm/vgic/vgic-mmio.c [new file with mode: 0644]
virt/kvm/arm/vgic/vgic-mmio.h [new file with mode: 0644]