git: 42b0b7a926e3 - main - stand/efi/eficom: Don't allow this for !HYPERV machines
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 25 May 2023 04:34:03 UTC
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=42b0b7a926e3e4834dda923a0751f312e008ad92 commit 42b0b7a926e3e4834dda923a0751f312e008ad92 Author: Warner Losh <imp@FreeBSD.org> AuthorDate: 2023-05-24 22:34:37 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2023-05-25 04:33:53 +0000 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 --- stand/efi/libefi/eficom.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/stand/efi/libefi/eficom.c b/stand/efi/libefi/eficom.c index ca08458c2ca2..586202efee00 100644 --- a/stand/efi/libefi/eficom.c +++ b/stand/efi/libefi/eficom.c @@ -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)