[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |