• Qiuxu Zhuo's avatar
    EDAC, skx, i10nm: Make skx_common.c a pure library · fe783516
    Qiuxu Zhuo authored
    The following Kconfig constellations fail randconfig builds:
    
      CONFIG_ACPI_NFIT=y
      CONFIG_EDAC_DEBUG=y
      CONFIG_EDAC_SKX=m
      CONFIG_EDAC_I10NM=y
    
    or
    
      CONFIG_ACPI_NFIT=y
      CONFIG_EDAC_DEBUG=y
      CONFIG_EDAC_SKX=y
      CONFIG_EDAC_I10NM=m
    
    with:
      ...
      CC [M]  drivers/edac/skx_common.o
      ...
      .../skx_common.o:.../skx_common.c:672: undefined reference to `__this_module'
    
    That is because if one of the two drivers - skx_edac or i10nm_edac - is
    built-in and the other one is a module, the shared file skx_common.c
    gets linked into a module object by kbuild. Therefore, when linking that
    same file into vmlinux, the '__this_module' symbol used in debugfs isn't
    defined, leading to the above error.
    
    Fix it by moving all debugfs code from skx_common.c to both skx_base.c
    and i10nm_base.c respectively. Thus, skx_common.c doesn't refer to the
    '__this_module' symbol anymore.
    
    Clarify skx_common.c's purpose at the top of the file for future
    reference, while at it.
    
     [ bp: Make text more readable. ]
    
    Fixes: d4dc89d0 ("EDAC, i10nm: Add a driver for Intel 10nm server processors")
    Reported-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarQiuxu Zhuo <qiuxu.zhuo@intel.com>
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: James Morse <james.morse@arm.com>
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20190321221339.GA32323@agluck-desk
    fe783516
skx_common.h 3.4 KB