From: Ingo Molnar <mingo@elte.hu>
To: Nick Piggin <npiggin@suse.de>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Oleg Nesterov <oleg@redhat.com>,
Jens Axboe <jens.axboe@oracle.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Rusty Russell <rusty@rustcorp.com.au>,
Steven Rostedt <rostedt@goodmis.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
steiner@sgi.com
Subject: Re: smp.c && barriers (Was: [PATCH 1/4] generic-smp: remove single ipi fallback for smp_call_function_many())
Date: Wed, 25 Feb 2009 13:47:48 +0100 [thread overview]
Message-ID: <20090225124748.GC26273@elte.hu> (raw)
In-Reply-To: <20090225033230.GA4611@wotan.suse.de>
* Nick Piggin <npiggin@suse.de> wrote:
> On Fri, Feb 20, 2009 at 10:56:54AM -0800, Suresh B wrote:
> > On Fri, 2009-02-20 at 02:56 -0800, Ingo Molnar wrote:
> > > * Suresh Siddha <suresh.b.siddha@intel.com> wrote:
> > >
> > > > On Thu, 2009-02-19 at 04:20 -0800, Ingo Molnar wrote:
> > > > > Could you please refresh this patch to latest tip:master? The
> > > > > APIC drivers moved to arch/x86/kernel/apic/.
> > > >
> > > > Appended the refreshed patch. Thanks.
> > >
> > > thanks. Two details i noticed:
> > >
> > > Firstly:
> > >
> > > > +++ b/arch/x86/kernel/apic/x2apic_cluster.c
> > > > +++ b/arch/x86/kernel/apic/x2apic_phys.c
> > >
> > > how about x2apic_uv.c? It uses uv_write_global_mmr64() in its
> > > IPI sending method, which uses:
> > >
> > > static inline void uv_write_global_mmr64(int pnode, unsigned long offset,
> > > unsigned long val)
> > > {
> > > *uv_global_mmr64_address(pnode, offset) = val;
> > > }
> > >
> > > which uses ->mmr_base, which is mapped via:
> > >
> > > init_extra_mapping_uc(UV_LOCAL_MMR_BASE, UV_LOCAL_MMR_SIZE);
> > >
> > > so it should be fine because uncached - but at minimum we should
> > > put a comment into x2apic_uv.c that the generic IPI code relies
> > > on the lowlevel code serializing - i.e. relies on the UC PAT
> > > attribute.
> >
> > Oops. I forgot to mention that and copy Jack to confirm our
> > understanding. I can send a followup patch adding the comments for UV.
> > Jack, are you ok?
> >
> > >
> > > Secondly, you added smp_mb(), which will translate to an MFENCE.
> > >
> > > But in theory it should be enough to have a wmb() here. [Note,
> > > not an smp_wmb() that i suggested before.] That will translate
> > > to an SFENCE - which will serialize writes but still allows
> > > reads/prefetches to pass.
> > >
> > > So the question is, is an SFENCE there enough to serialize the
> > > WRMSR with previous memory-writes? It's not specified in the
> > > x2apic docs as far as i could see.
> >
> > No. sfence is not enough (wrmsr to x2apic regs was still passing ahead).
> > We have done a small experiment to demonstrate the issue and adding
> > mfence fixes the issue but not sfence. We need a serializing instruction
> > or mfence. I will try to get the SDM updated.
>
> Just if I may add something -- I would probably slightly
> prefer if you explicitly used an sfence or other serializing
> instruction rather than smp_mb(). Maybe call it wrmsr_fence()
> or something. Apart from being self documenting, and less
> confusing (wrmsr is not part of normal ordering), I assume you
> technically also need it on UP systems?
Hm, UP systems shouldnt worry too much about sending IPIs to
other CPUs, right? We optimize out same-CPU IPIs already so that
bit should not matter.
Agreed on the self-documentation aspect.
Ingo
next prev parent reply other threads:[~2009-02-25 12:48 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-16 16:38 [PATCH 0/4] generic smp helpers vs kmalloc Peter Zijlstra
2009-02-16 16:38 ` [PATCH 1/4] generic-smp: remove single ipi fallback for smp_call_function_many() Peter Zijlstra
2009-02-16 19:10 ` Oleg Nesterov
2009-02-16 19:41 ` Peter Zijlstra
2009-02-16 20:30 ` Oleg Nesterov
2009-02-16 20:55 ` Peter Zijlstra
2009-02-16 21:22 ` Oleg Nesterov
2009-02-17 12:25 ` Oleg Nesterov
2009-02-16 20:49 ` Q: smp.c && barriers (Was: [PATCH 1/4] generic-smp: remove single ipi fallback for smp_call_function_many()) Oleg Nesterov
2009-02-16 21:03 ` Peter Zijlstra
2009-02-16 21:32 ` Oleg Nesterov
2009-02-16 21:45 ` Peter Zijlstra
2009-02-16 22:02 ` Oleg Nesterov
2009-02-16 22:24 ` Peter Zijlstra
2009-02-16 23:19 ` Oleg Nesterov
2009-02-17 9:29 ` Peter Zijlstra
2009-02-17 10:11 ` Nick Piggin
2009-02-17 10:27 ` Peter Zijlstra
2009-02-17 10:39 ` Nick Piggin
2009-02-17 11:26 ` Nick Piggin
2009-02-17 11:48 ` Peter Zijlstra
2009-02-17 15:51 ` Paul E. McKenney
2009-02-18 2:15 ` Suresh Siddha
2009-02-18 2:40 ` Paul E. McKenney
2009-02-17 19:28 ` Q: " Oleg Nesterov
2009-02-17 21:32 ` Paul E. McKenney
2009-02-17 21:45 ` Oleg Nesterov
2009-02-17 22:39 ` Paul E. McKenney
2009-02-18 13:52 ` Nick Piggin
2009-02-18 16:09 ` Linus Torvalds
2009-02-18 16:21 ` Ingo Molnar
2009-02-18 16:21 ` Ingo Molnar
2009-02-18 16:21 ` Ingo Molnar
2009-02-18 16:33 ` Linus Torvalds
2009-02-18 16:58 ` Ingo Molnar
2009-02-18 17:05 ` Ingo Molnar
2009-02-18 17:10 ` Ingo Molnar
2009-02-18 17:17 ` Linus Torvalds
2009-02-18 17:23 ` Ingo Molnar
2009-02-18 17:14 ` Linus Torvalds
2009-02-18 17:47 ` Ingo Molnar
2009-02-18 18:33 ` Suresh Siddha
2009-02-18 16:37 ` Gleb Natapov
2009-02-19 0:12 ` Nick Piggin
2009-02-19 6:47 ` Benjamin Herrenschmidt
2009-02-19 13:11 ` Nick Piggin
2009-02-19 15:06 ` Ingo Molnar
2009-02-19 21:49 ` Benjamin Herrenschmidt
2009-02-18 2:21 ` Suresh Siddha
2009-02-18 13:59 ` Nick Piggin
2009-02-18 16:19 ` Linus Torvalds
2009-02-18 16:23 ` Ingo Molnar
2009-02-18 18:43 ` Suresh Siddha
2009-02-18 19:17 ` Ingo Molnar
2009-02-18 23:55 ` Suresh Siddha
2009-02-19 12:20 ` Ingo Molnar
2009-02-19 12:29 ` Nick Piggin
2009-02-19 12:45 ` Ingo Molnar
2009-02-19 22:00 ` Suresh Siddha
2009-02-20 10:56 ` Ingo Molnar
2009-02-20 18:56 ` Suresh Siddha
2009-02-20 19:40 ` Ingo Molnar
2009-02-20 23:28 ` Jack Steiner
2009-02-25 3:32 ` Nick Piggin
2009-02-25 12:47 ` Ingo Molnar [this message]
2009-02-25 18:25 ` Luck, Tony
2009-03-17 18:16 ` Suresh Siddha
2009-03-18 8:51 ` [tip:x86/x2apic] x86: add x2apic_wrmsr_fence() to x2apic flush tlb paths Suresh Siddha
2009-02-17 12:40 ` Q: smp.c && barriers (Was: [PATCH 1/4] generic-smp: remove single ipi fallback for smp_call_function_many()) Peter Zijlstra
2009-02-17 15:43 ` Paul E. McKenney
2009-02-17 15:40 ` [PATCH] generic-smp: remove kmalloc() Peter Zijlstra
2009-02-17 17:21 ` Oleg Nesterov
2009-02-17 17:40 ` Peter Zijlstra
2009-02-17 17:46 ` Peter Zijlstra
2009-02-17 18:30 ` Oleg Nesterov
2009-02-17 19:29 ` [PATCH -v4] generic-ipi: " Peter Zijlstra
2009-02-17 20:02 ` Oleg Nesterov
2009-02-17 20:11 ` Peter Zijlstra
2009-02-17 20:16 ` Peter Zijlstra
2009-02-17 20:44 ` Oleg Nesterov
2009-02-17 20:49 ` Peter Zijlstra
2009-02-17 22:09 ` Oleg Nesterov
2009-02-17 22:15 ` Peter Zijlstra
2009-02-17 21:30 ` Paul E. McKenney
2009-02-17 21:38 ` Peter Zijlstra
2009-02-16 16:38 ` [PATCH 2/4] generic-smp: remove kmalloc usage Peter Zijlstra
2009-02-17 0:40 ` Linus Torvalds
2009-02-17 8:24 ` Peter Zijlstra
2009-02-17 9:43 ` Ingo Molnar
2009-02-17 9:49 ` Peter Zijlstra
2009-02-17 10:56 ` Ingo Molnar
2009-02-18 4:50 ` Rusty Russell
2009-02-18 16:05 ` Ingo Molnar
2009-02-19 0:00 ` Jeremy Fitzhardinge
2009-02-19 12:21 ` Ingo Molnar
2009-02-19 4:31 ` Rusty Russell
2009-02-19 9:10 ` Peter Zijlstra
2009-02-19 11:04 ` Jens Axboe
2009-02-19 16:52 ` Linus Torvalds
2009-02-17 15:44 ` Linus Torvalds
2009-02-16 16:38 ` [PATCH 3/4] generic-smp: properly allocate the cpumasks Peter Zijlstra
2009-02-16 23:17 ` Rusty Russell
2009-02-16 16:38 ` [PATCH 4/4] generic-smp: clean up some of the csd->flags fiddling Peter Zijlstra
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=20090225124748.GC26273@elte.hu \
--to=mingo@elte.hu \
--cc=a.p.zijlstra@chello.nl \
--cc=jens.axboe@oracle.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@suse.de \
--cc=oleg@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=steiner@sgi.com \
--cc=suresh.b.siddha@intel.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.