aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Pau Monné <royger@FreeBSD.org>2022-02-24 15:53:30 +0000
committerRoger Pau Monné <royger@FreeBSD.org>2022-03-23 13:44:30 +0000
commit41a0aef5048aae1094f4f131185cf249050affa5 (patch)
tree0bfb7c87aee071df2fdea71e07370ca83cdf2453
parent88aff320c8058eec9b5c4f73bdbdb861e29da47a (diff)
downloadsrc-41a0aef5048aae1094f4f131185cf249050affa5.tar.gz
src-41a0aef5048aae1094f4f131185cf249050affa5.zip
vt/vga: ignore ACPI_FADT_NO_VGA unless running virtualized
There's too many broken hardware out there that wrongly has the ACPI_FADT_NO_VGA bit set. Ignore it unless running as a virtualized guest, as then the expectation would be that the hypervisor does provide correct ACPI tables. Reviewed by: emaste, 0mp, eugen Sponsored by: Citrix Systems R&D PR: 230172 (cherry picked from commit 0518832011caba1e9dcee054d7884797ed8a74c2)
-rw-r--r--share/man/man4/vt.45
-rw-r--r--sys/dev/vt/hw/vga/vt_vga.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/share/man/man4/vt.4 b/share/man/man4/vt.4
index f41acd11e4e2..9ec24cf2e140 100644
--- a/share/man/man4/vt.4
+++ b/share/man/man4/vt.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 4, 2022
+.Dd March 17, 2022
.Dt "VT" 4
.Os
.Sh NAME
@@ -204,6 +204,9 @@ graphics mode.
Set to 1 to force the usage of the VGA driver regardless of whether
ACPI IAPC_BOOT_ARCH signals no VGA support.
Can be used to workaround firmware bugs in the ACPI tables.
+Note no VGA support is only acknowledged when running virtualized.
+There is too many broken firmware that wrongly reports no VGA support on
+physical hardware.
.It Va kern.vty
Set this value to
.Ql vt
diff --git a/sys/dev/vt/hw/vga/vt_vga.c b/sys/dev/vt/hw/vga/vt_vga.c
index bac8f3eb7b97..d457f8c7b31d 100644
--- a/sys/dev/vt/hw/vga/vt_vga.c
+++ b/sys/dev/vt/hw/vga/vt_vga.c
@@ -1261,7 +1261,11 @@ vga_acpi_disabled(void)
uint16_t flags;
int ignore;
- ignore = 0;
+ /*
+ * Ignore the flag on real hardware: there's a lot of buggy firmware
+ * that will wrongly set it.
+ */
+ ignore = (vm_guest == VM_GUEST_NO);
TUNABLE_INT_FETCH("hw.vga.acpi_ignore_no_vga", &ignore);
if (ignore || !acpi_get_fadt_bootflags(&flags))
return (false);