public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Ruiyu Ni <ruiyu.ni@intel.com>, edk2-devel@ml01.01.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH] MdeModulePkg/MdeModulePkg.dec: Fix EBC build failure of PciBus driver
Date: Tue, 11 Oct 2016 12:52:29 +0200	[thread overview]
Message-ID: <f5a838d9-dec4-3709-013a-c5bf970b5601@redhat.com> (raw)
In-Reply-To: <20161011050113.197540-1-ruiyu.ni@intel.com>

On 10/11/16 07:01, Ruiyu Ni wrote:
> When PciBus is built as EBC, PcdPciDegradeResourceForOptionRom does
> not have associated value resulting build failure.
> The patch sets the default value to TRUE, covering the EBC ARCH.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
>  MdeModulePkg/MdeModulePkg.dec | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
> index f870b83..42fef75 100644
> --- a/MdeModulePkg/MdeModulePkg.dec
> +++ b/MdeModulePkg/MdeModulePkg.dec
> @@ -746,7 +746,6 @@ [PcdsFeatureFlag]
>    # @Prompt Turn on PS2 Mouse Extended Verification
>    gEfiMdeModulePkgTokenSpaceGuid.PcdPs2MouseExtendedVerification|TRUE|BOOLEAN|0x00010075
>  
> -[PcdsFeatureFlag.X64]
>    ## Indicates whether 64-bit PCI MMIO BARs should degrade to 32-bit in the presence of an option ROM
>    #  On X64 platforms, Option ROMs may contain code that executes in the context of a legacy BIOS (CSM),
>    #  which requires that all PCI MMIO BARs are located below 4 GB
> 

Hmmmm, I wonder if this is the right thing to do. As far as I understand
the original patch (commit 065ae7d717f9e), it added
PcdPciDegradeResourceForOptionRom twice to the DEC file expressly for
the purpose of providing different defaults (per arch), without having
to update the DSC files of existing platforms.

The original patch didn't name EBC in either of the sections -- which is
why the EBC compilation would fail --, but I don't think that including
EBC in either section (manually or implicitly, as illustrated by the
patch) would be correct.

Namely, EBC is an instruction set that is independent of the platform
that executes it. The suggested patch is correct if the EBC build of
PciBusDxe is expected to run on x64 platforms, but it is incorrect if
the exact same binary is expected to run on aarch64 platforms.

Meaning that for EBC, *both* default values (TRUE and FALSE) are
incorrect on some platforms.

With that in mind, I propose that we declare
PcdPciDegradeResourceForOptionRom only once in MdeModulePkg.dec,
regardless of architecture -- that is, in the plain [PcdsFeatureFlag]
section --, and require all platforms that include PciBusDxe to set the
feature flag in their DSCs if they disagree with the (now centralized)
default.

In practical terms, this would turn this patch into a series of patches,
first adding the DSC changes -- for platforms that are in-tree --, and
then unifying the declaration.

I expect this will create some churn for out-of-tree modules, but that
seems justified -- considering EBC, the PCD would have to be customized
in some platform DSCs *anyway*, regardless of what default we picked for
EBC.

The following DSC files include PciBusDxe.inf:

ArmVirtPkg/ArmVirtQemu.dsc
ArmVirtPkg/ArmVirtQemuKernel.dsc
CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc
CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc
EmulatorPkg/EmulatorPkg.dsc
MdeModulePkg/MdeModulePkg.dsc
Nt32Pkg/Nt32Pkg.dsc
OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgX64.dsc
QuarkPlatformPkg/Quark.dsc
QuarkPlatformPkg/QuarkMin.dsc
Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
Vlv2TbltDevicePkg/PlatformPkgX64.dsc

Just my two cents.

Thanks
Laszlo


  reply	other threads:[~2016-10-11 10:52 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-11  5:01 [PATCH] MdeModulePkg/MdeModulePkg.dec: Fix EBC build failure of PciBus driver Ruiyu Ni
2016-10-11 10:52 ` Laszlo Ersek [this message]
2016-10-11 17:03   ` Ard Biesheuvel
2016-10-12  2:36     ` Ni, Ruiyu
2016-10-12  7:08       ` Laszlo Ersek
2016-10-12  8:36         ` Ard Biesheuvel
2016-10-12  8:51           ` Tian, Feng

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=f5a838d9-dec4-3709-013a-c5bf970b5601@redhat.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