lkml.org 
[lkml]   [2020]   [Sep]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v38 21/24] x86/vdso: Implement a vDSO for Intel SGX enclave call
On Mon, Sep 28, 2020 at 10:30:32AM +0200, Borislav Petkov wrote:
> On Mon, Sep 28, 2020 at 02:37:00AM +0300, Jarkko Sakkinen wrote:
> > I did not get Sean's reply, and neither can find it from lore:
> >
> > https://lore.kernel.org/linux-sgx/20200915112842.897265-1-jarkko.sakkinen@linux.intel.com/T/#t
>
> Yah, your mail server upgrade broke a lot of stuff. And lore even says
> it is not there:
>
> 2020-09-25 11:43 ` Jethro Beekman
> [not found] ` <20200925003808.GB20333@linux.intel.com> <---
> 2020-09-25 1:04 ` Jarkko Sakkinen
>
> Lemme bounce it to you.

Thank you. I think I have it correctly in my tree. And I actually
noticed that I had the original email stored in wrong archive folder on
my machine (sorry about that), so did I receive it after all, but it
does not exist in lore.

> > I'd make that a description and take away individual parameter
> > descriptions. Is that fine?
>
> Sure.

/**
* typedef sgx_enclave_exit_handler_t - Exit handler function accepted by
* __vdso_sgx_enter_enclave()
* @run: Pointer to the caller provided struct sgx_enclave_run
*
* The register parameters contain the snapshot of their values at enclave
* exit
*
* Return:
* 0 or negative to exit vDSO
* positive to re-enter enclave (must be EENTER or ERESUME leaf)
*/
typedef int (*sgx_enclave_exit_handler_t)(long rdi, long rsi, long rdx,
long rsp, long r8, long r9,
struct sgx_enclave_run *run);

I think this looks reasonable now.

Another minor clean up I made is:

struct sgx_enclave_run {
__u64 tcs;
__u32 flags;
__u32 exit_reason;
__u64 user_handler;
__u64 user_data;

I.e. got rid of the "user_handler union. Makes the struc less confusing
looking and is consistent with the other structs.

I've been thinking about this tail:

union {
struct sgx_enclave_exception exception;

/* Pad the entire struct to 256 bytes. */
__u8 pad[256 - 32];
};
};

I'd just replace this with

__u64 exception;
};

And do something like (just writing it to the email to show the idea,
have not even compiled this):

- mov %eax, (SGX_ENCLAVE_RUN_EXCEPTION + SGX_EX_LEAF)(%rbx)
- mov %di, (SGX_ENCLAVE_RUN_EXCEPTION + SGX_EX_TRAPNR)(%rbx)
- mov %si, (SGX_ENCLAVE_RUN_EXCEPTION + SGX_EX_ERROR_CODE)(%rbx)
- mov %rdx, (SGX_ENCLAVE_RUN_EXCEPTION + SGX_EX_ADDRESS)(%rbx)
+ mov SGX_ENCLAVE_RUN_EXCEPTION(%rbx), %rbx
+
+ mov %eax, (SGX_EX_LEAF)(%rbx)
+ mov %di, (SGX_EX_TRAPNR)(%rbx)
+ mov %si, (SGX_EX_ERROR_CODE)(%rbx)
+ mov %rdx, (SGX_EX_ADDRESS)(%rbx)

> --
> Regards/Gruss,
> Boris.
>
> https://people.kernel.org/tglx/notes-about-netiquette

/Jarkko

\
 
 \ /
  Last update: 2020-09-28 17:39    [W:0.840 / U:0.016 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site