parisc: Avoid printing the hardware path twice
authorHelge Deller <deller@gmx.de>
Fri, 28 Oct 2022 16:12:49 +0000 (18:12 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Nov 2022 17:15:40 +0000 (18:15 +0100)
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
arch/parisc/kernel/drivers.c

index 9d3d7737c58b1214f4844395678e0ad77360be3a..a005ebc547793eabf654ecc2afcf0f94f9239313 100644 (file)
 #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;
 
index d126e78e101ae0b4d4222fca8feaa43e69afc103..e7ee0c0c91d3558dff03df65910510bda71a2c58 100644 (file)
@@ -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(struct device *lin_dev, void *data)
 
 
 
-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);