From: Segher Boessenkool <segher@kernel.crashing.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
"Pali Rohár" <pali@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: Regression: Linux v5.15+ does not boot on Freescale P2020
Date: Tue, 26 Jul 2022 08:44:05 -0500 [thread overview]
Message-ID: <20220726134405.GX25951@gate.crashing.org> (raw)
In-Reply-To: <CAK8P3a2iM+RoySWEC2e0==rwBSVrZoRa8c4ADyFNB24JZM=hkw@mail.gmail.com>
On Tue, Jul 26, 2022 at 11:02:59AM +0200, Arnd Bergmann wrote:
> On Tue, Jul 26, 2022 at 10:34 AM Pali Rohár <pali@kernel.org> wrote:
> > On Monday 25 July 2022 16:54:16 Segher Boessenkool wrote:
> > > The EH field in larx insns is new since ISA 2.05, and some ISA 1.x cpu
> > > implementations actually raise an illegal insn exception on EH=1. It
> > > appears P2020 is one of those.
> >
> > P2020 has e500 cores. e500 cores uses ISA 2.03. So this may be reason.
> > But in official Freescale/NXP documentation for e500 is documented that
> > lwarx supports also eh=1. Maybe it is not really supported.
> > https://www.nxp.com/files-static/32bit/doc/ref_manual/EREF_RM.pdf (page 562)
(page 6-186)
> > At least there is NOTE:
> > Some older processors may treat EH=1 as an illegal instruction.
And the architecture says
Programming Note
Warning: On some processors that comply with versions of the
architecture that precede Version 2.00, executing a Load And Reserve
instruction in which EH = 1 will cause the illegal instruction error
handler to be invoked.
> In commit d6ccb1f55ddf ("powerpc/85xx: Make sure lwarx hint isn't set on ppc32")
> this was clarified to affect (all?) e500v1/v2,
e500v1/v2 based chips will treat any reserved field being set in an
opcode as illegal.
while the architecture says
Reserved fields in instructions are ignored by the processor.
Whoops :-) We need fixes for processor implementation bugs all the
time of course, but this is a massive *design* bug. I'm surprised this
CPU still works as well as it does!
Even the venerable PEM (last updated in 1997) shows the EH field as
reserved, always treated as 0.
> this one apparently
> fixed it before,
> but Christophe's commit effectively reverted that change.
>
> I think only the simple_spinlock.h file actually uses EH=1
That's right afaics.
> and this is not
> included in non-SMP kernels, so presumably the only affected machines were
> the rare dual-core e500v2 ones (p2020, MPC8572, bsc9132), which would
> explain why nobody noticed for the past 9 months.
Also people using an SMP kernel on older cores should see the problem,
no? Or is that patched out? Or does this use case never happen :-)
Segher
WARNING: multiple messages have this Message-ID (diff)
From: Segher Boessenkool <segher@kernel.crashing.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "Pali Rohár" <pali@kernel.org>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: Regression: Linux v5.15+ does not boot on Freescale P2020
Date: Tue, 26 Jul 2022 08:44:05 -0500 [thread overview]
Message-ID: <20220726134405.GX25951@gate.crashing.org> (raw)
In-Reply-To: <CAK8P3a2iM+RoySWEC2e0==rwBSVrZoRa8c4ADyFNB24JZM=hkw@mail.gmail.com>
On Tue, Jul 26, 2022 at 11:02:59AM +0200, Arnd Bergmann wrote:
> On Tue, Jul 26, 2022 at 10:34 AM Pali Rohár <pali@kernel.org> wrote:
> > On Monday 25 July 2022 16:54:16 Segher Boessenkool wrote:
> > > The EH field in larx insns is new since ISA 2.05, and some ISA 1.x cpu
> > > implementations actually raise an illegal insn exception on EH=1. It
> > > appears P2020 is one of those.
> >
> > P2020 has e500 cores. e500 cores uses ISA 2.03. So this may be reason.
> > But in official Freescale/NXP documentation for e500 is documented that
> > lwarx supports also eh=1. Maybe it is not really supported.
> > https://www.nxp.com/files-static/32bit/doc/ref_manual/EREF_RM.pdf (page 562)
(page 6-186)
> > At least there is NOTE:
> > Some older processors may treat EH=1 as an illegal instruction.
And the architecture says
Programming Note
Warning: On some processors that comply with versions of the
architecture that precede Version 2.00, executing a Load And Reserve
instruction in which EH = 1 will cause the illegal instruction error
handler to be invoked.
> In commit d6ccb1f55ddf ("powerpc/85xx: Make sure lwarx hint isn't set on ppc32")
> this was clarified to affect (all?) e500v1/v2,
e500v1/v2 based chips will treat any reserved field being set in an
opcode as illegal.
while the architecture says
Reserved fields in instructions are ignored by the processor.
Whoops :-) We need fixes for processor implementation bugs all the
time of course, but this is a massive *design* bug. I'm surprised this
CPU still works as well as it does!
Even the venerable PEM (last updated in 1997) shows the EH field as
reserved, always treated as 0.
> this one apparently
> fixed it before,
> but Christophe's commit effectively reverted that change.
>
> I think only the simple_spinlock.h file actually uses EH=1
That's right afaics.
> and this is not
> included in non-SMP kernels, so presumably the only affected machines were
> the rare dual-core e500v2 ones (p2020, MPC8572, bsc9132), which would
> explain why nobody noticed for the past 9 months.
Also people using an SMP kernel on older cores should see the problem,
no? Or is that patched out? Or does this use case never happen :-)
Segher
next prev parent reply other threads:[~2022-07-26 13:54 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-22 9:09 Regression: Linux v5.15+ does not boot on Freescale P2020 Pali Rohár
2022-07-23 14:42 ` Christophe Leroy
2022-07-23 15:07 ` Pali Rohár
2022-07-23 15:07 ` Pali Rohár
2022-07-25 8:20 ` Michael Ellerman
2022-07-25 12:52 ` Pali Rohár
2022-07-25 12:52 ` Pali Rohár
2022-07-25 16:20 ` Christophe Leroy
2022-07-25 20:10 ` Pali Rohár
2022-07-25 20:10 ` Pali Rohár
2022-07-25 21:54 ` Segher Boessenkool
2022-07-25 21:54 ` Segher Boessenkool
2022-07-26 8:34 ` Pali Rohár
2022-07-26 8:34 ` Pali Rohár
2022-07-26 9:02 ` Arnd Bergmann
2022-07-26 9:02 ` Arnd Bergmann
2022-07-26 13:44 ` Segher Boessenkool [this message]
2022-07-26 13:44 ` Segher Boessenkool
2022-07-26 14:01 ` Pali Rohár
2022-07-26 14:01 ` Pali Rohár
2022-07-26 14:14 ` Segher Boessenkool
2022-07-26 14:14 ` Segher Boessenkool
2022-08-02 6:47 ` Christophe Leroy
2022-08-02 6:47 ` Christophe Leroy
2022-08-02 8:28 ` Arnd Bergmann
2022-08-02 8:28 ` Arnd Bergmann
2022-07-26 14:30 ` Christophe Leroy
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=20220726134405.GX25951@gate.crashing.org \
--to=segher@kernel.crashing.org \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=pali@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 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.