From nobody Sat Jun 13 07:34:01 2026 Delivered-To: importer@patchew.org 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; 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1781019892; cv=pass; d=zohomail.com; s=zohoarc; b=TnFVpL2zEr8NKfpWToNbfvasu4N1MLnS6XwKkSmU14AW/jeDZ5yWy9DwOaC/mWG2dtfq05Stbesjvw9wDzOXn4q0ZfPXxptt8W8SNkmGTK4IGcuYxVTwm4XfA+4XU/lO2jXXgPmGwlCh5+mUFZytxDomDYCsc9dxxBiZZPtj3Wo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781019892; 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=Bzc1oPu1NL/usio0KuZ5ijXQQ8zkcN2uEf2vo0rgkT0=; b=ER7uEUzUtBLTnU4iYFYHFyqXd87FiMKIHGvyRJP+reWLTPPNdCOMtRYf153T4ZkUkOgfufj23NnaYxyLWVreKVXoo8scGushsaS0BDDMZKS/zC2ZAoLtroO1k2DAnJYdTD3ku2sMUTien7VcAsEvcm+ilPziDBijlcmbHGyWYy0= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1781019892225225.32101932654234; Tue, 9 Jun 2026 08:44:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1333569.1596665 (Exim 4.92) (envelope-from ) id 1wWyd1-0007sj-Ko; Tue, 09 Jun 2026 15:44:35 +0000 Received: by outflank-mailman (output) from mailman id 1333569.1596665; Tue, 09 Jun 2026 15:44:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWyd1-0007sc-IB; Tue, 09 Jun 2026 15:44:35 +0000 Received: by outflank-mailman (input) for mailman id 1333569; Tue, 09 Jun 2026 15:44:34 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWyd0-0007s0-5n for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 15:44:34 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wWycz-004x8p-Ie for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 17:44:33 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a2834df-e002-0a2a0a5209dd-0a2a450bb8ae-6 for ; Tue, 09 Jun 2026 17:44:33 +0200 Received: from [52.101.62.70] (helo=DM5PR21CU001.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a2834df-212f-0a2a450b0019-34653e465aa2-4 for ; Tue, 09 Jun 2026 17:44:33 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by CH7PR03MB7785.namprd03.prod.outlook.com (2603:10b6:610:24f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Tue, 9 Jun 2026 15:44:30 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0113.011; Tue, 9 Jun 2026 15:44:30 +0000 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XKFy9O8XztXGAiR8C/zCBA26YZmXdkLRrTaQDPzB6vO6HMxdHBcjkLeHQbDGjBEBwuF6hj3qNjTaYT13ofNflT1ndBPxaksJGQBK4uVfNtSx1exWGL8QC8uTFQsGgtyB8u1KT9awKD7eUeWvfUqVCv/AYuLSScm41kz85Mu/83OjsTwzleaCwlgMCh/nbtVeN45BhjZ3WQRAqZYn74q+kRAmWxNbxb12p7o45YBxcbU4yvXjY76KGzoA2/6br4w3OUJL7RgoF1cgSEoig03e8v2cQ2zh1SPkhXYbjC2m94NwfJCohD/SsxgStqT+hCn/LxYZXs/9ISvwZ6qnbLG9cg== 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=Bzc1oPu1NL/usio0KuZ5ijXQQ8zkcN2uEf2vo0rgkT0=; b=ghwGPqdlAOT77Z/z5uFyTphQnfpzILgbTimb6jqO1pi7DNjqu0oZAH0Ts4KJw4COUUDbXJ/YTwB7+MvV2qcZ3m8+gCwkUhGUQMUoBk/jQfld06nSXddx5kg7jwn1G3+EfvbS8YSVYLU+FDeBmWfePTqGoxvC1FVcOrh1YcEDYKdgshixRzHPZo6qiqlZ7YYCIz3SUKe5Aa7bS3zgxNdz0mYhFB+l+dz6z/0EhDbToxqnp9bU5TTADI43id5RIkVGNpT2s32R4sCHUP6i2WzLZl/l8zX43zAycs76xe+SxrizeLEQIHcYZPgOs0hFYjkQ3QvUX50iPPzCDEEa8ZcXUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Bzc1oPu1NL/usio0KuZ5ijXQQ8zkcN2uEf2vo0rgkT0=; b=ffFlcgVZQfdyMCFxLNww30rQxWPyYjz1y9QK+IZFPTxjgnsEQs5jD6H2NSJg2aO/gugblwnCdPkyrExXyoRBMCQnsWq+YMollP1N0OEtCll1UGCD5neaqrXc9SDcl//vEs4qCBifk1wMgddl2hpC/qEvnWGrADiDpa/bmY2pFD0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger.pau@citrix.com, Ross Lagerwall , Kevin Lampis Subject: [PATCH 1/7] x86/kexec: add digest checks Date: Tue, 9 Jun 2026 16:45:12 +0100 Message-ID: <20260609154518.779757-2-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260609154518.779757-1-kevin.lampis@citrix.com> References: <20260609154518.779757-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0124.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c6::14) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|CH7PR03MB7785:EE_ X-MS-Office365-Filtering-Correlation-Id: 8b147230-7207-4e6c-9906-08dec63dfda6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: pGo67S51EMGohECkz6pIf5d/paawaz+NTpjUMbeyyTYifXUb1/IZ0wy5TEmkYjN+c6Cu0/h9cGC+pzcHAwr4zbvZY9OKN4NSvscsb96WXVMk7MJqmy3kB/lRecGdAumyDjseK6ibJFJvgTeJ1gNEkL8++rVF0xjQCVqjUkY6addTZAjJv9gwtL2adoTlTMY+4biATz5XdrSCNMBxtW6NF/PSgEpEqCkfIYig3sjkkqXcH0gd+0l2SmpbBwoYZOKCiIMvCTuetPMC6ERCss6ql5nk3eP443Yan49AMF0NFG8t9F3lQZlvm2lTMLz9pVyq26oVgfmeMp5trjOcbR0BszXzluJVh1ntkyJxADzTH8PSc1ieutsflCCpd/r401CqkUo1aHfqDVz5eKRYzVJKuGgup4GSyAb5QVXl5YKv5lPaGAR3z8c/PEO+9mgcsUoQfGJJPjos8rsXbYD3+tN31UgjDtKR9UWr+rNZ0BLgGvDXYTnoPn2BXp/8BxBfm3cWoAPJOV8CcutKbE6t/jLDXfD6VP8lt0Kg6Sm2ACdYvmJKCgBR4SWhJL/0nvF09TxNkwu13V3PHvWNLq8X1hmtkcp4DdKyPJADckI3WhKKnc2ChqvPNxcbqv9wCZZt/Ssoqw0akBvV6Bc3tZZW7algdxyr4evNsv8KNP5kMN7EwgrgpXun1SYNlCroXeTiX/pn X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?A8IVL2m6eWDFcEl+wdwi9w/7IVk3UtrLGVpbToPvDFXd3lkFg09s4uO97ypf?= =?us-ascii?Q?JxYNtpn7arzz8liSTmsutoyEzNjnVB9nzgm7gNXBiuA6J8HhcP+AiGovsP8o?= =?us-ascii?Q?SpV+UGhAZ7lS2vOBahDw3SyMte2gsfwDIh3igr7Bk5Q4unEY9Gg8PGaUT+WZ?= =?us-ascii?Q?Kh3PW1z6UCxKEatTU2YhJXt0u6/E5XWEGCAwzTdPTeLz384mTE+ExaOuyfv+?= =?us-ascii?Q?BwRWUpN3pdBeF7OaYOFhBeBOM1DwGq5D1MlKPjNTDltbLpSch9pIZx+cQJsm?= =?us-ascii?Q?A4sND+I7btxyWReIinx7Jv3BRqw3wLJk52XQF/EpOl9vRBFQxhI1YZUJuFXv?= =?us-ascii?Q?uVAhmbUwBC1GWwRh/OibJmczpehHhuGmOAR41onvqiOhrzhLzPlxqXq0y6Eq?= =?us-ascii?Q?LQc3lSeHqT+cPAyW3ItluHRFRCsfzzGXS4ME6MVkJDx4WNTmEOvEMVgSn4f1?= =?us-ascii?Q?slgfLjtqCne6Io6GjlL6vsaz4Sjl60flLeBlRODo4UGrYmUwgb56eBBjH0P4?= =?us-ascii?Q?EYrAnw7zyEDIfCT53+laiyy1UCPiUuZ9/BBePWbdZP/NOC//acLpq/D9BCh+?= =?us-ascii?Q?chhOLNlRj8Ck72XTcCiGoYVcQ4PJghqcWTO5Y0NEEFiI7Vsq78eqyxGr0ZzF?= =?us-ascii?Q?aVeSbG5XvPTqYjsycBySwjjvJe3mJmOxHwEeO7LAnN6IQgp/Ow9tzvRGWGjx?= =?us-ascii?Q?2Jf3Ru8w5Lgd40MXNaXXurHqUYFGaW6bfrK1IFm6W+JLGx5PRuZwuom9AKGb?= =?us-ascii?Q?F7423KcI1JG5DmXiUkWbOuDmiICGS2EmZfhZPuEFdWcc3/hLxhajc3nAJnDi?= =?us-ascii?Q?AofB6kMIm0PuUpNhbsL4zCK/Ac4OtODcLEZaxsSBlRoxlvpOk2ZBkHGFflf2?= =?us-ascii?Q?SIESgJ9VTLDMCIyK/iOLmn9AjsDqjRudd5SloO3FUo/G75tuKBNrahwt1Z+C?= =?us-ascii?Q?SAGy8Q62lc8gT4cTzRE3tqIav5Dz8t5lA6BoeMGwHMoe/nhRQxnKN3Xt3659?= =?us-ascii?Q?la8nwGO3QD9/TLVH7s7ONQkFHDaDdIgGPmaLazSlHpmXPxgHNN46l6tlb1P8?= =?us-ascii?Q?0WY5Spr67ZUQxEYeLSwGRJelIN8DprNV9kQzqaq07Rre8yEukCr7bNCFflnF?= =?us-ascii?Q?FDyjDmdAlcE13B3ERJlMxn5W/lYFKhluJ8OTzEm4KlGf5mIf8ArQ3BRjYWlD?= =?us-ascii?Q?Bo3cs5d/S0lrRWfC66/eYH4OE0J1rx0cnisSaOmAaLWbGUjpiKk4jZfHhuiX?= =?us-ascii?Q?K5c0NoWt8OdlqTAXNdavT7P/SBc98CtnPJqn8o+CmGxbHdFdAaN4C44X5CC1?= =?us-ascii?Q?obziI5TvuefwvWvjd7sem54nI6f8vBR+BHvuCGMTlAyloeSQWtI1g0w5QewL?= =?us-ascii?Q?QCusVYaClhi55SohgI94AoeIP2DWwkzpxwmfvK9w++HWiBoB2cvQwfBYVb07?= =?us-ascii?Q?xpM15iLmVP6UhQ72yNazB3VK+uWgkd/gziB76vvsMAyUZeLfc9TciT/mSfJY?= =?us-ascii?Q?MzIjNjSADim1wuyn6Bf84BQLeAIV3/X/QS+ci15HZ28K0D6swmGuFihT8baf?= =?us-ascii?Q?wVsrfQj3JTZQrx6acM9Uuu9+9evfWG0dZMBjRhYzBVD8DkZ2PkU02Gnnt470?= =?us-ascii?Q?/+A9ZwRLvyLyWk7MHGhcHY2VfeZ4Av4p0VDGb0AnqiMRSEhKmtDnE0aFYlOd?= =?us-ascii?Q?x0PqMHgLawgVxfmsPsos/yK5WWXoot9K1kcVqJ40H+VoLYMqdPLs4etRb6Un?= =?us-ascii?Q?N+FBrAi38Q=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b147230-7207-4e6c-9906-08dec63dfda6 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:44:29.8994 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4ubGG8shG/XILmEBvcDgkriGt87H61seWvMCLtSF67nNG4r3E21Bxpbwd9mz94r8/esSxOBoveKKsYYGjn6THg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR03MB7785 X-purgate-ID: tlsNG-42698a/1781019873-1B979F3B-A420759C/0/0 X-purgate-type: clean X-purgate-size: 5961 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1781019893993158500 Content-Type: text/plain; charset="utf-8" From: Ross Lagerwall During kexec load a sha256 digest is calculated of all the kexec segments combined. This digest is stored and verified again during kexec execution. This is a requirement for Secure Boot to ensure that kexec data has not been tampered with or corrupted between signature verification and actual execution. Only kexec crash is supported. The segments for normal kexec are stored in temporary buffers and moved to their intended destination during execution. To calculate/verify the normal kexec data before relocation would involve walking the relocation table to find every temporary buffer which was out of scope for Secure Boot work. Signed-off-by: Ross Lagerwall Signed-off-by: Kevin Lampis --- xen/common/kexec.c | 10 ++++ xen/common/kimage.c | 98 ++++++++++++++++++++++++++++++++++++++++ xen/include/xen/kimage.h | 6 +++ 3 files changed, 114 insertions(+) diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 65776a95fd..c920bc6d8a 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -383,6 +383,12 @@ void kexec_crash(enum crash_reason reason) if ( !test_bit(KEXEC_IMAGE_CRASH_BASE + pos, &kexec_flags) ) return; =20 + if ( kimage_verify_digest(kexec_image[KEXEC_IMAGE_CRASH_BASE + pos]) != =3D 0 ) + { + printk(XENLOG_ERR "kexec digest failed, won't boot corrupted image= \n"); + return; + } + kexecing =3D true; =20 if ( kexec_common_shutdown() !=3D 0 ) @@ -1132,6 +1138,10 @@ static int kexec_load(XEN_GUEST_HANDLE_PARAM(void) u= arg) if ( ret < 0 ) goto error; =20 + ret =3D kimage_calc_digest(kimage, kimage->digest); + if ( ret ) + return ret; + ret =3D kexec_load_slot(kimage); if ( ret < 0 ) goto error; diff --git a/xen/common/kimage.c b/xen/common/kimage.c index 6202491f7e..018ef66451 100644 --- a/xen/common/kimage.c +++ b/xen/common/kimage.c @@ -20,9 +20,12 @@ #include #include #include +#include =20 #include =20 +#define KIMAGE_SHA256_REGIONS 16 + /* * When kexec transitions to the new kernel there is a one-to-one * mapping between physical and virtual addresses. On processors @@ -820,6 +823,101 @@ int kimage_alloc(struct kexec_image **rimage, uint8_t= type, uint16_t arch, return result; } =20 +static int kimage_calc_one_digest(struct sha2_256_state *ctx, + xen_kexec_segment_t *segment) +{ + paddr_t dest; + unsigned long sbytes; + int ret =3D 0; + + sbytes =3D segment->buf_size; + dest =3D segment->dest_maddr; + + while ( sbytes ) + { + unsigned long dest_mfn; + void *dest_va; + size_t schunk, dchunk; + + dest_mfn =3D dest >> PAGE_SHIFT; + + dchunk =3D PAGE_SIZE; + schunk =3D min(dchunk, sbytes); + + dest_va =3D map_domain_page(_mfn(dest_mfn)); + if ( !dest_va ) + return -EINVAL; + + sha2_256_update(ctx, dest_va, schunk); + + unmap_domain_page(dest_va); + if ( ret ) + return -EFAULT; + + sbytes -=3D schunk; + dest +=3D dchunk; + } + return 0; +} + +int kimage_calc_digest(const struct kexec_image *image, + uint8_t digest[SHA2_256_DIGEST_SIZE]) +{ + int ret; + struct sha2_256_state ctx; + unsigned int s; + + if ( image->type =3D=3D KEXEC_TYPE_DEFAULT ) + { + /* TODO implement digest calculation for normal kexec */ + return 0; + } + + if ( image->nr_segments > KIMAGE_SHA256_REGIONS ) + { + dprintk(XENLOG_DEBUG, "More segments than allocated SHA256 regions= \n"); + return -E2BIG; + } + + + sha2_256_init(&ctx); + + for ( s =3D 0; s < image->nr_segments; s++ ) { + ret =3D kimage_calc_one_digest(&ctx, &image->segments[s]); + if ( ret ) + return ret; + } + + sha2_256_final(&ctx, digest); + return 0; +} + +int kimage_verify_digest(const struct kexec_image *image) +{ + uint8_t digest[SHA2_256_DIGEST_SIZE]; + int ret; + + if ( image->type =3D=3D KEXEC_TYPE_DEFAULT ) + { + /* TODO implement digest check for normal kexec */ + return 0; + } + + ret =3D kimage_calc_digest(image, digest); + if ( ret ) + return ret; + + if ( memcmp(digest, image->digest, sizeof(digest)) !=3D 0 ) + { + printk(XENLOG_ERR "kexec digest failed expected %*phN but got %*ph= N\n", + SHA2_256_DIGEST_SIZE, image->digest, + SHA2_256_DIGEST_SIZE, digest); + return 1; + } + + return 0; +} + int kimage_load_segments(struct kexec_image *image) { int s; diff --git a/xen/include/xen/kimage.h b/xen/include/xen/kimage.h index fccba1d88d..ad52551ba2 100644 --- a/xen/include/xen/kimage.h +++ b/xen/include/xen/kimage.h @@ -11,6 +11,7 @@ =20 #include #include +#include #include =20 #define KEXEC_SEGMENT_MAX 16 @@ -37,6 +38,8 @@ struct kexec_image { =20 /* Address of next control page to allocate for crash kernels. */ paddr_t next_crash_page; + + uint8_t digest[SHA2_256_DIGEST_SIZE]; }; =20 int kimage_alloc(struct kexec_image **rimage, uint8_t type, uint16_t arch, @@ -52,6 +55,9 @@ mfn_t kimage_entry_mfn(kimage_entry_t *entry, bool compat= ); unsigned long kimage_entry_ind(kimage_entry_t *entry, bool compat); int kimage_build_ind(struct kexec_image *image, mfn_t ind_mfn, bool compat); +int kimage_verify_digest(const struct kexec_image *image); +int kimage_calc_digest(const struct kexec_image *image, + uint8_t digest[SHA2_256_DIGEST_SIZE]); =20 #endif /* __ASSEMBLER__ */ =20 --=20 2.52.0 From nobody Sat Jun 13 07:34:01 2026 Delivered-To: importer@patchew.org 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; 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1781019902; cv=pass; d=zohomail.com; s=zohoarc; b=ROsokxBRr/Yx++wkNWEETJZCjO2Zknca7ydbVKxRbhBK5M9MCUZgby0fviJH+g//48h0M5RlU25K9XsH9Q+4ZGa5lWENxRhFnerOc2w/Zdw+yjNdGn6Ir/2Tal1qCn/OiJmweQdWqNoBGGC6mlS16G4igZek2a3vBu01t0x7yas= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781019902; 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=XIH9KvupJ8ijOA24fC5XIyF7FAhRnmR/5dpkrBIvgl0=; b=NpOwXFelPbWWLbqcGufNuxkCcA3gWwH7mjQwJ/3R/nvjp2WWc2pI5yVfvu3VLBNe+eTf8jfHgrH84Ab6yJ1ih2AsyIlFcH5ux1fDO3CuR6P8xz4uTuUpIQMhCN64X00S5OsxWDoVZuAE1jp5osLBo5xqyAwBqWXFIhA2WGy+fQY= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1781019902776712.559449544502; Tue, 9 Jun 2026 08:45:02 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1333570.1596675 (Exim 4.92) (envelope-from ) id 1wWydC-0008DF-Tm; Tue, 09 Jun 2026 15:44:46 +0000 Received: by outflank-mailman (output) from mailman id 1333570.1596675; Tue, 09 Jun 2026 15:44:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydC-0008D7-Pu; Tue, 09 Jun 2026 15:44:46 +0000 Received: by outflank-mailman (input) for mailman id 1333570; Tue, 09 Jun 2026 15:44:45 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydA-0008Ae-VE for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 15:44:45 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wWydA-004xC6-Bv for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 17:44:44 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a2834df-e002-0a2a0a5209dd-0a2a450bb8ae-18 for ; Tue, 09 Jun 2026 17:44:44 +0200 Received: from [40.93.195.5] (helo=SN4PR2101CU001.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a2834ea-212f-0a2a450b0019-285dc3050a70-3 for ; Tue, 09 Jun 2026 17:44:44 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by CH7PR03MB7785.namprd03.prod.outlook.com (2603:10b6:610:24f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Tue, 9 Jun 2026 15:44:41 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0113.011; Tue, 9 Jun 2026 15:44:40 +0000 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=koAZlM+AodrRo+Z5ExfEvGUFVVGWvWOEr57W7+cVtAb5WhXv+Wio4rZFGrpj3DQj2Nba4mrujARaDBJJL5lQ+3uFn614nzdhUWEhxbFvtczDub/UrwFIz4+8jpi3bctBCPXngi9I6vW+F13WAAnca4pt0yL/ayix0NqsJOSuYXNGAWDbOXMkNTgUiPz3G4O0Q+fzwVgyaGos1cJ2fepr6pJFD2kQDGjGknq0q44jIUvpKT5LY9B3NyKNr5HtmarJP1V2b+ZHW++zTOJ/8RbjSi7VkBHMsWag5vW6ir4NSGBnFhbuZpapPKBtWHDGBR9Sj+EHTD21hB5+u9isoL5Lxw== 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=XIH9KvupJ8ijOA24fC5XIyF7FAhRnmR/5dpkrBIvgl0=; b=HtKceA6KCAsEamPo0GnDjgE5wtdB3DntEBGAXf2cG9u59zQNYRuQvjvMWqx2FjEhPpkAsAdgLZ+2FaqBoPTX/OQs3JjXU5JS+Qsy1nGVbmzEubgqk3qur3KXM3uxOzRnm4JX3QG/5WKhS4RJ/qEOzBrrQ6rtgV7ziJl7hyelC7LToZ6FH+ITAP1yt1oymj/UWyUHSMlB2BYRr7kuJY23lYC4dOCaXr3OsvlIAME3lMOQ8fC+9+VjF37G/OhCh/tZQSWpiVT66JeusndLPTfcJexvTF1RxB03otDNp7M0W85cw+NkyNkTZTMD25RuRRURj/UJk4rDxc9NPi/t9RzMAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XIH9KvupJ8ijOA24fC5XIyF7FAhRnmR/5dpkrBIvgl0=; b=cxNiQvGyPkWV3Wz+No60fp5eMt7FhO2FvovxHjL71WJPbGDPIXMm3wH8jIDptiPHRBcZo9ks69gRbnGG+Aw+mJAQgIf+dht/LYNpkhutVzTFdSdqRE5lql3lvPWdc2vxEvWg/HsvMmcDmffbCDj44uyXxDXb+9HD35hT7qPmWxY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger.pau@citrix.com, Ross Lagerwall , Kevin Lampis Subject: [PATCH 2/7] x86/kexec: rename setup_header to bzimage_header Date: Tue, 9 Jun 2026 16:45:13 +0100 Message-ID: <20260609154518.779757-3-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260609154518.779757-1-kevin.lampis@citrix.com> References: <20260609154518.779757-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0052.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:152::21) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|CH7PR03MB7785:EE_ X-MS-Office365-Filtering-Correlation-Id: 321b8c0d-bb79-48df-4ade-08dec63e041c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|3023799007|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: bfrnUdKKJKIiVeLj7O4iU1VE6TOcmJQv9iLg64QspBaqwmqspEV+dcG2pegmu47FOnIFypuZzHH86vLJhwWJminEdWfdGOcVf36IuXynghlSCd1EYTjIUDk9FAPUVkTIp7Ez4Ym85K5HeyvlrGxeWBtYqAoxhj6oeVwbpruU3bpT5CKCV5e8bOJuz4+/b74qU2Rpj426sAdDBpM2uXHHRGu8XhUAZLhg8kGhvJ3A/WvEBVz/0tk+KWLD1D4eDbl/ZdeNGTpQ1QuPgpevmmYPoael8ScmZQjYh83rmbEGywHOUqnoVs/WaB5Yga8FBvOtizcJ8AzS1Df7Aet63tW2Djd5MPjm/HFwEvwvVdvHwcB5mL7VrnEjcsBiDCbyLYN6lb08P6v5oOB75H4NyjtTxXnxmed58VdWB6I9RTyMqM0SJfbH+YJ3tv3e+ElUXQ8xnw3x8vuEwP8/eEloDE1lIF2YFEHDv+TdZufICVkd/zAogr6qOhTOYaURwmU8iYuE1IkZn7BWLoIQI6gnvNPfviKz/FtaWf142NBzIxS+OxsNN34UnxmsYMKHUFL8a21rn/tWeTQRVu2N0Va18ZXOin0krkCIr3iOVHrtT67i0I4BC5ihytrKMR8oyuZ6+cQ3D/4l3dFVz34lTsauNARyPa1Q6TJVPa9HOncawwOhMgiK2D6RqRPjrNMBUQN0B6Eo X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(22082099003)(3023799007)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?n9MHSLxaE8sI06XlPGtWJw8hdk+R3UUwt3V2SPw9Tz710b8OjY+XDAmIQUNd?= =?us-ascii?Q?SoKuZIiAy1S5gpbMkZN75GXaTK7DUE0H4LLa/TMhwalz0JVNhBbBgu/TVHg0?= =?us-ascii?Q?vbW4xxF28lH8M+RKYILkNPdGV66Y6sWJJWteZ6/qo0pFi7VUylHW9993nn+H?= =?us-ascii?Q?MHCMBWAcdSRnYN9aEci2N/kx8zD/ditI7SRVIlwRo8sO2bgLDHcSBhrrbJd4?= =?us-ascii?Q?yYxBojjy2XwZbZpR1d4jMuZ6dpAyu6yvDG3lcwJo5NnOlJySJXI4crb0c1zO?= =?us-ascii?Q?o3Dc5KFgddecGS8akPpwI3th8R69eR384zkYVe+SXJDJH6MYZ58/Oka2iUnA?= =?us-ascii?Q?suVCDCQH2MzU6Crgal8D1x511/xmop21urPuflgVrPKCqcPfDDQlxUcdLUFM?= =?us-ascii?Q?ND6DJ844yKB3/rxZ1v/nxmQFyVX6aNRsxiDyKXAyf3sU/3XiiM0gHjrBhkba?= =?us-ascii?Q?Sjg0gbYr/23GU4g+FK0IQbIXQiQ88lT/YWjVAxcBUSZtWR5vu+vZQORA6oip?= =?us-ascii?Q?W+WXhHj0Za2ZgbqIhBdFn7V7spvZrrKay/Er3EllPJfN7qN/bHSLMmzgiprn?= =?us-ascii?Q?kPRfJVrNBz6xYNHws1ZATT88Tn3R/Vnu/4FEg9YQNB6rYswdcroLf8FdFEtL?= =?us-ascii?Q?rrz5yKVQgCIwkKBuVdQOyYrSBNlYPhRU9tJUaE048IA0qmZEJF23Vl8HDgJe?= =?us-ascii?Q?c0mvN2C9zAs/UUhY3QrCELmmjTl2Td0fYMCbF4MDbkXEuNQhgwXJQ/ahPkAN?= =?us-ascii?Q?0xybOgCluP07hRIt8RU8qZbThQflhQudaWPy02TIpCeboRwvZIyeXsozWxgd?= =?us-ascii?Q?US09FL84vuNBSHvFFnP0YNOe4+Rp2MjgkVNY03tfa+2cWAtkjTrjvA8Kkx2o?= =?us-ascii?Q?+OnqFH7+pA6C/qNg0jjrNGMCMJ2CMiqvmpxhZ9172PheoLjL1hJUQGIWln0n?= =?us-ascii?Q?AHHKCU+Uvbsu4A0TcoiqVL7wZn/NHUFmcH5aXy6i43SrOLjs85/PWT/o8Liy?= =?us-ascii?Q?5AYu8wzqRL1jTo3J/1ldVlGemAVbYs8eWmlRisQqremU911OS1DWHwcXnyaK?= =?us-ascii?Q?R1NSTHEWubfWYnWZ1IwQd2BVF729Hqvqr2QExmdKGLzWBqVq5NQMUFRW+67k?= =?us-ascii?Q?vMeyR/3gVYGrM+K5whU/NiC6HnlPJ8PFRLf68e3zL7EAhAQqyLlDvVC6DLMg?= =?us-ascii?Q?omc5lX4DzeIHCfds9g+A2EafJU3PqprhiNrUZzCr3RgtYNHZnIt5RX2Fx8+Z?= =?us-ascii?Q?4l87HO7nIUwqiVHZ23yaut2OYc1PGgsjAm0F9CmQilTnoyS6hJ1Cn6BPcFeW?= =?us-ascii?Q?QEOaw7uB/VZHsVJY1jcUFbwzoUKigqlT2H5e4X32P4aW6tEDf0k4wP328JpB?= =?us-ascii?Q?REvfsyQo4jmWfYxSzOKONLRea/vrlFzXoPOjARYc3uYO2Uu3iNSjMwC9MLfA?= =?us-ascii?Q?1ZFHnIvQZgqC143NEnHxURRbwgQYlQirDVH+UJQwmPIpUuOeEFcqHdJa54uN?= =?us-ascii?Q?eQYEbU1CwiqsSYu3f9qDGdmbkHJMdSqAFRPG2gwtCLdwCSb2wMNnUjmGOBLJ?= =?us-ascii?Q?pzIFxzwRwS/R8AT+jznGCz9ixjbBpLINFohGXrB9xzzzzZQisSt4vLlX6gXg?= =?us-ascii?Q?ERylJYKeK+Oj0/DEP5ypQ3GI78+8nd+wGV8GDxDEecBCors9xSLN0b6vfx6K?= =?us-ascii?Q?QwgQDSd4Ui+jetcB6N2koEvDDX88uu078bYV/ol9yFvOuIovsJLONlCRgeKL?= =?us-ascii?Q?Oj9AvibIJw=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 321b8c0d-bb79-48df-4ade-08dec63e041c X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:44:40.6820 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dLA/SBxQBSv/7raPc2WsAplblU+BJ3yQgtE1GFSBwaUEEH9kxS2ArQebPO7o971vwsAd3h41iGt7+mmTSHAzzw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR03MB7785 X-purgate-ID: tlsNG-42698a/1781019884-1A573F3B-BE93899A/0/0 X-purgate-type: clean X-purgate-size: 5430 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1781019903790158500 Content-Type: text/plain; charset="utf-8" From: Ross Lagerwall The newly named bzimage_header is moved to a header file because part of it will be needed for Secure Boot kexec. Signed-off-by: Ross Lagerwall Signed-off-by: Kevin Lampis Reviewed-by: Andrew Cooper --- xen/arch/x86/bzimage.c | 47 +++--------------------------- xen/arch/x86/include/asm/bzimage.h | 39 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/xen/arch/x86/bzimage.c b/xen/arch/x86/bzimage.c index 66f648f311..0bbd8b2758 100644 --- a/xen/arch/x86/bzimage.c +++ b/xen/arch/x86/bzimage.c @@ -13,48 +13,9 @@ static __init unsigned long output_length(void *image, u= nsigned long image_len) return *(uint32_t *)(image + image_len - 4); } =20 -struct __packed setup_header { - uint8_t _pad0[0x1f1]; /* skip uninteresting stuf= f */ - uint8_t setup_sects; - uint16_t root_flags; - uint32_t syssize; - uint16_t ram_size; - uint16_t vid_mode; - uint16_t root_dev; - uint16_t boot_flag; - uint16_t jump; - uint32_t header; -#define HDR_MAGIC "HdrS" -#define HDR_MAGIC_SZ 4 - uint16_t version; -#define VERSION(h,l) (((h)<<8) | (l)) - uint32_t realmode_swtch; - uint16_t start_sys; - uint16_t kernel_version; - uint8_t type_of_loader; - uint8_t loadflags; - uint16_t setup_move_size; - uint32_t code32_start; - uint32_t ramdisk_image; - uint32_t ramdisk_size; - uint32_t bootsect_kludge; - uint16_t heap_end_ptr; - uint16_t _pad1; - uint32_t cmd_line_ptr; - uint32_t initrd_addr_max; - uint32_t kernel_alignment; - uint8_t relocatable_kernel; - uint8_t _pad2[3]; - uint32_t cmdline_size; - uint32_t hardware_subarch; - uint64_t hardware_subarch_data; - uint32_t payload_offset; - uint32_t payload_length; - }; - -static __init int bzimage_check(struct setup_header *hdr, unsigned long le= n) +static __init int bzimage_check(struct bzimage_header *hdr, unsigned long = len) { - if ( len < sizeof(struct setup_header) ) + if ( len < sizeof(struct bzimage_header) ) return 0; =20 if ( memcmp(&hdr->header, HDR_MAGIC, HDR_MAGIC_SZ) !=3D 0 ) @@ -73,7 +34,7 @@ static unsigned long __initdata orig_image_len; unsigned long __init bzimage_headroom(void *image_start, unsigned long image_length) { - struct setup_header *hdr =3D (struct setup_header *)image_start; + struct bzimage_header *hdr =3D (struct bzimage_header *)image_start; int err; unsigned long headroom; =20 @@ -106,7 +67,7 @@ unsigned long __init bzimage_headroom(void *image_start, int __init bzimage_parse(void *image_base, void **image_start, unsigned long *image_len) { - struct setup_header *hdr =3D (struct setup_header *)(*image_start); + struct bzimage_header *hdr =3D (struct bzimage_header *)(*image_start); int err =3D bzimage_check(hdr, *image_len); unsigned long output_len; =20 diff --git a/xen/arch/x86/include/asm/bzimage.h b/xen/arch/x86/include/asm/= bzimage.h index 7ed69d3910..8c54b21d06 100644 --- a/xen/arch/x86/include/asm/bzimage.h +++ b/xen/arch/x86/include/asm/bzimage.h @@ -8,4 +8,43 @@ unsigned long bzimage_headroom(void *image_start, unsigned= long image_length); int bzimage_parse(void *image_base, void **image_start, unsigned long *image_len); =20 +struct __packed bzimage_header { + uint8_t _pad0[0x1f1]; /* skip uninteresting stuf= f */ + uint8_t setup_sects; + uint16_t root_flags; + uint32_t syssize; + uint16_t ram_size; + uint16_t vid_mode; + uint16_t root_dev; + uint16_t boot_flag; + uint16_t jump; + uint32_t header; +#define HDR_MAGIC "HdrS" +#define HDR_MAGIC_SZ 4 + uint16_t version; +#define VERSION(h,l) (((h)<<8) | (l)) + uint32_t realmode_swtch; + uint16_t start_sys; + uint16_t kernel_version; + uint8_t type_of_loader; + uint8_t loadflags; + uint16_t setup_move_size; + uint32_t code32_start; + uint32_t ramdisk_image; + uint32_t ramdisk_size; + uint32_t bootsect_kludge; + uint16_t heap_end_ptr; + uint16_t _pad1; + uint32_t cmd_line_ptr; + uint32_t initrd_addr_max; + uint32_t kernel_alignment; + uint8_t relocatable_kernel; + uint8_t _pad2[3]; + uint32_t cmdline_size; + uint32_t hardware_subarch; + uint64_t hardware_subarch_data; + uint32_t payload_offset; + uint32_t payload_length; + }; + #endif /* __X86_BZIMAGE_H__ */ --=20 2.52.0 From nobody Sat Jun 13 07:34:01 2026 Delivered-To: importer@patchew.org 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; 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1781019909; cv=pass; d=zohomail.com; s=zohoarc; b=m9AJl1UT/0qmL2a+tRsJqukvl3O6C5TJEQCV2v/Cd4+2PnycIJSnsRkrfKLOgInTtxMt5rtfv1++aErwh7UEsH0shhUP8dN6qgpkaMONo7j6lKy67JKRepq1U80SCiYuTvCs87vvLPg9tDkFBzu3CMq9xkePVDw9v1JJg653gAA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781019909; 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=4oRcVjU3CohvWdlNeXdCS9k2NhJswH1Ylop2GchbfSo=; b=EQ+/gLhfWkxBpy1vb8fooID504tQScltv2zSweKJDEZSTL/Awmmo0CVUbNJT4bd/UP87+IBQV8xKiiQHE46Uj/cKlQB0B9FHftUEhSfC9eu6Vr4toG3+b1JpWcC9rOVttJo4KIAa6FBMmu4EwqcWA7A0JW/+OY7gNu6DKjx/RKE= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1781019909384623.0853377014432; Tue, 9 Jun 2026 08:45:09 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1333575.1596683 (Exim 4.92) (envelope-from ) id 1wWydM-0000G5-9c; Tue, 09 Jun 2026 15:44:56 +0000 Received: by outflank-mailman (output) from mailman id 1333575.1596683; Tue, 09 Jun 2026 15:44:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydM-0000Fy-4w; Tue, 09 Jun 2026 15:44:56 +0000 Received: by outflank-mailman (input) for mailman id 1333575; Tue, 09 Jun 2026 15:44:54 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydK-0000B1-IQ for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 15:44:54 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wWydJ-004xC6-VS for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 17:44:53 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a2834df-e002-0a2a0a5209dd-0a2a450bb8ae-32 for ; Tue, 09 Jun 2026 17:44:53 +0200 Received: from [52.101.62.6] (helo=DM5PR21CU001.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a2834f4-212f-0a2a450b0019-34653e06e59b-3 for ; Tue, 09 Jun 2026 17:44:53 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by CH7PR03MB7785.namprd03.prod.outlook.com (2603:10b6:610:24f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Tue, 9 Jun 2026 15:44:50 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0113.011; Tue, 9 Jun 2026 15:44:49 +0000 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T5PN7uAN13m4ejfpeyRYNUUUar+8YCf7cIRLk2vQiZQJsSZn8NPjlnK30l8hXxVJcRyucQzwjwN6sy3voe+zz+YXWCKtSv/y/nfVAkPx6arCYKDaoMNPhwzqlRF10MXnH9lEjr9wanO8XPR2mYGBzJiUOtCIMb4bG0xcmDeSK82Dh7GpLwN8BSYJEInz5sAAWPux7BKl1v3ZEkODnWPK3V1lekQYTCNwAM5QYQqFFgpk0zx4UnxdqW747xrp6VauaJpfBCj739+LgOwqKr54ZxwD4TYDwAD2Bi3TGMunvg/PN7BCsoSRWBRFzAqShw/lpHrCR1aiDEJMtvQVw8HSLQ== 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=4oRcVjU3CohvWdlNeXdCS9k2NhJswH1Ylop2GchbfSo=; b=N9C9ZucCGP6DgHMp/LkHC1JGhxB4nQH2edApf9zkugGovvt45AsLSlxbOwRPhWPxnkfl+1KHRqaY/wQkdT6egtJ+Mjm1/Q1AegVTulEHRK62ejE2cApf54NZLrn4AyOnY/d6NqwhafivinyXKDFyp84cLnL+wyi+4WpUsSaAuPmt0ExpK8P+M390ipVZWgnNhV0+BrNXX8ib9Z9JlcOvEz6+ymZ93URYWCIuAyyFbxpgI7P7oC/QqzdfuzhwNIdEefg0K7gfrpdK5SruDn0k6pOifGst8FA+MwmI56a6vZn992at6RjfKa1NW78jYl4bLKq/cH7einnX2cAGEjJtlg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4oRcVjU3CohvWdlNeXdCS9k2NhJswH1Ylop2GchbfSo=; b=y1EmouhV7pzH8kA9CwabFtsUTiV2Jd5CK3QswLAYC3+IIRCPPF2rC4eFBkk/ZfUebS7kIAKMqqheip+eJaTBtBgG/dPzabDF26/yUflxn/JaVDIOxHoNLj9EoPAB2NjtxLUumpfMSnHarqKJhcQm1s8Dhw8CDb52dG16H7vuYwo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger.pau@citrix.com, Ross Lagerwall , Kevin Lampis Subject: [PATCH 3/7] x86/kexec: add new struct kimage_segment Date: Tue, 9 Jun 2026 16:45:14 +0100 Message-ID: <20260609154518.779757-4-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260609154518.779757-1-kevin.lampis@citrix.com> References: <20260609154518.779757-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0377.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18e::22) To DS1PR03MB7992.namprd03.prod.outlook.com (2603:10b6:8:21b::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|CH7PR03MB7785:EE_ X-MS-Office365-Filtering-Correlation-Id: 7de2c4f1-df6e-47e1-eb19-08dec63e0946 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|6133799003|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: EHzQi2XFnEvM40mpBdIp/uxuQzS4PF+jm3Rswy0n3HDLR0j37dw6mIRqHFHb4QPRVL+mLyKGfqpk8C238ggvdSZozrN5Z+S3QEluU4LUct1LTs9VLME62Gw22GlFqBFJlIxMKixh4GAuEbmfB96Y8YTQDBGtw56QXjdHkCAVFTzSxNKUvkxFEbw3YEZacj2gotnk0rKZI6KOZkxQgKKYwVyGEGT7HPFzXXtg/MsnteojvXK8AcftZA8u2Dkf14igyQ7vHfnE73crToye66kPOCPBeCsrwBUQ3JC/fVjqIcqGmXHKROD2zemR6NAtJ4hIcmfHAmtBYlhEjBUbk7L1+a3+4VCu+zmicGLXWBASLJ+kGYovsKvLfs7OulSo+OpJmTozWZV099pbtD1B16q9qL8VzqQFftEJOojqBFpajkqd+MMXrZWFvLQpG+GzmBAjZdf4XCU+epCu9qNdN4lMpTsmlMaAshNPwzk6etvw9HcAP+Srz50vFOQ2CC0fezEwcOTIGh+hR/LjI4e3e5gR1q+su9BIHbRrIrdJ+VU7/drBP0V1ts7rkH12V81HGCywcIvdUYN3AnzXHQDuOJCkqB6cgyN2abPA5fda7vdTG+e8Y6nPOQsTgRLZK6V2X2O5EVYkIr79HqFjpt4e+VZ2CRkq8uOoWJiz+cdmV3hycW+dBcScBOsECZQ1k4lvRdOX X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fdfAbbArMKmmE3/rBTtxzcl/uoyQE3yMVGUGmrsCpoTc9RCHvZyKuCE5HSn8?= =?us-ascii?Q?I1e36PvBaYWw4y/nR0htNL+AHZXwsp4SFeaUBGmc70LELCUT9E6yDarDfsQ9?= =?us-ascii?Q?uVLEBCaAhYjnE6uGS7SW+Ha3qZd1IfNVLDgT2lXNWaHKnXJbD6phMYFFZXN5?= =?us-ascii?Q?KMwkV+VnuiT6RgJvprVi/2GFUuI8czd7K6nlVXnnrzmdeE/Os4/W51YHV1kf?= =?us-ascii?Q?dhxFjXYcWLsKDSNT51HpLdDNvq9WseQprnHnoQHTZwYHw3RqOB46YyqWzSAM?= =?us-ascii?Q?+3XnzCE8zNbJZ4EuwcL0RQ01pMaaCqEl1voNJgManfXJugIHEiXvAp5FgWwl?= =?us-ascii?Q?hFDp7NEpzWBuGcfEcF84NOd6tHg2QYc1BZIU/gXwACtA9eCVCQWKvDgA8vCN?= =?us-ascii?Q?Td4qItzdExYpeQykPUL8WasHn/5dfgQjEbJ10oe/GPlmXF+RGx5szFnOb/fW?= =?us-ascii?Q?mL41GiC5agAm25peeDOiRJP/5LiXqUdlIdnUQLf7nnSiKbfzp07A1CVuVbkP?= =?us-ascii?Q?Fdb4tO3BS2kyNKU3v8eL98iOsaULcsJkIMt5LBR5a+HBY8SD/EYYJZKjLsWb?= =?us-ascii?Q?ReYQxDzJHJvdKGGVA5wvAn9MwiMU18ezYFwnWrwsppVN77V3OHwDQt5FCeat?= =?us-ascii?Q?8pO8b1kgvTDkTtOJu7aa7dTZ6By34KQiDFuSpCmgjS47Xd7/1ng1lFeHlUN9?= =?us-ascii?Q?CG5QeMmNuG9iobRek8x2nNxjRsPx4R2oYpAd+cbO8GMUsvxhfldVFurXITmX?= =?us-ascii?Q?rKmZ+6nPOi/dBAknERjmmjDsGo6DHov8sWVnKi+8SXs2ShpZ8zXhItkU98e3?= =?us-ascii?Q?ytH7BgJ+/veTs8IsxESIu8bz51mgjz5Fbs94EqCvJyBniSpUxKnzC5bKW20P?= =?us-ascii?Q?rj59K4YPf+4DM9VbGRJP6v3M+U+bLgf0CHLcQqZaP+IXrVBN1ALZEkrm/wEs?= =?us-ascii?Q?uUBKshGZi4gw/+SlgtCsnv5LpVllu2oBL43e6+YHleyoeLkuwcPYVNuMLjMT?= =?us-ascii?Q?QOCQMbzgIF8hLdwoJ1g1Ob33AzJo6jqChQ3lBPqa4wlC/4M1bB6OWIseI8/b?= =?us-ascii?Q?xZPaxmNGffNaR68vEY8e0Rsi5g3GSy62e7Zj+wqpzsmoc3WD/sA5pmWx4/9h?= =?us-ascii?Q?LqVyXDSeJjUOEjNNEoY+dVnQ0cSwqPy0OVuiICsdKld90/+iZuNsMkOgIcpt?= =?us-ascii?Q?1wCyHyp/fUEIkHzoCbEsr67RFxySLS6TYZY+mqUH45TyZReVk+SECvrpYBxr?= =?us-ascii?Q?gGVvr2LpEBsUrnBGKxSKOrSeU2JtC42mJQR+aT4gFXkKm0LC5+Fd1cQvExBi?= =?us-ascii?Q?HNJ1on1naUVD6gwz9yoax8KdJL+ub4+FrEHxe0XI2Z8Xzfowo0Szd+fod3dp?= =?us-ascii?Q?tfaKltK5838nYB/j8ItoMu5KsktKcLJAkUZkp7e0jvetUW83TzWU0cv0c9kV?= =?us-ascii?Q?wcvp5nNi2sgxTfY3n+1/foNAwfD5C+vb4yBXk3Z4KetJWABHOFY9opn0MdkE?= =?us-ascii?Q?bxaPrW8zsZlDXI5Ws2PSIpiQPgLPXcf84LWisw5eN2/SjNPO48CiDrdPLZ91?= =?us-ascii?Q?H4ic+mwkH/pvfK22C3+Y2lHvhNutsACaPElsc+lMWm4pG5kwObMbE3WyLZHS?= =?us-ascii?Q?URWB/7V8AIKn64JxIK3F2bC3341B8aT3W6dhNnXp4AVPlYqgyWZJ720CeSSi?= =?us-ascii?Q?rKbeUPV76Xh9zaeakb84jCLqB+CES7DteI1zTZX6ccV8JSqilwb0d4i7/5rx?= =?us-ascii?Q?G3T/wtkPjw=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7de2c4f1-df6e-47e1-eb19-08dec63e0946 X-MS-Exchange-CrossTenant-AuthSource: DS1PR03MB7992.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:44:48.9729 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Z55srGJRne+5sNe5AkkB1Tubnr6edQJbPqtA5Wl6OxSNrpqPp/y1w/C7rmmE+shh3nN5oajFXm8z1RvIh+tK1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR03MB7785 X-purgate-ID: tlsNG-42698a/1781019893-18D67F3B-00693EBD/0/0 X-purgate-type: clean X-purgate-size: 7774 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1781019910972154100 Content-Type: text/plain; charset="utf-8" From: Ross Lagerwall New struct for interal use because Secure Boot code needs to add an extra field in a future patch. Signed-off-by: Ross Lagerwall Signed-off-by: Kevin Lampis --- xen/common/kexec.c | 23 ++++++++++++++--------- xen/common/kimage.c | 17 +++++++++-------- xen/include/xen/kimage.h | 14 ++++++++++++-- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/xen/common/kexec.c b/xen/common/kexec.c index c920bc6d8a..00346fe616 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -916,7 +916,7 @@ static uint16_t kexec_load_v1_arch(void) } =20 static int kexec_segments_add_segment(unsigned int *nr_segments, - xen_kexec_segment_t *segments, + struct kimage_segment *segments, mfn_t mfn) { paddr_t maddr =3D mfn_to_maddr(mfn); @@ -942,7 +942,7 @@ static int kexec_segments_add_segment(unsigned int *nr_= segments, =20 static int kexec_segments_from_ind_page(mfn_t mfn, unsigned int *nr_segments, - xen_kexec_segment_t *segments, + struct kimage_segment *segments, bool compat) { void *page; @@ -997,7 +997,7 @@ done: static int kexec_do_load_v1(xen_kexec_load_v1_t *load, int compat) { struct kexec_image *kimage =3D NULL; - xen_kexec_segment_t *segments; + struct kimage_segment *segments; uint16_t arch; unsigned int nr_segments =3D 0; mfn_t ind_mfn =3D maddr_to_mfn(load->image.indirection_page); @@ -1007,7 +1007,7 @@ static int kexec_do_load_v1(xen_kexec_load_v1_t *load= , int compat) if ( arch =3D=3D EM_NONE ) return -ENOSYS; =20 - segments =3D xmalloc_array(xen_kexec_segment_t, KEXEC_SEGMENT_MAX); + segments =3D xmalloc_array(struct kimage_segment, KEXEC_SEGMENT_MAX); if ( segments =3D=3D NULL ) return -ENOMEM; =20 @@ -1109,9 +1109,10 @@ static int kexec_load_v1_compat(XEN_GUEST_HANDLE_PAR= AM(void) uarg) static int kexec_load(XEN_GUEST_HANDLE_PARAM(void) uarg) { xen_kexec_load_t load; - xen_kexec_segment_t *segments; + struct kimage_segment *segments; struct kexec_image *kimage =3D NULL; int ret; + unsigned int i; =20 if ( copy_from_guest(&load, uarg, 1) ) return -EFAULT; @@ -1119,14 +1120,18 @@ static int kexec_load(XEN_GUEST_HANDLE_PARAM(void) = uarg) if ( load.nr_segments >=3D KEXEC_SEGMENT_MAX ) return -EINVAL; =20 - segments =3D xmalloc_array(xen_kexec_segment_t, load.nr_segments); + segments =3D xmalloc_array(struct kimage_segment, load.nr_segments); if ( segments =3D=3D NULL ) return -ENOMEM; =20 - if ( copy_from_guest(segments, load.segments.h, load.nr_segments) ) + for ( i =3D 0; i < load.nr_segments; i++ ) { - ret =3D -EFAULT; - goto error; + if ( copy_from_guest_offset((xen_kexec_segment_t *)&segments[i], + load.segments.h, i, 1) ) + { + ret =3D -EFAULT; + goto error; + } } =20 ret =3D kimage_alloc(&kimage, load.type, load.arch, load.entry_maddr, diff --git a/xen/common/kimage.c b/xen/common/kimage.c index 018ef66451..2c3fd3c3b0 100644 --- a/xen/common/kimage.c +++ b/xen/common/kimage.c @@ -86,7 +86,7 @@ static struct page_info *kimage_alloc_zeroed_page(unsigne= d memflags) =20 static int do_kimage_alloc(struct kexec_image **rimage, paddr_t entry, unsigned long nr_segments, - xen_kexec_segment_t *segments, uint8_t type) + struct kimage_segment *segments, uint8_t type) { struct kexec_image *image; unsigned long i; @@ -211,7 +211,7 @@ out: =20 static int kimage_normal_alloc(struct kexec_image **rimage, paddr_t entry, unsigned long nr_segments, - xen_kexec_segment_t *segments) + struct kimage_segment *segments) { return do_kimage_alloc(rimage, entry, nr_segments, segments, KEXEC_TYPE_DEFAULT); @@ -219,7 +219,7 @@ static int kimage_normal_alloc(struct kexec_image **rim= age, paddr_t entry, =20 static int kimage_crash_alloc(struct kexec_image **rimage, paddr_t entry, unsigned long nr_segments, - xen_kexec_segment_t *segments) + struct kimage_segment *segments) { unsigned long i; =20 @@ -669,7 +669,7 @@ found: } =20 static int kimage_load_normal_segment(struct kexec_image *image, - xen_kexec_segment_t *segment) + struct kimage_segment *segment) { unsigned long to_copy; unsigned long src_offset; @@ -722,7 +722,7 @@ static int kimage_load_normal_segment(struct kexec_imag= e *image, } =20 static int kimage_load_crash_segment(struct kexec_image *image, - xen_kexec_segment_t *segment) + struct kimage_segment *segment) { /* * For crash dumps kernels we simply copy the data from user space @@ -768,7 +768,8 @@ static int kimage_load_crash_segment(struct kexec_image= *image, return 0; } =20 -static int kimage_load_segment(struct kexec_image *image, xen_kexec_segmen= t_t *segment) +static int kimage_load_segment(struct kexec_image *image, + struct kimage_segment *segment) { int result =3D -ENOMEM; paddr_t addr; @@ -799,7 +800,7 @@ static int kimage_load_segment(struct kexec_image *imag= e, xen_kexec_segment_t *s =20 int kimage_alloc(struct kexec_image **rimage, uint8_t type, uint16_t arch, uint64_t entry_maddr, - uint32_t nr_segments, xen_kexec_segment_t *segment) + uint32_t nr_segments, struct kimage_segment *segment) { int result; =20 @@ -824,7 +825,7 @@ int kimage_alloc(struct kexec_image **rimage, uint8_t t= ype, uint16_t arch, } =20 static int kimage_calc_one_digest(struct sha2_256_state *ctx, - xen_kexec_segment_t *segment) + struct kimage_segment *segment) { paddr_t dest; unsigned long sbytes; diff --git a/xen/include/xen/kimage.h b/xen/include/xen/kimage.h index ad52551ba2..258349d774 100644 --- a/xen/include/xen/kimage.h +++ b/xen/include/xen/kimage.h @@ -18,12 +18,22 @@ =20 typedef paddr_t kimage_entry_t; =20 +struct kimage_segment { + union { + XEN_GUEST_HANDLE(const_void) h; + uint64_t _pad; + } buf; + uint64_t buf_size; + uint64_t dest_maddr; + uint64_t dest_size; +}; + struct kexec_image { uint8_t type; uint16_t arch; uint64_t entry_maddr; uint32_t nr_segments; - xen_kexec_segment_t *segments; + struct kimage_segment *segments; =20 kimage_entry_t head; struct page_info *entry_page; @@ -44,7 +54,7 @@ struct kexec_image { =20 int kimage_alloc(struct kexec_image **rimage, uint8_t type, uint16_t arch, uint64_t entry_maddr, - uint32_t nr_segments, xen_kexec_segment_t *segment); + uint32_t nr_segments, struct kimage_segment *segment); void kimage_free(struct kexec_image *image); int kimage_load_segments(struct kexec_image *image); struct page_info *kimage_alloc_control_page(struct kexec_image *image, --=20 2.52.0 From nobody Sat Jun 13 07:34:01 2026 Delivered-To: importer@patchew.org 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; 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1781019918; cv=pass; d=zohomail.com; s=zohoarc; b=YpF4mPatHHeuAJIh6wkBFqCKqUL9AsnEpTS1XlQudCv1K+lX6VWPa8ZkuWrPJVKR28EEa3DMnXjmEJtt+R5gMC9VFQtOxMrdUC8jaX2SKXetqkNeiyFkgcSwGXVK0POxLmylrlXNgLRP4u6ik2Gl9PTlP2QPOUvyLoWskaJSQck= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781019918; 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=XAGW0A7SKMny7hlVxWXRmaflj5yybevs1GYDnoI4BUI=; b=FJkckr5nEBMDQiD35zkyQ2FTtV3H03NL2tKDEY4sBEH1cgrAshEx8VOKoK5vrPhVQH/QXD2bb6fo2hb0MVKknw3wvJmYT+VFB+XOxSdJyhv/O4YYjcj0KlDzH1Ix2NejrA6qdf4FALvGH/yeHptsIiCCEvd2iijWPiIAQfyn1Vc= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1781019918538646.9821174990759; Tue, 9 Jun 2026 08:45:18 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1333579.1596692 (Exim 4.92) (envelope-from ) id 1wWydS-0000cc-FG; Tue, 09 Jun 2026 15:45:02 +0000 Received: by outflank-mailman (output) from mailman id 1333579.1596692; Tue, 09 Jun 2026 15:45:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydS-0000cV-BR; Tue, 09 Jun 2026 15:45:02 +0000 Received: by outflank-mailman (input) for mailman id 1333579; Tue, 09 Jun 2026 15:45:01 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydR-0000bC-6t for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 15:45:01 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wWydQ-004xC6-JY for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 17:45:00 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a2834df-e002-0a2a0a5209dd-0a2a450bb8ae-46 for ; Tue, 09 Jun 2026 17:45:00 +0200 Received: from [40.93.195.55] (helo=SN4PR2101CU001.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a2834fb-212f-0a2a450b0019-285dc3379d98-3 for ; Tue, 09 Jun 2026 17:45:00 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by CH7PR03MB7785.namprd03.prod.outlook.com (2603:10b6:610:24f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Tue, 9 Jun 2026 15:44:57 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0113.011; Tue, 9 Jun 2026 15:44:57 +0000 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wh3BO/RvxfgtaqUYyuMfTwUyvez2TlxN4fOrd41bGFDS9mVH68D31FxHeizRAiS3nR5ycNDKamNPYLOfeAnBAapX9GUds5lsiWqLO5cDiYz2kkVMUeQAwySD6LTMOohc8U9bdnRJbVkNi8CaF24B+y1A9m9YL+LmBS5/KicWrmcz/SGm6GvRcuChZ0jxiniWfp+nOubLJS/8WYTKuhem6v8Sv4jz1vVzQQaS8I+hRetBD1A1T9G32P5DgW8DLqt/SUKNVf/6JVtSZNRW7NKQQWI8UYKK/VXhuSu4XcqORioFWhZCA8N8QLpVjgpKApAVwPh9Y2rNbG+8eD7fu55QNA== 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=XAGW0A7SKMny7hlVxWXRmaflj5yybevs1GYDnoI4BUI=; b=y8kzUuyNc9qWcLu8yUQwiPa3cCmGwuqOK5HrbQNQ2PFNrX0coV64L5YL3anKhlyo7OSgdBdFqDYG98+ErbwEqJ/GfNIZr4BHHknZGjyBooONiAVCf9R+7p29IAWZqZpY5zOUkvOg4aUPFP6tT4Wxtjp45nnMErDRURJH7p6TFEcBE+9l7DVHISowZ/mmogAeWukUj7nH9ZqpfLmIlTKBFr9zObSzjDqMrh4mwz0UB4JazA4zUYRntAIkVyQnI4M0O92g/CUWaJEwnKJYPPyhNqPqcN9V1iaeSSnGvIQ2KOEj7hESha8wjswyhMKoUAfMEO9sd8gzVukXxZNCic6i+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XAGW0A7SKMny7hlVxWXRmaflj5yybevs1GYDnoI4BUI=; b=r7jTj0W8QYaySonCdnVZKUfsUYjhRIuLxc2xrh8g9Fxbm0vvWnnbEYFsAO/Nv9XvpCIXcrhtUkgtA/1UoW1wXUiWHMD8AdWNJbMS0Jpo5DB4RpuSEjMAHix9KgsDCZg25pNui5kQcPw7DXZM2RizLroD3A+OXsVCn/oRT3X6QSI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger.pau@citrix.com, Ross Lagerwall , Kevin Lampis Subject: [PATCH 4/7] x86/kexec: Support non-page-aligned kexec segments Date: Tue, 9 Jun 2026 16:45:15 +0100 Message-ID: <20260609154518.779757-5-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260609154518.779757-1-kevin.lampis@citrix.com> References: <20260609154518.779757-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0378.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18e::23) To DS1PR03MB7992.namprd03.prod.outlook.com (2603:10b6:8:21b::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|CH7PR03MB7785:EE_ X-MS-Office365-Filtering-Correlation-Id: a96c737d-bffd-4c40-bcda-08dec63e0e74 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: ACwPLqAQF5rodZaMuSElq0BwCLn6oTQsp1XdbpIQIt1kmXBd+ToTX2aytvntae2pmZ6h1l84gwsw7LV70OHjzNCTPY6FVIcuv0x3AfInkbtCGqIE0we4RGjiEnq/fDzVyTZ59T7JSKnCoeV4uHOyL+oaEHHAsOsC4NhG0kmuEfa4HSRi0yt3qt669aQM1ZAkOX4REc4p00Oss0RujlyMpq63TK1z38QbIpS23MGKm/90nFDauCIn4bCGvZgOkjDjo6k6oxFroCdYzC5CY40NHQdCMzhmmfvbm3VU1rHRpUkC8GCg4H1zfwp3AobJYVgfOZrlyAjKHSnZL9arL+2/SyoXJ0EPnXvFIB/TOZ9UQqCe0pWDTP+QugLVViIeX1I102vBokhijqQrATRITO6rTgoEVN2S+si3M/i5q1cc5rw4Fy1sCPx9ICAR6fWwvbbm7MdYHldcngJV10gx9wfg+Hf1izlI8rVfxuf9OkqpPOUIdKukF8GafDcHLXnqsqUKzX9rBRN/ZjtnA/rwvLByJVzkcVwJlmXYyp3zLKMpiWnaE/V8KM7FO6eKNBvg5IJLFTibdia1vUK7KgnEk030GG2pt4AIwSXJZvyEhG3fgbr1gtZy7Cw54vR07FMUYCIDsdEGG4y8b39fJpZifropLYgshcQuJeplw3rT2M7cwyaDVlpVycbPhBqDOHgt+0DT X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tEEYCe4K7ALWbVVqWDSQW0gelbQnuD9h6OlD7QotieQBj66+ncZqQXkLWQZ5?= =?us-ascii?Q?G6maYFmhbYjkKPPFayeXJEEPp1eNXz7tF/RBc+ZoKDiQXrNXDWLgUAG30cmT?= =?us-ascii?Q?xzzHKaQYTG50HqK/gklRwkrba6JCfU94j/nzZxewLVoN3qkCrElhF56TwO7A?= =?us-ascii?Q?nyHEDMCcW6Db4l8FuASaE0S1qFxAadkix8tuFQJhaxXLT/Qm2M5ZhhJVLLxN?= =?us-ascii?Q?Uj/XNQ1B2L7wR7ZjsfZC6oxYYGTc4cWaIDkgcGgPocAYUieRATl89/M54lRd?= =?us-ascii?Q?N9200XjVqd1cG8HhWJ8yVa+COBQu54YWNqBpGA4i5OJe1R+Nk8A8lUHH3nWM?= =?us-ascii?Q?pKOcqnGdSgJOXcLOfJgjih/hjQrNSQAwL7e7gHCBlEENN5m5XBFNFCRQS2Eu?= =?us-ascii?Q?UBUkvDYDZMhI7pFeYOnS6SLsWmayIQWskIHxiPnoxADkwCB7OZyhpwG1e9zT?= =?us-ascii?Q?BXStd2dFi2oG+WPWTRT9UBaEtXV9C+qegWgsTm7KtYIrsujTdh0wWhIZRrtm?= =?us-ascii?Q?RELjYcJA21+/YOtkDly0y3e6kiGtweGMEUzimZqYR7hvVXyJVmm+9WCLbGRS?= =?us-ascii?Q?3mO4zN3zCkztP4Ea/KOqn4gye00Bl/Ln+VyXHf5lOwVL1PEs9WeNEWPTgbTu?= =?us-ascii?Q?Y5ocSelC2YxRMGIeXnDkdYw1pwG8DNfpOhVVTBnibhVAnYoW+jezmq0xQvSn?= =?us-ascii?Q?FmLr3M09K5f7jGEzD0doof2+OzqvooxoVYOzYmnxsPXfD3mP/t5q2YdOh84q?= =?us-ascii?Q?5DfmxKRstf2A4bcOE06R1shYPk6jxFlNOm+JR8slHZTQOSXjeASkZTcS0gQ/?= =?us-ascii?Q?Jy/Z+3Xobh6LLdlJ+Q+Ysc+cUToi93mVNOE5ozPr50tftqfPGwo6eUOPaXoi?= =?us-ascii?Q?s4aefRxOFCw5pArsdK76Ihag2wUXi8y4nD7BmOAMb+E94tM0lQ8KWs5fTKfG?= =?us-ascii?Q?feer93UnCAAzya9/oATF0m2aNhQDYevoqsEr75J1/wNA0jF2a6OAZ0VtqRWk?= =?us-ascii?Q?hueeZLbkyqfxgTPPk5crhlqdWZmgeR+iRn+AKqEH7FlsJOHlRN2LWM3i2vSt?= =?us-ascii?Q?Ihgf6ukpAPdjozcHfOyEN8BvDGNWgDL/eMNT+mZxIDxuh1AyTGmjNp3uOCQL?= =?us-ascii?Q?MwMkyFEcbduEbitq9LCNGX+BArQ98fHEKTqIijbar8q1FEvllXYw8J03xgqa?= =?us-ascii?Q?RD3YMfV0+Rapo+/LdYlhhmpgpPsYzLv6DVi5VL33ViXtn6Lf7RiNz9njAi3y?= =?us-ascii?Q?Up/TZWNzaufN1XPDPJfu18L0ySIfsUQj3PVUZH5Tl7AlyOWkMsZHeky3r0uN?= =?us-ascii?Q?ti/auDu6C+3ld/fp+rczkqOlrzaovGSfoQ2AfdRsQU4oLtXp9qpyVuqIqbVu?= =?us-ascii?Q?wEbEsE7Iacm/EwghV1hEbYzIdAC5/1K42TlK2rmw8zYCCJVwZuw7UUg0a3m4?= =?us-ascii?Q?H98o+RSZCtgYKfOZDuBDtssa1mzZESH+N22bQ0AZD7ovi8g4cYi29bcJQotO?= =?us-ascii?Q?9+qXtcE8eZhSvd9zmx/hIshrXT5kzdOg9S8Hb898ARtuaLiBjwmkp1Lxbszq?= =?us-ascii?Q?1JL1JwMIG+rXq6QHnBZBmvzxsYY69EIzHTD4iXngTkQwq9MhBMS6Lh6i8jwo?= =?us-ascii?Q?WbuYPUeG/uDxhslNDidPi07KUYLoyaL7aCKQxwXWJcV2BIRgt3v8pxOKXVCd?= =?us-ascii?Q?wlS8pXy+bd04PeCc++HKU41JtSNNSGzV7rehM1fvOzFsu2qRTWNtsH+1RElW?= =?us-ascii?Q?gPASEBuJUQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: a96c737d-bffd-4c40-bcda-08dec63e0e74 X-MS-Exchange-CrossTenant-AuthSource: DS1PR03MB7992.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:44:57.2045 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6p/pRz/HzLgdLEtqnu5YCbXXgdqqUooncP1wKJG3q9u6Bo0FQnBwZpN5+hDCGMErmkVrfgq8b9IMsFzY1FoNUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR03MB7785 X-purgate-ID: tlsNG-42698a/1781019900-1956BF3B-727081C1/0/0 X-purgate-type: clean X-purgate-size: 3559 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1781019921002154100 Content-Type: text/plain; charset="utf-8" From: Ross Lagerwall With Secure Boot, userspace passes in the entire kernel loaded for verifica= tion purposes. However, the kernel's startup32 function needs to be aligned (e.g= . to 16 MiB) and this results in the start of the segment not being page-aligned (depending on where the startup32 function lands in the kernel binary). Rel= ax this restriction in Xen to support this use case. Signed-off-by: Ross Lagerwall Signed-off-by: Kevin Lampis --- xen/common/kimage.c | 34 ++++++++++++++++++++++++++++++---- xen/include/xen/kimage.h | 1 + 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/xen/common/kimage.c b/xen/common/kimage.c index 2c3fd3c3b0..1d872916b9 100644 --- a/xen/common/kimage.c +++ b/xen/common/kimage.c @@ -730,12 +730,14 @@ static int kimage_load_crash_segment(struct kexec_ima= ge *image, */ paddr_t dest; unsigned long sbytes, dbytes; + unsigned int dest_offset; int ret =3D 0; unsigned long src_offset =3D 0; =20 sbytes =3D segment->buf_size; dbytes =3D segment->dest_size; dest =3D segment->dest_maddr; + dest_offset =3D segment->dest_offset; =20 while ( dbytes ) { @@ -745,24 +747,28 @@ static int kimage_load_crash_segment(struct kexec_ima= ge *image, =20 dest_mfn =3D dest >> PAGE_SHIFT; =20 - dchunk =3D PAGE_SIZE; + dchunk =3D PAGE_SIZE - dest_offset; schunk =3D min(dchunk, sbytes); =20 dest_va =3D map_domain_page(_mfn(dest_mfn)); if ( !dest_va ) return -EINVAL; =20 - ret =3D copy_from_guest_offset(dest_va, segment->buf.h, src_offset= , schunk); + if ( dest_offset ) + memset(dest_va, 0, dest_offset); + ret =3D copy_from_guest_offset(dest_va + dest_offset, segment->buf= .h, + src_offset, schunk); memset(dest_va + schunk, 0, dchunk - schunk); =20 unmap_domain_page(dest_va); if ( ret ) return -EFAULT; =20 - dbytes -=3D dchunk; + dbytes -=3D dchunk + dest_offset; sbytes -=3D schunk; - dest +=3D dchunk; + dest +=3D dchunk + dest_offset; src_offset +=3D schunk; + dest_offset =3D 0; } =20 return 0; @@ -803,6 +809,26 @@ int kimage_alloc(struct kexec_image **rimage, uint8_t = type, uint16_t arch, uint32_t nr_segments, struct kimage_segment *segment) { int result; + unsigned int i; + + for ( i =3D 0; i < nr_segments; i++ ) + { + paddr_t mend; + + /* + * Stash the destination offset-in-page for use when copying the + * buffer later. + */ + segment[i].dest_offset =3D PAGE_OFFSET(segment[i].dest_maddr); + + /* + * Align down the start address to page size and align up the end + * address to page size. + */ + mend =3D segment[i].dest_maddr + segment[i].dest_size; + segment[i].dest_maddr &=3D PAGE_MASK; + segment[i].dest_size =3D ROUNDUP(mend, PAGE_SIZE) - segment[i].des= t_maddr; + } =20 switch( type ) { diff --git a/xen/include/xen/kimage.h b/xen/include/xen/kimage.h index 258349d774..aab8707cac 100644 --- a/xen/include/xen/kimage.h +++ b/xen/include/xen/kimage.h @@ -26,6 +26,7 @@ struct kimage_segment { uint64_t buf_size; uint64_t dest_maddr; uint64_t dest_size; + unsigned int dest_offset; }; =20 struct kexec_image { --=20 2.52.0 From nobody Sat Jun 13 07:34:01 2026 Delivered-To: importer@patchew.org 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; 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1781019924; cv=pass; d=zohomail.com; s=zohoarc; b=aMoSyKzcuilczmBvhk5WBc/qizjR53NgEZ+ROH9mNFEiG1C0XeI/oyqGl25AW3AJ7OeQxmUeZhhGaGDViSrLCaQlKJxjJM33ABzWRYWBa/CM46CetOnOhSuBVPY1cd4KwbrkOJFf7nV324pKJMmIMWH3EBR9hWpYpAeJMQfeFq8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781019924; 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=KI7MOQ10o7YlADLvcQgiPGvdTZ9HEiOmoqZrzV/uJUQ=; b=Z7fXIji0n5XKbwp9qSo/kVg9ZoIeRmJcgC2uSbcdMTWBerYzQQodY4DVkhiMopm2qvCjEnQUqzQp8zDqyctKxb3DDi3VNuKR78aUrU1ia+m/26WAvDdVLpljg+4A5ODpblFGNYCrZNjM8VQ777ohDgI0Otx3vzy32ejn4ivgPiY= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1781019924380957.0730241042352; Tue, 9 Jun 2026 08:45:24 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1333581.1596701 (Exim 4.92) (envelope-from ) id 1wWyda-00010U-LY; Tue, 09 Jun 2026 15:45:10 +0000 Received: by outflank-mailman (output) from mailman id 1333581.1596701; Tue, 09 Jun 2026 15:45:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWyda-00010N-Ip; Tue, 09 Jun 2026 15:45:10 +0000 Received: by outflank-mailman (input) for mailman id 1333581; Tue, 09 Jun 2026 15:45:09 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydZ-0000zD-D1 for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 15:45:09 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wWydY-008Mzm-Q2 for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 17:45:08 +0200 Received: from [10.42.69.10] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a283501-bab6-0a2a0a5309dd-0a2a450ad3b8-12 for ; Tue, 09 Jun 2026 17:45:08 +0200 Received: from [52.101.52.15] (helo=BL2PR02CU003.outbound.protection.outlook.com) by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a283503-56b3-0a2a450a0019-3465340f4839-3 for ; Tue, 09 Jun 2026 17:45:08 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by CH7PR03MB7785.namprd03.prod.outlook.com (2603:10b6:610:24f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Tue, 9 Jun 2026 15:45:05 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0113.011; Tue, 9 Jun 2026 15:45:05 +0000 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BuRqPDP4CKgSVn1Son8rNWPkGWfWGtJSwcpY0xJfwRafs6GMke7PseJTEwZa/XuqPMnVvZMHFCUACfiq6eWSUb+stLsbKJwRpyMuT9l//ef/Ehk3FFuDzrC6SCbxh0OAAypEqRCsOisTUDkXlVAHa1RRGs4MhuAocW4JiF7f0br0/KErUW1Kv4K0VA6J2HAQk97Ma+i0WzJ5hKDVw3qFrHp0+X2qmY76c3+SE+9i8iG3WWdBQCWwbmBxXxeSTYf9t27emKdW7bEkHK8YPUsELvKn7leuz22zha+RJe6llxkV4YFyfNE3yVEvryAEdkmwE3EV9jGPpv6FeOGtWhFN0Q== 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=KI7MOQ10o7YlADLvcQgiPGvdTZ9HEiOmoqZrzV/uJUQ=; b=PCVTZPnKnMlr2diS6KOYXpTAS2uAoAC2r4c2cpz7EWkfIrWpQF7F2sszx3QDhFCX83heoVETp0xI+RGXQHs/ZtJn5PlBjDjvfmslC7B6AJdUHDfN2FhB3Zwp6OzEZW08ACXWF3k5lJdn0XComF63eEusGk+5yzD6JV+PD2+Jd2+EjBKxFnQ65kY5f0QridVdjuM/Z1+wUymUTKwZo0gdWBHQEtvnD80XHInq/uO2YU2VlS8qiFd+QYRIH6+6yEXKw0xfNRzczhBFqFHrQ3hpcINNPfVQd7qDgYKYv9NYI5cmLhRyHtu4tL6mfW5Mtr680pAZU7r9pMktIwJTpH7Xsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KI7MOQ10o7YlADLvcQgiPGvdTZ9HEiOmoqZrzV/uJUQ=; b=qC2mNv34kSM64td1KdiAFrkgc/fHhyVfaFHU8O4UIHZ2kZ4tP/99wVO5IyjNaQ4gVDVDO9v+CUg3pc8QXGIS5SVw0lXr93jsbsTVcAfKG88Er3ZSovrVyadx7kxh2TCJ5K+fBCfpyjmZc9fst2yHrP2OMuPOJEmhGMPEB5acoeE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger.pau@citrix.com, Ross Lagerwall , Gerald Elder-Vass , Kevin Lampis Subject: [PATCH 5/7] x86/kexec: Implement new EFI load types Date: Tue, 9 Jun 2026 16:45:16 +0100 Message-ID: <20260609154518.779757-6-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260609154518.779757-1-kevin.lampis@citrix.com> References: <20260609154518.779757-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0188.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::13) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|CH7PR03MB7785:EE_ X-MS-Office365-Filtering-Correlation-Id: d5a33db9-cff2-415d-6836-08dec63e1346 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|3023799007|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: H0nEbq2v3FR7gTck7B81/EDKIcWdn63kOyGn0nplL1bLd/4K4jwBr4sIGBO5XJbmuZlpTvy0oI0U819FaUNr1ti2xO/PnU8vOTLbLSeJJQpnFz3bGBxP448AEmSRWfgll95x1G8WeTgXVCPYmvDUBdJPEqbnwoCalDKC7rg2C+mECNMaBugUz1btFOLVihY9Xv8avqPtOdWh4i64ZUpqBj5O/DJYNrN6F3pdS/1Nmt+suOcKWmq/4FwJMJLLY1Jb1kITuKT57hdq7is37970fAXAT4I+CECFuAFDadSG+5U1T+WgcsIqIrzY5gBgwl6aOU55p7tCU9TVauE/YKolDmM8q58/C2XQpkpjkv/NgW7AbaUxF7u3Npet4qSdrirpZUmmChhqJx5IdVEXYoFFYh4biGPJRlGq9720jBqiHwE6f273rMVh4L9za5YTVqBudH09xPy0QQjBYvl67L/u7koMpkcwPWBZ/EyOUuqxymxjI5K+DDYWyVo370nWclXYOWldd5/3bUy7SbLOcX8A9m7ry+zhj+2dJ1Ru7UmisbVzbDY5dtnjpXSMX/plM9AT2f8a+9wky+jcUIktVWWl3vQ5ud++SIPEJ668gODu/GduYaUR5IkVaVGiCQ7VrMkCeVecQd2nrDD1mn7Y0hey/RnxqvqvhqDEoFkPvpdOM8yve52U3J3sImNsxDiD6eyn X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(22082099003)(3023799007)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hxTJCbF3TNPjnWKRnE+X3EShqeUqS22iyZ1G/InEqHugi8ROKnpmTZr8Fnk5?= =?us-ascii?Q?e9VSfJRCit2cxp8Y8Qeq408fm4s2xTIoczO1PpjwgDTucgiQkSz13REKEHri?= =?us-ascii?Q?RPJXaY6XlO2q2fWBQ/SUerpGqOjmtD2Q1SmHCKueXajn/ciwBtgrGgTHbJZU?= =?us-ascii?Q?arFwcpDG3u2kNZyHa+Zet1NKBWaqJSCUqHBJ67IgJwv5zaepC5498q/N3eOT?= =?us-ascii?Q?s6+jAl5m29wFrFADbyXb/6kF27DL88mdFpWXZblznLkR6RqcbAAbdr2A6kw/?= =?us-ascii?Q?iB3lkZesnahGk3cFsPksFvUn+KVbJSrJvX12gpuv+JPNvvZI++0TY6vVu0+D?= =?us-ascii?Q?eRz3K1EaRpDtFzj3tPyKxUI5HD4f0uKF1n4Zfzt8qbeNiik9gDUJXuvjJIX0?= =?us-ascii?Q?onpubRx8JRL54YJD5xoVZousyR/VY2XA5E2FopRc9c/FeuPnBUPJWbOXeWy3?= =?us-ascii?Q?/a+8H7VMa2+SJlU7KA9SYgykWEUNI00hJHYZbIreua1ai2aq0mDGuSnfyxp5?= =?us-ascii?Q?lMpC+Eu0KMDcpJfDUbdQLKrCAnJPX0cPf12z0TGK/D0dwfJQqW55Lr1fEATR?= =?us-ascii?Q?oN9LEC65KGqukGDZb5kXw6qOii+ixRYIx29qDDJOgVheKzvmtCOTyBmXFpMe?= =?us-ascii?Q?+zIZdulOsUSre3w38dfg6AJS32IfHmAacWljmYmYsvghRHQyHfTjtlB+0+U0?= =?us-ascii?Q?E/5ffSGnIbtx+Pu+Nn/bgK3MkXifPv5uuJvOgQb61Qie9yzqLHWyEYqBcdVO?= =?us-ascii?Q?5yZYqJ+5rSMcK3akpN2+65f+AbldXHzYaSgMRsEH4xhLWcIGJW1t8+NQXTYc?= =?us-ascii?Q?7J8WAuH/FuQVbPOpqLSPKQxMeSgtxTEk7EaZThMJK+AF4t7l1DJtQqaGX0FQ?= =?us-ascii?Q?yXQOqUMc8PrcufVej9Ayqcnf29AMPg1r4HmSrf2bnhhDdXqWmS7KDhb17vPY?= =?us-ascii?Q?a6Ho5Mcvvn+SXwmc+jb0kqNbo/AQ3fqkyvNae5WS4SGFbtyvGg4Ai4hAklIa?= =?us-ascii?Q?P2UtiEK5gNDNiOcf5f15Pvg9Rcab7iw5rbmscThtf7oumXnLQBxFZwewIKBP?= =?us-ascii?Q?uXCR2WswY0CdeW47rTvUMjxai+pyqe4wj4DAP4n0PVMcgx5GdLNulXRZxYE0?= =?us-ascii?Q?62bh7G8UpH2Q6PugjU5cDgtYcqk2Wfhv1WtXxD/gZp0OHI2EvZ0mnkQXvnFQ?= =?us-ascii?Q?44m1XWepWOpvbmetbAKIDqv6JYCcpjaUWZFVQNlWiWq1mtE3JcUbaX4OQLRV?= =?us-ascii?Q?MzlUc3e6PO2KxTlDLOEeGIS/FInL7ErDDKg2vtLz69Hbd6JEvRhkPBzPA6xc?= =?us-ascii?Q?lTsMyFBrUbKf03/KChY/it7u2a03Td7ZQbaGteWWry1uAZHuXGxCpwSY3Cwg?= =?us-ascii?Q?VB4o5lT6j7K/Ryv52JoqJjvFN/ly9zgd/IjnlSsAmITQF/KzjnUeLw07Kl7r?= =?us-ascii?Q?gVIPIhQmVf5lyZU5278mCMNJ/MhSvqU8YVYQ3+k2n0gg6xKuw3gjqEfiR+jt?= =?us-ascii?Q?WeR04hXxY8sG10DmAo1lhLMhZtss1tzj4TrVEHaK9OMKzkfAUFkBO3eldkNe?= =?us-ascii?Q?e9fMV9p4iZvgexCLyt3fg472/mLTSUCsPhVRSqGqsM7wLnEVzHGCkqInJE7u?= =?us-ascii?Q?xAoOnc0gW4m4Iz+jaGocvQ2vDYzdsn+Ou2AdJSA7BC+3izhyzFv2V41idyKN?= =?us-ascii?Q?wRGE+kq33meE9SE6wfkWnCHmFI74KCs+YI6X1pNzdxlol5aKlpeWgAJ+j5r3?= =?us-ascii?Q?VynAPSLniw=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5a33db9-cff2-415d-6836-08dec63e1346 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:45:05.5778 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3Y3qxvocIZOSvTM9NTUFF9+T+8S7JeIIefoB5FNTONRoAo94M/sjB/QDDdsA3+ByF65hfQtIZfUL2NqXLXWSfA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR03MB7785 X-purgate-ID: tlsNG-4011c0/1781019908-7CC7A8B7-05B187B5/0/0 X-purgate-type: clean X-purgate-size: 11502 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1781019927524154100 Content-Type: text/plain; charset="utf-8" From: Ross Lagerwall Add new EFI load type for kexec. This load type is suitable for use when Se= cure Boot is enabled. When this load type is used, the caller should not pass purgatory as one of the kexec segments. Instead, Xen will prepare any glue code needed internal= ly. Signed-off-by: Ross Lagerwall Signed-off-by: Gerald Elder-Vass Signed-off-by: Kevin Lampis --- xen/arch/x86/include/asm/bzimage.h | 5 ++ xen/common/kexec.c | 9 +++ xen/common/kimage.c | 123 +++++++++++++++++++++-------- xen/include/public/kexec.h | 11 ++- xen/include/xen/kimage.h | 2 + 5 files changed, 115 insertions(+), 35 deletions(-) diff --git a/xen/arch/x86/include/asm/bzimage.h b/xen/arch/x86/include/asm/= bzimage.h index 8c54b21d06..ed61f9446a 100644 --- a/xen/arch/x86/include/asm/bzimage.h +++ b/xen/arch/x86/include/asm/bzimage.h @@ -47,4 +47,9 @@ struct __packed bzimage_header { uint32_t payload_length; }; =20 +static inline uint64_t kernel_alignment_offset(void) +{ + return offsetof(struct bzimage_header, kernel_alignment); +} + #endif /* __X86_BZIMAGE_H__ */ diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 00346fe616..1ae4c069c1 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -750,6 +750,7 @@ static int kexec_load_get_bits(int type, int *base, int= *bit) *bit =3D KEXEC_FLAG_DEFAULT_POS; break; case KEXEC_TYPE_CRASH: + case KEXEC_TYPE_CRASH_EFI: *base =3D KEXEC_IMAGE_CRASH_BASE; *bit =3D KEXEC_FLAG_CRASH_POS; break; @@ -848,6 +849,7 @@ static int kexec_exec(XEN_GUEST_HANDLE_PARAM(void) uarg) ret =3D continue_hypercall_on_cpu(0, kexec_reboot, image); break; case KEXEC_TYPE_CRASH: + case KEXEC_TYPE_CRASH_EFI: kexec_crash(CRASHREASON_KEXECCMD); /* Does not return */ break; } @@ -1147,6 +1149,13 @@ static int kexec_load(XEN_GUEST_HANDLE_PARAM(void) u= arg) if ( ret ) return ret; =20 + if ( load.type =3D=3D KEXEC_TYPE_CRASH_EFI ) + { + ret =3D kimage_efi_setup(kimage, load.parameters); + if ( ret ) + return ret; + } + ret =3D kexec_load_slot(kimage); if ( ret < 0 ) goto error; diff --git a/xen/common/kimage.c b/xen/common/kimage.c index 1d872916b9..9b49455e8e 100644 --- a/xen/common/kimage.c +++ b/xen/common/kimage.c @@ -22,6 +22,7 @@ #include #include =20 +#include #include =20 #define KIMAGE_SHA256_REGIONS 16 @@ -109,29 +110,6 @@ static int do_kimage_alloc(struct kexec_image **rimage= , paddr_t entry, INIT_PAGE_LIST_HEAD(&image->dest_pages); INIT_PAGE_LIST_HEAD(&image->unusable_pages); =20 - /* - * Verify we have good destination addresses. The caller is - * responsible for making certain we don't attempt to load the new - * image into invalid or reserved areas of RAM. This just - * verifies it is an address we can use. - * - * Since the kernel does everything in page size chunks ensure the - * destination addresses are page aligned. Too many special cases - * crop of when we don't do this. The most insidious is getting - * overlapping destination addresses simply because addresses are - * changed to page size granularity. - */ - result =3D -EADDRNOTAVAIL; - for ( i =3D 0; i < nr_segments; i++ ) - { - paddr_t mstart, mend; - - mstart =3D image->segments[i].dest_maddr; - mend =3D mstart + image->segments[i].dest_size; - if ( (mstart & ~PAGE_MASK) || (mend & ~PAGE_MASK) ) - goto out; - } - /* * Verify our destination addresses do not overlap. If we allowed * overlapping destination addresses through very weird things can @@ -217,17 +195,13 @@ static int kimage_normal_alloc(struct kexec_image **r= image, paddr_t entry, KEXEC_TYPE_DEFAULT); } =20 -static int kimage_crash_alloc(struct kexec_image **rimage, paddr_t entry, - unsigned long nr_segments, - struct kimage_segment *segments) +static int do_kimage_crash_alloc(struct kexec_image **rimage, paddr_t entr= y, + unsigned long nr_segments, + struct kimage_segment *segments, + uint8_t type) { unsigned long i; =20 - /* Verify we have a valid entry point */ - if ( (entry < kexec_crash_area.start) - || (entry > kexec_crash_area.start + kexec_crash_area.size)) - return -EADDRNOTAVAIL; - /* * Verify we have good destination addresses. Normally * the caller is responsible for making certain we don't @@ -253,8 +227,28 @@ static int kimage_crash_alloc(struct kexec_image **rim= age, paddr_t entry, } =20 /* Allocate and initialize a controlling structure. */ - return do_kimage_alloc(rimage, entry, nr_segments, segments, - KEXEC_TYPE_CRASH); + return do_kimage_alloc(rimage, entry, nr_segments, segments, type); +} + +static int kimage_crash_alloc(struct kexec_image **rimage, paddr_t entry, + unsigned long nr_segments, + struct kimage_segment *segments) +{ + /* Verify we have a valid entry point */ + if ( (entry < kexec_crash_area.start) + || (entry > kexec_crash_area.start + kexec_crash_area.size)) + return -EADDRNOTAVAIL; + + return do_kimage_crash_alloc(rimage, entry, nr_segments, segments, + KEXEC_TYPE_CRASH); +} + +static int kimage_crash_alloc_efi(struct kexec_image **rimage, paddr_t ent= ry, + unsigned long nr_segments, + struct kimage_segment *segments) +{ + return do_kimage_crash_alloc(rimage, entry, nr_segments, segments, + KEXEC_TYPE_CRASH_EFI); } =20 static int kimage_is_destination_range(struct kexec_image *image, @@ -426,6 +420,7 @@ struct page_info *kimage_alloc_control_page(struct kexe= c_image *image, pages =3D kimage_alloc_normal_control_page(image, memflags); break; case KEXEC_TYPE_CRASH: + case KEXEC_TYPE_CRASH_EFI: pages =3D kimage_alloc_crash_control_page(image); break; } @@ -788,6 +783,7 @@ static int kimage_load_segment(struct kexec_image *imag= e, result =3D kimage_load_normal_segment(image, segment); break; case KEXEC_TYPE_CRASH: + case KEXEC_TYPE_CRASH_EFI: result =3D kimage_load_crash_segment(image, segment); break; } @@ -838,6 +834,10 @@ int kimage_alloc(struct kexec_image **rimage, uint8_t = type, uint16_t arch, case KEXEC_TYPE_CRASH: result =3D kimage_crash_alloc(rimage, entry_maddr, nr_segments, se= gment); break; + case KEXEC_TYPE_CRASH_EFI: + result =3D kimage_crash_alloc_efi(rimage, entry_maddr, + nr_segments, segment); + break; default: result =3D -EINVAL; break; @@ -1064,6 +1064,63 @@ done: return ret; } =20 +/* + * Find the entry point to the new kernel, we need to map the crash region= into + * memory in order to read the kernel header. + */ +#define KERNEL_SEGMENT_IDX 0 +static uint64_t kimage_find_kernel_entry_maddr(struct kexec_image *image) +{ + uint64_t alignment_addr; + uint32_t alignment; + unsigned long dest_mfn; + void *dest_va; + + alignment_addr =3D image->segments[KERNEL_SEGMENT_IDX].dest_maddr + + image->segments[KERNEL_SEGMENT_IDX].dest_offset + + kernel_alignment_offset(); + + dest_mfn =3D alignment_addr >> PAGE_SHIFT; + dest_va =3D map_domain_page(_mfn(dest_mfn)); + if ( !dest_va ) + return -EINVAL; + + alignment =3D *((uint32_t *) ((uint8_t *) dest_va + + PAGE_OFFSET(alignment_addr= ))); + + unmap_domain_page(dest_va); + + /* + * Ensure the kernel alignment is a valid LOAD_PHYSICAL_ADDR, + * which ranges from 0x200000 (2MiB) to 0x1000000 (16Mib) on 64-bit sy= stems + * as defined in the kernel x86 Kconfig + */ + if ( alignment % 0x200000 !=3D 0 || + alignment < 0x200000 || + alignment > 0x1000000 ) + return -EINVAL; + + return ROUNDUP(image->segments[KERNEL_SEGMENT_IDX].dest_maddr + + image->segments[KERNEL_SEGMENT_IDX].dest_offset, + alignment) + + 0x200; +} + +int kimage_efi_setup(struct kexec_image *image, uint64_t parameters) +{ + int64_t rip; + + rip =3D kimage_find_kernel_entry_maddr(image); + + if ( rip < 0 ) + return -EINVAL; + + image->boot_params =3D parameters; + image->entry_maddr =3D rip; + + return 0; +} + /* * Local variables: * mode: C diff --git a/xen/include/public/kexec.h b/xen/include/public/kexec.h index 40d79e936b..287255ea6f 100644 --- a/xen/include/public/kexec.h +++ b/xen/include/public/kexec.h @@ -58,13 +58,16 @@ * - kexec into a regular kernel, very similar to a standard reboot * - KEXEC_TYPE_DEFAULT is used to specify this type * - kexec into a special "crash kernel", aka kexec-on-panic - * - KEXEC_TYPE_CRASH is used to specify this type + * - KEXEC_TYPE_CRASH or KEXEC_TYPE_CRASH_EFI are used to specify this t= ype + * - in case of KEXEC_TYPE_CRASH_EFI the first segment will point to full + * the kernel to load and entry point will point to boot params * - parts of our system may be broken at kexec-on-panic time * - the code should be kept as simple and self-contained as possible */ =20 #define KEXEC_TYPE_DEFAULT 0 #define KEXEC_TYPE_CRASH 1 +#define KEXEC_TYPE_CRASH_EFI 3 =20 =20 /* The kexec implementation for Xen allows the user to load two @@ -195,7 +198,11 @@ typedef struct xen_kexec_load { XEN_GUEST_HANDLE(xen_kexec_segment_t) h; uint64_t _pad; } segments; - uint64_t entry_maddr; /* image entry point machine address. */ + /* image entry point machine address or parameters in case of EFI. */ + union { + uint64_t entry_maddr; + uint64_t parameters; + }; } xen_kexec_load_t; DEFINE_XEN_GUEST_HANDLE(xen_kexec_load_t); =20 diff --git a/xen/include/xen/kimage.h b/xen/include/xen/kimage.h index aab8707cac..ba5d5c2b92 100644 --- a/xen/include/xen/kimage.h +++ b/xen/include/xen/kimage.h @@ -51,6 +51,7 @@ struct kexec_image { paddr_t next_crash_page; =20 uint8_t digest[SHA2_256_DIGEST_SIZE]; + uint64_t boot_params; }; =20 int kimage_alloc(struct kexec_image **rimage, uint8_t type, uint16_t arch, @@ -69,6 +70,7 @@ int kimage_build_ind(struct kexec_image *image, mfn_t ind= _mfn, int kimage_verify_digest(const struct kexec_image *image); int kimage_calc_digest(const struct kexec_image *image, uint8_t digest[SHA2_256_DIGEST_SIZE]); +int kimage_efi_setup(struct kexec_image *image, uint64_t parameters); =20 #endif /* __ASSEMBLER__ */ =20 --=20 2.52.0 From nobody Sat Jun 13 07:34:01 2026 Delivered-To: importer@patchew.org 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; 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1781019944; cv=pass; d=zohomail.com; s=zohoarc; b=hrTIIFotrvY1PSmcmKQUSWwwMU6gMFoffCHIX67qVFANTyBZoL4mH8w8p8hHGakx/deMofYaq81E00JWiu1I61cfUDg2Qs0ePj3JCBtA8BlI6f4RFtWqTkI+csnvDHc0zOY5MKMGO6whX6WoNVTSIDGiVemrHbEMBgZ5hBias8k= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781019944; 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=gPg+TWxKIYR7XaCE1xZJb8H3djSCjAFUgUsgKxDPc0Q=; b=lUoD7m966d/XATK7XhoTZXTPIlkZTWbQtVFbwuwYq7USqJBZozmoISMzWhNtQSupOTrVEPld5v65DNTG1IiNbsQSZSYm0maW3GAadEHCj+yrjz8ybOYSmd37MvAq4YYE4dAwe3sRlwlBqLZIVHLRR/3N4r4FEjF9PRtOqac7ToE= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1781019944762465.7655159919897; Tue, 9 Jun 2026 08:45:44 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1333592.1596710 (Exim 4.92) (envelope-from ) id 1wWydq-0001pf-2u; Tue, 09 Jun 2026 15:45:26 +0000 Received: by outflank-mailman (output) from mailman id 1333592.1596710; Tue, 09 Jun 2026 15:45: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 1wWydq-0001pW-05; Tue, 09 Jun 2026 15:45:26 +0000 Received: by outflank-mailman (input) for mailman id 1333592; Tue, 09 Jun 2026 15:45:24 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydn-0001j7-SD for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 15:45:23 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wWydn-00DRr1-8p for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 17:45:23 +0200 Received: from [10.42.69.7] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a28350a-e002-0a2a0a5209dd-0a2a4507d5a0-16 for ; Tue, 09 Jun 2026 17:45:23 +0200 Received: from [40.107.209.48] (helo=PH8PR06CU001.outbound.protection.outlook.com) by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a28350d-229c-0a2a45070019-286bd130e868-4 for ; Tue, 09 Jun 2026 17:45:18 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by CH7PR03MB7785.namprd03.prod.outlook.com (2603:10b6:610:24f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Tue, 9 Jun 2026 15:45:14 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0113.011; Tue, 9 Jun 2026 15:45:13 +0000 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JTlUq2fUM2pnEw3KtFzYEzVleFHXKR/6jzCEsIu/Gcnw/zPebGO+wU8QZwLsUHMlhbrvzGbd0YBi8lvBOtB4UKIBiNRD4rwyvUoRozOVJYTv3f2O+fiCns+82+tF6VPvDgxFoFey9ZMmqZv4n6OTAzOS1S3yOVnTbOtww3s7Bw7OOAPfh0ESzBDDXAC2sjuj1BkUNupKVFU1Wak3teseqYxEcjKFkJQuWrtZaH/gRXXUhOykStUGQSMsoRu7L85NLlCYv9ifr46SPTA37XVz3cS4YlAN+YyOT1t/aOpZubxwxRkd6PzBMDYEUJoxNZKrtHvK64uEXKOOtIAImoAiLg== 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=gPg+TWxKIYR7XaCE1xZJb8H3djSCjAFUgUsgKxDPc0Q=; b=Wdq3I/dtHErL1WORbMkdJOYKNj32oSpS/JlTbP4yTt8mDvHb9yZtbZL+URct0Nz6TdAnM8YBrnhCWoqbvTV8l001daCGxPSVb7S5dxJ+CAtGzGm3xfMGWzd3MHeGWLkoPZG/UlfBhWGwl/iuZcm7xQB59TSiACV2h2rl/ZZxYJrqVbQon8T0BYVsmz3i6XdWfEfyKnaLo8zWgFNFfdByHSEnzY+pHoHSiM43YhrcNVGZijspCJ6o6hHdrcdJpp/vTpLrRqxGz/aN2GGCjEx1jKyOZXsa12WpyNNzy03UKbi28qYVl4DB/2JFZWqPocEi3bUElBgSiRTy8YzOABZWNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gPg+TWxKIYR7XaCE1xZJb8H3djSCjAFUgUsgKxDPc0Q=; b=tiwgoMxphYeM5NJ8SLewcpAjM5/a9DwI8vyDEo+ydxUjMM/yx9CptbRItYnjwyWOycx/wcqPO6twrgV4V0RzJPSyUXuML0MGZsP/+xujWW5NgluhN8BgAuHuLV+l95TVC7Un76+YESlNJAneQJABVDgfS5I3aTjqaSmjqBqtqxI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger.pau@citrix.com, Kevin Lampis , Kevin Lampis Subject: [PATCH 6/7] x86/kexec: Pass boot params directly to new kernel Date: Tue, 9 Jun 2026 16:45:17 +0100 Message-ID: <20260609154518.779757-7-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260609154518.779757-1-kevin.lampis@citrix.com> References: <20260609154518.779757-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0450.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a9::23) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|CH7PR03MB7785:EE_ X-MS-Office365-Filtering-Correlation-Id: bcd852ec-ab58-4522-e3c8-08dec63e1806 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: YYBOz7E6oipfqvpyR/YMHTTVsaJS1hqWyPLN6MSaJNswnloY++e61Yhq5WAycf6ibHX2RDmAsxkN1jEKmOXxcNT2XLbpmeg9rGH3MDoHFJFbwsURv2PS4NfRysiKmC4KzTZbQXMn0I/V2rqHHdvopKXwFM8feZM1G8mUy2UK2j+SmHp0zbtKtzHtUBEf9k70QRZX4r4q3LbvQaLYcdtmS3MXGRSm2veXcVq5LTMd67ueopdSJPMw36QTe3r9UPO7xX9TAaIspuHzZcymQeNuL9cP341aWrj3YiyfQymH0LxFEkccQKAzO3AdRZK15J4vVVescyeaunMw6HQihLxKApnqt/I1jrJvmNUxUP/kML6c5PP8p/MdUT7fouleyKonLna3Mq2WS49wzuRYE0LWwxgV1+OPptGwAjvRQ03gXL6/uTTbun+XXc9aFAJ1J1r1+4pRcTSKs5aNNYCuLbS7jFEvM/TVYOI2zOWYbji8c5YxuUTygWhNI+IzdRfkD0vXmAyF+sW5Ysu7JFF5KhfmIdvZPuCPbSi5h9h24xe7evlgHSqohndeBZpPXmVDWzi0fGfYJQ/6sbeCYyYIAzTE9K5TxfjNrkqBuJ+W91qSOJOVsBTOwDbKmyDn7Gdo7V8b0ta63BCbF8tQWmeIuJMSQHwKzXX0YX40wOpyA+VRLoVzYBDzxjX5sbirV4000Mfu X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?g7Hiv0adepktj0eX9wDa19U7YmyVJujy6VpoHOigMAKN1uAp+B95mg5Z+3f2?= =?us-ascii?Q?mA75NaESqEFnJ+yS0LC2EqjZW1n9aVPCr1LL0B5/TakcuaDQLWMg1z4nSWOZ?= =?us-ascii?Q?GJM5VzMbMqm4b+aLcDb1ueeBZvBpnvzep0HIfwXjk+i/4CDM9ACbFm7aP90Q?= =?us-ascii?Q?g3GMDULO2hhQfcimEQ0SmmOuSK9j2KaxuOSPYASxhGhsLLCwZsVkgG7pcXp5?= =?us-ascii?Q?sYcxjJ9zx5ELVdVKxBd5zNk4x05/P3CjVcWzfPpfOyr/gWO6ylWsjfrhPcfM?= =?us-ascii?Q?lUx/cYeHA/lUAKda4IualikU91m6tr9DoMcW0t92HO6YDJtwLuKRoacC86g+?= =?us-ascii?Q?+DOZ0geIgf/uYCa3Vg/Rgiy3FEjKSSgBErFk4Amfao5UUbtW2ydaHqTh7oB5?= =?us-ascii?Q?7tJv7wtiG6LrHMdfS2Oe9hyRdfSPdBZNz/RPhHUGjvPzdVrjacCtvEYjuZh/?= =?us-ascii?Q?pv8qximcfxWIuDGTlZDC4e8puJ9YSzMMlwq+n6qhuzisQhtxl857YXYVSEsq?= =?us-ascii?Q?nrnEnrlwPFr9e/gADaDhckrnDKtqG/JkAc0R1u6OsMyzQh9wdZ/WVd3JWWzg?= =?us-ascii?Q?137L7apLt1P9r/BpQoZCug5MB6FemE8/VMBCXWRAvU2YLqB4DJwCjMG0Pj5h?= =?us-ascii?Q?KSP2f7kCtagBzfX17xHXdLAfhy9ucutR+hKfiqDm4/KmPJYC10LoEREbVY0f?= =?us-ascii?Q?YHBkLfBy6HlPbfOfMqwVYNvqPzD/D78NS+QGSdAoDzeH36Q1aDUEI7xDeyz/?= =?us-ascii?Q?aU7WiVsZvuSG7OcxDLvjx4yh+2HWnNZvHqzLiPrqVZ3+gKUlEJ6Wby4+Ydtt?= =?us-ascii?Q?JiAWomZvGs84ZQ8H7U0o1NpZ87FloJX5tlvhskgkX93r73h9nj1/AZtznnAk?= =?us-ascii?Q?gl5hoQMn/CxMaUOhicjRLXaK1qgBDLhRFWBwCvRgFnfq881uV0G1wJnosgvy?= =?us-ascii?Q?8xweEoChmiRXO+fVtOYdWTAJvWDU8wXTOO7tutXZzskYbPSevS+xOoB6rWoQ?= =?us-ascii?Q?GKWW3+XWDIu4QSGFkazY803K8sqHC7uO34/IWxoG+SBGnuUer2kqy8rNAz9L?= =?us-ascii?Q?Pt1Yn6AVRGuEfeWCV+eTXYqNxkpaxrDC45b5QSn0UuY6im4nB1BXnnGT2TsM?= =?us-ascii?Q?DcvXJG9E6m4orE3XFUeEwN2aK6lfJ9DrOpwTP+mMHx40cXUeAZIj3Sna7MoV?= =?us-ascii?Q?jx2y3M4KT4LNV5MvtDWq7BvPQcainzTXvjZHDiyI80V/VzRZwJYc83deK1HG?= =?us-ascii?Q?6+e6wZYQiB/TxY/Wgq2YtkKAov0kLdAc2VeIFrWQfj0m7z2Fod4pW+naScir?= =?us-ascii?Q?KjjHwygsZIXej+R2y8hYY97XqpclSvDoOeREvFxpwbjOfWbtZL1bV2/Q34eU?= =?us-ascii?Q?TEykfo4rMdX9z+HG2awbgjIBdmSSw1MjWAS+0JZ1MBEu7ffoBEFOajt4z6Ly?= =?us-ascii?Q?QYvSSWL0l6ZmR2yLvKybIL9GxNb1/YHLzVFl5jAlqRi+yN84DUbo8BLznMnO?= =?us-ascii?Q?ZesbKjWVdQocCPZKr1YRlJP5t2K81jBCM4mGXg+c7wE1hwLLydOi8/ptmBic?= =?us-ascii?Q?umiqt2AsrbAkZdca3OCQoKhq/zU5sDPdN+fC78PAKpTP2nIzCC8sNYwxpRs0?= =?us-ascii?Q?sfVeQ+Ix18mvNKRVoh1TsH6m9+uNwPqd4e1dyubF1FStze5ZVlS/HKkclUxS?= =?us-ascii?Q?4Ccd9D5Vl/CSkgF3y2byS1G7w0THLMNYr+JCNV5UqLrtoedwpf+aUsfIWgr8?= =?us-ascii?Q?r4C6z4oWGQ=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcd852ec-ab58-4522-e3c8-08dec63e1806 X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:45:13.1258 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jcrPE6PC8LAOep5Vr9d5wg1kbESwr5Wa5SvC3phofBIksjc678378IH2mGbf4BfWtITTwYRYNHnqtxzUy8IrKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR03MB7785 X-purgate-ID: tlsNG-ef75cf/1781019919-23374C48-7470FF23/0/0 X-purgate-type: clean X-purgate-size: 2348 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1781019947498154100 Content-Type: text/plain; charset="utf-8" When doing kexec on an EFI image there is no purgatory and kexec_reloc.S hands off straight to the new kernel. To facilitate this the linux kernel boot params need to be passed through %rsi. Signed-off-by: Kevin Lampis --- xen/arch/x86/include/asm/machine_kexec.h | 2 +- xen/arch/x86/machine_kexec.c | 3 ++- xen/arch/x86/x86_64/kexec_reloc.S | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/include/asm/machine_kexec.h b/xen/arch/x86/includ= e/asm/machine_kexec.h index 3e189acf24..010e0c7046 100644 --- a/xen/arch/x86/include/asm/machine_kexec.h +++ b/xen/arch/x86/include/asm/machine_kexec.h @@ -7,7 +7,7 @@ =20 extern void kexec_reloc(unsigned long reloc_code, unsigned long reloc_pt, unsigned long ind_maddr, unsigned long entry_maddr, - unsigned long flags); + unsigned long flags, unsigned long arg); =20 extern const char kexec_reloc_end[]; =20 diff --git a/xen/arch/x86/machine_kexec.c b/xen/arch/x86/machine_kexec.c index f921eec5aa..2edc1bd0af 100644 --- a/xen/arch/x86/machine_kexec.c +++ b/xen/arch/x86/machine_kexec.c @@ -198,7 +198,8 @@ void machine_kexec(struct kexec_image *image) =20 kexec_reloc(page_to_maddr(image->control_code_page), page_to_maddr(image->aux_page), - image->head, image->entry_maddr, reloc_flags); + image->head, image->entry_maddr, reloc_flags, + image->boot_params); } =20 int machine_kexec_get(xen_kexec_range_t *range) diff --git a/xen/arch/x86/x86_64/kexec_reloc.S b/xen/arch/x86/x86_64/kexec_= reloc.S index b52d31a654..6a2c839b83 100644 --- a/xen/arch/x86/x86_64/kexec_reloc.S +++ b/xen/arch/x86/x86_64/kexec_reloc.S @@ -33,6 +33,7 @@ FUNC(kexec_reloc, PAGE_SIZE) /* %rdx - indirection page maddr */ /* %rcx - entry maddr (%rbp) */ /* %r8 - flags */ + /* %r9 - boot params */ =20 movq %rcx, %rbp =20 @@ -71,6 +72,8 @@ FUNC(kexec_reloc, PAGE_SIZE) movq %rdx, %rdi call relocate_pages =20 + movq %r9, %rsi /* boot params */ + /* Need to switch to 32-bit mode? */ testq $KEXEC_RELOC_FLAG_COMPAT, %r8 jnz .L_call_32_bit --=20 2.52.0 From nobody Sat Jun 13 07:34:01 2026 Delivered-To: importer@patchew.org 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; 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=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1781019938; cv=pass; d=zohomail.com; s=zohoarc; b=f5vAwnZjt0fsFDEtxg1N3rnoaqaBxim41DDKhQyBkk+9Q81xaFj/VNqtxnx31t6SSI97+aToaPwkuaiJM6OZSu0J+11DvUnCSOD29Vor7ZkbLY5Pm7WUZziidabcPsW8PBBiBm8xHlRw/9NQWbqPd3cA0NgQw7qr8skqhw+9jWk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781019938; 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=mX8n3a47dmyiQ43p+mrCyQsl4Ss0tUYDgsOf9iF4SZ8=; b=IjWYr7A9/+wrMM/sYUnDRMDm/Es3EkErXn3p3sJYzNdH9EOHTDheatTVCssiQBP0GheQAzpcAB8x4q2aFetRWPXln1f8tvP2QIMoneouoQZlawD1lNRjdDhk/iLekVoaqmu5HbRlmYLQM7B70GjmOx6zzRvG7UsUVmxuFG5Q0sI= 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=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1781019938291218.9820876847839; Tue, 9 Jun 2026 08:45:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1333593.1596714 (Exim 4.92) (envelope-from ) id 1wWydq-0001sQ-CS; Tue, 09 Jun 2026 15:45:26 +0000 Received: by outflank-mailman (output) from mailman id 1333593.1596714; Tue, 09 Jun 2026 15:45: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 1wWydq-0001rR-6p; Tue, 09 Jun 2026 15:45:26 +0000 Received: by outflank-mailman (input) for mailman id 1333593; Tue, 09 Jun 2026 15:45:24 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wWydo-0001l2-Qe for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 15:45:24 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wWydo-00DRr1-7C for xen-devel@lists.xenproject.org; Tue, 09 Jun 2026 17:45:24 +0200 Received: from [10.42.69.7] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a28350a-e002-0a2a0a5209dd-0a2a4507d5a0-24 for ; Tue, 09 Jun 2026 17:45:24 +0200 Received: from [40.107.209.48] (helo=PH8PR06CU001.outbound.protection.outlook.com) by tlsNG-ef75cf.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a28350d-229c-0a2a45070019-286bd130e868-5 for ; Tue, 09 Jun 2026 17:45:23 +0200 Received: from BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) by CH7PR03MB7785.namprd03.prod.outlook.com (2603:10b6:610:24f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Tue, 9 Jun 2026 15:45:21 +0000 Received: from BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07]) by BY1PR03MB7996.namprd03.prod.outlook.com ([fe80::5068:e1b5:b478:8d07%3]) with mapi id 15.21.0113.011; Tue, 9 Jun 2026 15:45:21 +0000 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" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=citrix.com header.i="@citrix.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VTk47K9I/PRYcV+dll7d7BwxlGryrM2lsb3bkc7CgE59rNseIX2G1tuTrPTvNs8FhmGSLyPxjWDExfED10ECSy6sFRQvgtwEN1lR5raFRbWoTvd6E2sAdv9pBG2kCWruW3pWdwn2ZDBPHWxvHvvfoCC9yJEki8qerpD7qAu2s3dSzJ2/8yGXtET/VmyaLHStA6VTGKxg5InZbhNl+ZHnuv7ftQXbE7EXxAoZGXBFm88S/aazubI0WfESLuwdktSSSSvi75UuWIoGDSv/R0Q5If+FXAm0SbpqCZ8SM9n/20HrGIliq4gMZd5gi3nGD/1oLCz1De8i5n4qYE2cuBzV9A== 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=mX8n3a47dmyiQ43p+mrCyQsl4Ss0tUYDgsOf9iF4SZ8=; b=t/IwFyNgPB5vn4y5ftGwCMTiWdZ3C2jXF6uIX6J849k+2cjY1hPvSsSyTjvghgT/ORGd7mrriiB2Hk1cOlVq53ZC3H1xYD3fCP0+zhzo8yvFYEzM7dFhNxYFzuIAtunRJpU9h3nAbtIppnRGa4/21P2QSH51GYmOIIKLJSl8IJgnQ6H4wTMUgf2MSjVLxv54K0fsmEbFMZ+5Xg55hmfnChixPZ38KeZb3KYqXXvfSrNOR9AjQrnj31OmdlB6sRBlBcyI+hZAUdkz1+QPyyHH0TGcBiVeD2FQ0Pe4vSX51M4d1Bp7hfoY3tICgXA5LakJ9nPAIldUtOFDTJD2a5M6mA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mX8n3a47dmyiQ43p+mrCyQsl4Ss0tUYDgsOf9iF4SZ8=; b=or43tL16AdMOL59FaiCzXS9VNfQPgQLfRDnZYO29+wH75qZhys+kt98Q/cl7NVF8iOYQ7Iqvtik+1InjAnfkT40chQLcwAeegVDlJmH2a6PV13Yt7RNvViTF7QI930y4SoYNr0Uzu6GR5bYbeTORjGKza7OXRmzos/u4YwP7T/Y= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Kevin Lampis To: xen-devel@lists.xenproject.org Cc: jbeulich@suse.com, andrew.cooper3@citrix.com, roger.pau@citrix.com, Kevin Lampis , Kevin Lampis Subject: [PATCH 7/7] x86/kexec: Zero general purpose registers Date: Tue, 9 Jun 2026 16:45:18 +0100 Message-ID: <20260609154518.779757-8-kevin.lampis@citrix.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260609154518.779757-1-kevin.lampis@citrix.com> References: <20260609154518.779757-1-kevin.lampis@citrix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0220.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:33a::18) To BY1PR03MB7996.namprd03.prod.outlook.com (2603:10b6:a03:5b2::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR03MB7996:EE_|CH7PR03MB7785:EE_ X-MS-Office365-Filtering-Correlation-Id: a28493b5-cda9-4324-40b0-08dec63e1d0f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|18002099003|22082099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info: 4YQKk2hPXzsaipMxsx6jZWT+Dzm4i2xf/VWE1z1y2D1K5QrO8hwNWTv2rHzSy0xc/uigHhi6v1tl7qGvz53V/vA6IK72MnbqPqm8pxd2Diz9uprlfrWBsrGMcbsTkn0JCdMlgSbh5ysTlF58EE3Qts2Z9oKH9irvycM6OAqVbAUGXrf3qDakW1xofhjoUO12HE9mmZC0QbhW1uUPKAbrHrrwwK/HoI5XifOxoZ/g69lg9JrAbtxoK/ADpSrzaDnwJeFRozURG73SXkO3b8Ujo9lUr38537pnE+oioDvoG0hxZPXbwaByEbdq6m9z5loIPGagvc8AZZFOnfb3TkB7yGBTWPGHOHoRufSYc2wQw/Nl40hsmkZqLI9pV9twoKESlfSQkpngR7G22neRiJoIYVnn/Js5IXBG+P6/eq9ANE0BJex1mcqxJMdzIgAs9SydAO+vKgTy3iaMhin+qj6iwrxR34jfBP69XZr04Gi3wuAwYb9wB+Co5JlegNN91lniEsj5ZfPVycptiuGalNfetHjj0tpCTptyDHpGbj94I9LtoQvo5280nw/rWTQd/8jWq64YU5yUxbkOy5O0eh/3BdjDhEYaz/IKxisGfCjapWKPhe4TLJcEDXDQP3+Bno7Oue8NK8A0hNiQxanUT5p8DeKv5Vqk8XfcF6/4rbqrigHuRTbt9Zyxl99/LuTrd43v X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY1PR03MB7996.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(18002099003)(22082099003)(56012099006)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GtSefAIIcQ3MwD9wJEPrMXIiJq3bICvdbltG7oh2AtZjbI4PgdzKqHOLSza2?= =?us-ascii?Q?c6AqFZxwdrSP0IkJy6XMMm7H9V89PYO+WDJ8WUEiSOItxnsG9I+wB4g4Sk1W?= =?us-ascii?Q?oH2KfYqWEgjeYNwRhJ0XnseRyl672Ke0bOszYMVvSK2jzngEOm4TW+O5pOnX?= =?us-ascii?Q?UV6bHcnFr22r86JWBeXP7yekdeCnIHu5xPtrqc+xdysBJZ0XgFl/Fu3e+Py4?= =?us-ascii?Q?rbD5tLW//9zsPkbNoNBMQZdKG7ArJY4rOSz6enhhakH42f03JJr5FpdHpeM9?= =?us-ascii?Q?4j7pMtp+tx/rFupyeByYh8OH9/16SGHnOG3QcNoizUeTXp5OERzSSSJ9p9GD?= =?us-ascii?Q?761qD78kCrxLSH607RqPWCx7rkqCyWrxyTn4sRDLxcSad5x8fwq4IZl8Xixm?= =?us-ascii?Q?UaAXk1xxNRChS8SBORF1MwdFD+blbOMGgBIwolk11sy6nvrXJqJy2+Fc8Hhr?= =?us-ascii?Q?1Yqd9siYz4uKqIESirz9FqRzY3jptcw/lqS3sGtcmrj7tn/AdQZVvbd2teQR?= =?us-ascii?Q?JKh/6wcpkfxyLixDkplomXVMLzMLG63Z+bhFpQjdOgaSnjS0C9HPT4jbaUFQ?= =?us-ascii?Q?F+XlSb5hnt+giKsLzIy2/ZZBJInNzWcI+EawjbXVFiBvH7kliQp61vxFk9au?= =?us-ascii?Q?3CSk7KYhtBrWTsjpi/7g2AtXlC/sDt4kQ6vyq1Ac5+HQCPcnDztRqXHNKBsN?= =?us-ascii?Q?BaIcATY4h9iGCHOo+I63rApCLkOFrCTgJBHTpEvz5TtioksIJpovxdC/C0kD?= =?us-ascii?Q?ljt1jN+oIrWocfT4dOH6w1VJECMq1f4CU/6P1PDclNuC9YDi4Y+FVX1BIYeY?= =?us-ascii?Q?RAsJ2vYnHiWLcHav3ZaFwJdHsNdD4xtPRIJdDHI8Hxjqfc0hI8DKnD/wp0zB?= =?us-ascii?Q?NwwiAzHs1ojDm+dazwsSpHU32OsYW6k15rkC/Wk3tXzfP5KKo6C1Q550Z/yZ?= =?us-ascii?Q?czr9ZDvH/UCck2XQTcJ+B9RHdZ/LP07Fl3QosF82vZJIerscMHeJZftZBoJD?= =?us-ascii?Q?sc0xbeu4jS/aa3hxd0z3NVKKCxiGtqTU6Z/gqpOEBr1xAM9cZJ7iWL7Azo0A?= =?us-ascii?Q?DmtX0F4cGESmbtxW+SyBCxX5g0i/y/qutswV7DxVxkZSGspORsj3FA6UN/XU?= =?us-ascii?Q?IWueAdDJ+fneP8z2KNCIscxWK+8ZNYDM8YSVnNNrxQ6VGcNpIYXMnpIosaVB?= =?us-ascii?Q?XaXgE3a5VBh5dnTiAgLtNjDvI/JIoH9xFwEAnAY4NY/tuO0/pL4ns3V+HQY6?= =?us-ascii?Q?mhd5da3AqNpmiKVRu6BF8pp7/sB1yyOZWbut9wkPTPA7SyCeTJEtqK3v97vc?= =?us-ascii?Q?oa+PRZAAngDwKdc4LhuVt1t6HB67Tx2+VAEJBY7WMnZ1ji0hwKpVM2WvLQry?= =?us-ascii?Q?H8AsxMf7cF6IHAkiTV31bNjMNefykMAJkZfoEkGFpt5pJSJphjrraZrZBOZY?= =?us-ascii?Q?W10oLMtufNPkIZUi8DHDen+Z0CjjpCMqiEgveZb3bN2mqfftKWEsyJKzaKfL?= =?us-ascii?Q?oHKXSxqYEF2IyaZZclTfxN6e+Zaiw4kKD7Udae9fIQnpAWL9EjCVwXty7h+p?= =?us-ascii?Q?zgMrIybfpBrTe1CEvbJrnlvsrYN6+R4MdSq0/JNSz4Jke6fA+qzT2/NLJKpQ?= =?us-ascii?Q?8rDTbNKgp7rg2DKXTOsVMP/QmQhdG6XZaYM3Gy3FYOYbmhGBLBPXk0dYFrhG?= =?us-ascii?Q?YhS60s5zzsoA4pbhIF4ibRd3tNhvd0sKeuhc7ZYuIzwRyfrTB/0XjQDDtOTq?= =?us-ascii?Q?b5iY8Q20JA=3D=3D?= X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: a28493b5-cda9-4324-40b0-08dec63e1d0f X-MS-Exchange-CrossTenant-AuthSource: BY1PR03MB7996.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2026 15:45:21.4734 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ABwN6uVU41g18xGFx1sfwHrVsPtHt5v0WoSEjtH9/A2GtWmQ8jyolhmwcju3rnxmcPXJNQuVQ7lREG+wnbcXJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH7PR03MB7785 X-purgate-ID: tlsNG-ef75cf/1781019924-0A36CC48-933FDABC/0/0 X-purgate-type: clean X-purgate-size: 1493 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1781019940124158500 Content-Type: text/plain; charset="utf-8" Purgatory zeros these general purpose registers before jumping to the new kernel. When doing kexec on an EFI kernel there is no purgatory so we need to zero the registers here instead. This change shouldn't affect the functionality of legacy kexec. Signed-off-by: Kevin Lampis --- xen/arch/x86/x86_64/kexec_reloc.S | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/xen/arch/x86/x86_64/kexec_reloc.S b/xen/arch/x86/x86_64/kexec_= reloc.S index 6a2c839b83..be9e487f7a 100644 --- a/xen/arch/x86/x86_64/kexec_reloc.S +++ b/xen/arch/x86/x86_64/kexec_reloc.S @@ -78,6 +78,20 @@ FUNC(kexec_reloc, PAGE_SIZE) testq $KEXEC_RELOC_FLAG_COMPAT, %r8 jnz .L_call_32_bit =20 + xor %edi, %edi + xor %eax, %eax + xor %ebx, %ebx + xor %ecx, %ecx + xor %edx, %edx + xor %r8d, %r8d + xor %r9d, %r9d + xor %r10d, %r10d + xor %r11d, %r11d + xor %r12d, %r12d + xor %r13d, %r13d + xor %r14d, %r14d + xor %r15d, %r15d + /* Jump to the image entry point */ jmp *%rbp =20 @@ -94,6 +108,13 @@ FUNC(kexec_reloc, PAGE_SIZE) lea compatibility_mode(%rip), %rax push $0x10 push %rax + + xor %edi, %edi + xor %eax, %eax + xor %ebx, %ebx + xor %ecx, %ecx + xor %edx, %edx + lretq END(kexec_reloc) =20 --=20 2.52.0