From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Andi Kleen <ak@suse.de>
Cc: "David S. Miller" <davem@redhat.com>,
Linus Torvalds <torvalds@osdl.org>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
richard.brunner@amd.com
Subject: Re: IOMMUs was Re: Intel vs AMD x86-64
Date: Wed, 25 Feb 2004 11:36:25 +1100 [thread overview]
Message-ID: <1077669384.1128.38.camel@gaston> (raw)
In-Reply-To: <20040227022849.6d9f88ef.ak@suse.de>
> Arjan suggested it some time ago already. In fact I implemented it, it's in the current code.
> But it caused data corruption with a few devices, in particular 3ware, so I had
> to disable it again. I didn't find a bug in the code. It worked fine with others. My theory
> was that it triggered some hardware bug that was normally masked by the frequent flushes, but
> I wasn't able to track it down without heavy equipment.
Interesting. I'm having a data corruption issue with the G5 iommu that
I can fix by always mapping everything. That is non-mapped virtual
IO pages are actually mapped to a dummy RAM page. It seems there is a
problem with the PCI<->HT bridge doing prefetches beyond iommu mapped
pages, thus triggering an iommu error, which in turns probably triggers
some other chipset bug ending up in data corruption. Having everything
mapped (allowing prefetch to complete even while prefetched data is
actually useless) fixes the problem and we don't see any corruption.
Of course, that means we can not longer use the mecanism we first
implemented where we would only flush the iommu TLB once after runnning
out of virtual pages to allocate. We have to flush on every insertion
and removal now :( On the other hand, we can probably do per-tag TLB
flushes instead of flushing the whole TLB once we properly figure out
how to access the tag registers on the chipset and their format (the
darwin source code seem to imply that is doable, but doesn't actually
use that, but in this regard, apple's implementation is impressively
sub-optimal).
Ben.
next prev parent reply other threads:[~2004-02-25 0:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.44.0402231625220.9708-100000@chimarrao.boston.redhat.com.suse.lists.linux.kernel>
[not found] ` <Pine.LNX.4.58.0402231335430.3005@ppc970.osdl.org.suse.lists.linux.kernel>
[not found] ` <20040223134853.5947a414.davem@redhat.com.suse.lists.linux.kernel>
[not found] ` <Pine.LNX.4.58.0402231359280.3005@ppc970.osdl.org.suse.lists.linux.kernel>
2004-02-24 14:06 ` IOMMUs was Re: Intel vs AMD x86-64 Andi Kleen
2004-02-24 18:13 ` David S. Miller
2004-02-27 1:28 ` Andi Kleen
2004-02-24 18:41 ` David S. Miller
2004-02-25 0:36 ` Benjamin Herrenschmidt [this message]
2004-02-24 15:50 richard.brunner
2004-02-24 16:27 ` Mike Fedyk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1077669384.1128.38.camel@gaston \
--to=benh@kernel.crashing.org \
--cc=ak@suse.de \
--cc=davem@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=richard.brunner@amd.com \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.