diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-09-24 15:29:13 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-10-30 02:20:53 -0400 |
commit | 188917e183cf9ad0374b571006d0fc6d48a7f447 (patch) | |
tree | b4d39a26e2b551c44e3bf18099c984ff8e2d903a | |
parent | 64eb38a6e9732f45d518b9e522d613195c930e8f (diff) |
powerpc: Move /proc/ppc64 to /proc/powerpc and add symlink
Some of the stuff in /proc/ppc64 such as the RTAS bits are actually
useful to some 32-bit platforms. Rename the file, and create a
symlink on 64-bit for backward compatibility
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/kernel/Makefile | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/lparcfg.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/proc_powerpc.c (renamed from arch/powerpc/kernel/proc_ppc64.c) | 102 | ||||
-rw-r--r-- | arch/powerpc/kernel/rtas_flash.c | 10 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/reconfig.c | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/scanlog.c | 4 |
6 files changed, 66 insertions, 62 deletions
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index b23664a0b86c..3faa39114219 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
@@ -42,7 +42,7 @@ obj-$(CONFIG_ALTIVEC) += vecemu.o | |||
42 | obj-$(CONFIG_PPC_970_NAP) += idle_power4.o | 42 | obj-$(CONFIG_PPC_970_NAP) += idle_power4.o |
43 | obj-$(CONFIG_PPC_OF) += of_device.o of_platform.o prom_parse.o | 43 | obj-$(CONFIG_PPC_OF) += of_device.o of_platform.o prom_parse.o |
44 | obj-$(CONFIG_PPC_CLOCK) += clock.o | 44 | obj-$(CONFIG_PPC_CLOCK) += clock.o |
45 | procfs-$(CONFIG_PPC64) := proc_ppc64.o | 45 | procfs-y := proc_powerpc.o |
46 | obj-$(CONFIG_PROC_FS) += $(procfs-y) | 46 | obj-$(CONFIG_PROC_FS) += $(procfs-y) |
47 | rtaspci-$(CONFIG_PPC64)-$(CONFIG_PCI) := rtas_pci.o | 47 | rtaspci-$(CONFIG_PPC64)-$(CONFIG_PCI) := rtas_pci.o |
48 | obj-$(CONFIG_PPC_RTAS) += rtas.o rtas-rtc.o $(rtaspci-y-y) | 48 | obj-$(CONFIG_PPC_RTAS) += rtas.o rtas-rtc.o $(rtaspci-y-y) |
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index ed0ac4e4b8d8..79a00bb9c64c 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -781,9 +781,9 @@ static int __init lparcfg_init(void) | |||
781 | !firmware_has_feature(FW_FEATURE_ISERIES)) | 781 | !firmware_has_feature(FW_FEATURE_ISERIES)) |
782 | mode |= S_IWUSR; | 782 | mode |= S_IWUSR; |
783 | 783 | ||
784 | ent = proc_create("ppc64/lparcfg", mode, NULL, &lparcfg_fops); | 784 | ent = proc_create("powerpc/lparcfg", mode, NULL, &lparcfg_fops); |
785 | if (!ent) { | 785 | if (!ent) { |
786 | printk(KERN_ERR "Failed to create ppc64/lparcfg\n"); | 786 | printk(KERN_ERR "Failed to create powerpc/lparcfg\n"); |
787 | return -EIO; | 787 | return -EIO; |
788 | } | 788 | } |
789 | 789 | ||
diff --git a/arch/powerpc/kernel/proc_ppc64.c b/arch/powerpc/kernel/proc_powerpc.c index c647ddef40dc..1ed3b8d7981e 100644 --- a/arch/powerpc/kernel/proc_ppc64.c +++ b/arch/powerpc/kernel/proc_powerpc.c | |||
@@ -28,55 +28,7 @@ | |||
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | #include <asm/prom.h> | 29 | #include <asm/prom.h> |
30 | 30 | ||
31 | static loff_t page_map_seek( struct file *file, loff_t off, int whence); | 31 | #ifdef CONFIG_PPC64 |
32 | static ssize_t page_map_read( struct file *file, char __user *buf, size_t nbytes, | ||
33 | loff_t *ppos); | ||
34 | static int page_map_mmap( struct file *file, struct vm_area_struct *vma ); | ||
35 | |||
36 | static const struct file_operations page_map_fops = { | ||
37 | .llseek = page_map_seek, | ||
38 | .read = page_map_read, | ||
39 | .mmap = page_map_mmap | ||
40 | }; | ||
41 | |||
42 | /* | ||
43 | * Create the ppc64 and ppc64/rtas directories early. This allows us to | ||
44 | * assume that they have been previously created in drivers. | ||
45 | */ | ||
46 | static int __init proc_ppc64_create(void) | ||
47 | { | ||
48 | struct proc_dir_entry *root; | ||
49 | |||
50 | root = proc_mkdir("ppc64", NULL); | ||
51 | if (!root) | ||
52 | return 1; | ||
53 | |||
54 | if (!of_find_node_by_path("/rtas")) | ||
55 | return 0; | ||
56 | |||
57 | if (!proc_mkdir("rtas", root)) | ||
58 | return 1; | ||
59 | |||
60 | if (!proc_symlink("rtas", NULL, "ppc64/rtas")) | ||
61 | return 1; | ||
62 | |||
63 | return 0; | ||
64 | } | ||
65 | core_initcall(proc_ppc64_create); | ||
66 | |||
67 | static int __init proc_ppc64_init(void) | ||
68 | { | ||
69 | struct proc_dir_entry *pde; | ||
70 | |||
71 | pde = proc_create_data("ppc64/systemcfg", S_IFREG|S_IRUGO, NULL, | ||
72 | &page_map_fops, vdso_data); | ||
73 | if (!pde) | ||
74 | return 1; | ||
75 | pde->size = PAGE_SIZE; | ||
76 | |||
77 | return 0; | ||
78 | } | ||
79 | __initcall(proc_ppc64_init); | ||
80 | 32 | ||
81 | static loff_t page_map_seek( struct file *file, loff_t off, int whence) | 33 | static loff_t page_map_seek( struct file *file, loff_t off, int whence) |
82 | { | 34 | { |
@@ -120,3 +72,55 @@ static int page_map_mmap( struct file *file, struct vm_area_struct *vma ) | |||
120 | return 0; | 72 | return 0; |
121 | } | 73 | } |
122 | 74 | ||
75 | static const struct file_operations page_map_fops = { | ||
76 | .llseek = page_map_seek, | ||
77 | .read = page_map_read, | ||
78 | .mmap = page_map_mmap | ||
79 | }; | ||
80 | |||
81 | |||
82 | static int __init proc_ppc64_init(void) | ||
83 | { | ||
84 | struct proc_dir_entry *pde; | ||
85 | |||
86 | pde = proc_create_data("powerpc/systemcfg", S_IFREG|S_IRUGO, NULL, | ||
87 | &page_map_fops, vdso_data); | ||
88 | if (!pde) | ||
89 | return 1; | ||
90 | pde->size = PAGE_SIZE; | ||
91 | |||
92 | return 0; | ||
93 | } | ||
94 | __initcall(proc_ppc64_init); | ||
95 | |||
96 | #endif /* CONFIG_PPC64 */ | ||
97 | |||
98 | /* | ||
99 | * Create the ppc64 and ppc64/rtas directories early. This allows us to | ||
100 | * assume that they have been previously created in drivers. | ||
101 | */ | ||
102 | static int __init proc_ppc64_create(void) | ||
103 | { | ||
104 | struct proc_dir_entry *root; | ||
105 | |||
106 | root = proc_mkdir("powerpc", NULL); | ||
107 | if (!root) | ||
108 | return 1; | ||
109 | |||
110 | #ifdef CONFIG_PPC64 | ||
111 | if (!proc_symlink("ppc64", NULL, "powerpc")) | ||
112 | pr_err("Failed to create link /proc/ppc64 -> /proc/powerpc\n"); | ||
113 | #endif | ||
114 | |||
115 | if (!of_find_node_by_path("/rtas")) | ||
116 | return 0; | ||
117 | |||
118 | if (!proc_mkdir("rtas", root)) | ||
119 | return 1; | ||
120 | |||
121 | if (!proc_symlink("rtas", NULL, "powerpc/rtas")) | ||
122 | return 1; | ||
123 | |||
124 | return 0; | ||
125 | } | ||
126 | core_initcall(proc_ppc64_create); | ||
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index 13011a96a977..a85117d5c9a4 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * as published by the Free Software Foundation; either version | 6 | * as published by the Free Software Foundation; either version |
7 | * 2 of the License, or (at your option) any later version. | 7 | * 2 of the License, or (at your option) any later version. |
8 | * | 8 | * |
9 | * /proc/ppc64/rtas/firmware_flash interface | 9 | * /proc/powerpc/rtas/firmware_flash interface |
10 | * | 10 | * |
11 | * This file implements a firmware_flash interface to pump a firmware | 11 | * This file implements a firmware_flash interface to pump a firmware |
12 | * image into the kernel. At reboot time rtas_restart() will see the | 12 | * image into the kernel. At reboot time rtas_restart() will see the |
@@ -740,7 +740,7 @@ static int __init rtas_flash_init(void) | |||
740 | return 1; | 740 | return 1; |
741 | } | 741 | } |
742 | 742 | ||
743 | firmware_flash_pde = create_flash_pde("ppc64/rtas/" | 743 | firmware_flash_pde = create_flash_pde("powerpc/rtas/" |
744 | FIRMWARE_FLASH_NAME, | 744 | FIRMWARE_FLASH_NAME, |
745 | &rtas_flash_operations); | 745 | &rtas_flash_operations); |
746 | if (firmware_flash_pde == NULL) { | 746 | if (firmware_flash_pde == NULL) { |
@@ -754,7 +754,7 @@ static int __init rtas_flash_init(void) | |||
754 | if (rc != 0) | 754 | if (rc != 0) |
755 | goto cleanup; | 755 | goto cleanup; |
756 | 756 | ||
757 | firmware_update_pde = create_flash_pde("ppc64/rtas/" | 757 | firmware_update_pde = create_flash_pde("powerpc/rtas/" |
758 | FIRMWARE_UPDATE_NAME, | 758 | FIRMWARE_UPDATE_NAME, |
759 | &rtas_flash_operations); | 759 | &rtas_flash_operations); |
760 | if (firmware_update_pde == NULL) { | 760 | if (firmware_update_pde == NULL) { |
@@ -768,7 +768,7 @@ static int __init rtas_flash_init(void) | |||
768 | if (rc != 0) | 768 | if (rc != 0) |
769 | goto cleanup; | 769 | goto cleanup; |
770 | 770 | ||
771 | validate_pde = create_flash_pde("ppc64/rtas/" VALIDATE_FLASH_NAME, | 771 | validate_pde = create_flash_pde("powerpc/rtas/" VALIDATE_FLASH_NAME, |
772 | &validate_flash_operations); | 772 | &validate_flash_operations); |
773 | if (validate_pde == NULL) { | 773 | if (validate_pde == NULL) { |
774 | rc = -ENOMEM; | 774 | rc = -ENOMEM; |
@@ -781,7 +781,7 @@ static int __init rtas_flash_init(void) | |||
781 | if (rc != 0) | 781 | if (rc != 0) |
782 | goto cleanup; | 782 | goto cleanup; |
783 | 783 | ||
784 | manage_pde = create_flash_pde("ppc64/rtas/" MANAGE_FLASH_NAME, | 784 | manage_pde = create_flash_pde("powerpc/rtas/" MANAGE_FLASH_NAME, |
785 | &manage_flash_operations); | 785 | &manage_flash_operations); |
786 | if (manage_pde == NULL) { | 786 | if (manage_pde == NULL) { |
787 | rc = -ENOMEM; | 787 | rc = -ENOMEM; |
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c index 2e2bbe120b90..5182d2b992c6 100644 --- a/arch/powerpc/platforms/pseries/reconfig.c +++ b/arch/powerpc/platforms/pseries/reconfig.c | |||
@@ -184,7 +184,7 @@ static int pSeries_reconfig_remove_node(struct device_node *np) | |||
184 | } | 184 | } |
185 | 185 | ||
186 | /* | 186 | /* |
187 | * /proc/ppc64/ofdt - yucky binary interface for adding and removing | 187 | * /proc/powerpc/ofdt - yucky binary interface for adding and removing |
188 | * OF device nodes. Should be deprecated as soon as we get an | 188 | * OF device nodes. Should be deprecated as soon as we get an |
189 | * in-kernel wrapper for the RTAS ibm,configure-connector call. | 189 | * in-kernel wrapper for the RTAS ibm,configure-connector call. |
190 | */ | 190 | */ |
@@ -543,7 +543,7 @@ static const struct file_operations ofdt_fops = { | |||
543 | .write = ofdt_write | 543 | .write = ofdt_write |
544 | }; | 544 | }; |
545 | 545 | ||
546 | /* create /proc/ppc64/ofdt write-only by root */ | 546 | /* create /proc/powerpc/ofdt write-only by root */ |
547 | static int proc_ppc64_create_ofdt(void) | 547 | static int proc_ppc64_create_ofdt(void) |
548 | { | 548 | { |
549 | struct proc_dir_entry *ent; | 549 | struct proc_dir_entry *ent; |
@@ -551,7 +551,7 @@ static int proc_ppc64_create_ofdt(void) | |||
551 | if (!machine_is(pseries)) | 551 | if (!machine_is(pseries)) |
552 | return 0; | 552 | return 0; |
553 | 553 | ||
554 | ent = proc_create("ppc64/ofdt", S_IWUSR, NULL, &ofdt_fops); | 554 | ent = proc_create("powerpc/ofdt", S_IWUSR, NULL, &ofdt_fops); |
555 | if (ent) | 555 | if (ent) |
556 | ent->size = 0; | 556 | ent->size = 0; |
557 | 557 | ||
diff --git a/arch/powerpc/platforms/pseries/scanlog.c b/arch/powerpc/platforms/pseries/scanlog.c index 417eca79df69..1b45c458f952 100644 --- a/arch/powerpc/platforms/pseries/scanlog.c +++ b/arch/powerpc/platforms/pseries/scanlog.c | |||
@@ -13,7 +13,7 @@ | |||
13 | * of this data using this driver. A dump exists if the device-tree | 13 | * of this data using this driver. A dump exists if the device-tree |
14 | * /chosen/ibm,scan-log-data property exists. | 14 | * /chosen/ibm,scan-log-data property exists. |
15 | * | 15 | * |
16 | * This driver exports /proc/ppc64/scan-log-dump which can be read. | 16 | * This driver exports /proc/powerpc/scan-log-dump which can be read. |
17 | * The driver supports only sequential reads. | 17 | * The driver supports only sequential reads. |
18 | * | 18 | * |
19 | * The driver looks at a write to the driver for the single word "reset". | 19 | * The driver looks at a write to the driver for the single word "reset". |
@@ -186,7 +186,7 @@ static int __init scanlog_init(void) | |||
186 | if (!data) | 186 | if (!data) |
187 | goto err; | 187 | goto err; |
188 | 188 | ||
189 | ent = proc_create_data("ppc64/rtas/scan-log-dump", S_IRUSR, NULL, | 189 | ent = proc_create_data("powerpc/rtas/scan-log-dump", S_IRUSR, NULL, |
190 | &scanlog_fops, data); | 190 | &scanlog_fops, data); |
191 | if (!ent) | 191 | if (!ent) |
192 | goto err; | 192 | goto err; |