From: Nicolas DET <nd@bplan-gmbh•de>
To: Arnd Bergmann <arnd@arndb•de>
Cc: akpm@osdl•org, linuxppc-dev@ozlabs•org,
Sven Luther <sl@bplan-gmbh•de>,
tilmann@bitterberg•de
Subject: Re: [PATCH] enable RTAS /proc for PowerPC/CHRP platform
Date: Fri, 20 Oct 2006 10:13:37 +0200 [thread overview]
Message-ID: <45388531.4090005@bplan-gmbh.de> (raw)
In-Reply-To: <200610180022.24631.arnd@arndb.de>
[-- Attachment #1: Type: text/plain, Size: 1341 bytes --]
Arnd Bergmann wrote:
> On Tuesday 17 October 2006 15:22, Christoph Hellwig wrote:
>>> rtas_node = of_find_node_by_name(NULL, "rtas");
>>> if (rtas_node == NULL)
>>> return -ENODEV;
>> And given this check I wonder why we need the platform check at all. It
>> should be safe to just remove it.
>>
> One difference would be that it triggers on machines running SLOF
(QS20, some JS20/JS21) and maybe some older Macs, which is probably a good
> thing.
>
> I wonder if it should be a little stricter though:
>
>> rtas_node = of_find_node_by_path("/rtas");
>> if (!rtas_node)
>> return -ENODEV;
>
> In case there is a node called "rtas" somewhere else.
>
> Arnd <><
>
Maybe we could check for the RTAS revision. The CHRP manual define this
properties 'rtas-version' in /rtas/. This should be 1 for current
implementation.
You can find here a new patch. It does not create the /proc/rtas and the
symlink /proc/ppc64/rtas in arch/powerpc/kernel/proc_ppc64.c anymore
but rather create the entry (/proc/rtas) in
arch/powerpc/kernel/rtas-proc.c and only the ppc64/ratas link for 64bit
machine.
This has been tested on our PowerPC 32bit machine. It would be nice if
PowerPC64 developer could reveiw and test it.
I stay ready to test upcomming patch if required.
Regards
[-- Attachment #2: rtas_proc.patch --]
[-- Type: text/plain, Size: 2984 bytes --]
diff -uprN a/arch/powerpc/kernel/proc_ppc64.c b/arch/powerpc/kernel/proc_ppc64.c
--- a/arch/powerpc/kernel/proc_ppc64.c 2006-10-14 05:34:03.000000000 +0200
+++ b/arch/powerpc/kernel/proc_ppc64.c 2006-10-20 08:32:20.000000000 +0200
@@ -51,15 +51,6 @@ static int __init proc_ppc64_create(void
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);
diff -uprN a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
--- a/arch/powerpc/kernel/rtas-proc.c 2006-10-14 05:34:03.000000000 +0200
+++ b/arch/powerpc/kernel/rtas-proc.c 2006-10-20 08:22:57.000000000 +0200
@@ -253,43 +253,60 @@ static void get_location_code(struct seq
static void check_location_string(struct seq_file *m, char *c);
static void check_location(struct seq_file *m, char *c);
+static int __init proc_rtas_create(void)
+{
+ struct proc_dir_entry *root;
+
+ root = proc_mkdir("rtas" , NULL);
+ if (!root)
+ return -1;
+
+
+#ifdef CONFIG_PPC64
+ if (!proc_symlink("rtas", NULL, "ppc64/rtas"))
+ return -1;
+#endif
+
+ return 0;
+}
+
static int __init proc_rtas_init(void)
{
struct proc_dir_entry *entry;
- if (!machine_is(pseries))
- return -ENODEV;
-
rtas_node = of_find_node_by_name(NULL, "rtas");
if (rtas_node == NULL)
return -ENODEV;
- entry = create_proc_entry("ppc64/rtas/progress", S_IRUGO|S_IWUSR, NULL);
+ if (proc_rtas_create() != 0)
+ return -ENODEV;
+
+ entry = create_proc_entry("/rtas/progress", S_IRUGO|S_IWUSR, NULL);
if (entry)
entry->proc_fops = &ppc_rtas_progress_operations;
- entry = create_proc_entry("ppc64/rtas/clock", S_IRUGO|S_IWUSR, NULL);
+ entry = create_proc_entry("/rtas/clock", S_IRUGO|S_IWUSR, NULL);
if (entry)
entry->proc_fops = &ppc_rtas_clock_operations;
- entry = create_proc_entry("ppc64/rtas/poweron", S_IWUSR|S_IRUGO, NULL);
+ entry = create_proc_entry("/rtas/poweron", S_IWUSR|S_IRUGO, NULL);
if (entry)
entry->proc_fops = &ppc_rtas_poweron_operations;
- entry = create_proc_entry("ppc64/rtas/sensors", S_IRUGO, NULL);
+ entry = create_proc_entry("/rtas/sensors", S_IRUGO, NULL);
if (entry)
entry->proc_fops = &ppc_rtas_sensors_operations;
- entry = create_proc_entry("ppc64/rtas/frequency", S_IWUSR|S_IRUGO,
+ entry = create_proc_entry("/rtas/frequency", S_IWUSR|S_IRUGO,
NULL);
if (entry)
entry->proc_fops = &ppc_rtas_tone_freq_operations;
- entry = create_proc_entry("ppc64/rtas/volume", S_IWUSR|S_IRUGO, NULL);
+ entry = create_proc_entry("/rtas/volume", S_IWUSR|S_IRUGO, NULL);
if (entry)
entry->proc_fops = &ppc_rtas_tone_volume_operations;
- entry = create_proc_entry("ppc64/rtas/rmo_buffer", S_IRUSR, NULL);
+ entry = create_proc_entry("/rtas/rmo_buffer", S_IRUSR, NULL);
if (entry)
entry->proc_fops = &ppc_rtas_rmo_buf_ops;
[-- Attachment #3: nd.vcf --]
[-- Type: text/x-vcard, Size: 249 bytes --]
begin:vcard
fn:Nicolas DET ( bplan GmbH )
n:DET;Nicolas
org:bplan GmbH
adr:;;;;;;Germany
email;internet:nd@bplan-gmbh•de
title:Software Entwicklung
tel;work:+49 6171 9187 - 31
x-mozilla-html:FALSE
url:http://www.bplan-gmbh.de
version:2.1
end:vcard
next prev parent reply other threads:[~2006-10-20 8:16 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-17 11:29 [PATCH] enable RTAS /proc for PowerPC/CHRP platform Nicolas DET
2006-10-17 13:22 ` Christoph Hellwig
2006-10-17 22:22 ` Arnd Bergmann
2006-10-18 22:39 ` Benjamin Herrenschmidt
2006-10-20 8:13 ` Nicolas DET [this message]
2006-10-18 5:51 ` Nicolas DET
2006-10-18 6:05 ` Sven Luther
2006-10-18 6:15 ` Michael Ellerman
2006-10-18 6:34 ` Nicolas DET
2006-10-18 7:38 ` Olaf Hering
2006-10-18 22:38 ` Benjamin Herrenschmidt
2006-10-19 7:03 ` Olaf Hering
2006-10-19 23:35 ` Benjamin Herrenschmidt
2006-10-20 5:44 ` Olaf Hering
2006-10-20 5:56 ` Benjamin Herrenschmidt
2006-10-20 6:24 ` Sven Luther
2006-10-20 6:44 ` Olaf Hering
2006-10-20 6:58 ` Sven Luther
2006-10-20 7:12 ` Benjamin Herrenschmidt
2006-10-20 7:36 ` Sven Luther
2006-10-20 8:16 ` Benjamin Herrenschmidt
2006-10-20 7:20 ` Olaf Hering
2006-10-20 7:37 ` Sven Luther
2006-10-20 7:49 ` Olaf Hering
2006-10-20 8:12 ` Segher Boessenkool
2006-10-20 8:52 ` Sven Luther
2006-10-20 10:00 ` Olaf Hering
2006-10-20 13:59 ` Segher Boessenkool
2006-10-20 7:11 ` Benjamin Herrenschmidt
2006-10-20 7:14 ` Olaf Hering
2006-10-20 7:36 ` Benjamin Herrenschmidt
2006-10-20 10:01 ` Paul Mackerras
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45388531.4090005@bplan-gmbh.de \
--to=nd@bplan-gmbh$(echo .)de \
--cc=akpm@osdl$(echo .)org \
--cc=arnd@arndb$(echo .)de \
--cc=linuxppc-dev@ozlabs$(echo .)org \
--cc=sl@bplan-gmbh$(echo .)de \
--cc=tilmann@bitterberg$(echo .)de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox