Fix hw.acpi.os_name by renaming it to hw.acpi.osname. The "_name" suffix
is reserved by the loader, and thus any tunable name with that suffix will be silently discarded. Document this in the header and man page so that other developers do not develop so many bumps on the head after banging it against the wall. Detective work by: Mark Santcroos, grehan
This commit is contained in:
parent
a0ed09c0af
commit
d3e1c2411e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=125795
@ -317,7 +317,7 @@ Try increasing this number if you get the error
|
||||
Enables calling the VESA reset BIOS vector on the resume path.
|
||||
Some graphic chips have problems such as LCD white-out after resume.
|
||||
Try setting this to 0 if this causes problems for you.
|
||||
.It Va hw.acpi.os_name
|
||||
.It Va hw.acpi.osname
|
||||
Some systems' ASL may have problems because they look for names
|
||||
of Microsoft operating systems.
|
||||
This tunable overrides the value of the
|
||||
|
@ -132,6 +132,10 @@ special value
|
||||
.Dq abort ,
|
||||
which aborts the bootstrap process, use of this setting should be avoided.
|
||||
.El
|
||||
.Pp
|
||||
.Em WARNING:
|
||||
developers should never use these suffixes for any kernel environment
|
||||
variables (tunables) or conflicts will result.
|
||||
.Sh DEFAULT SETTINGS
|
||||
Most of
|
||||
.Nm Ns 's
|
||||
|
@ -38,8 +38,8 @@
|
||||
#undef _COMPONENT
|
||||
#define _COMPONENT ACPI_TABLES
|
||||
|
||||
static char acpi_os_name[128];
|
||||
TUNABLE_STR("hw.acpi.os_name", acpi_os_name, sizeof(acpi_os_name));
|
||||
static char acpi_osname[128];
|
||||
TUNABLE_STR("hw.acpi.osname", acpi_osname, sizeof(acpi_osname));
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiOsPredefinedOverride (
|
||||
@ -50,11 +50,9 @@ AcpiOsPredefinedOverride (
|
||||
return (AE_BAD_PARAMETER);
|
||||
|
||||
*NewVal = NULL;
|
||||
if (strncmp(InitVal->Name, "_OS_", 4) == 0 &&
|
||||
getenv_string("hw.acpi.os_name", acpi_os_name, sizeof(acpi_os_name))) {
|
||||
|
||||
printf("ACPI: Overriding _OS definition with \"%s\"\n", acpi_os_name);
|
||||
*NewVal = acpi_os_name;
|
||||
if (strncmp(InitVal->Name, "_OS_", 4) == 0 && strlen(acpi_osname) > 0) {
|
||||
printf("ACPI: Overriding _OS definition with \"%s\"\n", acpi_osname);
|
||||
*NewVal = acpi_osname;
|
||||
}
|
||||
|
||||
return (AE_OK);
|
||||
|
@ -265,6 +265,9 @@ void sysinit_add(struct sysinit **set, struct sysinit **set_end);
|
||||
* Infrastructure for tunable 'constants'. Value may be specified at compile
|
||||
* time or kernel load time. Rules relating tunables together can be placed
|
||||
* in a SYSINIT function at SI_SUB_TUNABLES with SI_ORDER_LAST.
|
||||
*
|
||||
* WARNING: developers should never use the reserved suffixes specified in
|
||||
* loader.conf(5) for any tunables or conflicts will result.
|
||||
*/
|
||||
|
||||
extern void tunable_int_init(void *);
|
||||
|
Loading…
Reference in New Issue
Block a user