Lines Matching refs:nvdimm
38 NVDIMMDevice *nvdimm = NVDIMM(obj); in nvdimm_get_label_size() local
39 uint64_t value = nvdimm->label_size; in nvdimm_get_label_size()
47 NVDIMMDevice *nvdimm = NVDIMM(obj); in nvdimm_set_label_size() local
50 if (nvdimm->nvdimm_mr) { in nvdimm_set_label_size()
65 nvdimm->label_size = value; in nvdimm_set_label_size()
71 NVDIMMDevice *nvdimm = NVDIMM(obj); in nvdimm_get_uuid() local
74 value = qemu_uuid_unparse_strdup(&nvdimm->uuid); in nvdimm_get_uuid()
84 NVDIMMDevice *nvdimm = NVDIMM(obj); in nvdimm_set_uuid() local
91 if (qemu_uuid_parse(value, &nvdimm->uuid) != 0) { in nvdimm_set_uuid()
112 NVDIMMDevice *nvdimm = NVDIMM(obj); in nvdimm_finalize() local
114 g_free(nvdimm->nvdimm_mr); in nvdimm_finalize()
117 static void nvdimm_prepare_memory_region(NVDIMMDevice *nvdimm, Error **errp) in nvdimm_prepare_memory_region() argument
119 PCDIMMDevice *dimm = PC_DIMM(nvdimm); in nvdimm_prepare_memory_region()
123 g_assert(!nvdimm->nvdimm_mr); in nvdimm_prepare_memory_region()
134 pmem_size = size - nvdimm->label_size; in nvdimm_prepare_memory_region()
135 nvdimm->label_data = memory_region_get_ram_ptr(mr) + pmem_size; in nvdimm_prepare_memory_region()
138 if (size <= nvdimm->label_size || !pmem_size) { in nvdimm_prepare_memory_region()
145 memory_region_size(mr), nvdimm->label_size, align); in nvdimm_prepare_memory_region()
149 if (!nvdimm->unarmed && memory_region_is_rom(mr)) { in nvdimm_prepare_memory_region()
158 nvdimm->readonly = true; in nvdimm_prepare_memory_region()
161 nvdimm->nvdimm_mr = g_new(MemoryRegion, 1); in nvdimm_prepare_memory_region()
162 memory_region_init_alias(nvdimm->nvdimm_mr, OBJECT(dimm), in nvdimm_prepare_memory_region()
164 memory_region_set_nonvolatile(nvdimm->nvdimm_mr, true); in nvdimm_prepare_memory_region()
165 nvdimm->nvdimm_mr->align = align; in nvdimm_prepare_memory_region()
171 NVDIMMDevice *nvdimm = NVDIMM(md); in nvdimm_md_get_memory_region() local
174 if (!nvdimm->nvdimm_mr) { in nvdimm_md_get_memory_region()
175 nvdimm_prepare_memory_region(nvdimm, &local_err); in nvdimm_md_get_memory_region()
181 return nvdimm->nvdimm_mr; in nvdimm_md_get_memory_region()
186 NVDIMMDevice *nvdimm = NVDIMM(dimm); in nvdimm_realize() local
187 NVDIMMClass *ndc = NVDIMM_GET_CLASS(nvdimm); in nvdimm_realize()
189 if (!nvdimm->nvdimm_mr) { in nvdimm_realize()
190 nvdimm_prepare_memory_region(nvdimm, errp); in nvdimm_realize()
194 ndc->realize(nvdimm, errp); in nvdimm_realize()
200 NVDIMMDevice *nvdimm = NVDIMM(dimm); in nvdimm_unrealize() local
201 NVDIMMClass *ndc = NVDIMM_GET_CLASS(nvdimm); in nvdimm_unrealize()
204 ndc->unrealize(nvdimm); in nvdimm_unrealize()
212 static void nvdimm_validate_rw_label_data(NVDIMMDevice *nvdimm, uint64_t size, in nvdimm_validate_rw_label_data() argument
215 assert((nvdimm->label_size >= size + offset) && (offset + size > offset)); in nvdimm_validate_rw_label_data()
216 assert(!is_write || !nvdimm->readonly); in nvdimm_validate_rw_label_data()
219 static void nvdimm_read_label_data(NVDIMMDevice *nvdimm, void *buf, in nvdimm_read_label_data() argument
222 nvdimm_validate_rw_label_data(nvdimm, size, offset, false); in nvdimm_read_label_data()
224 memcpy(buf, nvdimm->label_data + offset, size); in nvdimm_read_label_data()
227 static void nvdimm_write_label_data(NVDIMMDevice *nvdimm, const void *buf, in nvdimm_write_label_data() argument
231 PCDIMMDevice *dimm = PC_DIMM(nvdimm); in nvdimm_write_label_data()
236 nvdimm_validate_rw_label_data(nvdimm, size, offset, true); in nvdimm_write_label_data()
239 memcpy(nvdimm->label_data + offset, buf, size); in nvdimm_write_label_data()
241 pmem_memcpy_persist(nvdimm->label_data + offset, buf, size); in nvdimm_write_label_data()
245 backend_offset = memory_region_size(mr) - nvdimm->label_size + offset; in nvdimm_write_label_data()