Lines Matching refs:nv

67 read_label_area_size(struct nvdimm_dev *nv)
76 handle = nvdimm_root_get_acpi_handle(nv->nv_dev);
91 nv->label_area_size = out[1];
92 nv->max_label_xfer = out[2];
102 read_label_area(struct nvdimm_dev *nv, uint8_t *dest, off_t offset,
114 handle = nvdimm_root_get_acpi_handle(nv->nv_dev);
116 offset + length > nv->label_area_size ||
126 to_read = MIN(length, nv->max_label_xfer);
201 read_label(struct nvdimm_dev *nv, int num)
208 offset = nv->label_index->label_offset +
209 num * (128 << nv->label_index->label_size);
211 error = read_label_area(nv, (uint8_t *)&entry->label, offset,
226 if (SLIST_EMPTY(&nv->labels) ||
228 SLIST_FIRST(&nv->labels)->label.dimm_phys_addr) {
229 SLIST_INSERT_HEAD(&nv->labels, entry, link);
232 SLIST_FOREACH_SAFE(i, &nv->labels, link, next) {
243 read_labels(struct nvdimm_dev *nv)
254 nv->label_area_size)
257 num_labels = (nv->label_area_size - index_size) /
261 error = read_label_area(nv, (void *)indices, 0, 2 * index_size);
288 nv->label_index = malloc(index_size, M_NVDIMM, M_WAITOK);
289 bcopy(index_0_valid ? indices : index1, nv->label_index, index_size);
291 bit_ffc_at((bitstr_t *)nv->label_index->free, 0,
292 nv->label_index->slot_cnt, &n);
294 read_label(nv, n);
295 bit_ffc_at((bitstr_t *)nv->label_index->free, n + 1,
296 nv->label_index->slot_cnt, &n);
311 struct nvdimm_dev *nv;
322 nv = device_get_softc(dev);
327 nv->nv_dev = dev;
328 nv->nv_handle = nvdimm_root_get_device_handle(dev);
336 acpi_nfit_get_flush_addrs(nfitbl, nv->nv_handle, &nv->nv_flush_addr,
337 &nv->nv_flush_addr_cnt);
344 acpi_nfit_get_memory_maps_by_dimm(nfitbl, nv->nv_handle, &maps,
347 free(nv->nv_flush_addr, M_NVDIMM);
372 free(nv->nv_flush_addr, M_NVDIMM);
377 nv->nv_flags_str = strdup(sbuf_data(sb), M_NVDIMM);
380 CTLFLAG_RD | CTLFLAG_MPSAFE, nv->nv_flags_str, 0,
387 device_printf(dev, "flags: %s\n", nv->nv_flags_str);
390 error = read_label_area_size(nv);
396 read_labels(nv);
404 struct nvdimm_dev *nv;
407 nv = device_get_softc(dev);
408 free(nv->nv_flags_str, M_NVDIMM);
409 free(nv->nv_flush_addr, M_NVDIMM);
410 free(nv->label_index, M_NVDIMM);
411 SLIST_FOREACH_SAFE(label, &nv->labels, link, next) {
412 SLIST_REMOVE_HEAD(&nv->labels, link);