Messages in this thread | | | From | Dan Williams <> | Date | Tue, 31 Mar 2020 02:46:52 -0700 | Subject | Re: [PATCH -next] libnvdimm/region: Fix build error |
| |
On Mon, Mar 30, 2020 at 7:23 AM YueHaibing <yuehaibing@huawei.com> wrote: > > On CONFIG_PPC32=y build fails: > > drivers/nvdimm/region_devs.c:1034:14: note: in expansion of macro ‘do_div’ > remainder = do_div(per_mapping, mappings); > ^~~~~~ > In file included from ./arch/powerpc/include/generated/asm/div64.h:1:0, > from ./include/linux/kernel.h:18, > from ./include/asm-generic/bug.h:19, > from ./arch/powerpc/include/asm/bug.h:109, > from ./include/linux/bug.h:5, > from ./include/linux/scatterlist.h:7, > from drivers/nvdimm/region_devs.c:5: > ./include/asm-generic/div64.h:243:22: error: passing argument 1 of ‘__div64_32’ from incompatible pointer type [-Werror=incompatible-pointer-types] > __rem = __div64_32(&(n), __base); \ > > Use div_u64 instead of do_div to fix this. > > Fixes: 2522afb86a8c ("libnvdimm/region: Introduce an 'align' attribute") > Signed-off-by: YueHaibing <yuehaibing@huawei.com> > --- > drivers/nvdimm/region_devs.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c > index bf239e783940..2291f0649d27 100644 > --- a/drivers/nvdimm/region_devs.c > +++ b/drivers/nvdimm/region_devs.c > @@ -564,7 +564,7 @@ static ssize_t align_store(struct device *dev, > * space for the namespace. > */ > dpa = val; > - remainder = do_div(dpa, nd_region->ndr_mappings); > + remainder = div_u64(dpa, nd_region->ndr_mappings);
This is not an equivalent conversion.
dpa = div_u64_rem(val, nd_region->ndr_mappings, &remainder);
> if (!is_power_of_2(dpa) || dpa < PAGE_SIZE > || val > region_size(nd_region) || remainder) > return -EINVAL; > @@ -1031,7 +1031,7 @@ static unsigned long default_align(struct nd_region *nd_region) > > mappings = max_t(u16, 1, nd_region->ndr_mappings); > per_mapping = align; > - remainder = do_div(per_mapping, mappings); > + remainder = div_u64(per_mapping, mappings);
Same problem here.
| |