On Wed,  7 Jan 2026 09:33:10 -0600
John Groves <[email protected]> wrote:

> This function will be used by both device.c and fsdev.c, but both are
> loadable modules. Moving to bus.c puts it in core and makes it available
> to both.
> 
> No code changes - just relocated.
> 
> Signed-off-by: John Groves <[email protected]>
Hi John,

I don't know the code well enough to offer an opinion on whether this
move causes any issues or if this is the best location, so review is superficial
stuff only.

Jonathan

> ---
>  drivers/dax/bus.c    | 27 +++++++++++++++++++++++++++
>  drivers/dax/device.c | 23 -----------------------
>  2 files changed, 27 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
> index fde29e0ad68b..a2f9a3cc30a5 100644
> --- a/drivers/dax/bus.c
> +++ b/drivers/dax/bus.c
> @@ -7,6 +7,9 @@
>  #include <linux/slab.h>
>  #include <linux/dax.h>
>  #include <linux/io.h>
> +#include <linux/backing-dev.h>

I'm not immediately spotting why this one.  Maybe should be in a different
patch?

> +#include <linux/range.h>
> +#include <linux/uio.h>

Why this one?

Style wise, dax seems to use reverse xmas tree for includes, so
this should keep to that.

>  #include "dax-private.h"
>  #include "bus.h"
>  
> @@ -1417,6 +1420,30 @@ static const struct device_type dev_dax_type = {
>       .groups = dax_attribute_groups,
>  };
>  
> +/* see "strong" declaration in tools/testing/nvdimm/dax-dev.c  */
Bonus space before that */
Curiously that wasn't there in the original.

> +__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);
> +
>  static 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 22999a402e02..132c1d03fd07 100644
> --- a/drivers/dax/device.c
> +++ b/drivers/dax/device.c
> @@ -57,29 +57,6 @@ static int check_vma(struct dev_dax *dev_dax, struct 
> vm_area_struct *vma,
>                          vma->vm_file, func);
>  }
>  
> -/* 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, unsigned long pfn,
>                             unsigned long fault_size)
>  {


Reply via email to