From nobody Fri May 17 10:34:35 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1709751071; cv=pass; d=zohomail.com; s=zohoarc; b=iX24ZRfl+8GcSZ6SXdy07dFz6THJ0ywxezQppKOkNQG8cHnOIQN5MKAAFIo48PZhG0pDpYUFw8lZCDE0fA+4wlC1R+L+rRyIXZkF3BdahWo+9c5gJEObZgFP27V7vFGInYCXTNk4U0vhgWL59AGE7M31PnwEddWLY7f52rwxaYM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1709751071; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cI4hrktpx/kWTNvhDVvDVjPbshJv3KJBlQbf2ujpAwE=; b=V6yJkVkQRAo64t1FYGgV3oqArUBZD6i5DSeVYw/ld/mH44HbjLueOBG/R5qyRzUfhRWLOnV1teTuzrrmpg/Hz5LuczjejVtwHpLUN277CwLl52BsS9o27ywNz7hwUs6Ez80jLEc3WV0/Ksp8TUDon79dL7PK6XqXNCp4viXhw3E= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1709751071120869.6695798428879; Wed, 6 Mar 2024 10:51:11 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.689470.1074482 (Exim 4.92) (envelope-from ) id 1rhwLz-00081G-QI; Wed, 06 Mar 2024 18:50:59 +0000 Received: by outflank-mailman (output) from mailman id 689470.1074482; Wed, 06 Mar 2024 18:50:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rhwLz-000815-Mx; Wed, 06 Mar 2024 18:50:59 +0000 Received: by outflank-mailman (input) for mailman id 689470; Wed, 06 Mar 2024 18:50:58 +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 1rhwLy-0007k1-Jm for xen-devel@lists.xenproject.org; Wed, 06 Mar 2024 18:50:58 +0000 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on20600.outbound.protection.outlook.com [2a01:111:f403:2412::600]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 76ba7427-dbea-11ee-a1ee-f123f15fe8a2; Wed, 06 Mar 2024 19:50:57 +0100 (CET) Received: from SJ0PR03CA0115.namprd03.prod.outlook.com (2603:10b6:a03:333::30) by PH7PR12MB6393.namprd12.prod.outlook.com (2603:10b6:510:1ff::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.24; Wed, 6 Mar 2024 18:50:51 +0000 Received: from SJ5PEPF000001C9.namprd05.prod.outlook.com (2603:10b6:a03:333:cafe::41) by SJ0PR03CA0115.outlook.office365.com (2603:10b6:a03:333::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.24 via Frontend Transport; Wed, 6 Mar 2024 18:50:51 +0000 Received: from SATLEXMB03.amd.com (165.204.84.17) by SJ5PEPF000001C9.mail.protection.outlook.com (10.167.242.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7362.11 via Frontend Transport; Wed, 6 Mar 2024 18:50:50 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) 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.35; Wed, 6 Mar 2024 12:50:50 -0600 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Wed, 6 Mar 2024 12:50:49 -0600 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 76ba7427-dbea-11ee-a1ee-f123f15fe8a2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IHlGKkbhfi7Hno1lfkBcEycr8YCl+rP1+Fn8GGHHSAaSw6tYYTXPceyeAWBVx+OcoH1DPyLltbJvAII5Gi4RDlzJEYUjOz03gkA3WUFQhlqyoOqQAnYVNjynKvhJyHdq646IPwoF5FSUoFIHkwUo8XmbzudXdZxkHRznj8RRxCISOVdlTVCMteA8RYySPyEjmSAg8/tMq3bMe0tQtagBg9W+YoAr9henhTIX/UTeBIZTA21p4E4hRUoUuof+m6yXab5PwTzCZfhSvORpp0Sj58o9hLKNjBctjf1B3xx4skFHM+RCk5EcYSvk0ljnliYKYcnKen6ENIjFwAlOlNG5Vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=cI4hrktpx/kWTNvhDVvDVjPbshJv3KJBlQbf2ujpAwE=; b=YOg9uJzfvyraoU5rWhFC90dXk4cyqI1NfB/oLyMp5ilzlW0j2AeN6cXvgg/weyMr8u9TyY7Sn1+adXNIcVqQ6Eba7loAESyPmOGG6p/9xhfYRgKz0Vhf8BdZZUCGuYWyFatfh/rWiG3nS+OQa2TXtdMSE06/pbkXv7b8Ijdv8o7VyjctD5I9ao029o1cWjPEpvCVNK1OaBWijDRq9/sDekoPOGrz7cto0XTtjoJAfjItTUC+XJzFZ+C8MTTcbaAWNTojyardwCdGt6BIO1VPruWGDHLxUVa1GIWSS8USLsccOL8YiMvLGXK2zWvvyKV/YcNdq8BCb3M+PU0WXC3wAQ== 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=cI4hrktpx/kWTNvhDVvDVjPbshJv3KJBlQbf2ujpAwE=; b=F5pxZkdpyntkA89+NaICWhOxyjVJ8Q5jfDN3PuXiHHok7ReO50KGp2ZDQ81CIcvROjlDriGQPXQ8NK2Oj9YTLwpcCg7mDLuVvaSh4LYO8VO23hgRqdAdeOuXNPPN4kcaSyJPZsk2xKVugOJ3JvD76eDvxbNlAM+kscBpoIl/KOI= 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 (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; 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 , Andrew Cooper , George Dunlap , "Jan Beulich" , Julien Grall , "Stefano Stabellini" , Wei Liu Subject: [PATCH 1/3] features.h: Replace hard tabs Date: Wed, 6 Mar 2024 13:50:30 -0500 Message-ID: <20240306185032.103216-2-jason.andryuk@amd.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240306185032.103216-1-jason.andryuk@amd.com> References: <20240306185032.103216-1-jason.andryuk@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: SJ5PEPF000001C9:EE_|PH7PR12MB6393:EE_ X-MS-Office365-Filtering-Correlation-Id: daa1f0f3-b79f-4560-aa91-08dc3e0e582a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +E05yt9dPVP8ofr53jEtvKaCBFI/G/YO42q/37LEL6XbUxv1xfxpyoWIZkBk3GdaBxbjQaZQLSz2sFVxgEPXo/xXt+ObELXOqOUX3cnJUgkwGO+8H9NNzvKkafc2DwztYuo4dzItFfiSNpRCQ/G5UbbslukzWZ6Usv23uWHmiEYV1jOyPaCq/MQ7pj3zxQxx65I33qrhp7e/fgwfqeq8TYaOxLN/Qle7l9EPlB2EoE3vyJpbY3mCB34hDlMVQo9l5a91jROOgsQfbyc34JyVzlszEy8EyNyGqmQ/UuZbpxi+iup+2yFgqYnGU4M53Zcduo2YneRc321WhP3gN2mYzWliVWEd+EQupnCHlW2Bbd5VXgXQLd2DhPKnoKwiwe4YUWUb1q733LrSqxe6Jp8P68EDIttrp7fE2WsVUIH8Wv1g9QKMZIdXmxED7E1Z5iHj9cSBuhSgiAz6uCIqZjV4b+N9W6cp1bJ23IiTmw1BBvFA1a6zPAWNNXul8iJolpo7IAXffonZu1H0WCPMfozdg530zjgDDNMaA7xHz7itU+DNmaJaCRjrfgvVW2KcHlzS9JKaNQT6DrMRL4SBEqvoIBNPHzcLhbvIRD18jnTXqoZvGwisTSG4XwoUVIH1M+wRYyQVAXXugzSndg34hXaJZMYvhsJzmPiGf3kIipJtZiqEO6c+Pp7Tu1t8ph6tDQeRT5SUD8v7iPDkGMpka99yMEOaHRawUTAJeyOvwLlmMqOMO/Lfbg7E81E2ze7sh5Vf 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:(13230031)(82310400014)(36860700004)(376005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2024 18:50:50.8173 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: daa1f0f3-b79f-4560-aa91-08dc3e0e582a 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: SJ5PEPF000001C9.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6393 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1709751072228100001 Content-Type: text/plain; charset="utf-8" Replace hard tabs to match the rest of the file. Fixes: 48a3fd1432 ("domain: expose newly introduced hypercalls as XENFEAT") Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini --- xen/include/public/features.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/include/public/features.h b/xen/include/public/features.h index 36936f6a4e..4437f25d25 100644 --- a/xen/include/public/features.h +++ b/xen/include/public/features.h @@ -117,8 +117,8 @@ * VCPUOP_register_runstate_phys_area * VCPUOP_register_vcpu_time_phys_area */ -#define XENFEAT_runstate_phys_area 18 -#define XENFEAT_vcpu_time_phys_area 19 +#define XENFEAT_runstate_phys_area 18 +#define XENFEAT_vcpu_time_phys_area 19 =20 #define XENFEAT_NR_SUBMAPS 1 =20 --=20 2.44.0 From nobody Fri May 17 10:34:35 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1709751079; cv=pass; d=zohomail.com; s=zohoarc; b=lPDtTUIo7c59p4SJlaCw6xbV9I9bcWIN9xLzdsUMVIvZruIlLyYf90rLnICjmPf2UthVl/Dl9NTzYQXTqZrj6Ntm43XM8/NCjk/0AKHMxnDKsiW6xyhwrr9W6qqq0J1wc7OkLTtRdPDqcZ/xWRFWFW8uXiPY+DZeGwPpnkGN4Io= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1709751079; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qJKZwTEKdVYwdWhkLN1Jw/ThuraaXkFqSODcmfGNrWU=; b=id9TkKyP3V5OONlAqh0qYeOVRsVArSRsiev2aVqCUQC8+R5q9xUwiixzEsA/b3HpkmgeXWwjbszvp+UUdjxejKOIiH8ZomQTy8zwau+9ZIdzTSTWtgHxFv36/VgS+z4AdTWdmXnuQweWfq3pwJUZjVPIbA4ZfEDhlcqF5BU1eOQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1709751079254614.8560200895333; Wed, 6 Mar 2024 10:51:19 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.689471.1074492 (Exim 4.92) (envelope-from ) id 1rhwM4-0008Iu-3P; Wed, 06 Mar 2024 18:51:04 +0000 Received: by outflank-mailman (output) from mailman id 689471.1074492; Wed, 06 Mar 2024 18:51:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rhwM3-0008Im-Uj; Wed, 06 Mar 2024 18:51:03 +0000 Received: by outflank-mailman (input) for mailman id 689471; Wed, 06 Mar 2024 18:51:02 +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 1rhwM2-0007k1-Rl for xen-devel@lists.xenproject.org; Wed, 06 Mar 2024 18:51:02 +0000 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on20630.outbound.protection.outlook.com [2a01:111:f400:7ea9::630]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 79f22f67-dbea-11ee-a1ee-f123f15fe8a2; Wed, 06 Mar 2024 19:51:01 +0100 (CET) Received: from MW4PR03CA0201.namprd03.prod.outlook.com (2603:10b6:303:b8::26) by CH3PR12MB8305.namprd12.prod.outlook.com (2603:10b6:610:12e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.24; Wed, 6 Mar 2024 18:50:55 +0000 Received: from MWH0EPF000971E8.namprd02.prod.outlook.com (2603:10b6:303:b8:cafe::df) by MW4PR03CA0201.outlook.office365.com (2603:10b6:303:b8::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.24 via Frontend Transport; Wed, 6 Mar 2024 18:50:55 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by MWH0EPF000971E8.mail.protection.outlook.com (10.167.243.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7362.11 via Frontend Transport; Wed, 6 Mar 2024 18:50:54 +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.35; Wed, 6 Mar 2024 12:50:53 -0600 Received: from SATLEXMB04.amd.com (10.181.40.145) 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.35; Wed, 6 Mar 2024 12:50:53 -0600 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Wed, 6 Mar 2024 12:50:52 -0600 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 79f22f67-dbea-11ee-a1ee-f123f15fe8a2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P821ekqWkwpb1WpA9bQdt8MM3c3l5S4L03WdI2mXex3LC5tE7GgToPIn4ua7/DebJmGEC4uv3ogdM9nVRownD3aGvGvMUWNh9BuoqpAZI1H8I/1oRn/+jWJwwbSSNmKhu+EcT43xuKi9OISHFyXcC5u773+rXuPyMCUAqLr+wTz+/KMS91jetNP/OpaSmQ6/hHe2jz8i20Ht0zYFFlp6Y8AVHytLoPKOSCBwsZJJD10olZkcwf20ZATflUgJkScTpJSzfyJ3uQOFs4hRqjE9ugKVbdm7BQExlFK49kySRcma1CVZyh9zoZcX5DvEdMiVq0Y8ZvYe6b+B+w8iEA+98w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=qJKZwTEKdVYwdWhkLN1Jw/ThuraaXkFqSODcmfGNrWU=; b=nL94bnlCv/4bveM5XxdQwMJ0898M/k+9UnFkJJ0xcTxLUBS4/ViT7YFuN0IWXJXYMPHP2jimM+4uZS9sQ0DgBhKuyXz8Jled+SSq2ho84UFMemOe4l08DRmYbjNDogEPqt/aGyRHtWkO+YeTNO6CPyfuUbmcWvqNeieiKnFt8fZ0nae4BRxrdXR/Xzryir3rpm37duXj7ngxsmDLTi7PyUt/jHLMVsXyFnANdhN5BOZ6BJGeIeehVG9dEDSlGg7e+2qGyBk8DGA25HCFDOGAmC2YFycfjXkYXiKKJLxGK+HZMO3FpzZj8NIhVn1MzXRTcLlSQUI9M7zZIURU9+4yGQ== 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=qJKZwTEKdVYwdWhkLN1Jw/ThuraaXkFqSODcmfGNrWU=; b=2NWB+CWppj92dEdqirPOa6kUeHGxtu3LKUURz8JwY1BpZF6DXrQ3KeoD/X3veFKjWUYmEfP5+nOpRuYgRct4Jf0h6BJYdxFHJMgFlSBc7kYZQ+zS7KsbISGPUBxpMoJy39m7GTBa3tAHMle1yFWaEO4s4w/OCY8KTWZ+oPtJAbc= 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 (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; 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 , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu Subject: [PATCH 2/3] xen/x86: bzImage parse kernel_alignment Date: Wed, 6 Mar 2024 13:50:31 -0500 Message-ID: <20240306185032.103216-3-jason.andryuk@amd.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240306185032.103216-1-jason.andryuk@amd.com> References: <20240306185032.103216-1-jason.andryuk@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000971E8:EE_|CH3PR12MB8305:EE_ X-MS-Office365-Filtering-Correlation-Id: ac1c0a7e-1776-4cc5-aa16-08dc3e0e5a4c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hG93AnmSbi858NSe54/nyBoMuLzg/sPMOCDHXAG3jJRTQJOHdISHXP+YOnbAdJNm2F//16v/qHGRhu8XJaMq0wVyjAh7pFRf0SxRRExG45t7RE2zo7UZjvPecWpWbzWvzrKHH0Hdoc7wNdnL4Hs3RAh8m6Q7oZSBQ+CPv3pR0xmgWpWjthRDIgaMeLUUuM+HGQb78Bys13JWDoD5x5Xu7x/yUYVs4LP1XTbFlnVQz3zpum19vXeNPSUVZBKWoB6E1UEpwBGxStoPjrNTPnUTt/h22l/O3vrL7nWW+WcEmifnY2W0P+AA5yGLhojiLHIS+z/W9fp1kVVbsFwxTM3jE27s9osV5Z2rtrtxQFmW+eMcv4yK86adiifx9E9sc1y1I8vAF3I4IQN+QD4+NBcLwJxsZh+z53BI79hVivXNW1+Qmr0TThQ9zAJY7MoGy9SE7sVJcX+pkWVJ2u0eJrpo3eEPv5fcP+Nur9HiiCUV+kjOrKvvydekWKv+r3uZqNCo56gHaWlxVYdiRU8N7SVS3J/OeJp/4Mgph8/H14S6reAuICNq7U+iGF3tkBUzUyw00VpLQsgEewSEOcXoGNqQ5IuV135Geo874MZI9rKloeSUc17bs+kepsgJ71IK9JqLO7cIlNyENAxmhiGtqsAO4Wo6p88H/XjaiNuy4264nS3mp/HOqlLyh0dGtwdbJWFvPu5L0LZaUDGb5fsXo+lKOGawQXV/D5DNDGRQl/mHalrZoSW1kGOO+E1fSuRzmNo/ 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:(13230031)(82310400014)(36860700004)(376005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2024 18:50:54.3643 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ac1c0a7e-1776-4cc5-aa16-08dc3e0e5a4c 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: MWH0EPF000971E8.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8305 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1709751080231100001 Content-Type: text/plain; charset="utf-8" Expand bzimage_parse() to return kernel_alignment from the setup_header. This will be needed if loading a PVH kernel at a physical offset to compensate for a reserved E820 region. Signed-off-by: Jason Andryuk Acked-by: Jan Beulich Reviewed-by: Stefano Stabellini --- xen/arch/x86/bzimage.c | 4 +++- xen/arch/x86/hvm/dom0_build.c | 4 +++- xen/arch/x86/include/asm/bzimage.h | 3 +-- xen/arch/x86/pv/dom0_build.c | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/bzimage.c b/xen/arch/x86/bzimage.c index ac4fd428be..0f4cfc49f7 100644 --- a/xen/arch/x86/bzimage.c +++ b/xen/arch/x86/bzimage.c @@ -105,7 +105,7 @@ unsigned long __init bzimage_headroom(void *image_start, } =20 int __init bzimage_parse(void *image_base, void **image_start, - unsigned long *image_len) + unsigned long *image_len, unsigned int *align) { struct setup_header *hdr =3D (struct setup_header *)(*image_start); int err =3D bzimage_check(hdr, *image_len); @@ -118,6 +118,8 @@ int __init bzimage_parse(void *image_base, void **image= _start, { *image_start +=3D (hdr->setup_sects + 1) * 512 + hdr->payload_offs= et; *image_len =3D hdr->payload_length; + if ( align ) + *align =3D hdr->kernel_alignment; } =20 if ( elf_is_elfbinary(*image_start, *image_len) ) diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index 0ceda4140b..bbae8a5645 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -548,12 +548,14 @@ static int __init pvh_load_kernel(struct domain *d, c= onst module_t *image, struct elf_binary elf; struct elf_dom_parms parms; paddr_t last_addr; + unsigned int align =3D 0; struct hvm_start_info start_info =3D { 0 }; struct hvm_modlist_entry mod =3D { 0 }; struct vcpu *v =3D d->vcpu[0]; int rc; =20 - if ( (rc =3D bzimage_parse(image_base, &image_start, &image_len)) !=3D= 0 ) + rc =3D bzimage_parse(image_base, &image_start, &image_len, &align); + if ( rc !=3D 0 ) { printk("Error trying to detect bz compressed kernel\n"); return rc; diff --git a/xen/arch/x86/include/asm/bzimage.h b/xen/arch/x86/include/asm/= bzimage.h index 7ed69d3910..de4e9a446f 100644 --- a/xen/arch/x86/include/asm/bzimage.h +++ b/xen/arch/x86/include/asm/bzimage.h @@ -4,8 +4,7 @@ #include =20 unsigned long bzimage_headroom(void *image_start, unsigned long image_leng= th); - int bzimage_parse(void *image_base, void **image_start, - unsigned long *image_len); + unsigned long *image_len, unsigned int *align); =20 #endif /* __X86_BZIMAGE_H__ */ diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c index d8043fa58a..e9fa8a9a82 100644 --- a/xen/arch/x86/pv/dom0_build.c +++ b/xen/arch/x86/pv/dom0_build.c @@ -416,7 +416,7 @@ int __init dom0_construct_pv(struct domain *d, =20 d->max_pages =3D ~0U; =20 - if ( (rc =3D bzimage_parse(image_base, &image_start, &image_len)) !=3D= 0 ) + if ( (rc =3D bzimage_parse(image_base, &image_start, &image_len, NULL)= ) !=3D 0 ) return rc; =20 if ( (rc =3D elf_init(&elf, image_start, image_len)) !=3D 0 ) --=20 2.44.0 From nobody Fri May 17 10:34:35 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1709751079; cv=pass; d=zohomail.com; s=zohoarc; b=Cpaj3DTtxLweE1B4Jbgvd5P2SQpUg92uGWpfNArz2GMGxIFrrKV+/xshx97BmXXPRFYVJlhwpyoKySMunet1xSUIHMX26EX62cnzPTBvecH3Urf+9hvZYeBTfFSlhYisG3Z+D7kfb/TpfpG5zQwHhpYa7YJP+mpVHCkujtRBn30= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1709751079; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=T3CZf4Zi/+LKE/JxglBmU2IixkGLM4biIR5p9SBTScI=; b=ha/GK9mreFImFoIDege6hIKeAQ7Umksom+OS3QN53npp+IusHQ2fsA6k+XPExRKUiQ/zflTM6bN0w2ND4sr7hJ//oHZVUT41oGIdzd5LWzUgJ3R1vn2KzLLeJnavyJb7nZuIcn9Ho68kCjxGLLdxdmfMUX1tFSWGIIP9iqFmjkg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1709751079796374.87552466084867; Wed, 6 Mar 2024 10:51:19 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.689472.1074502 (Exim 4.92) (envelope-from ) id 1rhwM5-000079-Au; Wed, 06 Mar 2024 18:51:05 +0000 Received: by outflank-mailman (output) from mailman id 689472.1074502; Wed, 06 Mar 2024 18:51:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rhwM5-00006w-6r; Wed, 06 Mar 2024 18:51:05 +0000 Received: by outflank-mailman (input) for mailman id 689472; Wed, 06 Mar 2024 18:51:03 +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 1rhwM3-0007k1-Rx for xen-devel@lists.xenproject.org; Wed, 06 Mar 2024 18:51:03 +0000 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on20600.outbound.protection.outlook.com [2a01:111:f403:2418::600]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7a3f438f-dbea-11ee-a1ee-f123f15fe8a2; Wed, 06 Mar 2024 19:51:01 +0100 (CET) Received: from BYAPR01CA0027.prod.exchangelabs.com (2603:10b6:a02:80::40) by LV8PR12MB9405.namprd12.prod.outlook.com (2603:10b6:408:1fa::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.38; Wed, 6 Mar 2024 18:50:58 +0000 Received: from SJ5PEPF000001CA.namprd05.prod.outlook.com (2603:10b6:a02:80:cafe::8e) by BYAPR01CA0027.outlook.office365.com (2603:10b6:a02:80::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.37 via Frontend Transport; Wed, 6 Mar 2024 18:50:57 +0000 Received: from SATLEXMB03.amd.com (165.204.84.17) by SJ5PEPF000001CA.mail.protection.outlook.com (10.167.242.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7362.11 via Frontend Transport; Wed, 6 Mar 2024 18:50:57 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) 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.35; Wed, 6 Mar 2024 12:50:56 -0600 Received: from fedora.mshome.net (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Wed, 6 Mar 2024 12:50:55 -0600 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 7a3f438f-dbea-11ee-a1ee-f123f15fe8a2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ehYy/t29tVSxeR6pttbMARcufQoWH+zAxrqUJu/dx1ARtrToPVVtN5FawayNQwOw2gYvaNIwLJfB5sf9AqQ3T0SwHoYaP4ZV8Fo2POIUi4XNAnxcyJsFzIdUf6t9YxQoJJcDzItnLcUack8QDJXjCUh6H0hH+nYkYN1/ntdYUzlMO91Sie80hExVCnp+O0V26gJj/ubS0D1LvRBbBvXpMlkA9JCcUhnIdWkLRZaaA4uZC95qWv3jfd0mMysQeBj7O/+8d0BWWFL4aWVX5XQKRYn0Wsz1Eb+bLgPKQJRclPyHmP0X4/ODEDiNKrBYF1NOb5qjyDpiKFlj62zgRzB53Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=T3CZf4Zi/+LKE/JxglBmU2IixkGLM4biIR5p9SBTScI=; b=fqH2vtXhqKt590lDgbNd1+yk7bZk8PD1I2izsTmvbT2WwRq/suTbG1sJiKC44mzQJAUD085PW1gDJHrIa73I0TALmxa6s6hrInr9WcCFpuLdU+xBPIVEbXUGenhFx9dxhr1aNpUSK8JKFDAwloPmM3dEiCHGHHHphO5EXrmR0iBJR8zL0iLZq2t3E3IemrRsDWIKf+ZeAHB+CctsqsoXdYqo0cfgnQlYUsXF/3LaaVm+pVEdW9k3l3AiV954De7I1N43sMboFb1Nx2uuOVW53057jnJpvnj/ou02oWAqswSo46lyaBAWKt9Zm2EQC0honLogFatXYskgj0BC3ahtZg== 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=T3CZf4Zi/+LKE/JxglBmU2IixkGLM4biIR5p9SBTScI=; b=J1LoZ5QVDcPbn6hCpZgemz32LwgVxS1C1KkiQY5x/SGjd4W/k5ZiUMuoZBQuThjs/7zX64rmJeDLQomtoURhuK28rW5uKCM/nANpNgfBezsBdf93DJtKrlqn9KfDa+Pb/OY63dWCz8IB8hlx8lru5/zgJpXIM5+2A2bWjCSjqaA= 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 (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; 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 , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Wei Liu , George Dunlap , Julien Grall , Stefano Stabellini Subject: [PATCH 3/3] x86/PVH: Support relocatable dom0 kernels Date: Wed, 6 Mar 2024 13:50:32 -0500 Message-ID: <20240306185032.103216-4-jason.andryuk@amd.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240306185032.103216-1-jason.andryuk@amd.com> References: <20240306185032.103216-1-jason.andryuk@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: SJ5PEPF000001CA:EE_|LV8PR12MB9405:EE_ X-MS-Office365-Filtering-Correlation-Id: dd647ce7-5f4d-4745-6283-08dc3e0e5bf9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OB6lho4d4qmSJMsKLPPvUveVfU8ytiL8AGNH+LlCnFFswKRijAbPVaXix9XKQfuMKykWNvlvRBGMMbylFnPME6+bk1+G6ycByO1/dzEASRhNdv5xulj4ApsBbkoQB+f8R6o3AAcdi0+8kvKvYf2eAxC/Vi+TYGzZKhntTg0ONVKnxSxUodUT3gQwMOVqMUJu53AnymdMI+MGp8bemV8MbOZGalmwhF8tnlSMP5DiWIlyUNVpfIe/59eGgF0XFL88CMsDucZvU/NZz0UCPxeLfQyK7diqnDUkfufqDg1I4o0af+oWbBGZESCdURsm9Hi01sZ4Lq6aTfFmGcQrrlqKa/GN6vsazC3zKX8n4dcR6VM6bWgil4//KXlp+CVjT/fLE5/SvdjwCdDvr5oiMbb/QTkuamdAmkAAfjRkSPQIr6l5GzZsa1owD6xET2EmAZ/86A/pB/Rcc6xnje5qZYb/jYZoIFspnN3lZ5pRxiYNwTPbVbxSfd7HkftxzwfB8bgtmYxMHISOd4reh5AgwrJiS2NroyPxHRi40nTgnVw1b5cYL1XcByC/5pn/f4XRTibe9vvcyjs3fc9iRO5NGjq8CUNOhREDjv8Py9/7uTNbqu6cVGSxj/wMVRADHhKTCNnoqfj8QfX3vnJCnJyIor8JpN4uPQA3ZhZZCKtfnZ1rrFMNYn+Jgzfgl91AUvzGTPCc/plsugpCFGNhcarZNwSe3mCKJswkcmcAJOMzrvMN0++KQUffu643851tiB/vdkrx 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:(13230031)(82310400014)(36860700004)(376005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2024 18:50:57.2052 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dd647ce7-5f4d-4745-6283-08dc3e0e5bf9 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: SJ5PEPF000001CA.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9405 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1709751080245100002 Content-Type: text/plain; charset="utf-8" Xen tries to load a PVH dom0 kernel at the fixed guest physical address from the elf headers. For Linux, this defaults to 0x1000000 (16MB), but it can be configured. Unfortunately there exist firmwares that have reserved regions at this address, so Xen fails to load the dom0 kernel since it's not RAM. The PVH entry code is not relocatable - it loads from absolute addresses, which fail when the kernel is loaded at a different address. With a suitably modified kernel, a reloctable entry point is possible. Add the XENFEAT_pvh_relocatable flag to let a kernel indicate that it supports a relocatable entry path. Change the loading to check for an acceptable load address. If the kernel is relocatable, support finding an alternate load address. Linux cares about its physical alignment. This can be pulled out of the bzImage header, but not from the vmlinux ELF file. If an alignment can't be found, use 2MB. Signed-off-by: Jason Andryuk --- Put alignment as a new ELF note? Presence of that note would indicate relocation support without a new XENFEAT flag. Default alignment to a multiple of 2MB to make more cases work? It has to be a power of two, and a multiple might allow loading a customized kernel. A larger alignment would limit the number of possible load locations. --- xen/arch/x86/hvm/dom0_build.c | 109 ++++++++++++++++++++++++++++++++++ xen/include/public/features.h | 5 ++ 2 files changed, 114 insertions(+) diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index bbae8a5645..34d68ee8fb 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -537,6 +537,109 @@ static paddr_t __init find_memory( return INVALID_PADDR; } =20 +static bool __init check_load_address( + const struct domain *d, const struct elf_binary *elf) +{ + paddr_t kernel_start =3D (paddr_t)elf->dest_base & PAGE_MASK; + paddr_t kernel_end =3D ROUNDUP((paddr_t)elf->dest_base + elf->dest_siz= e, + PAGE_SIZE); + unsigned int i; + + /* + * The memory map is sorted and all RAM regions starts and sizes are + * aligned to page boundaries. + */ + for ( i =3D 0; i < d->arch.nr_e820; i++ ) + { + paddr_t start =3D d->arch.e820[i].addr; + paddr_t end =3D d->arch.e820[i].addr + d->arch.e820[i].size; + + if ( start <=3D kernel_start && + end >=3D kernel_end && + d->arch.e820[i].type =3D=3D E820_RAM ) + return true; + } + + return false; +} + +/* + * Find an e820 RAM region that fits the kernel at a suitable alignment. + */ +static paddr_t find_kernel_memory( + const struct domain *d, struct elf_binary *elf, paddr_t align) +{ + paddr_t kernel_start =3D (paddr_t)elf->dest_base & PAGE_MASK; + paddr_t kernel_end =3D ROUNDUP((paddr_t)elf->dest_base + elf->dest_siz= e, + PAGE_SIZE); + unsigned int i; + + /* + * The memory map is sorted and all RAM regions starts and sizes are + * aligned to page boundaries. + */ + for ( i =3D 0; i < d->arch.nr_e820; i++ ) + { + paddr_t start =3D d->arch.e820[i].addr; + paddr_t end =3D d->arch.e820[i].addr + d->arch.e820[i].size; + paddr_t kstart, kend, offset; + + if ( d->arch.e820[i].type !=3D E820_RAM ) + continue; + + if ( d->arch.e820[i].size < elf->dest_size ) + continue; + + if ( end < kernel_end ) + continue; + + kstart =3D ROUNDUP(start, align); + offset =3D kstart - kernel_start; + kend =3D kernel_end + offset; + + if ( kend <=3D end ) + return offset; + } + + return 0; +} + +/* + * Check the kernel load address, and adjust if necessary and possible. + */ +static bool __init adjust_load_address( + const struct domain *d, struct elf_binary *elf, struct elf_dom_parms *= parms, + paddr_t align) +{ + paddr_t offset; + + /* Check load address */ + if ( check_load_address(d, elf) ) + return true; + + if ( !test_bit(XENFEAT_pvh_relocatable, parms->f_supported) ) + { + printk("Address conflict and %pd kernel is not relocatable\n", d); + return false; + } + + if ( align =3D=3D 0 ) + align =3D MB(2); + + offset =3D find_kernel_memory(d, elf, align); + if ( offset =3D=3D 0 ) + { + printk("Failed find a load offset for the kernel\n"); + return false; + } + + printk("Adjusting load address by %#lx\n", offset); + elf->dest_base +=3D offset; + parms->phys_entry +=3D offset; + + return true; +} + static int __init pvh_load_kernel(struct domain *d, const module_t *image, unsigned long image_headroom, module_t *initrd, void *image_base, @@ -587,6 +690,12 @@ static int __init pvh_load_kernel(struct domain *d, co= nst module_t *image, elf.dest_base =3D (void *)(parms.virt_kstart - parms.virt_base); elf.dest_size =3D parms.virt_kend - parms.virt_kstart; =20 + if ( !adjust_load_address(d, &elf, &parms, align) ) + { + printk("Unable to load kernel\n"); + return -ENOMEM; + } + elf_set_vcpu(&elf, v); rc =3D elf_load_binary(&elf); if ( rc < 0 ) diff --git a/xen/include/public/features.h b/xen/include/public/features.h index 4437f25d25..300480cb22 100644 --- a/xen/include/public/features.h +++ b/xen/include/public/features.h @@ -120,6 +120,11 @@ #define XENFEAT_runstate_phys_area 18 #define XENFEAT_vcpu_time_phys_area 19 =20 +/* + * PVH: If set, the guest supports relocation in load address. + */ +#define XENFEAT_pvh_relocatable 20 + #define XENFEAT_NR_SUBMAPS 1 =20 #endif /* __XEN_PUBLIC_FEATURES_H__ */ --=20 2.44.0 From nobody Fri May 17 10:34:35 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1709753560; cv=pass; d=zohomail.com; s=zohoarc; b=gFkfq1D+GSiYhQ6bSl3oc6u/V6EK92G/Dr6Irh6pFgybzP+LXN4X1gEJApcAgCit8E+UzkRd/HVDQpI91S8tTQ7hkXrBcnyg2z/XZaDaVOuXPRdXNnTHBIBH2KxorQOAokAjQEjUJkUcMe4ADZaSoQMgpeHwrHKF8B64D8rB0MU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1709753560; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=s8ONsRt7COxj9gZV6Ct67FmT23zTc3WUV1SKIWOuv+Y=; b=nrrhe1DLaFUoMVE7UTfLsnow3wyvcaRJOjH8U5bi4nJsQs6SszMr1UeeP25U6zyfInYzCWNuU8o0P31ejUbaxAB/g6bWQxUD4WCTjBAISsd/LVXqT/1YD8nBOGhyF1fX1ty+V0NLIIayEZFc+vBEHv3MvF2MvMV9u/oXCP5o2IM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1709753560595202.29774179384628; Wed, 6 Mar 2024 11:32:40 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.689493.1074522 (Exim 4.92) (envelope-from ) id 1rhwzp-00022G-Pt; Wed, 06 Mar 2024 19:32:09 +0000 Received: by outflank-mailman (output) from mailman id 689493.1074522; Wed, 06 Mar 2024 19:32:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rhwzp-000229-NH; Wed, 06 Mar 2024 19:32:09 +0000 Received: by outflank-mailman (input) for mailman id 689493; Wed, 06 Mar 2024 19:32:08 +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 1rhwzo-000221-57 for xen-devel@lists.xenproject.org; Wed, 06 Mar 2024 19:32:08 +0000 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on20601.outbound.protection.outlook.com [2a01:111:f403:2407::601]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 367deeb3-dbf0-11ee-afda-a90da7624cb6; Wed, 06 Mar 2024 20:32:05 +0100 (CET) Received: from BYAPR01CA0009.prod.exchangelabs.com (2603:10b6:a02:80::22) by BY5PR12MB4274.namprd12.prod.outlook.com (2603:10b6:a03:206::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.39; Wed, 6 Mar 2024 19:32:02 +0000 Received: from SJ5PEPF000001CE.namprd05.prod.outlook.com (2603:10b6:a02:80:cafe::30) by BYAPR01CA0009.outlook.office365.com (2603:10b6:a02:80::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.38 via Frontend Transport; Wed, 6 Mar 2024 19:32:02 +0000 Received: from SATLEXMB03.amd.com (165.204.84.17) by SJ5PEPF000001CE.mail.protection.outlook.com (10.167.242.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7362.11 via Frontend Transport; Wed, 6 Mar 2024 19:32:01 +0000 Received: from SATLEXMB08.amd.com (10.181.40.132) 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.35; Wed, 6 Mar 2024 13:32:01 -0600 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 6 Mar 2024 11:32:00 -0800 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.35 via Frontend Transport; Wed, 6 Mar 2024 13:32:00 -0600 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: 367deeb3-dbf0-11ee-afda-a90da7624cb6 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZvKevZAJPNu3YrFrW/fz35Xx7DHkt+Z2RW0N58akXOdH6loFNxpF28dTWM0nXKDLL6fWz4y15kjQS2cesjHfmf9raIHpimR8Acdg6rMrWlgvM4XqTu549DuN/go0xASPsvXKnjOteScQn65Tg70MnCuPwGtl4S+kDI3aX4kMH5ovZbsLGAqvKw0phN5f6pH8UhkoQE1rB/NLEvFjR3/7N9nUamvgsiHHrHrHRRcTLyJdFtKkabV3zVbYfBr+/wzXKAj6Qcgo5TzdMbBwLmmbPr7q1VHTT3nTkP3wBUEI5n5En1R5oGT09kENS+yxSJfnUA9qEL12RkTWRinaUT+BjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=s8ONsRt7COxj9gZV6Ct67FmT23zTc3WUV1SKIWOuv+Y=; b=kVT+fdiryFiyf7zkN11H/X6uKxZHgp5++xi6pP3jzG9R0dKqnbvztlS17zNkZRGcZ7aEao/aUH5b1r3wOkbtt2+6YaTvnKmR2aqrDL2zSwHj4uEXaSK1lGgHSaRRKKdFBBbrp/uLmaeXqdtkxwiKYbqabNxi1Fo90KVWrzW2SKKYMbZBIkYYHlNXmD3+amuW+poWVzfWuEKEkRB4qO6ISMTYwhqP8oiMDNmVYHf22cGxvt/zziv186zffwX02HFOtVgS632ViekUESdUJYyzbI34JK1Y8jv0wL45nx8vw+C5Kqv4CdSHOQAp9puizl9zHmZW2zvAJj5ZPd4WcFcAOQ== 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=s8ONsRt7COxj9gZV6Ct67FmT23zTc3WUV1SKIWOuv+Y=; b=SzF5u2BxbFkCXqt05Kj5KHJmav1d2SxQ0tu2+onA/rdK7busQiIKU8cWjsPFy9KWfEgkTPcWvjJ4eVGL5H7SfaK3BiVq9Qyl5VB08X9gx2H97bYZUeZdpnoks6DfdkRq9bYRol/uwmQK0JIVXomFke9b3USsQ9RcYzXMxGhxYuU= 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 (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; 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: Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Andrew Cooper , "Juergen Gross" , Boris Ostrovsky , Jason Andryuk Subject: [LINUX PATCH] RFC: x86/pvh: Make Xen PVH entrypoint PIC Date: Wed, 6 Mar 2024 14:31:58 -0500 Message-ID: <20240306193158.104680-1-jason.andryuk@amd.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240306185032.103216-1-jason.andryuk@amd.com> References: <20240306185032.103216-1-jason.andryuk@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CE:EE_|BY5PR12MB4274:EE_ X-MS-Office365-Filtering-Correlation-Id: 5993f048-c7e8-40e8-d7bf-08dc3e141902 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FWmQyTuW0iZT2iCWgeHDRMzbwoyiAP/Fs+lYpTBKidLoQ09FoyCsKhhM6hTNsrGaY5jofoG55do43s6Z3FZvi2jaiU98ZVnSLgUYfEmC5GzFkcfb6Yc0g9cRRNFjkGc9XgvTJvbai0l5BEuastDZg3FOYODhRu4sma49K9wOeXX6rLQWVwNneWstLY5LKXMryuGmTExUDNumbiLxqz3np/5auBk8Tv8cTwjUZbZgXADR/uV/epN7xTz2IjRLjogP6xoRGBbCyYC+QAniEym7Q5RyWGafBIm0wfafook2LRViiaQKEaq0/XVu1bCs2TtXtbia357q6ISZM/ZcfDp4cfYAWUfe+9uZpl2wE7pyxIQwacoKqIw4Uu0PQS19lwB+eEzc6EBQBlULDmb4cOLI9+ntDs72ekjOEZ9Ft8/wi75sba/Jj6lb+gck74U5X6NFWSER/xUaGPjbaRUPxywP64RooL27GiqtvM5Iyac2rZ79UHVV18Z5oTCaMuKqVgiKTc/O68Eqgsti2+7Ndle/fgezSzSWjZ8hU6IQsgmwjbixKjSgtwVIFyoJGuBOiDDwODUoW0lrxphHtXFXNxSWewYS23hozM9fDHtbgxDztIf2NloYTAJdEsCY0hTDXnVJwAhD7GITnuUTi9ziv/hS6+3k4ecaJ8vfZphvPNDfqRo+bSrkDil7pG41VnTFs8SmigsjEar5cmTeTlgPLyNpB6mbh5+NE+pqm5gYZPaIqNJzLUaYTRm5ZVJwPA700mVU 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:(13230031)(376005)(36860700004)(82310400014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Mar 2024 19:32:01.8246 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5993f048-c7e8-40e8-d7bf-08dc3e141902 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: SJ5PEPF000001CE.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4274 X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1709753562626100001 Content-Type: text/plain; charset="utf-8" The Xen PVH entrypoint is 32bit non-PIC code running at a default load address of 0x1000000 (16MB) (CONFIG_PHYSICAL_START). Xen loads the kernel at that physical address inside the PVH container. When running a PVH Dom0, the system reserved addresses are mapped 1-1 into the PVH container. There exist system firmwares (Coreboot/EDK2) with reserved memory at 16MB. This creates a conflict where the PVH kernel cannot be loaded at that address. Modify the PVH entrypoint to be position-indepedent to allow flexibility in load address. Initial PVH entry runs at the physical addresses and then transitions to the identity mapped address. While executing xen_prepare_pvh() calls through pv_ops function pointers transition to the high mapped addresses. Additionally, __va() is called on some hvm_start_info physical addresses, we need the directmap address range is used. So we need to run page tables with all of those ranges mapped. Modifying init_top_pgt tables ran into issue since startup_64/__startup_64() will modify those page tables again. Use a dedicated set of page tables - pvh_init_top_pgt - for the PVH entry to avoid unwanted interactions. In xen_pvh_init(), __pa() is called to find the physical address of the hypercall page. Set phys_base temporarily before calling into xen_prepare_pvh(), which calls xen_pvh_init(), and clear it afterwards. __startup_64() assumes phys_base is zero and adds load_delta to it. If phys_base is already set, the calculation results in an incorrect cr3. TODO: The 32bit entry path needs additional work to have relocatable pagetables. TODO: Sync features.h from xen.git commit xxxxxxxxxx when it is commited. Signed-off-by: Jason Andryuk --- Put this out as an example for the Xen modifications. Will split for actual submission. Instead of setting and clearing phys_base, add a dedicated variable? Make __startup_64() exit if phys_base is already set to allow calling multiple times, and use that and init_top_pgt instead of adding additional page tables? --- arch/x86/platform/pvh/head.S | 195 ++++++++++++++++++++++++++++--- arch/x86/xen/xen-head.S | 7 +- include/xen/interface/features.h | 5 + 3 files changed, 190 insertions(+), 17 deletions(-) diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S index f7235ef87bc3..bab857db55ef 100644 --- a/arch/x86/platform/pvh/head.S +++ b/arch/x86/platform/pvh/head.S @@ -50,11 +50,32 @@ #define PVH_CS_SEL (PVH_GDT_ENTRY_CS * 8) #define PVH_DS_SEL (PVH_GDT_ENTRY_DS * 8) =20 +#define rva(x) ((x) - pvh_start_xen) + SYM_CODE_START_LOCAL(pvh_start_xen) UNWIND_HINT_END_OF_STACK cld =20 - lgdt (_pa(gdt)) + /* + * See the comment for startup_32 for more details. We need to + * execute a call to get the execution address to be position + * independent, but we don't have a stack. Save and restore the + * magic field of start_info in ebx, and use that as the stack. + */ + mov (%ebx), %eax + leal 4(%ebx), %esp + ANNOTATE_INTRA_FUNCTION_CALL + call 1f +1: popl %ebp + mov %eax, (%ebx) + subl $ rva(1b), %ebp + movl $0, %esp + + leal rva(gdt)(%ebp), %eax + movl %eax, %ecx + leal rva(gdt_start)(%ebp), %ecx + movl %ecx, 2(%eax) + lgdt (%eax) =20 mov $PVH_DS_SEL,%eax mov %eax,%ds @@ -62,14 +83,14 @@ SYM_CODE_START_LOCAL(pvh_start_xen) mov %eax,%ss =20 /* Stash hvm_start_info. */ - mov $_pa(pvh_start_info), %edi + leal rva(pvh_start_info)(%ebp), %edi mov %ebx, %esi - mov _pa(pvh_start_info_sz), %ecx + movl rva(pvh_start_info_sz)(%ebp), %ecx shr $2,%ecx rep movsl =20 - mov $_pa(early_stack_end), %esp + leal rva(early_stack_end)(%ebp), %esp =20 /* Enable PAE mode. */ mov %cr4, %eax @@ -83,29 +104,83 @@ SYM_CODE_START_LOCAL(pvh_start_xen) btsl $_EFER_LME, %eax wrmsr =20 + mov %ebp, %ebx + subl $LOAD_PHYSICAL_ADDR, %ebx /* offset */ + jz .Lpagetable_done + + /* Fixup page-tables for relocation. */ + leal rva(pvh_init_top_pgt)(%ebp), %edi + movl $512, %ecx +2: + movl 0x00(%edi), %eax + addl 0x04(%edi), %eax + jz 1f + addl %ebx, 0x00(%edi) +1: + addl $8, %edi + decl %ecx + jnz 2b + + /* L3 ident has a single entry. */ + leal rva(pvh_level3_ident_pgt)(%ebp), %edi + addl %ebx, 0x00(%edi) + + leal rva(pvh_level3_kernel_pgt)(%ebp), %edi + addl %ebx, (4096 - 16)(%edi) + addl %ebx, (4096 - 8)(%edi) + + /* pvh_level2_ident_pgt is fine - large pages */ + + /* pvh_level2_kernel_pgt needs adjustment - large pages */ + leal rva(pvh_level2_kernel_pgt)(%ebp), %edi + movl $512, %ecx +2: + movl 0x00(%edi), %eax + addl 0x04(%edi), %eax + jz 1f + addl %ebx, 0x00(%edi) +1: + addl $8, %edi + decl %ecx + jnz 2b + +.Lpagetable_done: /* Enable pre-constructed page tables. */ - mov $_pa(init_top_pgt), %eax + leal rva(pvh_init_top_pgt)(%ebp), %eax mov %eax, %cr3 mov $(X86_CR0_PG | X86_CR0_PE), %eax mov %eax, %cr0 =20 /* Jump to 64-bit mode. */ - ljmp $PVH_CS_SEL, $_pa(1f) + pushl $PVH_CS_SEL + leal rva(1f)(%ebp), %eax + pushl %eax + lretl =20 /* 64-bit entry point. */ .code64 1: /* Set base address in stack canary descriptor. */ mov $MSR_GS_BASE,%ecx - mov $_pa(canary), %eax + leal rva(canary)(%ebp), %eax xor %edx, %edx wrmsr =20 + /* Calculate load offset from LOAD_PHYSICAL_ADDR and store in + * phys_base. __pa() needs phys_base set to calculate the the + * hypercall page in xen_pvh_init(). */ + movq %rbp, %rbx + subq $LOAD_PHYSICAL_ADDR, %rbx + movq %rbx, phys_base(%rip) call xen_prepare_pvh + /* Clear phys_base. startup_64/__startup_64 will *add* to its value, + so start from 0. */ + xor %rbx, %rbx + movq %rbx, phys_base(%rip) =20 /* startup_64 expects boot_params in %rsi. */ - mov $_pa(pvh_bootparams), %rsi - mov $_pa(startup_64), %rax + lea rva(pvh_bootparams)(%ebp), %rsi + lea rva(startup_64)(%ebp), %rax ANNOTATE_RETPOLINE_SAFE jmp *%rax =20 @@ -113,20 +188,27 @@ SYM_CODE_START_LOCAL(pvh_start_xen) =20 call mk_early_pgtbl_32 =20 - mov $_pa(initial_page_table), %eax + leal rva(initial_page_table)(%ebp), %eax mov %eax, %cr3 =20 mov %cr0, %eax or $(X86_CR0_PG | X86_CR0_PE), %eax mov %eax, %cr0 =20 - ljmp $PVH_CS_SEL, $1f + pushl $PVH_CS_SEL + leal rva(1f)(%ebp), %eax + pushl %eax + lretl + 1: call xen_prepare_pvh - mov $_pa(pvh_bootparams), %esi + leal rva(pvh_bootparams)(%ebp), %esi =20 /* startup_32 doesn't expect paging and PAE to be on. */ - ljmp $PVH_CS_SEL, $_pa(2f) + pushl $PVH_CS_SEL + leal rva(2f)(%ebp), %eax + pushl %eax + lretl 2: mov %cr0, %eax and $~X86_CR0_PG, %eax @@ -135,15 +217,19 @@ SYM_CODE_START_LOCAL(pvh_start_xen) and $~X86_CR4_PAE, %eax mov %eax, %cr4 =20 - ljmp $PVH_CS_SEL, $_pa(startup_32) + pushl $PVH_CS_SEL + leal rva(startup_32)(%ebp), %eax + pushl %eax + lretl #endif + SYM_CODE_END(pvh_start_xen) =20 .section ".init.data","aw" .balign 8 SYM_DATA_START_LOCAL(gdt) - .word gdt_end - gdt_start - .long _pa(gdt_start) + .word gdt_end - gdt_start - 1 + .long 0 .word 0 SYM_DATA_END(gdt) SYM_DATA_START_LOCAL(gdt_start) @@ -163,5 +249,82 @@ SYM_DATA_START_LOCAL(early_stack) .fill BOOT_STACK_SIZE, 1, 0 SYM_DATA_END_LABEL(early_stack, SYM_L_LOCAL, early_stack_end) =20 +/* + * We are not able to switch in one step to the final KERNEL ADDRESS SPACE + * because we need identity-mapped pages. + */ +#define l4_index(x) (((x) >> 39) & 511) +#define pud_index(x) (((x) >> PUD_SHIFT) & (PTRS_PER_PUD-1)) + +L4_PAGE_OFFSET =3D l4_index(__PAGE_OFFSET_BASE_L4) +L4_START_KERNEL =3D l4_index(__START_KERNEL_map) +L3_START_KERNEL =3D pud_index(__START_KERNEL_map) + +#define SYM_DATA_START_PAGE_ALIGNED(name) \ + SYM_START(name, SYM_L_GLOBAL, .balign PAGE_SIZE) + +/* Automate the creation of 1 to 1 mapping pmd entries */ +#define PMDS(START, PERM, COUNT) \ + i =3D 0 ; \ + .rept (COUNT) ; \ + .quad (START) + (i << PMD_SHIFT) + (PERM) ; \ + i =3D i + 1 ; \ + .endr + +/* + * Xen PVH needs a set of identity mapped and kernel high mapping + * page tables. pvh_start_xen starts running on the identity mapped + * page tables, but xen_prepare_pvh calls into the high mapping. + * These page tables are need to be relocatable and are only used until + * startup_64 transitions to init_top_pgt. + */ +SYM_DATA_START_PAGE_ALIGNED(pvh_init_top_pgt) + .quad pvh_level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE_NOENC + .org pvh_init_top_pgt + L4_PAGE_OFFSET*8, 0 + .quad pvh_level3_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE_NOENC + .org pvh_init_top_pgt + L4_START_KERNEL*8, 0 + /* (2^48-(2*1024*1024*1024))/(2^39) =3D 511 */ + .quad pvh_level3_kernel_pgt - __START_KERNEL_map + _PAGE_TABLE_NOENC +SYM_DATA_END(pvh_init_top_pgt) + +SYM_DATA_START_PAGE_ALIGNED(pvh_level3_ident_pgt) + .quad pvh_level2_ident_pgt - __START_KERNEL_map + _KERNPG_TABLE_NOENC + .fill 511, 8, 0 +SYM_DATA_END(pvh_level3_ident_pgt) +SYM_DATA_START_PAGE_ALIGNED(pvh_level2_ident_pgt) + /* + * Since I easily can, map the first 1G. + * Don't set NX because code runs from these pages. + * + * Note: This sets _PAGE_GLOBAL despite whether + * the CPU supports it or it is enabled. But, + * the CPU should ignore the bit. + */ + PMDS(0, __PAGE_KERNEL_IDENT_LARGE_EXEC, PTRS_PER_PMD) +SYM_DATA_END(pvh_level2_ident_pgt) +SYM_DATA_START_PAGE_ALIGNED(pvh_level3_kernel_pgt) + .fill L3_START_KERNEL,8,0 + /* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) =3D 510 */ + .quad pvh_level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE_NOENC + .quad 0 /* no fixmap */ +SYM_DATA_END(pvh_level3_kernel_pgt) + +SYM_DATA_START_PAGE_ALIGNED(pvh_level2_kernel_pgt) + /* + * Kernel high mapping. + * + * The kernel code+data+bss must be located below KERNEL_IMAGE_SIZE in + * virtual address space, which is 1 GiB if RANDOMIZE_BASE is enabled, + * 512 MiB otherwise. + * + * (NOTE: after that starts the module area, see MODULES_VADDR.) + * + * This table is eventually used by the kernel during normal runtime. + * Care must be taken to clear out undesired bits later, like _PAGE_RW + * or _PAGE_GLOBAL in some cases. + */ + PMDS(0, __PAGE_KERNEL_LARGE_EXEC, KERNEL_IMAGE_SIZE/PMD_SIZE) +SYM_DATA_END(pvh_level2_kernel_pgt) + ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY, _ASM_PTR (pvh_start_xen - __START_KERNEL_map)) diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S index a0ea285878db..e6994aaa8cc3 100644 --- a/arch/x86/xen/xen-head.S +++ b/arch/x86/xen/xen-head.S @@ -106,7 +106,12 @@ SYM_CODE_END(xen_cpu_bringup_again) # define FEATURES_PV 0 #endif #ifdef CONFIG_XEN_PVH -# define FEATURES_PVH (1 << XENFEAT_linux_rsdp_unrestricted) +# ifdef CONFIG_RELOCATABLE +# define FEATURES_PVH (1 << XENFEAT_linux_rsdp_unrestricted) | \ + (1 << XENFEAT_pvh_relocatable) +# else +# define FEATURES_PVH (1 << XENFEAT_linux_rsdp_unrestricted) +# endif #else # define FEATURES_PVH 0 #endif diff --git a/include/xen/interface/features.h b/include/xen/interface/featu= res.h index 53f760378e39..92e7da9194c8 100644 --- a/include/xen/interface/features.h +++ b/include/xen/interface/features.h @@ -97,6 +97,11 @@ #define XENFEAT_not_direct_mapped 16 #define XENFEAT_direct_mapped 17 =20 +/* + * PVH: If set, the guest supports being relocated in physical memory on e= ntry. + */ +#define XENFEAT_pvh_relocatable 20 + #define XENFEAT_NR_SUBMAPS 1 =20 #endif /* __XEN_PUBLIC_FEATURES_H__ */ --=20 2.44.0 g