
Compared with the previous IPIV, the IPIV-BUGFIX has the following changes: 1. Use Kconfig to Control whether to enable IPIV. 2. Users use ioctl to control whether to enable IPIV. 3. Use the SMCCC interface for Guest OS to control whether to enable IPIV. 4. ensure that enable_ipiv_from_guest are the same before and after live migration 5. make sure vcpu_id == vcpu_idx. 6. the MPIDR cannot be changed When IPIV is enabled. 7. fix bug that ipiv enable is displayed on the host when "kvm-arm.vgic_v4_enable=0 kvm-arm.ipiv_enabled=1" is configured. 8. Add Exception Printing Changes in v5: 1. cleanup include/asm/kvm_host.h:extern bool kvm_ipiv_support; 2. update tools: hypercalls.c 3. update ioctl KVM_CAP_ARM_HISI_IPIV value Changes in v4: 1. enable_ipiv_from_guest = false when GuestOS reset 2. "kvm: hisi: make sure vcpu_id and vcpu_idx have same value in IPIv" changes the judgment condition. Changes in v3: 1. modify "KVM: arm64: fix live migration bug of IPIv" 2. change ioctl name Changes in v2: 1. add "KVM: arm64: fix live migration bug of IPIv" Jinqian Yang (5): arm64/config: add config to control whether enable IPIV feature KVM: arm64: fix live migration bug of IPIv KVM: arm64: using kvm_vgic_global_state for ipiv kvm: hisi: print error for IPIV arm64/kabi: use KABI_EXTEND to skip KABI check Zhou Wang (6): KVM: arm64: Introduce ipiv enable ioctl KVM: arm64: Document PV-sgi interface KVM: arm64: Implement PV_SGI related calls irqchip/gic: Add HiSilicon PV SGI support kvm: hisi: make sure vcpu_id and vcpu_idx have same value in IPIv kvm: hisi: Don't allow to change mpidr in IPIv Documentation/virt/kvm/arm/hypercalls.rst | 4 ++ Documentation/virt/kvm/arm/pvsgi.rst | 33 +++++++++++ arch/arm64/Kconfig | 13 +++++ arch/arm64/configs/openeuler_defconfig | 1 + arch/arm64/include/asm/kvm_host.h | 1 - arch/arm64/include/uapi/asm/kvm.h | 5 ++ arch/arm64/kvm/arm.c | 37 ++++++++++--- arch/arm64/kvm/hisilicon/hisi_virt.c | 32 ++++++++++- arch/arm64/kvm/hisilicon/hisi_virt.h | 20 ++++++- arch/arm64/kvm/hypercalls.c | 26 +++++++++ arch/arm64/kvm/sys_regs.c | 34 ++++++++---- arch/arm64/kvm/vgic/vgic-init.c | 42 ++++++++++++-- arch/arm64/kvm/vgic/vgic-its.c | 28 ++++++++++ arch/arm64/kvm/vgic/vgic-mmio-v3.c | 1 - drivers/irqchip/irq-gic-v3-its.c | 50 ++++++++++++----- drivers/irqchip/irq-gic-v3.c | 55 +++++++++++++++---- include/linux/arm-smccc.h | 15 +++++ include/linux/irqchip/arm-gic-v3.h | 10 ++++ include/linux/irqchip/arm-gic-v4.h | 5 +- include/uapi/linux/kvm.h | 2 +- tools/arch/arm64/include/uapi/asm/kvm.h | 5 ++ .../selftests/kvm/aarch64/hypercalls.c | 2 +- 22 files changed, 361 insertions(+), 60 deletions(-) create mode 100644 Documentation/virt/kvm/arm/pvsgi.rst -- 2.33.0