All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Kai Huang <kai.huang@intel.com>
Cc: "linux-sgx@vger.kernel.org" <linux-sgx@vger.kernel.org>,
	Reinette Chatre <reinette.chatre@intel.com>,
	"jarkko@kernel.org" <jarkko@kernel.org>,
	Vijay Dhanraj <vijay.dhanraj@intel.com>,
	"haitao.huang@linux.intel.com" <haitao.huang@linux.intel.com>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>
Subject: Re: [RFC PATCH v4 2/4] x86/sgx: Implement support for MADV_WILLNEED
Date: Wed, 28 Jun 2023 07:57:27 -0700	[thread overview]
Message-ID: <ZJxKV1/2M+OeIXAN@google.com> (raw)
In-Reply-To: <1a980d3ce2caec1cf44bf97d52fa08fbe72e741f.camel@intel.com>

On Wed, Jun 28, 2023, Kai Huang wrote:
> On Tue, 2023-06-27 at 07:50 -0700, Sean Christopherson wrote:
> > The question that you really want to ask is "could change XYZ break
> > userspace?"
> 
> Agreed.
> 
> But since "encl->has_mismatched_offsets" is sort of new ABI, I think we need to
> be careful otherwise in the future we may hit this kinda nasty issue again.
> 
> Here's my thoughts:
> 
> (Again, let's forget about mmap(/dev/sgx_enclave) to reserve ELRANGE for now.)
> 
> 1) Current ABI is SGX driver _ignores_ pgoff for mmap(/dev/sgx_enclave)s

Yes.

> (but requires MAP_FIXED).

No, SGX doesn't require MAP_FIXED.  The requirements of ELRANGE make it extremely
unlikely that mmap() will succeed, but it's not a strict requirement. 

> 2) Therefore,�"passing the correct pgoff" in new userspace app doesn't break the
> current ABI.  If the new app chooses to pass the correct pgoff, it will work.

Yep.

> 3) With additional support of sgx_fadvice(WILLNEED) within the driver, the new
> app can use madvice(WILLNEED) if it passes the correct pgoff when mmap().  If
> wrong pgoff is passed, then madvice(WILLNEED) will work unexpectedly and could
> result in enclave being killed.  It's userspace app's responsibility to make
> sure the correctness, not the driver's.

Hmm, yeah, it's probably ok to lean on documentation if userspace screws up.  I
generally prefer explicit errors over "undefined behavior", but I don't have a
super strong opinion, especially since this isn't my area these days :-) 

> 4) Old SGX apps which don't use file-based ABIs and still pass 0 pgoff should
> continue to work.  No break of old apps either.

Yep.
 
> 5) We encourage new apps to always pass the correct pgoff instead of passing 0.
> 
> 6) If needed, we can modify sgx_mmap() to relax the needing to use MAP_FIXED,
> but return the enclave's address "based on pgoff from userspace".

As above, this isn't a relaxation of anything since MAP_FIXED isn't strictly
required, it's simply additional functionality.

> This effectively provides additional mmap() ABI for userspace while not
> breaking the existing MAP_FIXED ABI.

I don't think you want to do this.  The MAP_FIXED case won't be affected, but the
address provided to mmap() is also used as a hint in the !MAP_FIXED case,, i.e.
MAP_FIXED just means use *exactly* this address and don't try anything else.  It's
unlikely, but not _that_ unlikely, that there are userspace applications that
specify the exact address without MAP_FIXED and without the correct pgoff.

If there were more to gain by steering mmap() based solely on pgoff, then it might
be worth trying, but this doesn't seem to provide much value to userspace since
the virtual address of any given enclave mapping is mission critical, e.g. it seems
unlikely that userspace wouldn't already know the virtual address it needs.

  reply	other threads:[~2023-06-28 14:57 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-28  4:55 [RFC PATCH v4 0/4] x86/sgx: implement support for MADV_WILLNEED Haitao Huang
2023-01-28  4:55 ` [RFC PATCH v4 1/4] x86/sgx: Export sgx_encl_eaug_page Haitao Huang
2023-01-28  4:55   ` [RFC PATCH v4 2/4] x86/sgx: Implement support for MADV_WILLNEED Haitao Huang
2023-01-28  4:55     ` [RFC PATCH v4 3/4] selftests/sgx: add len field for EACCEPT op Haitao Huang
2023-01-28  4:55       ` [RFC PATCH v4 4/4] selftests/sgx: Add test for madvise(..., WILLNEED) Haitao Huang
2023-02-07 23:30         ` Jarkko Sakkinen
2023-02-15  2:38         ` Huang, Kai
2023-02-15  4:42           ` Haitao Huang
2023-02-15  8:46             ` Huang, Kai
2023-02-17 22:29               ` jarkko
2023-02-07 23:29       ` [RFC PATCH v4 3/4] selftests/sgx: add len field for EACCEPT op Jarkko Sakkinen
2023-02-07 23:28     ` [RFC PATCH v4 2/4] x86/sgx: Implement support for MADV_WILLNEED Jarkko Sakkinen
2023-02-14  9:47     ` Huang, Kai
2023-02-14 19:18       ` Haitao Huang
2023-02-14 20:54         ` Huang, Kai
2023-02-14 21:42           ` Haitao Huang
2023-02-14 22:36             ` Huang, Kai
2023-02-15  3:59               ` Haitao Huang
2023-02-15  8:51                 ` Huang, Kai
2023-02-15 15:42                   ` Haitao Huang
2023-02-16  7:53                     ` Huang, Kai
2023-02-16 17:12                       ` Haitao Huang
2023-02-17 22:32                     ` jarkko
2023-02-17 23:03                       ` Haitao Huang
2023-02-21 22:10                         ` jarkko
2023-02-22  1:37                           ` Haitao Huang
2023-03-07 23:32                             ` Huang, Kai
2023-03-09  0:50                               ` Haitao Huang
2023-03-09 11:31                                 ` Huang, Kai
2023-03-14 14:54                                   ` Haitao Huang
2023-03-19 13:26                                     ` jarkko
2023-03-20  9:36                                       ` Huang, Kai
2023-03-20 14:04                                         ` jarkko
2023-05-27  0:32                                   ` Haitao Huang
2023-06-06  4:11                                     ` Huang, Kai
2023-06-07 16:59                                       ` Haitao Huang
2023-06-16  3:49                                       ` Huang, Kai
2023-06-16 22:05                                         ` Sean Christopherson
2023-06-19 11:17                                           ` Huang, Kai
2023-06-22 22:01                                             ` Sean Christopherson
2023-06-22 23:21                                               ` Huang, Kai
2023-06-26 22:28                                                 ` Sean Christopherson
2023-06-27 11:43                                                   ` Huang, Kai
2023-06-27 14:50                                                     ` Sean Christopherson
2023-06-28  9:37                                                       ` Huang, Kai
2023-06-28 14:57                                                         ` Sean Christopherson [this message]
2023-06-29  3:10                                                           ` Huang, Kai
2023-06-29 14:23                                                             ` Sean Christopherson
2023-06-29 23:29                                                               ` Huang, Kai
2023-06-30  0:14                                                                 ` Sean Christopherson
2023-06-30  0:56                                                                   ` Huang, Kai
2023-06-30  1:54                                                                 ` Jarkko Sakkinen
2023-06-30  1:57                                                                   ` Jarkko Sakkinen
2023-06-30  4:26                                                                     ` Huang, Kai
2023-06-30  9:35                                                                       ` Jarkko Sakkinen
2023-03-12  1:25                               ` jarkko
2023-03-12 22:25                                 ` Huang, Kai
2023-02-17 22:07           ` jarkko
2023-02-17 21:50       ` jarkko
2023-02-07 23:26   ` [RFC PATCH v4 1/4] x86/sgx: Export sgx_encl_eaug_page Jarkko Sakkinen

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=ZJxKV1/2M+OeIXAN@google.com \
    --to=seanjc@google.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=haitao.huang@linux.intel.com \
    --cc=jarkko@kernel.org \
    --cc=kai.huang@intel.com \
    --cc=linux-sgx@vger.kernel.org \
    --cc=reinette.chatre@intel.com \
    --cc=vijay.dhanraj@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.