diff options
author | Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> | 2008-05-19 23:09:27 (GMT) |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-06-11 23:13:45 (GMT) |
commit | dcb84f335bee9c9a7781cfc5d74492dccaf066d2 (patch) | |
tree | e24d4ca7df49b2a87862aa69c09d21ad45a024b7 /drivers/misc/thinkpad_acpi.c | |
parent | e1094bfa26e5e94af2fea79e004614dbce42b008 (diff) | |
download | linux-fsl-qoriq-dcb84f335bee9c9a7781cfc5d74492dccaf066d2.tar.xz |
cpuidle acpi driver: fix oops on AC<->DC
cpuidle and acpi driver interaction bug with the way cpuidle_register_driver()
is called. Due to this bug, there will be oops on
AC<->DC on some systems, where they support C-states in one DC and not in AC.
The current code does
ON BOOT:
Look at CST and other C-state info to see whether more than C1 is
supported. If it is, then acpi processor_idle does a
cpuidle_register_driver() call, which internally enables the device.
ON CST change notification (AC<->DC) and on suspend-resume:
acpi driver temporarily disables device, updates the device with
any new C-states, and reenables the device.
The problem is is on boot, there are no C2, C3 states supported and we skip
the register. Later on AC<->DC, we may get a CST notification and we try
to reevaluate CST and enabled the device, without actually registering it.
This causes breakage as we try to create /sys fs sub directory, without the
parent directory which is created at register time.
Thanks to Sanjeev for reporting the problem here.
http://bugzilla.kernel.org/show_bug.cgi?id=10394
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/misc/thinkpad_acpi.c')
0 files changed, 0 insertions, 0 deletions