From: Segher Boessenkool <segher@kernel.crashing.org>
To: Michael Neuling <mikey@neuling.org>
Cc: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org,
Gustavo Romero <gromero@linux.ibm.com>
Subject: Re: [PATCH] KVM: PPC: Book3S HV: Treat unrecognized TM instructions as illegal
Date: Sun, 16 Feb 2020 23:57:12 -0600 [thread overview]
Message-ID: <20200217055712.GS22482@gate.crashing.org> (raw)
In-Reply-To: <29b136e15c2f04f783b54ec98552d1a6009234db.camel@neuling.org>
On Mon, Feb 17, 2020 at 12:07:31PM +1100, Michael Neuling wrote:
> On Thu, 2020-02-13 at 10:15 -0500, Gustavo Romero wrote:
> > On P9 DD2.2 due to a CPU defect some TM instructions need to be emulated by
> > KVM. This is handled at first by the hardware raising a softpatch interrupt
> > when certain TM instructions that need KVM assistance are executed in the
> > guest. Some TM instructions, although not defined in the Power ISA, might
> > raise a softpatch interrupt. For instance, 'tresume.' instruction as
> > defined in the ISA must have bit 31 set (1), but an instruction that
> > matches 'tresume.' OP and XO opcodes but has bit 31 not set (0), like
> > 0x7cfe9ddc, also raises a softpatch interrupt, for example, if a code
> > like the following is executed in the guest it will raise a softpatch
> > interrupt just like a 'tresume.' when the TM facility is enabled:
> >
> > int main() { asm("tabort. 0; .long 0x7cfe9ddc;"); }
> > and then treats the executed instruction as 'nop' whilst it should actually
> > be treated as an illegal instruction since it's not defined by the ISA.
>
> The ISA has this:
>
> 1.3.3 Reserved Fields, Reserved Values, and Reserved SPRs
>
> Reserved fields in instructions are ignored by the pro-
> cessor.
>
> Hence the hardware will ignore reserved bits. For example executing your little
> program on P8 just exits normally with 0x7cfe9ddc being executed as a NOP.
>
> Hence, we should NOP this, not generate an illegal.
It is not a reserved bit.
The IMC entry for it matches op1=011111 op2=1////01110 presumably, which
catches all TM instructions and nothing else (bits 0..5 and bits 21..30).
That does not look at bit 31, the softpatch handler has to deal with this.
Some TM insns have bit 31 as 1 and some have it as /. All instructions
with a "." in the mnemonic have bit 31 is 1, all other have it reserved.
The tables in appendices D, E, F show tend. and tsr. as having it
reserved, which contradicts the individual instruction description (and
does not make much sense). (Only tcheck has /, everything else has 1;
everything else has a mnemonic with a dot, and does write CR0 always).
Segher
next prev parent reply other threads:[~2020-02-17 5:59 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-13 15:15 [PATCH] KVM: PPC: Book3S HV: Treat unrecognized TM instructions as illegal Gustavo Romero
2020-02-13 23:31 ` Segher Boessenkool
2020-02-13 23:49 ` Gustavo Romero
2020-02-17 1:07 ` Michael Neuling
2020-02-17 5:57 ` Segher Boessenkool [this message]
2020-02-17 6:23 ` Michael Neuling
2020-02-17 7:37 ` Segher Boessenkool
2020-02-18 21:23 ` Gustavo Romero
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=20200217055712.GS22482@gate.crashing.org \
--to=segher@kernel.crashing.org \
--cc=gromero@linux.ibm.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mikey@neuling.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).