mbox series

[for_v23,00/16] x86/vdso: sgx: Major vDSO cleanup

Message ID 20191008044613.12350-1-sean.j.christopherson@intel.com (mailing list archive)
Headers show
Series x86/vdso: sgx: Major vDSO cleanup | expand

Message

Sean Christopherson Oct. 8, 2019, 4:45 a.m. UTC
The main purpose of this series is to implement feedback from the original
RFC to expand the vDSO[*] that went unaddressed before the expanded
function was rushed into v21.

The other half of the series is to overhaul the selftest to actually test
the exit handler variation of the vDSO, with a bunch of prework to add an
assertion framework to standardize the various assertions in the test and
improve the readability of the code.

The basic ideas for the exit handler subtests are from Cedric's original
RFC, but rewritten from scratch to take advantage of the new assertion
framework.  I haven't yet implemented single-step subtest, ideally that
too will get done before v23.

[*] https://lkml.kernel.org/r/20190426210017.GA24467@linux.intel.com

Sean Christopherson (16):
  x86/vdso: sgx: Drop the pseudocode "documentation"
  x86/vdso: sgx: Do not use exception info to pass success/failure
  x86/vdso: sgx: Rename the enclave exit handler typedef
  x86/vdso: sgx: Move enclave exit handler declaration to UAPI header
  x86/vdso: sgx: Add comment regarding kernel-doc shenanigans
  x86/vdso: sgx: Rewrite __vdso_sgx_enter_enclave() function comment
  selftests/x86: Fix linker warning in SGX selftest
  selftests/x86/sgx: Use getauxval() to retrieve the vDSO base address
  selftests/x86/sgx: Add helper function and macros to assert results
  selftests/x86/sgx: Handle setup failures via test assertions
  selftests/x86/sgx: Sanitize the types for sgx_call()'s input params
  selftests/x86/sgx: Move existing sub-test to a separate helper
  selftests/x86/sgx: Add a test of the vDSO exception reporting
    mechanism
  selftests/x86/sgx: Add test of vDSO with basic exit handler
  selftests/x86/sgx: Add sub-test for exception behavior with exit
    handler
  x86/vdso: sgx: Rework __vdso_sgx_enter_enclave() to prefer "no
    callback"

 arch/x86/entry/vdso/vsgx_enter_enclave.S  | 228 +++++++------
 arch/x86/include/uapi/asm/sgx.h           |  18 +
 tools/testing/selftests/x86/sgx/Makefile  |   2 +-
 tools/testing/selftests/x86/sgx/defines.h |   6 +
 tools/testing/selftests/x86/sgx/main.c    | 384 ++++++++++++++--------
 5 files changed, 387 insertions(+), 251 deletions(-)

Comments

Jarkko Sakkinen Oct. 10, 2019, 8:10 a.m. UTC | #1
On Mon, Oct 07, 2019 at 09:45:57PM -0700, Sean Christopherson wrote:
> The main purpose of this series is to implement feedback from the original
> RFC to expand the vDSO[*] that went unaddressed before the expanded
> function was rushed into v21.
> 
> The other half of the series is to overhaul the selftest to actually test
> the exit handler variation of the vDSO, with a bunch of prework to add an
> assertion framework to standardize the various assertions in the test and
> improve the readability of the code.
> 
> The basic ideas for the exit handler subtests are from Cedric's original
> RFC, but rewritten from scratch to take advantage of the new assertion
> framework.  I haven't yet implemented single-step subtest, ideally that
> too will get done before v23.
> 
> [*] https://lkml.kernel.org/r/20190426210017.GA24467@linux.intel.com
> 
> Sean Christopherson (16):
>   x86/vdso: sgx: Drop the pseudocode "documentation"
>   x86/vdso: sgx: Do not use exception info to pass success/failure
>   x86/vdso: sgx: Rename the enclave exit handler typedef
>   x86/vdso: sgx: Move enclave exit handler declaration to UAPI header
>   x86/vdso: sgx: Add comment regarding kernel-doc shenanigans
>   x86/vdso: sgx: Rewrite __vdso_sgx_enter_enclave() function comment
>   selftests/x86: Fix linker warning in SGX selftest
>   selftests/x86/sgx: Use getauxval() to retrieve the vDSO base address
>   selftests/x86/sgx: Add helper function and macros to assert results
>   selftests/x86/sgx: Handle setup failures via test assertions
>   selftests/x86/sgx: Sanitize the types for sgx_call()'s input params
>   selftests/x86/sgx: Move existing sub-test to a separate helper
>   selftests/x86/sgx: Add a test of the vDSO exception reporting
>     mechanism
>   selftests/x86/sgx: Add test of vDSO with basic exit handler
>   selftests/x86/sgx: Add sub-test for exception behavior with exit
>     handler
>   x86/vdso: sgx: Rework __vdso_sgx_enter_enclave() to prefer "no
>     callback"
> 
>  arch/x86/entry/vdso/vsgx_enter_enclave.S  | 228 +++++++------
>  arch/x86/include/uapi/asm/sgx.h           |  18 +
>  tools/testing/selftests/x86/sgx/Makefile  |   2 +-
>  tools/testing/selftests/x86/sgx/defines.h |   6 +
>  tools/testing/selftests/x86/sgx/main.c    | 384 ++++++++++++++--------
>  5 files changed, 387 insertions(+), 251 deletions(-)
> 
> -- 
> 2.22.0
> 

vDSO changes look legit. I might do some minor edits (like coding
style tweaks only). Thanks.

/Jarkko
Sean Christopherson Oct. 10, 2019, 4:08 p.m. UTC | #2
On Thu, Oct 10, 2019 at 11:10:19AM +0300, Jarkko Sakkinen wrote:
> On Mon, Oct 07, 2019 at 09:45:57PM -0700, Sean Christopherson wrote:
> > The main purpose of this series is to implement feedback from the original
> > RFC to expand the vDSO[*] that went unaddressed before the expanded
> > function was rushed into v21.
> > 
> > The other half of the series is to overhaul the selftest to actually test
> > the exit handler variation of the vDSO, with a bunch of prework to add an
> > assertion framework to standardize the various assertions in the test and
> > improve the readability of the code.
> > 
> > The basic ideas for the exit handler subtests are from Cedric's original
> > RFC, but rewritten from scratch to take advantage of the new assertion
> > framework.  I haven't yet implemented single-step subtest, ideally that
> > too will get done before v23.
> > 
> > [*] https://lkml.kernel.org/r/20190426210017.GA24467@linux.intel.com
> > 
> > Sean Christopherson (16):
> >   x86/vdso: sgx: Drop the pseudocode "documentation"
> >   x86/vdso: sgx: Do not use exception info to pass success/failure
> >   x86/vdso: sgx: Rename the enclave exit handler typedef
> >   x86/vdso: sgx: Move enclave exit handler declaration to UAPI header
> >   x86/vdso: sgx: Add comment regarding kernel-doc shenanigans
> >   x86/vdso: sgx: Rewrite __vdso_sgx_enter_enclave() function comment
> >   selftests/x86: Fix linker warning in SGX selftest
> >   selftests/x86/sgx: Use getauxval() to retrieve the vDSO base address
> >   selftests/x86/sgx: Add helper function and macros to assert results
> >   selftests/x86/sgx: Handle setup failures via test assertions
> >   selftests/x86/sgx: Sanitize the types for sgx_call()'s input params
> >   selftests/x86/sgx: Move existing sub-test to a separate helper
> >   selftests/x86/sgx: Add a test of the vDSO exception reporting
> >     mechanism
> >   selftests/x86/sgx: Add test of vDSO with basic exit handler
> >   selftests/x86/sgx: Add sub-test for exception behavior with exit
> >     handler
> >   x86/vdso: sgx: Rework __vdso_sgx_enter_enclave() to prefer "no
> >     callback"
> > 
> >  arch/x86/entry/vdso/vsgx_enter_enclave.S  | 228 +++++++------
> >  arch/x86/include/uapi/asm/sgx.h           |  18 +
> >  tools/testing/selftests/x86/sgx/Makefile  |   2 +-
> >  tools/testing/selftests/x86/sgx/defines.h |   6 +
> >  tools/testing/selftests/x86/sgx/main.c    | 384 ++++++++++++++--------
> >  5 files changed, 387 insertions(+), 251 deletions(-)
> > 
> > -- 
> > 2.22.0
> > 
> 
> vDSO changes look legit. I might do some minor edits (like coding
> style tweaks only). Thanks.

Let me send v2 to fix the stack alignment issue Cedric pointed out, along
with a selftest enhancement to verify the alignment.
Jarkko Sakkinen Oct. 14, 2019, 9:04 p.m. UTC | #3
On Thu, Oct 10, 2019 at 09:08:47AM -0700, Sean Christopherson wrote:
> On Thu, Oct 10, 2019 at 11:10:19AM +0300, Jarkko Sakkinen wrote:
> > On Mon, Oct 07, 2019 at 09:45:57PM -0700, Sean Christopherson wrote:
> > > The main purpose of this series is to implement feedback from the original
> > > RFC to expand the vDSO[*] that went unaddressed before the expanded
> > > function was rushed into v21.
> > > 
> > > The other half of the series is to overhaul the selftest to actually test
> > > the exit handler variation of the vDSO, with a bunch of prework to add an
> > > assertion framework to standardize the various assertions in the test and
> > > improve the readability of the code.
> > > 
> > > The basic ideas for the exit handler subtests are from Cedric's original
> > > RFC, but rewritten from scratch to take advantage of the new assertion
> > > framework.  I haven't yet implemented single-step subtest, ideally that
> > > too will get done before v23.
> > > 
> > > [*] https://lkml.kernel.org/r/20190426210017.GA24467@linux.intel.com
> > > 
> > > Sean Christopherson (16):
> > >   x86/vdso: sgx: Drop the pseudocode "documentation"
> > >   x86/vdso: sgx: Do not use exception info to pass success/failure
> > >   x86/vdso: sgx: Rename the enclave exit handler typedef
> > >   x86/vdso: sgx: Move enclave exit handler declaration to UAPI header
> > >   x86/vdso: sgx: Add comment regarding kernel-doc shenanigans
> > >   x86/vdso: sgx: Rewrite __vdso_sgx_enter_enclave() function comment
> > >   selftests/x86: Fix linker warning in SGX selftest
> > >   selftests/x86/sgx: Use getauxval() to retrieve the vDSO base address
> > >   selftests/x86/sgx: Add helper function and macros to assert results
> > >   selftests/x86/sgx: Handle setup failures via test assertions
> > >   selftests/x86/sgx: Sanitize the types for sgx_call()'s input params
> > >   selftests/x86/sgx: Move existing sub-test to a separate helper
> > >   selftests/x86/sgx: Add a test of the vDSO exception reporting
> > >     mechanism
> > >   selftests/x86/sgx: Add test of vDSO with basic exit handler
> > >   selftests/x86/sgx: Add sub-test for exception behavior with exit
> > >     handler
> > >   x86/vdso: sgx: Rework __vdso_sgx_enter_enclave() to prefer "no
> > >     callback"
> > > 
> > >  arch/x86/entry/vdso/vsgx_enter_enclave.S  | 228 +++++++------
> > >  arch/x86/include/uapi/asm/sgx.h           |  18 +
> > >  tools/testing/selftests/x86/sgx/Makefile  |   2 +-
> > >  tools/testing/selftests/x86/sgx/defines.h |   6 +
> > >  tools/testing/selftests/x86/sgx/main.c    | 384 ++++++++++++++--------
> > >  5 files changed, 387 insertions(+), 251 deletions(-)
> > > 
> > > -- 
> > > 2.22.0
> > > 
> > 
> > vDSO changes look legit. I might do some minor edits (like coding
> > style tweaks only). Thanks.
> 
> Let me send v2 to fix the stack alignment issue Cedric pointed out, along
> with a selftest enhancement to verify the alignment.

Unfortunately I already applied these.

/Jarkko