* [PATCH] dma-debug: print some unfreed allocations
@ 2011-05-10 18:42 Johannes Berg
2011-05-11 12:47 ` [PATCH v2] " Johannes Berg
0 siblings, 1 reply; 11+ messages in thread
From: Johannes Berg @ 2011-05-10 18:42 UTC (permalink / raw)
To: Joerg Roedel; +Cc: linux-kernel, David Woodhouse
From: Johannes Berg <johannes.berg@intel.com>
When a driver unbinds and still has allocations,
we print them out but there's no indication where
they came from. If stacktrace support is built
into the kernel, we can print out their traces.
Unfortunately, if you're unloading the module the
traces will be useless, but once you find such an
error you can manually unbind the device instead
to see where the allocations came from.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
lib/dma-debug.c | 47 +++++++++++++++++++++++++++++++++++++----------
1 file changed, 37 insertions(+), 10 deletions(-)
--- a/lib/dma-debug.c 2011-05-10 20:25:11.000000000 +0200
+++ b/lib/dma-debug.c 2011-05-10 20:36:55.000000000 +0200
@@ -649,7 +649,9 @@ out_err:
return -ENOMEM;
}
-static int device_dma_allocations(struct device *dev)
+#define DMA_DEBUG_NUM_PRINT_UNFREED 10
+
+static void check_device_dma_allocations(struct device *dev)
{
struct dma_debug_entry *entry;
unsigned long flags;
@@ -666,27 +668,52 @@ static int device_dma_allocations(struct
spin_unlock(&dma_entry_hash[i].lock);
}
- local_irq_restore(flags);
+ if (count > 1) {
+ err_printk(dev, NULL, "DMA-API: device driver has pending "
+ "DMA allocations while released from device "
+ "[count=%d]\n", count);
+#ifdef CONFIG_STACKTRACE
+ count = 0;
+ /*
+ * If we have, print out some stack traces for the allocations.
+ * In case of module unload, the stack traces will be useless,
+ * but instead of unloading the module you can manually unbind
+ * the driver instead and get useful traces.
+ */
+ printk(KERN_WARNING "Showing traces for %d allocations:\n",
+ DMA_DEBUG_NUM_PRINT_UNFREED);
+
+ for (i = 0; i < HASH_SIZE; ++i) {
+ spin_lock(&dma_entry_hash[i].lock);
+ list_for_each_entry(entry, &dma_entry_hash[i].list,
+ list) {
+ if (entry->dev == dev)
+ count += 1;
+ if (count > DMA_DEBUG_NUM_PRINT_UNFREED)
+ break;
+ dump_entry_trace(entry);
+ }
+ spin_unlock(&dma_entry_hash[i].lock);
+
+ if (count > DMA_DEBUG_NUM_PRINT_UNFREED)
+ break;
+ }
+#endif
+ }
- return count;
+ local_irq_restore(flags);
}
static int dma_debug_device_change(struct notifier_block *nb, unsigned long action, void *data)
{
struct device *dev = data;
- int count;
if (global_disable)
return 0;
switch (action) {
case BUS_NOTIFY_UNBOUND_DRIVER:
- count = device_dma_allocations(dev);
- if (count == 0)
- break;
- err_printk(dev, NULL, "DMA-API: device driver has pending "
- "DMA allocations while released from device "
- "[count=%d]\n", count);
+ check_device_dma_allocations(dev);
break;
default:
break;
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v2] dma-debug: print some unfreed allocations 2011-05-10 18:42 [PATCH] dma-debug: print some unfreed allocations Johannes Berg @ 2011-05-11 12:47 ` Johannes Berg 2011-05-16 11:00 ` Roedel, Joerg 0 siblings, 1 reply; 11+ messages in thread From: Johannes Berg @ 2011-05-11 12:47 UTC (permalink / raw) To: Joerg Roedel; +Cc: linux-kernel, David Woodhouse From: Johannes Berg <johannes.berg@intel.com> When a driver unbinds and still has allocations, we print them out but there's no indication where they came from. If stacktrace support is built into the kernel, we can print out their traces. Unfortunately, if you're unloading the module the traces will be useless, but once you find such an error you can manually unbind the device instead to see where the allocations came from. Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- v2: fix stupid error -- v1 printed almost everything *BUT* the device I wanted lib/dma-debug.c | 48 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) --- a/lib/dma-debug.c 2011-05-11 12:44:22.000000000 +0200 +++ b/lib/dma-debug.c 2011-05-11 14:47:02.000000000 +0200 @@ -649,7 +649,9 @@ out_err: return -ENOMEM; } -static int device_dma_allocations(struct device *dev) +#define DMA_DEBUG_NUM_PRINT_UNFREED 10 + +static void check_device_dma_allocations(struct device *dev) { struct dma_debug_entry *entry; unsigned long flags; @@ -666,27 +668,53 @@ static int device_dma_allocations(struct spin_unlock(&dma_entry_hash[i].lock); } - local_irq_restore(flags); + if (count > 1) { + err_printk(dev, NULL, "DMA-API: device driver has pending " + "DMA allocations while released from device " + "[count=%d]\n", count); +#ifdef CONFIG_STACKTRACE + count = 0; + /* + * If we have, print out some stack traces for the allocations. + * In case of module unload, the stack traces will be useless, + * but instead of unloading the module you can manually unbind + * the driver instead and get useful traces. + */ + printk(KERN_WARNING "Showing traces for %d allocations:\n", + DMA_DEBUG_NUM_PRINT_UNFREED); + + for (i = 0; i < HASH_SIZE; ++i) { + spin_lock(&dma_entry_hash[i].lock); + list_for_each_entry(entry, &dma_entry_hash[i].list, + list) { + if (entry->dev != dev) + continue; + count += 1; + if (count > DMA_DEBUG_NUM_PRINT_UNFREED) + break; + dump_entry_trace(entry); + } + spin_unlock(&dma_entry_hash[i].lock); - return count; + if (count > DMA_DEBUG_NUM_PRINT_UNFREED) + break; + } +#endif + } + + local_irq_restore(flags); } static int dma_debug_device_change(struct notifier_block *nb, unsigned long action, void *data) { struct device *dev = data; - int count; if (global_disable) return 0; switch (action) { case BUS_NOTIFY_UNBOUND_DRIVER: - count = device_dma_allocations(dev); - if (count == 0) - break; - err_printk(dev, NULL, "DMA-API: device driver has pending " - "DMA allocations while released from device " - "[count=%d]\n", count); + check_device_dma_allocations(dev); break; default: break; ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] dma-debug: print some unfreed allocations 2011-05-11 12:47 ` [PATCH v2] " Johannes Berg @ 2011-05-16 11:00 ` Roedel, Joerg 2011-05-18 22:48 ` Johannes Berg 0 siblings, 1 reply; 11+ messages in thread From: Roedel, Joerg @ 2011-05-16 11:00 UTC (permalink / raw) To: Johannes Berg; +Cc: linux-kernel, David Woodhouse On Wed, May 11, 2011 at 08:47:57AM -0400, Johannes Berg wrote: > From: Johannes Berg <johannes.berg@intel.com> > +#ifdef CONFIG_STACKTRACE > + count = 0; > + /* > + * If we have, print out some stack traces for the allocations. > + * In case of module unload, the stack traces will be useless, > + * but instead of unloading the module you can manually unbind > + * the driver instead and get useful traces. > + */ > + printk(KERN_WARNING "Showing traces for %d allocations:\n", > + DMA_DEBUG_NUM_PRINT_UNFREED); > + > + for (i = 0; i < HASH_SIZE; ++i) { > + spin_lock(&dma_entry_hash[i].lock); > + list_for_each_entry(entry, &dma_entry_hash[i].list, > + list) { > + if (entry->dev != dev) > + continue; > + count += 1; > + if (count > DMA_DEBUG_NUM_PRINT_UNFREED) > + break; > + dump_entry_trace(entry); > + } > + spin_unlock(&dma_entry_hash[i].lock); > > - return count; > + if (count > DMA_DEBUG_NUM_PRINT_UNFREED) > + break; > + } > +#endif > + } > + > + local_irq_restore(flags); > } This is surely useful to developers, but can trash the dmesg if done unconditionally. I would prefer this verbose output to be configurable and off by default. Joerg ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] dma-debug: print some unfreed allocations 2011-05-16 11:00 ` Roedel, Joerg @ 2011-05-18 22:48 ` Johannes Berg 2011-05-19 8:19 ` Roedel, Joerg 0 siblings, 1 reply; 11+ messages in thread From: Johannes Berg @ 2011-05-18 22:48 UTC (permalink / raw) To: Roedel, Joerg; +Cc: linux-kernel, David Woodhouse On Mon, 2011-05-16 at 13:00 +0200, Roedel, Joerg wrote: > > + /* > > + * If we have, print out some stack traces for the allocations. > > + * In case of module unload, the stack traces will be useless, > > + * but instead of unloading the module you can manually unbind > > + * the driver instead and get useful traces. > > + */ > > + printk(KERN_WARNING "Showing traces for %d allocations:\n", > > + DMA_DEBUG_NUM_PRINT_UNFREED); > This is surely useful to developers, but can trash the dmesg if done > unconditionally. I would prefer this verbose output to be configurable > and off by default. Are you thinking of runtime or compile time configuration? Kconfig entry depending on stacktrace (or selecting it, depending on have_stacktrace) would be easy enough. johannes ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] dma-debug: print some unfreed allocations 2011-05-18 22:48 ` Johannes Berg @ 2011-05-19 8:19 ` Roedel, Joerg 2011-05-20 16:36 ` [PATCH v3] " Johannes Berg 0 siblings, 1 reply; 11+ messages in thread From: Roedel, Joerg @ 2011-05-19 8:19 UTC (permalink / raw) To: Johannes Berg; +Cc: linux-kernel, David Woodhouse On Wed, May 18, 2011 at 06:48:28PM -0400, Johannes Berg wrote: > On Mon, 2011-05-16 at 13:00 +0200, Roedel, Joerg wrote: > > > + /* > > > + * If we have, print out some stack traces for the allocations. > > > + * In case of module unload, the stack traces will be useless, > > > + * but instead of unloading the module you can manually unbind > > > + * the driver instead and get useful traces. > > > + */ > > > + printk(KERN_WARNING "Showing traces for %d allocations:\n", > > > + DMA_DEBUG_NUM_PRINT_UNFREED); > > > This is surely useful to developers, but can trash the dmesg if done > > unconditionally. I would prefer this verbose output to be configurable > > and off by default. > > Are you thinking of runtime or compile time configuration? Kconfig entry > depending on stacktrace (or selecting it, depending on have_stacktrace) > would be easy enough. It should be configurable at runtime. DMA-debugging already has a debugfs interface which you can use for that. By default dma-debugging should only print out the message about leaked entries. The developer can then reproduce it and find the cause by enabling the verbose output. Note that there is documentation in Documentation/DMA-API.txt to document the debugfs interface. Please make sure to update that too. Regards, Joerg ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3] dma-debug: print some unfreed allocations 2011-05-19 8:19 ` Roedel, Joerg @ 2011-05-20 16:36 ` Johannes Berg 2011-05-23 12:35 ` Roedel, Joerg 0 siblings, 1 reply; 11+ messages in thread From: Johannes Berg @ 2011-05-20 16:36 UTC (permalink / raw) To: Roedel, Joerg; +Cc: linux-kernel, David Woodhouse From: Johannes Berg <johannes.berg@intel.com> When a driver unbinds and still has allocations, we print out that they exist but there's nothing to indicate where they came from. If stacktrace support is built into the kernel, we can print out their traces. The number of traces that will be printed is configurable in debugfs, with the default being zero. Unfortunately, if you're unloading the module the traces will be useless, but once you find such an error you can manually unbind the device instead to see where the allocations came from. Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- Documentation/DMA-API.txt | 10 +++++++ lib/dma-debug.c | 62 ++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 62 insertions(+), 10 deletions(-) --- a/lib/dma-debug.c 2011-05-20 08:59:55.000000000 -0700 +++ b/lib/dma-debug.c 2011-05-20 09:36:29.000000000 -0700 @@ -102,6 +102,12 @@ static struct dentry *num_free_entries_d static struct dentry *min_free_entries_dent __read_mostly; static struct dentry *filter_dent __read_mostly; +#ifdef CONFIG_STACKTRACE +/* Show stack traces for this many pending allocations */ +static u32 num_show_pending __read_mostly; +static struct dentry *num_show_pending_dent __read_mostly; +#endif + /* per-driver filter related state */ #define NAME_MAX_LEN 64 @@ -641,6 +647,14 @@ static int dma_debug_fs_init(void) if (!filter_dent) goto out_err; +#ifdef CONFIG_STACKTRACE + num_show_pending_dent = debugfs_create_u32("num_show_pending", 0644, + dma_debug_dent, + &num_show_pending); + if (!num_show_pending_dent) + goto out_err; +#endif + return 0; out_err: @@ -649,7 +663,7 @@ out_err: return -ENOMEM; } -static int device_dma_allocations(struct device *dev) +static void check_device_dma_allocations(struct device *dev) { struct dma_debug_entry *entry; unsigned long flags; @@ -666,27 +680,55 @@ static int device_dma_allocations(struct spin_unlock(&dma_entry_hash[i].lock); } - local_irq_restore(flags); + if (count > 1) + err_printk(dev, NULL, "DMA-API: device driver has pending " + "DMA allocations while released from device " + "[count=%d]\n", count); - return count; +#ifdef CONFIG_STACKTRACE + if (count > 1 && num_show_pending > 0) { + count = 0; + /* + * If we have, print out some stack traces for the allocations. + * In case of module unload, the stack traces will be useless, + * but instead of unloading the module you can manually unbind + * the driver instead and get useful traces. + */ + printk(KERN_WARNING "Showing traces for %d allocations:\n", + num_show_pending); + + for (i = 0; i < HASH_SIZE; ++i) { + spin_lock(&dma_entry_hash[i].lock); + list_for_each_entry(entry, &dma_entry_hash[i].list, + list) { + if (entry->dev != dev) + continue; + count += 1; + if (count > num_show_pending) + break; + dump_entry_trace(entry); + } + spin_unlock(&dma_entry_hash[i].lock); + + if (count > num_show_pending) + break; + } + } +#endif + + local_irq_restore(flags); } static int dma_debug_device_change(struct notifier_block *nb, unsigned long action, void *data) { struct device *dev = data; - int count; if (global_disable) return 0; switch (action) { case BUS_NOTIFY_UNBOUND_DRIVER: - count = device_dma_allocations(dev); - if (count == 0) - break; - err_printk(dev, NULL, "DMA-API: device driver has pending " - "DMA allocations while released from device " - "[count=%d]\n", count); + check_device_dma_allocations(dev); break; default: break; --- a/Documentation/DMA-API.txt 2011-05-20 09:33:24.000000000 -0700 +++ b/Documentation/DMA-API.txt 2011-05-20 09:35:34.000000000 -0700 @@ -655,6 +655,16 @@ this directory the following files can c that file to disable the filter and see all errors again. + dma-api/num_show_pending + This file is only present if CONFIG_STACKTRACE + is enabled in the kernel, and allows debugging + unfreed allocations in that it prints out the + stack traces for this many (default 0) unfreed + allocations if there are any. Note that these + traces may be useless if you're unregistering + by unloading the module; work around that by + unbinding the driver in sysfs instead. + If you have this code compiled into your kernel it will be enabled by default. If you want to boot without the bookkeeping anyway you can provide 'dma_debug=off' as a boot parameter. This will disable DMA-API debugging. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] dma-debug: print some unfreed allocations 2011-05-20 16:36 ` [PATCH v3] " Johannes Berg @ 2011-05-23 12:35 ` Roedel, Joerg 2011-06-08 11:03 ` Johannes Berg 0 siblings, 1 reply; 11+ messages in thread From: Roedel, Joerg @ 2011-05-23 12:35 UTC (permalink / raw) To: Johannes Berg; +Cc: linux-kernel, David Woodhouse On Fri, May 20, 2011 at 12:36:58PM -0400, Johannes Berg wrote: > From: Johannes Berg <johannes.berg@intel.com> > #define NAME_MAX_LEN 64 > @@ -641,6 +647,14 @@ static int dma_debug_fs_init(void) > if (!filter_dent) > goto out_err; > > +#ifdef CONFIG_STACKTRACE > + num_show_pending_dent = debugfs_create_u32("num_show_pending", 0644, > + dma_debug_dent, > + &num_show_pending); > + if (!num_show_pending_dent) > + goto out_err; > +#endif Hmm, thinking more about this, do we need to introduce a new variable at all? It should fit well into the dma-api/all_errors and dma-api/num_errors configurables. > +#ifdef CONFIG_STACKTRACE > + if (count > 1 && num_show_pending > 0) { > + count = 0; > + /* > + * If we have, print out some stack traces for the allocations. > + * In case of module unload, the stack traces will be useless, > + * but instead of unloading the module you can manually unbind > + * the driver instead and get useful traces. > + */ > + printk(KERN_WARNING "Showing traces for %d allocations:\n", > + num_show_pending); > + > + for (i = 0; i < HASH_SIZE; ++i) { > + spin_lock(&dma_entry_hash[i].lock); > + list_for_each_entry(entry, &dma_entry_hash[i].list, > + list) { > + if (entry->dev != dev) > + continue; > + count += 1; > + if (count > num_show_pending) > + break; > + dump_entry_trace(entry); > + } > + spin_unlock(&dma_entry_hash[i].lock); > + > + if (count > num_show_pending) > + break; > + } > + } > +#endif This duplicates the loop above. The prints can be folded into one loop. How about doing it this way (patch is only compile-tested): diff --git a/lib/dma-debug.c b/lib/dma-debug.c index db07bfd..ee21ef0 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -187,11 +187,14 @@ static bool driver_filter(struct device *dev) return ret; } -#define err_printk(dev, entry, format, arg...) do { \ +#define err_warn(format, arg...) WARN(1, format, ## arg) +#define err_no_warn(format, arg...) pr_err(format, ## arg) + +#define __err_printk(func, dev, entry, format, arg...) do { \ error_count += 1; \ if (driver_filter(dev) && \ (show_all_errors || show_num_errors > 0)) { \ - WARN(1, "%s %s: " format, \ + func("%s %s: " format, \ dev ? dev_driver_string(dev) : "NULL", \ dev ? dev_name(dev) : "NULL", ## arg); \ dump_entry_trace(entry); \ @@ -200,6 +203,12 @@ static bool driver_filter(struct device *dev) show_num_errors -= 1; \ } while (0); +#define err_printk(dev, entry, format, arg...) \ + __err_printk(err_warn, dev, entry, format, ## arg) + +#define err_printk_no_warn(dev, entry, format, arg...) \ + __err_printk(err_no_warn, dev, entry, format, ## arg) + /* * Hash related functions * @@ -649,52 +658,38 @@ out_err: return -ENOMEM; } -static int device_dma_allocations(struct device *dev, struct dma_debug_entry **out_entry) +static void check_device_dma_allocations(struct device *dev) { struct dma_debug_entry *entry; unsigned long flags; - int count = 0, i; + int i; local_irq_save(flags); for (i = 0; i < HASH_SIZE; ++i) { spin_lock(&dma_entry_hash[i].lock); list_for_each_entry(entry, &dma_entry_hash[i].list, list) { - if (entry->dev == dev) { - count += 1; - *out_entry = entry; - } + if (entry->dev != dev) + continue; + err_printk_no_warn(dev, entry, + "DMA-API: device driver has pending DMA allocation\n"); } spin_unlock(&dma_entry_hash[i].lock); } local_irq_restore(flags); - - return count; } static int dma_debug_device_change(struct notifier_block *nb, unsigned long action, void *data) { struct device *dev = data; - struct dma_debug_entry *uninitialized_var(entry); - int count; if (global_disable) return 0; switch (action) { case BUS_NOTIFY_UNBOUND_DRIVER: - count = device_dma_allocations(dev, &entry); - if (count == 0) - break; - err_printk(dev, entry, "DMA-API: device driver has pending " - "DMA allocations while released from device " - "[count=%d]\n" - "One of leaked entries details: " - "[device address=0x%016llx] [size=%llu bytes] " - "[mapped with %s] [mapped as %s]\n", - count, entry->dev_addr, entry->size, - dir2name[entry->direction], type2name[entry->type]); + check_device_dma_allocations(dev); break; default: break; ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3] dma-debug: print some unfreed allocations 2011-05-23 12:35 ` Roedel, Joerg @ 2011-06-08 11:03 ` Johannes Berg 2011-06-08 12:16 ` Roedel, Joerg 0 siblings, 1 reply; 11+ messages in thread From: Johannes Berg @ 2011-06-08 11:03 UTC (permalink / raw) To: Roedel, Joerg; +Cc: linux-kernel On Mon, 2011-05-23 at 14:35 +0200, Roedel, Joerg wrote: > > +#ifdef CONFIG_STACKTRACE > > + num_show_pending_dent = debugfs_create_u32("num_show_pending", 0644, > > + dma_debug_dent, > > + &num_show_pending); > > + if (!num_show_pending_dent) > > + goto out_err; > > +#endif > > Hmm, thinking more about this, do we need to introduce a new variable at > all? It should fit well into the dma-api/all_errors and > dma-api/num_errors configurables. I see something similar was merged printing just the first one (and without stack trace it seems?). Are you still interested in this? johannes ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] dma-debug: print some unfreed allocations 2011-06-08 11:03 ` Johannes Berg @ 2011-06-08 12:16 ` Roedel, Joerg 2011-06-08 12:26 ` Johannes Berg 0 siblings, 1 reply; 11+ messages in thread From: Roedel, Joerg @ 2011-06-08 12:16 UTC (permalink / raw) To: Johannes Berg; +Cc: linux-kernel On Wed, Jun 08, 2011 at 07:03:36AM -0400, Johannes Berg wrote: > On Mon, 2011-05-23 at 14:35 +0200, Roedel, Joerg wrote: > > > > +#ifdef CONFIG_STACKTRACE > > > + num_show_pending_dent = debugfs_create_u32("num_show_pending", 0644, > > > + dma_debug_dent, > > > + &num_show_pending); > > > + if (!num_show_pending_dent) > > > + goto out_err; > > > +#endif > > > > Hmm, thinking more about this, do we need to introduce a new variable at > > all? It should fit well into the dma-api/all_errors and > > dma-api/num_errors configurables. > > I see something similar was merged printing just the first one (and > without stack trace it seems?). Are you still interested in this? Sure, still interested. The code which prints out the first entry has been around for some time, its nothing new afaik. Joerg -- AMD Operating System Research Center Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach General Managers: Alberto Bozzo, Andrew Bowd Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] dma-debug: print some unfreed allocations 2011-06-08 12:16 ` Roedel, Joerg @ 2011-06-08 12:26 ` Johannes Berg 2011-06-08 12:37 ` Roedel, Joerg 0 siblings, 1 reply; 11+ messages in thread From: Johannes Berg @ 2011-06-08 12:26 UTC (permalink / raw) To: Roedel, Joerg; +Cc: linux-kernel On Wed, 2011-06-08 at 14:16 +0200, Roedel, Joerg wrote: > > I see something similar was merged printing just the first one (and > > without stack trace it seems?). Are you still interested in this? > > Sure, still interested. The code which prints out the first entry has > been around for some time, its nothing new afaik. Ok. I was thinking of commit ba4b87ad5497cba555954885db99c99627f93748 Author: Stanislaw Gruszka <sgruszka@redhat.com> Date: Thu Mar 31 08:08:09 2011 -0400 dma-debug: print information about leaked entry which is fairly recent, recent enough that my original patch no longer applied anyway :-) johannes ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] dma-debug: print some unfreed allocations 2011-06-08 12:26 ` Johannes Berg @ 2011-06-08 12:37 ` Roedel, Joerg 0 siblings, 0 replies; 11+ messages in thread From: Roedel, Joerg @ 2011-06-08 12:37 UTC (permalink / raw) To: Johannes Berg; +Cc: linux-kernel On Wed, Jun 08, 2011 at 08:26:47AM -0400, Johannes Berg wrote: > On Wed, 2011-06-08 at 14:16 +0200, Roedel, Joerg wrote: > > > > I see something similar was merged printing just the first one (and > > > without stack trace it seems?). Are you still interested in this? > > > > Sure, still interested. The code which prints out the first entry has > > been around for some time, its nothing new afaik. > > Ok. I was thinking of > commit ba4b87ad5497cba555954885db99c99627f93748 > Author: Stanislaw Gruszka <sgruszka@redhat.com> > Date: Thu Mar 31 08:08:09 2011 -0400 > > dma-debug: print information about leaked entry > > which is fairly recent, recent enough that my original patch no longer > applied anyway :-) Ah, okay. I thought this change was older :-) Joerg -- AMD Operating System Research Center Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach General Managers: Alberto Bozzo, Andrew Bowd Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632 ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-06-08 12:37 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-05-10 18:42 [PATCH] dma-debug: print some unfreed allocations Johannes Berg 2011-05-11 12:47 ` [PATCH v2] " Johannes Berg 2011-05-16 11:00 ` Roedel, Joerg 2011-05-18 22:48 ` Johannes Berg 2011-05-19 8:19 ` Roedel, Joerg 2011-05-20 16:36 ` [PATCH v3] " Johannes Berg 2011-05-23 12:35 ` Roedel, Joerg 2011-06-08 11:03 ` Johannes Berg 2011-06-08 12:16 ` Roedel, Joerg 2011-06-08 12:26 ` Johannes Berg 2011-06-08 12:37 ` Roedel, Joerg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox