On Tue, 30 Jul 2013 16:18:29 +0300 "Michael S. Tsirkin" <[email protected]> wrote:
> 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" <[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. > > 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. _OS is even worse it returns "Microsoft Windows NT" on linux, XP, WS2012R2 ... so it's not usable either. > > > > > > > > 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
