From: Andrea Arcangeli <andrea@suse.de>
To: Chris Friesen <cfriesen@nortelnetworks.com>
Cc: Linus Torvalds <torvalds@transmeta.com>,
Jeff Dike <jdike@karaya.com>,
user-mode-linux-user <user-mode-linux-user@lists.sourceforge.net>,
linux-kernel <linux-kernel@vger.kernel.org>,
Jan Hubicka <jh@suse.cz>
Subject: Re: user-mode port 0.44-2.4.7
Date: Mon, 23 Jul 2001 23:11:36 +0200 [thread overview]
Message-ID: <20010723231136.E16919@athlon.random> (raw)
In-Reply-To: <Pine.LNX.4.33.0107231259520.13272-100000@penguin.transmeta.com> <3B5C8C96.FE53F5BA@nortelnetworks.com>
In-Reply-To: <3B5C8C96.FE53F5BA@nortelnetworks.com>; from cfriesen@nortelnetworks.com on Mon, Jul 23, 2001 at 04:44:06PM -0400
On Mon, Jul 23, 2001 at 04:44:06PM -0400, Chris Friesen wrote:
> Linus Torvalds wrote:
> >
> > On Mon, 23 Jul 2001, Andrea Arcangeli wrote:
> > >
> > > gcc can assume 'state' stays constant in memory not just during the
> > > 'case'.
> >
> > The point is that if the kernel has _any_ algorithm where it cares, it's a
> > kernel bug. With volatile or without.
> >
> > SHOW ME THE CASE WHERE IT CARES. Let's fix it. Let's not just hide it with
> > "volatile".
>
> If I understand correctly, xtime is updated asynchronously. If it isn't, then
> ignore this message totally. However, if it is, then *not* specifying it as
> volatile could easily cause problems in technically correct but poorly written
> code.
>
> Suppose I loop against xtime reaching a particular value. While this is
> definately not good practice, if xtime is not specified as volatile then since I
> never modify it within the loop the compiler is free to move the initial load
> out of the loop when optimizing. In this example the case where it is marked as
> volatile will run (though inefficiently), but the non-volatile case can hang
> totally.
>
> Do we want to get ourselves into something like this?
This is actually another issue, not really the problem I was talking
about. The problem I was talking about was just about the C language and
about writing correct C code (whith correct C code I mean something that
cannot break by using a future release of gcc). Without my patch you
never know. About the loop problem you mentioned you can know it won't
break instead if you write it carefully. Of course I understand in most
cases if the code breaks in the actual usages of xtime it is likely that
gcc is doing something stupid in terms of performance. but GCC if it
wants to is allowed to compile this code:
printf("%lx\n", xtime.tv_sec);
as:
unsigned long sec = xtime.tv_sec;
if (sec != xtime.tv_sec)
BUG();
printf("%lx\n", sec);
Andrea
next prev parent reply other threads:[~2001-07-23 21:11 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-07-23 5:08 user-mode port 0.44-2.4.7 Jeff Dike
2001-07-23 15:56 ` Andrea Arcangeli
2001-07-23 15:59 ` Andrea Arcangeli
2001-07-23 16:17 ` Andrea Arcangeli
2001-07-23 16:51 ` Andrea Arcangeli
2001-07-23 16:33 ` Linus Torvalds
2001-07-23 16:45 ` Andrea Arcangeli
2001-07-23 17:32 ` Linus Torvalds
2001-07-23 17:50 ` Andrea Arcangeli
2001-07-23 18:11 ` Linus Torvalds
2001-07-23 18:27 ` Andrea Arcangeli
2001-07-23 20:00 ` Linus Torvalds
2001-07-23 20:15 ` Jonathan Lundell
2001-07-23 22:51 ` Linus Torvalds
2001-07-24 3:45 ` Jonathan Lundell
2001-07-24 15:41 ` Davide Libenzi
2001-07-24 15:46 ` Alexander Viro
2001-07-24 16:01 ` Davide Libenzi
2001-07-24 16:08 ` Alexander Viro
2001-07-24 16:52 ` Davide Libenzi
2001-07-24 16:59 ` Linus Torvalds
2001-07-24 17:31 ` Davide Libenzi
2001-07-24 17:38 ` Linus Torvalds
2001-07-24 18:07 ` Anton Altaparmakov
2001-07-23 20:44 ` Chris Friesen
2001-07-23 21:11 ` Andrea Arcangeli [this message]
2001-07-23 21:50 ` Richard Gooch
2001-07-23 22:09 ` Andrea Arcangeli
2001-07-23 13:20 ` Rob Landley
2001-07-23 22:27 ` Andrea Arcangeli
2001-07-23 17:50 ` Rob Landley
2001-07-23 23:47 ` Richard Gooch
2001-07-24 0:04 ` Andrea Arcangeli
2001-07-24 9:02 ` Jan Hubicka
2001-07-24 15:35 ` Linus Torvalds
2001-07-24 16:04 ` Linus Torvalds
2001-07-25 22:49 ` Andrea Arcangeli
2001-07-25 23:16 ` Linus Torvalds
2001-07-25 23:37 ` Chris Friesen
2001-07-26 18:28 ` Jan Hubicka
2001-07-26 18:35 ` Alan Cox
2001-07-23 22:53 ` Linus Torvalds
2001-07-23 23:13 ` Alan Cox
2001-07-23 20:25 ` Jeff Dike
-- strict thread matches above, loose matches on Subject: below --
2001-07-25 19:03 James W. Lake
[not found] <no.id>
2001-07-23 20:57 ` Alan Cox
2001-07-23 21:14 ` Chris Friesen
2001-07-25 19:12 ` Alan Cox
2001-07-25 23:49 ` Alan Cox
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=20010723231136.E16919@athlon.random \
--to=andrea@suse.de \
--cc=cfriesen@nortelnetworks.com \
--cc=jdike@karaya.com \
--cc=jh@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
--cc=user-mode-linux-user@lists.sourceforge.net \
/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