linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Andrea Parri <andrea.parri@amarulasolutions.com>
To: Michael Ellerman <mpe@ellerman.id.au>
Cc: linux-arch@vger.kernel.org, Petr Mladek <pmladek@suse.com>,
	sergey.senozhatsky@gmail.com, linux-kernel@vger.kernel.org,
	Steven Rostedt <rostedt@goodmis.org>,
	linuxppc-dev@ozlabs.org, tj@kernel.org,
	akpm@linux-foundation.org, dyoung@redhat.com
Subject: Re: [PATCH v3 1/7] dump_stack: Support adding to the dump stack arch description
Date: Wed, 20 Feb 2019 14:44:33 +0100	[thread overview]
Message-ID: <20190220134433.GA4932@andrea> (raw)
In-Reply-To: <87va1e7pw2.fsf@concordia.ellerman.id.au>

> >> > > +		 * Order the stores above in vsnprintf() vs the store of the
> >> > > +		 * space below which joins the two strings. Note this doesn't
> >> > > +		 * make the code truly race free because there is no barrier on
> >> > > +		 * the read side. ie. Another CPU might load the uninitialised
> >> > > +		 * tail of the buffer first and then the space below (rather
> >> > > +		 * than the NULL that was there previously), and so print the
> >> > > +		 * uninitialised tail. But the whole string lives in BSS so in
> >> > > +		 * practice it should just see NULLs.
> >> > 
> >> > The comment doesn't say _why_ we need to order these stores: IOW, what
> >> > will or can go wrong without this order?  This isn't clear to me.
> >> >
> >> > Another good practice when adding smp_*-constructs (as discussed, e.g.,
> >> > at KS'18) is to indicate the matching construct/synch. mechanism.
> >> 
> >> Yes, one barrier without a counter-part is suspicious.
> >
> > As is this silence...,
> >
> > Michael, what happened to this patch? did you submit a new version?
> 
> No, I'm just busy, it's the merge window next week :)

Got it.


> 
> I thought the comment was pretty clear, if the stores are observed out
> of order we might print the uninitialised tail.
> 
> And the barrier on the read side would need to be in printk somewhere,
> which is obviously unpleasant.

Indeed.


> 
> >> If the parallel access is really needed then we could define the
> >> current length as atomic_t and use:
> >> 
> >> 	+ atomic_cmpxchg() to reserve the space for the string
> >> 	+ %*s to limit the printed length
> >> 
> >> In the worst case, we would print an incomplete string.
> >> See below for a sample code.
> >
> > Seems worth exploring, IMO; but I'd like to first hear _clear about
> > the _intended semantics (before digging into alternatives)...
> 
> It is not my intention to support concurrent updates of the string. The
> idea is you setup the string early in boot.

Understood, thanks for the clarification.


> 
> The concern with a concurrent reader is simply that the string is dumped
> in the panic path, and you never really know when you're going to panic.
> Even if you only write to the string before doing SMP bringup you might
> still have another CPU go rogue and panic before then.
> 
> But I probably should have just not added the barrier, it's over
> paranoid and will almost certainly never matter in practice.

Oh, well, I can only echo you: if you don't care about the stores being
_observed_ out of order, you could simply remove the barrier; if you do
care, then you need "more paranoid" on the readers side.  ;-)

  Andrea


> 
> cheers

  reply	other threads:[~2019-02-20 13:46 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-07 12:46 [PATCH v3 1/7] dump_stack: Support adding to the dump stack arch description Michael Ellerman
2019-02-07 12:46 ` [PATCH v3 2/7] powerpc: Add PVR & CPU name to " Michael Ellerman
2019-02-07 12:46 ` [PATCH v3 3/7] powerpc/64: Add logical PVR to the " Michael Ellerman
2019-02-07 12:46 ` [PATCH v3 4/7] powerpc: Add device-tree model to " Michael Ellerman
2019-02-07 12:46 ` [PATCH v3 5/7] powerpc: Add ppc_md.name " Michael Ellerman
2019-02-07 12:46 ` [PATCH v3 6/7] powerpc/powernv: Add opal details " Michael Ellerman
2019-02-07 12:46 ` [PATCH v3 7/7] powerpc/pseries: Add firmware " Michael Ellerman
2019-02-08  2:01 ` [PATCH v3 1/7] dump_stack: Support adding to the " Sergey Senozhatsky
2019-02-08 18:55 ` Steven Rostedt
2019-02-11  7:55   ` Sergey Senozhatsky
2019-02-11 12:50 ` Andrea Parri
2019-02-11 14:38   ` Petr Mladek
2019-02-19 23:39     ` Andrea Parri
2019-02-20  9:47       ` Michael Ellerman
2019-02-20 13:44         ` Andrea Parri [this message]
2019-02-21  8:38           ` Petr Mladek

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=20190220134433.GA4932@andrea \
    --to=andrea.parri@amarulasolutions.com \
    --cc=akpm@linux-foundation.org \
    --cc=dyoung@redhat.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=tj@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;
as well as URLs for NNTP newsgroup(s).