On Fri, 23 Feb 2024 11:41:47 -0600
John Groves <j...@groves.net> wrote:

> bus.c can't call functions in device.c - that creates a circular linkage
> dependency.
> 
> Signed-off-by: John Groves <j...@groves.net>

This also adds the export which you should mention!

Do they need it already? Seems like tense of patch title
may be wrong.

> ---
>  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;

Not related to your patch but returning -1 in a phys_addr_t isn't ideal.
I assume aim is all bits set as a marker, in which case
PHYS_ADDR_MAX from limits.h would make things clearer.

> +}
> +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)
>  {


Reply via email to