From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by mx.groups.io with SMTP id smtpd.web12.877.1663104726098864655 for ; Tue, 13 Sep 2022 14:32:06 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Vk84KPLT; spf=pass (domain: gmail.com, ip: 209.85.221.41, mailfrom: theojehl76@gmail.com) Received: by mail-wr1-f41.google.com with SMTP id bj14so22726319wrb.12 for ; Tue, 13 Sep 2022 14:32:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=0zgiWrhr7S9RSDAFXcj9+ErzwaOoTo1WvtVYOJZ2ZlM=; b=Vk84KPLTLMR+y+Yurcs0J3Y0wwTEKt20A8AGz1aMr2i42wtLbTxHclhotfeNUMFPaq KAhIeG+Queoa2IVvTMjZWNXWginLhmYbcRW/POOi2sq1TjXMljx//8hsATuyVaomgCI7 7r7SWA09W4JvM7PEs3go3NdXC/u1+g7FUiZrjw+x7W9hv6W0bVWRlOwkUNRb/+4aup57 lgDTYxFa8bjk7NPHCkQ/4mHISniORrqj1CRApgtanzxjN54z+oKlg3Kpbw4BeZJGMTLX UrZH3VWL2mGa6uwcjre5CStwkrGd6Gy0KMoBPwVhOIHBr2q42V6fUf7ySysCCbnPFfNC 1Xcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=0zgiWrhr7S9RSDAFXcj9+ErzwaOoTo1WvtVYOJZ2ZlM=; b=ojsL18ZLyRDCBilqXAx0ZdpEgGOX5U2Xh3FHxeyInB8IHoiWXs0RKMpl1ZoLGu1NMO NCoLI4Q5edZp0o4RqlVf+MTJ9vuspHdU6KfIv7iwrkNisLq0hIISF6RshmBQyuYMIjZw XW3DhsSOFb3r8U2IXR6CUS6m/EPr+yW30k6zvesze5uioInD2x/9LjgKAVyzCO3EMmyz xWPQIHlORKlacvXBOzBobZ9wqLTWa0c75s5nWqN0xD0iTHqbxH+AZ+duiET8vQQc40XT PyjRVPjaj3Ady9YUm2qCqrNVZWkJZiK7HDMwtAZEF+JvFWYB5seYaa4Xt3SWVOkBDoex mreg== X-Gm-Message-State: ACgBeo23jhqBQbdWJ1bXdHUIAFB4/NkFG+scv2oG+Gv9Jgtr1H7L2RYH 9IF9ZNC9R98Ydh/9D6WkOQpBemH7qG0djO3r X-Google-Smtp-Source: AA6agR6WuGY7DQCbaNIsg2lorPC8ioieZQVNpx2d39t4Dt0U2SeZJKU44XkvTYQpGYy5YYuHssS70g== X-Received: by 2002:adf:dbc4:0:b0:225:333d:8404 with SMTP id e4-20020adfdbc4000000b00225333d8404mr20858447wrj.671.1663104724174; Tue, 13 Sep 2022 14:32:04 -0700 (PDT) Return-Path: 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 x4-20020a05600c188400b003a3170a7af9sm14139734wmp.4.2022.09.13.14.32.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Sep 2022 14:32:03 -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 V3 4/4] QemuOpenBoardPkg: Enable stage 4 Date: Tue, 13 Sep 2022 23:31:57 +0200 Message-Id: X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: Theo Jehl --- .../Include/Dsc/Stage4.dsc.inc | 56 +++++++++++++++++ .../QemuOpenBoardPkg/QemuOpenBoardPkg.dsc | 14 ++++- .../QemuOpenBoardPkg/QemuOpenBoardPkg.fdf | 61 +++++++++++++++++++ 3 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.i= nc 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..283c235b44c0 --- /dev/null +++ b/Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.inc @@ -0,0 +1,56 @@ +## @file=0D +# Common DSC content to begin Stage 4 enabling=0D +#=0D +# @copyright=0D +# Copyright (C) 2022 Theo Jehl=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +##=0D +=0D +=0D +[LibraryClasses]=0D + !if $(SMM_REQUIRED) =3D=3D TRUE=0D + SpiFlashCommonLib | IntelSiliconPkg/Library/SmmSpiFlashCommonLib/S= mmSpiFlashCommonLib.inf=0D + !endif=0D +=0D +[LibraryClasses.Common.DXE_SMM_DRIVER]=0D + LockBoxLib | MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxS= mmLib.inf=0D + SmmCpuPlatformHookLib | OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmC= puPlatformHookLibQemu.inf=0D + SmmCpuFeaturesLib | OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeatur= esLib.inf=0D +=0D +[Components.$(DXE_ARCH)]=0D + OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf=0D + MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf=0D + OvmfPkg/SataControllerDxe/SataControllerDxe.inf=0D + MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf=0D + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf=0D + MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf=0D + MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf=0D + MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf=0D + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf=0D + MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf=0D +=0D + !if $(SMM_REQUIRED) =3D=3D TRUE=0D + OvmfPkg/SmmAccess/SmmAccess2Dxe.inf=0D + OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf=0D + MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf=0D + MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf=0D +=0D + MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf=0D + UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf=0D +=0D + MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRout= erSmm.inf=0D + MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf= =0D + UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf=0D + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf= =0D + IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf=0D + !endif=0D +=0D + #=0D + # SMBIOS Support=0D + #=0D + MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf {=0D + =0D + NULL | OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf=0D + }=0D + OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf=0D diff --git a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc b/Platform= /Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc index 55a7b7e6cdb6..f5c317c83e6a 100644 --- a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc +++ b/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc @@ -50,7 +50,7 @@ # Stage 5 - boot to OS with security boot enabled=0D # Stage 6 - boot with advanced features enabled=0D #=0D - gMinPlatformPkgTokenSpaceGuid.PcdBootStage | 3=0D + gMinPlatformPkgTokenSpaceGuid.PcdBootStage | 4=0D =0D #=0D # MinPlatform common include for required feature PCD=0D @@ -99,7 +99,7 @@ gMinPlatformPkgTokenSpaceGuid.PcdSerialTerminalEnable | = TRUE=0D =0D !if $(SMM_REQUIRED) =3D=3D TRUE=0D - gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire | = FALSE=0D + gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire | = TRUE=0D gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugSupport | = FALSE=0D gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache | = FALSE=0D !endif=0D @@ -133,6 +133,7 @@ !include QemuOpenBoardPkg/Include/Dsc/Stage1.dsc.inc=0D !include QemuOpenBoardPkg/Include/Dsc/Stage2.dsc.inc=0D !include QemuOpenBoardPkg/Include/Dsc/Stage3.dsc.inc=0D +!include QemuOpenBoardPkg/Include/Dsc/Stage4.dsc.inc=0D =0D [LibraryClasses.Common]=0D QemuOpenFwCfgLib | QemuOpenBoardPkg/Library/QemuOpenFwCfgLib/Qemu= OpenFwCfgLib.inf=0D @@ -157,3 +158,12 @@ DebugLib | OvmfPkg/Library/PlatformDebugLibIoPort/Platfor= mRomDebugLibIoPort.inf=0D =0D [Components.$(DXE_ARCH)]=0D + MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf=0D + MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf=0D + OvmfPkg/SataControllerDxe/SataControllerDxe.inf=0D + MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf=0D + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf=0D + MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf=0D + MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf=0D + MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf=0D + MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf=0D diff --git a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf b/Platform= /Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf index d07f9b4e7b80..5af0f0f2faa2 100644 --- a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf +++ b/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf @@ -237,10 +237,69 @@ SET gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize = =3D 0x800000 # Stage 4 Firmware Volumes=0D #=0D ###########################=0D +[FV.FvOsBootUncompressed]=0D + !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf=0D + FvNameGuid =3D 4bb59c22-e1b8-414e-9de8-559db4054c4c=0D +=0D + INF OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf=0D +=0D + INF PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeControllerDxe.inf=0D + INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf=0D + INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf=0D + INF FatPkg/EnhancedFatDxe/Fat.inf=0D +=0D + INF MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf=0D + INF MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf=0D +=0D + # ACPI=0D + INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf=0D + INF OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf=0D +=0D + # Buses=0D +=0D + INF MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf=0D + INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf=0D + INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf=0D + INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf=0D + INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf=0D +=0D + INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf=0D + INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf=0D +=0D + INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf=0D +=0D + INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf=0D + INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf=0D +=0D + INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf=0D +=0D + !if $(SMM_REQUIRED) =3D=3D TRUE=0D + INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf=0D + INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf=0D + INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf=0D + INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf=0D + INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf=0D + INF MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCo= deRouterSmm.inf=0D + INF MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSm= m.inf=0D + INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf=0D + INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf=0D + INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteS= mm.inf=0D + INF IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf= =0D + !endif=0D +=0D + INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf=0D + INF OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf=0D +=0D [FV.FvOsBoot]=0D !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf=0D FvNameGuid =3D AE8F0EA0-1614-422D-ABC1-C518596F1678=0D =0D + FILE FV_IMAGE =3D 4bb59c22-e1b8-414e-9de8-559db4054c4c {=0D + SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRE= D =3D TRUE {=0D + SECTION FV_IMAGE =3D FvOsBootUncompressed=0D + }=0D + }=0D +=0D ###########################=0D #=0D # Stage 5 Firmware Volumes=0D @@ -249,6 +308,8 @@ SET gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize = =3D 0x800000 [FV.FvSecurity]=0D !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf=0D FvNameGuid =3D 1AE6AB90-9431-425B-9A92-ED2708A4E982=0D + !include MinPlatformPkg/Include/Fdf/CoreSecurityLateInclude.fdf=0D + !include MinPlatformPkg/Include/Fdf/CoreSecurityPreMemoryInclude.fdf=0D =0D ###########################=0D #=0D --=20 2.37.0 (Apple Git-136)