Re: [PATCH v15 15/23] x86/sgx: Add wrappers for ENCLS leaf functions

From: Andy Shevchenko
Date: Sat Nov 03 2018 - 09:17:48 EST


On Sat, Nov 3, 2018 at 1:18 AM Jarkko Sakkinen
<jarkko.sakkinen@xxxxxxxxxxxxxxx> wrote:
>
> ENCLS is an umbrella instruction for a variety of cpl0 SGX functions.
> The ENCLS function that is executed is specified in EAX, with each
> function potentially having more leaf-specific operands beyond EAX.
> ENCLS introduces its own (positive value) error codes that (some)
> leafs use to return failure information in EAX. Leafs that return
> an error code also modify RFLAGS. And finally, ENCLS generates
> ENCLS-specific non-fatal #GPs and #PFs, i.e. a bug-free kernel may
> encounter faults on ENCLS that must be handled gracefully.
>
> Because of the complexity involved in encoding ENCLS and handling its
> assortment of failure paths, executing any given leaf is not a simple
> matter of emitting ENCLS.
>
> To enable adding support for ENCLS leafs with minimal fuss, add a
> two-layer macro system along with an encoding scheme to allow wrappers
> to return trap numbers along ENCLS-specific error codes. The bottom
> layer of the macro system splits between the leafs that return an
> error code and those that do not. The second layer generates the
> correct input/output annotations based on the number of operands for
> each leaf function.

> +/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */

> +/**

I dunno if kernel-doc script still complains about this.

> + * Copyright(c) 2016-18 Intel Corporation.
> + */

--
With Best Regards,
Andy Shevchenko