Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 May 2023 04:34:03 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 42b0b7a926e3 - main - stand/efi/eficom: Don't allow this for !HYPERV machines
Message-ID:  <202305250434.34P4Y3N5089301@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202305250434.34P4Y3N5089301>