Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-24 Thread Atsushi Nemoto
On Tue, 23 Jan 2007 23:50:29 -0800, Andrew Morton <[EMAIL PROTECTED]> wrote:
> > setup-bus.o is linked only on x86
> 
> oops, that's untrue.  But it will break ppc32, I think.

Oh sorry for confusion, I had updated wrong version of the patch when
applying comments from Eric and Sergei.

Final shape in mm tree looks fine.  Thank you.

---
Atsushi Nemoto
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-24 Thread Atsushi Nemoto
On Tue, 23 Jan 2007 23:50:29 -0800, Andrew Morton [EMAIL PROTECTED] wrote:
  setup-bus.o is linked only on x86
 
 oops, that's untrue.  But it will break ppc32, I think.

Oh sorry for confusion, I had updated wrong version of the patch when
applying comments from Eric and Sergei.

Final shape in mm tree looks fine.  Thank you.

---
Atsushi Nemoto
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-23 Thread Andrew Morton
On Tue, 23 Jan 2007 23:45:07 -0800
Andrew Morton <[EMAIL PROTECTED]> wrote:

> setup-bus.o is linked only on x86

oops, that's untrue.  But it will break ppc32, I think.

I suppose we can deprive the ppc32 guys of eight bytes of RAM.  But putting
cardbus things in pci.c seems wrong..


diff -puN 
drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix 
drivers/pci/pci.c
--- 
a/drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/pci.c
@@ -21,6 +21,12 @@
 
 unsigned int pci_pm_d3_delay = 10;
 
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
+
 /**
  * pci_bus_max_busnr - returns maximum PCI bus number of given bus' children
  * @bus: pointer to PCI bus structure to search
@@ -1213,11 +1219,9 @@ static int __devinit pci_setup(char *str
if (!strcmp(str, "nomsi")) {
pci_no_msi();
} else if (!strncmp(str, "cbiosize=", 9)) {
-   pci_cardbus_io_size =
-   memparse(str + 9, );
+   pci_cardbus_io_size = memparse(str + 9, );
} else if (!strncmp(str, "cbmemsize=", 10)) {
-   pci_cardbus_mem_size =
-   memparse(str + 10, );
+   pci_cardbus_mem_size = memparse(str + 10, );
} else {
printk(KERN_ERR "PCI: Unknown option `%s'\n",
str);
diff -puN 
drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
 drivers/pci/setup-bus.c
--- 
a/drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/setup-bus.c
@@ -36,16 +36,6 @@
 
 #define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
 
-/*
- * FIXME: IO should be max 256 bytes.  However, since we may
- * have a P2P bridge below a cardbus bridge, we need 4K.
- */
-#define DEFAULT_CARDBUS_IO_SIZE(256)
-#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
-/* pci=cbmemsize=nnM,cbiosize=nn can override this */
-unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
-unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
-
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
 {
_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-23 Thread Andrew Morton
On Tue, 23 Jan 2007 10:30:27 +0900 (JST)
Atsushi Nemoto <[EMAIL PROTECTED]> wrote:

> Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable
> 
> CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
> might result in allocation failure for the reserving itself on some
> platforms (for example typical 32bit MIPS).  Make it (and
> CARDBUS_IO_SIZE too) customizable by "pci=" option for such platforms.
> 
> ...
>
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
>   if (*str && (str = pcibios_setup(str)) && *str) {
>   if (!strcmp(str, "nomsi")) {
>   pci_no_msi();
> + } else if (!strncmp(str, "cbiosize=", 9)) {
> + pci_cardbus_io_size =
> + memparse(str + 9, );
> + } else if (!strncmp(str, "cbmemsize=", 10)) {
> + pci_cardbus_mem_size =
> + memparse(str + 10, );
>   } else {
>   printk(KERN_ERR "PCI: Unknown option `%s'\n",
>   str);
> diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
> index 89f3036..1dfc288 100644
> --- a/drivers/pci/setup-bus.c
> +++ b/drivers/pci/setup-bus.c
> @@ -40,8 +40,11 @@ #define ROUND_UP(x, a) (((x) + (a) - 1)
>   * FIXME: IO should be max 256 bytes.  However, since we may
>   * have a P2P bridge below a cardbus bridge, we need 4K.
>   */
> -#define CARDBUS_IO_SIZE  (256)
> -#define CARDBUS_MEM_SIZE (64*1024*1024)
> +#define DEFAULT_CARDBUS_IO_SIZE  (256)
> +#define DEFAULT_CARDBUS_MEM_SIZE (64*1024*1024)
> +/* pci=cbmemsize=nnM,cbiosize=nn can override this */
> +unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
> +unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;

setup-bus.o is linked only on x86, so your patch will cause all other
pci-using architectures to not link.

An easy fix is to move the definitions of pci_cardbus_io_size and
pci_cardbus_mem_size into pci.c.  An ugly, fragile but more efficient fix
is, reluctantly:

diff -puN 
drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix 
drivers/pci/pci.c
--- 
a/drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/pci.c
@@ -1212,13 +1212,15 @@ static int __devinit pci_setup(char *str
if (*str && (str = pcibios_setup(str)) && *str) {
if (!strcmp(str, "nomsi")) {
pci_no_msi();
-   } else if (!strncmp(str, "cbiosize=", 9)) {
-   pci_cardbus_io_size =
-   memparse(str + 9, );
+   }
+#ifdef CONFIG_X86
+   else if (!strncmp(str, "cbiosize=", 9)) {
+   pci_cardbus_io_size = memparse(str + 9, );
} else if (!strncmp(str, "cbmemsize=", 10)) {
-   pci_cardbus_mem_size =
-   memparse(str + 10, );
-   } else {
+   pci_cardbus_mem_size = memparse(str + 10, );
+   }
+#endif
+   else {
printk(KERN_ERR "PCI: Unknown option `%s'\n",
str);
}
diff -puN 
drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
 drivers/pci/setup-bus.c
--- 
a/drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/setup-bus.c
@@ -36,10 +36,6 @@
 
 #define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
 
-/*
- * FIXME: IO should be max 256 bytes.  However, since we may
- * have a P2P bridge below a cardbus bridge, we need 4K.
- */
 #define DEFAULT_CARDBUS_IO_SIZE(256)
 #define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
 /* pci=cbmemsize=nnM,cbiosize=nn can override this */
_


Perhaps we should move the cbiosize= and cbmemsize= handlers over into
setup-bus.c.  The implementation would be cleaner, but then we wouldn't be
able to use the pci= namespace.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-23 Thread Andrew Morton
On Tue, 23 Jan 2007 10:30:27 +0900 (JST)
Atsushi Nemoto [EMAIL PROTECTED] wrote:

 Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable
 
 CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
 might result in allocation failure for the reserving itself on some
 platforms (for example typical 32bit MIPS).  Make it (and
 CARDBUS_IO_SIZE too) customizable by pci= option for such platforms.
 
 ...

 --- a/drivers/pci/pci.c
 +++ b/drivers/pci/pci.c
 @@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
   if (*str  (str = pcibios_setup(str))  *str) {
   if (!strcmp(str, nomsi)) {
   pci_no_msi();
 + } else if (!strncmp(str, cbiosize=, 9)) {
 + pci_cardbus_io_size =
 + memparse(str + 9, str);
 + } else if (!strncmp(str, cbmemsize=, 10)) {
 + pci_cardbus_mem_size =
 + memparse(str + 10, str);
   } else {
   printk(KERN_ERR PCI: Unknown option `%s'\n,
   str);
 diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
 index 89f3036..1dfc288 100644
 --- a/drivers/pci/setup-bus.c
 +++ b/drivers/pci/setup-bus.c
 @@ -40,8 +40,11 @@ #define ROUND_UP(x, a) (((x) + (a) - 1)
   * FIXME: IO should be max 256 bytes.  However, since we may
   * have a P2P bridge below a cardbus bridge, we need 4K.
   */
 -#define CARDBUS_IO_SIZE  (256)
 -#define CARDBUS_MEM_SIZE (64*1024*1024)
 +#define DEFAULT_CARDBUS_IO_SIZE  (256)
 +#define DEFAULT_CARDBUS_MEM_SIZE (64*1024*1024)
 +/* pci=cbmemsize=nnM,cbiosize=nn can override this */
 +unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
 +unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;

setup-bus.o is linked only on x86, so your patch will cause all other
pci-using architectures to not link.

An easy fix is to move the definitions of pci_cardbus_io_size and
pci_cardbus_mem_size into pci.c.  An ugly, fragile but more efficient fix
is, reluctantly:

diff -puN 
drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix 
drivers/pci/pci.c
--- 
a/drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/pci.c
@@ -1212,13 +1212,15 @@ static int __devinit pci_setup(char *str
if (*str  (str = pcibios_setup(str))  *str) {
if (!strcmp(str, nomsi)) {
pci_no_msi();
-   } else if (!strncmp(str, cbiosize=, 9)) {
-   pci_cardbus_io_size =
-   memparse(str + 9, str);
+   }
+#ifdef CONFIG_X86
+   else if (!strncmp(str, cbiosize=, 9)) {
+   pci_cardbus_io_size = memparse(str + 9, str);
} else if (!strncmp(str, cbmemsize=, 10)) {
-   pci_cardbus_mem_size =
-   memparse(str + 10, str);
-   } else {
+   pci_cardbus_mem_size = memparse(str + 10, str);
+   }
+#endif
+   else {
printk(KERN_ERR PCI: Unknown option `%s'\n,
str);
}
diff -puN 
drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
 drivers/pci/setup-bus.c
--- 
a/drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/setup-bus.c
@@ -36,10 +36,6 @@
 
 #define ROUND_UP(x, a) (((x) + (a) - 1)  ~((a) - 1))
 
-/*
- * FIXME: IO should be max 256 bytes.  However, since we may
- * have a P2P bridge below a cardbus bridge, we need 4K.
- */
 #define DEFAULT_CARDBUS_IO_SIZE(256)
 #define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
 /* pci=cbmemsize=nnM,cbiosize=nn can override this */
_


Perhaps we should move the cbiosize= and cbmemsize= handlers over into
setup-bus.c.  The implementation would be cleaner, but then we wouldn't be
able to use the pci= namespace.

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-23 Thread Andrew Morton
On Tue, 23 Jan 2007 23:45:07 -0800
Andrew Morton [EMAIL PROTECTED] wrote:

 setup-bus.o is linked only on x86

oops, that's untrue.  But it will break ppc32, I think.

I suppose we can deprive the ppc32 guys of eight bytes of RAM.  But putting
cardbus things in pci.c seems wrong..


diff -puN 
drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix 
drivers/pci/pci.c
--- 
a/drivers/pci/pci.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/pci.c
@@ -21,6 +21,12 @@
 
 unsigned int pci_pm_d3_delay = 10;
 
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
+
 /**
  * pci_bus_max_busnr - returns maximum PCI bus number of given bus' children
  * @bus: pointer to PCI bus structure to search
@@ -1213,11 +1219,9 @@ static int __devinit pci_setup(char *str
if (!strcmp(str, nomsi)) {
pci_no_msi();
} else if (!strncmp(str, cbiosize=, 9)) {
-   pci_cardbus_io_size =
-   memparse(str + 9, str);
+   pci_cardbus_io_size = memparse(str + 9, str);
} else if (!strncmp(str, cbmemsize=, 10)) {
-   pci_cardbus_mem_size =
-   memparse(str + 10, str);
+   pci_cardbus_mem_size = memparse(str + 10, str);
} else {
printk(KERN_ERR PCI: Unknown option `%s'\n,
str);
diff -puN 
drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
 drivers/pci/setup-bus.c
--- 
a/drivers/pci/setup-bus.c~make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix
+++ a/drivers/pci/setup-bus.c
@@ -36,16 +36,6 @@
 
 #define ROUND_UP(x, a) (((x) + (a) - 1)  ~((a) - 1))
 
-/*
- * FIXME: IO should be max 256 bytes.  However, since we may
- * have a P2P bridge below a cardbus bridge, we need 4K.
- */
-#define DEFAULT_CARDBUS_IO_SIZE(256)
-#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
-/* pci=cbmemsize=nnM,cbiosize=nn can override this */
-unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
-unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
-
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
 {
_

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Atsushi Nemoto
On Mon, 22 Jan 2007 18:17:38 +0300, Sergei Shtylyov <[EMAIL PROTECTED]> wrote:
> > +   cbiosize=nn[KMG]The fixed amount of bus space which is
> > +   reserved for the CardBus bridges IO window.
> 
> It shoyld be "bridge's"...

Thanks.  Updated again.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by "pci=" option for such platforms.

Signed-off-by: Atsushi Nemoto <[EMAIL PROTECTED]>
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |6 ++
 drivers/pci/setup-bus.c |   27 +++
 include/linux/pci.h |3 +++
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..a194b8f 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
This sorting is done to get a device
order compatible with older (<= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]The fixed amount of bus space which is
+   reserved for the CardBus bridge's IO window.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   The fixed amount of bus space which is
+   reserved for the CardBus bridge's memory
+   window. The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..639069a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
if (*str && (str = pcibios_setup(str)) && *str) {
if (!strcmp(str, "nomsi")) {
pci_no_msi();
+   } else if (!strncmp(str, "cbiosize=", 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, );
+   } else if (!strncmp(str, "cbmemsize=", 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, );
} else {
printk(KERN_ERR "PCI: Unknown option `%s'\n",
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..1dfc288 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,11 @@ #define ROUND_UP(x, a)   (((x) + (a) - 1)
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
@@ -415,12 +418,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOURCE_IO;
 
/*
@@ -440,16 +443,16 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * twice the size.
 */
if (ctrl & PCI_CB_BRIDGE_CTL_PREFETCH_MEM0) {
-   b_res[2].start = CARDBUS_MEM_SIZE;
-   b_res[2].end = b_res[2].start + CARDBUS_MEM_SIZE - 1;
+   b_res[2].start = pci_cardbus_mem_size;
+   b_res[2].end = b_res[2].start + pci_cardbus_mem_size - 1;
b_res[2].flags |= IORESOURCE_MEM | IORESOURCE_PREFETCH;
 
- 

Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Sergei Shtylyov

Hello.

Atsushi Nemoto wrote:


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by "pci=" option for such platforms.


   Sorry for grammatic nitpicking. :-)


diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..dc39989 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters.
This sorting is done to get a device
order compatible with older (<= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]The fixed amount of bus space which is
+   reserved for the CardBus bridges IO window.


   It shoyld be "bridge's"...


+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   The fixed amount of bus space which is
+   reserved for the CardBus bridges memory window.


   Ditto.


+   The default value is 64 megabytes.
 


MBR, Sergei
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Atsushi Nemoto
On Mon, 22 Jan 2007 14:57:46 +0100, Éric Piel <[EMAIL PROTECTED]> wrote:
> > +   cbiosize=nn[KMG]A fixed amount of bus space is
> > +   reserved for CardBus bridges.
> > +   The default value is 256 bytes.
> > +   cbmemsize=nn[KMG]   A fixed amount of bus space is
> > +   reserved for CardBus bridges.
> > +   The default value is 64 megabytes.
> Hi, I've got the feeling that those two parameters don't do the same 
> things, although they have the same description ;-) Maybe the texts 
> could be:
> * The fixed amount of bus space which is reserved for the CardBus 
> bridges IO window.
> * The fixed amount of bus space which is reserved for the CardBus 
> bridges memory window.

Thanks for your comment.  Updated.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by "pci=" option for such platforms.

Signed-off-by: Atsushi Nemoto <[EMAIL PROTECTED]>
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |6 ++
 drivers/pci/setup-bus.c |   27 +++
 include/linux/pci.h |3 +++
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..dc39989 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters.
This sorting is done to get a device
order compatible with older (<= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]The fixed amount of bus space which is
+   reserved for the CardBus bridges IO window.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   The fixed amount of bus space which is
+   reserved for the CardBus bridges memory window.
+   The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..639069a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
if (*str && (str = pcibios_setup(str)) && *str) {
if (!strcmp(str, "nomsi")) {
pci_no_msi();
+   } else if (!strncmp(str, "cbiosize=", 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, );
+   } else if (!strncmp(str, "cbmemsize=", 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, );
} else {
printk(KERN_ERR "PCI: Unknown option `%s'\n",
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..1dfc288 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,11 @@
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
@@ -415,12 +418,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOUR

Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Éric Piel

01/19/2007 04:57 AM, Atsushi Nemoto wrote/a écrit:

On Fri, 19 Jan 2007 12:19:10 +0900 (JST), Atsushi Nemoto <[EMAIL PROTECTED]> 
wrote:

OK, here is a revised patch which uses pci= option instead of config
parameters.


Sorry, this patch would cause build failure if setup-bus.c was not
built into kernel.  Revised again.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by "pci=" option for such platforms.

:


diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..ace7a9a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
 This sorting is done to get a device

order compatible with older (<= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 64 megabytes.
Hi, I've got the feeling that those two parameters don't do the same 
things, although they have the same description ;-) Maybe the texts 
could be:
* The fixed amount of bus space which is reserved for the CardBus 
bridges IO window.
* The fixed amount of bus space which is reserved for the CardBus 
bridges memory window.


See you,
Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Éric Piel

01/19/2007 04:57 AM, Atsushi Nemoto wrote/a écrit:

On Fri, 19 Jan 2007 12:19:10 +0900 (JST), Atsushi Nemoto [EMAIL PROTECTED] 
wrote:

OK, here is a revised patch which uses pci= option instead of config
parameters.


Sorry, this patch would cause build failure if setup-bus.c was not
built into kernel.  Revised again.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by pci= option for such platforms.

:


diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..ace7a9a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
 This sorting is done to get a device

order compatible with older (= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 64 megabytes.
Hi, I've got the feeling that those two parameters don't do the same 
things, although they have the same description ;-) Maybe the texts 
could be:
* The fixed amount of bus space which is reserved for the CardBus 
bridges IO window.
* The fixed amount of bus space which is reserved for the CardBus 
bridges memory window.


See you,
Eric
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Atsushi Nemoto
On Mon, 22 Jan 2007 14:57:46 +0100, Éric Piel [EMAIL PROTECTED] wrote:
  +   cbiosize=nn[KMG]A fixed amount of bus space is
  +   reserved for CardBus bridges.
  +   The default value is 256 bytes.
  +   cbmemsize=nn[KMG]   A fixed amount of bus space is
  +   reserved for CardBus bridges.
  +   The default value is 64 megabytes.
 Hi, I've got the feeling that those two parameters don't do the same 
 things, although they have the same description ;-) Maybe the texts 
 could be:
 * The fixed amount of bus space which is reserved for the CardBus 
 bridges IO window.
 * The fixed amount of bus space which is reserved for the CardBus 
 bridges memory window.

Thanks for your comment.  Updated.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by pci= option for such platforms.

Signed-off-by: Atsushi Nemoto [EMAIL PROTECTED]
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |6 ++
 drivers/pci/setup-bus.c |   27 +++
 include/linux/pci.h |3 +++
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..dc39989 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters.
This sorting is done to get a device
order compatible with older (= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]The fixed amount of bus space which is
+   reserved for the CardBus bridges IO window.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   The fixed amount of bus space which is
+   reserved for the CardBus bridges memory window.
+   The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..639069a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
if (*str  (str = pcibios_setup(str))  *str) {
if (!strcmp(str, nomsi)) {
pci_no_msi();
+   } else if (!strncmp(str, cbiosize=, 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, str);
+   } else if (!strncmp(str, cbmemsize=, 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, str);
} else {
printk(KERN_ERR PCI: Unknown option `%s'\n,
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..1dfc288 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,11 @@
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
@@ -415,12 +418,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOURCE_IO;
 
/*
@@ -440,16 +443,16 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * twice the size.
 */
if (ctrl  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0

Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Sergei Shtylyov

Hello.

Atsushi Nemoto wrote:


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by pci= option for such platforms.


   Sorry for grammatic nitpicking. :-)


diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..dc39989 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters.
This sorting is done to get a device
order compatible with older (= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]The fixed amount of bus space which is
+   reserved for the CardBus bridges IO window.


   It shoyld be bridge's...


+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   The fixed amount of bus space which is
+   reserved for the CardBus bridges memory window.


   Ditto.


+   The default value is 64 megabytes.
 


MBR, Sergei
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-22 Thread Atsushi Nemoto
On Mon, 22 Jan 2007 18:17:38 +0300, Sergei Shtylyov [EMAIL PROTECTED] wrote:
  +   cbiosize=nn[KMG]The fixed amount of bus space which is
  +   reserved for the CardBus bridges IO window.
 
 It shoyld be bridge's...

Thanks.  Updated again.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by pci= option for such platforms.

Signed-off-by: Atsushi Nemoto [EMAIL PROTECTED]
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |6 ++
 drivers/pci/setup-bus.c |   27 +++
 include/linux/pci.h |3 +++
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..a194b8f 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
This sorting is done to get a device
order compatible with older (= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]The fixed amount of bus space which is
+   reserved for the CardBus bridge's IO window.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   The fixed amount of bus space which is
+   reserved for the CardBus bridge's memory
+   window. The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..639069a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
if (*str  (str = pcibios_setup(str))  *str) {
if (!strcmp(str, nomsi)) {
pci_no_msi();
+   } else if (!strncmp(str, cbiosize=, 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, str);
+   } else if (!strncmp(str, cbmemsize=, 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, str);
} else {
printk(KERN_ERR PCI: Unknown option `%s'\n,
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..1dfc288 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,11 @@ #define ROUND_UP(x, a)   (((x) + (a) - 1)
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
@@ -415,12 +418,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOURCE_IO;
 
/*
@@ -440,16 +443,16 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * twice the size.
 */
if (ctrl  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0) {
-   b_res[2].start = CARDBUS_MEM_SIZE;
-   b_res[2].end = b_res[2].start + CARDBUS_MEM_SIZE - 1;
+   b_res[2].start = pci_cardbus_mem_size;
+   b_res[2].end = b_res[2].start + pci_cardbus_mem_size - 1;
b_res[2].flags |= IORESOURCE_MEM | IORESOURCE_PREFETCH;
 
-   b_res[3].start = CARDBUS_MEM_SIZE;
-   b_res[3].end = b_res[3].start + CARDBUS_MEM_SIZE - 1;
+   b_res[3].start

Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Atsushi Nemoto
On Fri, 19 Jan 2007 12:19:10 +0900 (JST), Atsushi Nemoto <[EMAIL PROTECTED]> 
wrote:
> OK, here is a revised patch which uses pci= option instead of config
> parameters.

Sorry, this patch would cause build failure if setup-bus.c was not
built into kernel.  Revised again.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by "pci=" option for such platforms.

Signed-off-by: Atsushi Nemoto <[EMAIL PROTECTED]>
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |   16 
 drivers/pci/setup-bus.c |   27 ++-
 include/linux/pci.h |3 +++
 4 files changed, 35 insertions(+), 17 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..ace7a9a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
This sorting is done to get a device
order compatible with older (<= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..dc7f40e 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1159,6 +1159,16 @@ static int __devinit pci_init(void)
return 0;
 }
 
+/*
+ * FIXME: IO should be max 256 bytes.  However, since we may
+ * have a P2P bridge below a cardbus bridge, we need 4K.
+ */
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
+
 static int __devinit pci_setup(char *str)
 {
while (str) {
@@ -1168,6 +1178,12 @@ static int __devinit pci_setup(char *str
if (*str && (str = pcibios_setup(str)) && *str) {
if (!strcmp(str, "nomsi")) {
pci_no_msi();
+   } else if (!strncmp(str, "cbiosize=", 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, );
+   } else if (!strncmp(str, "cbmemsize=", 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, );
} else {
printk(KERN_ERR "PCI: Unknown option `%s'\n",
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..3554f39 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -36,13 +36,6 @@ #endif
 
 #define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1))
 
-/*
- * FIXME: IO should be max 256 bytes.  However, since we may
- * have a P2P bridge below a cardbus bridge, we need 4K.
- */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
-
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
 {
@@ -415,12 +408,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOURCE_IO;
 
/*
@@ -440,16 +433,16 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * twice the size.
 */
if (ctrl & PCI_CB_BRIDGE_CTL_PREFETCH_MEM0) {
-   b_res[2].start = CARDBUS_MEM_SIZE;
-   b_res[2].end = b_res[2].start + CARDBUS_MEM_SIZE - 1

Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Atsushi Nemoto
On Thu, 18 Jan 2007 13:53:26 -0800, Andrew Morton <[EMAIL PROTECTED]> wrote:
> > Patch looks technically ok to me, so feel free to add my Acked-by: line.
> > 
> > The grief I have with this sort of patch is that this kind of detailed
> > technical knowledge should not be required by a mortal configuring the
> > Linux kernel.
> > 
> 
> Yes, it does rater suck.  A boot option/module parameter would be better.

OK, here is a revised patch which uses pci= option instead of config
parameters.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by "pci=" option for such platforms.

Signed-off-by: Atsushi Nemoto <[EMAIL PROTECTED]>
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |6 ++
 drivers/pci/setup-bus.c |   27 +++
 include/linux/pci.h |3 +++
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..ace7a9a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
This sorting is done to get a device
order compatible with older (<= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..639069a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
if (*str && (str = pcibios_setup(str)) && *str) {
if (!strcmp(str, "nomsi")) {
pci_no_msi();
+   } else if (!strncmp(str, "cbiosize=", 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, );
+   } else if (!strncmp(str, "cbmemsize=", 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, );
} else {
printk(KERN_ERR "PCI: Unknown option `%s'\n",
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..1dfc288 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,11 @@ #define ROUND_UP(x, a)   (((x) + (a) - 1)
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
@@ -415,12 +418,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOURCE_IO;
 
/*
@@ -440,16 +443,16 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * twice the size.
 */
if (ctrl & PCI_CB_BRIDGE_CTL_PREFETCH_MEM0) {
-   b_res[2].start = CARDBUS_MEM_SIZE;
-   b_res[2].end = b_res[2].start + CARDBUS_MEM_SIZE - 1;
+   b_res[2].start = pci_cardbus_mem_s

Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Andrew Morton
> On Thu, 18 Jan 2007 16:03:38 + Ralf Baechle <[EMAIL PROTECTED]> wrote:
> On Fri, Jan 19, 2007 at 12:23:46AM +0900, Atsushi Nemoto wrote:
> 
> > CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
> > might result in allocation failure for the reserving itself on some
> > platforms (for example typical 32bit MIPS).  Make it (and
> > CARDBUS_IO_SIZE too) customizable for such platforms.
> 
> Patch looks technically ok to me, so feel free to add my Acked-by: line.
> 
> The grief I have with this sort of patch is that this kind of detailed
> technical knowledge should not be required by a mortal configuring the
> Linux kernel.
> 

Yes, it does rater suck.  A boot option/module parameter would be better.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Robert P. J. Day
On Thu, 18 Jan 2007, Ralf Baechle wrote:

> On Fri, Jan 19, 2007 at 12:23:46AM +0900, Atsushi Nemoto wrote:
>
> > CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
> > might result in allocation failure for the reserving itself on some
> > platforms (for example typical 32bit MIPS).  Make it (and
> > CARDBUS_IO_SIZE too) customizable for such platforms.
>
> Patch looks technically ok to me, so feel free to add my Acked-by:
> line.
>
> The grief I have with this sort of patch is that this kind of
> detailed technical knowledge should not be required by a mortal
> configuring the Linux kernel.

that's why help info for options like that should always have a "If
you're unsure about what to say here ..." paragraph.

i'm big on stuff like that.  :-)

rday
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Ralf Baechle
On Fri, Jan 19, 2007 at 12:23:46AM +0900, Atsushi Nemoto wrote:

> CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
> might result in allocation failure for the reserving itself on some
> platforms (for example typical 32bit MIPS).  Make it (and
> CARDBUS_IO_SIZE too) customizable for such platforms.

Patch looks technically ok to me, so feel free to add my Acked-by: line.

The grief I have with this sort of patch is that this kind of detailed
technical knowledge should not be required by a mortal configuring the
Linux kernel.

  Ralf
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Atsushi Nemoto
CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable for such platforms.

Signed-off-by: Atsushi Nemoto <[EMAIL PROTECTED]>
---
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
index 3cfb0a3..6085d3d 100644
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -60,3 +60,19 @@ config HT_IRQ
   This allows native hypertransport devices to use interrupts.
 
   If unsure say Y.
+
+config PCI_CARDBUS_IO_SIZE
+   int "CardBus IO window size (bytes)"
+   depends on PCI
+   default "256"
+   help
+ A fixed amount of bus space is reserved for CardBus bridges.
+ The default value is 256 bytes.
+
+config PCI_CARDBUS_MEM_SIZE
+   int "CardBus Memory window size (megabytes)"
+   depends on PCI
+   default "64"
+   help
+ A fixed amount of bus space is reserved for CardBus bridges.
+ The default value is 64 megabytes.
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..046c87b 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,8 @@
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define CARDBUS_IO_SIZECONFIG_PCI_CARDBUS_IO_SIZE
+#define CARDBUS_MEM_SIZE   (CONFIG_PCI_CARDBUS_MEM_SIZE * 1024 * 1024)
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Atsushi Nemoto
CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable for such platforms.

Signed-off-by: Atsushi Nemoto [EMAIL PROTECTED]
---
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
index 3cfb0a3..6085d3d 100644
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -60,3 +60,19 @@ config HT_IRQ
   This allows native hypertransport devices to use interrupts.
 
   If unsure say Y.
+
+config PCI_CARDBUS_IO_SIZE
+   int CardBus IO window size (bytes)
+   depends on PCI
+   default 256
+   help
+ A fixed amount of bus space is reserved for CardBus bridges.
+ The default value is 256 bytes.
+
+config PCI_CARDBUS_MEM_SIZE
+   int CardBus Memory window size (megabytes)
+   depends on PCI
+   default 64
+   help
+ A fixed amount of bus space is reserved for CardBus bridges.
+ The default value is 64 megabytes.
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..046c87b 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,8 @@
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define CARDBUS_IO_SIZECONFIG_PCI_CARDBUS_IO_SIZE
+#define CARDBUS_MEM_SIZE   (CONFIG_PCI_CARDBUS_MEM_SIZE * 1024 * 1024)
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Ralf Baechle
On Fri, Jan 19, 2007 at 12:23:46AM +0900, Atsushi Nemoto wrote:

 CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
 might result in allocation failure for the reserving itself on some
 platforms (for example typical 32bit MIPS).  Make it (and
 CARDBUS_IO_SIZE too) customizable for such platforms.

Patch looks technically ok to me, so feel free to add my Acked-by: line.

The grief I have with this sort of patch is that this kind of detailed
technical knowledge should not be required by a mortal configuring the
Linux kernel.

  Ralf
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Robert P. J. Day
On Thu, 18 Jan 2007, Ralf Baechle wrote:

 On Fri, Jan 19, 2007 at 12:23:46AM +0900, Atsushi Nemoto wrote:

  CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
  might result in allocation failure for the reserving itself on some
  platforms (for example typical 32bit MIPS).  Make it (and
  CARDBUS_IO_SIZE too) customizable for such platforms.

 Patch looks technically ok to me, so feel free to add my Acked-by:
 line.

 The grief I have with this sort of patch is that this kind of
 detailed technical knowledge should not be required by a mortal
 configuring the Linux kernel.

that's why help info for options like that should always have a If
you're unsure about what to say here ... paragraph.

i'm big on stuff like that.  :-)

rday
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Andrew Morton
 On Thu, 18 Jan 2007 16:03:38 + Ralf Baechle [EMAIL PROTECTED] wrote:
 On Fri, Jan 19, 2007 at 12:23:46AM +0900, Atsushi Nemoto wrote:
 
  CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
  might result in allocation failure for the reserving itself on some
  platforms (for example typical 32bit MIPS).  Make it (and
  CARDBUS_IO_SIZE too) customizable for such platforms.
 
 Patch looks technically ok to me, so feel free to add my Acked-by: line.
 
 The grief I have with this sort of patch is that this kind of detailed
 technical knowledge should not be required by a mortal configuring the
 Linux kernel.
 

Yes, it does rater suck.  A boot option/module parameter would be better.
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Atsushi Nemoto
On Thu, 18 Jan 2007 13:53:26 -0800, Andrew Morton [EMAIL PROTECTED] wrote:
  Patch looks technically ok to me, so feel free to add my Acked-by: line.
  
  The grief I have with this sort of patch is that this kind of detailed
  technical knowledge should not be required by a mortal configuring the
  Linux kernel.
  
 
 Yes, it does rater suck.  A boot option/module parameter would be better.

OK, here is a revised patch which uses pci= option instead of config
parameters.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by pci= option for such platforms.

Signed-off-by: Atsushi Nemoto [EMAIL PROTECTED]
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |6 ++
 drivers/pci/setup-bus.c |   27 +++
 include/linux/pci.h |3 +++
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..ace7a9a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
This sorting is done to get a device
order compatible with older (= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..639069a 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1168,6 +1168,12 @@ static int __devinit pci_setup(char *str
if (*str  (str = pcibios_setup(str))  *str) {
if (!strcmp(str, nomsi)) {
pci_no_msi();
+   } else if (!strncmp(str, cbiosize=, 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, str);
+   } else if (!strncmp(str, cbmemsize=, 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, str);
} else {
printk(KERN_ERR PCI: Unknown option `%s'\n,
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..1dfc288 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -40,8 +40,11 @@ #define ROUND_UP(x, a)   (((x) + (a) - 1)
  * FIXME: IO should be max 256 bytes.  However, since we may
  * have a P2P bridge below a cardbus bridge, we need 4K.
  */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
 
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
@@ -415,12 +418,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOURCE_IO;
 
/*
@@ -440,16 +443,16 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * twice the size.
 */
if (ctrl  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0) {
-   b_res[2].start = CARDBUS_MEM_SIZE;
-   b_res[2].end = b_res[2].start + CARDBUS_MEM_SIZE - 1;
+   b_res[2].start = pci_cardbus_mem_size;
+   b_res[2].end = b_res[2].start + pci_cardbus_mem_size - 1;
b_res[2].flags |= IORESOURCE_MEM | IORESOURCE_PREFETCH

Re: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

2007-01-18 Thread Atsushi Nemoto
On Fri, 19 Jan 2007 12:19:10 +0900 (JST), Atsushi Nemoto [EMAIL PROTECTED] 
wrote:
 OK, here is a revised patch which uses pci= option instead of config
 parameters.

Sorry, this patch would cause build failure if setup-bus.c was not
built into kernel.  Revised again.


Subject: [PATCH] Make CARDBUS_MEM_SIZE and CARDBUS_IO_SIZE customizable

CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size
might result in allocation failure for the reserving itself on some
platforms (for example typical 32bit MIPS).  Make it (and
CARDBUS_IO_SIZE too) customizable by pci= option for such platforms.

Signed-off-by: Atsushi Nemoto [EMAIL PROTECTED]
---
 Documentation/kernel-parameters.txt |6 ++
 drivers/pci/pci.c   |   16 
 drivers/pci/setup-bus.c |   27 ++-
 include/linux/pci.h |3 +++
 4 files changed, 35 insertions(+), 17 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 25d2985..ace7a9a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1259,6 +1259,12 @@ and is between 256 and 4096 characters. 
This sorting is done to get a device
order compatible with older (= 2.4) kernels.
nobfsortDon't sort PCI devices into breadth-first order.
+   cbiosize=nn[KMG]A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 256 bytes.
+   cbmemsize=nn[KMG]   A fixed amount of bus space is
+   reserved for CardBus bridges.
+   The default value is 64 megabytes.
 
pcmv=   [HW,PCMCIA] BadgePAD 4
 
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 206c834..dc7f40e 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1159,6 +1159,16 @@ static int __devinit pci_init(void)
return 0;
 }
 
+/*
+ * FIXME: IO should be max 256 bytes.  However, since we may
+ * have a P2P bridge below a cardbus bridge, we need 4K.
+ */
+#define DEFAULT_CARDBUS_IO_SIZE(256)
+#define DEFAULT_CARDBUS_MEM_SIZE   (64*1024*1024)
+/* pci=cbmemsize=nnM,cbiosize=nn can override this */
+unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE;
+unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE;
+
 static int __devinit pci_setup(char *str)
 {
while (str) {
@@ -1168,6 +1178,12 @@ static int __devinit pci_setup(char *str
if (*str  (str = pcibios_setup(str))  *str) {
if (!strcmp(str, nomsi)) {
pci_no_msi();
+   } else if (!strncmp(str, cbiosize=, 9)) {
+   pci_cardbus_io_size =
+   memparse(str + 9, str);
+   } else if (!strncmp(str, cbmemsize=, 10)) {
+   pci_cardbus_mem_size =
+   memparse(str + 10, str);
} else {
printk(KERN_ERR PCI: Unknown option `%s'\n,
str);
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 89f3036..3554f39 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -36,13 +36,6 @@ #endif
 
 #define ROUND_UP(x, a) (((x) + (a) - 1)  ~((a) - 1))
 
-/*
- * FIXME: IO should be max 256 bytes.  However, since we may
- * have a P2P bridge below a cardbus bridge, we need 4K.
- */
-#define CARDBUS_IO_SIZE(256)
-#define CARDBUS_MEM_SIZE   (64*1024*1024)
-
 static void __devinit
 pbus_assign_resources_sorted(struct pci_bus *bus)
 {
@@ -415,12 +408,12 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * Reserve some resources for CardBus.  We reserve
 * a fixed amount of bus space for CardBus bridges.
 */
-   b_res[0].start = CARDBUS_IO_SIZE;
-   b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1;
+   b_res[0].start = pci_cardbus_io_size;
+   b_res[0].end = b_res[0].start + pci_cardbus_io_size - 1;
b_res[0].flags |= IORESOURCE_IO;
 
-   b_res[1].start = CARDBUS_IO_SIZE;
-   b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1;
+   b_res[1].start = pci_cardbus_io_size;
+   b_res[1].end = b_res[1].start + pci_cardbus_io_size - 1;
b_res[1].flags |= IORESOURCE_IO;
 
/*
@@ -440,16 +433,16 @@ pci_bus_size_cardbus(struct pci_bus *bus
 * twice the size.
 */
if (ctrl  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0) {
-   b_res[2].start = CARDBUS_MEM_SIZE;
-   b_res[2].end = b_res[2].start + CARDBUS_MEM_SIZE - 1;
+   b_res[2].start = pci_cardbus_mem_size;
+   b_res[2].end = b_res[2].start