On Mon, Nov 27, 2017 at 12:35:17PM +0800, Haozhong Zhang wrote: > @@ -312,6 +315,10 @@ nvdimm_build_structure_memdev(GArray *structures, > DeviceState *dev) > > /* Only one interleave for PMEM. */ > nfit_memdev->interleave_ways = cpu_to_le16(1); > + > + if (nvdimm->unarmed) { > + nfit_memdev->flags |= ACPI_NFIT_MEM_NOT_ARMED;
Missing cpu_to_le16()? > +static void nvdimm_set_unarmed(Object *obj, bool value, Error **errp) > +{ > + NVDIMMDevice *nvdimm = NVDIMM(obj); > + Error *local_err = NULL; > + > + if (memory_region_size(&nvdimm->nvdimm_mr)) { > + error_setg(&local_err, "cannot change property value"); This error message does not explain why the value cannot be changed. I guess this is checking if the device has been realized. Please call qdev_prop_set_after_realize() instead: if (memory_region_size(&nvdimm->nvdimm_mr)) { qdev_prop_set_after_realize(DEVICE(obj), "unarmed", &local_err); goto out; }
signature.asc
Description: PGP signature