Thread (1 message) 1 message, 1 author, 2020-02-14

Re: Re: [PATCH v4 10/11] mm/damon: Add kunit tests

From: SeongJae Park <hidden>
Date: 2020-02-14 11:19:56
Also in: linux-mm, lkml

On Fri, 14 Feb 2020 00:56:50 +0800 kbuild test robot [off-list ref] wrote:
[-- Attachment #1: Type: text/plain, Size: 3435 bytes --]

Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on d5226fa6dbae0569ee43ecfc08bdcd6770fc4755]

url:    https://github.com/0day-ci/linux/commits/sjpark-amazon-com/Introduce-Data-Access-MONitor-DAMON/20200213-003254
base:    d5226fa6dbae0569ee43ecfc08bdcd6770fc4755
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.5.0-4) 7.5.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <redacted>

All errors (new ones prefixed by >>):

   In file included from mm/damon.c:19:0:
quoted
quoted
include/linux/module.h:131:42: error: redefinition of '__inittest'
     static inline initcall_t __maybe_unused __inittest(void)  \
                                             ^
   include/linux/module.h:124:28: note: in expansion of macro 'module_init'
    #define late_initcall(fn)  module_init(fn)
                               ^~~~~~~~~~~
   include/kunit/test.h:224:2: note: in expansion of macro 'late_initcall'
     late_initcall(kunit_suite_init##suite)
     ^~~~~~~~~~~~~
   mm/damon-test.h:600:1: note: in expansion of macro 'kunit_test_suite'
    kunit_test_suite(damon_test_suite);
    ^~~~~~~~~~~~~~~~
   include/linux/module.h:131:42: note: previous definition of '__inittest' was here
     static inline initcall_t __maybe_unused __inittest(void)  \
                                             ^
   mm/damon.c:1406:1: note: in expansion of macro 'module_init'
    module_init(damon_init);
    ^~~~~~~~~~~
quoted
quoted
include/linux/module.h:133:6: error: redefinition of 'init_module'
     int init_module(void) __copy(initfn) __attribute__((alias(#initfn)));
         ^
   include/linux/module.h:124:28: note: in expansion of macro 'module_init'
    #define late_initcall(fn)  module_init(fn)
                               ^~~~~~~~~~~
   include/kunit/test.h:224:2: note: in expansion of macro 'late_initcall'
     late_initcall(kunit_suite_init##suite)
     ^~~~~~~~~~~~~
   mm/damon-test.h:600:1: note: in expansion of macro 'kunit_test_suite'
    kunit_test_suite(damon_test_suite);
    ^~~~~~~~~~~~~~~~
   include/linux/module.h:133:6: note: previous definition of 'init_module' was here
     int init_module(void) __copy(initfn) __attribute__((alias(#initfn)));
         ^
   mm/damon.c:1406:1: note: in expansion of macro 'module_init'
    module_init(damon_init);
    ^~~~~~~~~~~

vim +/__inittest +131 include/linux/module.h

0fd972a7d91d6e1 Paul Gortmaker 2015-05-01  128  
0fd972a7d91d6e1 Paul Gortmaker 2015-05-01  129  /* Each module must use one module_init(). */
0fd972a7d91d6e1 Paul Gortmaker 2015-05-01  130  #define module_init(initfn)					\
1f318a8bafcfba9 Arnd Bergmann  2017-02-01 @131  	static inline initcall_t __maybe_unused __inittest(void)		\
0fd972a7d91d6e1 Paul Gortmaker 2015-05-01  132  	{ return initfn; }					\
a6e60d84989fa0e Miguel Ojeda   2019-01-19 @133  	int init_module(void) __copy(initfn) __attribute__((alias(#initfn)));
0fd972a7d91d6e1 Paul Gortmaker 2015-05-01  134  

:::::: The code at line 131 was first introduced by commit
:::::: 1f318a8bafcfba9f0d623f4870c4e890fd22e659 modules: mark __inittest/__exittest as __maybe_unused

:::::: TO: Arnd Bergmann [off-list ref]
:::::: CC: Jessica Yu [off-list ref]
Thank you for finding yet another problem!  The problem is reproducible if
`CONFIG_DAMON=m` but `CONFIG_DAMON_KUNIT_TEST=y`.  Will fix this problem by
simply adjusting the dependency of the tests as below.  It will avoid the build
of the test code when DAMON is configured to be built as a module::

    diff --git a/mm/Kconfig b/mm/Kconfig
    index b279ab9c78d0..1a745ce0cbcb 100644
    --- a/mm/Kconfig
    +++ b/mm/Kconfig
    @@ -753,7 +753,7 @@ config DAMON
    
     config DAMON_KUNIT_TEST
            bool "Test for damon"
    -       depends on DAMON && KUNIT
    +       depends on DAMON=y && KUNIT
            help
              This builds the DAMON Kunit test suite.

I think this is fair enough as KUNIT is not exporting its main functions to
modules and thus cannot be used by modules anyway.


Thanks,
SeongJae Park
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 71807 bytes --]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help