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

Nathan Lynch nathanl at linux.ibm.com
Fri Sep 30 08:10:16 AEST 2022


Michael Ellerman <mpe at ellerman.id.au> 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 <mpe at ellerman.id.au>
> ---
>  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:0xf000005 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:0xf000005 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 <linux/of_pci.h>
>  #include <linux/memblock.h>
>  #include <linux/swiotlb.h>
> +#include <linux/seq_buf.h>
>  
>  #include <asm/mmu.h>
>  #include <asm/processor.h>
> @@ -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", &s) == 0)
> +			seq_buf_printf(&ppc_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", &s) == 0)
> +			seq_buf_printf(&ppc_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(&ppc_hw_desc, "hv:'phyp' ");
> +}


More information about the Linuxppc-dev mailing list