bus.c can't call functions in device.c - that creates a circular linkage
dependency.

Signed-off-by: John Groves <j...@groves.net>
---
 drivers/dax/bus.c    | 24 ++++++++++++++++++++++++
 drivers/dax/device.c | 23 -----------------------
 2 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
index 1ff1ab5fa105..664e8c1b9930 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -1325,6 +1325,30 @@ static const struct device_type dev_dax_type = {
        .groups = dax_attribute_groups,
 };
 
+/* see "strong" declaration in tools/testing/nvdimm/dax-dev.c  */
+__weak phys_addr_t dax_pgoff_to_phys(struct dev_dax *dev_dax, pgoff_t pgoff,
+                             unsigned long size)
+{
+       int i;
+
+       for (i = 0; i < dev_dax->nr_range; i++) {
+               struct dev_dax_range *dax_range = &dev_dax->ranges[i];
+               struct range *range = &dax_range->range;
+               unsigned long long pgoff_end;
+               phys_addr_t phys;
+
+               pgoff_end = dax_range->pgoff + PHYS_PFN(range_len(range)) - 1;
+               if (pgoff < dax_range->pgoff || pgoff > pgoff_end)
+                       continue;
+               phys = PFN_PHYS(pgoff - dax_range->pgoff) + range->start;
+               if (phys + size - 1 <= range->end)
+                       return phys;
+               break;
+       }
+       return -1;
+}
+EXPORT_SYMBOL_GPL(dax_pgoff_to_phys);
+
 struct dev_dax *devm_create_dev_dax(struct dev_dax_data *data)
 {
        struct dax_region *dax_region = data->dax_region;
diff --git a/drivers/dax/device.c b/drivers/dax/device.c
index 93ebedc5ec8c..40ba660013cf 100644
--- a/drivers/dax/device.c
+++ b/drivers/dax/device.c
@@ -50,29 +50,6 @@ static int check_vma(struct dev_dax *dev_dax, struct 
vm_area_struct *vma,
        return 0;
 }
 
-/* see "strong" declaration in tools/testing/nvdimm/dax-dev.c */
-__weak phys_addr_t dax_pgoff_to_phys(struct dev_dax *dev_dax, pgoff_t pgoff,
-               unsigned long size)
-{
-       int i;
-
-       for (i = 0; i < dev_dax->nr_range; i++) {
-               struct dev_dax_range *dax_range = &dev_dax->ranges[i];
-               struct range *range = &dax_range->range;
-               unsigned long long pgoff_end;
-               phys_addr_t phys;
-
-               pgoff_end = dax_range->pgoff + PHYS_PFN(range_len(range)) - 1;
-               if (pgoff < dax_range->pgoff || pgoff > pgoff_end)
-                       continue;
-               phys = PFN_PHYS(pgoff - dax_range->pgoff) + range->start;
-               if (phys + size - 1 <= range->end)
-                       return phys;
-               break;
-       }
-       return -1;
-}
-
 static void dax_set_mapping(struct vm_fault *vmf, pfn_t pfn,
                              unsigned long fault_size)
 {
-- 
2.43.0


Reply via email to