Hi Matthew, [FYI, it's a private test report for your RFC patch.] [auto build test WARNING on drm-tip/drm-tip] [cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next drm/drm-next v5.12 next-20210506] [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/Matthew-Brost/Basic-GuC-submission-support-in-the-i915/20210507-030308 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip :::::: branch date: 6 hours ago :::::: commit date: 6 hours ago config: i386-randconfig-s002-20210506 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://github.com/0day-ci/linux/commit/07a654f75149663bf7c39bab3c2087cefcb73799 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Matthew-Brost/Basic-GuC-submission-support-in-the-i915/20210507-030308 git checkout 07a654f75149663bf7c39bab3c2087cefcb73799 # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:2160:26: sparse: sparse: context imbalance in 'retire_worker_sched_disable' - different lock contexts for basic block vim +/retire_worker_sched_disable +2160 drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c 07a654f7514966 Matthew Brost 2021-05-06 2101 07a654f7514966 Matthew Brost 2021-05-06 2102 static void retire_worker_sched_disable(struct intel_guc *guc, 07a654f7514966 Matthew Brost 2021-05-06 2103 struct intel_context *ce) 07a654f7514966 Matthew Brost 2021-05-06 2104 { 07a654f7514966 Matthew Brost 2021-05-06 2105 unsigned long flags; 07a654f7514966 Matthew Brost 2021-05-06 2106 bool disabled; 07a654f7514966 Matthew Brost 2021-05-06 2107 07a654f7514966 Matthew Brost 2021-05-06 2108 guc->stalled_context = NULL; 07a654f7514966 Matthew Brost 2021-05-06 2109 spin_lock_irqsave(&ce->guc_state.lock, flags); 07a654f7514966 Matthew Brost 2021-05-06 2110 disabled = submission_disabled(guc); 07a654f7514966 Matthew Brost 2021-05-06 2111 if (!disabled && !context_pending_disable(ce) && context_enabled(ce)) { 07a654f7514966 Matthew Brost 2021-05-06 2112 /* 07a654f7514966 Matthew Brost 2021-05-06 2113 * Still enabled, issue schedule disable + configure state so 07a654f7514966 Matthew Brost 2021-05-06 2114 * when G2H returns tasklet is kicked. 07a654f7514966 Matthew Brost 2021-05-06 2115 */ 07a654f7514966 Matthew Brost 2021-05-06 2116 07a654f7514966 Matthew Brost 2021-05-06 2117 struct intel_runtime_pm *runtime_pm = 07a654f7514966 Matthew Brost 2021-05-06 2118 &ce->engine->gt->i915->runtime_pm; 07a654f7514966 Matthew Brost 2021-05-06 2119 intel_wakeref_t wakeref; 07a654f7514966 Matthew Brost 2021-05-06 2120 u16 guc_id; 07a654f7514966 Matthew Brost 2021-05-06 2121 07a654f7514966 Matthew Brost 2021-05-06 2122 /* 07a654f7514966 Matthew Brost 2021-05-06 2123 * We add +2 here as the schedule disable complete CTB handler 07a654f7514966 Matthew Brost 2021-05-06 2124 * calls intel_context_sched_disable_unpin (-2 to pin_count). 07a654f7514966 Matthew Brost 2021-05-06 2125 */ 07a654f7514966 Matthew Brost 2021-05-06 2126 GEM_BUG_ON(!atomic_read(&ce->pin_count)); 07a654f7514966 Matthew Brost 2021-05-06 2127 atomic_add(2, &ce->pin_count); 07a654f7514966 Matthew Brost 2021-05-06 2128 07a654f7514966 Matthew Brost 2021-05-06 2129 set_context_block_tasklet(ce); 07a654f7514966 Matthew Brost 2021-05-06 2130 guc_id = prep_context_pending_disable(ce); 07a654f7514966 Matthew Brost 2021-05-06 2131 spin_unlock_irqrestore(&ce->guc_state.lock, flags); 07a654f7514966 Matthew Brost 2021-05-06 2132 07a654f7514966 Matthew Brost 2021-05-06 2133 with_intel_runtime_pm(runtime_pm, wakeref) 07a654f7514966 Matthew Brost 2021-05-06 2134 __guc_context_sched_disable(guc, ce, guc_id); 07a654f7514966 Matthew Brost 2021-05-06 2135 07a654f7514966 Matthew Brost 2021-05-06 2136 invalidate_guc_id_sched_disable(ce); 07a654f7514966 Matthew Brost 2021-05-06 2137 } else if (!disabled && context_pending_disable(ce)) { 07a654f7514966 Matthew Brost 2021-05-06 2138 /* 07a654f7514966 Matthew Brost 2021-05-06 2139 * Schedule disable in flight, set bit to kick tasklet in G2H 07a654f7514966 Matthew Brost 2021-05-06 2140 * handler and call it a day. 07a654f7514966 Matthew Brost 2021-05-06 2141 */ 07a654f7514966 Matthew Brost 2021-05-06 2142 07a654f7514966 Matthew Brost 2021-05-06 2143 set_context_block_tasklet(ce); 07a654f7514966 Matthew Brost 2021-05-06 2144 spin_unlock_irqrestore(&ce->guc_state.lock, flags); 07a654f7514966 Matthew Brost 2021-05-06 2145 07a654f7514966 Matthew Brost 2021-05-06 2146 invalidate_guc_id_sched_disable(ce); 07a654f7514966 Matthew Brost 2021-05-06 2147 } else if (disabled || !context_enabled(ce)) { 07a654f7514966 Matthew Brost 2021-05-06 2148 /* Schedule disable is done, kick tasklet */ 07a654f7514966 Matthew Brost 2021-05-06 2149 07a654f7514966 Matthew Brost 2021-05-06 2150 spin_unlock_irqrestore(&ce->guc_state.lock, flags); 07a654f7514966 Matthew Brost 2021-05-06 2151 07a654f7514966 Matthew Brost 2021-05-06 2152 invalidate_guc_id_sched_disable(ce); 07a654f7514966 Matthew Brost 2021-05-06 2153 07a654f7514966 Matthew Brost 2021-05-06 2154 guc->submission_stall_reason = STALL_REGISTER_CONTEXT; 07a654f7514966 Matthew Brost 2021-05-06 2155 clr_tasklet_blocked(guc); 07a654f7514966 Matthew Brost 2021-05-06 2156 07a654f7514966 Matthew Brost 2021-05-06 2157 kick_tasklet(ce_to_guc(ce)); 07a654f7514966 Matthew Brost 2021-05-06 2158 } 07a654f7514966 Matthew Brost 2021-05-06 2159 07a654f7514966 Matthew Brost 2021-05-06 @2160 intel_context_put(ce); 07a654f7514966 Matthew Brost 2021-05-06 2161 } 07a654f7514966 Matthew Brost 2021-05-06 2162 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org _______________________________________________ kbuild mailing list -- kbuild(a)lists.01.org To unsubscribe send an email to kbuild-leave(a)lists.01.org