I have finished bisecting the commits and the switch from i915 to i915_bpo seems to be the culprit. There are quite a few candidates but that's because all those skipped commits failed to build/compile. Note that on the first flicker after booting, this message appears in dmesg: [drm:intel_cpu_fifo_underrun_irq_handler [i915_bpo]] *ERROR* CPU pipe A FIFO underrun Here is the log of the bisect: git bisect start '--' 'drivers/gpu/' 'include/drm/' 'include/uapi/drm/' 'ubuntu/i915' # good: [463f21c6a2dcc90e06dbc2eb2341640ae5c43c28] UBUNTU: Ubuntu-4.4.0-8.23 git bisect good 463f21c6a2dcc90e06dbc2eb2341640ae5c43c28 # bad: [b8723f286caa9218ebda0c47a435d1b52b8dfaf4] UBUNTU: Ubuntu-4.4.0-9.24 git bisect bad b8723f286caa9218ebda0c47a435d1b52b8dfaf4 # good: [1cb8570bf04ab12a03c31c397a4d158f24895d9c] Linux 4.4.2 git bisect good 1cb8570bf04ab12a03c31c397a4d158f24895d9c # skip: [19ed21af1bffa667745926f2b8b28a0505cca0be] drm: Add "prefix" parameter to drm_rect_debug_print() git bisect skip 19ed21af1bffa667745926f2b8b28a0505cca0be # skip: [a9b3cdd235bf966b4cddab82d61dc941a74e3a74] UBUNTU: SAUCE: Backport I915_PARAM_HAS_EXEC_SOFTPIN and EXEC_OBJECT_PINNED git bisect skip a9b3cdd235bf966b4cddab82d61dc941a74e3a74 # skip: [8bfcd31065a60ffba9e600fafd62bbd90ff0895a] drm/atomic: Add encoder_mask to crtc_state, v3. git bisect skip 8bfcd31065a60ffba9e600fafd62bbd90ff0895a # skip: [693a63075524374165196137ca4b952a6afd5265] drm/i915/kbl: Add Kabylake GT4 PCI ID git bisect skip 693a63075524374165196137ca4b952a6afd5265 # good: [34f091b3d14dadd9ef8d1f8a678656aed759fe33] UBUNTU: SAUCE: radeon: r100: Silence 'may be used uninitialized' warnings git bisect good 34f091b3d14dadd9ef8d1f8a678656aed759fe33 # skip: [abfd1387464d2e764989d8fbaea78b0b7af89142] drm/i915: Set connector_state->connector using the helper. git bisect skip abfd1387464d2e764989d8fbaea78b0b7af89142 # skip: [975bc60948107bce995ae5d18e0755dc5f2abf53] drm: fix potential dangling else problems in for_each_ macros git bisect skip 975bc60948107bce995ae5d18e0755dc5f2abf53 # good: [98e1eef7fa2b711e0946d22a3c2659458582e807] drm/i915/skl: Disable coarse power gating up until F0 git bisect good 98e1eef7fa2b711e0946d22a3c2659458582e807 # skip: [1f955e92dc87f484048109bc1d434fa59221c5dd] drm/atomic: add connector mask to drm_crtc_state. git bisect skip 1f955e92dc87f484048109bc1d434fa59221c5dd # skip: [7d5329085d3e64b6b04a9de1c86f5074bac26cc9] drm/i915: Update connector_mask during readout, v2. git bisect skip 7d5329085d3e64b6b04a9de1c86f5074bac26cc9 # skip: [8167675659a93004ae99d7b3aa90e1134352a836] drm: Implement drm_modeset_lock_all_ctx() git bisect skip 8167675659a93004ae99d7b3aa90e1134352a836 # skip: [8ba5c26373f1e4341f2cbd198ddeb41644adf9b6] drm/atomic: Do not unset crtc when an encoder is stolen git bisect skip 8ba5c26373f1e4341f2cbd198ddeb41644adf9b6 # skip: [197b480eac049b43e26cad615d2f541b5eab0238] drm/i915: Add get_eld audio component git bisect skip 197b480eac049b43e26cad615d2f541b5eab0238 # skip: [59784e17027c76b7621c19393828dfd0aa1ffde5] UBUNTU: SAUCE: i915_bpo: Add i915_bpo_*() calls for ubuntu/i915 git bisect skip 59784e17027c76b7621c19393828dfd0aa1ffde5 # skip: [d34f93f031b9411cbc75444910d79edf8d0adca9] UBUNTU: SAUCE: i915_bpo: Revert passing plane/encoder name git bisect skip d34f93f031b9411cbc75444910d79edf8d0adca9 # skip: [f1261c30584595faa9b03be3f66d69c7abe3df48] drm/i915: remove an extra level of indirection in PCI ID list git bisect skip f1261c30584595faa9b03be3f66d69c7abe3df48 # skip: [6c8faa054473d42cec66420014fe14884cbb4a3c] drm/i915: Report context GTT size git bisect skip 6c8faa054473d42cec66420014fe14884cbb4a3c # skip: [881abf52cda63355e5cdc21bf7121d46e9212c93] UBUNTU: SAUCE: uapi/drm/i915: Backport I915_EXEC_BSD_MASK git bisect skip 881abf52cda63355e5cdc21bf7121d46e9212c93 # skip: [0dddd6896b9eba1c833fbe31ff01ad10512aa8c4] dp/mst: add SDP stream support git bisect skip 0dddd6896b9eba1c833fbe31ff01ad10512aa8c4 # skip: [8e2bd616924b1c169c0ee555a19be6bd73200b7d] UBUNTU: SAUCE: i915_bpo: Rename the backport driver to i915_bpo git bisect skip 8e2bd616924b1c169c0ee555a19be6bd73200b7d # skip: [264069c863584121bf73a58e2ec8374753396aa8] UBUNTU: SAUCE: i915_bpo: Support only SKL, KBL and BXT with the backport driver git bisect skip 264069c863584121bf73a58e2ec8374753396aa8 # skip: [68f514a794848c0817f3da489324ff61373d6bce] drm/i915/kbl: Add Kabylake PCI ID git bisect skip 68f514a794848c0817f3da489324ff61373d6bce # skip: [b076ab08db1b852b3f70652aac5ff53bd5ecac86] drm/i915/bxt: update list of PCIIDs git bisect skip b076ab08db1b852b3f70652aac5ff53bd5ecac86 # skip: [2377d291a6bd3fbd0fc19f3bb688773fd56f6da1] UBUNTU: SAUCE: drm/core: Add drm_encoder_index. git bisect skip 2377d291a6bd3fbd0fc19f3bb688773fd56f6da1 # skip: [71fb3f740833b86947bfc3c7c8d771629b1bae84] drm/i915/skl: Add missing SKL ids git bisect skip 71fb3f740833b86947bfc3c7c8d771629b1bae84 # good: [330c218ff8f2b81e9474c30af584131c447f87e1] UBUNTU: SAUCE: i915_bpo: Update intel_ips.h file location git bisect good 330c218ff8f2b81e9474c30af584131c447f87e1 # skip: [21710abf5c56887940fe72e882e24fde2392a83b] UBUNTU: SAUCE: i915_bpo: Revert "drm/i915: Defer probe if gmux is present but its driver isn't" git bisect skip 21710abf5c56887940fe72e882e24fde2392a83b # bad: [71a5e951a8ea93ebe2bb5db0738b63f172688b9b] UBUNTU: SAUCE: i915_bpo: Revert "drm/i915: Switch DDC when reading the EDID" git bisect bad 71a5e951a8ea93ebe2bb5db0738b63f172688b9b # only skipped commits left to test # possible first bad commit: [71a5e951a8ea93ebe2bb5db0738b63f172688b9b] UBUNTU: SAUCE: i915_bpo: Revert "drm/i915: Switch DDC when reading the EDID" # possible first bad commit: [2377d291a6bd3fbd0fc19f3bb688773fd56f6da1] UBUNTU: SAUCE: drm/core: Add drm_encoder_index. # possible first bad commit: [8bfcd31065a60ffba9e600fafd62bbd90ff0895a] drm/atomic: Add encoder_mask to crtc_state, v3. # possible first bad commit: [7d5329085d3e64b6b04a9de1c86f5074bac26cc9] drm/i915: Update connector_mask during readout, v2. # possible first bad commit: [8ba5c26373f1e4341f2cbd198ddeb41644adf9b6] drm/atomic: Do not unset crtc when an encoder is stolen # possible first bad commit: [881abf52cda63355e5cdc21bf7121d46e9212c93] UBUNTU: SAUCE: uapi/drm/i915: Backport I915_EXEC_BSD_MASK # possible first bad commit: [21710abf5c56887940fe72e882e24fde2392a83b] UBUNTU: SAUCE: i915_bpo: Revert "drm/i915: Defer probe if gmux is present but its driver isn't" # possible first bad commit: [71fb3f740833b86947bfc3c7c8d771629b1bae84] drm/i915/skl: Add missing SKL ids # possible first bad commit: [b076ab08db1b852b3f70652aac5ff53bd5ecac86] drm/i915/bxt: update list of PCIIDs # possible first bad commit: [264069c863584121bf73a58e2ec8374753396aa8] UBUNTU: SAUCE: i915_bpo: Support only SKL, KBL and BXT with the backport driver # possible first bad commit: [8f3bbcff65b81092d3eb3f7f1492f3fc63176e34] UBUNTU: SAUCE: sound/hda: Load i915_bpo from the hda driver on SKL/KBL/BXT # possible first bad commit: [d34f93f031b9411cbc75444910d79edf8d0adca9] UBUNTU: SAUCE: i915_bpo: Revert passing plane/encoder name # possible first bad commit: [a9b3cdd235bf966b4cddab82d61dc941a74e3a74] UBUNTU: SAUCE: Backport I915_PARAM_HAS_EXEC_SOFTPIN and EXEC_OBJECT_PINNED # possible first bad commit: [197b480eac049b43e26cad615d2f541b5eab0238] drm/i915: Add get_eld audio component # possible first bad commit: [6c8faa054473d42cec66420014fe14884cbb4a3c] drm/i915: Report context GTT size # possible first bad commit: [1f955e92dc87f484048109bc1d434fa59221c5dd] drm/atomic: add connector mask to drm_crtc_state. # possible first bad commit: [abfd1387464d2e764989d8fbaea78b0b7af89142] drm/i915: Set connector_state->connector using the helper. # possible first bad commit: [19ed21af1bffa667745926f2b8b28a0505cca0be] drm: Add "prefix" parameter to drm_rect_debug_print() # possible first bad commit: [8167675659a93004ae99d7b3aa90e1134352a836] drm: Implement drm_modeset_lock_all_ctx() # possible first bad commit: [0dddd6896b9eba1c833fbe31ff01ad10512aa8c4] dp/mst: add SDP stream support # possible first bad commit: [975bc60948107bce995ae5d18e0755dc5f2abf53] drm: fix potential dangling else problems in for_each_ macros # possible first bad commit: [366186b117cc31a3cfc292a6d7c5f791596078d1] async: export current_is_async() # possible first bad commit: [e7566892b9a70c6cd3b6884c34c0cadbda4eb8cc] mm: Export nr_swap_pages # possible first bad commit: [693a63075524374165196137ca4b952a6afd5265] drm/i915/kbl: Add Kabylake GT4 PCI ID # possible first bad commit: [68f514a794848c0817f3da489324ff61373d6bce] drm/i915/kbl: Add Kabylake PCI ID # possible first bad commit: [f1261c30584595faa9b03be3f66d69c7abe3df48] drm/i915: remove an extra level of indirection in PCI ID list # possible first bad commit: [59784e17027c76b7621c19393828dfd0aa1ffde5] UBUNTU: SAUCE: i915_bpo: Add i915_bpo_*() calls for ubuntu/i915 # possible first bad commit: [8e2bd616924b1c169c0ee555a19be6bd73200b7d] UBUNTU: SAUCE: i915_bpo: Rename the backport driver to i915_bpo