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)
Sat, Mar 21, 8:17 AM
Unknown Object (File)
Thu, Mar 19, 2:00 PM
Unknown Object (File)
Thu, Mar 19, 7:22 AM
Unknown Object (File)
Thu, Mar 19, 1:54 AM
Unknown Object (File)
Mon, Mar 16, 9:07 PM
Unknown Object (File)
Sat, Mar 14, 8:54 AM
Unknown Object (File)
Fri, Mar 13, 10:34 PM
Unknown Object (File)
Sun, Mar 8, 8:24 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.