From patchwork Wed Apr 16 21:29:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 14054487 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 95340C369CA for ; Wed, 16 Apr 2025 21:29:49 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.956557.1349931 (Exim 4.92) (envelope-from ) id 1u5AJz-0001vs-RU; Wed, 16 Apr 2025 21:29:27 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 956557.1349931; Wed, 16 Apr 2025 21:29:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5AJz-0001vl-OG; Wed, 16 Apr 2025 21:29:27 +0000 Received: by outflank-mailman (input) for mailman id 956557; Wed, 16 Apr 2025 21:29:26 +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 1u5AJy-0001ht-B2 for xen-devel@lists.xenproject.org; Wed, 16 Apr 2025 21:29:26 +0000 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2062a.outbound.protection.outlook.com [2a01:111:f403:2414::62a]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id dd74abfa-1b09-11f0-9ffb-bf95429c2676; Wed, 16 Apr 2025 23:29:24 +0200 (CEST) Received: from DM6PR07CA0132.namprd07.prod.outlook.com (2603:10b6:5:330::25) by MW4PR12MB6974.namprd12.prod.outlook.com (2603:10b6:303:207::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.24; Wed, 16 Apr 2025 21:29:17 +0000 Received: from DS1PEPF00017096.namprd05.prod.outlook.com (2603:10b6:5:330:cafe::d1) by DM6PR07CA0132.outlook.office365.com (2603:10b6:5:330::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.15 via Frontend Transport; Wed, 16 Apr 2025 21:29:17 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF00017096.mail.protection.outlook.com (10.167.18.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Wed, 16 Apr 2025 21:29:16 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:15 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:15 -0500 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Apr 2025 16:29:14 -0500 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: dd74abfa-1b09-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CkcoCJ4UwGEbi1KBUd40fRmlEgt3f0L6AlHQm9j7Hip/anLkmCOEmMA1V41H/PeGqVPrdl+pGbewXz77US1JmwAOvICRFlVizM1C29Po8QpU3qAp4S69eaa4oZX6bp5l56UQDVzQfoKqDc6txYDE27mkL5xh8BMcHlh99q8NE3++hzGu4viX0jiVX8cSecJfBJetioYF0FsPX5PbuRjOs+3aq+HUejqxemnL5e6GXLKAxMmkQcktX33+/T2J9Gvuy8B1pkvPjZtEeTTEBwSbtZINl6+5ACCNTKJblM9duphMCKSqiSN8Eup5w21hziw+4zicjbyKMcTRUzFwdt1jNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tIRm+gVOiD/R0teBKb+/Yy7EcO5lotdHtN+tWKBu7mk=; b=Loegm3rnxnr0FkAb+MFJxPn2QOXKCsqBrO1yz2lAqsdi2rJLGVkicBFDadgBB50rzjxoYX1dTJaEuxBktXhRVbk4uPAjkW46qXJb+TK+rN6XOirRobujj2GdpFSTCDnNBLKTmBC6kIIJROltt2ZLEaThjcQPxR4FyWVR7r8X/z0U7WHHWhCwxTNLgTIDVHZqWUlLDAtufH+nBHR5KTYh3dTEPOR4NiIL3Rrcn5/AWgVLpn7yRjnlWk0Scahy5OP4Uurje6pvEA68SRDmxRweUPXiWZdpZBvO6J/fXmtQzqEIcoUA0rZM8Nh5pJj6mY4L7fePLwIbdQeFCv2JcRhQ4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tIRm+gVOiD/R0teBKb+/Yy7EcO5lotdHtN+tWKBu7mk=; b=zeQ1xvnmwwcwyx7baPE76RCnKEbuBm/+CI9u9tLTWb2io8sS0OsdpkyDdJrs568Arpy/mdz2U2SuSM0zd147bDNzMtxTl+kd+sPcw4pCFqri3IkdQz1ilP3UryZFZ/yROCy+fBujkg3wT6IIOJzpc5hrNjnq0V/ZO0EbFKor7ms= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C From: Jason Andryuk To: CC: "Daniel P. Smith" , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , "Volodymyr Babchuk" , Andrew Cooper , Anthony PERARD , "Jan Beulich" , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , Jason Andryuk Subject: [PATCH v5 1/7] xen: introduce hardware domain create flag Date: Wed, 16 Apr 2025 17:29:05 -0400 Message-ID: <20250416212911.410946-2-jason.andryuk@amd.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416212911.410946-1-jason.andryuk@amd.com> References: <20250416212911.410946-1-jason.andryuk@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017096:EE_|MW4PR12MB6974:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b9b35f4-153e-428f-7796-08dd7d2dbdbe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|7416014|376014; X-Microsoft-Antispam-Message-Info: oTkWj5b2n4p2k2FRYSg8kfLH4AJVDGhzasTTOBWY6RW5/XeUbA4/XJy0/vGGmwxpDzqnjviBm+S4Od/RINCB/IchlmtwoBQfxYzehyVD/5InlUVgJur3mgSjVdl0bWQj722Tf3dgGlpP11JfXM8id0gviQyCZUrakQvnNXd4PKLPdGl0RZjI6uE52xiZIqpkG2ZJqAJEPJEkYJ5BSJBgl/1dMuK9f+Y5MmnhaorUzzlQ4zOU27cRrsbG4WjAzTzSWqy1ZQxw9+vv53rAS0u4zLliQoElKGwySUoCz3tm/IhK0FDRzPhnvdueA9v0sZWdDEpGMxajcq8tGWx83avYdt7YcD5ly6XOuTQVK7ukC9ATIjIdCEkR4VaACTA+tH1Ko/pTGpwnT4IcGSOS5kyIQPdbz0oVUWhE8dvHNqrUo9b3P6oDMLeEtJTDa37R17lANjl5sTPvElOvSEBCAgtsUZgtZqnyyVGLQhF2775cjlXIWMOntpHz6wEipEVyodSoV2M4GfruMCSJOM/j4PAk20SjRuyr/1hCB/xMbhQB1JBESfWLgZ1Q2FC6XpAJF6c5Vov6HhEP0mE/PyF/axCiENRTmkuwgU/poPfvBN9ReBF+qnloed9vcn3WaWBwGAqvMvdoa+yozFTAfdfZPStOiwRX4TxUPYsADAaaRiDF9RC5zGPITMYY1iBy9y6rHJlLq35FzrDnSRDzp+JZdosFrvjFJ9+zDeDKliNSheXCOHO1N27mLeP+GaRf3R0TcT5Wlk89W+y2LMXg5/K9D1iv9Fzcs0pQ5rH2YsXrTQr0aoxMAqAOvVUsVBJvhys4i6mU7ckYPt+FFyZApLu2nEOEhkY/mS9t/28m5pHf0JveVgj28K+0TQWJGxYdq9Qbauqxq5tYqaLKPJzfompd+KeeOdZCNR71eA92Ncv4p4tWbX/Rz5qisuJhMp47HUr2w+bpGiMj/Ym39IN+Ptalkp1MXf/f8KI6e0YPeWQWFZSZOfo9o+ceKrHt2XdwoZobzOUCOFV9z0dOgOfwqCO4TtWUY78OwKxdKxeocYY8Zs5X2ryw/h4wdN1xGG/n/qREid5A93WPaSZypZKDnOy6p0f4mjS1kMwIeZXcFaQFSCrwywTEDEYrFcjVwrZHSD4wuJL6QUlkPjh5ce9grELhURyFRL9/nkeu1HygVhFJozHwjddps9Xsv5ITiH8tWF4C6NA3ru8DwBaINFcJ5vGIO4lbBhcr8h6nU5Orw6PLaCwGuUML3SlM/Til5whZF2BRLhNDQRmsRO8rWNo6xEWmRTcTWPisx7Ri6bWGyBK+JIF5GlcJMOhlHjM6vCOqJ50Qj/LuouFwZCHBR0HxvWMxH7JNHfEJtTBhHDy5/9mS1SdUyQQSw4uPha/d9Tcl8TynnjD7EtjJsvB6HhXoROIBbR7j4cnyjRx4x7ay/MiJLYQaMM4cKMeB+2cOsFRAsGrzn8ICT6yw22wiV5QgOma9RA2OBHinSRlt7XtYZtYiCwX5vvQ98embEZMHRaRbsZpuJveI X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(82310400026)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 21:29:16.6073 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6b9b35f4-153e-428f-7796-08dd7d2dbdbe X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017096.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6974 From: "Daniel P. Smith" Add and use a new internal create domain flag to specify the hardware domain. This removes the hardcoding of domid 0 as the hardware domain. This allows more flexibility with domain creation. The assignment of d->cdf is moved later so CDF_hardware is added for the late_hwdom case. Also old_hwdom has the flag removed to reflect the change. Signed-off-by: Daniel P. Smith Signed-off-by: Jason Andryuk Reviewed-by: Jan Beulich --- v5: Restore CDF_hardware to old_hwdom on error Add Jan's R-b Rebase bd->domid addition v4: Move d->cdf assignment later Remove Jan's R-b v3: Or-in CDF_hardware for late hwdom case Add Jan's R-b v2: () around binary & Only allow late_hwdom for dom0 --- xen/arch/arm/domain_build.c | 2 +- xen/arch/x86/setup.c | 3 ++- xen/common/domain.c | 19 +++++++++++++++---- xen/include/xen/domain.h | 2 ++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 634333cdde..b8f282ff10 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2369,7 +2369,7 @@ void __init create_dom0(void) .max_maptrack_frames = -1, .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version), }; - unsigned int flags = CDF_privileged; + unsigned int flags = CDF_privileged | CDF_hardware; int rc; /* The vGIC for DOM0 is exactly emulating the hardware GIC */ diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 3c257f0bad..24b36c1a59 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1011,7 +1011,8 @@ static struct domain *__init create_dom0(struct boot_info *bi) /* Create initial domain. Not d0 for pvshim. */ bd->domid = get_initial_domain_id(); - d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged); + d = domain_create(bd->domid, &dom0_cfg, + pv_shim ? 0 : CDF_privileged | CDF_hardware); if ( IS_ERR(d) ) panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d)); diff --git a/xen/common/domain.c b/xen/common/domain.c index 585fd726a9..abf1969e60 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -804,9 +804,6 @@ struct domain *domain_create(domid_t domid, d->domain_id = domid; d->unique_id = get_unique_id(); - /* Holding CDF_* internal flags. */ - d->cdf = flags; - /* Debug sanity. */ ASSERT(is_system_domain(d) ? config == NULL : config != NULL); @@ -820,15 +817,25 @@ struct domain *domain_create(domid_t domid, d->is_privileged = flags & CDF_privileged; /* Sort out our idea of is_hardware_domain(). */ - if ( domid == 0 || domid == hardware_domid ) + if ( (flags & CDF_hardware) || domid == hardware_domid ) { if ( hardware_domid < 0 || hardware_domid >= DOMID_FIRST_RESERVED ) panic("The value of hardware_dom must be a valid domain ID\n"); + /* late_hwdom is only allowed for dom0. */ + if ( hardware_domain && hardware_domain->domain_id ) + return ERR_PTR(-EINVAL); + old_hwdom = hardware_domain; hardware_domain = d; + flags |= CDF_hardware; + if ( old_hwdom ) + old_hwdom->cdf &= ~CDF_hardware; } + /* Holding CDF_* internal flags. */ + d->cdf = flags; + TRACE_TIME(TRC_DOM0_DOM_ADD, d->domain_id); lock_profile_register_struct(LOCKPROF_TYPE_PERDOM, d, domid); @@ -973,7 +980,11 @@ struct domain *domain_create(domid_t domid, d->is_dying = DOMDYING_dead; if ( hardware_domain == d ) + { + if ( old_hwdom ) + old_hwdom->cdf |= CDF_hardware; hardware_domain = old_hwdom; + } atomic_set(&d->refcnt, DOMAIN_DESTROYED); sched_destroy_domain(d); diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h index a34daa7d10..e10baf2615 100644 --- a/xen/include/xen/domain.h +++ b/xen/include/xen/domain.h @@ -53,6 +53,8 @@ domid_t get_initial_domain_id(void); #else #define CDF_staticmem 0 #endif +/* This is the hardware domain. Only 1 allowed. */ +#define CDF_hardware (1U << 3) #define is_domain_direct_mapped(d) ((d)->cdf & CDF_directmap) #define is_domain_using_staticmem(d) ((d)->cdf & CDF_staticmem) From patchwork Wed Apr 16 21:29:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 14054486 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 4228DC369C7 for ; Wed, 16 Apr 2025 21:29:49 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.956558.1349941 (Exim 4.92) (envelope-from ) id 1u5AK1-00029p-1P; Wed, 16 Apr 2025 21:29:29 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 956558.1349941; Wed, 16 Apr 2025 21:29:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5AK0-00029i-Uo; Wed, 16 Apr 2025 21:29:28 +0000 Received: by outflank-mailman (input) for mailman id 956558; Wed, 16 Apr 2025 21:29:27 +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 1u5AJz-0001ht-Fl for xen-devel@lists.xenproject.org; Wed, 16 Apr 2025 21:29:27 +0000 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2060a.outbound.protection.outlook.com [2a01:111:f403:2405::60a]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id ddf823b4-1b09-11f0-9ffb-bf95429c2676; Wed, 16 Apr 2025 23:29:25 +0200 (CEST) Received: from DM6PR07CA0128.namprd07.prod.outlook.com (2603:10b6:5:330::20) by SA1PR12MB8597.namprd12.prod.outlook.com (2603:10b6:806:251::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.27; Wed, 16 Apr 2025 21:29:17 +0000 Received: from DS1PEPF00017096.namprd05.prod.outlook.com (2603:10b6:5:330:cafe::20) by DM6PR07CA0128.outlook.office365.com (2603:10b6:5:330::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.15 via Frontend Transport; Wed, 16 Apr 2025 21:29:17 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF00017096.mail.protection.outlook.com (10.167.18.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Wed, 16 Apr 2025 21:29:17 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:16 -0500 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Apr 2025 16:29:16 -0500 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: ddf823b4-1b09-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Gn/WLUDkyRQJA039L2wYcJEa7idoS7LvqJNLxl80j4OqwNV2PeMAHDdkuz/HwM1c5i6jkAjwjbyrSYyyJDqfIx/3vpI9gxvGpvOW6ZL7nDCKT5oRihm236ax6cquFYYaNc1x3d39EjpDgAhveKI2aHktQzJTbxJ0rfdiC25IcKzAg5BAKucO+ICVyQHqCwl+BuPUPegFGGBsVxczlTYmcOkVOXv4VUIC9gaYVEJvbcMp18GHr6R2W3AZoHQMIWcyycVa93ALYkhlnQ9bbs+HS0SGwZb3bFQnK0K+48VghSM/NR94l/y4hRxE6wwee83UyCjCP3yrIHdNWM4KbUzmpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=u4tBwta+WLneMlhwvxky2qylVlSbUKgM4iAMiHLVlC8=; b=r0537niEvUaNQYZ6eSM9EhCMc+CzBRKDolhrIjqaEmcY76vjdMTHdwh1o/vVQO8yrvpLU4epc4hRQQtudpZjFixu4OTn+pYwP8Nv3f/GyCG7Lp3MdFlSB9nTI8jFuDmm2v+ncoGaymE0v5BvsrqUVmyWRtjRjpLs79xZT/o2jIq+rzLH7is8axO2MandCKK2yFdlex65PHJnlVMFylart41fG7GkVTlu5kKBqX5myKOARX2choNkKcXJVh6+6iWnj34rgqngub971zDtjdRkpcV0uGh5vJsnjAFzNUmzImOwmUmTsfVwyGtlHQDfwaiZZGGS66LnPwMa/Ouo49v+JA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u4tBwta+WLneMlhwvxky2qylVlSbUKgM4iAMiHLVlC8=; b=uHzd8tuGKP+99VCC6XbPyiEF8awa92xMG0uA1I4NBI/5IB9sKVvB9CBwY4zhafH+z5rKbq/tVTcvEsvwAwL1qzBF2bsTgcanVF0vFDN5d36TeU6GdDEWOvLLKihMjZh6X7J8FqTQ1ULJjt3T9iIWt2t9HR9YmxVxza8tPYsDD5Q= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C From: Jason Andryuk To: CC: Jason Andryuk , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , "Volodymyr Babchuk" Subject: [PATCH v5 2/7] xen/arm: dom0less hwdom construction Date: Wed, 16 Apr 2025 17:29:06 -0400 Message-ID: <20250416212911.410946-3-jason.andryuk@amd.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416212911.410946-1-jason.andryuk@amd.com> References: <20250416212911.410946-1-jason.andryuk@amd.com> MIME-Version: 1.0 Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017096:EE_|SA1PR12MB8597:EE_ X-MS-Office365-Filtering-Correlation-Id: 53b69391-6ac7-4d1a-d18e-08dd7d2dbe7a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: DwPILhrJLPSx7N5Y6J+RyxaAO0KQz+1B40qvC1CQwcMioN6BICn4z1hd8rxHi55GmePnsSUclGNyKGX9FY/utc0qyVdkMqCiAItVbrUbSkMD43tPF9FBHUdEX3xRcovE9aVv/jOwd1C8dsghf0i0Ajorz0SRDhZDMPy8Yxu56OfPFcEv8gBrDzU6lqp4YnhsfLAOaNOWrq3CdJO0gl811E4cuAQrgoDM35EsXdAkvAyc0q0eD3vXrGdw4wnl2UKwBVhhcZEW9TBdgFvbCCn1tsTXWzDMZjNAG6nvGg9XySMmyxXrqLzQIuGAUZMzdcCi590YD625aqVNxwR6yy66HC+PXmP/lUnmAZj0vAFO4qCV0QxX8FkvDpkpXKG9JltG2ukyN8pCHMjEE+dOQxA/agRtcZfvPQH7xRVOW8UFsI7MFuPoxaagrFgtPjAAkiUzLu3aSlcBIBev/mw/d+M6aIGGUa3EB5WyOpUkO4nPsb6Ho4J5b+GRkkaClIrd8dbdMCLWzJk5AqHDsQdwHZMbJ1ntcCtHevGFsJBnkqjVUrfCa5eZz65bvINUF9RIOc+9Fp/rtx7UIKOAdqBO+utF/h1mfircKlmVmHj/4eqfQelAbZ9DDjBJEWEEXo+RpYZV8hENAs/iaZVTKgtOhtL6zfo/uVoIkKrkIC4BWqF6Uy49MIGRGFwRltu+/Jo0kFwMcwzkaT7jFOwIzvETovySC0ebmNI//LeqOsAHyjn6VyZ4gBECvCCkyzrk6WocGzPTfrvvM1udieewatkU8Q6Zwuw3EowQKWZTku53Q1J+Lt2A6FJmaetmjK15u39l5q1gDaZfRxnU3RY9MmRDPC3iyPlbHzCw3HDfviMM75mILZMjcg9JJs7/upEr2DJqFozUNhhiuTiJ3OWmZfAoyKhU2NE9hMmU3N38A4kBJsjcQy68yaqox7TNW7/eEFymMRt4O+8UluNuI8hoKlkcsjZ1g/VUMX2jCsI+MO8eP1M6L1UWtedOYZOfr66KNnbNa1abgoRwtSBICNTcujy5APO+46MWeCMrTkDKZr/onW33P5bF7W95jaQucfSRqaADIncJvXADdwM/+Oc4zvXqGHRT8n7vHWgB/Eqxtzh/bcV0M80GOahUBO1WnUs3pTBmlB+3e6TQHtXAwD7F/XmbHEqjJbl7Fstd1VH5gRCdJshaNZxYRbEaORMy4KbmKx07Xr537ZgM/zraV7va+seJ9CzqTrmIT31Cv0QzKuG5ONH8c3om1s3rfVD89El6DNeAPE1V39R5v8I/liA3rxogOHbAnfXA8qfc76R61M0+KO09imQjRZfpxnE+HAVKzfv8RszyAqyQ/PKq4hNSzk5Bg1VtL1U9cey2u0yEVlazJhyGHEs+DFN5t6wQkbCaRUshRy5+Lbpl6ov5XNY1UpgK7+QBiuXiY4ybn0WmiphMfX5Wtle216vEipzblw4DaoEEXgm1r8ASHVLIXwiEKPVjMi29wCJiZ6HGJl4C0NvknzG0BJE+p4dPz4WuReDlIiFrcozk X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 21:29:17.8261 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 53b69391-6ac7-4d1a-d18e-08dd7d2dbe7a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017096.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8597 When creating a hardware domain, have the dom0less code call construct_hwdom() which is shared with the dom0 code. The hardware domain requires building that best matches the dom0 build path. Re-use it to keep them in sync. The device tree node of the dom0less config is now passed into construct_hwdom(). dom0 uses /chosen for process_shm while a hwdom will use the value from its dom0less device tree node. Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini --- v5: Add R-b: Stefano v3: Rebase on process_shm_chosen() removal --- xen/arch/arm/dom0less-build.c | 57 ++++++++++++++----------- xen/arch/arm/domain_build.c | 7 +-- xen/arch/arm/include/asm/domain_build.h | 3 +- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index bd15563750..7bc6a6c4d7 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -929,36 +929,45 @@ static int __init construct_domU(struct domain *d, /* type must be set before allocate memory */ d->arch.type = kinfo.type; #endif - if ( !dt_find_property(node, "xen,static-mem", NULL) ) - allocate_memory(d, &kinfo); - else if ( !is_domain_direct_mapped(d) ) - allocate_static_memory(d, &kinfo, node); - else - assign_static_memory_11(d, &kinfo, node); - - rc = process_shm(d, &kinfo, node); - if ( rc < 0 ) - return rc; - - /* - * Base address and irq number are needed when creating vpl011 device - * tree node in prepare_dtb_domU, so initialization on related variables - * shall be done first. - */ - if ( kinfo.vpl011 ) + if ( is_hardware_domain(d) ) { - rc = domain_vpl011_init(d, NULL); + rc = construct_hwdom(&kinfo, node); if ( rc < 0 ) return rc; } + else + { + if ( !dt_find_property(node, "xen,static-mem", NULL) ) + allocate_memory(d, &kinfo); + else if ( !is_domain_direct_mapped(d) ) + allocate_static_memory(d, &kinfo, node); + else + assign_static_memory_11(d, &kinfo, node); - rc = prepare_dtb_domU(d, &kinfo); - if ( rc < 0 ) - return rc; + rc = process_shm(d, &kinfo, node); + if ( rc < 0 ) + return rc; - rc = construct_domain(d, &kinfo); - if ( rc < 0 ) - return rc; + /* + * Base address and irq number are needed when creating vpl011 device + * tree node in prepare_dtb_domU, so initialization on related variables + * shall be done first. + */ + if ( kinfo.vpl011 ) + { + rc = domain_vpl011_init(d, NULL); + if ( rc < 0 ) + return rc; + } + + rc = prepare_dtb_domU(d, &kinfo); + if ( rc < 0 ) + return rc; + + rc = construct_domain(d, &kinfo); + if ( rc < 0 ) + return rc; + } domain_vcpu_affinity(d, node); diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index b8f282ff10..0a329f9f5e 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2305,10 +2305,11 @@ static int __init construct_dom0(struct domain *d) if ( rc < 0 ) return rc; - return construct_hwdom(&kinfo); + return construct_hwdom(&kinfo, NULL); } -int __init construct_hwdom(struct kernel_info *kinfo) +int __init construct_hwdom(struct kernel_info *kinfo, + const struct dt_device_node *node) { struct domain *d = kinfo->d; int rc; @@ -2327,7 +2328,7 @@ int __init construct_hwdom(struct kernel_info *kinfo) if ( acpi_disabled ) { - rc = process_shm(d, kinfo, NULL); + rc = process_shm(d, kinfo, node); if ( rc < 0 ) return rc; } diff --git a/xen/arch/arm/include/asm/domain_build.h b/xen/arch/arm/include/asm/domain_build.h index 134290853c..17619c875d 100644 --- a/xen/arch/arm/include/asm/domain_build.h +++ b/xen/arch/arm/include/asm/domain_build.h @@ -13,7 +13,8 @@ bool allocate_bank_memory(struct kernel_info *kinfo, gfn_t sgfn, paddr_t tot_size); void allocate_memory(struct domain *d, struct kernel_info *kinfo); int construct_domain(struct domain *d, struct kernel_info *kinfo); -int construct_hwdom(struct kernel_info *kinfo); +int construct_hwdom(struct kernel_info *kinfo, + const struct dt_device_node *node); int domain_fdt_begin_node(void *fdt, const char *name, uint64_t unit); int make_chosen_node(const struct kernel_info *kinfo); int make_cpus_node(const struct domain *d, void *fdt); From patchwork Wed Apr 16 21:29:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 14054488 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 DD1D4C369C9 for ; Wed, 16 Apr 2025 21:29:56 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.956556.1349921 (Exim 4.92) (envelope-from ) id 1u5AJy-0001iB-L9; Wed, 16 Apr 2025 21:29:26 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 956556.1349921; Wed, 16 Apr 2025 21:29:26 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5AJy-0001i4-HT; Wed, 16 Apr 2025 21:29:26 +0000 Received: by outflank-mailman (input) for mailman id 956556; Wed, 16 Apr 2025 21:29:25 +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 1u5AJx-0001ht-4j for xen-devel@lists.xenproject.org; Wed, 16 Apr 2025 21:29:25 +0000 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2060d.outbound.protection.outlook.com [2a01:111:f403:2009::60d]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id dcb2bd7e-1b09-11f0-9ffb-bf95429c2676; Wed, 16 Apr 2025 23:29:23 +0200 (CEST) Received: from BN0PR03CA0024.namprd03.prod.outlook.com (2603:10b6:408:e6::29) by DS0PR12MB7510.namprd12.prod.outlook.com (2603:10b6:8:132::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.32; Wed, 16 Apr 2025 21:29:19 +0000 Received: from BN3PEPF0000B374.namprd21.prod.outlook.com (2603:10b6:408:e6:cafe::97) by BN0PR03CA0024.outlook.office365.com (2603:10b6:408:e6::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.22 via Frontend Transport; Wed, 16 Apr 2025 21:29:19 +0000 Received: from SATLEXMB03.amd.com (165.204.84.17) by BN3PEPF0000B374.mail.protection.outlook.com (10.167.243.171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8678.4 via Frontend Transport; Wed, 16 Apr 2025 21:29:18 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:18 -0500 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Apr 2025 16:29:17 -0500 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: dcb2bd7e-1b09-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tE0MaZPRvHIFFL6fJLJtsSyCM+Zgp9Hoo0bESGpBeIFd4K0LGFsLHmJdDmb1n8sLv9fLYu778rAdZ8KO14sMPGVLXF7Ndpr2dEMq3bjD2qZmQzgB5VLCQatQE/rIRmbgy/MVjYPv5yHw+NQrd94E4dS0cDcj0B8HxHotwpKt6oAKjMVybxkOXgcATdm77UKvEUKZcwu/AipF9AfjSajAcBbPFASm4Y6zQlkHqDHhI8NmjeU708RGpOsB+6zq/wxzuFV33WoOhuNaMn5xPLNIrZb9fWvb6IGbA77w2+K/JCaifZC4R6wHX0qT2aIqt3pkJO9jN5QEiW+tkAgHmrh9Vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Hb+EANq+WOOIYm4SaGYyUfxwcKnfbKSADWxYlc7gxso=; b=oVZl1+NPp9ixM2UOtVcGeM0NScZ6WP5WX/Nln9H5ilz2V7bcFiNVcrpKEQMkgkkImJha3RjOuVVJbvsKVu7GdpWThm6c606cJd4A1rlYqAJACCCRC906tuhTC+77UwONrqe1ws7KUJAU69Zw7s7ofXTMJVzYwDoWREPzhyBDP0QTpU/J1/pH8t7X43vNNHAj/W1/u0TlcMGsqxPHzmcJ1gZBDUSpTsjs3/XjhldGNT5hj8qrqylvF228XL0kU8Ui+ivV/zaHHn5W4o3KH8sTI8/8MC45REEyjYthJHrsGHvuK0GqFie4oug51pdsmGH2CWC7Zc6InscJuY9116+iug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hb+EANq+WOOIYm4SaGYyUfxwcKnfbKSADWxYlc7gxso=; b=HDdxJSGgTXPscneT5xkjqPqJICE82plnIT3luhYhIlNMnOZAuPvvWeWaOv3A7FYJWrHCYRUdw0fAwQ4ymd+ZoiWPDKXO2vFRq7DXX/z697PTkZ/fLCngKQbCKyclydFz/Nawrpqypz8rI4AL2QaZSfhPVUzYt8gptxZ43GKJRPA= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C From: Jason Andryuk To: CC: Jason Andryuk , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , "Volodymyr Babchuk" Subject: [PATCH v5 3/7] xen/arm: dom0less delay xenstore initialization Date: Wed, 16 Apr 2025 17:29:07 -0400 Message-ID: <20250416212911.410946-4-jason.andryuk@amd.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416212911.410946-1-jason.andryuk@amd.com> References: <20250416212911.410946-1-jason.andryuk@amd.com> MIME-Version: 1.0 Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B374:EE_|DS0PR12MB7510:EE_ X-MS-Office365-Filtering-Correlation-Id: 51534c0c-7999-4151-4ea1-08dd7d2dbef5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: iRGOR0EOn6+1cI5CpU4MXh1Ub83rDVYNS4EhLZiCxpdp9XetKPJ/nnDzp8VCdBpB3H4tYlrKk1k5H9gY3ULCAdoUY6+uw9ZQcuZ8oBtcPHGaPwFVSDQUeXXXhixwil+0OGrRmhwe5ait9rSN982o+QZ10nP7mReuPWynU3M+yV3JLHVnfmCkIhTZRjqeyhXn5vQnBD2sUgkSBQxU5Tff/SAb0fS99rmaSnUOokdpBCfd7t2zK7vpwBSn3nNIOYNFV5I7zWJaYyWKwCnQWFCBA0TNYX9oZaYs6i6u0BjgemD3KA0YLP7AH8nv5is4Pr7u5VrTHO/PMGpIfRb11sReKaiJvtP5Zbf4BHU2OkPR3gzm37UL8whKlFFwsn+bqqywPdkfPioTQ/dB5sks57yK+q7uT9rUXrA0aILqI0uNUOtuTh8z7NJezhRJANIbuIxyaRPOmNSx5BwTwZTRsRneYByt+LjItwHUEaqX5iunCM1ZvDUYGiNiaEvMY8uuiqRp2nmcUWjTJoHEJaMG92Mkr4GwQVf1dV3cqfRFP84ZaS8z0wV60rp8UZA5QiT2XmIa1Obuss3fwTzky/aS6WR1ZVu9VZf8bIqsEeLkenoZ4kVoU7jTwi/TeGwRzJHZQA6jgAWIlHXGrmduEjLau9HiGNEmN8mTqcpop/lsdffM8cpWOt/j4q1DdpATpfu7Nlkk5W2UPloqj7RHqatSgkA3lCnJCZcYEea5CIuCsIComL5P0cl0tqwT9dHZlaPuLLWsz+3lXAauIBe9PO5FG81tvSW9nBB5uzJfXZXBfO5bEJR08XFf+bsEt0/7nbPTkfdFNUYpkfJwN7aHKLPi5qEckFY7IQWU1djgr7PYVJ9Pc7qWSHDb7pw63SbLMsMPyb7HNPzf5DB9v2KNZa3BxUfgmHeX12SHo6XNb5mwRfBBtzk6YOnAEcZw2E68tc9j51Mihe04h83VnNyY5z55f1J+BDfJ2c9qeWGDaE5K3L8+jaCIERhPg9HnBYoyd9VMc8rL0mmF4LYJHurNA8/Q/vsd2CzV5MJcFJMdxNpoMNxtE9WGSGOsYW/Es4srMnHCFVRFVE4QSC2uOefza/LChEFBjDdM0zaAHXWFWn+7IfqkpYjtkKvuQt328dIseXjnBO11YkMlsnq9y/ZLMhmOMjLRvh7NE7gKbq0wv9pCHUwQZDoGxjownKDzTKO8wsnOjgIvMIslE5Mznq0wZDNEM9mvFV83KFdhzXdC9K1vrjEhePwSptZx/+PC1amL9aJF5UM/uqK5wk2itJFT5HaKQZfg/GTeclYAalCJbgSiVaeYikQes//LVn7mxZkfpr4Orgq+xxO2GEI9EL0nxkNUtIq8VE/NQmKHuJFTPImP9iTCr8XBodUBVno1qeYFtSiXDWesGVUfwBD6FGnGXfY1MByCZ8r9HSkvIMw5eQonl6Z4TzCJHtxYlIKBaIm7h40wx9mJ3XH+Mjg9lpYF9Cd5ni6Ff0+NSVvUPPQHCiY4TO8YUBZg4Ifm0wNUyt+kUDmjqXjY X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 21:29:18.6786 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 51534c0c-7999-4151-4ea1-08dd7d2dbef5 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN3PEPF0000B374.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7510 To allocate the xenstore event channel and initialize the grant table entry, the xenstore domid is neeed. A dom0 is created before the domUs, so it is normally available through hardware_domain. With capabilities and dom0less, the xenstore domain may not be created first. Keep the population of the page and HVM_PARAM_STORE_PFN in the normal domain construction, but delay event channel creation and grant seeding to after all domUs are created. HVM_PARAM_STORE_PFN now serves as indication to setup xenstore since the device tree is no longer immediately available. 0 means no xenstore. ~0ULL means legacy so only the event channel needs setup, and any other value means to seed the page. dom0 needs to set xs_domid when it is serving as the xenstore domain. The domain running xenstored needs to be the handler for VIRQ_DOM_EXC, so set that as well - it otherwise defaults to hardware domain. Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini --- v5: No change v4: Add Stefano R-b v3: Use uint64_t to check for xenstore pfn read from HVM_PARAM Rebase after mem paging changes v2: Re-order ahead of seeding. Fix created type in commit message Change set_xs_domid to set_xs_domain Set xenstore domain as VIRQ_DOM_EXC handler --- xen/arch/arm/dom0less-build.c | 67 +++++++++++++++++------ xen/arch/arm/domain_build.c | 2 + xen/arch/arm/include/asm/dom0less-build.h | 2 + 3 files changed, 53 insertions(+), 18 deletions(-) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 7bc6a6c4d7..bb8cc3be43 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -20,6 +20,15 @@ #include #include +static domid_t __initdata xs_domid = DOMID_INVALID; +static bool __initdata need_xenstore; + +void __init set_xs_domain(struct domain *d) +{ + xs_domid = d->domain_id; + set_global_virq_handler(d, VIRQ_DOM_EXC); +} + bool __init is_dom0less_mode(void) { struct bootmodules *mods = &bootinfo.modules; @@ -679,7 +688,7 @@ static int __init alloc_xenstore_evtchn(struct domain *d) int rc; alloc.dom = d->domain_id; - alloc.remote_dom = hardware_domain->domain_id; + alloc.remote_dom = xs_domid; rc = evtchn_alloc_unbound(&alloc, 0); if ( rc ) { @@ -745,16 +754,10 @@ static int __init alloc_xenstore_params(struct kernel_info *kinfo) struct domain *d = kinfo->d; int rc = 0; - if ( kinfo->dom0less_feature & (DOM0LESS_XENSTORE | DOM0LESS_XS_LEGACY) ) - { - ASSERT(hardware_domain); - rc = alloc_xenstore_evtchn(d); - if ( rc < 0 ) - return rc; + if ( (kinfo->dom0less_feature & (DOM0LESS_XENSTORE | DOM0LESS_XS_LEGACY)) + == (DOM0LESS_XENSTORE | DOM0LESS_XS_LEGACY) ) d->arch.hvm.params[HVM_PARAM_STORE_PFN] = ~0ULL; - } - - if ( kinfo->dom0less_feature & DOM0LESS_XENSTORE ) + else if ( kinfo->dom0less_feature & DOM0LESS_XENSTORE ) { rc = alloc_xenstore_page(d); if ( rc < 0 ) @@ -764,6 +767,30 @@ static int __init alloc_xenstore_params(struct kernel_info *kinfo) return rc; } +static void __init initialize_domU_xenstore(void) +{ + struct domain *d; + + if ( xs_domid == DOMID_INVALID ) + return; + + for_each_domain( d ) + { + uint64_t gfn = d->arch.hvm.params[HVM_PARAM_STORE_PFN]; + int rc; + + if ( gfn == 0 ) + continue; + + if ( is_xenstore_domain(d) ) + continue; + + rc = alloc_xenstore_evtchn(d); + if ( rc < 0 ) + panic("%pd: Failed to allocate xenstore_evtchn\n", d); + } +} + static void __init domain_vcpu_affinity(struct domain *d, const struct dt_device_node *node) { @@ -899,17 +926,13 @@ static int __init construct_domU(struct domain *d, rc == -ENODATA || (rc == 0 && !strcmp(dom0less_enhanced, "enabled")) ) { - if ( hardware_domain ) - kinfo.dom0less_feature = DOM0LESS_ENHANCED; - else - panic("At the moment, Xenstore support requires dom0 to be present\n"); + need_xenstore = true; + kinfo.dom0less_feature = DOM0LESS_ENHANCED; } else if ( rc == 0 && !strcmp(dom0less_enhanced, "legacy") ) { - if ( hardware_domain ) - kinfo.dom0less_feature = DOM0LESS_ENHANCED_LEGACY; - else - panic("At the moment, Xenstore support requires dom0 to be present\n"); + need_xenstore = true; + kinfo.dom0less_feature = DOM0LESS_ENHANCED_LEGACY; } else if ( rc == 0 && !strcmp(dom0less_enhanced, "no-xenstore") ) kinfo.dom0less_feature = DOM0LESS_ENHANCED_NO_XS; @@ -1156,7 +1179,15 @@ void __init create_domUs(void) if ( rc ) panic("Could not set up domain %s (rc = %d)\n", dt_node_name(node), rc); + + if ( d_cfg.flags & XEN_DOMCTL_CDF_xs_domain ) + set_xs_domain(d); } + + if ( need_xenstore && xs_domid == DOMID_INVALID ) + panic("xenstore requested, but xenstore domain not present\n"); + + initialize_domU_xenstore(); } /* diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 0a329f9f5e..270a6b97e4 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2408,6 +2408,8 @@ void __init create_dom0(void) rc = construct_dom0(dom0); if ( rc ) panic("Could not set up DOM0 guest OS (rc = %d)\n", rc); + + set_xs_domain(dom0); } /* diff --git a/xen/arch/arm/include/asm/dom0less-build.h b/xen/arch/arm/include/asm/dom0less-build.h index 5864944bda..b0e41a1954 100644 --- a/xen/arch/arm/include/asm/dom0less-build.h +++ b/xen/arch/arm/include/asm/dom0less-build.h @@ -9,6 +9,7 @@ void create_domUs(void); bool is_dom0less_mode(void); +void set_xs_domain(struct domain *d); #else /* !CONFIG_DOM0LESS_BOOT */ @@ -17,6 +18,7 @@ static inline bool is_dom0less_mode(void) { return false; } +static inline void set_xs_domain(struct domain *d) {} #endif /* CONFIG_DOM0LESS_BOOT */ From patchwork Wed Apr 16 21:29:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 14054485 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 BB1CCC369CD for ; Wed, 16 Apr 2025 21:29:49 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.956559.1349951 (Exim 4.92) (envelope-from ) id 1u5AK2-0002Od-Ch; Wed, 16 Apr 2025 21:29:30 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 956559.1349951; Wed, 16 Apr 2025 21:29:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5AK2-0002OU-9g; Wed, 16 Apr 2025 21:29:30 +0000 Received: by outflank-mailman (input) for mailman id 956559; Wed, 16 Apr 2025 21:29:28 +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 1u5AK0-0001ht-3f for xen-devel@lists.xenproject.org; Wed, 16 Apr 2025 21:29:28 +0000 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2061a.outbound.protection.outlook.com [2a01:111:f403:2414::61a]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id dea5cd68-1b09-11f0-9ffb-bf95429c2676; Wed, 16 Apr 2025 23:29:26 +0200 (CEST) Received: from BN0PR03CA0022.namprd03.prod.outlook.com (2603:10b6:408:e6::27) by MW4PR12MB5642.namprd12.prod.outlook.com (2603:10b6:303:187::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 16 Apr 2025 21:29:20 +0000 Received: from BN3PEPF0000B374.namprd21.prod.outlook.com (2603:10b6:408:e6:cafe::f4) by BN0PR03CA0022.outlook.office365.com (2603:10b6:408:e6::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8632.33 via Frontend Transport; Wed, 16 Apr 2025 21:29:20 +0000 Received: from SATLEXMB03.amd.com (165.204.84.17) by BN3PEPF0000B374.mail.protection.outlook.com (10.167.243.171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8678.4 via Frontend Transport; Wed, 16 Apr 2025 21:29:20 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:19 -0500 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Apr 2025 16:29:18 -0500 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: dea5cd68-1b09-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xjMj6+9yduWFLfVPPxkrysQM5lCtK9EAw5Twr+o7Opd21BpfnsPJztP+bDRH7GhzysVPw0I/DVaf8++TPPtydG0tq5A47w4ngHmwVGLq/+pnqGxG4E4RZ8iCFiUCROiuMGzruTgXsOTvJZz+U0Ma8/6YAO6LU7Z920JvuEXPZzovBj5lnlla0jz4HJ2UuL+huYRv6AsbdUpkap4f+a1oc+atPYod0zICYWSuHvkeRcxqSeos4jpM2gFJWW3cEmUg6gWPug12W4NF/qsruJ5o9sf3wCr/AzurjlpPHZ0374NTQ33Mc5i4Pyf0MU3ZY4Y2c3S5fAheAlUCzUC22QQQdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xiL4AJODaDRCE3AdKeSCgiRT3UDtdESaezafVTvalCU=; b=k5ZnV4WrsGYvZmIgixeMqnNJILdLmZBsf6wvQ+ZZAGNIKoEuQy9QOK6KbzsiHCCd6Coukw8DAohQuzv0SxuMKym4/RW/J6nQfkiK31T7gqi5bjAqd6SYMQNGliFVi1uewYiqubRJFsDnJKbMv1dIKDnROMTNIs3Nij3Trl8IlKsvxns9kd+imO7TIaEg5WukjBkkIBbpqTY9sPBt2APqjM2Rohb/ft8rY2teLynt28jeiEs27834d99T5uTWRdaeX672Wjmjx/PXoccqlTWYnnwNXfEdSTFk1EKFb/2R6kBN8oRbYfwqglyCufp6RVsruMag1lxgSPKVjghJZtk3Cw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xiL4AJODaDRCE3AdKeSCgiRT3UDtdESaezafVTvalCU=; b=wJy9Jtp+XmDeGYZMt3n0cQpvdk1o4QaIOPpKw7uCi9MQRAXM4/nUxWBjepz8kpm4k2KCeFPivebj3TSGciR6F6ATZw9wDT0+B4jtf/D9BUo0AA2zVNbap77ut7R8fmyjhndwrUUVOMrt8V0zTqMWSbvcExhZ8X8DmZZhvcP3ko0= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C From: Jason Andryuk To: CC: Jason Andryuk , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , "Volodymyr Babchuk" , Andrew Cooper , Anthony PERARD , "Jan Beulich" , =?utf-8?q?Roger_Pau_Monn=C3=A9?= Subject: [PATCH v5 4/7] xen/arm: dom0less seed xenstore grant table entry Date: Wed, 16 Apr 2025 17:29:08 -0400 Message-ID: <20250416212911.410946-5-jason.andryuk@amd.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416212911.410946-1-jason.andryuk@amd.com> References: <20250416212911.410946-1-jason.andryuk@amd.com> MIME-Version: 1.0 Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B374:EE_|MW4PR12MB5642:EE_ X-MS-Office365-Filtering-Correlation-Id: 501d2378-0209-4d90-892d-08dd7d2dbfda X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: rKAuwave4g7iHqiEIStK3hBZZFjD4A3UP7ASoAgCiJbtGWfK0HNTGDu5hesU0cTPInke/MwYaey0PQmPrU9BAXCkTRq/JzWJAvt+TbyAWrU6+1AQAzI5t0VvCiQ0JId+hrdFGFbwde43/kA+g1ojw/dg7DAo/uEU0vqhxIb6im/YY2DMFHvs8ZvP8OWAEzNhnKqwjVF1CHlFFR87t3vS5tbacqD3F1dC3Vu0c1swcHc8QnaiCUmcfM4LatFYmjbb+pykXLLeXKBrtGdA5SrK2wvTSBgtNkXGrPIRKYxKrfd9/yDbDwoDIIUFBfk3jhM88BBdQOIn0SbktdpKqcMT1DbmInc8fRlYuBsoVXDXRwnrdgDIGB6/HvIdswHHRZY5cdYiopiEpKiusePCLB810IIRZKbbw+54V7gjpBHJS1FzPvBe4AUF8IBb7Dyh8/RV6c2lyrLCA0Cln7l+LgJNXTdk2Xs2S9L+9Rd9OaRDUcvVmiIVXagqCHVw+9+VC0vTJcsarEsLw167BCmmDu+lziBtapLnseDMgBcvXptInHpVlaaNtdN6pCfIk49GMS47XRRTdCGrsT+bYeaP5Ov6/QA6QuK0TzLqBngdIeMN9z/e6c0v5+cdWuRv+YGHAdBErrBBrJFv77IwkB0MogWHZp2ECARDv91VgOXJ4dt5qQuBKW1fxrxDcVFx2itbKJOS+JyLhvLQLD6Uiq0ApsuY3DosICzvZJQ0WoYinoJyug+hLyLqoxt6lLkrEQ0SNwEWG7tdg9jXy+BfuksyawOIUdh3wSHW7ny1RTJiAeALTm9EizJHw95+Jfp4PSsX0MKWS4yr3l0kSiA6RBySXNku97ZyPLqHed7+YvDsfIbDel8xoFGp++gsjBD+8mWcFbfuaA7omQYFgG4Tj6fS4PfwWBqDFPUKph7qd0YrXX34GvfkTwTY2Yt3pVgbXq72MWkiNBY3Sd7PXY2EQ3m/EhJ7lCEf7MwheCskb8vksCesrtqq+HEXXvnNUjz1IxyYsXqpD0iZIagHx/BZ5LfS2g2EFyjxDBZTtHgQo8Cemis4zMlTfgQLzMQrcz3rDTm72fYU/eQfRSViIcikFNrEbw9MrBz79DnlfBgK0yxvr0d54oVdCn8Ygxk9ZCZdJW+kUBr1DWKDNjAL2jb0zSLXMTHNyzIjQcEXpfADBCL/MEaTJg8/tL7BX3iQkhTnKgt7EC6gdG4KsFM06whTWDGftmufznaC3qqS/yuB5P/lX4UOv+X7ATGklscBql819VlxsDS/fzdLWBx7siiglM1tWi9D7BWoIQCsUt9ZKBWiJ7KsAbqaFO8pl3reGSkXtjAaxlUsQRj9/Z802NjjuDK8WEzV90uHkICi1mbxTws7/lFXl71p3JrLJiRKXovDbzs7ogdBCdHHq5jr1dui78OkANFJvLNG2lyyoQOC5XplzaNXZmHxoEa/dn7VPg1FaakfQ1Tw7J1hZnrZI+tIE2zGoqXVcS96jpFApqKKiXxfQCVmHtZWlk6O6JycBsbC1GRXIbxD X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 21:29:20.1807 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 501d2378-0209-4d90-892d-08dd7d2dbfda X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN3PEPF0000B374.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB5642 xenstored maps other domains' xenstore pages. Currently this relies on init-dom0less or xl to seed the grants from Dom0. With split hardware/control/xenstore domains, this is problematic since we don't want the hardware domain to be able to map other domains' resources without their permission. Instead have the hypervisor seed the grant table entry for every dom0less domain. The grant is then accessible as normal. C xenstored uses grants, so it can map the xenstore pages from a non-dom0 xenstore domain. OCaml xenstored uses foreign mappings, so it can only run from a privileged domain (dom0). Add a define to indicate the late alloc xsentore PFN, to better indicate what is being checked. Use UINT64_MAX instead of ~0ULL as the HVM_PARAM field is a uint64_t. UINT64_MAX is not defined, so add it. Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini --- v5: Add R-b: Stefano v4: ASSERT gfn against UINT32_MAX and use < to avoid INVALID_GFN on 32bit builds Stefano gave R-b, but holding off addition because of changes Use IS_ENABLED(CONFIG_GRANT_TABLE) instead of wrapper Add XENSTORE_PFN_LATE_ALLOC Add UINT64_MAX v3: Expand commit message about C vs. OCaml xenstored. Remove __init and flags from gnttab_seed_entry() Change frame to uint32_t ASSERT gfn fits in a uint32_t Rebase on mem paging changes v2: Tweak commit message Mark gnttab_seed_entry() __init and put inside CONFIG_DOM0LESS_BOOT Add ASSERT(!d->creation_finished) and ASSERT(gt->gt_version == 1); const struct domain & struct grant_table --- xen/arch/arm/dom0less-build.c | 10 +++++++++- xen/common/grant_table.c | 14 ++++++++++++++ xen/include/xen/grant_table.h | 4 ++++ xen/include/xen/types.h | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index bb8cc3be43..188ef40b52 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -20,6 +20,8 @@ #include #include +#define XENSTORE_PFN_LATE_ALLOC UINT64_MAX + static domid_t __initdata xs_domid = DOMID_INVALID; static bool __initdata need_xenstore; @@ -756,7 +758,7 @@ static int __init alloc_xenstore_params(struct kernel_info *kinfo) if ( (kinfo->dom0less_feature & (DOM0LESS_XENSTORE | DOM0LESS_XS_LEGACY)) == (DOM0LESS_XENSTORE | DOM0LESS_XS_LEGACY) ) - d->arch.hvm.params[HVM_PARAM_STORE_PFN] = ~0ULL; + d->arch.hvm.params[HVM_PARAM_STORE_PFN] = XENSTORE_PFN_LATE_ALLOC; else if ( kinfo->dom0less_feature & DOM0LESS_XENSTORE ) { rc = alloc_xenstore_page(d); @@ -788,6 +790,12 @@ static void __init initialize_domU_xenstore(void) rc = alloc_xenstore_evtchn(d); if ( rc < 0 ) panic("%pd: Failed to allocate xenstore_evtchn\n", d); + + if ( gfn != XENSTORE_PFN_LATE_ALLOC && IS_ENABLED(CONFIG_GRANT_TABLE) ) + { + ASSERT(gfn < UINT32_MAX); + gnttab_seed_entry(d, GNTTAB_RESERVED_XENSTORE, xs_domid, gfn); + } } } diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 6c77867f8c..e75ff98aff 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -4346,6 +4346,20 @@ static void gnttab_usage_print(struct domain *rd) printk("no active grant table entries\n"); } +#ifdef CONFIG_DOM0LESS_BOOT +void __init gnttab_seed_entry(const struct domain *d, unsigned int idx, + domid_t be_domid, uint32_t frame) +{ + const struct grant_table *gt = d->grant_table; + + ASSERT(!d->creation_finished); + ASSERT(gt->gt_version == 1); + shared_entry_v1(gt, idx).flags = GTF_permit_access; + shared_entry_v1(gt, idx).domid = be_domid; + shared_entry_v1(gt, idx).frame = frame; +} +#endif + static void cf_check gnttab_usage_print_all(unsigned char key) { struct domain *d; diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h index 50edfecfb6..297d7669e9 100644 --- a/xen/include/xen/grant_table.h +++ b/xen/include/xen/grant_table.h @@ -33,6 +33,10 @@ struct grant_table; +/* Seed a gnttab entry for Hyperlaunch/dom0less. */ +void gnttab_seed_entry(const struct domain *d, unsigned int idx, + domid_t be_domid, uint32_t frame); + #ifdef CONFIG_GRANT_TABLE extern unsigned int opt_gnttab_max_version; diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h index e8d419b954..73ddccbbd5 100644 --- a/xen/include/xen/types.h +++ b/xen/include/xen/types.h @@ -44,6 +44,7 @@ typedef __UINTPTR_TYPE__ uintptr_t; #define UINT8_MAX (255) #define UINT16_MAX (65535) #define UINT32_MAX (4294967295U) +#define UINT64_MAX (18446744073709551615ULL) #define INT_MAX ((int)(~0U>>1)) #define INT_MIN (-INT_MAX - 1) From patchwork Wed Apr 16 21:29:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 14054481 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 A47F9C369C9 for ; Wed, 16 Apr 2025 21:29:44 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.956561.1349963 (Exim 4.92) (envelope-from ) id 1u5AK3-0002Wb-2V; Wed, 16 Apr 2025 21:29:31 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 956561.1349963; Wed, 16 Apr 2025 21:29:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5AK2-0002V3-QJ; Wed, 16 Apr 2025 21:29:30 +0000 Received: by outflank-mailman (input) for mailman id 956561; Wed, 16 Apr 2025 21:29:29 +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 1u5AK1-0001ht-EN for xen-devel@lists.xenproject.org; Wed, 16 Apr 2025 21:29:29 +0000 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on20621.outbound.protection.outlook.com [2a01:111:f403:2416::621]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id df24c58f-1b09-11f0-9ffb-bf95429c2676; Wed, 16 Apr 2025 23:29:27 +0200 (CEST) Received: from DM6PR02CA0121.namprd02.prod.outlook.com (2603:10b6:5:1b4::23) by MN2PR12MB4333.namprd12.prod.outlook.com (2603:10b6:208:1d3::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.21; Wed, 16 Apr 2025 21:29:22 +0000 Received: from DS1PEPF0001709D.namprd05.prod.outlook.com (2603:10b6:5:1b4:cafe::27) by DM6PR02CA0121.outlook.office365.com (2603:10b6:5:1b4::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8632.35 via Frontend Transport; Wed, 16 Apr 2025 21:29:21 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF0001709D.mail.protection.outlook.com (10.167.18.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Wed, 16 Apr 2025 21:29:21 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:20 -0500 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Apr 2025 16:29:20 -0500 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: df24c58f-1b09-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LYfT2IMpD4aOcagAuuod8/f0c9k5AJ+9uABeB3XxTjfNGzhVabR62kcNiub/HV6LsmNOfz7UU2X9wmqBoMrjNqiI5NFHZ9SX3/xPIwu6hzbjDK+eEzveHyMrZbCNXGEpuEngQoLUNbUQksdRU890sWGrJrbIT/YK7YeWPYH1holuyvAMBOWkqmgvtQ3U/Yz0sXq7uzJdEwVcsbgWsEM+BPi1khj2s8uS3ltDXMjhR+kTb9/i3bKSw6XfZyq9tKDXELuA0mUrGF+Xafqm+e9ejh2wG+UgLjaD5BP64WJ2nguzOM15c6iCzx6XVCBJRuDOUABCio9zP+bwmyMb16NSSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BayIoS8WcfscVo3mfe5z0RwTBcrAxvvhaDemFCv9sXo=; b=iBTf3P1WPsz7DiwyNVUHuB4PhokL0rG1Bh8xGWrm3NB41OwmPrVrokhcfWYvLaSGqrw1oIU7snwb5CdoA5+WwjJin77zW+DjEiB5P7zhm6IwmSi9nC+VtmZfJPWGrvbw3NrepRmBr0uPsfuqwmFgjJKoqQy74qhLk9y58RcYAzisDWTxfNDchJYmcn0M7WWYega2U+Q5vhphUZ27nLwu9Tj6fm2ht+C+KIHPn+pb2AgXGqQViBLK/fOmxJaV85bFB1Ek+fNo0air57jocBmaDjnMQcncR/B+miWxO/uZ+d57qtoD2dTnCq9VWXJiMgGTafYirs1wM7HJ8nWj1aM1QQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BayIoS8WcfscVo3mfe5z0RwTBcrAxvvhaDemFCv9sXo=; b=FQelfhWFVYnZrb28/FqX9OtAhXZzoTToLNM/HAEYBeXo2HnBGSqL6CyygOczjFhb0pW6eKCRnom5hphsUZ0YZQPg1UJbY+wK01e4YsEdzc9vqh6gYLtLjvGOPpRAALvOXB1AsU7nCwGYaPPDoGy5MjWbmgajw8PvYUMxOy6wuZc= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C From: Jason Andryuk To: CC: Jason Andryuk , Anthony PERARD , Stefano Stabellini Subject: [PATCH v5 5/7] tools/init-dom0less: Only seed legacy xenstore grants Date: Wed, 16 Apr 2025 17:29:09 -0400 Message-ID: <20250416212911.410946-6-jason.andryuk@amd.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416212911.410946-1-jason.andryuk@amd.com> References: <20250416212911.410946-1-jason.andryuk@amd.com> MIME-Version: 1.0 Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709D:EE_|MN2PR12MB4333:EE_ X-MS-Office365-Filtering-Correlation-Id: 70dd5be5-99f4-4f74-b7e9-08dd7d2dc069 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: CIafX6FuezUTVE2o1HOdGr6rJprR0cqQurQkxQk0DFjwuFbRu3EnfOqAwqrCl7f2RxD0yOotEIhI9FU+W2L1W+STyIQGUwKp6c0IIzooSULMMyn+Djqe8SvjhfotUTM4KGDIL6NVwtUIVJ3yW7HlcZVwcX4qYKUdSMlZBrilFeTxiEfX6CDMmDmx4ddsgiiT9mNVu+vXUxMMtI19pkqt+HryzAhFQfOtpOoTHfxV65QR78IpCvNRpCndPVkpmw2+ft5xviBSU8WpIMiwV64MffyS3ztKmK29ePPZO+nNaE/EkWEGw3YYMT2j72aU+z13dmC9UJ00vP4wDqwemJXmvS1Imi0Ln6qPoV25h6MqPjlQoZwXQOEBbPa7v9C0DDOK4GlyaLGeGVlRp4FObsITrbOILgn6WfZAfMkBIaODMAjmDJ6tj1v9iZkAJh+9rleY/RdBwnf6jNVhgy0TysPpK1ChwnMx7iGtBGhnrklSJyd0tPgY47/8b79pnByMBA+5mpkAmpo3vNpGF6mn4meQCQ9c7rLum5177r4pI9SfX7I7rT1FiHHMFPWxivE2t9X4V2+glWbmrJiyKJ118NyOW6M6KKdrmnKjVX/U94Fj75U7LNFvzAhbFNynzEBy1t5AgB0WAbDlj7j/So74qSbnQd2ox9oj3Rj4LnmmeDpy4/pqYGmUBFD12xsI5Qv0H9BDEEkYendhJl7FWp98+Rk4c31GUgesNlPlAySM0SJI6jOwssGLAirY6cuT9W5Is/FOofV/+APdwN1W6BUaxbz0SarQ82pnzieMj9rUGjs2vKzMQrN4lEiMVx4WOiAKhOZzs+LOmQITS65UX1ILpv5KdbwYFaj6XFb4zPz6uTK+Iq7NMrf+TCsLxRSDQw2QY4O3K+JDqE9uBG6md3kFHIZYr8+SpEx+yd7TJt4SSi3S4Z+6ygYcWVVGZsKRoKHflGY0OgnEpa9Jd++AqcDl8ijgkrSZrZkZj2szceD9ZWtgu9KHv3Sq/YDX1kMCCV38p/rgUhjSxirad1jRmFQJiOiyk0qz28116dmO8Vwom/AjWkIlZGU9F60u+C+JdFjwvI8LwbtaSm0nglC+2XzBNNhnL0R9JFwNg5IYJYSfhLDPlF4XhHYhVQkutiTj7ly24zk0J45zOWxQS1Fp7Cu8Gy7KM08Ny2Gy2zG2IBp9SKy2cXmA57PoWH26naXBvD3InMakHlQ1WivqkPoDe2TzsiiyD2iWvmejDYpZzdAqYTCSZ56Q5Qzx6DNMsW8D9jk9EtZ/r+IJk0ysgAhEhvE+gcDfuzQdfMapxBXppxObeo/6TdkFG4Skw8I318Sy5stENhvKUz859+Q4FOQolvENba0Jb1VHcbBeKC0nVie9p4tsnSs5Qk3brrAteKoWRdMH36x7p872wzj7XLUxTWuUEaFKfehtfoZ1726z+/KERl55eSdSq8xzqe0nN/k8g0COY08qK+eB4Wr8fCvDsp7KlKSDveD6kpnfgSsOusQGILGzqOQ3Go+w/YtGkQ7Aty4HUXWS X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 21:29:21.0695 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 70dd5be5-99f4-4f74-b7e9-08dd7d2dc069 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709D.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4333 The hardware domain is unable to seed a control domain, but we want the control domain to use xenstore. Rely on the hypervisor to seed dom0less grant table entries for Xenstore, so this seeding is unnecessary. However, that only works for the new xenstore late init. The legacy protocol which uses init-dom0less to populate the page still needs to seed the grant. Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini --- v5: No change v4: Add Stefano R-b --- tools/helpers/init-dom0less.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/helpers/init-dom0less.c b/tools/helpers/init-dom0less.c index 17579fe2e8..91edf17b6c 100644 --- a/tools/helpers/init-dom0less.c +++ b/tools/helpers/init-dom0less.c @@ -286,12 +286,12 @@ static int init_domain(struct xs_handle *xsh, xenstore_pfn); if (rc < 0) return rc; - } - rc = xc_dom_gnttab_seed(xch, info->domid, true, - (xen_pfn_t)-1, xenstore_pfn, 0, 0); - if (rc) - err(1, "xc_dom_gnttab_seed"); + rc = xc_dom_gnttab_seed(xch, info->domid, true, + (xen_pfn_t)-1, xenstore_pfn, 0, 0); + if (rc) + err(1, "xc_dom_gnttab_seed"); + } libxl_uuid_generate(&uuid); xc_domain_sethandle(xch, info->domid, libxl_uuid_bytearray(&uuid)); From patchwork Wed Apr 16 21:29:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 14054484 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 A6162C369CB for ; Wed, 16 Apr 2025 21:29:47 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.956560.1349956 (Exim 4.92) (envelope-from ) id 1u5AK2-0002Qf-Mj; Wed, 16 Apr 2025 21:29:30 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 956560.1349956; Wed, 16 Apr 2025 21:29:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5AK2-0002Q3-Gr; Wed, 16 Apr 2025 21:29:30 +0000 Received: by outflank-mailman (input) for mailman id 956560; Wed, 16 Apr 2025 21:29:28 +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 1u5AK0-00024x-Lv for xen-devel@lists.xenproject.org; Wed, 16 Apr 2025 21:29:28 +0000 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2061b.outbound.protection.outlook.com [2a01:111:f403:2414::61b]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id df8c79c6-1b09-11f0-9eaf-5ba50f476ded; Wed, 16 Apr 2025 23:29:27 +0200 (CEST) Received: from DM6PR02CA0123.namprd02.prod.outlook.com (2603:10b6:5:1b4::25) by DS5PPF7856D51FE.namprd12.prod.outlook.com (2603:10b6:f:fc00::654) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.35; Wed, 16 Apr 2025 21:29:23 +0000 Received: from DS1PEPF0001709D.namprd05.prod.outlook.com (2603:10b6:5:1b4:cafe::d5) by DM6PR02CA0123.outlook.office365.com (2603:10b6:5:1b4::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.15 via Frontend Transport; Wed, 16 Apr 2025 21:29:23 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF0001709D.mail.protection.outlook.com (10.167.18.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Wed, 16 Apr 2025 21:29:23 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:21 -0500 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Apr 2025 16:29:21 -0500 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: df8c79c6-1b09-11f0-9eaf-5ba50f476ded ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=F91MAoPq6kxDQ3wwQaROs0pZgIKsYVFLAwoy8iKciY4epILCzHaU+1b50d0EXYkje9ttT1kL60ZeQuEcgIhyf9lMWsGMmBOMaYs8od3h86yfBqCSn8lTTsBxBjCbgll0Fhk4DWI4k1JIBDQ5e2twhxGBn91A8dZ0y7jUaoXc6vzHvIqfTgeL1pVIvUCUSv39oCO/6x9AzCCNmK07MiK0pQzLBLl+EX7vTF56v5c4lymh2Lgg6vadkdtHUbcq7sDqfU7/tSea08268APwvRVqMGfNS3btNFo4LnFVTXhFrZaxy18LFR8Gf0S/hEpmlAe0ym+INkb/x2iHGx6tQXFDRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HEhCn/D2ABiwChVcgLzJo/1vunmuVBcfpq/kh2xui/g=; b=sIEBC0olEYqOWabKmUJCkr2WSaVOCjsmdZ4VMJOHQ0SbNqug1Sh6umDtqBHg92o20Ebuo407zXUfyXm570DJW38YHRAOrlidWurfk2KEMrfdKqEgZ0qHdXqTuH6P0IHqVWTLKnHuEC0PNvI0HRHCcFqsywq1yA85JHkdTsVUPQS2WZ67E+o5q/xKGRKCyHjqR9G05HQnlNAVVGK9WrG8EFI5vTTH2NUBcyO24zdbNqKEkQmvTPpUH3LlOO+Yaa60c2fkawtoGthkyZTaGA+KgxRDEc4dX7L1L44dcHnT6v6i9laHwiu+khThB9Ao/+p0q4n58zXAEva2Bf+Dyy74dA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HEhCn/D2ABiwChVcgLzJo/1vunmuVBcfpq/kh2xui/g=; b=ftt9z2GmUcLAbuWV3D9pCj6kFeskMPfDOY3saj0tMC8/yfFj9kitXJuo+FDnOMaYm4zhaQNgXAXso1R7h543CJbNO3j+VsMN2Wat7whtVFpUDxaCRjgoRbBEF1crfdPh4/syKxegJg5J8bm7SNX0hqrQI5LvFNP/7RMPFzvWlAU= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C From: Jason Andryuk To: CC: Jason Andryuk , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , "Volodymyr Babchuk" Subject: [PATCH v5 6/7] xen/arm: dom0less use has_dtb local variable Date: Wed, 16 Apr 2025 17:29:10 -0400 Message-ID: <20250416212911.410946-7-jason.andryuk@amd.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416212911.410946-1-jason.andryuk@amd.com> References: <20250416212911.410946-1-jason.andryuk@amd.com> MIME-Version: 1.0 Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001709D:EE_|DS5PPF7856D51FE:EE_ X-MS-Office365-Filtering-Correlation-Id: d970b719-5f44-4dc6-20ac-08dd7d2dc196 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: HXUj9RsYmwtV2kjb5DJgi6Cand10cd7Kz526g83bUae7qqN8vavGXVU5t6fo71FanJrGi6O00sGXt/rEGkARBii4gJ71dIj7VjddBnQ3W+0GPm470n1G1PmdJJYeG0Bk5f4xohlySL70qUrvpe+rvhvrXm9uM/Wackn/uu+iTQusCLzfzoRfujn94etP+UGjztj7p0UPcPhqTlvAQ/KcvZh6INoRoasGK7Es6HlkOHKgyftAcJ6LcOVRyfJ4MFPJqfQ4RUT3GL/TzrvYA54Ioh/sJmDUR7ENf1SijePxb5kyC+P6hmGObKZyCJ4kS0NDsHde8CuimQ8smAuSPlvzQa2c160Z9A5rRmeO998kOD7NKeo4g2gWQ7169zq+5P32gyvMKT6OxO49zNZ0++XiMDNTq3/5ZbvKQ7SWOSaY11VXIN2SKjERq8dyfy/wXdDz+5YA1v1eCcuX+6ZXJG7BH8VFJT7YrBDM2gjbUHbPnmJbGtEA1bMNcWtooNFO+zofgxH3yYjtyeEJ0JO06RY4D3f0wXDIvHvS/xGCuWsjHZQNN8/kxzNNALxv44zynRskwYi0CeNvK/zEA48roKZXMgb2JV5UHTnJ5mDUCrsaiaoRTS2SlUlwADyzEiJRQFNz12ZxCi5gtlPU/hsJtk5UV1vk6x2fBjmXO0341aZZ8bm3qNQsWVj3k31+IinXfDgGBEBTvgSak3+osZ19OjlurUFTVej1o/20f6sIBYsNvbgVTTB81/EPm13j3WylZMXhgjgYorLlQ4HryEm6TNeqbJ9DOFK9R/KEhTUmz77lOq71NepfSdsNia1KrXFGhhcVFfKGeU2k5MQ3M1LOv7h4yLW8j416XB7+o8KxqIhzLQZnaOjnJaArbK4Nr7Bc/DBOY0ss2nqvceO6UdX0jeavQ0hVH8p8WpoUybAEucXi0zwR4fWP66yFWHqtAv2hri1drxXIPEbeJ3mbLi6zzrBpM6+RJ1SsB9wWMiXvYmdQiJgyQa0hlsC63dCQoqlhz9DMJnD0Z8UJp6SBV6E3usm6wGe9tIEUJfalkiHVrKsv60H4SOYY+jG1DbT4brLiwR90DgMXUnCOh6jVzvLtXjIcToLK+OPiNBQq/3UEBT+D1ZfF3pY+NHVfLydRpzd0akD2d7hq9db1VHfLeBaZaYOGYvbhBnP63E3gRxm16ziIEIhYbcAHJowu0sZNWG2drrsHltvfBtDz7ZeyTu8Gmev9GZiDj6qZXDBn472xOjS6I3wlIzxSdE8zLyi/qpe+0mUQC/5fbjz7jfinVdO0k5hQcEq01GHWKRkA6n+VbrGtF15p3yw9jceYSYCaCOzB/dn+MsQTJP7Wn4MtTWWae6qhcrjXTYF8rMVSEaJ8tlXlQALegq0TOf1OWffkB8+dskF2cRE3iWJUA2xcAME0Ems5NQzLfwxLRjLLY2C9AUx/bwuXmq7C45mxk53NenbRSb7MB5Hn8ykTT3y48q7ng6qojmm9eLlUWNf06VNEJHXCVMBjRRMIuYLFTdNnbi/m19Gu X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 21:29:23.0382 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d970b719-5f44-4dc6-20ac-08dd7d2dc196 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001709D.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS5PPF7856D51FE Store the result of finding a "multiboot,device-tree" node. This will simplity adding hardware domain checks. Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini --- v5: No change v4: Add Stefano R-b v3: New Could be squashed into the next patch, but this helps make the next one cleaner. --- xen/arch/arm/dom0less-build.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 188ef40b52..50d2d3e4e4 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -1033,6 +1033,7 @@ void __init create_domUs(void) .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version), }; unsigned int flags = 0U; + bool has_dtb = false; uint32_t val; int rc; @@ -1067,9 +1068,10 @@ void __init create_domUs(void) !strcmp(dom0less_iommu, "enabled") ) iommu = true; - if ( iommu_enabled && - (iommu || dt_find_compatible_node(node, NULL, - "multiboot,device-tree")) ) + if ( dt_find_compatible_node(node, NULL, "multiboot,device-tree") ) + has_dtb = true; + + if ( iommu_enabled && (iommu || has_dtb) ) d_cfg.flags |= XEN_DOMCTL_CDF_iommu; if ( !dt_property_read_u32(node, "nr_spis", &d_cfg.arch.nr_spis) ) From patchwork Wed Apr 16 21:29:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 14054483 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 DDA52C369CC for ; Wed, 16 Apr 2025 21:29:48 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.956563.1349991 (Exim 4.92) (envelope-from ) id 1u5AK6-0003Ot-Rn; Wed, 16 Apr 2025 21:29:34 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 956563.1349991; Wed, 16 Apr 2025 21:29:34 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1u5AK6-0003Ob-ND; Wed, 16 Apr 2025 21:29:34 +0000 Received: by outflank-mailman (input) for mailman id 956563; Wed, 16 Apr 2025 21:29:33 +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 1u5AK5-0001ht-IJ for xen-devel@lists.xenproject.org; Wed, 16 Apr 2025 21:29:33 +0000 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on20613.outbound.protection.outlook.com [2a01:111:f403:2406::613]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e1bd295a-1b09-11f0-9ffb-bf95429c2676; Wed, 16 Apr 2025 23:29:31 +0200 (CEST) Received: from CH2PR05CA0012.namprd05.prod.outlook.com (2603:10b6:610::25) by DS7PR12MB8202.namprd12.prod.outlook.com (2603:10b6:8:e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.22; Wed, 16 Apr 2025 21:29:28 +0000 Received: from CH2PEPF00000148.namprd02.prod.outlook.com (2603:10b6:610:0:cafe::e8) by CH2PR05CA0012.outlook.office365.com (2603:10b6:610::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8655.10 via Frontend Transport; Wed, 16 Apr 2025 21:29:28 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by CH2PEPF00000148.mail.protection.outlook.com (10.167.244.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Wed, 16 Apr 2025 21:29:27 +0000 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Apr 2025 16:29:23 -0500 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Apr 2025 16:29:23 -0500 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: e1bd295a-1b09-11f0-9ffb-bf95429c2676 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X7iuRiEVa3tmrzgNjMsEMoMBcsjWESCz19rWXneH+v9tboejp7PH0jI1Sp1qm70BoP1MX6r/mhnKs7eAEBznV8D+S2IRGKeOjDIt5W4snNKm4gsiqLJjABkKYL5rz3uJiXUl8NhcrdZ10HtpK4Wpe9vZn2Cm3jJFMn0j7FEKoNsq72BG2zrEs9k2Cw+Gebegi+GvSb+VD1xrIDIh+lMODnfXtnlSUCl7zzwA789QevrZFJxNf4wKE1tRVIds5UyNMhboMfzDoua1cbKSSD/p3s/rPhRq0ZbFkGPYGsuPnu5OStcoTkm6EVrDRnhxVyvnvFPxBBPSI9p4ywVpj2fz8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=09rwyClN5j/y7PazveIKBFlQyjWEK4qhJSYEP0CrVFo=; b=NvqwYDIkNDGYTNRvgLyL+z7GAtfK2A/ToGCLt0dQxy2v9YACp5waH3ehuX/tlvZ0I6qDdm/isQ35gapOvfayyFgng6xnuMlygalkcuaGOlGcGi119BxCQgNnZtIC19SDIKGTbm26bZtWVBKh676u0I4pxWaK4Ghby6OobETuwa+Fo1j6mzSke+Uu2jKFaYoUMO2UV1QcbwEF+FwJguBxqLDJSIBqt4P8P+BUq9SWaoGoIHnRq00woUNnaELanyoWwg98BFsX2r6kYOfloGCy6k5GJ3pZ6FIOqXp/Or8Scc7l2wKAwXuZn1c/fvNxMOsN9RGE5mG43W1qJYFXZhLt8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=09rwyClN5j/y7PazveIKBFlQyjWEK4qhJSYEP0CrVFo=; b=omG09VR3kpwgAs8eynCLG92ZIFhcVA00bBd+j05dzIwtFgQaLM3X7Ekj1kEgJEJq6ud1wczw9p4wZDkzP2mDLAIZPlfOkaq/qMEGF4255KycwjLmCL6RN8mr0o/B964HIRNzplzIoAq8P39bMuLNiSMHwh0XhkdG5MM+5qcbOKI= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C From: Jason Andryuk To: CC: Jason Andryuk , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , "Volodymyr Babchuk" , Andrew Cooper , Anthony PERARD , "Jan Beulich" , =?utf-8?q?Roger_Pau_Monn=C3=A9?= Subject: [PATCH v5 7/7] xen/arm: Add capabilities to dom0less Date: Wed, 16 Apr 2025 17:29:11 -0400 Message-ID: <20250416212911.410946-8-jason.andryuk@amd.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416212911.410946-1-jason.andryuk@amd.com> References: <20250416212911.410946-1-jason.andryuk@amd.com> MIME-Version: 1.0 Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF00000148:EE_|DS7PR12MB8202:EE_ X-MS-Office365-Filtering-Correlation-Id: 471d9b9c-bba0-4136-8b09-08dd7d2dc444 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: +gWi0IRbnOkdJXrXAsf7ikDIiHo5IgEzaJF0ZUzeEMJ8SZXJJfiyuZ59vcCsC70d0dour4aSwUdnTUqVDTIoM2u/n1hFz80kZq0kUU9nBukgmcBvHfAeNFOSxLfcuSMzt3tcyBdBxDKcG0LBFAWMvkUKnmIcnh9Af+ejnXN84asJFlcaomL6MAqtUOWgBP75VMJN1Ll1ETVZvKE5Z24+X4rInm9IzhO82XNNes9wDNYquutEs1LgK1s+TWHcjbeatoBUsQpDT+5jLYX7QMWvmQzIKwi47CcwG55yoMbv+obcfpLH1xMWsBnjXOwKUHi2q5KyrCI+C56M9ykYBPBMAFdI2Fm657z/x6TKkK8R5FEKaiFGy87aNJj33/f7LfCwRxL6KmdrTw96WPWi+/IZ3Wwt+CX2T5BmX+Kn4ytIFZRMwNR22htna0tHHOh7M+czssp/y52MOKJZ1dlJ8aAc+pBc44MNoSmVC6dr3K1XvL+FSxDyLEPs2J7W701azAotSA7XLsuUPHgVmw19fXfsRqe9izUnZX7FCIRdlRdNx0GgN4YJrcRk8TeCAaWAJ6W0e10JzY+3dH3jfMc3rqJue1/fGoPzZ/qLK/QqOD4idKXvQove5bKYJ/ZG2Zs2C9XuZPTzy8snXjou6Vxp2O8Okoh16UCNerRL+GvpoOeEsH0NGjwQcCKN3EQ2wFHuJ009XzT9JUqIeoE8SXTyPrtMt3D4IFis7Rlf/JwUNzdKBFp4VM+lI4ZAmRR2LrFvsbH2haSNDP2X/TDfoOPFa6rtDkB+VspSlyFFXfxSzRoOJwjmR9EsVQ3mjaW9ldFlRgrFQnBAmxr6i9XIRHKV8O0tvR3z4qCyIDSRPM/h5Qn+63Sp2pPU/BMtUUExjYARIMnUOV+IKYYX4yldnLmzs5O/qfC75YEfGTIzbUcvCaq42deSSOYLcs8ZCFzN8F05Uq8vPbPOor59bgL2t7hwFx9Yq3XADYpGgJwANxXGjQtXLdRJYQFjMfhrKIpTEItqAj6He98ta7IqPntFWaphSgJP9mHergy9Tyy9tJ1aQ03a0kNyxNmcJX8OOFfDYD2cIIAh8fB1hg+7CFNFKVc4ZggPxFrh9RjIrvJ7wpta8xvErjocZsPhI4pGmBvYtE8IX9gDKsJOylI6ajp3HOJNcyLz/A5XWYt4ALo46151cyrP2aYRV84TCqpBVjNAd5gIdh5VnoB5ew2mUYCoKfsPh/brP9RlHKBH958Iw7JHzhz6gi3i2Jd1LRA7orDXhKk4MexZWkzzNPQqp3ia5fiavZvAEo3tAp1cMU+IkCuJP1P6M5i6tCETdmyfjASiVslaTbKqrx/KueD4XKUPVc9XVWp8gnepPI1/FhcPzpDg3o/n39ox0jfqgRU+lXfDmwNSKg5jxBmEIuW9XAdYEtfeisLGgV5ODksHt3nH82ZjloJDieuADGfUA70UHz45+r7UH2f72OZMVFg2QcmKvfD368OqrORgzVLL/RCzWgfZsnj9O+hrKcjS4HEH6XSsR4yudiaw X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Apr 2025 21:29:27.5680 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 471d9b9c-bba0-4136-8b09-08dd7d2dc444 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CH2PEPF00000148.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8202 Add a capabilities property to dom0less to allow building a disaggregated system. Only a single hardware domain and single xenstore domain can be specified. Multiple control domains are possible. Introduce bootfdt.h to contain these constants. When using the hardware or xenstore capabilities, adjust the grant and event channel limits similar to dom0. For a hardware domain, disallow specifying "vpl011", "nr_spis", "multiboot,device-tree" and "passthrough" nodes. Also, require an IOMMU when not direct-mapped, Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini --- v5: No change v4: Add Stefano R-b v3: Specify 32bit integer in booting.txt & s/all all/all/ Panic on !direct-map && !iommu Panic "multiboot,device-tree" or "passthrough" with hardware domain Include asm/grant_table.h for CONFIG_GRANT_TABLE=n v2: Fix comment style Make DOMAIN_CAPS_* unsigned Remove forced directmap & iommu Require iommu with use of hardware domain Limit to a single xenstore domain There is overlap with hyperlaunch. The numeric values are the same. Hyperlaunch doesn't expose the values in a public header as done here. Is this to be expected for dom0less? It seems most of dom0less isn't in a header, but just in docs. Hyperlaunch uses BUILD_CAPS_, but I chose DOMAIN_CAPS_ since there are domain-level capabilities. Only a single xenstore and hardware domain make sense. Hardware domain receiving all hardware can only have a single domain. For Xenstore, the logic latches the single xs_domid and uses that for all domains. Also, only a single domain can register for VIRQ_DOM_EXC. --- docs/misc/arm/device-tree/booting.txt | 11 ++++++ xen/arch/arm/dom0less-build.c | 57 +++++++++++++++++++++++++-- xen/arch/arm/domain.c | 3 +- xen/include/public/bootfdt.h | 31 +++++++++++++++ 4 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 xen/include/public/bootfdt.h diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt index ac781c9cc8..59fa96a82e 100644 --- a/docs/misc/arm/device-tree/booting.txt +++ b/docs/misc/arm/device-tree/booting.txt @@ -167,6 +167,17 @@ with the following properties: Refer to docs/misc/cache_coloring.rst for syntax. This option is applicable only to Arm64 guests. +- capabilities + Optional. A 32-bit integer representing a bit field of domain capabilities + for a disaggregated system. A traditional dom0 has all of these + capabilities, and a domU has none of them. + + 0x1 DOMAIN_CAPS_CONTROL - A privileged, control domain + 0x2 DOMAIN_CAPS_HARDWARE - The hardware domain - there can be only 1 + 0x4 DOMAIN_CAPS_XENSTORE - The xenstore domain - there can be only 1 + + The default is no capabilities. + - vpl011 An empty property to enable/disable a virtual pl011 for the guest to diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 50d2d3e4e4..a356fc94fc 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -12,11 +12,13 @@ #include #include +#include #include #include #include #include +#include #include #include @@ -928,6 +930,8 @@ static int __init construct_domU(struct domain *d, d->max_vcpus, mem); kinfo.vpl011 = dt_property_read_bool(node, "vpl011"); + if ( kinfo.vpl011 && is_hardware_domain(d) ) + panic("hardware domain cannot specify vpl011\n"); rc = dt_property_read_string(node, "xen,enhanced", &dom0less_enhanced); if ( rc == -EILSEQ || @@ -1043,6 +1047,37 @@ void __init create_domUs(void) if ( (max_init_domid + 1) >= DOMID_FIRST_RESERVED ) panic("No more domain IDs available\n"); + if ( dt_property_read_u32(node, "capabilities", &val) ) + { + if ( val & ~DOMAIN_CAPS_MASK ) + panic("Invalid capabilities (%"PRIx32")\n", val); + + if ( val & DOMAIN_CAPS_CONTROL ) + flags |= CDF_privileged; + + if ( val & DOMAIN_CAPS_HARDWARE ) + { + if ( hardware_domain ) + panic("Only 1 hardware domain can be specified! (%pd)\n", + hardware_domain); + + d_cfg.max_grant_frames = gnttab_dom0_frames(); + d_cfg.max_evtchn_port = -1; + flags |= CDF_hardware; + iommu = true; + } + + if ( val & DOMAIN_CAPS_XENSTORE ) + { + if ( xs_domid != DOMID_INVALID ) + panic("Only 1 xenstore domain can be specified! (%u)\n", + xs_domid); + + d_cfg.flags |= XEN_DOMCTL_CDF_xs_domain; + d_cfg.max_evtchn_port = -1; + } + } + if ( dt_find_property(node, "xen,static-mem", NULL) ) { if ( llc_coloring_enabled ) @@ -1064,12 +1099,26 @@ void __init create_domUs(void) panic("Missing property 'cpus' for domain %s\n", dt_node_name(node)); - if ( !dt_property_read_string(node, "passthrough", &dom0less_iommu) && - !strcmp(dom0less_iommu, "enabled") ) - iommu = true; + if ( !dt_property_read_string(node, "passthrough", &dom0less_iommu) ) + { + if ( flags & CDF_hardware ) + panic("Don't specify passthrough for hardware domain\n"); + + if ( !strcmp(dom0less_iommu, "enabled") ) + iommu = true; + } + + if ( (flags & CDF_hardware) && !(flags & CDF_directmap) && + !iommu_enabled ) + panic("non-direct mapped hardware domain requires iommu\n"); if ( dt_find_compatible_node(node, NULL, "multiboot,device-tree") ) + { + if ( flags & CDF_hardware ) + panic("\"multiboot,device-tree\" incompatible with hardware domain\n"); + has_dtb = true; + } if ( iommu_enabled && (iommu || has_dtb) ) d_cfg.flags |= XEN_DOMCTL_CDF_iommu; @@ -1106,6 +1155,8 @@ void __init create_domUs(void) d_cfg.arch.nr_spis = MAX(d_cfg.arch.nr_spis, vpl011_virq - 32 + 1); } + else if ( flags & CDF_hardware ) + panic("nr_spis cannot be specified for hardware domain\n"); /* Get the optional property domain-cpupool */ cpupool_node = dt_parse_phandle(node, "domain-cpupool", 0); diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index 3ba959f866..dc4b4e84c1 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -608,7 +608,8 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config) { unsigned int max_vcpus; unsigned int flags_required = (XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap); - unsigned int flags_optional = (XEN_DOMCTL_CDF_iommu | XEN_DOMCTL_CDF_vpmu); + unsigned int flags_optional = (XEN_DOMCTL_CDF_iommu | XEN_DOMCTL_CDF_vpmu | + XEN_DOMCTL_CDF_xs_domain ); unsigned int sve_vl_bits = sve_decode_vl(config->arch.sve_vl); if ( (config->flags & ~flags_optional) != flags_required ) diff --git a/xen/include/public/bootfdt.h b/xen/include/public/bootfdt.h new file mode 100644 index 0000000000..86c46b42a9 --- /dev/null +++ b/xen/include/public/bootfdt.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Xen Device Tree boot information + * + * Information for configuring Xen domains created at boot time. + */ + +#ifndef __XEN_PUBLIC_BOOTFDT_H__ +#define __XEN_PUBLIC_BOOTFDT_H__ + +/* + * Domain Capabilities specified in the "capabilities" property. Use of + * this property allows splitting up the monolithic dom0 into separate, + * less privileged components. A regular domU has no capabilities + * (which is the default if nothing is specified). A traditional dom0 + * has all three capabilities. + */ + +/* Control/Privileged domain capable of affecting other domains. */ +#define DOMAIN_CAPS_CONTROL (1U << 0) +/* + * Hardware domain controlling physical hardware. Typically providing + * backends to other domains. + */ +#define DOMAIN_CAPS_HARDWARE (1U << 1) +/* Xenstore domain. */ +#define DOMAIN_CAPS_XENSTORE (1U << 2) +#define DOMAIN_CAPS_MASK (DOMAIN_CAPS_CONTROL | DOMAIN_CAPS_HARDWARE | \ + DOMAIN_CAPS_XENSTORE) + +#endif /* __XEN_PUBLIC_BOOTFDT_H__ */