WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Re: cs 23453:4f4970d2848d beaks Win 7

The issue with 23453:4f4970d2848d is that it uses madt_csum_addr and
madt_lapic0_addr to initialise bios_info before they have themselves
been initialised.

But in xen-unstable.hg tip everything has moved around and the issue now
turns out to be that we clear the acpi_info struct _after_ we've setup
the madt_* fields. Ooops!

Thanks for reporting.

Cheers,
Ian.

# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1314889401 -3600
# Node ID bb97bd46df6c6d8562759a964ebf6c31b6361a7a
# Parent  85b29185c9119ff9139596251d7bd13586853994
hvmloader: don't clear acpi_info after filling in some fields

In particular the madt_lapic0_addr and madt_csum_addr fields are
filled in while building the tables.

This fixes a bluescreen on shutdown with certain versions of Windows.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Reported-by: Christoph Egger <Christoph.Egger@xxxxxxx>

diff -r 85b29185c911 -r bb97bd46df6c tools/firmware/hvmloader/acpi/build.c
--- a/tools/firmware/hvmloader/acpi/build.c     Thu Sep 01 09:39:25 2011 +0100
+++ b/tools/firmware/hvmloader/acpi/build.c     Thu Sep 01 16:03:21 2011 +0100
@@ -277,6 +277,8 @@ void acpi_build_tables(unsigned int phys
     unsigned long        secondary_tables[16];
     int                  nr_secondaries, i;
 
+    memset(acpi_info, 0, sizeof(*acpi_info));
+
     /*
      * Fill in high-memory data structures, starting at @buf.
      */
@@ -375,7 +377,6 @@ void acpi_build_tables(unsigned int phys
                  offsetof(struct acpi_20_rsdp, extended_checksum),
                  sizeof(struct acpi_20_rsdp));
 
-    memset(acpi_info, 0, sizeof(*acpi_info));
     acpi_info->com1_present = uart_exists(0x3f8);
     acpi_info->com2_present = uart_exists(0x2f8);
     acpi_info->lpt1_present = lpt_exists(0x378);



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel