powerpc: pci-ioda: Use a single function to emit logging messages
authorJoe Perches <joe@perches.com>
Sun, 21 Sep 2014 17:55:06 +0000 (10:55 -0700)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 25 Sep 2014 13:14:57 +0000 (23:14 +1000)
No need for 3 functions when a single one will do.

Modify the function declaring macros to call the single function.

Reduces object code size a little:

$ size arch/powerpc/platforms/powernv/pci-ioda.o*
   text    data     bss     dec     hex filename
  22303    1073    6680   30056    7568 arch/powerpc/platforms/powernv/pci-ioda.o.new
  22840    1121    6776   30737    7811 arch/powerpc/platforms/powernv/pci-ioda.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/pci-ioda.c

index 7518aa1..bc79bbd 100644 (file)
 #include "powernv.h"
 #include "pci.h"
 
-#define define_pe_printk_level(func, kern_level)               \
-static void func(const struct pnv_ioda_pe *pe, const char *fmt, ...)   \
-{                                                              \
-       struct va_format vaf;                                   \
-       va_list args;                                           \
-       char pfix[32];                                          \
-                                                               \
-       va_start(args, fmt);                                    \
-                                                               \
-       vaf.fmt = fmt;                                          \
-       vaf.va = &args;                                         \
-                                                               \
-       if (pe->pdev)                                           \
-               strlcpy(pfix, dev_name(&pe->pdev->dev),         \
-                       sizeof(pfix));                          \
-       else                                                    \
-               sprintf(pfix, "%04x:%02x     ",                 \
-                       pci_domain_nr(pe->pbus),                \
-                       pe->pbus->number);                      \
-       printk(kern_level "pci %s: [PE# %.3d] %pV",             \
-              pfix, pe->pe_number, &vaf);                      \
-                                                               \
-       va_end(args);                                           \
-}                                                              \
-
-define_pe_printk_level(pe_err, KERN_ERR);
-define_pe_printk_level(pe_warn, KERN_WARNING);
-define_pe_printk_level(pe_info, KERN_INFO);
+static void pe_level_printk(const struct pnv_ioda_pe *pe, const char *level,
+                           const char *fmt, ...)
+{
+       struct va_format vaf;
+       va_list args;
+       char pfix[32];
+
+       va_start(args, fmt);
+
+       vaf.fmt = fmt;
+       vaf.va = &args;
+
+       if (pe->pdev)
+               strlcpy(pfix, dev_name(&pe->pdev->dev), sizeof(pfix));
+       else
+               sprintf(pfix, "%04x:%02x     ",
+                       pci_domain_nr(pe->pbus), pe->pbus->number);
+
+       printk("%spci %s: [PE# %.3d] %pV",
+              level, pfix, pe->pe_number, &vaf);
+
+       va_end(args);
+}
+
+#define pe_err(pe, fmt, ...)                                   \
+       pe_level_printk(pe, KERN_ERR, fmt, ##__VA_ARGS__)
+#define pe_warn(pe, fmt, ...)                                  \
+       pe_level_printk(pe, KERN_WARNING, fmt, ##__VA_ARGS__)
+#define pe_info(pe, fmt, ...)                                  \
+       pe_level_printk(pe, KERN_INFO, fmt, ##__VA_ARGS__)
 
 /*
  * stdcix is only supposed to be used in hypervisor real mode as per