[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Re: [PATCH] hvmloader: Fix FADT table with QEMU Upstream.



On 26/07/2011 13:25, "Ian Campbell" <Ian.Campbell@xxxxxxxxxx> wrote:

> On Tue, 2011-07-26 at 07:57 -0400, Anthony PERARD wrote:
>> When booting a Windows guest, the OS report an issue with the ACPI (in a
>> BSOD). The exact issue is "SCI_EN never becomes set in PM1 Control
>> Register." (quoted from WinDbg help).
>> 
>> To fix this, this patch set some value related to the QEMU upstream: The
>> SMI command port, and the acpi_enable/acpi_disable values.
> 
> Would it be harmful to include these new values in the Fadt for every
> BIOS rather than adding special cases?
> 
> If this really needs to be Sea BIOS specific then I think it would be
> better done as a function call (e.g. acpi_enable_whatever()) into the
> ACPI code (where the rest of the Fadt init lives) from the seabios hooks
> rather than splitting the initialisation between two locations (or maybe
> better this should be the default and the ROMBIOS hooks should disable
> it if necessary).

Descriptive macros and/or comments that describe the magic numbers being
poked into the FADT would also be helpful.

 -- Keir

> Ian.
> 
>> Reported-by: Tobias Geiger <tobias.geiger@xxxxxxxxx>
>> Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
>> ---
>>  tools/firmware/hvmloader/seabios.c |    8 ++++++++
>>  1 files changed, 8 insertions(+), 0 deletions(-)
>> 
>> diff --git a/tools/firmware/hvmloader/seabios.c
>> b/tools/firmware/hvmloader/seabios.c
>> index 8cd0108..1b89ba7 100644
>> --- a/tools/firmware/hvmloader/seabios.c
>> +++ b/tools/firmware/hvmloader/seabios.c
>> @@ -28,6 +28,9 @@
>>  #include "smbios_types.h"
>>  #include "acpi/acpi2_0.h"
>>  
>> +/* Upstream QEMU require to set more field in the FADT */
>> +extern struct acpi_20_fadt Fadt;
>> +
>>  #define ROM_INCLUDE_SEABIOS
>>  #include "roms.inc"
>>  
>> @@ -91,6 +94,11 @@ static void add_table(uint32_t t)
>>  static void seabios_acpi_build_tables(void)
>>  {
>>      uint32_t rsdp = (uint32_t)scratch_alloc(sizeof(struct acpi_20_rsdp), 0);
>> +
>> +    Fadt.smi_cmd = 0xb2;
>> +    Fadt.acpi_enable = 0xf1;
>> +    Fadt.acpi_disable = 0xf0;
>> +
>>      acpi_build_tables(rsdp);
>>      add_table(rsdp);
>>  }
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.