From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE889C433F5 for ; Wed, 8 Sep 2021 13:34:21 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B2A0461211 for ; Wed, 8 Sep 2021 13:34:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org B2A0461211 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B05CD8334F; Wed, 8 Sep 2021 15:34:18 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="dEoPvd0G"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A547883353; Wed, 8 Sep 2021 15:34:16 +0200 (CEST) Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 52BF582C84 for ; Wed, 8 Sep 2021 15:34:13 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-wm1-x333.google.com with SMTP id m25-20020a7bcb99000000b002e751bcb5dbso1565722wmi.5 for ; Wed, 08 Sep 2021 06:34:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=jiV52yLgATCoonYgi+gm7nfWux0vnM+aoZuTVXbhFDs=; b=dEoPvd0Gm1GFrpHDHFrpPENOhz+MCrkSiDKtN2gxDfIbl7YFnobV9ovxyEXIzz5bsH ocIRpyd+zhwlgiFcSbMtlXHimIJ4tpcOX0qLljo0fn2QnDUSBhuqJoPTqyHfiOdLVHEr XoCDTJuI1U9A1Rj5nd3wFEH8ybIblREX4S29M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=jiV52yLgATCoonYgi+gm7nfWux0vnM+aoZuTVXbhFDs=; b=VlcPmRmYvl0FuNXVy0Wd5wKXuS35gg/P6P1Vgh86FBQHaASHQOEu2VMdlOd259/ZCS 8K1QsErQ8CFAcd2NhoRGyPzJDgwvRs3zs23w5gZmYgS8HNRgGBoBQ+d7XF32YeeSw6cf nQqc+VZBsCGnaM8/ceGOZMK4aS4Z/ZqvQNpYCthmKvckf1g3OIQ+gcQYRuZR6Liq/I+O UPh19aIrtWyLTLgGwS84qpMYpUE/IKf0SYXQE2t5wpEYx6MODCGgR6V+PImk1UdssLYR CwzxAhD6ZRIGeuxckbLL2iI5HxZfJmV26d3AmfnTXl1oVxDMiWPvCng+CyPVQvB+NKrM b99g== X-Gm-Message-State: AOAM530i9KuFIISNe8gqbwQCJKt2o7PLsvvt3pW0He02qamgHOwp2GHL WZ63XxWZtVtwxPhJgFABbGnP+NPHgFuDwg== X-Google-Smtp-Source: ABdhPJxLv4xDq21iisyTdEtZUkbeAjszYElNXeo0Q4QzwyRaYbsyY18rFQmcP95Eo53ydeB+OLZ1eA== X-Received: by 2002:a1c:f606:: with SMTP id w6mr3687402wmc.42.1631108052440; Wed, 08 Sep 2021 06:34:12 -0700 (PDT) Received: from sjg1.roam.corp.google.com (82-69-54-180.dsl.in-addr.zen.co.uk. [82.69.54.180]) by smtp.gmail.com with ESMTPSA id l2sm2209065wmi.1.2021.09.08.06.34.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Sep 2021 06:34:11 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Ilias Apalodimas , Heinrich Schuchardt , Bin Meng , Tom Rini , Christian Melki , Simon Glass , Alexander Graf Subject: [PATCH 00/35] efi: Improvements to U-Boot running on top of UEFI Date: Wed, 8 Sep 2021 07:33:30 -0600 Message-Id: <20210908133405.696481-1-sjg@chromium.org> X-Mailer: git-send-email 2.33.0.153.gba50c8fa24-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean At present U-Boot can be built as an EFI app, but it is really just for testing, with very few features. Instead, the payload build is used for booting on top of UEFI, where U-Boot takes over the machine immediately and supplies its own drivers. But the app could be made more useful. This series provides access to EFI block devices and the video console within U-Boot. It also restructures the app to make it possible to boot a kernel, although further work is needed to implement this. This can be thought of as making U-Boot perform a little like 'grub', in that it runs purely based on UEFI-provided services. Of course a lot more work is required, but this is a start. Note: It would be very useful to include qemu tests of the app and stub in CI. This is available at u-boot-dm/efi-working Simon Glass (35): x86: Keep symbol information in u-boot ELF file x86: Create a new header for EFI x86: Show some EFI info with the bdinfo command x86: Tidy up global_data pointer for 64-bit efi: Add a script for building and testing U-Boot on UEFI x86: Create a 32/64-bit selection for the app efi: Create a 64-bit app x86: Don't duplicate global_ptr in 64-bit EFI app efi: Add a way to obtain boot services in the app efi: Add video support to the app RFC: efi: Drop code that doesn't work with driver model efi: Add EFI uclass for media efi: Add a media/block driver for EFI block devices efi: Locate all block devices in the app patman: Use a ValueError exception if tools.Run() fails binman: Report an error if test files fail to compile binman: Support reading the offset of an ELF-file symbol binman: Allow timeout to occur in the image or its section binman: Tidy up comments on _DoTestFile() binman: Support updating the dtb in an ELF file efi: serial: Support arrow keys bloblist: Move to rST format bloblist: Support allocating the bloblist x86: Allow booting a kernel from the EFI app x86: Don't process the kernel command line unless enabled x86: efi: Add room for the binman definition in the dtb efi: Add comments to struct efi_priv efi: Fix ll_boot_init() operation with the app efi: Add a few comments to the stub efi: Share struct efi_priv between the app and stub code efi: Move exit_boot_services into a function efi: Check for failure when initing the app efi: Mention that efi_info_get() is only used in the stub efi: Show when allocated pages are used efi: Allow easy selection of serial-only operation arch/sandbox/dts/test.dts | 4 + arch/x86/config.mk | 4 +- arch/x86/cpu/efi/payload.c | 13 +- arch/x86/cpu/intel_common/Makefile | 2 +- arch/x86/cpu/u-boot-64.lds | 2 + arch/x86/cpu/x86_64/Makefile | 4 + arch/x86/cpu/x86_64/cpu.c | 32 +--- arch/x86/cpu/x86_64/misc.c | 41 ++++++ arch/x86/dts/Makefile | 2 +- arch/x86/dts/efi-x86_app.dts | 4 + arch/x86/include/asm/efi.h | 39 +++++ arch/x86/include/asm/global_data.h | 2 + arch/x86/include/asm/zimage.h | 3 - arch/x86/lib/Makefile | 1 + arch/x86/lib/bdinfo.c | 22 +++ arch/x86/lib/bootm.c | 11 +- arch/x86/lib/zimage.c | 14 +- board/efi/Kconfig | 15 +- board/efi/efi-x86_app/Kconfig | 6 +- board/efi/efi-x86_app/MAINTAINERS | 11 +- common/Kconfig | 15 +- common/bloblist.c | 16 +- common/board_f.c | 8 +- ..._app_defconfig => efi-x86_app32_defconfig} | 2 +- configs/efi-x86_app64_defconfig | 39 +++++ doc/{README.bloblist => develop/bloblist.rst} | 20 ++- doc/develop/index.rst | 1 + doc/develop/uefi/u-boot_on_efi.rst | 8 +- drivers/block/Kconfig | 33 +++++ drivers/block/Makefile | 4 + drivers/block/blk-uclass.c | 2 +- drivers/block/efi-media-uclass.c | 15 ++ drivers/block/efi_blk.c | 115 +++++++++++++++ drivers/block/sb_efi_media.c | 21 +++ drivers/serial/serial_efi.c | 11 +- drivers/video/Kconfig | 2 +- drivers/video/efi.c | 45 +++++- include/configs/efi-x86_app.h | 31 +++- include/dm/uclass-id.h | 1 + include/efi.h | 117 ++++++++++++++- include/efi_api.h | 15 ++ include/init.h | 2 +- lib/efi/Kconfig | 34 ++++- lib/efi/efi.c | 108 ++++++++++++++ lib/efi/efi_app.c | 139 ++++++++++++++++-- lib/efi/efi_stub.c | 95 +++++------- lib/efi_driver/Makefile | 2 +- lib/efi_loader/Kconfig | 2 + lib/efi_loader/efi_device_path.c | 96 +++--------- lib/efi_loader/efi_disk.c | 48 ------ scripts/build-efi.sh | 111 ++++++++++++++ test/dm/Makefile | 1 + test/dm/efi_media.c | 24 +++ tools/binman/binman.rst | 36 +++++ tools/binman/cmdline.py | 2 + tools/binman/control.py | 11 ++ tools/binman/elf.py | 74 +++++++++- tools/binman/elf_test.py | 45 +++++- tools/binman/ftest.py | 91 +++++++++++- tools/binman/test/Makefile | 13 +- tools/binman/test/bss_data.c | 2 +- tools/binman/test/embed_data.c | 16 ++ tools/binman/test/embed_data.lds | 23 +++ tools/binman/test/u_boot_binman_embed.c | 13 ++ tools/binman/test/u_boot_binman_embed.lds | 29 ++++ tools/binman/test/u_boot_binman_embed_sm.c | 13 ++ tools/patman/tools.py | 2 +- 67 files changed, 1492 insertions(+), 293 deletions(-) create mode 100644 arch/x86/cpu/x86_64/misc.c create mode 100644 arch/x86/include/asm/efi.h create mode 100644 arch/x86/lib/bdinfo.c rename configs/{efi-x86_app_defconfig => efi-x86_app32_defconfig} (97%) create mode 100644 configs/efi-x86_app64_defconfig rename doc/{README.bloblist => develop/bloblist.rst} (77%) create mode 100644 drivers/block/efi-media-uclass.c create mode 100644 drivers/block/efi_blk.c create mode 100644 drivers/block/sb_efi_media.c create mode 100755 scripts/build-efi.sh create mode 100644 test/dm/efi_media.c create mode 100644 tools/binman/test/embed_data.c create mode 100644 tools/binman/test/embed_data.lds create mode 100644 tools/binman/test/u_boot_binman_embed.c create mode 100644 tools/binman/test/u_boot_binman_embed.lds create mode 100644 tools/binman/test/u_boot_binman_embed_sm.c -- 2.33.0.153.gba50c8fa24-goog