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...
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 <lkp(a)intel.com>
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@lists.01.org Intel Corporation