lkml.org 
[lkml]   [2009]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/10] swiotlb: use swiotlb_alloc_boot to allocate emergency pool
    Date
    Also fix xen_swiotlb_fixup() to deal with sub-slab-sized allocations.

    [ Impact: bugfix ]
    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Acked-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
    ---
    drivers/pci/xen-iommu.c | 12 +++++++++---
    lib/swiotlb.c | 3 ++-
    2 files changed, 11 insertions(+), 4 deletions(-)

    diff --git a/drivers/pci/xen-iommu.c b/drivers/pci/xen-iommu.c
    index 678a0e5..bc64397 100644
    --- a/drivers/pci/xen-iommu.c
    +++ b/drivers/pci/xen-iommu.c
    @@ -48,16 +48,22 @@ void xen_swiotlb_fixup(void *buf, size_t size, unsigned long nslabs)
    buf, size);

    dma_bits = get_order(IO_TLB_SEGSIZE << IO_TLB_SHIFT) + PAGE_SHIFT;
    - for (i = 0; i < nslabs; i += IO_TLB_SEGSIZE) {
    +
    + i = 0;
    + do {
    + int slabs = min(nslabs - i, (unsigned long)IO_TLB_SEGSIZE);
    +
    do {
    rc = xen_create_contiguous_region(
    (unsigned long)buf + (i << IO_TLB_SHIFT),
    - get_order(IO_TLB_SEGSIZE << IO_TLB_SHIFT),
    + get_order(slabs << IO_TLB_SHIFT),
    dma_bits);
    } while (rc && dma_bits++ < max_dma_bits);
    if (rc)
    panic(KERN_ERR "xen_create_contiguous_region failed\n");
    - }
    +
    + i += slabs;
    + } while(i < nslabs);
    }

    int xen_wants_swiotlb(void)
    diff --git a/lib/swiotlb.c b/lib/swiotlb.c
    index 2b0b5a7..a69834c 100644
    --- a/lib/swiotlb.c
    +++ b/lib/swiotlb.c
    @@ -202,7 +202,8 @@ swiotlb_init_with_default_size(size_t default_size)
    /*
    * Get the overflow emergency buffer
    */
    - io_tlb_overflow_buffer = alloc_bootmem_low(io_tlb_overflow);
    + io_tlb_overflow_buffer = swiotlb_alloc_boot(io_tlb_overflow,
    + io_tlb_overflow >> IO_TLB_SHIFT);
    if (!io_tlb_overflow_buffer)
    panic("Cannot allocate SWIOTLB overflow buffer!\n");

    --
    1.6.0.6


    \
     
     \ /
      Last update: 2009-05-13 05:17    [W:0.043 / U:0.780 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site