[PATCH 1/2] bhyve: do not use deprecated IOAPIC option
The '-I' flag for enabling IOAPIC was deprecated long ago in bhyve: https://cgit.freebsd.org/src/commit/?id=a1a4cbea587a6e201e07dc121268f3e559e2... And IOAPIC is provided unconditionally since then. As no supported FreeBSD versions require that now, simply drop this flag. Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> --- src/bhyve/bhyve_command.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index a45a5d1c33..97a483d9a5 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -953,8 +953,6 @@ virBhyveProcessBuildBhyveCmd(struct _bhyveConn *driver, virDomainDef *def, /* Options */ if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON) virCommandAddArg(cmd, "-A"); /* Create an ACPI table */ - if (def->features[VIR_DOMAIN_FEATURE_APIC] == VIR_TRISTATE_SWITCH_ON) - virCommandAddArg(cmd, "-I"); /* Present ioapic to the guest */ if (def->features[VIR_DOMAIN_FEATURE_MSRS] == VIR_TRISTATE_SWITCH_ON) { if (def->msrs_features[VIR_DOMAIN_MSRS_UNKNOWN] == VIR_DOMAIN_MSRS_UNKNOWN_IGNORE) virCommandAddArg(cmd, "-w"); -- 2.52.0
Bhyve used the '-A' flag to enable ACPI until it was deprecated by commit: https://cgit.freebsd.org/src/commit/?id=6a0e7f908802b86ca5d1c0b3c404b8391d0f... With that, ACPI tables are always generated. As this change is relatively new and there are likely systems that have bhyve(8) that requires using the '-A' flag, add a capability probing for that, and use this flag if it's supported. Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> --- src/bhyve/bhyve_capabilities.c | 3 +++ src/bhyve/bhyve_capabilities.h | 1 + src/bhyve/bhyve_command.c | 7 ++++++- tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args | 2 -- tests/bhyvexml2argvtest.c | 2 ++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index e4cfc6720b..d2a48ed30c 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -255,6 +255,9 @@ bhyveProbeCapsFromHelp(unsigned int *caps, char *binary) if (strstr(help, "-c vcpus") == NULL) *caps |= BHYVE_CAP_CPUTOPOLOGY; + if (strstr(help, "-A:") != NULL) + *caps |= BHYVE_CAP_ACPI; + return 0; } diff --git a/src/bhyve/bhyve_capabilities.h b/src/bhyve/bhyve_capabilities.h index 500b235397..d5346df7ba 100644 --- a/src/bhyve/bhyve_capabilities.h +++ b/src/bhyve/bhyve_capabilities.h @@ -55,6 +55,7 @@ typedef enum { BHYVE_CAP_VIRTIO_9P = 1 << 9, BHYVE_CAP_VIRTIO_RND = 1 << 10, BHYVE_CAP_NVME = 1 << 11, + BHYVE_CAP_ACPI = 1 << 12, } virBhyveCapsFlags; int virBhyveProbeGrubCaps(virBhyveGrubCapsFlags *caps); diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 97a483d9a5..a13bdbed33 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -951,7 +951,12 @@ virBhyveProcessBuildBhyveCmd(struct _bhyveConn *driver, virDomainDef *def, virCommandAddArg(cmd, "-S"); /* Wire guest memory */ /* Options */ - if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON) + if ((def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON) && + (bhyveDriverGetBhyveCaps(driver) & BHYVE_CAP_ACPI)) + /* As of FreeBSD commit + * https://cgit.freebsd.org/src/commit/?id=6a0e7f908802b86ca5d1c0b3c404b8391d0f... + * bhyve(8) generates ACPI tables unconditionally, so nothing needs to be done + * if the capability is missing. */ virCommandAddArg(cmd, "-A"); /* Create an ACPI table */ if (def->features[VIR_DOMAIN_FEATURE_MSRS] == VIR_TRISTATE_SWITCH_ON) { if (def->msrs_features[VIR_DOMAIN_MSRS_UNKNOWN] == VIR_DOMAIN_MSRS_UNKNOWN_IGNORE) diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args index 146e3c6eee..26c96a5cee 100644 --- a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args @@ -1,8 +1,6 @@ bhyve \ -c 1 \ -m 214 \ --A \ --I \ -u \ -H \ -P \ diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index c7c18c3690..aacc3007ba 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -202,6 +202,8 @@ mymain(void) DO_TEST("base"); DO_TEST("wired"); DO_TEST("acpiapic"); + driver.bhyvecaps &= ~BHYVE_CAP_ACPI; + DO_TEST_FAILURE("acpiapic"); DO_TEST("disk-cdrom"); DO_TEST("disk-virtio"); DO_TEST("macaddr"); -- 2.52.0
Roman Bogorodskiy wrote:
The '-I' flag for enabling IOAPIC was deprecated long ago in bhyve:
https://cgit.freebsd.org/src/commit/?id=a1a4cbea587a6e201e07dc121268f3e559e2...
And IOAPIC is provided unconditionally since then. As no supported FreeBSD versions require that now, simply drop this flag.
Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> --- src/bhyve/bhyve_command.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index a45a5d1c33..97a483d9a5 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -953,8 +953,6 @@ virBhyveProcessBuildBhyveCmd(struct _bhyveConn *driver, virDomainDef *def, /* Options */ if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON) virCommandAddArg(cmd, "-A"); /* Create an ACPI table */ - if (def->features[VIR_DOMAIN_FEATURE_APIC] == VIR_TRISTATE_SWITCH_ON) - virCommandAddArg(cmd, "-I"); /* Present ioapic to the guest */ if (def->features[VIR_DOMAIN_FEATURE_MSRS] == VIR_TRISTATE_SWITCH_ON) { if (def->msrs_features[VIR_DOMAIN_MSRS_UNKNOWN] == VIR_DOMAIN_MSRS_UNKNOWN_IGNORE) virCommandAddArg(cmd, "-w"); -- 2.52.0
Bah, this commit misses this snippet: diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args index 146e3c6eee..a3d521069d 100644 --- a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-acpiapic.args @@ -2,7 +2,6 @@ bhyve \ -c 1 \ -m 214 \ -A \ --I \ -u \ -H \ -P \ And the 2/2 commit only removes the '-A' arg, not both.
participants (1)
-
Roman Bogorodskiy