[Nouveau] [Bug 65554] CPU lock with nouveau_fan_update

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Jun 8 17:40:47 PDT 2013


https://bugs.freedesktop.org/show_bug.cgi?id=65554

--- Comment #1 from Ilia Mirkin <imirkin at alum.mit.edu> ---
nouveau_fan_update:
    spin_lock_irqsave(&fan->lock, flags);
    /* schedule next fan update, if not at target speed already */
    if (list_empty(&fan->alarm.head) && target != duty) {
        u16 bump_period = fan->bios.bump_period;
        u16 slow_down_period = fan->bios.slow_down_period;
...
        ptimer->alarm(ptimer, delay * 1000 * 1000, &fan->alarm);

If delay is somehow 0, the ->alarm will cause nouveau_fan_update to get called
immediately. Can you add a printk to that function that shows the values? (This
may end up totally flooding your dmesg too... but I think the values may be the
same across prints.)

e.g.

diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c
b/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c
index c728380..9453afd 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c
@@ -88,7 +88,7 @@ nouveau_fan_update(struct nouveau_fan *fan, bool immediate,
int target)
                        delay = min(bump_period, slow_down_period) ;
                else
                        delay = bump_period;
-
+               nv_info(therm, "Scheduling fan update in %d (slow: %d, bump:
%d)\n", delay, slow_down_period, bump_period);
                ptimer->alarm(ptimer, delay * 1000 * 1000, &fan->alarm);
        }

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20130609/ed98784a/attachment.html>


More information about the Nouveau mailing list