mbox series

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

Message ID cover.1612747873.git.haibo.xu@linaro.org
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(-)

-- 
2.17.1

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(-)