mbox series

[RFC,0/5] target/arm: Add MTE support to KVM guest

Message ID cover.1612747873.git.haibo.xu@linaro.org (mailing list archive)
Headers show
Series target/arm: Add MTE support to KVM guest | expand

Message

Haibo Xu Feb. 8, 2021, 3:20 a.m. UTC
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(-)

Comments

Peter Maydell Feb. 16, 2021, 11:20 a.m. UTC | #1
Adding the migration maintainers to the cc list, because
the real meat of this patchset is "how should the migration
of MTE tags be integrated into the migration/ram.c code",
which is pretty well out of my area of expertise...

thanks
-- PMM

On Mon, 8 Feb 2021 at 03:20, Haibo Xu <haibo.xu@linaro.org> wrote:
>
> 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(-)
Haibo Xu Feb. 22, 2021, 4:18 a.m. UTC | #2
On Tue, 16 Feb 2021 at 19:20, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> Adding the migration maintainers to the cc list, because
> the real meat of this patchset is "how should the migration
> of MTE tags be integrated into the migration/ram.c code",
> which is pretty well out of my area of expertise...
>
> thanks
> -- PMM
>

Hi Peter,

Thanks for cc-ing to the related maintainers!

Regards,
Haibo

> On Mon, 8 Feb 2021 at 03:20, Haibo Xu <haibo.xu@linaro.org> wrote:
> >
> > 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(-)