Hi,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on tip/sched/core]
[also build test WARNING on v5.12-rc7 next-20210413]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/qianjun-kernel-gmail-com/sched-fair-Reduce-unnecessary-check-preempt-in-the-sched-tick/20210413-212057
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 
4aed8aa41524a1fc6439171881c2bb7ace197528
config: i386-randconfig-s001-20210413 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-280-g2cd6d34e-dirty
        # 
https://github.com/0day-ci/linux/commit/dbe8fdaf74553572909be6f118565862c4cdfac5
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
qianjun-kernel-gmail-com/sched-fair-Reduce-unnecessary-check-preempt-in-the-sched-tick/20210413-212057
        git checkout dbe8fdaf74553572909be6f118565862c4cdfac5
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

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


sparse warnings: (new ones prefixed by >>)
   kernel/sched/fair.c:871:34: sparse: sparse: incorrect type in argument 1 
(different address spaces) @@     expected struct sched_entity *se @@     got 
struct sched_entity [noderef] __rcu * @@
   kernel/sched/fair.c:871:34: sparse:     expected struct sched_entity *se
   kernel/sched/fair.c:871:34: sparse:     got struct sched_entity [noderef] 
__rcu *
>> kernel/sched/fair.c:4386:37: sparse: sparse: incorrect type in argument 1 
>> (different address spaces) @@     expected struct task_struct *tsk @@     
>> got struct task_struct [noderef] __rcu *curr @@
   kernel/sched/fair.c:4386:37: sparse:     expected struct task_struct *tsk
   kernel/sched/fair.c:4386:37: sparse:     got struct task_struct [noderef] 
__rcu *curr
   kernel/sched/fair.c:7000:38: sparse: sparse: incorrect type in initializer 
(different address spaces) @@     expected struct task_struct *curr @@     got 
struct task_struct [noderef] __rcu *curr @@
   kernel/sched/fair.c:7000:38: sparse:     expected struct task_struct *curr
   kernel/sched/fair.c:7000:38: sparse:     got struct task_struct [noderef] 
__rcu *curr
   kernel/sched/fair.c:7251:38: sparse: sparse: incorrect type in initializer 
(different address spaces) @@     expected struct task_struct *curr @@     got 
struct task_struct [noderef] __rcu *curr @@
   kernel/sched/fair.c:7251:38: sparse:     expected struct task_struct *curr
   kernel/sched/fair.c:7251:38: sparse:     got struct task_struct [noderef] 
__rcu *curr
   kernel/sched/fair.c:5383:35: sparse: sparse: marked inline, but without a 
definition
   kernel/sched/fair.c: note: in included file:
   kernel/sched/sched.h:1887:9: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   kernel/sched/sched.h:1887:9: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/sched.h:1887:9: sparse:    struct task_struct *
   kernel/sched/sched.h:1732:25: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   kernel/sched/sched.h:1732:25: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/sched.h:1732:25: sparse:    struct task_struct *
   kernel/sched/sched.h:1732:25: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   kernel/sched/sched.h:1732:25: sparse:    struct task_struct [noderef] __rcu *
   kernel/sched/sched.h:1732:25: sparse:    struct task_struct *

vim +4386 kernel/sched/fair.c

  4373  
  4374  /*
  4375   * Preempt the current task with a newly woken task if needed:
  4376   */
  4377  static void
  4378  check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr)
  4379  {
  4380          unsigned long ideal_runtime, delta_exec;
  4381          struct sched_entity *se;
  4382          struct rq *rq = rq_of(cfs_rq);
  4383          s64 delta;
  4384  
  4385          /* If the TIF_NEED_RESCHED has been set, it is no need to check 
again */
> 4386          if (test_tsk_need_resched(rq->curr))
  4387                  return;
  4388  
  4389          ideal_runtime = sched_slice(cfs_rq, curr);
  4390          delta_exec = curr->sum_exec_runtime - 
curr->prev_sum_exec_runtime;
  4391          if (delta_exec > ideal_runtime) {
  4392                  resched_curr(rq_of(cfs_rq));
  4393                  /*
  4394                   * The current task ran long enough, ensure it doesn't 
get
  4395                   * re-elected due to buddy favours.
  4396                   */
  4397                  clear_buddies(cfs_rq, curr);
  4398                  return;
  4399          }
  4400  
  4401          /*
  4402           * Ensure that a task that missed wakeup preemption by a
  4403           * narrow margin doesn't have to wait for a full slice.
  4404           * This also mitigates buddy induced latencies under load.
  4405           */
  4406          if (delta_exec < sysctl_sched_min_granularity)
  4407                  return;
  4408  
  4409          se = __pick_first_entity(cfs_rq);
  4410          delta = curr->vruntime - se->vruntime;
  4411  
  4412          if (delta < 0)
  4413                  return;
  4414  
  4415          if (delta > ideal_runtime)
  4416                  resched_curr(rq_of(cfs_rq));
  4417  }
  4418  

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

Attachment: .config.gz
Description: application/gzip

Reply via email to