On Wed, Sep 08, 2021 at 09:15:54AM +0800, Haibin Huang wrote: > From: Lin Yang <lin.a.yang@xxxxxxxxx> > > <devices> > ... > <memory model='sgx-epc'> > <target> > <size unit='KiB'>512</size> > </target> > </memory> > ... > </devices> > --- > docs/schemas/domaincommon.rng | 1 + > src/conf/domain_conf.c | 5 +++++ > src/conf/domain_conf.h | 1 + > src/conf/domain_validate.c | 1 + > src/qemu/qemu_alias.c | 3 +++ > src/qemu/qemu_command.c | 1 + > src/qemu/qemu_domain.c | 1 + > src/qemu/qemu_domain_address.c | 4 ++++ > src/qemu/qemu_process.c | 2 ++ > src/qemu/qemu_validate.c | 8 ++++++++ > src/security/security_apparmor.c | 1 + > src/security/security_dac.c | 2 ++ > src/security/security_selinux.c | 2 ++ > 13 files changed, 32 insertions(+) > diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c > index e5c4e3af26..545af727f7 100644 > --- a/src/qemu/qemu_validate.c > +++ b/src/qemu/qemu_validate.c > @@ -4929,6 +4929,14 @@ qemuValidateDomainDeviceDefMemory(virDomainMemoryDef *mem, > } > break; > > + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: > + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SGX_EPC)) { > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", > + _("sgx epc isn't supported by this QEMU binary")); > + return -1; > + } > + break; This doesn't compile at thi point, becuase QEMU_CAPS_SGX_EPC is not introduced until patch 4. In this initial patch you need to just do an unconditional error report case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("sgx epc isn't supported by this QEMU binary")); return -1; > case VIR_DOMAIN_MEMORY_MODEL_NONE: > case VIR_DOMAIN_MEMORY_MODEL_LAST: > break; > diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c > index 84363015dc..46fbadb97a 100644 > --- a/src/security/security_apparmor.c > +++ b/src/security/security_apparmor.c > @@ -693,6 +693,7 @@ AppArmorSetMemoryLabel(virSecurityManager *mgr, > return reload_profile(mgr, def, mem->nvdimmPath, true); > case VIR_DOMAIN_MEMORY_MODEL_NONE: > case VIR_DOMAIN_MEMORY_MODEL_DIMM: > + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: > case VIR_DOMAIN_MEMORY_MODEL_LAST: > break; > } > diff --git a/src/security/security_dac.c b/src/security/security_dac.c > index 04b9ecf028..64b6fabb7d 100644 > --- a/src/security/security_dac.c > +++ b/src/security/security_dac.c > @@ -1849,6 +1849,7 @@ virSecurityDACRestoreMemoryLabel(virSecurityManager *mgr, > break; > > case VIR_DOMAIN_MEMORY_MODEL_DIMM: > + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: > case VIR_DOMAIN_MEMORY_MODEL_LAST: > case VIR_DOMAIN_MEMORY_MODEL_NONE: > ret = 0; > @@ -2033,6 +2034,7 @@ virSecurityDACSetMemoryLabel(virSecurityManager *mgr, > break; > > case VIR_DOMAIN_MEMORY_MODEL_DIMM: > + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: > case VIR_DOMAIN_MEMORY_MODEL_LAST: > case VIR_DOMAIN_MEMORY_MODEL_NONE: > ret = 0; > diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c > index 0e5ea0366d..0034ad4495 100644 > --- a/src/security/security_selinux.c > +++ b/src/security/security_selinux.c > @@ -1582,6 +1582,7 @@ virSecuritySELinuxSetMemoryLabel(virSecurityManager *mgr, > > case VIR_DOMAIN_MEMORY_MODEL_NONE: > case VIR_DOMAIN_MEMORY_MODEL_DIMM: > + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: > case VIR_DOMAIN_MEMORY_MODEL_LAST: > break; > } > @@ -1609,6 +1610,7 @@ virSecuritySELinuxRestoreMemoryLabel(virSecurityManager *mgr, > break; > > case VIR_DOMAIN_MEMORY_MODEL_DIMM: > + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: > case VIR_DOMAIN_MEMORY_MODEL_NONE: > case VIR_DOMAIN_MEMORY_MODEL_LAST: > ret = 0; > -- > 2.17.1 > Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|