On 23/03/15 21:50, Nikolay Nikolaev wrote: > On Mon, Mar 23, 2015 at 5:58 PM, Andre Przywara <andre.przywara@xxxxxxx> wrote: >> This series converts the VGIC MMIO handling routines to the generic >> kvm_io_bus framework. The framework is needed for the ioeventfd >> functionality, some people on the list wanted to see the VGIC >> converted over to use it, too. >> Beside from now moving to a generic framework instead of relying on >> an ARM specific one we also clean up quite some code and get rid of >> some unnecessary copying. >> On that way the MMIO abort handling for ARM has changed quite a bit, >> so please have a closer look and test it on your setup if possible. >> >> Based on the v1 review I addressed Christoffer's minor comments, but >> also heavily changed [11/12]: "KVM: ARM: on IO mem abort - route the >> call to KVM MMIO bus" to get rid of the now unnecessary copying and >> the usage of kvm_exit_mmio in that early stage. See the respective >> commit message for more details. >> >> The series is loosely based on Nikolay's work[1], thanks especially >> for the tedious first patch. >> I totally reworked Nikolay's 3/5 to avoid adding another MMIO handling >> layer on top of the already quite convoluted VGIC MMIO handling. >> Also Nikolay's 2/5 get extended and changed significantly, that's why >> I dropped his Signed-off-by. >> >> Unfortunately kvm_io_bus lacks an opaque pointer to pass in some data, >> so I worked around this by using container_of. >> Now for every struct kvm_mmio_range array a KVM I/O device is >> registered (one for VGICv2, 2*nr_vcpus + 1 for VGICv3), using the >> struct kvm_io_device variable as an anchor into the new >> struct vgic_io_device. This one holds the base address, the >> vgic_io_range pointer and (in case of the GICv3 redistributor) the >> associated vCPU, so that we can access all instance-specific data >> easily. >> >> Patch 2 moves the iodev.h header file around, that solves a problem >> when embedding a struct in arm_vgic.h later. That looks like a nice >> cleanup anyway, so I added two patches to remove the compiler switch >> to add virt/kvm as a include directory. This has been tested for >> arm/arm64 and x86. As soon as I get around to compile-test the other >> architectures, I can send out the respective patches for those, too. >> >> Patches 5-7 tweak the existing code a bit to make it fit for the >> conversion. >> Patch 8 contains the framework for the new handling, while >> patch 9 and 10 enable the GICv2 and GICv3 emulation, respectively. >> Patch 11 finally switches over to the new kvm_io_bus handling, >> reworking the early ARM KVM MMIO handling quite a bit. Patch 12 >> removes the now unneeded code. I split this up to ease reviewing, I >> could merge patches as well if needed. > > Shall we add here also the last 2 patches from my series that actually enable > the eventfd compilation and KVM_CAP_IOEVENTFD? Or should I send them separately? I think that this is the goal, so please send them as a follow-up to this series. Thanks, M. -- Jazz is not dead. It just smells funny... _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm