Message ID | 20220930082709.55830-1-mpe@ellerman.id.au (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [v3,1/6] powerpc: Add hardware description string | expand |
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
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..6d041993a45d 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,7 +639,13 @@ static __init void probe_machine(void) for (;;); } - printk(KERN_INFO "Using %s machine description\n", ppc_md.name); + // Append the machine name to other info we've gathered + seq_buf_puts(&ppc_hw_desc, ppc_md.name); + + // Set the generic hardware description shown in oopses + dump_stack_set_arch_desc(ppc_hw_desc.buffer); + + pr_info("Hardware name: %s\n", ppc_hw_desc.buffer); } /* Match a class of boards, not a specific device configuration. */
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". Example output at boot with the full series applied: Linux version 6.0.0-rc2-gcc-11.1.0-00199-g893f9007a5ce-dirty (michael@alpine1-p1) (powerpc64-linux-gcc (GCC) 11.1.0, GNU ld (GNU Binutils) 2.36.1) #844 SMP Thu Sep 29 22:29:53 AEST 2022 Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1200 0xf000005 of:SLOF,git-5b4c5a pSeries printk: bootconsole [udbg0] enabled Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- arch/powerpc/include/asm/setup.h | 2 ++ arch/powerpc/kernel/setup-common.c | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) v3: Drop 'machine:' tag for brevity.