speedstep-smi: disable smi_detect_freqs() on buggy systems (bug #1422)
PATCH 1/8 speedstep-smi: disable smi_detect_freqs() on buggy systems (bug #1422)
The SMI call in speedstep_smi_get_freqs causes hangs on certain notebooks. A failure of the function itself is non-critical, as a workaround exists.
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c | 6 ++++++ 1 files changed, 6 insertions(+)
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c +6 -0
@@ -85,6 +85,9 @@/** * speedstep_smi_get_freqs - get SpeedStep preferred & current freq. +* Only available on later SpeedStep-enabled systems, returns false results or +* even hangs [cf. bugme.osdl.org # 1422] on earlier systems. Empirical testing +* shows that the latter occurs if !(ist_info.event & 0xFFFF). * */ static int speedstep_smi_get_freqs (unsigned int *low,unsigned int *high)
@@ -93,6 +96,9 @@u32 state=0 ;u32 function =GET_SPEEDSTEP_FREQS ; +if (!(ist_info.event &0xFFFF )) +return -ENODEV ; + command = (smi_sig &0xffffff00 ) | (smi_cmd &0xff ); __asm__ __volatile__("movl $0, %%edi\n"