• Andra Paraschiv's avatar
    nitro_enclaves: Add ioctl interface definition · 15b760c3
    Andra Paraschiv authored
    The Nitro Enclaves driver handles the enclave lifetime management. This
    includes enclave creation, termination and setting up its resources such
    as memory and CPU.
    
    An enclave runs alongside the VM that spawned it. It is abstracted as a
    process running in the VM that launched it. The process interacts with
    the NE driver, that exposes an ioctl interface for creating an enclave
    and setting up its resources.
    
    Changelog
    
    v9 -> v10
    
    * Update commit message to include the changelog before the SoB tag(s).
    
    v8 -> v9
    
    * No changes.
    
    v7 -> v8
    
    * Add NE custom error codes for user space memory regions not backed by
      pages multiple of 2 MiB, invalid flags and enclave CID.
    * Add max flag value for enclave image load info.
    
    v6 -> v7
    
    * Clarify in the ioctls documentation that the return value is -1 and
      errno is set on failure.
    * Update the error code value for NE_ERR_INVALID_MEM_REGION_SIZE as it
      gets in user space as value 25 (ENOTTY) instead of 515. Update the
      NE custom error codes values range to not be the same as the ones
      defined in include/linux/errno.h, although these are not propagated
      to user space.
    
    v5 -> v6
    
    * Fix typo in the description about the NE CPU pool.
    * Update documentation to kernel-doc format.
    * Remove the ioctl to query API version.
    
    v4 -> v5
    
    * Add more details about the ioctl calls usage e.g. error codes, file
      descriptors used.
    * Update the ioctl to set an enclave vCPU to not return a file
      descriptor.
    * Add specific NE error codes.
    
    v3 -> v4
    
    * Decouple NE ioctl interface from KVM API.
    * Add NE API version and the corresponding ioctl call.
    * Add enclave / image load flags options.
    
    v2 -> v3
    
    * Remove the GPL additional wording as SPDX-License-Identifier is
      already in place.
    
    v1 -> v2
    
    * Add ioctl for getting enclave image load metadata.
    * Update NE_ENCLAVE_START ioctl name to NE_START_ENCLAVE.
    * Add entry in Documentation/userspace-api/ioctl/ioctl-number.rst for NE
      ioctls.
    * Update NE ioctls definition based on the updated ioctl range for major
      and minor.
    Reviewed-by: default avatarAlexander Graf <graf@amazon.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarAlexandru Vasile <lexnv@amazon.com>
    Signed-off-by: default avatarAndra Paraschiv <andraprs@amazon.com>
    Link: https://lore.kernel.org/r/20200921121732.44291-2-andraprs@amazon.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    15b760c3
ioctl-number.rst 24 KB