mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Justin T. Gibbs" <gibbs@scsiguy.com>
To: "David S. Miller" <davem@redhat.com>
Cc: axboe@suse.de, skraw@ithnet.com, phillips@bonn-fries.net,
	linux-kernel@vger.kernel.org
Subject: Re: With Daniel Phillips Patch
Date: Wed, 22 Aug 2001 12:32:17 -0600	[thread overview]
Message-ID: <200108221832.f7MIWHY13542@aslan.scsiguy.com> (raw)
In-Reply-To: Your message of "Wed, 22 Aug 2001 08:05:40 PDT." <20010822.080540.35030343.davem@redhat.com>

>   From: "Justin T. Gibbs" <gibbs@scsiguy.com>
>   Date: Wed, 22 Aug 2001 07:24:29 -0600
>   
>   Is this somehow different than how large DMA is done on the ia64
>   port?  All I do is look at the size of dma_addr_t to decide whether
>   to enable high address support in my driver.  If dma_addr_t's size
>   changes, then 64bit addressing will work the same as on every other
>   Linux port.
>
>It is totally different.

In looking at the documentation, it really doesn't seem much different
at all.  All you've done is force there to be two types and two APIs,
instead of one of each, for accessing dma addresses.  I would like the
change much better if the size of dma_addr_t simply changed to be
64bits wide if high mem support is enabled in your kernel config.
That the high 32bits may be empty or not even looked at by some
device (as you describe in DMA-mapping.txt) isn't much of a concern.
Sure, you need the other API changes to more finely set dma characteristics,
but having two APIs just complicates life for the device driver.  You'll
see why I say this below.

>The ia64 method, while it worked for ia64, could not work properly on
>just about any other platform.  For example, it assumed that any
>physical address could be represented by a kernel virtual address.

>From the device driver's point of view, this wasn't the case.
The driver asks to have the data mapped into an address that
its dma engine can understand and the system is supposed to do that
mapping.  Whether an IOMMU or some other piece of hardware was involved
didn't matter to the driver.  Well, it might matter because, at least
in the ia64 case, resource shortages result in a panic instead of an
error code being returned that you could do something reasonable with.
Now I just need to stick some "64"'s into my API calls to get the same
effect I currently have on IA64.  The fact that the back end that supports
the mapping changed shouldn't effect the driver.

>It also assumed that using SAC or DAC addressing was simply a matter of
>"does the device support it", and the world is far from being that simple :-)

Can you enumerate the devices that actually issue a DAC when loaded with
a 64bit address with 0's in the most significant 32bits?

>I note that the aic7xxx won't be usable for DAC cycles on many
>platforms since not all 64-bits are significant :-(

This isn't true.  The hardware supports all 64bits, but I've only
implemented two of the three expected S/G formats:

1) 4byte address/3byte count/7bits pad/1bit end of list
2) 4byte address/3byte count/7bits extended address/1bit end of list
and NYI
3) 8byte address/3byte count/7bits pad/1bit end of list

The first is the most efficient as the firmware doesn't have to bother
(or have the code) to load the high address bits.  The second works for
many platforms but doesn't take any additional space up for S/G lists.
The last can be implemented and enabled on any platforms that really need it.

With formats 1 and 2, the choice of what to use can easily be done at
driver initalization time.  If you determine that high mappings will
never be needed, why do the extra work?  Now that I'm supposed to use
two differnt apis depending on what capabilities I enable in my driver,
I'll have to add more bloat to my mapping routine (two func calls that do
almost exact the same thing, gated by a test - or use an indirect function
call).  Perhaps I'll just wrap everything into macros and make it a compile
time option.

--
Justin

  parent reply	other threads:[~2001-08-22 18:32 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-20  8:36 aic7xxx errors with 2.4.8-ac7 on 440gx mobo Yusuf Goolamabbas
2001-08-20  8:55 ` Cliff Albert
2001-08-20 10:37   ` Alan Cox
2001-08-20 10:56     ` Yusuf Goolamabbas
2001-08-20 10:56       ` Alan Cox
2001-08-20 11:13         ` Yusuf Goolamabbas
2001-08-20 11:09           ` Alan Cox
2001-08-20 16:43             ` Doug Ledford
2001-08-20 12:46     ` Stefan Fleiter
2001-08-20 15:19       ` Ville Herva
2001-08-20 20:33         ` Justin T. Gibbs
2001-08-20 16:45       ` Doug Ledford
2001-08-20 17:23         ` Stefan Fleiter
2001-08-20 20:28       ` Justin T. Gibbs
2001-08-21 20:24         ` Stefan Fleiter
2001-08-20 16:21     ` Cliff Albert
2001-08-20 17:23       ` Peter T. Breuer
2001-08-20 17:28         ` Cliff Albert
2001-08-20 20:27   ` Justin T. Gibbs
2001-08-20 20:45     ` Cliff Albert
2001-08-20 21:04       ` Cliff Albert
2001-08-20 21:09         ` Cliff Albert
2001-08-20 21:45           ` Justin T. Gibbs
2001-08-20 22:55             ` Cliff Albert
2001-08-21  0:36               ` Justin T. Gibbs
2001-08-21 15:34                 ` Gérard Roudier
2001-08-21 14:42             ` With Daniel Phillips Patch (was: aic7xxx with 2.4.9 on 7899P) Sven Heinicke
2001-08-21 15:08               ` Daniel Phillips
2001-08-21 16:48               ` Sven Heinicke
2001-08-21 17:18                 ` Justin T. Gibbs
2001-08-21 17:26                 ` Daniel Phillips
2001-08-21 17:55                 ` Stephan von Krawczynski
2001-08-21 18:33                   ` Justin T. Gibbs
2001-08-22  6:46                     ` Jens Axboe
2001-08-22 13:24                       ` Justin T. Gibbs
2001-08-22 15:05                       ` With Daniel Phillips Patch David S. Miller
2001-08-22 18:21                         ` Gérard Roudier
2001-08-22 18:32                         ` Justin T. Gibbs [this message]
2001-08-22 18:32                         ` David S. Miller
2001-08-22 18:46                         ` David S. Miller
2001-08-22 19:41                           ` Justin T. Gibbs
2001-08-22 20:19                           ` David S. Miller
2001-08-22 21:07                           ` Gérard Roudier
2001-08-22 21:40                             ` Justin T. Gibbs
2001-08-22 23:09                             ` David S. Miller
2001-08-23  0:01                               ` Justin T. Gibbs
2001-08-23  0:40                               ` David S. Miller
2001-08-23  0:55                                 ` Justin T. Gibbs
2001-08-23  1:03                                   ` Matthew Jacob
2001-08-23  1:08                                 ` David S. Miller
2001-08-23  1:32                                   ` Justin T. Gibbs
2001-08-23  1:39                                   ` David S. Miller
2001-08-23  1:49                                     ` Justin T. Gibbs
2001-08-22 21:14                           ` David S. Miller
2001-08-22 21:14                           ` David S. Miller
2001-08-21 22:44                 ` With Daniel Phillips Patch (was: aic7xxx with 2.4.9 on 7899P) Sven Heinicke
2001-08-22  0:58                   ` Daniel Phillips
2001-08-21 22:49                 ` Sven Heinicke
2001-08-22 13:06                   ` Gérard Roudier
2001-08-22 10:25               ` Marcelo Tosatti
2001-08-22 16:09               ` Sven Heinicke
2001-08-22 15:42                 ` Marcelo Tosatti
2001-08-29  7:30                   ` Andrey Nekrasov
2001-09-03 14:58                     ` Marcelo Tosatti
2001-08-22 20:25                 ` Sven Heinicke
2001-08-20 22:36           ` aic7xxx with 2.4.9 on 7899P Sven Heinicke
2001-08-20 21:44         ` aic7xxx errors with 2.4.8-ac7 on 440gx mobo Justin T. Gibbs
2001-08-20 21:48           ` Cliff Albert
2001-08-25  7:15           ` Cliff Albert
2001-08-23  1:06 With Daniel Phillips Patch Van Maren, Kevin
2001-08-23  1:31 ` David S. Miller
2001-08-23  1:40   ` Justin T. Gibbs
2001-08-23  1:45   ` David S. Miller
2001-08-23  2:22 Van Maren, Kevin
2001-08-23  2:26 ` David S. Miller

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=200108221832.f7MIWHY13542@aslan.scsiguy.com \
    --to=gibbs@scsiguy.com \
    --cc=axboe@suse.de \
    --cc=davem@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=phillips@bonn-fries.net \
    --cc=skraw@ithnet.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

all inboxes | Powered by JetHome®