Skip to content
  • Sean Christopherson's avatar
    dfce81f1
    vl: Add sgx compound properties to expose SGX EPC sections to guest · dfce81f1
    Sean Christopherson authored
    
    
    Because SGX EPC is enumerated through CPUID, EPC "devices" need to be
    realized prior to realizing the vCPUs themselves, i.e. long before
    generic devices are parsed and realized.  From a virtualization
    perspective, the CPUID aspect also means that EPC sections cannot be
    hotplugged without paravirtualizing the guest kernel (hardware does
    not support hotplugging as EPC sections must be locked down during
    pre-boot to provide EPC's security properties).
    
    So even though EPC sections could be realized through the generic
    -devices command, they need to be created much earlier for them to
    actually be usable by the guest.  Place all EPC sections in a
    contiguous block, somewhat arbitrarily starting after RAM above 4g.
    Ensuring EPC is in a contiguous region simplifies calculations, e.g.
    device memory base, PCI hole, etc..., allows dynamic calculation of the
    total EPC size, e.g. exposing EPC to guests does not require -maxmem,
    and last but not least allows all of EPC to be enumerated in a single
    ACPI entry, which is expected by some kernels, e.g. Windows 7 and 8.
    
    The new compound properties command for sgx like below:
     ......
     -object memory-backend-epc,id=mem1,size=28M,prealloc=on \
     -object memory-backend-epc,id=mem2,size=10M \
     -M sgx-epc.0.memdev=mem1,sgx-epc.1.memdev=mem2
    
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarYang Zhong <yang.zhong@intel.com>
    Message-Id: <20210719112136.57018-6-yang.zhong@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    dfce81f1
    vl: Add sgx compound properties to expose SGX EPC sections to guest
    Sean Christopherson authored
    
    
    Because SGX EPC is enumerated through CPUID, EPC "devices" need to be
    realized prior to realizing the vCPUs themselves, i.e. long before
    generic devices are parsed and realized.  From a virtualization
    perspective, the CPUID aspect also means that EPC sections cannot be
    hotplugged without paravirtualizing the guest kernel (hardware does
    not support hotplugging as EPC sections must be locked down during
    pre-boot to provide EPC's security properties).
    
    So even though EPC sections could be realized through the generic
    -devices command, they need to be created much earlier for them to
    actually be usable by the guest.  Place all EPC sections in a
    contiguous block, somewhat arbitrarily starting after RAM above 4g.
    Ensuring EPC is in a contiguous region simplifies calculations, e.g.
    device memory base, PCI hole, etc..., allows dynamic calculation of the
    total EPC size, e.g. exposing EPC to guests does not require -maxmem,
    and last but not least allows all of EPC to be enumerated in a single
    ACPI entry, which is expected by some kernels, e.g. Windows 7 and 8.
    
    The new compound properties command for sgx like below:
     ......
     -object memory-backend-epc,id=mem1,size=28M,prealloc=on \
     -object memory-backend-epc,id=mem2,size=10M \
     -M sgx-epc.0.memdev=mem1,sgx-epc.1.memdev=mem2
    
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarYang Zhong <yang.zhong@intel.com>
    Message-Id: <20210719112136.57018-6-yang.zhong@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading