qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 00/19] QEMU gmem implemention


From: Xiaoyao Li
Subject: Re: [RFC PATCH 00/19] QEMU gmem implemention
Date: Tue, 1 Aug 2023 09:55:28 +0800
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.13.0

On 8/1/2023 1:10 AM, Isaku Yamahata wrote:
On Mon, Jul 31, 2023 at 12:21:42PM -0400,
Xiaoyao Li <xiaoyao.li@intel.com> wrote:

This is the first RFC version of enabling KVM gmem[1] as the backend for
private memory of KVM_X86_PROTECTED_VM.

It adds the support to create a specific KVM_X86_PROTECTED_VM type VM,
and introduces 'private' property for memory backend. When the vm type
is KVM_X86_PROTECTED_VM and memory backend has private enabled as below,
it will call KVM gmem ioctl to allocate private memory for the backend.

     $qemu -object memory-backend-ram,id=mem0,size=1G,private=on \
           -machine q35,kvm-type=sw-protected-vm,memory-backend=mem0 \
          ...

Unfortunately this patch series fails the boot of OVMF at very early
stage due to triple fault because KVM doesn't support emulate string IO
to private memory. We leave it as an open to be discussed.

There are following design opens that need to be discussed:

1. how to determine the vm type?

    a. like this series, specify the vm type via machine property
       'kvm-type'
    b. check the memory backend, if any backend has 'private' property
       set, the vm-type is set to KVM_X86_PROTECTED_VM.

Hi Xiaoyao.  Because qemu has already confidential guest support, we should
utilize it.  Say,
qemu  \
   -object sw-protected, id=swp0, <more options for KVM_X86_SW_PROTECTED_VM> \
   -machine confidential-guest-support=swp0

thanks for pointing out this option. I thought of it and forgot to list it as option.

It seems better and I'll go this direction if no one has different opinion.


2. whether 'private' property is needed if we choose 1.b as design

    with 1.b, QEMU can decide whether the memory region needs to be
    private (allocates gmem fd for it) or not, on its own.


Memory region property (how to create KVM memory slot) should be independent
from underlying VM type.  Some (e.g. TDX) may require KVM private memory slot,
some may not.  Leave the decision to its vm type backend.  They can use qemu
memory listener.

As I replied to Daniel, the topic is whether 'private' property is needed. Is it essential to let users decide which memory can be private? It seems OK that QEMU can make the decision based on VM type.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]