The Notebook Review forums were hosted by TechTarget, who shut down them down on January 31, 2022. This static read-only archive was pulled by NBR forum users between January 20 and January 31, 2022, in an effort to make sure that the valuable technical information that had been posted on the forums is preserved. For current discussions, many NBR forum users moved over to NotebookTalk.net after the shutdown.
Problems? See this thread at archive.org.

    BIOS OSI Method

    Discussion in 'Acer' started by weinter, Jan 11, 2010.

  1. weinter

    weinter /dev/null

    Reputations:
    596
    Messages:
    2,798
    Likes Received:
    1
    Trophy Points:
    56
    There is something in the ACPI that detect what OS you are running and implement behaviour accordingly for interoperability.

    Consider the ASL code below(in my BIOS):
    Method(_INI, 0, NotSerialized)
    {
    Store(0x07D0, OSYS)
    If(CondRefOf(_OSI, Local0))
    {
    If(_OSI("Windows 2001"))
    {
    Store(0x07D1, OSYS)
    }
    If(_OSI("Windows 2001 SP1"))
    {
    Store(0x07D1, OSYS)
    }
    If(_OSI("Windows 2001 SP2"))
    {
    Store(0x07D2, OSYS)
    }
    If(_OSI("Windows 2006"))
    {
    Store(0x07D6, OSYS)
    }

    }
    }
    OSYS is a variable to store operating system it is running.
    The code simply says assume 0x07D0 by default until you detect Windows 2006 (aka Windows Vista) then use 0x07D6 if you detect Windows 2001(aka Windows Xp SP1) use 0x07D1 and Windows 2001 SP2 (Windows Xp Service Pack 2) use 0x07D2 .
    What does it mean?
    Certain features the DSDT implements, need to be compatible with the OS it is running on.

    If(_OSI("Windows 2009"))
    {
    Store(0x07D6, OSYS)
    }

    So I added the code in red so it will load 0x07D6 and implement full feature when it sees Windows 2009(aka Windows 7).

    The thing is OEM like to just the OSI method to ID the OS and assume DSDT functions to ensure proper backward compatibility unfortunately this might also introduce non-full feature in future OS.