From nobody Mon Feb 9 14:16:36 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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; dmarc=fail(p=none dis=none) header.from=trmm.net ARC-Seal: i=1; a=rsa-sha256; t=1601467260; cv=none; d=zohomail.com; s=zohoarc; b=RfRXlBKxbW4xGBpegGYjc2Bbifj9o77A+2x+wNhxSNJ8R9QbH3a8LwQDFxvz4nqmTDfELNoY451QXVL1wYXqF8s9ych0POrjaUd9eXsPe/GLotK+2TR2nGPxVXxQU8VUtMwmnH0GrKNBZiG+S/yvK8+0+2WHP6OWIIy4mOyWh2A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1601467260; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dlDLOL2FDQH/qQvnMCGaI6C/u/n0I3kfIDkK5vBFrbg=; b=OJSIPRzBiDHGG93ogpEF4zR4U7RSECY1ypPaMSavm8yI5Gx9EhCgSAc12JjIlz16mz2lyoWzAvFdB1hPb7kElFsh/gtsrmJJrdxnLi2kopcZuCRawrtYXnrx53PKXVtc6xQ75TIZxU0TvBQqytrt6tONRXoZsLIf2/UZg5apD94= ARC-Authentication-Results: i=1; mx.zohomail.com; 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1601467260872391.6732407431281; Wed, 30 Sep 2020 05:01:00 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.630.2125 (Exim 4.92) (envelope-from ) id 1kNamq-0001tq-Nt; Wed, 30 Sep 2020 12:00:44 +0000 Received: by outflank-mailman (output) from mailman id 630.2125; Wed, 30 Sep 2020 12:00:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kNamq-0001tb-Ji; Wed, 30 Sep 2020 12:00:44 +0000 Received: by outflank-mailman (input) for mailman id 630; Wed, 30 Sep 2020 12:00:43 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kNamp-0001mg-BR for xen-devel@lists.xenproject.org; Wed, 30 Sep 2020 12:00:43 +0000 Received: from mx1a.swcp.com (unknown [216.184.2.64]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3235fc8e-2f0f-49ad-87ab-7f89c1a625df; Wed, 30 Sep 2020 12:00:42 +0000 (UTC) Received: from ame8.swcp.com (ame8.swcp.com [216.184.2.163]) by mx1a.swcp.com (8.14.4/8.14.4/Debian-4) with ESMTP id 08UC0fgP005394; Wed, 30 Sep 2020 06:00:41 -0600 Received: from diamond.fritz.box (62-251-112-184.ip.xs4all.nl [62.251.112.184]) by ame8.swcp.com (8.15.2/8.15.2) with ESMTP id 08UC0BdG003035; Wed, 30 Sep 2020 06:00:37 -0600 (MDT) (envelope-from hudson@trmm.net) Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kNamp-0001mg-BR for xen-devel@lists.xenproject.org; Wed, 30 Sep 2020 12:00:43 +0000 Received: from mx1a.swcp.com (unknown [216.184.2.64]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3235fc8e-2f0f-49ad-87ab-7f89c1a625df; Wed, 30 Sep 2020 12:00:42 +0000 (UTC) Received: from ame8.swcp.com (ame8.swcp.com [216.184.2.163]) by mx1a.swcp.com (8.14.4/8.14.4/Debian-4) with ESMTP id 08UC0fgP005394; Wed, 30 Sep 2020 06:00:41 -0600 Received: from diamond.fritz.box (62-251-112-184.ip.xs4all.nl [62.251.112.184]) by ame8.swcp.com (8.15.2/8.15.2) with ESMTP id 08UC0BdG003035; Wed, 30 Sep 2020 06:00:37 -0600 (MDT) (envelope-from hudson@trmm.net) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 3235fc8e-2f0f-49ad-87ab-7f89c1a625df Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: neutral (ame8.swcp.com: 62.251.112.184 is neither permitted nor denied by domain of hudson@trmm.net) receiver=ame8.swcp.com; client-ip=62.251.112.184; helo=diamond.fritz.box; envelope-from=hudson@trmm.net; x-software=spfmilter 2.001 http://www.acme.com/software/spfmilter/ with libspf2-1.2.10; X-Authentication-Warning: ame8.swcp.com: Host 62-251-112-184.ip.xs4all.nl [62.251.112.184] claimed to be diamond.fritz.box From: Trammell Hudson To: xen-devel@lists.xenproject.org Cc: roger.pau@citrix.com, jbeulich@suse.com, andrew.cooper3@citrix.com, wl@xen.org Subject: [PATCH v8 5/5] efi: Do not use command line if unified config is included Date: Wed, 30 Sep 2020 08:00:11 -0400 Message-Id: <20200930120011.1622924-6-hudson@trmm.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200930120011.1622924-1-hudson@trmm.net> References: <20200930120011.1622924-1-hudson@trmm.net> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.78 X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-4.6.2 (ame8.swcp.com [216.184.2.128]); Wed, 30 Sep 2020 06:00:39 -0600 (MDT) X-Virus-Scanned: clamav-milter 0.99.2 at ame8 X-Virus-Status: Clean X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on ame8.swcp.com X-Spam-Status: No, hits=0.7 tests=NO_RECEIVED,NO_RELAYS,SPF_NEUTRAL version=3.4.1 X-Spam-Level: Content-Type: text/plain; charset="utf-8" If a unified Xen image is used, then the bundled configuration, Xen command line, dom0 kernel, and ramdisk are prefered over any files listed in the config file or provided on the command line. Unlike the shim based verification, the PE signature on a unified image covers all of the Xen+config+kernel+initrd modules linked into the unified image. This also ensures that, on properly configured UEFI Secure B= oot platforms, the entire runtime will be measured into the TPM for unsealing secrets or remote attestation. Signed-off-by: Trammell Hudson --- xen/common/efi/boot.c | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index 072b1cecd1..07ea5b3512 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -950,6 +950,35 @@ static void __init setup_efi_pci(void) efi_bs->FreePool(handles); } =20 +/* + * Logic should remain sync'ed with linux/arch/x86/xen/efi.c + * Secure Boot is enabled iff 'SecureBoot' is set and the system is + * not in Setup Mode. + */ +static bool __init efi_secure_boot(void) +{ + static __initdata EFI_GUID global_guid =3D EFI_GLOBAL_VARIABLE; + uint8_t secboot, setupmode; + UINTN secboot_size =3D sizeof(secboot); + UINTN setupmode_size =3D sizeof(setupmode); + EFI_STATUS rc; + + rc =3D efi_rs->GetVariable(L"SecureBoot", &global_guid, + NULL, &secboot_size, &secboot); + if ( rc !=3D EFI_SUCCESS ) + return false; + + rc =3D efi_rs->GetVariable(L"SetupMode", &global_guid, + NULL, &setupmode_size, &setupmode); + if ( rc !=3D EFI_SUCCESS ) + return false; + + if ( secboot > 1 || setupmode > 1 ) + blexit(L"Invalid SecureBoot/SetupMode variables"); + + return secboot =3D=3D 1 && setupmode =3D=3D 0; +} + static void __init efi_variables(void) { EFI_STATUS status; @@ -1126,15 +1155,15 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE = *SystemTable) static EFI_GUID __initdata shim_lock_guid =3D SHIM_LOCK_PROTOCOL_GUID; EFI_LOADED_IMAGE *loaded_image; EFI_STATUS status; - unsigned int i, argc; - CHAR16 **argv, *file_name, *cfg_file_name =3D NULL, *options =3D NULL; + unsigned int i, argc =3D 0; + CHAR16 **argv =3D NULL, *file_name, *cfg_file_name =3D NULL, *options = =3D NULL; UINTN gop_mode =3D ~0; EFI_SHIM_LOCK_PROTOCOL *shim_lock; EFI_GRAPHICS_OUTPUT_PROTOCOL *gop =3D NULL; union string section =3D { NULL }, name; bool base_video =3D false; const char *option_str; - bool use_cfg_file; + bool use_cfg_file, secure; =20 __set_bit(EFI_BOOT, &efi_flags); __set_bit(EFI_LOADER, &efi_flags); @@ -1153,8 +1182,10 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *= SystemTable) PrintErrMesg(L"No Loaded Image Protocol", status); =20 efi_arch_load_addr_check(loaded_image); + secure =3D efi_secure_boot(); =20 - if ( use_cfg_file ) + if ( use_cfg_file && + !read_section(loaded_image, L"config", &cfg, NULL) ) { UINTN offset =3D 0; =20 @@ -1212,6 +1243,8 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *S= ystemTable) =20 PrintStr(L"Xen " __stringify(XEN_VERSION) "." __stringify(XEN_SUBVERSI= ON) XEN_EXTRAVERSION " (c/s " XEN_CHANGESET ") EFI loader\r\n"); + if ( secure ) + PrintStr(L"UEFI Secure Boot enabled\r\n"); =20 efi_arch_relocate_image(0); =20 @@ -1231,7 +1264,7 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *S= ystemTable) /* Get the file system interface. */ dir_handle =3D get_parent_handle(loaded_image, &file_name); =20 - if ( read_section(loaded_image, L"config", &cfg, NULL) ) + if ( cfg.ptr ) PrintStr(L"Using builtin config file\r\n"); else if ( !cfg_file_name ) { --=20 2.25.1