Messages in this thread | | | Date | Tue, 16 Sep 2008 15:43:35 +0200 | From | Andi Kleen <> | Subject | Re: [PATCH 0/3] fix GART to respect device's dma_mask about virtual mappings |
| |
> What the need_iommu() does is seeing if GART needs to do virtual > mappings or not. > > (After need_iommu() checking) What this patchset does is to guarantee > that GART provides a virtual address that a device can access to.
Ah you care about masks < 32bit?
Those always are handled elsewhere in the block layer (using the bounce_pfn mechanism) or in various other ways in other subsystems. e.g. on networking the rule is that you just don't announce direct SG when you have less than 32bit mask. And the others like sound generally don't use map_sg()/map_single(), but instead pre allocate something with dma_alloc_coherent() or similar.
Also what would you do if it this check fails? There is no suitable fallback path.
Can you describe a concrete use case your patch fixes?
Anyways I'm aware the semantics are a little non untuitive (I didn't invent them, but inherited them from other 64bit IOMMU implementations), but fully general handling of < 32bit masks would be extremly complicated because you would always need to have a full arbitary fallback swiotlb implemention that is able to allocate arbitary low memory.
-Andi
| |