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
Unknown Object (File)
Wed, May 1, 11:57 AM
Unknown Object (File)
Wed, May 1, 11:57 AM
Unknown Object (File)
Wed, May 1, 11:57 AM
Unknown Object (File)
Wed, May 1, 11:56 AM
Unknown Object (File)
Wed, May 1, 3:41 AM
Unknown Object (File)
Tue, Apr 30, 12:57 AM
Unknown Object (File)
Thu, Apr 18, 1:10 PM
Unknown Object (File)
Thu, Apr 18, 6:34 AM
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

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

sys/dev/pci/pcivar.h
695–696

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.