- User Since
- Aug 11 2014, 8:37 PM (485 w, 5 d)
Apr 14 2021
Mar 5 2021
Dec 8 2020
I've tested this latest iteration as well.
Oct 13 2020
Jun 23 2020
Jun 5 2019
Jun 3 2019
May 17 2019
May 16 2019
Swapped aarch64 for arm64 per emaste's suggestion and addressed rlibby's nits.
May 15 2019
May 13 2019
Add support for arm64 plus rework _bus_dmamap_pagesneeded to short-circuit if we don't need an exact count but just need to know if *any* are needed.
May 7 2019
May 6 2019
Joining a few threads on this back together, below is a fleshed out version (minus arm64) of what I am thinking. It removes some penalty (the additional LOOKUP) when dmar is enabled and significantly reduces overhead in the bounce-without-bounce case.
May 5 2019
Update to a diff with full context.
May 4 2019
May 3 2019
May 2 2019
Why do you suggest that length check is not needed ? Putting the discussion of a possible race aside, why the lengths of two loads must be the same ?
May 1 2019
Would it be prudent to decouple #2 and #3? The fix for #1 raises some interesting implementation questions and may ultimately be fixed better in the driver anyway.
Apr 30 2019
Ideally #2 and #3 would be discrete commits but I see the value in single place to point folks to.
Apr 29 2019
I really like what you did with the locking. Thanks for pitching in here!!
Apr 25 2019
Apr 24 2019
Apr 19 2019
Apr 18 2019
Apr 17 2019
Bump __FreeBSD_version and serialize required bus_dma(9) calls.
Apr 16 2019
Fix most trivial of trivial whitespace issues. I just want to avoid the tool chain complaining about any divergences so I'm updating the diff.
Apr 14 2019
Apr 12 2019
Incorporate a few more review comments: add missing BUS_DMA_NOWAIT flags to _bus_dmamap_load_phys() and optimize linux_dma_map_sg_attrs() to coalesce physically contiguous scatter list entries.
Might a well make this as good as can be. I combined the tests into one.
Apr 11 2019
Use markj@'s suggestion for a more overt/intuitive fix.
And just a heads-up these patches uncovered an issue with the cache-only zone destructor trying to destroy a non-existent keg. That's being worked in D19835.
Address further code review feedback: use non-sleepable allocs, fix weird formatting and add KASSERT(negs == 1).
Apr 10 2019
Addressed a few code review comments. There is a bit more work to do. Glancing at the feedback, I forgot 'assert that nseg == 1'. Plus I've got the optimization of gluing adjacent sg segments in the works too.
Get rid of PCI_DMA_BOUNDARY entirely.
Apr 9 2019
No locking is provided internally by the path-compressed radix trie implementation. It worked shockingly well without until it didn't. Adding locking to make the LinuxKPI DMA routines MT-Safe.
Apr 8 2019
While trying to explain the design I realized that the UMA "linux_dma objects" zone doesn't need to be per-device. I can make that global.
Apr 5 2019
Apr 2 2019
I fixed the issues in the previous version which I should have taken more time to review myself before posting :-(
I think I've addressed at least many an attempt to address all outstanding feedback now. The diff is updated.
Add || TEST_DMA_8K_PB to pre-condition verification.
This revision includes setups up the '48-bit' DMA address constraint for the 'data' tag and the '40-bit' DMA address constraint for the 'crc data' tag.