Re: ERROR: modpost: "__udivdi3" [fs/btrfs/btrfs.ko] undefined!
From: David Sterba
Date: Tue Nov 03 2020 - 06:15:44 EST
On Tue, Nov 03, 2020 at 06:21:06PM +0800, Qu Wenruo wrote:
>
>
> On 2020/11/3 下午5:47, Geert Uytterhoeven wrote:
> > On Tue, Nov 3, 2020 at 10:43 AM Naresh Kamboju
> > <naresh.kamboju@xxxxxxxxxx> wrote:
> >> Linux next 20201103 tag make modules failed for i386 and arm
> >> architecture builds.
> >>
> >> Error log:
> >> LD [M] fs/btrfs/btrfs.o
> >> MODPOST Module.symvers
> >> ERROR: modpost: "__udivdi3" [fs/btrfs/btrfs.ko] undefined!
> >> scripts/Makefile.modpost:111: recipe for target 'Module.symvers' failed
> >> make[2]: *** [Module.symvers] Error 1
> >>
> >> Full build log,
> >> https://ci.linaro.org/view/lkft/job/openembedded-lkft-linux-next/DISTRO=lkft,MACHINE=intel-core2-32,label=docker-lkft/891/consoleText
> >> https://ci.linaro.org/view/lkft/job/openembedded-lkft-linux-next/DISTRO=lkft,MACHINE=am57xx-evm,label=docker-lkft/891/consoleText
> >>
> >> --
> >> Linaro LKFT
> >> https://lkft.linaro.org
> >
> > Yeah, I had a look earlier today, thanks to the kisskb builder, and
> > the btrfs people are working on a fix.
> > Interestingly, the issue was reported in September, and still entered
> > linux-next, so we all had a great time to look into it ;-)
>
> Yeah, we all know that and how to fix it (just call do_div64() for u64 /
> u32).
> But at that time we're already working on a better solution, other than
> using do_div64(), we use sectorsize_bits shift to replace the division,
> and unfortunately the bit shift fix didn't get merged until recently.
>
> Considering that patch is only designed to be merged after the bit shift
> fix patch, we're not that concerned. (Until some other guys are
> complaining about the linux-next branch).
I've pushed updated for-next that uses the sectorsize_bits.