On Tue, Jul 30, 2013 at 03:10:02PM +0200, Igor Mammedov wrote: > On Tue, 30 Jul 2013 14:35:25 +0300 > "Michael S. Tsirkin" <m...@redhat.com> 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 <imamm...@redhat.com> > > > > 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.
Yes but we can work it out. > 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. Right. That's why I'm thinking _OS might be better. > > > > 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 SeaBIOS@seabios.org http://www.seabios.org/mailman/listinfo/seabios