diff options
author | 2019-08-05 17:51:53 +0200 | |
---|---|---|
committer | 2019-08-10 19:52:45 +0200 | |
commit | d8ad55538abe443919e20e0bb996561bca9cad84 (patch) | |
tree | a61652692adef23d8d1e8c6dafb83cc238039fde /kernel/dma | |
parent | dma-direct: fix DMA_ATTR_NO_KERNEL_MAPPING (diff) | |
download | linux-d8ad55538abe443919e20e0bb996561bca9cad84.tar.gz linux-d8ad55538abe443919e20e0bb996561bca9cad84.tar.bz2 linux-d8ad55538abe443919e20e0bb996561bca9cad84.zip |
dma-direct: don't truncate dma_required_mask to bus addressing capabilities
The dma required_mask needs to reflect the actual addressing capabilities
needed to handle the whole system RAM. When truncated down to the bus
addressing capabilities dma_addressing_limited() will incorrectly signal
no limitations for devices which are restricted by the bus_dma_mask.
Fixes: b4ebe6063204 (dma-direct: implement complete bus_dma_mask handling)
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Tested-by: Atish Patra <atish.patra@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'kernel/dma')
-rw-r--r-- | kernel/dma/direct.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index 974e96a1de44..795c9b095d75 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -47,9 +47,6 @@ u64 dma_direct_get_required_mask(struct device *dev) { u64 max_dma = phys_to_dma_direct(dev, (max_pfn - 1) << PAGE_SHIFT); - if (dev->bus_dma_mask && dev->bus_dma_mask < max_dma) - max_dma = dev->bus_dma_mask; - return (1ULL << (fls64(max_dma) - 1)) * 2 - 1; } |