Patchwork [12/12] Fix 64bit PCI issues on Windows

login
register
mail settings
Submitter Alexey Korolev
Date April 24, 2012, 6:26 a.m.
Message ID <1335248790.13579.18.camel@nzhmlwks0057.ad.endace.com>
Download mbox | patch
Permalink /patch/154599/
State New
Headers show

Comments

Alexey Korolev - April 24, 2012, 6:26 a.m.
This patch solves issues on Windows guests, when 64bit
BAR's are present. It is also helpful on Linux guests
when use_crs kernel boot option is set.

Signed-off-by: Alexey Korolev <alexey.korolev@endace.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 src/acpi-dsdt.dsl |    7 +++++
 src/acpi-dsdt.hex |   64 +++++++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 62 insertions(+), 9 deletions(-)
Kevin O'Connor - May 12, 2012, 6:21 p.m.
On Tue, Apr 24, 2012 at 06:26:30PM +1200, Alexey Korolev wrote:
> This patch solves issues on Windows guests, when 64bit
> BAR's are present. It is also helpful on Linux guests
> when use_crs kernel boot option is set.

Unfortunately, this patch causes problems for WinXP, so I reverted it.

-Kevin

Patch

diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
index 4bdc268..4a18617 100644
--- a/src/acpi-dsdt.dsl
+++ b/src/acpi-dsdt.dsl
@@ -175,6 +175,13 @@  DefinitionBlock (
                     0x00000000,         // Address Translation Offset
                     0x1EC00000,         // Address Length
                     ,, , AddressRangeMemory, TypeStatic)
+                QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
+                    0x00000000,          // Address Space Granularity
+                    0x8000000000,        // Address Range Minimum
+                    0xFFFFFFFFFF,        // Address Range Maximum
+                    0x00000000,          // Address Translation Offset
+                    0x8000000000,        // Address Length
+                    ,, , AddressRangeMemory, TypeStatic)
             })
         }
     }
diff --git a/src/acpi-dsdt.hex b/src/acpi-dsdt.hex
index a4af597..07f0e18 100644
--- a/src/acpi-dsdt.hex
+++ b/src/acpi-dsdt.hex
@@ -3,12 +3,12 @@  static unsigned char AmlCode[] = {
 0x53,
 0x44,
 0x54,
-0x21,
+0x4f,
 0x11,
 0x0,
 0x0,
 0x1,
-0xe8,
+0xca,
 0x42,
 0x58,
 0x50,
@@ -110,16 +110,16 @@  static unsigned char AmlCode[] = {
 0x47,
 0x42,
 0x10,
-0x44,
-0x81,
+0x42,
+0x84,
 0x5f,
 0x53,
 0x42,
 0x5f,
 0x5b,
 0x82,
-0x4c,
-0x80,
+0x4a,
+0x83,
 0x50,
 0x43,
 0x49,
@@ -2064,10 +2064,10 @@  static unsigned char AmlCode[] = {
 0x52,
 0x53,
 0x11,
-0x42,
-0x7,
+0x40,
 0xa,
-0x6e,
+0xa,
+0x9c,
 0x88,
 0xd,
 0x0,
@@ -2176,6 +2176,52 @@  static unsigned char AmlCode[] = {
 0x0,
 0xc0,
 0x1e,
+0x8a,
+0x2b,
+0x0,
+0x0,
+0xc,
+0x3,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x80,
+0x0,
+0x0,
+0x0,
+0xff,
+0xff,
+0xff,
+0xff,
+0xff,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x0,
+0x80,
+0x0,
+0x0,
+0x0,
 0x79,
 0x0,
 0x10,