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)
Sun, Apr 19, 1:00 PM
Unknown Object (File)
Thu, Apr 16, 7:08 AM
Unknown Object (File)
Tue, Apr 14, 1:59 PM
Unknown Object (File)
Tue, Apr 14, 3:37 AM
Unknown Object (File)
Mar 21 2026, 8:17 AM
Unknown Object (File)
Mar 19 2026, 2:00 PM
Unknown Object (File)
Mar 19 2026, 7:22 AM
Unknown Object (File)
Mar 19 2026, 1:54 AM
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.