public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Paul Mackerras <paulus@samba.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Matthew Wilcox <matthew@wil.cx>,
	Trent Piepho <tpiepho@freescale.com>,
	Russell King <rmk+lkml@arm.linux.org.uk>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	David Miller <davem@davemloft.net>,
	linux-arch@vger.kernel.org, scottwood@freescale.com,
	linuxppc-dev@ozlabs.org, alan@lxorguk.ukuu.org.uk,
	linux-kernel@vger.kernel.org
Subject: Re: MMIO and gcc re-ordering issue
Date: Thu, 12 Jun 2008 23:08:35 +1000	[thread overview]
Message-ID: <200806122308.35556.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <18513.4925.711881.794221@cargo.ozlabs.ibm.com>

On Thursday 12 June 2008 22:14, Paul Mackerras wrote:
> Nick Piggin writes:
> >                 /* turn off LED */
> >                 val64 = readq(&bar0->adapter_control);
> >                 val64 = val64 &(~ADAPTER_LED_ON);
> >                 writeq(val64, &bar0->adapter_control);
> >                 s2io_link(nic, LINK_DOWN);
> >         }
> >         clear_bit(__S2IO_STATE_LINK_TASK, &(nic->state));
> >
> > Now I can't say definitively that this is going to be wrong on
> > powerpc, because I don't know the code well enough. But I'd be
> > 90% sure that the unlock is not supposed to be visible to
> > other CPUs before the writeqs are queued to the card. On x86 it
> > wouldn't be.
>
> Interestingly, there is also a store to cacheable memory
> (nic->device_enabled_once), but no smp_wmb or equivalent before the
> clear_bit.  So there are other potential problems here besides the I/O
> related ones.

Yeah there sure is. That sucks too, but we go one step at a time ;)
I think proposing a strong ordering between set_bit/clear_bit would
actually be quite noticable slowdown in core kernel code at this
point.

Which reminds me, I have been meaning to do another pass of test and
set bit / clear bit conversions to the _lock primitives...


> Anyway, I have done some tests on a dual G5 here with putting a sync
> on both sides of the store in writel etc. (i.e. making readl/writel
> strongly ordered w.r.t. everything else), and as you predicted, there
> wasn't a noticeable performance degradation, at least not on the
> couple of things I tried.  So I am now inclined to accept your
> suggestion that we should do that.  I should probably do some similar
> checks on POWER6 and a few other machines first, though.

Oh good, thanks for looking into it. I guess it might be a little more
noticable on bigger POWER systems. And I think we might even need to do
a PCI read after every writel on sn2 systems in order to get the
semantics I want.

I can't say it won't be noticable. But if we consider the number of
drivers (maybe one or two dozen well maintained ones), and number of
sites in each driver (maybe one or two submission and completion
fastpaths which should have a minimum of IO operations in each one)
that will have to be converted in order to get performance as good or
better than it is currently with relaxed accessors.... and weigh that
against all the places in those and every other crappy obscure
driver that we *won't* have to audit, I really think we end up with
a net win even with some short term pain.

  reply	other threads:[~2008-06-12 13:08 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4833524C.3040207@freescale.com>
     [not found] ` <20080520.153947.84346222.davem@davemloft.net>
     [not found]   ` <4833542E.3040608@freescale.com>
     [not found]     ` <20080520.155326.195407196.davem@davemloft.net>
     [not found]       ` <1211516683.8297.271.camel@pasglop>
     [not found]         ` <Pine.LNX.4.64.0805221553400.8205@t2.domain.actdsltmp>
2008-05-27  1:33           ` MMIO and gcc re-ordering issue Benjamin Herrenschmidt
2008-05-27  1:40             ` David Miller
2008-05-27  2:15               ` Benjamin Herrenschmidt
2008-05-27  2:28                 ` David Miller
2008-05-27  3:39                   ` Benjamin Herrenschmidt
2008-05-27 15:35                     ` Linus Torvalds
2008-05-27 15:35                       ` Linus Torvalds
2008-05-27 16:47                       ` Linus Torvalds
2008-05-27 17:31                         ` Linus Torvalds
2008-06-02 10:36                           ` Ingo Molnar
2008-06-02 21:53                             ` Benjamin Herrenschmidt
2008-05-27 21:12                         ` Benjamin Herrenschmidt
2008-05-27 18:23                       ` Trent Piepho
2008-05-27 18:33                         ` Scott Wood
2008-05-27 21:10                       ` Benjamin Herrenschmidt
2008-05-27 21:30                         ` Linus Torvalds
2008-05-27 21:38                           ` Alan Cox
2008-05-27 21:53                             ` Matthew Wilcox
2008-05-27 21:46                               ` Alan Cox
2008-05-27 22:02                               ` Linus Torvalds
2008-05-27 21:59                             ` Linus Torvalds
2008-05-27 21:38                           ` Benjamin Herrenschmidt
2008-05-27 21:42                             ` Matthew Wilcox
2008-05-27 22:17                               ` Benjamin Herrenschmidt
2008-05-28  8:36                                 ` Haavard Skinnemoen
2008-05-29 11:05                                   ` Pantelis Antoniou
2008-05-30  1:13                                   ` Benjamin Herrenschmidt
2008-05-30  6:07                                     ` Haavard Skinnemoen
2008-05-30  7:24                                       ` Benjamin Herrenschmidt
2008-05-30  8:27                                         ` Haavard Skinnemoen
2008-05-30  9:22                                           ` Geert Uytterhoeven
2008-06-02  8:11                                             ` Haavard Skinnemoen
2008-06-02 15:48                                               ` Scott Wood
2008-06-03  7:46                                                 ` Haavard Skinnemoen
2008-06-04 15:31                                               ` Linus Torvalds
2008-05-27 21:55                             ` Linus Torvalds
2008-05-27 22:19                               ` Benjamin Herrenschmidt
2008-05-29  7:10                                 ` Arnd Bergmann
2008-05-29  7:10                                   ` Arnd Bergmann
2008-05-29 10:46                                   ` Alan Cox
2008-06-02  7:24                               ` Russell King
2008-06-02  7:24                                 ` Russell King
2008-06-03  4:16                                 ` Nick Piggin
2008-06-03  4:16                                   ` Nick Piggin
2008-06-03  4:32                                   ` Benjamin Herrenschmidt
2008-06-03  6:11                                     ` Nick Piggin
2008-06-03  6:48                                       ` Benjamin Herrenschmidt
2008-06-03  6:53                                       ` Paul Mackerras
2008-06-03  7:18                                         ` Nick Piggin
2008-06-03  7:18                                           ` Nick Piggin
2008-06-03 14:47                                   ` Linus Torvalds
2008-06-03 18:47                                     ` Trent Piepho
2008-06-03 18:55                                       ` Matthew Wilcox
2008-06-03 19:57                                         ` Trent Piepho
2008-06-03 21:35                                           ` Matthew Wilcox
2008-06-03 21:58                                             ` Trent Piepho
2008-06-04  2:00                                               ` Nick Piggin
2008-06-03 19:07                                       ` Linus Torvalds
2008-06-04  2:05                                         ` Nick Piggin
2008-06-04  2:46                                           ` Linus Torvalds
2008-06-04 11:47                                             ` Alan Cox
2008-06-04 11:47                                               ` Alan Cox
2008-06-10  6:56                                         ` Nick Piggin
2008-06-10 17:41                                           ` Jesse Barnes
2008-06-10 18:10                                             ` James Bottomley
2008-06-10 19:05                                               ` Roland Dreier
2008-06-10 19:19                                                 ` Jesse Barnes
2008-06-11  3:29                                                   ` Nick Piggin
2008-06-11  3:29                                                     ` Nick Piggin
2008-06-11  3:40                                                     ` Benjamin Herrenschmidt
2008-06-11  4:06                                                       ` Nick Piggin
2008-06-11 16:07                                                     ` Jesse Barnes
2008-06-11 16:07                                                       ` Jesse Barnes
2008-06-12 11:27                                                       ` Nick Piggin
2008-06-11  4:18                                           ` Paul Mackerras
2008-06-11  5:00                                             ` Nick Piggin
2008-06-11  5:13                                               ` Paul Mackerras
2008-06-11  5:35                                                 ` Nick Piggin
2008-06-11  6:02                                                   ` Nick Piggin
2008-06-12 12:14                                                   ` Paul Mackerras
2008-06-12 13:08                                                     ` Nick Piggin [this message]
2008-06-11 14:46                                               ` Linus Torvalds
2008-06-11  5:20                                           ` Paul Mackerras
2008-06-11  5:20                                             ` Paul Mackerras
2008-06-04  2:19                                     ` Nick Piggin
2008-06-03 19:43                                   ` Trent Piepho
2008-06-03 21:33                                     ` Matthew Wilcox
2008-06-03 21:44                                       ` Trent Piepho
2008-06-04  2:25                                         ` Nick Piggin
2008-06-04  2:25                                           ` Nick Piggin
2008-06-04  6:39                                           ` Trent Piepho
2008-06-03 22:26                                     ` Benjamin Herrenschmidt
2008-05-27  3:42                   ` Arjan van de Ven
2008-05-27  4:08                     ` Roland Dreier
2008-05-27  4:20                       ` Arjan van de Ven
2008-05-27  7:08                     ` Benjamin Herrenschmidt
2008-05-27  7:08                       ` Benjamin Herrenschmidt
2008-05-27 15:50                       ` Roland Dreier
2008-05-27 16:37                         ` James Bottomley
2008-05-27 17:38                           ` Roland Dreier
2008-05-27 17:53                             ` James Bottomley
2008-05-27 18:07                               ` Roland Dreier
2008-05-27 18:17                                 ` Roland Dreier
2008-05-27 21:23                                 ` Chris Friesen
2008-05-27 21:23                                   ` Chris Friesen
2008-05-27 21:29                                   ` Roland Dreier
2008-05-27 23:04                                   ` Paul Mackerras
2008-05-27 21:11                         ` Benjamin Herrenschmidt
2008-05-27 21:33                           ` Roland Dreier
2008-05-27 22:13                             ` Benjamin Herrenschmidt
2008-05-27 22:39                               ` Roland Dreier
2008-05-29 14:47                             ` Jes Sorensen
2008-05-29 15:01                               ` James Bottomley
2008-05-30  9:36                                 ` Jes Sorensen
2008-05-30 17:21                                   ` Jesse Barnes
2008-05-30 17:21                                     ` Jesse Barnes
2008-05-31  7:57                                     ` Jeremy Higdon
2008-05-29 21:40                               ` Benjamin Herrenschmidt
2008-05-29 21:48                                 ` Trent Piepho
2008-05-29 22:05                                   ` Benjamin Herrenschmidt
2008-05-30  1:53                                     ` Trent Piepho
2008-05-29 21:53                                 ` Jesse Barnes
2008-05-29 21:53                                   ` Jesse Barnes
2008-05-30  9:39                                   ` Jes Sorensen
2008-05-30  9:48                                 ` Jes Sorensen
2008-05-31  8:14                                   ` Pavel Machek
2008-06-02  9:48                                     ` Jes Sorensen
2008-05-29 22:06                               ` Roland Dreier
2008-05-29 22:25                                 ` Trent Piepho
2008-05-29 22:25                                   ` Trent Piepho
2008-05-30  3:56                                   ` Paul Mackerras
2008-05-31  7:52                               ` Jeremy Higdon
2008-06-02  9:56                                 ` Jes Sorensen
2008-06-02 21:02                                   ` Jeremy Higdon
2008-06-03  4:33                                   ` Nick Piggin
2008-06-03  8:15                                     ` Jeremy Higdon
2008-06-03  8:15                                       ` Jeremy Higdon
2008-06-03  8:19                                       ` Nick Piggin
2008-06-03  8:45                                         ` Jeremy Higdon
2008-06-03 16:52                                     ` Jesse Barnes
2008-06-03 16:52                                       ` Jesse Barnes
2008-06-05  8:40                                       ` Jes Sorensen
2008-06-05  8:43                                         ` Benjamin Herrenschmidt
2008-06-12 15:07                                           ` Matthew Wilcox
2008-06-13  0:07                                             ` Benjamin Herrenschmidt
2008-05-31  8:04                         ` Pavel Machek
2008-05-27  8:24                   ` Alan Cox
2008-05-27 15:28             ` Jonathan Corbet

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=200806122308.35556.nickpiggin@yahoo.com.au \
    --to=nickpiggin@yahoo.com.au \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=matthew@wil.cx \
    --cc=paulus@samba.org \
    --cc=rmk+lkml@arm.linux.org.uk \
    --cc=scottwood@freescale.com \
    --cc=torvalds@linux-foundation.org \
    --cc=tpiepho@freescale.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