0

I'm experiencing strange behaviour with hibernation on my laptop, and want to pretend that I'm running a recent version of Windows to see if this helps things.

Microsoft's How to Identify the Windows Version in ACPI by Using _OSI refers to _OSI which I assume maps to the kernel command line acpi_osi.

However based on the kernel docs, acpi_os_name is mentioned regarding spoofing:

    acpi_os_name=   [HW,ACPI] Tell ACPI BIOS the name of the OS
                    Format: To spoof as Windows 98: ="Microsoft Windows"

Strangely, this gentoo page doesn't say to modify acpi_os_name, but rather acpi_osi to pretend to be Windows.

The kernel doco says that acpi_osi is for supported OSes:

    acpi_osi=       [HW,ACPI] Modify list of supported OS interface strings
                    [...]  
                    acpi_osi=!*             # remove all strings
                    acpi_osi=!              # disable all built-in OS vendor strings

The documentation seems quite scant, and for me raises these questions:

  1. What is the difference / interactions between the two?

    1.1 Does one override the other?

  2. If I set acpi_os_name, should I also add it to acpi_osi as a "supported" OS?

  3. Should I disable all with acpi_osi=! before setting another value?

  4. What's the difference between disabling and removing a string? Is either persistent across reboots?

  5. Is there a way of finding out what the ACPI/UEFI supports or expects values to be?

Tom Hale
  • 28,728
  • 32
  • 139
  • 229
  • Related: https://unix.stackexchange.com/questions/110624/what-do-the-kernel-parameters-acpi-osi-linux-and-acpi-backlight-vendor-do – Tom Hale Sep 18 '20 at 08:14

1 Answers1

0

A partial answer for 5)

List the strings coming from ACPI which match Windows:

(cd /tmp && mkdir acpi && cd acpi && sudo acpidump -b && for i in *; do echo $i:; strings -a $i | grep -i windows; done)

My output was:

[...]
dsdt.dat:
Windows 2001
Windows 2001 SP1
Windows 2001 SP2
Windows 2001.1
Windows 2006
Windows 2009
Windows 2012
Windows 2013
Windows 2015
[...]
ssdt9.dat:
Windows 2013

I have no idea why ssdt9 includes only Windows 2013.

Tom Hale
  • 28,728
  • 32
  • 139
  • 229