On 02/28/2017 11:34 AM, Jason Baron wrote: > > > On 02/28/2017 02:22 PM, David Daney wrote: >> On 02/28/2017 11:05 AM, David Daney wrote: >>> On 02/28/2017 10:39 AM, Jason Baron wrote: >>>> >> [...] >>>>> I suspect that the alignment of the __jump_table section in the .ko >>>>> files is not correct, and you are seeing some sort of problem due to >>>>> that. >>>>> >>>>> >>>> >>>> Hi, >>>> >>>> Yes, if you look at the trace that Sachin sent the module being loaded >>>> that does the WARN_ON() is nfsd.ko. >>>> >>>> That module from Sachin's trace has: >>>> >>>> [31] __jump_table PROGBITS 0000000000000000 03fd77 0000c0 >>>> 18 WAM 0 0 1 >>> >>> The problem is then the section alignment (last column) for power. >>> >>> On mips with no patches applied, we get: >>> >>> [17] __jump_table PROGBITS 0000000000000000 00d2c0 000048 >>> 00 WA 0 0 8 >>> >>> Look, proper alignment! >>> >>> The question I have is why do the power ".llong" and ".long" assembler >>> directives not force section alignment? Is there an alternative that >>> could be used that would result in the proper alignment? Would ".word" >>> work? >>> >>> If not, then I would say patch only power with your balign thing. 8-byte >>> alignment for 64-bit kernel, 4-byte alignment for 32-bit kernel >>> >> >> I think the proper fix is either: >> >> A) Modify scripts/module-common.lds to force __jump_table alignment for >> all architectures. >> >> B) Add arch/powerpc/kernel/module.lds to force __jump_table alignment >> for powerpc only. >> >> David. >> >> > > Ok, I can try adding it to the linger script. > > FWIW, here is my before and after with the .balign thing for the nfsd.ko > module on powperc (using a cross-compiler): > > before: > > [31] __jump_table PROGBITS 0000000000000000 03ee3e 0000f0 > 00 WA 0 0 1 > > after: > > [31] __jump_table PROGBITS 0000000000000000 03ee40 0000f0 > 00 WA 0 0 4 > Try the (lightly tested) attached. If it works and Steven likes it, perhaps someone can merge it. David.