From: Igor Druzhinin <igor.druzhinin@citrix.com>
To: "Roger Pau Monné" <roger.pau@citrix.com>,
"Laszlo Ersek" <lersek@redhat.com>
Cc: <edk2-devel@lists.01.org>, <ard.biesheuvel@linaro.org>,
<jordan.l.justen@intel.com>, <julien.grall@arm.com>,
<anthony.perard@citrix.com>, <xen-devel@lists.xenproject.org>,
Ray Ni <ray.ni@intel.com>
Subject: Re: [Xen-devel] [PATCH RESEND 1/3] OvmfPkg/XenSupport: remove usage of prefetchable PCI host bridge aperture
Date: Mon, 25 Mar 2019 14:32:40 +0000 [thread overview]
Message-ID: <27273980-eab8-e1a3-b03a-8a6c75f3e05c@citrix.com> (raw)
In-Reply-To: <20190324035053.xs3yccnpmn5dy6cl@MacBook-Air-de-Roger.local>
On 24/03/2019 03:50, Roger Pau Monné wrote:
> On Fri, Mar 22, 2019 at 10:06:45AM +0100, Laszlo Ersek wrote:
>> The core PciBusDxe driver that is built into OVMF certainly does the
>> resource allocation/placement, but when OVMF is executed on Xen, this
>> functionality of PciBusDxe is dynamically disabled by setting
>> PcdPciDisableBusEnumeration to TRUE. (I'm not saying this is right vs.
>> wrong, just that it happens.)
>>
>> Note that OVMF itself checks PcdPciDisableBusEnumeration for many things
>> (just grep OvmfPkg to see), so if we were to flip the PCD while running
>> on Xen, it would change the behavior of OVMF on Xen in a number of
>> areas. Can't offer a deeper treatise for now; all the related source
>> code locations would have to be audited (likely with "git blame" too).
>>
>> Now, if PciBusDxe *is* allowed/requested to lay out the BARs, through
>> the PCD, then it (indirectly) depends on platform code to provide the
>> resource apertures -- of the root bridges -- out of which it can
>> allocate the BARs. My understanding is that XenSupport.c tries to detect
>> these apertures "retroactively", from the pre-existing BAR placements.
>> This was contributed by Ray in commit 49effaf26ec9
>> ("OvmfPkg/PciHostBridgeLib: Scan for root bridges when running over
>> Xen", 2016-05-11), so I'll have to defer to him on the code.
>>
>> I believe that, if we flipped the PCD to FALSE on Xen, and hvmloader
>> would stop pre-configuring the BARs (or OVMF would simply ignore that
>> pre-config), then this code (XenSupport.c) should be possible to
>> eliminate -- *however*, in that case, some other Xen-specific code would
>> become necessary, to expose the root bridge resource apertures (out of
>> which BARs should be allocated by PciBusDxe, see above).
>>
>> In QEMU's case: all root bridges share the same apertures between each
>> other (given any specific resource type). They are communicated via
>> dynamic PCDs. The 32-bit MMIO aperture PCDs are set in PlatformPei
>> somewhat simply (based on QEMU machine type, IIRC). The 64-bit MMIO
>> aperture PCDs are also calculated in PlatformPei, but that calculation
>> is a *lot* more complex.
>>
>> All in all, the "root" information is the set of apertures, i.e. what
>> parts of the GPA space can be used for what resource allocation.
>
> Thanks for the detailed explanation. IMO it would be better to let
> OVMF do the BAR placement instead of having to do it in hvmloader,
> this just causes code duplication between projects and there's nothing
> Xen-specific about the PCI resource allocation.
>
> I will try to find some time to look into this, albeit I'm not going
> to be able to work in this immediately. I'm more than happy if someone
> else has spare time and wants to pick this up.
I was thinking about that as well since most of the issues I found stem
from the fact hvmloader does its own things behind OVMF's back. But
decided that for now it'd be better to have a quick relief than try to
change the approach drastically as Laszlo pointed out there are many
implications of that change.
So for this patch I prefer to stick to removing only prefetchable
aperture all together (as dead code) and marking the host bridge as not
supporting it (as Laszlo suggested) since it reflects the reality and
done similarly for QEMU-KVM. More code removals and changes could be
done later.
Igor
next prev parent reply other threads:[~2019-03-25 14:32 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-06 12:40 [PATCH RESEND 0/3] Xen PCI passthrough fixes Igor Druzhinin
2019-03-06 12:40 ` [PATCH RESEND 1/3] OvmfPkg/XenSupport: remove usage of prefetchable PCI host bridge aperture Igor Druzhinin
2019-03-14 17:41 ` Anthony PERARD
2019-03-14 19:45 ` Igor Druzhinin
2019-03-19 14:03 ` Anthony PERARD
2019-03-20 11:15 ` Laszlo Ersek
[not found] ` <20190322082650.tk65vju74g4gt7vj@MacBook-Air-de-Roger.local>
2019-03-22 9:06 ` [Xen-devel] " Laszlo Ersek
[not found] ` <20190324035053.xs3yccnpmn5dy6cl@MacBook-Air-de-Roger.local>
2019-03-25 14:32 ` Igor Druzhinin [this message]
2019-03-06 12:40 ` [PATCH RESEND 2/3] OvmfPkg/XenSupport: use a correct PCI host bridge aperture for BAR64 Igor Druzhinin
2019-03-14 17:44 ` Anthony PERARD
2019-03-06 12:40 ` [PATCH RESEND 3/3] OvmfPkg/XenSupport: turn off address decoding before BAR sizing Igor Druzhinin
2019-03-06 13:22 ` Laszlo Ersek
2019-03-06 14:26 ` Igor Druzhinin
2019-03-06 17:39 ` Laszlo Ersek
2019-03-14 17:55 ` Anthony PERARD
2019-03-14 20:09 ` Igor Druzhinin
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=27273980-eab8-e1a3-b03a-8a6c75f3e05c@citrix.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