On Wed, 31 Jul 2013 08:59:59 +0300 "Michael S. Tsirkin" mst@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 imammedo@redhat.com
So to expand on what I said, just reading this document:
" Windows operating systems return 0xFFFFFFFF if the argument to the _OSI method specifies an earlier version of Windows. For example, Windows 7 returns 0xFFFFFFFF for both “Windows 2009” (Windows 7) and “Windows 2006” (Windows Vista®)."
This would imply that all moder windows versions return 0xFFFFFFFF in response to querying Windows 2001.
To see what a modern Linux supports, see drivers/acpi/acpica/utosi.c
Looks like the result of this patch is to always disable the 64 bit window?
Yep, patch is not valid.
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