• Thierry Reding's avatar
    gpu: host1x: Set DMA mask based on IOMMU setup · 06867a36
    Thierry Reding authored
    If the Tegra DRM clients are backed by an IOMMU, push buffers are likely
    to be allocated beyond the 32-bit boundary if sufficient system memory
    is available. This is problematic on earlier generations of Tegra where
    host1x supports a maximum of 32 address bits for the GATHER opcode. More
    recent versions of Tegra (Tegra186 and later) have a wide variant of the
    GATHER opcode, which allows addressing up to 64 bits of memory.
    
    If host1x itself is behind an IOMMU as well this doesn't matter because
    the IOMMU's input address space is restricted to 32 bits on generations
    without support for wide GATHER opcodes.
    
    However, if host1x is not behind an IOMMU, it won't be able to process
    push buffers beyond the 32-bit boundary on Tegra generations that don't
    support wide GATHER opcodes. Restrict the DMA mask to 32 bits on these
    generations prevents buffers from being allocated from beyond the 32-bit
    boundary.
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    06867a36
dev.c 11.4 KB