aboutsummaryrefslogtreecommitdiffstats
path: root/pci
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-05-16 14:09:02 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-05-16 14:09:02 -0700
commit91e341fcb2ec42630ceb6a9c5a38396f033116f6 (patch)
tree9e7c3087eb4eb7d9a45425d03b700fd7333f6892 /pci
parentfa85fcfe976353f1ec893a3b5bdeb3f483bc75f6 (diff)
downloadpatches-91e341fcb2ec42630ceb6a9c5a38396f033116f6.tar.gz
add configurable resource changes
Diffstat (limited to 'pci')
-rw-r--r--pci/kconfigurable-resources-arch-dependent-changes-arch-q-z.patch228
-rw-r--r--pci/kconfigurable-resources-arch-dependent-changes-arch.patch316
-rw-r--r--pci/kconfigurable-resources-arch-dependent-changes.patch207
-rw-r--r--pci/kconfigurable-resources-core-changes.patch219
-rw-r--r--pci/kconfigurable-resources-driver-others-changes.patch219
-rw-r--r--pci/kconfigurable-resources-driver-pci-changes.patch165
6 files changed, 1354 insertions, 0 deletions
diff --git a/pci/kconfigurable-resources-arch-dependent-changes-arch-q-z.patch b/pci/kconfigurable-resources-arch-dependent-changes-arch-q-z.patch
new file mode 100644
index 0000000000000..f6368ce598e92
--- /dev/null
+++ b/pci/kconfigurable-resources-arch-dependent-changes-arch-q-z.patch
@@ -0,0 +1,228 @@
+From vivek@in.ibm.com Fri May 5 10:36:20 2006
+Date: Fri, 5 May 2006 13:36:06 -0400
+From: Vivek Goyal <vgoyal@in.ibm.com>
+To: linux kernel mailing list <linux-kernel@vger.kernel.org>
+Cc: Greg KH <gregkh@suse.de>, Morton Andrew Morton <akpm@osdl.org>
+Subject: kconfigurable resources arch dependent changes arch/q-z
+Message-ID: <20060505173606.GH6450@in.ibm.com>
+Content-Disposition: inline
+
+o Changes to arch specific code for kconfigurable resources. This
+ patch contains changes for arch/[q-z]*
+
+Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/s390/Kconfig | 8 ++++++++
+ arch/sh/Kconfig | 7 +++++++
+ arch/sh/boards/mpc1211/pci.c | 4 ++--
+ arch/sh/boards/overdrive/galileo.c | 2 +-
+ arch/sh/drivers/pci/pci.c | 6 +++---
+ arch/sh64/kernel/pcibios.c | 4 ++--
+ arch/sparc/Kconfig | 7 +++++++
+ arch/sparc/kernel/pcic.c | 2 +-
+ arch/sparc64/kernel/pci.c | 2 +-
+ arch/v850/Kconfig | 7 +++++++
+ arch/v850/kernel/rte_mb_a_pci.c | 2 +-
+ arch/xtensa/Kconfig | 7 +++++++
+ arch/xtensa/kernel/pci.c | 6 +++---
+ 13 files changed, 50 insertions(+), 14 deletions(-)
+
+--- gregkh-2.6.orig/arch/s390/Kconfig
++++ gregkh-2.6/arch/s390/Kconfig
+@@ -218,6 +218,14 @@ config WARN_STACK_SIZE
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ depends on !64BIT
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ comment "I/O subsystem configuration"
+
+ config MACHCHK_WARNING
+--- gregkh-2.6.orig/arch/sh/Kconfig
++++ gregkh-2.6/arch/sh/Kconfig
+@@ -532,6 +532,13 @@ config NODES_SHIFT
+ default "1"
+ depends on NEED_MULTIPLE_NODES
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ endmenu
+
+ menu "Boot options"
+--- gregkh-2.6.orig/arch/sh/boards/mpc1211/pci.c
++++ gregkh-2.6/arch/sh/boards/mpc1211/pci.c
+@@ -273,9 +273,9 @@ void __init pcibios_fixup_irqs(void)
+ }
+
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (res->flags & IORESOURCE_IO) {
+ if (start >= 0x10000UL) {
+--- gregkh-2.6.orig/arch/sh/boards/overdrive/galileo.c
++++ gregkh-2.6/arch/sh/boards/overdrive/galileo.c
+@@ -536,7 +536,7 @@ void __init pcibios_fixup_bus(struct pci
+ }
+
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size)
++ resource_size_t size)
+ {
+ }
+
+--- gregkh-2.6.orig/arch/sh/drivers/pci/pci.c
++++ gregkh-2.6/arch/sh/drivers/pci/pci.c
+@@ -75,7 +75,7 @@ pcibios_update_resource(struct pci_dev *
+ }
+
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ __attribute__ ((weak));
+
+ /*
+@@ -85,10 +85,10 @@ void pcibios_align_resource(void *data,
+ * modulo 0x400.
+ */
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ if (res->flags & IORESOURCE_IO) {
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (start & 0x300) {
+ start = (start + 0x3ff) & ~0x3ff;
+--- gregkh-2.6.orig/arch/sh64/kernel/pcibios.c
++++ gregkh-2.6/arch/sh64/kernel/pcibios.c
+@@ -69,10 +69,10 @@ pcibios_update_resource(struct pci_dev *
+ * modulo 0x400.
+ */
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ if (res->flags & IORESOURCE_IO) {
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (start & 0x300) {
+ start = (start + 0x3ff) & ~0x3ff;
+--- gregkh-2.6.orig/arch/sparc/Kconfig
++++ gregkh-2.6/arch/sparc/Kconfig
+@@ -67,6 +67,13 @@ config SPARC32
+ maintains both the SPARC32 and SPARC64 ports; its web page is
+ available at <http://www.ultralinux.org/>.
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ # Global things across all Sun machines.
+ config ISA
+ bool
+--- gregkh-2.6.orig/arch/sparc/kernel/pcic.c
++++ gregkh-2.6/arch/sparc/kernel/pcic.c
+@@ -859,7 +859,7 @@ char * __init pcibios_setup(char *str)
+ }
+
+ void pcibios_align_resource(void *data, struct resource *res,
+- u64 size, u64 align)
++ resource_size_t size, resource_size_t align)
+ {
+ }
+
+--- gregkh-2.6.orig/arch/sparc64/kernel/pci.c
++++ gregkh-2.6/arch/sparc64/kernel/pci.c
+@@ -390,7 +390,7 @@ void pcibios_update_irq(struct pci_dev *
+ }
+
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ }
+
+--- gregkh-2.6.orig/arch/v850/Kconfig
++++ gregkh-2.6/arch/v850/Kconfig
+@@ -235,6 +235,13 @@ menu "Processor type and features"
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ endmenu
+
+
+--- gregkh-2.6.orig/arch/v850/kernel/rte_mb_a_pci.c
++++ gregkh-2.6/arch/v850/kernel/rte_mb_a_pci.c
+@@ -329,7 +329,7 @@ void pcibios_fixup_bus(struct pci_bus *b
+
+ void
+ pcibios_align_resource (void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ }
+
+--- gregkh-2.6.orig/arch/xtensa/Kconfig
++++ gregkh-2.6/arch/xtensa/Kconfig
+@@ -99,6 +99,13 @@ config MATH_EMULATION
+ config HIGHMEM
+ bool "High memory support"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ endmenu
+
+ menu "Platform options"
+--- gregkh-2.6.orig/arch/xtensa/kernel/pci.c
++++ gregkh-2.6/arch/xtensa/kernel/pci.c
+@@ -71,13 +71,13 @@ static int pci_bus_count;
+ * which might have be mirrored at 0x0100-0x03ff..
+ */
+ void
+-pcibios_align_resource(void *data, struct resource *res, unsigned long size,
+- unsigned long align)
++pcibios_align_resource(void *data, struct resource *res, resource_size_t size,
++ resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+
+ if (res->flags & IORESOURCE_IO) {
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (size > 0x100) {
+ printk(KERN_ERR "PCI: I/O Region %s/%d too large"
diff --git a/pci/kconfigurable-resources-arch-dependent-changes-arch.patch b/pci/kconfigurable-resources-arch-dependent-changes-arch.patch
new file mode 100644
index 0000000000000..8f75d64990582
--- /dev/null
+++ b/pci/kconfigurable-resources-arch-dependent-changes-arch.patch
@@ -0,0 +1,316 @@
+From vivek@in.ibm.com Fri May 5 10:34:48 2006
+Date: Fri, 5 May 2006 13:34:34 -0400
+From: Vivek Goyal <vgoyal@in.ibm.com>
+Cc: Greg KH <gregkh@suse.de>, Morton Andrew Morton <akpm@osdl.org>
+Subject: kconfigurable resources arch dependent changes arch/[j-p]
+Message-ID: <20060505173434.GG6450@in.ibm.com>
+Content-Disposition: inline
+
+
+o Changes to arch specific code for kconfigurable resources. This
+ patch contains changes for arch/[j-p]*
+
+Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/m32r/Kconfig | 7 +++++++
+ arch/m68k/Kconfig | 7 +++++++
+ arch/m68knommu/Kconfig | 7 +++++++
+ arch/m68knommu/kernel/comempci.c | 3 ++-
+ arch/mips/Kconfig | 8 ++++++++
+ arch/mips/pci/pci.c | 4 ++--
+ arch/mips/pmc-sierra/yosemite/ht.c | 4 ++--
+ arch/parisc/Kconfig | 8 ++++++++
+ arch/parisc/kernel/pci.c | 2 +-
+ arch/powerpc/Kconfig | 8 ++++++++
+ arch/powerpc/kernel/pci_32.c | 10 +++++-----
+ arch/powerpc/kernel/pci_64.c | 4 ++--
+ arch/ppc/Kconfig | 7 +++++++
+ arch/ppc/kernel/pci.c | 12 ++++++------
+ include/asm-powerpc/pci.h | 2 +-
+ include/asm-ppc/pci.h | 2 +-
+ 16 files changed, 74 insertions(+), 21 deletions(-)
+
+--- gregkh-2.6.orig/arch/m32r/Kconfig
++++ gregkh-2.6/arch/m32r/Kconfig
+@@ -188,6 +188,13 @@ config ARCH_DISCONTIGMEM_ENABLE
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ config IRAM_START
+ hex "Internal memory start address (hex)"
+ default "00f00000" if !CHIP_M32104
+--- gregkh-2.6.orig/arch/m68k/Kconfig
++++ gregkh-2.6/arch/m68k/Kconfig
+@@ -368,6 +368,13 @@ config 060_WRITETHROUGH
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ endmenu
+
+ menu "General setup"
+--- gregkh-2.6.orig/arch/m68knommu/Kconfig
++++ gregkh-2.6/arch/m68knommu/Kconfig
+@@ -605,6 +605,13 @@ endchoice
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ endmenu
+
+ config ISA_DMA_API
+--- gregkh-2.6.orig/arch/m68knommu/kernel/comempci.c
++++ gregkh-2.6/arch/m68knommu/kernel/comempci.c
+@@ -357,7 +357,8 @@ void pcibios_fixup_bus(struct pci_bus *b
+
+ /*****************************************************************************/
+
+-void pcibios_align_resource(void *data, struct resource *res, unsigned long size, unsigned long align)
++void pcibios_align_resource(void *data, struct resource *res,
++ resource_size_t size, resource_size_t align)
+ {
+ }
+
+--- gregkh-2.6.orig/arch/mips/Kconfig
++++ gregkh-2.6/arch/mips/Kconfig
+@@ -1655,6 +1655,14 @@ config NR_CPUS
+
+ source "kernel/Kconfig.preempt"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ depends on 32BIT
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ config RTC_DS1742
+ bool "DS1742 BRAM/RTC support"
+ depends on TOSHIBA_JMR3927 || TOSHIBA_RBTX4927
+--- gregkh-2.6.orig/arch/mips/pci/pci.c
++++ gregkh-2.6/arch/mips/pci/pci.c
+@@ -51,11 +51,11 @@ unsigned long PCIBIOS_MIN_MEM = 0;
+ */
+ void
+ pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+ struct pci_controller *hose = dev->sysdata;
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (res->flags & IORESOURCE_IO) {
+ /* Make sure we start at our min on all hoses */
+--- gregkh-2.6.orig/arch/mips/pmc-sierra/yosemite/ht.c
++++ gregkh-2.6/arch/mips/pmc-sierra/yosemite/ht.c
+@@ -383,12 +383,12 @@ void pcibios_update_resource(struct pci_
+
+
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+
+ if (res->flags & IORESOURCE_IO) {
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ /* We need to avoid collisions with `mirrored' VGA ports
+ and other strange ISA hardware, so we always want the
+--- gregkh-2.6.orig/arch/parisc/Kconfig
++++ gregkh-2.6/arch/parisc/Kconfig
+@@ -217,6 +217,14 @@ source "kernel/Kconfig.preempt"
+ source "kernel/Kconfig.hz"
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ depends on !64BIT
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ config COMPAT
+ def_bool y
+ depends on 64BIT
+--- gregkh-2.6.orig/arch/parisc/kernel/pci.c
++++ gregkh-2.6/arch/parisc/kernel/pci.c
+@@ -289,7 +289,7 @@ EXPORT_SYMBOL(pcibios_bus_to_resource);
+ * than res->start.
+ */
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long alignment)
++ resource_size_t size, resource_size_t alignment)
+ {
+ unsigned long mask, align;
+
+--- gregkh-2.6.orig/arch/powerpc/Kconfig
++++ gregkh-2.6/arch/powerpc/Kconfig
+@@ -626,6 +626,14 @@ config CRASH_DUMP
+
+ Don't change this unless you know what you are doing.
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ depends on PPC32
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ config EMBEDDEDBOOT
+ bool
+ depends on 8xx || 8260
+--- gregkh-2.6.orig/arch/powerpc/kernel/pci_32.c
++++ gregkh-2.6/arch/powerpc/kernel/pci_32.c
+@@ -173,18 +173,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, u64 size,
+- u64 align)
++void pcibios_align_resource(void *data, struct resource *res,
++ resource_size_t size, resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+
+ if (res->flags & IORESOURCE_IO) {
+- u64 start = res->start;
++ resource_size_t start = res->start;
+
+ if (size > 0x100) {
+ printk(KERN_ERR "PCI: I/O Region %s/%d too large"
+ " (%lld bytes)\n", pci_name(dev),
+- dev->resource - res, size);
++ dev->resource - res, (unsigned long long)size);
+ }
+
+ if (start & 0x300) {
+@@ -1756,7 +1756,7 @@ long sys_pciconfig_iobase(long which, un
+
+ void pci_resource_to_user(const struct pci_dev *dev, int bar,
+ const struct resource *rsrc,
+- u64 *start, u64 *end)
++ resource_size_t *start, resource_size_t *end)
+ {
+ struct pci_controller *hose = pci_bus_to_hose(dev->bus->number);
+ unsigned long offset = 0;
+--- gregkh-2.6.orig/arch/powerpc/kernel/pci_64.c
++++ gregkh-2.6/arch/powerpc/kernel/pci_64.c
+@@ -146,11 +146,11 @@ EXPORT_SYMBOL(pcibios_bus_to_resource);
+ * which might have be mirrored at 0x0100-0x03ff..
+ */
+ void pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+ struct pci_controller *hose = pci_bus_to_host(dev->bus);
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+ unsigned long alignto;
+
+ if (res->flags & IORESOURCE_IO) {
+--- gregkh-2.6.orig/arch/ppc/Kconfig
++++ gregkh-2.6/arch/ppc/Kconfig
+@@ -953,6 +953,13 @@ source kernel/Kconfig.hz
+ source kernel/Kconfig.preempt
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ source "fs/Kconfig.binfmt"
+
+ config PREP_RESIDUAL
+--- gregkh-2.6.orig/arch/ppc/kernel/pci.c
++++ gregkh-2.6/arch/ppc/kernel/pci.c
+@@ -171,13 +171,13 @@ 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, u64 size,
+- u64 align)
++void pcibios_align_resource(void *data, struct resource *res,
++ resource_size_t size, resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+
+ if (res->flags & IORESOURCE_IO) {
+- u64 start = res->start;
++ resource_size_t start = res->start;
+
+ if (size > 0x100) {
+ printk(KERN_ERR "PCI: I/O Region %s/%d too large"
+@@ -960,8 +960,8 @@ static pgprot_t __pci_mmap_set_pgprot(st
+ else
+ prot |= _PAGE_GUARDED;
+
+- printk("PCI map for %s:%llx, prot: %llx\n", pci_name(dev), rp->start,
+- prot);
++ printk("PCI map for %s:%llx, prot: %lx\n", pci_name(dev),
++ (unsigned long long)rp->start, prot);
+
+ return __pgprot(prot);
+ }
+@@ -1131,7 +1131,7 @@ long sys_pciconfig_iobase(long which, un
+
+ void pci_resource_to_user(const struct pci_dev *dev, int bar,
+ const struct resource *rsrc,
+- u64 *start, u64 *end)
++ resource_size_t *start, resource_size_t *end)
+ {
+ struct pci_controller *hose = pci_bus_to_hose(dev->bus->number);
+ unsigned long offset = 0;
+--- gregkh-2.6.orig/include/asm-powerpc/pci.h
++++ gregkh-2.6/include/asm-powerpc/pci.h
+@@ -242,7 +242,7 @@ extern pgprot_t pci_phys_mem_access_prot
+ #define HAVE_ARCH_PCI_RESOURCE_TO_USER
+ extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
+ const struct resource *rsrc,
+- u64 *start, u64 *end);
++ resource_size_t *start, resource_size_t *end);
+ #endif /* CONFIG_PPC_MULTIPLATFORM || CONFIG_PPC32 */
+
+ #endif /* __KERNEL__ */
+--- gregkh-2.6.orig/include/asm-ppc/pci.h
++++ gregkh-2.6/include/asm-ppc/pci.h
+@@ -133,7 +133,7 @@ extern pgprot_t pci_phys_mem_access_prot
+ #define HAVE_ARCH_PCI_RESOURCE_TO_USER
+ extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
+ const struct resource *rsrc,
+- u64 *start, u64 *end);
++ resource_size_t *start, resource_size_t *end);
+
+
+ #endif /* __KERNEL__ */
diff --git a/pci/kconfigurable-resources-arch-dependent-changes.patch b/pci/kconfigurable-resources-arch-dependent-changes.patch
new file mode 100644
index 0000000000000..8c7c68d868a79
--- /dev/null
+++ b/pci/kconfigurable-resources-arch-dependent-changes.patch
@@ -0,0 +1,207 @@
+From vivek@in.ibm.com Fri May 5 10:33:41 2006
+Date: Fri, 5 May 2006 13:33:26 -0400
+From: Vivek Goyal <vgoyal@in.ibm.com>
+Cc: Greg KH <gregkh@suse.de>, Morton Andrew Morton <akpm@osdl.org>
+Subject: kconfigurable resources arch dependent changes (arch/[a-i]*)
+Message-ID: <20060505173326.GF6450@in.ibm.com>
+Content-Disposition: inline
+
+
+
+o Changes to arch specific code for kconfigurable resources. This
+ patch contains changes for arch/[a-i]*
+
+Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+
+---
+ arch/alpha/kernel/pci.c | 4 ++--
+ arch/arm/Kconfig | 7 +++++++
+ arch/arm/kernel/bios32.c | 6 +++---
+ arch/arm26/Kconfig | 7 +++++++
+ arch/cris/Kconfig | 7 +++++++
+ arch/cris/arch-v32/drivers/pci/bios.c | 4 ++--
+ arch/frv/Kconfig | 7 +++++++
+ arch/frv/mb93090-mb00/pci-frv.c | 4 ++--
+ arch/i386/Kconfig | 7 +++++++
+ arch/i386/pci/i386.c | 4 ++--
+ arch/ia64/pci/pci.c | 2 +-
+ 11 files changed, 47 insertions(+), 12 deletions(-)
+
+--- gregkh-2.6.orig/arch/alpha/kernel/pci.c
++++ gregkh-2.6/arch/alpha/kernel/pci.c
+@@ -124,12 +124,12 @@ DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_
+
+ void
+ pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ struct pci_dev *dev = data;
+ struct pci_controller *hose = dev->sysdata;
+ unsigned long alignto;
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (res->flags & IORESOURCE_IO) {
+ /* Make sure we start at our min on all hoses */
+--- gregkh-2.6.orig/arch/arm/Kconfig
++++ gregkh-2.6/arch/arm/Kconfig
+@@ -518,6 +518,13 @@ config NODES_SHIFT
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ config LEDS
+ bool "Timer and CPU usage LEDs"
+ depends on ARCH_CDB89712 || ARCH_CO285 || ARCH_EBSA110 || \
+--- 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)
+ {
+- u64 offset;
++ resource_size_t 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,
+- u64 size, u64 align)
++ resource_sz_t size, resource_size_t align)
+ {
+- u64 start = res->start;
++ resource_size_t start = res->start;
+
+ if (res->flags & IORESOURCE_IO && start & 0x300)
+ start = (start + 0x3ff) & ~0x3ff;
+--- gregkh-2.6.orig/arch/arm26/Kconfig
++++ gregkh-2.6/arch/arm26/Kconfig
+@@ -187,6 +187,13 @@ config CMDLINE
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ endmenu
+
+ source "net/Kconfig"
+--- gregkh-2.6.orig/arch/cris/Kconfig
++++ gregkh-2.6/arch/cris/Kconfig
+@@ -80,6 +80,13 @@ config PREEMPT
+
+ source mm/Kconfig
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ endmenu
+
+ menu "Hardware setup"
+--- gregkh-2.6.orig/arch/cris/arch-v32/drivers/pci/bios.c
++++ gregkh-2.6/arch/cris/arch-v32/drivers/pci/bios.c
+@@ -45,10 +45,10 @@ int pci_mmap_page_range(struct pci_dev *
+
+ void
+ pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ if (res->flags & IORESOURCE_IO) {
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (start & 0x300) {
+ start = (start + 0x3ff) & ~0x3ff;
+--- gregkh-2.6.orig/arch/frv/Kconfig
++++ gregkh-2.6/arch/frv/Kconfig
+@@ -80,6 +80,13 @@ config HIGHPTE
+
+ source "mm/Kconfig"
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ choice
+ prompt "uClinux kernel load address"
+ depends on !MMU
+--- gregkh-2.6.orig/arch/frv/mb93090-mb00/pci-frv.c
++++ gregkh-2.6/arch/frv/mb93090-mb00/pci-frv.c
+@@ -64,10 +64,10 @@ pcibios_update_resource(struct pci_dev *
+ */
+ void
+ pcibios_align_resource(void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ if (res->flags & IORESOURCE_IO) {
+- unsigned long start = res->start;
++ resource_size_t start = res->start;
+
+ if (start & 0x300) {
+ start = (start + 0x3ff) & ~0x3ff;
+--- gregkh-2.6.orig/arch/i386/Kconfig
++++ gregkh-2.6/arch/i386/Kconfig
+@@ -754,6 +754,13 @@ config PHYSICAL_START
+
+ Don't change this unless you know what you are doing.
+
++config RESOURCES_32BIT
++ bool "32 bit Memory and IO resources (EXPERIMENTAL)"
++ depends on EXPERIMENTAL
++ help
++ By default resources are 64 bit. This option allows memory and IO
++ resources to be 32 bit to optimize code size.
++
+ config HOTPLUG_CPU
+ bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
+ depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER
+--- 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,
+- u64 size, u64 align)
++ resource_size_t size, resource_size_t align)
+ {
+ if (res->flags & IORESOURCE_IO) {
+- u64 start = res->start;
++ resource_size_t start = res->start;
+
+ if (start & 0x300) {
+ start = (start + 0x3ff) & ~0x3ff;
+--- gregkh-2.6.orig/arch/ia64/pci/pci.c
++++ gregkh-2.6/arch/ia64/pci/pci.c
+@@ -568,7 +568,7 @@ pcibios_disable_device (struct pci_dev *
+
+ void
+ pcibios_align_resource (void *data, struct resource *res,
+- unsigned long size, unsigned long align)
++ resource_size_t size, resource_size_t align)
+ {
+ }
+
diff --git a/pci/kconfigurable-resources-core-changes.patch b/pci/kconfigurable-resources-core-changes.patch
new file mode 100644
index 0000000000000..4bee35682999c
--- /dev/null
+++ b/pci/kconfigurable-resources-core-changes.patch
@@ -0,0 +1,219 @@
+From vivek@in.ibm.com Fri May 5 10:29:02 2006
+Date: Fri, 5 May 2006 13:28:47 -0400
+From: Vivek Goyal <vgoyal@in.ibm.com>
+Cc: Greg KH <gregkh@suse.de>, Morton Andrew Morton <akpm@osdl.org>
+Subject: kconfigurable resources core changes
+Message-ID: <20060505172847.GC6450@in.ibm.com>
+Content-Disposition: inline
+
+
+
+o Core changes for Kconfigurable memory and IO resources. By default resources
+ are 64bit until chosen to be 32bit.
+
+o Last time I posted the patches for 64bit memory resources but it raised
+ the concerns regarding code bloat on 32bit systems who use 32 bit
+ resources.
+
+o This patch-set allows resources to be kconfigurable.
+
+o I have done cross compilation on i386, x86_64, ppc, powerpc, sparc, sparc64
+ ia64 and alpha.
+
+Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/ioport.h | 25 ++++++++++++++-----------
+ include/linux/types.h | 6 ++++++
+ kernel/resource.c | 43 +++++++++++++++++++++++++++----------------
+ 3 files changed, 47 insertions(+), 27 deletions(-)
+
+--- gregkh-2.6.orig/include/linux/ioport.h
++++ gregkh-2.6/include/linux/ioport.h
+@@ -15,7 +15,7 @@
+ * nesting etc..
+ */
+ struct resource {
+- u64 start, end;
++ resource_size_t start, end;
+ const char *name;
+ unsigned long flags;
+ struct resource *parent, *sibling, *child;
+@@ -97,31 +97,34 @@ 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,
+- u64 size,
+- u64 min, u64 max,
+- u64 align,
++ resource_size_t size, resource_size_t min,
++ resource_size_t max, resource_size_t align,
+ void (*alignf)(void *, struct resource *,
+- u64, u64),
++ resource_size_t, resource_size_t),
+ void *alignf_data);
+-int adjust_resource(struct resource *res, u64 start,
+- u64 size);
++int adjust_resource(struct resource *res, resource_size_t start,
++ resource_size_t 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 *, u64 start, u64 n, const char *name);
++extern struct resource * __request_region(struct resource *,
++ resource_size_t start,
++ resource_size_t 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 *, u64, u64);
+-extern void __release_region(struct resource *, u64, u64);
++extern int __check_region(struct resource *, resource_size_t, resource_size_t);
++extern void __release_region(struct resource *, resource_size_t,
++ resource_size_t);
+
+-static inline int __deprecated check_region(u64 s, u64 n)
++static inline int __deprecated check_region(resource_size_t s,
++ resource_size_t n)
+ {
+ return __check_region(&ioport_resource, s, n);
+ }
+--- gregkh-2.6.orig/include/linux/types.h
++++ gregkh-2.6/include/linux/types.h
+@@ -141,6 +141,12 @@ typedef unsigned long sector_t;
+ typedef unsigned long blkcnt_t;
+ #endif
+
++#ifdef CONFIG_RESOURCES_32BIT
++typedef u32 resource_size_t;
++#else
++typedef u64 resource_size_t;
++#endif
++
+ /*
+ * The type of an index into the pagecache. Use a #define so asm/types.h
+ * can override it.
+--- gregkh-2.6.orig/kernel/resource.c
++++ gregkh-2.6/kernel/resource.c
+@@ -23,7 +23,11 @@
+
+ struct resource ioport_resource = {
+ .name = "PCI IO",
++#ifdef CONFIG_RESOURCES_32BIT
++ .start = 0x0000UL,
++#else
+ .start = 0x0000ULL,
++#endif
+ .end = IO_SPACE_LIMIT,
+ .flags = IORESOURCE_IO,
+ };
+@@ -32,8 +36,13 @@ EXPORT_SYMBOL(ioport_resource);
+
+ struct resource iomem_resource = {
+ .name = "PCI mem",
++#ifdef CONFIG_RESOURCES_32BIT
++ .start = 0UL,
++ .end = ~0UL,
++#else
+ .start = 0ULL,
+ .end = ~0ULL,
++#endif
+ .flags = IORESOURCE_MEM,
+ };
+
+@@ -151,8 +160,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)
+ {
+- u64 start = new->start;
+- u64 end = new->end;
++ resource_size_t start = new->start;
++ resource_size_t end = new->end;
+ struct resource *tmp, **p;
+
+ if (end < start)
+@@ -236,11 +245,10 @@ 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,
+- u64 size,
+- u64 min, u64 max,
+- u64 align,
++ resource_size_t size, resource_size_t min,
++ resource_size_t max, resource_size_t align,
+ void (*alignf)(void *, struct resource *,
+- u64, u64),
++ resource_size_t, resource_size_t),
+ void *alignf_data)
+ {
+ struct resource *this = root->child;
+@@ -282,11 +290,10 @@ 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,
+- u64 size,
+- u64 min, u64 max,
+- u64 align,
++ resource_size_t size, resource_size_t min,
++ resource_size_t max, resource_size_t align,
+ void (*alignf)(void *, struct resource *,
+- u64, u64),
++ resource_size_t, resource_size_t),
+ void *alignf_data)
+ {
+ int err;
+@@ -378,10 +385,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, u64 start, u64 size)
++int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size)
+ {
+ struct resource *tmp, *parent = res->parent;
+- u64 end = start + size - 1;
++ resource_size_t end = start + size - 1;
+ int result = -EBUSY;
+
+ write_lock(&resource_lock);
+@@ -428,7 +435,9 @@ EXPORT_SYMBOL(adjust_resource);
+ *
+ * Release-region releases a matching busy region.
+ */
+-struct resource * __request_region(struct resource *parent, u64 start, u64 n, const char *name)
++struct resource * __request_region(struct resource *parent,
++ resource_size_t start, resource_size_t n,
++ const char *name)
+ {
+ struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL);
+
+@@ -464,7 +473,8 @@ struct resource * __request_region(struc
+
+ EXPORT_SYMBOL(__request_region);
+
+-int __check_region(struct resource *parent, u64 start, u64 n)
++int __check_region(struct resource *parent, resource_size_t start,
++ resource_size_t n)
+ {
+ struct resource * res;
+
+@@ -479,10 +489,11 @@ int __check_region(struct resource *pare
+
+ EXPORT_SYMBOL(__check_region);
+
+-void __release_region(struct resource *parent, u64 start, u64 n)
++void __release_region(struct resource *parent, resource_size_t start,
++ resource_size_t n)
+ {
+ struct resource **p;
+- u64 end;
++ resource_size_t end;
+
+ p = &parent->child;
+ end = start + n - 1;
diff --git a/pci/kconfigurable-resources-driver-others-changes.patch b/pci/kconfigurable-resources-driver-others-changes.patch
new file mode 100644
index 0000000000000..1118937846e58
--- /dev/null
+++ b/pci/kconfigurable-resources-driver-others-changes.patch
@@ -0,0 +1,219 @@
+From vivek@in.ibm.com Fri May 5 10:31:16 2006
+Date: Fri, 5 May 2006 13:31:02 -0400
+From: Vivek Goyal <vgoyal@in.ibm.com>
+Cc: Greg KH <gregkh@suse.de>, Morton Andrew Morton <akpm@osdl.org>
+Subject: kconfigurable resources driver others changes
+Message-ID: <20060505173102.GE6450@in.ibm.com>
+Content-Disposition: inline
+
+
+
+o Changes to files under driver/* except driver/pci/* which is covered in a
+ separate patch.
+
+Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ieee1394/ohci1394.c | 2 +-
+ drivers/infiniband/hw/ipath/ipath_driver.c | 8 ++++----
+ drivers/net/8139cp.c | 2 +-
+ drivers/pcmcia/rsrc_nonstatic.c | 13 ++++++++-----
+ drivers/pnp/manager.c | 11 ++++++-----
+ drivers/pnp/resource.c | 8 ++++----
+ include/linux/pnp.h | 7 +++++--
+ 7 files changed, 29 insertions(+), 22 deletions(-)
+
+--- gregkh-2.6.orig/drivers/ieee1394/ohci1394.c
++++ gregkh-2.6/drivers/ieee1394/ohci1394.c
+@@ -3210,7 +3210,7 @@ static int __devinit ohci1394_pci_probe(
+ {
+ struct hpsb_host *host;
+ struct ti_ohci *ohci; /* shortcut to currently handled device */
+- u64 ohci_base;
++ resource_size_t ohci_base;
+
+ if (pci_enable_device(dev))
+ FAIL(-ENXIO, "Failed to enable OHCI hardware");
+--- gregkh-2.6.orig/drivers/infiniband/hw/ipath/ipath_driver.c
++++ gregkh-2.6/drivers/infiniband/hw/ipath/ipath_driver.c
+@@ -460,10 +460,10 @@ static int __devinit ipath_init_one(stru
+ for (j = 0; j < 6; j++) {
+ if (!pdev->resource[j].start)
+ continue;
+- ipath_cdbg(VERBOSE, "BAR %d start %lx, end %lx, len %lx\n",
+- j, pdev->resource[j].start,
+- pdev->resource[j].end,
+- pci_resource_len(pdev, j));
++ ipath_cdbg(VERBOSE, "BAR %d start %llx, end %llx, len %llx\n",
++ j, (unsigned long long)pdev->resource[j].start,
++ (unsigned long long)pdev->resource[j].end,
++ (unsigned long long)pci_resource_len(pdev, j));
+ }
+
+ if (!addr) {
+--- 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;
+- u64 pciaddr;
++ resource_size_t pciaddr;
+ unsigned int addr_len, i, pci_using_dac;
+ u8 pci_rev;
+
+--- 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(u64 b, u64 n, int flags, char *name)
++make_resource(resource_size_t b, resource_size_t n, int flags, char *name)
+ {
+ struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL);
+
+@@ -86,7 +86,8 @@ make_resource(u64 b, u64 n, int flags, c
+ }
+
+ static struct resource *
+-claim_region(struct pcmcia_socket *s, u64 base, u64 size, int type, char *name)
++claim_region(struct pcmcia_socket *s, resource_size_t base,
++ resource_size_t size, int type, char *name)
+ {
+ struct resource *res, *parent;
+
+@@ -517,10 +518,11 @@ struct pcmcia_align_data {
+ };
+
+ static void
+-pcmcia_common_align(void *align_data, struct resource *res, u64 size, u64 align)
++pcmcia_common_align(void *align_data, struct resource *res,
++ resource_size_t size, resource_size_t align)
+ {
+ struct pcmcia_align_data *data = align_data;
+- u64 start;
++ resource_size_t start;
+ /*
+ * Ensure that we have the correct start address
+ */
+@@ -531,7 +533,8 @@ pcmcia_common_align(void *align_data, st
+ }
+
+ static void
+-pcmcia_align(void *align_data, struct resource *res, u64 size, u64 align)
++pcmcia_align(void *align_data, struct resource *res, resource_size_t size,
++ resource_size_t align)
+ {
+ struct pcmcia_align_data *data = align_data;
+ struct resource_map *m;
+--- gregkh-2.6.orig/drivers/pnp/manager.c
++++ gregkh-2.6/drivers/pnp/manager.c
+@@ -20,7 +20,7 @@ DECLARE_MUTEX(pnp_res_mutex);
+
+ static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
+ {
+- u64 *start, *end;
++ resource_size_t *start, *end;
+ unsigned long *flags;
+
+ if (!dev || !rule)
+@@ -64,7 +64,7 @@ static int pnp_assign_port(struct pnp_de
+
+ static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
+ {
+- u64 *start, *end;
++ resource_size_t *start, *end;
+ unsigned long *flags;
+
+ if (!dev || !rule)
+@@ -118,7 +118,7 @@ static int pnp_assign_mem(struct pnp_dev
+
+ static int pnp_assign_irq(struct pnp_dev * dev, struct pnp_irq *rule, int idx)
+ {
+- u64 *start, *end;
++ resource_size_t *start, *end;
+ unsigned long *flags;
+ int i;
+
+@@ -171,7 +171,7 @@ static int pnp_assign_irq(struct pnp_dev
+
+ static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
+ {
+- u64 *start, *end;
++ resource_size_t *start, *end;
+ unsigned long *flags;
+ int i;
+
+@@ -586,7 +586,8 @@ int pnp_disable_dev(struct pnp_dev *dev)
+ * @size: size of region
+ *
+ */
+-void pnp_resource_change(struct resource *resource, u64 start, u64 size)
++void pnp_resource_change(struct resource *resource, resource_size_t start,
++ resource_size_t 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;
+- u64 *port, *end, *tport, *tend;
++ resource_size_t *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;
+- u64 *addr, *end, *taddr, *tend;
++ resource_size_t *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;
+- u64 * irq = &dev->res.irq_resource[idx].start;
++ resource_size_t * 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;
+- u64 * dma = &dev->res.dma_resource[idx].start;
++ resource_size_t * 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/include/linux/pnp.h
++++ gregkh-2.6/include/linux/pnp.h
+@@ -389,7 +389,8 @@ 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, u64 start, u64 size);
++void pnp_resource_change(struct resource *resource, resource_size_t start,
++ resource_size_t size);
+
+ /* protocol helpers */
+ int pnp_is_active(struct pnp_dev * dev);
+@@ -434,7 +435,9 @@ 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, u64 start, u64 size) { }
++static inline void pnp_resource_change(struct resource *resource,
++ resource_size_t start,
++ resource_size_t size) { }
+
+ /* protocol helpers */
+ static inline int pnp_is_active(struct pnp_dev * dev) { return 0; }
diff --git a/pci/kconfigurable-resources-driver-pci-changes.patch b/pci/kconfigurable-resources-driver-pci-changes.patch
new file mode 100644
index 0000000000000..570ffee610d83
--- /dev/null
+++ b/pci/kconfigurable-resources-driver-pci-changes.patch
@@ -0,0 +1,165 @@
+From vivek@in.ibm.com Fri May 5 10:30:21 2006
+Date: Fri, 5 May 2006 13:30:02 -0400
+From: Vivek Goyal <vgoyal@in.ibm.com>
+To: linux kernel mailing list <linux-kernel@vger.kernel.org>
+Cc: Greg KH <gregkh@suse.de>, Morton Andrew Morton <akpm@osdl.org>
+Subject: kconfigurable resources driver pci changes
+Message-ID: <20060505173002.GD6450@in.ibm.com>
+Content-Disposition: inline
+
+
+
+o Changes to drivers/pci/* for kconfigurable resources.
+
+Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/bus.c | 10 +++++-----
+ drivers/pci/pci-sysfs.c | 4 ++--
+ drivers/pci/pci.h | 6 +++---
+ drivers/pci/proc.c | 4 ++--
+ drivers/pci/setup-res.c | 6 +++---
+ include/linux/pci.h | 13 +++++++------
+ 6 files changed, 22 insertions(+), 21 deletions(-)
+
+--- gregkh-2.6.orig/drivers/pci/bus.c
++++ gregkh-2.6/drivers/pci/bus.c
+@@ -34,11 +34,11 @@
+ */
+ int
+ pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
+- u64 size, u64 align, u64 min,
+- unsigned int type_mask,
+- void (*alignf)(void *, struct resource *,
+- u64, u64),
+- void *alignf_data)
++ resource_size_t size, resource_size_t align,
++ resource_size_t min, unsigned int type_mask,
++ void (*alignf)(void *, struct resource *, resource_size_t,
++ resource_size_t),
++ void *alignf_data)
+ {
+ int i, ret = -ENOMEM;
+
+--- gregkh-2.6.orig/drivers/pci/pci-sysfs.c
++++ gregkh-2.6/drivers/pci/pci-sysfs.c
+@@ -64,7 +64,7 @@ resource_show(struct device * dev, struc
+ char * str = buf;
+ int i;
+ int max = 7;
+- u64 start, end;
++ resource_size_t start, end;
+
+ if (pci_dev->subordinate)
+ max = DEVICE_COUNT_RESOURCE;
+@@ -320,7 +320,7 @@ pci_mmap_resource(struct kobject *kobj,
+ struct device, kobj));
+ struct resource *res = (struct resource *)attr->private;
+ enum pci_mmap_state mmap_type;
+- u64 start, end;
++ resource_size_t start, end;
+ int i;
+
+ for (i = 0; i < PCI_ROM_RESOURCE; i++)
+--- 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,
+- u64 size, u64 align,
+- u64 min, unsigned int type_mask,
++ resource_size_t size, resource_size_t align,
++ resource_size_t min, unsigned int type_mask,
+ void (*alignf)(void *, struct resource *,
+- u64, u64),
++ resource_size_t, resource_size_t),
+ 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
+@@ -350,14 +350,14 @@ static int show_device(struct seq_file *
+ dev->irq);
+ /* Here should be 7 and not PCI_NUM_RESOURCES as we need to preserve compatibility */
+ for (i=0; i<7; i++) {
+- u64 start, end;
++ resource_size_t start, end;
+ pci_resource_to_user(dev, i, &dev->resource[i], &start, &end);
+ 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;
++ resource_size_t start, end;
+ pci_resource_to_user(dev, i, &dev->resource[i], &start, &end);
+ seq_printf(m, "\t%16llx",
+ dev->resource[i].start < dev->resource[i].end ?
+--- gregkh-2.6.orig/drivers/pci/setup-res.c
++++ gregkh-2.6/drivers/pci/setup-res.c
+@@ -121,7 +121,7 @@ int pci_assign_resource(struct pci_dev *
+ {
+ struct pci_bus *bus = dev->bus;
+ struct resource *res = dev->resource + resno;
+- u64 size, min, align;
++ resource_size_t size, min, align;
+ int ret;
+
+ size = res->end - res->start + 1;
+@@ -169,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;
+- u64 r_align;
++ resource_size_t r_align;
+
+ r = &dev->resource[i];
+ r_align = r->end - r->start;
+@@ -185,7 +185,7 @@ pdev_sort_resources(struct pci_dev *dev,
+ }
+ r_align = (i < PCI_BRIDGE_RESOURCES) ? r_align + 1 : r->start;
+ for (list = head; ; list = list->next) {
+- u64 align = 0;
++ resource_size_t 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
+@@ -403,8 +403,8 @@ int pcibios_enable_device(struct pci_dev
+ char *pcibios_setup (char *str);
+
+ /* Used only when drivers/pci/setup.c is used */
+-void pcibios_align_resource(void *, struct resource *,
+- u64, u64);
++void pcibios_align_resource(void *, struct resource *, resource_size_t,
++ resource_size_t);
+ 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,
+- u64 size, u64 align,
+- u64 min, unsigned int type_mask,
++ resource_size_t size, resource_size_t align,
++ resource_size_t min, unsigned int type_mask,
+ void (*alignf)(void *, struct resource *,
+- u64, u64),
++ resource_size_t, resource_size_t),
+ void *alignf_data);
+ void pci_enable_bridges(struct pci_bus *bus);
+
+@@ -727,7 +727,8 @@ static inline char *pci_name(struct pci_
+ */
+ #ifndef HAVE_ARCH_PCI_RESOURCE_TO_USER
+ static inline void pci_resource_to_user(const struct pci_dev *dev, int bar,
+- const struct resource *rsrc, u64 *start, u64 *end)
++ const struct resource *rsrc, resource_size_t *start,
++ resource_size_t *end)
+ {
+ *start = rsrc->start;
+ *end = rsrc->end;