public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ard Biesheuvel" <ardb@kernel.org>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: "Leif Lindholm" <leif@nuviainc.com>,
	edk2-devel-groups-io <devel@edk2.groups.io>,
	"Jiewen Yao" <jiewen.yao@intel.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Michael D Kinney" <michael.d.kinney@intel.com>,
	"Andrew Fish" <afish@apple.com>,
	"Jordan Justen" <jordan.l.justen@intel.com>,
	"Julien Grall" <julien@xen.org>,
	"Anthony Perard" <anthony.perard@citrix.com>,
	"Ard Biesheuvel" <ardb+tianocore@kernel.org>,
	"Stefan Berger" <stefanb@linux.ibm.com>
Subject: Re: [PATCH v3 11/19] OvmfPkg/Microvm: PlatformPei/MemDetect tweaks
Date: Tue, 5 Oct 2021 12:27:57 +0200	[thread overview]
Message-ID: <CAMj1kXF++L2mDGtZwTFDruV07aTVgnnUrBwQ7PAzohLYeeMqaQ@mail.gmail.com> (raw)
In-Reply-To: <20210909105823.d4e5yafgpzc6atm6@sirius.home.kraxel.org>

On Thu, 9 Sept 2021 at 12:58, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> > > Sure.  Suggestions?  Add a Pcd and set it in Microvm.dsc?
> > > Or is there some better way?
> >
> > It's all a question of how much we want to overengineer things :)
> >
> > I'm tempted to suggest a balanced version would be adding
> >   GCC: *_*_*_CC_FLAGS = -D PLATFORM_IS_MICROVM
> > to [BuildOptions] in the .dsc, and test for that.
>
> How about the approach below?
>

I am going to go with the original patch. All the workarounds seem
rather intrusive, and there is nothing wrong with probing the config
space and concluding that nothing is there if the response has all
bits set to 1. And to be pedantic, the reason 0xffff is an invalid
device ID is because it cannot be distinguished from a failed read. So
we are not checking whether the device exists and has an invalid
device ID, we are checking whether there's anything there to begin
with.


> take care,
>   Gerd
>
> commit 2d48e3eba022ba92eadcbad2c55e10ed281631c2
> Author: Gerd Hoffmann <kraxel@redhat.com>
> Date:   Tue Jun 1 12:38:38 2021 +0200
>
>     OvmfPkg/Microvm: PlatformPei/MemDetect tweaks
>
>     Set mHostBridgeDevId to MICROVM_PSEUDO_DEVICE_ID using a
>     compile time switch.
>
>     Skip host bridge setup on microvm.
>
>     Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3599
>     Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
>     Acked-by: Jiewen Yao <Jiewen.yao@intel.com>
>
> diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc
> index 019b50de7d8f..a000c195d866 100644
> --- a/OvmfPkg/Microvm/MicrovmX64.dsc
> +++ b/OvmfPkg/Microvm/MicrovmX64.dsc
> @@ -73,6 +73,9 @@ [Defines]
>  !endif
>
>  [BuildOptions]
> +  GCC:*_*_*_CC_FLAGS                   = -DPLATFORM_IS_MICROVM
> +  INTEL:*_*_*_CC_FLAGS                 = /D PLATFORM_IS_MICROVM
> +  MSFT:*_*_*_CC_FLAGS                  = /D PLATFORM_IS_MICROVM
>    GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG
>    INTEL:RELEASE_*_*_CC_FLAGS           = /D MDEPKG_NDEBUG
>    MSFT:RELEASE_*_*_CC_FLAGS            = /D MDEPKG_NDEBUG
> diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c
> index 2c2c4641ec8a..8125644bc91a 100644
> --- a/OvmfPkg/PlatformPei/MemDetect.c
> +++ b/OvmfPkg/PlatformPei/MemDetect.c
> @@ -15,6 +15,7 @@ Module Name:
>  //
>  #include <IndustryStandard/E820.h>
>  #include <IndustryStandard/I440FxPiix4.h>
> +#include <IndustryStandard/Microvm.h>
>  #include <IndustryStandard/Q35MchIch9.h>
>  #include <PiPei.h>
>  #include <Register/Intel/SmramSaveStateMap.h>
> @@ -135,6 +136,10 @@ QemuUc32BaseInitialization (
>    UINT32 LowerMemorySize;
>    UINT32 Uc32Size;
>
> +  if (mHostBridgeDevId == MICROVM_PSEUDO_DEVICE_ID) {
> +    return;
> +  }
> +
>    if (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID) {
>      //
>      // On q35, the 32-bit area that we'll mark as UC, through variable MTRRs,
> diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c
> index d3a20122a2ea..ed93d11c8ac6 100644
> --- a/OvmfPkg/PlatformPei/Platform.c
> +++ b/OvmfPkg/PlatformPei/Platform.c
> @@ -31,6 +31,7 @@
>  #include <Library/ResourcePublicationLib.h>
>  #include <Ppi/MasterBootMode.h>
>  #include <IndustryStandard/I440FxPiix4.h>
> +#include <IndustryStandard/Microvm.h>
>  #include <IndustryStandard/Pci22.h>
>  #include <IndustryStandard/Q35MchIch9.h>
>  #include <IndustryStandard/QemuCpuHotplug.h>
> @@ -714,7 +715,11 @@ InitializePlatform (
>    //
>    // Query Host Bridge DID
>    //
> +#ifdef PLATFORM_IS_MICROVM
> +  mHostBridgeDevId = MICROVM_PSEUDO_DEVICE_ID;
> +#else
>    mHostBridgeDevId = PciRead16 (OVMF_HOSTBRIDGE_DID);
> +#endif
>
>    MaxCpuCountInitialization ();
>
>

  reply	other threads:[~2021-10-05 10:28 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-08  9:01 [PATCH v3 00/19] OvmfPkg: Add support for microvm machine type Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 01/19] OvmfPkg/Microvm: copy OvmfPkgX64 files as-is Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 02/19] OvmfPkg/Microvm: rename output files, fix includes Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 03/19] OvmfPkg/Microvm: no smm Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 04/19] OvmfPkg/Microvm: no secure boot Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 05/19] OvmfPkg/Microvm: no tpm Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 06/19] OvmfPkg/Microvm: no sev Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 07/19] OvmfPkg/Microvm: no csm Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 08/19] OvmfPkg/Microvm: no emulated scsi Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 09/19] OvmfPkg/Microvm: use MdePkg/Library/SecPeiDxeTimerLibCpu Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 10/19] OvmfPkg/Microvm: use XenTimerDxe (lapic timer) Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 11/19] OvmfPkg/Microvm: PlatformPei/MemDetect tweaks Gerd Hoffmann
2021-09-08 11:06   ` Leif Lindholm
2021-09-08 11:33     ` Gerd Hoffmann
2021-09-08 11:54       ` Leif Lindholm
2021-09-09 10:58         ` Gerd Hoffmann
2021-10-05 10:27           ` Ard Biesheuvel [this message]
2021-09-08  9:01 ` [PATCH v3 12/19] OvmfPkg/Microvm: PlatformPei/Platform memory map tweaks Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 13/19] OvmfPkg/Microvm: PlatformPei/Platform: add id Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 14/19] OvmfPkg/ResetSystemLib: add driver for microvm Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 15/19] OvmfPkg/Microvm: BdsPlatform: PciAcpiInitialization tweak Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 16/19] OvmfPkg/Microvm: use PciHostBridgeLibNull Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 17/19] OvmfPkg/Microvm: wire up serial console, drop super-io Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 18/19] OvmfPkg/Microvm: add README Gerd Hoffmann
2021-09-08  9:01 ` [PATCH v3 19/19] OvmfPkg/Microvm: add Maintainers.txt entry Gerd Hoffmann
2021-09-08 11:08   ` [edk2-devel] " Leif Lindholm
2021-10-05 10:57 ` [PATCH v3 00/19] OvmfPkg: Add support for microvm machine type Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAMj1kXF++L2mDGtZwTFDruV07aTVgnnUrBwQ7PAzohLYeeMqaQ@mail.gmail.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox