From: Andi Kleen <ak@suse.de>
To: James Bottomley <James.Bottomley@steeleye.com>
Cc: axboe@suse.de, grundler@parisc-linux.org, davem@redhat.com,
suparna@in.ibm.com, linux-kernel@vger.kernel.org,
alex_williamson@hp.com, bjorn_helgaas@hp.com
Subject: Re: [RFC] block layer support for DMA IOMMU bypass mode
Date: Tue, 1 Jul 2003 19:09:38 +0200 [thread overview]
Message-ID: <20030701190938.2332f0a8.ak@suse.de> (raw)
In-Reply-To: <1057077975.2135.54.camel@mulgrave>
On 01 Jul 2003 11:46:12 -0500
James Bottomley <James.Bottomley@steeleye.com> wrote:
>
> Some IOMMUs come with a "bypass" mode, where the IOMMU won't try to
> translate the physical address coming from the device but will instead
> place it directly on the memory bus. For some machines (ia-64, and
> possibly x86_64) any address not programmed into the IOMMU for
That's the case on x86_64 yes.
> The Problem:
>
> At the moment, the block layer assumes segments may be virtually
> mergeable (i.e. two phsically discondiguous pages may be treated as a
> single SG entity for DMA because the IOMMU will patch up the
> discontinuity) if an IOMMU is present in the system. This effectively
> stymies using bypass mode, because segments may not be virtually merged
> in a bypass operation.
I assume on 2.5 has this problem, not 2.4, right?
>
> The Solution:
>
> Is to teach the block layer not to virtually merge segments if either
> segment may be bypassed. To that end, the block layer has to know what
> the physical dma mask is (not the bounce limit, which is different) and
> it must also know the address bits that must be asserted in bypass
> mode. To that end, I've introduced a new #define for asm/io.h
>
> BIO_VMERGE_BYPASS_MASK
But a mask is not good for AMD64 because there is no guarantee
that the bypass/iommu address is checkable using a mask
(K8 uses an memory hole for IOMMU purposes and for various
reasons the hole can be anywhere in the address space)
This means x86_64 needs an function. Also the name is quite weird and
the issue is not really BIO specific. How about just calling it
iommu_address() ?
-Andi
next prev parent reply other threads:[~2003-07-01 16:55 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-01 16:46 [RFC] block layer support for DMA IOMMU bypass mode James Bottomley
2003-07-01 17:09 ` Andi Kleen [this message]
2003-07-01 17:28 ` James Bottomley
2003-07-01 17:42 ` Andi Kleen
2003-07-01 19:22 ` Grant Grundler
2003-07-01 19:56 ` James Bottomley
2003-07-01 17:54 ` H. Peter Anvin
2003-07-01 19:19 ` Grant Grundler
2003-07-01 19:59 ` Alex Williamson
2003-07-01 20:11 ` James Bottomley
2003-07-01 20:03 ` James Bottomley
2003-07-01 23:01 ` Grant Grundler
2003-07-02 15:52 ` James Bottomley
2003-07-01 22:51 ` David S. Miller
2003-07-01 23:57 ` [RFC] block layer support for DMA IOMMU bypass mode II Andi Kleen
2003-07-02 0:03 ` David S. Miller
2003-07-02 0:22 ` Andi Kleen
2003-07-02 0:21 ` David S. Miller
2003-07-02 16:53 ` Grant Grundler
2003-07-02 17:19 ` Andi Kleen
2003-07-02 16:55 ` Grant Grundler
2003-07-02 17:20 ` Andi Kleen
2003-07-02 17:37 ` Grant Grundler
2003-07-02 21:16 ` Alan Cox
2003-07-02 23:56 ` Andi Kleen
2003-07-03 20:26 ` Alan Cox
2003-07-03 21:24 ` Andi Kleen
2003-07-03 22:19 ` Grant Grundler
2003-07-08 2:14 ` David S. Miller
2003-07-08 19:34 ` Andi Kleen
2003-07-08 19:47 ` Jeff Garzik
2003-07-08 20:10 ` Andi Kleen
2003-07-08 20:11 ` Grant Grundler
2003-07-08 22:04 ` David S. Miller
2003-07-08 22:25 ` Grant Grundler
2003-07-08 22:23 ` David S. Miller
2003-07-09 18:55 ` Andi Kleen
2003-07-23 11:40 ` Grant Grundler
2003-07-28 11:15 ` Andi Kleen
2003-07-28 14:59 ` Grant Grundler
2003-07-30 2:31 ` Grant Grundler
2003-08-01 21:51 ` Cliff White
2003-08-01 23:18 ` reaim now available as osdl-aim-7 - " Cliff White
2003-07-30 4:42 ` Grant Grundler
2003-07-30 4:51 ` David S. Miller
2003-07-30 13:06 ` Grant Grundler
2003-07-30 16:02 ` Grant Grundler
2003-07-30 16:36 ` Andi Kleen
2003-07-30 17:18 ` James Bottomley
2003-07-30 14:20 ` James Bottomley
2003-07-23 13:20 ` Grant Grundler
2003-07-23 15:30 ` Jens Axboe
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=20030701190938.2332f0a8.ak@suse.de \
--to=ak@suse.de \
--cc=James.Bottomley@steeleye.com \
--cc=alex_williamson@hp.com \
--cc=axboe@suse.de \
--cc=bjorn_helgaas@hp.com \
--cc=davem@redhat.com \
--cc=grundler@parisc-linux.org \
--cc=linux-kernel@vger.kernel.org \
--cc=suparna@in.ibm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).