Yuck.. All the IOMMU DMA mapping code checks against the device DMA
mask, so it looks like if we get to the point of doing the DMA mapping
on >4GB addresses in libata we're screwed with this approach.
The key problem is that both ata_ports share the same struct device with
one DMA mask which really doesn't match what this controller wants. I
wonder if we could do a different struct device for each port?
Other than that, I guess the solutions would be to just set a 32-bit
mask on the device if either port has an ATAPI device connected (which
is fairly ugly, considering that you could do things like hotplug an
ATAPI device when the other port was in use, for example), or do
something to prevent requests from reaching this point with >4GB
addresses in the first place..
Well, dumping the ATA command surely isn't helpful, as I'm sure it will
be PACKET. I guess we'd have to dump out the actual CDB..
--