Hi Chris, Thank you for the patch! Yet something to improve: [auto build test ERROR on drm-intel/for-linux-next] [also build test ERROR on drm-tip/drm-tip v5.11-rc2 next-20210104] [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/Chris-Wilson/drm-i915-gem-Almagamate-clflushes-on-suspend/20210104-220329 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: x86_64-randconfig-a004-20210105 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 98cd1c33e3c2c3cfee36fb0fea3285fda06224d3) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/e17680e4b8352355fb03d0aeab4b0f16994fa2bd git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Chris-Wilson/drm-i915-gem-Almagamate-clflushes-on-suspend/20210104-220329 git checkout e17680e4b8352355fb03d0aeab4b0f16994fa2bd # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> drivers/gpu/drm/i915/gem/i915_gem_pm.c:78:3: error: implicit declaration of function 'wbinvd_on_all_cpus' [-Werror,-Wimplicit-function-declaration] wbinvd_on_all_cpus(); ^ 1 error generated. vim +/wbinvd_on_all_cpus +78 drivers/gpu/drm/i915/gem/i915_gem_pm.c 34 35 void i915_gem_suspend_late(struct drm_i915_private *i915) 36 { 37 struct drm_i915_gem_object *obj; 38 struct list_head *phases[] = { 39 &i915->mm.shrink_list, 40 &i915->mm.purge_list, 41 NULL 42 }, **phase; 43 unsigned long flags; 44 bool flush = false; 45 46 /* 47 * Neither the BIOS, ourselves or any other kernel 48 * expects the system to be in execlists mode on startup, 49 * so we need to reset the GPU back to legacy mode. And the only 50 * known way to disable logical contexts is through a GPU reset. 51 * 52 * So in order to leave the system in a known default configuration, 53 * always reset the GPU upon unload and suspend. Afterwards we then 54 * clean up the GEM state tracking, flushing off the requests and 55 * leaving the system in a known idle state. 56 * 57 * Note that is of the upmost importance that the GPU is idle and 58 * all stray writes are flushed *before* we dismantle the backing 59 * storage for the pinned objects. 60 * 61 * However, since we are uncertain that resetting the GPU on older 62 * machines is a good idea, we don't - just in case it leaves the 63 * machine in an unusable condition. 64 */ 65 66 intel_gt_suspend_late(&i915->gt); 67 68 spin_lock_irqsave(&i915->mm.obj_lock, flags); 69 for (phase = phases; *phase; phase++) { 70 list_for_each_entry(obj, *phase, mm.link) { 71 if (!(obj->cache_coherent & I915_BO_CACHE_COHERENT_FOR_READ)) 72 flush |= (obj->read_domains & I915_GEM_DOMAIN_CPU) == 0; 73 __start_cpu_write(obj); /* presume auto-hibernate */ 74 } 75 } 76 spin_unlock_irqrestore(&i915->mm.obj_lock, flags); 77 if (flush) > 78 wbinvd_on_all_cpus(); 79 } 80 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org