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
MFC: 3 days
Sponsored by: Citrix Systems R&D
PR: 230172
Differential revision: https://reviews.freebsd.org/D34392
This commit is contained in:
Roger Pau Monné 2022-02-24 16:53:30 +01:00
parent 396a8479b0
commit 0518832011
2 changed files with 9 additions and 2 deletions

View File

@ -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

View File

@ -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);