diff mbox series

[1/6] powerpc: Add ppc_md.name to dump stack arch description

Message ID 20220928134025.1739909-1-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

Commit Message

Michael Ellerman Sept. 28, 2022, 1:40 p.m. UTC
As soon as we know the name of the machine description we're using,
add it to the dump stack arch description, which is printed in case of
an oops.

eg: Hardware name: ... machine:pSeries

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/include/asm/setup.h   |  2 ++
 arch/powerpc/kernel/setup-common.c | 14 ++++++++++++++
 2 files changed, 16 insertions(+)

Comments

Nathan Lynch Sept. 28, 2022, 8:35 p.m. UTC | #1
Michael Ellerman <mpe@ellerman.id.au> writes:
> @@ -588,6 +590,15 @@ static __init int add_pcspkr(void)
>  device_initcall(add_pcspkr);
>  #endif	/* CONFIG_PCSPKR_PLATFORM */
>  
> +static char ppc_hw_desc_buf[128] __initdata;
> +
> +struct seq_buf ppc_hw_desc __initdata = {
> +	.buffer = ppc_hw_desc_buf,
> +	.size = sizeof(ppc_hw_desc_buf),
> +	.len = 0,
> +	.readpos = 0,
> +};
> +
>  static __init void probe_machine(void)
>  {
>  	extern struct machdep_calls __machine_desc_start;
> @@ -628,6 +639,9 @@ static __init void probe_machine(void)
>  		for (;;);
>  	}
>  
> +	seq_buf_printf(&ppc_hw_desc,"machine:%s ", ppc_md.name);
> +	dump_stack_set_arch_desc(ppc_hw_desc.buffer);

At first I was confused by the seemingly unnecessary use of the seq_buf,
but after reading the rest of the series I see that this is the final
addition to a temporary buffer before setting the arch description
string. Looks OK to me.
diff mbox series

Patch

diff --git a/arch/powerpc/include/asm/setup.h b/arch/powerpc/include/asm/setup.h
index 85143849a586..e29e83f8a89c 100644
--- a/arch/powerpc/include/asm/setup.h
+++ b/arch/powerpc/include/asm/setup.h
@@ -88,6 +88,8 @@  unsigned long __init prom_init(unsigned long r3, unsigned long r4,
 			       unsigned long pp, unsigned long r6,
 			       unsigned long r7, unsigned long kbase);
 
+extern struct seq_buf ppc_hw_desc;
+
 #endif /* !__ASSEMBLY__ */
 
 #endif	/* _ASM_POWERPC_SETUP_H */
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index dd98f43bd685..42279c3f1d31 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -18,6 +18,7 @@ 
 #include <linux/delay.h>
 #include <linux/initrd.h>
 #include <linux/platform_device.h>
+#include <linux/printk.h>
 #include <linux/seq_file.h>
 #include <linux/ioport.h>
 #include <linux/console.h>
@@ -25,6 +26,7 @@ 
 #include <linux/root_dev.h>
 #include <linux/cpu.h>
 #include <linux/unistd.h>
+#include <linux/seq_buf.h>
 #include <linux/serial.h>
 #include <linux/serial_8250.h>
 #include <linux/percpu.h>
@@ -588,6 +590,15 @@  static __init int add_pcspkr(void)
 device_initcall(add_pcspkr);
 #endif	/* CONFIG_PCSPKR_PLATFORM */
 
+static char ppc_hw_desc_buf[128] __initdata;
+
+struct seq_buf ppc_hw_desc __initdata = {
+	.buffer = ppc_hw_desc_buf,
+	.size = sizeof(ppc_hw_desc_buf),
+	.len = 0,
+	.readpos = 0,
+};
+
 static __init void probe_machine(void)
 {
 	extern struct machdep_calls __machine_desc_start;
@@ -628,6 +639,9 @@  static __init void probe_machine(void)
 		for (;;);
 	}
 
+	seq_buf_printf(&ppc_hw_desc,"machine:%s ", ppc_md.name);
+	dump_stack_set_arch_desc(ppc_hw_desc.buffer);
+
 	printk(KERN_INFO "Using %s machine description\n", ppc_md.name);
 }