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
next prev parent 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).