linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andi Kleen <ak@muc.de>
To: "David S. Miller" <davem@redhat.com>
Cc: davidm@napali.hpl.hp.com, ak@muc.de, linux-kernel@vger.kernel.org
Subject: Re: NS83820 2.6.0-test5 driver seems unstable on IA64
Date: Sat, 27 Sep 2003 06:26:40 +0200	[thread overview]
Message-ID: <m33ceij1q7.fsf@averell.firstfloor.org> (raw)
In-Reply-To: <AepM.5Zb.41@gated-at.bofh.it> ("David S. Miller"'s message of "Sat, 27 Sep 2003 06:00:22 +0200")

"David S. Miller" <davem@redhat.com> writes:

> On Fri, 26 Sep 2003 10:47:12 -0700
> David Mosberger <davidm@napali.hpl.hp.com> wrote:
>
>> Arches that don't like/support unaligned accesses will certainly
>> have a copy_user() which handles misalignment just fine.  For
>> example, on ia64, the copy will run slightly slower because of an
>> additional shift in the loop, but that penalty only shows on fully
>> cached data.
>
> Exactly correct, and on many platforms (sparc64 happens to be one)
> there is _ZERO_ performance penalty for misalignment or source or
> destination buffer during a memcpy/memmove.

You handle misalignment->misalignment copies with zero or small cost -
when both source and destination have the same misalignment. I guess
you do that by just aligning the pointer at the beginning of the 
function. That works as long as both source and destination have
the same misalignment.

But that is not what happens here. The copy is a misaligned->aligned
copy and that cannot be handled at zero cost (unless you have zero
misalignment penalty in load/store). Either the load or the store in the 
copy loop will be always misaligned, no matter what tricks you play. You 
cannot avoid this by aligning the pointers.

The user buffers tend to be aligned, so when the kernel data is misaligned
the copy ends up requiring an misaligned load in the inner copy loop.

Of course you could try to teach the user to use intentionally misaligned
buffers in his programs to avoid this, but it would be likely a hard 
sell and be a bad idea on less crippled NICs.

The copy inside the device driver has the same problem: misaligned 
data -> aligned skb => the load in the copy will be misaligned, the store 
aligned. You avoid a few unaligned loads in the core stack, at the cost
of hundreds in the copy. Seems like a bad trade-off to me.

-Andi

       reply	other threads:[~2003-09-27  4:28 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <A4gy.8wi.13@gated-at.bofh.it>
     [not found] ` <A4gy.8wi.15@gated-at.bofh.it>
     [not found]   ` <A4gy.8wi.17@gated-at.bofh.it>
     [not found]     ` <A4gy.8wi.11@gated-at.bofh.it>
     [not found]       ` <A4Tv.Ud.37@gated-at.bofh.it>
     [not found]         ` <AepM.5Zb.41@gated-at.bofh.it>
2003-09-27  4:26           ` Andi Kleen [this message]
2003-09-27  4:34             ` NS83820 2.6.0-test5 driver seems unstable on IA64 David Mosberger
2003-09-27 23:36             ` David S. Miller
     [not found] <A2yd.64p.31@gated-at.bofh.it>
     [not found] ` <A2yd.64p.29@gated-at.bofh.it>
     [not found]   ` <A317.6GH.7@gated-at.bofh.it>
2003-09-26 17:04     ` Andi Kleen
2003-09-26 17:22       ` Chris Friesen
2003-09-26 17:47       ` David Mosberger
2003-09-27  3:57         ` David S. Miller
2003-09-27  4:36         ` Andi Kleen
2003-09-27  4:52           ` David Mosberger
     [not found] <zU7D.2Ji.27@gated-at.bofh.it>
2003-09-26 15:14 ` Andi Kleen
2003-09-26 15:41   ` David Mosberger
2003-09-26  6:16 Manfred Spraul
2003-09-26  6:07 ` David S. Miller
2003-09-26  6:41   ` David Mosberger
2003-09-26 14:38   ` Ivan Kokshaysky
2003-09-27  3:12     ` David S. Miller
  -- strict thread matches above, loose matches on Subject: below --
2003-09-23 22:58 Luck, Tony
2003-09-23 23:32 ` David S. Miller
2003-09-24  5:18 ` Valdis.Kletnieks
2003-09-23 18:21 Luck, Tony
2003-09-23 18:29 ` Benjamin LaHaise
2003-09-23 18:45   ` David S. Miller
2003-09-23 18:51   ` Grant Grundler
2003-09-23 18:51     ` David S. Miller
2003-09-23 20:38       ` Grant Grundler
2003-09-23 20:45         ` David S. Miller
2003-09-23 22:35           ` Grant Grundler
2003-09-23 23:35             ` David S. Miller
2003-09-24  0:13               ` Grant Grundler
2003-09-24  0:04                 ` David S. Miller
2003-09-24  1:58               ` William Lee Irwin III
2003-09-23 19:04     ` Benjamin LaHaise
2003-09-23 18:54   ` Andreas Schwab
2003-09-23 18:52     ` David S. Miller
2003-09-23 19:09       ` Andreas Schwab
2003-09-23 19:01         ` David S. Miller
2003-09-23 19:16           ` Andreas Schwab
2003-09-23 19:08             ` David S. Miller
2003-09-23 19:28       ` Matthew Wilcox
2003-09-23 19:22         ` David S. Miller
2003-09-23 23:15           ` Andrew Morton
2003-09-23 23:37             ` David S. Miller
2003-09-24  0:14               ` Matthew Wilcox
2003-09-24  0:06                 ` David S. Miller
2003-09-23 19:10   ` Jeff Garzik
2003-09-23 19:11     ` Benjamin LaHaise
2003-09-23 19:22       ` Jeff Garzik
2003-09-23 21:00 ` Alan Cox
2003-09-23 21:16   ` David Mosberger
2003-09-24  1:47     ` David S. Miller
2003-09-23 17:58 Van Maren, Kevin
2003-09-23 17:57 ` David S. Miller
2003-09-23 18:27   ` David Mosberger
2003-09-23 18:47     ` David S. Miller
2003-09-23 19:17       ` David Mosberger
2003-09-23 19:10         ` David S. Miller
2003-09-23 20:00           ` David Mosberger
2003-09-24  3:08             ` David S. Miller
2003-09-25 16:11               ` Ivan Kokshaysky
2003-09-26  1:12                 ` David S. Miller
2003-09-23 18:06 ` David Mosberger
2003-09-23 19:11   ` David S. Miller
2003-09-19  4:16 Peter Chubb
2003-09-19  4:38 ` Grant Grundler
2003-09-19  4:43   ` Andi Kleen
2003-09-19  5:01     ` Peter Chubb
2003-09-19  5:53       ` Andi Kleen
2003-09-19 10:49         ` Benjamin LaHaise
2003-09-23  0:34           ` Peter Chubb
2003-09-23  0:36             ` Benjamin LaHaise
2003-09-23  6:22               ` David S. Miller
2003-09-23 10:40                 ` Peter Chubb
2003-09-23 10:51                   ` David S. Miller
2003-09-23 14:59                     ` David Mosberger
2003-09-23 17:27                       ` David S. Miller
2003-09-23 17:56                         ` David Mosberger
2003-09-24  2:55                           ` David S. Miller
2003-09-23 23:04                         ` Ian Wienand
2003-09-23 23:35                           ` David S. Miller
2003-09-19  5:04     ` Grant Grundler
2003-09-19  5:11       ` Peter Chubb

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=m33ceij1q7.fsf@averell.firstfloor.org \
    --to=ak@muc.de \
    --cc=davem@redhat.com \
    --cc=davidm@napali.hpl.hp.com \
    --cc=linux-kernel@vger.kernel.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 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).