[SeaBIOS] [PATCH] acpi: hide 64-bit PCI hole for Windows XP

Michael S. Tsirkin mst at redhat.com
Wed Jul 31 07:59:59 CEST 2013


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

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



More information about the SeaBIOS mailing list