Skip to contentSkip to conversation

pci: Fix printk warnings in probe.c

PATCH In review Johann Felix Soden 4 participants 4 messages Aug 22, 2008 – Aug 28, 2008 PCI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pci: Fix printk warnings in probe.c

From: Johann Felix Soden <[email protected]>

Fix printk format warnings:
drivers/pci/probe.c: In function 'pci_read_bridge_bases':
drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'resource_size_t'

---
 drivers/pci/probe.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
drivers/pci/probe.c +8 -3
index cce2f4c..0ad9367 100644
@@ -383,7 +383,9 @@ void __devinit pci_read_bridge_bases(struct pci_bus *child)
 			res->start = base;
 		if (!res->end)
 			res->end = limit + 0xfff;
-		printk(KERN_INFO "PCI: bridge %s io port: [%llx, %llx]\n", pci_name(dev), res->start, res->end);
+		printk(KERN_INFO "PCI: bridge %s io port: [%llx, %llx]\n",
+			pci_name(dev), (unsigned long long) res->start,
+			(unsigned long long) res->end);
 	}
 
 	res = child->resource[1];
@@ -395,7 +397,8 @@ void __devinit pci_read_bridge_bases(struct pci_bus *child)
 		res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
 		res->start = base;
 		res->end = limit + 0xfffff;
-		printk(KERN_INFO "PCI: bridge %s 32bit mmio: [%llx, %llx]\n", pci_name(dev), res->start, res->end);
+		printk(KERN_INFO "PCI: bridge %s 32bit mmio: [%llx, %llx]\n", pci_name(dev),
+			(unsigned long long) res->start, (unsigned long long) res->end);
 	}
 
 	res = child->resource[2];
@@ -431,7 +434,9 @@ void __devinit pci_read_bridge_bases(struct pci_bus *child)
 		res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM | IORESOURCE_PREFETCH;
 		res->start = base;
 		res->end = limit + 0xfffff;
-		printk(KERN_INFO "PCI: bridge %s %sbit mmio pref: [%llx, %llx]\n", pci_name(dev), (res->flags & PCI_PREF_RANGE_TYPE_64)?"64":"32",res->start, res->end);
+		printk(KERN_INFO "PCI: bridge %s %sbit mmio pref: [%llx, %llx]\n",
+			pci_name(dev), (res->flags & PCI_PREF_RANGE_TYPE_64) ? "64" : "32",
+			(unsigned long long) res->start, (unsigned long long) res->end);
 	}
 }
 
Signature · 1 line
1.5.6.3
#1 lore raw
Quoted 17 lines · Johann Felix Soden

From: Johann Felix Soden <[email protected]>

Fix printk format warnings:
drivers/pci/probe.c: In function 'pci_read_bridge_bases':
drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'resource_size_t'

Quoted 1 line

I put both of these resource size fixes into my linux-next branch, thanks.

Jesse

#2 lore raw
In reply to Johann Felix Soden
Quoted 21 lines · Johann Felix Soden

From: Johann Felix Soden <[email protected]>

Fix printk format warnings:
drivers/pci/probe.c: In function 'pci_read_bridge_bases':
drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'resource_size_t'

---
 drivers/pci/probe.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
drivers/pci/probe.c +0 -0
index cce2f4c..0ad9367 100644

drivers/pci/probe.c void __devinit pci_read_bridge_bases(struct pci_bus *child) · line 388

Quoted 7 lines
drivers/pci/probe.c +3 -1
@@ -383,7 +383,9 @@ void __devinit pci_read_bridge_bases(struct pci_bus *child)
 			res->start = base;
 		if (!res->end)
 			res->end = limit + 0xfff;
-		printk(KERN_INFO "PCI: bridge %s io port: [%llx, %llx]\n", pci_name(dev), res->start, res->end);
+		printk(KERN_INFO "PCI: bridge %s io port: [%llx, %llx]\n",
+			pci_name(dev), (unsigned long long) res->start,
+			(unsigned long long) res->end);

Thanks for fixing the warnings. I wish you'd changed these at the same time to use dev_info() and "[%#llx-%#llx]" like the rest of PCI.

I confess I don't understand where the ioport, mmio, and prefetchable mmio resources are coming from here, but before your patch, these printed values that look like junk on an HP nw8000:

PCI: bridge 0000:00:01.0 io port: [2fff00002000, ef92eae800000300]
PCI: bridge 0000:00:01.0 32bit mmio: [904fffff90400000, ef92eae800000300]
PCI: bridge 0000:00:01.0 32bit mmio pref: [9fffffff98000000, ef92eae8]

I just returned the laptop, or I'd double-check to see whether your casts fixed this.

#3 lore raw
Quoted 37 lines · Bjorn Helgaas
Quoted 21 lines · Johann Felix Soden

From: Johann Felix Soden <[email protected]>

Fix printk format warnings:
drivers/pci/probe.c: In function 'pci_read_bridge_bases':
drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:386: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'resource_size_t' drivers/pci/probe.c:398: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'resource_size_t' drivers/pci/probe.c:434: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'resource_size_t'

---
 drivers/pci/probe.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
drivers/pci/probe.c +0 -0
index cce2f4c..0ad9367 100644

drivers/pci/probe.c void __devinit pci_read_bridge_bases(struct pci_bus *child) · line 388

Quoted 7 lines
drivers/pci/probe.c +3 -1
@@ -383,7 +383,9 @@ void __devinit pci_read_bridge_bases(struct pci_bus *child)
                      res->start = base;
              if (!res->end)
                      res->end = limit + 0xfff;
-             printk(KERN_INFO "PCI: bridge %s io port: [%llx, %llx]\n", pci_name(dev), res->start, res->end);
+             printk(KERN_INFO "PCI: bridge %s io port: [%llx, %llx]\n",
+                     pci_name(dev), (unsigned long long) res->start,
+                     (unsigned long long) res->end);

Thanks for fixing the warnings. I wish you'd changed these at the same time to use dev_info() and "[%#llx-%#llx]" like the rest of PCI.

I confess I don't understand where the ioport, mmio, and prefetchable mmio resources are coming from here, but before your patch, these printed values that look like junk on an HP nw8000:

Quoted 6 lines

PCI: bridge 0000:00:01.0 io port: [2fff00002000, ef92eae800000300]
PCI: bridge 0000:00:01.0 32bit mmio: [904fffff90400000, ef92eae800000300]
PCI: bridge 0000:00:01.0 32bit mmio pref: [9fffffff98000000, ef92eae8]

I just returned the laptop, or I'd double-check to see whether your casts fixed this.

you must use 32 bit with !64bit_resource..

can we just make resource_t to be ull to 32bit unconditionally?

YH