|
@@ -35,7 +35,13 @@
|
|
|
#include <asm/vdso_datapage.h>
|
|
|
#include <asm/vio.h>
|
|
|
#include <asm/mmu.h>
|
|
|
+#include <asm/machdep.h>
|
|
|
|
|
|
+
|
|
|
+/*
|
|
|
+ * This isn't a module but we expose that to userspace
|
|
|
+ * via /proc so leave the definitions here
|
|
|
+ */
|
|
|
#define MODULE_VERS "1.9"
|
|
|
#define MODULE_NAME "lparcfg"
|
|
|
|
|
@@ -418,7 +424,8 @@ static void parse_em_data(struct seq_file *m)
|
|
|
{
|
|
|
unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
|
|
|
|
|
|
- if (plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS)
|
|
|
+ if (firmware_has_feature(FW_FEATURE_LPAR) &&
|
|
|
+ plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS)
|
|
|
seq_printf(m, "power_mode_data=%016lx\n", retbuf[0]);
|
|
|
}
|
|
|
|
|
@@ -677,7 +684,6 @@ static int lparcfg_open(struct inode *inode, struct file *file)
|
|
|
}
|
|
|
|
|
|
static const struct file_operations lparcfg_fops = {
|
|
|
- .owner = THIS_MODULE,
|
|
|
.read = seq_read,
|
|
|
.write = lparcfg_write,
|
|
|
.open = lparcfg_open,
|
|
@@ -699,14 +705,4 @@ static int __init lparcfg_init(void)
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
-
|
|
|
-static void __exit lparcfg_cleanup(void)
|
|
|
-{
|
|
|
- remove_proc_subtree("powerpc/lparcfg", NULL);
|
|
|
-}
|
|
|
-
|
|
|
-module_init(lparcfg_init);
|
|
|
-module_exit(lparcfg_cleanup);
|
|
|
-MODULE_DESCRIPTION("Interface for LPAR configuration data");
|
|
|
-MODULE_AUTHOR("Dave Engebretsen");
|
|
|
-MODULE_LICENSE("GPL");
|
|
|
+machine_device_initcall(pseries, lparcfg_init);
|