x86: acpi: introduce AcpiPmInfo::smi_on_cpuhp
Translate the "CPU hotplug with SMI" feature bit, from the property added in the last patch, to a dedicated boolean in AcpiPmInfo. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20200923094650.1301166-8-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
eb8f7f9178
commit
6d837f1f38
|
@ -95,6 +95,7 @@ typedef struct AcpiPmInfo {
|
||||||
bool s3_disabled;
|
bool s3_disabled;
|
||||||
bool s4_disabled;
|
bool s4_disabled;
|
||||||
bool pcihp_bridge_en;
|
bool pcihp_bridge_en;
|
||||||
|
bool smi_on_cpuhp;
|
||||||
uint8_t s4_val;
|
uint8_t s4_val;
|
||||||
AcpiFadtData fadt;
|
AcpiFadtData fadt;
|
||||||
uint16_t cpu_hp_io_base;
|
uint16_t cpu_hp_io_base;
|
||||||
|
@ -194,6 +195,7 @@ static void acpi_get_pm_info(MachineState *machine, AcpiPmInfo *pm)
|
||||||
pm->cpu_hp_io_base = 0;
|
pm->cpu_hp_io_base = 0;
|
||||||
pm->pcihp_io_base = 0;
|
pm->pcihp_io_base = 0;
|
||||||
pm->pcihp_io_len = 0;
|
pm->pcihp_io_len = 0;
|
||||||
|
pm->smi_on_cpuhp = false;
|
||||||
|
|
||||||
assert(obj);
|
assert(obj);
|
||||||
init_common_fadt_data(machine, obj, &pm->fadt);
|
init_common_fadt_data(machine, obj, &pm->fadt);
|
||||||
|
@ -207,12 +209,16 @@ static void acpi_get_pm_info(MachineState *machine, AcpiPmInfo *pm)
|
||||||
object_property_get_uint(obj, ACPI_PCIHP_IO_LEN_PROP, NULL);
|
object_property_get_uint(obj, ACPI_PCIHP_IO_LEN_PROP, NULL);
|
||||||
}
|
}
|
||||||
if (lpc) {
|
if (lpc) {
|
||||||
|
uint64_t smi_features = object_property_get_uint(lpc,
|
||||||
|
ICH9_LPC_SMI_NEGOTIATED_FEAT_PROP, NULL);
|
||||||
struct AcpiGenericAddress r = { .space_id = AML_AS_SYSTEM_IO,
|
struct AcpiGenericAddress r = { .space_id = AML_AS_SYSTEM_IO,
|
||||||
.bit_width = 8, .address = ICH9_RST_CNT_IOPORT };
|
.bit_width = 8, .address = ICH9_RST_CNT_IOPORT };
|
||||||
pm->fadt.reset_reg = r;
|
pm->fadt.reset_reg = r;
|
||||||
pm->fadt.reset_val = 0xf;
|
pm->fadt.reset_val = 0xf;
|
||||||
pm->fadt.flags |= 1 << ACPI_FADT_F_RESET_REG_SUP;
|
pm->fadt.flags |= 1 << ACPI_FADT_F_RESET_REG_SUP;
|
||||||
pm->cpu_hp_io_base = ICH9_CPU_HOTPLUG_IO_BASE;
|
pm->cpu_hp_io_base = ICH9_CPU_HOTPLUG_IO_BASE;
|
||||||
|
pm->smi_on_cpuhp =
|
||||||
|
!!(smi_features & BIT_ULL(ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The above need not be conditional on machine type because the reset port
|
/* The above need not be conditional on machine type because the reset port
|
||||||
|
|
Loading…
Reference in a new issue