[PATCH v6 0/5] ARM Nested Virt Support

Eric Auger posted 5 patches 4 months, 4 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20250619145047.1669471-1-eric.auger@redhat.com
Maintainers: Peter Maydell <peter.maydell@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>, Cornelia Huck <cohuck@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
There is a newer version of this series
include/hw/intc/arm_gicv3_common.h            |   1 +
include/standard-headers/asm-x86/setup_data.h |  13 +-
include/standard-headers/drm/drm_fourcc.h     |  45 +++++++
include/standard-headers/linux/ethtool.h      | 124 +++++++++---------
include/standard-headers/linux/fuse.h         |   6 +-
.../linux/input-event-codes.h                 |   3 +-
include/standard-headers/linux/pci_regs.h     |  12 +-
include/standard-headers/linux/virtio_gpu.h   |   3 +-
include/standard-headers/linux/virtio_pci.h   |   1 +
linux-headers/asm-arm64/kvm.h                 |   9 +-
linux-headers/asm-x86/kvm.h                   |   1 +
linux-headers/linux/bits.h                    |   4 +-
linux-headers/linux/kvm.h                     |   3 +
linux-headers/linux/vhost.h                   |   4 +-
target/arm/kvm_arm.h                          |   7 +
hw/arm/virt.c                                 |  13 +-
hw/intc/arm_gicv3_common.c                    |   1 +
hw/intc/arm_gicv3_kvm.c                       |  21 +++
target/arm/kvm-stub.c                         |   5 +
target/arm/kvm.c                              |  21 +++
20 files changed, 223 insertions(+), 74 deletions(-)
[PATCH v6 0/5] ARM Nested Virt Support
Posted by Eric Auger 4 months, 4 weeks ago
The only change compared to v5 is the linux header update against
kvm main branch. As discussed on the mailing list, KVM_ARM_VCPU_EL2_E2H0
(non VHE version of the NV support) will be dealt with in a separate
add-on series. Also the fallback to TCG does not apply if the host
does not support nested and virtualization=on (which is aligned
with the behavior along with other arm virt machine properties such as
secure, mte, ...).

For gaining virt functionality in KVM accelerated L1, The host needs to
be booted with "kvm-arm.mode=nested" option and qemu needs to be invoked
with: -machine virt,virtualization=on.

This series can be found at:
https://github.com/eauger/qemu/tree/v10.0.0-nv-v6

Original version from Miguel:
[1] https://lore.kernel.org/all/20230227163718.62003-1-miguel.luis@oracle.com/
version from Haibo:
[2] https://lore.kernel.org/qemu-devel/cover.1617281290.git.haibo.xu@linaro.org/

History:
v5 -> v6:
- linux header update against v6.16-rc2

v4 -> v5:
- rebase on top of v10.0.0

v3 -> v4:
- fix: only set maint_irq if vms->virt

v2 -> v3:
- KVM EL2 only is set if virtualization option is set
- fixes regression with virtualization=off
- Add checks against unsupported GIC configs until the kernel does


Eric Auger (1):
  linux-headers: Update against  v6.16-rc2

Haibo Xu (4):
  hw/arm: Allow setting KVM vGIC maintenance IRQ
  target/arm/kvm: Add helper to detect EL2 when using KVM
  target/arm: Enable feature ARM_FEATURE_EL2 if EL2 is supported
  hw/arm/virt: Allow virt extensions with KVM

 include/hw/intc/arm_gicv3_common.h            |   1 +
 include/standard-headers/asm-x86/setup_data.h |  13 +-
 include/standard-headers/drm/drm_fourcc.h     |  45 +++++++
 include/standard-headers/linux/ethtool.h      | 124 +++++++++---------
 include/standard-headers/linux/fuse.h         |   6 +-
 .../linux/input-event-codes.h                 |   3 +-
 include/standard-headers/linux/pci_regs.h     |  12 +-
 include/standard-headers/linux/virtio_gpu.h   |   3 +-
 include/standard-headers/linux/virtio_pci.h   |   1 +
 linux-headers/asm-arm64/kvm.h                 |   9 +-
 linux-headers/asm-x86/kvm.h                   |   1 +
 linux-headers/linux/bits.h                    |   4 +-
 linux-headers/linux/kvm.h                     |   3 +
 linux-headers/linux/vhost.h                   |   4 +-
 target/arm/kvm_arm.h                          |   7 +
 hw/arm/virt.c                                 |  13 +-
 hw/intc/arm_gicv3_common.c                    |   1 +
 hw/intc/arm_gicv3_kvm.c                       |  21 +++
 target/arm/kvm-stub.c                         |   5 +
 target/arm/kvm.c                              |  21 +++
 20 files changed, 223 insertions(+), 74 deletions(-)

-- 
2.49.0
Re: [PATCH v6 0/5] ARM Nested Virt Support
Posted by Eric Auger 4 months, 2 weeks ago
Hi,
On 6/19/25 4:49 PM, Eric Auger wrote:
> The only change compared to v5 is the linux header update against
> kvm main branch. As discussed on the mailing list, KVM_ARM_VCPU_EL2_E2H0
> (non VHE version of the NV support) will be dealt with in a separate
> add-on series. Also the fallback to TCG does not apply if the host
> does not support nested and virtualization=on (which is aligned
> with the behavior along with other arm virt machine properties such as
> secure, mte, ...).
>
> For gaining virt functionality in KVM accelerated L1, The host needs to
> be booted with "kvm-arm.mode=nested" option and qemu needs to be invoked
> with: -machine virt,virtualization=on.
Gentle ping on this series. Any other comment? Missing R-b's/A-b's on
the 2 first patches.

Thanks

Eric
>
> This series can be found at:
> https://github.com/eauger/qemu/tree/v10.0.0-nv-v6
>
> Original version from Miguel:
> [1] https://lore.kernel.org/all/20230227163718.62003-1-miguel.luis@oracle.com/
> version from Haibo:
> [2] https://lore.kernel.org/qemu-devel/cover.1617281290.git.haibo.xu@linaro.org/
>
> History:
> v5 -> v6:
> - linux header update against v6.16-rc2
>
> v4 -> v5:
> - rebase on top of v10.0.0
>
> v3 -> v4:
> - fix: only set maint_irq if vms->virt
>
> v2 -> v3:
> - KVM EL2 only is set if virtualization option is set
> - fixes regression with virtualization=off
> - Add checks against unsupported GIC configs until the kernel does
>
>
> Eric Auger (1):
>   linux-headers: Update against  v6.16-rc2
>
> Haibo Xu (4):
>   hw/arm: Allow setting KVM vGIC maintenance IRQ
>   target/arm/kvm: Add helper to detect EL2 when using KVM
>   target/arm: Enable feature ARM_FEATURE_EL2 if EL2 is supported
>   hw/arm/virt: Allow virt extensions with KVM
>
>  include/hw/intc/arm_gicv3_common.h            |   1 +
>  include/standard-headers/asm-x86/setup_data.h |  13 +-
>  include/standard-headers/drm/drm_fourcc.h     |  45 +++++++
>  include/standard-headers/linux/ethtool.h      | 124 +++++++++---------
>  include/standard-headers/linux/fuse.h         |   6 +-
>  .../linux/input-event-codes.h                 |   3 +-
>  include/standard-headers/linux/pci_regs.h     |  12 +-
>  include/standard-headers/linux/virtio_gpu.h   |   3 +-
>  include/standard-headers/linux/virtio_pci.h   |   1 +
>  linux-headers/asm-arm64/kvm.h                 |   9 +-
>  linux-headers/asm-x86/kvm.h                   |   1 +
>  linux-headers/linux/bits.h                    |   4 +-
>  linux-headers/linux/kvm.h                     |   3 +
>  linux-headers/linux/vhost.h                   |   4 +-
>  target/arm/kvm_arm.h                          |   7 +
>  hw/arm/virt.c                                 |  13 +-
>  hw/intc/arm_gicv3_common.c                    |   1 +
>  hw/intc/arm_gicv3_kvm.c                       |  21 +++
>  target/arm/kvm-stub.c                         |   5 +
>  target/arm/kvm.c                              |  21 +++
>  20 files changed, 223 insertions(+), 74 deletions(-)
>