| From 2b6ae0962b421103feb41a80406732944b0665b3 Mon Sep 17 00:00:00 2001 |
| From: Helge Deller <deller@gmx.de> |
| Date: Fri, 28 Oct 2022 18:12:49 +0200 |
| Subject: parisc: Avoid printing the hardware path twice |
| |
| From: Helge Deller <deller@gmx.de> |
| |
| commit 2b6ae0962b421103feb41a80406732944b0665b3 upstream. |
| |
| Avoid that the hardware path is shown twice in the kernel log, and clean |
| up the output of the version numbers to show up in the same order as |
| they are listed in the hardware database in the hardware.c file. |
| Additionally, optimize the memory footprint of the hardware database |
| and mark some code as init code. |
| |
| Fixes: cab56b51ec0e ("parisc: Fix device names in /proc/iomem") |
| Signed-off-by: Helge Deller <deller@gmx.de> |
| Cc: <stable@vger.kernel.org> # v4.9+ |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/parisc/include/asm/hardware.h | 12 ++++++------ |
| arch/parisc/kernel/drivers.c | 14 ++++++-------- |
| 2 files changed, 12 insertions(+), 14 deletions(-) |
| |
| --- a/arch/parisc/include/asm/hardware.h |
| +++ b/arch/parisc/include/asm/hardware.h |
| @@ -10,12 +10,12 @@ |
| #define SVERSION_ANY_ID PA_SVERSION_ANY_ID |
| |
| struct hp_hardware { |
| - unsigned short hw_type:5; /* HPHW_xxx */ |
| - unsigned short hversion; |
| - unsigned long sversion:28; |
| - unsigned short opt; |
| - const char name[80]; /* The hardware description */ |
| -}; |
| + unsigned int hw_type:8; /* HPHW_xxx */ |
| + unsigned int hversion:12; |
| + unsigned int sversion:12; |
| + unsigned char opt; |
| + unsigned char name[59]; /* The hardware description */ |
| +} __packed; |
| |
| struct parisc_device; |
| |
| --- a/arch/parisc/kernel/drivers.c |
| +++ b/arch/parisc/kernel/drivers.c |
| @@ -882,15 +882,13 @@ void __init walk_central_bus(void) |
| &root); |
| } |
| |
| -static void print_parisc_device(struct parisc_device *dev) |
| +static __init void print_parisc_device(struct parisc_device *dev) |
| { |
| - char hw_path[64]; |
| - static int count; |
| + static int count __initdata; |
| |
| - print_pa_hwpath(dev, hw_path); |
| - pr_info("%d. %s at %pap [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }", |
| - ++count, dev->name, &(dev->hpa.start), hw_path, dev->id.hw_type, |
| - dev->id.hversion_rev, dev->id.hversion, dev->id.sversion); |
| + pr_info("%d. %s at %pap { type:%d, hv:%#x, sv:%#x, rev:%#x }", |
| + ++count, dev->name, &(dev->hpa.start), dev->id.hw_type, |
| + dev->id.hversion, dev->id.sversion, dev->id.hversion_rev); |
| |
| if (dev->num_addrs) { |
| int k; |
| @@ -1079,7 +1077,7 @@ static __init int qemu_print_iodc_data(s |
| |
| |
| |
| -static int print_one_device(struct device * dev, void * data) |
| +static __init int print_one_device(struct device * dev, void * data) |
| { |
| struct parisc_device * pdev = to_parisc_device(dev); |
| |