mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
bhyve: virBhyveProbeCaps: BHYVE_CAP_LPC_BOOTROM
Implement the BHACE_CAP_LPC_BOOTROM capability by checking the stderr output of 'bhyve -l bootrom'. If the bootrom option is unsupported, this will contain the following output: bhyve: invalid lpc device configuration 'bootrom' On newer bhyve versions that do support specifying a bootrom image, the standard help will be printed.
This commit is contained in:
parent
321ff4087c
commit
b6ae129534
@ -239,6 +239,29 @@ bhyveProbeCapsNetE1000(unsigned int *caps, char *binary)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
bhyveProbeCapsLPC_Bootrom(unsigned int *caps, char *binary)
|
||||
{
|
||||
char *error;
|
||||
virCommandPtr cmd = NULL;
|
||||
int ret = -1, exit;
|
||||
|
||||
cmd = virCommandNew(binary);
|
||||
virCommandAddArgList(cmd, "-l", "bootrom", NULL);
|
||||
virCommandSetErrorBuffer(cmd, &error);
|
||||
if (virCommandRun(cmd, &exit) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (strstr(error, "bhyve: invalid lpc device configuration 'bootrom'") == NULL)
|
||||
*caps |= BHYVE_CAP_LPC_BOOTROM;
|
||||
|
||||
ret = 0;
|
||||
cleanup:
|
||||
VIR_FREE(error);
|
||||
virCommandFree(cmd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
virBhyveProbeCaps(unsigned int *caps)
|
||||
{
|
||||
@ -260,6 +283,9 @@ virBhyveProbeCaps(unsigned int *caps)
|
||||
if ((ret = bhyveProbeCapsNetE1000(caps, binary)))
|
||||
goto out;
|
||||
|
||||
if ((ret = bhyveProbeCapsLPC_Bootrom(caps, binary)))
|
||||
goto out;
|
||||
|
||||
out:
|
||||
VIR_FREE(binary);
|
||||
return ret;
|
||||
|
@ -40,6 +40,7 @@ typedef enum {
|
||||
BHYVE_CAP_RTC_UTC = 1 << 0,
|
||||
BHYVE_CAP_AHCI32SLOT = 1 << 1,
|
||||
BHYVE_CAP_NET_E1000 = 1 << 2,
|
||||
BHYVE_CAP_LPC_BOOTROM = 1 << 3,
|
||||
} virBhyveCapsFlags;
|
||||
|
||||
int virBhyveProbeGrubCaps(virBhyveGrubCapsFlags *caps);
|
||||
|
Loading…
x
Reference in New Issue
Block a user