<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/gpu/drm/i915/display/intel_hotplug.c, branch linux-6.14.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.14.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.14.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2024-11-12T07:58:53Z</updated>
<entry>
<title>drm/i915/display: convert display device identification to struct intel_display</title>
<updated>2024-11-12T07:58:53Z</updated>
<author>
<name>Jani Nikula</name>
</author>
<published>2024-11-11T10:34:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1a6330df069f90b94625ec77cb290d51a99f2c7a'/>
<id>urn:sha1:1a6330df069f90b94625ec77cb290d51a99f2c7a</id>
<content type='text'>
Convert intel_display_device.[ch] to struct intel_display, including
callers, but excluding intel_display_device_probe() which will be
handled in follow-up.

v2: fix display-&gt;drm = display-&gt;drm goof-up

Reviewed-by: Vinod Govindapillai &lt;vinod.govindapillai@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/865b27b66f599e707081d46fca9f679e19a4e8aa.1731321183.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
</content>
</entry>
<entry>
<title>drm/i915/display: include media/cec-notifier.h and linux/debugfs.h where needed</title>
<updated>2024-09-05T09:21:22Z</updated>
<author>
<name>Jani Nikula</name>
</author>
<published>2024-08-27T10:45:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ae19ba915eb7260ba8532c00ffece6b46460c547'/>
<id>urn:sha1:ae19ba915eb7260ba8532c00ffece6b46460c547</id>
<content type='text'>
Use a forward declaration for struct cec_notifier instead of including
media/cec-notifier.h in intel_display_types.h, and only include it where
needed.

Also realize that a lot of places depend on including linux/debugfs.h
via intel_display_types.h -&gt; media/cec-notifier.h -&gt; media/cec.h, and
include that too where needed.

v2: hsw_ips.c also needs debugfs.h (kernel test robot)

Reviewed-by: Luca Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20240827104521.4151471-1-jani.nikula@intel.com
</content>
</entry>
<entry>
<title>drm/i915/display: include drm/drm_probe_helper.h where needed</title>
<updated>2024-09-05T09:21:16Z</updated>
<author>
<name>Jani Nikula</name>
</author>
<published>2024-08-26T16:31:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=11d0613af7c565fe9836505f1c860185f0f2137f'/>
<id>urn:sha1:11d0613af7c565fe9836505f1c860185f0f2137f</id>
<content type='text'>
Stop including drm/drm_probe_helper.h in intel_display_types.h and only
include it where needed.

Reviewed-by: Luca Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/88f565495763d0f31a84f31059ab3b01af9bf2b9.1724689818.git.jani.nikula@intel.com
</content>
</entry>
<entry>
<title>drm/i915: Disable hotplug detection works during driver init/shutdown</title>
<updated>2024-01-08T16:56:45Z</updated>
<author>
<name>Imre Deak</name>
</author>
<published>2024-01-04T08:30:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cd572b3bb27e86f4a4c814acabbf1f197259c011'/>
<id>urn:sha1:cd572b3bb27e86f4a4c814acabbf1f197259c011</id>
<content type='text'>
As described in the previous patch, an unexpected connector
detection/modeset started from the intel_hotplug::hotplug_work can
happen during the driver init/shutdown sequence. Prevent these by
disabling the queuing of and flushing all the intel_hotplug work that
can start them at the beginning of the init/shutdown sequence and allow
the queuing only while the display is in the initialized state.

Other work items - like the intel_connector::modeset_retry_work or the
MST probe works - are still enabled and can start a detection/modeset,
but after the previous patch these will be rejected. Disabling these
works as well is for a follow-up patchset.

Link: https://patchwork.freedesktop.org/patch/msgid/20240104083008.2715733-9-imre.deak@intel.com
Reviewed-by: Jouni Högander &lt;jouni.hogander@intel.com&gt;
Signed-off-by: Imre Deak &lt;imre.deak@intel.com&gt;
</content>
</entry>
<entry>
<title>drm/i915: Keep the connector polled state disabled after storm</title>
<updated>2024-01-08T16:51:31Z</updated>
<author>
<name>Imre Deak</name>
</author>
<published>2024-01-04T08:29:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f7d16a538ad226d8b60990f8628e1c81787ee62c'/>
<id>urn:sha1:f7d16a538ad226d8b60990f8628e1c81787ee62c</id>
<content type='text'>
If an HPD IRQ storm is detected on a connector during driver loading or
system suspend/resume - disabling the IRQ and switching to polling - the
polling may get disabled too early - before the intended 2 minute
HPD_STORM_REENABLE_DELAY - with the HPD IRQ staying disabled for this
duration. One such sequence is:

Thread#1                                   Thread#2
intel_display_driver_probe()-&gt;
  intel_hpd_init()-&gt;
    (HPD IRQ gets enabled)
  .                                        intel_hpd_irq_handler()-&gt;
  .                                          intel_hpd_irq_storm_detect()
  .                                            intel_hpd_irq_setup()-&gt;
  .                                              (HPD IRQ gets disabled)
  .                                         queue_delayed_work(hotplug.hotplug_work)
  .                                         ...
  .                                         i915_hotplug_work_func()-&gt;
  .                                           intel_hpd_irq_storm_switch_to_polling()-&gt;
  .                                             (polling enabled)
  .
  intel_hpd_poll_disable()-&gt;
    queue_work(hotplug.poll_init_work)
  ...
  i915_hpd_poll_init_work()-&gt;
    (polling gets disabled,
     HPD IRQ is still disabled)
  ...

  (Connector is neither polled or
   detected via HPD IRQs for 2 minutes)

  intel_hpd_irq_storm_reenable_work()-&gt;
    (HPD IRQ gets enabled)

To avoid the above 2 minute state without either polling or enabled HPD
IRQ, leave the connector's polling mode unchanged in
i915_hpd_poll_init_work() if its HPD IRQ got disabled after an IRQ storm
indicated by the connector's HPD_DISABLED pin state.

Link: https://patchwork.freedesktop.org/patch/msgid/20240104083008.2715733-3-imre.deak@intel.com
Reviewed-by: Jouni Högander &lt;jouni.hogander@intel.com&gt;
Signed-off-by: Imre Deak &lt;imre.deak@intel.com&gt;
</content>
</entry>
<entry>
<title>drm/i915: convert INTEL_DISPLAY_ENABLED() into a function</title>
<updated>2023-10-04T09:40:39Z</updated>
<author>
<name>Jani Nikula</name>
</author>
<published>2023-10-03T12:42:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fe63ea7c3dbb68a4a8f43a175c76e435b6ffb4ca'/>
<id>urn:sha1:fe63ea7c3dbb68a4a8f43a175c76e435b6ffb4ca</id>
<content type='text'>
There's no need for this to be a macro. Add some documentation too.

Signed-off-by: Jani Nikula &lt;jani.nikula@intel.com&gt;
Reviewed-by: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/480b9b697b2ffa0c8677115bd443ba633801c6c1.1696336887.git.jani.nikula@intel.com
</content>
</entry>
<entry>
<title>drm/i915: Fix HPD polling, reenabling the output poll work as needed</title>
<updated>2023-08-23T19:25:09Z</updated>
<author>
<name>Imre Deak</name>
</author>
<published>2023-08-22T11:30:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=50452f2f76852322620b63e62922b85e955abe94'/>
<id>urn:sha1:50452f2f76852322620b63e62922b85e955abe94</id>
<content type='text'>
After the commit in the Fixes: line below, HPD polling stopped working
on i915, since after that change calling drm_kms_helper_poll_enable()
doesn't restart drm_mode_config::output_poll_work if the work was
stopped (no connectors needing polling) and enabling polling for a
connector (during runtime suspend or detecting an HPD IRQ storm).

After the above change calling drm_kms_helper_poll_enable() is a nop
after it's been called already and polling for some connectors was
disabled/re-enabled.

Fix this by calling drm_kms_helper_poll_reschedule() added in the
previous patch instead, which reschedules the work whenever expected.

Fixes: d33a54e3991d ("drm/probe_helper: sort out poll_running vs poll_enabled")
CC: stable@vger.kernel.org # 6.4+
Cc: Dmitry Baryshkov &lt;dmitry.baryshkov@linaro.org&gt;
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Jouni Högander &lt;jouni.hogander@intel.com&gt;
Signed-off-by: Imre Deak &lt;imre.deak@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20230822113015.41224-2-imre.deak@intel.com
</content>
</entry>
<entry>
<title>drm/i915: Don't change the status of forced connectors during HPD poll detect</title>
<updated>2023-08-11T13:08:53Z</updated>
<author>
<name>Imre Deak</name>
</author>
<published>2023-08-09T10:43:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4bed08d99c681f1564e4a633b33d8a6d0446c706'/>
<id>urn:sha1:4bed08d99c681f1564e4a633b33d8a6d0446c706</id>
<content type='text'>
As described in the previous patch a connector shouldn't change its
status while it's forced to a connected/disconnected state. This can
still happen while running the connector detect function to account for
lost HPD events in a low-power state.

Fix this by reusing the connector detect function which handles a
hotplug event and prevents updating the status for forced connectors as
expected.

Testcase: igt@kms_force_connector_basic@force-connector-state
Signed-off-by: Imre Deak &lt;imre.deak@intel.com&gt;
Reviewed-by: Jouni Högander &lt;jouni.hogander@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20230809104307.1218058-3-imre.deak@intel.com
</content>
</entry>
<entry>
<title>drm/i915: Don't change the status of forced connectors during hotplug detect</title>
<updated>2023-08-11T13:08:53Z</updated>
<author>
<name>Imre Deak</name>
</author>
<published>2023-08-09T10:43:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b77d010d82eac31e161833b8e75d2983e3056171'/>
<id>urn:sha1:b77d010d82eac31e161833b8e75d2983e3056171</id>
<content type='text'>
DRM display connectors forced to a connected/disconnected state via the
drm_connector::force member shouldn't change their status. Atm, this can
still happen in the connector's detect function when called to handle a
hotplug event. This in turn may lead to the GETCONNECTOR ioctl to report
the incorrect state if it's called to return the connector properties
without doing an actual detection (by calling the ioctl with a non-zero
drm_mode_get_connector::count_modes).

Fix the above by updating the connector state during hotplug detect only
if the connector state is not forced.

Testcase: igt@kms_force_connector_basic@force-connector-state
Signed-off-by: Imre Deak &lt;imre.deak@intel.com&gt;
Reviewed-by: Jouni Högander &lt;jouni.hogander@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20230809104307.1218058-2-imre.deak@intel.com
</content>
</entry>
<entry>
<title>drm/i915: Avoid endless HPD poll detect loop via runtime suspend/resume</title>
<updated>2023-08-11T13:08:52Z</updated>
<author>
<name>Imre Deak</name>
</author>
<published>2023-08-09T10:43:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cc018c2626745d2e52273f941f9db222101aa11a'/>
<id>urn:sha1:cc018c2626745d2e52273f941f9db222101aa11a</id>
<content type='text'>
The issue fixed in

commit a8ddac7c9f06 ("drm/i915: Avoid HPD poll detect triggering a new detect cycle")

on VLV, CHV is still present on platforms where the display hotplug
detection functionality is available whenever the device is in D0 state
(hence these platforms switch to HPD polling only when the device is
runtime suspended).

The above commit avoids an endless i915_hpd_poll_init_work() -&gt;
connector detect loop by making sure that by the end of
i915_hpd_poll_init_work() all display power references acquired by the
connector detect functions which can trigger a new cycle (display core
power domain) are dropped. However on platforms where HPD polling is
enabled/disabled only from the runtime suspend/resume handlers, this is
not ensured: for instance eDP VDD, TypeC port PHYs and the runtime
autosuspend delay may still keep the device runtime resumed (via a power
reference acquired during connector detection and hence result in an
endless loop like the above).

Solve the problem described in the above commit on all platforms, by
making sure that a i915_hpd_poll_init_work() -&gt; connector detect
sequence can't take any power reference in the first place which would
trigger a new cycle, instead of relying on these power references to be
dropped by the end of the sequence.

With the default runtime autosuspend delay (10 sec) this issue didn't
happen in practice, since the device remained runtime resumed for the
whole duration of the above sequence. CI/IGT tests however set the
autosuspend delay to 0, which makes the problem visible, see References:
below.

Tested on GLK, CHV.

v2: Don't warn about a requeued work, to account for disabling
    polling directly during driver loading, reset and system resume.

References: https://gitlab.freedesktop.org/drm/intel/-/issues/7940#note_1997403
Signed-off-by: Imre Deak &lt;imre.deak@intel.com&gt;
Reviewed-by: Jouni Högander &lt;jouni.hogander@intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20230809104307.1218058-1-imre.deak@intel.com
</content>
</entry>
</feed>
