diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-06 12:04:44 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-06 12:04:44 -0700 |
commit | 032f99bec84d1c3ee1cef8512d99c8c8f1779e72 (patch) | |
tree | d27088a1fe84095681439ccb1173dadbee7436ed /pci | |
parent | 92829af95c1d3e6eaf90b17e1077b5fa7a90949f (diff) | |
download | patches-032f99bec84d1c3ee1cef8512d99c8c8f1779e72.tar.gz |
pci 64 bit resources patches added
Diffstat (limited to 'pci')
-rw-r--r-- | pci/pci-64-bit-resources-arch-changes.patch | 287 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-core-changes.patch | 222 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-drivers-ide-changes.patch | 89 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-drivers-media-changes.patch | 146 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-drivers-net-changes.patch | 235 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-drivers-others-changes.patch | 585 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-drivers-pci-changes.patch | 385 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-drivers-pcmcia-changes.patch | 139 | ||||
-rw-r--r-- | pci/pci-64-bit-resources-sound-changes.patch | 175 |
9 files changed, 2263 insertions, 0 deletions
diff --git a/pci/pci-64-bit-resources-arch-changes.patch b/pci/pci-64-bit-resources-arch-changes.patch new file mode 100644 index 0000000000000..4d11a3b5d85b7 --- /dev/null +++ b/pci/pci-64-bit-resources-arch-changes.patch @@ -0,0 +1,287 @@ +From vivek@in.ibm.com Thu Mar 23 12:10:51 2006 +Date: Thu, 23 Mar 2006 15:10:18 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 9/10] PCI: 64 bit resources arch changes +Message-ID: <20060323201018.GM7175@in.ibm.com> +Content-Disposition: inline + +o Changes required for various arch/, for 64 bit resources. + +Signed-off-by: Dave Jiang <dave.jiang@gmail.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + arch/arm/kernel/bios32.c | 6 ++--- + arch/arm/kernel/setup.c | 42 +++++++++++++++++++++++++++++++++++------ + arch/i386/kernel/efi.c | 6 +++-- + arch/i386/pci/i386.c | 4 +-- + arch/ppc/kernel/pci.c | 46 ++++++++++++++++++++++++++------------------- + arch/sparc/kernel/ioport.c | 8 ++++--- + include/asm-arm/mach/pci.h | 2 - + 7 files changed, 78 insertions(+), 36 deletions(-) + +--- gregkh-2.6.orig/arch/arm/kernel/bios32.c ++++ gregkh-2.6/arch/arm/kernel/bios32.c +@@ -304,7 +304,7 @@ static inline int pdev_bad_for_parity(st + static void __devinit + pdev_fixup_device_resources(struct pci_sys_data *root, struct pci_dev *dev) + { +- unsigned long offset; ++ u64 offset; + int i; + + for (i = 0; i < PCI_NUM_RESOURCES; i++) { +@@ -634,9 +634,9 @@ char * __init pcibios_setup(char *str) + * which might be mirrored at 0x0100-0x03ff.. + */ + void pcibios_align_resource(void *data, struct resource *res, +- unsigned long size, unsigned long align) ++ u64 size, u64 align) + { +- unsigned long start = res->start; ++ u64 start = res->start; + + if (res->flags & IORESOURCE_IO && start & 0x300) + start = (start + 0x3ff) & ~0x3ff; +--- gregkh-2.6.orig/arch/arm/kernel/setup.c ++++ gregkh-2.6/arch/arm/kernel/setup.c +@@ -119,9 +119,24 @@ DEFINE_PER_CPU(struct cpuinfo_arm, cpu_d + * Standard memory resources + */ + static struct resource mem_res[] = { +- { "Video RAM", 0, 0, IORESOURCE_MEM }, +- { "Kernel text", 0, 0, IORESOURCE_MEM }, +- { "Kernel data", 0, 0, IORESOURCE_MEM } ++ { ++ .name = "Video RAM", ++ .start = 0, ++ .end = 0, ++ .flags = IORESOURCE_MEM ++ }, ++ { ++ .name = "Kernel text", ++ .start = 0, ++ .end = 0, ++ .flags = IORESOURCE_MEM ++ }, ++ { ++ .name = "Kernel data", ++ .start = 0, ++ .end = 0, ++ .flags = IORESOURCE_MEM ++ } + }; + + #define video_ram mem_res[0] +@@ -129,9 +144,24 @@ static struct resource mem_res[] = { + #define kernel_data mem_res[2] + + static struct resource io_res[] = { +- { "reserved", 0x3bc, 0x3be, IORESOURCE_IO | IORESOURCE_BUSY }, +- { "reserved", 0x378, 0x37f, IORESOURCE_IO | IORESOURCE_BUSY }, +- { "reserved", 0x278, 0x27f, IORESOURCE_IO | IORESOURCE_BUSY } ++ { ++ .name = "reserved", ++ .start = 0x3bc, ++ .end = 0x3be, ++ .flags = IORESOURCE_IO | IORESOURCE_BUSY ++ }, ++ { ++ .name = "reserved", ++ .start = 0x378, ++ .end = 0x37f, ++ .flags = IORESOURCE_IO | IORESOURCE_BUSY ++ }, ++ { ++ .name = "reserved", ++ .start = 0x278, ++ .end = 0x27f, ++ .flags = IORESOURCE_IO | IORESOURCE_BUSY ++ } + }; + + #define lp0 io_res[0] +--- gregkh-2.6.orig/arch/i386/kernel/efi.c ++++ gregkh-2.6/arch/i386/kernel/efi.c +@@ -601,8 +601,10 @@ efi_initialize_iomem_resources(struct re + res->end = res->start + ((md->num_pages << EFI_PAGE_SHIFT) - 1); + res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; + if (request_resource(&iomem_resource, res) < 0) +- printk(KERN_ERR PFX "Failed to allocate res %s : 0x%lx-0x%lx\n", +- res->name, res->start, res->end); ++ printk(KERN_ERR PFX "Failed to allocate res %s : " ++ "0x%llx-0x%llx\n", res->name, ++ (unsigned long long)res->start, ++ (unsigned long long)res->end); + /* + * We don't know which region contains kernel data so we try + * it repeatedly and let the resource manager test it. +--- gregkh-2.6.orig/arch/i386/pci/i386.c ++++ gregkh-2.6/arch/i386/pci/i386.c +@@ -48,10 +48,10 @@ + */ + void + pcibios_align_resource(void *data, struct resource *res, +- unsigned long size, unsigned long align) ++ u64 size, u64 align) + { + if (res->flags & IORESOURCE_IO) { +- unsigned long start = res->start; ++ u64 start = res->start; + + if (start & 0x300) { + start = (start + 0x3ff) & ~0x3ff; +--- gregkh-2.6.orig/arch/ppc/kernel/pci.c ++++ gregkh-2.6/arch/ppc/kernel/pci.c +@@ -95,8 +95,10 @@ pcibios_fixup_resources(struct pci_dev * + if (!res->flags) + continue; + if (res->end == 0xffffffff) { +- DBG("PCI:%s Resource %d [%08lx-%08lx] is unassigned\n", +- pci_name(dev), i, res->start, res->end); ++ DBG("PCI:%s Resource %d [%016llx-%016llx] is unassigned\n", ++ pci_name(dev), i, ++ (unsigned long long)res->start, ++ (unsigned long long)res->end); + res->end -= res->start; + res->start = 0; + res->flags |= IORESOURCE_UNSET; +@@ -169,18 +171,18 @@ EXPORT_SYMBOL(pcibios_bus_to_resource); + * but we want to try to avoid allocating at 0x2900-0x2bff + * which might have be mirrored at 0x0100-0x03ff.. + */ +-void pcibios_align_resource(void *data, struct resource *res, unsigned long size, +- unsigned long align) ++void pcibios_align_resource(void *data, struct resource *res, u64 size, ++ u64 align) + { + struct pci_dev *dev = data; + + if (res->flags & IORESOURCE_IO) { +- unsigned long start = res->start; ++ u64 start = res->start; + + if (size > 0x100) { + printk(KERN_ERR "PCI: I/O Region %s/%d too large" +- " (%ld bytes)\n", pci_name(dev), +- dev->resource - res, size); ++ " (%lld bytes)\n", pci_name(dev), ++ dev->resource - res, (unsigned long long)size); + } + + if (start & 0x300) { +@@ -251,8 +253,9 @@ pcibios_allocate_bus_resources(struct li + } + } + +- DBG("PCI: bridge rsrc %lx..%lx (%lx), parent %p\n", +- res->start, res->end, res->flags, pr); ++ DBG("PCI: bridge rsrc %llx..%llx (%lx), parent %p\n", ++ (unsigned long long)res->start, ++ (unsigned long long)res->end, res->flags, pr); + if (pr) { + if (request_resource(pr, res) == 0) + continue; +@@ -302,8 +305,9 @@ reparent_resources(struct resource *pare + *pp = NULL; + for (p = res->child; p != NULL; p = p->sibling) { + p->parent = res; +- DBG(KERN_INFO "PCI: reparented %s [%lx..%lx] under %s\n", +- p->name, p->start, p->end, res->name); ++ DBG(KERN_INFO "PCI: reparented %s [%llx..%llx] under %s\n", ++ p->name, (unsigned long long)p->start, ++ (unsigned long long)p->end, res->name); + } + return 0; + } +@@ -358,13 +362,15 @@ pci_relocate_bridge_resource(struct pci_ + try = conflict->start - 1; + } + if (request_resource(pr, res)) { +- DBG(KERN_ERR "PCI: huh? couldn't move to %lx..%lx\n", +- res->start, res->end); ++ DBG(KERN_ERR "PCI: huh? couldn't move to %llx..%llx\n", ++ (unsigned long long)res->start, ++ (unsigned long long)res->end); + return -1; /* "can't happen" */ + } + update_bridge_base(bus, i); +- printk(KERN_INFO "PCI: bridge %d resource %d moved to %lx..%lx\n", +- bus->number, i, res->start, res->end); ++ printk(KERN_INFO "PCI: bridge %d resource %d moved to %llx..%llx\n", ++ bus->number, i, (unsigned long long)res->start, ++ (unsigned long long)res->end); + return 0; + } + +@@ -475,15 +481,17 @@ static inline void alloc_resource(struct + { + struct resource *pr, *r = &dev->resource[idx]; + +- DBG("PCI:%s: Resource %d: %08lx-%08lx (f=%lx)\n", +- pci_name(dev), idx, r->start, r->end, r->flags); ++ DBG("PCI:%s: Resource %d: %016llx-%016llx (f=%lx)\n", ++ pci_name(dev), idx, (unsigned long long)r->start, ++ (unsigned long long)r->end, r->flags); + pr = pci_find_parent_resource(dev, r); + if (!pr || request_resource(pr, r) < 0) { + printk(KERN_ERR "PCI: Cannot allocate resource region %d" + " of device %s\n", idx, pci_name(dev)); + if (pr) +- DBG("PCI: parent is %p: %08lx-%08lx (f=%lx)\n", +- pr, pr->start, pr->end, pr->flags); ++ DBG("PCI: parent is %p: %016llx-%016llx (f=%lx)\n", ++ pr, (unsigned long long)pr->start, ++ (unsigned long long)pr->end, pr->flags); + /* We'll assign a new address later */ + r->flags |= IORESOURCE_UNSET; + r->end -= r->start; +--- gregkh-2.6.orig/arch/sparc/kernel/ioport.c ++++ gregkh-2.6/arch/sparc/kernel/ioport.c +@@ -206,7 +206,7 @@ _sparc_ioremap(struct resource *res, u32 + pa &= PAGE_MASK; + sparc_mapiorange(bus, pa, res->start, res->end - res->start + 1); + +- return (void __iomem *) (res->start + offset); ++ return (void __iomem *)(unsigned long)(res->start + offset); + } + + /* +@@ -274,7 +274,7 @@ void *sbus_alloc_consistent(struct sbus_ + if (mmu_map_dma_area(dma_addrp, va, res->start, len_total) != 0) + goto err_noiommu; + +- return (void *)res->start; ++ return (void *)(unsigned long)res->start; + + err_noiommu: + release_resource(res); +@@ -685,7 +685,9 @@ _sparc_io_get_info(char *buf, char **sta + if (p + 32 >= e) /* Better than nothing */ + break; + if ((nm = r->name) == 0) nm = "???"; +- p += sprintf(p, "%08lx-%08lx: %s\n", r->start, r->end, nm); ++ p += sprintf(p, "%016llx-%016llx: %s\n", ++ (unsigned long long)r->start, ++ (unsigned long long)r->end, nm); + } + + return p-buf; +--- gregkh-2.6.orig/include/asm-arm/mach/pci.h ++++ gregkh-2.6/include/asm-arm/mach/pci.h +@@ -28,7 +28,7 @@ struct hw_pci { + 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 --git a/pci/pci-64-bit-resources-core-changes.patch b/pci/pci-64-bit-resources-core-changes.patch new file mode 100644 index 0000000000000..1cf9a3c15f574 --- /dev/null +++ b/pci/pci-64-bit-resources-core-changes.patch @@ -0,0 +1,222 @@ +From vivek@in.ibm.com Thu Mar 23 12:00:14 2006 +Date: Thu, 23 Mar 2006 14:59:44 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 1/10] PCI: 64 bit resources core changes +Message-ID: <20060323195944.GE7175@in.ibm.com> +Content-Disposition: inline + + + +o Core changes for 64bit resources. Changes start and end field to u64 + from unsigned long. + +Signed-off-by: Dave Jiang <dave.jiang@gmail.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + include/linux/ioport.h | 23 ++++++++++++----------- + kernel/resource.c | 48 +++++++++++++++++++++++++----------------------- + 2 files changed, 37 insertions(+), 34 deletions(-) + +--- gregkh-2.6.orig/include/linux/ioport.h ++++ gregkh-2.6/include/linux/ioport.h +@@ -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; + }; +@@ -96,31 +97,31 @@ extern struct resource * ____request_res + extern int release_resource(struct resource *new); + extern __deprecated_for_modules 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); + } +--- gregkh-2.6.orig/kernel/resource.c ++++ gregkh-2.6/kernel/resource.c +@@ -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 @@ EXPORT_SYMBOL(ioport_resource); + + struct resource iomem_resource = { + .name = "PCI mem", +- .start = 0UL, +- .end = ~0UL, ++ .start = 0ULL, ++ .end = ~0ULL, + .flags = IORESOURCE_MEM, + }; + +@@ -83,10 +83,10 @@ static int r_show(struct seq_file *m, vo + 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, ++ width, (unsigned long long) r->start, ++ width, (unsigned long long) r->end, + r->name ? r->name : "<BAD>"); + return 0; + } +@@ -151,8 +151,8 @@ __initcall(ioresources_init); + /* 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 @@ EXPORT_SYMBOL(release_resource); + * 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 @@ static int find_resource(struct resource + * 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 @@ EXPORT_SYMBOL(insert_resource); + * 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 @@ EXPORT_SYMBOL(adjust_resource); + * + * 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 = kzalloc(sizeof(*res), GFP_KERNEL); + +@@ -464,7 +464,7 @@ struct resource * __request_region(struc + + EXPORT_SYMBOL(__request_region); + +-int __check_region(struct resource *parent, unsigned long start, unsigned long n) ++int __check_region(struct resource *parent, u64 start, u64 n) + { + struct resource * res; + +@@ -479,10 +479,10 @@ int __check_region(struct resource *pare + + 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; +@@ -511,7 +511,9 @@ void __release_region(struct resource *p + + 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", (unsigned long long)start, ++ (unsigned long long) end); + } + + EXPORT_SYMBOL(__release_region); diff --git a/pci/pci-64-bit-resources-drivers-ide-changes.patch b/pci/pci-64-bit-resources-drivers-ide-changes.patch new file mode 100644 index 0000000000000..632aab0c35268 --- /dev/null +++ b/pci/pci-64-bit-resources-drivers-ide-changes.patch @@ -0,0 +1,89 @@ +From vivek@in.ibm.com Fri Mar 24 06:43:24 2006 +Date: Fri, 24 Mar 2006 09:43:07 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +To: Alan Cox <alan@lxorguk.ukuu.org.uk> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 3/10] PCI: 64 bit resources drivers ide changes +Message-ID: <20060324144307.GB4406@in.ibm.com> +Content-Disposition: inline + +o Changes required under drivers/ide/* for 64bit resources. + +Signed-off-by: Dave Jiang <dave.jiang@gmail.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/ide/pci/aec62xx.c | 3 ++- + drivers/ide/pci/cmd64x.c | 3 ++- + drivers/ide/pci/hpt34x.c | 2 +- + drivers/ide/pci/pdc202xx_new.c | 4 ++-- + drivers/ide/pci/pdc202xx_old.c | 4 ++-- + 5 files changed, 9 insertions(+), 7 deletions(-) + +--- gregkh-2.6.orig/drivers/ide/pci/aec62xx.c ++++ gregkh-2.6/drivers/ide/pci/aec62xx.c +@@ -254,7 +254,8 @@ static unsigned int __devinit init_chips + + if (dev->resource[PCI_ROM_RESOURCE].start) { + pci_write_config_dword(dev, PCI_ROM_ADDRESS, dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); +- printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, dev->resource[PCI_ROM_RESOURCE].start); ++ printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, ++ (unsigned long)dev->resource[PCI_ROM_RESOURCE].start); + } + + if (bus_speed <= 33) +--- gregkh-2.6.orig/drivers/ide/pci/cmd64x.c ++++ gregkh-2.6/drivers/ide/pci/cmd64x.c +@@ -609,7 +609,8 @@ static unsigned int __devinit init_chips + #ifdef __i386__ + if (dev->resource[PCI_ROM_RESOURCE].start) { + pci_write_config_dword(dev, PCI_ROM_ADDRESS, dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); +- printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, dev->resource[PCI_ROM_RESOURCE].start); ++ printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, ++ (unsigned long)dev->resource[PCI_ROM_RESOURCE].start); + } + #endif + +--- gregkh-2.6.orig/drivers/ide/pci/hpt34x.c ++++ gregkh-2.6/drivers/ide/pci/hpt34x.c +@@ -176,7 +176,7 @@ static unsigned int __devinit init_chips + pci_write_config_dword(dev, PCI_ROM_ADDRESS, + dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); + printk(KERN_INFO "HPT345: ROM enabled at 0x%08lx\n", +- dev->resource[PCI_ROM_RESOURCE].start); ++ (unsigned long)dev->resource[PCI_ROM_RESOURCE].start); + } + pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0xF0); + } else { +--- gregkh-2.6.orig/drivers/ide/pci/pdc202xx_new.c ++++ gregkh-2.6/drivers/ide/pci/pdc202xx_new.c +@@ -313,8 +313,8 @@ static unsigned int __devinit init_chips + if (dev->resource[PCI_ROM_RESOURCE].start) { + pci_write_config_dword(dev, PCI_ROM_ADDRESS, + dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); +- printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", +- name, dev->resource[PCI_ROM_RESOURCE].start); ++ printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, ++ (unsigned long)dev->resource[PCI_ROM_RESOURCE].start); + } + + #ifdef CONFIG_PPC_PMAC +--- gregkh-2.6.orig/drivers/ide/pci/pdc202xx_old.c ++++ gregkh-2.6/drivers/ide/pci/pdc202xx_old.c +@@ -580,8 +580,8 @@ static unsigned int __devinit init_chips + if (dev->resource[PCI_ROM_RESOURCE].start) { + pci_write_config_dword(dev, PCI_ROM_ADDRESS, + dev->resource[PCI_ROM_RESOURCE].start | PCI_ROM_ADDRESS_ENABLE); +- printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", +- name, dev->resource[PCI_ROM_RESOURCE].start); ++ printk(KERN_INFO "%s: ROM enabled at 0x%08lx\n", name, ++ (unsigned long)dev->resource[PCI_ROM_RESOURCE].start); + } + + /* diff --git a/pci/pci-64-bit-resources-drivers-media-changes.patch b/pci/pci-64-bit-resources-drivers-media-changes.patch new file mode 100644 index 0000000000000..1e2ecbbd101fe --- /dev/null +++ b/pci/pci-64-bit-resources-drivers-media-changes.patch @@ -0,0 +1,146 @@ +From vivek@in.ibm.com Thu Mar 23 12:03:57 2006 +Date: Thu, 23 Mar 2006 15:03:42 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 4/10] PCI: 64 bit resources drivers media changes +Message-ID: <20060323200342.GH7175@in.ibm.com> +Content-Disposition: inline + + +o Changes required under drivers/media/* for 64bit resources. + +Signed-off-by: Murali M Chakravarthy <muralim@in.ibm.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/media/video/bt8xx/bttv-driver.c | 10 ++++++---- + drivers/media/video/cx88/cx88-alsa.c | 8 ++++---- + drivers/media/video/cx88/cx88-core.c | 4 ++-- + drivers/media/video/cx88/cx88-mpeg.c | 4 ++-- + drivers/media/video/cx88/cx88-video.c | 4 ++-- + drivers/media/video/saa7134/saa7134-core.c | 8 ++++---- + 6 files changed, 20 insertions(+), 18 deletions(-) + +--- gregkh-2.6.orig/drivers/media/video/bt8xx/bttv-driver.c ++++ gregkh-2.6/drivers/media/video/bt8xx/bttv-driver.c +@@ -4019,8 +4019,9 @@ static int __devinit bttv_probe(struct p + if (!request_mem_region(pci_resource_start(dev,0), + pci_resource_len(dev,0), + btv->c.name)) { +- printk(KERN_WARNING "bttv%d: can't request iomem (0x%lx).\n", +- btv->c.nr, pci_resource_start(dev,0)); ++ printk(KERN_WARNING "bttv%d: can't request iomem (0x%llx).\n", ++ btv->c.nr, ++ (unsigned long long)pci_resource_start(dev,0)); + return -EBUSY; + } + pci_set_master(dev); +@@ -4031,8 +4032,9 @@ static int __devinit bttv_probe(struct p + pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat); + printk(KERN_INFO "bttv%d: Bt%d (rev %d) at %s, ", + bttv_num,btv->id, btv->revision, pci_name(dev)); +- printk("irq: %d, latency: %d, mmio: 0x%lx\n", +- btv->c.pci->irq, lat, pci_resource_start(dev,0)); ++ printk("irq: %d, latency: %d, mmio: 0x%llx\n", ++ btv->c.pci->irq, lat, ++ (unsigned long long)pci_resource_start(dev,0)); + schedule(); + + btv->bt848_mmio=ioremap(pci_resource_start(dev,0), 0x1000); +--- gregkh-2.6.orig/drivers/media/video/cx88/cx88-alsa.c ++++ gregkh-2.6/drivers/media/video/cx88/cx88-alsa.c +@@ -713,9 +713,9 @@ static int __devinit snd_cx88_create(str + pci_read_config_byte(pci, PCI_LATENCY_TIMER, &chip->pci_lat); + + dprintk(1,"ALSA %s/%i: found at %s, rev: %d, irq: %d, " +- "latency: %d, mmio: 0x%lx\n", core->name, devno, ++ "latency: %d, mmio: 0x%llx\n", core->name, devno, + pci_name(pci), chip->pci_rev, pci->irq, +- chip->pci_lat,pci_resource_start(pci,0)); ++ chip->pci_lat,(unsigned long long)pci_resource_start(pci,0)); + + chip->irq = pci->irq; + synchronize_irq(chip->irq); +@@ -767,8 +767,8 @@ static int __devinit cx88_audio_initdev( + + strcpy (card->driver, "CX88x"); + sprintf(card->shortname, "Conexant CX%x", pci->device); +- sprintf(card->longname, "%s at %#lx", +- card->shortname, pci_resource_start(pci, 0)); ++ sprintf(card->longname, "%s at %#llx", ++ card->shortname,(unsigned long long)pci_resource_start(pci, 0)); + strcpy (card->mixername, "CX88"); + + dprintk (0, "%s/%i: ALSA support for cx2388x boards\n", +--- gregkh-2.6.orig/drivers/media/video/cx88/cx88-core.c ++++ gregkh-2.6/drivers/media/video/cx88/cx88-core.c +@@ -1027,8 +1027,8 @@ static int get_ressources(struct cx88_co + pci_resource_len(pci,0), + core->name)) + return 0; +- printk(KERN_ERR "%s: can't get MMIO memory @ 0x%lx\n", +- core->name,pci_resource_start(pci,0)); ++ printk(KERN_ERR "%s: can't get MMIO memory @ 0x%llx\n", ++ core->name,(unsigned long long)pci_resource_start(pci,0)); + return -EBUSY; + } + +--- gregkh-2.6.orig/drivers/media/video/cx88/cx88-mpeg.c ++++ gregkh-2.6/drivers/media/video/cx88/cx88-mpeg.c +@@ -386,9 +386,9 @@ int cx8802_init_common(struct cx8802_dev + pci_read_config_byte(dev->pci, PCI_CLASS_REVISION, &dev->pci_rev); + pci_read_config_byte(dev->pci, PCI_LATENCY_TIMER, &dev->pci_lat); + printk(KERN_INFO "%s/2: found at %s, rev: %d, irq: %d, " +- "latency: %d, mmio: 0x%lx\n", dev->core->name, ++ "latency: %d, mmio: 0x%llx\n", dev->core->name, + pci_name(dev->pci), dev->pci_rev, dev->pci->irq, +- dev->pci_lat,pci_resource_start(dev->pci,0)); ++ dev->pci_lat,(unsigned long long)pci_resource_start(dev->pci,0)); + + /* initialize driver struct */ + spin_lock_init(&dev->slock); +--- gregkh-2.6.orig/drivers/media/video/cx88/cx88-video.c ++++ gregkh-2.6/drivers/media/video/cx88/cx88-video.c +@@ -1847,9 +1847,9 @@ static int __devinit cx8800_initdev(stru + pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &dev->pci_rev); + pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &dev->pci_lat); + printk(KERN_INFO "%s/0: found at %s, rev: %d, irq: %d, " +- "latency: %d, mmio: 0x%lx\n", core->name, ++ "latency: %d, mmio: 0x%llx\n", core->name, + pci_name(pci_dev), dev->pci_rev, pci_dev->irq, +- dev->pci_lat,pci_resource_start(pci_dev,0)); ++ dev->pci_lat,(unsigned long long)pci_resource_start(pci_dev,0)); + + pci_set_master(pci_dev); + if (!pci_dma_supported(pci_dev,0xffffffff)) { +--- gregkh-2.6.orig/drivers/media/video/saa7134/saa7134-core.c ++++ gregkh-2.6/drivers/media/video/saa7134/saa7134-core.c +@@ -866,9 +866,9 @@ static int __devinit saa7134_initdev(str + pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &dev->pci_rev); + pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &dev->pci_lat); + printk(KERN_INFO "%s: found at %s, rev: %d, irq: %d, " +- "latency: %d, mmio: 0x%lx\n", dev->name, ++ "latency: %d, mmio: 0x%llx\n", dev->name, + pci_name(pci_dev), dev->pci_rev, pci_dev->irq, +- dev->pci_lat,pci_resource_start(pci_dev,0)); ++ dev->pci_lat,(unsigned long long)pci_resource_start(pci_dev,0)); + pci_set_master(pci_dev); + if (!pci_dma_supported(pci_dev,0xffffffff)) { + printk("%s: Oops: no 32bit PCI DMA ???\n",dev->name); +@@ -900,8 +900,8 @@ static int __devinit saa7134_initdev(str + pci_resource_len(pci_dev,0), + dev->name)) { + err = -EBUSY; +- printk(KERN_ERR "%s: can't get MMIO memory @ 0x%lx\n", +- dev->name,pci_resource_start(pci_dev,0)); ++ printk(KERN_ERR "%s: can't get MMIO memory @ 0x%llx\n", ++ dev->name,(unsigned long long)pci_resource_start(pci_dev,0)); + goto fail1; + } + dev->lmmio = ioremap(pci_resource_start(pci_dev,0), 0x1000); diff --git a/pci/pci-64-bit-resources-drivers-net-changes.patch b/pci/pci-64-bit-resources-drivers-net-changes.patch new file mode 100644 index 0000000000000..2d477b33ae115 --- /dev/null +++ b/pci/pci-64-bit-resources-drivers-net-changes.patch @@ -0,0 +1,235 @@ +From vivek@in.ibm.com Thu Mar 23 12:05:04 2006 +Date: Thu, 23 Mar 2006 15:04:51 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 5/10] PCI: 64 bit resources drivers net changes +Message-ID: <20060323200451.GI7175@in.ibm.com> +Content-Disposition: inline + +o Changes required under drivers/net/* for 64bit resources. + +Signed-off-by: Dave Jiang <dave.jiang@gmail.com> +Signed-off-by: Murali M Chakravarthy <muralim@in.ibm.com> +Signed-off-by: Maneesh Soni <maneesh@in.ibm.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/net/3c59x.c | 6 ++++-- + drivers/net/8139cp.c | 11 ++++++----- + drivers/net/8139too.c | 6 +++--- + drivers/net/e100.c | 4 ++-- + drivers/net/skge.c | 4 ++-- + drivers/net/sky2.c | 6 +++--- + drivers/net/tulip/de2104x.c | 9 +++++---- + drivers/net/tulip/tulip_core.c | 6 +++--- + drivers/net/typhoon.c | 5 +++-- + drivers/net/wan/dscc4.c | 12 ++++++------ + drivers/net/wan/pc300_drv.c | 4 ++-- + 11 files changed, 39 insertions(+), 34 deletions(-) + +--- gregkh-2.6.orig/drivers/net/3c59x.c ++++ gregkh-2.6/drivers/net/3c59x.c +@@ -1413,8 +1413,10 @@ static int __devinit vortex_probe1(struc + } + + if (print_info) { +- printk(KERN_INFO "%s: CardBus functions mapped %8.8lx->%p\n", +- print_name, pci_resource_start(pdev, 2), ++ printk(KERN_INFO "%s: CardBus functions mapped " ++ "%16.16llx->%p\n", ++ print_name, ++ (unsigned long long)pci_resource_start(pdev, 2), + vp->cb_fn_base); + } + EL3WINDOW(2); +--- gregkh-2.6.orig/drivers/net/8139cp.c ++++ gregkh-2.6/drivers/net/8139cp.c +@@ -1668,7 +1668,7 @@ static int cp_init_one (struct pci_dev * + struct cp_private *cp; + int rc; + void __iomem *regs; +- long pciaddr; ++ u64 pciaddr; + unsigned int addr_len, i, pci_using_dac; + u8 pci_rev; + +@@ -1728,8 +1728,8 @@ static int cp_init_one (struct pci_dev * + } + if (pci_resource_len(pdev, 1) < CP_REGS_SIZE) { + rc = -EIO; +- printk(KERN_ERR PFX "MMIO resource (%lx) too small on pci dev %s\n", +- pci_resource_len(pdev, 1), pci_name(pdev)); ++ printk(KERN_ERR PFX "MMIO resource (%llx) too small on pci dev %s\n", ++ (unsigned long long)pci_resource_len(pdev, 1), pci_name(pdev)); + goto err_out_res; + } + +@@ -1761,8 +1761,9 @@ static int cp_init_one (struct pci_dev * + regs = ioremap(pciaddr, CP_REGS_SIZE); + if (!regs) { + rc = -EIO; +- printk(KERN_ERR PFX "Cannot map PCI MMIO (%lx@%lx) on pci dev %s\n", +- pci_resource_len(pdev, 1), pciaddr, pci_name(pdev)); ++ printk(KERN_ERR PFX "Cannot map PCI MMIO (%llx@%llx) on pci dev %s\n", ++ (unsigned long long)pci_resource_len(pdev, 1), ++ (unsigned long long)pciaddr, pci_name(pdev)); + goto err_out_res; + } + dev->base_addr = (unsigned long) regs; +--- gregkh-2.6.orig/drivers/net/8139too.c ++++ gregkh-2.6/drivers/net/8139too.c +@@ -1341,9 +1341,9 @@ static int rtl8139_open (struct net_devi + netif_start_queue (dev); + + if (netif_msg_ifup(tp)) +- printk(KERN_DEBUG "%s: rtl8139_open() ioaddr %#lx IRQ %d" +- " GP Pins %2.2x %s-duplex.\n", +- dev->name, pci_resource_start (tp->pci_dev, 1), ++ printk(KERN_DEBUG "%s: rtl8139_open() ioaddr %#llx IRQ %d" ++ " GP Pins %2.2x %s-duplex.\n", dev->name, ++ (unsigned long long)pci_resource_start (tp->pci_dev, 1), + dev->irq, RTL_R8 (MediaStatus), + tp->mii.full_duplex ? "full" : "half"); + +--- gregkh-2.6.orig/drivers/net/e100.c ++++ gregkh-2.6/drivers/net/e100.c +@@ -2678,9 +2678,9 @@ static int __devinit e100_probe(struct p + goto err_out_free; + } + +- DPRINTK(PROBE, INFO, "addr 0x%lx, irq %d, " ++ DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, " + "MAC addr %02X:%02X:%02X:%02X:%02X:%02X\n", +- pci_resource_start(pdev, 0), pdev->irq, ++ (unsigned long long)pci_resource_start(pdev, 0), pdev->irq, + netdev->dev_addr[0], netdev->dev_addr[1], netdev->dev_addr[2], + netdev->dev_addr[3], netdev->dev_addr[4], netdev->dev_addr[5]); + +--- gregkh-2.6.orig/drivers/net/skge.c ++++ gregkh-2.6/drivers/net/skge.c +@@ -3327,8 +3327,8 @@ static int __devinit skge_probe(struct p + if (err) + goto err_out_free_irq; + +- printk(KERN_INFO PFX DRV_VERSION " addr 0x%lx irq %d chip %s rev %d\n", +- pci_resource_start(pdev, 0), pdev->irq, ++ printk(KERN_INFO PFX DRV_VERSION " addr 0x%llx irq %d chip %s rev %d\n", ++ (unsigned long long)pci_resource_start(pdev, 0), pdev->irq, + skge_board_name(hw), hw->chip_rev); + + if ((dev = skge_devinit(hw, 0, using_dac)) == NULL) +--- gregkh-2.6.orig/drivers/net/sky2.c ++++ gregkh-2.6/drivers/net/sky2.c +@@ -3231,9 +3231,9 @@ static int __devinit sky2_probe(struct p + if (err) + goto err_out_iounmap; + +- printk(KERN_INFO PFX "v%s addr 0x%lx irq %d Yukon-%s (0x%x) rev %d\n", +- DRV_VERSION, pci_resource_start(pdev, 0), pdev->irq, +- yukon2_name[hw->chip_id - CHIP_ID_YUKON_XL], ++ printk(KERN_INFO PFX "v%s addr 0x%llx irq %d Yukon-%s (0x%x) rev %d\n", ++ DRV_VERSION, (unsigned long long)pci_resource_start(pdev, 0), ++ pdev->irq, yukon2_name[hw->chip_id - CHIP_ID_YUKON_XL], + hw->chip_id, hw->chip_rev); + + dev = sky2_init_netdev(hw, 0, using_dac); +--- gregkh-2.6.orig/drivers/net/tulip/de2104x.c ++++ gregkh-2.6/drivers/net/tulip/de2104x.c +@@ -2007,8 +2007,8 @@ static int __init de_init_one (struct pc + } + if (pci_resource_len(pdev, 1) < DE_REGS_SIZE) { + rc = -EIO; +- printk(KERN_ERR PFX "MMIO resource (%lx) too small on pci dev %s\n", +- pci_resource_len(pdev, 1), pci_name(pdev)); ++ printk(KERN_ERR PFX "MMIO resource (%llx) too small on pci dev %s\n", ++ (unsigned long long)pci_resource_len(pdev, 1), pci_name(pdev)); + goto err_out_res; + } + +@@ -2016,8 +2016,9 @@ static int __init de_init_one (struct pc + regs = ioremap_nocache(pciaddr, DE_REGS_SIZE); + if (!regs) { + rc = -EIO; +- printk(KERN_ERR PFX "Cannot map PCI MMIO (%lx@%lx) on pci dev %s\n", +- pci_resource_len(pdev, 1), pciaddr, pci_name(pdev)); ++ printk(KERN_ERR PFX "Cannot map PCI MMIO (%llx@%lx) on pci dev %s\n", ++ (unsigned long long)pci_resource_len(pdev, 1), ++ pciaddr, pci_name(pdev)); + goto err_out_res; + } + dev->base_addr = (unsigned long) regs; +--- gregkh-2.6.orig/drivers/net/tulip/tulip_core.c ++++ gregkh-2.6/drivers/net/tulip/tulip_core.c +@@ -1350,10 +1350,10 @@ static int __devinit tulip_init_one (str + SET_MODULE_OWNER(dev); + SET_NETDEV_DEV(dev, &pdev->dev); + if (pci_resource_len (pdev, 0) < tulip_tbl[chip_idx].io_size) { +- printk (KERN_ERR PFX "%s: I/O region (0x%lx@0x%lx) too small, " ++ printk (KERN_ERR PFX "%s: I/O region (0x%llx@0x%llx) too small, " + "aborting\n", pci_name(pdev), +- pci_resource_len (pdev, 0), +- pci_resource_start (pdev, 0)); ++ (unsigned long long)pci_resource_len (pdev, 0), ++ (unsigned long long)pci_resource_start (pdev, 0)); + goto err_out_free_netdev; + } + +--- gregkh-2.6.orig/drivers/net/typhoon.c ++++ gregkh-2.6/drivers/net/typhoon.c +@@ -2568,9 +2568,10 @@ typhoon_init_one(struct pci_dev *pdev, c + + pci_set_drvdata(pdev, dev); + +- printk(KERN_INFO "%s: %s at %s 0x%lx, ", ++ printk(KERN_INFO "%s: %s at %s 0x%llx, ", + dev->name, typhoon_card_info[card_id].name, +- use_mmio ? "MMIO" : "IO", pci_resource_start(pdev, use_mmio)); ++ use_mmio ? "MMIO" : "IO", ++ (unsigned long long)pci_resource_start(pdev, use_mmio)); + for(i = 0; i < 5; i++) + printk("%2.2x:", dev->dev_addr[i]); + printk("%2.2x\n", dev->dev_addr[i]); +--- gregkh-2.6.orig/drivers/net/wan/dscc4.c ++++ gregkh-2.6/drivers/net/wan/dscc4.c +@@ -732,15 +732,15 @@ static int __devinit dscc4_init_one(stru + ioaddr = ioremap(pci_resource_start(pdev, 0), + pci_resource_len(pdev, 0)); + if (!ioaddr) { +- printk(KERN_ERR "%s: cannot remap MMIO region %lx @ %lx\n", +- DRV_NAME, pci_resource_len(pdev, 0), +- pci_resource_start(pdev, 0)); ++ printk(KERN_ERR "%s: cannot remap MMIO region %llx @ %llx\n", ++ DRV_NAME, (unsigned long long)pci_resource_len(pdev, 0), ++ (unsigned long long)pci_resource_start(pdev, 0)); + rc = -EIO; + goto err_free_mmio_regions_2; + } +- printk(KERN_DEBUG "Siemens DSCC4, MMIO at %#lx (regs), %#lx (lbi), IRQ %d\n", +- pci_resource_start(pdev, 0), +- pci_resource_start(pdev, 1), pdev->irq); ++ printk(KERN_DEBUG "Siemens DSCC4, MMIO at %#llx (regs), %#llx (lbi), IRQ %d\n", ++ (unsigned long long)pci_resource_start(pdev, 0), ++ (unsigned long long)pci_resource_start(pdev, 1), pdev->irq); + + /* Cf errata DS5 p.2 */ + pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xf8); +--- gregkh-2.6.orig/drivers/net/wan/pc300_drv.c ++++ gregkh-2.6/drivers/net/wan/pc300_drv.c +@@ -3445,9 +3445,9 @@ cpc_init_one(struct pci_dev *pdev, const + + card = (pc300_t *) kmalloc(sizeof(pc300_t), GFP_KERNEL); + if (card == NULL) { +- printk("PC300 found at RAM 0x%08lx, " ++ printk("PC300 found at RAM 0x%016llx, " + "but could not allocate card structure.\n", +- pci_resource_start(pdev, 3)); ++ (unsigned long long)pci_resource_start(pdev, 3)); + err = -ENOMEM; + goto err_disable_dev; + } diff --git a/pci/pci-64-bit-resources-drivers-others-changes.patch b/pci/pci-64-bit-resources-drivers-others-changes.patch new file mode 100644 index 0000000000000..13c0adcea6c1d --- /dev/null +++ b/pci/pci-64-bit-resources-drivers-others-changes.patch @@ -0,0 +1,585 @@ +From vivek@in.ibm.com Thu Mar 23 12:08:00 2006 +Date: Thu, 23 Mar 2006 15:07:44 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 7/10] PCI: 64 bit resources drivers others changes +Message-ID: <20060323200744.GK7175@in.ibm.com> +Content-Disposition: inline + +o various drivers/* changes required to support 64 bit resources. This + excludes the changes to drivers/ide/*, drivers/media/*, drivers/net/*, + drivers/pci/* drivers/pcmcia/*, which have been covered in separate patches + +Signed-off-by: Dave Jiang <dave.jiang@gmail.com> +Signed-off-by: Maneesh Soni <maneesh@in.ibm.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + drivers/amba/bus.c | 5 +++-- + drivers/atm/ambassador.c | 3 ++- + drivers/atm/firestream.c | 5 +++-- + drivers/block/sx8.c | 5 +++-- + drivers/char/applicom.c | 9 ++++++--- + drivers/ieee1394/ohci1394.c | 17 +++++++++-------- + drivers/infiniband/hw/mthca/mthca_main.c | 5 +++-- + drivers/input/serio/ct82c710.c | 6 +++--- + drivers/isdn/hisax/hfc_pci.c | 2 +- + drivers/isdn/hisax/telespci.c | 5 +++-- + drivers/message/i2o/iop.c | 14 ++++++++------ + drivers/mmc/mmci.c | 4 ++-- + drivers/mtd/devices/pmc551.c | 8 ++++---- + drivers/mtd/maps/amd76xrom.c | 5 +++-- + drivers/mtd/maps/ichxrom.c | 5 +++-- + drivers/mtd/maps/scx200_docflash.c | 5 +++-- + drivers/mtd/maps/sun_uflash.c | 10 ++++++---- + drivers/pnp/manager.c | 14 +++++++++----- + drivers/pnp/resource.c | 8 ++++---- + drivers/scsi/sata_via.c | 8 ++++---- + drivers/serial/8250_pci.c | 4 ++-- + drivers/usb/host/sl811-hcd.c | 10 +++++++--- + drivers/video/console/vgacon.c | 12 ++++++------ + include/linux/pnp.h | 4 ++-- + 24 files changed, 99 insertions(+), 74 deletions(-) + +--- gregkh-2.6.orig/drivers/amba/bus.c ++++ gregkh-2.6/drivers/amba/bus.c +@@ -180,8 +180,9 @@ static DEVICE_ATTR(name, S_IRUGO, show_# + amba_attr(id, "%08x\n", dev->periphid); + amba_attr(irq0, "%u\n", dev->irq[0]); + amba_attr(irq1, "%u\n", dev->irq[1]); +-amba_attr(resource, "\t%08lx\t%08lx\t%08lx\n", +- dev->res.start, dev->res.end, dev->res.flags); ++amba_attr(resource, "\t%016llx\t%016llx\t%016llx\n", ++ (unsigned long long)dev->res.start, (unsigned long long)dev->res.end, ++ dev->res.flags); + + /** + * amba_device_register - register an AMBA device +--- gregkh-2.6.orig/drivers/atm/ambassador.c ++++ gregkh-2.6/drivers/atm/ambassador.c +@@ -2257,7 +2257,8 @@ static int __devinit amb_probe(struct pc + } + + PRINTD (DBG_INFO, "found Madge ATM adapter (amb) at" +- " IO %lx, IRQ %u, MEM %p", pci_resource_start(pci_dev, 1), ++ " IO %llx, IRQ %u, MEM %p", ++ (unsigned long long)pci_resource_start(pci_dev, 1), + irq, bus_to_virt(pci_resource_start(pci_dev, 0))); + + // check IO region +--- gregkh-2.6.orig/drivers/atm/firestream.c ++++ gregkh-2.6/drivers/atm/firestream.c +@@ -1657,9 +1657,10 @@ static int __devinit fs_init (struct fs_ + func_enter (); + pci_dev = dev->pci_dev; + +- printk (KERN_INFO "found a FireStream %d card, base %08lx, irq%d.\n", ++ printk (KERN_INFO "found a FireStream %d card, base %16llx, irq%d.\n", + IS_FS50(dev)?50:155, +- pci_resource_start(pci_dev, 0), dev->pci_dev->irq); ++ (unsigned long long)pci_resource_start(pci_dev, 0), ++ dev->pci_dev->irq); + + if (fs_debug & FS_DEBUG_INIT) + my_hd ((unsigned char *) dev, sizeof (*dev)); +--- gregkh-2.6.orig/drivers/block/sx8.c ++++ gregkh-2.6/drivers/block/sx8.c +@@ -1694,9 +1694,10 @@ static int carm_init_one (struct pci_dev + DPRINTK("waiting for probe_comp\n"); + wait_for_completion(&host->probe_comp); + +- printk(KERN_INFO "%s: pci %s, ports %d, io %lx, irq %u, major %d\n", ++ printk(KERN_INFO "%s: pci %s, ports %d, io %llx, irq %u, major %d\n", + host->name, pci_name(pdev), (int) CARM_MAX_PORTS, +- pci_resource_start(pdev, 0), pdev->irq, host->major); ++ (unsigned long long)pci_resource_start(pdev, 0), ++ pdev->irq, host->major); + + carm_host_id++; + pci_set_drvdata(pdev, host); +--- gregkh-2.6.orig/drivers/char/applicom.c ++++ gregkh-2.6/drivers/char/applicom.c +@@ -215,13 +215,16 @@ int __init applicom_init(void) + RamIO = ioremap(dev->resource[0].start, LEN_RAM_IO); + + if (!RamIO) { +- printk(KERN_INFO "ac.o: Failed to ioremap PCI memory space at 0x%lx\n", dev->resource[0].start); ++ printk(KERN_INFO "ac.o: Failed to ioremap PCI memory " ++ "space at 0x%llx\n", ++ (unsigned long long)dev->resource[0].start); + pci_disable_device(dev); + return -EIO; + } + +- printk(KERN_INFO "Applicom %s found at mem 0x%lx, irq %d\n", +- applicom_pci_devnames[dev->device-1], dev->resource[0].start, ++ printk(KERN_INFO "Applicom %s found at mem 0x%llx, irq %d\n", ++ applicom_pci_devnames[dev->device-1], ++ (unsigned long long)dev->resource[0].start, + dev->irq); + + boardno = ac_register_board(dev->resource[0].start, RamIO,0); +--- gregkh-2.6.orig/drivers/ieee1394/ohci1394.c ++++ gregkh-2.6/drivers/ieee1394/ohci1394.c +@@ -592,11 +592,11 @@ static void ohci_initialize(struct ti_oh + sprintf (irq_buf, "%s", __irq_itoa(ohci->dev->irq)); + #endif + PRINT(KERN_INFO, "OHCI-1394 %d.%d (PCI): IRQ=[%s] " +- "MMIO=[%lx-%lx] Max Packet=[%d] IR/IT contexts=[%d/%d]", ++ "MMIO=[%llx-%llx] Max Packet=[%d] IR/IT contexts=[%d/%d]", + ((((buf) >> 16) & 0xf) + (((buf) >> 20) & 0xf) * 10), + ((((buf) >> 4) & 0xf) + ((buf) & 0xf) * 10), irq_buf, +- pci_resource_start(ohci->dev, 0), +- pci_resource_start(ohci->dev, 0) + OHCI1394_REGISTER_SIZE - 1, ++ (unsigned long long)pci_resource_start(ohci->dev, 0), ++ (unsigned long long)pci_resource_start(ohci->dev, 0) + OHCI1394_REGISTER_SIZE - 1, + ohci->max_packet_size, + ohci->nb_iso_rcv_ctx, ohci->nb_iso_xmit_ctx); + +@@ -3210,7 +3210,7 @@ static int __devinit ohci1394_pci_probe( + { + struct hpsb_host *host; + struct ti_ohci *ohci; /* shortcut to currently handled device */ +- unsigned long ohci_base; ++ u64 ohci_base; + + if (pci_enable_device(dev)) + FAIL(-ENXIO, "Failed to enable OHCI hardware"); +@@ -3263,15 +3263,16 @@ static int __devinit ohci1394_pci_probe( + * clearly says it's 2kb, so this shouldn't be a problem. */ + ohci_base = pci_resource_start(dev, 0); + if (pci_resource_len(dev, 0) < OHCI1394_REGISTER_SIZE) +- PRINT(KERN_WARNING, "PCI resource length of %lx too small!", +- pci_resource_len(dev, 0)); ++ PRINT(KERN_WARNING, "PCI resource length of 0x%llx too small!", ++ (unsigned long long)pci_resource_len(dev, 0)); + + /* Seems PCMCIA handles this internally. Not sure why. Seems + * pretty bogus to force a driver to special case this. */ + #ifndef PCMCIA + if (!request_mem_region (ohci_base, OHCI1394_REGISTER_SIZE, OHCI1394_DRIVER_NAME)) +- FAIL(-ENOMEM, "MMIO resource (0x%lx - 0x%lx) unavailable", +- ohci_base, ohci_base + OHCI1394_REGISTER_SIZE); ++ FAIL(-ENOMEM, "MMIO resource (0x%llx - 0x%llx) unavailable", ++ (unsigned long long)ohci_base, ++ (unsigned long long)ohci_base + OHCI1394_REGISTER_SIZE); + #endif + ohci->init_state = OHCI_INIT_HAVE_MEM_REGION; + +--- gregkh-2.6.orig/drivers/infiniband/hw/mthca/mthca_main.c ++++ gregkh-2.6/drivers/infiniband/hw/mthca/mthca_main.c +@@ -157,8 +157,9 @@ static int __devinit mthca_dev_lim(struc + + if (dev_lim->uar_size > pci_resource_len(mdev->pdev, 2)) { + mthca_err(mdev, "HCA reported UAR size of 0x%x bigger than " +- "PCI resource 2 size of 0x%lx, aborting.\n", +- dev_lim->uar_size, pci_resource_len(mdev->pdev, 2)); ++ "PCI resource 2 size of 0x%llx, aborting.\n", ++ dev_lim->uar_size, ++ (unsigned long long)pci_resource_len(mdev->pdev, 2)); + return -ENODEV; + } + +--- gregkh-2.6.orig/drivers/input/serio/ct82c710.c ++++ gregkh-2.6/drivers/input/serio/ct82c710.c +@@ -189,7 +189,7 @@ static int __devinit ct82c710_probe(stru + strlcpy(ct82c710_port->name, "C&T 82c710 mouse port", + sizeof(ct82c710_port->name)); + snprintf(ct82c710_port->phys, sizeof(ct82c710_port->phys), +- "isa%04lx/serio0", CT82C710_DATA); ++ "isa%16llx/serio0", (unsigned long long)CT82C710_DATA); + + serio_register_port(ct82c710_port); + +@@ -241,8 +241,8 @@ static int __init ct82c710_init(void) + + serio_register_port(ct82c710_port); + +- printk(KERN_INFO "serio: C&T 82c710 mouse port at %#lx irq %d\n", +- CT82C710_DATA, CT82C710_IRQ); ++ printk(KERN_INFO "serio: C&T 82c710 mouse port at %#llx irq %d\n", ++ (unsigned long long)CT82C710_DATA, CT82C710_IRQ); + + return 0; + +--- gregkh-2.6.orig/drivers/isdn/hisax/hfc_pci.c ++++ gregkh-2.6/drivers/isdn/hisax/hfc_pci.c +@@ -1688,7 +1688,7 @@ setup_hfcpci(struct IsdnCard *card) + printk(KERN_WARNING "HFC-PCI: No IRQ for PCI card found\n"); + return (0); + } +- cs->hw.hfcpci.pci_io = (char *) dev_hfcpci->resource[ 1].start; ++ cs->hw.hfcpci.pci_io = (char *)(unsigned long)dev_hfcpci->resource[1].start; + printk(KERN_INFO "HiSax: HFC-PCI card manufacturer: %s card name: %s\n", id_list[i].vendor_name, id_list[i].card_name); + } else { + printk(KERN_WARNING "HFC-PCI: No PCI card found\n"); +--- gregkh-2.6.orig/drivers/isdn/hisax/telespci.c ++++ gregkh-2.6/drivers/isdn/hisax/telespci.c +@@ -311,8 +311,9 @@ setup_telespci(struct IsdnCard *card) + } + cs->hw.teles0.membase = ioremap(pci_resource_start(dev_tel, 0), + PAGE_SIZE); +- printk(KERN_INFO "Found: Zoran, base-address: 0x%lx, irq: 0x%x\n", +- pci_resource_start(dev_tel, 0), dev_tel->irq); ++ printk(KERN_INFO "Found: Zoran, base-address: 0x%llx, irq: 0x%x\n", ++ (unsigned long long)pci_resource_start(dev_tel, 0), ++ dev_tel->irq); + } else { + printk(KERN_WARNING "TelesPCI: No PCI card found\n"); + return(0); +--- gregkh-2.6.orig/drivers/message/i2o/iop.c ++++ gregkh-2.6/drivers/message/i2o/iop.c +@@ -683,9 +683,10 @@ static int i2o_iop_systab_set(struct i2o + c->mem_alloc = 1; + sb->current_mem_size = 1 + res->end - res->start; + sb->current_mem_base = res->start; +- osm_info("%s: allocated %ld bytes of PCI memory at " +- "0x%08lX.\n", c->name, +- 1 + res->end - res->start, res->start); ++ osm_info("%s: allocated %llu bytes of PCI memory at " ++ "0x%016llX.\n", c->name, ++ (unsigned long long)(1 + res->end - res->start), ++ (unsigned long long)res->start); + } + } + +@@ -704,9 +705,10 @@ static int i2o_iop_systab_set(struct i2o + c->io_alloc = 1; + sb->current_io_size = 1 + res->end - res->start; + sb->current_mem_base = res->start; +- osm_info("%s: allocated %ld bytes of PCI I/O at 0x%08lX" +- ".\n", c->name, 1 + res->end - res->start, +- res->start); ++ osm_info("%s: allocated %llu bytes of PCI I/O at " ++ "0x%016llX.\n", c->name, ++ (unsigned long long)(1 + res->end - res->start), ++ (unsigned long long)res->start); + } + } + +--- gregkh-2.6.orig/drivers/mmc/mmci.c ++++ gregkh-2.6/drivers/mmc/mmci.c +@@ -549,9 +549,9 @@ static int mmci_probe(struct amba_device + + mmc_add_host(mmc); + +- printk(KERN_INFO "%s: MMCI rev %x cfg %02x at 0x%08lx irq %d,%d\n", ++ printk(KERN_INFO "%s: MMCI rev %x cfg %02x at 0x%016llx irq %d,%d\n", + mmc_hostname(mmc), amba_rev(dev), amba_config(dev), +- dev->res.start, dev->irq[0], dev->irq[1]); ++ (unsigned long long)dev->res.start, dev->irq[0], dev->irq[1]); + + init_timer(&host->timer); + host->timer.data = (unsigned long)host; +--- gregkh-2.6.orig/drivers/mtd/devices/pmc551.c ++++ gregkh-2.6/drivers/mtd/devices/pmc551.c +@@ -551,11 +551,11 @@ static u32 fixup_pmc551 (struct pci_dev + /* + * Some screen fun + */ +- printk(KERN_DEBUG "pmc551: %d%c (0x%x) of %sprefetchable memory at 0x%lx\n", ++ printk(KERN_DEBUG "pmc551: %d%c (0x%x) of %sprefetchable memory at 0x%llx\n", + (size<1024)?size:(size<1048576)?size>>10:size>>20, + (size<1024)?'B':(size<1048576)?'K':'M', + size, ((dcmd&(0x1<<3)) == 0)?"non-":"", +- (dev->resource[0].start)&PCI_BASE_ADDRESS_MEM_MASK ); ++ (unsigned long long)((dev->resource[0].start)&PCI_BASE_ADDRESS_MEM_MASK)); + + /* + * Check to see the state of the memory +@@ -685,8 +685,8 @@ static int __init init_pmc551(void) + break; + } + +- printk(KERN_NOTICE "pmc551: Found PCI V370PDC at 0x%lX\n", +- PCI_Device->resource[0].start); ++ printk(KERN_NOTICE "pmc551: Found PCI V370PDC at 0x%llx\n", ++ (unsigned long long)PCI_Device->resource[0].start); + + /* + * The PMC551 device acts VERY weird if you don't init it +--- gregkh-2.6.orig/drivers/mtd/maps/amd76xrom.c ++++ gregkh-2.6/drivers/mtd/maps/amd76xrom.c +@@ -123,9 +123,10 @@ static int __devinit amd76xrom_init_one + window->rsrc.parent = NULL; + printk(KERN_ERR MOD_NAME + " %s(): Unable to register resource" +- " 0x%.08lx-0x%.08lx - kernel bug?\n", ++ " 0x%.16llx-0x%.16llx - kernel bug?\n", + __func__, +- window->rsrc.start, window->rsrc.end); ++ (unsigned long long)window->rsrc.start, ++ (unsigned long long)window->rsrc.end); + } + + #if 0 +--- gregkh-2.6.orig/drivers/mtd/maps/ichxrom.c ++++ gregkh-2.6/drivers/mtd/maps/ichxrom.c +@@ -177,9 +177,10 @@ static int __devinit ichxrom_init_one (s + window->rsrc.parent = NULL; + printk(KERN_DEBUG MOD_NAME + ": %s(): Unable to register resource" +- " 0x%.08lx-0x%.08lx - kernel bug?\n", ++ " 0x%.16llx-0x%.16llx - kernel bug?\n", + __func__, +- window->rsrc.start, window->rsrc.end); ++ (unsigned long long)window->rsrc.start, ++ (unsigned long long)window->rsrc.end); + } + + /* Map the firmware hub into my address space. */ +--- gregkh-2.6.orig/drivers/mtd/maps/scx200_docflash.c ++++ gregkh-2.6/drivers/mtd/maps/scx200_docflash.c +@@ -164,8 +164,9 @@ static int __init init_scx200_docflash(v + outl(pmr, scx200_cb_base + SCx200_PMR); + } + +- printk(KERN_INFO NAME ": DOCCS mapped at 0x%lx-0x%lx, width %d\n", +- docmem.start, docmem.end, width); ++ printk(KERN_INFO NAME ": DOCCS mapped at 0x%llx-0x%llx, width %d\n", ++ (unsigned long long)docmem.start, ++ (unsigned long long)docmem.end, width); + + scx200_docflash_map.size = size; + if (width == 8) +--- gregkh-2.6.orig/drivers/mtd/maps/sun_uflash.c ++++ gregkh-2.6/drivers/mtd/maps/sun_uflash.c +@@ -74,9 +74,10 @@ int uflash_devinit(struct linux_ebus_dev + /* Non-CFI userflash device-- once I find one we + * can work on supporting it. + */ +- printk("%s: unsupported device at 0x%lx (%d regs): " \ ++ printk("%s: unsupported device at 0x%llx (%d regs): " \ + "email ebrower@usa.net\n", +- UFLASH_DEVNAME, edev->resource[0].start, nregs); ++ UFLASH_DEVNAME, ++ (unsigned long long)edev->resource[0].start, nregs); + return -ENODEV; + } + +@@ -132,8 +133,9 @@ static int __init uflash_init(void) + for_each_ebusdev(edev, ebus) { + if (!strcmp(edev->prom_name, UFLASH_OBPNAME)) { + if(0 > prom_getproplen(edev->prom_node, "user")) { +- DEBUG(2, "%s: ignoring device at 0x%lx\n", +- UFLASH_DEVNAME, edev->resource[0].start); ++ DEBUG(2, "%s: ignoring device at 0x%llx\n", ++ UFLASH_DEVNAME, ++ (unsigned long long)edev->resource[0].start); + } else { + uflash_devinit(edev); + } +--- gregkh-2.6.orig/drivers/pnp/manager.c ++++ gregkh-2.6/drivers/pnp/manager.c +@@ -20,7 +20,8 @@ DECLARE_MUTEX(pnp_res_mutex); + + 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; +@@ -63,7 +64,8 @@ static int pnp_assign_port(struct pnp_de + + 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; +@@ -116,7 +118,8 @@ static int pnp_assign_mem(struct pnp_dev + + 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 */ +@@ -168,7 +171,8 @@ static int pnp_assign_irq(struct pnp_dev + + 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 */ +@@ -582,7 +586,7 @@ int pnp_disable_dev(struct pnp_dev *dev) + * @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; +--- gregkh-2.6.orig/drivers/pnp/resource.c ++++ gregkh-2.6/drivers/pnp/resource.c +@@ -241,7 +241,7 @@ int pnp_check_port(struct pnp_dev * dev, + { + 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; + +@@ -297,7 +297,7 @@ int pnp_check_mem(struct pnp_dev * dev, + { + 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; + +@@ -358,7 +358,7 @@ int pnp_check_irq(struct pnp_dev * dev, + { + 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)) +@@ -423,7 +423,7 @@ int pnp_check_dma(struct pnp_dev * dev, + #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)) +--- gregkh-2.6.orig/drivers/scsi/sata_via.c ++++ gregkh-2.6/drivers/scsi/sata_via.c +@@ -334,10 +334,10 @@ static int svia_init_one (struct pci_dev + if ((pci_resource_start(pdev, i) == 0) || + (pci_resource_len(pdev, i) < bar_sizes[i])) { + dev_printk(KERN_ERR, &pdev->dev, +- "invalid PCI BAR %u (sz 0x%lx, val 0x%lx)\n", +- i, +- pci_resource_start(pdev, i), +- pci_resource_len(pdev, i)); ++ "invalid PCI BAR %u (sz 0x%llx, val 0x%llx)\n", ++ i, ++ (unsigned long long)pci_resource_start(pdev, i), ++ (unsigned long long)pci_resource_len(pdev, i)); + rc = -ENODEV; + goto err_out_regions; + } +--- gregkh-2.6.orig/drivers/serial/8250_pci.c ++++ gregkh-2.6/drivers/serial/8250_pci.c +@@ -594,8 +594,8 @@ pci_default_setup(struct serial_private + else + offset += idx * board->uart_offset; + +- maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) / +- (8 << board->reg_shift); ++ maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >> ++ (board->reg_shift + 3); + + if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr) + return 1; +--- gregkh-2.6.orig/drivers/usb/host/sl811-hcd.c ++++ gregkh-2.6/drivers/usb/host/sl811-hcd.c +@@ -1684,9 +1684,13 @@ sl811h_probe(struct platform_device *dev + if (!addr || !data) + return -ENODEV; + ioaddr = 1; +- +- addr_reg = (void __iomem *) addr->start; +- data_reg = (void __iomem *) data->start; ++ /* ++ * NOTE: 64-bit resource->start is getting truncated ++ * to avoid compiler warning, assuming that ->start ++ * is always 32-bit for this case ++ */ ++ addr_reg = (void __iomem *) (unsigned long) addr->start; ++ data_reg = (void __iomem *) (unsigned long) data->start; + } else { + addr_reg = ioremap(addr->start, 1); + if (addr_reg == NULL) { +--- gregkh-2.6.orig/drivers/video/console/vgacon.c ++++ gregkh-2.6/drivers/video/console/vgacon.c +@@ -389,7 +389,7 @@ static const char __init *vgacon_startup + vga_video_port_val = VGA_CRT_DM; + if ((ORIG_VIDEO_EGA_BX & 0xff) != 0x10) { + static struct resource ega_console_resource = +- { "ega", 0x3B0, 0x3BF }; ++ { .name = "ega", .start = 0x3B0, .end = 0x3BF }; + vga_video_type = VIDEO_TYPE_EGAM; + vga_vram_end = 0xb8000; + display_desc = "EGA+"; +@@ -397,9 +397,9 @@ static const char __init *vgacon_startup + &ega_console_resource); + } else { + static struct resource mda1_console_resource = +- { "mda", 0x3B0, 0x3BB }; ++ { .name = "mda", .start = 0x3B0, .end = 0x3BB }; + static struct resource mda2_console_resource = +- { "mda", 0x3BF, 0x3BF }; ++ { .name = "mda", .start = 0x3BF, .end = 0x3BF }; + vga_video_type = VIDEO_TYPE_MDA; + vga_vram_end = 0xb2000; + display_desc = "*MDA"; +@@ -422,14 +422,14 @@ static const char __init *vgacon_startup + + if (!ORIG_VIDEO_ISVGA) { + static struct resource ega_console_resource +- = { "ega", 0x3C0, 0x3DF }; ++ = { .name = "ega", .start = 0x3C0, .end = 0x3DF }; + vga_video_type = VIDEO_TYPE_EGAC; + display_desc = "EGA"; + request_resource(&ioport_resource, + &ega_console_resource); + } else { + static struct resource vga_console_resource +- = { "vga+", 0x3C0, 0x3DF }; ++ = { .name = "vga+", .start = 0x3C0, .end = 0x3DF }; + vga_video_type = VIDEO_TYPE_VGAC; + display_desc = "VGA+"; + request_resource(&ioport_resource, +@@ -473,7 +473,7 @@ static const char __init *vgacon_startup + } + } else { + static struct resource cga_console_resource = +- { "cga", 0x3D4, 0x3D5 }; ++ { .name = "cga", .start = 0x3D4, .end = 0x3D5 }; + vga_video_type = VIDEO_TYPE_CGA; + vga_vram_end = 0xba000; + display_desc = "*CGA"; +--- gregkh-2.6.orig/include/linux/pnp.h ++++ gregkh-2.6/include/linux/pnp.h +@@ -389,7 +389,7 @@ int pnp_start_dev(struct pnp_dev *dev); + int pnp_stop_dev(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); +@@ -434,7 +434,7 @@ static inline int pnp_start_dev(struct p + static inline int pnp_stop_dev(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 --git a/pci/pci-64-bit-resources-drivers-pci-changes.patch b/pci/pci-64-bit-resources-drivers-pci-changes.patch new file mode 100644 index 0000000000000..cfbaf8968822f --- /dev/null +++ b/pci/pci-64-bit-resources-drivers-pci-changes.patch @@ -0,0 +1,385 @@ +From vivek@in.ibm.com Thu Mar 23 12:01:34 2006 +Date: Thu, 23 Mar 2006 15:01:19 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 2/10] PCI: 64 bit resources drivers pci changes +Message-ID: <20060323200119.GF7175@in.ibm.com> +Content-Disposition: inline + + +o Changes required in drivers/pci/* to support 64bit resources. + +Signed-off-by: Dave Jiang <dave.jiang@gmail.com> +Signed-off-by: Maneesh Soni <maneesh@in.ibm.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + drivers/pci/bus.c | 4 ++-- + drivers/pci/hotplug/cpcihp_zt5550.c | 9 +++++---- + drivers/pci/hotplug/cpqphp_core.c | 10 +++++----- + drivers/pci/hotplug/pciehp_hpc.c | 5 +++-- + drivers/pci/hotplug/shpchp_sysfs.c | 18 ++++++++++++------ + drivers/pci/pci.c | 6 ++++-- + drivers/pci/pci.h | 6 +++--- + drivers/pci/proc.c | 16 +++++----------- + drivers/pci/rom.c | 10 +++++----- + drivers/pci/setup-bus.c | 6 ++++-- + drivers/pci/setup-res.c | 34 ++++++++++++++++++++-------------- + include/linux/pci.h | 8 ++++---- + 12 files changed, 72 insertions(+), 60 deletions(-) + +--- gregkh-2.6.orig/drivers/pci/bus.c ++++ gregkh-2.6/drivers/pci/bus.c +@@ -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; +--- gregkh-2.6.orig/drivers/pci/hotplug/cpcihp_zt5550.c ++++ gregkh-2.6/drivers/pci/hotplug/cpcihp_zt5550.c +@@ -95,8 +95,8 @@ static int zt5550_hc_config(struct pci_d + + hc_dev = pdev; + dbg("hc_dev = %p", hc_dev); +- dbg("pci resource start %lx", pci_resource_start(hc_dev, 1)); +- dbg("pci resource len %lx", pci_resource_len(hc_dev, 1)); ++ dbg("pci resource start %llx", (unsigned long long)pci_resource_start(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), + pci_resource_len(hc_dev, 1), MY_NAME)) { +@@ -108,8 +108,9 @@ static int zt5550_hc_config(struct pci_d + hc_registers = + ioremap(pci_resource_start(hc_dev, 1), pci_resource_len(hc_dev, 1)); + if(!hc_registers) { +- err("cannot remap MMIO region %lx @ %lx", +- pci_resource_len(hc_dev, 1), pci_resource_start(hc_dev, 1)); ++ err("cannot remap MMIO region %llx @ %llx", ++ (unsigned long long)pci_resource_len(hc_dev, 1), ++ (unsigned long long)pci_resource_start(hc_dev, 1)); + ret = -ENODEV; + goto exit_release_region; + } +--- gregkh-2.6.orig/drivers/pci/hotplug/cpqphp_core.c ++++ gregkh-2.6/drivers/pci/hotplug/cpqphp_core.c +@@ -1089,8 +1089,8 @@ static int cpqhpc_probe(struct pci_dev * + } + + dbg("pdev = %p\n", pdev); +- dbg("pci resource start %lx\n", pci_resource_start(pdev, 0)); +- dbg("pci resource len %lx\n", pci_resource_len(pdev, 0)); ++ dbg("pci resource start %llx\n", (unsigned long long)pci_resource_start(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), + pci_resource_len(pdev, 0), MY_NAME)) { +@@ -1102,9 +1102,9 @@ static int cpqhpc_probe(struct pci_dev * + ctrl->hpc_reg = ioremap(pci_resource_start(pdev, 0), + pci_resource_len(pdev, 0)); + if (!ctrl->hpc_reg) { +- err("cannot remap MMIO region %lx @ %lx\n", +- pci_resource_len(pdev, 0), +- pci_resource_start(pdev, 0)); ++ err("cannot remap MMIO region %llx @ %llx\n", ++ (unsigned long long)pci_resource_len(pdev, 0), ++ (unsigned long long)pci_resource_start(pdev, 0)); + rc = -ENODEV; + goto err_free_mem_region; + } +--- gregkh-2.6.orig/drivers/pci/hotplug/pciehp_hpc.c ++++ gregkh-2.6/drivers/pci/hotplug/pciehp_hpc.c +@@ -1398,8 +1398,9 @@ int pcie_init(struct controller * ctrl, + + for ( rc = 0; rc < DEVICE_COUNT_RESOURCE; rc++) + if (pci_resource_len(pdev, rc) > 0) +- dbg("pci resource[%d] start=0x%lx(len=0x%lx)\n", rc, +- pci_resource_start(pdev, rc), pci_resource_len(pdev, rc)); ++ dbg("pci resource[%d] start=0x%llx(len=0x%llx)\n", 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, + pdev->subsystem_vendor, pdev->subsystem_device); +--- gregkh-2.6.orig/drivers/pci/hotplug/shpchp_sysfs.c ++++ gregkh-2.6/drivers/pci/hotplug/shpchp_sysfs.c +@@ -51,8 +51,10 @@ static ssize_t show_ctrl (struct device + res = bus->resource[index]; + if (res && (res->flags & IORESOURCE_MEM) && + !(res->flags & IORESOURCE_PREFETCH)) { +- out += sprintf(out, "start = %8.8lx, length = %8.8lx\n", +- res->start, (res->end - res->start)); ++ out += sprintf(out, "start = %8.8llx, " ++ "length = %8.8llx\n", ++ (unsigned long long)res->start, ++ (unsigned long long)(res->end - res->start)); + } + } + out += sprintf(out, "Free resources: prefetchable memory\n"); +@@ -60,16 +62,20 @@ static ssize_t show_ctrl (struct device + res = bus->resource[index]; + if (res && (res->flags & IORESOURCE_MEM) && + (res->flags & IORESOURCE_PREFETCH)) { +- out += sprintf(out, "start = %8.8lx, length = %8.8lx\n", +- res->start, (res->end - res->start)); ++ out += sprintf(out, "start = %8.8llx, " ++ "length = %8.8llx\n", ++ (unsigned long long)res->start, ++ (unsigned long long)(res->end - res->start)); + } + } + out += sprintf(out, "Free resources: IO\n"); + for (index = 0; index < PCI_BUS_NUM_RESOURCES; index++) { + res = bus->resource[index]; + if (res && (res->flags & IORESOURCE_IO)) { +- out += sprintf(out, "start = %8.8lx, length = %8.8lx\n", +- res->start, (res->end - res->start)); ++ out += sprintf(out, "start = %8.8llx, " ++ "length = %8.8llx\n", ++ (unsigned long long)res->start, ++ (unsigned long long)(res->end - res->start)); + } + } + out += sprintf(out, "Free resources: bus numbers\n"); +--- gregkh-2.6.orig/drivers/pci/pci.c ++++ gregkh-2.6/drivers/pci/pci.c +@@ -679,10 +679,12 @@ int pci_request_region(struct pci_dev *p + 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; + } +--- gregkh-2.6.orig/drivers/pci/pci.h ++++ gregkh-2.6/drivers/pci/pci.h +@@ -6,10 +6,10 @@ extern int pci_create_sysfs_dev_files(st + 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); + /* Firmware callbacks */ + extern int (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); +--- gregkh-2.6.orig/drivers/pci/proc.c ++++ gregkh-2.6/drivers/pci/proc.c +@@ -302,12 +302,6 @@ static struct file_operations proc_bus_p + #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,16 +352,16 @@ static int show_device(struct seq_file * + for (i=0; i<7; i++) { + u64 start, end; + pci_resource_to_user(dev, i, &dev->resource[i], &start, &end); +- seq_printf(m, LONG_FORMAT, +- ((unsigned long)start) | +- (dev->resource[i].flags & PCI_REGION_FLAG_MASK)); ++ seq_printf(m, "\t%16llx", ++ (unsigned long long)(start | ++ (dev->resource[i].flags & PCI_REGION_FLAG_MASK))); + } + for (i=0; i<7; i++) { + u64 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 ? +- (unsigned long)(end - start) + 1 : 0); ++ (unsigned long long)(end - start) + 1 : 0); + } + seq_putc(m, '\t'); + if (drv) +--- gregkh-2.6.orig/drivers/pci/rom.c ++++ gregkh-2.6/drivers/pci/rom.c +@@ -80,8 +80,8 @@ void __iomem *pci_map_rom(struct pci_dev + } else { + if (res->flags & IORESOURCE_ROM_COPY) { + *size = pci_resource_len(pdev, PCI_ROM_RESOURCE); +- return (void __iomem *)pci_resource_start(pdev, +- PCI_ROM_RESOURCE); ++ return (void __iomem *)(unsigned long) ++ pci_resource_start(pdev, PCI_ROM_RESOURCE); + } else { + /* assign the ROM an address if it doesn't have one */ + if (res->parent == NULL && +@@ -170,11 +170,11 @@ void __iomem *pci_map_rom_copy(struct pc + return rom; + + res->end = res->start + *size; +- memcpy_fromio((void*)res->start, rom, *size); ++ memcpy_fromio((void*)(unsigned long)res->start, rom, *size); + pci_unmap_rom(pdev, rom); + res->flags |= IORESOURCE_ROM_COPY; + +- return (void __iomem *)res->start; ++ return (void __iomem *)(unsigned long)res->start; + } + + /** +@@ -227,7 +227,7 @@ void pci_cleanup_rom(struct pci_dev *pde + { + struct resource *res = &pdev->resource[PCI_ROM_RESOURCE]; + if (res->flags & IORESOURCE_ROM_COPY) { +- kfree((void*)res->start); ++ kfree((void*)(unsigned long)res->start); + res->flags &= ~IORESOURCE_ROM_COPY; + res->start = 0; + res->end = 0; +--- gregkh-2.6.orig/drivers/pci/setup-bus.c ++++ gregkh-2.6/drivers/pci/setup-bus.c +@@ -356,8 +356,10 @@ pbus_size_mem(struct pci_bus *bus, unsig + 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; + } +--- gregkh-2.6.orig/drivers/pci/setup-res.c ++++ gregkh-2.6/drivers/pci/setup-res.c +@@ -40,8 +40,9 @@ pci_update_resource(struct pci_dev *dev, + + pcibios_resource_to_bus(dev, ®ion, res); + +- pr_debug(" got res [%lx:%lx] bus [%lx:%lx] flags %lx for " +- "BAR %d of %s\n", res->start, res->end, ++ pr_debug(" 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)); + + new = region.start | (res->flags & PCI_REGION_FLAG_MASK); +@@ -104,10 +105,12 @@ pci_claim_resource(struct pci_dev *dev, + err = insert_resource(root, res); + + if (err) { +- printk(KERN_ERR "PCI: %s region %d of %s %s [%lx:%lx]\n", +- root ? "Address space collision on" : +- "No parent found for", +- resource, dtype, pci_name(dev), res->start, res->end); ++ 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), ++ (unsigned long long)res->start, ++ (unsigned long long)res->end); + } + + return err; +@@ -118,7 +121,7 @@ int pci_assign_resource(struct pci_dev * + { + 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; +@@ -145,9 +148,11 @@ int pci_assign_resource(struct pci_dev * + } + + if (ret) { +- printk(KERN_ERR "PCI: Failed to allocate %s resource #%d:%lx@%lx for %s\n", +- res->flags & IORESOURCE_IO ? "I/O" : "mem", +- resno, size, res->start, pci_name(dev)); ++ printk(KERN_ERR "PCI: Failed to allocate %s resource " ++ "#%d:%llx@%llx for %s\n", ++ 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) { + pci_update_resource(dev, res, resno); + } +@@ -164,7 +169,7 @@ pdev_sort_resources(struct pci_dev *dev, + 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; +@@ -173,13 +178,14 @@ pdev_sort_resources(struct pci_dev *dev, + 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; + +--- gregkh-2.6.orig/include/linux/pci.h ++++ gregkh-2.6/include/linux/pci.h +@@ -404,7 +404,7 @@ char *pcibios_setup (char *str); + + /* 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 */ +@@ -530,10 +530,10 @@ void pci_release_region(struct pci_dev * + + /* 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 --git a/pci/pci-64-bit-resources-drivers-pcmcia-changes.patch b/pci/pci-64-bit-resources-drivers-pcmcia-changes.patch new file mode 100644 index 0000000000000..3ad73068c6245 --- /dev/null +++ b/pci/pci-64-bit-resources-drivers-pcmcia-changes.patch @@ -0,0 +1,139 @@ +From vivek@in.ibm.com Thu Mar 23 12:06:23 2006 +Date: Thu, 23 Mar 2006 15:06:10 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 6/10] PCI: 64 bit resources drivers pcmcia changes +Message-ID: <20060323200610.GJ7175@in.ibm.com> +Content-Disposition: inline + +o Changes required in drivers/pcmcia/* to support 64 bit resources. + +Signed-off-by: Maneesh Soni <maneesh@in.ibm.com> +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + drivers/pcmcia/i82365.c | 5 +++-- + drivers/pcmcia/pd6729.c | 3 ++- + drivers/pcmcia/rsrc_nonstatic.c | 25 +++++++++++++------------ + drivers/pcmcia/tcic.c | 5 +++-- + 4 files changed, 21 insertions(+), 17 deletions(-) + +--- gregkh-2.6.orig/drivers/pcmcia/i82365.c ++++ gregkh-2.6/drivers/pcmcia/i82365.c +@@ -1083,9 +1083,10 @@ static int i365_set_mem_map(u_short sock + u_short base, i; + u_char map; + +- debug(1, "SetMemMap(%d, %d, %#2.2x, %d ns, %#lx-%#lx, " ++ debug(1, "SetMemMap(%d, %d, %#2.2x, %d ns, %#llx-%#llx, " + "%#x)\n", sock, mem->map, mem->flags, mem->speed, +- mem->res->start, mem->res->end, mem->card_start); ++ (unsigned long long)mem->res->start, ++ (unsigned long long)mem->res->end, mem->card_start); + + map = mem->map; + if ((map > 4) || (mem->card_start > 0x3ffffff) || +--- gregkh-2.6.orig/drivers/pcmcia/pd6729.c ++++ gregkh-2.6/drivers/pcmcia/pd6729.c +@@ -642,7 +642,8 @@ static int __devinit pd6729_pci_probe(st + goto err_out_free_mem; + + printk(KERN_INFO "pd6729: Cirrus PD6729 PCI to PCMCIA Bridge " +- "at 0x%lx on irq %d\n", pci_resource_start(dev, 0), dev->irq); ++ "at 0x%llx on irq %d\n", ++ (unsigned long long)pci_resource_start(dev, 0), dev->irq); + /* + * Since we have no memory BARs some firmware may not + * have had PCI_COMMAND_MEMORY enabled, yet the device needs it. +--- gregkh-2.6.orig/drivers/pcmcia/rsrc_nonstatic.c ++++ gregkh-2.6/drivers/pcmcia/rsrc_nonstatic.c +@@ -72,7 +72,7 @@ static DEFINE_MUTEX(rsrc_mutex); + ======================================================================*/ + + static struct resource * +-make_resource(unsigned long b, unsigned long n, int flags, char *name) ++make_resource(u64 b, u64 n, int flags, char *name) + { + struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL); + +@@ -86,8 +86,7 @@ make_resource(unsigned long b, unsigned + } + + static struct resource * +-claim_region(struct pcmcia_socket *s, unsigned long base, unsigned long size, +- int type, char *name) ++claim_region(struct pcmcia_socket *s, u64 base, u64 size, int type, char *name) + { + struct resource *res, *parent; + +@@ -518,11 +517,10 @@ struct pcmcia_align_data { + }; + + static void +-pcmcia_common_align(void *align_data, struct resource *res, +- unsigned long size, unsigned long align) ++pcmcia_common_align(void *align_data, struct resource *res, u64 size, u64 align) + { + struct pcmcia_align_data *data = align_data; +- unsigned long start; ++ u64 start; + /* + * Ensure that we have the correct start address + */ +@@ -533,8 +531,7 @@ pcmcia_common_align(void *align_data, st + } + + static void +-pcmcia_align(void *align_data, struct resource *res, +- unsigned long size, unsigned long align) ++pcmcia_align(void *align_data, struct resource *res, u64 size, u64 align) + { + struct pcmcia_align_data *data = align_data; + struct resource_map *m; +@@ -808,8 +805,10 @@ static int nonstatic_autoadd_resources(s + if (res->flags & IORESOURCE_IO) { + if (res == &ioport_resource) + continue; +- printk(KERN_INFO "pcmcia: parent PCI bridge I/O window: 0x%lx - 0x%lx\n", +- res->start, res->end); ++ printk(KERN_INFO "pcmcia: parent PCI bridge I/O " ++ "window: 0x%llx - 0x%llx\n", ++ (unsigned long long)res->start, ++ (unsigned long long)res->end); + if (!adjust_io(s, ADD_MANAGED_RESOURCE, res->start, res->end)) + done |= IORESOURCE_IO; + +@@ -818,8 +817,10 @@ static int nonstatic_autoadd_resources(s + if (res->flags & IORESOURCE_MEM) { + if (res == &iomem_resource) + continue; +- printk(KERN_INFO "pcmcia: parent PCI bridge Memory window: 0x%lx - 0x%lx\n", +- res->start, res->end); ++ printk(KERN_INFO "pcmcia: parent PCI bridge Memory " ++ "window: 0x%llx - 0x%llx\n", ++ (unsigned long long)res->start, ++ (unsigned long long)res->end); + if (!adjust_memory(s, ADD_MANAGED_RESOURCE, res->start, res->end)) + done |= IORESOURCE_MEM; + } +--- gregkh-2.6.orig/drivers/pcmcia/tcic.c ++++ gregkh-2.6/drivers/pcmcia/tcic.c +@@ -756,8 +756,9 @@ static int tcic_set_mem_map(struct pcmci + u_long base, len, mmap; + + debug(1, "SetMemMap(%d, %d, %#2.2x, %d ns, " +- "%#lx-%#lx, %#x)\n", psock, mem->map, mem->flags, +- mem->speed, mem->res->start, mem->res->end, mem->card_start); ++ "%#llx-%#llx, %#x)\n", psock, mem->map, mem->flags, ++ mem->speed, (unsigned long long)mem->res->start, ++ (unsigned long long)mem->res->end, mem->card_start); + if ((mem->map > 3) || (mem->card_start > 0x3ffffff) || + (mem->res->start > 0xffffff) || (mem->res->end > 0xffffff) || + (mem->res->start > mem->res->end) || (mem->speed > 1000)) diff --git a/pci/pci-64-bit-resources-sound-changes.patch b/pci/pci-64-bit-resources-sound-changes.patch new file mode 100644 index 0000000000000..20624d52411f7 --- /dev/null +++ b/pci/pci-64-bit-resources-sound-changes.patch @@ -0,0 +1,175 @@ +From vivek@in.ibm.com Thu Mar 23 12:09:17 2006 +Date: Thu, 23 Mar 2006 15:09:02 -0500 +From: Vivek Goyal <vgoyal@in.ibm.com> +Cc: Linus Torvalds <torvalds@osdl.org>, + Morton Andrew Morton <akpm@osdl.org>, + "Eric W. Biederman" <ebiederm@xmission.com>, + galak@kernel.crashing.org, gregkh@suse.de, bcrl@kvack.org, + Dave Jiang <dave.jiang@gmail.com>, arjan@infradead.org, + Maneesh Soni <maneesh@in.ibm.com>, Murali <muralim@in.ibm.com> +Subject: [PATCH 8/10] PCI: 64 bit resources sound changes +Message-ID: <20060323200902.GL7175@in.ibm.com> +Content-Disposition: inline + + +o Changes required in sound/* to support 64bit resources. + +Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + sound/arm/aaci.c | 5 +++-- + sound/drivers/mpu401/mpu401.c | 5 +++-- + sound/isa/es18xx.c | 3 ++- + sound/isa/gus/interwave.c | 8 ++++---- + sound/isa/sb/sb16.c | 3 ++- + sound/oss/forte.c | 5 +++-- + sound/pci/bt87x.c | 5 +++-- + sound/pci/sonicvibes.c | 4 ++-- + sound/sparc/cs4231.c | 4 ++-- + sound/sparc/dbri.c | 5 +++-- + 10 files changed, 27 insertions(+), 20 deletions(-) + +--- gregkh-2.6.orig/sound/arm/aaci.c ++++ gregkh-2.6/sound/arm/aaci.c +@@ -779,8 +779,9 @@ static struct aaci * __devinit aaci_init + strlcpy(card->driver, DRIVER_NAME, sizeof(card->driver)); + strlcpy(card->shortname, "ARM AC'97 Interface", sizeof(card->shortname)); + snprintf(card->longname, sizeof(card->longname), +- "%s at 0x%08lx, irq %d", +- card->shortname, dev->res.start, dev->irq[0]); ++ "%s at 0x%016llx, irq %d", ++ card->shortname, (unsigned long long)dev->res.start, ++ dev->irq[0]); + + aaci = card->private_data; + mutex_init(&aaci->ac97_sem); +--- gregkh-2.6.orig/sound/drivers/mpu401/mpu401.c ++++ gregkh-2.6/sound/drivers/mpu401/mpu401.c +@@ -160,8 +160,9 @@ static int __init snd_mpu401_pnp(int dev + return -ENODEV; + } + if (pnp_port_len(device, 0) < IO_EXTENT) { +- snd_printk(KERN_ERR "PnP port length is %ld, expected %d\n", +- pnp_port_len(device, 0), IO_EXTENT); ++ snd_printk(KERN_ERR "PnP port length is %llu, expected %d\n", ++ (unsigned long long)pnp_port_len(device, 0), ++ IO_EXTENT); + return -ENODEV; + } + port[dev] = pnp_port_start(device, 0); +--- gregkh-2.6.orig/sound/isa/es18xx.c ++++ gregkh-2.6/sound/isa/es18xx.c +@@ -2086,7 +2086,8 @@ static int __devinit snd_audiodrive_pnp( + kfree(cfg); + return -EAGAIN; + } +- snd_printdd("pnp: port=0x%lx\n", pnp_port_start(acard->devc, 0)); ++ snd_printdd("pnp: port=0x%llx\n", ++ (unsigned long long)pnp_port_start(acard->devc, 0)); + /* PnP initialization */ + pdev = acard->dev; + pnp_init_resource_table(cfg); +--- gregkh-2.6.orig/sound/isa/gus/interwave.c ++++ gregkh-2.6/sound/isa/gus/interwave.c +@@ -611,10 +611,10 @@ static int __devinit snd_interwave_pnp(i + if (dma2[dev] >= 0) + dma2[dev] = pnp_dma(pdev, 1); + irq[dev] = pnp_irq(pdev, 0); +- snd_printdd("isapnp IW: sb port=0x%lx, gf1 port=0x%lx, codec port=0x%lx\n", +- pnp_port_start(pdev, 0), +- pnp_port_start(pdev, 1), +- pnp_port_start(pdev, 2)); ++ snd_printdd("isapnp IW: sb port=0x%llx, gf1 port=0x%llx, codec port=0x%llx\n", ++ (unsigned long long)pnp_port_start(pdev, 0), ++ (unsigned long long)pnp_port_start(pdev, 1), ++ (unsigned long long)pnp_port_start(pdev, 2)); + snd_printdd("isapnp IW: dma1=%i, dma2=%i, irq=%i\n", dma1[dev], dma2[dev], irq[dev]); + #ifdef SNDRV_STB + /* Tone Control initialization */ +--- gregkh-2.6.orig/sound/isa/sb/sb16.c ++++ gregkh-2.6/sound/isa/sb/sb16.c +@@ -327,7 +327,8 @@ static int __devinit snd_card_sb16_pnp(i + goto __wt_error; + } + awe_port[dev] = pnp_port_start(pdev, 0); +- snd_printdd("pnp SB16: wavetable port=0x%lx\n", pnp_port_start(pdev, 0)); ++ snd_printdd("pnp SB16: wavetable port=0x%llx\n", ++ (unsigned long long)pnp_port_start(pdev, 0)); + } else { + __wt_error: + if (pdev) { +--- gregkh-2.6.orig/sound/oss/forte.c ++++ gregkh-2.6/sound/oss/forte.c +@@ -2035,8 +2035,9 @@ forte_probe (struct pci_dev *pci_dev, co + + pci_set_drvdata (pci_dev, chip); + +- printk (KERN_INFO PFX "FM801 chip found at 0x%04lX-0x%04lX IRQ %u\n", +- chip->iobase, pci_resource_end (pci_dev, 0), chip->irq); ++ printk (KERN_INFO PFX "FM801 chip found at 0x%04lX-0x%16llX IRQ %u\n", ++ chip->iobase, (unsigned long long)pci_resource_end (pci_dev, 0), ++ chip->irq); + + /* Power it up */ + if ((ret = forte_chip_init (chip)) == 0) +--- gregkh-2.6.orig/sound/pci/bt87x.c ++++ gregkh-2.6/sound/pci/bt87x.c +@@ -886,8 +886,9 @@ static int __devinit snd_bt87x_probe(str + + strcpy(card->driver, "Bt87x"); + sprintf(card->shortname, "Brooktree Bt%x", pci->device); +- sprintf(card->longname, "%s at %#lx, irq %i", +- card->shortname, pci_resource_start(pci, 0), chip->irq); ++ sprintf(card->longname, "%s at %#llx, irq %i", ++ card->shortname, (unsigned long long)pci_resource_start(pci, 0), ++ chip->irq); + strcpy(card->mixername, "Bt87x"); + + err = snd_card_register(card); +--- gregkh-2.6.orig/sound/pci/sonicvibes.c ++++ gregkh-2.6/sound/pci/sonicvibes.c +@@ -1441,10 +1441,10 @@ static int __devinit snd_sonic_probe(str + + strcpy(card->driver, "SonicVibes"); + strcpy(card->shortname, "S3 SonicVibes"); +- sprintf(card->longname, "%s rev %i at 0x%lx, irq %i", ++ sprintf(card->longname, "%s rev %i at 0x%llx, irq %i", + card->shortname, + sonic->revision, +- pci_resource_start(pci, 1), ++ (unsigned long long)pci_resource_start(pci, 1), + sonic->irq); + + if ((err = snd_sonicvibes_pcm(sonic, 0, NULL)) < 0) { +--- gregkh-2.6.orig/sound/sparc/cs4231.c ++++ gregkh-2.6/sound/sparc/cs4231.c +@@ -2038,10 +2038,10 @@ static int __init cs4231_sbus_attach(str + if (err) + return err; + +- sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %s", ++ sprintf(card->longname, "%s at 0x%02lx:0x%016llx, irq %s", + card->shortname, + rp->flags & 0xffL, +- rp->start, ++ (unsigned long long)rp->start, + __irq_itoa(sdev->irqs[0])); + + if ((err = snd_cs4231_sbus_create(card, sdev, dev, &cp)) < 0) { +--- gregkh-2.6.orig/sound/sparc/dbri.c ++++ gregkh-2.6/sound/sparc/dbri.c +@@ -2645,9 +2645,10 @@ static int __init dbri_attach(int prom_n + strcpy(card->driver, "DBRI"); + strcpy(card->shortname, "Sun DBRI"); + rp = &sdev->resource[0]; +- sprintf(card->longname, "%s at 0x%02lx:0x%08lx, irq %s", ++ sprintf(card->longname, "%s at 0x%02lx:0x%016llx, irq %s", + card->shortname, +- rp->flags & 0xffL, rp->start, __irq_itoa(irq.pri)); ++ rp->flags & 0xffL, (unsigned long long)rp->start, ++ __irq_itoa(irq.pri)); + + if ((err = snd_dbri_create(card, sdev, &irq, dev)) < 0) { + snd_card_free(card); |