Skip to content

Commit 52ac23b

Browse files
committed
libnvdimm, dax: reserve space to store labels for device-dax
We may want to subdivide a device-dax range into multiple devices so that each can have separate permissions or naming. Reserve 128K of label space by default so we have the capability of making allocation decisions persistent. This reservation is not something we can add later since it would result in the default size of a device-dax range changing between kernel versions. Signed-off-by: Dan Williams <[email protected]>
1 parent cd03412 commit 52ac23b

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

drivers/nvdimm/pfn_devs.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,7 @@ static struct vmem_altmap *__nvdimm_setup_pfn(struct nd_pfn *nd_pfn,
540540

541541
static int nd_pfn_init(struct nd_pfn *nd_pfn)
542542
{
543+
u32 dax_label_reserve = is_nd_dax(&nd_pfn->dev) ? SZ_128K : 0;
543544
struct nd_namespace_common *ndns = nd_pfn->ndns;
544545
u32 start_pad = 0, end_trunc = 0;
545546
resource_size_t start, size;
@@ -606,10 +607,11 @@ static int nd_pfn_init(struct nd_pfn *nd_pfn)
606607
size = resource_size(&nsio->res);
607608
npfns = (size - start_pad - end_trunc - SZ_8K) / SZ_4K;
608609
if (nd_pfn->mode == PFN_MODE_PMEM)
609-
offset = ALIGN(start + SZ_8K + 64 * npfns, nd_pfn->align)
610-
- start;
610+
offset = ALIGN(start + SZ_8K + 64 * npfns + dax_label_reserve,
611+
nd_pfn->align) - start;
611612
else if (nd_pfn->mode == PFN_MODE_RAM)
612-
offset = ALIGN(start + SZ_8K, nd_pfn->align) - start;
613+
offset = ALIGN(start + SZ_8K + dax_label_reserve,
614+
nd_pfn->align) - start;
613615
else
614616
return -ENXIO;
615617

0 commit comments

Comments
 (0)