Page MenuHomeFreeBSD

Clean up the pci host generic driver
ClosedPublic

Authored by andrew on Jun 3 2020, 4:39 PM.
Tags
None
Referenced Files
F142180080: D25121.diff
Fri, Jan 16, 9:36 PM
Unknown Object (File)
Tue, Jan 13, 2:28 PM
Unknown Object (File)
Sun, Jan 11, 12:54 AM
Unknown Object (File)
Thu, Dec 18, 8:30 PM
Unknown Object (File)
Dec 14 2025, 4:24 PM
Unknown Object (File)
Dec 12 2025, 4:50 AM
Unknown Object (File)
Dec 9 2025, 6:08 PM
Unknown Object (File)
Dec 8 2025, 7:45 PM

Details

Summary
  • Support Prefetchable Memory
  • Use the correct rman when allocating memory and ioports
  • Translate PCI addresses in bus_alloc_resource to allow physical addresses that are different than pci addresses.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

andrew requested review of this revision.Jun 3 2020, 4:39 PM
andrew created this revision.

I am not an expert by any means but these changes look good to me.

This revision is now accepted and ready to land.Jun 13 2020, 12:33 AM
sys/dev/pci/pci_host_generic.c
364 ↗(On Diff #72622)

Actually, another niggle I find while trying to adopt this patch today.

In pci_pci.c, when allocating the bridge window, we try to allocate start=0x0, end=0xfffff.

That's always going to fail if the pci memory range is [0xf8000000,0xfbffffff] (as in the case of the rpi controller). Somehow we need to adjust that bridge window region into a pci address range.

Also, it seems that we don't actually check if sc->ranges[i] is large enough to hold the requested [start, end] resource.

sys/dev/pci/pci_host_generic.c
364 ↗(On Diff #72622)

Can you get the raw values of the PCIR_MEMBASE_1 and PCIR_MEMLIMIT_1 registers.

This revision was automatically updated to reflect the committed changes.