• Andra Paraschiv's avatar
    nitro_enclaves: Init misc device providing the ioctl interface · bd47c995
    Andra Paraschiv authored
    The Nitro Enclaves driver provides an ioctl interface to the user space
    for enclave lifetime management e.g. enclave creation / termination and
    setting enclave resources such as memory and CPU.
    
    This ioctl interface is mapped to a Nitro Enclaves misc device.
    
    Changelog
    
    v9 -> v10
    
    * Update commit message to include the changelog before the SoB tag(s).
    
    v8 -> v9
    
    * Use the ne_devs data structure to get the refs for the NE misc device
      in the NE PCI device driver logic.
    
    v7 -> v8
    
    * Add define for the CID of the primary / parent VM.
    * Update the NE PCI driver shutdown logic to include misc device
      deregister.
    
    v6 -> v7
    
    * Set the NE PCI device the parent of the NE misc device to be able to
      use it in the ioctl logic.
    * Update the naming and add more comments to make more clear the logic
      of handling full CPU cores and dedicating them to the enclave.
    
    v5 -> v6
    
    * Remove the ioctl to query API version.
    * Update documentation to kernel-doc format.
    
    v4 -> v5
    
    * Update the size of the NE CPU pool string from 4096 to 512 chars.
    
    v3 -> v4
    
    * Use dev_err instead of custom NE log pattern.
    * Remove the NE CPU pool init during kernel module loading, as the CPU
      pool is now setup at runtime, via a sysfs file for the kernel
      parameter.
    * Add minimum enclave memory size definition.
    
    v2 -> v3
    
    * Remove the GPL additional wording as SPDX-License-Identifier is
      already in place.
    * Remove the WARN_ON calls.
    * Remove linux/bug and linux/kvm_host includes that are not needed.
    * Remove "ratelimited" from the logs that are not in the ioctl call
      paths.
    * Remove file ops that do nothing for now - open and release.
    
    v1 -> v2
    
    * Add log pattern for NE.
    * Update goto labels to match their purpose.
    * Update ne_cpu_pool data structure to include the global mutex.
    * Update NE misc device mode to 0660.
    * Check if the CPU siblings are included in the NE CPU pool, as full CPU
      cores are given for the enclave(s).
    Reviewed-by: default avatarAlexander Graf <graf@amazon.com>
    Signed-off-by: default avatarAndra Paraschiv <andraprs@amazon.com>
    Link: https://lore.kernel.org/r/20200921121732.44291-8-andraprs@amazon.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    bd47c995
ne_pci_dev.c 15.5 KB