public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Andrew Fish <afish@apple.com>
To: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	ruiyu.ni@intel.com, feng.tian@intel.com, edk2-devel@lists.01.org,
	liming.gao@intel.com, jiewen.yao@intel.com,
	Mike Kinney <michael.d.kinney@intel.com>,
	lersek@redhat.com, star.zeng@intel.com
Subject: Re: [PATCH] MdeModulePkg/PciBusDxe: make OPROM BAR degradation X64 specific
Date: Thu, 15 Sep 2016 08:48:33 -0700	[thread overview]
Message-ID: <9892B892-284A-40F8-953C-C7830A0C7C55@apple.com> (raw)
In-Reply-To: <20160915152831.GH16080@bivouac.eciton.net>


> On Sep 15, 2016, at 8:28 AM, Leif Lindholm <leif.lindholm@linaro.org> wrote:
> 
> On Thu, Sep 15, 2016 at 03:54:56PM +0100, Ard Biesheuvel wrote:
>> The 'universal' PCI bus driver in MdeModulePkg contains a quirk to
>> degrade 64-bit PCI MMIO BARs to 32-bit in the presence of an option
>> ROM on the same PCI controller.
>> 
>> This quirk is highly specific to not just the X64 architecture in general,
>> but to the PC platform in particular, given that only X64 platforms that
>> require legacy PC BIOS compatibility require it. However, making the
>> quirk dependent on the presence of the legacy BIOS protocol met with
>> resistance, due to the fact that it introduces a dependency on the
>> IntelFrameworkModulePkg package.
>> 
>> So instead, make the quirk dependent on whether we are compiling for the
>> X64 architecture, by putting the #ifdef MDE_CPU_X64/#endif preprocessor
>> directives around it.
>> 
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> 
> I'm happy with the change, but it may be worth putting a comment in

Do we have to use an #ifdef? Seems like it should be a PCD. Is this for legacy BIOS Option ROM support, or for existing EFI ROMs?

Thanks,

Andrew Fish

> the code to the extent that:
> ---
> In order to reliably support legacy Option ROMs, which may not be
> 64-bit safe, X64 needs to ensure PCI MMIO BARs are forced down to use
> only the lower 32 bits.
> Other architectures, or indeed X64 without legacy option ROM support,
> can safely leave these in normal operation mode (and may require so in
> order to function).
> ---
> 
> For what it's worth:
> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> 
>> ---
>> 
>> Since nobody proposed any alternatives to the solution I proposed,
>> let's just make the quirk disappear on architectures that have no
>> use for it.
>> 
>> Note that forcing non-X64 architectures to install a driver that
>> produces the IncompatiblePciDevice protocol only to make the PCI
>> bus driver behave normally (and which, incidentally, can only be
>> produced once per platform, making it difficult to provide a default
>> implementation that can be widely reused) is not acceptable IMO.
>> 
>> If anything, this should require an IncompatiblePlatform protocol
>> that informs the PCI bus driver that a special quirk is required,
>> but I am aware that this is difficult to accomplish without breaking
>> backward compatibility. Hence this compromise.
>> 
>> MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c | 2 ++
>> 1 file changed, 2 insertions(+)
>> 
>> diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c
>> index b0632d53b82b..b4771a822d65 100644
>> --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c
>> +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c
>> @@ -1052,6 +1052,7 @@ DegradeResource (
>>   IN PCI_RESOURCE_NODE *PMem64Node
>>   )
>> {
>> +#ifdef MDE_CPU_X64
>>   PCI_IO_DEVICE        *PciIoDevice;
>>   LIST_ENTRY           *ChildDeviceLink;
>>   LIST_ENTRY           *ChildNodeLink;
>> @@ -1101,6 +1102,7 @@ DegradeResource (
>>     }
>>     ChildDeviceLink = ChildDeviceLink->ForwardLink;
>>   }
>> +#endif
>> 
>>   //
>>   // If firmware is in 32-bit mode,
>> -- 
>> 2.7.4
>> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel



  reply	other threads:[~2016-09-15 15:48 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-15 14:54 [PATCH] MdeModulePkg/PciBusDxe: make OPROM BAR degradation X64 specific Ard Biesheuvel
2016-09-15 15:28 ` Leif Lindholm
2016-09-15 15:48   ` Andrew Fish [this message]
2016-09-15 15:51     ` Brian J. Johnson
2016-09-15 15:53     ` 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=9892B892-284A-40F8-953C-C7830A0C7C55@apple.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