62 lines
2.4 KiB
Diff
62 lines
2.4 KiB
Diff
|
From aaac044c06d93bd90ffa35eb091ec10c67f3ef7e Mon Sep 17 00:00:00 2001
|
||
|
From: Haozhong Zhang <haozhong.zhang@intel.com>
|
||
|
Date: Fri, 22 Dec 2017 09:51:20 +0800
|
||
|
Subject: [PATCH] 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>
|
||
|
(cherry picked from commit 8cd91acec8dfea6065272ca828405333f564a612)
|
||
|
[BR: BSC#1077823]
|
||
|
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||
|
---
|
||
|
hw/i386/pc.c | 18 ++++++++++++++----
|
||
|
1 file changed, 14 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
|
||
|
index 186545d2a4..e7faf92143 100644
|
||
|
--- a/hw/i386/pc.c
|
||
|
+++ b/hw/i386/pc.c
|
||
|
@@ -1694,9 +1694,14 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev,
|
||
|
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,
|
||
|
- "memory hotplug is not enabled: missing acpi device");
|
||
|
+ "memory hotplug is not enabled: missing acpi device or acpi disabled");
|
||
|
goto out;
|
||
|
}
|
||
|
|
||
|
@@ -1728,9 +1733,14 @@ static void pc_dimm_unplug_request(HotplugHandler *hotplug_dev,
|
||
|
Error *local_err = NULL;
|
||
|
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,
|
||
|
- "memory hotplug is not enabled: missing acpi device");
|
||
|
+ "memory hotplug is not enabled: missing acpi device or acpi disabled");
|
||
|
goto out;
|
||
|
}
|
||
|
|