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