Hi Robin, On Thu, Jan 26, 2017 at 12:23 PM, Robin Murphy <robin.murphy@xxxxxxx> wrote: > On 26/01/17 09:53, Geert Uytterhoeven wrote: >> Currently, the IPMMU/VMSA driver supports 32-bit I/O Virtual Addresses >> only, and thus sets io_pgtable_cfg.ias = 32. However, it doesn't force >> a 32-bit IOVA space through the IOMMU Domain Geometry. >> >> Hence if a device (e.g. SYS-DMAC) rightfully configures a 40-bit DMA >> mask, it will still be handed out a 40-bit IOVA, outside the 32-bit IOVA >> space, leading to out-of-bounds accesses of the PGD when mapping the >> IOVA. >> >> Force a 32-bit IOMMU Domain Geometry to fix this. > > Reviewed-by: Robin Murphy <robin.murphy@xxxxxxx> Thanks! >> Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> >> --- >> Should the generic code restrict the geometry based on IAS instead? > > Which generic code? IAS is specific to the io-pgtable library (well, > really it's an ARM-SMMU-ism, but "input address size" is a fairly > portable concept), but io-pgtable is just factored-out driver helper > code and doesn't know anything about iommu_domains and the IOMMU API. > Conversely, the IOMMU API core and kernel code beyond also know nothing > about io-pgtable internals - in fact the domain geometry *is* how the > IOMMU driver communicates its configured address space size to the > outside world. OK, so the IPMMU/VMSA does have to take care of it itself. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds