|
|
|
|
|
|
|
|
|
|
xen-bugs
[Xen-bugs] [Bug 1227] Out of SW-IOMMU space, 3ware Raid controller/3w-xx
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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-bugs] [Bug 1227] Out of SW-IOMMU space, 3ware Raid controller/3w-xxxx module,
bugzilla-daemon <=
|
|
|
|
|