From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ozlabs.org (ozlabs.org [IPv6:2401:3900:2:1::2]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3yCSGf426ZzDr4T for ; Thu, 12 Oct 2017 21:47:22 +1100 (AEDT) Message-ID: <1507805241.16703.53.camel@neuling.org> Subject: Re: [PATCH] powerpc/tm: Don't check for WARN in TM Bad Thing handling From: Michael Neuling To: Michael Ellerman , linuxppc-dev@ozlabs.org Cc: matt@ozlabs.org Date: Thu, 12 Oct 2017 21:47:21 +1100 In-Reply-To: <1507783525-28940-1-git-send-email-mpe@ellerman.id.au> References: <1507783525-28940-1-git-send-email-mpe@ellerman.id.au> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Thu, 2017-10-12 at 15:45 +1100, Michael Ellerman wrote: > Currently when we take a TM Bad Thing program check exception, we > search the bug table to see if the program check was generated by a > WARN/WARN_ON etc. >=20 > That makes no sense, the WARN macros use trap instructions, which > should never generate a TM Bad Thing exception. If they ever did that > would be a bug and we should oops. >=20 > We do have some hand-coded bugs in tm.S, using EMIT_BUG_ENTRY, but > those are all BUGs not WARNs, and they all use trap instructions > anyway. Almost certainly this check was incorrectly copied from the > REASON_TRAP handling in the same function. >=20 > Remove it. >=20 > Signed-off-by: Michael Ellerman LGTM Acked-By: Michael Neuling > --- > =C2=A0arch/powerpc/kernel/traps.c | 9 ++------- > =C2=A01 file changed, 2 insertions(+), 7 deletions(-) >=20 > diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c > index 9ae1924c7d1a..0e4099fef198 100644 > --- a/arch/powerpc/kernel/traps.c > +++ b/arch/powerpc/kernel/traps.c > @@ -1337,13 +1337,8 @@ void program_check_exception(struct pt_regs *regs) > =C2=A0 =C2=A0* -=C2=A0=C2=A0A treclaim is attempted when non transaction= al. > =C2=A0 =C2=A0* -=C2=A0=C2=A0A tend is illegally attempted. > =C2=A0 =C2=A0* -=C2=A0=C2=A0writing a TM SPR when transactional. > - =C2=A0*/ > - if (!user_mode(regs) && > - =C2=A0=C2=A0=C2=A0=C2=A0report_bug(regs->nip, regs) =3D=3D BUG_TRAP_TY= PE_WARN) { > - regs->nip +=3D 4; > - goto bail; > - } > - /* If usermode caused this, it's done something illegal and > + =C2=A0* > + =C2=A0* If usermode caused this, it's done something illegal and > =C2=A0 =C2=A0* gets a SIGILL slap on the wrist.=C2=A0=C2=A0We call it an= illegal > =C2=A0 =C2=A0* operand to distinguish from the instruction just being ba= d > =C2=A0 =C2=A0* (e.g. executing a 'tend' on a CPU without TM!); it's an