[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC] acpi: add reset register to fadt
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [RFC] acpi: add reset register to fadt |
Date: |
Mon, 30 Mar 2015 15:56:15 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
On 29/03/2015 19:38, Marcel Apfelbaum wrote:
> On 03/28/2015 05:46 PM, Reza Jelveh wrote:
>> Some operating systems such as FreeBSD and Mac OSX need the
>> reset_register
>> section of the FADT filled to know which port to write to for a system
>> reset.
>>
>> What is the right way to set the reset_val and the reset addr in this
>> case?
>> ---
>> hw/i386/acpi-build.c | 5 +++++
>> hw/i386/acpi-defs.h | 2 ++
>> 2 files changed, 7 insertions(+)
>>
>> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
>> index d0a5c85..21c1453 100644
>> --- a/hw/i386/acpi-build.c
>> +++ b/hw/i386/acpi-build.c
>> @@ -361,6 +361,11 @@ static void fadt_setup(AcpiFadtDescriptorRev1
>> *fadt, AcpiPmInfo *pm)
>> (1 << ACPI_FADT_F_SLP_BUTTON) |
>> (1 << ACPI_FADT_F_RTC_S4));
>> fadt->flags |= cpu_to_le32(1 << ACPI_FADT_F_USE_PLATFORM_CLOCK);
>> + fadt->flags |= cpu_to_le32(1 << ACPI_FADT_F_RESET_REG_SUP);
>> + fadt->reset_val = 0xf;
>> + fadt->reset_reg.address_space_id = aml_system_io;
>> + fadt->reset_reg.register_bit_width = 8;
>> + fadt->reset_reg.address = ICH9_RST_CNT_IOPORT;
> Hi,
>
> Is this for both PC and Q35? Because I don't think PC has
> ICH9_RST_CNT_IOPORT.
It does (see RCR_IOPORT).
Paolo
> Thanks,
> Marcel
>
>> /* APIC destination mode ("Flat Logical") has an upper limit of
>> 8 CPUs
>> * For more than 8 CPUs, "Clustered Logical" mode has to be used
>> */
>> diff --git a/hw/i386/acpi-defs.h b/hw/i386/acpi-defs.h
>> index c4468f8..960c833 100644
>> --- a/hw/i386/acpi-defs.h
>> +++ b/hw/i386/acpi-defs.h
>> @@ -132,6 +132,8 @@ struct AcpiFadtDescriptorRev1
>> uint8_t reserved4a; /* Reserved */
>> uint8_t reserved4b; /* Reserved */
>> uint32_t flags;
>> + Acpi20GenericAddress reset_reg;
>> + uint8_t reset_val;
>> } QEMU_PACKED;
>> typedef struct AcpiFadtDescriptorRev1 AcpiFadtDescriptorRev1;
>>
>>
>
>
>