[PATCH 0/1] cpufreq: Missing sysfs files cause userspace failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Suspend/Resume fails on multi socket, multi core systems because the cpufreq
code erroneously sets the per_cpu policy_cpu value when a logical cpu is
offline.

The code should not do this as this breaks userspace utilities because of
missing sysfs files.

I wrote a script to automate the suspend/resume:

#!/bin/bash
echo "BEFORE"
echo " "
(cd /sys; find ./ -name *cpufreq*)
sysctl -w kernel.printk=8
echo disk > /sys/power/state
echo "AFTER"
echo " "
(cd /sys; find ./ -name *cpufreq*)


BEFORE THE PATCH WAS APPLIED:
----------------------------------

BEFORE

./module/cpufreq_ondemand
./module/acpi_cpufreq
./module/cpufreq
./devices/system/cpu/cpu15/cpufreq
./devices/system/cpu/cpu14/cpufreq
./devices/system/cpu/cpu13/cpufreq
./devices/system/cpu/cpu12/cpufreq
./devices/system/cpu/cpu11/cpufreq
./devices/system/cpu/cpu10/cpufreq
./devices/system/cpu/cpu9/cpufreq
./devices/system/cpu/cpu8/cpufreq
./devices/system/cpu/cpu7/cpufreq
./devices/system/cpu/cpu6/cpufreq
./devices/system/cpu/cpu5/cpufreq
./devices/system/cpu/cpu4/cpufreq
./devices/system/cpu/cpu3/cpufreq
./devices/system/cpu/cpu2/cpufreq
./devices/system/cpu/cpu1/cpufreq
./devices/system/cpu/cpu0/cpufreq
kernel.printk = 8
./doit: line 6: echo: write error: Device or resource busy
AFTER

./module/cpufreq_ondemand
./module/acpi_cpufreq
./module/cpufreq
./devices/system/cpu/cpu12/cpufreq
./devices/system/cpu/cpu8/cpufreq
./devices/system/cpu/cpu4/cpufreq
./devices/system/cpu/cpu3/cpufreq
./devices/system/cpu/cpu2/cpufreq
./devices/system/cpu/cpu1/cpufreq
./devices/system/cpu/cpu0/cpufreq

cpufreq fails to work because of missing sysfs files.

AFTER THE PATCH WAS APPLIED:
----------------------------------

BEFORE

./module/cpufreq_ondemand
./module/acpi_cpufreq
./module/cpufreq
./devices/system/cpu/cpu15/cpufreq
./devices/system/cpu/cpu14/cpufreq
./devices/system/cpu/cpu13/cpufreq
./devices/system/cpu/cpu12/cpufreq
./devices/system/cpu/cpu11/cpufreq
./devices/system/cpu/cpu10/cpufreq
./devices/system/cpu/cpu9/cpufreq
./devices/system/cpu/cpu8/cpufreq
./devices/system/cpu/cpu7/cpufreq
./devices/system/cpu/cpu6/cpufreq
./devices/system/cpu/cpu5/cpufreq
./devices/system/cpu/cpu4/cpufreq
./devices/system/cpu/cpu3/cpufreq
./devices/system/cpu/cpu2/cpufreq
./devices/system/cpu/cpu1/cpufreq
./devices/system/cpu/cpu0/cpufreq
kernel.printk = 8
./doit: line 6: echo: write error: Device or resource busy
AFTER

./module/cpufreq_ondemand
./module/acpi_cpufreq
./module/cpufreq
./devices/system/cpu/cpu15/cpufreq
./devices/system/cpu/cpu14/cpufreq
./devices/system/cpu/cpu13/cpufreq
./devices/system/cpu/cpu12/cpufreq
./devices/system/cpu/cpu11/cpufreq
./devices/system/cpu/cpu10/cpufreq
./devices/system/cpu/cpu9/cpufreq
./devices/system/cpu/cpu8/cpufreq
./devices/system/cpu/cpu7/cpufreq
./devices/system/cpu/cpu6/cpufreq
./devices/system/cpu/cpu5/cpufreq
./devices/system/cpu/cpu4/cpufreq
./devices/system/cpu/cpu3/cpufreq
./devices/system/cpu/cpu2/cpufreq
./devices/system/cpu/cpu1/cpufreq
./devices/system/cpu/cpu0/cpufreq

and cpufreq works correctly.

P.
--
To unsubscribe from this list: send the line "unsubscribe cpufreq" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Devel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Forum]     [Linux SCSI]

  Powered by Linux