[LINUX] Network buffers do not need to be multi-page contiguous
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 15 Jun 2006 12:19:04 +0000 (13:19 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 15 Jun 2006 12:19:04 +0000 (13:19 +0100)
for unprivileged domains (in any case, can fall back to swiotlb).
On non-privileged domain of Xen/IA64, this caused some trouble.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
linux-2.6-xen-sparse/drivers/xen/core/skbuff.c

index 22ff9ef8a6bd016e65c4c4de70abdaacd5ede159..f38f3cffedecb93e6ff4aeb658ff5f4d2a93fb56 100644 (file)
@@ -121,8 +121,15 @@ static int __init skbuff_init(void)
        for (order = 0; order <= MAX_SKBUFF_ORDER; order++) {
                size = PAGE_SIZE << order;
                sprintf(name[order], "xen-skb-%lu", size);
-               skbuff_order_cachep[order] = kmem_cache_create(
-                       name[order], size, size, 0, skbuff_ctor, skbuff_dtor);
+               if (is_running_on_xen() &&
+                   (xen_start_info->flags & SIF_PRIVILEGED))
+                       skbuff_order_cachep[order] = kmem_cache_create(
+                               name[order], size, size, 0,
+                               skbuff_ctor, skbuff_dtor);
+               else
+                       skbuff_order_cachep[order] = kmem_cache_create(
+                               name[order], size, size, 0, NULL, NULL);
+                       
        }
 
        skbuff_cachep = skbuff_order_cachep[0];