This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] Status of "Out of SW-IOMMU space" problem?

To: xen devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Status of "Out of SW-IOMMU space" problem?
From: Philippe Vanhaesendonck <xen@xxxxxxxxxxx>
Date: Mon, 21 Apr 2008 10:02:46 +0200
Cc: Stephan Seitz <s.seitz@xxxxxxxxxxxx>, keir.fraser@xxxxxxxxxxxxx
Delivery-date: Mon, 21 Apr 2008 10:03:33 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <48046FAD.3030407@xxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <C4179D7A.15902%keir.fraser@xxxxxxxxxxxxx> <47F2A377.6040409@xxxxxxxxxxxx> <47FF6C83.5080405@xxxxxxxxxxx> <48046FAD.3030407@xxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird (Windows/20071210)
Summary from the previous episodes: ;)

A) Xen 3.1.0 runs fine
B) Any newer version generates SW-IOMMU problem when Dom0 is under I/O stress.

C) Starting from there, I decided to build a Xen 3.1.3 / Linux kernel excluding all changes related to swiotlb.c.
That means: backout of changsets 15412, 15409, 15408, 15407 and 15405
This configuration runs fine as well!

Then, I re-applied changeset 15405, and the problem re-appears. So the issue is really linked to this changeset.
Looking at it more in detail, there is only one 'intrusive' change there:


   575         if (address_needs_mapping(hwdev, dev_addr)) {


   575         if
   576                           + sg->offset, sg->length)
   577             || address_needs_mapping(hwdev, dev_addr)) {

And indeed, if I remove the test on 'range_straddles_page_boundary', it runs fine, if I leave it, I get the SW-IOMMU problem.

To understand how big the impact of the 'range_straddles_page_boundary' test is, I added an else/printk and it gives:

   Apr 21 09:07:45 xenon kernel: SWIOTLB -
   range_straddles_page_boundary test bypassed
   Apr 21 09:07:58 xenon last message repeated 3629 times

so the impact is rather big: about 300 times per second...

This is almost as far as I can go on the topic. My knowledge on what's really happening in that part of the code is somewhat limited.
So I appreciate any help on how to progress this further.

(Side note: not sure what's happening here, looks like the mailing lists are broken...)


Xen-devel mailing list