usb: core: buffer: smallest buffer should start at ARCH_DMA_MINALIGN
[pandora-kernel.git] / drivers / usb / core / buffer.c
index 684ef70..506b969 100644 (file)
  */
 
 /* FIXME tune these based on pool statistics ... */
-static const size_t    pool_max[HCD_BUFFER_POOLS] = {
-       /* platforms without dma-friendly caches might need to
-        * prevent cacheline sharing...
-        */
-       32,
-       128,
-       512,
-       PAGE_SIZE / 2
-       /* bigger --> allocate pages */
+static size_t pool_max[HCD_BUFFER_POOLS] = {
+       32, 128, 512, 2048,
 };
 
+void __init usb_init_pool_max(void)
+{
+       /*
+        * The pool_max values must never be smaller than
+        * ARCH_KMALLOC_MINALIGN.
+        */
+       if (ARCH_KMALLOC_MINALIGN <= 32)
+               ;                       /* Original value is okay */
+       else if (ARCH_KMALLOC_MINALIGN <= 64)
+               pool_max[0] = 64;
+       else if (ARCH_KMALLOC_MINALIGN <= 128)
+               pool_max[0] = 0;        /* Don't use this pool */
+       else
+               BUILD_BUG();            /* We don't allow this */
+}
 
 /* SETUP primitives */