linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: Robert Hancock <hancockr@shaw.ca>,
	linuxppc-dev@ozlabs.org, stable@kernel.org,
	linux-kernel@vger.kernel.org, Olaf Hering <olh@suse.de>
Subject: Re: [PATCH 2.6.22.y] ieee1394: revert "sbp2: enforce 32bit	DMA	mapping"
Date: Tue, 07 Aug 2007 08:29:05 +1000	[thread overview]
Message-ID: <1186439345.938.91.camel@localhost.localdomain> (raw)
In-Reply-To: <46B79F25.50205@s5r6.in-berlin.de>

On Tue, 2007-08-07 at 00:22 +0200, Stefan Richter wrote:
> Benjamin Herrenschmidt wrote:
> > Oh and, don't do the set_dma_mask() in sbp2, it has nothing to do there.
> > It should be in the ohci1394 driver.
> 
> That's not quite right.  OHCI-1394 implementations can go beyond 4GB bus
> address space.  (Although I don't know if there are such implementations
> available.  At least there are two implementations which can set the
> so-called Physical Range bigger than 4GB.)

Hrm..

> Sbp2 however requires that everything which it DMA-maps resides in the
> Physical Range of the controller.  This way the CPU is not involved in
> most of the data transfers.  The OHCI-1394 controller acts as bus bridge
> between IEEE 1394 bus and local bus, with a 1:1 mapping of IEEE 1394 bus
> addresses to and from local bus addresses --- but not in the whole 48
> bits white IEEE 1394 bus address range, only in the
> implementation-dependent Physical Range.  The minimum Physical Range
> that all OHCI-1394 implementations guarantee is 4GB.  I could actually
> have set a bigger mask in sbp2 when the controller supports a
> programmable bigger range.
> 
> So that's the story why that dma_set_mask went into sbp2:  Sbp2 wants
> mappings in a _subset_ of the OHCI-1394 controllers DMA range.
> 
> Anyway.  For now I will simply go with what 2.6.23-rc has and what
> 2.6.21 had:  No dma_set_mask anywhere in the 1394 subsystem.  We can
> revisit this whenever an actual need arises.

Ok, I see your point, however, the problem is that at this stage, in
linux, you really can only set the dma mask on the pci device of the
ohci. That means that sbp2 will effectively change the ohci's DMA mask
for all OHCI operations...

Architectures like powerpc (and possibly others) need to track what
iommu/bridge/etc... a device is on for proper mapping and provide
different DMA operations for different busses. Thus, only devices that
have properly been "setup" by the architecture for DMA can use the DMA
operations.

So while ideally, sbp2 should set the dma mask on itself (or rather on
the sbp2 device) and then use that device for dma mapping operations,
this will not work.

Now, we could try to devise a generic API for use by things such as
ieee1394 to "make DMA'able" sub devices of a pci device with local dma
masks. At least for powerpc, it wouldn't be too hard, but other archs
might have issues if they do things like test for the bus_type.

Cheers,
Ben.

  parent reply	other threads:[~2007-08-06 22:29 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <fa.Qn3Snqoik3hhnxcA6HqjGV0Yzck@ifi.uio.no>
     [not found] ` <46B4B3DC.7020609@shaw.ca>
2007-08-04 17:30   ` [PATCH 2.6.22.y] ieee1394: revert "sbp2: enforce 32bit DMA mapping" Stefan Richter
2007-08-05  0:15     ` Benjamin Herrenschmidt
2007-08-05  7:54       ` Stefan Richter
2007-08-05 22:04         ` Benjamin Herrenschmidt
2007-08-06 13:51           ` Olaf Hering
2007-08-06 21:47             ` Benjamin Herrenschmidt
2007-08-06 22:22               ` Stefan Richter
2007-08-06 22:25                 ` Robert Hancock
2007-08-06 22:32                   ` Benjamin Herrenschmidt
2007-08-06 22:35                     ` Robert Hancock
2007-08-06 22:59                       ` Stefan Richter
2007-08-06 22:48                   ` Stefan Richter
2007-08-07  2:18                     ` Andi Kleen
2007-08-06 22:29                 ` Benjamin Herrenschmidt [this message]
2007-08-06 11:58         ` Olaf Hering
2007-08-06 21:43           ` Benjamin Herrenschmidt
2007-08-06 22:05             ` [PATCH] powerpc: Fix initialization and usage of dma_mask Benjamin Herrenschmidt
2007-08-06 22:30               ` Olaf Hering

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=1186439345.938.91.camel@localhost.localdomain \
    --to=benh@kernel.crashing.org \
    --cc=hancockr@shaw.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=olh@suse.de \
    --cc=stable@kernel.org \
    --cc=stefanr@s5r6.in-berlin.de \
    /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).