On Thu, Jun 30, 2016 at 11:09:30AM +0100, Andre Przywara wrote: > Hi, > > On 29/06/16 05:43, Bharat Bhushan wrote: > > > > > >> -----Original Message----- > >> From: kvmarm-bounces@xxxxxxxxxxxxxxxxxxxxx [mailto:kvmarm- > >> bounces@xxxxxxxxxxxxxxxxxxxxx] On Behalf Of Andre Przywara > >> Sent: Tuesday, June 28, 2016 6:02 PM > >> To: Marc Zyngier <marc.zyngier@xxxxxxx>; Christoffer Dall > >> <christoffer.dall@xxxxxxxxxx>; Eric Auger <eric.auger@xxxxxxxxxx> > >> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; kvmarm@xxxxxxxxxxxxxxxxxxxxx; > >> kvm@xxxxxxxxxxxxxxx > >> Subject: [PATCH v7 00/17] KVM: arm64: GICv3 ITS emulation > >> > >> Hi, > >> > >> another try on the KVM ITS emulation support. > >> It allows those KVM guests that use an emulated GICv3 to use LPIs as well, > >> though in the moment this is limited to emulated PCI devices. > >> This is based on kvm-arm-for-v4.7-rc2 and relies on the new VGIC > >> implementation. > >> > >> Compared to the last drop there have been some changes to the code: > >> The reference counting has been rewritten to use the kref infrastructure. > >> This has some implications on the rest of the code, for instance the locking > >> for the LPI list got changed. There is no RCU usage anymore, instead the LPI > >> list is now protected by a spinlock. To overcome the problem where we need > >> to access guest memory while holding the lock, we create a snapshot of the > >> LPI list, so we can iterate over LPIs with the lock dropped. > >> Also the base register sanitisation has been reworked completely, which > >> includes some changes to the arm-gic-v3.h header file (as a separate patch > >> 07/17). I hope I covered all the subtleties of those bits. > >> Also the MMIO framework saw some changes, we now tag the different GIC > >> regions explicitly and are able to call the different handlers explicitly. > >> Also Patch 05/17 extends the kvm-io-bus framework with a small function to > >> get the kvm_io_device structure for a given MMIO address. This allows us to > >> keep the knowledge of all the ITSes in this framework, but still get the > >> respective ITS pointer easily without reverting to "fake" MMIO accesses. > >> Also all the smaller review comments have been addressed. > >> > >> You can find all of this code (and the prerequisites) in the > >> its-emul/v7 branch of my repository [1]. > >> This has been briefly tested on the model and on GICv3 hardware. > >> If you have GICv3 capable hardware, please test it on your setup. > > > > We have GICv3 capable hardware and we can test these on that. > > How you are testing these changes? QEMU side changes are also required, can you share those changes? > > I don't have any QEMU patches, that is on Linaro's plate, as far as I I think Eric Auger is looking at this. He's planning on doing a respin of Pavel Fedin's series[*] [*] https://lists.gnu.org/archive/html/qemu-devel/2015-11/msg05197.html drew > can tell. I don't know what the status is there. For real patches we > would need to agree on the userland interface, I guess. > However hacking something in QEMU shouldn't be too hard, you basically > have to inject the ITS DT node and reserve some space in the memory map. > Then tell QEMU to use KVM_SIGNAL_MSI to trigger IRQs. > You can look at the kvmtool patches to get an idea on what to cover. > > Further below I gave some hints on testing this series with kvmtool. > > .... > > >> > >> For the time being this series gives us the ability to use emulated PCI devices > >> that can use MSIs in the guest. Those have to be triggered by letting the > >> userland device emulation simulate the MSI write with the > >> KVM_SIGNAL_MSI ioctl. This will be translated into the proper LPI by the ITS > >> emulation and injected into the guest in the usual way (just with a higher IRQ > >> number). > >> > >> This series is based on kvm-arm-for-v4.7-rc2 and can be found at the > >> its-emul/v7 branch of this repository [1]. > >> For this to be used you need a GICv3 host machine (a fast model would do), > >> though it does not rely on any host ITS bits (neither in hardware or software). > >> > >> To test this you can use the kvmtool patches available in the "its-v6" > >> branch here [2]. > >> Start a guest with: "$ lkvm run --irqchip=gicv3-its --force-pci" > >> and see the ITS being used for instance by the virtio devices. > > ^^^^ here you go. > > Cheers, > Andre. > > >> > >> [1]: git://linux-arm.org/linux-ap.git > >> http://www.linux-arm.org/git?p=linux-ap.git;a=log;h=refs/heads/its- > >> emul/v7 > >> [2]: git://linux-arm.org/kvmtool.git > >> http://www.linux-arm.org/git?p=kvmtool.git;a=log;h=refs/heads/its-v6 > >> [3]: > >> http://arminfo.emea.arm.com/help/topic/com.arm.doc.ihi0069a/IHI0069A_g > >> ic_architecture_specification.pdf > >> > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html