* [PATCH v3 2/6] powerpc: Add PVR & CPU name to hardware description
2022-09-30 8:27 [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
@ 2022-09-30 8:27 ` Michael Ellerman
2022-09-30 8:27 ` [PATCH v3 3/6] powerpc/64: Add logical PVR to the " Michael Ellerman
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2022-09-30 8:27 UTC (permalink / raw)
To: linuxppc-dev; +Cc: nathanl
Add the PVR and CPU name to the hardware description, which is printed
at boot and in case of an oops.
eg: Hardware name: ... POWER8E (raw) 0x4b0201
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/kernel/prom.c | 4 ++++
1 file changed, 4 insertions(+)
v3: Drop "cpu:" and "pvr:" tags for brevity.
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 2e7a04dab2f7..09f07cc57216 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -30,6 +30,7 @@
#include <linux/libfdt.h>
#include <linux/cpu.h>
#include <linux/pgtable.h>
+#include <linux/seq_buf.h>
#include <asm/rtas.h>
#include <asm/page.h>
@@ -819,6 +820,9 @@ void __init early_init_devtree(void *params)
dt_cpu_ftrs_scan();
+ // We can now add the CPU name & PVR to the hardware description
+ seq_buf_printf(&ppc_hw_desc, "%s 0x%04lx ", cur_cpu_spec->cpu_name, mfspr(SPRN_PVR));
+
/* Retrieve CPU related informations from the flat tree
* (altivec support, boot CPU ID, ...)
*/
--
2.37.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 3/6] powerpc/64: Add logical PVR to the hardware description
2022-09-30 8:27 [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
2022-09-30 8:27 ` [PATCH v3 2/6] powerpc: Add PVR & CPU name to hardware description Michael Ellerman
@ 2022-09-30 8:27 ` Michael Ellerman
2022-09-30 8:27 ` [PATCH v3 4/6] powerpc: Add device-tree model " Michael Ellerman
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2022-09-30 8:27 UTC (permalink / raw)
To: linuxppc-dev; +Cc: nathanl
If we detect a logical PVR add that to the hardware description, which
is printed at boot and in case of an oops.
eg: Hardware name: ... 0xf000004
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/kernel/prom.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
v3: Drop "lpvr:" tag for brevity.
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 09f07cc57216..83fc72202838 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -390,8 +390,10 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
*/
if (!dt_cpu_ftrs_in_use()) {
prop = of_get_flat_dt_prop(node, "cpu-version", NULL);
- if (prop && (be32_to_cpup(prop) & 0xff000000) == 0x0f000000)
+ if (prop && (be32_to_cpup(prop) & 0xff000000) == 0x0f000000) {
identify_cpu(0, be32_to_cpup(prop));
+ seq_buf_printf(&ppc_hw_desc, "0x%04x ", be32_to_cpup(prop));
+ }
check_cpu_feature_properties(node);
check_cpu_features(node, "ibm,pa-features", ibm_pa_features,
--
2.37.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 4/6] powerpc: Add device-tree model to the hardware description
2022-09-30 8:27 [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
2022-09-30 8:27 ` [PATCH v3 2/6] powerpc: Add PVR & CPU name to hardware description Michael Ellerman
2022-09-30 8:27 ` [PATCH v3 3/6] powerpc/64: Add logical PVR to the " Michael Ellerman
@ 2022-09-30 8:27 ` Michael Ellerman
2022-09-30 8:27 ` [PATCH v3 5/6] powerpc/powernv: Add opal details " Michael Ellerman
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2022-09-30 8:27 UTC (permalink / raw)
To: linuxppc-dev; +Cc: nathanl
Add the model of the machine we're on to the hardware description, which
is printed at boot and in case of an oops.
eg: Hardware name: IBM,8247-22L
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/kernel/prom.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
v3: Drop "model:" tag for brevity.
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 83fc72202838..1eed87d954ba 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -715,6 +715,23 @@ static void __init tm_init(void)
static void tm_init(void) { }
#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
+static int __init
+early_init_dt_scan_model(unsigned long node, const char *uname,
+ int depth, void *data)
+{
+ const char *prop;
+
+ if (depth != 0)
+ return 0;
+
+ prop = of_get_flat_dt_prop(node, "model", NULL);
+ if (prop)
+ seq_buf_printf(&ppc_hw_desc, "%s ", prop);
+
+ /* break now */
+ return 1;
+}
+
#ifdef CONFIG_PPC64
static void __init save_fscr_to_task(void)
{
@@ -743,6 +760,8 @@ void __init early_init_devtree(void *params)
if (!early_init_dt_verify(params))
panic("BUG: Failed verifying flat device tree, bad version?");
+ of_scan_flat_dt(early_init_dt_scan_model, NULL);
+
#ifdef CONFIG_PPC_RTAS
/* Some machines might need RTAS info for debugging, grab it now. */
of_scan_flat_dt(early_init_dt_scan_rtas, NULL);
--
2.37.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 5/6] powerpc/powernv: Add opal details to the hardware description
2022-09-30 8:27 [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
` (2 preceding siblings ...)
2022-09-30 8:27 ` [PATCH v3 4/6] powerpc: Add device-tree model " Michael Ellerman
@ 2022-09-30 8:27 ` Michael Ellerman
2022-09-30 8:27 ` [PATCH v3 6/6] powerpc/pseries: Add firmware " Michael Ellerman
2022-10-04 13:26 ` [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
5 siblings, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2022-09-30 8:27 UTC (permalink / raw)
To: linuxppc-dev; +Cc: nathanl
Add OPAL version details to the hardware description, which is printed
at boot and in case of an oops.
eg: Hardware name: ... opal:v6.2
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/platforms/powernv/setup.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
v3: Drop quotes for brevity.
diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c
index dac545aa0308..61ab2d38ff4b 100644
--- a/arch/powerpc/platforms/powernv/setup.c
+++ b/arch/powerpc/platforms/powernv/setup.c
@@ -17,6 +17,7 @@
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/irq.h>
+#include <linux/seq_buf.h>
#include <linux/seq_file.h>
#include <linux/of.h>
#include <linux/of_fdt.h>
@@ -207,8 +208,29 @@ static void __init pnv_setup_arch(void)
pnv_rng_init();
}
+static void __init pnv_add_hw_description(void)
+{
+ struct device_node *dn;
+ const char *s;
+
+ dn = of_find_node_by_path("/ibm,opal/firmware");
+ if (!dn)
+ return;
+
+ if (of_property_read_string(dn, "version", &s) == 0 ||
+ of_property_read_string(dn, "git-id", &s) == 0)
+ seq_buf_printf(&ppc_hw_desc, "opal:%s ", s);
+
+ if (of_property_read_string(dn, "mi-version", &s) == 0)
+ seq_buf_printf(&ppc_hw_desc, "mi:%s ", s);
+
+ of_node_put(dn);
+}
+
static void __init pnv_init(void)
{
+ pnv_add_hw_description();
+
/*
* Initialize the LPC bus now so that legacy serial
* ports can be found on it
--
2.37.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 6/6] powerpc/pseries: Add firmware details to the hardware description
2022-09-30 8:27 [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
` (3 preceding siblings ...)
2022-09-30 8:27 ` [PATCH v3 5/6] powerpc/powernv: Add opal details " Michael Ellerman
@ 2022-09-30 8:27 ` Michael Ellerman
2022-10-04 13:26 ` [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
5 siblings, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2022-09-30 8:27 UTC (permalink / raw)
To: linuxppc-dev; +Cc: nathanl
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@ellerman.id.au>
---
arch/powerpc/platforms/pseries/setup.c | 30 ++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
v3: Drop quotes for brevity.
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index 5e44c65a032c..8ef3270515a9 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 ");
+}
+
/*
* 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
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/6] powerpc: Add hardware description string
2022-09-30 8:27 [PATCH v3 1/6] powerpc: Add hardware description string Michael Ellerman
` (4 preceding siblings ...)
2022-09-30 8:27 ` [PATCH v3 6/6] powerpc/pseries: Add firmware " Michael Ellerman
@ 2022-10-04 13:26 ` Michael Ellerman
5 siblings, 0 replies; 7+ messages in thread
From: Michael Ellerman @ 2022-10-04 13:26 UTC (permalink / raw)
To: linuxppc-dev, Michael Ellerman; +Cc: nathanl
On Fri, 30 Sep 2022 18:27:04 +1000, Michael Ellerman wrote:
> Create a hardware description string, which we will use to record
> various details of the hardware platform we are running on.
>
> Print the accumulated description at boot, and use it to set the generic
> description which is printed in oopses.
>
> To begin with add ppc_md.name, aka the "machine description".
>
> [...]
Applied to powerpc/next.
[1/6] powerpc: Add hardware description string
https://git.kernel.org/powerpc/c/41dc056391b334fae646b55ee020bfa8f67b60c8
[2/6] powerpc: Add PVR & CPU name to hardware description
https://git.kernel.org/powerpc/c/bd649d40e0f2ffa1e16b4dbb93dc627177410e78
[3/6] powerpc/64: Add logical PVR to the hardware description
https://git.kernel.org/powerpc/c/48b7019b6abd029d3800620bb53f0ae3ca052441
[4/6] powerpc: Add device-tree model to the hardware description
https://git.kernel.org/powerpc/c/541229707970ff2ad3f7705b1dbd025d7cc9bc48
[5/6] powerpc/powernv: Add opal details to the hardware description
https://git.kernel.org/powerpc/c/37576cb0961fe9d3318c17e4e4bc5ecebf38e9bb
[6/6] powerpc/pseries: Add firmware details to the hardware description
https://git.kernel.org/powerpc/c/8535a1afff0f4f568eb589f3795a930ef3d483b0
cheers
^ permalink raw reply [flat|nested] 7+ messages in thread