On Tue, 30 Jul 2013 14:35:25 +0300 "Michael S. Tsirkin" <[email protected]> wrote:
> On Tue, Jul 30, 2013 at 09:00:38AM +0200, Igor Mammedov wrote: > > Windows XP (32 and 64 bit) crashes if 64-bit PCI hole is present. > > Use _OSI ACPI method to blacklist it and hide 64-bit PCI hole. > > > > _OSI strings reported by XP are taken from here: > > http://msdn.microsoft.com/library/windows/hardware/gg463275 > > > > Signed-off-by: Igor Mammedov <[email protected]> > > Hmm did you test this with other OS-es? > OSI matches multiple strings so this will often > disable the 64 bit memory for newer windows or e.g. > for linux. > > See e.g. > ftp://ftp.suse.com/pub/people/trenn/ACPI_BIOS_on_Linux_guide/acpi_guideline_for_vendors.pdf according to "3.2 How OSI is implemented on Linux" _OSI is broken on linux, but I guess we should accommodate this buggy behavior for compatibility reasons. _OS could be better way to do it, but I haven't found any MS document specifying _OS values for Windows flavors. So far from testing of Windows OSes only (32|64bit) Windows XP and Windows Server 2003 [R2] crash when 64-bit PCI hole is present, the rest installs/boots just fine. > > Could we use _OS instead? > That's a single string, so it will only match a specific OS. > > > --- > > src/acpi-dsdt.dsl | 25 +++++++++++++++++++++++++ > > 1 files changed, 25 insertions(+), 0 deletions(-) > > > > diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl > > index 158f6b4..7b55636 100644 > > --- a/src/acpi-dsdt.dsl > > +++ b/src/acpi-dsdt.dsl > > @@ -33,6 +33,31 @@ DefinitionBlock ( > > > > > > /**************************************************************** > > + * OS detection > > + ****************************************************************/ > > + > > + Scope(\_SB) { > > + External(\P1V, IntObj) > > + > > + Method(_INI) { > > + If (CondRefOf (\_OSI, Local0)) { > > + /* disable 64-bit PCI window for Windows XP and its > > variants */ > > + If (\_OSI ("Windows 2001")) { > > + Store (Zero, P1V) > > + } > > + > > + If (\_OSI ("Windows 2001 SP1")) { > > + Store (Zero, P1V) > > + } > > + > > + If (\_OSI ("Windows 2001 SP2")) { > > + Store (Zero, P1V) > > + } > > + } > > + } > > + } > > + > > +/**************************************************************** > > * PCI Bus definition > > ****************************************************************/ > > > > -- > > 1.7.1 _______________________________________________ SeaBIOS mailing list [email protected] http://www.seabios.org/mailman/listinfo/seabios
