pc: fail memory hot-plug/unplug with -no-acpi and Q35 machine type
When -no-acpi option is used with Q35 machine type, no guest ACPI is built, but the ACPI device is still created, so only checking the presence of ACPI device before memory plug/unplug is not enough in such cases. Check whether ACPI is disabled globally in addition and fail memory plug/unplug if it's disabled. Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> Message-Id: <20171222015120.31730-1-haozhong.zhang@intel.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
2770c90d43
commit
8cd91acec8
18
hw/i386/pc.c
18
hw/i386/pc.c
|
@ -1695,9 +1695,14 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev,
|
||||||
align = memory_region_get_alignment(mr);
|
align = memory_region_get_alignment(mr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pcms->acpi_dev) {
|
/*
|
||||||
|
* When -no-acpi is used with Q35 machine type, no ACPI is built,
|
||||||
|
* but pcms->acpi_dev is still created. Check !acpi_enabled in
|
||||||
|
* addition to cover this case.
|
||||||
|
*/
|
||||||
|
if (!pcms->acpi_dev || !acpi_enabled) {
|
||||||
error_setg(&local_err,
|
error_setg(&local_err,
|
||||||
"memory hotplug is not enabled: missing acpi device");
|
"memory hotplug is not enabled: missing acpi device or acpi disabled");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1729,9 +1734,14 @@ static void pc_dimm_unplug_request(HotplugHandler *hotplug_dev,
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
PCMachineState *pcms = PC_MACHINE(hotplug_dev);
|
PCMachineState *pcms = PC_MACHINE(hotplug_dev);
|
||||||
|
|
||||||
if (!pcms->acpi_dev) {
|
/*
|
||||||
|
* When -no-acpi is used with Q35 machine type, no ACPI is built,
|
||||||
|
* but pcms->acpi_dev is still created. Check !acpi_enabled in
|
||||||
|
* addition to cover this case.
|
||||||
|
*/
|
||||||
|
if (!pcms->acpi_dev || !acpi_enabled) {
|
||||||
error_setg(&local_err,
|
error_setg(&local_err,
|
||||||
"memory hotplug is not enabled: missing acpi device");
|
"memory hotplug is not enabled: missing acpi device or acpi disabled");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue