On 12/16, Fengguang Wu wrote: >Hi Daniel, > >On Fri, Dec 16, 2016 at 08:29:43AM +0100, Daniel Vetter wrote: >>Hi Kbuild folks >> >>So yeah this doesn't apply because it's just 1 patch resent out of a >>big patch series, in-reply-to the patch it replaces. So applying this >>alone and telling me (and all the mailing lists) that it doesn't apply >>isn't all that useful. >> >>And it shouldn't be too hard to detect this, since the fdo patchwork >>instance does catch most of these partial resends successfully and >>correctly, and will retest the entire patch series. > >Good point! CC Xiaolong. This scenario seems happen frequent enough in >LKML to worth the efforts to add auto detect logic for. Got it, I'll add auto detect logic to handle it. Thanks, Xiaolong > >Thanks, >Fengguang > >>On Thu, Dec 15, 2016 at 11:59 PM, kbuild test robot <lkp@xxxxxxxxx> wrote: >>>Hi Daniel, >>> >>>[auto build test ERROR on drm/drm-next] >>>[also build test ERROR on next-20161215] >>>[cannot apply to v4.9] >>>[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/Daniel-Vetter/drm-Convert-all-helpers-to-drm_connector_list_iter/20161216-061508 >>>base: git://people.freedesktop.org/~airlied/linux.git drm-next >>>config: i386-randconfig-x003-201650 (attached as .config) >>>compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 >>>reproduce: >>> # save the attached .config to linux build tree >>> make ARCH=i386 >>> >>>All error/warnings (new ones prefixed by >>): >>> >>> drivers/gpu/drm/drm_crtc_helper.c: In function 'drm_helper_encoder_in_use': >>>>>drivers/gpu/drm/drm_crtc_helper.c:91:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>>>>drivers/gpu/drm/drm_crtc_helper.c:104:2: error: implicit declaration of function 'drm_connector_list_iter_get' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_get(dev, &conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_crtc_helper.c:105:2: error: implicit declaration of function 'drm_for_each_connector_iter' [-Werror=implicit-function-declaration] >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_crtc_helper.c:105:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_crtc_helper.c:91:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c: In function 'drm_crtc_helper_disable': >>> drivers/gpu/drm/drm_crtc_helper.c:446:34: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c:452:54: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_crtc_helper.c:446:34: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c: In function 'drm_crtc_helper_set_config': >>> drivers/gpu/drm/drm_crtc_helper.c:521:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>>>>drivers/gpu/drm/drm_crtc_helper.c:588:3: error: expected ';' before 'save_connector_encoders' >>> save_connector_encoders[count++] = connector->encoder; >>> ^~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_crtc_helper.c:589:2: error: implicit declaration of function 'drm_connector_list_iter_put' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_put(&conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c:633:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_crtc_helper.c:675:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>>>>drivers/gpu/drm/drm_crtc_helper.c:767:3: error: expected ';' before 'connector' >>> connector->encoder = save_connector_encoders[count++]; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c:521:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c:517:49: warning: unused variable 'new_encoder' [-Wunused-variable] >>> struct drm_encoder **save_connector_encoders, *new_encoder, *encoder; >>> ^~~~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c:516:41: warning: unused variable 'new_crtc' [-Wunused-variable] >>> struct drm_crtc **save_encoder_crtcs, *new_crtc; >>> ^~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c: In function 'drm_helper_choose_encoder_dpms': >>> drivers/gpu/drm/drm_crtc_helper.c:795:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> In file included from include/linux/linkage.h:4:0, >>> from include/linux/kernel.h:6, >>> from drivers/gpu/drm/drm_crtc_helper.c:32: >>>>>include/linux/compiler.h:149:2: error: expected ';' before 'if' >>> if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ >>> ^ >>> include/linux/compiler.h:147:23: note: in expansion of macro '__trace_if' >>> #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) >>> ^~~~~~~~~~ >>>>>drivers/gpu/drm/drm_crtc_helper.c:800:3: note: in expansion of macro 'if' >>> if (connector->encoder == encoder) >>> ^~ >>> drivers/gpu/drm/drm_crtc_helper.c:795:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c: In function 'drm_helper_choose_crtc_dpms': >>> drivers/gpu/drm/drm_crtc_helper.c:836:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> In file included from include/linux/linkage.h:4:0, >>> from include/linux/kernel.h:6, >>> from drivers/gpu/drm/drm_crtc_helper.c:32: >>>>>include/linux/compiler.h:149:2: error: expected ';' before 'if' >>> if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ >>> ^ >>> include/linux/compiler.h:147:23: note: in expansion of macro '__trace_if' >>> #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) >>> ^~~~~~~~~~ >>> drivers/gpu/drm/drm_crtc_helper.c:841:3: note: in expansion of macro 'if' >>> if (connector->encoder && connector->encoder->crtc == crtc) >>> ^~ >>> drivers/gpu/drm/drm_crtc_helper.c:836:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> cc1: some warnings being treated as errors >>>-- >>> drivers/gpu/drm/drm_probe_helper.c: In function 'drm_kms_helper_poll_enable_locked': >>>>>drivers/gpu/drm/drm_probe_helper.c:132:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>>>>drivers/gpu/drm/drm_probe_helper.c:140:2: error: implicit declaration of function 'drm_connector_list_iter_get' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_get(dev, &conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_probe_helper.c:141:2: error: implicit declaration of function 'drm_for_each_connector_iter' [-Werror=implicit-function-declaration] >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_probe_helper.c:141:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_probe_helper.c:132:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_probe_helper.c: In function 'output_poll_execute': >>> drivers/gpu/drm/drm_probe_helper.c:388:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_probe_helper.c:405:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_probe_helper.c:389:28: warning: unused variable 'old_status' [-Wunused-variable] >>> enum drm_connector_status old_status; >>> ^~~~~~~~~~ >>> drivers/gpu/drm/drm_probe_helper.c:388:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_probe_helper.c: In function 'drm_helper_hpd_irq_event': >>> drivers/gpu/drm/drm_probe_helper.c:570:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_probe_helper.c:579:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_probe_helper.c:571:28: warning: unused variable 'old_status' [-Wunused-variable] >>> enum drm_connector_status old_status; >>> ^~~~~~~~~~ >>> drivers/gpu/drm/drm_probe_helper.c:570:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> cc1: some warnings being treated as errors >>>-- >>> drivers/gpu/drm/drm_plane_helper.c: In function 'get_connectors_for_crtc': >>>>>drivers/gpu/drm/drm_plane_helper.c:77:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>>>>drivers/gpu/drm/drm_plane_helper.c:87:2: error: implicit declaration of function 'drm_connector_list_iter_get' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_get(dev, &conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_plane_helper.c:88:2: error: implicit declaration of function 'drm_for_each_connector_iter' [-Werror=implicit-function-declaration] >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_plane_helper.c:88:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_plane_helper.c:77:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> cc1: some warnings being treated as errors >>>-- >>> drivers/gpu/drm/drm_atomic_helper.c: In function 'handle_conflicting_encoders': >>>>>drivers/gpu/drm/drm_atomic_helper.c:97:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>>>>drivers/gpu/drm/drm_atomic_helper.c:148:2: error: implicit declaration of function 'drm_connector_list_iter_get' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_get(state->dev, &conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_atomic_helper.c:149:2: error: implicit declaration of function 'drm_for_each_connector_iter' [-Werror=implicit-function-declaration] >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_atomic_helper.c:149:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_atomic_helper.c:98:22: warning: unused variable 'encoder' [-Wunused-variable] >>> struct drm_encoder *encoder; >>> ^~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c:97:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c: In function 'drm_atomic_helper_disable_all': >>> drivers/gpu/drm/drm_atomic_helper.c:2452:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c:2462:48: error: expected ';' before '{' token >>> drm_for_each_connector_iter(conn, &conn_iter) { >>> ^ >>>>>drivers/gpu/drm/drm_atomic_helper.c:2480:2: error: implicit declaration of function 'drm_connector_list_iter_put' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_put(&conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c:2479:1: warning: label 'free' defined but not used [-Wunused-label] >>> free: >>> ^~~~ >>> drivers/gpu/drm/drm_atomic_helper.c:2452:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c: In function 'drm_atomic_helper_connector_dpms': >>> drivers/gpu/drm/drm_atomic_helper.c:2853:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c:2882:57: error: expected ';' before '{' token >>> drm_for_each_connector_iter(tmp_connector, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_atomic_helper.c:2853:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c: In function 'drm_atomic_helper_duplicate_state': >>> drivers/gpu/drm/drm_atomic_helper.c:3269:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> drivers/gpu/drm/drm_atomic_helper.c:3301:48: error: expected ';' before '{' token >>> drm_for_each_connector_iter(conn, &conn_iter) { >>> ^ >>> drivers/gpu/drm/drm_atomic_helper.c:3269:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> cc1: some warnings being treated as errors >>>-- >>> drivers/gpu/drm/drm_modeset_helper.c: In function 'drm_helper_move_panel_connectors_to_head': >>>>>drivers/gpu/drm/drm_modeset_helper.c:51:33: error: 'struct drm_mode_config' has no member named 'connector_list_lock'; did you mean 'connector_list'? >>> spin_lock_irq(&dev->mode_config.connector_list_lock); >>> ^ >>> drivers/gpu/drm/drm_modeset_helper.c:61:35: error: 'struct drm_mode_config' has no member named 'connector_list_lock'; did you mean 'connector_list'? >>> spin_unlock_irq(&dev->mode_config.connector_list_lock); >>> ^ >>>-- >>> drivers/gpu/drm/drm_fb_helper.c: In function 'drm_fb_helper_single_add_all_connectors': >>>>>drivers/gpu/drm/drm_fb_helper.c:123:33: error: storage size of 'conn_iter' isn't known >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>>>>drivers/gpu/drm/drm_fb_helper.c:130:2: error: implicit declaration of function 'drm_connector_list_iter_get' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_get(dev, &conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_fb_helper.c:131:2: error: implicit declaration of function 'drm_for_each_connector_iter' [-Werror=implicit-function-declaration] >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>>>>drivers/gpu/drm/drm_fb_helper.c:131:53: error: expected ';' before '{' token >>> drm_for_each_connector_iter(connector, &conn_iter) { >>> ^ >>>>>drivers/gpu/drm/drm_fb_helper.c:151:2: error: implicit declaration of function 'drm_connector_list_iter_put' [-Werror=implicit-function-declaration] >>> drm_connector_list_iter_put(&conn_iter); >>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >>> drivers/gpu/drm/drm_fb_helper.c:150:1: warning: label 'out' defined but not used [-Wunused-label] >>> out: >>> ^~~ >>> drivers/gpu/drm/drm_fb_helper.c:139:1: warning: label 'fail' defined but not used [-Wunused-label] >>> fail: >>> ^~~~ >>> drivers/gpu/drm/drm_fb_helper.c:123:33: warning: unused variable 'conn_iter' [-Wunused-variable] >>> struct drm_connector_list_iter conn_iter; >>> ^~~~~~~~~ >>> cc1: some warnings being treated as errors >>> >>>vim +91 drivers/gpu/drm/drm_crtc_helper.c >>> >>> 26 * Keith Packard >>> 27 * Eric Anholt <eric@xxxxxxxxxx> >>> 28 * Dave Airlie <airlied@xxxxxxxx> >>> 29 * Jesse Barnes <jesse.barnes@xxxxxxxxx> >>> 30 */ >>> 31 >>> > 32 #include <linux/kernel.h> >>> 33 #include <linux/export.h> >>> 34 #include <linux/moduleparam.h> >>> 35 >>> 36 #include <drm/drmP.h> >>> 37 #include <drm/drm_atomic.h> >>> 38 #include <drm/drm_crtc.h> >>> 39 #include <drm/drm_fourcc.h> >>> 40 #include <drm/drm_crtc_helper.h> >>> 41 #include <drm/drm_fb_helper.h> >>> 42 #include <drm/drm_plane_helper.h> >>> 43 #include <drm/drm_atomic_helper.h> >>> 44 #include <drm/drm_edid.h> >>> 45 >>> 46 /** >>> 47 * DOC: overview >>> 48 * >>> 49 * The CRTC modeset helper library provides a default set_config implementation >>> 50 * in drm_crtc_helper_set_config(). Plus a few other convenience functions using >>> 51 * the same callbacks which drivers can use to e.g. restore the modeset >>> 52 * configuration on resume with drm_helper_resume_force_mode(). >>> 53 * >>> 54 * Note that this helper library doesn't track the current power state of CRTCs >>> 55 * and encoders. It can call callbacks like ->dpms() even though the hardware is >>> 56 * already in the desired state. This deficiency has been fixed in the atomic >>> 57 * helpers. >>> 58 * >>> 59 * The driver callbacks are mostly compatible with the atomic modeset helpers, >>> 60 * except for the handling of the primary plane: Atomic helpers require that the >>> 61 * primary plane is implemented as a real standalone plane and not directly tied >>> 62 * to the CRTC state. For easier transition this library provides functions to >>> 63 * implement the old semantics required by the CRTC helpers using the new plane >>> 64 * and atomic helper callbacks. >>> 65 * >>> 66 * Drivers are strongly urged to convert to the atomic helpers (by way of first >>> 67 * converting to the plane helpers). New drivers must not use these functions >>> 68 * but need to implement the atomic interface instead, potentially using the >>> 69 * atomic helpers for that. >>> 70 * >>> 71 * These legacy modeset helpers use the same function table structures as >>> 72 * all other modesetting helpers. See the documentation for struct >>> 73 * &drm_crtc_helper_funcs, struct &drm_encoder_helper_funcs and struct >>> 74 * &drm_connector_helper_funcs. >>> 75 */ >>> 76 >>> 77 /** >>> 78 * drm_helper_encoder_in_use - check if a given encoder is in use >>> 79 * @encoder: encoder to check >>> 80 * >>> 81 * Checks whether @encoder is with the current mode setting output configuration >>> 82 * in use by any connector. This doesn't mean that it is actually enabled since >>> 83 * the DPMS state is tracked separately. >>> 84 * >>> 85 * Returns: >>> 86 * True if @encoder is used, false otherwise. >>> 87 */ >>> 88 bool drm_helper_encoder_in_use(struct drm_encoder *encoder) >>> 89 { >>> 90 struct drm_connector *connector; >>> > 91 struct drm_connector_list_iter conn_iter; >>> 92 struct drm_device *dev = encoder->dev; >>> 93 >>> 94 /* >>> 95 * We can expect this mutex to be locked if we are not panicking. >>> 96 * Locking is currently fubar in the panic handler. >>> 97 */ >>> 98 if (!oops_in_progress) { >>> 99 WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); >>> 100 WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex)); >>> 101 } >>> 102 >>> 103 >>> > 104 drm_connector_list_iter_get(dev, &conn_iter); >>> > 105 drm_for_each_connector_iter(connector, &conn_iter) { >>> 106 if (connector->encoder == encoder) { >>> 107 drm_connector_list_iter_put(&conn_iter); >>> 108 return true; >>> >>>--- >>>0-DAY kernel test infrastructure Open Source Technology Center >>>https://lists.01.org/pipermail/kbuild-all Intel Corporation >> >> >> >>-- >>Daniel Vetter >>Software Engineer, Intel Corporation >>+41 (0) 79 365 57 48 - http://blog.ffwll.ch >>_______________________________________________ >>kbuild-all mailing list >>kbuild-all@xxxxxxxxxxxx >>https://lists.01.org/mailman/listinfo/kbuild-all _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel