amd64/efi: Remove setting hints for rsdp

Given that hints set this way don't work when a static kenv is compiled
into the kernel. acpi.rsdp has been set for this for the past 6 years,
and all kernels in that time have used it in preference to the hints. As
such, we no longer hints.*, so remove them.

Sponsored by:		Netflix
Reviewed by:		jhb
Differential Revision:	https://reviews.freebsd.org/D35634
This commit is contained in:
Warner Losh 2022-07-02 08:01:09 -06:00
parent 26031009cf
commit 2753bbe71b

View File

@ -119,12 +119,6 @@ elf64_exec(struct preloaded_file *fp)
/* /*
* Report the RSDP to the kernel. While this can be found with * Report the RSDP to the kernel. While this can be found with
* a BIOS boot, the RSDP may be elsewhere when booted from UEFI. * a BIOS boot, the RSDP may be elsewhere when booted from UEFI.
* The old code used the 'hints' method to communite this to
* the kernel. However, while convenient, the 'hints' method
* is fragile and does not work when static hints are compiled
* into the kernel. Instead, move to setting different tunables
* that start with acpi. The old 'hints' can be removed before
* we branch for FreeBSD 12.
*/ */
rsdp = efi_get_table(&acpi20_guid); rsdp = efi_get_table(&acpi20_guid);
@ -133,29 +127,23 @@ elf64_exec(struct preloaded_file *fp)
} }
if (rsdp != NULL) { if (rsdp != NULL) {
sprintf(buf, "0x%016llx", (unsigned long long)rsdp); sprintf(buf, "0x%016llx", (unsigned long long)rsdp);
setenv("hint.acpi.0.rsdp", buf, 1);
setenv("acpi.rsdp", buf, 1); setenv("acpi.rsdp", buf, 1);
revision = rsdp->Revision; revision = rsdp->Revision;
if (revision == 0) if (revision == 0)
revision = 1; revision = 1;
sprintf(buf, "%d", revision); sprintf(buf, "%d", revision);
setenv("hint.acpi.0.revision", buf, 1);
setenv("acpi.revision", buf, 1); setenv("acpi.revision", buf, 1);
strncpy(buf, rsdp->OemId, sizeof(rsdp->OemId)); strncpy(buf, rsdp->OemId, sizeof(rsdp->OemId));
buf[sizeof(rsdp->OemId)] = '\0'; buf[sizeof(rsdp->OemId)] = '\0';
setenv("hint.acpi.0.oem", buf, 1);
setenv("acpi.oem", buf, 1); setenv("acpi.oem", buf, 1);
sprintf(buf, "0x%016x", rsdp->RsdtPhysicalAddress); sprintf(buf, "0x%016x", rsdp->RsdtPhysicalAddress);
setenv("hint.acpi.0.rsdt", buf, 1);
setenv("acpi.rsdt", buf, 1); setenv("acpi.rsdt", buf, 1);
if (revision >= 2) { if (revision >= 2) {
/* XXX extended checksum? */ /* XXX extended checksum? */
sprintf(buf, "0x%016llx", sprintf(buf, "0x%016llx",
(unsigned long long)rsdp->XsdtPhysicalAddress); (unsigned long long)rsdp->XsdtPhysicalAddress);
setenv("hint.acpi.0.xsdt", buf, 1);
setenv("acpi.xsdt", buf, 1); setenv("acpi.xsdt", buf, 1);
sprintf(buf, "%d", rsdp->Length); sprintf(buf, "%d", rsdp->Length);
setenv("hint.acpi.0.xsdt_length", buf, 1);
setenv("acpi.xsdt_length", buf, 1); setenv("acpi.xsdt_length", buf, 1);
} }
} }