Xavier Chantry
2009-Nov-27 21:36 UTC
[Nouveau] [PATCH] nouveau: add ratelimit to nouveau_graph_dump_trap_info
Often when things get stuck spinning, nouveau_pgraph_intr_error and nouveau_graph_dump_trap_info gets called many times, flooding logs with PGRAPH_ERROR and filling up the disk. Pekka Paalanen pointed me to ratelimit, so I went ahead and added some ratelimit support. It is much better now :) I am completely new to the kernel world though so I hope I did not do something terribly wrong. Signed-off-by: Xavier Chantry <shiningxc at gmail.com> --- drivers/gpu/drm/nouveau/nouveau_irq.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c index 597007a..0aae8c2 100644 --- a/drivers/gpu/drm/nouveau/nouveau_irq.c +++ b/drivers/gpu/drm/nouveau/nouveau_irq.c @@ -462,6 +462,14 @@ nouveau_pgraph_intr_notify(struct drm_device *dev, uint32_t nsource) nouveau_graph_dump_trap_info(dev, "PGRAPH_NOTIFY", &trap); } +DEFINE_RATELIMIT_STATE(nouveau_ratelimit_state, 3 * HZ, 20); + +int nouveau_ratelimit(void) +{ + return __ratelimit(&nouveau_ratelimit_state); +} + + static inline void nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource) { @@ -478,7 +486,7 @@ nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource) unhandled = 1; } - if (unhandled) + if (unhandled && nouveau_ratelimit()) nouveau_graph_dump_trap_info(dev, "PGRAPH_ERROR", &trap); } -- 1.6.5.3
Xavier Chantry
2009-Nov-27 22:31 UTC
[Nouveau] [PATCH] nouveau: add ratelimit to nouveau_graph_dump_trap_info
Often when things get stuck spinning, nouveau_pgraph_intr_error and nouveau_graph_dump_trap_info gets called many times, flooding logs with PGRAPH_ERROR and filling up the disk. Pekka Paalanen pointed me to ratelimit, so I went ahead and added some ratelimit support. It is much better now :) I am completely new to the kernel world though so I hope I did not do something terribly wrong. Signed-off-by: Xavier Chantry <shiningxc at gmail.com> --- Addressed a few comments from pq (or is it PP ? :D) * make the function and global variable static * fix whitespace damage drivers/gpu/drm/nouveau/nouveau_irq.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c index 597007a..fa3b5d1 100644 --- a/drivers/gpu/drm/nouveau/nouveau_irq.c +++ b/drivers/gpu/drm/nouveau/nouveau_irq.c @@ -462,6 +462,14 @@ nouveau_pgraph_intr_notify(struct drm_device *dev, uint32_t nsource) nouveau_graph_dump_trap_info(dev, "PGRAPH_NOTIFY", &trap); } +static DEFINE_RATELIMIT_STATE(nouveau_ratelimit_state, 3 * HZ, 20); + +static int nouveau_ratelimit(void) +{ + return __ratelimit(&nouveau_ratelimit_state); +} + + static inline void nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource) { @@ -478,7 +486,7 @@ nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource) unhandled = 1; } - if (unhandled) + if (unhandled && nouveau_ratelimit()) nouveau_graph_dump_trap_info(dev, "PGRAPH_ERROR", &trap); } -- 1.6.5.3
Pekka Paalanen
2009-Dec-05 16:49 UTC
[Nouveau] [PATCH] nouveau: add ratelimit to nouveau_graph_dump_trap_info
On Fri, 27 Nov 2009 23:31:13 +0100 Xavier Chantry <shiningxc at gmail.com> wrote:> Often when things get stuck spinning, nouveau_pgraph_intr_error > and nouveau_graph_dump_trap_info gets called many times, flooding > logs with PGRAPH_ERROR and filling up the disk. > > Pekka Paalanen pointed me to ratelimit, so I went ahead and added > some ratelimit support. It is much better now :) > > I am completely new to the kernel world though so I hope I did > not do something terribly wrong. > > Signed-off-by: Xavier Chantry <shiningxc at gmail.com>Pushed, finally, with a little message trimming. Sorry for the delay. -- Pekka Paalanen http://www.iki.fi/pq/