On 6/11/20 4:07 PM, greg@unrelenting.technology wrote:
June 11, 2020 4:19 PM, "Ard Biesheuvel" <ard.biesheu...@arm.com> wrote:
On 6/5/20 5:19 PM, Marcin Wojtas via groups.io wrote:
Hi,
I'd like to ask for comments before I develop the actual code - > currently we
have 2 workarounds
done specifically for Linux:
a. ECAM shift in PCIE
b. SPCR address space definition
What does this mean?
The SPCR in upstream edk2 is set up to work around some Linux weirdness (?) and
I have to do this:
https://github.com/myfreeweb/edk2-platforms/commit/74ec98a6498e78d2ae6c861db88487bf75f2e1a1
to make it work on FreeBSD.
Surely, they can't both be correct. Marcin?
Both above are not needed e.g. in FreeBSD and I was requested to add > their
optional disabling.
Disabling ECAM shift is just a matter of exposing the iATU controls to the OS,
right? Why do you
need to disable it?
I'm not sure what iATU controls are (and we don't want to do anything in the
OS),
but basically the current address is shifted by 0x8000 to only expose the last
device to the OS,
to work around the silicon bug (lack of some filtering thing) that causes
devices to appear many many times.
But actually most modern devices (e.g. AMD RX 480, Mellanox CX2) *do not* get
duplicated at all, they show up
in the first position, and this shift moves the memory way past that position
and the OS sees
no PCIe devices at all. The only device that was duplicated into all slots for
me was a cheap SATA card.
In my experience whether the device is duplicated seems to correlate with the
"Legacy" field
in the UEFI Shell's pci command. IIRC Marcin has explained the actual technical
characteristic
of these devices in some mail before. So it might actually be possible to
decide whether to do the shift
automatically at runtime depending on the inserted device (?)
But a setting in the setup menu is easier to do and less magical.
I've just been running with the shift reverted:
https://github.com/myfreeweb/edk2-platforms/commit/36395be2a8707f6d396e07405eb9fe47b64cf964
to make my Radeon GPU work.
OK, the shift is definitely a hack, and your assertion that 'most modern
devices do not get duplicated at all' does not match my experience, tbh.
Are these all devices that support ARI by any chance?
The problem is that the PCIe IP is truly broken, and the lack of a root
port means that TLPs get emitted that should never reach the device in
the first place, and it is not the job of the device to filter these
TLPs, or reason about their own device # in the first place.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#61150): https://edk2.groups.io/g/devel/message/61150
Mute This Topic: https://groups.io/mt/74694919/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-