From patchwork Fri Apr 18 14:18:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teddy Astie X-Patchwork-Id: 14057237 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 43776C369AB for ; Fri, 18 Apr 2025 14:19:00 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.959028.1351519 (Exim 4.92) (envelope-from ) id 1u5mYJ-0003Ef-GK; Fri, 18 Apr 2025 14:18:47 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 959028.1351519; Fri, 18 Apr 2025 14:18:47 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYJ-0003EY-Cj; Fri, 18 Apr 2025 14:18:47 +0000 Received: by outflank-mailman (input) for mailman id 959028; Fri, 18 Apr 2025 14:18:46 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYI-00030I-8i for xen-devel@lists.xenproject.org; Fri, 18 Apr 2025 14:18:46 +0000 Received: from mail128-130.atl41.mandrillapp.com (mail128-130.atl41.mandrillapp.com [198.2.128.130]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 08d4ebca-1c60-11f0-9ffb-bf95429c2676; Fri, 18 Apr 2025 16:18:44 +0200 (CEST) Received: from pmta08.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail128-130.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4ZfH1b2zgczS62GpR for ; Fri, 18 Apr 2025 14:18:43 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 3200c3f3986847c79b468e7e43cd30ba; Fri, 18 Apr 2025 14:18:43 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 08d4ebca-1c60-11f0-9ffb-bf95429c2676 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1744985923; x=1745255923; bh=J8m3l8jLgJoz45tuYz9GxQr5xWvose2J1Z3O7gpBIvU=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=qcQ00cSL8ayn5ry8W81StmFp1NKGS+MrKNdGSZpOcvsw9wmgUgAfYXZhMUEGwavaO MHpgnjlTu05U/vreBDsTG4yzd55/jwMKS1s5C6W1NsBntwS7RQoKN2RfAtPHJsB7Hf a64HqQVGN9vblmgTctfVQ5cpDQ/1POJJNtdH8OUdKbY8suyb4uepzxSB74FNu550ob WhMJmFV18F4IgiC4Cp3uBoRIrru5PiI7k1XlljdxljA9MUw/2fF+Dzr7w8h0RHbyng p+lQCHPS0F2YRnRjG7bBuI/Hu45d5xHs0om4m6LCdiTG5190m4wUN3P8lL6S3nkjRw HuymTIGol2g6Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1744985923; x=1745246423; i=teddy.astie@vates.tech; bh=J8m3l8jLgJoz45tuYz9GxQr5xWvose2J1Z3O7gpBIvU=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=COFsAl0BbMxAJyNev1nL5BpPDeXF8hClJZQS/HZw+rewjynCYDF8KWNaTHb8o+ILC jn0qlo64bWTYB3ShvtrjNtysvGbV7QVGcfeoeqjP7HrvHTQJycXaIVan+fvt3+hWSE yr2WTzFfAOsxkQk3HPv/mruIa84I4F+ZvlRlv3l8kFsm5RGvLoD5pJW9N+GDQP4W// 8H2oNuMbyANcZmQlT1zmXUF7H7M5BhOsrxoay9nWcRh4wYTILwthQC4P8HH8Rf8HMV RjaJrjEdMrnS/JE/4ei6ILJhs9CgF+oUAnzAL8EDbatNpfTS6loSKjx4Z+lMcIAl0k OV8cTNGcLKlew== From: "Teddy Astie" Subject: =?utf-8?q?=5BRFC_PATCH_1/4=5D_xen=3A_Introduce_physaddr=5Fabi_CDF_f?= =?utf-8?q?lag?= X-Mailer: git-send-email 2.47.2 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1744985922135 To: xen-devel@lists.xenproject.org Cc: "Teddy Astie" , "Andrew Cooper" , "Anthony PERARD" , "Michal Orzel" , "Jan Beulich" , "Julien Grall" , " =?utf-8?q?Roger_Pau_Monn=C3=A9?= " , "Stefano Stabellini" Message-Id: In-Reply-To: References: X-Native-Encoded: 1 X-Report-Abuse: =?utf-8?q?Please_forward_a_copy_of_this_message=2C_including?= =?utf-8?q?_all_headers=2C_to_abuse=40mandrill=2Ecom=2E_You_can_also_report_?= =?utf-8?q?abuse_here=3A_https=3A//mandrillapp=2Ecom/contact/abuse=3Fid=3D30?= =?utf-8?q?504962=2E3200c3f3986847c79b468e7e43cd30ba?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20250418:md Date: Fri, 18 Apr 2025 14:18:43 +0000 MIME-Version: 1.0 Introduce the physaddr_abi flag to indicate that the guest uses physical addresses (gpaddr) instead of virtual addresses when performing hypercalls. Signed-off-by: Teddy Astie --- xen/common/domain.c | 10 +++++++++- xen/include/public/domctl.h | 4 +++- xen/include/xen/sched.h | 6 ++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/xen/common/domain.c b/xen/common/domain.c index 585fd726a9..1a1e51c32d 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -716,12 +716,14 @@ static int sanitise_domain_config(struct xen_domctl_createdomain *config) bool hap = config->flags & XEN_DOMCTL_CDF_hap; bool iommu = config->flags & XEN_DOMCTL_CDF_iommu; bool vpmu = config->flags & XEN_DOMCTL_CDF_vpmu; + bool physaddr_abi = config->flags & XEN_DOMCTL_CDF_physaddr_abi; if ( config->flags & ~(XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap | XEN_DOMCTL_CDF_s3_integrity | XEN_DOMCTL_CDF_oos_off | XEN_DOMCTL_CDF_xs_domain | XEN_DOMCTL_CDF_iommu | - XEN_DOMCTL_CDF_nested_virt | XEN_DOMCTL_CDF_vpmu) ) + XEN_DOMCTL_CDF_nested_virt | XEN_DOMCTL_CDF_vpmu | + XEN_DOMCTL_CDF_physaddr_abi) ) { dprintk(XENLOG_INFO, "Unknown CDF flags %#x\n", config->flags); return -EINVAL; @@ -745,6 +747,12 @@ static int sanitise_domain_config(struct xen_domctl_createdomain *config) return -EINVAL; } + if ( physaddr_abi && !hvm ) + { + dprintk(XENLOG_INFO, "Physical address ABI requested for non-HVM guest"); + return -EINVAL; + } + if ( iommu ) { if ( config->iommu_opts & ~XEN_DOMCTL_IOMMU_no_sharept ) diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h index 5b2063eed9..3a77efe673 100644 --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -66,9 +66,11 @@ struct xen_domctl_createdomain { #define XEN_DOMCTL_CDF_nested_virt (1U << _XEN_DOMCTL_CDF_nested_virt) /* Should we expose the vPMU to the guest? */ #define XEN_DOMCTL_CDF_vpmu (1U << 7) +/* Do the guest use physical addresses for hypercalls ? */ +#define XEN_DOMCTL_CDF_physaddr_abi (1U << 8) /* Max XEN_DOMCTL_CDF_* constant. Used for ABI checking. */ -#define XEN_DOMCTL_CDF_MAX XEN_DOMCTL_CDF_vpmu +#define XEN_DOMCTL_CDF_MAX XEN_DOMCTL_CDF_physaddr_abi uint32_t flags; diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 559d201e0c..a29c63c737 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -1201,6 +1201,12 @@ static always_inline bool hap_enabled(const struct domain *d) evaluate_nospec(d->options & XEN_DOMCTL_CDF_hap); } +static always_inline bool is_hvm_physaddr_abi(const struct domain *d) +{ + return IS_ENABLED(CONFIG_HVM) && + evaluate_nospec(d->options & XEN_DOMCTL_CDF_physaddr_abi); +} + static inline bool is_hwdom_pinned_vcpu(const struct vcpu *v) { return (is_hardware_domain(v->domain) && From patchwork Fri Apr 18 14:18:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teddy Astie X-Patchwork-Id: 14057240 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 90101C369AB for ; Fri, 18 Apr 2025 14:19:07 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.959029.1351529 (Exim 4.92) (envelope-from ) id 1u5mYK-0003Sm-Mn; Fri, 18 Apr 2025 14:18:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 959029.1351529; Fri, 18 Apr 2025 14:18:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYK-0003Sf-Jj; Fri, 18 Apr 2025 14:18:48 +0000 Received: by outflank-mailman (input) for mailman id 959029; Fri, 18 Apr 2025 14:18:47 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYJ-00030w-1b for xen-devel@lists.xenproject.org; Fri, 18 Apr 2025 14:18:47 +0000 Received: from mail128-130.atl41.mandrillapp.com (mail128-130.atl41.mandrillapp.com [198.2.128.130]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 08d67e17-1c60-11f0-9eb0-5ba50f476ded; Fri, 18 Apr 2025 16:18:44 +0200 (CEST) Received: from pmta08.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail128-130.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4ZfH1b2PcKzS62Gnq for ; Fri, 18 Apr 2025 14:18:43 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id c3fbf095ffa3449fbe8cf6dca1c9667b; Fri, 18 Apr 2025 14:18:43 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 08d67e17-1c60-11f0-9eb0-5ba50f476ded DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1744985923; x=1745255923; bh=gnjPzXP758vraGzIoNv1ve6SdnhKU+HNaWzV+04DExs=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=Yj4g5xHdhsrCYdA0RJn3y4nj2Pfp+PrhZEDWhjgKhYWKJ6bVBAnZyHKgGPJXqhaeD wx9w+Y9kCwW19rSJq/ucz3eg5EmhVyCXTZqWtJEMCkHiN6bs8pYNBdDigF3JdJ/MB2 6Q0vALzBAVSvvO8E+Z64uWtDgIbmkSYMGMSFcfIO5Sm5huqQZACXuvXr9bJRslq8ee SMXbXFj7wK3UPnec3cArvIGrht9EWwUVopIJDLyGO1Qx6Natm5YzRiayEZAN3VPtho Ke9A3gDMzeTo3TWNEyFg822hfWURORpTzv1Yj+ZL67cgon8f/q7DnE2T+aIb2wbamf UbxzEbQit3QnQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1744985923; x=1745246423; i=teddy.astie@vates.tech; bh=gnjPzXP758vraGzIoNv1ve6SdnhKU+HNaWzV+04DExs=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=JZ/ueTN/RetjtC/SDQ+lCcJVl+Wi1Up/TVATO1YgdryuRauUd15cD2t68iHF2YT1n uZ9O79D9OjjTtSleagv/OlkXVy8QrSiZm+NnZLg6Qimb14SHtj1QgcJBcP5MJ99vH3 knuYjUsy4hEjD1TH9jW5bPZAQ+h55/oaB+42jrzN5GTvWx16Mji8Orv9MzoHncv/q5 ctcds6ZD54Zut7vBvAl7URJ0CnDxD1nWmeNxuBZod3msfVdpWGNdQCB2FC4BfOjp40 TptRN9Lc1+U1rB8alZZeWW+VbeSc02gn/qh3VNE7ANL/6C1JZ2z5xkiOmyS2uFRKe7 c9QUP89ixwrDw== From: "Teddy Astie" Subject: =?utf-8?q?=5BRFC_PATCH_2/4=5D_x86/hvm=3A_Consider_phyaddr=5Fabi_whe?= =?utf-8?q?n_copying_from/to_guest_memory?= X-Mailer: git-send-email 2.47.2 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1744985922471 To: xen-devel@lists.xenproject.org Cc: "Teddy Astie" , "Jan Beulich" , "Andrew Cooper" , " =?utf-8?q?Roger_Pau_Monn?= =?utf-8?q?=C3=A9?= " Message-Id: <537e4c11021a5d89409e4ec18945d314f0cf50e0.1744981654.git.teddy.astie@vates.tech> In-Reply-To: References: X-Native-Encoded: 1 X-Report-Abuse: =?utf-8?q?Please_forward_a_copy_of_this_message=2C_including?= =?utf-8?q?_all_headers=2C_to_abuse=40mandrill=2Ecom=2E_You_can_also_report_?= =?utf-8?q?abuse_here=3A_https=3A//mandrillapp=2Ecom/contact/abuse=3Fid=3D30?= =?utf-8?q?504962=2Ec3fbf095ffa3449fbe8cf6dca1c9667b?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20250418:md Date: Fri, 18 Apr 2025 14:18:43 +0000 MIME-Version: 1.0 Signed-off-by: Teddy Astie --- xen/arch/x86/hvm/hvm.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 6f1174c512..5923166b9b 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -3499,7 +3499,11 @@ unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len) return 0; } - rc = hvm_copy_to_guest_linear((unsigned long)to, from, len, 0, NULL); + if ( is_hvm_physaddr_abi(current->domain) ) + rc = hvm_copy_to_guest_phys((unsigned long)to, from, len, current); + else + rc = hvm_copy_to_guest_linear((unsigned long)to, from, len, 0, NULL); + return rc ? len : 0; /* fake a copy_to_user() return code */ } @@ -3513,7 +3517,10 @@ unsigned int clear_user_hvm(void *to, unsigned int len) return 0; } - rc = hvm_copy_to_guest_linear((unsigned long)to, NULL, len, 0, NULL); + if ( is_hvm_physaddr_abi(current->domain) ) + rc = hvm_copy_to_guest_phys((unsigned long)to, NULL, len, current); + else + rc = hvm_copy_to_guest_linear((unsigned long)to, NULL, len, 0, NULL); return rc ? len : 0; /* fake a clear_user() return code */ } @@ -3528,7 +3535,11 @@ unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len) return 0; } - rc = hvm_copy_from_guest_linear(to, (unsigned long)from, len, 0, NULL); + if ( is_hvm_physaddr_abi(current->domain) ) + rc = hvm_copy_from_guest_phys(to, (unsigned long)from, len); + else + rc = hvm_copy_from_guest_linear(to, (unsigned long)from, len, 0, NULL); + return rc ? len : 0; /* fake a copy_from_user() return code */ } From patchwork Fri Apr 18 14:18:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teddy Astie X-Patchwork-Id: 14057236 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 78B78C369CF for ; Fri, 18 Apr 2025 14:19:00 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.959031.1351549 (Exim 4.92) (envelope-from ) id 1u5mYO-0003yz-CL; Fri, 18 Apr 2025 14:18:52 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 959031.1351549; Fri, 18 Apr 2025 14:18:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYO-0003yq-8l; Fri, 18 Apr 2025 14:18:52 +0000 Received: by outflank-mailman (input) for mailman id 959031; Fri, 18 Apr 2025 14:18:50 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYM-00030w-Uc for xen-devel@lists.xenproject.org; Fri, 18 Apr 2025 14:18:50 +0000 Received: from mail179-46.suw41.mandrillapp.com (mail179-46.suw41.mandrillapp.com [198.2.179.46]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 091c0524-1c60-11f0-9eb0-5ba50f476ded; Fri, 18 Apr 2025 16:18:45 +0200 (CEST) Received: from pmta12.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1]) by mail179-46.suw41.mandrillapp.com (Mailchimp) with ESMTP id 4ZfH1b46MXz8XTnbZ for ; Fri, 18 Apr 2025 14:18:43 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id ff9ec6e26c4a44eeab59541f89468aeb; Fri, 18 Apr 2025 14:18:43 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 091c0524-1c60-11f0-9eb0-5ba50f476ded DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1744985923; x=1745255923; bh=nRdWZ+OFAVb8KuCLWbIcI+HAU9u6nYsrEhlOp/952Hw=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=E161meyqfFty47uDXe+SO1LHAXDvAU+2b1xybJBwXFD/SE+1vEfb603om+Vaqr8wn SL10daLpe5QDbvmIlIUYqyJXi32LXNXJjlPd/IQkZvwf04K1NPXe2LxRx03kGrRNbX iQUKsndj6d20NMa327yf856UXndutlyK50t3iTRO/L+1LpPEHQS6zYHyUGV+5unuNc Y36kKTvny/1FIX0Hv8H4tHkWlgwG1zRaSkoIFqCOqTP0yNKjHxgOp5/1fLOu+plSoR c4rD97iZMHhk7kTtNjty2pjAc45cJBmGWzshE7gh2vQ9LA1s51MK48ZVFcFfODO0aN PzWRY2eQBQaiQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1744985923; x=1745246423; i=teddy.astie@vates.tech; bh=nRdWZ+OFAVb8KuCLWbIcI+HAU9u6nYsrEhlOp/952Hw=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=BCgFd2ADwTKUM4FimC+vXvp0W4IyyO2C0ocEcahMGw1PJaUfUnFNMi2ZzOl++atoI MSvtnv81NCsYaNBFPV0evCoz/1HCX2kvO9zkZ6mbUyPWMuVomh1Rnjrd4I/RgqWDPk WVtPxyKiaFd5DVSyehH4Sjg0ngafpDRgJyQ57h3Q7wKAjWxlycxSNwT6pfItq7yUve eJKMet/f6QPl02kiG2LAH9vUsFNar0cJqAuykCqwezSDNTWRtbGQMeMew3elkZXm53 FHUhH/GyJpdnHJf8r8tvm7q99tmP0F4dZU9dYW/u6kOLH+6TS59Qrg814j5lY9WZuu +RupvBZWsZDTQ== From: "Teddy Astie" Subject: =?utf-8?q?=5BRFC_PATCH_3/4=5D_x86/public=3A_Expose_physaddr=5Fabi_t?= =?utf-8?q?hrough_Xen_HVM_CPUID_leaf?= X-Mailer: git-send-email 2.47.2 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1744985922659 To: xen-devel@lists.xenproject.org Cc: "Teddy Astie" , "Jan Beulich" , "Andrew Cooper" , " =?utf-8?q?Roger_Pau_Monn?= =?utf-8?q?=C3=A9?= " Message-Id: <35adbbb83d59ee0beb7247e9adcdddd133b1dbd8.1744981654.git.teddy.astie@vates.tech> In-Reply-To: References: X-Native-Encoded: 1 X-Report-Abuse: =?utf-8?q?Please_forward_a_copy_of_this_message=2C_including?= =?utf-8?q?_all_headers=2C_to_abuse=40mandrill=2Ecom=2E_You_can_also_report_?= =?utf-8?q?abuse_here=3A_https=3A//mandrillapp=2Ecom/contact/abuse=3Fid=3D30?= =?utf-8?q?504962=2Eff9ec6e26c4a44eeab59541f89468aeb?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20250418:md Date: Fri, 18 Apr 2025 14:18:43 +0000 MIME-Version: 1.0 The guest needs to know this information before attempting to make a hypercall (especially ones to fetch XENFEAT_*). Signed-off-by: Teddy Astie --- xen/arch/x86/cpuid.c | 3 +++ xen/include/public/arch-x86/cpuid.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c index 8dc68945f7..a721499920 100644 --- a/xen/arch/x86/cpuid.c +++ b/xen/arch/x86/cpuid.c @@ -153,6 +153,9 @@ static void cpuid_hypervisor_leaves(const struct vcpu *v, uint32_t leaf, */ res->a |= XEN_HVM_CPUID_UPCALL_VECTOR; + /* Indicate if the guest uses the physical addresses hypercall ABI. */ + if ( is_hvm_physaddr_abi(v->domain) ) + res->a |= XEN_HVM_CPUID_PHYS_ADDR_ABI; break; case 5: /* PV-specific parameters */ diff --git a/xen/include/public/arch-x86/cpuid.h b/xen/include/public/arch-x86/cpuid.h index 3bb0dd249f..b8ceb833d7 100644 --- a/xen/include/public/arch-x86/cpuid.h +++ b/xen/include/public/arch-x86/cpuid.h @@ -106,6 +106,8 @@ * bound to event channels. */ #define XEN_HVM_CPUID_UPCALL_VECTOR (1u << 6) +/* Hypercalls are using physical addresses instead of linear ones. */ +#define XEN_HVM_CPUID_PHYS_ADDR_ABI (1u << 7) /* * Leaf 6 (0x40000x05) From patchwork Fri Apr 18 14:18:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Teddy Astie X-Patchwork-Id: 14057239 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 531CAC369D1 for ; Fri, 18 Apr 2025 14:19:01 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.959030.1351533 (Exim 4.92) (envelope-from ) id 1u5mYK-0003V6-Vz; Fri, 18 Apr 2025 14:18:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 959030.1351533; Fri, 18 Apr 2025 14:18:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYK-0003UX-Qi; Fri, 18 Apr 2025 14:18:48 +0000 Received: by outflank-mailman (input) for mailman id 959030; Fri, 18 Apr 2025 14:18:47 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5mYJ-00030w-Ld for xen-devel@lists.xenproject.org; Fri, 18 Apr 2025 14:18:47 +0000 Received: from mail128-130.atl41.mandrillapp.com (mail128-130.atl41.mandrillapp.com [198.2.128.130]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 0a3867da-1c60-11f0-9eb0-5ba50f476ded; Fri, 18 Apr 2025 16:18:47 +0200 (CEST) Received: from pmta08.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1]) by mail128-130.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4ZfH1b456fzS62GqB for ; Fri, 18 Apr 2025 14:18:43 +0000 (GMT) Received: from [37.26.189.201] by mandrillapp.com id 11aa9698a46e4605a1aa47936d2968e5; Fri, 18 Apr 2025 14:18:43 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 0a3867da-1c60-11f0-9eb0-5ba50f476ded DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com; s=mte1; t=1744985923; x=1745255923; bh=zUCaxDM5n36EidycTWY29lREVYS1vqxzxsWMLChZfJU=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=RTEaQttw9/dNnlodj0ugHm+OC6nExkd4qTB1dyfdY1Bi1tJpSv8jvvt8pRR9Y3vNb vGQp8ydE25FN0PXwsrAGXBsR+M+QZEx8ytUWXlcgubuwVwMYnX/jvJamNjnJqLwcQP KMIdxdO277WUbvl3C58x0J4fAdX7IBI8P+t1jAZtVy/YZWkGWYZmgCulhP6xFsbtVi c7+R1mPNAOabI5S5K8/w+QGmcOgbJXE7BXvQdCQblwd6U8w3aPh+B9wzSSkd859Su/ SuiLNLfHyty+FUO7ubdulurlruBySjcANBntntRg1ivPWbdj4tcMVWjuOMEUulSmYC QB42fBwgleQUA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1; t=1744985923; x=1745246423; i=teddy.astie@vates.tech; bh=zUCaxDM5n36EidycTWY29lREVYS1vqxzxsWMLChZfJU=; h=From:Subject:To:Cc:Message-Id:In-Reply-To:References:Feedback-ID: Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date: Subject:From; b=Xp2hxCz8XqSBmkRZQt7pOBNS/ZSYCTT2clksk1QJPB4Se4vRBxJfGBZH2gNOfXIj0 lRN9lD38dFp9pOmZGStMS2JeFTM2lTwxoenZ5Vm6spCKCQG3DZmJlOugjdaFIHe4at BnBeH7GO1lk6kD5aQGpiLaA2u0Y8CWdu0iKgUz6i7oi4XC/M4Asupw+hgKaLpJTGP+ oUYCSfcX8/G33O2/pye9RmBUyXo0TSsngZWRlPDR6kjfsl0S5hCHqkatGyj6c3+2DV q+cHezJegQWe+69jxuG60kOlWh39nk1Y37qmmp4hQQPWWDgIng/xWMx/q0E1Q9iac6 u88w11HO7AVBw== From: "Teddy Astie" Subject: =?utf-8?q?=5BRFC_PATCH_4/4=5D_libxl=3A_Add_support_for_enabling_phy?= =?utf-8?q?saddr=5Fabi?= X-Mailer: git-send-email 2.47.2 X-Bm-Disclaimer: Yes X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2 X-Bm-Transport-Timestamp: 1744985922839 To: xen-devel@lists.xenproject.org Cc: "Teddy Astie" , "Anthony PERARD" , "Juergen Gross" Message-Id: <762e90acafcbf0b84c670400577501cd0e34bdea.1744981654.git.teddy.astie@vates.tech> In-Reply-To: References: X-Native-Encoded: 1 X-Report-Abuse: =?utf-8?q?Please_forward_a_copy_of_this_message=2C_including?= =?utf-8?q?_all_headers=2C_to_abuse=40mandrill=2Ecom=2E_You_can_also_report_?= =?utf-8?q?abuse_here=3A_https=3A//mandrillapp=2Ecom/contact/abuse=3Fid=3D30?= =?utf-8?q?504962=2E11aa9698a46e4605a1aa47936d2968e5?= X-Mandrill-User: md_30504962 Feedback-ID: 30504962:30504962.20250418:md Date: Fri, 18 Apr 2025 14:18:43 +0000 MIME-Version: 1.0 Signed-off-by: Teddy Astie --- tools/include/libxl.h | 5 +++++ tools/libs/light/libxl_create.c | 4 ++++ tools/libs/light/libxl_types.idl | 1 + tools/xl/xl_parse.c | 1 + 4 files changed, 11 insertions(+) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index b7ad7735ca..6af9a658c9 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -178,6 +178,11 @@ */ #define LIBXL_HAVE_BUILDINFO_EVENT_CHANNELS 1 +/* + * The libxl_domain_build_info has physaddr_abi field. + */ +#define LIBXL_HAVE_BUILDINFO_PHYS_ADDR_ABI 1 + /* * libxl_domain_build_info has the u.hvm.ms_vm_genid field. */ diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c index e03599ea99..43e8c18768 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -466,6 +466,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, libxl_defbool_setdefault(&b_info->apic, true); libxl_defbool_setdefault(&b_info->nested_hvm, false); + libxl_defbool_setdefault(&b_info->physaddr_abi, false); } if (b_info->max_grant_version == LIBXL_MAX_GRANT_DEFAULT) { @@ -662,6 +663,9 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config, if ( libxl_defbool_val(b_info->nested_hvm) ) create.flags |= XEN_DOMCTL_CDF_nested_virt; + + if (libxl_defbool_val(b_info->physaddr_abi)) + create.flags |= XEN_DOMCTL_CDF_physaddr_abi; } if (libxl_defbool_val(b_info->vpmu)) diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl index 9bb2969931..d02e84471b 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -637,6 +637,7 @@ libxl_domain_build_info = Struct("domain_build_info",[ ("nested_hvm", libxl_defbool), ("apic", libxl_defbool), ("dm_restrict", libxl_defbool), + ("physaddr_abi", libxl_defbool), ("tee", libxl_tee_type), ("u", KeyedUnion(None, libxl_domain_type, "type", [("hvm", Struct(None, [("firmware", string), diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 089a88935a..bd674684fa 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -1803,6 +1803,7 @@ void parse_config_data(const char *config_source, } xlu_cfg_get_defbool(config, "nestedhvm", &b_info->nested_hvm, 0); + xlu_cfg_get_defbool(config, "physaddr_abi", &b_info->physaddr_abi, 0); switch(b_info->type) { case LIBXL_DOMAIN_TYPE_HVM: