From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690820940; cv=none; d=zohomail.com; s=zohoarc; b=A6gtLmlq+W4sDId+gpeerVlorRQZ4osUBmEEZMtul7+zwVUiQdghXj+8fOPLZBfRl6TZN2uIF/ycRN9vzgNcrnA0i3lRwL0M+DROO4GpJAtT7p3qUdvDcxK5+G+jwDKm/ZC98NUiufGJX1J0zew91kePq6jECzhQLJNzUqUarNg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690820940; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4QaSj7uP/XiD7aX6DwrTtyHkShQKv8AgB0V9Y7FQ264=; b=W39nEE0lfXDt9hWiKQd9fri9FizHCfozD3VUDjvz7/TMerybkd2hKYc1Kg2KZ3Gm9dK+T9DMprNrhOFKte9igWNWgo5Zp3efpFnNWDn9pje7pu0p6iKmzddjCIG574IF91BAtMWHRp5ngCyKrZtRaA3baW0oS/dg5Ws305JcumY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690820940691911.9097886656577; Mon, 31 Jul 2023 09:29:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVku-0003fu-OO; Mon, 31 Jul 2023 12:28:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVki-0003e6-N9 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:28:12 -0400 Received: from mgamail.intel.com ([134.134.136.126]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVkg-0008I7-KS for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:28:12 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:24:56 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:24:51 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690820890; x=1722356890; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rGg2cVGBDP7vKJG5NcZCnC1i778S3kaV/6nLpZcWGp8=; b=G0Ffnae72CgAe2ttXiQCebE5pWKYpNb9c8ilgj6gsH0aPisZ47ItKOvU i6MPGShOfV5EzYuNkWkQh7BhIPDlpp+j/Cu+5+XdO3srNWnaLhyQLFOCB jIpw9P3u5vFxw8MMJ5cjX6sRoXgh+sSuFMF6ilij5ZsfL0oRku4T19dYE lI67IA7eKJbZUwozHUuXIR3LrJfJkXeveEWmsH+MNfDnmVQm3vEaz16gp TZXABfxsr9BWR+ZTr7Vtf0mPHw9BpkqRJSoad8oHuID45GX5EYx7vgt6c whTUS3A4gwNjANOYDONmC5LhH9MKw9x8r0WvzSxu5wHQfHb+r/zMSxmnk w==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993307" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993307" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757983895" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757983895" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 01/19] trace/kvm: Split address space and slot id in trace_kvm_set_user_memory() Date: Mon, 31 Jul 2023 12:21:43 -0400 Message-Id: <20230731162201.271114-2-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690820941923100001 Content-Type: text/plain; charset="utf-8" The upper 16 bits of kvm_userspace_memory_region::slot are address space id. Parse it separately in trace_kvm_set_user_memory(). Signed-off-by: Xiaoyao Li --- accel/kvm/kvm-all.c | 5 +++-- accel/kvm/trace-events | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 373d876c0580..d8eee405de24 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -309,8 +309,9 @@ static int kvm_set_user_memory_region(KVMMemoryListener= *kml, KVMSlot *slot, boo ret =3D kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem); slot->old_flags =3D mem.flags; err: - trace_kvm_set_user_memory(mem.slot, mem.flags, mem.guest_phys_addr, - mem.memory_size, mem.userspace_addr, ret); + trace_kvm_set_user_memory(mem.slot >> 16, (uint16_t)mem.slot, mem.flag= s, + mem.guest_phys_addr, mem.memory_size, + mem.userspace_addr, ret); if (ret < 0) { error_report("%s: KVM_SET_USER_MEMORY_REGION failed, slot=3D%d," " start=3D0x%" PRIx64 ", size=3D0x%" PRIx64 ": %s", diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events index 399aaeb0ec75..14ebfa1b991c 100644 --- a/accel/kvm/trace-events +++ b/accel/kvm/trace-events @@ -15,7 +15,7 @@ kvm_irqchip_update_msi_route(int virq) "Updating MSI rout= e virq=3D%d" kvm_irqchip_release_virq(int virq) "virq %d" kvm_set_ioeventfd_mmio(int fd, uint64_t addr, uint32_t val, bool assign, u= int32_t size, bool datamatch) "fd: %d @0x%" PRIx64 " val=3D0x%x assign: %d = size: %d match: %d" kvm_set_ioeventfd_pio(int fd, uint16_t addr, uint32_t val, bool assign, ui= nt32_t size, bool datamatch) "fd: %d @0x%x val=3D0x%x assign: %d size: %d m= atch: %d" -kvm_set_user_memory(uint32_t slot, uint32_t flags, uint64_t guest_phys_add= r, uint64_t memory_size, uint64_t userspace_addr, int ret) "Slot#%d flags= =3D0x%x gpa=3D0x%"PRIx64 " size=3D0x%"PRIx64 " ua=3D0x%"PRIx64 " ret=3D%d" +kvm_set_user_memory(uint16_t as, uint16_t slot, uint32_t flags, uint64_t g= uest_phys_addr, uint64_t memory_size, uint64_t userspace_addr, int ret) "Ad= drSpace#%d Slot#%d flags=3D0x%x gpa=3D0x%"PRIx64 " size=3D0x%"PRIx64 " ua= =3D0x%"PRIx64 " ret=3D%d" kvm_clear_dirty_log(uint32_t slot, uint64_t start, uint32_t size) "slot#%"= PRId32" start 0x%"PRIx64" size 0x%"PRIx32 kvm_resample_fd_notify(int gsi) "gsi %d" kvm_dirty_ring_full(int id) "vcpu %d" --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690820958; cv=none; d=zohomail.com; s=zohoarc; b=T5IMoVQ9S6/5ZsrAFWmIw+QGTIpSTjmQHA9/kKfKaqzYxDsKMzCEeh8pttJ0yHfzN9/h4ry0vC7v12VD7raS7GpAGGYqiXK1fa2tKvW8GONLGjG7rPOXaR476vcFWGGmklmo17BMSdwBJcC49dVIB0JmBsoZ6VPV1AMOE9W1ZTg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690820958; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QrRBgZo4qGMLZuEpqNCxbSAOSZQpRBQKzCbR3NDnQLE=; b=nqQ+ewHAT6f4DdJhdOs6URrgfivst55fA6/TnVEPvcKQRK+Ht1OXO2OarMmGkZLbufdDqkImdAc7+QyKBvZ+2If2uZYyB/lFZBl/uHezBM9DOrUXGx1kSCnXSNNeNsUtHeJOKzebDi9YcaJqqBHlxgzFYbtY3aOMBtifubs0k+Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 169082095880376.08331353155768; Mon, 31 Jul 2023 09:29:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVky-0003rf-0e; Mon, 31 Jul 2023 12:28:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVko-0003fx-PD for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:28:22 -0400 Received: from mgamail.intel.com ([134.134.136.126]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVkl-0008I7-N7 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:28:18 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:01 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:24:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690820895; x=1722356895; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ekv0ksBj/MNS9E1IHSCjapcpIdXM/HpSUStp7qPoMck=; b=Aeg3ck7OkXujtY5rlvsSC9US3luhpw0nnWYm03P/zaxRFxA+Ay1jgXgB U7eFEp+/m25Z68FUibwIOKcD+yuPjw78CB2lRPzQVOLAjhRK1As+9Guab HpzpYkr8ggn9oMyugdkZ0anhF5AVqoQ5roQiqvyAEEerQY2zkLXGeZnfU Ky/jf+N/yqEGRSmE5ScjN0agE5tg+UmfiSHmogFaD7tl+sFf5Cd9LgUdP kHKl/7PPL29sI11lE19MKECLAPK5WUbtecX0fHk+LTwEW2BayAHLVcwsz p2DOVO5KEnQXJyCLOa3u2OlAsk5C5GvMyhUrQ+TqJzcNfEOPSw406QY89 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993352" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993352" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757983955" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757983955" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 02/19] *** HACK *** linux-headers: Update headers to pull in gmem APIs Date: Mon, 31 Jul 2023 12:21:44 -0400 Message-Id: <20230731162201.271114-3-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690820961045100003 Content-Type: text/plain; charset="utf-8" This patch needs to be updated by script scripts/update-linux-headers.sh once gmem fd support is upstreamed in Linux kernel. Signed-off-by: Xiaoyao Li --- linux-headers/asm-x86/kvm.h | 3 +++ linux-headers/linux/kvm.h | 50 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h index 2b3a8f7bd2c0..003fb745347c 100644 --- a/linux-headers/asm-x86/kvm.h +++ b/linux-headers/asm-x86/kvm.h @@ -560,4 +560,7 @@ struct kvm_pmu_event_filter { /* x86-specific KVM_EXIT_HYPERCALL flags. */ #define KVM_EXIT_HYPERCALL_LONG_MODE BIT(0) =20 +#define KVM_X86_DEFAULT_VM 0 +#define KVM_X86_SW_PROTECTED_VM 1 + #endif /* _ASM_X86_KVM_H */ diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index 1f3f3333a4d8..278bed78f98e 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -95,6 +95,19 @@ struct kvm_userspace_memory_region { __u64 userspace_addr; /* start of the userspace allocated memory */ }; =20 +/* for KVM_SET_USER_MEMORY_REGION2 */ +struct kvm_userspace_memory_region2 { + __u32 slot; + __u32 flags; + __u64 guest_phys_addr; + __u64 memory_size; + __u64 userspace_addr; + __u64 gmem_offset; + __u32 gmem_fd; + __u32 pad1; + __u64 pad2[14]; +}; + /* * The bit 0 ~ bit 15 of kvm_userspace_memory_region::flags are visible for * userspace, other bits are reserved for kvm internal use which are defin= ed @@ -102,6 +115,7 @@ struct kvm_userspace_memory_region { */ #define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0) #define KVM_MEM_READONLY (1UL << 1) +#define KVM_MEM_PRIVATE (1UL << 2) =20 /* for KVM_IRQ_LINE */ struct kvm_irq_level { @@ -264,6 +278,7 @@ struct kvm_xen_exit { #define KVM_EXIT_RISCV_SBI 35 #define KVM_EXIT_RISCV_CSR 36 #define KVM_EXIT_NOTIFY 37 +#define KVM_EXIT_MEMORY_FAULT 38 =20 /* For KVM_EXIT_INTERNAL_ERROR */ /* Emulate instruction failed. */ @@ -506,6 +521,13 @@ struct kvm_run { #define KVM_NOTIFY_CONTEXT_INVALID (1 << 0) __u32 flags; } notify; + /* KVM_EXIT_MEMORY_FAULT */ + struct { +#define KVM_MEMORY_EXIT_FLAG_PRIVATE (1ULL << 3) + __u64 flags; + __u64 gpa; + __u64 size; + } memory; /* Fix the size of the union. */ char padding[256]; }; @@ -1188,6 +1210,9 @@ struct kvm_ppc_resize_hpt { #define KVM_CAP_COUNTER_OFFSET 227 #define KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE 228 #define KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES 229 +#define KVM_CAP_USER_MEMORY2 230 +#define KVM_CAP_MEMORY_ATTRIBUTES 231 +#define KVM_CAP_VM_TYPES 232 =20 #ifdef KVM_CAP_IRQ_ROUTING =20 @@ -1462,6 +1487,8 @@ struct kvm_vfio_spapr_tce { struct kvm_userspace_memory_region) #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) +#define KVM_SET_USER_MEMORY_REGION2 _IOW(KVMIO, 0x49, \ + struct kvm_userspace_memory_region2) =20 /* enable ucontrol for s390 */ struct kvm_s390_ucas_mapping { @@ -2245,4 +2272,27 @@ struct kvm_s390_zpci_op { /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) =20 +/* Available with KVM_CAP_MEMORY_ATTRIBUTES */ +#define KVM_GET_SUPPORTED_MEMORY_ATTRIBUTES _IOR(KVMIO, 0xd2, __u64) +#define KVM_SET_MEMORY_ATTRIBUTES _IOW(KVMIO, 0xd3, struct k= vm_memory_attributes) + +struct kvm_memory_attributes { + __u64 address; + __u64 size; + __u64 attributes; + __u64 flags; +}; + +#define KVM_MEMORY_ATTRIBUTE_PRIVATE (1ULL << 3) + +#define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO, 0xd4, struct kvm_create_guest= _memfd) + +#define KVM_GUEST_MEMFD_ALLOW_HUGEPAGE (1ULL << 0) + +struct kvm_create_guest_memfd { + __u64 size; + __u64 flags; + __u64 reserved[6]; +}; + #endif /* __LINUX_KVM_H */ --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821162; cv=none; d=zohomail.com; s=zohoarc; b=hya9Wo4ASfsq84r6+6FZ84Xf5Qno+upWDK9SUpn/nEzidNASvnxX4bD++8yWcUWqvP9yxzJ+n36KIJWlD6EMJEE9BZ912bci6Zfj18h57Br32MsMHFqjUy+HQHQoaWOn0u9NYTHmVK06jo2LOF/FCSFrf5lb8ab/DZkgEItotl4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821162; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Ygcv7SCvLXekq+BdPnsLRT5dbWgDfvqvpxqh6NNcfQQ=; b=fzPd85HEA1hOJ6GBSe3uZezIcFNSRQKjQKAg7kb/z9ZeDJeX30DtECnab8GLen6MeCvYDb3QXgcbi2/5uq0CPyv+p/FyCXG0aKTa1qpVqnH6XPGDeJbeFEEMszT2Z/VR7sxieMYV5mjRpDHCtA6lmxyJ+IB8Tbtba8IgDx2JO2E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821162093903.4244370991073; Mon, 31 Jul 2023 09:32:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVow-0001hq-Vu; Mon, 31 Jul 2023 12:32:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVou-0001X4-0I for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:32 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVos-00010F-5e for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:31 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:05 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:01 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821150; x=1722357150; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dRjJnplBZqshOVUlL2HsM+HSmg8sekLwwBqcDcf81FM=; b=fOrEadhRE86wgCpGRZRyVUhFrje3JG/3VHuE2f4iRWB5TcfoIv4iLdhG ossGRNJg0d/OwDapI9b4piTXvqcZ/elf1BQKb0OBncWB74SXNnNIQIcEH jslVOGUE2vD/n97xb8uy4tSMoMN0XIcwN3lc42tXlOZyGIp8ALA64xEge vTnAEfzO6M1ecb3g1LEwQ63WOxKuzpsfmIhIEUHsvxYsz+oDRv+vB3r+Y EICjdOZOGWU93k7ZOMQHIFqAwWd292PCv8UyJqBcDYVaRgx7Tppjxpn9+ eZ1er4dgPIowDo8U09YWC5b+/KA4J+cx0mBIEF00j+cLXu/QcZu4naPih w==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993396" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993396" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984045" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984045" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 03/19] RAMBlock: Support KVM gmemory Date: Mon, 31 Jul 2023 12:21:45 -0400 Message-Id: <20230731162201.271114-4-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821162640100002 Content-Type: text/plain; charset="utf-8" From: Chao Peng Add KVM gmem support to RAMBlock so we can have both normal hva based memory and gmem fd based memory in one RAMBlock. The gmem part is represented by the gmem_fd. Signed-off-by: Chao Peng Signed-off-by: Xiaoyao Li --- include/exec/memory.h | 8 ++++++++ include/exec/ramblock.h | 1 + softmmu/memory.c | 9 +++++++++ softmmu/physmem.c | 2 ++ 4 files changed, 20 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 7f5c11a0cc9e..61e31c7b9874 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -1376,6 +1376,14 @@ void memory_region_init_ram_from_fd(MemoryRegion *mr, int fd, ram_addr_t offset, Error **errp); +/** + * memory_region_set_gmem_fd: Set RAM memory region with a restricted fd. + * + * @mr: the #MemoryRegion to be set. + * @fd: the fd to provide restricted memory. + */ +void memory_region_set_gmem_fd(MemoryRegion *mr, int fd); + #endif =20 /** diff --git a/include/exec/ramblock.h b/include/exec/ramblock.h index 69c6a5390293..0d158b3909c9 100644 --- a/include/exec/ramblock.h +++ b/include/exec/ramblock.h @@ -41,6 +41,7 @@ struct RAMBlock { QLIST_HEAD(, RAMBlockNotifier) ramblock_notifiers; int fd; uint64_t fd_offset; + int gmem_fd; size_t page_size; /* dirty bitmap used during migration */ unsigned long *bmap; diff --git a/softmmu/memory.c b/softmmu/memory.c index 7d9494ce7028..4f8f8c0a02e6 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -1661,6 +1661,15 @@ void memory_region_init_ram_from_fd(MemoryRegion *mr, error_propagate(errp, err); } } + +void memory_region_set_gmem_fd(MemoryRegion *mr, int fd) +{ + if (mr->ram_block) { + assert(fd >=3D 0); + mr->ram_block->gmem_fd =3D fd; + } +} + #endif =20 void memory_region_init_ram_ptr(MemoryRegion *mr, diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 3df73542e1fe..8f64128de0b5 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -1920,6 +1920,7 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, Mem= oryRegion *mr, new_block->used_length =3D size; new_block->max_length =3D size; new_block->flags =3D ram_flags; + new_block->gmem_fd =3D -1; new_block->host =3D file_ram_alloc(new_block, size, fd, readonly, !file_size, offset, errp); if (!new_block->host) { @@ -1990,6 +1991,7 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, ra= m_addr_t max_size, new_block->max_length =3D max_size; assert(max_size >=3D size); new_block->fd =3D -1; + new_block->gmem_fd =3D -1; new_block->page_size =3D qemu_real_host_page_size(); new_block->host =3D host; new_block->flags =3D ram_flags; --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821171; cv=none; d=zohomail.com; s=zohoarc; b=gWS+hmJrmX8M87OJV38pxJONw34ZMXhjZN0z83+suouL7Cb7i6Eo8tTlrx8IpaZcYYeW15wxSeVKl/jM/LHyVSE5YN3Gz8NCrU4H1yQHflJx5/Pd4qlVAD2IcedJ01OjZZuZgeVCFoaAgjV4JgqjX03AnN9nqfdnqJnpeOkJ3Rg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821171; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=KxHtzOWMwl3F9cdQqgNc7klE0NkzOC/TeAo/4crxmro=; b=LRXakDjt1uGgI21/DUmZCGl39vaVnRXN5mQOun7BVOlMbfUCjl9zIymIJiw0w9VzS2zgeWXrNArsCqYCPJmVAjMeEQ+BK0msjSqUIo9tnID5jkRz3Msxr8kEp1MUhbKiWszhMozsLeOM+Wk+NqBku2Ly3Tp9XoTNLOTrY9M0Kbk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821171021329.98904683186436; Mon, 31 Jul 2023 09:32:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVoz-0001nG-Re; Mon, 31 Jul 2023 12:32:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVox-0001mE-Us for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:35 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVow-00010F-AB for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:35 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:10 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:05 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821154; x=1722357154; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aL1UPlr2chE5l10fcGzhJ5ApDBOAfrYAdLTB07kHh9c=; b=bdXRp/IzbDMJ2qRGcA7gxB9FbfO6oh9Mh4zfLfXuUZMZaDELkv4HjSA2 IHN1AcLZu6d7wU70g5NxQzGt/tJ8dwL+4yNb6JxaqxaFY6wiM1T1VyGuO CDFgAN1AsMRdnnoUwW4RNMCKi0BZH/B8dRg90w9M2zuNXMmI80UXHloPu L3Wh2rW1ojkMg++oz8G+Brqe9ZDba94K41CoX5y31NU+7dQ8ysgUd9OiD IypRLboS0tsFn2Wwiyoa+NROO5ieuKcHQ1pui5BA0ExjGvHBqYTrPRzkv OPWo5sFrBvnLRwoN1y3zk7eUVTUk+mH6iAgsFsdH0WMCiUtAWe23hhR+L A==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993416" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993416" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984060" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984060" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 04/19] memory: Introduce memory_region_can_be_private() Date: Mon, 31 Jul 2023 12:21:46 -0400 Message-Id: <20230731162201.271114-5-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821172584100003 Content-Type: text/plain; charset="utf-8" Signed-off-by: Xiaoyao Li --- include/exec/memory.h | 9 +++++++++ softmmu/memory.c | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 61e31c7b9874..e119d3ce1a1d 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -1679,6 +1679,15 @@ static inline bool memory_region_is_romd(MemoryRegio= n *mr) */ bool memory_region_is_protected(MemoryRegion *mr); =20 +/** + * memory_region_can_be_private: check whether a memory region can be priv= ate + * + * Returns %true if a memory region's ram_block has valid gmem fd assigned. + * + * @mr: the memory region being queried + */ +bool memory_region_can_be_private(MemoryRegion *mr); + /** * memory_region_get_iommu: check whether a memory region is an iommu * diff --git a/softmmu/memory.c b/softmmu/memory.c index 4f8f8c0a02e6..336c76ede660 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -1855,6 +1855,11 @@ bool memory_region_is_protected(MemoryRegion *mr) return mr->ram && (mr->ram_block->flags & RAM_PROTECTED); } =20 +bool memory_region_can_be_private(MemoryRegion *mr) +{ + return mr->ram_block && mr->ram_block->gmem_fd >=3D 0; +} + uint8_t memory_region_get_dirty_log_mask(MemoryRegion *mr) { uint8_t mask =3D mr->dirty_log_mask; --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821197; cv=none; d=zohomail.com; s=zohoarc; b=BEquv0vqfXKECrg3V4zvXxeb6HGkodTTAklBQkg2FanjiLab11yVpwC48jh5IRaqH+1/dE6zgEku+QUTsZYdqI9aM0RJt5AmU2MjYGaiFPoELah/9/p2xhvp/UQ2PdL1NWIpzjt4ZbAL6dSym72NNPRmKzFAXOobraGue1fVA/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821197; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sGHZxG4FtEntKu3nppp9h5yPIwoTgcuqaf38xPUDE3A=; b=LAfww17/lTzVVCGyfGF/hg9tu0vZKRRoNZHB02vYQKJFI0sOUfw4ZP1Vwb14Ezkqy761953E7d3D99+6PLBJzIEDJSMcpg1UEteWIqeaEJJhwJjC1xCW1zKLV5Mt37aFndHADJlsR2lIU+cSI67znFYpm2rJ/IbIzUd6zcLE/mQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821197325506.85046433075274; Mon, 31 Jul 2023 09:33:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpA-0001so-UC; Mon, 31 Jul 2023 12:32:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVp9-0001sB-L1 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:47 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVp7-000165-Pg for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:47 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:15 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:10 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821165; x=1722357165; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nzxnw5G/eoYdNN3k9mPcm6LNL3IW0dYwkL/0HXSYmE8=; b=QHwSfntX0syL/zvMfyeElxcs3Mu8j7NjVAMSgcaENS7a5gEK1rEgXAP/ AHKxTRI/Ck9RlmFa0N6H9bEZPY04Q5QLf/bqQAISTKbRDf8UI6Rb4tWWM cxuj+yAJfdDu+KNpJfHGjN0eiET2CCQ/fN8DMMqPDkROup2V9xJfHh+b0 ZsDBVE3O0XRQkuULEbEIa7My+F+2mfuoFNEwoO9ViXrJJXilmMSX0U+l+ n2B+7oQofb9VSXejkSESzkwodKPTPaZcbOj3KQDEZDnxWNS+OIxYQRJry Y/9dBW3RScO0tMimvH1qQhHfTA1i53iG0Uc4qAbTwULxD0/uGZu+vBfsF A==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993432" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993432" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984084" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984084" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 05/19] kvm: Enable KVM_SET_USER_MEMORY_REGION2 for memslot Date: Mon, 31 Jul 2023 12:21:47 -0400 Message-Id: <20230731162201.271114-6-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821199013100001 Content-Type: text/plain; charset="utf-8" From: Chao Peng Switch to KVM_SET_USER_MEMORY_REGION2 when supported by KVM. With KVM_SET_USER_MEMORY_REGION2, QEMU can set up memory region that backen'ed both by hva-based shared memory and gmem fd based private memory. Signed-off-by: Chao Peng Codeveloped-by: Xiaoyao Li Signed-off-by: Xiaoyao Li --- accel/kvm/kvm-all.c | 57 +++++++++++++++++++++++++++++++++------- accel/kvm/trace-events | 2 +- include/sysemu/kvm_int.h | 2 ++ 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index d8eee405de24..7b1818334ba7 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -288,35 +288,68 @@ int kvm_physical_memory_addr_from_host(KVMState *s, v= oid *ram, static int kvm_set_user_memory_region(KVMMemoryListener *kml, KVMSlot *slo= t, bool new) { KVMState *s =3D kvm_state; - struct kvm_userspace_memory_region mem; + struct kvm_userspace_memory_region2 mem; + static int cap_user_memory2 =3D -1; int ret; =20 + if (cap_user_memory2 =3D=3D -1) { + cap_user_memory2 =3D kvm_check_extension(s, KVM_CAP_USER_MEMORY2); + } + + if (!cap_user_memory2 && slot->fd >=3D 0) { + error_report("%s, KVM doesn't support gmem!", __func__); + exit(1); + } + mem.slot =3D slot->slot | (kml->as_id << 16); mem.guest_phys_addr =3D slot->start_addr; mem.userspace_addr =3D (unsigned long)slot->ram; mem.flags =3D slot->flags; + mem.gmem_fd =3D slot->fd; + mem.gmem_offset =3D slot->ofs; =20 - if (slot->memory_size && !new && (mem.flags ^ slot->old_flags) & KVM_M= EM_READONLY) { + if (slot->memory_size && !new && (slot->flags ^ slot->old_flags) & KVM= _MEM_READONLY) { /* Set the slot size to 0 before setting the slot to the desired * value. This is needed based on KVM commit 75d61fbc. */ mem.memory_size =3D 0; - ret =3D kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem); + + if (cap_user_memory2) { + ret =3D kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION2, &mem); + } else { + ret =3D kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem); + } if (ret < 0) { goto err; } } mem.memory_size =3D slot->memory_size; - ret =3D kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem); + if (cap_user_memory2) { + ret =3D kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION2, &mem); + } else { + ret =3D kvm_vm_ioctl(s, KVM_SET_USER_MEMORY_REGION, &mem); + } slot->old_flags =3D mem.flags; err: trace_kvm_set_user_memory(mem.slot >> 16, (uint16_t)mem.slot, mem.flag= s, mem.guest_phys_addr, mem.memory_size, - mem.userspace_addr, ret); + mem.userspace_addr, mem.gmem_fd, + mem.gmem_offset, ret); if (ret < 0) { - error_report("%s: KVM_SET_USER_MEMORY_REGION failed, slot=3D%d," - " start=3D0x%" PRIx64 ", size=3D0x%" PRIx64 ": %s", - __func__, mem.slot, slot->start_addr, - (uint64_t)mem.memory_size, strerror(errno)); + if (cap_user_memory2) { + error_report("%s: KVM_SET_USER_MEMORY_REGION2 failed, slot= =3D%d," + " start=3D0x%" PRIx64 ", size=3D0x%" PRIx64 "," + " flags=3D0x%" PRIx32 "," + " gmem_fd=3D%" PRId32 ", gmem_offset=3D0x%" PRIx64= ": %s", + __func__, mem.slot, slot->start_addr, + (uint64_t)mem.memory_size, mem.flags, + mem.gmem_fd, (uint64_t)mem.gmem_offset, + strerror(errno)); + } else { + error_report("%s: KVM_SET_USER_MEMORY_REGION failed, slot= =3D%d," + " start=3D0x%" PRIx64 ", size=3D0x%" PRIx64 ":= %s", + __func__, mem.slot, slot->start_addr, + (uint64_t)mem.memory_size, strerror(errno)); + } } return ret; } @@ -472,6 +505,9 @@ static int kvm_mem_flags(MemoryRegion *mr) if (readonly && kvm_readonly_mem_allowed) { flags |=3D KVM_MEM_READONLY; } + if (memory_region_can_be_private(mr)) { + flags |=3D KVM_MEM_PRIVATE; + } return flags; } =20 @@ -1402,6 +1438,9 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml, mem->ram_start_offset =3D ram_start_offset; mem->ram =3D ram; mem->flags =3D kvm_mem_flags(mr); + mem->fd =3D mr->ram_block->gmem_fd; + mem->ofs =3D (uint8_t*)ram - mr->ram_block->host; + kvm_slot_init_dirty_bitmap(mem); err =3D kvm_set_user_memory_region(kml, mem, true); if (err) { diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events index 14ebfa1b991c..80694683acea 100644 --- a/accel/kvm/trace-events +++ b/accel/kvm/trace-events @@ -15,7 +15,7 @@ kvm_irqchip_update_msi_route(int virq) "Updating MSI rout= e virq=3D%d" kvm_irqchip_release_virq(int virq) "virq %d" kvm_set_ioeventfd_mmio(int fd, uint64_t addr, uint32_t val, bool assign, u= int32_t size, bool datamatch) "fd: %d @0x%" PRIx64 " val=3D0x%x assign: %d = size: %d match: %d" kvm_set_ioeventfd_pio(int fd, uint16_t addr, uint32_t val, bool assign, ui= nt32_t size, bool datamatch) "fd: %d @0x%x val=3D0x%x assign: %d size: %d m= atch: %d" -kvm_set_user_memory(uint16_t as, uint16_t slot, uint32_t flags, uint64_t g= uest_phys_addr, uint64_t memory_size, uint64_t userspace_addr, int ret) "Ad= drSpace#%d Slot#%d flags=3D0x%x gpa=3D0x%"PRIx64 " size=3D0x%"PRIx64 " ua= =3D0x%"PRIx64 " ret=3D%d" +kvm_set_user_memory(uint16_t as, uint16_t slot, uint32_t flags, uint64_t g= uest_phys_addr, uint64_t memory_size, uint64_t userspace_addr, uint32_t fd,= uint64_t fd_offset, int ret) "AddrSpace#%d Slot#%d flags=3D0x%x gpa=3D0x%"= PRIx64 " size=3D0x%"PRIx64 " ua=3D0x%"PRIx64 " gmem_fd=3D%d" " gmem_fd_offs= et=3D0x%" PRIx64 " ret=3D%d" kvm_clear_dirty_log(uint32_t slot, uint64_t start, uint32_t size) "slot#%"= PRId32" start 0x%"PRIx64" size 0x%"PRIx32 kvm_resample_fd_notify(int gsi) "gsi %d" kvm_dirty_ring_full(int id) "vcpu %d" diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h index 511b42bde5c4..48220c0793ac 100644 --- a/include/sysemu/kvm_int.h +++ b/include/sysemu/kvm_int.h @@ -30,6 +30,8 @@ typedef struct KVMSlot int as_id; /* Cache of the offset in ram address space */ ram_addr_t ram_start_offset; + int fd; + hwaddr ofs; } KVMSlot; =20 typedef struct KVMMemoryUpdate { --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821404; cv=none; d=zohomail.com; s=zohoarc; b=S530aNlHDjEL7wUDsDoZdgkfMKmKWIW6lRmNSJuUn1VK60lhhBjNsysupDJ1A/OGzVW+H0X/BUIuKnGUfG7o5zq297tXFZZ3z7Mc2B90on04Lo5cJ/7xzz0AravMoz8mdRiW/es+FQgVvF0E9PJmO6NWmxak3lk7oZTOBh35KuM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821404; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=TvNgJaoPOajnypB7uTHbH52YAlb2Poqez1CmZJmpgNY=; b=OO+1m6uXxC2co8GfthLEsQ1v7DOQW0nkrCl3Rg3N/3yvBZ/aAXOk3Z1na7Ib6Y43ZJxUc0MzDC8C6lI7hEDtxZGB1RYIqQP/ZwjH2GpNMZNRqeMImVvyC9vm5516kYeHF5pGBS38V89kbTojTI01SJ7CFwQao7DIZRrmYQyTk8U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821404463615.8064667747383; Mon, 31 Jul 2023 09:36:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpd-0002vI-Uw; Mon, 31 Jul 2023 12:33:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpJ-00027I-MI for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:03 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpH-0001Fx-W7 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:57 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:19 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:15 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821175; x=1722357175; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KrHq5Q0AGZhu0U92WRZt5YMhM+0kmJOGaYAi4j7AhxI=; b=fx6f3JGq2KS0LXKh+2HSMJ1YQEK8jBzR7zpisq0dB0yR35SGvDe5hEE5 n8AD1YCesiyhh6c8D/QDwi3WMxWwVPwYJuFIDC22hnd8M6WWWmBYJuOL6 YBJD2yr8754nnapqKCc2nwm76C5T27Z3Q2ukvVReE++SvBklXEniKJnhq U/3L2JVzjbd8jRiihTnM7ABrYeyq/AYHjDBY546Mr/5hzEzGsiShjCk+1 Uy4TCj2fyLC9mcP7P884mQ9grbj/J+nkBYXpgoQKGPZjuPpDEMy5CTlZI oiWFQ0ExhJi2Q9p3EsxkH/XCXDVgF4ppPzHwo13sf5CHOt/kX4EUctU+X A==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993444" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993444" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984123" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984123" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 06/19] i386/pc: Drop pc_machine_kvm_type() Date: Mon, 31 Jul 2023 12:21:48 -0400 Message-Id: <20230731162201.271114-7-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821405086100001 Content-Type: text/plain; charset="utf-8" pc_machine_kvm_type() was introduced by commit e21be724eaf5 ("i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode") to do Xen specific initialization by utilizing kvm_type method. commit eeedfe6c6316 ("hw/xen: Simplify emulated Xen platform init") moves the Xen specific initialization to pc_basic_device_init(). There is no need to keep the PC specific kvm_type() implementation anymore. On the other hand, later patch will implement kvm_type() method for all x86/i386 machines to support KVM_X86_SW_PROTECTED_VM. Signed-off-by: Xiaoyao Li Reviewed-by: Isaku Yamahata --- hw/i386/pc.c | 5 ----- include/hw/i386/pc.h | 3 --- 2 files changed, 8 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 3109d5e0e035..abeadd903827 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1794,11 +1794,6 @@ static void pc_machine_initfn(Object *obj) cxl_machine_init(obj, &pcms->cxl_devices_state); } =20 -int pc_machine_kvm_type(MachineState *machine, const char *kvm_type) -{ - return 0; -} - static void pc_machine_reset(MachineState *machine, ShutdownCause reason) { CPUState *cs; diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index d54e8b1101e4..c98d628a76f3 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -296,15 +296,12 @@ extern const size_t pc_compat_1_5_len; extern GlobalProperty pc_compat_1_4[]; extern const size_t pc_compat_1_4_len; =20 -int pc_machine_kvm_type(MachineState *machine, const char *vm_type); - #define DEFINE_PC_MACHINE(suffix, namestr, initfn, optsfn) \ static void pc_machine_##suffix##_class_init(ObjectClass *oc, void *da= ta) \ { \ MachineClass *mc =3D MACHINE_CLASS(oc); \ optsfn(mc); \ mc->init =3D initfn; \ - mc->kvm_type =3D pc_machine_kvm_type; \ } \ static const TypeInfo pc_machine_type_##suffix =3D { \ .name =3D namestr TYPE_MACHINE_SUFFIX, \ --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821216; cv=none; d=zohomail.com; s=zohoarc; b=ENgMauLrKDVkua3OLbn5pUcSyF9bAzy+AkUcMxzzbSZQVRZH7/+Fis44XM5NCdSYsAQDp7Ffg5gIhKj4bJnpfhXRBKckFovG7s2yKWVurIATIshKXhwCnN9SLfOmr/B7rzeSVcy6agmFPkx4zIdoVodpotFhwIF8IHKuaZgOxqg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821216; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4OMjy2w4KAd7dmdZxjL0V8AA927NzhK22c8QQZW6zws=; b=YktjpEIbJN4PUf0nYL47Npaa3v3QIGaAbewj9PCEyi0Qhdee/qm3jR3zaHDNNrMHboQO4uNllKMOwr7/adUzMhJA2Wx3y9JaBy3tQeMTBFiqJmFz7OyuM/Sne/FLyo2dD6AQi6dF9kCZXjgox/Mb9+a5Zn/6D7sG4kH2IuW/MAw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821216866328.69544057971245; Mon, 31 Jul 2023 09:33:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpb-0002We-VF; Mon, 31 Jul 2023 12:33:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpI-00027C-02 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:01 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpG-000165-5f for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:55 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:24 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:20 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821174; x=1722357174; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4pSQ7+7eqxjS895xnE1dyhv7L8BA0IkSr37vKkLRLiM=; b=ZFPMHnWZ+n5yzwZn8QCtZk1s18km7Bis9JR5JVacdYdD5zuiJsHR556S 6+Ka9lrCaxd06jMwiiQZ2w2mxQ6HN1gYmqOs1fb7E5OMQ79Ec5NzKKnfw //cTHfLwbMetuEumeaIJMR87kYGmBhX4c0XPWDsVrAVV+wovRUU7CmqKt NDtBkoB1fg/Iw0uutDmeda9F7JaViefBQQ3cWIrtyGUFOqMsXTaTmhj3X wGKwRyUw0JuzSB9b/ltgAMhUp5zw9ddamG76UXfbNKdgmB68cnJQ/BmLg W2PqeP1MFhlq6jpRiw9croN/GeO6s1Bq12fc1Ke8cyEa1JUCwU8KMy4me w==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993454" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993454" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984151" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984151" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 07/19] target/i386: Implement mc->kvm_type() to get VM type Date: Mon, 31 Jul 2023 12:21:49 -0400 Message-Id: <20230731162201.271114-8-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821217668100003 Content-Type: text/plain; charset="utf-8" Implement mc->kvm_type() for i386 machines. It provides a way for user to create SW_PROTECTE_VM. Signed-off-by: Xiaoyao Li --- hw/i386/x86.c | 27 +++++++++++++++++++++++++++ include/hw/i386/x86.h | 4 ++++ target/i386/kvm/kvm.c | 38 ++++++++++++++++++++++++++++++++++++++ target/i386/kvm/kvm_i386.h | 1 + 4 files changed, 70 insertions(+) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index a88a126123be..3ccd06154249 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -1382,6 +1382,26 @@ static void machine_set_sgx_epc(Object *obj, Visitor= *v, const char *name, qapi_free_SgxEPCList(list); } =20 +static int x86_kvm_type(MachineState *ms, const char *vm_type) +{ + return kvm_get_vm_type(ms, vm_type); +} + +static char *x86_machine_get_kvm_type(Object *obj, Error **errp) +{ + X86MachineState *x86ms =3D X86_MACHINE(obj); + + return g_strdup(x86ms->kvm_type); +} + +static void x86_machine_set_kvm_type(Object *obj, const char *value, Error= **errp) +{ + X86MachineState *x86ms =3D X86_MACHINE(obj); + + g_free(x86ms->kvm_type); + x86ms->kvm_type =3D g_strdup(value); +} + static void x86_machine_initfn(Object *obj) { X86MachineState *x86ms =3D X86_MACHINE(obj); @@ -1406,6 +1426,7 @@ static void x86_machine_class_init(ObjectClass *oc, v= oid *data) mc->cpu_index_to_instance_props =3D x86_cpu_index_to_props; mc->get_default_cpu_node_id =3D x86_get_default_cpu_node_id; mc->possible_cpu_arch_ids =3D x86_possible_cpu_arch_ids; + mc->kvm_type =3D x86_kvm_type; x86mc->save_tsc_khz =3D true; x86mc->fwcfg_dma_enabled =3D true; nc->nmi_monitor_handler =3D x86_nmi; @@ -1464,6 +1485,12 @@ static void x86_machine_class_init(ObjectClass *oc, = void *data) NULL, NULL); object_class_property_set_description(oc, "sgx-epc", "SGX EPC device"); + + object_class_property_add_str(oc, X86_MACHINE_KVM_TYPE, + x86_machine_get_kvm_type, + x86_machine_set_kvm_type); + object_class_property_set_description(oc, X86_MACHINE_KVM_TYPE, + "KVM guest type (default, sw_pro= tected_vm)"); } =20 static const TypeInfo x86_machine_info =3D { diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index da19ae15463a..a3d03f78cefe 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -42,6 +42,9 @@ struct X86MachineState { =20 /*< public >*/ =20 + char *kvm_type; + unsigned int vm_type; + /* Pointers to devices and objects: */ ISADevice *rtc; FWCfgState *fw_cfg; @@ -91,6 +94,7 @@ struct X86MachineState { #define X86_MACHINE_OEM_ID "x-oem-id" #define X86_MACHINE_OEM_TABLE_ID "x-oem-table-id" #define X86_MACHINE_BUS_LOCK_RATELIMIT "bus-lock-ratelimit" +#define X86_MACHINE_KVM_TYPE "kvm-type" =20 #define TYPE_X86_MACHINE MACHINE_TYPE_NAME("x86") OBJECT_DECLARE_TYPE(X86MachineState, X86MachineClass, X86_MACHINE) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index f8cc8eb1fe70..7971f0fd74b1 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -154,6 +154,44 @@ static KVMMSRHandlers msr_handlers[KVM_MSR_FILTER_MAX_= RANGES]; static RateLimit bus_lock_ratelimit_ctrl; static int kvm_get_one_msr(X86CPU *cpu, int index, uint64_t *value); =20 +static const char* vm_type_name[] =3D { + [KVM_X86_DEFAULT_VM] =3D "default", + [KVM_X86_SW_PROTECTED_VM] =3D "sw-protected-vm", +}; + +int kvm_get_vm_type(MachineState *ms, const char *vm_type) +{ + X86MachineState *x86ms =3D X86_MACHINE(ms); + int kvm_type =3D KVM_X86_DEFAULT_VM; + + if (vm_type) { + if (!g_ascii_strcasecmp(vm_type, "default") || !g_ascii_strcasecmp= (vm_type, "")) { + kvm_type =3D KVM_X86_DEFAULT_VM; + } else if (!g_ascii_strcasecmp(vm_type, "sw-protected-vm")) { + kvm_type =3D KVM_X86_SW_PROTECTED_VM; + } else { + error_report("Unknown kvm-type specified '%s'", vm_type); + exit(1); + } + } + + /* + * old KVM doesn't support KVM_CAP_VM_TYPES and KVM_X86_DEFAULT_VM + * is always supported + */ + if (kvm_type =3D=3D KVM_X86_DEFAULT_VM) { + return kvm_type; + } + + if (!(kvm_check_extension(KVM_STATE(ms->accelerator), KVM_CAP_VM_TYPES= ) & BIT(kvm_type))) { + error_report("vm-type %s not supported by KVM", vm_type_name[kvm_t= ype]); + exit(1); + } + + x86ms->vm_type =3D kvm_type; + return kvm_type; +} + int kvm_has_pit_state2(void) { return has_pit_state2; diff --git a/target/i386/kvm/kvm_i386.h b/target/i386/kvm/kvm_i386.h index e24753abfe6a..ea3a5b174ac0 100644 --- a/target/i386/kvm/kvm_i386.h +++ b/target/i386/kvm/kvm_i386.h @@ -37,6 +37,7 @@ bool kvm_has_adjust_clock(void); bool kvm_has_adjust_clock_stable(void); bool kvm_has_exception_payload(void); void kvm_synchronize_all_tsc(void); +int kvm_get_vm_type(MachineState *ms, const char *vm_type); void kvm_arch_reset_vcpu(X86CPU *cs); void kvm_arch_after_reset_vcpu(X86CPU *cpu); void kvm_arch_do_init_vcpu(X86CPU *cs); --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821392; cv=none; d=zohomail.com; s=zohoarc; b=n4Adiej/hpOjI707klGBBNGtkL+KEhKYWYynP6Qcls1TRaZro27rVMGq4krgrPDlqOKVmzrp4MLe1+JYN8f4xDCN5c3qHS/j6IwXDtDpNlSwnBEAqo8dhAD7SOFYG2HDV6L2hvpGfDCGbHBiidjhK51pt6X0pocYFvWZ+pTFIuI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821392; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oAEJZXTF9Lnex1oPuLgkMPdN53nW6oNHMhU0hnlKCmU=; b=DJI5/kLZuRKcaSNGrZFAUeEPrWhNFxy1KfrmXUCFm0xYuNQjz7s5povYLVHbD/qiTsRHaTr5mejMf9PlLTTMwyipf9RL+IHV9td8CBvjKYN2EXKP4fDMphGXIZuP/rwFhUBpSu6+7Es4MbH3hinhCOQzZubC4YMNr6ES6qupNFY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821392241761.6934425820996; Mon, 31 Jul 2023 09:36:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpd-0002m0-5k; Mon, 31 Jul 2023 12:33:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpL-00027M-Ja for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:06 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpI-000165-AD for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:32:57 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:29 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:24 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821176; x=1722357176; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ta4InYtMSOxVmVlrTdpkepm14awSYjV/tD5ZIXGmuAY=; b=SBtgqK/5ZGjJ48UX75YmcFPr21nlGgLxipPRIGtXh5geFIANkT+wVyt/ PXsiaFYF8sTPVGFJBceX/EWYFgUcG6vTbq0rZDZlPKZAb/gTSjSbPLo6y Dz1Ws4hvKRlvm9bEdUNq6cZYKBITB05TBkzSlxKBuDseoncje1guicYAA JFYdLjXmF3nvEmUBr1BzCENWWQgRy8d0ZBvzizTpScaBmBDkKlhdigSL2 taN9UIAoIcPN1mMKvKuTcMkLrtCKGcV49F/OKFebt1f2FHaQbaoP8wyYJ FZFeop6o6j5AdCOHBwhwo39U3SGm4YObO+OJWIyU1I4ffpAi0V71HY+aT w==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993468" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993468" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984187" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984187" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 08/19] HostMem: Add private property to indicate to use kvm gmem Date: Mon, 31 Jul 2023 12:21:50 -0400 Message-Id: <20230731162201.271114-9-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821392962100002 Content-Type: text/plain; charset="utf-8" From: Isaku Yamahata Signed-off-by: Isaku Yamahata Signed-off-by: Xiaoyao Li --- backends/hostmem.c | 18 ++++++++++++++++++ include/sysemu/hostmem.h | 2 +- qapi/qom.json | 4 ++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/backends/hostmem.c b/backends/hostmem.c index 747e7838c031..dbdbb0aafd45 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -461,6 +461,20 @@ static void host_memory_backend_set_reserve(Object *o,= bool value, Error **errp) } backend->reserve =3D value; } + +static bool host_memory_backend_get_private(Object *o, Error **errp) +{ + HostMemoryBackend *backend =3D MEMORY_BACKEND(o); + + return backend->private; +} + +static void host_memory_backend_set_private(Object *o, bool value, Error *= *errp) +{ + HostMemoryBackend *backend =3D MEMORY_BACKEND(o); + + backend->private =3D value; +} #endif /* CONFIG_LINUX */ =20 static bool @@ -541,6 +555,10 @@ host_memory_backend_class_init(ObjectClass *oc, void *= data) host_memory_backend_get_reserve, host_memory_backend_set_reserve); object_class_property_set_description(oc, "reserve", "Reserve swap space (or huge pages) if applicable"); + object_class_property_add_bool(oc, "private", + host_memory_backend_get_private, host_memory_backend_set_private); + object_class_property_set_description(oc, "private", + "Use KVM gmem private memory"); #endif /* CONFIG_LINUX */ /* * Do not delete/rename option. This option must be considered stable diff --git a/include/sysemu/hostmem.h b/include/sysemu/hostmem.h index 39326f1d4f9c..d88970395618 100644 --- a/include/sysemu/hostmem.h +++ b/include/sysemu/hostmem.h @@ -65,7 +65,7 @@ struct HostMemoryBackend { /* protected */ uint64_t size; bool merge, dump, use_canonical_path; - bool prealloc, is_mapped, share, reserve; + bool prealloc, is_mapped, share, reserve, private; uint32_t prealloc_threads; ThreadContext *prealloc_context; DECLARE_BITMAP(host_nodes, MAX_NODES + 1); diff --git a/qapi/qom.json b/qapi/qom.json index 7f92ea43e8e1..e0b2044e3d20 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -605,6 +605,9 @@ # @reserve: if true, reserve swap space (or huge pages) if applicable # (default: true) (since 6.1) # +# @private: if true, use KVM gmem private memory +# (default: false) (since 8.1) +# # @size: size of the memory region in bytes # # @x-use-canonical-path-for-ramblock-id: if true, the canonical path @@ -631,6 +634,7 @@ '*prealloc-context': 'str', '*share': 'bool', '*reserve': 'bool', + '*private': 'bool', 'size': 'size', '*x-use-canonical-path-for-ramblock-id': 'bool' } } =20 --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821293; cv=none; d=zohomail.com; s=zohoarc; b=MPzqzUeuE9S54hlH1b92GH4/MyJUlClblZk3K8sAm+ADK6RzNAjg9GHN1+KwkE0mXLPK6S9smw4JTLxsV5qB6VsoN7dRcXVidlJ9KPUcuyYagNFUmCfRfgV+PojDrwTaFKrmlVqLiMR58kLTTh4ec3vKFAYN3EnpuGKtrVJwe9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821293; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=a+T6K4dnBKx7EI0CWD7ev7o4WstLsB6NOrfCCG0LJLs=; b=BJzu+qywt42nuu78vGIi6BIMXBrgYNzTdcJeWj8x8JLLeqCjyVR/LM1QoCDDuQtda5Zh/3HC5PawETj3H3/CeaEi2If+5CAfUgvz0Rvv1lDAWT6/Mg1pCUjAAyeTX7gMn/LqThWKEldN2eqtP9u4u7Au2XmmhY1jYJnUOp4jt/g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821293724952.3168910435752; Mon, 31 Jul 2023 09:34:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpc-0002fQ-Jf; Mon, 31 Jul 2023 12:33:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpS-0002B3-QA for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:11 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpR-0001Iz-4p for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:06 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:33 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821185; x=1722357185; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Kl0SGGt7OdcIiPqVNrEI2K05JRMW2feCGQzusuuxZsU=; b=OpuveuUNgRq8Qgx7S4a0eV9amt/S2+fgsAZfMMSZSNdVXTjEMBuT+0i7 CMOQbifU/T+aZshToEMHNvjJ+bzYmxeKBeU9AR/Wjz6WLxwj4Cp/9EQdZ CLo1QGkyQqdQu6CU5+BBokcP6aUwCPfhgdT0Edc/m/5r5CYjI2IB8yK+Z dHldOd0vdF5FO/3Tb7zKGn0OFH6tjFY6EOztqgEryjaYRTsw+8yfK6ZJ2 Fsyk6x5K5ykIn/6dvR9EZgBB4cpDfwTTskQlpziAD2TVVUTg7U4D53Uha YTUCLwGs0/zJtSvy0gALWVd8l/aeXPPiGrFQeJAeWVy/aB5ELKTfsJ0eH Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993483" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993483" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984213" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984213" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 09/19] i386/kvm: Create gmem fd for KVM_X86_SW_PROTECTED_VM Date: Mon, 31 Jul 2023 12:21:51 -0400 Message-Id: <20230731162201.271114-10-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821294223100001 Content-Type: text/plain; charset="utf-8" Register a memory listener for KVM_X86_SW_PROVTED_VM. It creates gmem for the backend who sets the private property. Signed-off-by: Xiaoyao Li --- include/exec/memory.h | 1 + target/i386/kvm/kvm.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index e119d3ce1a1d..ddf0e14970b0 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -814,6 +814,7 @@ struct IOMMUMemoryRegion { #define MEMORY_LISTENER_PRIORITY_MIN 0 #define MEMORY_LISTENER_PRIORITY_ACCEL 10 #define MEMORY_LISTENER_PRIORITY_DEV_BACKEND 10 +#define MEMORY_LISTENER_PRIORITY_ACCEL_HIGH 20 =20 /** * struct MemoryListener: callbacks structure for updates to the physical = memory map diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 7971f0fd74b1..df3a5f89396e 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -37,6 +37,7 @@ #include "hyperv-proto.h" =20 #include "exec/gdbstub.h" +#include "exec/ramblock.h" #include "qemu/host-utils.h" #include "qemu/main-loop.h" #include "qemu/ratelimit.h" @@ -2591,8 +2592,41 @@ static void register_smram_listener(Notifier *n, voi= d *unused) &smram_address_space, 1, "kvm-smram"); } =20 +static void kvm_x86_sw_protected_vm_region_add(MemoryListener *listenr, + MemoryRegionSection *section) +{ + MemoryRegion *mr =3D section->mr; + Object *owner =3D memory_region_owner(mr); + int fd; + + if (owner && object_dynamic_cast(owner, TYPE_MEMORY_BACKEND) && + object_property_get_bool(owner, "private", NULL) && + mr->ram_block && mr->ram_block->gmem_fd < 0) { + struct kvm_create_guest_memfd gmem =3D { + .size =3D memory_region_size(mr), + /* TODO: to decide whether KVM_GUEST_MEMFD_ALLOW_HUGEPAGE is s= upported */ + .flags =3D KVM_GUEST_MEMFD_ALLOW_HUGEPAGE, + }; + + fd =3D kvm_vm_ioctl(kvm_state, KVM_CREATE_GUEST_MEMFD, &gmem); + if (fd < 0) { + error_report("%s: error creating gmem: %s\n", __func__, strerr= or(-fd)); + exit(1); + } + memory_region_set_gmem_fd(mr, fd); + } +} + +static MemoryListener kvm_x86_sw_protected_vm_memory_listener =3D { + .name =3D "kvm_x86_sw_protected_vm_memory_listener", + .region_add =3D kvm_x86_sw_protected_vm_region_add, + /* Higher than KVM memory listener =3D 10. */ + .priority =3D MEMORY_LISTENER_PRIORITY_ACCEL_HIGH, +}; + int kvm_arch_init(MachineState *ms, KVMState *s) { + X86MachineState *x86ms =3D X86_MACHINE(ms); uint64_t identity_base =3D 0xfffbc000; uint64_t shadow_mem; int ret; @@ -2617,6 +2651,10 @@ int kvm_arch_init(MachineState *ms, KVMState *s) return ret; } =20 + if (x86ms->vm_type =3D=3D KVM_X86_SW_PROTECTED_VM) { + memory_listener_register(&kvm_x86_sw_protected_vm_memory_listener,= &address_space_memory); + } + if (!kvm_check_extension(s, KVM_CAP_IRQ_ROUTING)) { error_report("kvm: KVM_CAP_IRQ_ROUTING not supported by KVM"); return -ENOTSUP; --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821383; cv=none; d=zohomail.com; s=zohoarc; b=X/MbKtud6yWfIxu/9CI2AnpZPz5XF4656StNm1u5ROw8VlFyhm59iYIufrhGe/D3KO7y3pL0Ry41ezndtH0Hm4j3yeg621J98KUOqDp6DhOq5KgHlv46s+ahKmDcd/xlVRr+yXOZaVoVnFR/2TbtfRbC8Q/MnbS0lO7lTD5TM9k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821383; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EUgPsknTD+9jGXoSnB3u5/0AVPfg23ZJ6KH7if8rGLg=; b=Zur8wKOt9kQNbObvX71AQcD5CmXuH00R9ZgAcyFkUnEqV4p/GMna4xgU4tP4xvJfeSc8Y2WYxwTn8Dfo/F/EKS7KcUk0o8VcMTY77kby2HpiyUU/oiRiDCiEdhGWUBdk5h37vwSSzyIRDnRj0rod1eHtlKb4OnCp3BoY/Jrp8c0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821383403385.3968255377863; Mon, 31 Jul 2023 09:36:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpe-00030g-IT; Mon, 31 Jul 2023 12:33:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpb-0002YI-PR for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:15 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpa-0001LE-32 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:15 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:38 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:33 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821194; x=1722357194; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vc/AA0VTFSVygJctuEuxWBeG2HxDcS51m4hly05CELA=; b=h50jh97bx2RJk5kW4UfUItrvDnzC4YD2R31qL8zy2nnIDKbE2YHYi7yd mvJdAqTCQMIOAEhQ0MvnJT1oBfwj+dbfhWK5qKB87HszoKs9R/XhdwKGn YiVqeVR3i7pWFVB9H1EUGqBwJDWNHSe+kbxk5JZPw0+RMOO2jfKSXYNDs zWwyJ769ReFqGaFj9EpYRIu7JTHSau4Q6sSI/YvrHXX77ROyLpao2O/eA UovDt+xTpn5KF9OD1D5KaixxyCd19Yf0VbWT0dtLeXsnB1UeDoyPFNLEc jLE79PmIOkvyVqSC/Ycd8xjt+AzxwgyfclKMmf6NWLsS+xim5jNAm2TM3 g==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993495" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993495" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984252" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984252" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 10/19] kvm: Introduce support for memory_attributes Date: Mon, 31 Jul 2023 12:21:52 -0400 Message-Id: <20230731162201.271114-11-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821384888100003 Content-Type: text/plain; charset="utf-8" Introcude the helper functions to set the attributes of a range of memory to private and shared. Signed-off-by: Xiaoyao Li --- accel/kvm/kvm-all.c | 43 +++++++++++++++++++++++++++++++++++++++++++ include/sysemu/kvm.h | 3 +++ 2 files changed, 46 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 7b1818334ba7..6dd22fa4fd6f 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -105,6 +105,7 @@ bool kvm_msi_use_devid; bool kvm_has_guest_debug; static int kvm_sstep_flags; static bool kvm_immediate_exit; +static uint64_t kvm_supported_memory_attributes; static hwaddr kvm_max_slot_size =3D ~0; =20 static const KVMCapabilityInfo kvm_required_capabilites[] =3D { @@ -1343,6 +1344,44 @@ void kvm_set_max_memslot_size(hwaddr max_slot_size) kvm_max_slot_size =3D max_slot_size; } =20 +static int kvm_set_memory_attributes(hwaddr start, hwaddr size, uint64_t a= ttr) +{ + struct kvm_memory_attributes attrs; + int r; + + attrs.attributes =3D attr; + attrs.address =3D start; + attrs.size =3D size; + attrs.flags =3D 0; + + r =3D kvm_vm_ioctl(kvm_state, KVM_SET_MEMORY_ATTRIBUTES, &attrs); + if (r) { + warn_report("%s: failed to set memory (0x%lx+%#zx) with attr 0x%lx= error '%s'", + __func__, start, size, attr, strerror(errno)); + } + return r; +} + +int kvm_set_memory_attributes_private(hwaddr start, hwaddr size) +{ + if (!(kvm_supported_memory_attributes & KVM_MEMORY_ATTRIBUTE_PRIVATE))= { + error_report("KVM doesn't support PRIVATE memory attribute\n"); + return -EINVAL; + } + + return kvm_set_memory_attributes(start, size, KVM_MEMORY_ATTRIBUTE_PRI= VATE); +} + +int kvm_set_memory_attributes_shared(hwaddr start, hwaddr size) +{ + if (!(kvm_supported_memory_attributes & KVM_MEMORY_ATTRIBUTE_PRIVATE))= { + error_report("KVM doesn't support PRIVATE memory attribute\n"); + return -EINVAL; + } + + return kvm_set_memory_attributes(start, size, 0); +} + /* Called with KVMMemoryListener.slots_lock held */ static void kvm_set_phys_mem(KVMMemoryListener *kml, MemoryRegionSection *section, bool add) @@ -2556,6 +2595,10 @@ static int kvm_init(MachineState *ms) } s->as =3D g_new0(struct KVMAs, s->nr_as); =20 + if (kvm_check_extension(s, KVM_CAP_MEMORY_ATTRIBUTES)) { + kvm_supported_memory_attributes =3D kvm_ioctl(s, KVM_GET_SUPPORTED= _MEMORY_ATTRIBUTES, 0); + } + if (object_property_find(OBJECT(current_machine), "kvm-type")) { g_autofree char *kvm_type =3D object_property_get_str(OBJECT(curre= nt_machine), "kvm-type", diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index 115f0cca79d1..49c896d8a512 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -580,4 +580,7 @@ bool kvm_arch_cpu_check_are_resettable(void); bool kvm_dirty_ring_enabled(void); =20 uint32_t kvm_dirty_ring_size(void); + +int kvm_set_memory_attributes_private(hwaddr start, hwaddr size); +int kvm_set_memory_attributes_shared(hwaddr start, hwaddr size); #endif --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821362; cv=none; d=zohomail.com; s=zohoarc; b=eTEktlrI1OW54HXeiKwjf0b70Kfu65C1cRtsDnNsOEdhjNB3enlqBbVnoX+AZLW/ATeMWIkZHhXeNEpqyPab/mTJ3vD0Zw3MIfaQWCijGYFNpo/QfNiIDicsdVQfW1w8EfURsUD62vn3hAoXzMeyKkenhNLQasslAqeDhuLsUek= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821362; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UaYhLVc3qkfdcuIUwJuy3XFvN+q7LJfwJG0Z9wSM4yQ=; b=HBDi6KlApVJNTMJjyfQkaWIUGNMURFm5T6Gl+iDXwf9mTST1QeLtw5nQzL+tzBxIfsA1tpkFPaYGCkEF/n7NY4Qh1hHp9i7afaC/OnkRQaTImKBQZYC0cxsun19iiBjUKqVWiMqDyJ9wetm4OO7YXwY2OmaBBUt7qiU6ewiMNn0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821362854415.10451125855184; Mon, 31 Jul 2023 09:36:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVph-0003KH-6v; Mon, 31 Jul 2023 12:33:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpe-00034n-RH for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:18 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpc-0001LE-KJ for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:18 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:42 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:38 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821196; x=1722357196; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2F3BNnQpA+emsmbBfMLeFksuw4ODRYROEr7ulTUvnvs=; b=a3Clg1TkpDOdIIpKIffO2pPoAn6B9CcaOdZynKkYb2XeBd3j2ZGLLa+t DEg7cb8L7C5yf7BCbGL6UCrsJwE0KPw50iji9LD2l0nDgL48CeE4GDtUG b5oXKaG2QwU2UMtw0Psiu8NPxzprAYAqZv07g/DBSql4+sn0wm7uuFvmx YD/rbkxU+EtApkaN5DHrGT3hpMBvdfOKZAMkI1bgolbHDHRsA3Y1fsBb0 DMFQQi2sxRzlMuPAATg+aOar+VcCKBnYjHBDB0/vJI0Q03qitkiEKdquX S6K65uiz/vu5hwHhihPWqGwRDNtU1P3bpCQ6ZL8DWNinhVbg4XYcatUJC w==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993511" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993511" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984276" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984276" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 11/19] kvm/memory: Introduce the infrastructure to set the default shared/private value Date: Mon, 31 Jul 2023 12:21:53 -0400 Message-Id: <20230731162201.271114-12-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821364584100001 Content-Type: text/plain; charset="utf-8" Introduce new flags for MemoryRegion to indicate the default attribute, private or not. And update the attribute if default private. Originated-from: Isaku Yamahata Signed-off-by: Xiaoyao Li --- accel/kvm/kvm-all.c | 10 ++++++++++ include/exec/memory.h | 6 ++++++ softmmu/memory.c | 13 +++++++++++++ 3 files changed, 29 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 6dd22fa4fd6f..f9b5050b8885 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1487,6 +1487,16 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml, strerror(-err)); abort(); } + + if (memory_region_is_default_private(mr)) { + err =3D kvm_set_memory_attributes_private(start_addr, slot_siz= e); + if (err) { + error_report("%s: failed to set memory attribute private: = %s\n", + __func__, strerror(-err)); + exit(1); + } + } + start_addr +=3D slot_size; ram_start_offset +=3D slot_size; ram +=3D slot_size; diff --git a/include/exec/memory.h b/include/exec/memory.h index ddf0e14970b0..759f797b6acd 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -235,6 +235,9 @@ typedef struct IOMMUTLBEvent { /* RAM is an mmap-ed named file */ #define RAM_NAMED_FILE (1 << 9) =20 +/* RAM is default private */ +#define RAM_DEFAULT_PRIVATE (1 << 10) + static inline void iommu_notifier_init(IOMMUNotifier *n, IOMMUNotify fn, IOMMUNotifierFlag flags, hwaddr start, hwaddr end, @@ -1689,6 +1692,9 @@ bool memory_region_is_protected(MemoryRegion *mr); */ bool memory_region_can_be_private(MemoryRegion *mr); =20 +void memory_region_set_default_private(MemoryRegion *mr); +bool memory_region_is_default_private(MemoryRegion *mr); + /** * memory_region_get_iommu: check whether a memory region is an iommu * diff --git a/softmmu/memory.c b/softmmu/memory.c index 336c76ede660..af6aa3c1e3c9 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -1860,6 +1860,19 @@ bool memory_region_can_be_private(MemoryRegion *mr) return mr->ram_block && mr->ram_block->gmem_fd >=3D 0; } =20 +bool memory_region_is_default_private(MemoryRegion *mr) +{ + return mr->ram_block && mr->ram_block->gmem_fd >=3D 0 && + (mr->ram_block->flags & RAM_DEFAULT_PRIVATE); +} + +void memory_region_set_default_private(MemoryRegion *mr) +{ + if (mr->ram_block && mr->ram_block->gmem_fd >=3D 0) { + mr->ram_block->flags |=3D RAM_DEFAULT_PRIVATE; + } +} + uint8_t memory_region_get_dirty_log_mask(MemoryRegion *mr) { uint8_t mask =3D mr->dirty_log_mask; --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821217; cv=none; d=zohomail.com; s=zohoarc; b=GqTGxb+3+n9RK88DQXi/n/GlKn8G3KEDwma07XL9tFkfdB/Vpc+H9lgo/M8j2JTK2e3UIzXXkzKHVCRIWM1DkW7cOf8er/8NPOOUm76+QQ7/FV4lqxwZkjAoNbEhXrtF3MXfnOsFC5v6l4EfJCogzLDE9IcqaIIJdDLH5PVtvc8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821217; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ajZgQyCcpWTXEW5ckWAxmTQdwMlgPxMJUP05rC8suu4=; b=PaFrqUkXWBexsNsdzLKvAHIMxKDWA4O89VpDbWpLQNg8TKpeGFVFROlZISFgtE7oLcs24tsySPOUApdFP3pZmVfhQYkF2XRtdL3zc/RtUr0+QaIXvdOAYcZxqqGN0qrDz6Ju98eNZ4elUSgPRbIFEdf9c6BZ6/p48GWoI/PgnYw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821217789948.7506761477447; Mon, 31 Jul 2023 09:33:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpl-0003YC-Mo; Mon, 31 Jul 2023 12:33:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpk-0003Xc-PN for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:24 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpj-0001LE-87 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:24 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:47 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:42 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821203; x=1722357203; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pwuf6o/0F5t0zy4EgnbrfJ4zxZA0+H1hwL82VW6bQ/w=; b=iNB2Qf/Y9tkIsoaMMG0dbHfxX60K7H89N+ptIjOH3NhNggVYqBJzMqw8 af/XJF+/mI5UqBIcm3NruaRxl7PniZu5+g+Ve4gPQby+4oOL8hRn2FPne 9Bej/RoKe2NT8hwX5RYVbqWzbUz5Nt81qWVI1UC+4SGiO0p4eURldze1d lZVHI0BkprenCrLdHtJxj6dN5n+WF+OF9qrv8ZbqCqViVtijVXuEiTncj Y9+Z/8yFV4evHjWem5PUrPI+7RZvEAvIXevPCZ2Mq+0YexNMHb8HDyZK/ kfgM7s430Bi2001uXaqH4Nz3bL2ySpOloMw1nNzZLOkAF05ZD1R2Fx1Iy A==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993522" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993522" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984290" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984290" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 12/19] i386/kvm: Set memory to default private for KVM_X86_SW_PROTECTED_VM Date: Mon, 31 Jul 2023 12:21:54 -0400 Message-Id: <20230731162201.271114-13-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821219207100005 Content-Type: text/plain; charset="utf-8" Signed-off-by: Xiaoyao Li --- target/i386/kvm/kvm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index df3a5f89396e..a96640512dbc 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -2614,6 +2614,7 @@ static void kvm_x86_sw_protected_vm_region_add(Memory= Listener *listenr, exit(1); } memory_region_set_gmem_fd(mr, fd); + memory_region_set_default_private(mr); } } =20 --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821397; cv=none; d=zohomail.com; s=zohoarc; b=lAGjVHPNb2jcANtKimxWa6p/7whe4Jsz4N6Xj0+o3POpkYj1hGZ7Md19cuwnObirJtvJG2nBJJU9ZtGepneCeN56XlbEgDC4ujoixqBaGuRy3ybA/Bo2EOIxmeAO29ZOcphsvoYASs8cbU5FpjHkto7TBWrBg0qERwEarNulS9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821397; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kCmRcEbALpApCbvRJAFqBimAbHRG4HIIdXtpknRWR+U=; b=IXSYFMUnSEopA5TdxitioiLqJ9Af5FsAiTpsK4YZjyfxc5y/iQdi/M/aThiL2pvhB5T3Jd7FSmH4TgrobA40F1LEu6lgra7sbbz0P5WLhqYRQDiS+oIAHhZ0i6LDQyvNbbbsBd6vykvSPdYf0LZxubJzGvvyeY0qeLuz7JDsfao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821397516437.44183441262714; Mon, 31 Jul 2023 09:36:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpo-0003eE-Gm; Mon, 31 Jul 2023 12:33:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpm-0003Yl-Q9 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:26 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpl-0001LE-39 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:26 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:52 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:47 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821205; x=1722357205; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=FHpLYKCG5XsNyQYsZISCBt3MZkpY6KPjFJu1ItFTkyA=; b=a2ousdTPz5cyzqLX2Kf/mt8GmxZiowoOXqxLNarwW1RqnTtADoUyCDam hQryEwp3EZ3A85NGklJBu1rWPULzuXBhitC/2DKtEHkM0n90+4ruMsAXz lAFCqzm4+eRwbrFwzXMl+LrZXBCyy6QUBlMTFOjtg/ylWu2lNgZJ9/V9k 4RBtwTGmbGkONfUTk30XcB6sqrTcB1lQmbFvneFVY2ABuYbE1tKarm86V Jka3PRE5szIFVUBYZLIzc5P2FDS/v9jXHtY3rOJFQGV5FXbNtuG7MBjUe qrt49/o/a0O/LNs7KuT2l1Cpb9OVsyF+jNaj9xOm3RXMmUfj+rkeGQ00W A==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993543" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993543" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984304" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984304" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 13/19] physmem: replace function name with __func__ in ram_block_discard_range() Date: Mon, 31 Jul 2023 12:21:55 -0400 Message-Id: <20230731162201.271114-14-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821399229100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Xiaoyao Li --- softmmu/physmem.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 8f64128de0b5..05c981e5c18e 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -3430,16 +3430,15 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t = start, size_t length) uint8_t *host_startaddr =3D rb->host + start; =20 if (!QEMU_PTR_IS_ALIGNED(host_startaddr, rb->page_size)) { - error_report("ram_block_discard_range: Unaligned start address: %p= ", - host_startaddr); + error_report("%s: Unaligned start address: %p", + __func__, host_startaddr); goto err; } =20 if ((start + length) <=3D rb->max_length) { bool need_madvise, need_fallocate; if (!QEMU_IS_ALIGNED(length, rb->page_size)) { - error_report("ram_block_discard_range: Unaligned length: %zx", - length); + error_report("%s: Unaligned length: %zx", __func__, length); goto err; } =20 @@ -3469,27 +3468,26 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t = start, size_t length) * file. */ if (!qemu_ram_is_shared(rb)) { - warn_report_once("ram_block_discard_range: Discarding RAM" + warn_report_once("%s: Discarding RAM" " in private file mappings is possibly" " dangerous, because it will modify the" " underlying file and will affect other" - " users of the file"); + " users of the file", __func__); } =20 ret =3D fallocate(rb->fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEE= P_SIZE, start, length); if (ret) { ret =3D -errno; - error_report("ram_block_discard_range: Failed to fallocate= " - "%s:%" PRIx64 " +%zx (%d)", - rb->idstr, start, length, ret); + error_report("%s: Failed to fallocate %s:%" PRIx64 " +%zx = (%d)", + __func__, rb->idstr, start, length, ret); goto err; } #else ret =3D -ENOSYS; - error_report("ram_block_discard_range: fallocate not available= /file" + error_report("%s: fallocate not available/file" "%s:%" PRIx64 " +%zx (%d)", - rb->idstr, start, length, ret); + __func__, rb->idstr, start, length, ret); goto err; #endif } @@ -3507,25 +3505,23 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t = start, size_t length) } if (ret) { ret =3D -errno; - error_report("ram_block_discard_range: Failed to discard r= ange " + error_report("%s: Failed to discard range " "%s:%" PRIx64 " +%zx (%d)", - rb->idstr, start, length, ret); + __func__, rb->idstr, start, length, ret); goto err; } #else ret =3D -ENOSYS; - error_report("ram_block_discard_range: MADVISE not available" - "%s:%" PRIx64 " +%zx (%d)", - rb->idstr, start, length, ret); + error_report("%s: MADVISE not available %s:%" PRIx64 " +%zx (%= d)", + __func__, rb->idstr, start, length, ret); goto err; #endif } trace_ram_block_discard_range(rb->idstr, host_startaddr, length, need_madvise, need_fallocate, ret); } else { - error_report("ram_block_discard_range: Overrun block '%s' (%" PRIu= 64 - "/%zx/" RAM_ADDR_FMT")", - rb->idstr, start, length, rb->max_length); + error_report("%s: Overrun block '%s' (%" PRIu64 "/%zx/" RAM_ADDR_F= MT")", + __func__, rb->idstr, start, length, rb->max_length); } =20 err: --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821376; cv=none; d=zohomail.com; s=zohoarc; b=d5CikYiDNtzv4mOSazGLnZdCjD0zL2Mkt71QFjdbcV+WaHwjVvyg3OWE5f3mMVbeLwVbyQUnDueLA9Ji226RshU0dDuF8FyGo3Y1RXAp2rv4Nxuz/O9/KDjjxFK4BLPceUwriI9wSlE2bq9oUQlswCVutQ8g3zODsn1Yoaam6tE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821376; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=24Ons5QleYnXPj8XuCj0fMAf0ICil3lnM5u94lgHIbY=; b=JNYn9DwFSTMD25Cu6BD8LvspxCwRO0xKbBUaOzPljirVkA618+EF7fnxa8jEFnLBZ0CjoEsIx/GURHjSAK4ZcUv5mo0NU3w1aziK8N2lxWGkgdLgbYo/g7TXHnPabdO/EMu3O+K88TWo9U6hgkKl/dwekqMRoCYNgNxAsjWoUAU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821376345822.4340201405954; Mon, 31 Jul 2023 09:36:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVpr-0003nb-BT; Mon, 31 Jul 2023 12:33:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpp-0003gs-6V for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:29 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVpn-0001LE-9j for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:28 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:25:56 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:52 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821207; x=1722357207; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/dXf+igjdEHFljunA6/Y/7Okg+auCCSxG402x9zxZbs=; b=RiduMP4j0YOV5jpgr8ue4G6PeyuCb52e54o0WeVQAxGM4lm7tDFFI5oM g6eu5gh6kVRLfs7NtyiP6BIk0gJo1c9LrfRxJnV7Reirz57A2IMHkgDrM RN9ls/Xq5g5fk3t+IIBYdiWVFFtkN97FMIdGL+YsZ3oCg9qEXs3s7NSPn rRgVr3RTl+QktlPk6lSCSvtaeWrlJkFE8Q2exJ4wz2aSVd/rNuaO7m3XK 9IZt1jUPLDTBZahFAc6sKyFBD35QuGCl8wQSWZCSQR9YfhsNIaUbhHOmn JTPPYaayyFePXL1yEpC2kPyIwsnaJJq6ptZAnloHQk2u1OUS/3uQG2Gcn w==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993558" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993558" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984310" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984310" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 14/19] physmem: Add ram_block_convert_range Date: Mon, 31 Jul 2023 12:21:56 -0400 Message-Id: <20230731162201.271114-15-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821378109100001 Content-Type: text/plain; charset="utf-8" From: Chao Peng This new routine adds support for memory conversion between shared/private memory for gmem fd based private ram_block. Signed-off-by: Chao Peng Signed-off-by: Xiaoyao Li --- include/exec/cpu-common.h | 2 ++ softmmu/physmem.c | 61 ++++++++++++++++++++++++++++++--------- 2 files changed, 50 insertions(+), 13 deletions(-) diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index 87dc9a752c9a..558684b9f246 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -157,6 +157,8 @@ typedef int (RAMBlockIterFunc)(RAMBlock *rb, void *opaq= ue); =20 int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque); int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length); +int ram_block_convert_range(RAMBlock *rb, uint64_t start, size_t length, + bool shared_to_private); =20 #endif =20 diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 05c981e5c18e..2acc8bee5b33 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -3415,15 +3415,9 @@ int qemu_ram_foreach_block(RAMBlockIterFunc func, vo= id *opaque) return ret; } =20 -/* - * Unmap pages of memory from start to start+length such that - * they a) read as 0, b) Trigger whatever fault mechanism - * the OS provides for postcopy. - * The pages must be unmapped by the end of the function. - * Returns: 0 on success, none-0 on failure - * - */ -int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) +static int ram_block_discard_range_fd(RAMBlock *rb, uint64_t start, + size_t length, int fd) + { int ret =3D -1; =20 @@ -3449,8 +3443,8 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t st= art, size_t length) * fallocate works on hugepages and shmem * shared anonymous memory requires madvise REMOVE */ - need_madvise =3D (rb->page_size =3D=3D qemu_host_page_size); - need_fallocate =3D rb->fd !=3D -1; + need_madvise =3D (rb->page_size =3D=3D qemu_host_page_size) && (rb= ->fd =3D=3D fd); + need_fallocate =3D fd !=3D -1; if (need_fallocate) { /* For a file, this causes the area of the file to be zero'd * if read, and for hugetlbfs also causes it to be unmapped @@ -3475,7 +3469,7 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t st= art, size_t length) " users of the file", __func__); } =20 - ret =3D fallocate(rb->fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEE= P_SIZE, + ret =3D fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SI= ZE, start, length); if (ret) { ret =3D -errno; @@ -3498,7 +3492,7 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t st= art, size_t length) * fallocate'd away). */ #if defined(CONFIG_MADVISE) - if (qemu_ram_is_shared(rb) && rb->fd < 0) { + if (qemu_ram_is_shared(rb) && fd < 0) { ret =3D madvise(host_startaddr, length, QEMU_MADV_REMOVE); } else { ret =3D madvise(host_startaddr, length, QEMU_MADV_DONTNEED= ); @@ -3528,6 +3522,20 @@ err: return ret; } =20 +/* + * Unmap pages of memory from start to start+length such that + * they a) read as 0, b) Trigger whatever fault mechanism + * the OS provides for postcopy. + * + * The pages must be unmapped by the end of the function. + * Returns: 0 on success, none-0 on failure. + */ +int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) +{ + return ram_block_discard_range_fd(rb, start, length, rb->fd); +} + + bool ramblock_is_pmem(RAMBlock *rb) { return rb->flags & RAM_PMEM; @@ -3715,3 +3723,30 @@ bool ram_block_discard_is_required(void) return qatomic_read(&ram_block_discard_required_cnt) || qatomic_read(&ram_block_coordinated_discard_required_cnt); } + +int ram_block_convert_range(RAMBlock *rb, uint64_t start, size_t length, + bool shared_to_private) +{ + int fd; + + if (!rb || rb->gmem_fd < 0) { + return -1; + } + + if (!QEMU_PTR_IS_ALIGNED(start, rb->page_size) || + !QEMU_PTR_IS_ALIGNED(length, rb->page_size)) { + return -1; + } + + if (length > rb->max_length) { + return -1; + } + + if (shared_to_private) { + fd =3D rb->fd; + } else { + fd =3D rb->gmem_fd; + } + + return ram_block_discard_range_fd(rb, start, length, fd); +} --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821240; cv=none; d=zohomail.com; s=zohoarc; b=Lijxh00xALiAMOaOORdK2XxDuzULEFW/8OMHoT0OXZHYeBmkPjgXRTREyMbxLBsakjCrRkfnhmwrfncYc7P4x7RYzmhoow9vHw3yfSRLQsGGiJYYCaQGaxFTgEwW8XOkyZL31gIvmHwASVgS86vHADS6NYzqcAL7GHX803ZyUm0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821240; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GJNjXFf02kx8RMyilt8zNbBuzWxqnh4fcGA+vLQHCZs=; b=Yvtnn++UBPqmjob8JlWyMepJzhlYu9DV6mPJJ6fDSEWT9+KrkHrX0WCgVY4v9eBpPMI+uTijr7+ZDgBdkCjU3Sha+W4Nr7uscAchMUbBnMnkcFfpxDknFPK5Nxdyvc1lSYM4ghNSqTMuJuRGoOxMoI+qhzR3vnYKLOBOvSBZgJU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821240328157.5923064803734; Mon, 31 Jul 2023 09:34:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVq7-0004cf-94; Mon, 31 Jul 2023 12:33:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVq5-0004RF-Vm for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:46 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVq3-0001Oy-S0 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:45 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:26:01 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:25:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821223; x=1722357223; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=GSbcff0w9eBcLKQoepD8WEW33V5SkOKmuZmwcCsYEA0=; b=NTlfG4LxaWZX26o/nJ0Ut5/yHPWaViOZxlu9Rtjb1cK2VV2Byb6+J+38 mQxXcvmHpEjYazh/o1xSwo3yjMHNFU3oQRRnUdE0gKfKT+PPy1IeBHsio G0e7QRmF1lND7XFi5HimFhGxbmY+Dg3ReG1jnpCL5g6heL7t7paHEnoIH TbU232/Q8Z0PABzS9Ub3qfcLIPvQwbp2NkPQE853ly9Nqj2E0G4stlY8+ H/zPuH1FKtGABDD0mEXE1/uvVgREro+yRQS+3fXp7H2CQIl/xgDvnyT2l 3NsQiBoiI0q+pLeqhVZqVBt8yHmtjNgQSketCEmIqWCeM4vMhVJ5enF/e Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993572" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993572" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984336" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984336" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 15/19] kvm: handle KVM_EXIT_MEMORY_FAULT Date: Mon, 31 Jul 2023 12:21:57 -0400 Message-Id: <20230731162201.271114-16-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821242441100003 Content-Type: text/plain; charset="utf-8" From: Chao Peng Currently only KVM_MEMORY_EXIT_FLAG_PRIVATE in flags is valid when KVM_EXIT_MEMORY_FAULT happens. It indicates userspace needs to do the memory conversion on the RAMBlock to turn the memory into desired attribute, i.e., private/shared. Note, KVM_EXIT_MEMORY_FAULT makes sense only when the RAMBlock has gmem memory backend. Signed-off-by: Chao Peng Signed-off-by: Xiaoyao Li Reviewed-by: Isaku Yamahata --- accel/kvm/kvm-all.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f9b5050b8885..72d50b923bf2 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -3040,6 +3040,48 @@ static void kvm_eat_signals(CPUState *cpu) } while (sigismember(&chkset, SIG_IPI)); } =20 +static int kvm_convert_memory(hwaddr start, hwaddr size, bool to_private) +{ + MemoryRegionSection section; + void *addr; + RAMBlock *rb; + ram_addr_t offset; + int ret =3D -1; + + section =3D memory_region_find(get_system_memory(), start, size); + if (!section.mr) { + return ret; + } + + if (memory_region_can_be_private(section.mr)) { + if (to_private) { + ret =3D kvm_set_memory_attributes_private(start, size); + } else { + ret =3D kvm_set_memory_attributes_shared(start, size); + } + + if (ret) { + return ret; + } + + addr =3D memory_region_get_ram_ptr(section.mr) + + section.offset_within_region; + rb =3D qemu_ram_block_from_host(addr, false, &offset); + /* + * With KVM_SET_MEMORY_ATTRIBUTES by kvm_set_memory_attributes(), + * operation on underlying file descriptor is only for releasing + * unnecessary pages. + */ + ram_block_convert_range(rb, offset, size, to_private); + } else { + warn_report("Convert non guest-memfd backed memory region (0x%"HWA= DDR_PRIx" ,+ 0x%"HWADDR_PRIx") to %s", + start, size, to_private ? "private" : "shared"); + } + + memory_region_unref(section.mr); + return ret; +} + int kvm_cpu_exec(CPUState *cpu) { struct kvm_run *run =3D cpu->kvm_run; @@ -3198,6 +3240,16 @@ int kvm_cpu_exec(CPUState *cpu) break; } break; + case KVM_EXIT_MEMORY_FAULT: + if (run->memory.flags & ~KVM_MEMORY_EXIT_FLAG_PRIVATE) { + error_report("KVM_EXIT_MEMORY_FAULT: Unknown flag 0x%" PRI= x64, + (uint64_t)run->memory.flags); + ret =3D -1; + break; + } + ret =3D kvm_convert_memory(run->memory.gpa, run->memory.size, + run->memory.flags & KVM_MEMORY_EXIT_F= LAG_PRIVATE); + break; default: DPRINTF("kvm_arch_handle_exit\n"); ret =3D kvm_arch_handle_exit(cpu, run); --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821399; cv=none; d=zohomail.com; s=zohoarc; b=l+tt9i2QZo0o9K2yKa59hiURdi8SP5R/GvV09sH2WqxtA5fprxudGQmwYdgIglMeUbEk1q5LUHf6v9kll4PNBCszxq6Xt8pkMDMoBPeWk439V9jNIdDCPERh5ocGQK04ouOg8Rd2m/w1ttrF7GPGOZLViguGa2M1E/aKojWMP0k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821399; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hQm2jduqfeQ9d/V/MFd3Uh49ImACqd5uJ0fl4H0/xrM=; b=BP1c65QiCgiYaTO37xgRQnx2f6HWCxM2bvIs69usbPg7ve30mKlI/vEl5Q5n+ZX/gDFDAfSWuzp9NL3NL5L64YylB/WEs/AfJWmVZTR6cCPfciGIRzmgT259r6nTbeqzJ5aCstkohU3jgBwgBoZCyzvbcDVoPLizgzDPRAPJmPQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821399715296.0871115266716; Mon, 31 Jul 2023 09:36:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVqm-0005Lp-Ig; Mon, 31 Jul 2023 12:34:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVq8-0004kN-MP for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:51 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVq6-0001Oy-NL for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:48 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:26:06 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:26:01 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821226; x=1722357226; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=heHOwr2oExdov2YnZXE+amN8spk5BZtW366haLX5N0Q=; b=aAaVOG0vIVLYvY+H3hiSuVjkGGc4eKZEoAVBfE2/rVkHAoYC91F8Ok1Y QaleNeE5ufm6n6RSQpPn9VjKaL4flBG0kvKX9LeG44P61XrXflIrOkMVc pz2uV7xQ2A8UfWkj5BT0GMJ/LVR86ITing/t1oOQWPgCEL8rkAb6ILHqL YwV72yhU3mKc0M6fOOHaC8Oy0Fl6P3QFpznPggKqsjQ66222r2RxyCFf/ rYzOREillyXm+NpcSL1TjJOMIXA5CMihG2GPGKNT/T5brEbONgwW3eZyp LzCYddYqhdQwyVug4velVHMH5kIPpMwKkuwsGIL3PRhqGKWT2KV5A6Ouw g==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993598" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993598" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984384" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984384" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 16/19] trace/kvm: Add trace for page convertion between shared and private Date: Mon, 31 Jul 2023 12:21:58 -0400 Message-Id: <20230731162201.271114-17-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821401520100007 Content-Type: text/plain; charset="utf-8" From: Isaku Yamahata Signed-off-by: Isaku Yamahata Signed-off-by: Xiaoyao Li --- accel/kvm/kvm-all.c | 1 + accel/kvm/trace-events | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 72d50b923bf2..c9f3aab5e587 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -3048,6 +3048,7 @@ static int kvm_convert_memory(hwaddr start, hwaddr si= ze, bool to_private) ram_addr_t offset; int ret =3D -1; =20 + trace_kvm_convert_memory(start, size, to_private ? "shared_to_private"= : "private_to_shared"); section =3D memory_region_find(get_system_memory(), start, size); if (!section.mr) { return ret; diff --git a/accel/kvm/trace-events b/accel/kvm/trace-events index 80694683acea..4935c9c5cf0b 100644 --- a/accel/kvm/trace-events +++ b/accel/kvm/trace-events @@ -25,4 +25,4 @@ kvm_dirty_ring_reaper(const char *s) "%s" kvm_dirty_ring_reap(uint64_t count, int64_t t) "reaped %"PRIu64" pages (to= ok %"PRIi64" us)" kvm_dirty_ring_reaper_kick(const char *reason) "%s" kvm_dirty_ring_flush(int finished) "%d" - +kvm_convert_memory(uint64_t start, uint64_t size, const char *msg) "start = 0x%" PRIx64 " size 0x%" PRIx64 " %s" --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821335; cv=none; d=zohomail.com; s=zohoarc; b=JxYwW/cnFhonTtWK9Dgw0F4diB8ELUYvZDJf34N81Re9v4PwOoEcEVV4WMBwAbe6WNrALHws28hI15XKn71CAsqVY0GQFf5T1823idJu4bIRNjZwn9HId89Mrvlc2AJfMVOW/nBVr6HNxSXoX2ZQMSRgkdWNts7TBWqx9m7CxCY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821335; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HvRZLOga2yf+mmxo/NSalq8ZltFf6QIhtl0ye+JO3dU=; b=ZRpywCZPFepk+F4ROH5YZ+xv2C1s20j8nN5ZHqUgOd8PAIR73xcfdZ6K7IiOkIPjyhW/5CIxs78N3GtsloRZQV8SYdLyKRPJqGq9gRLqtFUVP9IGYlSpludao1Uj4vqOxng1wYWxP5TKfVZjUwXspi1r6bVaPhdgraGDDB8xk2s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 169082133502079.51331737983878; Mon, 31 Jul 2023 09:35:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVqn-0005RZ-Eg; Mon, 31 Jul 2023 12:34:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVqH-0004uz-7S for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:34:02 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVqF-0001QK-KD for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:56 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:26:11 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:26:06 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821235; x=1722357235; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aoypxCuYdLER3/LcqIyTOOIsOC8SNNr7NYzaoP86WMg=; b=dP8Szrz3D55SomKoE8kp+8s3H0YgsG9FHOOr2M60Z41ezZqiD7GgihCo GCueTWMish+ip2zPmj6+07KWDvexT51EhzYPvh6PYo2K7bThm8Er0usfA 1mfnIVCC8DFUi0wK8bKb1mJ63FUrenj/F7zVY/SSU9FlAjCTu2Ewhj52h A2ooCg/T6mMu6Gaq5LSU9PyOBSi5POQUk2Sh0gbADeoe9k0zo6R4O6YK+ 9hbiB0tjKN3x2Mx8JGNdkIdFu8nAy2E64qAbTW7oy4VB9EHZKP95GPWxN HWO9uRpcMJMqJnGjQVwZZ62s4GHXl5cBwmwWMM9JJcgEg2+MTzBZM1fqI A==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993623" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993623" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984415" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984415" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 17/19] pci-host/q35: Move PAM initialization above SMRAM initialization Date: Mon, 31 Jul 2023 12:21:59 -0400 Message-Id: <20230731162201.271114-18-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821337198100003 Content-Type: text/plain; charset="utf-8" From: Isaku Yamahata In mch_realize(), process PAM initialization before SMRAM initialization so that later patch can skill all the SMRAM related with a single check. Signed-off-by: Isaku Yamahata Signed-off-by: Xiaoyao Li --- hw/pci-host/q35.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index 91c46df9ae31..ac1518a94ee4 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -575,6 +575,16 @@ static void mch_realize(PCIDevice *d, Error **errp) /* setup pci memory mapping */ pc_pci_as_mapping_init(mch->system_memory, mch->pci_address_space); =20 + /* PAM */ + init_pam(&mch->pam_regions[0], OBJECT(mch), mch->ram_memory, + mch->system_memory, mch->pci_address_space, + PAM_BIOS_BASE, PAM_BIOS_SIZE); + for (i =3D 0; i < ARRAY_SIZE(mch->pam_regions) - 1; ++i) { + init_pam(&mch->pam_regions[i + 1], OBJECT(mch), mch->ram_memory, + mch->system_memory, mch->pci_address_space, + PAM_EXPAN_BASE + i * PAM_EXPAN_SIZE, PAM_EXPAN_SIZE); + } + /* if *disabled* show SMRAM to all CPUs */ memory_region_init_alias(&mch->smram_region, OBJECT(mch), "smram-regio= n", mch->pci_address_space, MCH_HOST_BRIDGE_SMRAM= _C_BASE, @@ -641,15 +651,6 @@ static void mch_realize(PCIDevice *d, Error **errp) =20 object_property_add_const_link(qdev_get_machine(), "smram", OBJECT(&mch->smram)); - - init_pam(&mch->pam_regions[0], OBJECT(mch), mch->ram_memory, - mch->system_memory, mch->pci_address_space, - PAM_BIOS_BASE, PAM_BIOS_SIZE); - for (i =3D 0; i < ARRAY_SIZE(mch->pam_regions) - 1; ++i) { - init_pam(&mch->pam_regions[i + 1], OBJECT(mch), mch->ram_memory, - mch->system_memory, mch->pci_address_space, - PAM_EXPAN_BASE + i * PAM_EXPAN_SIZE, PAM_EXPAN_SIZE); - } } =20 uint64_t mch_mcfg_base(void) --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821418; cv=none; d=zohomail.com; s=zohoarc; b=hCiC9hYtYe6HwMORk6HB96lKBwVLeuh9+COm5JbAMFphPFHaNdAQXPMMB9JDCwsd0E6EIjDm03fyBI3H94QFELBF6PP5vn33AKx82V/iiQ8aJPMBL8xSw9hWQivI+p/d6gFVMVpmmHjhuZ8MvHsPuQVsdaHkbILiwzqpFUls6Zw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821418; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LW+5SylbxpaqYk6pkpeIZB2itxyzXHrfSFMo6bHQuq8=; b=DJ1/0mBGHJzlgypuG8HmHaR2pXuq3D1Ucg+h39QoUhdT9xOG2n50jgeX1l4iRnCKwrMhaf0kHrrZIodkcv2poFKYiTeg1hIqPZzUx/fE7zXVOeoKweUBljtgaX60XQxEWRuBl1iXeJUSYGTFsvMpxkG6lCrcCZ34ZcAVGIfN12s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821418809192.69540847392545; Mon, 31 Jul 2023 09:36:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVro-0005uW-I0; Mon, 31 Jul 2023 12:35:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVqJ-00050C-MK for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:34:04 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVqH-0001QK-P5 for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:33:59 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:26:15 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:26:11 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690821237; x=1722357237; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QoBc+IVWDb42m9hfWIVmJcD1aYMSQ1vw/jwLkspqX3E=; b=L6nK+WxNRmzRDzlg3BHSws8rpQGZFh/EHCgY5544R/eg7VC7dAOpHSCF rJqZ3hwGtJHDReaBnArmOdrE76UzkhtrVnhLp7FTTChKjKh9Ls5xSnjpz ZMfMZ7FpMSzDb1nMQfQ9ObnW7n8jtain9XPDKf//Y9oPBng4qDvIIZh9O oleDsnphiP6vEEuwuv5f1dhBVpFdOzp1Jr4aYtQqo0ou7TuDgTfAHtooe 0ywh0a9+7RaVBljnojNClSZBZcFi4ohwi5dgibJnxRj5FznUevxSFfkhJ 07+TRPSmVEMl5wGg90d4GVhlMNuTedcpe8QA05w4GBH2X4wevMylIOKGr g==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993640" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993640" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984449" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984449" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 18/19] q35: Introduce smm_ranges property for q35-pci-host Date: Mon, 31 Jul 2023 12:22:00 -0400 Message-Id: <20230731162201.271114-19-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821419448100001 Content-Type: text/plain; charset="utf-8" From: Isaku Yamahata Add a q35 property to check whether or not SMM ranges, e.g. SMRAM, TSEG, etc... exist for the target platform. TDX doesn't support SMM and doesn't play nice with QEMU modifying related guest memory ranges. Signed-off-by: Isaku Yamahata Co-developed-by: Sean Christopherson Signed-off-by: Sean Christopherson Signed-off-by: Xiaoyao Li --- hw/i386/pc_q35.c | 3 ++- hw/pci-host/q35.c | 42 +++++++++++++++++++++++++++------------ include/hw/i386/pc.h | 1 + include/hw/pci-host/q35.h | 1 + 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index dc27a9e223a2..73eb3bc5e826 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -232,8 +232,9 @@ static void pc_q35_init(MachineState *machine) x86ms->above_4g_mem_size, NULL); object_property_set_bool(phb, PCI_HOST_BYPASS_IOMMU, pcms->default_bus_bypass_iommu, NULL); + object_property_set_bool(phb, PCI_HOST_PROP_SMM_RANGES, + x86_machine_is_smm_enabled(x86ms), NULL); sysbus_realize_and_unref(SYS_BUS_DEVICE(phb), &error_fatal); - /* pci */ host_bus =3D PCI_BUS(qdev_get_child_bus(DEVICE(phb), "pcie.0")); pcms->bus =3D host_bus; diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index ac1518a94ee4..f5c01f7080f9 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -186,6 +186,8 @@ static Property q35_host_props[] =3D { mch.below_4g_mem_size, 0), DEFINE_PROP_SIZE(PCI_HOST_ABOVE_4G_MEM_SIZE, Q35PCIHost, mch.above_4g_mem_size, 0), + DEFINE_PROP_BOOL(PCI_HOST_PROP_SMM_RANGES, Q35PCIHost, + mch.has_smm_ranges, true), DEFINE_PROP_BOOL("x-pci-hole64-fix", Q35PCIHost, pci_hole64_fix, true), DEFINE_PROP_END_OF_LIST(), }; @@ -221,6 +223,7 @@ static void q35_host_initfn(Object *obj) /* mch's object_initialize resets the default value, set it again */ qdev_prop_set_uint64(DEVICE(s), PCI_HOST_PROP_PCI_HOLE64_SIZE, Q35_PCI_HOST_HOLE64_SIZE_DEFAULT); + object_property_add(obj, PCI_HOST_PROP_PCI_HOLE_START, "uint32", q35_host_get_pci_hole_start, NULL, NULL, NULL); @@ -483,6 +486,10 @@ static void mch_write_config(PCIDevice *d, mch_update_pciexbar(mch); } =20 + if (!mch->has_smm_ranges) { + return; + } + if (ranges_overlap(address, len, MCH_HOST_BRIDGE_SMRAM, MCH_HOST_BRIDGE_SMRAM_SIZE)) { mch_update_smram(mch); @@ -501,10 +508,13 @@ static void mch_write_config(PCIDevice *d, static void mch_update(MCHPCIState *mch) { mch_update_pciexbar(mch); + mch_update_pam(mch); - mch_update_smram(mch); - mch_update_ext_tseg_mbytes(mch); - mch_update_smbase_smram(mch); + if (mch->has_smm_ranges) { + mch_update_smram(mch); + mch_update_ext_tseg_mbytes(mch); + mch_update_smbase_smram(mch); + } =20 /* * pci hole goes from end-of-low-ram to io-apic. @@ -545,19 +555,21 @@ static void mch_reset(DeviceState *qdev) pci_set_quad(d->config + MCH_HOST_BRIDGE_PCIEXBAR, MCH_HOST_BRIDGE_PCIEXBAR_DEFAULT); =20 - d->config[MCH_HOST_BRIDGE_SMRAM] =3D MCH_HOST_BRIDGE_SMRAM_DEFAULT; - d->config[MCH_HOST_BRIDGE_ESMRAMC] =3D MCH_HOST_BRIDGE_ESMRAMC_DEFAULT; - d->wmask[MCH_HOST_BRIDGE_SMRAM] =3D MCH_HOST_BRIDGE_SMRAM_WMASK; - d->wmask[MCH_HOST_BRIDGE_ESMRAMC] =3D MCH_HOST_BRIDGE_ESMRAMC_WMASK; + if (mch->has_smm_ranges) { + d->config[MCH_HOST_BRIDGE_SMRAM] =3D MCH_HOST_BRIDGE_SMRAM_DEFAULT; + d->config[MCH_HOST_BRIDGE_ESMRAMC] =3D MCH_HOST_BRIDGE_ESMRAMC_DEF= AULT; + d->wmask[MCH_HOST_BRIDGE_SMRAM] =3D MCH_HOST_BRIDGE_SMRAM_WMASK; + d->wmask[MCH_HOST_BRIDGE_ESMRAMC] =3D MCH_HOST_BRIDGE_ESMRAMC_WMAS= K; =20 - if (mch->ext_tseg_mbytes > 0) { - pci_set_word(d->config + MCH_HOST_BRIDGE_EXT_TSEG_MBYTES, - MCH_HOST_BRIDGE_EXT_TSEG_MBYTES_QUERY); + if (mch->ext_tseg_mbytes > 0) { + pci_set_word(d->config + MCH_HOST_BRIDGE_EXT_TSEG_MBYTES, + MCH_HOST_BRIDGE_EXT_TSEG_MBYTES_QUERY); + } + + d->config[MCH_HOST_BRIDGE_F_SMBASE] =3D 0; + d->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D 0xff; } =20 - d->config[MCH_HOST_BRIDGE_F_SMBASE] =3D 0; - d->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D 0xff; - mch_update(mch); } =20 @@ -585,6 +597,10 @@ static void mch_realize(PCIDevice *d, Error **errp) PAM_EXPAN_BASE + i * PAM_EXPAN_SIZE, PAM_EXPAN_SIZE); } =20 + if (!mch->has_smm_ranges) { + return; + } + /* if *disabled* show SMRAM to all CPUs */ memory_region_init_alias(&mch->smram_region, OBJECT(mch), "smram-regio= n", mch->pci_address_space, MCH_HOST_BRIDGE_SMRAM= _C_BASE, diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index c98d628a76f3..3c9ced22cea9 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -156,6 +156,7 @@ void pc_guest_info_init(PCMachineState *pcms); #define PCI_HOST_PROP_PCI_HOLE64_SIZE "pci-hole64-size" #define PCI_HOST_BELOW_4G_MEM_SIZE "below-4g-mem-size" #define PCI_HOST_ABOVE_4G_MEM_SIZE "above-4g-mem-size" +#define PCI_HOST_PROP_SMM_RANGES "smm-ranges" =20 =20 void pc_pci_as_mapping_init(MemoryRegion *system_memory, diff --git a/include/hw/pci-host/q35.h b/include/hw/pci-host/q35.h index 1d98bbfe0dd2..930af3870e8a 100644 --- a/include/hw/pci-host/q35.h +++ b/include/hw/pci-host/q35.h @@ -50,6 +50,7 @@ struct MCHPCIState { MemoryRegion tseg_blackhole, tseg_window; MemoryRegion smbase_blackhole, smbase_window; bool has_smram_at_smbase; + bool has_smm_ranges; Range pci_hole; uint64_t below_4g_mem_size; uint64_t above_4g_mem_size; --=20 2.34.1 From nobody Fri May 17 05:50:03 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1690821013; cv=none; d=zohomail.com; s=zohoarc; b=Pjv5HtjGMXqcv3GD+IjgKTE7rNAB1euL72kAhC+Oo+96kau3WAIiLBRNXh1HUlkgV/i0GT8CSFD/KUPFgplzFGqtnp2/VyjRukKY6beXVzs9xgHWj7oUh6Qe8Jymhg4YC1nvyFq1Lj1QZZcYHoOYOTH5jGPWsoAuEN4hMBbqP6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690821013; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GoOD1tAiCuT1EznKdlmuB0lYXjx7Kzciw/mESDIHh80=; b=W0GxttdebBb4Ik0f3L96YL7Lz2Z1/NFFa+/ncJeSBoy1ytMhl0fPDol3VM6MbQ1tiX2a3k1/xSc3W3Y+KCjMqNxFEUzbCkWWQRKKEwKpEd3qVffeUo1wFYTlYkoFACCPJygsefHilIKBn++Uo8MQLMCWhTbOle+68h3EB2d/9kA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690821013074394.73695699290124; Mon, 31 Jul 2023 09:30:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQVmT-0007N6-8H; Mon, 31 Jul 2023 12:30:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVmP-0007MT-Rf for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:29:57 -0400 Received: from [134.134.136.126] (helo=mgamail.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQVmO-00008I-8p for qemu-devel@nongnu.org; Mon, 31 Jul 2023 12:29:57 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 09:26:20 -0700 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.46]) by orsmga008.jf.intel.com with ESMTP; 31 Jul 2023 09:26:15 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1690820996; x=1722356996; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OqbwFxE5zjsZMZns5dcqTBrG/GaaJmBZ5rVzXVb5HAQ=; b=UXASUbPXsazrkQS9Srv4BUMsUVrfAn+1y/GulWeg0fV2qaMXyhW5rGc9 AVwyjr8zILrgIP9TqWCitSGxTroB35tATmi3WSsI62De+LTrMuLQ+Hzn4 OrBarjPtzV8ocHmG+1TFmRvmG4v3xx+n9fIIUTelqe7hY47Dtz29eIVPE DMdsYHa1FL+7fXP0W7hzQ6aOuuAwSMD1mhfZSTrnhuYD+9IiSwplracJf K9cNoXnNqPY1766YgCGzqSVIavq0OboAc3XDr7mS7OcCh9jXm9yDvGasE AdPHSL1WHOiqQTNHhYR36WDLDB2+yL0x8T9xufAFm6nyYw9orR3nDTXFI A==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="353993657" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="353993657" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="757984483" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="757984483" From: Xiaoyao Li To: Paolo Bonzini , Sean Christopherson , David Hildenbrand , Igor Mammedov , "Michael S. Tsirkin" , Marcel Apfelbaum , Richard Henderson , Marcelo Tosatti Cc: Markus Armbruster , Eric Blake , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Chao Peng , Michael Roth , isaku.yamahata@gmail.com, xiaoyao.li@intel.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [RFC PATCH 19/19] i386: Disable SMM mode for X86_SW_PROTECTED_VM Date: Mon, 31 Jul 2023 12:22:01 -0400 Message-Id: <20230731162201.271114-20-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230731162201.271114-1-xiaoyao.li@intel.com> References: <20230731162201.271114-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 134.134.136.126 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=134.134.136.126; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1690821014693100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Xiaoyao Li --- target/i386/kvm/kvm.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index a96640512dbc..62f237068a3a 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -2654,6 +2654,13 @@ int kvm_arch_init(MachineState *ms, KVMState *s) =20 if (x86ms->vm_type =3D=3D KVM_X86_SW_PROTECTED_VM) { memory_listener_register(&kvm_x86_sw_protected_vm_memory_listener,= &address_space_memory); + + if (x86ms->smm =3D=3D ON_OFF_AUTO_AUTO) { + x86ms->smm =3D ON_OFF_AUTO_OFF; + } else if (x86ms->smm =3D=3D ON_OFF_AUTO_ON) { + error_report("X86_SW_PROTECTED_VM doesn't support SMM"); + return -EINVAL; + } } =20 if (!kvm_check_extension(s, KVM_CAP_IRQ_ROUTING)) { --=20 2.34.1