Commit 1396a8c3 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

[PATCH] 64bit resource: fix up printks for resources in pci core and hotplug drivers

This is needed if we wish to change the size of the resource structures.

Based on an original patch from Vivek Goyal <vgoyal@in.ibm.com>

Cc: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 7c7459d1
...@@ -95,8 +95,8 @@ static int zt5550_hc_config(struct pci_dev *pdev) ...@@ -95,8 +95,8 @@ static int zt5550_hc_config(struct pci_dev *pdev)
hc_dev = pdev; hc_dev = pdev;
dbg("hc_dev = %p", hc_dev); dbg("hc_dev = %p", hc_dev);
dbg("pci resource start %lx", pci_resource_start(hc_dev, 1)); dbg("pci resource start %llx", (unsigned long long)pci_resource_start(hc_dev, 1));
dbg("pci resource len %lx", pci_resource_len(hc_dev, 1)); dbg("pci resource len %llx", (unsigned long long)pci_resource_len(hc_dev, 1));
if(!request_mem_region(pci_resource_start(hc_dev, 1), if(!request_mem_region(pci_resource_start(hc_dev, 1),
pci_resource_len(hc_dev, 1), MY_NAME)) { pci_resource_len(hc_dev, 1), MY_NAME)) {
...@@ -108,8 +108,9 @@ static int zt5550_hc_config(struct pci_dev *pdev) ...@@ -108,8 +108,9 @@ static int zt5550_hc_config(struct pci_dev *pdev)
hc_registers = hc_registers =
ioremap(pci_resource_start(hc_dev, 1), pci_resource_len(hc_dev, 1)); ioremap(pci_resource_start(hc_dev, 1), pci_resource_len(hc_dev, 1));
if(!hc_registers) { if(!hc_registers) {
err("cannot remap MMIO region %lx @ %lx", err("cannot remap MMIO region %llx @ %llx",
pci_resource_len(hc_dev, 1), pci_resource_start(hc_dev, 1)); (unsigned long long)pci_resource_len(hc_dev, 1),
(unsigned long long)pci_resource_start(hc_dev, 1));
ret = -ENODEV; ret = -ENODEV;
goto exit_release_region; goto exit_release_region;
} }
......
...@@ -1089,8 +1089,8 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1089,8 +1089,8 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
} }
dbg("pdev = %p\n", pdev); dbg("pdev = %p\n", pdev);
dbg("pci resource start %lx\n", pci_resource_start(pdev, 0)); dbg("pci resource start %llx\n", (unsigned long long)pci_resource_start(pdev, 0));
dbg("pci resource len %lx\n", pci_resource_len(pdev, 0)); dbg("pci resource len %llx\n", (unsigned long long)pci_resource_len(pdev, 0));
if (!request_mem_region(pci_resource_start(pdev, 0), if (!request_mem_region(pci_resource_start(pdev, 0),
pci_resource_len(pdev, 0), MY_NAME)) { pci_resource_len(pdev, 0), MY_NAME)) {
...@@ -1102,9 +1102,9 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1102,9 +1102,9 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
ctrl->hpc_reg = ioremap(pci_resource_start(pdev, 0), ctrl->hpc_reg = ioremap(pci_resource_start(pdev, 0),
pci_resource_len(pdev, 0)); pci_resource_len(pdev, 0));
if (!ctrl->hpc_reg) { if (!ctrl->hpc_reg) {
err("cannot remap MMIO region %lx @ %lx\n", err("cannot remap MMIO region %llx @ %llx\n",
pci_resource_len(pdev, 0), (unsigned long long)pci_resource_len(pdev, 0),
pci_resource_start(pdev, 0)); (unsigned long long)pci_resource_start(pdev, 0));
rc = -ENODEV; rc = -ENODEV;
goto err_free_mem_region; goto err_free_mem_region;
} }
......
...@@ -1398,8 +1398,9 @@ int pcie_init(struct controller * ctrl, struct pcie_device *dev) ...@@ -1398,8 +1398,9 @@ int pcie_init(struct controller * ctrl, struct pcie_device *dev)
for ( rc = 0; rc < DEVICE_COUNT_RESOURCE; rc++) for ( rc = 0; rc < DEVICE_COUNT_RESOURCE; rc++)
if (pci_resource_len(pdev, rc) > 0) if (pci_resource_len(pdev, rc) > 0)
dbg("pci resource[%d] start=0x%lx(len=0x%lx)\n", rc, dbg("pci resource[%d] start=0x%llx(len=0x%llx)\n", rc,
pci_resource_start(pdev, rc), pci_resource_len(pdev, rc)); (unsigned long long)pci_resource_start(pdev, rc),
(unsigned long long)pci_resource_len(pdev, rc));
info("HPC vendor_id %x device_id %x ss_vid %x ss_did %x\n", pdev->vendor, pdev->device, info("HPC vendor_id %x device_id %x ss_vid %x ss_did %x\n", pdev->vendor, pdev->device,
pdev->subsystem_vendor, pdev->subsystem_device); pdev->subsystem_vendor, pdev->subsystem_device);
......
...@@ -51,8 +51,10 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha ...@@ -51,8 +51,10 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha
res = bus->resource[index]; res = bus->resource[index];
if (res && (res->flags & IORESOURCE_MEM) && if (res && (res->flags & IORESOURCE_MEM) &&
!(res->flags & IORESOURCE_PREFETCH)) { !(res->flags & IORESOURCE_PREFETCH)) {
out += sprintf(out, "start = %8.8lx, length = %8.8lx\n", out += sprintf(out, "start = %8.8llx, "
res->start, (res->end - res->start)); "length = %8.8llx\n",
(unsigned long long)res->start,
(unsigned long long)(res->end - res->start));
} }
} }
out += sprintf(out, "Free resources: prefetchable memory\n"); out += sprintf(out, "Free resources: prefetchable memory\n");
...@@ -60,16 +62,20 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha ...@@ -60,16 +62,20 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha
res = bus->resource[index]; res = bus->resource[index];
if (res && (res->flags & IORESOURCE_MEM) && if (res && (res->flags & IORESOURCE_MEM) &&
(res->flags & IORESOURCE_PREFETCH)) { (res->flags & IORESOURCE_PREFETCH)) {
out += sprintf(out, "start = %8.8lx, length = %8.8lx\n", out += sprintf(out, "start = %8.8llx, "
res->start, (res->end - res->start)); "length = %8.8llx\n",
(unsigned long long)res->start,
(unsigned long long)(res->end - res->start));
} }
} }
out += sprintf(out, "Free resources: IO\n"); out += sprintf(out, "Free resources: IO\n");
for (index = 0; index < PCI_BUS_NUM_RESOURCES; index++) { for (index = 0; index < PCI_BUS_NUM_RESOURCES; index++) {
res = bus->resource[index]; res = bus->resource[index];
if (res && (res->flags & IORESOURCE_IO)) { if (res && (res->flags & IORESOURCE_IO)) {
out += sprintf(out, "start = %8.8lx, length = %8.8lx\n", out += sprintf(out, "start = %8.8llx, "
res->start, (res->end - res->start)); "length = %8.8llx\n",
(unsigned long long)res->start,
(unsigned long long)(res->end - res->start));
} }
} }
out += sprintf(out, "Free resources: bus numbers\n"); out += sprintf(out, "Free resources: bus numbers\n");
......
...@@ -691,10 +691,12 @@ int pci_request_region(struct pci_dev *pdev, int bar, const char *res_name) ...@@ -691,10 +691,12 @@ int pci_request_region(struct pci_dev *pdev, int bar, const char *res_name)
return 0; return 0;
err_out: err_out:
printk (KERN_WARNING "PCI: Unable to reserve %s region #%d:%lx@%lx for device %s\n", printk (KERN_WARNING "PCI: Unable to reserve %s region #%d:%llx@%llx "
"for device %s\n",
pci_resource_flags(pdev, bar) & IORESOURCE_IO ? "I/O" : "mem", pci_resource_flags(pdev, bar) & IORESOURCE_IO ? "I/O" : "mem",
bar + 1, /* PCI BAR # */ bar + 1, /* PCI BAR # */
pci_resource_len(pdev, bar), pci_resource_start(pdev, bar), (unsigned long long)pci_resource_len(pdev, bar),
(unsigned long long)pci_resource_start(pdev, bar),
pci_name(pdev)); pci_name(pdev));
return -EBUSY; return -EBUSY;
} }
......
...@@ -302,12 +302,6 @@ static struct file_operations proc_bus_pci_operations = { ...@@ -302,12 +302,6 @@ static struct file_operations proc_bus_pci_operations = {
#endif /* HAVE_PCI_MMAP */ #endif /* HAVE_PCI_MMAP */
}; };
#if BITS_PER_LONG == 32
#define LONG_FORMAT "\t%08lx"
#else
#define LONG_FORMAT "\t%16lx"
#endif
/* iterator */ /* iterator */
static void *pci_seq_start(struct seq_file *m, loff_t *pos) static void *pci_seq_start(struct seq_file *m, loff_t *pos)
{ {
...@@ -358,16 +352,16 @@ static int show_device(struct seq_file *m, void *v) ...@@ -358,16 +352,16 @@ static int show_device(struct seq_file *m, void *v)
for (i=0; i<7; i++) { for (i=0; i<7; i++) {
u64 start, end; u64 start, end;
pci_resource_to_user(dev, i, &dev->resource[i], &start, &end); pci_resource_to_user(dev, i, &dev->resource[i], &start, &end);
seq_printf(m, LONG_FORMAT, seq_printf(m, "\t%16llx",
((unsigned long)start) | (unsigned long long)(start |
(dev->resource[i].flags & PCI_REGION_FLAG_MASK)); (dev->resource[i].flags & PCI_REGION_FLAG_MASK)));
} }
for (i=0; i<7; i++) { for (i=0; i<7; i++) {
u64 start, end; u64 start, end;
pci_resource_to_user(dev, i, &dev->resource[i], &start, &end); pci_resource_to_user(dev, i, &dev->resource[i], &start, &end);
seq_printf(m, LONG_FORMAT, seq_printf(m, "\t%16llx",
dev->resource[i].start < dev->resource[i].end ? dev->resource[i].start < dev->resource[i].end ?
(unsigned long)(end - start) + 1 : 0); (unsigned long long)(end - start) + 1 : 0);
} }
seq_putc(m, '\t'); seq_putc(m, '\t');
if (drv) if (drv)
......
...@@ -357,8 +357,10 @@ pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long type) ...@@ -357,8 +357,10 @@ pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long type)
order = __ffs(align) - 20; order = __ffs(align) - 20;
if (order > 11) { if (order > 11) {
printk(KERN_WARNING "PCI: region %s/%d " printk(KERN_WARNING "PCI: region %s/%d "
"too large: %lx-%lx\n", "too large: %llx-%llx\n",
pci_name(dev), i, r->start, r->end); pci_name(dev), i,
(unsigned long long)r->start,
(unsigned long long)r->end);
r->flags = 0; r->flags = 0;
continue; continue;
} }
......
...@@ -40,8 +40,9 @@ pci_update_resource(struct pci_dev *dev, struct resource *res, int resno) ...@@ -40,8 +40,9 @@ pci_update_resource(struct pci_dev *dev, struct resource *res, int resno)
pcibios_resource_to_bus(dev, &region, res); pcibios_resource_to_bus(dev, &region, res);
pr_debug(" got res [%lx:%lx] bus [%lx:%lx] flags %lx for " pr_debug(" got res [%llx:%llx] bus [%lx:%lx] flags %lx for "
"BAR %d of %s\n", res->start, res->end, "BAR %d of %s\n", (unsigned long long)res->start,
(unsigned long long)res->end,
region.start, region.end, res->flags, resno, pci_name(dev)); region.start, region.end, res->flags, resno, pci_name(dev));
new = region.start | (res->flags & PCI_REGION_FLAG_MASK); new = region.start | (res->flags & PCI_REGION_FLAG_MASK);
...@@ -104,10 +105,12 @@ pci_claim_resource(struct pci_dev *dev, int resource) ...@@ -104,10 +105,12 @@ pci_claim_resource(struct pci_dev *dev, int resource)
err = insert_resource(root, res); err = insert_resource(root, res);
if (err) { if (err) {
printk(KERN_ERR "PCI: %s region %d of %s %s [%lx:%lx]\n", printk(KERN_ERR "PCI: %s region %d of %s %s [%llx:%llx]\n",
root ? "Address space collision on" : root ? "Address space collision on" :
"No parent found for", "No parent found for",
resource, dtype, pci_name(dev), res->start, res->end); resource, dtype, pci_name(dev),
(unsigned long long)res->start,
(unsigned long long)res->end);
} }
return err; return err;
...@@ -145,9 +148,11 @@ int pci_assign_resource(struct pci_dev *dev, int resno) ...@@ -145,9 +148,11 @@ int pci_assign_resource(struct pci_dev *dev, int resno)
} }
if (ret) { if (ret) {
printk(KERN_ERR "PCI: Failed to allocate %s resource #%d:%lx@%lx for %s\n", printk(KERN_ERR "PCI: Failed to allocate %s resource "
res->flags & IORESOURCE_IO ? "I/O" : "mem", "#%d:%llx@%llx for %s\n",
resno, size, res->start, pci_name(dev)); res->flags & IORESOURCE_IO ? "I/O" : "mem",
resno, (unsigned long long)size,
(unsigned long long)res->start, pci_name(dev));
} else if (resno < PCI_BRIDGE_RESOURCES) { } else if (resno < PCI_BRIDGE_RESOURCES) {
pci_update_resource(dev, res, resno); pci_update_resource(dev, res, resno);
} }
...@@ -213,8 +218,9 @@ pdev_sort_resources(struct pci_dev *dev, struct resource_list *head) ...@@ -213,8 +218,9 @@ pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
continue; continue;
if (!r_align) { if (!r_align) {
printk(KERN_WARNING "PCI: Ignore bogus resource %d " printk(KERN_WARNING "PCI: Ignore bogus resource %d "
"[%lx:%lx] of %s\n", "[%llx:%llx] of %s\n",
i, r->start, r->end, pci_name(dev)); i, (unsigned long long)r->start,
(unsigned long long)r->end, pci_name(dev));
continue; continue;
} }
r_align = (i < PCI_BRIDGE_RESOURCES) ? r_align + 1 : r->start; r_align = (i < PCI_BRIDGE_RESOURCES) ? r_align + 1 : r->start;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment