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: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 64eb38a6
...@@ -42,7 +42,7 @@ obj-$(CONFIG_ALTIVEC) += vecemu.o ...@@ -42,7 +42,7 @@ obj-$(CONFIG_ALTIVEC) += vecemu.o
obj-$(CONFIG_PPC_970_NAP) += idle_power4.o obj-$(CONFIG_PPC_970_NAP) += idle_power4.o
obj-$(CONFIG_PPC_OF) += of_device.o of_platform.o prom_parse.o obj-$(CONFIG_PPC_OF) += of_device.o of_platform.o prom_parse.o
obj-$(CONFIG_PPC_CLOCK) += clock.o obj-$(CONFIG_PPC_CLOCK) += clock.o
procfs-$(CONFIG_PPC64) := proc_ppc64.o procfs-y := proc_powerpc.o
obj-$(CONFIG_PROC_FS) += $(procfs-y) obj-$(CONFIG_PROC_FS) += $(procfs-y)
rtaspci-$(CONFIG_PPC64)-$(CONFIG_PCI) := rtas_pci.o rtaspci-$(CONFIG_PPC64)-$(CONFIG_PCI) := rtas_pci.o
obj-$(CONFIG_PPC_RTAS) += rtas.o rtas-rtc.o $(rtaspci-y-y) obj-$(CONFIG_PPC_RTAS) += rtas.o rtas-rtc.o $(rtaspci-y-y)
......
...@@ -781,9 +781,9 @@ static int __init lparcfg_init(void) ...@@ -781,9 +781,9 @@ static int __init lparcfg_init(void)
!firmware_has_feature(FW_FEATURE_ISERIES)) !firmware_has_feature(FW_FEATURE_ISERIES))
mode |= S_IWUSR; mode |= S_IWUSR;
ent = proc_create("ppc64/lparcfg", mode, NULL, &lparcfg_fops); ent = proc_create("powerpc/lparcfg", mode, NULL, &lparcfg_fops);
if (!ent) { if (!ent) {
printk(KERN_ERR "Failed to create ppc64/lparcfg\n"); printk(KERN_ERR "Failed to create powerpc/lparcfg\n");
return -EIO; return -EIO;
} }
......
...@@ -28,55 +28,7 @@ ...@@ -28,55 +28,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/prom.h> #include <asm/prom.h>
static loff_t page_map_seek( struct file *file, loff_t off, int whence); #ifdef CONFIG_PPC64
static ssize_t page_map_read( struct file *file, char __user *buf, size_t nbytes,
loff_t *ppos);
static int page_map_mmap( struct file *file, struct vm_area_struct *vma );
static const struct file_operations page_map_fops = {
.llseek = page_map_seek,
.read = page_map_read,
.mmap = page_map_mmap
};
/*
* Create the ppc64 and ppc64/rtas directories early. This allows us to
* assume that they have been previously created in drivers.
*/
static int __init proc_ppc64_create(void)
{
struct proc_dir_entry *root;
root = proc_mkdir("ppc64", NULL);
if (!root)
return 1;
if (!of_find_node_by_path("/rtas"))
return 0;
if (!proc_mkdir("rtas", root))
return 1;
if (!proc_symlink("rtas", NULL, "ppc64/rtas"))
return 1;
return 0;
}
core_initcall(proc_ppc64_create);
static int __init proc_ppc64_init(void)
{
struct proc_dir_entry *pde;
pde = proc_create_data("ppc64/systemcfg", S_IFREG|S_IRUGO, NULL,
&page_map_fops, vdso_data);
if (!pde)
return 1;
pde->size = PAGE_SIZE;
return 0;
}
__initcall(proc_ppc64_init);
static loff_t page_map_seek( struct file *file, loff_t off, int whence) static loff_t page_map_seek( struct file *file, loff_t off, int whence)
{ {
...@@ -120,3 +72,55 @@ static int page_map_mmap( struct file *file, struct vm_area_struct *vma ) ...@@ -120,3 +72,55 @@ static int page_map_mmap( struct file *file, struct vm_area_struct *vma )
return 0; return 0;
} }
static const struct file_operations page_map_fops = {
.llseek = page_map_seek,
.read = page_map_read,
.mmap = page_map_mmap
};
static int __init proc_ppc64_init(void)
{
struct proc_dir_entry *pde;
pde = proc_create_data("powerpc/systemcfg", S_IFREG|S_IRUGO, NULL,
&page_map_fops, vdso_data);
if (!pde)
return 1;
pde->size = PAGE_SIZE;
return 0;
}
__initcall(proc_ppc64_init);
#endif /* CONFIG_PPC64 */
/*
* Create the ppc64 and ppc64/rtas directories early. This allows us to
* assume that they have been previously created in drivers.
*/
static int __init proc_ppc64_create(void)
{
struct proc_dir_entry *root;
root = proc_mkdir("powerpc", NULL);
if (!root)
return 1;
#ifdef CONFIG_PPC64
if (!proc_symlink("ppc64", NULL, "powerpc"))
pr_err("Failed to create link /proc/ppc64 -> /proc/powerpc\n");
#endif
if (!of_find_node_by_path("/rtas"))
return 0;
if (!proc_mkdir("rtas", root))
return 1;
if (!proc_symlink("rtas", NULL, "powerpc/rtas"))
return 1;
return 0;
}
core_initcall(proc_ppc64_create);
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* as published by the Free Software Foundation; either version * as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version. * 2 of the License, or (at your option) any later version.
* *
* /proc/ppc64/rtas/firmware_flash interface * /proc/powerpc/rtas/firmware_flash interface
* *
* This file implements a firmware_flash interface to pump a firmware * This file implements a firmware_flash interface to pump a firmware
* image into the kernel. At reboot time rtas_restart() will see the * image into the kernel. At reboot time rtas_restart() will see the
...@@ -740,7 +740,7 @@ static int __init rtas_flash_init(void) ...@@ -740,7 +740,7 @@ static int __init rtas_flash_init(void)
return 1; return 1;
} }
firmware_flash_pde = create_flash_pde("ppc64/rtas/" firmware_flash_pde = create_flash_pde("powerpc/rtas/"
FIRMWARE_FLASH_NAME, FIRMWARE_FLASH_NAME,
&rtas_flash_operations); &rtas_flash_operations);
if (firmware_flash_pde == NULL) { if (firmware_flash_pde == NULL) {
...@@ -754,7 +754,7 @@ static int __init rtas_flash_init(void) ...@@ -754,7 +754,7 @@ static int __init rtas_flash_init(void)
if (rc != 0) if (rc != 0)
goto cleanup; goto cleanup;
firmware_update_pde = create_flash_pde("ppc64/rtas/" firmware_update_pde = create_flash_pde("powerpc/rtas/"
FIRMWARE_UPDATE_NAME, FIRMWARE_UPDATE_NAME,
&rtas_flash_operations); &rtas_flash_operations);
if (firmware_update_pde == NULL) { if (firmware_update_pde == NULL) {
...@@ -768,7 +768,7 @@ static int __init rtas_flash_init(void) ...@@ -768,7 +768,7 @@ static int __init rtas_flash_init(void)
if (rc != 0) if (rc != 0)
goto cleanup; goto cleanup;
validate_pde = create_flash_pde("ppc64/rtas/" VALIDATE_FLASH_NAME, validate_pde = create_flash_pde("powerpc/rtas/" VALIDATE_FLASH_NAME,
&validate_flash_operations); &validate_flash_operations);
if (validate_pde == NULL) { if (validate_pde == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
...@@ -781,7 +781,7 @@ static int __init rtas_flash_init(void) ...@@ -781,7 +781,7 @@ static int __init rtas_flash_init(void)
if (rc != 0) if (rc != 0)
goto cleanup; goto cleanup;
manage_pde = create_flash_pde("ppc64/rtas/" MANAGE_FLASH_NAME, manage_pde = create_flash_pde("powerpc/rtas/" MANAGE_FLASH_NAME,
&manage_flash_operations); &manage_flash_operations);
if (manage_pde == NULL) { if (manage_pde == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
......
...@@ -184,7 +184,7 @@ static int pSeries_reconfig_remove_node(struct device_node *np) ...@@ -184,7 +184,7 @@ static int pSeries_reconfig_remove_node(struct device_node *np)
} }
/* /*
* /proc/ppc64/ofdt - yucky binary interface for adding and removing * /proc/powerpc/ofdt - yucky binary interface for adding and removing
* OF device nodes. Should be deprecated as soon as we get an * OF device nodes. Should be deprecated as soon as we get an
* in-kernel wrapper for the RTAS ibm,configure-connector call. * in-kernel wrapper for the RTAS ibm,configure-connector call.
*/ */
...@@ -543,7 +543,7 @@ static const struct file_operations ofdt_fops = { ...@@ -543,7 +543,7 @@ static const struct file_operations ofdt_fops = {
.write = ofdt_write .write = ofdt_write
}; };
/* create /proc/ppc64/ofdt write-only by root */ /* create /proc/powerpc/ofdt write-only by root */
static int proc_ppc64_create_ofdt(void) static int proc_ppc64_create_ofdt(void)
{ {
struct proc_dir_entry *ent; struct proc_dir_entry *ent;
...@@ -551,7 +551,7 @@ static int proc_ppc64_create_ofdt(void) ...@@ -551,7 +551,7 @@ static int proc_ppc64_create_ofdt(void)
if (!machine_is(pseries)) if (!machine_is(pseries))
return 0; return 0;
ent = proc_create("ppc64/ofdt", S_IWUSR, NULL, &ofdt_fops); ent = proc_create("powerpc/ofdt", S_IWUSR, NULL, &ofdt_fops);
if (ent) if (ent)
ent->size = 0; ent->size = 0;
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* of this data using this driver. A dump exists if the device-tree * of this data using this driver. A dump exists if the device-tree
* /chosen/ibm,scan-log-data property exists. * /chosen/ibm,scan-log-data property exists.
* *
* This driver exports /proc/ppc64/scan-log-dump which can be read. * This driver exports /proc/powerpc/scan-log-dump which can be read.
* The driver supports only sequential reads. * The driver supports only sequential reads.
* *
* The driver looks at a write to the driver for the single word "reset". * 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,7 +186,7 @@ static int __init scanlog_init(void)
if (!data) if (!data)
goto err; goto err;
ent = proc_create_data("ppc64/rtas/scan-log-dump", S_IRUSR, NULL, ent = proc_create_data("powerpc/rtas/scan-log-dump", S_IRUSR, NULL,
&scanlog_fops, data); &scanlog_fops, data);
if (!ent) if (!ent)
goto err; goto err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment