Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1588130imu; Sun, 18 Nov 2018 05:04:19 -0800 (PST) X-Google-Smtp-Source: AJdET5fsf5obLJue4pqOzfApYkYUZoxYuh4euqqP08dEvHkD32EQ+rJkiENxqwH5mGbXoV1XOrhd X-Received: by 2002:a63:2c0e:: with SMTP id s14mr16885421pgs.132.1542546259745; Sun, 18 Nov 2018 05:04:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542546259; cv=none; d=google.com; s=arc-20160816; b=T3MzCcSBtdrojOW/iXpioA3cXWfHYAhSMECoQrlzp4ExWT3MOid8PSbcbeBmY7ljK1 4ZiUILLn9ABYVjuTHm9ZnfV7pDixlt0FYjeZRhKjMMDwMsMXAfZLVS7TM9hwS9JWn8Xn 1t+PF5B0BqHUJBMepvBiAFyKokACdnPsNpu1K0NpXRJBxuMiDbsdFGQrC8UQo1COBgGJ l1z+qQnIWPmI8fkqlcoqqfvBosc2KnIvdVgaRZ8FIME5DnVcokdNFBu46fRU5bziuns/ wnkOepx/5FIBlaTI3wSE/0bfMPKeT3K+c+29vWjPYgk1HqaO2NC7K1o6lAWwiqVGkSV9 u41w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:organization:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=xSotujQnUOGTGeaJKs7diDdd5yKIwXQM8t+K9BcuvHk=; b=pwFhA5i3Z4g/ykFzgM2vqqEghENPhjZGHidFL2IDT28uONr3I8cv8GEmDZyoGWhrkd nOtMOTRXfqKNWnSB6XRmLiylu5xF8MZKNs6t5M9MVdr6UgufBryqtt3PMrxKFBmnFhWs eWsA3rd/YzE0t5v6aMbsN11aF/2ugmLViuLe9qCVOy4uuj4mS5Kb83IWhqrTIvmHcw2T gkIDqNd9WBLg/jsJR+CBbLNC322ZWrQOJniiRVCjz2VJcIG8MCWRS5Ll05ZmCq5T5VbZ cy/usZF0OWjOvgWIawnrf+UlyhMqMTPFBBwx6UccyUo0vq/FbbDokcFPPA97VnJ84neQ YDxQ== 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 s3-v6si9599697plp.139.2018.11.18.05.04.04; Sun, 18 Nov 2018 05:04:19 -0800 (PST) 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 S1727224AbeKRXWa (ORCPT + 99 others); Sun, 18 Nov 2018 18:22:30 -0500 Received: from mga04.intel.com ([192.55.52.120]:47204 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726269AbeKRXWa (ORCPT ); Sun, 18 Nov 2018 18:22:30 -0500 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Nov 2018 05:02:14 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,248,1539673200"; d="scan'208";a="107260292" Received: from tmuluk-mobl4.ger.corp.intel.com (HELO localhost) ([10.249.254.142]) by fmsmga004.fm.intel.com with ESMTP; 18 Nov 2018 05:02:05 -0800 Date: Sun, 18 Nov 2018 15:02:03 +0200 From: Jarkko Sakkinen To: Andy Lutomirski Cc: Dave Hansen , "Christopherson, Sean J" , Jethro Beekman , Florian Weimer , Linux API , Jann Horn , Linus Torvalds , X86 ML , linux-arch , LKML , Peter Zijlstra , Rich Felker , nhorman@redhat.com, npmccallum@redhat.com, "Ayoun, Serge" , shay.katz-zamir@intel.com, linux-sgx@vger.kernel.org, Andy Shevchenko , Thomas Gleixner , Ingo Molnar , Borislav Petkov Subject: Re: RFC: userspace exception fixups Message-ID: <20181118130203.GA18934@linux.intel.com> References: <20181118071548.GA4795@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181118071548.GA4795@linux.intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Nov 18, 2018 at 09:15:48AM +0200, Jarkko Sakkinen wrote: > On Thu, Nov 01, 2018 at 10:53:40AM -0700, Andy Lutomirski wrote: > > Hi all- > > > > The people working on SGX enablement are grappling with a somewhat > > annoying issue: the x86 EENTER instruction is used from user code and > > can, as part of its normal-ish operation, raise an exception. It is > > also highly likely to be used from a library, and signal handling in > > libraries is unpleasant at best. > > > > There's been some discussion of adding a vDSO entry point to wrap > > EENTER and do something sensible with the exceptions, but I'm > > wondering if a more general mechanism would be helpful. > > I haven't really followed all of this discussion because I've been busy > working on the patch set but for me all of these approaches look awfully > complicated. > > I'll throw my own suggestion and apologize if this has been already > suggested and discarded: return-to-AEP. > > My idea is to do just a small extension to SGX AEX handling. At the > moment hardware will RAX, RBX and RCX with ERESUME parameters. We can > fill extend this by filling other three spare registers with exception > information. > > AEP handler can then do whatever it wants to do with this information > or just do ERESUME. A correction here. In practice this will add a requirement to have a bit more complicated AEP code (check the regs for exceptions) than before and not just bytes for ENCLU. e.g. AEP handler should be along the lines 1. #PF (or #UD or) happens. Kernel fills the registers when it cannot handle the exception and returns back to user space i.e. to the AEP handler. 2. Check the registers containing exception information. If they have been filled, take whatever actions user space wants to take. 3. Otherwise, just ERESUME. From my point of view this is making the AEP parameter useful. Its standard use is just weird (always point to a place just containing ENCLU bytes, why the heck it even exists). /Jarkko