From nobody Thu May 9 02:31:12 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+93579+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+93579+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1662722117; cv=none; d=zohomail.com; s=zohoarc; b=Jopgpe6KWHaX7YwfKBUAk7V5z6+S2r7xTZroz9rGCE4UzWTobXocuuKon03Lxkg/KSs8txJGeWsFIIQayqw3cwTMLpQPC7d5T7EsPGiYWGI4AmmKgaobvotggkhQlanrspfZUbu3M5uaqqOnrCSNdeA7985zdXQN4MjfVK97N7U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1662722117; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=VhohI99gUN6zQ1LDV3XmH7+c6cv9CcsP187AEm2Q+P0=; b=XO6r2/jyt3zEN8dkSw1Jk0NDIprEzhkwOgWjgHZ8DT1yzw2cva0XbggT4nEDx2CGlSoNWBuMPiTiFnCK7zucpA3kQWwxjzM261Y+ZRH7Mq+WwoosBGNJebBkSXngDc7uP7CkMkmlay6mU6od6mZJTwnis6nqst2zhBQ1xZXry1M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+93579+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1662722117262531.1074272350938; Fri, 9 Sep 2022 04:15:17 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id bqJLYY1788612x4aluSI8HW8; Fri, 09 Sep 2022 04:15:16 -0700 X-Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by mx.groups.io with SMTP id smtpd.web08.12.1662722116001097121 for ; Fri, 09 Sep 2022 04:15:16 -0700 X-Received: by mail-wr1-f49.google.com with SMTP id c11so2145107wrp.11 for ; Fri, 09 Sep 2022 04:15:15 -0700 (PDT) X-Gm-Message-State: 3Mkh4ojuXetAQ6GjEh5DQNJLx1787277AA= X-Google-Smtp-Source: AA6agR75QrOEGnWePXTprFKIUc6UHwE9LzQIHEt8bUoCZpQT6IoerVNsBSP02NMg9sX3dYZCTe+ceA== X-Received: by 2002:a05:6000:815:b0:22a:418e:f354 with SMTP id bt21-20020a056000081500b0022a418ef354mr905430wrb.97.1662722114107; Fri, 09 Sep 2022 04:15:14 -0700 (PDT) X-Received: from localhost.localdomain (eth-east-parth2-46-193-66-249.wb.wifirst.net. [46.193.66.249]) by smtp.gmail.com with ESMTPSA id i11-20020adfb64b000000b00228df23bd51sm240537wre.82.2022.09.09.04.15.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Sep 2022 04:15:13 -0700 (PDT) From: =?UTF-8?B?VGjDqW8gSmVobA==?= To: devel@edk2.groups.io Cc: Leif Lindholm , Michael D Kinney , Isaac Oram , Pedro Falcato , Gerd Hoffmann , Stefan Hajnoczi Subject: [edk2-devel] [[edk2-platforms] Patch V2 4/4] QemuOpenBoardPkg: Enable stage 4 Date: Fri, 9 Sep 2022 13:15:04 +0200 Message-Id: <20220909111504.1661-5-theojehl76@gmail.com> In-Reply-To: <20220909111504.1661-1-theojehl76@gmail.com> References: <20220909111504.1661-1-theojehl76@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,theojehl76@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1662722116; bh=vxmh6AJ6ZrMTay63b/4WCqyGF1+aX08S6F59cQW8pak=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=RkWguQHMq+GqvRtvNCfH82+drBrEyRVPIpYgaEFVbv3PWvFct9IhBsXDQHMEtU6ooBN 1ojAbQtIyJF7YneFDb8KzdlhG/PIvQSJf/RisHz2UNq4dHDN5lnMHxlK46JvQk84d2aTf Qv566KqGlrskvZeIdMt6oqtrZDBFbhywBYA= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1662722118088100015 Content-Type: text/plain; charset="utf-8" Enable MinPlatform stage 4 (OS boot) functionality. It adds ACPI, SMBIOS and SMM drivers required for stage 4. This should boot Windows and Linux with PIIX4 or Q35 configurations. In the current state, SMM only works on Qemu Q35 system if you set SMM_REQUIRED =3D TRUE in QemuOpenBoardPkg.dsc or via command-line. Cc: Leif Lindholm Cc: Michael D Kinney Cc: Isaac Oram Cc: Pedro Falcato Cc: Gerd Hoffmann Cc: Stefan Hajnoczi Signed-off-by: Th=C3=A9o Jehl --- Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.inc | 56 +++= +++++ Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc | 14 +- Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf | 66 +++= +++++++ Platform/Qemu/QemuOpenBoardPkg/Include/Library/QemuOpenFwCfgLib.h | 10 +- 4 files changed, 139 insertions(+), 7 deletions(-) diff --git a/Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.inc b/Pl= atform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.inc new file mode 100644 index 000000000000..369416db72b6 --- /dev/null +++ b/Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.inc @@ -0,0 +1,56 @@ +## @file +# Common DSC content to begin Stage 4 enabling +# +# @copyright +# Copyright (C) 2022 Th=C3=A9o Jehl +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + + +[LibraryClasses] + !if $(SMM_REQUIRED) =3D=3D TRUE + SpiFlashCommonLib | IntelSiliconPkg/Library/SmmSpiFlashCommonLib/S= mmSpiFlashCommonLib.inf + !endif + +[LibraryClasses.Common.DXE_SMM_DRIVER] + LockBoxLib | MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxS= mmLib.inf + SmmCpuPlatformHookLib | OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmC= puPlatformHookLibQemu.inf + SmmCpuFeaturesLib | OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeatur= esLib.inf + +[Components.$(DXE_ARCH)] + OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf + MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf + OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf + MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf + MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf + MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf + MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf + + !if $(SMM_REQUIRED) =3D=3D TRUE + OvmfPkg/SmmAccess/SmmAccess2Dxe.inf + OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf + MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf + MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf + + MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf + UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf + + MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRout= erSmm.inf + MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf + UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf + IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf + !endif + + # + # SMBIOS Support + # + MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf { + + NULL | OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf + } + OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf diff --git a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc b/Platform= /Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc index 55c7c3e3cc00..13eeaac0cc05 100644 --- a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc +++ b/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc @@ -38,7 +38,7 @@ OvmfPkg/OvmfPkg.dec =20 [PcdsFixedAtBuild] - gMinPlatformPkgTokenSpaceGuid.PcdBootStage | 3 + gMinPlatformPkgTokenSpaceGuid.PcdBootStage | 4 =20 gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel | = 0x802A00C7 gEfiMdePkgTokenSpaceGuid.PcdFixedDebugPrintErrorLevel | = 0x802A00C7 @@ -95,7 +95,7 @@ gMinPlatformPkgTokenSpaceGuid.PcdTpm2Enable | = FALSE =20 !if $(SMM_REQUIRED) =3D=3D TRUE - gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire | = FALSE + gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire | = TRUE gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugSupport | = FALSE gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache | = FALSE !endif @@ -129,6 +129,7 @@ !include QemuOpenBoardPkg/Include/Dsc/Stage1.dsc.inc !include QemuOpenBoardPkg/Include/Dsc/Stage2.dsc.inc !include QemuOpenBoardPkg/Include/Dsc/Stage3.dsc.inc +!include QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.inc =20 [LibraryClasses.Common] QemuOpenFwCfgLib | QemuOpenBoardPkg/Library/QemuOpenFwCfgLib/Qemu= OpenFwCfgLib.inf @@ -153,3 +154,12 @@ DebugLib | OvmfPkg/Library/PlatformDebugLibIoPort/Platfor= mRomDebugLibIoPort.inf =20 [Components.$(DXE_ARCH)] + MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf + MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf + OvmfPkg/SataControllerDxe/SataControllerDxe.inf + MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf + MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf + MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf + MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf + MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf diff --git a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf b/Platform= /Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf index 8f14ad71c1f8..ea1547df32aa 100644 --- a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf +++ b/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf @@ -220,6 +220,8 @@ SET gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize = =3D 0x800000 INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf INF MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf =20 + + [FV.FvUefiBoot] !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf FvNameGuid =3D D0C15ADB-FE38-4331-841C-0E96C1B0FBFA @@ -232,15 +234,76 @@ SET gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize = =3D 0x800000 } } =20 + ########################### # # Stage 4 Firmware Volumes # ########################### +[FV.FvOsBootUncompressed] + !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf + FvNameGuid =3D 4bb59c22-e1b8-414e-9de8-559db4054c4c + + INF OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf + + INF PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeControllerDxe.inf + INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf + INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf + INF FatPkg/EnhancedFatDxe/Fat.inf + + INF MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf + INF MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf + + # ACPI + INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf + INF OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf + + # Buses + + INF MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf + INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf + INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf + INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf + INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf + + INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf + INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf + + INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf + + INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf + INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf + + INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf + + !if $(SMM_REQUIRED) =3D=3D TRUE + INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf + INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf + INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf + INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf + INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf + INF MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCo= deRouterSmm.inf + INF MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSm= m.inf + INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf + INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf + INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteS= mm.inf + INF IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf + !endif + + INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + INF OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf + [FV.FvOsBoot] !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf FvNameGuid =3D AE8F0EA0-1614-422D-ABC1-C518596F1678 =20 + FILE FV_IMAGE =3D 4bb59c22-e1b8-414e-9de8-559db4054c4c { + SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRE= D =3D TRUE { + SECTION FV_IMAGE =3D FvOsBootUncompressed + } + } + + ########################### # # Stage 5 Firmware Volumes @@ -249,6 +312,9 @@ SET gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize = =3D 0x800000 [FV.FvSecurity] !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf FvNameGuid =3D 1AE6AB90-9431-425B-9A92-ED2708A4E982 + !include MinPlatformPkg/Include/Fdf/CoreSecurityLateInclude.fdf + !include MinPlatformPkg/Include/Fdf/CoreSecurityPreMemoryInclude.fdf + =20 ########################### # diff --git a/Platform/Qemu/QemuOpenBoardPkg/Include/Library/QemuOpenFwCfgLi= b.h b/Platform/Qemu/QemuOpenBoardPkg/Include/Library/QemuOpenFwCfgLib.h index 2d4690b660f5..a94228837b7a 100644 --- a/Platform/Qemu/QemuOpenBoardPkg/Include/Library/QemuOpenFwCfgLib.h +++ b/Platform/Qemu/QemuOpenBoardPkg/Include/Library/QemuOpenFwCfgLib.h @@ -89,17 +89,17 @@ QemuFwCfgReadBytes ( /** Finds a file in fw_cfg by its name =20 - @param[in] String Pointer to an ASCII string to match in the database + @param[in] String Pointer to an ASCII string to match in the database @param[out] FWConfigFile Buffer for the config file =20 - @return EFI_STATUS - Entry was found, FWConfigFile is populated - @return EFI_ERROR - Entry was not found + @return EFI_STATUS Entry was found, FWConfigFile is populated + @return EFI_ERROR Entry was not found */ EFI_STATUS EFIAPI QemuFwCfgFindFile ( - IN CHAR8 *String, - OUT QEMU_FW_CFG_FILE *FWConfigFile + IN CHAR8 *String, + OUT QEMU_FW_CFG_FILE *FWConfigFile ); =20 #endif // QEMU_OPEN_BOARD_PKG_QEMU_FW_CFG_LIB_H_ --=20 2.32.1 (Apple Git-133) -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#93579): https://edk2.groups.io/g/devel/message/93579 Mute This Topic: https://groups.io/mt/93570152/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-