Randy, thanks for forwarding this to me.

> Johannes,
> 
> When I compile base kernel 2.6.1 with PAGE_SIZE=64KB on an IA64
> platform, there is an error.
>   CC      init/version.o
>   LD      init/built-in.o
>   LD      .tmp_vmlinux1
> drivers/built-in.o(.init.text+0x168a2): In function `uhci_hcd_init':
> : undefined reference to `__you_cannot_kmalloc_that_much'
> make: *** [.tmp_vmlinux1] Error 1
> 
> That's because ERRBUF_LEN (equal to PAGE_SIZE*8) is too long when
> PAGE_SIZE=64KB. Actually, there was a similar error found by Tony. See
> http://marc.theaimsgroup.com/?l=linux-ia64&m=105604765306485&w=2. 
> 
> Could you change the definition of ERRBUF_LEN to a fixed value? For
> example, 32*1024?
> 
> Yanmin

Yanmin, I'm the new maintainer for the UHCI driver.  Yep, that's a 
definite error.  This will fix it.

Also included in this patch: change some confusing references from "high
speed" to "full speed" and add proper hyphenation.

Greg, please apply.

Alan Stern


---- a/drivers/usb/host/uhci-hcd.c      Mon Feb 16 14:41:17 2004
+++ b/drivers/usb/host/uhci-hcd.c       Mon Feb 16 14:41:17 2004
@@ -81,7 +81,7 @@
 MODULE_PARM(debug, "i");
 MODULE_PARM_DESC(debug, "Debug level");
 static char *errbuf;
-#define ERRBUF_LEN    (PAGE_SIZE * 8)
+#define ERRBUF_LEN    (32 * 1024)
 
 #include "uhci-hub.c"
 #include "uhci-debug.c"
@@ -914,7 +914,7 @@
 
        uhci_insert_tds_in_qh(qh, urb, UHCI_PTR_BREADTH);
 
-       /* Low speed transfers get a different queue, and won't hog the bus */
+       /* Low-speed transfers get a different queue, and won't hog the bus */
        if (urb->dev->speed == USB_SPEED_LOW)
                skelqh = uhci->skel_ls_control_qh;
        else {
@@ -972,7 +972,7 @@
        /* One TD, who cares about Breadth first? */
        uhci_insert_tds_in_qh(urbp->qh, urb, UHCI_PTR_DEPTH);
 
-       /* Low speed transfers get a different queue */
+       /* Low-speed transfers get a different queue */
        if (urb->dev->speed == USB_SPEED_LOW)
                uhci_insert_qh(uhci, uhci->skel_ls_control_qh, urb);
        else
@@ -1256,7 +1256,7 @@
 {
        int ret;
 
-       /* Can't have low speed bulk transfers */
+       /* Can't have low-speed bulk transfers */
        if (urb->dev->speed == USB_SPEED_LOW)
                return -EINVAL;
 
@@ -2194,10 +2194,10 @@
  *    of the queues. We don't do that here, because
  *    we'll create the actual TD entries on demand.
  *  - The first queue is the interrupt queue.
- *  - The second queue is the control queue, split into low and high speed
+ *  - The second queue is the control queue, split into low- and full-speed
  *  - The third queue is bulk queue.
  *  - The fourth queue is the bandwidth reclamation queue, which loops back
- *    to the high speed control queue.
+ *    to the full-speed control queue.
  */
 static int uhci_start(struct usb_hcd *hcd)
 {
diff -Nru a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h
--- a/drivers/usb/host/uhci-hcd.h       Mon Feb 16 14:41:17 2004
+++ b/drivers/usb/host/uhci-hcd.h       Mon Feb 16 14:41:17 2004
@@ -200,8 +200,8 @@
  * The UHCI driver places Interrupt, Control and Bulk into QH's both
  * to group together TD's for one transfer, and also to faciliate queuing
  * of URB's. To make it easy to insert entries into the schedule, we have
- * a skeleton of QH's for each predefined Interrupt latency, low speed
- * control, high speed control and terminating QH (see explanation for
+ * a skeleton of QH's for each predefined Interrupt latency, low-speed
+ * control, full-speed control and terminating QH (see explanation for
  * the terminating QH below).
  *
  * When we want to add a new QH, we add it to the end of the list for the
@@ -216,9 +216,9 @@
  * skel int32 QH
  * ...
  * skel int1 QH
- * skel low speed control QH
+ * skel low-speed control QH
  * dev 5 control QH
- * skel high speed control QH
+ * skel full-speed control QH
  * skel bulk QH
  * dev 1 bulk QH
  * dev 2 bulk QH
@@ -227,7 +227,7 @@
  * The terminating QH is used for 2 reasons:
  * - To place a terminating TD which is used to workaround a PIIX bug
  *   (see Intel errata for explanation)
- * - To loop back to the high speed control queue for full speed bandwidth
+ * - To loop back to the full-speed control queue for full-speed bandwidth
  *   reclamation
  *
  * Isochronous transfers are stored before the start of the skeleton
@@ -336,7 +336,7 @@
 
        spinlock_t frame_list_lock;
        struct uhci_frame_list *fl;             /* P: uhci->frame_list_lock */
-       int fsbr;                               /* Full speed bandwidth reclamation */
+       int fsbr;                               /* Full-speed bandwidth reclamation */
        unsigned long fsbrtimeout;              /* FSBR delay */
 
        enum uhci_state state;                  /* FIXME: needs a spinlock */



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to