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:
@@ -254,6 +254,11 @@ comc_get_con_serial_handle(const char *name)
|
|||||||
return (NULL);
|
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
|
static void
|
||||||
comc_probe(struct console *sc)
|
comc_probe(struct console *sc)
|
||||||
{
|
{
|
||||||
@@ -265,6 +270,18 @@ comc_probe(struct console *sc)
|
|||||||
char *env, *buf, *ep;
|
char *env, *buf, *ep;
|
||||||
size_t sz;
|
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) {
|
if (comc_port == NULL) {
|
||||||
comc_port = calloc(1, sizeof (struct serial));
|
comc_port = calloc(1, sizeof (struct serial));
|
||||||
if (comc_port == NULL)
|
if (comc_port == NULL)
|
||||||
|
|||||||
Reference in New Issue
Block a user