Skip to contentSkip to conversation

FAILED: patch "[PATCH] libnvdimm, pfn: Pad pfn namespaces relative to other regions" failed to apply to 4.9-stable tree

PATCH [email protected] 1 participant 1 message Dec 11, 2018

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

Quoted 1 line

From ae86cbfef3818300f1972e52f67a93211acb0e24 Mon Sep 17 00:00:00 2001

From: Dan Williams <[email protected]>
Date: Sat, 24 Nov 2018 10:47:04 -0800
Subject: [PATCH] libnvdimm, pfn: Pad pfn namespaces relative to other regions

Commit cfe30b872058 "libnvdimm, pmem: adjust for section collisions with 'System RAM'" enabled Linux to workaround occasions where platform firmware arranges for "System RAM" and "Persistent Memory" to collide within a single section boundary. Unfortunately, as reported in this issue [1], platform firmware can inflict the same collision between persistent memory regions.

The approach of interrogating iomem_resource does not work in this case because platform firmware may merge multiple regions into a single iomem_resource range. Instead provide a method to interrogate regions that share the same parent bus.

This is a stop-gap until the core-MM can grow support for hotplug on sub-section boundaries.

[1]: https://github.com/pmem/ndctl/issues/76

Fixes cfe30b872058 ("libnvdimm, pmem: adjust for section collisions with...")
drivers/nvdimm/nd-core.h +2 -0
index 182258f64417..d0c621b32f72 100644
@@ -111,6 +111,8 @@ resource_size_t nd_pmem_available_dpa(struct nd_region *nd_region,
 		struct nd_mapping *nd_mapping, resource_size_t *overlap);
 resource_size_t nd_blk_available_dpa(struct nd_region *nd_region);
 resource_size_t nd_region_available_dpa(struct nd_region *nd_region);
+int nd_region_conflict(struct nd_region *nd_region, resource_size_t start,
+		resource_size_t size);
 resource_size_t nvdimm_allocated_dpa(struct nvdimm_drvdata *ndd,
 		struct nd_label_id *label_id);
 int alias_dpa_busy(struct device *dev, void *data);
drivers/nvdimm/pfn_devs.c +37 -27

88 lines not on this page · raw message

drivers/nvdimm/region_devs.c +41 -0

47 lines not on this page · raw message