[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-bugs] [Bug 1227] Out of SW-IOMMU space, 3ware Raid controller/3w-xxxx module



http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1227





------- Comment #2 from christian.jung@xxxxxxxxxxxxx  2008-06-07 12:30 -------
I've got the same problem with current SuSE SLES10 SP2 (on Intel, x86_64, 3ware
9650SE 4LP). There seems to be a solution, which I found on the RedHat
bugzilla:

https://bugzilla.redhat.com/show_bug.cgi?id=433554

The error is located in the PCI DMA stuff. I'm not very familiar with this so I
have to citate Stephen Tweedie who wrote this patch:

---8<---
    On Xen kernels, BIOVEC_PHYS_MERGEABLE permits merging of disk IOs that
    span multiple pages, provided that the pages are both pseudophysically-
    AND machine-contiguous ---

        (((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2))) && \
         ((bvec_to_pseudophys((vec1)) + (vec1)->bv_len) == \
          bvec_to_pseudophys((vec2))))

    However, this best-effort merging of adjacent pages can occur in
    regions of dom0 memory which just happen, by virtue of having been
    initially set up that way, to be machine-contiguous.  Such pages
    which occur outside of a range created by xen_create_contiguous_
    region won't be seen as contiguous by range_straddles_page_boundary(),
    so the pci-dma-xen.c code for dma_map_sg() will send these regions
    to the swiotlb for bounce buffering.

    In RHEL-5.1 this did not happen, because we did not have the check
    for range_straddles_page_boundary() in that code.  Now that that check
    has been added, these SG ranges --- which ARE machine contiguous and
    which can perfectly well be sent to a dma engine --- are being bounce-
    buffered in the swiotlb instead, causing a performance overhead and
    potentially leading to early swiotlb exhaustion.

    This patch adds a new check, check_pages_physically_contiguous(),
    to the swiotlb_map_sg() code to capture these ranges and map them
    directly via virt_to_bus() mapping rather than through the swiotlb.
---8<---

I've incorporated the patch on the SuSE kernel and made a little test (dd
if=/dev/zero of=/dev/sda3 bs=1024k). No PCI DMA errors occured since the last
two hours. 

No special Kernel-parameters for xen or the dom0 kernel. On my current machine
this means 2MB SW-IOMMU buffer.

Hope this helps.

bye
Chris


-- 
Configure bugmail: 
http://bugzilla.xensource.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

_______________________________________________
Xen-bugs mailing list
Xen-bugs@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-bugs


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.