This series add support for MTE(Memory Tagging Extension)[1] in KVM guest. It's based on Steven Price's kernel KVM patches V7[2], and has been tested to ensure that test case[3] can be passed in a KVM guest. Basic pre-copy migration test also passed between two MTE enabled kvm guest.
This is a RFC patch series becuase: (1) Need to add some arm MTE specific codes to the ram migration loop. There may be better way to do that in a more abstract way. (2) Only pre-copy migration is supported and tested currently, post-copy as well as compress/zero page migration are still WIP. All kinds of feedbacks are very welcomed, especially for the migration support. Note: (1) To support MTE migration, tags for one page are appended to the page data during ram save iteration which make it easier to sync the page data and tags. [1] https://community.arm.com/developer/ip-products/processors/b/ processors-ip-blog/posts/enhancing-memory-safety [2] https://lwn.net/Articles/842827/ [3] https://elixir.bootlin.com/linux/latest/source/Documentation/ arm64/memory-tagging-extension.rst Haibo Xu (5): Update Linux headers with new MTE support Add basic MTE support to KVM guest Add APIs to get/set MTE tags Add migration support for KVM guest with MTE Enable the MTE support for KVM guest hw/arm/virt.c | 44 +++++++++++++------- include/hw/arm/virt.h | 2 + include/migration/misc.h | 1 + linux-headers/linux/kvm.h | 15 +++++++ migration/ram.c | 86 ++++++++++++++++++++++++++++++++++++++- target/arm/cpu.c | 2 +- target/arm/kvm.c | 9 ++++ target/arm/kvm64.c | 31 ++++++++++++++ target/arm/kvm_arm.h | 2 + 9 files changed, 176 insertions(+), 16 deletions(-) -- 2.17.1