From: Jarkko Sakkinen <jarkko@kernel.org>
To: "Huang, Kai" <kai.huang@intel.com>
Cc: "Reshetova, Elena" <elena.reshetova@intel.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
"linux-sgx@vger.kernel.org" <linux-sgx@vger.kernel.org>,
"Scarlata, Vincent R" <vincent.r.scarlata@intel.com>,
"x86@kernel.org" <x86@kernel.org>,
"Annapurve, Vishal" <vannapurve@google.com>,
"bondarn@google.com" <bondarn@google.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Mallick, Asit K" <asit.k.mallick@intel.com>,
"Aktas, Erdem" <erdemaktas@google.com>,
"Cai, Chong" <chongc@google.com>,
"Raynor, Scott" <scott.raynor@intel.com>,
"dionnaglaze@google.com" <dionnaglaze@google.com>
Subject: Re: [PATCH v2 2/2] x86/sgx: Implement EUPDATESVN and opportunistically call it during first EPC page alloc
Date: Tue, 8 Apr 2025 09:42:35 +0300 [thread overview]
Message-ID: <Z_TFW_0D90wK8BdM@kernel.org> (raw)
In-Reply-To: <Z_TEzsYnCxXoEhi0@kernel.org>
On Tue, Apr 08, 2025 at 09:40:14AM +0300, Jarkko Sakkinen wrote:
> On Tue, Apr 08, 2025 at 12:06:32AM +0000, Huang, Kai wrote:
> > On Mon, 2025-04-07 at 08:23 +0000, Reshetova, Elena wrote:
> > > > On Fri, Apr 04, 2025 at 06:53:17AM +0000, Reshetova, Elena wrote:
> > > > > > On Wed, Apr 02, 2025 at 01:11:25PM +0000, Reshetova, Elena wrote:
> > > > > > > > > current SGX kernel code does not handle such errors in any other
> > > > way
> > > > > > > > > than notifying that operation failed for other ENCLS leaves. So, I don't
> > > > > > > > > see why ENCLS[EUPDATESVN] should be different from existing
> > > > > > behaviour?
> > > > > > > >
> > > > > > > > While not disagreeing fully (it depends on call site), in some
> > > > > > > > situations it is more difficult to take more preventive actions.
> > > > > > > >
> > > > > > > > This is a situation where we know that there are *zero* EPC pages in
> > > > > > > > traffic so it is relatively easy to stop the madness, isn't it?
> > > > > > > >
> > > > > > > > I guess the best action would be make sgx_alloc_epc_page() return
> > > > > > > > consistently -ENOMEM, if the unexpected happens.
> > > > > > >
> > > > > > > But this would be very misleading imo. We do have memory, even page
> > > > > > > allocation might function as normal in EPC, the only thing that is broken
> > > > > > > can be EUPDATESVN functionality. Returning -ENOMEM in this case
> > > > seems
> > > > > > > wrong.
> > > > > >
> > > > > > This makes it not misleading at all:
> > > > > >
> > > > > > pr_err("EUPDATESVN: unknown error %d\n", ret);
> > > > > >
> > > > > > Since hardware should never return this, it indicates a kernel bug.
> > > > >
> > > > > OK, so you propose in this case to print the above message, sgx_updatesvn
> > > > > returning an error, and then NULL from __sgx_alloc_epc_page_from_node
> > > > and
> > > > > the __sgx_alloc_epc_page returning -ENOMEM after an iteration over
> > > > > a whole set of numa nodes given that we will keep getting the unknown
> > > > error
> > > > > on each node upon trying to do an allocation from each one?
> > > >
> > > > I'd disable ioctl's in this case and return -ENOMEM. It's a cheap sanity
> > > > check. Should not ever happen, but if e.g., a new kernel patch breaks
> > > > anything, it could help catching issues.
> > > >
> > > > We are talking here about situation that is never expected to happen so I
> > > > don't think it is too heavy hammer here. Here it makes sense because not
> > > > much effort is required to implement the counter-measures.
> > >
> > > OK, but does it really make sense to explicitly disable ioctls?
> > > Note that everything *in practice* will be disabled simply because not a single page
> > > anymore can be allocated from EPC since we are getting -ENOMEM on EPC
> > > page allocation. Also, note that any approach we chose should be symmetrical
> > > to SGX virtualization side also, which doesn´t use ioctls at all. Simply returning
> > > -ENOMEM for page allocation in EPC seems like a correct symmetrical solution
> > > that would work for both nativel enclaves and EPC pages allocated for VMs.
> > > And nothing would be able to proceed creating/managing enclaves at this point.
> > >
> >
> > Right, failing ioctls() doesn't cover SGX virtualization. If we ever want to
> > fail, we should fail the EPC allocation.
>
> "I guess the best action would be make sgx_alloc_epc_page() return
> consistently -ENOMEM, if the unexpected happens." -me
>
> >
> > Btw, for the unknown error, and any other errors which should not happen,
> > couldn't we use the ENCLS_WARN()? AFAICT there are already cases that we are
> > using ENCLS_WARN() for those "impossible-to-happen-errors".
Sorry forgot to response this. I don't have anything against this but at
minimum disabling allocation should be combined with it (in case kernel
command-line does not have oops_on_warn or whatever the option was
called).
> >
> > E.g., in __sgx_encl_extend():
> >
> > ret = __eextend(sgx_get_epc_virt_addr(encl->secs.epc_page),
> > sgx_get_epc_virt_addr(epc_page) + offset);
> > if (ret) {
> > if (encls_failed(ret))
> > ENCLS_WARN(ret, "EEXTEND");
> >
> > return -EIO;
> > }
>
> BR, Jarkko
>
BR, Jarkko
next prev parent reply other threads:[~2025-04-08 6:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-28 12:57 [PATCH v2 0/2] Enable automatic SVN updates for SGX enclaves Elena Reshetova
2025-03-28 12:57 ` [PATCH v2 1/2] x86/sgx: Use sgx_nr_used_pages for EPC page count instead of sgx_nr_free_pages Elena Reshetova
2025-03-28 12:57 ` [PATCH v2 2/2] x86/sgx: Implement EUPDATESVN and opportunistically call it during first EPC page alloc Elena Reshetova
2025-03-28 17:50 ` Jarkko Sakkinen
2025-03-28 18:06 ` Jarkko Sakkinen
2025-03-31 7:26 ` Reshetova, Elena
2025-03-31 17:46 ` Jarkko Sakkinen
2025-04-01 9:35 ` Reshetova, Elena
2025-04-01 14:29 ` Jarkko Sakkinen
2025-04-02 13:11 ` Reshetova, Elena
2025-04-03 19:12 ` Jarkko Sakkinen
2025-04-04 6:53 ` Reshetova, Elena
2025-04-04 7:48 ` Jarkko Sakkinen
2025-04-07 8:23 ` Reshetova, Elena
2025-04-08 0:06 ` Huang, Kai
2025-04-08 6:40 ` Jarkko Sakkinen
2025-04-08 6:42 ` Jarkko Sakkinen [this message]
2025-04-08 6:54 ` Reshetova, Elena
2025-04-08 15:27 ` Jarkko Sakkinen
2025-04-14 7:56 ` Reshetova, Elena
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=Z_TFW_0D90wK8BdM@kernel.org \
--to=jarkko@kernel.org \
--cc=asit.k.mallick@intel.com \
--cc=bondarn@google.com \
--cc=chongc@google.com \
--cc=dave.hansen@intel.com \
--cc=dionnaglaze@google.com \
--cc=elena.reshetova@intel.com \
--cc=erdemaktas@google.com \
--cc=kai.huang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sgx@vger.kernel.org \
--cc=scott.raynor@intel.com \
--cc=vannapurve@google.com \
--cc=vincent.r.scarlata@intel.com \
--cc=x86@kernel.org \
/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.