mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Denis Vlasenko" <vda.linux@googlemail.com>
To: "Satyam Sharma" <ssatyam@cse.iitk.ac.in>
Cc: "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	"David Howells" <dhowells@redhat.com>,
	"Nick Piggin" <nickpiggin@yahoo.com.au>,
	"Andi Kleen" <ak@suse.de>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Linus Torvalds" <torvalds@linux-foundation.org>
Subject: Re: [PATCH 0/8] i386: bitops: Cleanup, sanitize, optimize
Date: Mon, 30 Jul 2007 18:57:29 +0100	[thread overview]
Message-ID: <1158166a0707301057w13db2d0ema88892a0091dda87@mail.gmail.com> (raw)
In-Reply-To: <20070723160528.22137.84144.sendpatchset@cselinux1.cse.iitk.ac.in>

Hi Satyam,

On Monday 23 July 2007 17:05, Satyam Sharma wrote:
> There was a lot of bogus stuff that include/asm-i386/bitops.h was doing,
> that was unnecessary and not required for the correctness of those APIs.
> All that superfluous stuff was also unnecessarily disallowing compiler
> optimization possibilities, and making gcc generate code that wasn't as
> beautiful as it could otherwise have been. Hence the following series
> of cleanups (some trivial, some surprising, in no particular order):

[I did read entire thread]

Welcome to the minefield.

This bitops and barrier stuff is complicated. It's very easy to
introduce bugs which are hard to trigger, or happen only with some
specific gcc versions, or only on massively parallel SMP boxes.

You can also make technically correct changes which relax needlessly
strict barrier semantics of some bitops and trigger latent bugs
in code which was unknowingly depending on it.

How you can proceed:

Make a change which you believe is right. Recompile allyesconfig
kernel with and without this change. Find a piece of assembly code
which become different. Check that new code is correct (and smaller
and/or faster). Post your patch together with example(s) of code
fragments that got better. Be as verbose as needed.

Repeat for each change separately.

This can be painfully slow, but less likely to be rejected outright
in fear of introducing difficult bugs.

> * Marking "memory" as clobbered for no good reason

I vaguely remember that "memory" clobbers are needed in some rather
obscure, non-obvious situations. Google for it - Linus wrote about it
to lkml (a few years ago IIRC).

> * Volatile-casting of memory addresses
>   (wholly unnecessary, makes gcc generate bad code)

Do you know any code difference resulting from this patch?

> * Unwarranted use of __asm__ __volatile__ even when those semantics
>   are not required

ditto

> * Unnecessarily harsh definitions of smp_mb__{before, after}_clear_bit()
>   (again, this was like *asking* gcc to generate bad code)

ditto

> My testbox boots/works fine with all these patches (uptime half an hour)

For this kind of things, you really need something more stressing.
Try to find big SMP people who is willing to give it a whirl.

> and the compressed bzImage is smaller by about ~2 KB for my .config --

At least it proves that _something_ changed.
--
vda

  parent reply	other threads:[~2007-07-30 17:57 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-23 16:05 Satyam Sharma
2007-07-23 16:05 ` [PATCH 1/8] i386: bitops: Update/correct comments Satyam Sharma
2007-07-23 16:05 ` [PATCH 2/8] i386: bitops: Rectify bogus "Ir" constraints Satyam Sharma
2007-07-23 16:10   ` Andi Kleen
2007-07-23 16:21     ` Satyam Sharma
2007-07-23 16:30       ` Andi Kleen
2007-07-23 16:36         ` Jan Hubicka
2007-07-23 18:05         ` H. Peter Anvin
2007-07-23 18:28           ` H. Peter Anvin
2007-07-23 17:57   ` Linus Torvalds
2007-07-23 18:14     ` Satyam Sharma
2007-07-23 18:32       ` Andi Kleen
2007-07-23 18:39     ` H. Peter Anvin
2007-07-23 18:52       ` Satyam Sharma
2007-07-23 16:05 ` [PATCH 3/8] i386: bitops: Rectify bogus "+m" constraints Satyam Sharma
2007-07-23 16:37   ` Andi Kleen
2007-07-23 17:15     ` Satyam Sharma
2007-07-23 17:46   ` Linus Torvalds
2007-07-24  9:22   ` David Howells
2007-07-23 16:05 ` [PATCH 4/8] i386: bitops: Kill volatile-casting of memory addresses Satyam Sharma
2007-07-23 17:52   ` Linus Torvalds
2007-07-24  4:19     ` Nick Piggin
2007-07-24  6:23       ` Satyam Sharma
2007-07-24  7:16         ` Nick Piggin
2007-07-24  9:49     ` Benjamin Herrenschmidt
2007-07-24 17:20       ` Linus Torvalds
2007-07-24 17:39         ` Jeff Garzik
2007-07-25  4:54         ` Nick Piggin
2007-07-23 16:05 ` [PATCH 5/8] i386: bitops: Contain warnings fallout from the death of volatiles Satyam Sharma
2007-07-23 16:05 ` [PATCH 6/8] i386: bitops: Don't mark memory as clobbered unnecessarily Satyam Sharma
2007-07-23 16:13   ` Andi Kleen
2007-07-23 16:26     ` Satyam Sharma
2007-07-23 16:33       ` Andi Kleen
2007-07-23 17:12         ` Satyam Sharma
2007-07-23 17:49           ` Jeremy Fitzhardinge
2007-07-23 17:55   ` Linus Torvalds
2007-07-24  9:52     ` Benjamin Herrenschmidt
2007-07-24 17:24       ` Linus Torvalds
2007-07-24 17:42         ` Trond Myklebust
2007-07-24 18:13           ` Linus Torvalds
2007-07-24 18:28             ` Trond Myklebust
2007-07-24 21:37             ` Benjamin Herrenschmidt
2007-07-24 21:55               ` Trond Myklebust
2007-07-24 22:32                 ` Benjamin Herrenschmidt
2007-07-25  4:10                   ` Nick Piggin
2007-07-24 21:36         ` Benjamin Herrenschmidt
2007-07-24  3:57   ` Nick Piggin
2007-07-24  6:38     ` Satyam Sharma
2007-07-24  7:24       ` Nick Piggin
2007-07-24  8:29         ` Satyam Sharma
2007-07-24  8:39           ` Nick Piggin
2007-07-24  8:38         ` Trent Piepho
2007-07-24 19:39           ` Linus Torvalds
2007-07-24 20:37             ` Andi Kleen
2007-07-24 20:08               ` Linus Torvalds
2007-07-24 21:31                 ` Jeremy Fitzhardinge
2007-07-24 21:46                   ` Linus Torvalds
2007-07-26  1:07             ` Trent Piepho
2007-07-26  1:18               ` Linus Torvalds
2007-07-26  1:22                 ` Linus Torvalds
2007-07-24  9:44     ` David Howells
2007-07-24 10:02       ` Satyam Sharma
2007-07-23 16:06 ` [PATCH 7/8] i386: bitops: Kill needless usage of __asm__ __volatile__ Satyam Sharma
2007-07-23 16:18   ` Andi Kleen
2007-07-23 16:22     ` [PATCH 7/8] i386: bitops: Kill needless usage of __asm__ __volatile__ II Andi Kleen
2007-07-23 16:32     ` [PATCH 7/8] i386: bitops: Kill needless usage of __asm__ __volatile__ Satyam Sharma
2007-07-23 16:23   ` Jeremy Fitzhardinge
2007-07-23 16:43     ` Satyam Sharma
2007-07-23 17:39       ` Jeremy Fitzhardinge
2007-07-23 18:07         ` Satyam Sharma
2007-07-23 18:28           ` Jeremy Fitzhardinge
2007-07-23 20:29             ` Trent Piepho
2007-07-23 20:40               ` Jeremy Fitzhardinge
2007-07-23 21:06                 ` Trent Piepho
2007-07-23 21:30               ` Andi Kleen
2007-07-23 21:48                 ` Nicholas Miell
2007-07-23 16:06 ` [PATCH 8/8] i386: bitops: smp_mb__{before, after}_clear_bit() definitions Satyam Sharma
2007-07-24  3:53   ` Nick Piggin
2007-07-24  7:34     ` Satyam Sharma
2007-07-24  7:48       ` Jeremy Fitzhardinge
2007-07-24  8:31         ` Nick Piggin
2007-07-24  8:20       ` Nick Piggin
2007-07-24  9:21         ` Satyam Sharma
2007-07-24 10:25           ` Nick Piggin
2007-07-24 11:10             ` Satyam Sharma
2007-07-24 11:32               ` Nick Piggin
2007-07-24 11:45                 ` Satyam Sharma
2007-07-24 12:01                   ` Nick Piggin
2007-07-24 17:12                   ` Linus Torvalds
2007-07-24 19:01                     ` Satyam Sharma
2007-07-30 17:57 ` Denis Vlasenko [this message]
2007-07-31  1:07   ` [PATCH 0/8] i386: bitops: Cleanup, sanitize, optimize Satyam Sharma

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=1158166a0707301057w13db2d0ema88892a0091dda87@mail.gmail.com \
    --to=vda.linux@googlemail.com \
    --cc=ak@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=ssatyam@cse.iitk.ac.in \
    --cc=torvalds@linux-foundation.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

all inboxes | Powered by JetHome®