Thread (53 messages) 53 messages, 4 authors, 2018-01-12

Re: [PATCH 31/33] dma-direct: reject too small dma masks

From: Christoph Hellwig <hch@lst.de>
Date: 2018-01-10 15:32:34
Also in: linux-alpha, linux-arch, linux-arm-kernel, linux-iommu, linux-m68k, linux-mips, linux-s390, linux-sh, lkml, sparclinux

On Wed, Jan 10, 2018 at 11:49:34AM +0000, Robin Murphy wrote:
quoted
+#ifdef CONFIG_ZONE_DMA
+	if (mask < DMA_BIT_MASK(ARCH_ZONE_DMA_BITS))
+		return 0;
+#else
+	/*
+	 * Because 32-bit DMA masks are so common we expect every architecture
+	 * to be able to satisfy them - either by not supporting more physical
+	 * memory, or by providing a ZONE_DMA32.  If neither is the case, the
+	 * architecture needs to use an IOMMU instead of the direct mapping.
+	 */
+	if (mask < DMA_BIT_MASK(32))
+		return 0;
Do you think it's worth the effort to be a little more accommodating here? 
i.e.:

		return dma_max_pfn(dev) >= max_pfn;

We seem to have a fair few 28-31 bit masks for older hardware which 
probably associates with host systems packing equivalently small amounts of 
RAM.
And those devices don't have a ZONE_DMA?  I think we could do something
like that, but I'd rather have it as a separate commit with a good
explanation.  Maybe you can just send on on top of the series?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help