* dma-debug cleanups, including removing the arch hook @ 2018-04-24 14:02 Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig ` (2 more replies) 0 siblings, 3 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu Cc: linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel Hi all, this series has a few dma-debug cleanups, most notably removing the need for architectures to explicitly initialize dma-debug. ^ permalink raw reply [flat|nested] 24+ messages in thread
* dma-debug cleanups, including removing the arch hook 2018-04-24 14:02 dma-debug cleanups, including removing the arch hook Christoph Hellwig @ 2018-04-24 14:02 ` Christoph Hellwig 2018-04-24 14:02 ` [PATCH 2/3] dma-debug: simplify counting of preallocated requests Christoph Hellwig [not found] ` <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org> 2 siblings, 0 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu Cc: linux-arch, Michal Simek, Greentime Hu, Vincent Chen, linux-alpha, linux-snps-arc, linux-arm-kernel, linux-c6x-dev, linux-hexagon, linux-m68k, nios2-dev, openrisc, linux-parisc, linux-sh, sparclinux, linux-xtensa, linux-kernel Hi all, this series has a few dma-debug cleanups, most notably removing the need for architectures to explicitly initialize dma-debug. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 2/3] dma-debug: simplify counting of preallocated requests 2018-04-24 14:02 dma-debug cleanups, including removing the arch hook Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig @ 2018-04-24 14:02 ` Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-3-hch-jcswGhMUV9g@public.gmane.org> [not found] ` <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org> 2 siblings, 2 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu Cc: linux-arch, Michal Simek, Greentime Hu, Vincent Chen, linux-alpha, linux-snps-arc, linux-arm-kernel, linux-c6x-dev, linux-hexagon, linux-m68k, nios2-dev, openrisc, linux-parisc, linux-sh, sparclinux, linux-xtensa, linux-kernel Just keep a single variable with a descriptive name instead of two with confusing names. Signed-off-by: Christoph Hellwig <hch@lst.de> --- lib/dma-debug.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/lib/dma-debug.c b/lib/dma-debug.c index 712a897174e4..075253cb613b 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -132,7 +132,7 @@ static u32 min_free_entries; static u32 nr_total_entries; /* number of preallocated entries requested by kernel cmdline */ -static u32 req_entries; +static u32 nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; /* debugfs dentry's for the stuff above */ static struct dentry *dma_debug_dent __read_mostly; @@ -1011,7 +1011,6 @@ void dma_debug_add_bus(struct bus_type *bus) static int dma_debug_init(void) { - u32 num_entries; int i; /* Do not use dma_debug_initialized here, since we really want to be @@ -1032,12 +1031,7 @@ static int dma_debug_init(void) return 0; } - if (req_entries) - num_entries = req_entries; - else - num_entries = PREALLOC_DMA_DEBUG_ENTRIES; - - if (prealloc_memory(num_entries) != 0) { + if (prealloc_memory(nr_prealloc_entries) != 0) { pr_err("DMA-API: debugging out of memory error - disabled\n"); global_disable = true; @@ -1068,16 +1062,10 @@ static __init int dma_debug_cmdline(char *str) static __init int dma_debug_entries_cmdline(char *str) { - int res; - if (!str) return -EINVAL; - - res = get_option(&str, &req_entries); - - if (!res) - req_entries = 0; - + if (!get_option(&str, &nr_prealloc_entries)) + nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; return 0; } -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 2/3] dma-debug: simplify counting of preallocated requests 2018-04-24 14:02 ` [PATCH 2/3] dma-debug: simplify counting of preallocated requests Christoph Hellwig @ 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-3-hch-jcswGhMUV9g@public.gmane.org> 1 sibling, 0 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu Cc: linux-arch, Michal Simek, Greentime Hu, Vincent Chen, linux-alpha, linux-snps-arc, linux-arm-kernel, linux-c6x-dev, linux-hexagon, linux-m68k, nios2-dev, openrisc, linux-parisc, linux-sh, sparclinux, linux-xtensa, linux-kernel Just keep a single variable with a descriptive name instead of two with confusing names. Signed-off-by: Christoph Hellwig <hch@lst.de> --- lib/dma-debug.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/lib/dma-debug.c b/lib/dma-debug.c index 712a897174e4..075253cb613b 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -132,7 +132,7 @@ static u32 min_free_entries; static u32 nr_total_entries; /* number of preallocated entries requested by kernel cmdline */ -static u32 req_entries; +static u32 nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; /* debugfs dentry's for the stuff above */ static struct dentry *dma_debug_dent __read_mostly; @@ -1011,7 +1011,6 @@ void dma_debug_add_bus(struct bus_type *bus) static int dma_debug_init(void) { - u32 num_entries; int i; /* Do not use dma_debug_initialized here, since we really want to be @@ -1032,12 +1031,7 @@ static int dma_debug_init(void) return 0; } - if (req_entries) - num_entries = req_entries; - else - num_entries = PREALLOC_DMA_DEBUG_ENTRIES; - - if (prealloc_memory(num_entries) != 0) { + if (prealloc_memory(nr_prealloc_entries) != 0) { pr_err("DMA-API: debugging out of memory error - disabled\n"); global_disable = true; @@ -1068,16 +1062,10 @@ static __init int dma_debug_cmdline(char *str) static __init int dma_debug_entries_cmdline(char *str) { - int res; - if (!str) return -EINVAL; - - res = get_option(&str, &req_entries); - - if (!res) - req_entries = 0; - + if (!get_option(&str, &nr_prealloc_entries)) + nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; return 0; } -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
[parent not found: <20180424140235.9125-3-hch-jcswGhMUV9g@public.gmane.org>]
* Re: [PATCH 2/3] dma-debug: simplify counting of preallocated requests [not found] ` <20180424140235.9125-3-hch-jcswGhMUV9g@public.gmane.org> @ 2018-05-08 9:50 ` Robin Murphy 2018-05-08 9:50 ` Robin Murphy 0 siblings, 1 reply; 24+ messages in thread From: Robin Murphy @ 2018-05-08 9:50 UTC (permalink / raw) To: Christoph Hellwig, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, Vincent Chen, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On 24/04/18 15:02, Christoph Hellwig wrote: > Just keep a single variable with a descriptive name instead of two > with confusing names. Reviewed-by: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org> > Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> > --- > lib/dma-debug.c | 20 ++++---------------- > 1 file changed, 4 insertions(+), 16 deletions(-) > > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 712a897174e4..075253cb613b 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -132,7 +132,7 @@ static u32 min_free_entries; > static u32 nr_total_entries; > > /* number of preallocated entries requested by kernel cmdline */ > -static u32 req_entries; > +static u32 nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; > > /* debugfs dentry's for the stuff above */ > static struct dentry *dma_debug_dent __read_mostly; > @@ -1011,7 +1011,6 @@ void dma_debug_add_bus(struct bus_type *bus) > > static int dma_debug_init(void) > { > - u32 num_entries; > int i; > > /* Do not use dma_debug_initialized here, since we really want to be > @@ -1032,12 +1031,7 @@ static int dma_debug_init(void) > return 0; > } > > - if (req_entries) > - num_entries = req_entries; > - else > - num_entries = PREALLOC_DMA_DEBUG_ENTRIES; > - > - if (prealloc_memory(num_entries) != 0) { > + if (prealloc_memory(nr_prealloc_entries) != 0) { > pr_err("DMA-API: debugging out of memory error - disabled\n"); > global_disable = true; > > @@ -1068,16 +1062,10 @@ static __init int dma_debug_cmdline(char *str) > > static __init int dma_debug_entries_cmdline(char *str) > { > - int res; > - > if (!str) > return -EINVAL; > - > - res = get_option(&str, &req_entries); > - > - if (!res) > - req_entries = 0; > - > + if (!get_option(&str, &nr_prealloc_entries)) > + nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; > return 0; > } > > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 2/3] dma-debug: simplify counting of preallocated requests 2018-05-08 9:50 ` Robin Murphy @ 2018-05-08 9:50 ` Robin Murphy 0 siblings, 0 replies; 24+ messages in thread From: Robin Murphy @ 2018-05-08 9:50 UTC (permalink / raw) To: Christoph Hellwig, iommu Cc: linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel On 24/04/18 15:02, Christoph Hellwig wrote: > Just keep a single variable with a descriptive name instead of two > with confusing names. Reviewed-by: Robin Murphy <robin.murphy@arm.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > lib/dma-debug.c | 20 ++++---------------- > 1 file changed, 4 insertions(+), 16 deletions(-) > > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 712a897174e4..075253cb613b 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -132,7 +132,7 @@ static u32 min_free_entries; > static u32 nr_total_entries; > > /* number of preallocated entries requested by kernel cmdline */ > -static u32 req_entries; > +static u32 nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; > > /* debugfs dentry's for the stuff above */ > static struct dentry *dma_debug_dent __read_mostly; > @@ -1011,7 +1011,6 @@ void dma_debug_add_bus(struct bus_type *bus) > > static int dma_debug_init(void) > { > - u32 num_entries; > int i; > > /* Do not use dma_debug_initialized here, since we really want to be > @@ -1032,12 +1031,7 @@ static int dma_debug_init(void) > return 0; > } > > - if (req_entries) > - num_entries = req_entries; > - else > - num_entries = PREALLOC_DMA_DEBUG_ENTRIES; > - > - if (prealloc_memory(num_entries) != 0) { > + if (prealloc_memory(nr_prealloc_entries) != 0) { > pr_err("DMA-API: debugging out of memory error - disabled\n"); > global_disable = true; > > @@ -1068,16 +1062,10 @@ static __init int dma_debug_cmdline(char *str) > > static __init int dma_debug_entries_cmdline(char *str) > { > - int res; > - > if (!str) > return -EINVAL; > - > - res = get_option(&str, &req_entries); > - > - if (!res) > - req_entries = 0; > - > + if (!get_option(&str, &nr_prealloc_entries)) > + nr_prealloc_entries = PREALLOC_DMA_DEBUG_ENTRIES; > return 0; > } > > ^ permalink raw reply [flat|nested] 24+ messages in thread
[parent not found: <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org>]
* [PATCH 1/3] dma-debug: move initialization to common code [not found] ` <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org> @ 2018-04-24 14:02 ` Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-2-hch-jcswGhMUV9g@public.gmane.org> 2018-04-24 14:02 ` [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings Christoph Hellwig ` (2 subsequent siblings) 3 siblings, 2 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, Vincent Chen, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Most mainstream architectures are using 65536 entries, so lets stick to that. If someone is really desperate to override it that can still be done through <asm/dma-mapping.h>, but I'd rather see a really good rationale for that. dma_debug_init is now called as a core_initcall, which for many architectures means much earlier, and provides dma-debug functionality earlier in the boot process. This should be safe as it only relies on the memory allocator already being available. Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> --- arch/arm/mm/dma-mapping-nommu.c | 9 --------- arch/arm/mm/dma-mapping.c | 9 --------- arch/arm64/mm/dma-mapping.c | 10 ---------- arch/c6x/kernel/dma.c | 11 ----------- arch/ia64/kernel/dma-mapping.c | 10 ---------- arch/microblaze/kernel/dma.c | 11 ----------- arch/mips/mm/dma-default.c | 10 ---------- arch/openrisc/kernel/dma.c | 11 ----------- arch/powerpc/kernel/dma.c | 3 --- arch/s390/pci/pci_dma.c | 9 --------- arch/sh/mm/consistent.c | 9 --------- arch/sparc/kernel/Makefile | 2 -- arch/sparc/kernel/dma.c | 13 ------------- arch/x86/kernel/pci-dma.c | 4 ---- arch/xtensa/kernel/pci-dma.c | 9 --------- include/linux/dma-debug.h | 6 ------ lib/dma-debug.c | 21 ++++++++++++++------- 17 files changed, 14 insertions(+), 143 deletions(-) delete mode 100644 arch/sparc/kernel/dma.c diff --git a/arch/arm/mm/dma-mapping-nommu.c b/arch/arm/mm/dma-mapping-nommu.c index 619f24a42d09..f448a0663b10 100644 --- a/arch/arm/mm/dma-mapping-nommu.c +++ b/arch/arm/mm/dma-mapping-nommu.c @@ -241,12 +241,3 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, void arch_teardown_dma_ops(struct device *dev) { } - -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -core_initcall(dma_debug_do_init); diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 8c398fedbbb6..c26bf83f44ca 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -1165,15 +1165,6 @@ int arm_dma_supported(struct device *dev, u64 mask) return __dma_supported(dev, mask, false); } -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -core_initcall(dma_debug_do_init); - #ifdef CONFIG_ARM_DMA_USE_IOMMU static int __dma_info_to_prot(enum dma_data_direction dir, unsigned long attrs) diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index a96ec0181818..db01f2709842 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -508,16 +508,6 @@ static int __init arm64_dma_init(void) } arch_initcall(arm64_dma_init); -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_debug_do_init); - - #ifdef CONFIG_IOMMU_DMA #include <linux/dma-iommu.h> #include <linux/platform_device.h> diff --git a/arch/c6x/kernel/dma.c b/arch/c6x/kernel/dma.c index 9fff8be75f58..31e1a9ec3a9c 100644 --- a/arch/c6x/kernel/dma.c +++ b/arch/c6x/kernel/dma.c @@ -136,14 +136,3 @@ const struct dma_map_ops c6x_dma_ops = { .sync_sg_for_cpu = c6x_dma_sync_sg_for_cpu, }; EXPORT_SYMBOL(c6x_dma_ops); - -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); diff --git a/arch/ia64/kernel/dma-mapping.c b/arch/ia64/kernel/dma-mapping.c index f2d57e66fd86..7a471d8d67d4 100644 --- a/arch/ia64/kernel/dma-mapping.c +++ b/arch/ia64/kernel/dma-mapping.c @@ -9,16 +9,6 @@ int iommu_detected __read_mostly; const struct dma_map_ops *dma_ops; EXPORT_SYMBOL(dma_ops); -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); - const struct dma_map_ops *dma_get_ops(struct device *dev) { return dma_ops; diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c index c91e8cef98dd..3145e7dc8ab1 100644 --- a/arch/microblaze/kernel/dma.c +++ b/arch/microblaze/kernel/dma.c @@ -184,14 +184,3 @@ const struct dma_map_ops dma_nommu_ops = { .sync_sg_for_device = dma_nommu_sync_sg_for_device, }; EXPORT_SYMBOL(dma_nommu_ops); - -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index dcafa43613b6..f9fef0028ca2 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c @@ -402,13 +402,3 @@ static const struct dma_map_ops mips_default_dma_map_ops = { const struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops; EXPORT_SYMBOL(mips_dma_map_ops); - -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init mips_dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(mips_dma_init); diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c index a945f00011b4..ec7fd45704d2 100644 --- a/arch/openrisc/kernel/dma.c +++ b/arch/openrisc/kernel/dma.c @@ -247,14 +247,3 @@ const struct dma_map_ops or1k_dma_map_ops = { .sync_single_for_device = or1k_sync_single_for_device, }; EXPORT_SYMBOL(or1k_dma_map_ops); - -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index da20569de9d4..138157deeadf 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c @@ -309,8 +309,6 @@ int dma_set_coherent_mask(struct device *dev, u64 mask) } EXPORT_SYMBOL(dma_set_coherent_mask); -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - int dma_set_mask(struct device *dev, u64 dma_mask) { if (ppc_md.dma_set_mask) @@ -361,7 +359,6 @@ EXPORT_SYMBOL_GPL(dma_get_required_mask); static int __init dma_init(void) { - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); #ifdef CONFIG_PCI dma_debug_add_bus(&pci_bus_type); #endif diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c index 2d15d84c20ed..5dee7a922589 100644 --- a/arch/s390/pci/pci_dma.c +++ b/arch/s390/pci/pci_dma.c @@ -668,15 +668,6 @@ void zpci_dma_exit(void) kmem_cache_destroy(dma_region_table_cache); } -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_debug_do_init); - const struct dma_map_ops s390_pci_dma_ops = { .alloc = s390_dma_alloc, .free = s390_dma_free, diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c index 8ce98691d822..35ea3099a3b6 100644 --- a/arch/sh/mm/consistent.c +++ b/arch/sh/mm/consistent.c @@ -20,18 +20,9 @@ #include <asm/cacheflush.h> #include <asm/addrspace.h> -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - const struct dma_map_ops *dma_ops; EXPORT_SYMBOL(dma_ops); -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_init); - void *dma_generic_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs) diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile index 76cb57750dda..84cfc5a428d6 100644 --- a/arch/sparc/kernel/Makefile +++ b/arch/sparc/kernel/Makefile @@ -74,8 +74,6 @@ obj-$(CONFIG_SPARC64) += pcr.o obj-$(CONFIG_SPARC64) += nmi.o obj-$(CONFIG_SPARC64_SMP) += cpumap.o -obj-y += dma.o - obj-$(CONFIG_PCIC_PCI) += pcic.o obj-$(CONFIG_LEON_PCI) += leon_pci.o obj-$(CONFIG_SPARC_GRPCI2)+= leon_pci_grpci2.o diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c deleted file mode 100644 index f73e7597c971..000000000000 --- a/arch/sparc/kernel/dma.c +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/kernel.h> -#include <linux/dma-mapping.h> -#include <linux/dma-debug.h> - -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 15) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_init); diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index 77625b60a510..bcbaa2e8031e 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c @@ -55,9 +55,6 @@ struct device x86_dma_fallback_dev = { }; EXPORT_SYMBOL(x86_dma_fallback_dev); -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES 65536 - void __init pci_iommu_alloc(void) { struct iommu_table_entry *p; @@ -189,7 +186,6 @@ EXPORT_SYMBOL(arch_dma_supported); static int __init pci_iommu_init(void) { struct iommu_table_entry *p; - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); #ifdef CONFIG_PCI dma_debug_add_bus(&pci_bus_type); diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c index 732631ce250f..392b4a80ebc2 100644 --- a/arch/xtensa/kernel/pci-dma.c +++ b/arch/xtensa/kernel/pci-dma.c @@ -261,12 +261,3 @@ const struct dma_map_ops xtensa_dma_map_ops = { .mapping_error = xtensa_dma_mapping_error, }; EXPORT_SYMBOL(xtensa_dma_map_ops); - -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init xtensa_dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(xtensa_dma_init); diff --git a/include/linux/dma-debug.h b/include/linux/dma-debug.h index c7d844f09c3a..a785f2507159 100644 --- a/include/linux/dma-debug.h +++ b/include/linux/dma-debug.h @@ -30,8 +30,6 @@ struct bus_type; extern void dma_debug_add_bus(struct bus_type *bus); -extern void dma_debug_init(u32 num_entries); - extern int dma_debug_resize_entries(u32 num_entries); extern void debug_dma_map_page(struct device *dev, struct page *page, @@ -100,10 +98,6 @@ static inline void dma_debug_add_bus(struct bus_type *bus) { } -static inline void dma_debug_init(u32 num_entries) -{ -} - static inline int dma_debug_resize_entries(u32 num_entries) { return 0; diff --git a/lib/dma-debug.c b/lib/dma-debug.c index 7f5cdc1e6b29..712a897174e4 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -41,6 +41,11 @@ #define HASH_FN_SHIFT 13 #define HASH_FN_MASK (HASH_SIZE - 1) +/* allow architectures to override this if absolutely required */ +#ifndef PREALLOC_DMA_DEBUG_ENTRIES +#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) +#endif + enum { dma_debug_single, dma_debug_page, @@ -1004,18 +1009,16 @@ void dma_debug_add_bus(struct bus_type *bus) bus_register_notifier(bus, nb); } -/* - * Let the architectures decide how many entries should be preallocated. - */ -void dma_debug_init(u32 num_entries) +static int dma_debug_init(void) { + u32 num_entries; int i; /* Do not use dma_debug_initialized here, since we really want to be * called to set dma_debug_initialized */ if (global_disable) - return; + return 0; for (i = 0; i < HASH_SIZE; ++i) { INIT_LIST_HEAD(&dma_entry_hash[i].list); @@ -1026,17 +1029,19 @@ void dma_debug_init(u32 num_entries) pr_err("DMA-API: error creating debugfs entries - disabling\n"); global_disable = true; - return; + return 0; } if (req_entries) num_entries = req_entries; + else + num_entries = PREALLOC_DMA_DEBUG_ENTRIES; if (prealloc_memory(num_entries) != 0) { pr_err("DMA-API: debugging out of memory error - disabled\n"); global_disable = true; - return; + return 0; } nr_total_entries = num_free_entries; @@ -1044,7 +1049,9 @@ void dma_debug_init(u32 num_entries) dma_debug_initialized = true; pr_info("DMA-API: debugging enabled by kernel config\n"); + return 0; } +core_initcall(dma_debug_init); static __init int dma_debug_cmdline(char *str) { -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 1/3] dma-debug: move initialization to common code 2018-04-24 14:02 ` [PATCH 1/3] dma-debug: move initialization to common code Christoph Hellwig @ 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-2-hch-jcswGhMUV9g@public.gmane.org> 1 sibling, 0 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu Cc: linux-arch, Michal Simek, Greentime Hu, Vincent Chen, linux-alpha, linux-snps-arc, linux-arm-kernel, linux-c6x-dev, linux-hexagon, linux-m68k, nios2-dev, openrisc, linux-parisc, linux-sh, sparclinux, linux-xtensa, linux-kernel Most mainstream architectures are using 65536 entries, so lets stick to that. If someone is really desperate to override it that can still be done through <asm/dma-mapping.h>, but I'd rather see a really good rationale for that. dma_debug_init is now called as a core_initcall, which for many architectures means much earlier, and provides dma-debug functionality earlier in the boot process. This should be safe as it only relies on the memory allocator already being available. Signed-off-by: Christoph Hellwig <hch@lst.de> --- arch/arm/mm/dma-mapping-nommu.c | 9 --------- arch/arm/mm/dma-mapping.c | 9 --------- arch/arm64/mm/dma-mapping.c | 10 ---------- arch/c6x/kernel/dma.c | 11 ----------- arch/ia64/kernel/dma-mapping.c | 10 ---------- arch/microblaze/kernel/dma.c | 11 ----------- arch/mips/mm/dma-default.c | 10 ---------- arch/openrisc/kernel/dma.c | 11 ----------- arch/powerpc/kernel/dma.c | 3 --- arch/s390/pci/pci_dma.c | 9 --------- arch/sh/mm/consistent.c | 9 --------- arch/sparc/kernel/Makefile | 2 -- arch/sparc/kernel/dma.c | 13 ------------- arch/x86/kernel/pci-dma.c | 4 ---- arch/xtensa/kernel/pci-dma.c | 9 --------- include/linux/dma-debug.h | 6 ------ lib/dma-debug.c | 21 ++++++++++++++------- 17 files changed, 14 insertions(+), 143 deletions(-) delete mode 100644 arch/sparc/kernel/dma.c diff --git a/arch/arm/mm/dma-mapping-nommu.c b/arch/arm/mm/dma-mapping-nommu.c index 619f24a42d09..f448a0663b10 100644 --- a/arch/arm/mm/dma-mapping-nommu.c +++ b/arch/arm/mm/dma-mapping-nommu.c @@ -241,12 +241,3 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, void arch_teardown_dma_ops(struct device *dev) { } - -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -core_initcall(dma_debug_do_init); diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 8c398fedbbb6..c26bf83f44ca 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -1165,15 +1165,6 @@ int arm_dma_supported(struct device *dev, u64 mask) return __dma_supported(dev, mask, false); } -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -core_initcall(dma_debug_do_init); - #ifdef CONFIG_ARM_DMA_USE_IOMMU static int __dma_info_to_prot(enum dma_data_direction dir, unsigned long attrs) diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index a96ec0181818..db01f2709842 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -508,16 +508,6 @@ static int __init arm64_dma_init(void) } arch_initcall(arm64_dma_init); -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_debug_do_init); - - #ifdef CONFIG_IOMMU_DMA #include <linux/dma-iommu.h> #include <linux/platform_device.h> diff --git a/arch/c6x/kernel/dma.c b/arch/c6x/kernel/dma.c index 9fff8be75f58..31e1a9ec3a9c 100644 --- a/arch/c6x/kernel/dma.c +++ b/arch/c6x/kernel/dma.c @@ -136,14 +136,3 @@ const struct dma_map_ops c6x_dma_ops = { .sync_sg_for_cpu = c6x_dma_sync_sg_for_cpu, }; EXPORT_SYMBOL(c6x_dma_ops); - -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); diff --git a/arch/ia64/kernel/dma-mapping.c b/arch/ia64/kernel/dma-mapping.c index f2d57e66fd86..7a471d8d67d4 100644 --- a/arch/ia64/kernel/dma-mapping.c +++ b/arch/ia64/kernel/dma-mapping.c @@ -9,16 +9,6 @@ int iommu_detected __read_mostly; const struct dma_map_ops *dma_ops; EXPORT_SYMBOL(dma_ops); -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); - const struct dma_map_ops *dma_get_ops(struct device *dev) { return dma_ops; diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c index c91e8cef98dd..3145e7dc8ab1 100644 --- a/arch/microblaze/kernel/dma.c +++ b/arch/microblaze/kernel/dma.c @@ -184,14 +184,3 @@ const struct dma_map_ops dma_nommu_ops = { .sync_sg_for_device = dma_nommu_sync_sg_for_device, }; EXPORT_SYMBOL(dma_nommu_ops); - -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index dcafa43613b6..f9fef0028ca2 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c @@ -402,13 +402,3 @@ static const struct dma_map_ops mips_default_dma_map_ops = { const struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops; EXPORT_SYMBOL(mips_dma_map_ops); - -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init mips_dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(mips_dma_init); diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c index a945f00011b4..ec7fd45704d2 100644 --- a/arch/openrisc/kernel/dma.c +++ b/arch/openrisc/kernel/dma.c @@ -247,14 +247,3 @@ const struct dma_map_ops or1k_dma_map_ops = { .sync_single_for_device = or1k_sync_single_for_device, }; EXPORT_SYMBOL(or1k_dma_map_ops); - -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - - return 0; -} -fs_initcall(dma_init); diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index da20569de9d4..138157deeadf 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c @@ -309,8 +309,6 @@ int dma_set_coherent_mask(struct device *dev, u64 mask) } EXPORT_SYMBOL(dma_set_coherent_mask); -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - int dma_set_mask(struct device *dev, u64 dma_mask) { if (ppc_md.dma_set_mask) @@ -361,7 +359,6 @@ EXPORT_SYMBOL_GPL(dma_get_required_mask); static int __init dma_init(void) { - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); #ifdef CONFIG_PCI dma_debug_add_bus(&pci_bus_type); #endif diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c index 2d15d84c20ed..5dee7a922589 100644 --- a/arch/s390/pci/pci_dma.c +++ b/arch/s390/pci/pci_dma.c @@ -668,15 +668,6 @@ void zpci_dma_exit(void) kmem_cache_destroy(dma_region_table_cache); } -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init dma_debug_do_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_debug_do_init); - const struct dma_map_ops s390_pci_dma_ops = { .alloc = s390_dma_alloc, .free = s390_dma_free, diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c index 8ce98691d822..35ea3099a3b6 100644 --- a/arch/sh/mm/consistent.c +++ b/arch/sh/mm/consistent.c @@ -20,18 +20,9 @@ #include <asm/cacheflush.h> #include <asm/addrspace.h> -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 - const struct dma_map_ops *dma_ops; EXPORT_SYMBOL(dma_ops); -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_init); - void *dma_generic_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs) diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile index 76cb57750dda..84cfc5a428d6 100644 --- a/arch/sparc/kernel/Makefile +++ b/arch/sparc/kernel/Makefile @@ -74,8 +74,6 @@ obj-$(CONFIG_SPARC64) += pcr.o obj-$(CONFIG_SPARC64) += nmi.o obj-$(CONFIG_SPARC64_SMP) += cpumap.o -obj-y += dma.o - obj-$(CONFIG_PCIC_PCI) += pcic.o obj-$(CONFIG_LEON_PCI) += leon_pci.o obj-$(CONFIG_SPARC_GRPCI2)+= leon_pci_grpci2.o diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c deleted file mode 100644 index f73e7597c971..000000000000 --- a/arch/sparc/kernel/dma.c +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/kernel.h> -#include <linux/dma-mapping.h> -#include <linux/dma-debug.h> - -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 15) - -static int __init dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(dma_init); diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index 77625b60a510..bcbaa2e8031e 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c @@ -55,9 +55,6 @@ struct device x86_dma_fallback_dev = { }; EXPORT_SYMBOL(x86_dma_fallback_dev); -/* Number of entries preallocated for DMA-API debugging */ -#define PREALLOC_DMA_DEBUG_ENTRIES 65536 - void __init pci_iommu_alloc(void) { struct iommu_table_entry *p; @@ -189,7 +186,6 @@ EXPORT_SYMBOL(arch_dma_supported); static int __init pci_iommu_init(void) { struct iommu_table_entry *p; - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); #ifdef CONFIG_PCI dma_debug_add_bus(&pci_bus_type); diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c index 732631ce250f..392b4a80ebc2 100644 --- a/arch/xtensa/kernel/pci-dma.c +++ b/arch/xtensa/kernel/pci-dma.c @@ -261,12 +261,3 @@ const struct dma_map_ops xtensa_dma_map_ops = { .mapping_error = xtensa_dma_mapping_error, }; EXPORT_SYMBOL(xtensa_dma_map_ops); - -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) - -static int __init xtensa_dma_init(void) -{ - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); - return 0; -} -fs_initcall(xtensa_dma_init); diff --git a/include/linux/dma-debug.h b/include/linux/dma-debug.h index c7d844f09c3a..a785f2507159 100644 --- a/include/linux/dma-debug.h +++ b/include/linux/dma-debug.h @@ -30,8 +30,6 @@ struct bus_type; extern void dma_debug_add_bus(struct bus_type *bus); -extern void dma_debug_init(u32 num_entries); - extern int dma_debug_resize_entries(u32 num_entries); extern void debug_dma_map_page(struct device *dev, struct page *page, @@ -100,10 +98,6 @@ static inline void dma_debug_add_bus(struct bus_type *bus) { } -static inline void dma_debug_init(u32 num_entries) -{ -} - static inline int dma_debug_resize_entries(u32 num_entries) { return 0; diff --git a/lib/dma-debug.c b/lib/dma-debug.c index 7f5cdc1e6b29..712a897174e4 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -41,6 +41,11 @@ #define HASH_FN_SHIFT 13 #define HASH_FN_MASK (HASH_SIZE - 1) +/* allow architectures to override this if absolutely required */ +#ifndef PREALLOC_DMA_DEBUG_ENTRIES +#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) +#endif + enum { dma_debug_single, dma_debug_page, @@ -1004,18 +1009,16 @@ void dma_debug_add_bus(struct bus_type *bus) bus_register_notifier(bus, nb); } -/* - * Let the architectures decide how many entries should be preallocated. - */ -void dma_debug_init(u32 num_entries) +static int dma_debug_init(void) { + u32 num_entries; int i; /* Do not use dma_debug_initialized here, since we really want to be * called to set dma_debug_initialized */ if (global_disable) - return; + return 0; for (i = 0; i < HASH_SIZE; ++i) { INIT_LIST_HEAD(&dma_entry_hash[i].list); @@ -1026,17 +1029,19 @@ void dma_debug_init(u32 num_entries) pr_err("DMA-API: error creating debugfs entries - disabling\n"); global_disable = true; - return; + return 0; } if (req_entries) num_entries = req_entries; + else + num_entries = PREALLOC_DMA_DEBUG_ENTRIES; if (prealloc_memory(num_entries) != 0) { pr_err("DMA-API: debugging out of memory error - disabled\n"); global_disable = true; - return; + return 0; } nr_total_entries = num_free_entries; @@ -1044,7 +1049,9 @@ void dma_debug_init(u32 num_entries) dma_debug_initialized = true; pr_info("DMA-API: debugging enabled by kernel config\n"); + return 0; } +core_initcall(dma_debug_init); static __init int dma_debug_cmdline(char *str) { -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
[parent not found: <20180424140235.9125-2-hch-jcswGhMUV9g@public.gmane.org>]
* Re: [PATCH 1/3] dma-debug: move initialization to common code [not found] ` <20180424140235.9125-2-hch-jcswGhMUV9g@public.gmane.org> @ 2018-05-08 9:46 ` Robin Murphy 2018-05-08 9:46 ` Robin Murphy 2018-05-08 10:22 ` Marek Szyprowski 1 sibling, 1 reply; 24+ messages in thread From: Robin Murphy @ 2018-05-08 9:46 UTC (permalink / raw) To: Christoph Hellwig, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, Vincent Chen, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On 24/04/18 15:02, Christoph Hellwig wrote: > Most mainstream architectures are using 65536 entries, so lets stick to > that. If someone is really desperate to override it that can still be > done through <asm/dma-mapping.h>, but I'd rather see a really good > rationale for that. > > dma_debug_init is now called as a core_initcall, which for many > architectures means much earlier, and provides dma-debug functionality > earlier in the boot process. This should be safe as it only relies > on the memory allocator already being available. Reviewed-by: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org> > Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> > --- > arch/arm/mm/dma-mapping-nommu.c | 9 --------- > arch/arm/mm/dma-mapping.c | 9 --------- > arch/arm64/mm/dma-mapping.c | 10 ---------- > arch/c6x/kernel/dma.c | 11 ----------- > arch/ia64/kernel/dma-mapping.c | 10 ---------- > arch/microblaze/kernel/dma.c | 11 ----------- > arch/mips/mm/dma-default.c | 10 ---------- > arch/openrisc/kernel/dma.c | 11 ----------- > arch/powerpc/kernel/dma.c | 3 --- > arch/s390/pci/pci_dma.c | 9 --------- > arch/sh/mm/consistent.c | 9 --------- > arch/sparc/kernel/Makefile | 2 -- > arch/sparc/kernel/dma.c | 13 ------------- > arch/x86/kernel/pci-dma.c | 4 ---- > arch/xtensa/kernel/pci-dma.c | 9 --------- > include/linux/dma-debug.h | 6 ------ > lib/dma-debug.c | 21 ++++++++++++++------- > 17 files changed, 14 insertions(+), 143 deletions(-) > delete mode 100644 arch/sparc/kernel/dma.c > > diff --git a/arch/arm/mm/dma-mapping-nommu.c b/arch/arm/mm/dma-mapping-nommu.c > index 619f24a42d09..f448a0663b10 100644 > --- a/arch/arm/mm/dma-mapping-nommu.c > +++ b/arch/arm/mm/dma-mapping-nommu.c > @@ -241,12 +241,3 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > void arch_teardown_dma_ops(struct device *dev) > { > } > - > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c > index 8c398fedbbb6..c26bf83f44ca 100644 > --- a/arch/arm/mm/dma-mapping.c > +++ b/arch/arm/mm/dma-mapping.c > @@ -1165,15 +1165,6 @@ int arm_dma_supported(struct device *dev, u64 mask) > return __dma_supported(dev, mask, false); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > - > #ifdef CONFIG_ARM_DMA_USE_IOMMU > > static int __dma_info_to_prot(enum dma_data_direction dir, unsigned long attrs) > diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c > index a96ec0181818..db01f2709842 100644 > --- a/arch/arm64/mm/dma-mapping.c > +++ b/arch/arm64/mm/dma-mapping.c > @@ -508,16 +508,6 @@ static int __init arm64_dma_init(void) > } > arch_initcall(arm64_dma_init); > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > - > #ifdef CONFIG_IOMMU_DMA > #include <linux/dma-iommu.h> > #include <linux/platform_device.h> > diff --git a/arch/c6x/kernel/dma.c b/arch/c6x/kernel/dma.c > index 9fff8be75f58..31e1a9ec3a9c 100644 > --- a/arch/c6x/kernel/dma.c > +++ b/arch/c6x/kernel/dma.c > @@ -136,14 +136,3 @@ const struct dma_map_ops c6x_dma_ops = { > .sync_sg_for_cpu = c6x_dma_sync_sg_for_cpu, > }; > EXPORT_SYMBOL(c6x_dma_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/ia64/kernel/dma-mapping.c b/arch/ia64/kernel/dma-mapping.c > index f2d57e66fd86..7a471d8d67d4 100644 > --- a/arch/ia64/kernel/dma-mapping.c > +++ b/arch/ia64/kernel/dma-mapping.c > @@ -9,16 +9,6 @@ int iommu_detected __read_mostly; > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > - > const struct dma_map_ops *dma_get_ops(struct device *dev) > { > return dma_ops; > diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c > index c91e8cef98dd..3145e7dc8ab1 100644 > --- a/arch/microblaze/kernel/dma.c > +++ b/arch/microblaze/kernel/dma.c > @@ -184,14 +184,3 @@ const struct dma_map_ops dma_nommu_ops = { > .sync_sg_for_device = dma_nommu_sync_sg_for_device, > }; > EXPORT_SYMBOL(dma_nommu_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c > index dcafa43613b6..f9fef0028ca2 100644 > --- a/arch/mips/mm/dma-default.c > +++ b/arch/mips/mm/dma-default.c > @@ -402,13 +402,3 @@ static const struct dma_map_ops mips_default_dma_map_ops = { > > const struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops; > EXPORT_SYMBOL(mips_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init mips_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(mips_dma_init); > diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c > index a945f00011b4..ec7fd45704d2 100644 > --- a/arch/openrisc/kernel/dma.c > +++ b/arch/openrisc/kernel/dma.c > @@ -247,14 +247,3 @@ const struct dma_map_ops or1k_dma_map_ops = { > .sync_single_for_device = or1k_sync_single_for_device, > }; > EXPORT_SYMBOL(or1k_dma_map_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c > index da20569de9d4..138157deeadf 100644 > --- a/arch/powerpc/kernel/dma.c > +++ b/arch/powerpc/kernel/dma.c > @@ -309,8 +309,6 @@ int dma_set_coherent_mask(struct device *dev, u64 mask) > } > EXPORT_SYMBOL(dma_set_coherent_mask); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > int dma_set_mask(struct device *dev, u64 dma_mask) > { > if (ppc_md.dma_set_mask) > @@ -361,7 +359,6 @@ EXPORT_SYMBOL_GPL(dma_get_required_mask); > > static int __init dma_init(void) > { > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > #endif > diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c > index 2d15d84c20ed..5dee7a922589 100644 > --- a/arch/s390/pci/pci_dma.c > +++ b/arch/s390/pci/pci_dma.c > @@ -668,15 +668,6 @@ void zpci_dma_exit(void) > kmem_cache_destroy(dma_region_table_cache); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > const struct dma_map_ops s390_pci_dma_ops = { > .alloc = s390_dma_alloc, > .free = s390_dma_free, > diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c > index 8ce98691d822..35ea3099a3b6 100644 > --- a/arch/sh/mm/consistent.c > +++ b/arch/sh/mm/consistent.c > @@ -20,18 +20,9 @@ > #include <asm/cacheflush.h> > #include <asm/addrspace.h> > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > - > void *dma_generic_alloc_coherent(struct device *dev, size_t size, > dma_addr_t *dma_handle, gfp_t gfp, > unsigned long attrs) > diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile > index 76cb57750dda..84cfc5a428d6 100644 > --- a/arch/sparc/kernel/Makefile > +++ b/arch/sparc/kernel/Makefile > @@ -74,8 +74,6 @@ obj-$(CONFIG_SPARC64) += pcr.o > obj-$(CONFIG_SPARC64) += nmi.o > obj-$(CONFIG_SPARC64_SMP) += cpumap.o > > -obj-y += dma.o > - > obj-$(CONFIG_PCIC_PCI) += pcic.o > obj-$(CONFIG_LEON_PCI) += leon_pci.o > obj-$(CONFIG_SPARC_GRPCI2)+= leon_pci_grpci2.o > diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c > deleted file mode 100644 > index f73e7597c971..000000000000 > --- a/arch/sparc/kernel/dma.c > +++ /dev/null > @@ -1,13 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/kernel.h> > -#include <linux/dma-mapping.h> > -#include <linux/dma-debug.h> > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 15) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c > index 77625b60a510..bcbaa2e8031e 100644 > --- a/arch/x86/kernel/pci-dma.c > +++ b/arch/x86/kernel/pci-dma.c > @@ -55,9 +55,6 @@ struct device x86_dma_fallback_dev = { > }; > EXPORT_SYMBOL(x86_dma_fallback_dev); > > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES 65536 > - > void __init pci_iommu_alloc(void) > { > struct iommu_table_entry *p; > @@ -189,7 +186,6 @@ EXPORT_SYMBOL(arch_dma_supported); > static int __init pci_iommu_init(void) > { > struct iommu_table_entry *p; > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c > index 732631ce250f..392b4a80ebc2 100644 > --- a/arch/xtensa/kernel/pci-dma.c > +++ b/arch/xtensa/kernel/pci-dma.c > @@ -261,12 +261,3 @@ const struct dma_map_ops xtensa_dma_map_ops = { > .mapping_error = xtensa_dma_mapping_error, > }; > EXPORT_SYMBOL(xtensa_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init xtensa_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(xtensa_dma_init); > diff --git a/include/linux/dma-debug.h b/include/linux/dma-debug.h > index c7d844f09c3a..a785f2507159 100644 > --- a/include/linux/dma-debug.h > +++ b/include/linux/dma-debug.h > @@ -30,8 +30,6 @@ struct bus_type; > > extern void dma_debug_add_bus(struct bus_type *bus); > > -extern void dma_debug_init(u32 num_entries); > - > extern int dma_debug_resize_entries(u32 num_entries); > > extern void debug_dma_map_page(struct device *dev, struct page *page, > @@ -100,10 +98,6 @@ static inline void dma_debug_add_bus(struct bus_type *bus) > { > } > > -static inline void dma_debug_init(u32 num_entries) > -{ > -} > - > static inline int dma_debug_resize_entries(u32 num_entries) > { > return 0; > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 7f5cdc1e6b29..712a897174e4 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -41,6 +41,11 @@ > #define HASH_FN_SHIFT 13 > #define HASH_FN_MASK (HASH_SIZE - 1) > > +/* allow architectures to override this if absolutely required */ > +#ifndef PREALLOC_DMA_DEBUG_ENTRIES > +#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > +#endif > + > enum { > dma_debug_single, > dma_debug_page, > @@ -1004,18 +1009,16 @@ void dma_debug_add_bus(struct bus_type *bus) > bus_register_notifier(bus, nb); > } > > -/* > - * Let the architectures decide how many entries should be preallocated. > - */ > -void dma_debug_init(u32 num_entries) > +static int dma_debug_init(void) > { > + u32 num_entries; > int i; > > /* Do not use dma_debug_initialized here, since we really want to be > * called to set dma_debug_initialized > */ > if (global_disable) > - return; > + return 0; > > for (i = 0; i < HASH_SIZE; ++i) { > INIT_LIST_HEAD(&dma_entry_hash[i].list); > @@ -1026,17 +1029,19 @@ void dma_debug_init(u32 num_entries) > pr_err("DMA-API: error creating debugfs entries - disabling\n"); > global_disable = true; > > - return; > + return 0; > } > > if (req_entries) > num_entries = req_entries; > + else > + num_entries = PREALLOC_DMA_DEBUG_ENTRIES; > > if (prealloc_memory(num_entries) != 0) { > pr_err("DMA-API: debugging out of memory error - disabled\n"); > global_disable = true; > > - return; > + return 0; > } > > nr_total_entries = num_free_entries; > @@ -1044,7 +1049,9 @@ void dma_debug_init(u32 num_entries) > dma_debug_initialized = true; > > pr_info("DMA-API: debugging enabled by kernel config\n"); > + return 0; > } > +core_initcall(dma_debug_init); > > static __init int dma_debug_cmdline(char *str) > { > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] dma-debug: move initialization to common code 2018-05-08 9:46 ` Robin Murphy @ 2018-05-08 9:46 ` Robin Murphy 0 siblings, 0 replies; 24+ messages in thread From: Robin Murphy @ 2018-05-08 9:46 UTC (permalink / raw) To: Christoph Hellwig, iommu Cc: linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel On 24/04/18 15:02, Christoph Hellwig wrote: > Most mainstream architectures are using 65536 entries, so lets stick to > that. If someone is really desperate to override it that can still be > done through <asm/dma-mapping.h>, but I'd rather see a really good > rationale for that. > > dma_debug_init is now called as a core_initcall, which for many > architectures means much earlier, and provides dma-debug functionality > earlier in the boot process. This should be safe as it only relies > on the memory allocator already being available. Reviewed-by: Robin Murphy <robin.murphy@arm.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > arch/arm/mm/dma-mapping-nommu.c | 9 --------- > arch/arm/mm/dma-mapping.c | 9 --------- > arch/arm64/mm/dma-mapping.c | 10 ---------- > arch/c6x/kernel/dma.c | 11 ----------- > arch/ia64/kernel/dma-mapping.c | 10 ---------- > arch/microblaze/kernel/dma.c | 11 ----------- > arch/mips/mm/dma-default.c | 10 ---------- > arch/openrisc/kernel/dma.c | 11 ----------- > arch/powerpc/kernel/dma.c | 3 --- > arch/s390/pci/pci_dma.c | 9 --------- > arch/sh/mm/consistent.c | 9 --------- > arch/sparc/kernel/Makefile | 2 -- > arch/sparc/kernel/dma.c | 13 ------------- > arch/x86/kernel/pci-dma.c | 4 ---- > arch/xtensa/kernel/pci-dma.c | 9 --------- > include/linux/dma-debug.h | 6 ------ > lib/dma-debug.c | 21 ++++++++++++++------- > 17 files changed, 14 insertions(+), 143 deletions(-) > delete mode 100644 arch/sparc/kernel/dma.c > > diff --git a/arch/arm/mm/dma-mapping-nommu.c b/arch/arm/mm/dma-mapping-nommu.c > index 619f24a42d09..f448a0663b10 100644 > --- a/arch/arm/mm/dma-mapping-nommu.c > +++ b/arch/arm/mm/dma-mapping-nommu.c > @@ -241,12 +241,3 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > void arch_teardown_dma_ops(struct device *dev) > { > } > - > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c > index 8c398fedbbb6..c26bf83f44ca 100644 > --- a/arch/arm/mm/dma-mapping.c > +++ b/arch/arm/mm/dma-mapping.c > @@ -1165,15 +1165,6 @@ int arm_dma_supported(struct device *dev, u64 mask) > return __dma_supported(dev, mask, false); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > - > #ifdef CONFIG_ARM_DMA_USE_IOMMU > > static int __dma_info_to_prot(enum dma_data_direction dir, unsigned long attrs) > diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c > index a96ec0181818..db01f2709842 100644 > --- a/arch/arm64/mm/dma-mapping.c > +++ b/arch/arm64/mm/dma-mapping.c > @@ -508,16 +508,6 @@ static int __init arm64_dma_init(void) > } > arch_initcall(arm64_dma_init); > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > - > #ifdef CONFIG_IOMMU_DMA > #include <linux/dma-iommu.h> > #include <linux/platform_device.h> > diff --git a/arch/c6x/kernel/dma.c b/arch/c6x/kernel/dma.c > index 9fff8be75f58..31e1a9ec3a9c 100644 > --- a/arch/c6x/kernel/dma.c > +++ b/arch/c6x/kernel/dma.c > @@ -136,14 +136,3 @@ const struct dma_map_ops c6x_dma_ops = { > .sync_sg_for_cpu = c6x_dma_sync_sg_for_cpu, > }; > EXPORT_SYMBOL(c6x_dma_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/ia64/kernel/dma-mapping.c b/arch/ia64/kernel/dma-mapping.c > index f2d57e66fd86..7a471d8d67d4 100644 > --- a/arch/ia64/kernel/dma-mapping.c > +++ b/arch/ia64/kernel/dma-mapping.c > @@ -9,16 +9,6 @@ int iommu_detected __read_mostly; > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > - > const struct dma_map_ops *dma_get_ops(struct device *dev) > { > return dma_ops; > diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c > index c91e8cef98dd..3145e7dc8ab1 100644 > --- a/arch/microblaze/kernel/dma.c > +++ b/arch/microblaze/kernel/dma.c > @@ -184,14 +184,3 @@ const struct dma_map_ops dma_nommu_ops = { > .sync_sg_for_device = dma_nommu_sync_sg_for_device, > }; > EXPORT_SYMBOL(dma_nommu_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c > index dcafa43613b6..f9fef0028ca2 100644 > --- a/arch/mips/mm/dma-default.c > +++ b/arch/mips/mm/dma-default.c > @@ -402,13 +402,3 @@ static const struct dma_map_ops mips_default_dma_map_ops = { > > const struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops; > EXPORT_SYMBOL(mips_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init mips_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(mips_dma_init); > diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c > index a945f00011b4..ec7fd45704d2 100644 > --- a/arch/openrisc/kernel/dma.c > +++ b/arch/openrisc/kernel/dma.c > @@ -247,14 +247,3 @@ const struct dma_map_ops or1k_dma_map_ops = { > .sync_single_for_device = or1k_sync_single_for_device, > }; > EXPORT_SYMBOL(or1k_dma_map_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c > index da20569de9d4..138157deeadf 100644 > --- a/arch/powerpc/kernel/dma.c > +++ b/arch/powerpc/kernel/dma.c > @@ -309,8 +309,6 @@ int dma_set_coherent_mask(struct device *dev, u64 mask) > } > EXPORT_SYMBOL(dma_set_coherent_mask); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > int dma_set_mask(struct device *dev, u64 dma_mask) > { > if (ppc_md.dma_set_mask) > @@ -361,7 +359,6 @@ EXPORT_SYMBOL_GPL(dma_get_required_mask); > > static int __init dma_init(void) > { > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > #endif > diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c > index 2d15d84c20ed..5dee7a922589 100644 > --- a/arch/s390/pci/pci_dma.c > +++ b/arch/s390/pci/pci_dma.c > @@ -668,15 +668,6 @@ void zpci_dma_exit(void) > kmem_cache_destroy(dma_region_table_cache); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > const struct dma_map_ops s390_pci_dma_ops = { > .alloc = s390_dma_alloc, > .free = s390_dma_free, > diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c > index 8ce98691d822..35ea3099a3b6 100644 > --- a/arch/sh/mm/consistent.c > +++ b/arch/sh/mm/consistent.c > @@ -20,18 +20,9 @@ > #include <asm/cacheflush.h> > #include <asm/addrspace.h> > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > - > void *dma_generic_alloc_coherent(struct device *dev, size_t size, > dma_addr_t *dma_handle, gfp_t gfp, > unsigned long attrs) > diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile > index 76cb57750dda..84cfc5a428d6 100644 > --- a/arch/sparc/kernel/Makefile > +++ b/arch/sparc/kernel/Makefile > @@ -74,8 +74,6 @@ obj-$(CONFIG_SPARC64) += pcr.o > obj-$(CONFIG_SPARC64) += nmi.o > obj-$(CONFIG_SPARC64_SMP) += cpumap.o > > -obj-y += dma.o > - > obj-$(CONFIG_PCIC_PCI) += pcic.o > obj-$(CONFIG_LEON_PCI) += leon_pci.o > obj-$(CONFIG_SPARC_GRPCI2)+= leon_pci_grpci2.o > diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c > deleted file mode 100644 > index f73e7597c971..000000000000 > --- a/arch/sparc/kernel/dma.c > +++ /dev/null > @@ -1,13 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/kernel.h> > -#include <linux/dma-mapping.h> > -#include <linux/dma-debug.h> > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 15) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c > index 77625b60a510..bcbaa2e8031e 100644 > --- a/arch/x86/kernel/pci-dma.c > +++ b/arch/x86/kernel/pci-dma.c > @@ -55,9 +55,6 @@ struct device x86_dma_fallback_dev = { > }; > EXPORT_SYMBOL(x86_dma_fallback_dev); > > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES 65536 > - > void __init pci_iommu_alloc(void) > { > struct iommu_table_entry *p; > @@ -189,7 +186,6 @@ EXPORT_SYMBOL(arch_dma_supported); > static int __init pci_iommu_init(void) > { > struct iommu_table_entry *p; > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c > index 732631ce250f..392b4a80ebc2 100644 > --- a/arch/xtensa/kernel/pci-dma.c > +++ b/arch/xtensa/kernel/pci-dma.c > @@ -261,12 +261,3 @@ const struct dma_map_ops xtensa_dma_map_ops = { > .mapping_error = xtensa_dma_mapping_error, > }; > EXPORT_SYMBOL(xtensa_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init xtensa_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(xtensa_dma_init); > diff --git a/include/linux/dma-debug.h b/include/linux/dma-debug.h > index c7d844f09c3a..a785f2507159 100644 > --- a/include/linux/dma-debug.h > +++ b/include/linux/dma-debug.h > @@ -30,8 +30,6 @@ struct bus_type; > > extern void dma_debug_add_bus(struct bus_type *bus); > > -extern void dma_debug_init(u32 num_entries); > - > extern int dma_debug_resize_entries(u32 num_entries); > > extern void debug_dma_map_page(struct device *dev, struct page *page, > @@ -100,10 +98,6 @@ static inline void dma_debug_add_bus(struct bus_type *bus) > { > } > > -static inline void dma_debug_init(u32 num_entries) > -{ > -} > - > static inline int dma_debug_resize_entries(u32 num_entries) > { > return 0; > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 7f5cdc1e6b29..712a897174e4 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -41,6 +41,11 @@ > #define HASH_FN_SHIFT 13 > #define HASH_FN_MASK (HASH_SIZE - 1) > > +/* allow architectures to override this if absolutely required */ > +#ifndef PREALLOC_DMA_DEBUG_ENTRIES > +#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > +#endif > + > enum { > dma_debug_single, > dma_debug_page, > @@ -1004,18 +1009,16 @@ void dma_debug_add_bus(struct bus_type *bus) > bus_register_notifier(bus, nb); > } > > -/* > - * Let the architectures decide how many entries should be preallocated. > - */ > -void dma_debug_init(u32 num_entries) > +static int dma_debug_init(void) > { > + u32 num_entries; > int i; > > /* Do not use dma_debug_initialized here, since we really want to be > * called to set dma_debug_initialized > */ > if (global_disable) > - return; > + return 0; > > for (i = 0; i < HASH_SIZE; ++i) { > INIT_LIST_HEAD(&dma_entry_hash[i].list); > @@ -1026,17 +1029,19 @@ void dma_debug_init(u32 num_entries) > pr_err("DMA-API: error creating debugfs entries - disabling\n"); > global_disable = true; > > - return; > + return 0; > } > > if (req_entries) > num_entries = req_entries; > + else > + num_entries = PREALLOC_DMA_DEBUG_ENTRIES; > > if (prealloc_memory(num_entries) != 0) { > pr_err("DMA-API: debugging out of memory error - disabled\n"); > global_disable = true; > > - return; > + return 0; > } > > nr_total_entries = num_free_entries; > @@ -1044,7 +1049,9 @@ void dma_debug_init(u32 num_entries) > dma_debug_initialized = true; > > pr_info("DMA-API: debugging enabled by kernel config\n"); > + return 0; > } > +core_initcall(dma_debug_init); > > static __init int dma_debug_cmdline(char *str) > { > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] dma-debug: move initialization to common code [not found] ` <20180424140235.9125-2-hch-jcswGhMUV9g@public.gmane.org> 2018-05-08 9:46 ` Robin Murphy @ 2018-05-08 10:22 ` Marek Szyprowski 2018-05-08 10:22 ` Marek Szyprowski 1 sibling, 1 reply; 24+ messages in thread From: Marek Szyprowski @ 2018-05-08 10:22 UTC (permalink / raw) To: Christoph Hellwig, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, Vincent Chen, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Hi Christoph, On 2018-04-24 16:02, Christoph Hellwig wrote: > Most mainstream architectures are using 65536 entries, so lets stick to > that. If someone is really desperate to override it that can still be > done through <asm/dma-mapping.h>, but I'd rather see a really good > rationale for that. > > dma_debug_init is now called as a core_initcall, which for many > architectures means much earlier, and provides dma-debug functionality > earlier in the boot process. This should be safe as it only relies > on the memory allocator already being available. > > Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> Nice! Unification of this is definitely needed and solves the issues reported some time ago: https://patchwork.kernel.org/patch/9429637/ (arm) https://patchwork.kernel.org/patch/9431161/ (arm64, rejected) Acked-by: Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > --- > arch/arm/mm/dma-mapping-nommu.c | 9 --------- > arch/arm/mm/dma-mapping.c | 9 --------- > arch/arm64/mm/dma-mapping.c | 10 ---------- > arch/c6x/kernel/dma.c | 11 ----------- > arch/ia64/kernel/dma-mapping.c | 10 ---------- > arch/microblaze/kernel/dma.c | 11 ----------- > arch/mips/mm/dma-default.c | 10 ---------- > arch/openrisc/kernel/dma.c | 11 ----------- > arch/powerpc/kernel/dma.c | 3 --- > arch/s390/pci/pci_dma.c | 9 --------- > arch/sh/mm/consistent.c | 9 --------- > arch/sparc/kernel/Makefile | 2 -- > arch/sparc/kernel/dma.c | 13 ------------- > arch/x86/kernel/pci-dma.c | 4 ---- > arch/xtensa/kernel/pci-dma.c | 9 --------- > include/linux/dma-debug.h | 6 ------ > lib/dma-debug.c | 21 ++++++++++++++------- > 17 files changed, 14 insertions(+), 143 deletions(-) > delete mode 100644 arch/sparc/kernel/dma.c > > diff --git a/arch/arm/mm/dma-mapping-nommu.c b/arch/arm/mm/dma-mapping-nommu.c > index 619f24a42d09..f448a0663b10 100644 > --- a/arch/arm/mm/dma-mapping-nommu.c > +++ b/arch/arm/mm/dma-mapping-nommu.c > @@ -241,12 +241,3 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > void arch_teardown_dma_ops(struct device *dev) > { > } > - > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c > index 8c398fedbbb6..c26bf83f44ca 100644 > --- a/arch/arm/mm/dma-mapping.c > +++ b/arch/arm/mm/dma-mapping.c > @@ -1165,15 +1165,6 @@ int arm_dma_supported(struct device *dev, u64 mask) > return __dma_supported(dev, mask, false); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > - > #ifdef CONFIG_ARM_DMA_USE_IOMMU > > static int __dma_info_to_prot(enum dma_data_direction dir, unsigned long attrs) > diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c > index a96ec0181818..db01f2709842 100644 > --- a/arch/arm64/mm/dma-mapping.c > +++ b/arch/arm64/mm/dma-mapping.c > @@ -508,16 +508,6 @@ static int __init arm64_dma_init(void) > } > arch_initcall(arm64_dma_init); > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > - > #ifdef CONFIG_IOMMU_DMA > #include <linux/dma-iommu.h> > #include <linux/platform_device.h> > diff --git a/arch/c6x/kernel/dma.c b/arch/c6x/kernel/dma.c > index 9fff8be75f58..31e1a9ec3a9c 100644 > --- a/arch/c6x/kernel/dma.c > +++ b/arch/c6x/kernel/dma.c > @@ -136,14 +136,3 @@ const struct dma_map_ops c6x_dma_ops = { > .sync_sg_for_cpu = c6x_dma_sync_sg_for_cpu, > }; > EXPORT_SYMBOL(c6x_dma_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/ia64/kernel/dma-mapping.c b/arch/ia64/kernel/dma-mapping.c > index f2d57e66fd86..7a471d8d67d4 100644 > --- a/arch/ia64/kernel/dma-mapping.c > +++ b/arch/ia64/kernel/dma-mapping.c > @@ -9,16 +9,6 @@ int iommu_detected __read_mostly; > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > - > const struct dma_map_ops *dma_get_ops(struct device *dev) > { > return dma_ops; > diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c > index c91e8cef98dd..3145e7dc8ab1 100644 > --- a/arch/microblaze/kernel/dma.c > +++ b/arch/microblaze/kernel/dma.c > @@ -184,14 +184,3 @@ const struct dma_map_ops dma_nommu_ops = { > .sync_sg_for_device = dma_nommu_sync_sg_for_device, > }; > EXPORT_SYMBOL(dma_nommu_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c > index dcafa43613b6..f9fef0028ca2 100644 > --- a/arch/mips/mm/dma-default.c > +++ b/arch/mips/mm/dma-default.c > @@ -402,13 +402,3 @@ static const struct dma_map_ops mips_default_dma_map_ops = { > > const struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops; > EXPORT_SYMBOL(mips_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init mips_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(mips_dma_init); > diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c > index a945f00011b4..ec7fd45704d2 100644 > --- a/arch/openrisc/kernel/dma.c > +++ b/arch/openrisc/kernel/dma.c > @@ -247,14 +247,3 @@ const struct dma_map_ops or1k_dma_map_ops = { > .sync_single_for_device = or1k_sync_single_for_device, > }; > EXPORT_SYMBOL(or1k_dma_map_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c > index da20569de9d4..138157deeadf 100644 > --- a/arch/powerpc/kernel/dma.c > +++ b/arch/powerpc/kernel/dma.c > @@ -309,8 +309,6 @@ int dma_set_coherent_mask(struct device *dev, u64 mask) > } > EXPORT_SYMBOL(dma_set_coherent_mask); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > int dma_set_mask(struct device *dev, u64 dma_mask) > { > if (ppc_md.dma_set_mask) > @@ -361,7 +359,6 @@ EXPORT_SYMBOL_GPL(dma_get_required_mask); > > static int __init dma_init(void) > { > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > #endif > diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c > index 2d15d84c20ed..5dee7a922589 100644 > --- a/arch/s390/pci/pci_dma.c > +++ b/arch/s390/pci/pci_dma.c > @@ -668,15 +668,6 @@ void zpci_dma_exit(void) > kmem_cache_destroy(dma_region_table_cache); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > const struct dma_map_ops s390_pci_dma_ops = { > .alloc = s390_dma_alloc, > .free = s390_dma_free, > diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c > index 8ce98691d822..35ea3099a3b6 100644 > --- a/arch/sh/mm/consistent.c > +++ b/arch/sh/mm/consistent.c > @@ -20,18 +20,9 @@ > #include <asm/cacheflush.h> > #include <asm/addrspace.h> > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > - > void *dma_generic_alloc_coherent(struct device *dev, size_t size, > dma_addr_t *dma_handle, gfp_t gfp, > unsigned long attrs) > diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile > index 76cb57750dda..84cfc5a428d6 100644 > --- a/arch/sparc/kernel/Makefile > +++ b/arch/sparc/kernel/Makefile > @@ -74,8 +74,6 @@ obj-$(CONFIG_SPARC64) += pcr.o > obj-$(CONFIG_SPARC64) += nmi.o > obj-$(CONFIG_SPARC64_SMP) += cpumap.o > > -obj-y += dma.o > - > obj-$(CONFIG_PCIC_PCI) += pcic.o > obj-$(CONFIG_LEON_PCI) += leon_pci.o > obj-$(CONFIG_SPARC_GRPCI2)+= leon_pci_grpci2.o > diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c > deleted file mode 100644 > index f73e7597c971..000000000000 > --- a/arch/sparc/kernel/dma.c > +++ /dev/null > @@ -1,13 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/kernel.h> > -#include <linux/dma-mapping.h> > -#include <linux/dma-debug.h> > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 15) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c > index 77625b60a510..bcbaa2e8031e 100644 > --- a/arch/x86/kernel/pci-dma.c > +++ b/arch/x86/kernel/pci-dma.c > @@ -55,9 +55,6 @@ struct device x86_dma_fallback_dev = { > }; > EXPORT_SYMBOL(x86_dma_fallback_dev); > > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES 65536 > - > void __init pci_iommu_alloc(void) > { > struct iommu_table_entry *p; > @@ -189,7 +186,6 @@ EXPORT_SYMBOL(arch_dma_supported); > static int __init pci_iommu_init(void) > { > struct iommu_table_entry *p; > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c > index 732631ce250f..392b4a80ebc2 100644 > --- a/arch/xtensa/kernel/pci-dma.c > +++ b/arch/xtensa/kernel/pci-dma.c > @@ -261,12 +261,3 @@ const struct dma_map_ops xtensa_dma_map_ops = { > .mapping_error = xtensa_dma_mapping_error, > }; > EXPORT_SYMBOL(xtensa_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init xtensa_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(xtensa_dma_init); > diff --git a/include/linux/dma-debug.h b/include/linux/dma-debug.h > index c7d844f09c3a..a785f2507159 100644 > --- a/include/linux/dma-debug.h > +++ b/include/linux/dma-debug.h > @@ -30,8 +30,6 @@ struct bus_type; > > extern void dma_debug_add_bus(struct bus_type *bus); > > -extern void dma_debug_init(u32 num_entries); > - > extern int dma_debug_resize_entries(u32 num_entries); > > extern void debug_dma_map_page(struct device *dev, struct page *page, > @@ -100,10 +98,6 @@ static inline void dma_debug_add_bus(struct bus_type *bus) > { > } > > -static inline void dma_debug_init(u32 num_entries) > -{ > -} > - > static inline int dma_debug_resize_entries(u32 num_entries) > { > return 0; > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 7f5cdc1e6b29..712a897174e4 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -41,6 +41,11 @@ > #define HASH_FN_SHIFT 13 > #define HASH_FN_MASK (HASH_SIZE - 1) > > +/* allow architectures to override this if absolutely required */ > +#ifndef PREALLOC_DMA_DEBUG_ENTRIES > +#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > +#endif > + > enum { > dma_debug_single, > dma_debug_page, > @@ -1004,18 +1009,16 @@ void dma_debug_add_bus(struct bus_type *bus) > bus_register_notifier(bus, nb); > } > > -/* > - * Let the architectures decide how many entries should be preallocated. > - */ > -void dma_debug_init(u32 num_entries) > +static int dma_debug_init(void) > { > + u32 num_entries; > int i; > > /* Do not use dma_debug_initialized here, since we really want to be > * called to set dma_debug_initialized > */ > if (global_disable) > - return; > + return 0; > > for (i = 0; i < HASH_SIZE; ++i) { > INIT_LIST_HEAD(&dma_entry_hash[i].list); > @@ -1026,17 +1029,19 @@ void dma_debug_init(u32 num_entries) > pr_err("DMA-API: error creating debugfs entries - disabling\n"); > global_disable = true; > > - return; > + return 0; > } > > if (req_entries) > num_entries = req_entries; > + else > + num_entries = PREALLOC_DMA_DEBUG_ENTRIES; > > if (prealloc_memory(num_entries) != 0) { > pr_err("DMA-API: debugging out of memory error - disabled\n"); > global_disable = true; > > - return; > + return 0; > } > > nr_total_entries = num_free_entries; > @@ -1044,7 +1049,9 @@ void dma_debug_init(u32 num_entries) > dma_debug_initialized = true; > > pr_info("DMA-API: debugging enabled by kernel config\n"); > + return 0; > } > +core_initcall(dma_debug_init); > > static __init int dma_debug_cmdline(char *str) > { Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] dma-debug: move initialization to common code 2018-05-08 10:22 ` Marek Szyprowski @ 2018-05-08 10:22 ` Marek Szyprowski 0 siblings, 0 replies; 24+ messages in thread From: Marek Szyprowski @ 2018-05-08 10:22 UTC (permalink / raw) To: Christoph Hellwig, iommu Cc: linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel Hi Christoph, On 2018-04-24 16:02, Christoph Hellwig wrote: > Most mainstream architectures are using 65536 entries, so lets stick to > that. If someone is really desperate to override it that can still be > done through <asm/dma-mapping.h>, but I'd rather see a really good > rationale for that. > > dma_debug_init is now called as a core_initcall, which for many > architectures means much earlier, and provides dma-debug functionality > earlier in the boot process. This should be safe as it only relies > on the memory allocator already being available. > > Signed-off-by: Christoph Hellwig <hch@lst.de> Nice! Unification of this is definitely needed and solves the issues reported some time ago: https://patchwork.kernel.org/patch/9429637/ (arm) https://patchwork.kernel.org/patch/9431161/ (arm64, rejected) Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- > arch/arm/mm/dma-mapping-nommu.c | 9 --------- > arch/arm/mm/dma-mapping.c | 9 --------- > arch/arm64/mm/dma-mapping.c | 10 ---------- > arch/c6x/kernel/dma.c | 11 ----------- > arch/ia64/kernel/dma-mapping.c | 10 ---------- > arch/microblaze/kernel/dma.c | 11 ----------- > arch/mips/mm/dma-default.c | 10 ---------- > arch/openrisc/kernel/dma.c | 11 ----------- > arch/powerpc/kernel/dma.c | 3 --- > arch/s390/pci/pci_dma.c | 9 --------- > arch/sh/mm/consistent.c | 9 --------- > arch/sparc/kernel/Makefile | 2 -- > arch/sparc/kernel/dma.c | 13 ------------- > arch/x86/kernel/pci-dma.c | 4 ---- > arch/xtensa/kernel/pci-dma.c | 9 --------- > include/linux/dma-debug.h | 6 ------ > lib/dma-debug.c | 21 ++++++++++++++------- > 17 files changed, 14 insertions(+), 143 deletions(-) > delete mode 100644 arch/sparc/kernel/dma.c > > diff --git a/arch/arm/mm/dma-mapping-nommu.c b/arch/arm/mm/dma-mapping-nommu.c > index 619f24a42d09..f448a0663b10 100644 > --- a/arch/arm/mm/dma-mapping-nommu.c > +++ b/arch/arm/mm/dma-mapping-nommu.c > @@ -241,12 +241,3 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > void arch_teardown_dma_ops(struct device *dev) > { > } > - > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c > index 8c398fedbbb6..c26bf83f44ca 100644 > --- a/arch/arm/mm/dma-mapping.c > +++ b/arch/arm/mm/dma-mapping.c > @@ -1165,15 +1165,6 @@ int arm_dma_supported(struct device *dev, u64 mask) > return __dma_supported(dev, mask, false); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -core_initcall(dma_debug_do_init); > - > #ifdef CONFIG_ARM_DMA_USE_IOMMU > > static int __dma_info_to_prot(enum dma_data_direction dir, unsigned long attrs) > diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c > index a96ec0181818..db01f2709842 100644 > --- a/arch/arm64/mm/dma-mapping.c > +++ b/arch/arm64/mm/dma-mapping.c > @@ -508,16 +508,6 @@ static int __init arm64_dma_init(void) > } > arch_initcall(arm64_dma_init); > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > - > #ifdef CONFIG_IOMMU_DMA > #include <linux/dma-iommu.h> > #include <linux/platform_device.h> > diff --git a/arch/c6x/kernel/dma.c b/arch/c6x/kernel/dma.c > index 9fff8be75f58..31e1a9ec3a9c 100644 > --- a/arch/c6x/kernel/dma.c > +++ b/arch/c6x/kernel/dma.c > @@ -136,14 +136,3 @@ const struct dma_map_ops c6x_dma_ops = { > .sync_sg_for_cpu = c6x_dma_sync_sg_for_cpu, > }; > EXPORT_SYMBOL(c6x_dma_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/ia64/kernel/dma-mapping.c b/arch/ia64/kernel/dma-mapping.c > index f2d57e66fd86..7a471d8d67d4 100644 > --- a/arch/ia64/kernel/dma-mapping.c > +++ b/arch/ia64/kernel/dma-mapping.c > @@ -9,16 +9,6 @@ int iommu_detected __read_mostly; > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > - > const struct dma_map_ops *dma_get_ops(struct device *dev) > { > return dma_ops; > diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c > index c91e8cef98dd..3145e7dc8ab1 100644 > --- a/arch/microblaze/kernel/dma.c > +++ b/arch/microblaze/kernel/dma.c > @@ -184,14 +184,3 @@ const struct dma_map_ops dma_nommu_ops = { > .sync_sg_for_device = dma_nommu_sync_sg_for_device, > }; > EXPORT_SYMBOL(dma_nommu_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c > index dcafa43613b6..f9fef0028ca2 100644 > --- a/arch/mips/mm/dma-default.c > +++ b/arch/mips/mm/dma-default.c > @@ -402,13 +402,3 @@ static const struct dma_map_ops mips_default_dma_map_ops = { > > const struct dma_map_ops *mips_dma_map_ops = &mips_default_dma_map_ops; > EXPORT_SYMBOL(mips_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init mips_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(mips_dma_init); > diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c > index a945f00011b4..ec7fd45704d2 100644 > --- a/arch/openrisc/kernel/dma.c > +++ b/arch/openrisc/kernel/dma.c > @@ -247,14 +247,3 @@ const struct dma_map_ops or1k_dma_map_ops = { > .sync_single_for_device = or1k_sync_single_for_device, > }; > EXPORT_SYMBOL(or1k_dma_map_ops); > - > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c > index da20569de9d4..138157deeadf 100644 > --- a/arch/powerpc/kernel/dma.c > +++ b/arch/powerpc/kernel/dma.c > @@ -309,8 +309,6 @@ int dma_set_coherent_mask(struct device *dev, u64 mask) > } > EXPORT_SYMBOL(dma_set_coherent_mask); > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > int dma_set_mask(struct device *dev, u64 dma_mask) > { > if (ppc_md.dma_set_mask) > @@ -361,7 +359,6 @@ EXPORT_SYMBOL_GPL(dma_get_required_mask); > > static int __init dma_init(void) > { > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > #endif > diff --git a/arch/s390/pci/pci_dma.c b/arch/s390/pci/pci_dma.c > index 2d15d84c20ed..5dee7a922589 100644 > --- a/arch/s390/pci/pci_dma.c > +++ b/arch/s390/pci/pci_dma.c > @@ -668,15 +668,6 @@ void zpci_dma_exit(void) > kmem_cache_destroy(dma_region_table_cache); > } > > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init dma_debug_do_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_debug_do_init); > - > const struct dma_map_ops s390_pci_dma_ops = { > .alloc = s390_dma_alloc, > .free = s390_dma_free, > diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c > index 8ce98691d822..35ea3099a3b6 100644 > --- a/arch/sh/mm/consistent.c > +++ b/arch/sh/mm/consistent.c > @@ -20,18 +20,9 @@ > #include <asm/cacheflush.h> > #include <asm/addrspace.h> > > -#define PREALLOC_DMA_DEBUG_ENTRIES 4096 > - > const struct dma_map_ops *dma_ops; > EXPORT_SYMBOL(dma_ops); > > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > - > void *dma_generic_alloc_coherent(struct device *dev, size_t size, > dma_addr_t *dma_handle, gfp_t gfp, > unsigned long attrs) > diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile > index 76cb57750dda..84cfc5a428d6 100644 > --- a/arch/sparc/kernel/Makefile > +++ b/arch/sparc/kernel/Makefile > @@ -74,8 +74,6 @@ obj-$(CONFIG_SPARC64) += pcr.o > obj-$(CONFIG_SPARC64) += nmi.o > obj-$(CONFIG_SPARC64_SMP) += cpumap.o > > -obj-y += dma.o > - > obj-$(CONFIG_PCIC_PCI) += pcic.o > obj-$(CONFIG_LEON_PCI) += leon_pci.o > obj-$(CONFIG_SPARC_GRPCI2)+= leon_pci_grpci2.o > diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c > deleted file mode 100644 > index f73e7597c971..000000000000 > --- a/arch/sparc/kernel/dma.c > +++ /dev/null > @@ -1,13 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0 > -#include <linux/kernel.h> > -#include <linux/dma-mapping.h> > -#include <linux/dma-debug.h> > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 15) > - > -static int __init dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(dma_init); > diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c > index 77625b60a510..bcbaa2e8031e 100644 > --- a/arch/x86/kernel/pci-dma.c > +++ b/arch/x86/kernel/pci-dma.c > @@ -55,9 +55,6 @@ struct device x86_dma_fallback_dev = { > }; > EXPORT_SYMBOL(x86_dma_fallback_dev); > > -/* Number of entries preallocated for DMA-API debugging */ > -#define PREALLOC_DMA_DEBUG_ENTRIES 65536 > - > void __init pci_iommu_alloc(void) > { > struct iommu_table_entry *p; > @@ -189,7 +186,6 @@ EXPORT_SYMBOL(arch_dma_supported); > static int __init pci_iommu_init(void) > { > struct iommu_table_entry *p; > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > > #ifdef CONFIG_PCI > dma_debug_add_bus(&pci_bus_type); > diff --git a/arch/xtensa/kernel/pci-dma.c b/arch/xtensa/kernel/pci-dma.c > index 732631ce250f..392b4a80ebc2 100644 > --- a/arch/xtensa/kernel/pci-dma.c > +++ b/arch/xtensa/kernel/pci-dma.c > @@ -261,12 +261,3 @@ const struct dma_map_ops xtensa_dma_map_ops = { > .mapping_error = xtensa_dma_mapping_error, > }; > EXPORT_SYMBOL(xtensa_dma_map_ops); > - > -#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > - > -static int __init xtensa_dma_init(void) > -{ > - dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); > - return 0; > -} > -fs_initcall(xtensa_dma_init); > diff --git a/include/linux/dma-debug.h b/include/linux/dma-debug.h > index c7d844f09c3a..a785f2507159 100644 > --- a/include/linux/dma-debug.h > +++ b/include/linux/dma-debug.h > @@ -30,8 +30,6 @@ struct bus_type; > > extern void dma_debug_add_bus(struct bus_type *bus); > > -extern void dma_debug_init(u32 num_entries); > - > extern int dma_debug_resize_entries(u32 num_entries); > > extern void debug_dma_map_page(struct device *dev, struct page *page, > @@ -100,10 +98,6 @@ static inline void dma_debug_add_bus(struct bus_type *bus) > { > } > > -static inline void dma_debug_init(u32 num_entries) > -{ > -} > - > static inline int dma_debug_resize_entries(u32 num_entries) > { > return 0; > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 7f5cdc1e6b29..712a897174e4 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -41,6 +41,11 @@ > #define HASH_FN_SHIFT 13 > #define HASH_FN_MASK (HASH_SIZE - 1) > > +/* allow architectures to override this if absolutely required */ > +#ifndef PREALLOC_DMA_DEBUG_ENTRIES > +#define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) > +#endif > + > enum { > dma_debug_single, > dma_debug_page, > @@ -1004,18 +1009,16 @@ void dma_debug_add_bus(struct bus_type *bus) > bus_register_notifier(bus, nb); > } > > -/* > - * Let the architectures decide how many entries should be preallocated. > - */ > -void dma_debug_init(u32 num_entries) > +static int dma_debug_init(void) > { > + u32 num_entries; > int i; > > /* Do not use dma_debug_initialized here, since we really want to be > * called to set dma_debug_initialized > */ > if (global_disable) > - return; > + return 0; > > for (i = 0; i < HASH_SIZE; ++i) { > INIT_LIST_HEAD(&dma_entry_hash[i].list); > @@ -1026,17 +1029,19 @@ void dma_debug_init(u32 num_entries) > pr_err("DMA-API: error creating debugfs entries - disabling\n"); > global_disable = true; > > - return; > + return 0; > } > > if (req_entries) > num_entries = req_entries; > + else > + num_entries = PREALLOC_DMA_DEBUG_ENTRIES; > > if (prealloc_memory(num_entries) != 0) { > pr_err("DMA-API: debugging out of memory error - disabled\n"); > global_disable = true; > > - return; > + return 0; > } > > nr_total_entries = num_free_entries; > @@ -1044,7 +1049,9 @@ void dma_debug_init(u32 num_entries) > dma_debug_initialized = true; > > pr_info("DMA-API: debugging enabled by kernel config\n"); > + return 0; > } > +core_initcall(dma_debug_init); > > static __init int dma_debug_cmdline(char *str) > { Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings [not found] ` <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org> 2018-04-24 14:02 ` [PATCH 1/3] dma-debug: move initialization to common code Christoph Hellwig @ 2018-04-24 14:02 ` Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-4-hch-jcswGhMUV9g@public.gmane.org> 2018-04-27 15:53 ` [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG Christoph Hellwig 2018-05-07 10:29 ` dma-debug cleanups, including removing the arch hook Christoph Hellwig 3 siblings, 2 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, Vincent Chen, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Only used by the AMD GART driver, which must be built in. Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> --- lib/dma-debug.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/dma-debug.c b/lib/dma-debug.c index 075253cb613b..6a1ebaa83623 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -444,7 +444,6 @@ void debug_dma_dump_mappings(struct device *dev) spin_unlock_irqrestore(&bucket->lock, flags); } } -EXPORT_SYMBOL(debug_dma_dump_mappings); /* * For each mapping (initial cacheline in the case of @@ -753,7 +752,6 @@ int dma_debug_resize_entries(u32 num_entries) return ret; } -EXPORT_SYMBOL(dma_debug_resize_entries); /* * DMA-API debugging init code -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings 2018-04-24 14:02 ` [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings Christoph Hellwig @ 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-4-hch-jcswGhMUV9g@public.gmane.org> 1 sibling, 0 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-24 14:02 UTC (permalink / raw) To: iommu Cc: linux-arch, Michal Simek, Greentime Hu, Vincent Chen, linux-alpha, linux-snps-arc, linux-arm-kernel, linux-c6x-dev, linux-hexagon, linux-m68k, nios2-dev, openrisc, linux-parisc, linux-sh, sparclinux, linux-xtensa, linux-kernel Only used by the AMD GART driver, which must be built in. Signed-off-by: Christoph Hellwig <hch@lst.de> --- lib/dma-debug.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/dma-debug.c b/lib/dma-debug.c index 075253cb613b..6a1ebaa83623 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -444,7 +444,6 @@ void debug_dma_dump_mappings(struct device *dev) spin_unlock_irqrestore(&bucket->lock, flags); } } -EXPORT_SYMBOL(debug_dma_dump_mappings); /* * For each mapping (initial cacheline in the case of @@ -753,7 +752,6 @@ int dma_debug_resize_entries(u32 num_entries) return ret; } -EXPORT_SYMBOL(dma_debug_resize_entries); /* * DMA-API debugging init code -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
[parent not found: <20180424140235.9125-4-hch-jcswGhMUV9g@public.gmane.org>]
* Re: [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings [not found] ` <20180424140235.9125-4-hch-jcswGhMUV9g@public.gmane.org> @ 2018-05-08 10:05 ` Robin Murphy 2018-05-08 10:05 ` Robin Murphy 2018-05-08 10:45 ` Christoph Hellwig 0 siblings, 2 replies; 24+ messages in thread From: Robin Murphy @ 2018-05-08 10:05 UTC (permalink / raw) To: Christoph Hellwig, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, Vincent Chen, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On 24/04/18 15:02, Christoph Hellwig wrote: > Only used by the AMD GART driver, which must be built in. FWIW debug_dma_dump_mappings() is also called by the Intel VT-d driver, but the same reasoning still applies. This does rather beg the question of whether it's right to have bits of low-level dma-debug internals *only* called by a couple of IOMMU drivers, but that can wait for another day. Reviewed-by: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org> > Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> > --- > lib/dma-debug.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 075253cb613b..6a1ebaa83623 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -444,7 +444,6 @@ void debug_dma_dump_mappings(struct device *dev) > spin_unlock_irqrestore(&bucket->lock, flags); > } > } > -EXPORT_SYMBOL(debug_dma_dump_mappings); > > /* > * For each mapping (initial cacheline in the case of > @@ -753,7 +752,6 @@ int dma_debug_resize_entries(u32 num_entries) > > return ret; > } > -EXPORT_SYMBOL(dma_debug_resize_entries); > > /* > * DMA-API debugging init code > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings 2018-05-08 10:05 ` Robin Murphy @ 2018-05-08 10:05 ` Robin Murphy 2018-05-08 10:45 ` Christoph Hellwig 1 sibling, 0 replies; 24+ messages in thread From: Robin Murphy @ 2018-05-08 10:05 UTC (permalink / raw) To: Christoph Hellwig, iommu Cc: linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel On 24/04/18 15:02, Christoph Hellwig wrote: > Only used by the AMD GART driver, which must be built in. FWIW debug_dma_dump_mappings() is also called by the Intel VT-d driver, but the same reasoning still applies. This does rather beg the question of whether it's right to have bits of low-level dma-debug internals *only* called by a couple of IOMMU drivers, but that can wait for another day. Reviewed-by: Robin Murphy <robin.murphy@arm.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > lib/dma-debug.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/lib/dma-debug.c b/lib/dma-debug.c > index 075253cb613b..6a1ebaa83623 100644 > --- a/lib/dma-debug.c > +++ b/lib/dma-debug.c > @@ -444,7 +444,6 @@ void debug_dma_dump_mappings(struct device *dev) > spin_unlock_irqrestore(&bucket->lock, flags); > } > } > -EXPORT_SYMBOL(debug_dma_dump_mappings); > > /* > * For each mapping (initial cacheline in the case of > @@ -753,7 +752,6 @@ int dma_debug_resize_entries(u32 num_entries) > > return ret; > } > -EXPORT_SYMBOL(dma_debug_resize_entries); > > /* > * DMA-API debugging init code > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings 2018-05-08 10:05 ` Robin Murphy 2018-05-08 10:05 ` Robin Murphy @ 2018-05-08 10:45 ` Christoph Hellwig 2018-05-08 10:45 ` Christoph Hellwig 1 sibling, 1 reply; 24+ messages in thread From: Christoph Hellwig @ 2018-05-08 10:45 UTC (permalink / raw) To: Robin Murphy Cc: Christoph Hellwig, iommu, linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel On Tue, May 08, 2018 at 11:05:20AM +0100, Robin Murphy wrote: > On 24/04/18 15:02, Christoph Hellwig wrote: >> Only used by the AMD GART driver, which must be built in. > > FWIW debug_dma_dump_mappings() is also called by the Intel VT-d driver, but > the same reasoning still applies. I'll update the changelog. > This does rather beg the question of > whether it's right to have bits of low-level dma-debug internals *only* > called by a couple of IOMMU drivers, but that can wait for another day. My gut feeling is that it is wrong, but I didn't have time to look into the details and history of how this happened. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings 2018-05-08 10:45 ` Christoph Hellwig @ 2018-05-08 10:45 ` Christoph Hellwig 0 siblings, 0 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-05-08 10:45 UTC (permalink / raw) To: Robin Murphy Cc: Christoph Hellwig, iommu, linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel On Tue, May 08, 2018 at 11:05:20AM +0100, Robin Murphy wrote: > On 24/04/18 15:02, Christoph Hellwig wrote: >> Only used by the AMD GART driver, which must be built in. > > FWIW debug_dma_dump_mappings() is also called by the Intel VT-d driver, but > the same reasoning still applies. I'll update the changelog. > This does rather beg the question of > whether it's right to have bits of low-level dma-debug internals *only* > called by a couple of IOMMU drivers, but that can wait for another day. My gut feeling is that it is wrong, but I didn't have time to look into the details and history of how this happened. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG [not found] ` <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org> 2018-04-24 14:02 ` [PATCH 1/3] dma-debug: move initialization to common code Christoph Hellwig 2018-04-24 14:02 ` [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings Christoph Hellwig @ 2018-04-27 15:53 ` Christoph Hellwig 2018-04-27 15:53 ` Christoph Hellwig [not found] ` <20180427155342.GA9232-jcswGhMUV9g@public.gmane.org> 2018-05-07 10:29 ` dma-debug cleanups, including removing the arch hook Christoph Hellwig 3 siblings, 2 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-27 15:53 UTC (permalink / raw) To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, Vincent Chen, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r There is no arch specific code required for dma-debug, so there is no need to opt into the support either. Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> --- .../io/dma-api-debug/arch-support.txt | 31 ------------------- arch/Kconfig | 3 -- arch/arm/Kconfig | 1 - arch/arm64/Kconfig | 1 - arch/c6x/Kconfig | 1 - arch/ia64/Kconfig | 1 - arch/microblaze/Kconfig | 1 - arch/mips/Kconfig | 1 - arch/powerpc/Kconfig | 1 - arch/riscv/Kconfig | 1 - arch/s390/Kconfig | 1 - arch/sh/Kconfig | 1 - arch/sparc/Kconfig | 1 - arch/x86/Kconfig | 1 - arch/xtensa/Kconfig | 1 - lib/Kconfig.debug | 1 - 16 files changed, 48 deletions(-) delete mode 100644 Documentation/features/io/dma-api-debug/arch-support.txt diff --git a/Documentation/features/io/dma-api-debug/arch-support.txt b/Documentation/features/io/dma-api-debug/arch-support.txt deleted file mode 100644 index e438ed675623..000000000000 --- a/Documentation/features/io/dma-api-debug/arch-support.txt +++ /dev/null @@ -1,31 +0,0 @@ -# -# Feature name: dma-api-debug -# Kconfig: HAVE_DMA_API_DEBUG -# description: arch supports DMA debug facilities -# - ----------------------- - | arch |status| - ----------------------- - | alpha: | TODO | - | arc: | TODO | - | arm: | ok | - | arm64: | ok | - | c6x: | ok | - | h8300: | TODO | - | hexagon: | TODO | - | ia64: | ok | - | m68k: | TODO | - | microblaze: | ok | - | mips: | ok | - | nios2: | TODO | - | openrisc: | TODO | - | parisc: | TODO | - | powerpc: | ok | - | s390: | ok | - | sh: | ok | - | sparc: | ok | - | um: | TODO | - | unicore32: | TODO | - | x86: | ok | - | xtensa: | ok | - ----------------------- diff --git a/arch/Kconfig b/arch/Kconfig index 8e0d665c8d53..f07a1a99e5db 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -278,9 +278,6 @@ config HAVE_CLK The <linux/clk.h> calls support software clock gating and thus are a key power management tool on many systems. -config HAVE_DMA_API_DEBUG - bool - config HAVE_HW_BREAKPOINT bool depends on PERF_EVENTS diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 676977bdfe33..c43f5bb55ac8 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -60,7 +60,6 @@ config ARM select HAVE_CONTEXT_TRACKING select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS if MMU select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL) && !CPU_ENDIAN_BE32 && MMU select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index db51b6445744..b25ed7834f6c 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -105,7 +105,6 @@ config ARM64 select HAVE_CONTEXT_TRACKING select HAVE_DEBUG_BUGVERBOSE select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_DYNAMIC_FTRACE select HAVE_EFFICIENT_UNALIGNED_ACCESS diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig index c6b4dd1418b4..8c088b96e372 100644 --- a/arch/c6x/Kconfig +++ b/arch/c6x/Kconfig @@ -10,7 +10,6 @@ config C6X select GENERIC_ATOMIC64 select GENERIC_IRQ_SHOW select HAVE_ARCH_TRACEHOOK - select HAVE_DMA_API_DEBUG select HAVE_MEMBLOCK select SPARSE_IRQ select IRQ_DOMAIN diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 9485b5490eca..2067289fad4a 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -29,7 +29,6 @@ config IA64 select HAVE_FUNCTION_TRACER select TTY select HAVE_ARCH_TRACEHOOK - select HAVE_DMA_API_DEBUG select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP select HAVE_VIRT_CPU_ACCOUNTING diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 3817a3e2146c..d14782100088 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -19,7 +19,6 @@ config MICROBLAZE select HAVE_ARCH_HASH select HAVE_ARCH_KGDB select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DYNAMIC_FTRACE select HAVE_FTRACE_MCOUNT_RECORD select HAVE_FUNCTION_GRAPH_TRACER diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 0f619b8c0e9e..2dcdc13cd65d 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -42,7 +42,6 @@ config MIPS select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_STACKOVERFLOW - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_DYNAMIC_FTRACE select HAVE_EXIT_THREAD diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 1887f8f86a77..268fd46fc3c7 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -181,7 +181,6 @@ config PPC select HAVE_CONTEXT_TRACKING if PPC64 select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_STACKOVERFLOW - select HAVE_DMA_API_DEBUG select HAVE_DYNAMIC_FTRACE select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL select HAVE_EBPF_JIT if PPC64 diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 17212ba54ee3..95e2da34aaad 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -23,7 +23,6 @@ config RISCV select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_GENERIC_DMA_COHERENT select IRQ_DOMAIN diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index b794a2ab6d15..6a64287ec1da 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -130,7 +130,6 @@ config S390 select HAVE_CMPXCHG_LOCAL select HAVE_COPY_THREAD_TLS select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select DMA_DIRECT_OPS select HAVE_DYNAMIC_FTRACE diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 9417f70e008e..7d521926041e 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -13,7 +13,6 @@ config SUPERH select HAVE_OPROFILE select HAVE_GENERIC_DMA_COHERENT select HAVE_ARCH_TRACEHOOK - select HAVE_DMA_API_DEBUG select HAVE_PERF_EVENTS select HAVE_DEBUG_BUGVERBOSE select ARCH_HAVE_CUSTOM_GPIO_H diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index c1cfc17eb504..435dbc033afe 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -25,7 +25,6 @@ config SPARC select RTC_CLASS select RTC_DRV_M48T59 select RTC_SYSTOHC - select HAVE_DMA_API_DEBUG select HAVE_ARCH_JUMP_LABEL if SPARC64 select GENERIC_IRQ_SHOW select ARCH_WANT_IPC_PARSE_VERSION diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index aad35c568681..3eeca48a146b 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -135,7 +135,6 @@ config X86 select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_STACKOVERFLOW - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_DYNAMIC_FTRACE select HAVE_DYNAMIC_FTRACE_WITH_REGS diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index c921e8bccdc8..17df332269b2 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -19,7 +19,6 @@ config XTENSA select HAVE_ARCH_KASAN if MMU select HAVE_CC_STACKPROTECTOR select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_EXIT_THREAD select HAVE_FUNCTION_TRACER diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 685ed2dd4384..d5175eb7b917 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1634,7 +1634,6 @@ config PROVIDE_OHCI1394_DMA_INIT config DMA_API_DEBUG bool "Enable debugging of DMA-API usage" - depends on HAVE_DMA_API_DEBUG select NEED_DMA_MAP_STATE help Enable this option to debug the use of the DMA API by device drivers. -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG 2018-04-27 15:53 ` [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG Christoph Hellwig @ 2018-04-27 15:53 ` Christoph Hellwig [not found] ` <20180427155342.GA9232-jcswGhMUV9g@public.gmane.org> 1 sibling, 0 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-04-27 15:53 UTC (permalink / raw) To: iommu Cc: linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel There is no arch specific code required for dma-debug, so there is no need to opt into the support either. Signed-off-by: Christoph Hellwig <hch@lst.de> --- .../io/dma-api-debug/arch-support.txt | 31 ------------------- arch/Kconfig | 3 -- arch/arm/Kconfig | 1 - arch/arm64/Kconfig | 1 - arch/c6x/Kconfig | 1 - arch/ia64/Kconfig | 1 - arch/microblaze/Kconfig | 1 - arch/mips/Kconfig | 1 - arch/powerpc/Kconfig | 1 - arch/riscv/Kconfig | 1 - arch/s390/Kconfig | 1 - arch/sh/Kconfig | 1 - arch/sparc/Kconfig | 1 - arch/x86/Kconfig | 1 - arch/xtensa/Kconfig | 1 - lib/Kconfig.debug | 1 - 16 files changed, 48 deletions(-) delete mode 100644 Documentation/features/io/dma-api-debug/arch-support.txt diff --git a/Documentation/features/io/dma-api-debug/arch-support.txt b/Documentation/features/io/dma-api-debug/arch-support.txt deleted file mode 100644 index e438ed675623..000000000000 --- a/Documentation/features/io/dma-api-debug/arch-support.txt +++ /dev/null @@ -1,31 +0,0 @@ -# -# Feature name: dma-api-debug -# Kconfig: HAVE_DMA_API_DEBUG -# description: arch supports DMA debug facilities -# - ----------------------- - | arch |status| - ----------------------- - | alpha: | TODO | - | arc: | TODO | - | arm: | ok | - | arm64: | ok | - | c6x: | ok | - | h8300: | TODO | - | hexagon: | TODO | - | ia64: | ok | - | m68k: | TODO | - | microblaze: | ok | - | mips: | ok | - | nios2: | TODO | - | openrisc: | TODO | - | parisc: | TODO | - | powerpc: | ok | - | s390: | ok | - | sh: | ok | - | sparc: | ok | - | um: | TODO | - | unicore32: | TODO | - | x86: | ok | - | xtensa: | ok | - ----------------------- diff --git a/arch/Kconfig b/arch/Kconfig index 8e0d665c8d53..f07a1a99e5db 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -278,9 +278,6 @@ config HAVE_CLK The <linux/clk.h> calls support software clock gating and thus are a key power management tool on many systems. -config HAVE_DMA_API_DEBUG - bool - config HAVE_HW_BREAKPOINT bool depends on PERF_EVENTS diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 676977bdfe33..c43f5bb55ac8 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -60,7 +60,6 @@ config ARM select HAVE_CONTEXT_TRACKING select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS if MMU select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL) && !CPU_ENDIAN_BE32 && MMU select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index db51b6445744..b25ed7834f6c 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -105,7 +105,6 @@ config ARM64 select HAVE_CONTEXT_TRACKING select HAVE_DEBUG_BUGVERBOSE select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_DYNAMIC_FTRACE select HAVE_EFFICIENT_UNALIGNED_ACCESS diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig index c6b4dd1418b4..8c088b96e372 100644 --- a/arch/c6x/Kconfig +++ b/arch/c6x/Kconfig @@ -10,7 +10,6 @@ config C6X select GENERIC_ATOMIC64 select GENERIC_IRQ_SHOW select HAVE_ARCH_TRACEHOOK - select HAVE_DMA_API_DEBUG select HAVE_MEMBLOCK select SPARSE_IRQ select IRQ_DOMAIN diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 9485b5490eca..2067289fad4a 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -29,7 +29,6 @@ config IA64 select HAVE_FUNCTION_TRACER select TTY select HAVE_ARCH_TRACEHOOK - select HAVE_DMA_API_DEBUG select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP select HAVE_VIRT_CPU_ACCOUNTING diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 3817a3e2146c..d14782100088 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -19,7 +19,6 @@ config MICROBLAZE select HAVE_ARCH_HASH select HAVE_ARCH_KGDB select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DYNAMIC_FTRACE select HAVE_FTRACE_MCOUNT_RECORD select HAVE_FUNCTION_GRAPH_TRACER diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 0f619b8c0e9e..2dcdc13cd65d 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -42,7 +42,6 @@ config MIPS select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_STACKOVERFLOW - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_DYNAMIC_FTRACE select HAVE_EXIT_THREAD diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 1887f8f86a77..268fd46fc3c7 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -181,7 +181,6 @@ config PPC select HAVE_CONTEXT_TRACKING if PPC64 select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_STACKOVERFLOW - select HAVE_DMA_API_DEBUG select HAVE_DYNAMIC_FTRACE select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL select HAVE_EBPF_JIT if PPC64 diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 17212ba54ee3..95e2da34aaad 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -23,7 +23,6 @@ config RISCV select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_GENERIC_DMA_COHERENT select IRQ_DOMAIN diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index b794a2ab6d15..6a64287ec1da 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -130,7 +130,6 @@ config S390 select HAVE_CMPXCHG_LOCAL select HAVE_COPY_THREAD_TLS select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select DMA_DIRECT_OPS select HAVE_DYNAMIC_FTRACE diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 9417f70e008e..7d521926041e 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -13,7 +13,6 @@ config SUPERH select HAVE_OPROFILE select HAVE_GENERIC_DMA_COHERENT select HAVE_ARCH_TRACEHOOK - select HAVE_DMA_API_DEBUG select HAVE_PERF_EVENTS select HAVE_DEBUG_BUGVERBOSE select ARCH_HAVE_CUSTOM_GPIO_H diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index c1cfc17eb504..435dbc033afe 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -25,7 +25,6 @@ config SPARC select RTC_CLASS select RTC_DRV_M48T59 select RTC_SYSTOHC - select HAVE_DMA_API_DEBUG select HAVE_ARCH_JUMP_LABEL if SPARC64 select GENERIC_IRQ_SHOW select ARCH_WANT_IPC_PARSE_VERSION diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index aad35c568681..3eeca48a146b 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -135,7 +135,6 @@ config X86 select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_STACKOVERFLOW - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_DYNAMIC_FTRACE select HAVE_DYNAMIC_FTRACE_WITH_REGS diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index c921e8bccdc8..17df332269b2 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -19,7 +19,6 @@ config XTENSA select HAVE_ARCH_KASAN if MMU select HAVE_CC_STACKPROTECTOR select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG select HAVE_DMA_CONTIGUOUS select HAVE_EXIT_THREAD select HAVE_FUNCTION_TRACER diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 685ed2dd4384..d5175eb7b917 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1634,7 +1634,6 @@ config PROVIDE_OHCI1394_DMA_INIT config DMA_API_DEBUG bool "Enable debugging of DMA-API usage" - depends on HAVE_DMA_API_DEBUG select NEED_DMA_MAP_STATE help Enable this option to debug the use of the DMA API by device drivers. -- 2.17.0 ^ permalink raw reply related [flat|nested] 24+ messages in thread
[parent not found: <20180427155342.GA9232-jcswGhMUV9g@public.gmane.org>]
* Re: [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG [not found] ` <20180427155342.GA9232-jcswGhMUV9g@public.gmane.org> @ 2018-05-08 9:54 ` Robin Murphy 2018-05-08 9:54 ` Robin Murphy 0 siblings, 1 reply; 24+ messages in thread From: Robin Murphy @ 2018-05-08 9:54 UTC (permalink / raw) To: Christoph Hellwig, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, Vincent Chen, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On 27/04/18 16:53, Christoph Hellwig wrote: > There is no arch specific code required for dma-debug, so there is no > need to opt into the support either. Makes sense, and a purely negative diffstat is always pleasing :) Reviewed-by: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org> > Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org> > --- > .../io/dma-api-debug/arch-support.txt | 31 ------------------- > arch/Kconfig | 3 -- > arch/arm/Kconfig | 1 - > arch/arm64/Kconfig | 1 - > arch/c6x/Kconfig | 1 - > arch/ia64/Kconfig | 1 - > arch/microblaze/Kconfig | 1 - > arch/mips/Kconfig | 1 - > arch/powerpc/Kconfig | 1 - > arch/riscv/Kconfig | 1 - > arch/s390/Kconfig | 1 - > arch/sh/Kconfig | 1 - > arch/sparc/Kconfig | 1 - > arch/x86/Kconfig | 1 - > arch/xtensa/Kconfig | 1 - > lib/Kconfig.debug | 1 - > 16 files changed, 48 deletions(-) > delete mode 100644 Documentation/features/io/dma-api-debug/arch-support.txt > > diff --git a/Documentation/features/io/dma-api-debug/arch-support.txt b/Documentation/features/io/dma-api-debug/arch-support.txt > deleted file mode 100644 > index e438ed675623..000000000000 > --- a/Documentation/features/io/dma-api-debug/arch-support.txt > +++ /dev/null > @@ -1,31 +0,0 @@ > -# > -# Feature name: dma-api-debug > -# Kconfig: HAVE_DMA_API_DEBUG > -# description: arch supports DMA debug facilities > -# > - ----------------------- > - | arch |status| > - ----------------------- > - | alpha: | TODO | > - | arc: | TODO | > - | arm: | ok | > - | arm64: | ok | > - | c6x: | ok | > - | h8300: | TODO | > - | hexagon: | TODO | > - | ia64: | ok | > - | m68k: | TODO | > - | microblaze: | ok | > - | mips: | ok | > - | nios2: | TODO | > - | openrisc: | TODO | > - | parisc: | TODO | > - | powerpc: | ok | > - | s390: | ok | > - | sh: | ok | > - | sparc: | ok | > - | um: | TODO | > - | unicore32: | TODO | > - | x86: | ok | > - | xtensa: | ok | > - ----------------------- > diff --git a/arch/Kconfig b/arch/Kconfig > index 8e0d665c8d53..f07a1a99e5db 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -278,9 +278,6 @@ config HAVE_CLK > The <linux/clk.h> calls support software clock gating and > thus are a key power management tool on many systems. > > -config HAVE_DMA_API_DEBUG > - bool > - > config HAVE_HW_BREAKPOINT > bool > depends on PERF_EVENTS > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index 676977bdfe33..c43f5bb55ac8 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -60,7 +60,6 @@ config ARM > select HAVE_CONTEXT_TRACKING > select HAVE_C_RECORDMCOUNT > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS if MMU > select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL) && !CPU_ENDIAN_BE32 && MMU > select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index db51b6445744..b25ed7834f6c 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -105,7 +105,6 @@ config ARM64 > select HAVE_CONTEXT_TRACKING > select HAVE_DEBUG_BUGVERBOSE > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_DYNAMIC_FTRACE > select HAVE_EFFICIENT_UNALIGNED_ACCESS > diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig > index c6b4dd1418b4..8c088b96e372 100644 > --- a/arch/c6x/Kconfig > +++ b/arch/c6x/Kconfig > @@ -10,7 +10,6 @@ config C6X > select GENERIC_ATOMIC64 > select GENERIC_IRQ_SHOW > select HAVE_ARCH_TRACEHOOK > - select HAVE_DMA_API_DEBUG > select HAVE_MEMBLOCK > select SPARSE_IRQ > select IRQ_DOMAIN > diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig > index 9485b5490eca..2067289fad4a 100644 > --- a/arch/ia64/Kconfig > +++ b/arch/ia64/Kconfig > @@ -29,7 +29,6 @@ config IA64 > select HAVE_FUNCTION_TRACER > select TTY > select HAVE_ARCH_TRACEHOOK > - select HAVE_DMA_API_DEBUG > select HAVE_MEMBLOCK > select HAVE_MEMBLOCK_NODE_MAP > select HAVE_VIRT_CPU_ACCOUNTING > diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig > index 3817a3e2146c..d14782100088 100644 > --- a/arch/microblaze/Kconfig > +++ b/arch/microblaze/Kconfig > @@ -19,7 +19,6 @@ config MICROBLAZE > select HAVE_ARCH_HASH > select HAVE_ARCH_KGDB > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DYNAMIC_FTRACE > select HAVE_FTRACE_MCOUNT_RECORD > select HAVE_FUNCTION_GRAPH_TRACER > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig > index 0f619b8c0e9e..2dcdc13cd65d 100644 > --- a/arch/mips/Kconfig > +++ b/arch/mips/Kconfig > @@ -42,7 +42,6 @@ config MIPS > select HAVE_C_RECORDMCOUNT > select HAVE_DEBUG_KMEMLEAK > select HAVE_DEBUG_STACKOVERFLOW > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_DYNAMIC_FTRACE > select HAVE_EXIT_THREAD > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 1887f8f86a77..268fd46fc3c7 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -181,7 +181,6 @@ config PPC > select HAVE_CONTEXT_TRACKING if PPC64 > select HAVE_DEBUG_KMEMLEAK > select HAVE_DEBUG_STACKOVERFLOW > - select HAVE_DMA_API_DEBUG > select HAVE_DYNAMIC_FTRACE > select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL > select HAVE_EBPF_JIT if PPC64 > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > index 17212ba54ee3..95e2da34aaad 100644 > --- a/arch/riscv/Kconfig > +++ b/arch/riscv/Kconfig > @@ -23,7 +23,6 @@ config RISCV > select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A > select HAVE_MEMBLOCK > select HAVE_MEMBLOCK_NODE_MAP > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_GENERIC_DMA_COHERENT > select IRQ_DOMAIN > diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig > index b794a2ab6d15..6a64287ec1da 100644 > --- a/arch/s390/Kconfig > +++ b/arch/s390/Kconfig > @@ -130,7 +130,6 @@ config S390 > select HAVE_CMPXCHG_LOCAL > select HAVE_COPY_THREAD_TLS > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select DMA_DIRECT_OPS > select HAVE_DYNAMIC_FTRACE > diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig > index 9417f70e008e..7d521926041e 100644 > --- a/arch/sh/Kconfig > +++ b/arch/sh/Kconfig > @@ -13,7 +13,6 @@ config SUPERH > select HAVE_OPROFILE > select HAVE_GENERIC_DMA_COHERENT > select HAVE_ARCH_TRACEHOOK > - select HAVE_DMA_API_DEBUG > select HAVE_PERF_EVENTS > select HAVE_DEBUG_BUGVERBOSE > select ARCH_HAVE_CUSTOM_GPIO_H > diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig > index c1cfc17eb504..435dbc033afe 100644 > --- a/arch/sparc/Kconfig > +++ b/arch/sparc/Kconfig > @@ -25,7 +25,6 @@ config SPARC > select RTC_CLASS > select RTC_DRV_M48T59 > select RTC_SYSTOHC > - select HAVE_DMA_API_DEBUG > select HAVE_ARCH_JUMP_LABEL if SPARC64 > select GENERIC_IRQ_SHOW > select ARCH_WANT_IPC_PARSE_VERSION > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > index aad35c568681..3eeca48a146b 100644 > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > @@ -135,7 +135,6 @@ config X86 > select HAVE_C_RECORDMCOUNT > select HAVE_DEBUG_KMEMLEAK > select HAVE_DEBUG_STACKOVERFLOW > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_DYNAMIC_FTRACE > select HAVE_DYNAMIC_FTRACE_WITH_REGS > diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig > index c921e8bccdc8..17df332269b2 100644 > --- a/arch/xtensa/Kconfig > +++ b/arch/xtensa/Kconfig > @@ -19,7 +19,6 @@ config XTENSA > select HAVE_ARCH_KASAN if MMU > select HAVE_CC_STACKPROTECTOR > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_EXIT_THREAD > select HAVE_FUNCTION_TRACER > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index 685ed2dd4384..d5175eb7b917 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -1634,7 +1634,6 @@ config PROVIDE_OHCI1394_DMA_INIT > > config DMA_API_DEBUG > bool "Enable debugging of DMA-API usage" > - depends on HAVE_DMA_API_DEBUG > select NEED_DMA_MAP_STATE > help > Enable this option to debug the use of the DMA API by device drivers. > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG 2018-05-08 9:54 ` Robin Murphy @ 2018-05-08 9:54 ` Robin Murphy 0 siblings, 0 replies; 24+ messages in thread From: Robin Murphy @ 2018-05-08 9:54 UTC (permalink / raw) To: Christoph Hellwig, iommu Cc: linux-arch, linux-xtensa, Michal Simek, linux-snps-arc, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, Vincent Chen, linux-arm-kernel On 27/04/18 16:53, Christoph Hellwig wrote: > There is no arch specific code required for dma-debug, so there is no > need to opt into the support either. Makes sense, and a purely negative diffstat is always pleasing :) Reviewed-by: Robin Murphy <robin.murphy@arm.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > .../io/dma-api-debug/arch-support.txt | 31 ------------------- > arch/Kconfig | 3 -- > arch/arm/Kconfig | 1 - > arch/arm64/Kconfig | 1 - > arch/c6x/Kconfig | 1 - > arch/ia64/Kconfig | 1 - > arch/microblaze/Kconfig | 1 - > arch/mips/Kconfig | 1 - > arch/powerpc/Kconfig | 1 - > arch/riscv/Kconfig | 1 - > arch/s390/Kconfig | 1 - > arch/sh/Kconfig | 1 - > arch/sparc/Kconfig | 1 - > arch/x86/Kconfig | 1 - > arch/xtensa/Kconfig | 1 - > lib/Kconfig.debug | 1 - > 16 files changed, 48 deletions(-) > delete mode 100644 Documentation/features/io/dma-api-debug/arch-support.txt > > diff --git a/Documentation/features/io/dma-api-debug/arch-support.txt b/Documentation/features/io/dma-api-debug/arch-support.txt > deleted file mode 100644 > index e438ed675623..000000000000 > --- a/Documentation/features/io/dma-api-debug/arch-support.txt > +++ /dev/null > @@ -1,31 +0,0 @@ > -# > -# Feature name: dma-api-debug > -# Kconfig: HAVE_DMA_API_DEBUG > -# description: arch supports DMA debug facilities > -# > - ----------------------- > - | arch |status| > - ----------------------- > - | alpha: | TODO | > - | arc: | TODO | > - | arm: | ok | > - | arm64: | ok | > - | c6x: | ok | > - | h8300: | TODO | > - | hexagon: | TODO | > - | ia64: | ok | > - | m68k: | TODO | > - | microblaze: | ok | > - | mips: | ok | > - | nios2: | TODO | > - | openrisc: | TODO | > - | parisc: | TODO | > - | powerpc: | ok | > - | s390: | ok | > - | sh: | ok | > - | sparc: | ok | > - | um: | TODO | > - | unicore32: | TODO | > - | x86: | ok | > - | xtensa: | ok | > - ----------------------- > diff --git a/arch/Kconfig b/arch/Kconfig > index 8e0d665c8d53..f07a1a99e5db 100644 > --- a/arch/Kconfig > +++ b/arch/Kconfig > @@ -278,9 +278,6 @@ config HAVE_CLK > The <linux/clk.h> calls support software clock gating and > thus are a key power management tool on many systems. > > -config HAVE_DMA_API_DEBUG > - bool > - > config HAVE_HW_BREAKPOINT > bool > depends on PERF_EVENTS > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index 676977bdfe33..c43f5bb55ac8 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -60,7 +60,6 @@ config ARM > select HAVE_CONTEXT_TRACKING > select HAVE_C_RECORDMCOUNT > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS if MMU > select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL) && !CPU_ENDIAN_BE32 && MMU > select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index db51b6445744..b25ed7834f6c 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -105,7 +105,6 @@ config ARM64 > select HAVE_CONTEXT_TRACKING > select HAVE_DEBUG_BUGVERBOSE > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_DYNAMIC_FTRACE > select HAVE_EFFICIENT_UNALIGNED_ACCESS > diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig > index c6b4dd1418b4..8c088b96e372 100644 > --- a/arch/c6x/Kconfig > +++ b/arch/c6x/Kconfig > @@ -10,7 +10,6 @@ config C6X > select GENERIC_ATOMIC64 > select GENERIC_IRQ_SHOW > select HAVE_ARCH_TRACEHOOK > - select HAVE_DMA_API_DEBUG > select HAVE_MEMBLOCK > select SPARSE_IRQ > select IRQ_DOMAIN > diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig > index 9485b5490eca..2067289fad4a 100644 > --- a/arch/ia64/Kconfig > +++ b/arch/ia64/Kconfig > @@ -29,7 +29,6 @@ config IA64 > select HAVE_FUNCTION_TRACER > select TTY > select HAVE_ARCH_TRACEHOOK > - select HAVE_DMA_API_DEBUG > select HAVE_MEMBLOCK > select HAVE_MEMBLOCK_NODE_MAP > select HAVE_VIRT_CPU_ACCOUNTING > diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig > index 3817a3e2146c..d14782100088 100644 > --- a/arch/microblaze/Kconfig > +++ b/arch/microblaze/Kconfig > @@ -19,7 +19,6 @@ config MICROBLAZE > select HAVE_ARCH_HASH > select HAVE_ARCH_KGDB > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DYNAMIC_FTRACE > select HAVE_FTRACE_MCOUNT_RECORD > select HAVE_FUNCTION_GRAPH_TRACER > diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig > index 0f619b8c0e9e..2dcdc13cd65d 100644 > --- a/arch/mips/Kconfig > +++ b/arch/mips/Kconfig > @@ -42,7 +42,6 @@ config MIPS > select HAVE_C_RECORDMCOUNT > select HAVE_DEBUG_KMEMLEAK > select HAVE_DEBUG_STACKOVERFLOW > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_DYNAMIC_FTRACE > select HAVE_EXIT_THREAD > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 1887f8f86a77..268fd46fc3c7 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -181,7 +181,6 @@ config PPC > select HAVE_CONTEXT_TRACKING if PPC64 > select HAVE_DEBUG_KMEMLEAK > select HAVE_DEBUG_STACKOVERFLOW > - select HAVE_DMA_API_DEBUG > select HAVE_DYNAMIC_FTRACE > select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL > select HAVE_EBPF_JIT if PPC64 > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > index 17212ba54ee3..95e2da34aaad 100644 > --- a/arch/riscv/Kconfig > +++ b/arch/riscv/Kconfig > @@ -23,7 +23,6 @@ config RISCV > select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A > select HAVE_MEMBLOCK > select HAVE_MEMBLOCK_NODE_MAP > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_GENERIC_DMA_COHERENT > select IRQ_DOMAIN > diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig > index b794a2ab6d15..6a64287ec1da 100644 > --- a/arch/s390/Kconfig > +++ b/arch/s390/Kconfig > @@ -130,7 +130,6 @@ config S390 > select HAVE_CMPXCHG_LOCAL > select HAVE_COPY_THREAD_TLS > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select DMA_DIRECT_OPS > select HAVE_DYNAMIC_FTRACE > diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig > index 9417f70e008e..7d521926041e 100644 > --- a/arch/sh/Kconfig > +++ b/arch/sh/Kconfig > @@ -13,7 +13,6 @@ config SUPERH > select HAVE_OPROFILE > select HAVE_GENERIC_DMA_COHERENT > select HAVE_ARCH_TRACEHOOK > - select HAVE_DMA_API_DEBUG > select HAVE_PERF_EVENTS > select HAVE_DEBUG_BUGVERBOSE > select ARCH_HAVE_CUSTOM_GPIO_H > diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig > index c1cfc17eb504..435dbc033afe 100644 > --- a/arch/sparc/Kconfig > +++ b/arch/sparc/Kconfig > @@ -25,7 +25,6 @@ config SPARC > select RTC_CLASS > select RTC_DRV_M48T59 > select RTC_SYSTOHC > - select HAVE_DMA_API_DEBUG > select HAVE_ARCH_JUMP_LABEL if SPARC64 > select GENERIC_IRQ_SHOW > select ARCH_WANT_IPC_PARSE_VERSION > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > index aad35c568681..3eeca48a146b 100644 > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > @@ -135,7 +135,6 @@ config X86 > select HAVE_C_RECORDMCOUNT > select HAVE_DEBUG_KMEMLEAK > select HAVE_DEBUG_STACKOVERFLOW > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_DYNAMIC_FTRACE > select HAVE_DYNAMIC_FTRACE_WITH_REGS > diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig > index c921e8bccdc8..17df332269b2 100644 > --- a/arch/xtensa/Kconfig > +++ b/arch/xtensa/Kconfig > @@ -19,7 +19,6 @@ config XTENSA > select HAVE_ARCH_KASAN if MMU > select HAVE_CC_STACKPROTECTOR > select HAVE_DEBUG_KMEMLEAK > - select HAVE_DMA_API_DEBUG > select HAVE_DMA_CONTIGUOUS > select HAVE_EXIT_THREAD > select HAVE_FUNCTION_TRACER > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index 685ed2dd4384..d5175eb7b917 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -1634,7 +1634,6 @@ config PROVIDE_OHCI1394_DMA_INIT > > config DMA_API_DEBUG > bool "Enable debugging of DMA-API usage" > - depends on HAVE_DMA_API_DEBUG > select NEED_DMA_MAP_STATE > help > Enable this option to debug the use of the DMA API by device drivers. > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: dma-debug cleanups, including removing the arch hook [not found] ` <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org> ` (2 preceding siblings ...) 2018-04-27 15:53 ` [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG Christoph Hellwig @ 2018-05-07 10:29 ` Christoph Hellwig 2018-05-07 10:29 ` Christoph Hellwig 3 siblings, 1 reply; 24+ messages in thread From: Christoph Hellwig @ 2018-05-07 10:29 UTC (permalink / raw) To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-xtensa-PjhNF2WwrV/0Sa2dR60CXw, Michal Simek, linux-snps-arc-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-c6x-dev-jPsnJVOj+W6hPH1hqNUYSQ, linux-parisc-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-hexagon-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-m68k-cunTk1MwBs8S/qaLPR03pWD2FQJk+8+b, openrisc-cunTk1MwBs9a3B2Vnqf2dGD2FQJk+8+b, Greentime Hu, linux-alpha-u79uwXL29TY76Z2rM5mHXA, sparclinux-u79uwXL29TY76Z2rM5mHXA, nios2-dev-g9ZBwUv/Ih/yUk5EbOjzuce+I+R0W71w, Vincent Chen, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Any comments? I'd like to move forward with this rather sooner than later, so any reviews welcome! On Tue, Apr 24, 2018 at 04:02:32PM +0200, Christoph Hellwig wrote: > Hi all, > > this series has a few dma-debug cleanups, most notably removing the need > for architectures to explicitly initialize dma-debug. > _______________________________________________ > iommu mailing list > iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu ---end quoted text--- ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: dma-debug cleanups, including removing the arch hook 2018-05-07 10:29 ` dma-debug cleanups, including removing the arch hook Christoph Hellwig @ 2018-05-07 10:29 ` Christoph Hellwig 0 siblings, 0 replies; 24+ messages in thread From: Christoph Hellwig @ 2018-05-07 10:29 UTC (permalink / raw) To: iommu Cc: linux-arch, linux-xtensa, Michal Simek, Vincent Chen, linux-c6x-dev, linux-parisc, linux-sh, linux-hexagon, linux-kernel, linux-m68k, openrisc, Greentime Hu, linux-alpha, sparclinux, nios2-dev, linux-snps-arc, linux-arm-kernel Any comments? I'd like to move forward with this rather sooner than later, so any reviews welcome! On Tue, Apr 24, 2018 at 04:02:32PM +0200, Christoph Hellwig wrote: > Hi all, > > this series has a few dma-debug cleanups, most notably removing the need > for architectures to explicitly initialize dma-debug. > _______________________________________________ > iommu mailing list > iommu@lists.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu ---end quoted text--- ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2018-05-08 10:45 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-04-24 14:02 dma-debug cleanups, including removing the arch hook Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig 2018-04-24 14:02 ` [PATCH 2/3] dma-debug: simplify counting of preallocated requests Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-3-hch-jcswGhMUV9g@public.gmane.org> 2018-05-08 9:50 ` Robin Murphy 2018-05-08 9:50 ` Robin Murphy [not found] ` <20180424140235.9125-1-hch-jcswGhMUV9g@public.gmane.org> 2018-04-24 14:02 ` [PATCH 1/3] dma-debug: move initialization to common code Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-2-hch-jcswGhMUV9g@public.gmane.org> 2018-05-08 9:46 ` Robin Murphy 2018-05-08 9:46 ` Robin Murphy 2018-05-08 10:22 ` Marek Szyprowski 2018-05-08 10:22 ` Marek Szyprowski 2018-04-24 14:02 ` [PATCH 3/3] dma-debug: unexport dma_debug_resize_entries and debug_dma_dump_mappings Christoph Hellwig 2018-04-24 14:02 ` Christoph Hellwig [not found] ` <20180424140235.9125-4-hch-jcswGhMUV9g@public.gmane.org> 2018-05-08 10:05 ` Robin Murphy 2018-05-08 10:05 ` Robin Murphy 2018-05-08 10:45 ` Christoph Hellwig 2018-05-08 10:45 ` Christoph Hellwig 2018-04-27 15:53 ` [PATCH 4/3] dma-debug: remove CONFIG_HAVE_DMA_API_DEBUG Christoph Hellwig 2018-04-27 15:53 ` Christoph Hellwig [not found] ` <20180427155342.GA9232-jcswGhMUV9g@public.gmane.org> 2018-05-08 9:54 ` Robin Murphy 2018-05-08 9:54 ` Robin Murphy 2018-05-07 10:29 ` dma-debug cleanups, including removing the arch hook Christoph Hellwig 2018-05-07 10:29 ` Christoph Hellwig
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).