My question is just for curiosity, I'm not a developer of MacOS Thunderbolt drivers so I have no experience with that.
I've come across this page about thunderbolt drivers and IOMMU on MacOS. From what I've understood, when the driver asks for a memory address, the address obtained is not physical but it is a virtual address mapped by the IOMMU. I think this is due to the security risks of using DMA without a IOMMU. However there are some option for a driver to bypass remapping, for example calling an IODMACommand object’s initWithSpecification method with mappingOptions set to kBypassed. However in the page it is said that calling a method like that to obtain an unmapped physical address and use that for DMA will break the driver.
So my question is: in a thunderbolt driver, what's the purpose of asking for unmapped physical address if that address cannot be used for DMA?
Sorry if this question may seem dumb, but like I said I've no experience with this kind of stuffs, I'm just very curious.