On 9/9/21 2:06 PM, Yang Zhong wrote: > On Thu, Sep 09, 2021 at 11:36:58AM +0200, Philippe Mathieu-Daudé wrote: >> On 9/9/21 4:51 AM, Yang Zhong wrote: >>> On Wed, Sep 08, 2021 at 10:38:59AM +0200, Philippe Mathieu-Daudé wrote: >>>> On 9/8/21 10:19 AM, Yang Zhong wrote: >>>>> Libvirt can use qmp_query_sgx_capabilities() to get the host >>>>> sgx capabilities. >>>>> >>>>> Signed-off-by: Yang Zhong <yang.zh...@intel.com> >>>>> --- >>>>> hw/i386/sgx.c | 66 ++++++++++++++++++++++++++++++++++++++ >>>>> include/hw/i386/sgx.h | 1 + >>>>> qapi/misc-target.json | 18 +++++++++++ >>>>> target/i386/monitor.c | 5 +++ >>>>> tests/qtest/qmp-cmd-test.c | 1 + >>>>> 5 files changed, 91 insertions(+) >>>> >>>>> +SGXInfo *sgx_get_capabilities(Error **errp) >>>>> +{ >>>>> + SGXInfo *info = NULL; >>>>> + uint32_t eax, ebx, ecx, edx; >>>>> + >>>>> + int fd = qemu_open_old("/dev/sgx_vepc", O_RDWR); >>>>> + if (fd < 0) { >>>>> + error_setg(errp, "SGX is not enabled in KVM"); >>>>> + return NULL; >>>>> + } >>>> >>>> Is this Linux specific? >>> >>> Philippe, The /dev/sgx_vepc node is used for KVM side to expose the SGX >>> EPC section to guest. Libvirt then use the '-machine none' qemu command >>> to query host SGX capabilities(especially for host SGX EPC section size) >>> to decide how many SGX VMs will be started in server. If this node doesn't >>> exist, the reason is host can't support SGX or SGX KVM module is not >>> compiled >>> in the kernel. thanks! >> >> Sorry but you didn't answer my question in an obvious way... Yes or no? > > Yes, this is Linux specific. thanks!
You made me have a deeper look at the code. So SGX (Kconfig) requires KVM, which is only supported on Linux host. Thus this Linux specific code is only built on Linux host. Thanks.