Lines Matching refs:nsio
256 struct nd_namespace_io *nsio = to_nd_namespace_io(&ndns->dev);
264 if (unlikely(offset + size > nsio->size)) {
270 if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align)))
272 if (copy_mc_to_kernel(buf, nsio->addr + offset, size) != 0)
277 if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align))) {
284 nsio->res.start + offset, size);
289 badblocks_clear(&nsio->bb, sector, cleared);
291 arch_invalidate_pmem(nsio->addr + offset, size);
296 memcpy_flushcache(nsio->addr + offset, buf, size);
304 int devm_nsio_enable(struct device *dev, struct nd_namespace_io *nsio,
307 struct nd_namespace_common *ndns = &nsio->common;
309 .start = nsio->res.start,
310 .end = nsio->res.end,
313 nsio->size = size;
316 dev_warn(dev, "could not reserve region %pR\n", &nsio->res);
321 if (devm_init_badblocks(dev, &nsio->bb))
323 nvdimm_badblocks_populate(to_nd_region(ndns->dev.parent), &nsio->bb,
326 nsio->addr = devm_memremap(dev, range.start, size, ARCH_MEMREMAP_PMEM);
328 return PTR_ERR_OR_ZERO(nsio->addr);
331 void devm_nsio_disable(struct device *dev, struct nd_namespace_io *nsio)
333 struct resource *res = &nsio->res;
335 devm_memunmap(dev, nsio->addr);
336 devm_exit_badblocks(dev, &nsio->bb);
337 devm_release_mem_region(dev, res->start, nsio->size);