Page MenuHomeFreeBSD

pci_host_generic: allocate PCI, not CPU addresses.
AbandonedPublic

Authored by crowston_protonmail.com on Jun 22 2020, 12:05 AM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Aug 12, 11:44 PM
Unknown Object (File)
Tue, Aug 11, 9:26 PM
Unknown Object (File)
Mon, Aug 10, 3:36 AM
Unknown Object (File)
Sat, Aug 8, 5:15 PM
Unknown Object (File)
Sat, Aug 8, 12:31 AM
Unknown Object (File)
Fri, Aug 7, 11:34 AM
Unknown Object (File)
Fri, Aug 7, 8:06 AM
Unknown Object (File)
Wed, Aug 5, 10:13 PM
Subscribers
None

Details

Reviewers
andrew
Summary

Resolve a bug on systems where the PCI controller's view of the address space of the system memory is not consistent with the CPU's. We now assume all addresses passed to pci_host_generic_core_alloc_resource() are PCI addresses, and
store them as such. Only in generic_pcie_activate_resource() is the PCI address is translated to a CPU address.

Test Plan

Tested on my Rpi4 with PCI-E controller driver.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 31865
Build 29424: arc lint + arc unit

Event Timeline

Sorry, I missed this. I fixed it in a different way in rS362493 by extracting the translation code into a new function.

I've tested it on qemu-system-arm -machine virt as this also has PCI address != phys address.