@@ -3,6 +3,8 @@
* BIOS32 and PCI BIOS handling.
*/
+#define pr_fmt(fmt) "PCI: " fmt
+
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/slab.h>
@@ -47,15 +49,15 @@ static inline void set_bios_x(void)
pcibios_enabled = 1;
set_memory_x(PAGE_OFFSET + BIOS_BEGIN, (BIOS_END - BIOS_BEGIN) >> PAGE_SHIFT);
if (__supported_pte_mask & _PAGE_NX)
- printk(KERN_INFO "PCI: PCI BIOS area is rw and x. Use pci=nobios if you want it NX.\n");
+ pr_info("PCI BIOS area is rw and x. Use pci=nobios if you want it NX.\n");
}
/*
* This is the standard structure used to identify the entry point
* to the BIOS32 Service Directory, as documented in
- * Standard BIOS 32-bit Service Directory Proposal
- * Revision 0.4 May 24, 1993
- * Phoenix Technologies Ltd.
+ * Standard BIOS 32-bit Service Directory Proposal
+ * Revision 0.4 May 24, 1993
+ * Phoenix Technologies Ltd.
* Norwood, MA
* and the PCI BIOS specification.
*/
@@ -67,7 +69,7 @@ union bios32 {
unsigned char revision; /* Revision level, 0 */
unsigned char length; /* Length in paragraphs should be 01 */
unsigned char checksum; /* All bytes must add up to zero */
- unsigned char reserved[5]; /* Must be zero */
+ unsigned char reserved[5]; /* Must be zero */
} fields;
char chars[16];
};
@@ -108,15 +110,16 @@ static unsigned long __init bios32_service(unsigned long service)
local_irq_restore(flags);
switch (return_code) {
- case 0:
- return address + entry;
- case 0x80: /* Not present */
- printk(KERN_WARNING "bios32_service(0x%lx): not present\n", service);
- return 0;
- default: /* Shouldn't happen */
- printk(KERN_WARNING "bios32_service(0x%lx): returned 0x%x -- BIOS bug!\n",
- service, return_code);
- return 0;
+ case 0:
+ return address + entry;
+ case 0x80: /* Not present */
+ pr_warn("%s(0x%lx): not present\n",
+ __func__, service);
+ return 0;
+ default: /* Shouldn't happen */
+ pr_warn("%s(0x%lx): returned 0x%x -- BIOS bug!\n",
+ __func__, service, return_code);
+ return 0;
}
}
@@ -140,8 +143,7 @@ static int __init check_pcibios(void)
pci_indirect.address = pcibios_entry + PAGE_OFFSET;
local_irq_save(flags);
- __asm__(
- "lcall *(%%edi); cld\n\t"
+ __asm__("lcall *(%%edi); cld\n\t"
"jc 1f\n\t"
"xor %%ah, %%ah\n"
"1:"
@@ -160,14 +162,15 @@ static int __init check_pcibios(void)
minor_ver = ebx & 0xff;
if (pcibios_last_bus < 0)
pcibios_last_bus = ecx & 0xff;
- DBG("PCI: BIOS probe returned s=%02x hw=%02x ver=%02x.%02x l=%02x\n",
- status, hw_mech, major_ver, minor_ver, pcibios_last_bus);
+ pr_debug("BIOS probe returned s=%02x hw=%02x ver=%02x.%02x l=%02x\n",
+ status, hw_mech, major_ver, minor_ver,
+ pcibios_last_bus);
if (status || signature != PCI_SIGNATURE) {
- printk (KERN_ERR "PCI: BIOS BUG #%x[%08x] found\n",
- status, signature);
+ pr_err("BIOS BUG #%x[%08x] found\n",
+ status, signature);
return 0;
}
- printk(KERN_INFO "PCI: PCI BIOS revision %x.%02x entry at 0x%lx, last bus=%d\n",
+ pr_info("PCI BIOS revision %x.%02x entry at 0x%lx, last bus=%d\n",
major_ver, minor_ver, pcibios_entry, pcibios_last_bus);
#ifdef CONFIG_PCI_DIRECT
if (!(hw_mech & PCIBIOS_HW_TYPE1))
@@ -239,7 +242,7 @@ static int pci_bios_write(unsigned int seg, unsigned int bus,
u16 number = 0;
WARN_ON(seg);
- if ((bus > 255) || (devfn > 255) || (reg > 255))
+ if ((bus > 255) || (devfn > 255) || (reg > 255))
return -EINVAL;
raw_spin_lock_irqsave(&pci_config_lock, flags);
@@ -316,19 +319,19 @@ static const struct pci_raw_ops *__init pci_find_bios(void)
if (sum != 0)
continue;
if (check->fields.revision != 0) {
- printk("PCI: unsupported BIOS32 revision %d at 0x%p\n",
+ pr_warn("unsupported BIOS32 revision %d at 0x%p\n",
check->fields.revision, check);
continue;
}
- DBG("PCI: BIOS32 Service Directory structure at 0x%p\n", check);
+ pr_debug("BIOS32 Service Directory structure at 0x%p\n", check);
if (check->fields.entry >= 0x100000) {
- printk("PCI: BIOS32 entry (0x%p) in high memory, "
- "cannot use.\n", check);
+ pr_warn("BIOS32 entry (0x%p) in high memory, cannot use.\n",
+ check);
return NULL;
} else {
unsigned long bios32_entry = check->fields.entry;
- DBG("PCI: BIOS32 Service Directory entry at 0x%lx\n",
- bios32_entry);
+ pr_debug("BIOS32 Service Directory entry at 0x%lx\n",
+ bios32_entry);
bios32_indirect.address = bios32_entry + PAGE_OFFSET;
set_bios_x();
if (check_pcibios())
@@ -348,9 +351,9 @@ struct irq_routing_options {
u16 size;
struct irq_info *table;
u16 segment;
-} __attribute__((packed));
+} __packed;
-struct irq_routing_table * pcibios_get_irq_routing_table(void)
+struct irq_routing_table *pcibios_get_irq_routing_table(void)
{
struct irq_routing_options opt;
struct irq_routing_table *rt = NULL;
@@ -366,7 +369,7 @@ struct irq_routing_table * pcibios_get_irq_routing_table(void)
opt.size = PAGE_SIZE;
opt.segment = __KERNEL_DS;
- DBG("PCI: Fetching IRQ routing table... ");
+ pr_debug("Fetching IRQ routing table... ");
__asm__("push %%es\n\t"
"push %%ds\n\t"
"pop %%es\n\t"
@@ -384,17 +387,19 @@ struct irq_routing_table * pcibios_get_irq_routing_table(void)
"S" (&pci_indirect),
"m" (opt)
: "memory");
- DBG("OK ret=%d, size=%d, map=%x\n", ret, opt.size, map);
+ pr_debug("OK ret=%d, size=%d, map=%x\n", ret, opt.size, map);
if (ret & 0xff00)
- printk(KERN_ERR "PCI: Error %02x when fetching IRQ routing table.\n", (ret >> 8) & 0xff);
+ pr_err("Error %02x when fetching IRQ routing table.\n",
+ (ret >> 8) & 0xff);
else if (opt.size) {
- rt = kmalloc(sizeof(struct irq_routing_table) + opt.size, GFP_KERNEL);
+ rt = kmalloc(sizeof(struct irq_routing_table) + opt.size,
+ GFP_KERNEL);
if (rt) {
memset(rt, 0, sizeof(struct irq_routing_table));
rt->size = opt.size + sizeof(struct irq_routing_table);
rt->exclusive_irqs = map;
memcpy(rt->slots, (void *) page, opt.size);
- printk(KERN_INFO "PCI: Using BIOS Interrupt Routing Table\n");
+ pr_info("Using BIOS Interrupt Routing Table\n");
}
}
free_page(page);
@@ -421,7 +426,7 @@ EXPORT_SYMBOL(pcibios_set_irq_routing);
void __init pci_pcbios_init(void)
{
- if ((pci_probe & PCI_PROBE_BIOS)
+ if ((pci_probe & PCI_PROBE_BIOS)
&& ((raw_pci_ops = pci_find_bios()))) {
pci_bios_present = 1;
}
Add missing log facility where two instances of printk() that did not use any (so it would be using MESSAGE_LOGLEVEL_DEFAULT set in Kconfig) to make all the warnings in the arch/x86/pci/pcbios.c to be printed consistently at the same log facility. This resolves the following checkpatch.pl script warning: WARNING: printk() should include KERN_<LEVEL> facility level While adding the missing log facility move over to using pr_ macros over using printk(KERN_<level> ...) and DBG(). Also resolve the additional errors and warnings reported by the checkpatch.pl script: ERROR: trailing whitespace ERROR: "foo * bar" should be "foo *bar" ERROR: switch and case should be at the same indent WARNING: please, no space before tabs WARNING: line over 80 characters WARNING: quoted string split across lines WARNING: __packed is preferred over __attribute__((packed)) WARNING: Prefer using '"%s...", __func__' to using 'bios32_service', this function's name, in a string Signed-off-by: Krzysztof Wilczynski <kw@linux.com> --- Changes in v3: Remove name of the file from the subject. Address review feedback of v2, and resolve more checkpatch.pl script errors and warnings. Changes in v2: Change wording and include checkpatch.pl script warning. Leverage pr_fmt and remove "PCI: " prefix used throught. Move to pr_debug() over using DBG() from arch/x86/include/asm/pci_x86.h. arch/x86/pci/pcbios.c | 77 +++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 36 deletions(-)