• Reinette Chatre's avatar
    x86/sgx: Add wrapper for SGX2 EMODPR function · 0fb2126d
    Reinette Chatre authored
    Add a wrapper for the EMODPR ENCLS leaf function used to
    restrict enclave page permissions as maintained in the
    SGX hardware's Enclave Page Cache Map (EPCM).
    
    EMODPR:
    1) Updates the EPCM permissions of an enclave page by treating
       the new permissions as a mask. Supplying a value that attempts
       to relax EPCM permissions has no effect on EPCM permissions
       (PR bit, see below, is changed).
    2) Sets the PR bit in the EPCM entry of the enclave page to
       indicate that permission restriction is in progress. The bit
       is reset by the enclave by invoking ENCLU leaf function
       EACCEPT or EACCEPTCOPY.
    
    The enclave may access the page throughout the entire process
    if conforming to the EPCM permissions for the enclave page.
    
    After performing the permission restriction by issuing EMODPR
    the kernel needs to collaborate with the hardware to ensure that
    all logical processors sees the new restricted permissions. This
    is required for the enclave's EACCEPT/EACCEPTCOPY to succeed and
    is accomplished with the ETRACK flow.
    
    Expand enum sgx_return_code with the possible EMODPR return
    values.
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Reviewed-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
    Link: https://lkml.kernel.org/r/d15e7a769e13e4ca671fa2d0a0d3e3aec5aedbd4.1652137848.git.reinette.chatre@intel.com
    0fb2126d
sgx.h 12.2 KB