Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp4173473imm; Mon, 11 Jun 2018 08:07:12 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLu9EBzdl4QRbejxu3XveIjbzDolAp2+6m2yaUY31uM2VYxZhQUSG7rJLfqdYrwTZUwpS/f X-Received: by 2002:a62:249b:: with SMTP id k27-v6mr18143275pfk.143.1528729632777; Mon, 11 Jun 2018 08:07:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528729632; cv=none; d=google.com; s=arc-20160816; b=ed7iRYoFDPk4Lo75BWDppuv7BYbfSnLG1kAwshDkFM6MaEIUqw3v/KXFuzxiineyuw 3CUStv2t+HgpuIfmMFEUVjs8nQob91kHu+5sAVbuDqb/uV3pafTonWg+L/EfazR56lLJ JAqONif+KLv6bK/13+32IEIUCoHBeNygHwxfX4218RipEmhE9/xXM2BBL5JrEezeXMzl tLIfBh7BznXD5zEMsByJfLfDYat5La4tUQygZ33E8YrtQAVmbPVWDfB3qSTmvW/svW2E AeWAdBuXCuUhFjdxtyCZwKTeiivpZ9R3oQqQe9aNXyeZDV6GsWEVU5+z7apr4H1cdsme A5xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :arc-authentication-results; bh=812CIGaY6BW9myvAdLZ8g2UatXAPqxhoNhfBL/s8vdI=; b=HDjej4BpvbAwH4QfHqOAaSjEsyDIz516mscVSdDN+8budLl2bXOQagqJGoX/MO6wjn uqls/ZaUFi1uNEBee54pCMzHmVwrCl6AH0PzcbNN93lYtyW7bEXGLwGAbA+vtcYD3SzF x8ZGkftMpjctHxl44Shfqa9APXgE+uvrNY4zcHYAhnaMovRy7CB4U9L7p+2vTlpI1qeA aOBoqdX8NZ1LTP0CBJ+uPsv1zVfyzd66FEPhAr//OCOFP6evAIgMS031Q2GZ4LfE0pOd YG3A08TFsHoDFpaOCynVb9fxBs8/x+BQ9RQRiJlcQ8NMlAf5RZIp9IQ5OG69lfu0/UDt aaAg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j189-v6si18473412pfg.351.2018.06.11.08.06.57; Mon, 11 Jun 2018 08:07:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754110AbeFKPGU (ORCPT + 99 others); Mon, 11 Jun 2018 11:06:20 -0400 Received: from mga17.intel.com ([192.55.52.151]:34531 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752452AbeFKPGS (ORCPT ); Mon, 11 Jun 2018 11:06:18 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jun 2018 08:06:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,502,1520924400"; d="scan'208";a="48445016" Received: from unknown (HELO [143.183.136.147]) ([143.183.136.147]) by orsmga008.jf.intel.com with ESMTP; 11 Jun 2018 08:06:02 -0700 Message-ID: <1528729376.4526.0.camel@2b52.sc.intel.com> Subject: Re: [PATCH 02/10] x86/cet: Introduce WRUSS instruction From: Yu-cheng Yu To: Peter Zijlstra Cc: Andy Lutomirski , LKML , linux-doc@vger.kernel.org, Linux-MM , linux-arch , X86 ML , "H. Peter Anvin" , Thomas Gleixner , Ingo Molnar , "H. J. Lu" , "Shanbhogue, Vedvyas" , "Ravi V. Shankar" , Dave Hansen , Jonathan Corbet , Oleg Nesterov , Arnd Bergmann , mike.kravetz@oracle.com Date: Mon, 11 Jun 2018 08:02:56 -0700 In-Reply-To: <20180611081704.GI12180@hirez.programming.kicks-ass.net> References: <20180607143807.3611-1-yu-cheng.yu@intel.com> <20180607143807.3611-3-yu-cheng.yu@intel.com> <20180611081704.GI12180@hirez.programming.kicks-ass.net> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2018-06-11 at 10:17 +0200, Peter Zijlstra wrote: > On Thu, Jun 07, 2018 at 09:40:02AM -0700, Andy Lutomirski wrote: > > On Thu, Jun 7, 2018 at 7:41 AM Yu-cheng Yu wrote: > > > Peterz, isn't there some fancy better way we're supposed to handle the > > error return these days? > > > > + asm volatile("1:.byte 0x66, 0x0f, 0x38, 0xf5, 0x37\n" > > > + "xor %[err],%[err]\n" > > > + "2:\n" > > > + ".section .fixup,\"ax\"\n" > > > + "3: mov $-1,%[err]; jmp 2b\n" > > > + ".previous\n" > > > + _ASM_EXTABLE(1b, 3b) > > > + : [err] "=a" (err) > > > + : [val] "S" (val), [addr] "D" (addr) > > > + : "memory"); > > So the alternative is something like: > > __visible bool ex_handler_wuss(const struct exception_table_entry *fixup, > struct pt_regs *regs, int trapnr) > { > regs->ip = ex_fixup_addr(fixup); > regs->ax = -1L; > > return true; > } > > > int err = 0; > > asm volatile("1: INSN_WUSS\n" > "2:\n" > _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_wuss) > : "=a" (err) > : "S" (val), "D" (addr)); > > But I'm not at all sure that's actually better. Thanks! I will fix it. Yu-cheng