drm/edid: detach debugfs EDID override from EDID property update
authorJani Nikula <jani.nikula@intel.com>
Mon, 24 Oct 2022 12:33:37 +0000 (15:33 +0300)
committerJani Nikula <jani.nikula@intel.com>
Wed, 26 Oct 2022 06:53:24 +0000 (09:53 +0300)
commit90b575f52c6ab35979968e2e4d9cbd9f1eb3901c
tree19a09fadde3c5bff070b7cee6693d50c50e30394
parent6c9b3db70aad556152cba7291e93ae9e4bb1a6b0
drm/edid: detach debugfs EDID override from EDID property update

Having the EDID override debugfs directly update the EDID property is
problematic. The update is partial only. The driver has no way of
knowing it's been updated. Mode list is not updated. It's an
inconsistent state.

Detach debugfs EDID override from the property update completely. Only
set and reset a separate override EDID copy from debugfs, and have it
take effect only at detect (via EDID read). The copy is at
connector->edid_override, protected by connector->edid_override_mutex.

This also brings override EDID closer to firmware EDID in behaviour.

Add validation of the override EDID which we completely lacked.

Note that IGT already forces a detect whenever tests update the override
EDID.

v2: Add locking (Ville)

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/4c875f8e06c4499f498fcf876e1233cbb155ec8a.1666614699.git.jani.nikula@intel.com
drivers/gpu/drm/drm_connector.c
drivers/gpu/drm/drm_edid.c
include/drm/drm_connector.h