drm/edid: transparent low-level override/firmware EDIDs
Subsystems (3)
v3 cover drm/edid: transparent low-level override/firmware EDIDs
Patch 1 is v3 of [1]. There are no functional changes to the previous version, just a rebase and a slight refresh of the commit message and comments. I think the conclusion from the discussion was that this should work just fine. At least one user reported this helped with their audio woes with firmware EDID.
Patch 2 is an attempt to mitigate the problem of moving the edid_firmware module parameter from drm_kms_helper to drm. Not sure if it's too much or too little or just right. Need input here. Pedantically it should be part of patch 1, but this division should be easier to grasp in review.
BR,
Jani.
[1] http://patchwork.freedesktop.org/patch/msgid/[email protected]
Jani Nikula (2):
drm: handle override and firmware EDID at drm_do_get_edid() level
drm: add backwards compatibility support for
drm_kms_helper.edid_firmware
Documentation/admin-guide/kernel-parameters.txt | 2 +- drivers/gpu/drm/Kconfig | 2 +- drivers/gpu/drm/Makefile | 2 +- drivers/gpu/drm/drm_edid.c | 15 +++++++++++++++ drivers/gpu/drm/drm_edid_load.c | 7 +++++++ drivers/gpu/drm/drm_kms_helper_common.c | 19 +++++++++++++++++++ drivers/gpu/drm/drm_probe_helper.c | 19 +------------------ include/drm/drm_edid.h | 2 ++ 8 files changed, 47 insertions(+), 21 deletions(-)
Signature · 6 lines
2.11.0 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
PATCH v3 1/2 drm: handle override and firmware EDID at drm_do_get_edid() level
Handle debugfs override edid and firmware edid at the low level to transparently and completely replace the real edid. Previously, we practically only used the modes from the override EDID, and none of the other data, such as audio parameters.
This change also prevents actual EDID reads when the EDID is to be overridden, but retains the DDC probe. This is useful if the reason for preferring override EDID are problems with reading the data, or corruption of the data.
Move firmware EDID loading from helper to core, as the functionality moves to lower level as well. This will result in a change of module parameter from drm_kms_helper.edid_firmware to drm.edid_firmware, which arguably makes more sense anyway.
Some future work remains related to override and firmware EDID validation. Like before, no validation is done for override EDID. The firmware EDID is validated separately in the loader. Some unification and deduplication would be in order, to validate all of them at the drm_do_get_edid() level, like "real" EDIDs.
v2: move firmware loading to core
v3: rebase, commit message refresh
--- Documentation/admin-guide/kernel-parameters.txt | 2 +- drivers/gpu/drm/Kconfig | 2 +- drivers/gpu/drm/Makefile | 2 +- drivers/gpu/drm/drm_edid.c | 15 +++++++++++++++ drivers/gpu/drm/drm_probe_helper.c | 19 +------------------ 5 files changed, 19 insertions(+), 21 deletions(-)
Documentation/admin-guide/kernel-parameters.txt +1 -1
@@ -854,7 +854,7 @@ The filter can be disabled or changed to another driver later using sysfs. - drm_kms_helper.edid_firmware=[<connector>:]<file>[,[<connector>:]<file>] + drm.edid_firmware=[<connector>:]<file>[,[<connector>:]<file>] Broken monitors, graphic adapters, KVMs and EDIDless panels may send no or incorrect EDID data sets. This parameter allows to specify an EDID data sets
drivers/gpu/drm/Kconfig +1 -1
@@ -110,7 +110,7 @@ config DRM_FBDEV_OVERALLOC config DRM_LOAD_EDID_FIRMWARE bool "Allow to specify an EDID data set instead of probing for it" - depends on DRM_KMS_HELPER + depends on DRM help Say Y here, if you want to use EDID data to be loaded from the /lib/firmware directory or one of the provided built-in
drivers/gpu/drm/Makefile +1 -1
@@ -28,6 +28,7 @@ drm-$(CONFIG_DRM_PANEL) += drm_panel.o drm-$(CONFIG_OF) += drm_of.o drm-$(CONFIG_AGP) += drm_agpsupport.o drm-$(CONFIG_DEBUG_FS) += drm_debugfs.o drm_debugfs_crc.o +drm-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o drm_kms_helper-y := drm_crtc_helper.o drm_dp_helper.o drm_probe_helper.o \ drm_plane_helper.o drm_dp_mst_topology.o drm_atomic_helper.o \
@@ -36,7 +37,6 @@ drm_kms_helper-y := drm_crtc_helper.o drm_dp_helper.o drm_probe_helper.o \ drm_scdc_helper.o drm_gem_framebuffer_helper.o drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o -drm_kms_helper-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o drm_kms_helper-$(CONFIG_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o drm_kms_helper-$(CONFIG_DRM_DP_AUX_CHARDEV) += drm_dp_aux_dev.o
drivers/gpu/drm/drm_edid.c +15 -0
@@ -1533,6 +1533,10 @@ static void connector_bad_edid(struct drm_connector *connector,* level, drivers must make all reasonable efforts to expose it as an I2C * adapter and use drm_get_edid() instead of abusing this function. * +* The EDID may be overridden using debugfs override_edid or firmare EDID +* (drm_load_edid_firmware() and drm.edid_firmware parameter), in this priority +* order. Having either of them bypasses actual EDID reads. +* * Return: Pointer to valid EDID or NULL if we couldn't find any. */ struct edid *drm_do_get_edid(struct drm_connector *connector,
@@ -1542,6 +1546,17 @@ struct edid *drm_do_get_edid(struct drm_connector *connector, {int i, j =0 , valid_extensions =0 ;u8 *edid, *new; +struct edid *override =NULL ; + +if (connector->override_edid) + override =drm_edid_duplicate ((const struct edid *) + connector->edid_blob_ptr->data); + +if (!override) + override =drm_load_edid_firmware (connector); + +if (!IS_ERR_OR_NULL (override)) +return override;if ((edid =kmalloc (EDID_LENGTH ,GFP_KERNEL )) ==NULL )return NULL ;
drivers/gpu/drm/drm_probe_helper.c +1 -18
@@ -353,8 +353,6 @@ EXPORT_SYMBOL(drm_helper_probe_detect);* drm_mode_probed_add(). New modes start their life with status as OK. * Modes are added from a single source using the following priority order. * -* - debugfs 'override_edid' (used for testing only) -* - firmware EDID (drm_load_edid_firmware()) * - &drm_connector_helper_funcs.get_modes vfunc * - if the connector status is connector_status_connected, standard * VESA DMT modes up to 1024x768 are automatically added
@@ -483,22 +481,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector, goto prune; } -if (connector->override_edid) { -struct edid *edid = (struct edid *) connector->edid_blob_ptr->data; - - count =drm_add_edid_modes (connector, edid); -drm_edid_to_eld (connector, edid); - }else { -struct edid *edid =drm_load_edid_firmware (connector); -if (!IS_ERR_OR_NULL (edid)) { -drm_mode_connector_update_edid_property (connector, edid); - count =drm_add_edid_modes (connector, edid); -drm_edid_to_eld (connector, edid); -kfree (edid); - } -if (count ==0 ) - count = (*connector_funcs->get_modes)(connector); - } + count = (*connector_funcs->get_modes)(connector);if (count ==0 && connector->status == connector_status_connected) count =drm_add_modes_noedid (connector,1024 ,768 );
Signature · 6 lines
2.11.0 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v3 1/2] drm: handle override and firmware EDID at drm_do_get_edid() level
Quoted 21 lines · Jani Nikula
Handle debugfs override edid and firmware edid at the low level to transparently and completely replace the real edid. Previously, we practically only used the modes from the override EDID, and none of the other data, such as audio parameters.
This change also prevents actual EDID reads when the EDID is to be overridden, but retains the DDC probe. This is useful if the reason for preferring override EDID are problems with reading the data, or corruption of the data.
Move firmware EDID loading from helper to core, as the functionality moves to lower level as well. This will result in a change of module parameter from drm_kms_helper.edid_firmware to drm.edid_firmware, which arguably makes more sense anyway.
Some future work remains related to override and firmware EDID validation. Like before, no validation is done for override EDID. The firmware EDID is validated separately in the loader. Some unification and deduplication would be in order, to validate all of them at the
drm_do_get_edid()level, like "real" EDIDs.
Quoted 8 lines
v2: move firmware loading to core
v3: rebase, commit message refresh
Cc Abdiel Janulgue <[email protected]>Cc Daniel Vetter <[email protected]>Cc Ville Syrjälä <[email protected]>Signed-off-by Jani Nikula <[email protected]>
still holds
Quoted 126 lines
--- Documentation/admin-guide/kernel-parameters.txt | 2 +- drivers/gpu/drm/Kconfig | 2 +- drivers/gpu/drm/Makefile | 2 +- drivers/gpu/drm/drm_edid.c | 15 +++++++++++++++ drivers/gpu/drm/drm_probe_helper.c | 19 +------------------ 5 files changed, 19 insertions(+), 21 deletions(-)Documentation/admin-guide/kernel-parameters.txt +1
-1@@ -854,7 +854,7 @@ The filter can be disabled or changed to another driver later using sysfs. - drm_kms_helper.edid_firmware=[<connector>:]<file>[,[<connector>:]<file>] + drm.edid_firmware=[<connector>:]<file>[,[<connector>:]<file>] Broken monitors, graphic adapters, KVMs and EDIDless panels may send no or incorrect EDID data sets. This parameter allows to specify an EDID data setsdrivers/gpu/drm/Kconfig +1
-1@@ -110,7 +110,7 @@ config DRM_FBDEV_OVERALLOC config DRM_LOAD_EDID_FIRMWARE bool "Allow to specify an EDID data set instead of probing for it" - depends on DRM_KMS_HELPER + depends on DRM help Say Y here, if you want to use EDID data to be loaded from the /lib/firmware directory or one of the provided built-indrivers/gpu/drm/Makefile +1
-1@@ -28,6 +28,7 @@ drm-$(CONFIG_DRM_PANEL) += drm_panel.o drm-$(CONFIG_OF) += drm_of.o drm-$(CONFIG_AGP) += drm_agpsupport.o drm-$(CONFIG_DEBUG_FS) += drm_debugfs.o drm_debugfs_crc.o +drm-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o drm_kms_helper-y := drm_crtc_helper.o drm_dp_helper.o drm_probe_helper.o \ drm_plane_helper.o drm_dp_mst_topology.o drm_atomic_helper.o \@@ -36,7 +37,6 @@ drm_kms_helper-y := drm_crtc_helper.o drm_dp_helper.o drm_probe_helper.o \ drm_scdc_helper.o drm_gem_framebuffer_helper.o drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o -drm_kms_helper-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o drm_kms_helper-$(CONFIG_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o drm_kms_helper-$(CONFIG_DRM_DP_AUX_CHARDEV) += drm_dp_aux_dev.odrivers/gpu/drm/drm_edid.c +15
-0@@ -1533,6 +1533,10 @@ static void connector_bad_edid(struct drm_connector *connector,* level, drivers must make all reasonable efforts to expose it as an I2C * adapter and use drm_get_edid() instead of abusing this function. * +* The EDID may be overridden using debugfs override_edid or firmare EDID +* (drm_load_edid_firmware() and drm.edid_firmware parameter), in this priority +* order. Having either of them bypasses actual EDID reads. +* * Return: Pointer to valid EDID or NULL if we couldn't find any. */ struct edid *drm_do_get_edid(struct drm_connector *connector,@@ -1542,6 +1546,17 @@ struct edid *drm_do_get_edid(struct drm_connector *connector, {int i, j =0 , valid_extensions =0 ;u8 *edid, *new; +struct edid *override =NULL ; + +if (connector->override_edid) + override =drm_edid_duplicate ((const struct edid *) + connector->edid_blob_ptr->data); + +if (!override) + override =drm_load_edid_firmware (connector); + +if (!IS_ERR_OR_NULL (override)) +return override;if ((edid =kmalloc (EDID_LENGTH ,GFP_KERNEL )) ==NULL )return NULL ;drivers/gpu/drm/drm_probe_helper.c +1
-18@@ -353,8 +353,6 @@ EXPORT_SYMBOL(drm_helper_probe_detect);* drm_mode_probed_add(). New modes start their life with status as OK. * Modes are added from a single source using the following priority order. * -* - debugfs 'override_edid' (used for testing only) -* - firmware EDID (drm_load_edid_firmware()) * - &drm_connector_helper_funcs.get_modes vfunc * - if the connector status is connector_status_connected, standard * VESA DMT modes up to 1024x768 are automatically added @@ -483,22 +481,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector, goto prune; } -if (connector->override_edid) { -struct edid *edid = (struct edid *) connector->edid_blob_ptr->data; - - count =drm_add_edid_modes (connector, edid); -drm_edid_to_eld (connector, edid); - }else { -struct edid *edid =drm_load_edid_firmware (connector); -if (!IS_ERR_OR_NULL (edid)) { -drm_mode_connector_update_edid_property (connector, edid); - count =drm_add_edid_modes (connector, edid); -drm_edid_to_eld (connector, edid); -kfree (edid); - } -if (count ==0 ) - count = (*connector_funcs->get_modes)(connector); - } + count = (*connector_funcs->get_modes)(connector);if (count ==0 && connector->status == connector_status_connected) count =drm_add_modes_noedid (connector,1024 ,768 );Signature · 1 line
2.11.0
Signature · 6 lines
Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH v3 2/2 drm: add backwards compatibility support for drm_kms_helper.edid_firmware
In reply to Jani NikulaIf drm_kms_helper.edid_firmware module parameter is set at drm_kms_helper probe time, update the new drm.edid_firmware parameter for backwards compatibility.
The drm_kms_helper.edid_firmware is now read-only in sysfs to prevent runtime updates.
This is a sort of easy middle ground; adding a full runtime support via /sys/module/drm_kms_helper/parameters/edid_firmware would be possible, but considerably more and uglier code.
---
I'm wondering if the change from drm_kms_helper.edid_firmware to drm.edid_firmware is enough of an ABI breakage to warrant something like this patch.
--- drivers/gpu/drm/drm_edid_load.c | 7 +++++++ drivers/gpu/drm/drm_kms_helper_common.c | 19 +++++++++++++++++++ include/drm/drm_edid.h | 2 ++ 3 files changed, 28 insertions(+)
drivers/gpu/drm/drm_edid_load.c +7 -0
@@ -31,6 +31,13 @@ module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644);MODULE_PARM_DESC (edid_firmware,"Do not probe monitor, use specified EDID blob " "from built-in data or /lib/firmware instead. " ); +/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +void __drm_set_edid_firmware_path (const char *path) +{ +strlcpy (edid_firmware, path,sizeof (edid_firmware)); +} +EXPORT_SYMBOL (__drm_set_edid_firmware_path); +#define GENERIC_EDIDS 6static const char *const generic_edid_name[GENERIC_EDIDS ] = {"edid/800x600.bin" ,
drivers/gpu/drm/drm_kms_helper_common.c +19 -0
@@ -26,6 +26,7 @@*/ #include <linux/module.h> +#include <drm/drmP.h> #include "drm_crtc_helper_internal.h"
@@ -33,10 +34,28 @@ MODULE_AUTHOR("David Airlie, Jesse Barnes");MODULE_DESCRIPTION ("DRM KMS helper" );MODULE_LICENSE ("GPL and additional rights" ); +#if IS_ENABLED (CONFIG_DRM_LOAD_EDID_FIRMWARE ) +static char edid_firmware[PATH_MAX ]; +module_param_string (edid_firmware, edid_firmware,sizeof (edid_firmware),0444 ); +MODULE_PARM_DESC (edid_firmware,"DEPRECATED. Use drm.edid_firmware instead." ); +static inline void legacy_set_edid_firmare_path (void ) +{ +if (edid_firmware[0 ]) { +DRM_NOTE ("drm_kms_firmware.edid_firmware is deprecated, " +"please use drm.edid_firmware intead.\n" ); +__drm_set_edid_firmware_path (edid_firmware); + } +} +#else +static inline void legacy_set_edid_firmare_path (void ) {} +#endif +static int __init drm_kms_helper_init (void ) {int ret; +legacy_set_edid_firmare_path (); +/* Call init functions from specific kms helpers here */ ret =drm_fb_helper_modinit ();if (ret <0 )
include/drm/drm_edid.h +2 -0
@@ -341,12 +341,14 @@ int drm_av_sync_delay(struct drm_connector *connector,#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE struct edid *drm_load_edid_firmware (struct drm_connector *connector); +void __drm_set_edid_firmware_path (const char *path);#else static inline struct edid *drm_load_edid_firmware (struct drm_connector *connector) {return ERR_PTR (-ENOENT ); } +static inline void __drm_set_edid_firmware_path (const char *path) {}#endif int
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH v3 2/2] drm: add backwards compatibility support for drm_kms_helper.edid_firmware
Quoted 10 lines · Jani Nikula
If drm_kms_helper.edid_firmware module parameter is set at
drm_kms_helperprobe time, update the new drm.edid_firmware parameter for backwards compatibility.The drm_kms_helper.edid_firmware is now read-only in sysfs to prevent runtime updates.
This is a sort of easy middle ground; adding a full runtime support via
/sys/module/drm_kms_helper/parameters/edid_firmwarewould be possible, but considerably more and uglier code.
Hmm. Wouldn't you just have to have custom kernel_param_ops and that's about it? Seems like that could be a bit cleaner.
Quoted 97 lines
Cc Abdiel Janulgue <[email protected]>Cc Daniel Vetter <[email protected]>Cc Ville Syrjälä <[email protected]>Signed-off-by Jani Nikula <[email protected]>---
I'm wondering if the change from drm_kms_helper.edid_firmware to drm.edid_firmware is enough of an ABI breakage to warrant something like this patch.
--- drivers/gpu/drm/drm_edid_load.c | 7 +++++++ drivers/gpu/drm/drm_kms_helper_common.c | 19 +++++++++++++++++++ include/drm/drm_edid.h | 2 ++ 3 files changed, 28 insertions(+)drivers/gpu/drm/drm_edid_load.c +7
-0@@ -31,6 +31,13 @@ module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644);MODULE_PARM_DESC (edid_firmware,"Do not probe monitor, use specified EDID blob " "from built-in data or /lib/firmware instead. " ); +/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +void __drm_set_edid_firmware_path (const char *path) +{ +strlcpy (edid_firmware, path,sizeof (edid_firmware)); +} +EXPORT_SYMBOL (__drm_set_edid_firmware_path); +#define GENERIC_EDIDS 6static const char *const generic_edid_name[GENERIC_EDIDS ] = {"edid/800x600.bin" ,drivers/gpu/drm/drm_kms_helper_common.c +19
-0@@ -26,6 +26,7 @@*/ #include <linux/module.h> +#include <drm/drmP.h> #include "drm_crtc_helper_internal.h" @@ -33,10 +34,28 @@ MODULE_AUTHOR("David Airlie, Jesse Barnes");MODULE_DESCRIPTION ("DRM KMS helper" );MODULE_LICENSE ("GPL and additional rights" ); +#if IS_ENABLED (CONFIG_DRM_LOAD_EDID_FIRMWARE ) +static char edid_firmware[PATH_MAX ]; +module_param_string (edid_firmware, edid_firmware,sizeof (edid_firmware),0444 ); +MODULE_PARM_DESC (edid_firmware,"DEPRECATED. Use drm.edid_firmware instead." ); +static inline void legacy_set_edid_firmare_path (void ) +{ +if (edid_firmware[0 ]) { +DRM_NOTE ("drm_kms_firmware.edid_firmware is deprecated, " +"please use drm.edid_firmware intead.\n" ); +__drm_set_edid_firmware_path (edid_firmware); + } +} +#else +static inline void legacy_set_edid_firmare_path (void ) {} +#endif +static int __init drm_kms_helper_init (void ) {int ret; +legacy_set_edid_firmare_path (); +/* Call init functions from specific kms helpers here */ ret =drm_fb_helper_modinit ();if (ret <0 )include/drm/drm_edid.h +2
-0@@ -341,12 +341,14 @@ int drm_av_sync_delay(struct drm_connector *connector,#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE struct edid *drm_load_edid_firmware (struct drm_connector *connector); +void __drm_set_edid_firmware_path (const char *path);#else static inline struct edid *drm_load_edid_firmware (struct drm_connector *connector) {return ERR_PTR (-ENOENT ); } +static inline void __drm_set_edid_firmware_path (const char *path) {}#endif int Signature · 1 line
2.11.0
Signature · 6 lines
Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v3 2/2] drm: add backwards compatibility support for drm_kms_helper.edid_firmware
Quoted 2 lines · Ville Syrjälä
Hmm. Wouldn't you just have to have custom
kernel_param_opsand that's about it? Seems like that could be a bit cleaner.
Here's a shot at that. Completely untested, but seems like this should do the trick, and is less complex than I anticipated.
BR,
Jani.
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 1/1 drm: add backwards compatibility support for drm_kms_helper.edid_firmware
Add drm_kms_helper.edid_firmware module parameter with param ops hooks to set drm.edid_firmware instead, for backwards compatibility.
--- drivers/gpu/drm/drm_edid_load.c | 16 ++++++++++++++++ drivers/gpu/drm/drm_kms_helper_common.c | 28 ++++++++++++++++++++++++++++ include/drm/drm_edid.h | 2 ++ 3 files changed, 46 insertions(+)
drivers/gpu/drm/drm_edid_load.c +16 -0
@@ -31,6 +31,22 @@ module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644);MODULE_PARM_DESC (edid_firmware,"Do not probe monitor, use specified EDID blob " "from built-in data or /lib/firmware instead. " ); +/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +int __drm_set_edid_firmware_path (const char *path) +{ +scnprintf (edid_firmware,sizeof (edid_firmware),"%s" , path); + +return 0 ; +} +EXPORT_SYMBOL (__drm_set_edid_firmware_path); + +/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +int __drm_get_edid_firmware_path (char *buf,size_t bufsize) +{ +return scnprintf (buf, bufsize,"%s" , edid_firmware); +} +EXPORT_SYMBOL (__drm_get_edid_firmware_path); +#define GENERIC_EDIDS 6static const char *const generic_edid_name[GENERIC_EDIDS ] = {"edid/800x600.bin" ,
drivers/gpu/drm/drm_kms_helper_common.c +28 -0
@@ -26,6 +26,7 @@*/ #include <linux/module.h> +#include <drm/drmP.h> #include "drm_crtc_helper_internal.h"
@@ -33,6 +34,33 @@ MODULE_AUTHOR("David Airlie, Jesse Barnes");MODULE_DESCRIPTION ("DRM KMS helper" );MODULE_LICENSE ("GPL and additional rights" ); +#if IS_ENABLED (CONFIG_DRM_LOAD_EDID_FIRMWARE ) + +/* Backward compatibility for drm_kms_helper.edid_firmware */ +static int edid_firmware_set (const char *val,const struct kernel_param *kp) +{ +DRM_NOTE ("drm_kms_firmware.edid_firmware is deprecated, please use drm.edid_firmware intead.\n" ); + +return __drm_set_edid_firmware_path (val); +} + +static int edid_firmware_get (char *buffer,const struct kernel_param *kp) +{ +return __drm_get_edid_firmware_path (buffer,PAGE_SIZE ); +} + +const struct kernel_param_ops edid_firmware_ops = { + .set = edid_firmware_set, + .get = edid_firmware_get, +}; + +module_param_cb (edid_firmware, &edid_firmware_ops,NULL ,0644 ); +__MODULE_PARM_TYPE (edid_firmware,"charp" ); +MODULE_PARM_DESC (edid_firmware, +"DEPRECATED. Use drm.edid_firmware module parameter instead." ); + +#endif +static int __init drm_kms_helper_init (void ) {int ret;
include/drm/drm_edid.h +2 -0
@@ -341,6 +341,8 @@ int drm_av_sync_delay(struct drm_connector *connector,#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE struct edid *drm_load_edid_firmware (struct drm_connector *connector); +int __drm_set_edid_firmware_path (const char *path); +int __drm_get_edid_firmware_path (char *buf,size_t bufsize);#else static inline struct edid *drm_load_edid_firmware (struct drm_connector *connector)
Signature · 6 lines
2.11.0 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH] drm: add backwards compatibility support for drm_kms_helper.edid_firmware
Quoted 25 lines · Jani Nikula
Add drm_kms_helper.edid_firmware module parameter with param ops hooks to set drm.edid_firmware instead, for backwards compatibility.
Suggested-by Ville Syrjälä <[email protected]>Cc Abdiel Janulgue <[email protected]>Cc Daniel Vetter <[email protected]>Cc Ville Syrjälä <[email protected]>Signed-off-by Jani Nikula <[email protected]>--- drivers/gpu/drm/drm_edid_load.c | 16 ++++++++++++++++ drivers/gpu/drm/drm_kms_helper_common.c | 28 ++++++++++++++++++++++++++++ include/drm/drm_edid.h | 2 ++ 3 files changed, 46 insertions(+)drivers/gpu/drm/drm_edid_load.c +3
-0@@ -31,6 +31,22 @@ module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644);MODULE_PARM_DESC (edid_firmware,"Do not probe monitor, use specified EDID blob " "from built-in data or /lib/firmware instead. " ); +/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +int __drm_set_edid_firmware_path (const char *path) +{
drivers/gpu/drm/drm_edid_load.c module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644); · line 46
Quoted 10 lines
drivers/gpu/drm/drm_edid_load.c +10
-0+scnprintf (edid_firmware,sizeof (edid_firmware),"%s" , path); + +return 0 ; +} +EXPORT_SYMBOL (__drm_set_edid_firmware_path); + +/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +int __drm_get_edid_firmware_path (char *buf,size_t bufsize) +{ +return scnprintf (buf, bufsize,"%s" , edid_firmware);
I guess these could just use strlcpy() or something.
Quoted 33 lines
drivers/gpu/drm/drm_edid_load.c +3
-0+} +EXPORT_SYMBOL (__drm_get_edid_firmware_path); +#define GENERIC_EDIDS 6static const char *const generic_edid_name[GENERIC_EDIDS ] = {"edid/800x600.bin" ,drivers/gpu/drm/drm_kms_helper_common.c +12
-0@@ -26,6 +26,7 @@*/ #include <linux/module.h> +#include <drm/drmP.h> #include "drm_crtc_helper_internal.h" @@ -33,6 +34,33 @@ MODULE_AUTHOR("David Airlie, Jesse Barnes");MODULE_DESCRIPTION ("DRM KMS helper" );MODULE_LICENSE ("GPL and additional rights" ); +#if IS_ENABLED (CONFIG_DRM_LOAD_EDID_FIRMWARE ) + +/* Backward compatibility for drm_kms_helper.edid_firmware */ +static int edid_firmware_set (const char *val,const struct kernel_param *kp) +{ +DRM_NOTE ("drm_kms_firmware.edid_firmware is deprecated, please use drm.edid_firmware intead.\n" ); + +return __drm_set_edid_firmware_path (val); +} + +static int edid_firmware_get (char *buffer,const struct kernel_param *kp)
drivers/gpu/drm/drm_kms_helper_common.c MODULE_AUTHOR("David Airlie, Jesse Barnes"); · line 57
Quoted 10 lines
drivers/gpu/drm/drm_kms_helper_common.c +10
-0+{ +return __drm_get_edid_firmware_path (buffer,PAGE_SIZE ); +} + +const struct kernel_param_ops edid_firmware_ops = { + .set = edid_firmware_set, + .get = edid_firmware_get, +}; + +module_param_cb (edid_firmware, &edid_firmware_ops,NULL ,0644 );
Do we want the __parm_check thing here? Looks like it's just some kind of compile time type check though so not critical by any means.
Otherwise looks technically correct so
Quoted 24 lines
drivers/gpu/drm/drm_kms_helper_common.c +6
-0+__MODULE_PARM_TYPE (edid_firmware,"charp" ); +MODULE_PARM_DESC (edid_firmware, +"DEPRECATED. Use drm.edid_firmware module parameter instead." ); + +#endif +static int __init drm_kms_helper_init (void ) {int ret;include/drm/drm_edid.h +2
-0@@ -341,6 +341,8 @@ int drm_av_sync_delay(struct drm_connector *connector,#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE struct edid *drm_load_edid_firmware (struct drm_connector *connector); +int __drm_set_edid_firmware_path (const char *path); +int __drm_get_edid_firmware_path (char *buf,size_t bufsize);#else static inline struct edid *drm_load_edid_firmware (struct drm_connector *connector)Signature · 1 line
2.11.0
Signature · 6 lines
Ville Syrjälä Intel OTC _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH] drm: add backwards compatibility support for drm_kms_helper.edid_firmware
Quoted 23 lines · Ville Syrjälä
Quoted 22 lines · Jani Nikula
Add drm_kms_helper.edid_firmware module parameter with param ops hooks to set drm.edid_firmware instead, for backwards compatibility.
Suggested-by Ville Syrjälä <[email protected]>Cc Abdiel Janulgue <[email protected]>Cc Daniel Vetter <[email protected]>Cc Ville Syrjälä <[email protected]>Signed-off-by Jani Nikula <[email protected]>--- drivers/gpu/drm/drm_edid_load.c | 16 ++++++++++++++++ drivers/gpu/drm/drm_kms_helper_common.c | 28 ++++++++++++++++++++++++++++ include/drm/drm_edid.h | 2 ++ 3 files changed, 46 insertions(+)drivers/gpu/drm/drm_edid_load.c +0
-0@@ -31,6 +31,22 @@ module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644);MODULE_PARM_DESC (edid_firmware,"Do not probe monitor, use specified EDID blob " "from built-in data or /lib/firmware instead. " );
Quoted 15 lines
drivers/gpu/drm/drm_edid_load.c module_param_string(edid_firmware, edid_firmware, sizeof(edid_firmware), 0644); · line 46
Quoted 13 lines
drivers/gpu/drm/drm_edid_load.c +13
-0+/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +int __drm_set_edid_firmware_path (const char *path) +{ +scnprintf (edid_firmware,sizeof (edid_firmware),"%s" , path); + +return 0 ; +} +EXPORT_SYMBOL (__drm_set_edid_firmware_path); + +/* Use only for backward compatibility with drm_kms_helper.edid_firmware */ +int __drm_get_edid_firmware_path (char *buf,size_t bufsize) +{ +return scnprintf (buf, bufsize,"%s" , edid_firmware);I guess these could just use
strlcpy()or something.
strlcpy() returns strlen(source) while scnprintf() returns the number of chars written to destination (minus the terminating NUL), and that's what the kernel param ops expect. I took this directly from kernel/params.c, and preferred to use the same for both get and set.
Quoted 39 lines
Quoted 39 lines
drivers/gpu/drm/drm_edid_load.c +3
-0+} +EXPORT_SYMBOL (__drm_get_edid_firmware_path); +#define GENERIC_EDIDS 6static const char *const generic_edid_name[GENERIC_EDIDS ] = {"edid/800x600.bin" ,drivers/gpu/drm/drm_kms_helper_common.c +17
-0@@ -26,6 +26,7 @@*/ #include <linux/module.h> +#include <drm/drmP.h> #include "drm_crtc_helper_internal.h" @@ -33,6 +34,33 @@ MODULE_AUTHOR("David Airlie, Jesse Barnes");MODULE_DESCRIPTION ("DRM KMS helper" );MODULE_LICENSE ("GPL and additional rights" ); +#if IS_ENABLED (CONFIG_DRM_LOAD_EDID_FIRMWARE ) + +/* Backward compatibility for drm_kms_helper.edid_firmware */ +static int edid_firmware_set (const char *val,const struct kernel_param *kp) +{ +DRM_NOTE ("drm_kms_firmware.edid_firmware is deprecated, please use drm.edid_firmware intead.\n" ); + +return __drm_set_edid_firmware_path (val); +} + +static int edid_firmware_get (char *buffer,const struct kernel_param *kp) +{ +return __drm_get_edid_firmware_path (buffer,PAGE_SIZE ); +} + +const struct kernel_param_ops edid_firmware_ops = {
Quoted 8 lines
drivers/gpu/drm/drm_kms_helper_common.c MODULE_AUTHOR("David Airlie, Jesse Barnes"); · line 57
Quoted 5 lines
drivers/gpu/drm/drm_kms_helper_common.c +5
-0+ .set = edid_firmware_set, + .get = edid_firmware_get, +}; + +module_param_cb (edid_firmware, &edid_firmware_ops,NULL ,0644 );Do we want the
__parm_checkthing here? Looks like it's just some kind of compile time type check though so not critical by any means.
It's useless here, because we don't actually store the parameter here, and just pass NULL.
Quoted 2 lines
Otherwise looks technically correct so
Reviewed-by Ville Syrjälä <[email protected]>
Thanks,
Jani.
Quoted 25 lines
Quoted 25 lines
drivers/gpu/drm/drm_kms_helper_common.c +6
-0+__MODULE_PARM_TYPE (edid_firmware,"charp" ); +MODULE_PARM_DESC (edid_firmware, +"DEPRECATED. Use drm.edid_firmware module parameter instead." ); + +#endif +static int __init drm_kms_helper_init (void ) {int ret;include/drm/drm_edid.h +2
-0@@ -341,6 +341,8 @@ int drm_av_sync_delay(struct drm_connector *connector,#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE struct edid *drm_load_edid_firmware (struct drm_connector *connector); +int __drm_set_edid_firmware_path (const char *path); +int __drm_get_edid_firmware_path (char *buf,size_t bufsize);#else static inline struct edid *drm_load_edid_firmware (struct drm_connector *connector)Signature · 1 line
2.11.0
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
Patchwork
CI✓ Fi.CI.BAT: success for drm/edid: transparent low-level override/firmware EDIDs
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/edid: transparent low-level override/firmware EDIDs
URL : https://patchwork.freedesktop.org/series/30182/
State : success
== Summary ==
Series 30182v1 drm/edid: transparent low-level override/firmware EDIDs
https://patchwork.freedesktop.org/api/1.0/series/30182/revisions/1/mbox/
Test chamelium:
Subgroup dp-edid-read:
fail -> PASS (fi-kbl-7500u) fdo#102672
Test gem_ringfill:
Subgroup basic-default-hang:
incomplete -> DMESG-WARN (fi-pnv-d510) fdo#101600
Test kms_cursor_legacy:
Subgroup basic-busy-flip-before-cursor-legacy:
fail -> PASS (fi-snb-2600) fdo#100215
Test kms_frontbuffer_tracking:
Subgroup basic:
dmesg-warn -> PASS (fi-bdw-5557u) fdo#102473fdo#102672 https://bugs.freedesktop.org/show_bug.cgi?id=102672
fdo#101600 https://bugs.freedesktop.org/show_bug.cgi?id=101600
fdo#100215 https://bugs.freedesktop.org/show_bug.cgi?id=100215
fdo#102473 https://bugs.freedesktop.org/show_bug.cgi?id=102473
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:444s fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:461s fi-blb-e6850 total:289 pass:224 dwarn:1 dfail:0 fail:0 skip:64 time:377s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:542s fi-bwr-2160 total:289 pass:184 dwarn:0 dfail:0 fail:0 skip:105 time:268s fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:502s fi-byt-j1900 total:289 pass:254 dwarn:1 dfail:0 fail:0 skip:34 time:503s fi-byt-n2820 total:289 pass:250 dwarn:1 dfail:0 fail:0 skip:38 time:487s fi-cfl-s total:289 pass:250 dwarn:4 dfail:0 fail:0 skip:35 time:448s fi-elk-e7500 total:289 pass:230 dwarn:0 dfail:0 fail:0 skip:59 time:451s fi-glk-2a total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:596s fi-hsw-4770 total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:426s fi-hsw-4770r total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:411s fi-ilk-650 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:435s fi-ivb-3520m total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:490s fi-ivb-3770 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:458s fi-kbl-7500u total:289 pass:264 dwarn:1 dfail:0 fail:0 skip:24 time:490s fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:581s fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:585s fi-pnv-d510 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:552s fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:453s fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:524s fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:500s fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:464s fi-skl-x1585l total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:479s fi-snb-2520m total:289 pass:251 dwarn:0 dfail:0 fail:0 skip:38 time:569s fi-snb-2600 total:289 pass:250 dwarn:0 dfail:0 fail:0 skip:39 time:427s
3cbfafbde5bb92b6ecdbfd47e189d2742aa6fbec drm-tip: 2017y-09m-11d-23h-04m-21s UTC integration manifest 0c51d38eadf2 drm: add backwards compatibility support for drm_kms_helper.edid_firmware cb109b29bd40 drm: handle override and firmware EDID at drm_do_get_edid() level
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5652/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Quoted 16 lines · Jani Nikula
Patch 1 is v3 of [1]. There are no functional changes to the previous version, just a rebase and a slight refresh of the commit message and comments. I think the conclusion from the discussion was that this should work just fine. At least one user reported this helped with their audio woes with firmware EDID.
Patch 2 is an attempt to mitigate the problem of moving the
edid_firmwaremodule parameter fromdrm_kms_helperto drm. Not sure if it's too much or too little or just right. Need input here. Pedantically it should be part of patch 1, but this division should be easier to grasp in review.BR,
Jani.
Quoted 5 lines
[1] http://patchwork.freedesktop.org/patch/msgid/[email protected]
Cc Abdiel Janulgue <[email protected]>Cc Daniel Vetter <[email protected]>Cc Ville Syrjälä <[email protected]>
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✓ Fi.CI.IGT: success for drm/edid: transparent low-level override/firmware EDIDs
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/edid: transparent low-level override/firmware EDIDs
URL : https://patchwork.freedesktop.org/series/30182/
State : success
== Summary ==
Test perf:
Subgroup blocking:
pass -> FAIL (shard-hsw) fdo#102252 +1
Test kms_setmode:
Subgroup basic:
pass -> FAIL (shard-hsw) fdo#99912
Test kms_cursor_legacy:
Subgroup flip-vs-cursor-atomic:
fail -> PASS (shard-hsw) fdo#102402fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#102402 https://bugs.freedesktop.org/show_bug.cgi?id=102402
shard-hsw total:2301 pass:1236 dwarn:0 dfail:0 fail:13 skip:1052 time:9433s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5652/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✓ Fi.CI.BAT: success for drm/edid: transparent low-level override/firmware EDIDs (rev2)
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/edid: transparent low-level override/firmware EDIDs (rev2)
URL : https://patchwork.freedesktop.org/series/30182/
State : success
== Summary ==
Series 30182v2 drm/edid: transparent low-level override/firmware EDIDs
https://patchwork.freedesktop.org/api/1.0/series/30182/revisions/2/mbox/
Test chamelium:
Subgroup dp-crc-fast:
pass -> DMESG-FAIL (fi-kbl-7500u) fdo#102514
Test kms_cursor_legacy:
Subgroup basic-busy-flip-before-cursor-atomic:
fail -> PASS (fi-snb-2600) fdo#100215fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514
fdo#100215 https://bugs.freedesktop.org/show_bug.cgi?id=100215
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:454s fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:472s fi-blb-e6850 total:289 pass:224 dwarn:1 dfail:0 fail:0 skip:64 time:428s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:521s fi-bwr-2160 total:289 pass:184 dwarn:0 dfail:0 fail:0 skip:105 time:277s fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:511s fi-byt-j1900 total:289 pass:254 dwarn:1 dfail:0 fail:0 skip:34 time:494s fi-byt-n2820 total:289 pass:250 dwarn:1 dfail:0 fail:0 skip:38 time:495s fi-cfl-s total:289 pass:223 dwarn:34 dfail:0 fail:0 skip:32 time:545s fi-elk-e7500 total:289 pass:230 dwarn:0 dfail:0 fail:0 skip:59 time:419s fi-glk-2a total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:595s fi-hsw-4770 total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:428s fi-hsw-4770r total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:407s fi-ilk-650 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:432s fi-ivb-3520m total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:489s fi-ivb-3770 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:469s fi-kbl-7500u total:289 pass:263 dwarn:1 dfail:1 fail:0 skip:24 time:479s fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:586s fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:597s fi-pnv-d510 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:546s fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:456s fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:750s fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:493s fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:475s fi-snb-2520m total:289 pass:251 dwarn:0 dfail:0 fail:0 skip:38 time:565s fi-snb-2600 total:289 pass:249 dwarn:0 dfail:0 fail:1 skip:39 time:429s
dee3ba3a8c8bc9b11aca9cddc4e47a17b15db7eb drm-tip: 2017y-09m-18d-15h-59m-43s UTC integration manifest 586016c2cc51 drm: add backwards compatibility support for drm_kms_helper.edid_firmware 76d14fe6d436 drm: handle override and firmware EDID at drm_do_get_edid() level
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5739/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✗ Fi.CI.IGT: warning for drm/edid: transparent low-level override/firmware EDIDs (rev2)
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/edid: transparent low-level override/firmware EDIDs (rev2)
URL : https://patchwork.freedesktop.org/series/30182/
State : warning
== Summary ==
Test kms_flip:
Subgroup plain-flip-fb-recreate:
fail -> PASS (shard-hsw) fdo#102504
Subgroup wf_vblank-vs-modeset-interruptible:
pass -> DMESG-WARN (shard-hsw)
Test perf:
Subgroup blocking:
fail -> PASS (shard-hsw) fdo#102252
Test kms_chv_cursor_fail:
Subgroup pipe-A-256x256-top-edge:
pass -> SKIP (shard-hsw)
Test kms_atomic_interruptible:
Subgroup legacy-setmode:
pass -> SKIP (shard-hsw)
Test kms_draw_crc:
Subgroup draw-method-xrgb8888-pwrite-xtiled:
pass -> SKIP (shard-hsw)
Test kms_frontbuffer_tracking:
Subgroup fbc-rgb101010-draw-pwrite:
pass -> SKIP (shard-hsw)
Test kms_setmode:
Subgroup basic:
pass -> FAIL (shard-hsw) fdo#99912fdo#102504 https://bugs.freedesktop.org/show_bug.cgi?id=102504
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
shard-hsw total:2313 pass:1239 dwarn:2 dfail:0 fail:13 skip:1059 time:9623s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5739/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Jani Nikula
AppliedQuoted 11 lines · Jani Nikula
Patch 1 is v3 of [1]. There are no functional changes to the previous version, just a rebase and a slight refresh of the commit message and comments. I think the conclusion from the discussion was that this should work just fine. At least one user reported this helped with their audio woes with firmware EDID.
Patch 2 is an attempt to mitigate the problem of moving the
edid_firmwaremodule parameter fromdrm_kms_helperto drm. Not sure if it's too much or too little or just right. Need input here. Pedantically it should be part of patch 1, but this division should be easier to grasp in review.
Pushed to drm-misc-next, with the updated version of patch 2 to handle drm_kms_helper.edid_firmware backwards compat properly.
BR,
Jani.
Quoted 26 lines
BR,
Jani.[1] http://patchwork.freedesktop.org/patch/msgid/[email protected]
Cc Abdiel Janulgue <[email protected]>Cc Daniel Vetter <[email protected]>Cc Ville Syrjälä <[email protected]>Jani Nikula (2):
drm: handle override and firmware EDID atdrm_do_get_edid()level
drm: add backwards compatibility support for
drm_kms_helper.edid_firmwareDocumentation/admin-guide/kernel-parameters.txt | 2 +- drivers/gpu/drm/Kconfig | 2 +- drivers/gpu/drm/Makefile | 2 +- drivers/gpu/drm/drm_edid.c | 15 +++++++++++++++ drivers/gpu/drm/drm_edid_load.c | 7 +++++++ drivers/gpu/drm/drm_kms_helper_common.c | 19 +++++++++++++++++++ drivers/gpu/drm/drm_probe_helper.c | 19 +------------------ include/drm/drm_edid.h | 2 ++ 8 files changed, 47 insertions(+), 21 deletions(-)
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx