Page MenuHomeFreeBSD

remove the 4GB boundary requirement on PCI DMA segments
ClosedPublic

Authored by tychon on Apr 9 2019, 7:03 PM.
Tags
None
Referenced Files
F81586240: D19867.id56379.diff
Thu, Apr 18, 1:10 PM
F81570596: D19867.id56046.diff
Thu, Apr 18, 6:34 AM
Unknown Object (File)
Thu, Apr 18, 2:30 AM
Unknown Object (File)
Thu, Apr 18, 1:42 AM
Unknown Object (File)
Feb 11 2024, 12:04 PM
Unknown Object (File)
Feb 4 2024, 5:05 PM
Unknown Object (File)
Jan 14 2024, 6:08 AM
Unknown Object (File)
Jan 6 2024, 7:22 PM
Subscribers

Details

Summary

At the PCI root device a 4GB boundary is currently enforced on DMA segments. A change introduced in r232403. This boundary doesn't arise from a specification requirement, rather to preempt any issues with devices which are not capable of encountering a 4GB boundary.

Unfortunately enforcing an artificial boundary is an imposition for another devices. For example the ioat(4) driver when it used in conjunction with ntb(4). Given the larger memory sizes available today it seems reasonable remove the general restriction and handle it on a case-by-case basis as needed.

For the few devices with known 4GB DMA boundary requirements, which were removed after r232403, go ahead and restore them. As suggested by jhb@ these include r232669 for twa(4) and r232766 for bge(4).

Diff Detail

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

Event Timeline

sys/dev/pci/pcivar.h
696 ↗(On Diff #56022)

Why not remove this symbol ? It is used in modest number of places, and makes no sense after your change.

Get rid of PCI_DMA_BOUNDARY entirely.

This revision is now accepted and ready to land.Apr 10 2019, 1:47 PM
This revision was automatically updated to reflect the committed changes.