Hi Vandita, [FYI, it's a private test report for your RFC patch.] [auto build test ERROR on drm-intel/for-linux-next] [cannot apply to v5.4-rc7 next-20191112] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Vandita-Kulkarni/Add-support-for-mipi-dsi-cmd-mode/20191113-022822 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: i386-defconfig (attached as .config) compiler: gcc-7 (Debian 7.4.0-14) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot All error/warnings (new ones prefixed by >>): drivers/gpu/drm/i915/display/intel_display.c: In function 'intel_atomic_commit_tail': >> drivers/gpu/drm/i915/display/intel_display.c:14737:21: error: 'struct intel_crtc_state' has no member named 'hw' if (new_crtc_state->hw.active) ^~ -- In file included from include/linux/list.h:9:0, from include/linux/kobject.h:19, from include/linux/of.h:17, from include/linux/irqdomain.h:35, from include/linux/acpi.h:13, from include/linux/i2c.h:13, from include/drm/drm_crtc.h:28, from include/drm/drm_atomic_helper.h:31, from drivers/gpu/drm/i915/display/icl_dsi.c:28: drivers/gpu/drm/i915/display/icl_dsi.c: In function 'gen11_dsi_frame_update': >> drivers/gpu/drm/i915/display/icl_dsi.c:203:52: error: 'struct intel_crtc_state' has no member named 'uapi' struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); ^ include/linux/kernel.h:993:26: note: in definition of macro 'container_of' void *__mptr = (void *)(ptr); \ ^~~ >> drivers/gpu/drm/i915/display/icl_dsi.c:203:28: note: in expansion of macro 'to_intel_crtc' struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); ^~~~~~~~~~~~~ In file included from include/linux/ioport.h:13:0, from include/linux/acpi.h:12, from include/linux/i2c.h:13, from include/drm/drm_crtc.h:28, from include/drm/drm_atomic_helper.h:31, from drivers/gpu/drm/i915/display/icl_dsi.c:28: >> drivers/gpu/drm/i915/display/icl_dsi.c:203:52: error: 'struct intel_crtc_state' has no member named 'uapi' struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); ^ include/linux/compiler.h:330:9: note: in definition of macro '__compiletime_assert' if (!(condition)) \ ^~~~~~~~~ include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ include/linux/kernel.h:994:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^~~~~~~~~~~~~~~~ include/linux/kernel.h:994:20: note: in expansion of macro '__same_type' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^~~~~~~~~~~ >> drivers/gpu/drm/i915/display/intel_display_types.h:1121:26: note: in expansion of macro 'container_of' #define to_intel_crtc(x) container_of(x, struct intel_crtc, base) ^~~~~~~~~~~~ >> drivers/gpu/drm/i915/display/icl_dsi.c:203:28: note: in expansion of macro 'to_intel_crtc' struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); ^~~~~~~~~~~~~ >> drivers/gpu/drm/i915/display/icl_dsi.c:203:52: error: 'struct intel_crtc_state' has no member named 'uapi' struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); ^ include/linux/compiler.h:330:9: note: in definition of macro '__compiletime_assert' if (!(condition)) \ ^~~~~~~~~ include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) ^~~~~~~~~~~~~~~~~~ include/linux/kernel.h:994:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^~~~~~~~~~~~~~~~ include/linux/kernel.h:995:6: note: in expansion of macro '__same_type' !__same_type(*(ptr), void), \ ^~~~~~~~~~~ >> drivers/gpu/drm/i915/display/intel_display_types.h:1121:26: note: in expansion of macro 'container_of' #define to_intel_crtc(x) container_of(x, struct intel_crtc, base) ^~~~~~~~~~~~ >> drivers/gpu/drm/i915/display/icl_dsi.c:203:28: note: in expansion of macro 'to_intel_crtc' struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); ^~~~~~~~~~~~~ drivers/gpu/drm/i915/display/icl_dsi.c:208:28: error: 'struct intel_crtc_state' has no member named 'hw' private_flags = crtc_state->hw.adjusted_mode.private_flags; ^~ drivers/gpu/drm/i915/display/icl_dsi.c: In function 'gen11_dsi_get_config': drivers/gpu/drm/i915/display/icl_dsi.c:1347:14: error: 'struct intel_crtc_state' has no member named 'hw' pipe_config->hw.adjusted_mode.private_flags |= ^~ drivers/gpu/drm/i915/display/icl_dsi.c: In function 'gen11_dsi_compute_config': drivers/gpu/drm/i915/display/icl_dsi.c:1380:13: error: 'struct intel_crtc_state' has no member named 'hw' pipe_config->hw.adjusted_mode.private_flags &= ^~ drivers/gpu/drm/i915/display/icl_dsi.c:1390:15: error: 'struct intel_crtc_state' has no member named 'hw' pipe_config->hw.adjusted_mode.private_flags |= ^~ drivers/gpu/drm/i915/display/icl_dsi.c:1393:15: error: 'struct intel_crtc_state' has no member named 'hw' pipe_config->hw.adjusted_mode.private_flags |= ^~ vim +14737 drivers/gpu/drm/i915/display/intel_display.c 14630 14631 static void intel_atomic_commit_tail(struct intel_atomic_state *state) 14632 { 14633 struct drm_device *dev = state->base.dev; 14634 struct drm_i915_private *dev_priv = to_i915(dev); 14635 struct intel_crtc_state *new_crtc_state, *old_crtc_state; 14636 struct intel_crtc *crtc; 14637 u64 put_domains[I915_MAX_PIPES] = {}; 14638 intel_wakeref_t wakeref = 0; 14639 int i; 14640 14641 intel_atomic_commit_fence_wait(state); 14642 14643 drm_atomic_helper_wait_for_dependencies(&state->base); 14644 14645 if (state->modeset) 14646 wakeref = intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET); 14647 14648 for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state, 14649 new_crtc_state, i) { 14650 if (needs_modeset(new_crtc_state) || 14651 new_crtc_state->update_pipe) { 14652 14653 put_domains[crtc->pipe] = 14654 modeset_get_crtc_power_domains(new_crtc_state); 14655 } 14656 } 14657 14658 intel_commit_modeset_disables(state); 14659 14660 /* FIXME: Eventually get rid of our crtc->config pointer */ 14661 for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) 14662 crtc->config = new_crtc_state; 14663 14664 if (state->modeset) { 14665 drm_atomic_helper_update_legacy_modeset_state(dev, &state->base); 14666 14667 intel_set_cdclk_pre_plane_update(dev_priv, 14668 &state->cdclk.actual, 14669 &dev_priv->cdclk.actual, 14670 state->cdclk.pipe); 14671 14672 /* 14673 * SKL workaround: bspec recommends we disable the SAGV when we 14674 * have more then one pipe enabled 14675 */ 14676 if (!intel_can_enable_sagv(state)) 14677 intel_disable_sagv(dev_priv); 14678 14679 intel_modeset_verify_disabled(dev_priv, state); 14680 } 14681 14682 /* Complete the events for pipes that have now been disabled */ 14683 for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) { 14684 bool modeset = needs_modeset(new_crtc_state); 14685 14686 /* Complete events for now disable pipes here. */ 14687 if (modeset && !new_crtc_state->base.active && new_crtc_state->base.event) { 14688 spin_lock_irq(&dev->event_lock); 14689 drm_crtc_send_vblank_event(&crtc->base, new_crtc_state->base.event); 14690 spin_unlock_irq(&dev->event_lock); 14691 14692 new_crtc_state->base.event = NULL; 14693 } 14694 } 14695 14696 if (state->modeset) 14697 intel_encoders_update_prepare(state); 14698 14699 /* Now enable the clocks, plane, pipe, and connectors that we set up. */ 14700 dev_priv->display.commit_modeset_enables(state); 14701 14702 if (state->modeset) { 14703 intel_encoders_update_complete(state); 14704 14705 intel_set_cdclk_post_plane_update(dev_priv, 14706 &state->cdclk.actual, 14707 &dev_priv->cdclk.actual, 14708 state->cdclk.pipe); 14709 } 14710 14711 /* FIXME: We should call drm_atomic_helper_commit_hw_done() here 14712 * already, but still need the state for the delayed optimization. To 14713 * fix this: 14714 * - wrap the optimization/post_plane_update stuff into a per-crtc work. 14715 * - schedule that vblank worker _before_ calling hw_done 14716 * - at the start of commit_tail, cancel it _synchrously 14717 * - switch over to the vblank wait helper in the core after that since 14718 * we don't need out special handling any more. 14719 */ 14720 drm_atomic_helper_wait_for_flip_done(dev, &state->base); 14721 14722 for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) { 14723 if (new_crtc_state->base.active && 14724 !needs_modeset(new_crtc_state) && 14725 !new_crtc_state->preload_luts && 14726 (new_crtc_state->base.color_mgmt_changed || 14727 new_crtc_state->update_pipe)) 14728 intel_color_load_luts(new_crtc_state); 14729 } 14730 14731 /* 14732 * Incase of mipi dsi command mode, we need to set frame update 14733 * for every commit 14734 */ 14735 if ((INTEL_GEN(dev_priv) >= 11) && 14736 (intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI))) { 14737 if (new_crtc_state->hw.active) 14738 gen11_dsi_frame_update(new_crtc_state); 14739 } 14740 14741 /* 14742 * Now that the vblank has passed, we can go ahead and program the 14743 * optimal watermarks on platforms that need two-step watermark 14744 * programming. 14745 * 14746 * TODO: Move this (and other cleanup) to an async worker eventually. 14747 */ 14748 for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) { 14749 if (dev_priv->display.optimize_watermarks) 14750 dev_priv->display.optimize_watermarks(state, 14751 new_crtc_state); 14752 } 14753 14754 for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { 14755 intel_post_plane_update(old_crtc_state); 14756 14757 if (put_domains[i]) 14758 modeset_put_power_domains(dev_priv, put_domains[i]); 14759 14760 intel_modeset_verify_crtc(crtc, state, old_crtc_state, new_crtc_state); 14761 } 14762 14763 if (state->modeset) 14764 intel_verify_planes(state); 14765 14766 if (state->modeset && intel_can_enable_sagv(state)) 14767 intel_enable_sagv(dev_priv); 14768 14769 drm_atomic_helper_commit_hw_done(&state->base); 14770 14771 if (state->modeset) { 14772 /* As one of the primary mmio accessors, KMS has a high 14773 * likelihood of triggering bugs in unclaimed access. After we 14774 * finish modesetting, see if an error has been flagged, and if 14775 * so enable debugging for the next modeset - and hope we catch 14776 * the culprit. 14777 */ 14778 intel_uncore_arm_unclaimed_mmio_detection(&dev_priv->uncore); 14779 intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET, wakeref); 14780 } 14781 intel_runtime_pm_put(&dev_priv->runtime_pm, state->wakeref); 14782 14783 /* 14784 * Defer the cleanup of the old state to a separate worker to not 14785 * impede the current task (userspace for blocking modesets) that 14786 * are executed inline. For out-of-line asynchronous modesets/flips, 14787 * deferring to a new worker seems overkill, but we would place a 14788 * schedule point (cond_resched()) here anyway to keep latencies 14789 * down. 14790 */ 14791 INIT_WORK(&state->base.commit_work, intel_atomic_cleanup_work); 14792 queue_work(system_highpri_wq, &state->base.commit_work); 14793 } 14794 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation