i386/sev: Fallback to the default SEV device if none provided in sev_get_capabilities()
When management tools (e.g. libvirt) query QEMU capabilities,
they start QEMU with a minimalistic configuration and issue
various commands on monitor. One of the command issued is/might
be "query-sev-capabilities" to learn values like cbitpos or
reduced-phys-bits. But as of v9.0.0-1145-g16dcf200dc the monitor
command returns an error instead.
This creates a chicken-egg problem because in order to query
those aforementioned values QEMU needs to be started with a
'sev-guest' object. But to start QEMU with the values must be
known.
I think it's safe to assume that the default path ("/dev/sev")
provides the same data as user provided one. So fall back to it.
Fixes: 16dcf200dc
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Link: https://lore.kernel.org/r/157f93712c23818be193ce785f648f0060b33dee.1719218926.git.mprivozn@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
ab5f4edf72
commit
f4e5f302b3
@ -587,13 +587,13 @@ static SevCapability *sev_get_capabilities(Error **errp)
|
||||
}
|
||||
|
||||
sev_common = SEV_COMMON(MACHINE(qdev_get_machine())->cgs);
|
||||
if (!sev_common) {
|
||||
error_setg(errp, "SEV is not configured");
|
||||
return NULL;
|
||||
if (sev_common) {
|
||||
sev_device = object_property_get_str(OBJECT(sev_common), "sev-device",
|
||||
&error_abort);
|
||||
} else {
|
||||
sev_device = g_strdup(DEFAULT_SEV_DEVICE);
|
||||
}
|
||||
|
||||
sev_device = object_property_get_str(OBJECT(sev_common), "sev-device",
|
||||
&error_abort);
|
||||
fd = open(sev_device, O_RDWR);
|
||||
if (fd < 0) {
|
||||
error_setg_errno(errp, errno, "SEV: Failed to open %s",
|
||||
|
Loading…
Reference in New Issue
Block a user