Re: powermac: More powermac backlight fixes
From: Michael Hanselmann <hidden>
Date: 2006-07-25 18:44:22
Hello Andrew On Mon, Jul 24, 2006 at 08:03:15PM -0700, Andrew Morton wrote:
I see schedule_work()s in there, but no flush_scheduled_work()s or anything like that. Generally, this means there are races against rmmod, close(), etc.
I'll check that. Another patch is in the work already.
quoted
+void pmac_backlight_disable() +{ + atomic_inc(&kernel_backlight_disabled); +} + +void pmac_backlight_enable() +{ + atomic_dec(&kernel_backlight_disabled); +} +
So if userspace calls ioctl(PMU_IOC_GRAB_BACKLIGHT) eleven times, eleven enables are needed? (Actually, eleven open()/close() sequences, I think).
Methinks you wanted just
kernel_backlight_disabled = 1; ?
Aristeu already asked me that, and no, the disabling is meant to be recursive. The old code did something like "spin_lock(...); disable++; spin_unlock(...);". It then checked for "if (disable) return;". My code basically moves the code from the via-pmu driver and removes the spinlocks. Thanks, Michael