2005-01-14 20:03:45

by Dave

[permalink] [raw]
Subject: [PATCH 1/5] resource: core changes to update u64 to unsigned long

Here's the rework per Andrew and others' comments. Attempt to change
resource.start and resource.end to u64 from unsigned long.

Signed-off-by: Dave Jiang <[email protected]>


diff -Naur linux-2.6.11-rc1/drivers/pci/bus.c linux-2.6.11-rc1-u64/drivers/pci/bus.c
--- linux-2.6.11-rc1/drivers/pci/bus.c 2004-12-24 14:35:39.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/bus.c 2005-01-13 11:45:41.834462168 -0700
@@ -34,10 +34,10 @@
*/
int
pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- unsigned long size, unsigned long align, unsigned long min,
+ u64 size, u64 align, u64 min,
unsigned int type_mask,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data)
{
int i, ret = -ENOMEM;
diff -Naur linux-2.6.11-rc1/drivers/pci/pci.c linux-2.6.11-rc1-u64/drivers/pci/pci.c
--- linux-2.6.11-rc1/drivers/pci/pci.c 2005-01-13 14:40:02.726164904 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/pci.c 2005-01-13 17:45:45.663180992 -0700
@@ -564,7 +564,7 @@
return 0;

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",
bar + 1, /* PCI BAR # */
pci_resource_len(pdev, bar), pci_resource_start(pdev, bar),
diff -Naur linux-2.6.11-rc1/drivers/pci/pci.h linux-2.6.11-rc1-u64/drivers/pci/pci.h
--- linux-2.6.11-rc1/drivers/pci/pci.h 2004-12-24 14:34:31.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/pci.h 2005-01-13 11:45:41.836461864 -0700
@@ -6,10 +6,10 @@
extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev);
extern void pci_cleanup_rom(struct pci_dev *dev);
extern int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- unsigned long size, unsigned long align,
- unsigned long min, unsigned int type_mask,
+ u64 size, u64 align,
+ u64 min, unsigned int type_mask,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data);
/* PCI /proc functions */
#ifdef CONFIG_PROC_FS
diff -Naur linux-2.6.11-rc1/drivers/pci/pci-sysfs.c linux-2.6.11-rc1-u64/drivers/pci/pci-sysfs.c
--- linux-2.6.11-rc1/drivers/pci/pci-sysfs.c 2005-01-13 14:40:02.725165056 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/pci-sysfs.c 2005-01-13 17:46:52.166071016 -0700
@@ -65,7 +65,7 @@
max = DEVICE_COUNT_RESOURCE;

for (i = 0; i < max; i++) {
- str += sprintf(str,"0x%016lx 0x%016lx 0x%016lx\n",
+ str += sprintf(str,"0x%016llx 0x%016llx 0x%016lx\n",
pci_resource_start(pci_dev,i),
pci_resource_end(pci_dev,i),
pci_resource_flags(pci_dev,i));
diff -Naur linux-2.6.11-rc1/drivers/pci/proc.c linux-2.6.11-rc1-u64/drivers/pci/proc.c
--- linux-2.6.11-rc1/drivers/pci/proc.c 2004-12-24 14:34:58.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/proc.c 2005-01-13 17:48:54.142527776 -0700
@@ -301,12 +301,6 @@
#endif /* HAVE_PCI_MMAP */
};

-#if BITS_PER_LONG == 32
-#define LONG_FORMAT "\t%08lx"
-#else
-#define LONG_FORMAT "\t%16lx"
-#endif
-
/* iterator */
static void *pci_seq_start(struct seq_file *m, loff_t *pos)
{
@@ -358,11 +352,11 @@
dev->irq);
/* Here should be 7 and not PCI_NUM_RESOURCES as we need to preserve compatibility */
for(i=0; i<7; i++)
- seq_printf(m, LONG_FORMAT,
+ seq_printf(m, "\t%16llx",
dev->resource[i].start |
(dev->resource[i].flags & PCI_REGION_FLAG_MASK));
for(i=0; i<7; i++)
- seq_printf(m, LONG_FORMAT,
+ seq_printf(m, "\t%16llx",
dev->resource[i].start < dev->resource[i].end ?
dev->resource[i].end - dev->resource[i].start + 1 : 0);
seq_putc(m, '\t');
diff -Naur linux-2.6.11-rc1/drivers/pci/setup-bus.c linux-2.6.11-rc1-u64/drivers/pci/setup-bus.c
--- linux-2.6.11-rc1/drivers/pci/setup-bus.c 2005-01-13 14:40:02.729164448 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/setup-bus.c 2005-01-13 17:56:03.320282840 -0700
@@ -357,7 +357,7 @@
order = __ffs(align) - 20;
if (order > 11) {
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);
r->flags = 0;
continue;
diff -Naur linux-2.6.11-rc1/drivers/pci/setup-res.c linux-2.6.11-rc1-u64/drivers/pci/setup-res.c
--- linux-2.6.11-rc1/drivers/pci/setup-res.c 2004-12-24 14:35:25.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/setup-res.c 2005-01-13 17:57:29.963111128 -0700
@@ -42,7 +42,7 @@

pcibios_resource_to_bus(dev, &region, res);

- DBGC((KERN_ERR " got res [%lx:%lx] bus [%lx:%lx] flags %lx for "
+ DBGC((KERN_ERR " got res [%llx:%llx] bus [%lx:%lx] flags %lx for "
"BAR %d of %s\n", res->start, res->end,
region.start, region.end, res->flags,
resno, pci_name(dev)));
@@ -108,7 +108,7 @@
err = insert_resource(root, res);

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" :
"No parent found for",
resource, dtype, pci_name(dev), res->start, res->end);
@@ -121,7 +121,7 @@
{
struct pci_bus *bus = dev->bus;
struct resource *res = dev->resource + resno;
- unsigned long size, min, align;
+ u64 size, min, align;
int ret;

size = res->end - res->start + 1;
@@ -148,7 +148,7 @@
}

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 #%d:%llx@%llx for %s\n",
res->flags & IORESOURCE_IO ? "I/O" : "mem",
resno, size, res->start, pci_name(dev));
} else if (resno < PCI_BRIDGE_RESOURCES) {
@@ -176,7 +176,7 @@
continue;
if (!r_align) {
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));
continue;
}
diff -Naur linux-2.6.11-rc1/drivers/pnp/manager.c linux-2.6.11-rc1-u64/drivers/pnp/manager.c
--- linux-2.6.11-rc1/drivers/pnp/manager.c 2004-12-24 14:35:39.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pnp/manager.c 2005-01-13 11:45:41.839461408 -0700
@@ -25,7 +25,8 @@

static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;

if (!dev || !rule)
return -EINVAL;
@@ -68,7 +69,8 @@

static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;

if (!dev || !rule)
return -EINVAL;
@@ -121,7 +123,8 @@

static int pnp_assign_irq(struct pnp_dev * dev, struct pnp_irq *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;
int i;

/* IRQ priority: this table is good for i386 */
@@ -173,7 +176,8 @@

static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;
int i;

/* DMA priority: this table is good for i386 */
@@ -548,7 +552,7 @@
* @size: size of region
*
*/
-void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size)
+void pnp_resource_change(struct resource *resource, u64 start, u64 size)
{
if (resource == NULL)
return;
diff -Naur linux-2.6.11-rc1/drivers/pnp/resource.c linux-2.6.11-rc1-u64/drivers/pnp/resource.c
--- linux-2.6.11-rc1/drivers/pnp/resource.c 2004-12-24 14:34:58.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pnp/resource.c 2005-01-13 11:45:41.840461256 -0700
@@ -242,7 +242,7 @@
{
int tmp;
struct pnp_dev *tdev;
- unsigned long *port, *end, *tport, *tend;
+ u64 *port, *end, *tport, *tend;
port = &dev->res.port_resource[idx].start;
end = &dev->res.port_resource[idx].end;

@@ -298,7 +298,7 @@
{
int tmp;
struct pnp_dev *tdev;
- unsigned long *addr, *end, *taddr, *tend;
+ u64 *addr, *end, *taddr, *tend;
addr = &dev->res.mem_resource[idx].start;
end = &dev->res.mem_resource[idx].end;

@@ -359,7 +359,7 @@
{
int tmp;
struct pnp_dev *tdev;
- unsigned long * irq = &dev->res.irq_resource[idx].start;
+ u64 * irq = &dev->res.irq_resource[idx].start;

/* if the resource doesn't exist, don't complain about it */
if (cannot_compare(dev->res.irq_resource[idx].flags))
@@ -424,7 +424,7 @@
#ifndef CONFIG_IA64
int tmp;
struct pnp_dev *tdev;
- unsigned long * dma = &dev->res.dma_resource[idx].start;
+ u64 * dma = &dev->res.dma_resource[idx].start;

/* if the resource doesn't exist, don't complain about it */
if (cannot_compare(dev->res.dma_resource[idx].flags))
diff -Naur linux-2.6.11-rc1/include/linux/ioport.h linux-2.6.11-rc1-u64/include/linux/ioport.h
--- linux-2.6.11-rc1/include/linux/ioport.h 2004-12-24 14:34:26.000000000 -0700
+++ linux-2.6.11-rc1-u64/include/linux/ioport.h 2005-01-13 11:45:41.843460800 -0700
@@ -9,13 +9,14 @@
#define _LINUX_IOPORT_H

#include <linux/compiler.h>
+#include <linux/types.h>
/*
* Resources are tree-like, allowing
* nesting etc..
*/
struct resource {
+ u64 start, end;
const char *name;
- unsigned long start, end;
unsigned long flags;
struct resource *parent, *sibling, *child;
};
@@ -98,31 +99,31 @@
extern int release_resource(struct resource *new);
extern int insert_resource(struct resource *parent, struct resource *new);
extern int allocate_resource(struct resource *root, struct resource *new,
- unsigned long size,
- unsigned long min, unsigned long max,
- unsigned long align,
+ u64 size,
+ u64 min, u64 max,
+ u64 align,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data);
-int adjust_resource(struct resource *res, unsigned long start,
- unsigned long size);
+int adjust_resource(struct resource *res, u64 start,
+ u64 size);

/* Convenience shorthand with allocation */
#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name))
#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
#define rename_region(region, newname) do { (region)->name = (newname); } while (0)

-extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
+extern struct resource * __request_region(struct resource *, u64 start, u64 n, const char *name);

/* Compatibility cruft */
#define release_region(start,n) __release_region(&ioport_resource, (start), (n))
#define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n))
#define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n))

-extern int __check_region(struct resource *, unsigned long, unsigned long);
-extern void __release_region(struct resource *, unsigned long, unsigned long);
+extern int __check_region(struct resource *, u64, u64);
+extern void __release_region(struct resource *, u64, u64);

-static inline int __deprecated check_region(unsigned long s, unsigned long n)
+static inline int __deprecated check_region(u64 s, u64 n)
{
return __check_region(&ioport_resource, s, n);
}
diff -Naur linux-2.6.11-rc1/include/linux/pci.h linux-2.6.11-rc1-u64/include/linux/pci.h
--- linux-2.6.11-rc1/include/linux/pci.h 2005-01-13 14:40:18.001842648 -0700
+++ linux-2.6.11-rc1-u64/include/linux/pci.h 2005-01-13 11:45:41.844460648 -0700
@@ -726,7 +726,7 @@

/* Used only when drivers/pci/setup.c is used */
void pcibios_align_resource(void *, struct resource *,
- unsigned long, unsigned long);
+ u64, u64);
void pcibios_update_irq(struct pci_dev *, int irq);

/* Generic PCI functions used internally */
@@ -843,10 +843,10 @@

/* drivers/pci/bus.c */
int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- unsigned long size, unsigned long align,
- unsigned long min, unsigned int type_mask,
+ u64 size, u64 align,
+ u64 min, unsigned int type_mask,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data);
void pci_enable_bridges(struct pci_bus *bus);

diff -Naur linux-2.6.11-rc1/include/linux/pnp.h linux-2.6.11-rc1-u64/include/linux/pnp.h
--- linux-2.6.11-rc1/include/linux/pnp.h 2004-12-24 14:35:40.000000000 -0700
+++ linux-2.6.11-rc1-u64/include/linux/pnp.h 2005-01-13 11:45:41.845460496 -0700
@@ -384,7 +384,7 @@
int pnp_validate_config(struct pnp_dev *dev);
int pnp_activate_dev(struct pnp_dev *dev);
int pnp_disable_dev(struct pnp_dev *dev);
-void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size);
+void pnp_resource_change(struct resource *resource, u64 start, u64 size);

/* protocol helpers */
int pnp_is_active(struct pnp_dev * dev);
@@ -429,7 +429,7 @@
static inline int pnp_validate_config(struct pnp_dev *dev) { return -ENODEV; }
static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; }
static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; }
-static inline void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size) { }
+static inline void pnp_resource_change(struct resource *resource, u64 start, u64 size) { }

/* protocol helpers */
static inline int pnp_is_active(struct pnp_dev * dev) { return 0; }
diff -Naur linux-2.6.11-rc1/kernel/resource.c linux-2.6.11-rc1-u64/kernel/resource.c
--- linux-2.6.11-rc1/kernel/resource.c 2005-01-13 14:40:18.537761176 -0700
+++ linux-2.6.11-rc1-u64/kernel/resource.c 2005-01-13 18:01:09.029807928 -0700
@@ -23,7 +23,7 @@

struct resource ioport_resource = {
.name = "PCI IO",
- .start = 0x0000,
+ .start = 0x0000ULL,
.end = IO_SPACE_LIMIT,
.flags = IORESOURCE_IO,
};
@@ -32,8 +32,8 @@

struct resource iomem_resource = {
.name = "PCI mem",
- .start = 0UL,
- .end = ~0UL,
+ .start = 0ULL,
+ .end = ~0ULL,
.flags = IORESOURCE_MEM,
};

@@ -83,7 +83,7 @@
for (depth = 0, p = r; depth < MAX_IORES_LEVEL; depth++, p = p->parent)
if (p->parent == root)
break;
- seq_printf(m, "%*s%0*lx-%0*lx : %s\n",
+ seq_printf(m, "%*s%0*llx-%0*llx : %s\n",
depth * 2, "",
width, r->start,
width, r->end,
@@ -151,8 +151,8 @@
/* Return the conflict entry if you can't request it */
static struct resource * __request_resource(struct resource *root, struct resource *new)
{
- unsigned long start = new->start;
- unsigned long end = new->end;
+ u64 start = new->start;
+ u64 end = new->end;
struct resource *tmp, **p;

if (end < start)
@@ -236,11 +236,11 @@
* Find empty slot in the resource tree given range and alignment.
*/
static int find_resource(struct resource *root, struct resource *new,
- unsigned long size,
- unsigned long min, unsigned long max,
- unsigned long align,
+ u64 size,
+ u64 min, u64 max,
+ u64 align,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data)
{
struct resource *this = root->child;
@@ -282,11 +282,11 @@
* Allocate empty slot in the resource tree given range and alignment.
*/
int allocate_resource(struct resource *root, struct resource *new,
- unsigned long size,
- unsigned long min, unsigned long max,
- unsigned long align,
+ u64 size,
+ u64 min, u64 max,
+ u64 align,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data)
{
int err;
@@ -378,10 +378,10 @@
* arguments. Returns -EBUSY if it can't fit. Existing children of
* the resource are assumed to be immutable.
*/
-int adjust_resource(struct resource *res, unsigned long start, unsigned long size)
+int adjust_resource(struct resource *res, u64 start, u64 size)
{
struct resource *tmp, *parent = res->parent;
- unsigned long end = start + size - 1;
+ u64 end = start + size - 1;
int result = -EBUSY;

write_lock(&resource_lock);
@@ -428,7 +428,7 @@
*
* Release-region releases a matching busy region.
*/
-struct resource * __request_region(struct resource *parent, unsigned long start, unsigned long n, const char *name)
+struct resource * __request_region(struct resource *parent, u64 start, u64 n, const char *name)
{
struct resource *res = kmalloc(sizeof(*res), GFP_KERNEL);

@@ -465,7 +465,7 @@

EXPORT_SYMBOL(__request_region);

-int __deprecated __check_region(struct resource *parent, unsigned long start, unsigned long n)
+int __deprecated __check_region(struct resource *parent, u64 start, u64 n)
{
struct resource * res;

@@ -480,10 +480,10 @@

EXPORT_SYMBOL(__check_region);

-void __release_region(struct resource *parent, unsigned long start, unsigned long n)
+void __release_region(struct resource *parent, u64 start, u64 n)
{
struct resource **p;
- unsigned long end;
+ u64 end;

p = &parent->child;
end = start + n - 1;
@@ -512,7 +512,7 @@

write_unlock(&resource_lock);

- printk(KERN_WARNING "Trying to free nonexistent resource <%08lx-%08lx>\n", start, end);
+ printk(KERN_WARNING "Trying to free nonexistent resource <%16llx-%16llx>\n", start, end);
}

EXPORT_SYMBOL(__release_region);


2005-01-14 21:24:10

by Dave

[permalink] [raw]
Subject: Re: [PATCH 1/5] resource: core changes to update u64 to unsigned long

On Jan 14 2005, at 12:01, Dave Jiang was caught saying:
> Here's the rework per Andrew and others' comments. Attempt to change
> resource.start and resource.end to u64 from unsigned long.
>
> Signed-off-by: Dave Jiang <[email protected]>
>

Oops, I left out the part where Andrew suggested to cast the vars in
printk to (unsigned long long). I will put out applicable patches with
those updates. Sorry about that.....

2005-01-14 21:39:35

by Dave

[permalink] [raw]
Subject: Re: [PATCH 1/5] resource: core changes to update u64 to unsigned long

Here's the prink's with the proper cast I think. Should only be change
in core and driver. The arch patches are fine.

Signed-off-by: Dave Jiang ([email protected])


diff -Naur linux-2.6.11-rc1/drivers/pci/bus.c linux-2.6.11-rc1-u64/drivers/pci/bus.c
--- linux-2.6.11-rc1/drivers/pci/bus.c 2004-12-24 14:35:39.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/bus.c 2005-01-13 11:45:41.834462168 -0700
@@ -34,10 +34,10 @@
*/
int
pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- unsigned long size, unsigned long align, unsigned long min,
+ u64 size, u64 align, u64 min,
unsigned int type_mask,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data)
{
int i, ret = -ENOMEM;
diff -Naur linux-2.6.11-rc1/drivers/pci/pci.c linux-2.6.11-rc1-u64/drivers/pci/pci.c
--- linux-2.6.11-rc1/drivers/pci/pci.c 2005-01-13 14:40:02.726164904 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/pci.c 2005-01-14 13:44:49.978982536 -0700
@@ -564,10 +564,10 @@
return 0;

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",
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));
return -EBUSY;
}
diff -Naur linux-2.6.11-rc1/drivers/pci/pci.h linux-2.6.11-rc1-u64/drivers/pci/pci.h
--- linux-2.6.11-rc1/drivers/pci/pci.h 2004-12-24 14:34:31.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/pci.h 2005-01-13 11:45:41.836461864 -0700
@@ -6,10 +6,10 @@
extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev);
extern void pci_cleanup_rom(struct pci_dev *dev);
extern int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- unsigned long size, unsigned long align,
- unsigned long min, unsigned int type_mask,
+ u64 size, u64 align,
+ u64 min, unsigned int type_mask,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data);
/* PCI /proc functions */
#ifdef CONFIG_PROC_FS
diff -Naur linux-2.6.11-rc1/drivers/pci/pci-sysfs.c linux-2.6.11-rc1-u64/drivers/pci/pci-sysfs.c
--- linux-2.6.11-rc1/drivers/pci/pci-sysfs.c 2005-01-13 14:40:02.725165056 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/pci-sysfs.c 2005-01-14 13:45:43.405860416 -0700
@@ -65,9 +65,9 @@
max = DEVICE_COUNT_RESOURCE;

for (i = 0; i < max; i++) {
- str += sprintf(str,"0x%016lx 0x%016lx 0x%016lx\n",
- pci_resource_start(pci_dev,i),
- pci_resource_end(pci_dev,i),
+ str += sprintf(str,"0x%016llx 0x%016llx 0x%016lx\n",
+ (unsigned long long)pci_resource_start(pci_dev,i),
+ (unsigned long long)pci_resource_end(pci_dev,i),
pci_resource_flags(pci_dev,i));
}
return (str - buf);
diff -Naur linux-2.6.11-rc1/drivers/pci/proc.c linux-2.6.11-rc1-u64/drivers/pci/proc.c
--- linux-2.6.11-rc1/drivers/pci/proc.c 2004-12-24 14:34:58.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/proc.c 2005-01-14 13:46:43.137779784 -0700
@@ -301,12 +301,6 @@
#endif /* HAVE_PCI_MMAP */
};

-#if BITS_PER_LONG == 32
-#define LONG_FORMAT "\t%08lx"
-#else
-#define LONG_FORMAT "\t%16lx"
-#endif
-
/* iterator */
static void *pci_seq_start(struct seq_file *m, loff_t *pos)
{
@@ -358,13 +352,13 @@
dev->irq);
/* Here should be 7 and not PCI_NUM_RESOURCES as we need to preserve compatibility */
for(i=0; i<7; i++)
- seq_printf(m, LONG_FORMAT,
- dev->resource[i].start |
- (dev->resource[i].flags & PCI_REGION_FLAG_MASK));
+ seq_printf(m, "\t%16llx",
+ (unsigned long long)(dev->resource[i].start |
+ (dev->resource[i].flags & PCI_REGION_FLAG_MASK)));
for(i=0; i<7; i++)
- seq_printf(m, LONG_FORMAT,
- dev->resource[i].start < dev->resource[i].end ?
- dev->resource[i].end - dev->resource[i].start + 1 : 0);
+ seq_printf(m, "\t%16llx",
+ (unsigned long long)(dev->resource[i].start < dev->resource[i].end ?
+ dev->resource[i].end - dev->resource[i].start + 1 : 0));
seq_putc(m, '\t');
if (drv)
seq_printf(m, "%s", drv->name);
diff -Naur linux-2.6.11-rc1/drivers/pci/setup-bus.c linux-2.6.11-rc1-u64/drivers/pci/setup-bus.c
--- linux-2.6.11-rc1/drivers/pci/setup-bus.c 2005-01-13 14:40:02.729164448 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/setup-bus.c 2005-01-14 13:47:17.552547944 -0700
@@ -357,8 +357,9 @@
order = __ffs(align) - 20;
if (order > 11) {
printk(KERN_WARNING "PCI: region %s/%d "
- "too large: %lx-%lx\n",
- pci_name(dev), i, r->start, r->end);
+ "too large: %llx-%llx\n",
+ pci_name(dev), i, (unsigned long long)r->start,
+ (unsigned long long)r->end);
r->flags = 0;
continue;
}
diff -Naur linux-2.6.11-rc1/drivers/pci/setup-res.c linux-2.6.11-rc1-u64/drivers/pci/setup-res.c
--- linux-2.6.11-rc1/drivers/pci/setup-res.c 2004-12-24 14:35:25.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pci/setup-res.c 2005-01-14 14:04:51.990249048 -0700
@@ -42,8 +42,9 @@

pcibios_resource_to_bus(dev, &region, res);

- DBGC((KERN_ERR " got res [%lx:%lx] bus [%lx:%lx] flags %lx for "
- "BAR %d of %s\n", res->start, res->end,
+ DBGC((KERN_ERR " got res [%llx:%llx] bus [%lx:%lx] flags %lx for "
+ "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)));

@@ -108,10 +109,11 @@
err = insert_resource(root, res);

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" :
"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;
@@ -121,7 +123,7 @@
{
struct pci_bus *bus = dev->bus;
struct resource *res = dev->resource + resno;
- unsigned long size, min, align;
+ u64 size, min, align;
int ret;

size = res->end - res->start + 1;
@@ -148,9 +150,10 @@
}

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 #%d:%llx@%llx for %s\n",
res->flags & IORESOURCE_IO ? "I/O" : "mem",
- resno, size, res->start, pci_name(dev));
+ resno, (unsigned long long)size,
+ (unsigned long long)res->start, pci_name(dev));
} else if (resno < PCI_BRIDGE_RESOURCES) {
pci_update_resource(dev, res, resno);
}
@@ -167,7 +170,7 @@
for (i = 0; i < PCI_NUM_RESOURCES; i++) {
struct resource *r;
struct resource_list *list, *tmp;
- unsigned long r_align;
+ u64 r_align;

r = &dev->resource[i];
r_align = r->end - r->start;
@@ -176,13 +179,14 @@
continue;
if (!r_align) {
printk(KERN_WARNING "PCI: Ignore bogus resource %d "
- "[%lx:%lx] of %s\n",
- i, r->start, r->end, pci_name(dev));
+ "[%llx:%llx] of %s\n",
+ i, (unsigned long long)r->start,
+ (unsigned long long)r->end, pci_name(dev));
continue;
}
r_align = (i < PCI_BRIDGE_RESOURCES) ? r_align + 1 : r->start;
for (list = head; ; list = list->next) {
- unsigned long align = 0;
+ u64 align = 0;
struct resource_list *ln = list->next;
int idx;

diff -Naur linux-2.6.11-rc1/drivers/pnp/manager.c linux-2.6.11-rc1-u64/drivers/pnp/manager.c
--- linux-2.6.11-rc1/drivers/pnp/manager.c 2004-12-24 14:35:39.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pnp/manager.c 2005-01-13 11:45:41.839461408 -0700
@@ -25,7 +25,8 @@

static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;

if (!dev || !rule)
return -EINVAL;
@@ -68,7 +69,8 @@

static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;

if (!dev || !rule)
return -EINVAL;
@@ -121,7 +123,8 @@

static int pnp_assign_irq(struct pnp_dev * dev, struct pnp_irq *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;
int i;

/* IRQ priority: this table is good for i386 */
@@ -173,7 +176,8 @@

static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
{
- unsigned long *start, *end, *flags;
+ u64 *start, *end;
+ unsigned long *flags;
int i;

/* DMA priority: this table is good for i386 */
@@ -548,7 +552,7 @@
* @size: size of region
*
*/
-void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size)
+void pnp_resource_change(struct resource *resource, u64 start, u64 size)
{
if (resource == NULL)
return;
diff -Naur linux-2.6.11-rc1/drivers/pnp/resource.c linux-2.6.11-rc1-u64/drivers/pnp/resource.c
--- linux-2.6.11-rc1/drivers/pnp/resource.c 2004-12-24 14:34:58.000000000 -0700
+++ linux-2.6.11-rc1-u64/drivers/pnp/resource.c 2005-01-13 11:45:41.840461256 -0700
@@ -242,7 +242,7 @@
{
int tmp;
struct pnp_dev *tdev;
- unsigned long *port, *end, *tport, *tend;
+ u64 *port, *end, *tport, *tend;
port = &dev->res.port_resource[idx].start;
end = &dev->res.port_resource[idx].end;

@@ -298,7 +298,7 @@
{
int tmp;
struct pnp_dev *tdev;
- unsigned long *addr, *end, *taddr, *tend;
+ u64 *addr, *end, *taddr, *tend;
addr = &dev->res.mem_resource[idx].start;
end = &dev->res.mem_resource[idx].end;

@@ -359,7 +359,7 @@
{
int tmp;
struct pnp_dev *tdev;
- unsigned long * irq = &dev->res.irq_resource[idx].start;
+ u64 * irq = &dev->res.irq_resource[idx].start;

/* if the resource doesn't exist, don't complain about it */
if (cannot_compare(dev->res.irq_resource[idx].flags))
@@ -424,7 +424,7 @@
#ifndef CONFIG_IA64
int tmp;
struct pnp_dev *tdev;
- unsigned long * dma = &dev->res.dma_resource[idx].start;
+ u64 * dma = &dev->res.dma_resource[idx].start;

/* if the resource doesn't exist, don't complain about it */
if (cannot_compare(dev->res.dma_resource[idx].flags))
diff -Naur linux-2.6.11-rc1/include/asm-arm/mach/pci.h linux-2.6.11-rc1-u64/include/asm-arm/mach/pci.h
--- linux-2.6.11-rc1/include/asm-arm/mach/pci.h 2004-12-24 14:34:45.000000000 -0700
+++ linux-2.6.11-rc1-u64/include/asm-arm/mach/pci.h 2005-01-13 11:45:41.843460800 -0700
@@ -28,7 +28,7 @@
struct pci_sys_data {
struct list_head node;
int busnr; /* primary bus number */
- unsigned long mem_offset; /* bus->cpu memory mapping offset */
+ u64 mem_offset; /* bus->cpu memory mapping offset */
unsigned long io_offset; /* bus->cpu IO mapping offset */
struct pci_bus *bus; /* PCI bus */
struct resource *resource[3]; /* Primary PCI bus resources */
diff -Naur linux-2.6.11-rc1/include/linux/ioport.h linux-2.6.11-rc1-u64/include/linux/ioport.h
--- linux-2.6.11-rc1/include/linux/ioport.h 2004-12-24 14:34:26.000000000 -0700
+++ linux-2.6.11-rc1-u64/include/linux/ioport.h 2005-01-13 11:45:41.843460800 -0700
@@ -9,13 +9,14 @@
#define _LINUX_IOPORT_H

#include <linux/compiler.h>
+#include <linux/types.h>
/*
* Resources are tree-like, allowing
* nesting etc..
*/
struct resource {
+ u64 start, end;
const char *name;
- unsigned long start, end;
unsigned long flags;
struct resource *parent, *sibling, *child;
};
@@ -98,31 +99,31 @@
extern int release_resource(struct resource *new);
extern int insert_resource(struct resource *parent, struct resource *new);
extern int allocate_resource(struct resource *root, struct resource *new,
- unsigned long size,
- unsigned long min, unsigned long max,
- unsigned long align,
+ u64 size,
+ u64 min, u64 max,
+ u64 align,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data);
-int adjust_resource(struct resource *res, unsigned long start,
- unsigned long size);
+int adjust_resource(struct resource *res, u64 start,
+ u64 size);

/* Convenience shorthand with allocation */
#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name))
#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
#define rename_region(region, newname) do { (region)->name = (newname); } while (0)

-extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
+extern struct resource * __request_region(struct resource *, u64 start, u64 n, const char *name);

/* Compatibility cruft */
#define release_region(start,n) __release_region(&ioport_resource, (start), (n))
#define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n))
#define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n))

-extern int __check_region(struct resource *, unsigned long, unsigned long);
-extern void __release_region(struct resource *, unsigned long, unsigned long);
+extern int __check_region(struct resource *, u64, u64);
+extern void __release_region(struct resource *, u64, u64);

-static inline int __deprecated check_region(unsigned long s, unsigned long n)
+static inline int __deprecated check_region(u64 s, u64 n)
{
return __check_region(&ioport_resource, s, n);
}
diff -Naur linux-2.6.11-rc1/include/linux/pci.h linux-2.6.11-rc1-u64/include/linux/pci.h
--- linux-2.6.11-rc1/include/linux/pci.h 2005-01-13 14:40:18.001842648 -0700
+++ linux-2.6.11-rc1-u64/include/linux/pci.h 2005-01-13 11:45:41.844460648 -0700
@@ -726,7 +726,7 @@

/* Used only when drivers/pci/setup.c is used */
void pcibios_align_resource(void *, struct resource *,
- unsigned long, unsigned long);
+ u64, u64);
void pcibios_update_irq(struct pci_dev *, int irq);

/* Generic PCI functions used internally */
@@ -843,10 +843,10 @@

/* drivers/pci/bus.c */
int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- unsigned long size, unsigned long align,
- unsigned long min, unsigned int type_mask,
+ u64 size, u64 align,
+ u64 min, unsigned int type_mask,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data);
void pci_enable_bridges(struct pci_bus *bus);

diff -Naur linux-2.6.11-rc1/include/linux/pnp.h linux-2.6.11-rc1-u64/include/linux/pnp.h
--- linux-2.6.11-rc1/include/linux/pnp.h 2004-12-24 14:35:40.000000000 -0700
+++ linux-2.6.11-rc1-u64/include/linux/pnp.h 2005-01-13 11:45:41.845460496 -0700
@@ -384,7 +384,7 @@
int pnp_validate_config(struct pnp_dev *dev);
int pnp_activate_dev(struct pnp_dev *dev);
int pnp_disable_dev(struct pnp_dev *dev);
-void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size);
+void pnp_resource_change(struct resource *resource, u64 start, u64 size);

/* protocol helpers */
int pnp_is_active(struct pnp_dev * dev);
@@ -429,7 +429,7 @@
static inline int pnp_validate_config(struct pnp_dev *dev) { return -ENODEV; }
static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; }
static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; }
-static inline void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size) { }
+static inline void pnp_resource_change(struct resource *resource, u64 start, u64 size) { }

/* protocol helpers */
static inline int pnp_is_active(struct pnp_dev * dev) { return 0; }
diff -Naur linux-2.6.11-rc1/kernel/resource.c linux-2.6.11-rc1-u64/kernel/resource.c
--- linux-2.6.11-rc1/kernel/resource.c 2005-01-13 14:40:18.537761176 -0700
+++ linux-2.6.11-rc1-u64/kernel/resource.c 2005-01-13 18:01:09.029807928 -0700
@@ -23,7 +23,7 @@

struct resource ioport_resource = {
.name = "PCI IO",
- .start = 0x0000,
+ .start = 0x0000ULL,
.end = IO_SPACE_LIMIT,
.flags = IORESOURCE_IO,
};
@@ -32,8 +32,8 @@

struct resource iomem_resource = {
.name = "PCI mem",
- .start = 0UL,
- .end = ~0UL,
+ .start = 0ULL,
+ .end = ~0ULL,
.flags = IORESOURCE_MEM,
};

@@ -83,7 +83,7 @@
for (depth = 0, p = r; depth < MAX_IORES_LEVEL; depth++, p = p->parent)
if (p->parent == root)
break;
- seq_printf(m, "%*s%0*lx-%0*lx : %s\n",
+ seq_printf(m, "%*s%0*llx-%0*llx : %s\n",
depth * 2, "",
width, r->start,
width, r->end,
@@ -151,8 +151,8 @@
/* Return the conflict entry if you can't request it */
static struct resource * __request_resource(struct resource *root, struct resource *new)
{
- unsigned long start = new->start;
- unsigned long end = new->end;
+ u64 start = new->start;
+ u64 end = new->end;
struct resource *tmp, **p;

if (end < start)
@@ -236,11 +236,11 @@
* Find empty slot in the resource tree given range and alignment.
*/
static int find_resource(struct resource *root, struct resource *new,
- unsigned long size,
- unsigned long min, unsigned long max,
- unsigned long align,
+ u64 size,
+ u64 min, u64 max,
+ u64 align,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data)
{
struct resource *this = root->child;
@@ -282,11 +282,11 @@
* Allocate empty slot in the resource tree given range and alignment.
*/
int allocate_resource(struct resource *root, struct resource *new,
- unsigned long size,
- unsigned long min, unsigned long max,
- unsigned long align,
+ u64 size,
+ u64 min, u64 max,
+ u64 align,
void (*alignf)(void *, struct resource *,
- unsigned long, unsigned long),
+ u64, u64),
void *alignf_data)
{
int err;
@@ -378,10 +378,10 @@
* arguments. Returns -EBUSY if it can't fit. Existing children of
* the resource are assumed to be immutable.
*/
-int adjust_resource(struct resource *res, unsigned long start, unsigned long size)
+int adjust_resource(struct resource *res, u64 start, u64 size)
{
struct resource *tmp, *parent = res->parent;
- unsigned long end = start + size - 1;
+ u64 end = start + size - 1;
int result = -EBUSY;

write_lock(&resource_lock);
@@ -428,7 +428,7 @@
*
* Release-region releases a matching busy region.
*/
-struct resource * __request_region(struct resource *parent, unsigned long start, unsigned long n, const char *name)
+struct resource * __request_region(struct resource *parent, u64 start, u64 n, const char *name)
{
struct resource *res = kmalloc(sizeof(*res), GFP_KERNEL);

@@ -465,7 +465,7 @@

EXPORT_SYMBOL(__request_region);

-int __deprecated __check_region(struct resource *parent, unsigned long start, unsigned long n)
+int __deprecated __check_region(struct resource *parent, u64 start, u64 n)
{
struct resource * res;

@@ -480,10 +480,10 @@

EXPORT_SYMBOL(__check_region);

-void __release_region(struct resource *parent, unsigned long start, unsigned long n)
+void __release_region(struct resource *parent, u64 start, u64 n)
{
struct resource **p;
- unsigned long end;
+ u64 end;

p = &parent->child;
end = start + n - 1;
@@ -512,7 +512,7 @@

write_unlock(&resource_lock);

- printk(KERN_WARNING "Trying to free nonexistent resource <%08lx-%08lx>\n", start, end);
+ printk(KERN_WARNING "Trying to free nonexistent resource <%16llx-%16llx>\n", start, end);
}

EXPORT_SYMBOL(__release_region);

2005-02-01 00:49:10

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH 1/5] resource: core changes to update u64 to unsigned long

On Fri, Jan 14, 2005 at 01:32:50PM -0800, Dave Jiang wrote:
> Here's the prink's with the proper cast I think. Should only be change
> in core and driver. The arch patches are fine.

Thanks, I've applied this one, and the other 4 to my bk trees, and they
will show up in the next -mm releases. After 2.6.11 is out, I'll send
them off to Linus.

Thanks again.

greg k-h