Re: [PATCH] intel-iommu: Fix alloc_coherent for pass-throughdevices

From: David Woodhouse
Date: Thu Oct 22 2009 - 10:47:57 EST


On Thu, 2009-10-22 at 06:24 -0600, Alex Williamson wrote:
> The coherent_dma_mask is independent of the dma_mask and can be set
> separately by the device. The default for any device that doesn't
> specify one is 32bits. iommu_should_identity_map() only checks the
> dma_mask, not the coherent_dma_mask.

Are you telling me that this particular device supports only a 32-bit
coherent DMA mask, but that it _does_ support a 64-bit DMA mask for
non-coherent DMA? On x86?

> BTW, we skip RMRR setup when doing hardware pass-through, but I can't
> find where they get reloaded if we then end up removing the device
> from the si_domain. Is this another issue?

Maybe, theoretically. In practice, the whole RMRR thing is just broken
by design anyway. We have to quiesce the offending devices before we
turn on the IOMMU, because BIOSes tend to leave things out of the RMRR
table... and then crash in SMM mode when their DMA goes AWOL.

--
dwmw2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/