Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP4
libvirt.11425
6596ac42-backend-virNodeGetSEVInfo.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 6596ac42-backend-virNodeGetSEVInfo.patch of Package libvirt.11425
commit 6596ac4235638d5d6d49ea850b8e7f980c98a273 Author: Brijesh Singh <brijesh.singh@amd.com> Date: Fri Jun 8 09:40:55 2018 -0500 qemu: Implement the driver backend for virNodeGetSEVInfo() Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> Reviewed-by: Erik Skultety <eskultet@redhat.com> Index: libvirt-4.0.0/src/qemu/qemu_capabilities.c =================================================================== --- libvirt-4.0.0.orig/src/qemu/qemu_capabilities.c +++ libvirt-4.0.0/src/qemu/qemu_capabilities.c @@ -2818,6 +2818,13 @@ virQEMUCapsSetSEVCapabilities(virQEMUCap } +virSEVCapabilityPtr +virQEMUCapsGetSEVCapabilities(virQEMUCapsPtr qemuCaps) +{ + return qemuCaps->sevCapabilities; +} + + static int virQEMUCapsProbeQMPCommands(virQEMUCapsPtr qemuCaps, qemuMonitorPtr mon) Index: libvirt-4.0.0/src/qemu/qemu_capabilities.h =================================================================== --- libvirt-4.0.0.orig/src/qemu/qemu_capabilities.h +++ libvirt-4.0.0/src/qemu/qemu_capabilities.h @@ -569,4 +569,8 @@ bool virQEMUCapsGuestIsNative(virArch ho bool virQEMUCapsCPUFilterFeatures(const char *name, void *opaque); + +virSEVCapabilityPtr +virQEMUCapsGetSEVCapabilities(virQEMUCapsPtr qemuCaps); + #endif /* __QEMU_CAPABILITIES_H__*/ Index: libvirt-4.0.0/src/qemu/qemu_driver.c =================================================================== --- libvirt-4.0.0.orig/src/qemu/qemu_driver.c +++ libvirt-4.0.0/src/qemu/qemu_driver.c @@ -21124,6 +21124,82 @@ qemuDomainSetLifecycleAction(virDomainPt } +static int +qemuGetSEVInfoToParams(virQEMUCapsPtr qemuCaps, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags) +{ + int maxpar = 0; + int n = 0; + virSEVCapabilityPtr sev = virQEMUCapsGetSEVCapabilities(qemuCaps); + virTypedParameterPtr sevParams = NULL; + + virCheckFlags(VIR_TYPED_PARAM_STRING_OKAY, -1); + + if (virTypedParamsAddString(&sevParams, &n, &maxpar, + VIR_NODE_SEV_PDH, sev->pdh) < 0) + return -1; + + if (virTypedParamsAddString(&sevParams, &n, &maxpar, + VIR_NODE_SEV_CERT_CHAIN, sev->cert_chain) < 0) + goto cleanup; + + if (virTypedParamsAddUInt(&sevParams, &n, &maxpar, + VIR_NODE_SEV_CBITPOS, sev->cbitpos) < 0) + goto cleanup; + + if (virTypedParamsAddUInt(&sevParams, &n, &maxpar, + VIR_NODE_SEV_REDUCED_PHYS_BITS, + sev->reduced_phys_bits) < 0) + goto cleanup; + + VIR_STEAL_PTR(*params, sevParams); + *nparams = n; + return 0; + + cleanup: + virTypedParamsFree(sevParams, n); + return -1; +} + + +static int +qemuNodeGetSEVInfo(virConnectPtr conn, + virTypedParameterPtr *params, + int *nparams, + unsigned int flags) +{ + virQEMUDriverPtr driver = conn->privateData; + virQEMUCapsPtr qemucaps = NULL; + int ret = -1; + + if (virNodeGetSevInfoEnsureACL(conn) < 0) + return ret; + + qemucaps = virQEMUCapsCacheLookupByArch(driver->qemuCapsCache, + virArchFromHost()); + if (!qemucaps) + goto cleanup; + + if (!virQEMUCapsGet(qemucaps, QEMU_CAPS_SEV_GUEST)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("QEMU does not support SEV guest")); + goto cleanup; + } + + if (qemuGetSEVInfoToParams(qemucaps, params, nparams, flags) < 0) + goto cleanup; + + ret = 0; + + cleanup: + virObjectUnref(qemucaps); + + return ret; +} + + static virHypervisorDriver qemuHypervisorDriver = { .name = QEMU_DRIVER_NAME, .connectOpen = qemuConnectOpen, /* 0.2.0 */ @@ -21343,6 +21419,7 @@ static virHypervisorDriver qemuHyperviso .domainSetVcpu = qemuDomainSetVcpu, /* 3.1.0 */ .domainSetBlockThreshold = qemuDomainSetBlockThreshold, /* 3.2.0 */ .domainSetLifecycleAction = qemuDomainSetLifecycleAction, /* 3.9.0 */ + .nodeGetSEVInfo = qemuNodeGetSEVInfo, /* 4.0.0 */ };
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor