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 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
