Message ID | 20220928134025.1739909-6-mpe@ellerman.id.au (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | [1/6] powerpc: Add ppc_md.name to dump stack arch description | expand |
Michael Ellerman <mpe@ellerman.id.au> writes: > Add firmware version details to the dump stack arch description, which > is printed in case of an oops. > > Currently /hypervisor only exists on KVM, so if we don't find that > look for something that suggests we're on phyp and if so that's > probably a good guess. The actual content of the ibm,fw-net-version > seems to be a full path so is too long to add to the description. My only reservation is that ibm,fw-net-version seems to be unspecified and could disappear in future firmware versions. /ibm,powervm-partition would be the best PAPR-specified property for this purpose, but I don't see it on a P8/860 partition I checked, unfortunately. I do see it on a P9. Presumably it's present in device trees on PowerVM P9 systems and later, but it's probably too new to use for this. /ibm,lpar-capable "indicates that the platform is capable of supporting logical partitioning and is only present on such systems." This one is present on the P8. So consider this a weak suggestion to replace the ibm,fw-net-version check with ibm,lpar-capable. But I don't want to bikeshed it, overall the series looks good. > > eg: Hardware name: ... of:'IBM,FW860.42 (SV860_138)' hv:phyp Will this info get printed during boot as well? There are many times it would have been useful to me when looking at logs from non-oopsed kernels.
Nathan Lynch <nathanl@linux.ibm.com> writes: > Michael Ellerman <mpe@ellerman.id.au> writes: > >> Add firmware version details to the dump stack arch description, which >> is printed in case of an oops. >> >> Currently /hypervisor only exists on KVM, so if we don't find that >> look for something that suggests we're on phyp and if so that's >> probably a good guess. The actual content of the ibm,fw-net-version >> seems to be a full path so is too long to add to the description. > > My only reservation is that ibm,fw-net-version seems to be unspecified > and could disappear in future firmware versions. Yeah good point. > /ibm,powervm-partition would be the best PAPR-specified property for > this purpose, but I don't see it on a P8/860 partition I checked, > unfortunately. I do see it on a P9. Presumably it's present in device > trees on PowerVM P9 systems and later, but it's probably too new to use > for this. I'll look for both, it's easy enough. > /ibm,lpar-capable "indicates that the platform is capable of supporting > logical partitioning and is only present on such systems." This one is > present on the P8. But conceivably qemu/KVM could provide that property, which would defeat the purpose here which is to differentiate which actual hypervisor we're under. >> eg: Hardware name: ... of:'IBM,FW860.42 (SV860_138)' hv:phyp > > Will this info get printed during boot as well? There are many times it > would have been useful to me when looking at logs from non-oopsed > kernels. No it's not. But you're right that would often be useful. I think we can print it at the end of probe_machine(). I'll send a v2. cheers
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index 5e44c65a032c..f0ce8256ebb8 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,39 @@ static void __init pSeries_cmo_feature_init(void) pr_debug(" <- fw_cmo_feature_init()\n"); } +static void __init pseries_add_dump_stack_arch_desc(void) +{ + struct device_node *dn; + const char *prop; + + dn = of_find_node_by_path("/openprom"); + if (dn) { + prop = of_get_property(dn, "model", NULL); + if (prop) + seq_buf_printf(&ppc_hw_desc, "of:'%s' ", prop); + + of_node_put(dn); + } + + dn = of_find_node_by_path("/hypervisor"); + if (dn) { + prop = of_get_property(dn, "compatible", NULL); + if (prop) + seq_buf_printf(&ppc_hw_desc, "hv:%s ", prop); + + of_node_put(dn); + } else { + dn = of_find_node_by_path("/"); + if (dn) { + prop = of_get_property(dn, "ibm,fw-net-version", NULL); + if (prop) + seq_buf_printf(&ppc_hw_desc, "hv:phyp "); + + of_node_put(dn); + } + } +} + /* * Early initialization. Relocation is on but do not reference unbolted pages */ @@ -1018,6 +1052,8 @@ static void __init pseries_init(void) { pr_debug(" -> pseries_init()\n"); + pseries_add_dump_stack_arch_desc(); + #ifdef CONFIG_HVC_CONSOLE if (firmware_has_feature(FW_FEATURE_LPAR)) hvc_vio_init_early();
Add firmware version details to the dump stack arch description, which is printed in case of an oops. Currently /hypervisor only exists on KVM, so if we don't find that look for something that suggests we're on phyp and if so that's probably a good guess. The actual content of the ibm,fw-net-version seems to be a full path so is too long to add to the description. eg: Hardware name: ... of:'IBM,FW860.42 (SV860_138)' hv:phyp Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- arch/powerpc/platforms/pseries/setup.c | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+)