On 01/13/17 13:17 +0000, Stefan Hajnoczi wrote:
On Fri, Jan 13, 2017 at 07:56:51PM +0800, Haozhong Zhang wrote:
The missing of 'nvdimm' in the machine type option '-M' means NVDIMM
is disabled. QEMU should refuse to plug any NVDIMM device in this case
and report the misconfiguration.

Reported-by: Stefan Hajnoczi <stefa...@redhat.com>
Signed-off-by: Haozhong Zhang <haozhong.zh...@intel.com>
Message-Id: 20170112110928.GF4621@stefanha-x1.localdomain
Message-Id: 20170111093630.2088-1-stefa...@redhat.com
---
 hw/i386/pc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 25e8586..3907609 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1715,6 +1715,11 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev,
     }

     if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) {
+        if (!pcms->acpi_nvdimm_state.is_enabled) {
+            error_setg(&local_err,
+                       "nvdimm is not enabled: missing 'nvdimm' in '-M'");
+            goto out;
+        }

A warning is definitely useful to notify users of a possible
configuration error.

If NVDIMM is plugged at boot time, QEMU with this patch will stop and report a
message like
   qemu-system-x86_64: -device nvdimm,...: nvdimm is not enabled: missing 
'nvdimm' in '-M'

If NVDIMM is plugged via 'device_add' command, QEMU with this patch will report 
a warning message
   nvdimm is not enabled: missing 'nvdimm' in '-M'
and continue to run w/o plugging this device.


I wonder what happens when you plug an NVDIMM into a motherboard where
the firmware lacks support.  Does it:
* Refuse to boot?
* Treat the DIMM as regular RAM?
* Boot but the DIMM will not be used by firmware and kernel?

Good question. Guangrong, any idea?

Thanks,
Haozhong


QEMU should act the same way as real hardware.

Stefan



Reply via email to