diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2024-08-11 10:09:35 +0300 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2024-08-22 06:18:00 +0200 |
commit | ba0fb44aed47693cc2482427f63ba6cd19051327 (patch) | |
tree | 621c630705defd780fbeac9b9b103f3c80264c23 /include/linux/dma-direct.h | |
parent | fa3c109a6d302b56437a6412c5f3044c3e12de03 (diff) | |
download | linux-stable-ba0fb44aed47693cc2482427f63ba6cd19051327.tar.gz linux-stable-ba0fb44aed47693cc2482427f63ba6cd19051327.tar.bz2 linux-stable-ba0fb44aed47693cc2482427f63ba6cd19051327.zip |
dma-mapping: replace zone_dma_bits by zone_dma_limit
The hardware DMA limit might not be power of 2. When RAM range starts
above 0, say 4GB, DMA limit of 30 bits should end at 5GB. A single high
bit can not encode this limit.
Use a plain address for the DMA zone limit instead.
Since the DMA zone can now potentially span beyond 4GB physical limit of
DMA32, make sure to use DMA zone for GFP_DMA32 allocations in that case.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Co-developed-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Petr Tesarik <ptesarik@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'include/linux/dma-direct.h')
-rw-r--r-- | include/linux/dma-direct.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h index edbe13d00776..d7e30d4f7503 100644 --- a/include/linux/dma-direct.h +++ b/include/linux/dma-direct.h @@ -12,7 +12,7 @@ #include <linux/mem_encrypt.h> #include <linux/swiotlb.h> -extern unsigned int zone_dma_bits; +extern u64 zone_dma_limit; /* * Record the mapping of CPU physical to DMA addresses for a given region. |