On Wed, Jan 25, 2017 at 1:37 PM, Michael Zoran <mzoran@xxxxxxxxxxxx> wrote: > On Wed, 2017-01-25 at 12:03 +0000, Robin Murphy wrote: >> hen bypassing SWIOTLB on small-memory systems, we need to avoid >> calling >> into swiotlb_dma_mapping_error() in exactly the same way as we avoid >> swiotlb_dma_supported(), because the former also relies on SWIOTLB >> state >> being initialised. > > I didn't submit the initial ARM64 port of the RPI 3, so I don't know > much about this. But from a third personal point of view, this seems > to side step the main issue here. I think Robin's approach is fixing exactly the right part of the code. > From an ARM64 subsystem point of view, what exactly is the > correct/recommended method for ensuring the mm subsystem is initialized > correctly? It is initialized correctly, the bug was calling the wrong helper when swiotlb is not used because we determined that we don't need it. One concern from inspection: > +static int __swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t addr) > +{ > + if (swiotlb) > + return swiotlb_dma_mapping_error(hwdev, addr); > + return 1; > +} Shouldn't that be return addr == DMA_ERROR_CODE; in the last line? Otherwise any addr is interpreted as an error, which seems wrong. Maybe I'm missing something obvious here. Arnd -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html