Lines Matching refs:nsio
255 struct nd_namespace_io *nsio = to_nd_namespace_io(&ndns->dev);
263 if (unlikely(offset + size > nsio->size)) {
269 if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align)))
271 if (copy_mc_to_kernel(buf, nsio->addr + offset, size) != 0)
276 if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align))) {
283 nsio->res.start + offset, size);
288 badblocks_clear(&nsio->bb, sector, cleared);
290 arch_invalidate_pmem(nsio->addr + offset, size);
295 memcpy_flushcache(nsio->addr + offset, buf, size);
303 int devm_nsio_enable(struct device *dev, struct nd_namespace_io *nsio,
306 struct nd_namespace_common *ndns = &nsio->common;
308 .start = nsio->res.start,
309 .end = nsio->res.end,
312 nsio->size = size;
315 dev_warn(dev, "could not reserve region %pR\n", &nsio->res);
320 if (devm_init_badblocks(dev, &nsio->bb))
322 nvdimm_badblocks_populate(to_nd_region(ndns->dev.parent), &nsio->bb,
325 nsio->addr = devm_memremap(dev, range.start, size, ARCH_MEMREMAP_PMEM);
327 return PTR_ERR_OR_ZERO(nsio->addr);
330 void devm_nsio_disable(struct device *dev, struct nd_namespace_io *nsio)
332 struct resource *res = &nsio->res;
334 devm_memunmap(dev, nsio->addr);
335 devm_exit_badblocks(dev, &nsio->bb);
336 devm_release_mem_region(dev, res->start, nsio->size);