Re: [PATCH v2 00/12] KVM: arm/arm64: move VGIC MMIO to kvm_io_bus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux