On Tue, Jan 17, 2023, Chao Peng wrote: > On Tue, Jan 17, 2023 at 11:21:10AM +0800, Binbin Wu wrote: > > > > On 12/2/2022 2:13 PM, Chao Peng wrote: > > > In confidential computing usages, whether a page is private or shared is > > > necessary information for KVM to perform operations like page fault > > > handling, page zapping etc. There are other potential use cases for > > > per-page memory attributes, e.g. to make memory read-only (or no-exec, > > > or exec-only, etc.) without having to modify memslots. > > > > > > Introduce two ioctls (advertised by KVM_CAP_MEMORY_ATTRIBUTES) to allow > > > userspace to operate on the per-page memory attributes. > > > - KVM_SET_MEMORY_ATTRIBUTES to set the per-page memory attributes to > > > a guest memory range. > > > - KVM_GET_SUPPORTED_MEMORY_ATTRIBUTES to return the KVM supported > > > memory attributes. > > > > > > KVM internally uses xarray to store the per-page memory attributes. > > > > > > Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx> > > > Signed-off-by: Chao Peng <chao.p.peng@xxxxxxxxxxxxxxx> > > > Link: https://lore.kernel.org/all/Y2WB48kD0J4VGynX@xxxxxxxxxx/ > > > --- > > > Documentation/virt/kvm/api.rst | 63 ++++++++++++++++++++++++++++ > > > arch/x86/kvm/Kconfig | 1 + > > > include/linux/kvm_host.h | 3 ++ > > > include/uapi/linux/kvm.h | 17 ++++++++ > > > > Should the changes introduced in this file also need to be added in > > tools/include/uapi/linux/kvm.h ? > > Yes I think. I'm not sure how Paolo or others feel, but my preference is to never update KVM's uapi headers in tools/ in KVM's tree. Nothing KVM-related in tools/ actually relies on the headers being copied into tools/, e.g. KVM selftests pulls KVM's headers from the .../usr/include/ directory that's populated by `make headers_install`. Perf's tooling is what actually "needs" the headers to be copied into tools/, so my preference is to let the tools/perf maintainers deal with the headache of keeping everything up-to-date. > But I'm hesitate to include in this patch or not. I see many commits sync > kernel kvm.h to tools's copy. Looks that is done periodically and with a > 'pull' model.