Re: [PATCH v2 6/6] powerpc/pseries: Add firmware details to the hardware description

2022-09-29 Thread Michael Ellerman
Nathan Lynch  writes:
> Michael Ellerman  writes:
>> Add firmware version details to the hardware description, which is
>> printed at boot and in case of an oops.
>>
>> Use /hypervisor if we find it, though currently it only exists if we're
>> running under qemu.
>>
>> Look for "ibm,powervm-partition" which is specified in PAPR+ v2.11 and
>> tells us we're running under PowerVM.
>>
>> Failing that look for "ibm,fw-net-version" which is seen on PowerVM
>> going back to at least Power6.
>>
>> eg: Hardware name: ... of:'IBM,FW860.42 (SV860_138)' hv:'phyp'
>>
>> Signed-off-by: Michael Ellerman 
>> ---
>>  arch/powerpc/platforms/pseries/setup.c | 30 ++
>>  1 file changed, 30 insertions(+)
>>
>> v2: Look for "ibm,powervm-partition" as suggested by Nathan.
>> Use of_property_read_string().
>
> LGTM.
>
> I noticed that we don't get an "of:" report with qemu+vof, because there's no
> /openprom node.
>
> $ qemu-system-ppc64 -nographic -vga none -M pseries,x-vof=off -kernel vmlinux 
> | grep Hardware
> Hardware name: model:'IBM pSeries (emulated by qemu)' cpu:'POWER9 (raw)' 
> pvr:0x4e1200 lpvr:0xf05 of:'SLOF,HEAD' machine:pSeries
> $ qemu-system-ppc64 -nographic -vga none -M pseries,x-vof=on -kernel vmlinux 
> | grep Hardware
> Hardware name: model:'IBM pSeries (emulated by qemu)' cpu:'POWER9 (raw)' 
> pvr:0x4e1200 lpvr:0xf05 machine:pSeries
> $ qemu-system-ppc64 --version
> QEMU emulator version 7.0.0 (qemu-7.0.0-6.fc36)
>
> I didn't see anything in the vof device tree that would help though.

OK. We don't boot via prom_init when booting with vof, so in that sense
there is no OF.

I think the combo of seeing qemu but no "of" is sufficient to recognise
that case.

cheers


Re: [PATCH v2 6/6] powerpc/pseries: Add firmware details to the hardware description

2022-09-29 Thread Nathan Lynch
Michael Ellerman  writes:
> Add firmware version details to the hardware description, which is
> printed at boot and in case of an oops.
>
> Use /hypervisor if we find it, though currently it only exists if we're
> running under qemu.
>
> Look for "ibm,powervm-partition" which is specified in PAPR+ v2.11 and
> tells us we're running under PowerVM.
>
> Failing that look for "ibm,fw-net-version" which is seen on PowerVM
> going back to at least Power6.
>
> eg: Hardware name: ... of:'IBM,FW860.42 (SV860_138)' hv:'phyp'
>
> Signed-off-by: Michael Ellerman 
> ---
>  arch/powerpc/platforms/pseries/setup.c | 30 ++
>  1 file changed, 30 insertions(+)
>
> v2: Look for "ibm,powervm-partition" as suggested by Nathan.
> Use of_property_read_string().

LGTM.

I noticed that we don't get an "of:" report with qemu+vof, because there's no
/openprom node.

$ qemu-system-ppc64 -nographic -vga none -M pseries,x-vof=off -kernel vmlinux | 
grep Hardware
Hardware name: model:'IBM pSeries (emulated by qemu)' cpu:'POWER9 (raw)' 
pvr:0x4e1200 lpvr:0xf05 of:'SLOF,HEAD' machine:pSeries
$ qemu-system-ppc64 -nographic -vga none -M pseries,x-vof=on -kernel vmlinux | 
grep Hardware
Hardware name: model:'IBM pSeries (emulated by qemu)' cpu:'POWER9 (raw)' 
pvr:0x4e1200 lpvr:0xf05 machine:pSeries
$ qemu-system-ppc64 --version
QEMU emulator version 7.0.0 (qemu-7.0.0-6.fc36)

I didn't see anything in the vof device tree that would help though.


> diff --git a/arch/powerpc/platforms/pseries/setup.c 
> b/arch/powerpc/platforms/pseries/setup.c
> index 5e44c65a032c..83b047db35da 100644
> --- a/arch/powerpc/platforms/pseries/setup.c
> +++ b/arch/powerpc/platforms/pseries/setup.c
> @@ -41,6 +41,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  
>  #include 
>  #include 
> @@ -1011,6 +1012,33 @@ static void __init pSeries_cmo_feature_init(void)
>   pr_debug(" <- fw_cmo_feature_init()\n");
>  }
>  
> +static void __init pseries_add_hw_description(void)
> +{
> + struct device_node *dn;
> + const char *s;
> +
> + dn = of_find_node_by_path("/openprom");
> + if (dn) {
> + if (of_property_read_string(dn, "model", ) == 0)
> + seq_buf_printf(_hw_desc, "of:'%s' ", s);
> +
> + of_node_put(dn);
> + }
> +
> + dn = of_find_node_by_path("/hypervisor");
> + if (dn) {
> + if (of_property_read_string(dn, "compatible", ) == 0)
> + seq_buf_printf(_hw_desc, "hv:'%s' ", s);
> +
> + of_node_put(dn);
> + return;
> + }
> +
> + if (of_property_read_bool(of_root, "ibm,powervm-partition") ||
> + of_property_read_bool(of_root, "ibm,fw-net-version"))
> + seq_buf_printf(_hw_desc, "hv:'phyp' ");
> +}


[PATCH v2 6/6] powerpc/pseries: Add firmware details to the hardware description

2022-09-29 Thread Michael Ellerman
Add firmware version details to the hardware description, which is
printed at boot and in case of an oops.

Use /hypervisor if we find it, though currently it only exists if we're
running under qemu.

Look for "ibm,powervm-partition" which is specified in PAPR+ v2.11 and
tells us we're running under PowerVM.

Failing that look for "ibm,fw-net-version" which is seen on PowerVM
going back to at least Power6.

eg: Hardware name: ... of:'IBM,FW860.42 (SV860_138)' hv:'phyp'

Signed-off-by: Michael Ellerman 
---
 arch/powerpc/platforms/pseries/setup.c | 30 ++
 1 file changed, 30 insertions(+)

v2: Look for "ibm,powervm-partition" as suggested by Nathan.
Use of_property_read_string().

diff --git a/arch/powerpc/platforms/pseries/setup.c 
b/arch/powerpc/platforms/pseries/setup.c
index 5e44c65a032c..83b047db35da 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -41,6 +41,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -1011,6 +1012,33 @@ static void __init pSeries_cmo_feature_init(void)
pr_debug(" <- fw_cmo_feature_init()\n");
 }
 
+static void __init pseries_add_hw_description(void)
+{
+   struct device_node *dn;
+   const char *s;
+
+   dn = of_find_node_by_path("/openprom");
+   if (dn) {
+   if (of_property_read_string(dn, "model", ) == 0)
+   seq_buf_printf(_hw_desc, "of:'%s' ", s);
+
+   of_node_put(dn);
+   }
+
+   dn = of_find_node_by_path("/hypervisor");
+   if (dn) {
+   if (of_property_read_string(dn, "compatible", ) == 0)
+   seq_buf_printf(_hw_desc, "hv:'%s' ", s);
+
+   of_node_put(dn);
+   return;
+   }
+
+   if (of_property_read_bool(of_root, "ibm,powervm-partition") ||
+   of_property_read_bool(of_root, "ibm,fw-net-version"))
+   seq_buf_printf(_hw_desc, "hv:'phyp' ");
+}
+
 /*
  * Early initialization.  Relocation is on but do not reference unbolted pages
  */
@@ -1018,6 +1046,8 @@ static void __init pseries_init(void)
 {
pr_debug(" -> pseries_init()\n");
 
+   pseries_add_hw_description();
+
 #ifdef CONFIG_HVC_CONSOLE
if (firmware_has_feature(FW_FEATURE_LPAR))
hvc_vio_init_early();
-- 
2.37.3



[PATCH v2 6/6] powerpc/pseries: Add firmware details to the hardware description

2022-09-29 Thread Michael Ellerman
Add firmware version details to the hardware description, which is
printed at boot and in case of an oops.

Use /hypervisor if we find it, though currently it only exists if we're
running under qemu.

Look for "ibm,powervm-partition" which is specified in PAPR+ v2.11 and
tells us we're running under PowerVM.

Failing that look for "ibm,fw-net-version" which is seen on PowerVM
going back to at least Power6.

eg: Hardware name: ... of:'IBM,FW860.42 (SV860_138)' hv:'phyp'

Signed-off-by: Michael Ellerman 
---
 arch/powerpc/platforms/pseries/setup.c | 30 ++
 1 file changed, 30 insertions(+)

v2: Look for "ibm,powervm-partition" as suggested by Nathan.
Use of_property_read_string().

diff --git a/arch/powerpc/platforms/pseries/setup.c 
b/arch/powerpc/platforms/pseries/setup.c
index 5e44c65a032c..83b047db35da 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -1018,6 +1046,8 @@ static void __init pseries_init(void)
 {
pr_debug(" -> pseries_init()\n");
 
+   pseries_add_hw_description();
+
 #ifdef CONFIG_HVC_CONSOLE
if (firmware_has_feature(FW_FEATURE_LPAR))
hvc_vio_init_early();
-- 
2.37.3