Re: [PATCH v17 18/23] platform/x86: Intel SGX driver

From: Jarkko Sakkinen
Date: Mon Nov 19 2018 - 10:07:05 EST


On Fri, Nov 16, 2018 at 03:01:25AM +0200, Jarkko Sakkinen wrote:
> Intel Software Guard eXtensions (SGX) is a set of CPU instructions that
> can be used by applications to set aside private regions of code and
> data. The code outside the enclave is disallowed to access the memory
> inside the enclave by the CPU access control.
>
> SGX driver provides a ioctl API for loading and initializing enclaves.
> Address range for enclaves is reserved with mmap() and they are
> destroyed with munmap(). Enclave construction, measurement and
> initialization is done with the provided the ioctl API.
>
> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx>
> Co-developed-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx>
> Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx>
> Co-developed-by: Serge Ayoun <serge.ayoun@xxxxxxxxx>
> Signed-off-by: Serge Ayoun <serge.ayoun@xxxxxxxxx>
> Co-developed-by: Shay Katz-zamir <shay.katz-zamir@xxxxxxxxx>
> Signed-off-by: Shay Katz-zamir <shay.katz-zamir@xxxxxxxxx>
> Co-developed-by: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>
> Signed-off-by: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>

Question: should be dissolve the driver completely and move this code to
arch/x86/kernel/cpu/sgx/ (and rename intel_sgx.c as main.c)? Swapping
patch removes the possibility to compile this as a module anyway.

Would make also maintainer hierarchy more clear and clean albeit that
cannot be a guiding reason to do such change. Here's the current
MAINTAINERS entry in my master:

INTEL SGX
M: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx>
M: Sean Christopherson <sean.j.christopherson@xxxxxxxxx>
L: linux-sgx@xxxxxxxxxxxxxxx
S: Maintained
Q: https://patchwork.kernel.org/project/intel-sgx/list/
T: git https://github.com/jsakkine-intel/linux-sgx.git
F: arch/x86/include/asm/sgx.h
F: arch/x86/include/uapi/asm/sgx.h
F: arch/x86/kernel/cpu/intel_sgx.c
F: drivers/platform/x86/intel_sgx/*
K: \bSGX_

If we do this, we would end up with this:

INTEL SGX
M: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx>
M: Sean Christopherson <sean.j.christopherson@xxxxxxxxx>
L: linux-sgx@xxxxxxxxxxxxxxx
S: Maintained
Q: https://patchwork.kernel.org/project/intel-sgx/list/
T: git https://github.com/jsakkine-intel/linux-sgx.git
F: arch/x86/include/asm/sgx.h
F: arch/x86/include/uapi/asm/sgx.h
F: arch/x86/kernel/cpu/sgx/*
K: \bSGX_

Then once the base code has been merged I would put my PRs to x86
maintainers for subsequent kernel releases.

/Jarkko