Commit c1b2dab96f3c1cb051b85d82d7e70e12e9b930f2

Authored by Len Brown

Merge branch 'procfs-cleanup' into release

Showing 7 changed files Side-by-side Diff

Documentation/feature-removal-schedule.txt
... ... @@ -232,6 +232,17 @@
232 232  
233 233 ---------------------------
234 234  
  235 +What: CONFIG_ACPI_PROCFS_POWER
  236 +When: 2.6.39
  237 +Why: sysfs I/F for ACPI power devices, including AC and Battery,
  238 + has been working in upstream kenrel since 2.6.24, Sep 2007.
  239 + In 2.6.37, we make the sysfs I/F always built in and this option
  240 + disabled by default.
  241 + Remove this option and the ACPI power procfs interface in 2.6.39.
  242 +Who: Zhang Rui <rui.zhang@intel.com>
  243 +
  244 +---------------------------
  245 +
235 246 What: /proc/acpi/button
236 247 When: August 2007
237 248 Why: /proc/acpi/button has been replaced by events to the input layer
drivers/acpi/Kconfig
... ... @@ -53,10 +53,6 @@
53 53 they have been replaced by functions in /sys.
54 54 The deprecated files (and their replacements) include:
55 55  
56   - /proc/acpi/processor/*/throttling (/sys/class/thermal/
57   - cooling_device*/*)
58   - /proc/acpi/video/*/brightness (/sys/class/backlight/)
59   - /proc/acpi/thermal_zone/*/* (/sys/class/thermal/)
60 56 This option has no effect on /proc/acpi/ files
61 57 and functions which do not yet exist in /sys.
62 58  
... ... @@ -74,6 +70,8 @@
74 70 /proc/acpi/ac_adapter/* (sys/class/power_supply/*)
75 71 This option has no effect on /proc/acpi/ directories
76 72 and functions, which do not yet exist in /sys
  73 + This option, together with the proc directories, will be
  74 + deleted in 2.6.39.
77 75  
78 76 Say N to delete power /proc/acpi/ directories that have moved to /sys/
79 77  
... ... @@ -197,7 +197,8 @@
197 197 {
198 198 struct proc_dir_entry *entry = NULL;
199 199  
200   -
  200 + printk(KERN_WARNING PREFIX "Deprecated procfs I/F for AC is loaded,"
  201 + " please retry with CONFIG_ACPI_PROCFS_POWER cleared\n");
201 202 if (!acpi_device_dir(device)) {
202 203 acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device),
203 204 acpi_ac_dir);
drivers/acpi/battery.c
... ... @@ -868,6 +868,8 @@
868 868 struct proc_dir_entry *entry = NULL;
869 869 int i;
870 870  
  871 + printk(KERN_WARNING PREFIX "Deprecated procfs I/F for battery is loaded,"
  872 + " please retry with CONFIG_ACPI_PROCFS_POWER cleared\n");
871 873 if (!acpi_device_dir(device)) {
872 874 acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device),
873 875 acpi_battery_dir);
drivers/acpi/processor_driver.c
... ... @@ -40,10 +40,6 @@
40 40 #include <linux/pm.h>
41 41 #include <linux/cpufreq.h>
42 42 #include <linux/cpu.h>
43   -#ifdef CONFIG_ACPI_PROCFS
44   -#include <linux/proc_fs.h>
45   -#include <linux/seq_file.h>
46   -#endif
47 43 #include <linux/dmi.h>
48 44 #include <linux/moduleparam.h>
49 45 #include <linux/cpuidle.h>
... ... @@ -246,53 +242,6 @@
246 242 return result;
247 243 }
248 244  
249   -#ifdef CONFIG_ACPI_PROCFS
250   -static struct proc_dir_entry *acpi_processor_dir = NULL;
251   -
252   -static int __cpuinit acpi_processor_add_fs(struct acpi_device *device)
253   -{
254   - struct proc_dir_entry *entry = NULL;
255   -
256   -
257   - if (!acpi_device_dir(device)) {
258   - acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device),
259   - acpi_processor_dir);
260   - if (!acpi_device_dir(device))
261   - return -ENODEV;
262   - }
263   -
264   - /* 'throttling' [R/W] */
265   - entry = proc_create_data(ACPI_PROCESSOR_FILE_THROTTLING,
266   - S_IFREG | S_IRUGO | S_IWUSR,
267   - acpi_device_dir(device),
268   - &acpi_processor_throttling_fops,
269   - acpi_driver_data(device));
270   - if (!entry)
271   - return -EIO;
272   - return 0;
273   -}
274   -static int acpi_processor_remove_fs(struct acpi_device *device)
275   -{
276   -
277   - if (acpi_device_dir(device)) {
278   - remove_proc_entry(ACPI_PROCESSOR_FILE_THROTTLING,
279   - acpi_device_dir(device));
280   - remove_proc_entry(acpi_device_bid(device), acpi_processor_dir);
281   - acpi_device_dir(device) = NULL;
282   - }
283   -
284   - return 0;
285   -}
286   -#else
287   -static inline int acpi_processor_add_fs(struct acpi_device *device)
288   -{
289   - return 0;
290   -}
291   -static inline int acpi_processor_remove_fs(struct acpi_device *device)
292   -{
293   - return 0;
294   -}
295   -#endif
296 245 /* --------------------------------------------------------------------------
297 246 Driver Interface
298 247 -------------------------------------------------------------------------- */
299 248  
... ... @@ -537,14 +486,10 @@
537 486  
538 487 per_cpu(processors, pr->id) = pr;
539 488  
540   - result = acpi_processor_add_fs(device);
541   - if (result)
542   - goto err_free_cpumask;
543   -
544 489 sysdev = get_cpu_sysdev(pr->id);
545 490 if (sysfs_create_link(&device->dev.kobj, &sysdev->kobj, "sysdev")) {
546 491 result = -EFAULT;
547   - goto err_remove_fs;
  492 + goto err_free_cpumask;
548 493 }
549 494  
550 495 #ifdef CONFIG_CPU_FREQ
... ... @@ -590,8 +535,6 @@
590 535 thermal_cooling_device_unregister(pr->cdev);
591 536 err_power_exit:
592 537 acpi_processor_power_exit(pr, device);
593   -err_remove_fs:
594   - acpi_processor_remove_fs(device);
595 538 err_free_cpumask:
596 539 free_cpumask_var(pr->throttling.shared_cpu_map);
597 540  
... ... @@ -620,8 +563,6 @@
620 563  
621 564 sysfs_remove_link(&device->dev.kobj, "sysdev");
622 565  
623   - acpi_processor_remove_fs(device);
624   -
625 566 if (pr->cdev) {
626 567 sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
627 568 sysfs_remove_link(&pr->cdev->device.kobj, "device");
... ... @@ -854,12 +795,6 @@
854 795  
855 796 memset(&errata, 0, sizeof(errata));
856 797  
857   -#ifdef CONFIG_ACPI_PROCFS
858   - acpi_processor_dir = proc_mkdir(ACPI_PROCESSOR_CLASS, acpi_root_dir);
859   - if (!acpi_processor_dir)
860   - return -ENOMEM;
861   -#endif
862   -
863 798 if (!cpuidle_register_driver(&acpi_idle_driver)) {
864 799 printk(KERN_DEBUG "ACPI: %s registered with cpuidle\n",
865 800 acpi_idle_driver.name);
... ... @@ -885,10 +820,6 @@
885 820 out_cpuidle:
886 821 cpuidle_unregister_driver(&acpi_idle_driver);
887 822  
888   -#ifdef CONFIG_ACPI_PROCFS
889   - remove_proc_entry(ACPI_PROCESSOR_CLASS, acpi_root_dir);
890   -#endif
891   -
892 823 return result;
893 824 }
894 825  
... ... @@ -906,10 +837,6 @@
906 837 acpi_bus_unregister_driver(&acpi_processor_driver);
907 838  
908 839 cpuidle_unregister_driver(&acpi_idle_driver);
909   -
910   -#ifdef CONFIG_ACPI_PROCFS
911   - remove_proc_entry(ACPI_PROCESSOR_CLASS, acpi_root_dir);
912   -#endif
913 840  
914 841 return;
915 842 }
drivers/acpi/processor_throttling.c
... ... @@ -32,10 +32,6 @@
32 32 #include <linux/init.h>
33 33 #include <linux/sched.h>
34 34 #include <linux/cpufreq.h>
35   -#ifdef CONFIG_ACPI_PROCFS
36   -#include <linux/proc_fs.h>
37   -#include <linux/seq_file.h>
38   -#endif
39 35  
40 36 #include <asm/io.h>
41 37 #include <asm/uaccess.h>
... ... @@ -1215,115 +1211,4 @@
1215 1211  
1216 1212 return result;
1217 1213 }
1218   -
1219   -#ifdef CONFIG_ACPI_PROCFS
1220   -/* proc interface */
1221   -static int acpi_processor_throttling_seq_show(struct seq_file *seq,
1222   - void *offset)
1223   -{
1224   - struct acpi_processor *pr = seq->private;
1225   - int i = 0;
1226   - int result = 0;
1227   -
1228   - if (!pr)
1229   - goto end;
1230   -
1231   - if (!(pr->throttling.state_count > 0)) {
1232   - seq_puts(seq, "<not supported>\n");
1233   - goto end;
1234   - }
1235   -
1236   - result = acpi_processor_get_throttling(pr);
1237   -
1238   - if (result) {
1239   - seq_puts(seq,
1240   - "Could not determine current throttling state.\n");
1241   - goto end;
1242   - }
1243   -
1244   - seq_printf(seq, "state count: %d\n"
1245   - "active state: T%d\n"
1246   - "state available: T%d to T%d\n",
1247   - pr->throttling.state_count, pr->throttling.state,
1248   - pr->throttling_platform_limit,
1249   - pr->throttling.state_count - 1);
1250   -
1251   - seq_puts(seq, "states:\n");
1252   - if (pr->throttling.acpi_processor_get_throttling ==
1253   - acpi_processor_get_throttling_fadt) {
1254   - for (i = 0; i < pr->throttling.state_count; i++)
1255   - seq_printf(seq, " %cT%d: %02d%%\n",
1256   - (i == pr->throttling.state ? '*' : ' '), i,
1257   - (pr->throttling.states[i].performance ? pr->
1258   - throttling.states[i].performance / 10 : 0));
1259   - } else {
1260   - for (i = 0; i < pr->throttling.state_count; i++)
1261   - seq_printf(seq, " %cT%d: %02d%%\n",
1262   - (i == pr->throttling.state ? '*' : ' '), i,
1263   - (int)pr->throttling.states_tss[i].
1264   - freqpercentage);
1265   - }
1266   -
1267   - end:
1268   - return 0;
1269   -}
1270   -
1271   -static int acpi_processor_throttling_open_fs(struct inode *inode,
1272   - struct file *file)
1273   -{
1274   - return single_open(file, acpi_processor_throttling_seq_show,
1275   - PDE(inode)->data);
1276   -}
1277   -
1278   -static ssize_t acpi_processor_write_throttling(struct file *file,
1279   - const char __user * buffer,
1280   - size_t count, loff_t * data)
1281   -{
1282   - int result = 0;
1283   - struct seq_file *m = file->private_data;
1284   - struct acpi_processor *pr = m->private;
1285   - char state_string[5] = "";
1286   - char *charp = NULL;
1287   - size_t state_val = 0;
1288   - char tmpbuf[5] = "";
1289   -
1290   - if (!pr || (count > sizeof(state_string) - 1))
1291   - return -EINVAL;
1292   -
1293   - if (copy_from_user(state_string, buffer, count))
1294   - return -EFAULT;
1295   -
1296   - state_string[count] = '\0';
1297   - if ((count > 0) && (state_string[count-1] == '\n'))
1298   - state_string[count-1] = '\0';
1299   -
1300   - charp = state_string;
1301   - if ((state_string[0] == 't') || (state_string[0] == 'T'))
1302   - charp++;
1303   -
1304   - state_val = simple_strtoul(charp, NULL, 0);
1305   - if (state_val >= pr->throttling.state_count)
1306   - return -EINVAL;
1307   -
1308   - snprintf(tmpbuf, 5, "%zu", state_val);
1309   -
1310   - if (strcmp(tmpbuf, charp) != 0)
1311   - return -EINVAL;
1312   -
1313   - result = acpi_processor_set_throttling(pr, state_val, false);
1314   - if (result)
1315   - return result;
1316   -
1317   - return count;
1318   -}
1319   -
1320   -const struct file_operations acpi_processor_throttling_fops = {
1321   - .owner = THIS_MODULE,
1322   - .open = acpi_processor_throttling_open_fs,
1323   - .read = seq_read,
1324   - .write = acpi_processor_write_throttling,
1325   - .llseek = seq_lseek,
1326   - .release = single_release,
1327   -};
1328   -#endif
... ... @@ -484,6 +484,8 @@
484 484 const struct file_operations *state_fops,
485 485 const struct file_operations *alarm_fops, void *data)
486 486 {
  487 + printk(KERN_WARNING PREFIX "Deprecated procfs I/F for SBS is loaded,"
  488 + " please retry with CONFIG_ACPI_PROCFS_POWER cleared\n");
487 489 if (!*dir) {
488 490 *dir = proc_mkdir(dir_name, parent_dir);
489 491 if (!*dir) {