[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 0/8] vITS support
From: |
Eric Auger |
Subject: |
[Qemu-devel] [PATCH v7 0/8] vITS support |
Date: |
Fri, 23 Sep 2016 09:43:29 +0200 |
This series introduces support for in-kernel GICv3 ITS emulation.
On dt guest the functionality is complete and was tested on Cavium ThunderX
with virtio-net-pci and vhost-net.
On ACPI guest the series was tested with virtio-net-pci only. For vhost-net,
using MSIX we currently miss the ACPI IORT table generation linking the
PCIe host controller with the ITS. The work is ongoing and will be submitted
separately. Anyway the kernel ACPI IORT ITS node support is not upstreamed
yet.
The first patch is not really related to virtual ITS but advertises the KVM
GSI routing support which goes along with MSI injection.
For ACPI ITS and PCIe support, use in-flight Tomasz' series:
- [PATCH V10 0/8] Introduce ACPI world to ITS,
https://lkml.org/lkml/2016/9/6/153
- Support for ARM64 ACPI based PCI host controller,
https://lwn.net/Articles/690995/
Git Information:
v7: https://github.com/eauger/qemu/tree/v2.7.0-vITS-v7
v6: https://github.com/eauger/qemu/tree/v2.7.0-vITS-v6
History:
V6 => v7:
- add my Signed-off-by on patches 7 and 8
- add Peter's R-b on 1, 2
- add/use kvm_msi_devid_required macro
- add translater_gpa_known
- in arm_gicv3_its_kvm.c, remove the notifier and directly
compute the ITS translater GPA in first kvm_its_send_msi()
call as suggested by Peter. Fix the memory region reference
leak. fix the comment typo.
v5 => v6:
- moved from RFC to PATCH since all the host kernel dependencies now are
fixed
- use Shannon's MADT patches I was not aware of
- smoother integration since the kernet ITS init sequence has now been
updated in 4.8
- kvm_msi_use_devid flag handled in non archutecture specific code
- vmstate_its fields removed and migration_blocker added
v4 => v5:
- fix compilation issue with arm-softmmu target
- rebase on target-arm: Fix unreachable code in gicv3_class_name()
- add ACPI support
- kernel ITS init sequence is not yet similar to GICv2/V3 ones. This will
be addressed in a subsequent respin.
v3 => v4:
- Took into account Peter's comments (at the exception of sub-class
operation changes)
- rebase on Andre's kernel ITS emulation series v8
- rework KVM init sequence and KVM device creation/settings overall.
I do not use kvm_arm_register_device due to the way the kernel
API is devises (see discussion on the kernel ML)
- change the computation of the GITS_TRANSLATER base address
- fix compilation issues
- new "arget-arm: move gicv3_class_name from machine to kvm_arm.h"
v2 => v3:
- Really added unmigratable flag, was overlooked in v2
- Fixed checkpatch issue with initializing static variable to zero
v1 => v2:
- Added registers and reset method
- Added unmigratable flag
- Rebased on top of current master, use kvm_arch_fixup_msi_route() now
Eric Auger (2):
hw/intc/arm_gic(v3)_kvm: Initialize gsi routing
target-arm: move gicv3_class_name from machine to kvm_arm.h
Pavel Fedin (4):
hw/intc/arm_gicv3_its: Implement ITS base class
kvm-all: Pass requester ID to MSI routing functions
hw/intc/arm_gicv3_its: Implement support for in-kernel ITS emulation
arm/virt: Add ITS to the virt board
Shannon Zhao (2):
ACPI: Add GIC Interrupt Translation Service Structure definition
ARM: Virt: ACPI: Add GIC ITS description in ACPI MADT table
hw/arm/virt-acpi-build.c | 12 +++
hw/arm/virt.c | 47 +++++++++--
hw/intc/Makefile.objs | 2 +
hw/intc/arm_gic_kvm.c | 12 +++
hw/intc/arm_gicv3_its_common.c | 148 +++++++++++++++++++++++++++++++++
hw/intc/arm_gicv3_its_kvm.c | 121 +++++++++++++++++++++++++++
hw/intc/arm_gicv3_kvm.c | 13 +++
include/hw/acpi/acpi-defs.h | 13 ++-
include/hw/intc/arm_gicv3_its_common.h | 78 +++++++++++++++++
include/sysemu/kvm.h | 9 ++
kvm-all.c | 9 ++
kvm-stub.c | 1 +
target-arm/kvm_arm.h | 35 +++++++-
target-arm/machine.c | 15 ----
14 files changed, 492 insertions(+), 23 deletions(-)
create mode 100644 hw/intc/arm_gicv3_its_common.c
create mode 100644 hw/intc/arm_gicv3_its_kvm.c
create mode 100644 include/hw/intc/arm_gicv3_its_common.h
--
2.5.5
- [Qemu-devel] [PATCH v7 0/8] vITS support,
Eric Auger <=
- [Qemu-devel] [PATCH v7 1/8] hw/intc/arm_gic(v3)_kvm: Initialize gsi routing, Eric Auger, 2016/09/23
- [Qemu-devel] [PATCH v7 2/8] hw/intc/arm_gicv3_its: Implement ITS base class, Eric Auger, 2016/09/23
- [Qemu-devel] [PATCH v7 3/8] target-arm: move gicv3_class_name from machine to kvm_arm.h, Eric Auger, 2016/09/23
- [Qemu-devel] [PATCH v7 4/8] kvm-all: Pass requester ID to MSI routing functions, Eric Auger, 2016/09/23
- [Qemu-devel] [PATCH v7 5/8] hw/intc/arm_gicv3_its: Implement support for in-kernel ITS emulation, Eric Auger, 2016/09/23
- [Qemu-devel] [PATCH v7 7/8] ACPI: Add GIC Interrupt Translation Service Structure definition, Eric Auger, 2016/09/23
- [Qemu-devel] [PATCH v7 6/8] arm/virt: Add ITS to the virt board, Eric Auger, 2016/09/23