From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751259AbdBWOMi (ORCPT ); Thu, 23 Feb 2017 09:12:38 -0500 Received: from mx1.redhat.com ([209.132.183.28]:27005 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751202AbdBWOMh (ORCPT ); Thu, 23 Feb 2017 09:12:37 -0500 Date: Thu, 23 Feb 2017 08:12:32 -0600 From: Josh Poimboeuf To: Peter Zijlstra Cc: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, arjan@linux.intel.com, bp@alien8.de, richard.weinberger@gmail.com Subject: Re: [PATCH] x86: Implement __WARN using UD0 Message-ID: <20170223141232.nr6fahyhcljravbn@treble> References: <20170223132813.GB6515@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20170223132813.GB6515@twins.programming.kicks-ass.net> User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 23 Feb 2017 14:12:35 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 23, 2017 at 02:28:13PM +0100, Peter Zijlstra wrote: > +/* > + * Only UD2 is defined in the Intel SDM and AMD64 docs, > + * but the interweb provided UD0 and UD1: > + * > + * https://groups.google.com/forum/#!topic/alt.os.assembly/_rS4L0fnqGE FYI, the latest Intel SDM does have UD0 and UD1. I guess AMD64 and hypervisors don't need to know about it, since if they don't, it will still trigger the same invalid opcode exception anyway? Any idea what the functional difference is between UD0 and UD2? > + * Since some emulators terminate on UD2, we cannot use it for WARN. That's too bad, which emulators are those? > + * Since various instruction decoders disagree on the length of UD1, > + * we cannot use it either. So use UD0 for WARN. It shows up as "(bad)" in objtool and gdb, though it still gets the length right: 8b9: 0f ff (bad) It would be nice if the tools knew about it... -- Josh