From patchwork Thu May 4 22:57:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1777152 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=bbQJt/dF; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QC8QC6Z5qz20fg for ; Fri, 5 May 2023 08:59:15 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B8DAF85DCF; Fri, 5 May 2023 00:58:39 +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="bbQJt/dF"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E9E0385D9D; Fri, 5 May 2023 00:58:38 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) (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 54FC485DD5 for ; Fri, 5 May 2023 00:58:36 +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-il1-x12d.google.com with SMTP id e9e14a558f8ab-33119abae99so26972735ab.0 for ; Thu, 04 May 2023 15:58:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1683241115; x=1685833115; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=szA2sK5PH0+axGi3vaQCmbyl+XNlYlgEdH+EwtX2dm8=; b=bbQJt/dF1UgxXHGZ9hpSJ3Ico9He/DMZ0YXypHKwuO2DnvPeqrcxsoVXYeC4MyptNY Of+AKYjXrCIsjiFZZ35rh4yABLDSt5nHqWMqtziqDmi1X4vEg1RN8pz/tJU82IQL3AlL P0Ja6jq3YX9gsSDAoGtEpOGWL4DWNOhzRCIac= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683241115; x=1685833115; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=szA2sK5PH0+axGi3vaQCmbyl+XNlYlgEdH+EwtX2dm8=; b=d43DocFj8JzqSZqnLLaZqB/aN5Gti2gPtULi3zVtRw+vdmX5HU/c2vrtFd7s7URTrW 1p0M8o9EAqGeHEpPSGkDckZVc0Og2Pe/TWOU3IMMkZ/KeNBNjByze5FA/DlAqAM8jvW8 Ww5zAgMra+uqTAJYU3SPwQEm+gEyYQpWzWbtIT6AcjcvJkvO+NSC5neBOJ2lq+KevP7w 1vmmpcbzo+EyWiYL/s4ljpsuvmK6h4qPYKzQn/qjEySIh44reMoZrEw3ykVjxDEpqjYD /0wMhUGFP7Qg5Hqo/pTwIzQ/r/0hEoQKquemk92xmvF9X1AStlHhbv9+NfRPBFFrkQ9O SxOw== X-Gm-Message-State: AC+VfDwfEGabI4dT0J7VSUsYvTUJlENQC/dz7wGHDbFeftCWQWFwC0Cz Xbc/9auPxW1h1C2jxmeUqUQjCv1bro7/BjApz08= X-Google-Smtp-Source: ACHHUZ7b4cT2ubVNwWG8CGm6vOLsNChIIl7PSBU+A2jNm57//udF3l5WBidRx0OVoq3397pXisxWHA== X-Received: by 2002:a6b:d81a:0:b0:760:effd:c899 with SMTP id y26-20020a6bd81a000000b00760effdc899mr179286iob.5.1683241114843; Thu, 04 May 2023 15:58:34 -0700 (PDT) Received: from kea.bld.corp.google.com ([2620:15c:183:200:b5a:9fa0:3da:54ec]) by smtp.gmail.com with ESMTPSA id e11-20020a5ede0b000000b007608af6dfb4sm39506iok.31.2023.05.04.15.58.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 May 2023 15:58:34 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Heinrich Schuchardt , Nikhil M Jain , Bin Meng , Simon Glass , Anatolij Gustschin , =?utf-8?q?Beno=C3=AEt_Th=C3=A9baudeau?= Subject: [PATCH v3 00/43] x86: Use qemu-x86_64 to boot EFI installers Date: Thu, 4 May 2023 16:57:46 -0600 Message-ID: <20230504225829.2537050-1-sjg@chromium.org> X-Mailer: git-send-email 2.40.1.521.gf1e218fcd8-goog MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.8 at phobos.denx.de X-Virus-Status: Clean This series adds various minor features so that qemu-x86_64 can boot the Ubuntu 2022.04 installer using a virtio device: qemu-system-x86_64 -M pc -drive format=raw,file=root.img -bios /tmp/b/qemu-x86_64/u-boot.rom -drive if=virtio,file=ubuntu-22.04.2-desktop-amd64.iso -smp 4 -m 4G -serial mon:stdio The main changes include: - Enable video in SPL while running in 32-bit mode - Drop the duplicate ACPI tables with EFI - Support PCI autoconfig in SPL - Support FAT on a CDROM filesystem - Improved bootstd rules around device tree and efi_set_bootdev() There are also quite a number of minor tweaks and fixes to make things easier to use. This series is based on an older version of the SPL-video series from Nikhil M Jain. It is available at u-boot-dm/bryc-working Changes in v3: - Add a tag name for the blob - Add new patch to refactor table-writing code a ltitle - Adjust the code to handle qemu writing a pointer to tables in memory Changes in v2: - Add new patch with docs for mtrr command - Add docs to board_init_f_r() too - Fix BINS typo - Drop the Ooops string - Drop ** in strings and use log_err() for messages - Use log_warning() for the warning - Handle the case where the tables are in the bloblist - Add new patch to show the number of physical address bits - Add new patch to convert some debug statements to use logging - Add new patch to support Micron memory - Add new patch to make sure that the LPC is active before SDRAM init - Add new patch to support outputing function names in SPL - Drop patch to set high bits of the mtrr base register, for now Simon Glass (43): x86: Allow listing MTRRs in SPL x86: mtrr: Add documentation bios_emulator: Add Kconfig and adjust Makefile for SPL bios_emulator: Drop VIDEO_IO_OFFSET x86: Tidy up EFI code in interrupt_init() x86: Add a comment for board_init_f_r_trampoline() x86: Show the CPU physical address size with bdinfo x86: Correct get_sp() implementation for 64-bit x86: Show an error when a BIOS exception occurs acpi: Add a comment to set the acpi tables bdinfo: Show the RAM top and approximate stack pointer part: Allow setting the partition-table type qfw: Show the file address if available log: Tidy up an ambiguous comment. video: Allow building video drivers for SPL qfw: Set the address of the ACPI tables efi: Show all known UUIDs with CONFIG_CMD_EFIDEBUG x86: Improve the trampoline in 64-bit mode Show the malloc base with the bdinfo command nvme: Provide more useful debugging messages pci: Support autoconfig in SPL pci: Allow the video BIOS to work in SPL with QEMU pci: Tidy up logging and reporting for video BIOS x86: Allow video-BIOS code to be built for SPL x86: Pass video settings from SPL to U-Boot proper x86: Init video in SPL if enabled pci: Adjust video BIOS debugging to be SPL-friendly pci: Mask the ROM address in case it is already enabled x86: Enable display for QEMU 64-bit x86: Allow logging to be used in SPL reliably fs: fat: Shrink the size of a few strings fs: fat: Support reading from a larger block size x86: Enable useful options for qemu-86_64 x86: Refactor table-writing code a litlle x86: Record the start and end of the tables x86: Show the number of physical address bits x86: Convert some debug statements to use logging x86: link: Support Micron memory x86: Make sure that the LPC is active before SDRAM init log: Support outputing function names in SPL sandbox: Correct header order in board file sandbox: Install ACPI tables on startup efi: Use the installed ACPI tables arch/sandbox/include/asm/global_data.h | 4 + arch/x86/cpu/i386/cpu.c | 2 + arch/x86/cpu/i386/interrupt.c | 17 +-- arch/x86/cpu/intel_common/mrc.c | 10 +- arch/x86/cpu/ivybridge/sdram.c | 4 +- arch/x86/cpu/mtrr.c | 61 ++++++++ arch/x86/cpu/start64.S | 19 +++ arch/x86/dts/chromebook_link.dts | 1 + arch/x86/include/asm/global_data.h | 5 + arch/x86/include/asm/mtrr.h | 20 +++ arch/x86/include/asm/u-boot-x86.h | 27 +++- arch/x86/lib/Makefile | 7 +- arch/x86/lib/bdinfo.c | 6 + arch/x86/lib/bios.c | 4 +- arch/x86/lib/bootm.c | 2 +- arch/x86/lib/mrccache.c | 6 +- arch/x86/lib/spl.c | 63 +++++++-- arch/x86/lib/tables.c | 42 ++++-- board/google/Kconfig | 7 - board/sandbox/sandbox.c | 22 ++- cmd/Kconfig | 8 ++ cmd/acpi.c | 24 +++- cmd/bdinfo.c | 6 + cmd/part.c | 34 +++++ cmd/qfw.c | 2 +- cmd/x86/mtrr.c | 60 +------- common/bloblist.c | 1 + common/board_f.c | 12 +- common/board_r.c | 7 +- common/log.c | 2 +- common/log_console.c | 10 +- configs/qemu-x86_64_defconfig | 14 ++ disk/part.c | 16 +++ doc/usage/cmd/acpi.rst | 29 +++- doc/usage/cmd/mtrr.rst | 151 ++++++++++++++++++++ doc/usage/cmd/part.rst | 74 ++++++++++ doc/usage/cmd/qfw.rst | 28 ++-- doc/usage/index.rst | 1 + drivers/Kconfig | 2 + drivers/Makefile | 5 +- drivers/bios_emulator/Kconfig | 10 ++ drivers/bios_emulator/biosemui.h | 18 +-- drivers/bios_emulator/x86emu/sys.c | 1 + drivers/gpio/intel_ich6_gpio.c | 5 +- drivers/misc/qfw.c | 12 ++ drivers/nvme/nvme.c | 36 +++-- drivers/pch/pch9.c | 6 +- drivers/pci/Kconfig | 8 ++ drivers/pci/pci-uclass.c | 10 +- drivers/pci/pci_rom.c | 165 +++++++++++++++++----- fs/fat/Kconfig | 13 ++ fs/fat/fat.c | 121 +++++++++++++--- fs/fat/fat_write.c | 22 ++- include/asm-generic/global_data.h | 11 ++ include/bloblist.h | 1 + include/configs/conga-qeval20-qa3-e3845.h | 2 - include/configs/dfi-bt700.h | 2 - include/configs/minnowmax.h | 2 - include/configs/som-db5800-som-6867.h | 2 - include/configs/theadorable-x86-common.h | 2 - include/configs/x86-chromebook.h | 2 - include/part.h | 9 ++ include/pci_ids.h | 1 + include/video.h | 24 ++++ lib/efi_loader/efi_acpi.c | 33 +++-- lib/uuid.c | 2 +- test/dm/acpi.c | 38 +++++ 67 files changed, 1107 insertions(+), 266 deletions(-) create mode 100644 doc/usage/cmd/mtrr.rst create mode 100644 drivers/bios_emulator/Kconfig