stand/efi/eficom: Don't allow this for !HYPERV machines

If the machine isn't hyperv on amd64, then this driver fails the probe
and will do nothing further now, even if explicitly listed in a config.

Sponsored by:		Netflix
Reviewed by:		kevans
Differential Revision:	https://reviews.freebsd.org/D40221
This commit is contained in:
Warner Losh 2023-05-24 16:34:37 -06:00
parent f28dff43ad
commit 42b0b7a926

View file

@ -254,6 +254,11 @@ comc_get_con_serial_handle(const char *name)
return (NULL);
}
/*
* Called from cons_probe() to see if this device is available.
* Return immediately on x86, except for hyperv, since it interferes with
* common configurations otherwise (yes, this is just firewalling the bug).
*/
static void
comc_probe(struct console *sc)
{
@ -265,6 +270,18 @@ comc_probe(struct console *sc)
char *env, *buf, *ep;
size_t sz;
#ifdef __amd64__
/*
* This driver tickles issues on a number of different firmware loads.
* It is only required for HyperV, and is only known to work on HyperV,
* so only allow it on HyperV.
*/
env = getenv("smbios.bios.version");
if (env == NULL || strncmp(env, "Hyper-V", 7) != 0) {
return;
}
#endif
if (comc_port == NULL) {
comc_port = calloc(1, sizeof (struct serial));
if (comc_port == NULL)