Hi Johannes, I love your patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.17-rc4] [cannot apply to next-20180507] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Johannes-Weiner/mm-workingset-don-t-drop-refault-information-prematurely/20180508-081214 config: i386-randconfig-x073-201818 (attached as .config) compiler: gcc-7 (Debian 7.3.0-16) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): In file included from kernel/sched/sched.h:1317:0, from kernel/sched/core.c:8: >> kernel/sched/stats.h:126:1: error: expected identifier or '(' before '{' token { ^ vim +126 kernel/sched/stats.h 57 58 #ifdef CONFIG_PSI 59 /* 60 * PSI tracks state that persists across sleeps, such as iowaits and 61 * memory stalls. As a result, it has to distinguish between sleeps, 62 * where a task's runnable state changes, and requeues, where a task 63 * and its state are being moved between CPUs and runqueues. 64 */ 65 static inline void psi_enqueue(struct task_struct *p, u64 now) 66 { 67 int clear = 0, set = TSK_RUNNING; 68 69 if (p->state == TASK_RUNNING || p->sched_psi_wake_requeue) { 70 if (p->flags & PF_MEMSTALL) 71 set |= TSK_MEMSTALL; 72 p->sched_psi_wake_requeue = 0; 73 } else { 74 if (p->in_iowait) 75 clear |= TSK_IOWAIT; 76 } 77 78 psi_task_change(p, now, clear, set); 79 } 80 static inline void psi_dequeue(struct task_struct *p, u64 now) 81 { 82 int clear = TSK_RUNNING, set = 0; 83 84 if (p->state == TASK_RUNNING) { 85 if (p->flags & PF_MEMSTALL) 86 clear |= TSK_MEMSTALL; 87 } else { 88 if (p->in_iowait) 89 set |= TSK_IOWAIT; 90 } 91 92 psi_task_change(p, now, clear, set); 93 } 94 static inline void psi_ttwu_dequeue(struct task_struct *p) 95 { 96 /* 97 * Is the task being migrated during a wakeup? Make sure to 98 * deregister its sleep-persistent psi states from the old 99 * queue, and let psi_enqueue() know it has to requeue. 100 */ 101 if (unlikely(p->in_iowait || (p->flags & PF_MEMSTALL))) { 102 struct rq_flags rf; 103 struct rq *rq; 104 int clear = 0; 105 106 if (p->in_iowait) 107 clear |= TSK_IOWAIT; 108 if (p->flags & PF_MEMSTALL) 109 clear |= TSK_MEMSTALL; 110 111 rq = __task_rq_lock(p, &rf); 112 update_rq_clock(rq); 113 psi_task_change(p, rq_clock(rq), clear, 0); 114 p->sched_psi_wake_requeue = 1; 115 __task_rq_unlock(rq, &rf); 116 } 117 } 118 #else /* CONFIG_PSI */ 119 static inline void psi_enqueue(struct task_struct *p, u64 now) 120 { 121 } 122 static inline void psi_dequeue(struct task_struct *p, u64 now) 123 { 124 } 125 static inline void psi_ttwu_dequeue(struct task_struct *p) {} > 126 { 127 } 128 #endif /* CONFIG_PSI */ 129 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation