On 09/13/2017 08:54 AM, Stefan Hajnoczi wrote:
Hi Michal,
You asked how NVDIMM hotplug should work if the domain was launched
without -M nvdimm=on. I'm not very familiar with ACPI so this may be
incorrect.
Hotplug relies on the presence of ACPI tables (SSDT Device=NVDR
_HID=ACPI0012) added by -M nvdimm=on. The ACPI tables contain the
interface needed to handle hotplug events.
The device_add command fails with the following message if -M nvdimm=on
is missing:
nvdimm is not enabled: missing 'nvdimm' in '-M'
I'm not sure if ACPI allows SSDT tables to be dynamically added but in
any case the current QEMU code doesn't support that.
Options for libvirt:
1. Rely on QEMU's device_add error.
Pro: If QEMU behavior ever changes then libvirt will also start
working without code changes.
Cons: Does libvirt interpret QMP error strings?
In general, we don't want to parse the human-readable portion of an
error; if management software MUST be able to distinguish between two
different types of errors in order to react differently according to
type, then we have a scenario where we want actual differing error
classes (most errors use the generic class, via error_setg(); but it is
still possible to set other error classes where it makes sense).
2. Only allow NVDIMM hotplug if the domain was started with -M
nvdimm=on.
I think QEMU will not add -M nvdimm=on to the "pc" machine type by
default since it adds the NVDIMM DSM hardware interface that increases
the security attack surface.
Stefan
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization:
qemu.org |
libvirt.org