arch/powerpc/platforms/pseries/papr_scm.c
1299
static void papr_scm_add_badblock(struct nd_region *region,
arch/powerpc/platforms/pseries/papr_scm.c
69
struct nd_region *region;
arch/powerpc/platforms/pseries/papr_scm.c
92
static int papr_scm_pmem_flush(struct nd_region *nd_region,
arch/powerpc/platforms/pseries/papr_scm.c
95
struct papr_scm_priv *p = nd_region_provider_data(nd_region);
drivers/acpi/nfit/core.c
2190
struct nd_region *nd_region = to_nd_region(dev);
drivers/acpi/nfit/core.c
2191
struct nfit_spa *nfit_spa = nd_region_provider_data(nd_region);
drivers/acpi/nfit/core.c
2444
struct nd_region *nd_region = nfit_spa->nd_region;
drivers/acpi/nfit/core.c
2476
if (nd_region) {
drivers/acpi/nfit/core.c
2477
dev = nd_region_dev(nd_region);
drivers/acpi/nfit/core.c
2478
nvdimm_region_notify(nd_region, NVDIMM_REVALIDATE_POISON);
drivers/acpi/nfit/core.c
2620
if (nfit_spa->nd_region)
drivers/acpi/nfit/core.c
2704
nfit_spa->nd_region = nvdimm_pmem_region_create(nvdimm_bus,
drivers/acpi/nfit/core.c
2706
if (!nfit_spa->nd_region)
drivers/acpi/nfit/core.c
2709
nfit_spa->nd_region = nvdimm_volatile_region_create(nvdimm_bus,
drivers/acpi/nfit/core.c
2711
if (!nfit_spa->nd_region)
drivers/acpi/nfit/core.c
2714
nfit_spa->nd_region = nvdimm_pmem_region_create(nvdimm_bus,
drivers/acpi/nfit/core.c
2716
if (!nfit_spa->nd_region)
drivers/acpi/nfit/core.c
2873
dev = nd_region_dev(nfit_spa->nd_region);
drivers/acpi/nfit/mce.c
68
nvdimm_region_notify(nfit_spa->nd_region,
drivers/acpi/nfit/nfit.h
165
struct nd_region *nd_region;
drivers/acpi/nfit/nfit.h
300
struct nd_region *nd_region;
drivers/cxl/cxl.h
531
struct nd_region *nd_region;
drivers/cxl/pmem.c
380
static void unregister_nvdimm_region(void *nd_region)
drivers/cxl/pmem.c
382
nvdimm_region_delete(nd_region);
drivers/cxl/pmem.c
496
cxlr_pmem->nd_region =
drivers/cxl/pmem.c
498
if (!cxlr_pmem->nd_region) {
drivers/cxl/pmem.c
504
cxlr_pmem->nd_region);
drivers/dax/pmem.c
22
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/dax/pmem.c
55
nd_region->target_node, le32_to_cpu(pfn_sb->align),
drivers/nvdimm/badrange.c
269
void nvdimm_badblocks_populate(struct nd_region *nd_region,
drivers/nvdimm/badrange.c
274
if (!is_memory(&nd_region->dev)) {
drivers/nvdimm/badrange.c
275
dev_WARN_ONCE(&nd_region->dev, 1,
drivers/nvdimm/badrange.c
279
nvdimm_bus = walk_to_nvdimm_bus(&nd_region->dev);
drivers/nvdimm/btt.c
1204
lane = nd_region_acquire_lane(btt->nd_region);
drivers/nvdimm/btt.c
1274
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1286
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1320
lane = nd_region_acquire_lane(btt->nd_region);
drivers/nvdimm/btt.c
1337
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1398
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1416
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1565
struct nd_region *nd_region)
drivers/nvdimm/btt.c
1582
btt->nd_region = nd_region;
drivers/nvdimm/btt.c
1592
if (btt->init_state != INIT_READY && nd_region->ro) {
drivers/nvdimm/btt.c
1594
dev_name(&nd_region->dev));
drivers/nvdimm/btt.c
1650
struct nd_region *nd_region;
drivers/nvdimm/btt.c
1685
nd_region = to_nd_region(nd_btt->dev.parent);
drivers/nvdimm/btt.c
1687
nd_region);
drivers/nvdimm/btt.h
228
struct nd_region *nd_region;
drivers/nvdimm/btt_devs.c
17
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/btt_devs.c
176
static struct device *__nd_btt_create(struct nd_region *nd_region,
drivers/nvdimm/btt_devs.c
187
nd_btt->id = ida_alloc(&nd_region->btt_ida, GFP_KERNEL);
drivers/nvdimm/btt_devs.c
199
dev_set_name(dev, "btt%d.%d", nd_region->id, nd_btt->id);
drivers/nvdimm/btt_devs.c
200
dev->parent = &nd_region->dev;
drivers/nvdimm/btt_devs.c
213
ida_free(&nd_region->btt_ida, nd_btt->id);
drivers/nvdimm/btt_devs.c
22
ida_free(&nd_region->btt_ida, nd_btt->id);
drivers/nvdimm/btt_devs.c
220
struct device *nd_btt_create(struct nd_region *nd_region)
drivers/nvdimm/btt_devs.c
222
struct device *dev = __nd_btt_create(nd_region, 0, NULL, NULL);
drivers/nvdimm/btt_devs.c
333
struct nd_region *nd_region = to_nd_region(ndns->dev.parent);
drivers/nvdimm/btt_devs.c
348
btt_dev = __nd_btt_create(nd_region, 0, NULL, ndns);
drivers/nvdimm/bus.c
148
void nvdimm_region_notify(struct nd_region *nd_region, enum nvdimm_event event)
drivers/nvdimm/bus.c
150
struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(&nd_region->dev);
drivers/nvdimm/bus.c
156
nd_device_notify(&nd_region->dev, event);
drivers/nvdimm/bus.c
167
struct nd_region *nd_region;
drivers/nvdimm/bus.c
175
nd_region = to_nd_region(dev);
drivers/nvdimm/bus.c
176
ndr_end = nd_region->ndr_start + nd_region->ndr_size - 1;
drivers/nvdimm/bus.c
179
if (ctx->phys < nd_region->ndr_start ||
drivers/nvdimm/bus.c
183
sector = (ctx->phys - nd_region->ndr_start) / 512;
drivers/nvdimm/bus.c
184
badblocks_clear(&nd_region->bb, sector, ctx->cleared / 512);
drivers/nvdimm/bus.c
186
if (nd_region->bb_state)
drivers/nvdimm/bus.c
187
sysfs_notify_dirent(nd_region->bb_state);
drivers/nvdimm/bus.c
627
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/bus.c
631
if (disk_ro == nd_region->ro)
drivers/nvdimm/bus.c
635
dev_name(&nd_region->dev), nd_region->ro ? "only" : "write",
drivers/nvdimm/bus.c
636
disk->disk_name, nd_region->ro ? "only" : "write");
drivers/nvdimm/bus.c
637
set_disk_ro(disk, nd_region->ro);
drivers/nvdimm/bus.c
679
struct nd_region *nd_region = NULL;
drivers/nvdimm/bus.c
682
nd_region = to_nd_region(dev);
drivers/nvdimm/bus.c
684
nd_region = to_nd_region(parent);
drivers/nvdimm/bus.c
686
if (!nd_region)
drivers/nvdimm/bus.c
688
return nd_region->target_node;
drivers/nvdimm/claim.c
60
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/claim.c
64
seed = nd_region->btt_seed;
drivers/nvdimm/claim.c
66
seed = nd_region->pfn_seed;
drivers/nvdimm/claim.c
68
seed = nd_region->dax_seed;
drivers/nvdimm/dax_devs.c
108
nd_dax = nd_dax_alloc(nd_region);
drivers/nvdimm/dax_devs.c
15
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/dax_devs.c
21
ida_free(&nd_region->dax_ida, nd_pfn->id);
drivers/nvdimm/dax_devs.c
47
static struct nd_dax *nd_dax_alloc(struct nd_region *nd_region)
drivers/nvdimm/dax_devs.c
58
nd_pfn->id = ida_alloc(&nd_region->dax_ida, GFP_KERNEL);
drivers/nvdimm/dax_devs.c
65
dev_set_name(dev, "dax%d.%d", nd_region->id, nd_pfn->id);
drivers/nvdimm/dax_devs.c
67
dev->parent = &nd_region->dev;
drivers/nvdimm/dax_devs.c
72
struct device *nd_dax_create(struct nd_region *nd_region)
drivers/nvdimm/dax_devs.c
77
if (!is_memory(&nd_region->dev))
drivers/nvdimm/dax_devs.c
80
nd_dax = nd_dax_alloc(nd_region);
drivers/nvdimm/dax_devs.c
94
struct nd_region *nd_region = to_nd_region(ndns->dev.parent);
drivers/nvdimm/dimm_devs.c
693
static unsigned long dpa_align(struct nd_region *nd_region)
drivers/nvdimm/dimm_devs.c
695
struct device *dev = &nd_region->dev;
drivers/nvdimm/dimm_devs.c
700
if (dev_WARN_ONCE(dev, !nd_region->ndr_mappings || nd_region->align
drivers/nvdimm/dimm_devs.c
701
% nd_region->ndr_mappings,
drivers/nvdimm/dimm_devs.c
703
nd_region->align, nd_region->ndr_mappings))
drivers/nvdimm/dimm_devs.c
705
return nd_region->align / nd_region->ndr_mappings;
drivers/nvdimm/dimm_devs.c
717
resource_size_t nd_pmem_max_contiguous_dpa(struct nd_region *nd_region,
drivers/nvdimm/dimm_devs.c
730
align = dpa_align(nd_region);
drivers/nvdimm/dimm_devs.c
735
if (__reserve_free_pmem(&nd_region->dev, nd_mapping->nvdimm))
drivers/nvdimm/dimm_devs.c
764
resource_size_t nd_pmem_available_dpa(struct nd_region *nd_region,
drivers/nvdimm/dimm_devs.c
775
align = dpa_align(nd_region);
drivers/nvdimm/dimm_devs.c
788
nd_dbg_dpa(nd_region, ndd, res,
drivers/nvdimm/label.c
1057
int nd_pmem_namespace_label_update(struct nd_region *nd_region,
drivers/nvdimm/label.c
1062
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/label.c
1063
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/label.c
1084
rc = __pmem_label_update(nd_region, nd_mapping, nspm, i,
drivers/nvdimm/label.c
1094
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/label.c
1095
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/label.c
1097
rc = __pmem_label_update(nd_region, nd_mapping, nspm, i, 0);
drivers/nvdimm/label.c
409
struct nd_region *nd_region = NULL;
drivers/nvdimm/label.c
426
nd_dbg_dpa(nd_region, ndd, res, "reserve\n");
drivers/nvdimm/label.c
874
static int __pmem_label_update(struct nd_region *nd_region,
drivers/nvdimm/label.c
879
struct nd_interleave_set *nd_set = nd_region->nd_set;
drivers/nvdimm/label.c
895
cookie = nd_region_interleave_set_cookie(nd_region, nsindex);
drivers/nvdimm/label.c
917
nsl_set_nlabel(ndd, nd_label, nd_region->ndr_mappings);
drivers/nvdimm/label.c
928
nd_dbg_dpa(nd_region, ndd, res, "\n");
drivers/nvdimm/label.h
222
struct nd_region;
drivers/nvdimm/label.h
224
int nd_pmem_namespace_label_update(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
1025
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
1045
rc = namespace_update_uuid(nd_region, dev, uuid, ns_uuid);
drivers/nvdimm/namespace_devs.c
1047
rc = nd_namespace_label_update(nd_region, dev);
drivers/nvdimm/namespace_devs.c
1097
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
1124
rc = nd_namespace_label_update(nd_region, dev);
drivers/nvdimm/namespace_devs.c
1140
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
1158
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
1159
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
1174
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
1177
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
1178
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
1275
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
1283
rc = nd_namespace_label_update(nd_region, dev);
drivers/nvdimm/namespace_devs.c
144
struct nd_region *nd_region = to_nd_region(ndns->dev.parent);
drivers/nvdimm/namespace_devs.c
1527
static struct device **create_namespace_io(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
1545
dev->parent = &nd_region->dev;
drivers/nvdimm/namespace_devs.c
1547
res->name = dev_name(&nd_region->dev);
drivers/nvdimm/namespace_devs.c
1549
res->start = nd_region->ndr_start;
drivers/nvdimm/namespace_devs.c
1550
res->end = res->start + nd_region->ndr_size - 1;
drivers/nvdimm/namespace_devs.c
1556
static bool has_uuid_at_pos(struct nd_region *nd_region, const uuid_t *uuid,
drivers/nvdimm/namespace_devs.c
1562
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
1563
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
1564
struct nd_interleave_set *nd_set = nd_region->nd_set;
drivers/nvdimm/namespace_devs.c
1592
if (!nsl_validate_nlabel(nd_region, ndd, nd_label))
drivers/nvdimm/namespace_devs.c
1605
static int select_pmem_id(struct nd_region *nd_region, const uuid_t *pmem_id)
drivers/nvdimm/namespace_devs.c
1609
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
161
sprintf(name, "pmem%d.%d%s", nd_region->id, nsidx,
drivers/nvdimm/namespace_devs.c
1610
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
164
sprintf(name, "pmem%d%s", nd_region->id,
drivers/nvdimm/namespace_devs.c
1643
dev_dbg(&nd_region->dev, "%s invalid label for %pUb\n",
drivers/nvdimm/namespace_devs.c
1663
static struct device *create_namespace_pmem(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
1670
u64 cookie = nd_region_interleave_set_cookie(nd_region, nsindex);
drivers/nvdimm/namespace_devs.c
1671
u64 altcookie = nd_region_interleave_set_altcookie(nd_region);
drivers/nvdimm/namespace_devs.c
1682
dev_dbg(&nd_region->dev, "invalid interleave-set-cookie\n");
drivers/nvdimm/namespace_devs.c
1687
dev_dbg(&nd_region->dev, "invalid cookie in label: %pUb\n",
drivers/nvdimm/namespace_devs.c
1692
dev_dbg(&nd_region->dev, "valid altcookie in label: %pUb\n",
drivers/nvdimm/namespace_devs.c
1703
dev->parent = &nd_region->dev;
drivers/nvdimm/namespace_devs.c
1705
res->name = dev_name(&nd_region->dev);
drivers/nvdimm/namespace_devs.c
1708
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
1710
if (has_uuid_at_pos(nd_region, &uuid, cookie, i))
drivers/nvdimm/namespace_devs.c
1712
if (has_uuid_at_pos(nd_region, &uuid, altcookie, i))
drivers/nvdimm/namespace_devs.c
1717
if (i < nd_region->ndr_mappings) {
drivers/nvdimm/namespace_devs.c
1718
struct nvdimm *nvdimm = nd_region->mapping[i].nvdimm;
drivers/nvdimm/namespace_devs.c
1725
dev_err(&nd_region->dev, "%s missing label for %pUb\n",
drivers/nvdimm/namespace_devs.c
1737
rc = select_pmem_id(nd_region, &uuid);
drivers/nvdimm/namespace_devs.c
1742
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
1746
nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
1775
nd_namespace_pmem_set_resource(nd_region, nspm, size);
drivers/nvdimm/namespace_devs.c
1782
dev_dbg(&nd_region->dev, "invalid label(s)\n");
drivers/nvdimm/namespace_devs.c
1785
dev_dbg(&nd_region->dev, "unexpected err: %d\n", rc);
drivers/nvdimm/namespace_devs.c
1791
static struct device *nd_namespace_pmem_create(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
1797
if (!is_memory(&nd_region->dev))
drivers/nvdimm/namespace_devs.c
1806
dev->parent = &nd_region->dev;
drivers/nvdimm/namespace_devs.c
1808
res->name = dev_name(&nd_region->dev);
drivers/nvdimm/namespace_devs.c
1811
nspm->id = ida_alloc(&nd_region->ns_ida, GFP_KERNEL);
drivers/nvdimm/namespace_devs.c
1816
dev_set_name(dev, "namespace%d.%d", nd_region->id, nspm->id);
drivers/nvdimm/namespace_devs.c
1817
nd_namespace_pmem_set_resource(nd_region, nspm, 0);
drivers/nvdimm/namespace_devs.c
1824
void nd_region_create_ns_seed(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
1826
WARN_ON(!is_nvdimm_bus_locked(&nd_region->dev));
drivers/nvdimm/namespace_devs.c
1828
if (nd_region_to_nstype(nd_region) == ND_DEVICE_NAMESPACE_IO)
drivers/nvdimm/namespace_devs.c
1831
nd_region->ns_seed = nd_namespace_pmem_create(nd_region);
drivers/nvdimm/namespace_devs.c
1837
if (!nd_region->ns_seed)
drivers/nvdimm/namespace_devs.c
1838
dev_err(&nd_region->dev, "failed to create namespace\n");
drivers/nvdimm/namespace_devs.c
1840
device_initialize(nd_region->ns_seed);
drivers/nvdimm/namespace_devs.c
1841
lockdep_set_class(&nd_region->ns_seed->mutex,
drivers/nvdimm/namespace_devs.c
1843
nd_device_register(nd_region->ns_seed);
drivers/nvdimm/namespace_devs.c
1847
void nd_region_create_dax_seed(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
1849
WARN_ON(!is_nvdimm_bus_locked(&nd_region->dev));
drivers/nvdimm/namespace_devs.c
1850
nd_region->dax_seed = nd_dax_create(nd_region);
drivers/nvdimm/namespace_devs.c
1855
if (!nd_region->dax_seed)
drivers/nvdimm/namespace_devs.c
1856
dev_err(&nd_region->dev, "failed to create dax namespace\n");
drivers/nvdimm/namespace_devs.c
1859
void nd_region_create_pfn_seed(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
1861
WARN_ON(!is_nvdimm_bus_locked(&nd_region->dev));
drivers/nvdimm/namespace_devs.c
1862
nd_region->pfn_seed = nd_pfn_create(nd_region);
drivers/nvdimm/namespace_devs.c
1867
if (!nd_region->pfn_seed)
drivers/nvdimm/namespace_devs.c
1868
dev_err(&nd_region->dev, "failed to create pfn namespace\n");
drivers/nvdimm/namespace_devs.c
1871
void nd_region_create_btt_seed(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
1873
WARN_ON(!is_nvdimm_bus_locked(&nd_region->dev));
drivers/nvdimm/namespace_devs.c
1874
nd_region->btt_seed = nd_btt_create(nd_region);
drivers/nvdimm/namespace_devs.c
1879
if (!nd_region->btt_seed)
drivers/nvdimm/namespace_devs.c
188
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
1880
dev_err(&nd_region->dev, "failed to create btt namespace\n");
drivers/nvdimm/namespace_devs.c
1883
static int add_namespace_resource(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
1887
struct nd_mapping *nd_mapping = &nd_region->mapping[0];
drivers/nvdimm/namespace_devs.c
190
return sprintf(buf, "%d\n", nd_region_to_nstype(nd_region));
drivers/nvdimm/namespace_devs.c
1901
dev_err(&nd_region->dev,
drivers/nvdimm/namespace_devs.c
1925
static struct device **scan_labels(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
1930
struct nd_mapping *nd_mapping = &nd_region->mapping[0];
drivers/nvdimm/namespace_devs.c
1951
i = add_namespace_resource(nd_region, nd_label, devs, count);
drivers/nvdimm/namespace_devs.c
1965
dev = create_namespace_pmem(nd_region, nd_mapping, nd_label);
drivers/nvdimm/namespace_devs.c
1979
dev_dbg(&nd_region->dev, "discovered %d namespace%s\n", count,
drivers/nvdimm/namespace_devs.c
1992
nd_namespace_pmem_set_resource(nd_region, nspm, 0);
drivers/nvdimm/namespace_devs.c
1993
dev->parent = &nd_region->dev;
drivers/nvdimm/namespace_devs.c
1995
} else if (is_memory(&nd_region->dev)) {
drivers/nvdimm/namespace_devs.c
1997
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
2002
nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
2032
static struct device **create_namespaces(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
2038
if (nd_region->ndr_mappings == 0)
drivers/nvdimm/namespace_devs.c
2042
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
2043
nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
2047
devs = scan_labels(nd_region);
drivers/nvdimm/namespace_devs.c
2049
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
2050
int reverse = nd_region->ndr_mappings - 1 - i;
drivers/nvdimm/namespace_devs.c
2052
nd_mapping = &nd_region->mapping[reverse];
drivers/nvdimm/namespace_devs.c
2061
struct nd_region *nd_region = region;
drivers/nvdimm/namespace_devs.c
2064
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
2065
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
2080
static int init_active_labels(struct nd_region *nd_region)
drivers/nvdimm/namespace_devs.c
2084
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
2085
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
2103
dev_err(&nd_region->dev, "%s: is %s, failing probe\n",
drivers/nvdimm/namespace_devs.c
2136
if (i < nd_region->ndr_mappings)
drivers/nvdimm/namespace_devs.c
2141
deactivate_labels(nd_region);
drivers/nvdimm/namespace_devs.c
2145
return devm_add_action_or_reset(&nd_region->dev, deactivate_labels,
drivers/nvdimm/namespace_devs.c
2146
nd_region);
drivers/nvdimm/namespace_devs.c
2149
static int create_relevant_namespaces(struct nd_region *nd_region, int *type,
drivers/nvdimm/namespace_devs.c
2154
guard(nvdimm_bus)(&nd_region->dev);
drivers/nvdimm/namespace_devs.c
2155
rc = init_active_labels(nd_region);
drivers/nvdimm/namespace_devs.c
2159
*type = nd_region_to_nstype(nd_region);
drivers/nvdimm/namespace_devs.c
2162
*devs = create_namespace_io(nd_region);
drivers/nvdimm/namespace_devs.c
2165
*devs = create_namespaces(nd_region);
drivers/nvdimm/namespace_devs.c
2172
int nd_region_register_namespaces(struct nd_region *nd_region, int *err)
drivers/nvdimm/namespace_devs.c
2178
rc = create_relevant_namespaces(nd_region, &type, &devs);
drivers/nvdimm/namespace_devs.c
2193
id = ida_alloc(&nd_region->ns_ida, GFP_KERNEL);
drivers/nvdimm/namespace_devs.c
2200
dev_set_name(dev, "namespace%d.%d", nd_region->id, id);
drivers/nvdimm/namespace_devs.c
2206
nd_region->ns_seed = devs[0];
drivers/nvdimm/namespace_devs.c
235
static int nd_namespace_label_update(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
256
return nd_pmem_namespace_label_update(nd_region, nspm, size);
drivers/nvdimm/namespace_devs.c
264
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
27
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
272
rc = nd_namespace_label_update(nd_region, dev);
drivers/nvdimm/namespace_devs.c
294
static int scan_free(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
30
ida_free(&nd_region->ns_ida, nspm->id);
drivers/nvdimm/namespace_devs.c
314
nd_dbg_dpa(nd_region, ndd, res, "delete %d\n", rc);
drivers/nvdimm/namespace_devs.c
323
nd_dbg_dpa(nd_region, ndd, res, "shrink %d\n", rc);
drivers/nvdimm/namespace_devs.c
343
static int shrink_dpa_allocation(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
348
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
349
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
352
rc = scan_free(nd_region, nd_mapping, label_id, n);
drivers/nvdimm/namespace_devs.c
361
struct nd_region *nd_region, struct nd_mapping *nd_mapping,
drivers/nvdimm/namespace_devs.c
373
nd_dbg_dpa(nd_region, ndd, res, "init %d\n", rc);
drivers/nvdimm/namespace_devs.c
394
static void space_valid(struct nd_region *nd_region, struct nvdimm_drvdata *ndd,
drivers/nvdimm/namespace_devs.c
402
align = nd_region->align / nd_region->ndr_mappings;
drivers/nvdimm/namespace_devs.c
434
static resource_size_t scan_allocate(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
470
space_valid(nd_region, ndd, label_id, NULL, next, exist,
drivers/nvdimm/namespace_devs.c
481
space_valid(nd_region, ndd, label_id, res, next, exist,
drivers/nvdimm/namespace_devs.c
492
space_valid(nd_region, ndd, label_id, res, next, exist,
drivers/nvdimm/namespace_devs.c
551
nd_dbg_dpa(nd_region, ndd, new_res, "%s(%d) %d\n",
drivers/nvdimm/namespace_devs.c
572
return init_dpa_allocation(label_id, nd_region, nd_mapping, n);
drivers/nvdimm/namespace_devs.c
576
static int merge_dpa(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
597
nd_dbg_dpa(nd_region, ndd, res, "merge %d\n", rc);
drivers/nvdimm/namespace_devs.c
610
struct nd_region *nd_region;
drivers/nvdimm/namespace_devs.c
617
nd_region = to_nd_region(dev);
drivers/nvdimm/namespace_devs.c
618
if (nd_region->ndr_mappings == 0)
drivers/nvdimm/namespace_devs.c
623
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
624
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
630
n = nd_pmem_available_dpa(nd_region, nd_mapping);
drivers/nvdimm/namespace_devs.c
633
rem = scan_allocate(nd_region, nd_mapping, &label_id, n);
drivers/nvdimm/namespace_devs.c
634
dev_WARN_ONCE(&nd_region->dev, rem,
drivers/nvdimm/namespace_devs.c
670
static int grow_dpa_allocation(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
675
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
676
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
680
rem = scan_allocate(nd_region, nd_mapping, label_id, rem);
drivers/nvdimm/namespace_devs.c
681
dev_WARN_ONCE(&nd_region->dev, rem,
drivers/nvdimm/namespace_devs.c
688
rc = merge_dpa(nd_region, nd_mapping, label_id);
drivers/nvdimm/namespace_devs.c
696
static void nd_namespace_pmem_set_resource(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
708
struct nd_mapping *nd_mapping = &nd_region->mapping[0];
drivers/nvdimm/namespace_devs.c
724
* nd_region->ndr_mappings;
drivers/nvdimm/namespace_devs.c
733
res->start = nd_region->ndr_start + offset;
drivers/nvdimm/namespace_devs.c
750
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
775
if (nd_region->ndr_mappings == 0) {
drivers/nvdimm/namespace_devs.c
780
div_u64_rem(val, nd_region->align, &remainder);
drivers/nvdimm/namespace_devs.c
783
nd_region->align / SZ_1K);
drivers/nvdimm/namespace_devs.c
788
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
789
nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
801
available = nd_region_allocatable_dpa(nd_region);
drivers/nvdimm/namespace_devs.c
809
val = div_u64(val, nd_region->ndr_mappings);
drivers/nvdimm/namespace_devs.c
810
allocated = div_u64(allocated, nd_region->ndr_mappings);
drivers/nvdimm/namespace_devs.c
812
rc = shrink_dpa_allocation(nd_region, &label_id,
drivers/nvdimm/namespace_devs.c
815
rc = grow_dpa_allocation(nd_region, &label_id, val - allocated);
drivers/nvdimm/namespace_devs.c
823
nd_namespace_pmem_set_resource(nd_region, nspm,
drivers/nvdimm/namespace_devs.c
824
val * nd_region->ndr_mappings);
drivers/nvdimm/namespace_devs.c
833
if (val == 0 && id != 0 && nd_region->ns_seed != dev && !ndns->claim)
drivers/nvdimm/namespace_devs.c
842
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
855
rc = nd_namespace_label_update(nd_region, dev);
drivers/nvdimm/namespace_devs.c
899
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
901
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
902
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
92
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/namespace_devs.c
953
static int namespace_update_uuid(struct nd_region *nd_region,
drivers/nvdimm/namespace_devs.c
973
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
974
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/namespace_devs.c
989
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/namespace_devs.c
99
if (!test_bit(ND_REGION_PAGEMAP, &nd_region->flags))
drivers/nvdimm/namespace_devs.c
990
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/nd-core.h
100
struct nd_region;
drivers/nvdimm/nd-core.h
101
void nd_region_advance_seeds(struct nd_region *nd_region, struct device *dev);
drivers/nvdimm/nd-core.h
102
void nd_region_create_ns_seed(struct nd_region *nd_region);
drivers/nvdimm/nd-core.h
103
void nd_region_create_btt_seed(struct nd_region *nd_region);
drivers/nvdimm/nd-core.h
104
void nd_region_create_pfn_seed(struct nd_region *nd_region);
drivers/nvdimm/nd-core.h
105
void nd_region_create_dax_seed(struct nd_region *nd_region);
drivers/nvdimm/nd-core.h
115
struct nd_region;
drivers/nvdimm/nd-core.h
124
resource_size_t nd_pmem_max_contiguous_dpa(struct nd_region *nd_region,
drivers/nvdimm/nd-core.h
126
resource_size_t nd_region_allocatable_dpa(struct nd_region *nd_region);
drivers/nvdimm/nd-core.h
127
resource_size_t nd_pmem_available_dpa(struct nd_region *nd_region,
drivers/nvdimm/nd-core.h
129
resource_size_t nd_region_available_dpa(struct nd_region *nd_region);
drivers/nvdimm/nd.h
423
int (*flush)(struct nd_region *nd_region, struct bio *bio);
drivers/nvdimm/nd.h
427
static inline bool nsl_validate_nlabel(struct nd_region *nd_region,
drivers/nvdimm/nd.h
433
return nsl_get_nlabel(ndd, nd_label) == nd_region->ndr_mappings;
drivers/nvdimm/nd.h
543
struct device *nd_btt_create(struct nd_region *nd_region);
drivers/nvdimm/nd.h
556
static inline struct device *nd_btt_create(struct nd_region *nd_region)
drivers/nvdimm/nd.h
569
struct device *nd_pfn_create(struct nd_region *nd_region);
drivers/nvdimm/nd.h
586
static inline struct device *nd_pfn_create(struct nd_region *nd_region)
drivers/nvdimm/nd.h
601
struct device *nd_dax_create(struct nd_region *nd_region);
drivers/nvdimm/nd.h
621
static inline struct device *nd_dax_create(struct nd_region *nd_region)
drivers/nvdimm/nd.h
627
int nd_region_to_nstype(struct nd_region *nd_region);
drivers/nvdimm/nd.h
628
int nd_region_register_namespaces(struct nd_region *nd_region, int *err);
drivers/nvdimm/nd.h
629
u64 nd_region_interleave_set_cookie(struct nd_region *nd_region,
drivers/nvdimm/nd.h
631
u64 nd_region_interleave_set_altcookie(struct nd_region *nd_region);
drivers/nvdimm/nd.h
658
void nvdimm_badblocks_populate(struct nd_region *nd_region,
drivers/nvdimm/nd.h
675
int nd_region_activate(struct nd_region *nd_region);
drivers/nvdimm/nd_virtio.c
111
int async_pmem_flush(struct nd_region *nd_region, struct bio *bio)
drivers/nvdimm/nd_virtio.c
130
if (virtio_pmem_flush(nd_region))
drivers/nvdimm/nd_virtio.c
38
static int virtio_pmem_flush(struct nd_region *nd_region)
drivers/nvdimm/nd_virtio.c
40
struct virtio_device *vdev = nd_region->provider_data;
drivers/nvdimm/of_pmem.c
56
struct nd_region *region;
drivers/nvdimm/pfn_devs.c
20
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/pfn_devs.c
25
ida_free(&nd_region->pfn_ida, nd_pfn->id);
drivers/nvdimm/pfn_devs.c
309
static struct nd_pfn *nd_pfn_alloc(struct nd_region *nd_region)
drivers/nvdimm/pfn_devs.c
318
nd_pfn->id = ida_alloc(&nd_region->pfn_ida, GFP_KERNEL);
drivers/nvdimm/pfn_devs.c
325
dev_set_name(dev, "pfn%d.%d", nd_region->id, nd_pfn->id);
drivers/nvdimm/pfn_devs.c
327
dev->parent = &nd_region->dev;
drivers/nvdimm/pfn_devs.c
332
struct device *nd_pfn_create(struct nd_region *nd_region)
drivers/nvdimm/pfn_devs.c
337
if (!is_memory(&nd_region->dev))
drivers/nvdimm/pfn_devs.c
340
nd_pfn = nd_pfn_alloc(nd_region);
drivers/nvdimm/pfn_devs.c
355
struct nd_region *nd_region = to_nd_region(nd_pfn->dev.parent);
drivers/nvdimm/pfn_devs.c
384
bb_present = badblocks_check(&nd_region->bb, meta_start,
drivers/nvdimm/pfn_devs.c
389
nsoff = ALIGN_DOWN((nd_region->ndr_start
drivers/nvdimm/pfn_devs.c
618
struct nd_region *nd_region = to_nd_region(ndns->dev.parent);
drivers/nvdimm/pfn_devs.c
632
nd_pfn = nd_pfn_alloc(nd_region);
drivers/nvdimm/pfn_devs.c
722
struct nd_region *nd_region;
drivers/nvdimm/pfn_devs.c
750
nd_region = to_nd_region(nd_pfn->dev.parent);
drivers/nvdimm/pfn_devs.c
751
if (nd_region->ro) {
drivers/nvdimm/pfn_devs.c
754
dev_name(&nd_region->dev));
drivers/nvdimm/pmem.c
209
struct nd_region *nd_region = to_region(pmem);
drivers/nvdimm/pmem.c
212
ret = nvdimm_flush(nd_region, bio);
drivers/nvdimm/pmem.c
233
ret = nvdimm_flush(nd_region, bio);
drivers/nvdimm/pmem.c
43
static struct nd_region *to_region(struct pmem_device *pmem)
drivers/nvdimm/pmem.c
452
struct nd_region *nd_region = to_nd_region(dev->parent);
drivers/nvdimm/pmem.c
493
fua = nvdimm_has_flush(nd_region);
drivers/nvdimm/pmem.c
553
nvdimm_badblocks_populate(nd_region, &pmem->bb, &bb_range);
drivers/nvdimm/pmem.c
564
if (is_nvdimm_sync(nd_region))
drivers/nvdimm/pmem.c
570
dax_write_cache(dax_dev, nvdimm_has_cache(nd_region));
drivers/nvdimm/pmem.c
672
struct nd_region *nd_region;
drivers/nvdimm/pmem.c
684
nd_region = to_nd_region(ndns->dev.parent);
drivers/nvdimm/pmem.c
691
nd_region = to_region(pmem);
drivers/nvdimm/pmem.c
712
nvdimm_badblocks_populate(nd_region, bb, &range);
drivers/nvdimm/region.c
102
sysfs_put(nd_region->bb_state);
drivers/nvdimm/region.c
103
nd_region->bb_state = NULL;
drivers/nvdimm/region.c
125
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region.c
127
if (is_memory(&nd_region->dev)) {
drivers/nvdimm/region.c
129
.start = nd_region->ndr_start,
drivers/nvdimm/region.c
130
.end = nd_region->ndr_start +
drivers/nvdimm/region.c
131
nd_region->ndr_size - 1,
drivers/nvdimm/region.c
134
nvdimm_badblocks_populate(nd_region,
drivers/nvdimm/region.c
135
&nd_region->bb, &range);
drivers/nvdimm/region.c
136
if (nd_region->bb_state)
drivers/nvdimm/region.c
137
sysfs_notify_dirent(nd_region->bb_state);
drivers/nvdimm/region.c
18
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region.c
20
.start = nd_region->ndr_start,
drivers/nvdimm/region.c
21
.end = nd_region->ndr_start + nd_region->ndr_size - 1,
drivers/nvdimm/region.c
24
if (nd_region->num_lanes > num_online_cpus()
drivers/nvdimm/region.c
25
&& nd_region->num_lanes < num_possible_cpus()
drivers/nvdimm/region.c
28
num_online_cpus(), nd_region->num_lanes,
drivers/nvdimm/region.c
31
nd_region->num_lanes);
drivers/nvdimm/region.c
34
rc = nd_region_activate(nd_region);
drivers/nvdimm/region.c
38
if (devm_init_badblocks(dev, &nd_region->bb))
drivers/nvdimm/region.c
40
nd_region->bb_state =
drivers/nvdimm/region.c
41
sysfs_get_dirent(nd_region->dev.kobj.sd, "badblocks");
drivers/nvdimm/region.c
42
if (!nd_region->bb_state)
drivers/nvdimm/region.c
44
nvdimm_badblocks_populate(nd_region, &nd_region->bb, &range);
drivers/nvdimm/region.c
46
rc = nd_region_register_namespaces(nd_region, &err);
drivers/nvdimm/region.c
57
nd_region->btt_seed = nd_btt_create(nd_region);
drivers/nvdimm/region.c
58
nd_region->pfn_seed = nd_pfn_create(nd_region);
drivers/nvdimm/region.c
59
nd_region->dax_seed = nd_dax_create(nd_region);
drivers/nvdimm/region.c
85
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region.c
91
nd_region->ns_seed = NULL;
drivers/nvdimm/region.c
92
nd_region->btt_seed = NULL;
drivers/nvdimm/region.c
93
nd_region->pfn_seed = NULL;
drivers/nvdimm/region.c
94
nd_region->dax_seed = NULL;
drivers/nvdimm/region_devs.c
1002
nd_region->num_lanes = ndr_desc->num_lanes;
drivers/nvdimm/region_devs.c
1003
if (!nd_region->num_lanes)
drivers/nvdimm/region_devs.c
1005
nd_region->lane = kcalloc(nd_region->num_lanes,
drivers/nvdimm/region_devs.c
1006
sizeof(*nd_region->lane), GFP_KERNEL);
drivers/nvdimm/region_devs.c
1007
if (!nd_region->lane)
drivers/nvdimm/region_devs.c
1010
for (i = 0; i < nd_region->num_lanes; i++)
drivers/nvdimm/region_devs.c
1011
mutex_init(&nd_region->lane[i].lock);
drivers/nvdimm/region_devs.c
1017
nd_region->mapping[i].nvdimm = nvdimm;
drivers/nvdimm/region_devs.c
1018
nd_region->mapping[i].start = mapping->start;
drivers/nvdimm/region_devs.c
1019
nd_region->mapping[i].size = mapping->size;
drivers/nvdimm/region_devs.c
1020
nd_region->mapping[i].position = mapping->position;
drivers/nvdimm/region_devs.c
1021
INIT_LIST_HEAD(&nd_region->mapping[i].labels);
drivers/nvdimm/region_devs.c
1022
mutex_init(&nd_region->mapping[i].lock);
drivers/nvdimm/region_devs.c
1026
nd_region->provider_data = ndr_desc->provider_data;
drivers/nvdimm/region_devs.c
1027
nd_region->nd_set = ndr_desc->nd_set;
drivers/nvdimm/region_devs.c
1028
nd_region->flags = ndr_desc->flags;
drivers/nvdimm/region_devs.c
1029
nd_region->ro = ro;
drivers/nvdimm/region_devs.c
1030
nd_region->numa_node = ndr_desc->numa_node;
drivers/nvdimm/region_devs.c
1031
nd_region->target_node = ndr_desc->target_node;
drivers/nvdimm/region_devs.c
1032
ida_init(&nd_region->ns_ida);
drivers/nvdimm/region_devs.c
1033
ida_init(&nd_region->btt_ida);
drivers/nvdimm/region_devs.c
1034
ida_init(&nd_region->pfn_ida);
drivers/nvdimm/region_devs.c
1035
ida_init(&nd_region->dax_ida);
drivers/nvdimm/region_devs.c
1036
dev = &nd_region->dev;
drivers/nvdimm/region_devs.c
1037
dev_set_name(dev, "region%d", nd_region->id);
drivers/nvdimm/region_devs.c
1042
nd_region->ndr_size = resource_size(ndr_desc->res);
drivers/nvdimm/region_devs.c
1043
nd_region->ndr_start = ndr_desc->res->start;
drivers/nvdimm/region_devs.c
1044
nd_region->align = default_align(nd_region);
drivers/nvdimm/region_devs.c
1046
nd_region->flush = ndr_desc->flush;
drivers/nvdimm/region_devs.c
1048
nd_region->flush = NULL;
drivers/nvdimm/region_devs.c
105
static int get_flush_data(struct nd_region *nd_region, size_t *size, int *num_flush)
drivers/nvdimm/region_devs.c
1054
return nd_region;
drivers/nvdimm/region_devs.c
1058
memregion_free(nd_region->id);
drivers/nvdimm/region_devs.c
1060
kfree(nd_region);
drivers/nvdimm/region_devs.c
1064
struct nd_region *nvdimm_pmem_region_create(struct nvdimm_bus *nvdimm_bus,
drivers/nvdimm/region_devs.c
1073
struct nd_region *nvdimm_volatile_region_create(struct nvdimm_bus *nvdimm_bus,
drivers/nvdimm/region_devs.c
1082
void nvdimm_region_delete(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
1084
if (nd_region)
drivers/nvdimm/region_devs.c
1085
nd_device_unregister(&nd_region->dev, ND_SYNC);
drivers/nvdimm/region_devs.c
1089
int nvdimm_flush(struct nd_region *nd_region, struct bio *bio)
drivers/nvdimm/region_devs.c
1093
if (!nd_region->flush)
drivers/nvdimm/region_devs.c
1094
rc = generic_nvdimm_flush(nd_region);
drivers/nvdimm/region_devs.c
1096
if (nd_region->flush(nd_region, bio))
drivers/nvdimm/region_devs.c
1106
int generic_nvdimm_flush(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
1108
struct nd_region_data *ndrd = dev_get_drvdata(&nd_region->dev);
drivers/nvdimm/region_devs.c
111
guard(nvdimm_bus)(&nd_region->dev);
drivers/nvdimm/region_devs.c
112
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
1126
for (i = 0; i < nd_region->ndr_mappings; i++)
drivers/nvdimm/region_devs.c
113
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
1143
int nvdimm_has_flush(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
1148
if (nd_region->ndr_mappings == 0
drivers/nvdimm/region_devs.c
1153
if (test_bit(ND_REGION_ASYNC, &nd_region->flags) && nd_region->flush)
drivers/nvdimm/region_devs.c
1157
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
1158
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
1174
int nvdimm_has_cache(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
1176
return is_nd_pmem(&nd_region->dev) &&
drivers/nvdimm/region_devs.c
1177
!test_bit(ND_REGION_PERSIST_CACHE, &nd_region->flags);
drivers/nvdimm/region_devs.c
1181
bool is_nvdimm_sync(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
1183
if (is_nd_volatile(&nd_region->dev))
drivers/nvdimm/region_devs.c
1186
return is_nd_pmem(&nd_region->dev) &&
drivers/nvdimm/region_devs.c
1187
!test_bit(ND_REGION_ASYNC, &nd_region->flags);
drivers/nvdimm/region_devs.c
133
int nd_region_activate(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
137
struct device *dev = &nd_region->dev;
drivers/nvdimm/region_devs.c
140
rc = get_flush_data(nd_region, &flush_data_size, &num_flush);
drivers/nvdimm/region_devs.c
144
rc = nd_region_invalidate_memregion(nd_region);
drivers/nvdimm/region_devs.c
157
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
158
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
160
int rc = nvdimm_map_flush(&nd_region->dev, nvdimm, i, ndrd);
drivers/nvdimm/region_devs.c
170
for (i = 0; i < nd_region->ndr_mappings - 1; i++) {
drivers/nvdimm/region_devs.c
175
for (j = i + 1; j < nd_region->ndr_mappings; j++)
drivers/nvdimm/region_devs.c
186
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
189
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
190
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
195
for (i = 0; i < nd_region->num_lanes; i++)
drivers/nvdimm/region_devs.c
196
mutex_destroy(&nd_region->lane[i].lock);
drivers/nvdimm/region_devs.c
197
kfree(nd_region->lane);
drivers/nvdimm/region_devs.c
198
if (!test_bit(ND_REGION_CXL, &nd_region->flags))
drivers/nvdimm/region_devs.c
199
memregion_free(nd_region->id);
drivers/nvdimm/region_devs.c
200
kfree(nd_region);
drivers/nvdimm/region_devs.c
203
struct nd_region *to_nd_region(struct device *dev)
drivers/nvdimm/region_devs.c
205
struct nd_region *nd_region = container_of(dev, struct nd_region, dev);
drivers/nvdimm/region_devs.c
208
return nd_region;
drivers/nvdimm/region_devs.c
212
struct device *nd_region_dev(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
214
if (!nd_region)
drivers/nvdimm/region_devs.c
216
return &nd_region->dev;
drivers/nvdimm/region_devs.c
220
void *nd_region_provider_data(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
222
return nd_region->provider_data;
drivers/nvdimm/region_devs.c
234
int nd_region_to_nstype(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
236
if (is_memory(&nd_region->dev)) {
drivers/nvdimm/region_devs.c
239
for (i = 0, label = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
240
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
256
static unsigned long long region_size(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
258
if (is_memory(&nd_region->dev)) {
drivers/nvdimm/region_devs.c
259
return nd_region->ndr_size;
drivers/nvdimm/region_devs.c
260
} else if (nd_region->ndr_mappings == 1) {
drivers/nvdimm/region_devs.c
261
struct nd_mapping *nd_mapping = &nd_region->mapping[0];
drivers/nvdimm/region_devs.c
272
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
274
return sprintf(buf, "%llu\n", region_size(nd_region));
drivers/nvdimm/region_devs.c
281
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
287
return sprintf(buf, "%d\n", nvdimm_has_flush(nd_region));
drivers/nvdimm/region_devs.c
295
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
301
rc = nvdimm_flush(nd_region, NULL);
drivers/nvdimm/region_devs.c
312
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
314
return sprintf(buf, "%d\n", nd_region->ndr_mappings);
drivers/nvdimm/region_devs.c
321
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
323
return sprintf(buf, "%d\n", nd_region_to_nstype(nd_region));
drivers/nvdimm/region_devs.c
330
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
331
struct nd_interleave_set *nd_set = nd_region->nd_set;
drivers/nvdimm/region_devs.c
348
if (nd_region->ndr_mappings) {
drivers/nvdimm/region_devs.c
349
struct nd_mapping *nd_mapping = &nd_region->mapping[0];
drivers/nvdimm/region_devs.c
357
nd_region_interleave_set_cookie(nd_region,
drivers/nvdimm/region_devs.c
368
resource_size_t nd_region_available_dpa(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
373
WARN_ON(!is_nvdimm_bus_locked(&nd_region->dev));
drivers/nvdimm/region_devs.c
376
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
377
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
384
available += nd_pmem_available_dpa(nd_region, nd_mapping);
drivers/nvdimm/region_devs.c
390
resource_size_t nd_region_allocatable_dpa(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
395
WARN_ON(!is_nvdimm_bus_locked(&nd_region->dev));
drivers/nvdimm/region_devs.c
396
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
397
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
400
nd_region, nd_mapping));
drivers/nvdimm/region_devs.c
402
return avail * nd_region->ndr_mappings;
drivers/nvdimm/region_devs.c
408
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
420
return sprintf(buf, "%llu\n", nd_region_available_dpa(nd_region));
drivers/nvdimm/region_devs.c
427
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
433
return sprintf(buf, "%llu\n", nd_region_allocatable_dpa(nd_region));
drivers/nvdimm/region_devs.c
453
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
456
if (nd_region->ns_seed)
drivers/nvdimm/region_devs.c
457
return sprintf(buf, "%s\n", dev_name(nd_region->ns_seed));
drivers/nvdimm/region_devs.c
466
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
469
if (nd_region->btt_seed)
drivers/nvdimm/region_devs.c
470
return sprintf(buf, "%s\n", dev_name(nd_region->btt_seed));
drivers/nvdimm/region_devs.c
479
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
482
if (nd_region->pfn_seed)
drivers/nvdimm/region_devs.c
483
return sprintf(buf, "%s\n", dev_name(nd_region->pfn_seed));
drivers/nvdimm/region_devs.c
492
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
495
if (nd_region->dax_seed)
drivers/nvdimm/region_devs.c
496
return sprintf(buf, "%s\n", dev_name(nd_region->dax_seed));
drivers/nvdimm/region_devs.c
505
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
507
return sprintf(buf, "%d\n", nd_region->ro);
drivers/nvdimm/region_devs.c
521
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
526
nd_region->ro = ro;
drivers/nvdimm/region_devs.c
535
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
537
return sprintf(buf, "%#lx\n", nd_region->align);
drivers/nvdimm/region_devs.c
543
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
559
mappings = max_t(u32, 1, nd_region->ndr_mappings);
drivers/nvdimm/region_devs.c
562
|| val > region_size(nd_region) || remainder)
drivers/nvdimm/region_devs.c
571
nd_region->align = val;
drivers/nvdimm/region_devs.c
580
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
585
rc = badblocks_show(&nd_region->bb, buf, 0);
drivers/nvdimm/region_devs.c
597
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
599
return sprintf(buf, "%#llx\n", nd_region->ndr_start);
drivers/nvdimm/region_devs.c
606
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
608
if (test_bit(ND_REGION_PERSIST_CACHE, &nd_region->flags))
drivers/nvdimm/region_devs.c
610
else if (test_bit(ND_REGION_PERSIST_MEMCTRL, &nd_region->flags))
drivers/nvdimm/region_devs.c
63
static int nd_region_invalidate_memregion(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
641
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
642
struct nd_interleave_set *nd_set = nd_region->nd_set;
drivers/nvdimm/region_devs.c
643
int type = nd_region_to_nstype(nd_region);
drivers/nvdimm/region_devs.c
658
int has_flush = nvdimm_has_flush(nd_region);
drivers/nvdimm/region_devs.c
669
if ((nd_region->flags & (BIT(ND_REGION_PERSIST_CACHE)
drivers/nvdimm/region_devs.c
67
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
68
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
693
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
697
if (n >= nd_region->ndr_mappings)
drivers/nvdimm/region_devs.c
699
nd_mapping = &nd_region->mapping[n];
drivers/nvdimm/region_devs.c
755
struct nd_region *nd_region = to_nd_region(dev);
drivers/nvdimm/region_devs.c
757
if (n < nd_region->ndr_mappings)
drivers/nvdimm/region_devs.c
83
&nd_region->dev,
drivers/nvdimm/region_devs.c
838
u64 nd_region_interleave_set_cookie(struct nd_region *nd_region,
drivers/nvdimm/region_devs.c
841
struct nd_interleave_set *nd_set = nd_region->nd_set;
drivers/nvdimm/region_devs.c
852
u64 nd_region_interleave_set_altcookie(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
854
struct nd_interleave_set *nd_set = nd_region->nd_set;
drivers/nvdimm/region_devs.c
87
dev_err(&nd_region->dev,
drivers/nvdimm/region_devs.c
876
void nd_region_advance_seeds(struct nd_region *nd_region, struct device *dev)
drivers/nvdimm/region_devs.c
879
if (nd_region->ns_seed == dev) {
drivers/nvdimm/region_devs.c
880
nd_region_create_ns_seed(nd_region);
drivers/nvdimm/region_devs.c
884
if (nd_region->btt_seed == dev)
drivers/nvdimm/region_devs.c
885
nd_region_create_btt_seed(nd_region);
drivers/nvdimm/region_devs.c
886
if (nd_region->ns_seed == &nd_btt->ndns->dev)
drivers/nvdimm/region_devs.c
887
nd_region_create_ns_seed(nd_region);
drivers/nvdimm/region_devs.c
891
if (nd_region->pfn_seed == dev)
drivers/nvdimm/region_devs.c
892
nd_region_create_pfn_seed(nd_region);
drivers/nvdimm/region_devs.c
893
if (nd_region->ns_seed == &nd_pfn->ndns->dev)
drivers/nvdimm/region_devs.c
894
nd_region_create_ns_seed(nd_region);
drivers/nvdimm/region_devs.c
898
if (nd_region->dax_seed == dev)
drivers/nvdimm/region_devs.c
899
nd_region_create_dax_seed(nd_region);
drivers/nvdimm/region_devs.c
900
if (nd_region->ns_seed == &nd_dax->nd_pfn.ndns->dev)
drivers/nvdimm/region_devs.c
901
nd_region_create_ns_seed(nd_region);
drivers/nvdimm/region_devs.c
916
unsigned int nd_region_acquire_lane(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
917
__acquires(&nd_region->lane[lane].lock)
drivers/nvdimm/region_devs.c
923
lane = raw_smp_processor_id() % nd_region->num_lanes;
drivers/nvdimm/region_devs.c
924
mutex_lock(&nd_region->lane[lane].lock);
drivers/nvdimm/region_devs.c
929
void nd_region_release_lane(struct nd_region *nd_region, unsigned int lane)
drivers/nvdimm/region_devs.c
930
__releases(&nd_region->lane[lane].lock)
drivers/nvdimm/region_devs.c
932
mutex_unlock(&nd_region->lane[lane].lock);
drivers/nvdimm/region_devs.c
942
static unsigned long default_align(struct nd_region *nd_region)
drivers/nvdimm/region_devs.c
949
if (nd_region->ndr_size < MEMREMAP_COMPAT_ALIGN_MAX)
drivers/nvdimm/region_devs.c
95
for (i = 0; i < nd_region->ndr_mappings; i++) {
drivers/nvdimm/region_devs.c
952
mappings = max_t(u16, 1, nd_region->ndr_mappings);
drivers/nvdimm/region_devs.c
96
struct nd_mapping *nd_mapping = &nd_region->mapping[i];
drivers/nvdimm/region_devs.c
962
static struct nd_region *nd_region_create(struct nvdimm_bus *nvdimm_bus,
drivers/nvdimm/region_devs.c
966
struct nd_region *nd_region;
drivers/nvdimm/region_devs.c
987
nd_region =
drivers/nvdimm/region_devs.c
988
kzalloc_flex(*nd_region, mapping, ndr_desc->num_mappings);
drivers/nvdimm/region_devs.c
990
if (!nd_region)
drivers/nvdimm/region_devs.c
992
nd_region->ndr_mappings = ndr_desc->num_mappings;
drivers/nvdimm/region_devs.c
995
nd_region->id = ndr_desc->memregion;
drivers/nvdimm/region_devs.c
997
nd_region->id = memregion_alloc(GFP_KERNEL);
drivers/nvdimm/region_devs.c
998
if (nd_region->id < 0)
drivers/nvdimm/virtio_pmem.c
122
nd_region = nvdimm_pmem_region_create(vpmem->nvdimm_bus, &ndr_desc);
drivers/nvdimm/virtio_pmem.c
123
if (!nd_region) {
drivers/nvdimm/virtio_pmem.c
49
struct nd_region *nd_region;
drivers/nvdimm/virtio_pmem.h
58
int async_pmem_flush(struct nd_region *nd_region, struct bio *bio);
include/linux/libnvdimm.h
128
struct nd_region;
include/linux/libnvdimm.h
142
int (*flush)(struct nd_region *nd_region, struct bio *bio);
include/linux/libnvdimm.h
258
struct nd_region *to_nd_region(struct device *dev);
include/linux/libnvdimm.h
259
struct device *nd_region_dev(struct nd_region *nd_region);
include/linux/libnvdimm.h
281
void nvdimm_region_delete(struct nd_region *nd_region);
include/linux/libnvdimm.h
291
struct nd_region *nvdimm_pmem_region_create(struct nvdimm_bus *nvdimm_bus,
include/linux/libnvdimm.h
293
struct nd_region *nvdimm_blk_region_create(struct nvdimm_bus *nvdimm_bus,
include/linux/libnvdimm.h
295
struct nd_region *nvdimm_volatile_region_create(struct nvdimm_bus *nvdimm_bus,
include/linux/libnvdimm.h
297
void *nd_region_provider_data(struct nd_region *nd_region);
include/linux/libnvdimm.h
298
unsigned int nd_region_acquire_lane(struct nd_region *nd_region);
include/linux/libnvdimm.h
299
void nd_region_release_lane(struct nd_region *nd_region, unsigned int lane);
include/linux/libnvdimm.h
301
int nvdimm_flush(struct nd_region *nd_region, struct bio *bio);
include/linux/libnvdimm.h
302
int generic_nvdimm_flush(struct nd_region *nd_region);
include/linux/libnvdimm.h
303
int nvdimm_has_flush(struct nd_region *nd_region);
include/linux/libnvdimm.h
304
int nvdimm_has_cache(struct nd_region *nd_region);
include/linux/libnvdimm.h
306
bool is_nvdimm_sync(struct nd_region *nd_region);
include/linux/nd.h
194
struct nd_region;
include/linux/nd.h
195
void nvdimm_region_notify(struct nd_region *nd_region, enum nvdimm_event event);
tools/testing/nvdimm/test/ndtest.c
389
struct nd_region *nd_region = to_nd_region(dev);
tools/testing/nvdimm/test/ndtest.c
390
struct ndtest_region *region = nd_region_provider_data(nd_region);
tools/testing/nvdimm/test/ndtest.h
36
struct nd_region *blk_region;
tools/testing/nvdimm/test/ndtest.h
62
struct nd_region *region;
tools/testing/nvdimm/test/nfit.c
634
struct nd_region *region;
tools/testing/nvdimm/test/nfit.c
645
struct nd_region *nd_region;
tools/testing/nvdimm/test/nfit.c
651
nd_region = to_nd_region(dev);
tools/testing/nvdimm/test/nfit.c
652
ndr_end = nd_region->ndr_start + nd_region->ndr_size;
tools/testing/nvdimm/test/nfit.c
654
if (ctx->addr >= nd_region->ndr_start && ctx->addr < ndr_end) {
tools/testing/nvdimm/test/nfit.c
655
ctx->region = nd_region;
tools/testing/nvdimm/test/nfit.c
666
struct nd_region *nd_region = NULL;
tools/testing/nvdimm/test/nfit.c
682
nd_region = ctx.region;
tools/testing/nvdimm/test/nfit.c
684
dpa = ctx.addr - nd_region->ndr_start;
tools/testing/nvdimm/test/nfit.c
689
nd_mapping = &nd_region->mapping[nd_region->ndr_mappings - 1];