From: eillon <yezhenyu2@xxxxxxxxxx> This series of patches add support to the Hardware Dirty state tracking Structure(HDBSS) feature, which is introduced by the ARM architecture in the DDI0601(ID121123) version. The HDBSS feature is an extension to the architecture that enhances tracking translation table descriptors' dirty state, identified as FEAT_HDBSS. The goal of this feature is to reduce the cost of surveying for dirtied granules, with minimal effect on recording when a granule has been dirtied. The purpose of this feature is to make the execution overhead of live migration lower to both the guest and the host, compared to existing approaches (write-protect or search stage 2 tables). After these patches, users(such as qemu) can use the KVM_CAP_ARM_HW_DIRTY_STATE_TRACK ioctl to enable or disable the HDBSS feature before and after the live migration. See patches for details, Thanks. eillon (5): arm64/sysreg: add HDBSS related register information arm64/kvm: support set the DBM attr during memory abort arm64/kvm: using ioctl to enable/disable the HDBSS feature arm64/kvm: support to handle the HDBSSF event arm64/config: add config to control whether enable HDBSS feature arch/arm64/Kconfig | 19 +++++++ arch/arm64/Makefile | 4 +- arch/arm64/include/asm/cpufeature.h | 15 +++++ arch/arm64/include/asm/esr.h | 2 + arch/arm64/include/asm/kvm_arm.h | 1 + arch/arm64/include/asm/kvm_host.h | 6 ++ arch/arm64/include/asm/kvm_mmu.h | 12 ++++ arch/arm64/include/asm/kvm_pgtable.h | 3 + arch/arm64/include/asm/sysreg.h | 16 ++++++ arch/arm64/kvm/arm.c | 80 +++++++++++++++++++++++++++ arch/arm64/kvm/handle_exit.c | 47 ++++++++++++++++ arch/arm64/kvm/hyp/pgtable.c | 6 ++ arch/arm64/kvm/hyp/vhe/switch.c | 1 + arch/arm64/kvm/mmu.c | 10 ++++ arch/arm64/kvm/reset.c | 7 +++ arch/arm64/tools/sysreg | 28 ++++++++++ include/linux/kvm_host.h | 1 + include/uapi/linux/kvm.h | 1 + tools/arch/arm64/include/asm/sysreg.h | 4 ++ tools/include/uapi/linux/kvm.h | 1 + 20 files changed, 263 insertions(+), 1 deletion(-) -- 2.39.3