All of lore.kernel.org
 help / color / mirror / Atom feed
* kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)'
@ 2021-03-31  6:15 ` kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-03-31  6:15 UTC (permalink / raw)
  To: Peter Zijlstra (Intel)
  Cc: kbuild-all, linux-kernel, Ingo Molnar, Frederic Weisbecker

[-- Attachment #1: Type: text/plain, Size: 17847 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   5e46d1b78a03d52306f21f77a4e4a144b6d31486
commit: 826bfeb37bb4302ee6042f330c4c0c757152bdb8 preempt/dynamic: Support dynamic preempt with preempt= boot option
date:   6 weeks ago
config: x86_64-randconfig-r011-20210331 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=826bfeb37bb4302ee6042f330c4c0c757152bdb8
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 826bfeb37bb4302ee6042f330c4c0c757152bdb8
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   kernel/sched/core.c: In function 'schedule_tail':
   kernel/sched/core.c:4252:13: warning: variable 'rq' set but not used [-Wunused-but-set-variable]
    4252 |  struct rq *rq;
         |             ^~
   In file included from include/linux/err.h:5,
                    from include/linux/kthread.h:5,
                    from include/trace/events/sched.h:8,
                    from kernel/sched/core.c:10:
   kernel/sched/core.c: In function 'setup_preempt_mode':
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                    ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5370:3: note: in expansion of macro 'static_call_update'
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                             ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5370:3: note: in expansion of macro 'static_call_update'
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
      69 |  (cond) ?     \
         |   ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
      56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
         |                            ^~~~~~~~~~~~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5370:3: note: in expansion of macro 'static_call_update'
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/tracepoint.h:22,
                    from include/trace/events/sched.h:10,
                    from kernel/sched/core.c:10:
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/static_call.h:118:39: note: in definition of macro 'static_call_update'
     118 |         STATIC_CALL_TRAMP_ADDR(name), func); \
         |                                       ^~~~
   In file included from include/linux/err.h:5,
                    from include/linux/kthread.h:5,
                    from include/trace/events/sched.h:8,
                    from kernel/sched/core.c:10:
   kernel/sched/core.c:5383:36: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                    ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                    ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5383:3: note: in expansion of macro 'static_call_update'
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
   kernel/sched/core.c:5383:36: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                    ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                             ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5383:3: note: in expansion of macro 'static_call_update'
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
   kernel/sched/core.c:5383:36: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                    ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
      69 |  (cond) ?     \
         |   ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
      56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
         |                            ^~~~~~~~~~~~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5383:3: note: in expansion of macro 'static_call_update'


vim +5370 kernel/sched/core.c

  5336	
  5337	/*
  5338	 * SC:cond_resched
  5339	 * SC:might_resched
  5340	 * SC:preempt_schedule
  5341	 * SC:preempt_schedule_notrace
  5342	 * SC:irqentry_exit_cond_resched
  5343	 *
  5344	 *
  5345	 * NONE:
  5346	 *   cond_resched               <- __cond_resched
  5347	 *   might_resched              <- RET0
  5348	 *   preempt_schedule           <- NOP
  5349	 *   preempt_schedule_notrace   <- NOP
  5350	 *   irqentry_exit_cond_resched <- NOP
  5351	 *
  5352	 * VOLUNTARY:
  5353	 *   cond_resched               <- __cond_resched
  5354	 *   might_resched              <- __cond_resched
  5355	 *   preempt_schedule           <- NOP
  5356	 *   preempt_schedule_notrace   <- NOP
  5357	 *   irqentry_exit_cond_resched <- NOP
  5358	 *
  5359	 * FULL:
  5360	 *   cond_resched               <- RET0
  5361	 *   might_resched              <- RET0
  5362	 *   preempt_schedule           <- preempt_schedule
  5363	 *   preempt_schedule_notrace   <- preempt_schedule_notrace
  5364	 *   irqentry_exit_cond_resched <- irqentry_exit_cond_resched
  5365	 */
  5366	static int __init setup_preempt_mode(char *str)
  5367	{
  5368		if (!strcmp(str, "none")) {
  5369			static_call_update(cond_resched, __cond_resched);
> 5370			static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
  5371			static_call_update(preempt_schedule, (typeof(&preempt_schedule)) NULL);
  5372			static_call_update(preempt_schedule_notrace, (typeof(&preempt_schedule_notrace)) NULL);
  5373			static_call_update(irqentry_exit_cond_resched, (typeof(&irqentry_exit_cond_resched)) NULL);
  5374			pr_info("Dynamic Preempt: %s\n", str);
  5375		} else if (!strcmp(str, "voluntary")) {
  5376			static_call_update(cond_resched, __cond_resched);
  5377			static_call_update(might_resched, __cond_resched);
  5378			static_call_update(preempt_schedule, (typeof(&preempt_schedule)) NULL);
  5379			static_call_update(preempt_schedule_notrace, (typeof(&preempt_schedule_notrace)) NULL);
  5380			static_call_update(irqentry_exit_cond_resched, (typeof(&irqentry_exit_cond_resched)) NULL);
  5381			pr_info("Dynamic Preempt: %s\n", str);
  5382		} else if (!strcmp(str, "full")) {
  5383			static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
  5384			static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
  5385			static_call_update(preempt_schedule, __preempt_schedule_func);
  5386			static_call_update(preempt_schedule_notrace, __preempt_schedule_notrace_func);
  5387			static_call_update(irqentry_exit_cond_resched, irqentry_exit_cond_resched);
  5388			pr_info("Dynamic Preempt: %s\n", str);
  5389		} else {
  5390			pr_warn("Dynamic Preempt: Unsupported preempt mode %s, default to full\n", str);
  5391			return 1;
  5392		}
  5393		return 0;
  5394	}
  5395	__setup("preempt=", setup_preempt_mode);
  5396	

---
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: 36513 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)'
@ 2021-03-31  6:15 ` kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-03-31  6:15 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 18143 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   5e46d1b78a03d52306f21f77a4e4a144b6d31486
commit: 826bfeb37bb4302ee6042f330c4c0c757152bdb8 preempt/dynamic: Support dynamic preempt with preempt= boot option
date:   6 weeks ago
config: x86_64-randconfig-r011-20210331 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=826bfeb37bb4302ee6042f330c4c0c757152bdb8
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 826bfeb37bb4302ee6042f330c4c0c757152bdb8
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   kernel/sched/core.c: In function 'schedule_tail':
   kernel/sched/core.c:4252:13: warning: variable 'rq' set but not used [-Wunused-but-set-variable]
    4252 |  struct rq *rq;
         |             ^~
   In file included from include/linux/err.h:5,
                    from include/linux/kthread.h:5,
                    from include/trace/events/sched.h:8,
                    from kernel/sched/core.c:10:
   kernel/sched/core.c: In function 'setup_preempt_mode':
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                    ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5370:3: note: in expansion of macro 'static_call_update'
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                             ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5370:3: note: in expansion of macro 'static_call_update'
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
      69 |  (cond) ?     \
         |   ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
      56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
         |                            ^~~~~~~~~~~~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5370:3: note: in expansion of macro 'static_call_update'
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/tracepoint.h:22,
                    from include/trace/events/sched.h:10,
                    from kernel/sched/core.c:10:
>> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5370 |   static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                     ^
   include/linux/static_call.h:118:39: note: in definition of macro 'static_call_update'
     118 |         STATIC_CALL_TRAMP_ADDR(name), func); \
         |                                       ^~~~
   In file included from include/linux/err.h:5,
                    from include/linux/kthread.h:5,
                    from include/trace/events/sched.h:8,
                    from kernel/sched/core.c:10:
   kernel/sched/core.c:5383:36: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                    ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                    ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5383:3: note: in expansion of macro 'static_call_update'
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
   kernel/sched/core.c:5383:36: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                    ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                             ^~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5383:3: note: in expansion of macro 'static_call_update'
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |   ^~~~~~~~~~~~~~~~~~
   kernel/sched/core.c:5383:36: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]
    5383 |   static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
         |                                    ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
      69 |  (cond) ?     \
         |   ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
      56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
         |                            ^~~~~~~~~~~~~~
   include/linux/compiler_types.h:300:3: note: in expansion of macro 'if'
     300 |   if (!(condition))     \
         |   ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   include/linux/static_call.h:116:2: note: in expansion of macro 'BUILD_BUG_ON'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |  ^~~~~~~~~~~~
   include/linux/static_call.h:116:16: note: in expansion of macro '__same_type'
     116 |  BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name))); \
         |                ^~~~~~~~~~~
   kernel/sched/core.c:5383:3: note: in expansion of macro 'static_call_update'


vim +5370 kernel/sched/core.c

  5336	
  5337	/*
  5338	 * SC:cond_resched
  5339	 * SC:might_resched
  5340	 * SC:preempt_schedule
  5341	 * SC:preempt_schedule_notrace
  5342	 * SC:irqentry_exit_cond_resched
  5343	 *
  5344	 *
  5345	 * NONE:
  5346	 *   cond_resched               <- __cond_resched
  5347	 *   might_resched              <- RET0
  5348	 *   preempt_schedule           <- NOP
  5349	 *   preempt_schedule_notrace   <- NOP
  5350	 *   irqentry_exit_cond_resched <- NOP
  5351	 *
  5352	 * VOLUNTARY:
  5353	 *   cond_resched               <- __cond_resched
  5354	 *   might_resched              <- __cond_resched
  5355	 *   preempt_schedule           <- NOP
  5356	 *   preempt_schedule_notrace   <- NOP
  5357	 *   irqentry_exit_cond_resched <- NOP
  5358	 *
  5359	 * FULL:
  5360	 *   cond_resched               <- RET0
  5361	 *   might_resched              <- RET0
  5362	 *   preempt_schedule           <- preempt_schedule
  5363	 *   preempt_schedule_notrace   <- preempt_schedule_notrace
  5364	 *   irqentry_exit_cond_resched <- irqentry_exit_cond_resched
  5365	 */
  5366	static int __init setup_preempt_mode(char *str)
  5367	{
  5368		if (!strcmp(str, "none")) {
  5369			static_call_update(cond_resched, __cond_resched);
> 5370			static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
  5371			static_call_update(preempt_schedule, (typeof(&preempt_schedule)) NULL);
  5372			static_call_update(preempt_schedule_notrace, (typeof(&preempt_schedule_notrace)) NULL);
  5373			static_call_update(irqentry_exit_cond_resched, (typeof(&irqentry_exit_cond_resched)) NULL);
  5374			pr_info("Dynamic Preempt: %s\n", str);
  5375		} else if (!strcmp(str, "voluntary")) {
  5376			static_call_update(cond_resched, __cond_resched);
  5377			static_call_update(might_resched, __cond_resched);
  5378			static_call_update(preempt_schedule, (typeof(&preempt_schedule)) NULL);
  5379			static_call_update(preempt_schedule_notrace, (typeof(&preempt_schedule_notrace)) NULL);
  5380			static_call_update(irqentry_exit_cond_resched, (typeof(&irqentry_exit_cond_resched)) NULL);
  5381			pr_info("Dynamic Preempt: %s\n", str);
  5382		} else if (!strcmp(str, "full")) {
  5383			static_call_update(cond_resched, (typeof(&__cond_resched)) __static_call_return0);
  5384			static_call_update(might_resched, (typeof(&__cond_resched)) __static_call_return0);
  5385			static_call_update(preempt_schedule, __preempt_schedule_func);
  5386			static_call_update(preempt_schedule_notrace, __preempt_schedule_notrace_func);
  5387			static_call_update(irqentry_exit_cond_resched, irqentry_exit_cond_resched);
  5388			pr_info("Dynamic Preempt: %s\n", str);
  5389		} else {
  5390			pr_warn("Dynamic Preempt: Unsupported preempt mode %s, default to full\n", str);
  5391			return 1;
  5392		}
  5393		return 0;
  5394	}
  5395	__setup("preempt=", setup_preempt_mode);
  5396	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36513 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)'
  2021-03-31  6:15 ` kernel test robot
@ 2021-03-31  7:32   ` Peter Zijlstra
  -1 siblings, 0 replies; 4+ messages in thread
From: Peter Zijlstra @ 2021-03-31  7:32 UTC (permalink / raw)
  To: kernel test robot
  Cc: kbuild-all, linux-kernel, Ingo Molnar, Frederic Weisbecker

On Wed, Mar 31, 2021 at 02:15:41PM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   5e46d1b78a03d52306f21f77a4e4a144b6d31486
> commit: 826bfeb37bb4302ee6042f330c4c0c757152bdb8 preempt/dynamic: Support dynamic preempt with preempt= boot option
> date:   6 weeks ago
> config: x86_64-randconfig-r011-20210331 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
> reproduce (this is a W=1 build):
>         # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=826bfeb37bb4302ee6042f330c4c0c757152bdb8
>         git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>         git fetch --no-tags linus master
>         git checkout 826bfeb37bb4302ee6042f330c4c0c757152bdb8
>         # save the attached .config to linux build tree
>         make W=1 ARCH=x86_64 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All warnings (new ones prefixed by >>):
> 
>    kernel/sched/core.c: In function 'schedule_tail':
>    kernel/sched/core.c:4252:13: warning: variable 'rq' set but not used [-Wunused-but-set-variable]
>     4252 |  struct rq *rq;
>          |             ^~
>    In file included from include/linux/err.h:5,
>                     from include/linux/kthread.h:5,
>                     from include/trace/events/sched.h:8,
>                     from kernel/sched/core.c:10:
>    kernel/sched/core.c: In function 'setup_preempt_mode':
> >> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]

That warning is broken IMO.

Still, I have a patch for this somewhere.. I'll try and push it out
sometime soon.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)'
@ 2021-03-31  7:32   ` Peter Zijlstra
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Zijlstra @ 2021-03-31  7:32 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1859 bytes --]

On Wed, Mar 31, 2021 at 02:15:41PM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   5e46d1b78a03d52306f21f77a4e4a144b6d31486
> commit: 826bfeb37bb4302ee6042f330c4c0c757152bdb8 preempt/dynamic: Support dynamic preempt with preempt= boot option
> date:   6 weeks ago
> config: x86_64-randconfig-r011-20210331 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
> reproduce (this is a W=1 build):
>         # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=826bfeb37bb4302ee6042f330c4c0c757152bdb8
>         git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>         git fetch --no-tags linus master
>         git checkout 826bfeb37bb4302ee6042f330c4c0c757152bdb8
>         # save the attached .config to linux build tree
>         make W=1 ARCH=x86_64 
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> All warnings (new ones prefixed by >>):
> 
>    kernel/sched/core.c: In function 'schedule_tail':
>    kernel/sched/core.c:4252:13: warning: variable 'rq' set but not used [-Wunused-but-set-variable]
>     4252 |  struct rq *rq;
>          |             ^~
>    In file included from include/linux/err.h:5,
>                     from include/linux/kthread.h:5,
>                     from include/trace/events/sched.h:8,
>                     from kernel/sched/core.c:10:
>    kernel/sched/core.c: In function 'setup_preempt_mode':
> >> kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' [-Wcast-function-type]

That warning is broken IMO.

Still, I have a patch for this somewhere.. I'll try and push it out
sometime soon.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-03-31  7:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-31  6:15 kernel/sched/core.c:5370:37: warning: cast between incompatible function types from 'long int (*)(void)' to 'int (*)(void)' kernel test robot
2021-03-31  6:15 ` kernel test robot
2021-03-31  7:32 ` Peter Zijlstra
2021-03-31  7:32   ` Peter Zijlstra

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.