mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
85 lines
2.9 KiB
Diff
85 lines
2.9 KiB
Diff
|
From 1c108eaeae73a504ac1b2d882bc1fefb91eecf17 Mon Sep 17 00:00:00 2001
|
||
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
||
|
Date: Wed, 11 Sep 2019 20:25:46 +0200
|
||
|
Subject: [PATCH] mm: refresh ZONE_DMA and ZONE_DMA32 comments in 'enum
|
||
|
zone_type'
|
||
|
|
||
|
commit 734f9246e791d8da278957b2c326d7709b2a97c0 upstream.
|
||
|
|
||
|
These zones usage has evolved with time and the comments were outdated.
|
||
|
This joins both ZONE_DMA and ZONE_DMA32 explanation and gives up to date
|
||
|
examples on how they are used on different architectures.
|
||
|
|
||
|
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
||
|
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
||
|
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
|
||
|
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
|
||
|
---
|
||
|
include/linux/mmzone.h | 45 ++++++++++++++++++++++++------------------
|
||
|
1 file changed, 26 insertions(+), 19 deletions(-)
|
||
|
|
||
|
--- a/include/linux/mmzone.h
|
||
|
+++ b/include/linux/mmzone.h
|
||
|
@@ -358,33 +358,40 @@ struct per_cpu_nodestat {
|
||
|
#endif /* !__GENERATING_BOUNDS.H */
|
||
|
|
||
|
enum zone_type {
|
||
|
-#ifdef CONFIG_ZONE_DMA
|
||
|
/*
|
||
|
- * ZONE_DMA is used when there are devices that are not able
|
||
|
- * to do DMA to all of addressable memory (ZONE_NORMAL). Then we
|
||
|
- * carve out the portion of memory that is needed for these devices.
|
||
|
- * The range is arch specific.
|
||
|
- *
|
||
|
- * Some examples
|
||
|
- *
|
||
|
- * Architecture Limit
|
||
|
- * ---------------------------
|
||
|
- * parisc, ia64, sparc <4G
|
||
|
- * s390, powerpc <2G
|
||
|
- * arm Various
|
||
|
- * alpha Unlimited or 0-16MB.
|
||
|
+ * ZONE_DMA and ZONE_DMA32 are used when there are peripherals not able
|
||
|
+ * to DMA to all of the addressable memory (ZONE_NORMAL).
|
||
|
+ * On architectures where this area covers the whole 32 bit address
|
||
|
+ * space ZONE_DMA32 is used. ZONE_DMA is left for the ones with smaller
|
||
|
+ * DMA addressing constraints. This distinction is important as a 32bit
|
||
|
+ * DMA mask is assumed when ZONE_DMA32 is defined. Some 64-bit
|
||
|
+ * platforms may need both zones as they support peripherals with
|
||
|
+ * different DMA addressing limitations.
|
||
|
+ *
|
||
|
+ * Some examples:
|
||
|
+ *
|
||
|
+ * - i386 and x86_64 have a fixed 16M ZONE_DMA and ZONE_DMA32 for the
|
||
|
+ * rest of the lower 4G.
|
||
|
+ *
|
||
|
+ * - arm only uses ZONE_DMA, the size, up to 4G, may vary depending on
|
||
|
+ * the specific device.
|
||
|
+ *
|
||
|
+ * - arm64 has a fixed 1G ZONE_DMA and ZONE_DMA32 for the rest of the
|
||
|
+ * lower 4G.
|
||
|
+ *
|
||
|
+ * - powerpc only uses ZONE_DMA, the size, up to 2G, may vary
|
||
|
+ * depending on the specific device.
|
||
|
*
|
||
|
- * i386, x86_64 and multiple other arches
|
||
|
- * <16M.
|
||
|
+ * - s390 uses ZONE_DMA fixed to the lower 2G.
|
||
|
+ *
|
||
|
+ * - ia64 and riscv only use ZONE_DMA32.
|
||
|
+ *
|
||
|
+ * - parisc uses neither.
|
||
|
*/
|
||
|
+#ifdef CONFIG_ZONE_DMA
|
||
|
ZONE_DMA,
|
||
|
#endif
|
||
|
#ifdef CONFIG_ZONE_DMA32
|
||
|
- /*
|
||
|
- * x86_64 needs two ZONE_DMAs because it supports devices that are
|
||
|
- * only able to do DMA to the lower 16M but also 32 bit devices that
|
||
|
- * can only do DMA areas below 4G.
|
||
|
- */
|
||
|
ZONE_DMA32,
|
||
|
#endif
|
||
|
/*
|