public inbox for linux-kselftest@vger.kernel.org
 help / color / mirror / Atom feed
From: "Gupta, Pankaj" <pankaj.gupta@amd.com>
To: Chao Peng <chao.p.peng@linux.intel.com>,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	linux-api@vger.kernel.org, linux-doc@vger.kernel.org,
	qemu-devel@nongnu.org, linux-kselftest@vger.kernel.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Sean Christopherson <seanjc@google.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Wanpeng Li <wanpengli@tencent.com>,
	Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	x86@kernel.org, "H . Peter Anvin" <hpa@zytor.com>,
	Hugh Dickins <hughd@google.com>, Jeff Layton <jlayton@kernel.org>,
	"J . Bruce Fields" <bfields@fieldses.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Shuah Khan <shuah@kernel.org>, Mike Rapoport <rppt@kernel.org>,
	Steven Price <steven.price@arm.com>,
	"Maciej S . Szmigiero" <mail@maciej.szmigiero.name>,
	Vlastimil Babka <vbabka@suse.cz>,
	Vishal Annapurve <vannapurve@google.com>,
	Yu Zhang <yu.c.zhang@linux.intel.com>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	luto@kernel.org, jun.nakajima@intel.com, dave.hansen@intel.com,
	ak@linux.intel.com, david@redhat.com, aarcange@redhat.com,
	ddutile@redhat.com, dhildenb@redhat.com,
	Quentin Perret <qperret@google.com>,
	Michael Roth <michael.roth@amd.com>,
	mhocko@suse.com, Muchun Song <songmuchun@bytedance.com>
Subject: Re: [PATCH v7 11/14] KVM: Register/unregister the guest private memory regions
Date: Tue, 19 Jul 2022 10:00:23 +0200	[thread overview]
Message-ID: <f02baa37-8d34-5d07-a0ae-300ffefc7fee@amd.com> (raw)
In-Reply-To: <20220706082016.2603916-12-chao.p.peng@linux.intel.com>

Hi Chao,

Some comments below:

> If CONFIG_HAVE_KVM_PRIVATE_MEM=y, userspace can register/unregister the
> guest private memory regions through KVM_MEMORY_ENCRYPT_{UN,}REG_REGION
> ioctls. The patch reuses existing SEV ioctl but differs that the
> address in the region for private memory is gpa while SEV case it's hva.
> 
> The private memory region is stored as xarray in KVM for memory
> efficiency in normal usages and zapping existing memory mappings is also
> a side effect of these two ioctls.
> 
> Signed-off-by: Chao Peng <chao.p.peng@linux.intel.com>
> ---
>   Documentation/virt/kvm/api.rst  | 17 +++++++---
>   arch/x86/include/asm/kvm_host.h |  1 +
>   arch/x86/kvm/Kconfig            |  1 +
>   arch/x86/kvm/mmu.h              |  2 --
>   include/linux/kvm_host.h        |  8 +++++
>   virt/kvm/kvm_main.c             | 57 +++++++++++++++++++++++++++++++++
>   6 files changed, 80 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
> index 5ecfc7fbe0ee..dfb4caecab73 100644
> --- a/Documentation/virt/kvm/api.rst
> +++ b/Documentation/virt/kvm/api.rst
> @@ -4715,10 +4715,19 @@ Documentation/virt/kvm/amd-memory-encryption.rst.
>   This ioctl can be used to register a guest memory region which may
>   contain encrypted data (e.g. guest RAM, SMRAM etc).
>   
> -It is used in the SEV-enabled guest. When encryption is enabled, a guest
> -memory region may contain encrypted data. The SEV memory encryption
> -engine uses a tweak such that two identical plaintext pages, each at
> -different locations will have differing ciphertexts. So swapping or
> +Currently this ioctl supports registering memory regions for two usages:
> +private memory and SEV-encrypted memory.
> +
> +When private memory is enabled, this ioctl is used to register guest private
> +memory region and the addr/size of kvm_enc_region represents guest physical
> +address (GPA). In this usage, this ioctl zaps the existing guest memory
> +mappings in KVM that fallen into the region.
> +
> +When SEV-encrypted memory is enabled, this ioctl is used to register guest
> +memory region which may contain encrypted data for a SEV-enabled guest. The
> +addr/size of kvm_enc_region represents userspace address (HVA). The SEV
> +memory encryption engine uses a tweak such that two identical plaintext pages,
> +each at different locations will have differing ciphertexts. So swapping or
>   moving ciphertext of those pages will not result in plaintext being
>   swapped. So relocating (or migrating) physical backing pages for the SEV
>   guest will require some additional steps.
> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> index dae190e19fce..92120e3a224e 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -37,6 +37,7 @@
>   #include <asm/hyperv-tlfs.h>
>   
>   #define __KVM_HAVE_ARCH_VCPU_DEBUGFS
> +#define __KVM_HAVE_ZAP_GFN_RANGE
>   
>   #define KVM_MAX_VCPUS 1024
>   
> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
> index 1f160801e2a7..05861b9656a4 100644
> --- a/arch/x86/kvm/Kconfig
> +++ b/arch/x86/kvm/Kconfig
> @@ -50,6 +50,7 @@ config KVM
>   	select HAVE_KVM_PM_NOTIFIER if PM
>   	select HAVE_KVM_PRIVATE_MEM if X86_64
>   	select MEMFILE_NOTIFIER if HAVE_KVM_PRIVATE_MEM
> +	select XARRAY_MULTI if HAVE_KVM_PRIVATE_MEM
>   	help
>   	  Support hosting fully virtualized guest machines using hardware
>   	  virtualization extensions.  You will need a fairly recent
> diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
> index a99acec925eb..428cd2e88cbd 100644
> --- a/arch/x86/kvm/mmu.h
> +++ b/arch/x86/kvm/mmu.h
> @@ -209,8 +209,6 @@ static inline u8 permission_fault(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
>   	return -(u32)fault & errcode;
>   }
>   
> -void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end);
> -
>   int kvm_arch_write_log_dirty(struct kvm_vcpu *vcpu);
>   
>   int kvm_mmu_post_init_vm(struct kvm *kvm);
> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
> index 1b203c8aa696..da33f8828456 100644
> --- a/include/linux/kvm_host.h
> +++ b/include/linux/kvm_host.h
> @@ -260,6 +260,10 @@ bool kvm_test_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range);
>   bool kvm_set_spte_gfn(struct kvm *kvm, struct kvm_gfn_range *range);
>   #endif
>   
> +#ifdef __KVM_HAVE_ZAP_GFN_RANGE
> +void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end);
> +#endif
> +
>   enum {
>   	OUTSIDE_GUEST_MODE,
>   	IN_GUEST_MODE,
> @@ -795,6 +799,9 @@ struct kvm {
>   	struct notifier_block pm_notifier;
>   #endif
>   	char stats_id[KVM_STATS_NAME_SIZE];
> +#ifdef CONFIG_HAVE_KVM_PRIVATE_MEM
> +	struct xarray mem_attr_array;
> +#endif
>   };
>   
>   #define kvm_err(fmt, ...) \
> @@ -1459,6 +1466,7 @@ bool kvm_arch_dy_has_pending_interrupt(struct kvm_vcpu *vcpu);
>   int kvm_arch_post_init_vm(struct kvm *kvm);
>   void kvm_arch_pre_destroy_vm(struct kvm *kvm);
>   int kvm_arch_create_vm_debugfs(struct kvm *kvm);
> +bool kvm_arch_private_mem_supported(struct kvm *kvm);
>   
>   #ifndef __KVM_HAVE_ARCH_VM_ALLOC
>   /*
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index 230c8ff9659c..bb714c2a4b06 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -914,6 +914,35 @@ static int kvm_init_mmu_notifier(struct kvm *kvm)
>   
>   #endif /* CONFIG_MMU_NOTIFIER && KVM_ARCH_WANT_MMU_NOTIFIER */
>   
> +#ifdef CONFIG_HAVE_KVM_PRIVATE_MEM
> +#define KVM_MEM_ATTR_PRIVATE	0x0001
> +static int kvm_vm_ioctl_set_encrypted_region(struct kvm *kvm, unsigned int ioctl,
> +					     struct kvm_enc_region *region)
> +{
> +	unsigned long start, end;
> +	void *entry;
> +	int r;
> +
> +	if (region->size == 0 || region->addr + region->size < region->addr)
> +		return -EINVAL;
> +	if (region->addr & (PAGE_SIZE - 1) || region->size & (PAGE_SIZE - 1))
> +		return -EINVAL;
> +
> +	start = region->addr >> PAGE_SHIFT;
> +	end = (region->addr + region->size - 1) >> PAGE_SHIFT;
> +
> +	entry = ioctl == KVM_MEMORY_ENCRYPT_REG_REGION ?
> +				xa_mk_value(KVM_MEM_ATTR_PRIVATE) : NULL;
> +
> +	r = xa_err(xa_store_range(&kvm->mem_attr_array, start, end,
> +					entry, GFP_KERNEL_ACCOUNT));
> +
> +	kvm_zap_gfn_range(kvm, start, end + 1);
> +
> +	return r;
> +}
> +#endif /* CONFIG_HAVE_KVM_PRIVATE_MEM */
> +
>   #ifdef CONFIG_HAVE_KVM_PM_NOTIFIER
>   static int kvm_pm_notifier_call(struct notifier_block *bl,
>   				unsigned long state,
> @@ -1138,6 +1167,9 @@ static struct kvm *kvm_create_vm(unsigned long type)
>   	spin_lock_init(&kvm->mn_invalidate_lock);
>   	rcuwait_init(&kvm->mn_memslots_update_rcuwait);
>   	xa_init(&kvm->vcpu_array);
> +#ifdef CONFIG_HAVE_KVM_PRIVATE_MEM
> +	xa_init(&kvm->mem_attr_array);
> +#endif
>   
>   	INIT_LIST_HEAD(&kvm->gpc_list);
>   	spin_lock_init(&kvm->gpc_lock);
> @@ -1305,6 +1337,9 @@ static void kvm_destroy_vm(struct kvm *kvm)
>   		kvm_free_memslots(kvm, &kvm->__memslots[i][0]);
>   		kvm_free_memslots(kvm, &kvm->__memslots[i][1]);
>   	}
> +#ifdef CONFIG_HAVE_KVM_PRIVATE_MEM
> +	xa_destroy(&kvm->mem_attr_array);
> +#endif
>   	cleanup_srcu_struct(&kvm->irq_srcu);
>   	cleanup_srcu_struct(&kvm->srcu);
>   	kvm_arch_free_vm(kvm);
> @@ -1508,6 +1543,11 @@ static void kvm_replace_memslot(struct kvm *kvm,
>   	}
>   }
>   
> +bool __weak kvm_arch_private_mem_supported(struct kvm *kvm)
> +{
> +	return false;
> +}

Does this function has to be overriden by SEV and TDX to support the 
private regions?

> +
>   static int check_memory_region_flags(const struct kvm_user_mem_region *mem)
>   {
>   	u32 valid_flags = KVM_MEM_LOG_DIRTY_PAGES;
> @@ -4689,6 +4729,22 @@ static long kvm_vm_ioctl(struct file *filp,
>   		r = kvm_vm_ioctl_set_memory_region(kvm, &mem);
>   		break;
>   	}
> +#ifdef CONFIG_HAVE_KVM_PRIVATE_MEM
> +	case KVM_MEMORY_ENCRYPT_REG_REGION:
> +	case KVM_MEMORY_ENCRYPT_UNREG_REGION: {
> +		struct kvm_enc_region region;
> +
> +		if (!kvm_arch_private_mem_supported(kvm))
> +			goto arch_vm_ioctl;
> +
> +		r = -EFAULT;
> +		if (copy_from_user(&region, argp, sizeof(region)))
> +			goto out;
> +
> +		r = kvm_vm_ioctl_set_encrypted_region(kvm, ioctl, &region);

this is to store private region metadata not only the encrypted region?

Also, seems same ioctl can be used to put other regions (e.g firmware, 
later maybe DAX backend etc) into private memory?

> +		break;
> +	}
> +#endif
>   	case KVM_GET_DIRTY_LOG: {
>   		struct kvm_dirty_log log;
>   
> @@ -4842,6 +4898,7 @@ static long kvm_vm_ioctl(struct file *filp,
>   		r = kvm_vm_ioctl_get_stats_fd(kvm);
>   		break;
>   	default:
> +arch_vm_ioctl:
>   		r = kvm_arch_vm_ioctl(filp, ioctl, arg);
>   	}
>   out:


  reply	other threads:[~2022-07-19  8:00 UTC|newest]

Thread overview: 172+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-06  8:20 [PATCH v7 00/14] KVM: mm: fd-based approach for supporting KVM guest private memory Chao Peng
2022-07-06  8:20 ` [PATCH v7 01/14] mm: Add F_SEAL_AUTO_ALLOCATE seal to memfd Chao Peng
2022-07-21  9:44   ` David Hildenbrand
2022-07-21  9:50     ` David Hildenbrand
2022-07-21 15:05       ` Sean Christopherson
2022-07-25 13:46         ` Chao Peng
2022-07-21 10:27     ` Gupta, Pankaj
2022-07-25 13:54       ` Chao Peng
2022-07-25 14:49         ` Gupta, Pankaj
2022-07-25 13:42     ` Chao Peng
2022-08-05 17:55     ` Paolo Bonzini
2022-08-05 18:06       ` David Hildenbrand
2022-08-10  9:40         ` Chao Peng
2022-08-10  9:38       ` Chao Peng
2022-08-17 23:41       ` Kirill A. Shutemov
2022-08-18  9:09         ` Paolo Bonzini
2022-08-23  7:36         ` David Hildenbrand
2022-08-24 10:20           ` Chao Peng
2022-08-26 15:19   ` Fuad Tabba
2022-08-29 15:18     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 02/14] selftests/memfd: Add tests for F_SEAL_AUTO_ALLOCATE Chao Peng
2022-08-05 13:11   ` David Hildenbrand
2022-07-06  8:20 ` [PATCH v7 03/14] mm: Introduce memfile_notifier Chao Peng
2022-08-05 13:22   ` David Hildenbrand
2022-08-10  9:22     ` Chao Peng
2022-08-10 10:05       ` David Hildenbrand
2022-08-10 14:38         ` Sean Christopherson
2022-08-11 12:27           ` Quentin Perret
2022-08-11 13:39             ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 04/14] mm/shmem: Support memfile_notifier Chao Peng
2022-07-12 18:02   ` Gupta, Pankaj
2022-07-13  7:44     ` Chao Peng
2022-07-13 10:01       ` Gupta, Pankaj
2022-07-13 23:49         ` Chao Peng
2022-07-14  4:15           ` Gupta, Pankaj
2022-08-05 13:26   ` David Hildenbrand
2022-08-10  9:25     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 05/14] mm/memfd: Introduce MFD_INACCESSIBLE flag Chao Peng
2022-08-05 13:28   ` David Hildenbrand
2022-08-10  9:37     ` Chao Peng
2022-08-10  9:55       ` David Hildenbrand
2022-08-11 13:17         ` Chao Peng
2022-09-07 16:18     ` Kirill A. Shutemov
2022-07-06  8:20 ` [PATCH v7 06/14] KVM: Rename KVM_PRIVATE_MEM_SLOTS to KVM_INTERNAL_MEM_SLOTS Chao Peng
2022-07-06  8:20 ` [PATCH v7 07/14] KVM: Use gfn instead of hva for mmu_notifier_retry Chao Peng
2022-07-15 11:36   ` Gupta, Pankaj
2022-07-18 13:29     ` Chao Peng
2022-07-18 15:26       ` Sean Christopherson
2022-07-19 14:02         ` Chao Peng
2022-08-04  7:10   ` Isaku Yamahata
2022-08-10  8:19     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 08/14] KVM: Rename mmu_notifier_* Chao Peng
2022-07-29 19:02   ` Sean Christopherson
2022-08-03 10:13     ` Chao Peng
2022-08-05 19:54     ` Paolo Bonzini
2022-08-10  8:09       ` Chao Peng
2023-05-23  7:19   ` Kautuk Consul
2023-05-23 14:19     ` Sean Christopherson
2023-05-24  6:12       ` Kautuk Consul
2023-05-24 20:16         ` Sean Christopherson
2023-05-24 20:33           ` Peter Zijlstra
2023-05-24 21:39             ` Sean Christopherson
2023-05-25  8:54               ` Peter Zijlstra
2023-05-25  3:52             ` Kautuk Consul
2023-05-24 20:28         ` Peter Zijlstra
2022-07-06  8:20 ` [PATCH v7 09/14] KVM: Extend the memslot to support fd-based private memory Chao Peng
2022-07-29 19:51   ` Sean Christopherson
2022-08-03 10:08     ` Chao Peng
2022-08-03 14:42       ` Sean Christopherson
2022-07-06  8:20 ` [PATCH v7 10/14] KVM: Add KVM_EXIT_MEMORY_FAULT exit Chao Peng
2022-07-06  8:20 ` [PATCH v7 11/14] KVM: Register/unregister the guest private memory regions Chao Peng
2022-07-19  8:00   ` Gupta, Pankaj [this message]
2022-07-19 14:08     ` Chao Peng
2022-07-19 14:23       ` Gupta, Pankaj
2022-07-20 15:07         ` Chao Peng
2022-07-20 15:31           ` Gupta, Pankaj
2022-07-20 16:21             ` Sean Christopherson
2022-07-20 17:41               ` Gupta, Pankaj
2022-07-21  7:34               ` Wei Wang
2022-07-21  9:29                 ` Chao Peng
2022-07-21 17:58                   ` Sean Christopherson
2022-07-25 13:04                     ` Chao Peng
2022-07-29 19:54                       ` Sean Christopherson
2022-08-02  0:49                         ` Sean Christopherson
2022-08-02 16:38                           ` Sean Christopherson
2022-08-03  9:48                             ` Chao Peng
2022-08-03 15:51                               ` Sean Christopherson
2022-08-04  7:58                                 ` Chao Peng
2022-07-20 16:44   ` Sean Christopherson
2022-07-21  9:37     ` Chao Peng
2022-08-19 19:37   ` Vishal Annapurve
2022-08-24 10:37     ` Chao Peng
2022-08-26 15:19   ` Fuad Tabba
2022-08-29 15:21     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 12/14] KVM: Handle page fault for private memory Chao Peng
2022-07-29 20:58   ` Sean Christopherson
2022-08-03  9:52     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 13/14] KVM: Enable and expose KVM_MEM_PRIVATE Chao Peng
2022-07-19  9:55   ` Gupta, Pankaj
2022-07-19 14:12     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 14/14] memfd_create.2: Describe MFD_INACCESSIBLE flag Chao Peng
2022-08-01 14:40   ` Dave Hansen
2022-08-03  9:53     ` Chao Peng
2022-07-13  3:58 ` [PATCH v7 00/14] KVM: mm: fd-based approach for supporting KVM guest private memory Gupta, Pankaj
2022-07-13  7:57   ` Chao Peng
2022-07-13 10:35     ` Gupta, Pankaj
2022-07-13 23:59       ` Chao Peng
2022-07-14  4:39         ` Gupta, Pankaj
2022-07-14  5:06           ` Gupta, Pankaj
2022-07-14  4:29       ` Andy Lutomirski
2022-07-14  5:13         ` Gupta, Pankaj
2022-08-11 10:02 ` Nikunj A. Dadhania
2022-08-11 11:30   ` Gupta, Pankaj
2022-08-11 13:32     ` Chao Peng
2022-08-11 17:28       ` Nikunj A. Dadhania
2022-08-12  3:22       ` Nikunj A. Dadhania
2022-08-11 17:18     ` Nikunj A. Dadhania
2022-08-11 23:02       ` Gupta, Pankaj
2022-08-12  6:02         ` Gupta, Pankaj
2022-08-12  7:18           ` Gupta, Pankaj
2022-08-12  8:48             ` Nikunj A. Dadhania
2022-08-12  9:33               ` Gupta, Pankaj
2022-08-15 13:04               ` Chao Peng
2022-08-16  4:28                 ` Nikunj A. Dadhania
2022-08-16 11:33                 ` Gupta, Pankaj
2022-08-16 12:24                   ` Kirill A . Shutemov
2022-08-16 13:03                     ` Gupta, Pankaj
2022-08-16 15:38                       ` Sean Christopherson
2022-08-17 15:27                         ` Michael Roth
2022-08-23  1:25                           ` Isaku Yamahata
2022-08-23 17:41                         ` Gupta, Pankaj
2022-08-18  5:40 ` Hugh Dickins
2022-08-18 13:24   ` Kirill A . Shutemov
2022-08-19  0:20     ` Sean Christopherson
2022-08-19  3:38       ` Hugh Dickins
2022-08-19 22:53         ` Sean Christopherson
2022-08-23  7:55         ` David Hildenbrand
2022-08-23 16:05           ` Sean Christopherson
2022-08-24  9:41             ` Chao Peng
2022-09-09  4:55               ` Andy Lutomirski
2022-08-19  3:00     ` Hugh Dickins
2022-08-20  0:27       ` Kirill A. Shutemov
2022-08-21  5:15         ` Hugh Dickins
2022-08-31 14:24           ` Kirill A . Shutemov
2022-09-02 10:27             ` Chao Peng
2022-09-02 12:30               ` Kirill A . Shutemov
2022-09-08  1:10             ` Kirill A. Shutemov
2022-09-13  9:44               ` Sean Christopherson
2022-09-13 13:28                 ` Kirill A. Shutemov
2022-09-13 14:53                   ` Sean Christopherson
2022-09-13 16:00                     ` Kirill A. Shutemov
2022-09-13 16:12                       ` Sean Christopherson
2022-09-09  4:48         ` Andy Lutomirski
2022-09-09 14:32           ` Kirill A . Shutemov
2022-09-09 19:11             ` Andy Lutomirski
2022-09-09 23:02               ` Kirill A . Shutemov
2022-08-21 10:27       ` Matthew Wilcox
2022-08-24 10:27         ` Chao Peng
2022-09-09  4:44     ` Andy Lutomirski
     [not found]     ` <diqzlej60z57.fsf@ackerleytng-cloudtop.c.googlers.com>
     [not found]       ` <20221202061347.1070246-2-chao.p.peng@linux.intel.com>
2023-04-13 15:25         ` Christian Brauner
2023-04-13 22:28           ` Sean Christopherson
2023-04-14 22:38             ` Ackerley Tng
2023-04-14 23:26               ` Sean Christopherson
2023-04-15  0:06                 ` Sean Christopherson
2023-04-19  8:29             ` Christian Brauner
2023-04-20  0:49               ` Sean Christopherson
2023-04-20  8:35                 ` Christian Brauner
2022-08-26 15:19 ` Fuad Tabba
2022-08-29 15:17   ` Chao Peng
2022-08-31  9:12     ` Fuad Tabba
2022-09-02 10:19       ` Chao Peng
2022-09-09 15:35 ` Michael Roth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f02baa37-8d34-5d07-a0ae-300ffefc7fee@amd.com \
    --to=pankaj.gupta@amd.com \
    --cc=aarcange@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=bfields@fieldses.org \
    --cc=bp@alien8.de \
    --cc=chao.p.peng@linux.intel.com \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@intel.com \
    --cc=david@redhat.com \
    --cc=ddutile@redhat.com \
    --cc=dhildenb@redhat.com \
    --cc=hpa@zytor.com \
    --cc=hughd@google.com \
    --cc=jlayton@kernel.org \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=jun.nakajima@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mail@maciej.szmigiero.name \
    --cc=mhocko@suse.com \
    --cc=michael.roth@amd.com \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qperret@google.com \
    --cc=rppt@kernel.org \
    --cc=seanjc@google.com \
    --cc=shuah@kernel.org \
    --cc=songmuchun@bytedance.com \
    --cc=steven.price@arm.com \
    --cc=tglx@linutronix.de \
    --cc=vannapurve@google.com \
    --cc=vbabka@suse.cz \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    --cc=x86@kernel.org \
    --cc=yu.c.zhang@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox