public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: 2.6.6-mm5
Date: 22 May 2004 19:01:23 -0600	[thread overview]
Message-ID: <m165aorm70.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <20040522013636.61efef73.akpm@osdl.org>

Andrew Morton <akpm@osdl.org> writes:

> http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.6/2.6.6-mm5/
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.6/2.6.6-mm5/
> 
> 
> add-i386-readq.patch
>   add i386 readq()/writeq()

> static inline u64 readq(void *addr)
> {
> 	return readl(addr) | (((u64)readl(addr + 4)) << 32);
> }
> 
> static inline void writeq(u64 v, void *addr)
> {
> 	u32 v32;
> 
> 	v32 = v;
> 	writel(v32, addr);
> 	v32 = v >> 32;
> 	writel(v32, addr + 4);
> }
> 
> #endif

The implementation is broken and it will break drivers that actually
expect writeq and readq to be 64bit reads and writes.

In particular an interrupt can come in during the middle of a read
or a write and widely separate the two different halves.

Unless the driver has a lock protecting access to the card already
this race could be nasty and quite difficult to debug.  And I have
looked and we do have some cases in the kernel that do not have
a lock protecting them.

I attempted to suggest some alternative implementations earlier
in the original thread that brought this up but it looks like
you missed that.

Eric

  parent reply	other threads:[~2004-05-23  1:02 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-22  8:36 2.6.6-mm5 Andrew Morton
2004-05-22  9:09 ` 2.6.6-mm5 Jeff Garzik
2004-05-22  9:22   ` 2.6.6-mm5 hch
2004-05-22  9:26     ` 2.6.6-mm5 Andrew Morton
2004-05-22 11:51   ` 2.6.6-mm5 R. J. Wysocki
2004-05-22  9:26 ` 2.6.6-mm5 hch
2004-05-22  9:32   ` 2.6.6-mm5 Andrew Morton
2004-05-22  9:41     ` 2.6.6-mm5 hch
2004-05-22 19:03       ` 2.6.6-mm5 Brian King
2004-05-22  9:38 ` 2.6.6-mm5 hch
2004-05-22  9:44   ` 2.6.6-mm5 Jens Axboe
2004-05-22  9:46 ` 2.6.6-mm5 Felipe Alfaro Solana
2004-05-23 15:51   ` 2.6.6-mm5 James Morris
2004-05-22 11:59 ` 2.6.6-mm5 Matthias Andree
2004-05-22 12:19 ` [patch] 2.6.6-mm5: JFFS2_FS_NAND=y compile error Adrian Bunk
2004-05-23  1:01 ` Eric W. Biederman [this message]
2004-05-23  1:08   ` 2.6.6-mm5 Andrew Morton
2004-05-23  1:15     ` 2.6.6-mm5 Roland Dreier
2004-05-24 16:17       ` 2.6.6-mm5 Matt Mackall
2004-05-24 17:03         ` 2.6.6-mm5 Eric W. Biederman
2004-05-24 17:43           ` 2.6.6-mm5 Roland Dreier
2004-05-25  7:25             ` 2.6.6-mm5 Eric W. Biederman
2004-05-23  2:45     ` 2.6.6-mm5 Eric W. Biederman
2004-05-24 22:11 ` 2.6.6-mm5 (compile stats) John Cherry
2004-05-25 13:53 ` 2.6.6-mm5 Pavel Machek
2004-05-26 12:41 ` 2.6.6-mm5 Anders Gustafsson
2004-05-26 12:49   ` 2.6.6-mm5 Jens Axboe
2004-05-26 12:59     ` 2.6.6-mm5 Anders Gustafsson
2004-05-26 13:03       ` 2.6.6-mm5 Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2004-05-22 10:27 2.6.6-mm5 Oleg Nesterov
2004-05-22 18:02 2.6.6-mm5 Adam Radford
     [not found] <1YAd2-6Th-13@gated-at.bofh.it>
     [not found] ` <1YPF4-2hJ-11@gated-at.bofh.it>
     [not found]   ` <1YPOI-2nq-1@gated-at.bofh.it>
     [not found]     ` <1YRdQ-3pu-5@gated-at.bofh.it>
2004-05-23 11:39       ` 2.6.6-mm5 Andi Kleen
2004-05-23 21:32         ` 2.6.6-mm5 Eric W. Biederman
2004-05-24  0:02         ` 2.6.6-mm5 Eric W. Biederman

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=m165aorm70.fsf@ebiederm.dsl.xmission.com \
    --to=ebiederm@xmission.com \
    --cc=akpm@osdl.org \
    --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