• Michael Ellerman's avatar
    powerpc/modules: If mprofile-kernel is enabled add it to vermagic · 43e24e82
    Michael Ellerman authored
    On powerpc we can build the kernel with two different ABIs for mcount(), which
    is used by ftrace. Kernels built with one ABI do not know how to load modules
    built with the other ABI. The new style ABI is called "mprofile-kernel", for
    want of a better name.
    
    Currently if we build a module using the old style ABI, and the kernel with
    mprofile-kernel, when we load the module we'll oops something like:
    
      # insmod autofs4-no-mprofile-kernel.ko
      ftrace-powerpc: Unexpected instruction f8810028 around bl _mcount
      ------------[ cut here ]------------
      WARNING: CPU: 6 PID: 3759 at ../kernel/trace/ftrace.c:2024 ftrace_bug+0x2b8/0x3c0
      CPU: 6 PID: 3759 Comm: insmod Not tainted 4.11.0-rc3-gcc-5.4.1-00017-g5a61ef74 #11
      ...
      NIP [c0000000001eaa48] ftrace_bug+0x2b8/0x3c0
      LR [c0000000001eaff8] ftrace_process_locs+0x4a8/0x590
      Call Trace:
        alloc_pages_current+0xc4/0x1d0 (unreliable)
        ftrace_process_locs+0x4a8/0x590
        load_module+0x1c8c/0x28f0
        SyS_finit_module+0x110/0x140
        system_call+0x38/0xfc
      ...
      ftrace failed to modify
      [<d000000002a31024>] 0xd000000002a31024
       actual:   35:65:00:48
    
    We can avoid this by including in the vermagic whether the kernel/module was
    built with mprofile-kernel. Which results in:
    
      # insmod autofs4-pg.ko
      autofs4: version magic
      '4.11.0-rc3-gcc-5.4.1-00017-g5a61ef74 SMP mod_unload modversions '
      should be
      '4.11.0-rc3-gcc-5.4.1-00017-g5a61ef74-dirty SMP mod_unload modversions mprofile-kernel'
      insmod: ERROR: could not insert module autofs4-pg.ko: Invalid module format
    
    Fixes: 8c50b72a ("powerpc/ftrace: Add Kconfig & Make glue for mprofile-kernel")
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Acked-by: default avatarBalbir Singh <bsingharora@gmail.com>
    Acked-by: default avatarJessica Yu <jeyu@redhat.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    43e24e82
module.h 2.47 KB