Bartosz,

Based on your findings, the AddrRangeMin has to be a device address☺

As far as I can remember, this history is:
In the very beginning, Spec owner assumes the device address equals to CPU 
address.
The implementation of GetBarAttributes() directly returns the address read from 
the BAR.
But later we found device address doesn’t equal to CPU address, especially in 
ARM platform.
So in order to expose the offset of the two addresses, the 
AddressTranslationOffset field was used.
To avoid breaking the existing consumers, GetBarAttributes() remains to return 
the BAR address.

Anyone please correct me if I am wrong.

Thanks,
Ray

From: Bartosz Szczepanek [mailto:[email protected]]
Sent: Monday, September 4, 2017 7:43 PM
To: [email protected]
Cc: Ni, Ruiyu <[email protected]>
Subject: [edk2] CPU/PCI addressing in PciIoGetAttributes

Hi guys,

I have some doubt about PciIoGetAttributes behaviour on aarch64 platform with 
non-uniform CPU:PCI address space mapping. I'll be grateful if you verify my 
understanding.

According to UEFI specification, AddrRangeMin in QWORD Address Space Descriptor 
returned by PciIoGetAttributes() should be a CPU address, at least that's what 
I conclude from:
> Address Translation Offset. Offset to apply to the Starting address of a
> BAR *to convert it to a PCI address*. This value is zero unless the
> HostAddress and DeviceAddress for the BAR are different.
This mentions "Starting address", which I suppose refers to AddrRangeMin. It 
needs to be converted to PCI address, so as-is it should be in CPU address 
space.

On the other hand, the AddrRangeMin is assigned BaseAddress value obtained 
directly from PciBar:
> Descriptor->AddrRangeMin = PciIoDevice->PciBar[BarIndex].BaseAddress;

PciBar is filled in PciParseBar() using original BAR content (thus BaseAddress 
is not translated, PCI address). This way value that refers to PCI space is 
returned from PciIoGetBarAttributes as CPU address.

Shouldn't there be translation of it somewhere on the way? Or is my 
understanding flawed? Either way, please let me know.

Best regards,
Bartosz
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to