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

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



Thinking about this some more I wonder whether this will be correct for old
Qemu. Furthermore, we don't actually have a legacy/SMM component in our
virtual firmware, so advertising the enable/disable mechanism via
SMI_CMD_IOPORT is a bit pointless.

Could we instead dynamically handle this in in hvmloader's acpi-handling
code something like:
 if ( !SCI_EN ) // must be new qemu if so
    outb(SMI_CMD_IOPORT, PIIX4_ACPI_ENABLE)
 BUG_ON(!SCI_EN)

Or alternatively, we should at least gate the setting of those FADT fields
on such a check, it seems to me.

 -- Keir


On 26/07/2011 15:23, "Anthony PERARD" <anthony.perard@xxxxxxxxxx> 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.
> 
> Reported-by: Tobias Geiger <tobias.geiger@xxxxxxxxx>
> Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> ---
>  tools/firmware/hvmloader/acpi/static_tables.c |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> Change:
>   - this time, always set, even on old QEMU.
>   - Add more descriptive macro.
> 
> diff --git a/tools/firmware/hvmloader/acpi/static_tables.c
> b/tools/firmware/hvmloader/acpi/static_tables.c
> index cf4b8dc..b68f6e1 100644
> --- a/tools/firmware/hvmloader/acpi/static_tables.c
> +++ b/tools/firmware/hvmloader/acpi/static_tables.c
> @@ -42,6 +42,10 @@ struct acpi_20_facs Facs = {
>  #define ACPI_PM_TMR_BLK_BIT_WIDTH           0x20
>  #define ACPI_PM_TMR_BLK_BIT_OFFSET          0x00
>  
> +#define SMI_CMD_IOPORT                      0xb2
> +#define PIIX4_ACPI_ENABLE                   0xf1
> +#define PIIX4_ACPI_DISABLE                  0xf0
> +
>  struct acpi_20_fadt Fadt = {
>      .header = {
>          .signature    = ACPI_2_0_FADT_SIGNATURE,
> @@ -55,6 +59,10 @@ struct acpi_20_fadt Fadt = {
>      },
>  
>      .sci_int = 9,
> +    .smi_cmd = SMI_CMD_IOPORT,
> +
> +    .acpi_enable = PIIX4_ACPI_ENABLE,
> +    .acpi_disable = PIIX4_ACPI_DISABLE,
>  
>      .pm1a_evt_blk = ACPI_PM1A_EVT_BLK_ADDRESS_V1,
>      .pm1a_cnt_blk = ACPI_PM1A_CNT_BLK_ADDRESS_V1,



_______________________________________________
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®.