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@xxxxxxxxxxxxxxx/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@xxxxxxxxxxxxxxx> <--- > 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