drm: strict type checking for drm_device based logging helpers
Subsystems (6)
cover drm: strict type checking for drm_device based logging helpers
Fix all cases that pass something other than struct drm_device to the drm_device based logging helpers, and add strict type checking.
Gustavo Sousa (1):
drm/print: Include drm_device.h
Jani Nikula (4):
drm/mipi-dsi: stop passing non struct drm_device to drm_err() and
friends
drm/rockchip: stop passing non struct drm_device to drm_err() and
friends
drm/sched: stop passing non struct drm_device to drm_err() and friends drm/print: require struct drm_device for drm_err() and friends
drivers/gpu/drm/drm_mipi_dsi.c | 12 +++--- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 16 +++---- .../gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 16 +++---- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++---- include/drm/drm_print.h | 42 +++++++++++-------- 6 files changed, 58 insertions(+), 50 deletions(-)
Signature · 1 line
2.39.5
PATCH 1/5 drm/mipi-dsi: stop passing non struct drm_device to drm_err() and friends
The expectation is that the struct drm_device based logging helpers get passed an actual struct drm_device pointer rather than some random struct pointer where you can dereference the ->dev member.
Convert drm_err(host, ...) to dev_err(host->dev, ...). This matches current usage, as struct drm_device is not available, but drops "[drm] *ERROR*" from logs.
---
--- drivers/gpu/drm/drm_mipi_dsi.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/gpu/drm/drm_mipi_dsi.c +6 -6
@@ -162,13 +162,13 @@ of_mipi_dsi_device_add(struct mipi_dsi_host *host, struct device_node *node)u32 reg;if (of_alias_from_compatible (node, info.type,sizeof (info.type)) <0 ) { -drm_err (host,"modalias failure on %pOF\n" , node); +dev_err (host->dev,"modalias failure on %pOF\n" , node);return ERR_PTR (-EINVAL ); } ret =of_property_read_u32 (node,"reg" , ®);if (ret) { -drm_err (host,"device node %pOF has no valid reg property: %d\n" , +dev_err (host->dev,"device node %pOF has no valid reg property: %d\n" , node, ret);return ERR_PTR (-EINVAL ); }
@@ -206,18 +206,18 @@ mipi_dsi_device_register_full(struct mipi_dsi_host *host,int ret;if (!info) { -drm_err (host,"invalid mipi_dsi_device_info pointer\n" ); +dev_err (host->dev,"invalid mipi_dsi_device_info pointer\n" );return ERR_PTR (-EINVAL ); }if (info->channel >3 ) { -drm_err (host,"invalid virtual channel: %u\n" , info->channel); +dev_err (host->dev,"invalid virtual channel: %u\n" , info->channel);return ERR_PTR (-EINVAL ); } dsi =mipi_dsi_device_alloc (host);if (IS_ERR (dsi)) { -drm_err (host,"failed to allocate DSI device %ld\n" , +dev_err (host->dev,"failed to allocate DSI device %ld\n" ,PTR_ERR (dsi));return dsi; }
@@ -228,7 +228,7 @@ mipi_dsi_device_register_full(struct mipi_dsi_host *host, ret =mipi_dsi_device_add (dsi);if (ret) { -drm_err (host,"failed to add DSI device %d\n" , ret); +dev_err (host->dev,"failed to add DSI device %d\n" , ret);kfree (dsi);return ERR_PTR (ret); }
Signature · 1 line
2.39.5
PATCH 2/5 drm/rockchip: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaThe expectation is that the struct drm_device based logging helpers get passed an actual struct drm_device pointer rather than some random struct pointer where you can dereference the ->dev member.
Convert drm_err(hdmi, ...) to dev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.
---
Looks like it's possible to hunt down the struct drm_device in most of these cases, if that's desired. This was the simplest change.
--- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 16 ++++++++-------- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-)
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +8 -8
@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }
@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }
@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }
@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); } static int
@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }
@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }
drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8 -8
@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }
@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }
@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }
@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }
@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }
@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }
Signature · 1 line
2.39.5
PATCH 3/5 drm/sched: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaThe expectation is that the struct drm_device based logging helpers get passed an actual struct drm_device pointer rather than some random struct pointer where you can dereference the ->dev member.
Convert drm_err(sched, ...) to dev_err(sched->dev, ...) and similar. This matches current usage, as struct drm_device is not available, but drops "[drm]" or "[drm] *ERROR*" prefix from logging.
Unfortunately, there's no dev_WARN_ON(), so the conversion is not exactly the same.
---
--- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-)
drivers/gpu/drm/scheduler/sched_entity.c +1 -1
@@ -92,7 +92,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,* the lowest priority available. */ if (entity->priority >= sched_list[0 ]->num_rqs) { -drm_err (sched_list[0 ],"entity with out-of-bounds priority:%u num_rqs:%u\n" , +dev_err (sched_list[0 ]->dev,"entity with out-of-bounds priority:%u num_rqs:%u\n" , entity->priority, sched_list[0 ]->num_rqs); entity->priority =max_t (s32, (s32 ) sched_list[0 ]->num_rqs -1 , (s32 )DRM_SCHED_PRIORITY_KERNEL );
drivers/gpu/drm/scheduler/sched_main.c +11 -9
@@ -103,9 +103,9 @@ static u32 drm_sched_available_credits(struct drm_gpu_scheduler *sched) {u32 credits; -drm_WARN_ON (sched,check_sub_overflow (sched->credit_limit, -atomic_read (&sched->credit_count), - &credits)); +WARN_ON (check_sub_overflow (sched->credit_limit, +atomic_read (&sched->credit_count), + &credits));return credits; }
@@ -130,9 +130,11 @@ static bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,/* If a job exceeds the credit limit, truncate it to the credit limit * itself to guarantee forward progress. */ -if (drm_WARN (sched, s_job->credits > sched->credit_limit, -"Jobs may not exceed the credit limit, truncate.\n" )) +if (s_job->credits > sched->credit_limit) { +dev_WARN (sched->dev, +"Jobs may not exceed the credit limit, truncate.\n" ); s_job->credits = sched->credit_limit; + }return drm_sched_available_credits (sched) >= s_job->credits; }
@@ -790,7 +792,7 @@ int drm_sched_job_init(struct drm_sched_job *job,* or worse--a blank screen--leave a trail in the * logs, so this can be debugged easier. */ -drm_err (job->sched,"%s: entity has no rq!\n" , __func__); +dev_err (job->sched->dev,"%s: entity has no rq!\n" , __func__);return -ENOENT ; }
@@ -1280,7 +1282,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,if (num_rqs >DRM_SCHED_PRIORITY_COUNT ) {/* This is a gross violation--tell drivers what the problem is. */ -drm_err (sched,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , +dev_err (sched->dev,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , __func__);return -EINVAL ; }else if (sched->sched_rq) {
@@ -1288,7 +1290,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,* fine-tune their DRM calling order, and return all * is good. */ -drm_warn (sched,"%s: scheduler already initialized!\n" , __func__); +dev_warn (sched->dev,"%s: scheduler already initialized!\n" , __func__);return 0 ; }
@@ -1343,7 +1345,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, Out_check_own:if (sched->own_submit_wq)destroy_workqueue (sched->submit_wq); -drm_err (sched,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__); +dev_err (sched->dev,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__);return -ENOMEM ; }EXPORT_SYMBOL (drm_sched_init);
Signature · 1 line
2.39.5
PATCH 4/5 drm/print: Include drm_device.h
In reply to Jani NikulaFrom: Gustavo Sousa <[email protected]>
The header drm_print.h uses members of struct drm_device pointers, as such, it should include drm_device.h to let the compiler know the full type definition.
Without such include, users of drm_print.h that don't explicitly need drm_device.h would bump into build errors and be forced to include the latter.
---
Including here as a dependency. May be merged independently.
--- include/drm/drm_print.h | 1 + 1 file changed, 1 insertion(+)
include/drm/drm_print.h +1 -0
@@ -32,6 +32,7 @@#include <linux/dynamic_debug.h> #include <drm/drm.h> +#include <drm/drm_device.h> struct debugfs_regset32 ;struct drm_device ;
Signature · 1 line
2.39.5
PATCH 5/5 drm/print: require struct drm_device for drm_err() and friends
In reply to Jani NikulaThe expectation is that the struct drm_device based logging helpers get passed an actual struct drm_device pointer rather than some random struct pointer where you can dereference the ->dev member.
Add a static inline helper to convert struct drm_device to struct device, with the main benefit being the type checking of the macro argument.
As a side effect, this also reduces macro argument double references.
--- include/drm/drm_print.h | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-)
include/drm/drm_print.h +23 -18
@@ -584,9 +584,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,* Prefer drm_device based logging over device or prink based logging. */ +/* Helper to enforce struct drm_device type */ +static inline struct device *__drm_to_dev (const struct drm_device *drm) +{ +return drm ? drm->dev :NULL ; +} +/* Helper for struct drm_device based logging. */ #define __drm_printk (drm, level, type, fmt, ...) \ - dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__) + dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)#define drm_info (drm, fmt, ...) \
@@ -620,25 +626,25 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,#define drm_dbg_core (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__) -#define drm_dbg_driver (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__) +#define drm_dbg_driver (drm, fmt, ...) \ + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)#define drm_dbg_kms (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)#define drm_dbg_prime (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)#define drm_dbg_atomic (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)#define drm_dbg_vbl (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)#define drm_dbg_state (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)#define drm_dbg_lease (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)#define drm_dbg_dp (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)#define drm_dbg_drmres (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)#define drm_dbg (drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
@@ -727,10 +733,9 @@ void __drm_err(const char *format, ...);#define __DRM_DEFINE_DBG_RATELIMITED (category, drm, fmt, ...) \ ({ \ static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\ - const struct drm_device *drm_ = (drm); \ \ if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \ - drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \ + drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \ })#define drm_dbg_ratelimited (drm, fmt, ...) \
@@ -752,13 +757,13 @@ void __drm_err(const char *format, ...);/* Helper for struct drm_device based WARNs */ #define drm_WARN(drm, condition, format, arg...) \ WARN(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) + dev_driver_string(__drm_to_dev(drm)), \ + dev_name(__drm_to_dev(drm)), ## arg) #define drm_WARN_ONCE(drm, condition, format, arg...) \ WARN_ONCE(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) + dev_driver_string(__drm_to_dev(drm)), \ + dev_name(__drm_to_dev(drm)), ## arg)#define drm_WARN_ON (drm, x) \ drm_WARN((drm), (x), "%s", \
Signature · 1 line
2.39.5
Re: [PATCH 4/5] drm/print: Include drm_device.h
In reply to Jani NikulaQuoted 6 lines · Jani Nikula
From: Gustavo Sousa <[email protected]>
The header
drm_print.huses members of structdrm_devicepointers, as such, it should includedrm_device.hto let the compiler know the full type definition.
Quoted 6 lines
Without such include, users of
drm_print.hthat don't explicitly needdrm_device.hwould bump into build errors and be forced to include the latter.Signed-off-by Gustavo Sousa <[email protected]>Reviewed-by Jani Nikula <[email protected]>
This posting should have had
but obviously not needed if the original [1] is merged instead.
[1] https://lore.kernel.org/r/[email protected]
Quoted 20 lines
---
Including here as a dependency. May be merged independently.
--- include/drm/drm_print.h | 1 + 1 file changed, 1 insertion(+)include/drm/drm_print.h +1
-0@@ -32,6 +32,7 @@#include <linux/dynamic_debug.h> #include <drm/drm.h> +#include <drm/drm_device.h> struct debugfs_regset32 ;struct drm_device ;
Signature · 1 line
Jani Nikula, Intel
Patchwork
CI✗ Fi.CI.SPARSE: warning for drm: strict type checking for drm_device based logging helpers
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm: strict type checking for drm_device based logging helpers
URL : https://patchwork.freedesktop.org/series/143893/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
Patchwork
CI✓ i915.CI.BAT: success for drm: strict type checking for drm_device based logging helpers
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm: strict type checking for drm_device based logging helpers
URL : https://patchwork.freedesktop.org/series/143893/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_16009 -> Patchwork_143893v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/index.html
Participating hosts (39 -> 38)
------------------------------
Missing (1): fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_143893v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_pm_rpm@module-reload:
- bat-dg1-7: [PASS][1] -> [FAIL][2] ([i915#13401])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-dg1-7/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-dg1-7/igt@[email protected]
* igt@i915_selftest@live:
- bat-arlh-3: [PASS][3] -> [DMESG-FAIL][4] ([i915#12061] / [i915#12435])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-arlh-3/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-arlh-3/igt@[email protected]
* igt@i915_selftest@live@workarounds:
- bat-arlh-3: [PASS][5] -> [DMESG-FAIL][6] ([i915#12061])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-arlh-3/igt@i915_selftest@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-arlh-3/igt@i915_selftest@[email protected]
- bat-arls-5: [PASS][7] -> [DMESG-FAIL][8] ([i915#12061]) +1 other test dmesg-fail
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-arls-5/igt@i915_selftest@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-arls-5/igt@i915_selftest@[email protected]
- bat-mtlp-6: [PASS][9] -> [DMESG-FAIL][10] ([i915#12061]) +1 other test dmesg-fail
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-mtlp-6/igt@i915_selftest@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-mtlp-6/igt@i915_selftest@[email protected]
* igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
- bat-dg2-11: [PASS][11] -> [SKIP][12] ([i915#9197]) +3 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-dg2-11/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-dg2-11/igt@[email protected]
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-rplp-1: [ABORT][13] ([i915#13399]) -> [PASS][14] +1 other test pass
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-rplp-1/igt@[email protected]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-rplp-1/igt@[email protected]
* igt@i915_selftest@live@workarounds:
- {bat-arls-6}: [DMESG-FAIL][15] ([i915#12061]) -> [PASS][16] +1 other test pass
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/bat-arls-6/igt@i915_selftest@[email protected]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/bat-arls-6/igt@i915_selftest@[email protected]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435
[i915#13399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13399
[i915#13401]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13401
[i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
Build changes
-------------
* Linux: CI_DRM_16009 -> Patchwork_143893v1
CI-20190529: 20190529
CI_DRM_16009: 7ea93d7bd75efd69dfb3c3400705990d5b42dec5 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8207: 9f36f9f9e8825a67b762630c2b31628ddcda5c10 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_143893v1: 7ea93d7bd75efd69dfb3c3400705990d5b42dec5 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/index.html
Re: [PATCH 4/5] drm/print: Include drm_device.h
In reply to Jani NikulaQuoting Jani Nikula (2025-01-23 12:14:31-03:00)
Quoted 14 lines · Jani Nikula
Quoted 6 lines
From: Gustavo Sousa <[email protected]>
The header
drm_print.huses members of structdrm_devicepointers, as such, it should includedrm_device.hto let the compiler know the full type definition.Quoted 6 lines
Without such include, users of
drm_print.hthat don't explicitly needdrm_device.hwould bump into build errors and be forced to include the latter.Signed-off-by Gustavo Sousa <[email protected]>Reviewed-by Jani Nikula <[email protected]>
Quoted 8 lines
This posting should have had
Signed-off-by Jani Nikula <[email protected]>but obviously not needed if the original [1] is merged instead.
Hm. Since that's in the upper drm layer, I thought I was not supposed to merge it myself.
Am I? In that case, is it okay to merge it via drm-intel-next?
--
Gustavo Sousa
Quoted 24 lines
Quoted 21 lines
---
Including here as a dependency. May be merged independently.
--- include/drm/drm_print.h | 1 + 1 file changed, 1 insertion(+)include/drm/drm_print.h +1
-0@@ -32,6 +32,7 @@#include <linux/dynamic_debug.h> #include <drm/drm.h> +#include <drm/drm_device.h> struct debugfs_regset32 ;struct drm_device ;Signature · 1 line
Jani Nikula, Intel
Re: [PATCH 3/5] drm/sched: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaQuoted 4 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.
Quoted 8 lines
Convert
drm_err(sched, ...)todev_err(sched->dev, ...)and similar. This matches current usage, as structdrm_deviceis not available, but drops "[drm]" or "[drm] *ERROR*" prefix from logging.Unfortunately, there's no
dev_WARN_ON(), so the conversion is not exactly the same.Signed-off-by Jani Nikula <[email protected]>
For the two previous patches just dev_ makes sense since they're just platform drivers, but for drm/sched I wonder whether it wouldn't be better to switch from struct device * to struct drm_device * instead. I guess might be best to leave that decision to scheduler folks.
Anyway on the series and with that caveat:
Quoted 96 lines
---
Cc Matthew Brost <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Philipp Stanner <[email protected]>Cc "Christian König" <[email protected]>--- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-)drivers/gpu/drm/scheduler/sched_entity.c +1
-1@@ -92,7 +92,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,* the lowest priority available. */ if (entity->priority >= sched_list[0 ]->num_rqs) { -drm_err (sched_list[0 ],"entity with out-of-bounds priority:%u num_rqs:%u\n" , +dev_err (sched_list[0 ]->dev,"entity with out-of-bounds priority:%u num_rqs:%u\n" , entity->priority, sched_list[0 ]->num_rqs); entity->priority =max_t (s32, (s32 ) sched_list[0 ]->num_rqs -1 , (s32 )DRM_SCHED_PRIORITY_KERNEL );drivers/gpu/drm/scheduler/sched_main.c +11
-9@@ -103,9 +103,9 @@ static u32 drm_sched_available_credits(struct drm_gpu_scheduler *sched) {u32 credits; -drm_WARN_ON (sched,check_sub_overflow (sched->credit_limit, -atomic_read (&sched->credit_count), - &credits)); +WARN_ON (check_sub_overflow (sched->credit_limit, +atomic_read (&sched->credit_count), + &credits));return credits; }@@ -130,9 +130,11 @@ static bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,/* If a job exceeds the credit limit, truncate it to the credit limit * itself to guarantee forward progress. */ -if (drm_WARN (sched, s_job->credits > sched->credit_limit, -"Jobs may not exceed the credit limit, truncate.\n" )) +if (s_job->credits > sched->credit_limit) { +dev_WARN (sched->dev, +"Jobs may not exceed the credit limit, truncate.\n" ); s_job->credits = sched->credit_limit; + }return drm_sched_available_credits (sched) >= s_job->credits; }@@ -790,7 +792,7 @@ int drm_sched_job_init(struct drm_sched_job *job,* or worse--a blank screen--leave a trail in the * logs, so this can be debugged easier. */ -drm_err (job->sched,"%s: entity has no rq!\n" , __func__); +dev_err (job->sched->dev,"%s: entity has no rq!\n" , __func__);return -ENOENT ; }@@ -1280,7 +1282,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,if (num_rqs >DRM_SCHED_PRIORITY_COUNT ) {/* This is a gross violation--tell drivers what the problem is. */ -drm_err (sched,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , +dev_err (sched->dev,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , __func__);return -EINVAL ; }else if (sched->sched_rq) {@@ -1288,7 +1290,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,* fine-tune their DRM calling order, and return all * is good. */ -drm_warn (sched,"%s: scheduler already initialized!\n" , __func__); +dev_warn (sched->dev,"%s: scheduler already initialized!\n" , __func__);return 0 ; }@@ -1343,7 +1345,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, Out_check_own:if (sched->own_submit_wq)destroy_workqueue (sched->submit_wq); -drm_err (sched,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__); +dev_err (sched->dev,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__);return -ENOMEM ; }EXPORT_SYMBOL (drm_sched_init);Signature · 1 line
2.39.5
Signature · 3 lines
Simona Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
Patchwork
CI✗ i915.CI.Full: failure for drm: strict type checking for drm_device based logging helpers
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm: strict type checking for drm_device based logging helpers
URL : https://patchwork.freedesktop.org/series/143893/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_16009_full -> Patchwork_143893v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_143893v1_full absolutely need to be verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_143893v1_full, please notify your bug team ([email protected]) to allow them to document this new failure mode, which will reduce false positives in CI.
Participating hosts (11 -> 11)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_143893v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_eio@in-flight-internal-immediate:
- shard-mtlp: [PASS][1] -> [ABORT][2] +1 other test abort
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-8/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-7/igt@[email protected]
#### Warnings ####
* igt@i915_pm_rpm@system-suspend:
- shard-glk: [INCOMPLETE][3] ([i915#12797]) -> [INCOMPLETE][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-glk3/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk3/igt@[email protected]
Known issues
------------
Here are the changes found in Patchwork_143893v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@blit-reloc-purge-cache:
- shard-dg1: NOTRUN -> [SKIP][5] ([i915#8411]) +2 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@api_intel_bb@crc32:
- shard-dg1: NOTRUN -> [SKIP][6] ([i915#6230])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@debugfs_test@basic-hwmon:
- shard-tglu: NOTRUN -> [SKIP][7] ([i915#9318])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@device_reset@cold-reset-bound:
- shard-mtlp: NOTRUN -> [SKIP][8] ([i915#11078])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@device_reset@unbind-cold-reset-rebind:
- shard-dg1: NOTRUN -> [SKIP][9] ([i915#11078])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@device_reset@unbind-reset-rebind:
- shard-tglu: [PASS][10] -> [ABORT][11] ([i915#12817] / [i915#5507])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-tglu-8/igt@[email protected]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-2/igt@[email protected]
* igt@drm_fdinfo@isolation@rcs0:
- shard-mtlp: NOTRUN -> [SKIP][12] ([i915#8414]) +6 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@drm_fdinfo@[email protected]
* igt@drm_fdinfo@isolation@vecs0:
- shard-dg1: NOTRUN -> [SKIP][13] ([i915#8414]) +7 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@drm_fdinfo@[email protected]
* igt@drm_fdinfo@virtual-busy-idle-all:
- shard-dg2: NOTRUN -> [SKIP][14] ([i915#8414])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gem_basic@multigpu-create-close:
- shard-rkl: NOTRUN -> [SKIP][15] ([i915#7697])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@gem_ccs@block-multicopy-compressed:
- shard-dg1: NOTRUN -> [SKIP][16] ([i915#9323])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@gem_close_race@multigpu-basic-threads:
- shard-dg1: NOTRUN -> [SKIP][17] ([i915#7697])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_create@busy-create:
- shard-rkl: NOTRUN -> [DMESG-WARN][18] ([i915#12964]) +12 other tests dmesg-warn
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
* igt@gem_create@create-ext-cpu-access-sanity-check:
- shard-rkl: NOTRUN -> [SKIP][19] ([i915#6335])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@gem_create@create-ext-set-pat:
- shard-rkl: NOTRUN -> [SKIP][20] ([i915#8562])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][21] ([i915#8562])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@gem_ctx_persistence@heartbeat-many:
- shard-mtlp: NOTRUN -> [SKIP][22] ([i915#8555]) +1 other test skip
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@gem_ctx_persistence@heartbeat-stop:
- shard-dg1: NOTRUN -> [SKIP][23] ([i915#8555]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@gem_ctx_persistence@smoketest:
- shard-snb: NOTRUN -> [SKIP][24] ([i915#1099]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb2/igt@[email protected]
* igt@gem_ctx_sseu@engines:
- shard-dg1: NOTRUN -> [SKIP][25] ([i915#280])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_ctx_sseu@invalid-sseu:
- shard-dg2: NOTRUN -> [SKIP][26] ([i915#280]) +1 other test skip
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@gem_ctx_sseu@mmap-args:
- shard-tglu-1: NOTRUN -> [SKIP][27] ([i915#280])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@gem_eio@hibernate:
- shard-rkl: NOTRUN -> [ABORT][28] ([i915#7975] / [i915#8213])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@gem_eio@in-flight-suspend:
- shard-dg1: [PASS][29] -> [DMESG-WARN][30] ([i915#4391] / [i915#4423])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg1-12/igt@[email protected]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-14/igt@[email protected]
* igt@gem_exec_balancer@bonded-dual:
- shard-mtlp: NOTRUN -> [SKIP][31] ([i915#4771])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@gem_exec_balancer@invalid-bonds:
- shard-dg2: NOTRUN -> [SKIP][32] ([i915#4036])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gem_exec_balancer@parallel-bb-first:
- shard-tglu-1: NOTRUN -> [SKIP][33] ([i915#4525])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@gem_exec_balancer@parallel-keep-submit-fence:
- shard-tglu: NOTRUN -> [SKIP][34] ([i915#4525])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@gem_exec_big@single:
- shard-tglu-1: NOTRUN -> [ABORT][35] ([i915#11713])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@gem_exec_capture@capture:
- shard-mtlp: NOTRUN -> [FAIL][36] ([i915#11965]) +1 other test fail
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@gem_exec_capture@capture@vecs0-lmem0:
- shard-dg1: NOTRUN -> [FAIL][37] ([i915#11965]) +2 other tests fail
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@gem_exec_capture@[email protected]
* igt@gem_exec_fence@submit:
- shard-mtlp: NOTRUN -> [SKIP][38] ([i915#4812])
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@gem_exec_fence@submit67:
- shard-dg2: NOTRUN -> [SKIP][39] ([i915#4812]) +1 other test skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gem_exec_flush@basic-uc-prw-default:
- shard-dg2: NOTRUN -> [SKIP][40] ([i915#3539])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gem_exec_flush@basic-wb-ro-before-default:
- shard-dg1: NOTRUN -> [SKIP][41] ([i915#3539] / [i915#4852]) +2 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_exec_flush@basic-wb-set-default:
- shard-dg2: NOTRUN -> [SKIP][42] ([i915#3539] / [i915#4852])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gem_exec_reloc@basic-concurrent0:
- shard-dg1: NOTRUN -> [SKIP][43] ([i915#3281]) +12 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_exec_reloc@basic-gtt-cpu:
- shard-mtlp: NOTRUN -> [SKIP][44] ([i915#3281]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@gem_exec_reloc@basic-gtt-noreloc:
- shard-dg2: NOTRUN -> [SKIP][45] ([i915#3281]) +2 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-10/igt@[email protected]
* igt@gem_exec_reloc@basic-scanout:
- shard-rkl: NOTRUN -> [SKIP][46] ([i915#3281]) +7 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@gem_exec_schedule@preempt-queue:
- shard-dg1: NOTRUN -> [SKIP][47] ([i915#4812]) +2 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_exec_suspend@basic-s0@smem:
- shard-dg2: [PASS][48] -> [INCOMPLETE][49] ([i915#11441] / [i915#13304]) +1 other test incomplete
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-5/igt@gem_exec_suspend@[email protected]
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@gem_exec_suspend@[email protected]
* igt@gem_fenced_exec_thrash@no-spare-fences-busy:
- shard-dg1: NOTRUN -> [SKIP][50] ([i915#4860]) +5 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
- shard-mtlp: NOTRUN -> [SKIP][51] ([i915#4860])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@gem_huc_copy@huc-copy:
- shard-rkl: NOTRUN -> [SKIP][52] ([i915#2190])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@gem_lmem_swapping@heavy-verify-random-ccs:
- shard-dg1: NOTRUN -> [SKIP][53] ([i915#12193])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_lmem_swapping@heavy-verify-random-ccs@lmem0:
- shard-dg1: NOTRUN -> [SKIP][54] ([i915#4565])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@gem_lmem_swapping@[email protected]
* igt@gem_lmem_swapping@parallel-multi:
- shard-mtlp: NOTRUN -> [SKIP][55] ([i915#4613]) +1 other test skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@gem_lmem_swapping@random:
- shard-rkl: NOTRUN -> [SKIP][56] ([i915#4613]) +1 other test skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@gem_lmem_swapping@random-engines:
- shard-glk: NOTRUN -> [SKIP][57] ([i915#4613])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk6/igt@[email protected]
* igt@gem_lmem_swapping@smem-oom:
- shard-tglu: NOTRUN -> [SKIP][58] ([i915#4613]) +1 other test skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg1: [PASS][59] -> [TIMEOUT][60] ([i915#5493]) +1 other test timeout
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg1-14/igt@gem_lmem_swapping@[email protected]
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-17/igt@gem_lmem_swapping@[email protected]
* igt@gem_lmem_swapping@verify:
- shard-tglu-1: NOTRUN -> [SKIP][61] ([i915#4613]) +1 other test skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@gem_mmap_gtt@pf-nonblock:
- shard-dg2: NOTRUN -> [SKIP][62] ([i915#4077]) +8 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gem_mmap_wc@copy:
- shard-mtlp: NOTRUN -> [SKIP][63] ([i915#4083])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@gem_mmap_wc@write-cpu-read-wc:
- shard-dg2: NOTRUN -> [SKIP][64] ([i915#4083]) +3 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
* igt@gem_mmap_wc@write-read:
- shard-dg1: NOTRUN -> [SKIP][65] ([i915#4083]) +5 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_partial_pwrite_pread@reads-display:
- shard-mtlp: NOTRUN -> [SKIP][66] ([i915#3282]) +1 other test skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@gem_partial_pwrite_pread@reads-uncached:
- shard-rkl: NOTRUN -> [SKIP][67] ([i915#3282]) +3 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@gem_pread@snoop:
- shard-dg2: NOTRUN -> [SKIP][68] ([i915#3282]) +3 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@gem_pwrite@basic-exhaustion:
- shard-tglu-1: NOTRUN -> [WARN][69] ([i915#2658])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
- shard-dg1: NOTRUN -> [SKIP][70] ([i915#3282]) +3 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted:
- shard-rkl: NOTRUN -> [TIMEOUT][71] ([i915#12964])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@gem_pxp@hw-rejects-pxp-buffer:
- shard-rkl: NOTRUN -> [TIMEOUT][72] ([i915#12917] / [i915#12964]) +2 other tests timeout
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@gem_pxp@regular-baseline-src-copy-readible:
- shard-rkl: NOTRUN -> [SKIP][73] ([i915#4270])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
* igt@gem_pxp@reject-modify-context-protection-off-2:
- shard-dg1: NOTRUN -> [SKIP][74] ([i915#4270]) +3 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@gem_pxp@reject-modify-context-protection-off-3:
- shard-dg2: NOTRUN -> [SKIP][75] ([i915#4270]) +2 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gem_render_copy@linear-to-vebox-yf-tiled:
- shard-dg2: NOTRUN -> [SKIP][76] ([i915#5190] / [i915#8428]) +2 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
* igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
- shard-mtlp: NOTRUN -> [SKIP][77] ([i915#8428])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@gem_set_tiling_vs_gtt:
- shard-dg1: NOTRUN -> [SKIP][78] ([i915#4079]) +1 other test skip
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@gem_set_tiling_vs_gtt.html
* igt@gem_tiled_pread_basic:
- shard-dg2: NOTRUN -> [SKIP][79] ([i915#4079])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@gem_tiled_pread_basic.html
* igt@gem_unfence_active_buffers:
- shard-dg2: NOTRUN -> [SKIP][80] ([i915#4879])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@gem_unfence_active_buffers.html
* igt@gem_userptr_blits@access-control:
- shard-rkl: NOTRUN -> [SKIP][81] ([i915#3297])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@gem_userptr_blits@dmabuf-sync:
- shard-dg1: NOTRUN -> [SKIP][82] ([i915#3297])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gem_userptr_blits@map-fixed-invalidate-overlap:
- shard-dg1: NOTRUN -> [SKIP][83] ([i915#3297] / [i915#4880])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@gem_userptr_blits@unsync-unmap-cycles:
- shard-mtlp: NOTRUN -> [SKIP][84] ([i915#3297]) +2 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@gem_workarounds@reset-fd:
- shard-mtlp: [PASS][85] -> [ABORT][86] ([i915#13193]) +1 other test abort
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-4/igt@[email protected]
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-7/igt@[email protected]
* igt@gen7_exec_parse@bitmasks:
- shard-dg2: NOTRUN -> [SKIP][87] +10 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@gen9_exec_parse@bb-secure:
- shard-tglu-1: NOTRUN -> [SKIP][88] ([i915#2527] / [i915#2856]) +1 other test skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@gen9_exec_parse@bb-start-cmd:
- shard-dg1: NOTRUN -> [SKIP][89] ([i915#2527]) +4 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@gen9_exec_parse@bb-start-out:
- shard-rkl: NOTRUN -> [SKIP][90] ([i915#2527]) +2 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@gen9_exec_parse@unaligned-access:
- shard-tglu: NOTRUN -> [SKIP][91] ([i915#2527] / [i915#2856]) +1 other test skip
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@gen9_exec_parse@unaligned-jump:
- shard-mtlp: NOTRUN -> [SKIP][92] ([i915#2856])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@gen9_exec_parse@valid-registers:
- shard-dg2: NOTRUN -> [SKIP][93] ([i915#2856]) +2 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@i915_fb_tiling:
- shard-dg1: NOTRUN -> [SKIP][94] ([i915#4881])
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@i915_fb_tiling.html
* igt@i915_module_load@reload-no-display:
- shard-tglu-1: NOTRUN -> [DMESG-WARN][95] ([i915#13029])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@i915_module_load@reload-with-fault-injection:
- shard-snb: NOTRUN -> [ABORT][96] ([i915#9820])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb7/igt@[email protected]
- shard-tglu: [PASS][97] -> [ABORT][98] ([i915#12817] / [i915#9820])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-tglu-10/igt@[email protected]
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-9/igt@[email protected]
* igt@i915_pm_freq_api@freq-suspend:
- shard-rkl: NOTRUN -> [SKIP][99] ([i915#8399]) +1 other test skip
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][100] ([i915#8399])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@i915_pm_rps@basic-api:
- shard-dg2: NOTRUN -> [SKIP][101] ([i915#11681] / [i915#6621])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@i915_pm_sseu@full-enable:
- shard-mtlp: NOTRUN -> [SKIP][102] ([i915#8437])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-3/igt@[email protected]
* igt@i915_query@test-query-geometry-subslices:
- shard-dg1: NOTRUN -> [SKIP][103] ([i915#5723])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@i915_suspend@basic-s3-without-i915:
- shard-tglu-1: NOTRUN -> [INCOMPLETE][104] ([i915#7443])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_addfb_basic@framebuffer-vs-set-tiling:
- shard-dg2: NOTRUN -> [SKIP][105] ([i915#4212]) +1 other test skip
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-a-hdmi-a-3-y-rc-ccs-cc:
- shard-dg1: NOTRUN -> [SKIP][106] ([i915#8709]) +7 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-a-hdmi-a-3-y-rc-ccs-cc.html
* igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-d-edp-1-4-mc-ccs:
- shard-mtlp: NOTRUN -> [SKIP][107] ([i915#8709]) +7 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-d-edp-1-4-mc-ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-4-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][108] ([i915#8709]) +7 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-8/igt@kms_async_flips@[email protected]
* igt@kms_atomic@plane-primary-overlay-mutable-zpos:
- shard-dg2: NOTRUN -> [SKIP][109] ([i915#9531])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][110] ([i915#9531])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-4:
- shard-dg1: [PASS][111] -> [FAIL][112] ([i915#5956]) +1 other test fail
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg1-14/igt@kms_atomic_transition@[email protected]
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-17/igt@kms_atomic_transition@[email protected]
* igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
- shard-dg1: NOTRUN -> [SKIP][113] ([i915#1769] / [i915#3555])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
- shard-snb: NOTRUN -> [SKIP][114] ([i915#1769])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1:
- shard-mtlp: [PASS][115] -> [FAIL][116] ([i915#11808] / [i915#5956]) +1 other test fail
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-2/igt@kms_atomic_transition@[email protected]
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-1/igt@kms_atomic_transition@[email protected]
* igt@kms_big_fb@4-tiled-32bpp-rotate-180:
- shard-rkl: NOTRUN -> [SKIP][117] ([i915#5286]) +4 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
* igt@kms_big_fb@4-tiled-8bpp-rotate-90:
- shard-dg1: NOTRUN -> [SKIP][118] ([i915#4538] / [i915#5286]) +8 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_big_fb@4-tiled-addfb-size-offset-overflow:
- shard-dg1: NOTRUN -> [SKIP][119] ([i915#5286])
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0:
- shard-tglu: NOTRUN -> [SKIP][120] ([i915#5286]) +2 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-tglu-1: NOTRUN -> [SKIP][121] ([i915#5286]) +2 other tests skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-mtlp: [PASS][122] -> [DMESG-FAIL][123] ([i915#11627] / [i915#13314])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-7/igt@[email protected]
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@kms_big_fb@x-tiled-16bpp-rotate-90:
- shard-rkl: NOTRUN -> [SKIP][124] ([i915#3638]) +2 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@kms_big_fb@y-tiled-8bpp-rotate-90:
- shard-dg1: NOTRUN -> [SKIP][125] ([i915#3638]) +1 other test skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
- shard-rkl: NOTRUN -> [SKIP][126] +14 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_big_fb@yf-tiled-64bpp-rotate-0:
- shard-dg2: NOTRUN -> [SKIP][127] ([i915#4538] / [i915#5190]) +8 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_big_fb@yf-tiled-64bpp-rotate-90:
- shard-dg1: NOTRUN -> [SKIP][128] ([i915#4538]) +6 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_big_fb@yf-tiled-8bpp-rotate-270:
- shard-tglu: NOTRUN -> [SKIP][129] +38 other tests skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_big_fb@yf-tiled-addfb-size-overflow:
- shard-mtlp: NOTRUN -> [SKIP][130] ([i915#6187])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-3:
- shard-dg1: NOTRUN -> [SKIP][131] ([i915#4423] / [i915#6095]) +1 other test skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@kms_ccs@[email protected]
* igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-1:
- shard-tglu: NOTRUN -> [SKIP][132] ([i915#6095]) +39 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@kms_ccs@[email protected]
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][133] ([i915#6095]) +135 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-18/igt@kms_ccs@[email protected]
* igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][134] ([i915#10307] / [i915#10434] / [i915#6095]) +2 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-8/igt@kms_ccs@[email protected]
* igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][135] ([i915#10307] / [i915#6095]) +155 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-7/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs:
- shard-rkl: NOTRUN -> [SKIP][136] ([i915#12313])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][137] ([i915#12313])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][138] ([i915#6095]) +87 other tests skip
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-c-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][139] ([i915#6095]) +14 other tests skip
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs:
- shard-dg2: NOTRUN -> [SKIP][140] ([i915#12313]) +2 other tests skip
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-rkl: NOTRUN -> [SKIP][141] ([i915#12805])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-1:
- shard-tglu-1: NOTRUN -> [SKIP][142] ([i915#6095]) +29 other tests skip
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][143] ([i915#6095]) +17 other tests skip
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@kms_ccs@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][144] ([i915#12313]) +1 other test skip
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
- shard-dg1: NOTRUN -> [SKIP][145] ([i915#12313]) +2 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_cdclk@mode-transition:
- shard-rkl: NOTRUN -> [SKIP][146] ([i915#3742])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@kms_cdclk@plane-scaling@pipe-c-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][147] ([i915#4087]) +4 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@kms_cdclk@[email protected]
* igt@kms_chamelium_color@ctm-blue-to-red:
- shard-mtlp: NOTRUN -> [SKIP][148] +5 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@kms_chamelium_color@ctm-negative:
- shard-glk: NOTRUN -> [SKIP][149] +73 other tests skip
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk6/igt@[email protected]
* igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k:
- shard-dg2: NOTRUN -> [SKIP][150] ([i915#11151] / [i915#7828]) +4 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_chamelium_edid@dp-mode-timings:
- shard-mtlp: NOTRUN -> [SKIP][151] ([i915#11151] / [i915#7828]) +2 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_chamelium_frames@dp-crc-fast:
- shard-tglu-1: NOTRUN -> [SKIP][152] ([i915#11151] / [i915#7828]) +2 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_chamelium_frames@dp-crc-single:
- shard-dg1: NOTRUN -> [SKIP][153] ([i915#11151] / [i915#7828]) +11 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_chamelium_hpd@hdmi-hpd-storm-disable:
- shard-tglu: NOTRUN -> [SKIP][154] ([i915#11151] / [i915#7828]) +2 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_chamelium_hpd@vga-hpd-fast:
- shard-rkl: NOTRUN -> [SKIP][155] ([i915#11151] / [i915#7828]) +9 other tests skip
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_color@deep-color:
- shard-dg2: [PASS][156] -> [SKIP][157] ([i915#3555])
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-10/igt@[email protected]
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_content_protection@atomic-dpms:
- shard-tglu: NOTRUN -> [SKIP][158] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_content_protection@atomic-dpms@pipe-a-dp-4:
- shard-dg2: NOTRUN -> [TIMEOUT][159] ([i915#7173])
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-10/igt@kms_content_protection@[email protected]
* igt@kms_content_protection@dp-mst-type-0:
- shard-tglu: NOTRUN -> [SKIP][160] ([i915#3116] / [i915#3299])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_content_protection@dp-mst-type-1:
- shard-tglu-1: NOTRUN -> [SKIP][161] ([i915#3116] / [i915#3299])
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
- shard-dg2: NOTRUN -> [SKIP][162] ([i915#3299]) +1 other test skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_content_protection@lic-type-1:
- shard-mtlp: NOTRUN -> [SKIP][163] ([i915#6944] / [i915#9424]) +1 other test skip
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
- shard-snb: NOTRUN -> [INCOMPLETE][164] ([i915#8816])
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb7/igt@[email protected]
- shard-dg1: NOTRUN -> [SKIP][165] ([i915#9424])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_content_protection@mei-interface:
- shard-dg2: NOTRUN -> [SKIP][166] ([i915#9424])
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_content_protection@type1:
- shard-rkl: NOTRUN -> [SKIP][167] ([i915#7118] / [i915#9424]) +1 other test skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_content_protection@uevent:
- shard-tglu-1: NOTRUN -> [SKIP][168] ([i915#6944] / [i915#7116] / [i915#7118] / [i915#9424])
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
- shard-dg1: NOTRUN -> [SKIP][169] ([i915#7116] / [i915#9424])
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_cursor_crc@cursor-offscreen-32x32:
- shard-tglu: NOTRUN -> [SKIP][170] ([i915#3555]) +3 other tests skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-rkl: NOTRUN -> [SKIP][171] ([i915#13049]) +2 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-mtlp: NOTRUN -> [SKIP][172] ([i915#13049]) +1 other test skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2: NOTRUN -> [SKIP][173] ([i915#13049])
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
- shard-tglu-1: NOTRUN -> [SKIP][174] ([i915#13049])
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_cursor_crc@cursor-sliding-256x85:
- shard-rkl: NOTRUN -> [DMESG-WARN][175] ([i915#12917] / [i915#12964])
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-dg1: NOTRUN -> [SKIP][176] ([i915#13049]) +2 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
- shard-mtlp: NOTRUN -> [SKIP][177] ([i915#9809])
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
- shard-dg2: NOTRUN -> [SKIP][178] ([i915#13046] / [i915#5354]) +3 other tests skip
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-dg1: NOTRUN -> [SKIP][179] ([i915#4103] / [i915#4213])
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-rkl: NOTRUN -> [SKIP][180] ([i915#9067])
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
- shard-tglu: NOTRUN -> [SKIP][181] ([i915#4103])
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
- shard-dg2: NOTRUN -> [SKIP][182] ([i915#4103] / [i915#4213])
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-snb: NOTRUN -> [FAIL][183] ([i915#12170])
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb5/igt@[email protected]
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-1:
- shard-snb: NOTRUN -> [FAIL][184] ([i915#11968])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb5/igt@kms_dirtyfb@[email protected]
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-dg1: NOTRUN -> [SKIP][185] ([i915#9723])
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_display_modes@mst-extended-mode-negative:
- shard-tglu-1: NOTRUN -> [SKIP][186] ([i915#8588])
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
- shard-dg1: NOTRUN -> [SKIP][187] ([i915#8588])
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_dp_aux_dev:
- shard-dg2: [PASS][188] -> [SKIP][189] ([i915#1257])
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-10/igt@kms_dp_aux_dev.html
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@kms_dp_aux_dev.html
* igt@kms_dp_linktrain_fallback@dp-fallback:
- shard-dg1: NOTRUN -> [SKIP][190] ([i915#12402])
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_dsc@dsc-fractional-bpp:
- shard-rkl: NOTRUN -> [SKIP][191] ([i915#3840])
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][192] ([i915#3840])
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-dg1: NOTRUN -> [SKIP][193] ([i915#3840])
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-dg2: NOTRUN -> [SKIP][194] ([i915#3555] / [i915#3840])
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][195] ([i915#3555] / [i915#3840])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_dsc@dsc-with-formats:
- shard-rkl: NOTRUN -> [SKIP][196] ([i915#3555] / [i915#3840])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-rkl: NOTRUN -> [SKIP][197] ([i915#3840] / [i915#9053])
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@kms_feature_discovery@display-2x:
- shard-rkl: NOTRUN -> [SKIP][198] ([i915#1839])
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_feature_discovery@display-4x:
- shard-dg2: NOTRUN -> [SKIP][199] ([i915#1839])
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_feature_discovery@dp-mst:
- shard-tglu-1: NOTRUN -> [SKIP][200] ([i915#9337])
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
- shard-dg1: NOTRUN -> [SKIP][201] ([i915#9337])
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_feature_discovery@psr2:
- shard-dg1: NOTRUN -> [SKIP][202] ([i915#658]) +1 other test skip
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_flip@2x-flip-vs-dpms:
- shard-rkl: NOTRUN -> [SKIP][203] ([i915#9934]) +6 other tests skip
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
* igt@kms_flip@2x-modeset-vs-vblank-race-interruptible:
- shard-mtlp: NOTRUN -> [SKIP][204] ([i915#3637]) +3 other tests skip
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-dg1: NOTRUN -> [SKIP][205] ([i915#9934]) +5 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
- shard-snb: NOTRUN -> [FAIL][206] ([i915#11989]) +1 other test fail
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb7/igt@[email protected]
* igt@kms_flip@2x-plain-flip-ts-check-interruptible:
- shard-tglu: NOTRUN -> [SKIP][207] ([i915#3637]) +2 other tests skip
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
- shard-dg2: NOTRUN -> [SKIP][208] ([i915#9934]) +5 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_flip@2x-wf_vblank-ts-check:
- shard-tglu-1: NOTRUN -> [SKIP][209] ([i915#3637]) +2 other tests skip
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@kms_flip@2x-wf_vblank-ts-check.html
* igt@kms_flip@flip-vs-blocking-wf-vblank:
- shard-tglu-1: NOTRUN -> [FAIL][210] ([i915#11989]) +2 other tests fail
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a4:
- shard-dg1: [PASS][211] -> [FAIL][212] ([i915#13027]) +1 other test fail
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg1-17/igt@kms_flip@[email protected]
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-14/igt@kms_flip@[email protected]
* igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a4:
- shard-dg1: [PASS][213] -> [DMESG-WARN][214] ([i915#4423]) +2 other tests dmesg-warn
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg1-14/igt@kms_flip@[email protected]
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-17/igt@kms_flip@[email protected]
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][215] ([i915#2672]) +2 other tests skip
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][216] ([i915#2587] / [i915#2672]) +1 other test skip
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
- shard-tglu: NOTRUN -> [SKIP][217] ([i915#2587] / [i915#2672] / [i915#3555]) +1 other test skip
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][218] ([i915#2672]) +2 other tests skip
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling:
- shard-rkl: NOTRUN -> [SKIP][219] ([i915#2672] / [i915#3555]) +2 other tests skip
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
- shard-mtlp: NOTRUN -> [SKIP][220] ([i915#2672] / [i915#3555] / [i915#8813]) +2 other tests skip
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][221] ([i915#2672] / [i915#8813]) +2 other tests skip
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
- shard-dg1: NOTRUN -> [SKIP][222] ([i915#2672] / [i915#3555]) +4 other tests skip
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-dg1: NOTRUN -> [SKIP][223] ([i915#2587] / [i915#2672]) +4 other tests skip
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling:
- shard-dg2: NOTRUN -> [SKIP][224] ([i915#2672] / [i915#3555] / [i915#5190]) +2 other tests skip
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-cpu:
- shard-dg2: [PASS][225] -> [FAIL][226] ([i915#6880])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-cpu.html
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-10/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
- shard-dg2: NOTRUN -> [SKIP][227] ([i915#5354]) +22 other tests skip
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][228] ([i915#8708]) +12 other tests skip
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
- shard-mtlp: NOTRUN -> [SKIP][229] ([i915#1825]) +12 other tests skip
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][230] ([i915#1825]) +25 other tests skip
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc:
- shard-tglu-1: NOTRUN -> [SKIP][231] +37 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
- shard-dg2: NOTRUN -> [SKIP][232] ([i915#10433] / [i915#3458]) +3 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff:
- shard-dg1: NOTRUN -> [SKIP][233] +68 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][234] ([i915#8708]) +3 other tests skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-dg2: NOTRUN -> [SKIP][235] ([i915#10055])
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt:
- shard-dg1: NOTRUN -> [SKIP][236] ([i915#3458]) +25 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][237] ([i915#8708]) +13 other tests skip
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt:
- shard-dg2: NOTRUN -> [SKIP][238] ([i915#3458]) +8 other tests skip
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
- shard-rkl: NOTRUN -> [SKIP][239] ([i915#3023]) +20 other tests skip
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@kms_hdr@bpc-switch-suspend:
- shard-dg2: [PASS][240] -> [SKIP][241] ([i915#3555] / [i915#8228])
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-10/igt@[email protected]
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_hdr@brightness-with-hdr:
- shard-dg1: NOTRUN -> [SKIP][242] ([i915#12713])
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_hdr@invalid-metadata-sizes:
- shard-tglu-1: NOTRUN -> [SKIP][243] ([i915#3555] / [i915#8228])
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_hdr@static-swap:
- shard-rkl: NOTRUN -> [SKIP][244] ([i915#3555] / [i915#8228])
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@kms_hdr@static-toggle:
- shard-dg1: NOTRUN -> [SKIP][245] ([i915#3555] / [i915#8228]) +2 other tests skip
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-tglu-1: NOTRUN -> [SKIP][246] ([i915#12394] / [i915#13522])
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
- shard-dg2: NOTRUN -> [SKIP][247] ([i915#10656] / [i915#13522])
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-dg1: NOTRUN -> [SKIP][248] ([i915#10656])
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-mtlp: NOTRUN -> [SKIP][249] ([i915#12339])
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
- shard-dg1: NOTRUN -> [SKIP][250] ([i915#12339])
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-rkl: NOTRUN -> [SKIP][251] ([i915#4070] / [i915#4816])
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_panel_fitting@atomic-fastset:
- shard-tglu: NOTRUN -> [SKIP][252] ([i915#6301])
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
- shard-dg2: NOTRUN -> [SKIP][253] ([i915#6301])
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
* igt@kms_panel_fitting@legacy:
- shard-rkl: NOTRUN -> [SKIP][254] ([i915#6301])
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_plane_lowres@tiling-x:
- shard-mtlp: NOTRUN -> [SKIP][255] ([i915#11614] / [i915#3582]) +1 other test skip
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_plane_lowres@tiling-x@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][256] ([i915#10226] / [i915#11614] / [i915#3582]) +2 other tests skip
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@kms_plane_lowres@[email protected]
* igt@kms_plane_multiple@tiling-y:
- shard-dg2: NOTRUN -> [SKIP][257] ([i915#8806])
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_plane_multiple@tiling-yf:
- shard-dg2: NOTRUN -> [SKIP][258] ([i915#3555] / [i915#8806])
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format:
- shard-tglu-1: NOTRUN -> [SKIP][259] ([i915#12247]) +4 other tests skip
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html
- shard-dg2: NOTRUN -> [SKIP][260] ([i915#12247] / [i915#9423])
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-d:
- shard-dg2: NOTRUN -> [SKIP][261] ([i915#12247]) +7 other tests skip
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@kms_plane_scaling@[email protected]
* igt@kms_plane_scaling@planes-downscale-factor-0-25:
- shard-rkl: NOTRUN -> [SKIP][262] ([i915#12247] / [i915#6953])
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][263] ([i915#12247] / [i915#6953]) +1 other test skip
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d:
- shard-dg1: NOTRUN -> [SKIP][264] ([i915#12247]) +9 other tests skip
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@kms_plane_scaling@[email protected]
* igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b:
- shard-rkl: NOTRUN -> [SKIP][265] ([i915#12247]) +4 other tests skip
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@kms_plane_scaling@[email protected]
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75:
- shard-mtlp: NOTRUN -> [SKIP][266] ([i915#12247] / [i915#6953])
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-d:
- shard-mtlp: NOTRUN -> [SKIP][267] ([i915#12247]) +3 other tests skip
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@kms_plane_scaling@[email protected]
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25:
- shard-dg2: NOTRUN -> [SKIP][268] ([i915#12247] / [i915#6953] / [i915#9423])
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b:
- shard-tglu: NOTRUN -> [SKIP][269] ([i915#12247]) +7 other tests skip
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@kms_plane_scaling@[email protected]
* igt@kms_pm_backlight@fade-with-dpms:
- shard-rkl: NOTRUN -> [SKIP][270] ([i915#5354])
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-rkl: NOTRUN -> [SKIP][271] ([i915#9685]) +1 other test skip
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][272] ([i915#9685])
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_pm_dc@dc5-retention-flops:
- shard-dg1: NOTRUN -> [SKIP][273] ([i915#3828])
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_pm_dc@dc9-dpms:
- shard-tglu: NOTRUN -> [SKIP][274] ([i915#4281])
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_pm_lpsp@kms-lpsp:
- shard-dg1: NOTRUN -> [SKIP][275] ([i915#9340])
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_pm_rpm@dpms-non-lpsp:
- shard-mtlp: NOTRUN -> [SKIP][276] ([i915#9519])
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-3/igt@[email protected]
* igt@kms_pm_rpm@fences:
- shard-dg1: NOTRUN -> [SKIP][277] ([i915#4077]) +11 other tests skip
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-dg1: NOTRUN -> [SKIP][278] ([i915#9519]) +1 other test skip
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-tglu: NOTRUN -> [SKIP][279] ([i915#9519])
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-tglu-1: NOTRUN -> [SKIP][280] ([i915#9519])
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_pm_rpm@pm-caching:
- shard-mtlp: NOTRUN -> [SKIP][281] ([i915#4077]) +2 other tests skip
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_prime@basic-modeset-hybrid:
- shard-dg2: NOTRUN -> [SKIP][282] ([i915#6524] / [i915#6805]) +1 other test skip
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_prime@d3hot:
- shard-tglu: NOTRUN -> [SKIP][283] ([i915#6524])
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf:
- shard-dg1: NOTRUN -> [SKIP][284] ([i915#11520]) +13 other tests skip
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][285] ([i915#9808]) +3 other tests skip
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@kms_psr2_sf@[email protected]
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf:
- shard-mtlp: NOTRUN -> [SKIP][286] ([i915#12316]) +3 other tests skip
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
- shard-glk: NOTRUN -> [SKIP][287] ([i915#11520])
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk6/igt@[email protected]
* igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area:
- shard-tglu: NOTRUN -> [SKIP][288] ([i915#11520]) +1 other test skip
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
* igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf:
- shard-rkl: NOTRUN -> [SKIP][289] ([i915#11520]) +2 other tests skip
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-snb: NOTRUN -> [SKIP][290] ([i915#11520]) +6 other tests skip
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb5/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
- shard-dg2: NOTRUN -> [SKIP][291] ([i915#11520]) +4 other tests skip
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
- shard-tglu-1: NOTRUN -> [SKIP][292] ([i915#11520]) +2 other tests skip
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-rkl: NOTRUN -> [SKIP][293] ([i915#9683])
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@kms_psr2_su@page_flip-nv12:
- shard-dg1: NOTRUN -> [SKIP][294] ([i915#9683])
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@fbc-psr2-no-drrs:
- shard-mtlp: NOTRUN -> [SKIP][295] ([i915#9688]) +8 other tests skip
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@kms_psr@pr-basic:
- shard-tglu: NOTRUN -> [SKIP][296] ([i915#9732]) +11 other tests skip
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_psr@pr-sprite-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][297] ([i915#1072] / [i915#9732]) +20 other tests skip
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-6/igt@[email protected]
* igt@kms_psr@psr-primary-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][298] ([i915#1072] / [i915#9732]) +15 other tests skip
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_psr@psr2-primary-mmap-cpu:
- shard-tglu-1: NOTRUN -> [SKIP][299] ([i915#9732]) +9 other tests skip
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
- shard-dg1: NOTRUN -> [SKIP][300] ([i915#1072] / [i915#9732]) +26 other tests skip
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-dg2: NOTRUN -> [SKIP][301] ([i915#9685])
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-dg1: NOTRUN -> [SKIP][302] ([i915#9685])
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@kms_rotation_crc@bad-pixel-format:
- shard-snb: NOTRUN -> [SKIP][303] +247 other tests skip
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-snb7/igt@[email protected]
- shard-mtlp: NOTRUN -> [SKIP][304] ([i915#12755]) +1 other test skip
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
- shard-tglu: NOTRUN -> [SKIP][305] ([i915#5289])
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-dg1: NOTRUN -> [SKIP][306] ([i915#5289])
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
- shard-mtlp: NOTRUN -> [SKIP][307] ([i915#5289])
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-dg2: NOTRUN -> [SKIP][308] ([i915#5190])
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_scaling_modes@scaling-mode-center:
- shard-dg1: NOTRUN -> [SKIP][309] ([i915#3555]) +7 other tests skip
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_selftest@drm_framebuffer:
- shard-dg1: NOTRUN -> [ABORT][310] ([i915#13179]) +1 other test abort
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@kms_selftest@drm_framebuffer.html
* igt@kms_setmode@basic-clone-single-crtc:
- shard-rkl: NOTRUN -> [SKIP][311] ([i915#3555]) +1 other test skip
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
* igt@kms_sysfs_edid_timing:
- shard-dg2: NOTRUN -> [FAIL][312] ([IGT#160])
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@kms_sysfs_edid_timing.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg1: NOTRUN -> [SKIP][313] ([i915#8623])
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-rkl: NOTRUN -> [SKIP][314] ([i915#8623])
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@kms_universal_plane@universal-plane-functional:
- shard-rkl: [PASS][315] -> [DMESG-WARN][316] ([i915#12964]) +3 other tests dmesg-warn
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-rkl-5/igt@[email protected]
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-7/igt@[email protected]
* igt@kms_vrr@flip-basic-fastset:
- shard-mtlp: NOTRUN -> [SKIP][317] ([i915#8808] / [i915#9906])
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@kms_vrr@flipline:
- shard-dg2: NOTRUN -> [SKIP][318] ([i915#3555]) +3 other tests skip
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
- shard-tglu-1: NOTRUN -> [SKIP][319] ([i915#3555])
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@[email protected]
* igt@kms_vrr@negative-basic:
- shard-rkl: NOTRUN -> [SKIP][320] ([i915#3555] / [i915#9906])
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@kms_vrr@seamless-rr-switch-virtual:
- shard-dg2: NOTRUN -> [SKIP][321] ([i915#9906])
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-3/igt@[email protected]
- shard-tglu: NOTRUN -> [SKIP][322] ([i915#9906])
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-7/igt@[email protected]
* igt@kms_writeback@writeback-check-output:
- shard-rkl: NOTRUN -> [SKIP][323] ([i915#2437])
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@kms_writeback@writeback-check-output-xrgb2101010:
- shard-glk: NOTRUN -> [SKIP][324] ([i915#2437])
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk6/igt@[email protected]
* igt@kms_writeback@writeback-fb-id-xrgb2101010:
- shard-dg2: NOTRUN -> [SKIP][325] ([i915#2437] / [i915#9412])
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@kms_writeback@writeback-pixel-formats:
- shard-tglu: NOTRUN -> [SKIP][326] ([i915#2437] / [i915#9412])
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
- shard-rkl: NOTRUN -> [SKIP][327] ([i915#2437] / [i915#9412])
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
* igt@perf@mi-rpc:
- shard-rkl: NOTRUN -> [SKIP][328] ([i915#2434])
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@perf@per-context-mode-unprivileged:
- shard-dg1: NOTRUN -> [SKIP][329] ([i915#2433])
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@perf@unprivileged-single-ctx-counters:
- shard-rkl: NOTRUN -> [SKIP][330] ([i915#2433])
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-3/igt@[email protected]
* igt@perf_pmu@cpu-hotplug:
- shard-dg1: NOTRUN -> [SKIP][331] ([i915#8850])
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@perf_pmu@most-busy-check-all:
- shard-dg2: [PASS][332] -> [FAIL][333] ([i915#11943]) +2 other tests fail
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-6/igt@[email protected]
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-6/igt@[email protected]
* igt@perf_pmu@rc6-all-gts:
- shard-tglu: NOTRUN -> [SKIP][334] ([i915#8516])
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-3/igt@[email protected]
- shard-rkl: NOTRUN -> [SKIP][335] ([i915#8516])
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-5/igt@[email protected]
* igt@perf_pmu@rc6@other-idle-gt0:
- shard-dg2: NOTRUN -> [SKIP][336] ([i915#8516])
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@perf_pmu@[email protected]
- shard-tglu-1: NOTRUN -> [SKIP][337] ([i915#8516])
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@perf_pmu@[email protected]
* igt@prime_vgem@basic-write:
- shard-dg2: NOTRUN -> [SKIP][338] ([i915#3291] / [i915#3708])
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@prime_vgem@coherency-gtt:
- shard-dg1: NOTRUN -> [SKIP][339] ([i915#3708] / [i915#4077])
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@prime_vgem@fence-flip-hang:
- shard-dg1: NOTRUN -> [SKIP][340] ([i915#3708]) +1 other test skip
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@sriov_basic@bind-unbind-vf:
- shard-rkl: NOTRUN -> [SKIP][341] ([i915#9917]) +1 other test skip
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-4/igt@[email protected]
* igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-all:
- shard-tglu-1: NOTRUN -> [FAIL][342] ([i915#12910]) +9 other tests fail
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-1/igt@sriov_basic@[email protected]
* igt@sriov_basic@enable-vfs-autoprobe-on:
- shard-dg2: NOTRUN -> [SKIP][343] ([i915#9917])
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-1/igt@[email protected]
* igt@sriov_basic@enable-vfs-bind-unbind-each:
- shard-dg1: NOTRUN -> [SKIP][344] ([i915#9917]) +1 other test skip
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-12/igt@[email protected]
* igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-4:
- shard-mtlp: NOTRUN -> [FAIL][345] ([i915#12910]) +8 other tests fail
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@sriov_basic@[email protected]
#### Possible fixes ####
* igt@gem_ctx_isolation@preservation-reset:
- shard-rkl: [DMESG-WARN][346] ([i915#12964]) -> [PASS][347] +4 other tests pass
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-rkl-5/igt@[email protected]
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-7/igt@[email protected]
* igt@gem_eio@in-flight-contexts-immediate:
- shard-mtlp: [ABORT][348] -> [PASS][349] +1 other test pass
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-7/igt@[email protected]
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-2/igt@[email protected]
* igt@gem_eio@in-flight-internal-1us:
- shard-mtlp: [ABORT][350] ([i915#13193]) -> [PASS][351]
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-4/igt@[email protected]
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-6/igt@[email protected]
* igt@gem_tiled_swapping@non-threaded:
- shard-rkl: [FAIL][352] ([i915#13557]) -> [PASS][353]
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-rkl-5/igt@[email protected]
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-7/igt@[email protected]
* igt@i915_pm_freq_api@freq-suspend@gt0:
- shard-dg2: [INCOMPLETE][354] ([i915#12455]) -> [PASS][355] +1 other test pass
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-7/igt@i915_pm_freq_api@[email protected]
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-10/igt@i915_pm_freq_api@[email protected]
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-glk: [FAIL][356] ([i915#10991] / [i915#13335]) -> [PASS][357]
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-glk8/igt@[email protected]
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk1/igt@[email protected]
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-2:
- shard-glk: [FAIL][358] ([i915#13335]) -> [PASS][359]
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-glk8/igt@kms_async_flips@[email protected]
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk1/igt@kms_async_flips@[email protected]
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-2:
- shard-glk: [FAIL][360] ([i915#10991]) -> [PASS][361]
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-glk8/igt@kms_async_flips@[email protected]
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk1/igt@kms_async_flips@[email protected]
* igt@kms_cursor_crc@cursor-random-128x42:
- shard-tglu: [FAIL][362] ([i915#13566]) -> [PASS][363] +9 other tests pass
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-tglu-3/igt@[email protected]
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-tglu-4/igt@[email protected]
- shard-rkl: [FAIL][364] ([i915#13566]) -> [PASS][365]
[364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-rkl-1/igt@[email protected]
[365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-7/igt@[email protected]
* igt@kms_cursor_legacy@short-flip-before-cursor-atomic-transitions:
- shard-glk: [FAIL][366] ([i915#2346]) -> [PASS][367] +1 other test pass
[366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-glk8/igt@kms_cursor_legacy@short-flip-before-cursor-atomic-transitions.html
[367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-glk1/igt@kms_cursor_legacy@short-flip-before-cursor-atomic-transitions.html
* igt@kms_flip@flip-vs-expired-vblank:
- shard-dg2: [FAIL][368] ([i915#13027]) -> [PASS][369]
[368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-2/igt@[email protected]
[369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-2/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a3:
- shard-dg2: [FAIL][370] ([i915#13528]) -> [PASS][371]
[370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-2/igt@kms_flip@[email protected]
[371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-2/igt@kms_flip@[email protected]
* igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
- shard-dg2: [FAIL][372] ([i915#6880]) -> [PASS][373]
[372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-5/igt@[email protected]
[373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-10/igt@[email protected]
* igt@kms_pm_rpm@modeset-lpsp:
- shard-dg2: [SKIP][374] ([i915#9519]) -> [PASS][375] +1 other test pass
[374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-3/igt@[email protected]
[375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-8/igt@[email protected]
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-rkl: [SKIP][376] ([i915#9519]) -> [PASS][377] +1 other test pass
[376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-rkl-5/igt@[email protected]
[377]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-7/igt@[email protected]
* igt@perf_pmu@most-busy-check-all@vcs0:
- shard-dg1: [FAIL][378] ([i915#11943]) -> [PASS][379]
[378]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg1-17/igt@perf_pmu@[email protected]
[379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-18/igt@perf_pmu@[email protected]
#### Warnings ####
* igt@gem_mmap_offset@clear-via-pagefault:
- shard-mtlp: [ABORT][380] -> [ABORT][381] ([i915#10729]) +1 other test abort
[380]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-1/igt@[email protected]
[381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-5/igt@[email protected]
* igt@i915_module_load@reload-with-fault-injection:
- shard-dg2: [DMESG-WARN][382] ([i915#13475]) -> [ABORT][383] ([i915#9820])
[382]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-4/igt@[email protected]
[383]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-4/igt@[email protected]
* igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
- shard-dg1: [SKIP][384] ([i915#11151] / [i915#7828]) -> [SKIP][385] ([i915#11151] / [i915#4423] / [i915#7828])
[384]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg1-17/igt@[email protected]
[385]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg1-13/igt@[email protected]
* igt@kms_content_protection@atomic-dpms:
- shard-dg2: [SKIP][386] ([i915#7118] / [i915#9424]) -> [TIMEOUT][387] ([i915#7173])
[386]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-dg2-7/igt@[email protected]
[387]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-dg2-10/igt@[email protected]
* igt@kms_hdr@brightness-with-hdr:
- shard-mtlp: [SKIP][388] ([i915#1187] / [i915#12713]) -> [SKIP][389] ([i915#12713])
[388]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-mtlp-1/igt@[email protected]
[389]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-mtlp-8/igt@[email protected]
- shard-rkl: [SKIP][390] ([i915#1187] / [i915#12713]) -> [SKIP][391] ([i915#12713])
[390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16009/shard-rkl-3/igt@[email protected]
[391]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/shard-rkl-1/igt@[email protected]
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[IGT#160]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/160
[i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
[i915#10226]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10226
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#10729]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10729
[i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
[i915#10991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10991
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
[i915#11441]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11441
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11614]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11614
[i915#11627]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11627
[i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
[i915#11713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11713
[i915#11808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11808
[i915#1187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1187
[i915#11943]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11943
[i915#11965]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11965
[i915#11968]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11968
[i915#11989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11989
[i915#12170]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12170
[i915#12193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12193
[i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316
[i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
[i915#12394]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12394
[i915#12402]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12402
[i915#12455]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12455
[i915#12549]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12549
[i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
[i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
[i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
[i915#12797]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12797
[i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
[i915#12817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12817
[i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
[i915#12917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12917
[i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
[i915#13027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13027
[i915#13029]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13029
[i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
[i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
[i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
[i915#13193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13193
[i915#13304]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13304
[i915#13314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13314
[i915#13335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13335
[i915#13475]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13475
[i915#13522]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13522
[i915#13528]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13528
[i915#13557]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13557
[i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
[i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#284]: https://gitlab.freedesktop.org/drm/i915/k
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_143893v1/index.html
Andy Yan
maintainerRe:[PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaHi,
Quoted 6 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.
Frankly, I prefer the original version of the log.
It is a platform driver, so it should use its own device.
It is a driver that works in drm subsystem, so it's better to use "[drm] *ERROR*" prefix when logging
Quoted 169 lines
Signed-off-by Jani Nikula <[email protected]>---
Looks like it's possible to hunt down the struct
drm_devicein most of these cases, if that's desired. This was the simplest change.Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>---
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c| 16 ++++++++--------drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c| 16 ++++++++--------2 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +6
-6@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); }static int
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +2
-2@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8
-8@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }Signature · 7 lines
2.39.5 _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchip
Re:[PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
Quoted 7 lines · Andy Yan
Hi,
Quoted 4 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.
Quoted 6 lines
Quoted 2 lines
Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.Frankly, I prefer the original version of the log.
It is a platform driver, so it should use its own device.
It is a driver that works in drm subsystem, so it's better to use "[drm] *ERROR*" prefix when logging
If you need to do struct device based logging that is not the same device as the struct drm_device dev member, you need to use dev_err() and friends. You can't and must not use drm_err() and friends.
It's as simple as that.
The current drm_err(hdmi, ...) usage is simply abuse of the macros, and must stop.
BR,
Jani.
Quoted 170 lines
Quoted 170 lines
Signed-off-by Jani Nikula <[email protected]>---
Looks like it's possible to hunt down the struct
drm_devicein most of these cases, if that's desired. This was the simplest change.Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>---
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c| 16 ++++++++--------drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c| 16 ++++++++--------2 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +6
-6@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); }static int
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +2
-2@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8
-8@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }Signature · 7 lines
2.39.5 _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchip
Signature · 1 line
Jani Nikula, Intel
Re: [PATCH 3/5] drm/sched: stop passing non struct drm_device to drm_err() and friends
In reply to Simona VetterQuoted 12 lines · Simona Vetter
Quoted 11 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Convert
drm_err(sched, ...)todev_err(sched->dev, ...)and similar. This matches current usage, as structdrm_deviceis not available, but drops "[drm]" or "[drm] *ERROR*" prefix from logging.Unfortunately, there's no
dev_WARN_ON(), so the conversion is not exactly the same.
Quoted 6 lines
Quoted 1 line
Signed-off-by Jani Nikula <[email protected]>For the two previous patches just
dev_makes sense since they're just platform drivers, but for drm/sched I wonder whether it wouldn't be better to switch from struct device * to structdrm_device* instead. I guess might be best to leave that decision to scheduler folks.
I had a very brief look, and it seemed like struct drm_device isn't passed around in sched. If use of struct drm_device is preferred, I'm not the best person to figure out how to do that. But the abuse of the drm_err() and friends macros needs to stop.
Quoted 3 lines
Anyway on the series and with that caveat:
Reviewed-by Simona Vetter <[email protected]>
Thanks,
Jani.
Quoted 98 lines
Quoted 98 lines
---
Cc Matthew Brost <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Philipp Stanner <[email protected]>Cc "Christian König" <[email protected]>--- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-)drivers/gpu/drm/scheduler/sched_entity.c +1
-1@@ -92,7 +92,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,* the lowest priority available. */ if (entity->priority >= sched_list[0 ]->num_rqs) { -drm_err (sched_list[0 ],"entity with out-of-bounds priority:%u num_rqs:%u\n" , +dev_err (sched_list[0 ]->dev,"entity with out-of-bounds priority:%u num_rqs:%u\n" , entity->priority, sched_list[0 ]->num_rqs); entity->priority =max_t (s32, (s32 ) sched_list[0 ]->num_rqs -1 , (s32 )DRM_SCHED_PRIORITY_KERNEL );drivers/gpu/drm/scheduler/sched_main.c +11
-9@@ -103,9 +103,9 @@ static u32 drm_sched_available_credits(struct drm_gpu_scheduler *sched) {u32 credits; -drm_WARN_ON (sched,check_sub_overflow (sched->credit_limit, -atomic_read (&sched->credit_count), - &credits)); +WARN_ON (check_sub_overflow (sched->credit_limit, +atomic_read (&sched->credit_count), + &credits));return credits; }@@ -130,9 +130,11 @@ static bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,/* If a job exceeds the credit limit, truncate it to the credit limit * itself to guarantee forward progress. */ -if (drm_WARN (sched, s_job->credits > sched->credit_limit, -"Jobs may not exceed the credit limit, truncate.\n" )) +if (s_job->credits > sched->credit_limit) { +dev_WARN (sched->dev, +"Jobs may not exceed the credit limit, truncate.\n" ); s_job->credits = sched->credit_limit; + }return drm_sched_available_credits (sched) >= s_job->credits; }@@ -790,7 +792,7 @@ int drm_sched_job_init(struct drm_sched_job *job,* or worse--a blank screen--leave a trail in the * logs, so this can be debugged easier. */ -drm_err (job->sched,"%s: entity has no rq!\n" , __func__); +dev_err (job->sched->dev,"%s: entity has no rq!\n" , __func__);return -ENOENT ; }@@ -1280,7 +1282,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,if (num_rqs >DRM_SCHED_PRIORITY_COUNT ) {/* This is a gross violation--tell drivers what the problem is. */ -drm_err (sched,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , +dev_err (sched->dev,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , __func__);return -EINVAL ; }else if (sched->sched_rq) {@@ -1288,7 +1290,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,* fine-tune their DRM calling order, and return all * is good. */ -drm_warn (sched,"%s: scheduler already initialized!\n" , __func__); +dev_warn (sched->dev,"%s: scheduler already initialized!\n" , __func__);return 0 ; }@@ -1343,7 +1345,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, Out_check_own:if (sched->own_submit_wq)destroy_workqueue (sched->submit_wq); -drm_err (sched,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__); +dev_err (sched->dev,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__);return -ENOMEM ; }EXPORT_SYMBOL (drm_sched_init);Signature · 1 line
2.39.5
Signature · 1 line
Jani Nikula, Intel
Re: [PATCH 4/5] drm/print: Include drm_device.h
In reply to Gustavo SousaQuoted 22 lines · Gustavo Sousa
Quoting Jani Nikula (2025-01-23 12:14:31-03:00)
Quoted 21 lines · Jani Nikula
Quoted 6 lines
From: Gustavo Sousa <[email protected]>
The header
drm_print.huses members of structdrm_devicepointers, as such, it should includedrm_device.hto let the compiler know the full type definition.Quoted 6 lines
Without such include, users of
drm_print.hthat don't explicitly needdrm_device.hwould bump into build errors and be forced to include the latter.Signed-off-by Gustavo Sousa <[email protected]>Reviewed-by Jani Nikula <[email protected]>This posting should have had
Signed-off-by Jani Nikula <[email protected]>but obviously not needed if the original [1] is merged instead.
Quoted 6 lines
Quoted 1 line
Hm. Since that's in the upper drm layer, I thought I was not supposed to merge it myself.
Am I? In that case, is it okay to merge it via drm-intel-next?
It's generally not okay to merge non-i915 stuff via drm-intel-next, because only i915 is under our maintenance. We'd need rationale and acks for that, which we occasionally do, but there's no reason here.
But you can apply for drm-misc commit rights, similar to drm-intel, and apply the patches to drm-misc-next yourself. See the maintainer tools documentation.
BR,
Jani.
Quoted 28 lines
--
Gustavo SousaQuoted 24 lines
Quoted 21 lines
---
Including here as a dependency. May be merged independently.
--- include/drm/drm_print.h | 1 + 1 file changed, 1 insertion(+)include/drm/drm_print.h +1
-0@@ -32,6 +32,7 @@#include <linux/dynamic_debug.h> #include <drm/drm.h> +#include <drm/drm_device.h> struct debugfs_regset32 ;struct drm_device ;Signature · 1 line
Jani Nikula, Intel
Signature · 1 line
Jani Nikula, Intel
Re: [PATCH 4/5] drm/print: Include drm_device.h
Quoting Jani Nikula (2025-01-24 08:50:14-03:00)
Quoted 30 lines · Gustavo Sousa
Quoted 22 lines
Quoting Jani Nikula (2025-01-23 12:14:31-03:00)
Quoted 21 lines · Jani Nikula
Quoted 6 lines
From: Gustavo Sousa <[email protected]>
The header
drm_print.huses members of structdrm_devicepointers, as such, it should includedrm_device.hto let the compiler know the full type definition.Quoted 6 lines
Without such include, users of
drm_print.hthat don't explicitly needdrm_device.hwould bump into build errors and be forced to include the latter.Signed-off-by Gustavo Sousa <[email protected]>Reviewed-by Jani Nikula <[email protected]>This posting should have had
Signed-off-by Jani Nikula <[email protected]>but obviously not needed if the original [1] is merged instead.
Quoted 6 lines
Quoted 1 line
Hm. Since that's in the upper drm layer, I thought I was not supposed to merge it myself.
Am I? In that case, is it okay to merge it via drm-intel-next?
Quoted 7 lines
It's generally not okay to merge non-i915 stuff via drm-intel-next, because only i915 is under our maintenance. We'd need rationale and acks for that, which we occasionally do, but there's no reason here.
But you can apply for drm-misc commit rights, similar to drm-intel, and apply the patches to drm-misc-next yourself. See the maintainer tools documentation.
The first bullet point in the list of criteria for drm-misc[2] says:
"Submitted a few (5-10 as a rule of thumb) non-trivial (not just simple spelling fixes and whitespace adjustment) patches that have been merged already."
I believe those patches should be targeted at drm-misc, right? (meaning not stuff that have their own tree (e.g. drm-xe drm-intel)).
If that's the case, since this is my first patch targeting core drm, I believe I would not fit into the criteria right now.
Decided to ask here just to make sure I don't raise a request in vain.
[2] https://drm.pages.freedesktop.org/maintainer-tools/committer/commit-access.html#drm-misc
--
Gustavo Sousa
Quoted 37 lines
BR,
Jani.Quoted 28 lines
--
Gustavo SousaQuoted 24 lines
Quoted 21 lines
---
Including here as a dependency. May be merged independently.
--- include/drm/drm_print.h | 1 + 1 file changed, 1 insertion(+)include/drm/drm_print.h +1
-0@@ -32,6 +32,7 @@#include <linux/dynamic_debug.h> #include <drm/drm.h> +#include <drm/drm_device.h> struct debugfs_regset32 ;struct drm_device ;Signature · 1 line
Jani Nikula, IntelSignature · 1 line
Jani Nikula, Intel
Re: [PATCH 4/5] drm/print: Include drm_device.h
Quoted 45 lines · Gustavo Sousa
Quoting Jani Nikula (2025-01-24 08:50:14-03:00)
Quoted 30 lines · Gustavo Sousa
Quoted 22 lines
Quoting Jani Nikula (2025-01-23 12:14:31-03:00)
Quoted 21 lines · Jani Nikula
Quoted 6 lines
From: Gustavo Sousa <[email protected]>
The header
drm_print.huses members of structdrm_devicepointers, as such, it should includedrm_device.hto let the compiler know the full type definition.Quoted 6 lines
Without such include, users of
drm_print.hthat don't explicitly needdrm_device.hwould bump into build errors and be forced to include the latter.Signed-off-by Gustavo Sousa <[email protected]>Reviewed-by Jani Nikula <[email protected]>This posting should have had
Signed-off-by Jani Nikula <[email protected]>but obviously not needed if the original [1] is merged instead.
Quoted 6 lines
Quoted 1 line
Hm. Since that's in the upper drm layer, I thought I was not supposed to merge it myself.
Am I? In that case, is it okay to merge it via drm-intel-next?
Quoted 7 lines
It's generally not okay to merge non-i915 stuff via drm-intel-next, because only i915 is under our maintenance. We'd need rationale and acks for that, which we occasionally do, but there's no reason here.
But you can apply for drm-misc commit rights, similar to drm-intel, and apply the patches to drm-misc-next yourself. See the maintainer tools documentation.
The first bullet point in the list of criteria for drm-misc[2] says:
"Submitted a few (5-10 as a rule of thumb) non-trivial (not just simple spelling fixes and whitespace adjustment) patches that have been merged already."
Quoted 5 lines
I believe those patches should be targeted at drm-misc, right? (meaning not stuff that have their own tree (e.g. drm-xe drm-intel)).
If that's the case, since this is my first patch targeting core drm, I believe I would not fit into the criteria right now.
So we're generally flexible about where the patches landed, but there's also the requirement that you plan to regularly push more patches to drm-misc. And that's probably not so much the case here.
There should be enough drm-misc committers in the intel team to do the occasional push to drm-misc for you.
-Sima
Quoted 44 lines
Decided to ask here just to make sure I don't raise a request in vain.
[2] https://drm.pages.freedesktop.org/maintainer-tools/committer/commit-access.html#drm-misc
--
Gustavo SousaQuoted 37 lines
BR,
Jani.Quoted 28 lines
--
Gustavo SousaQuoted 24 lines
Quoted 21 lines
---
Including here as a dependency. May be merged independently.
--- include/drm/drm_print.h | 1 + 1 file changed, 1 insertion(+)include/drm/drm_print.h +1
-0@@ -32,6 +32,7 @@#include <linux/dynamic_debug.h> #include <drm/drm.h> +#include <drm/drm_device.h> struct debugfs_regset32 ;struct drm_device ;Signature · 1 line
Jani Nikula, IntelSignature · 1 line
Jani Nikula, Intel
Signature · 3 lines
Simona Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch
Andy Yan
maintainerRe:Re:[PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaQuoted 15 lines · 在 2025-01-24 19:43:07,"Jani Nikula" <[email protected]> 写道:
Quoted 7 lines · Andy Yan
Hi,
Quoted 4 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Quoted 6 lines
Quoted 2 lines
Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.Frankly, I prefer the original version of the log.
It is a platform driver, so it should use its own device.
It is a driver that works in drm subsystem, so it's better to use "[drm] *ERROR*" prefix when logging
Quoted 8 lines
If you need to do struct device based logging that is not the same device as the struct
drm_devicedev member, you need to usedev_err()and friends. You can't and must not usedrm_err()and friends.It's as simple as that.
The current
drm_err(hdmi, ...)usage is simply abuse of the macros, and must stop.
Perhaps when you initially designed this macros, you intended it to accept only drm_device, but your code implementation didn't enforce this restriction at the beginning.
If that's truly what you intended, I suggest just reverting this commit that converting to use these macros[0], as neither drm_err nor dev_err can maintain consistency with the original log of this driver. Alternatively, as suggested by Sam in the initial submission of your patch 5 years ago, there should also be a macro similar to drm_dev_info(device *, ..).[1]
[0]https://lore.kernel.org/linux-rockchip/20240813-dw-hdmi-rockchip-cleanup-v1-1-b3e73b5f4fd6@collabora.com/ [1]https://lore.kernel.org/dri-devel/[email protected]/
Quoted 179 lines
BR,
Jani.Quoted 170 lines
Quoted 170 lines
Signed-off-by Jani Nikula <[email protected]>---
Looks like it's possible to hunt down the struct
drm_devicein most of these cases, if that's desired. This was the simplest change.Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>---
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c| 16 ++++++++--------drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c| 16 ++++++++--------2 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +6
-6@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); }static int
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +2
-2@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8
-8@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }Signature · 7 lines
2.39.5 _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchipSignature · 1 line
Jani Nikula, Intel
Philipp Stanner
Acked-byRe: [PATCH 3/5] drm/sched: stop passing non struct drm_device to drm_err() and friends
In reply to Jani Nikulanit: In drm/sched, we start with an upper case -> "drm/sched: Stop […]"
Quoted 26 lines · Jani Nikula
Quoted 17 lines · Simona Vetter
Quoted 11 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get
passed an actual structdrm_devicepointer rather than some random
struct pointer where you can dereference the ->dev member.Convert
drm_err(sched, ...)todev_err(sched->dev, ...)and similar. This matches current usage, as structdrm_deviceis not available, but drops "[drm]" or "[drm] *ERROR*" prefix from logging.Quoted 4 lines
Unfortunately, there's no
dev_WARN_ON(), so the conversion is not exactly the same.Signed-off-by Jani Nikula <[email protected]>Quoted 7 lines
For the two previous patches just
dev_makes sense since they're just
platform drivers, but for drm/sched I wonder whether it wouldn't be better
to switch from struct device * to structdrm_device* instead. I guess
might be best to leave that decision to scheduler folks.
Quoted 3 lines
I had a very brief look, and it seemed like struct
drm_deviceisn't passed around in sched. If use of structdrm_deviceis preferred, I'm not the best person to figure out how to do that.
The @dev field in drm_sched_init() is only ever used for debug prints. If we want to improve those prints further and we need a drm_dev for that, I'd say we can implement that ourselves once the need arises.
Quoted 6 lines
But the abuse of the
drm_err()and friends macros needs to stop.Quoted 3 lines
Anyway on the series and with that caveat:
Reviewed-by Simona Vetter <[email protected]>
One more nice-to-have / nit below
Quoted 20 lines
Thanks,
Jani.Quoted 16 lines
Quoted 16 lines
---
Cc Matthew Brost <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Philipp Stanner <[email protected]>Cc "Christian König" <[email protected]>---
drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++++++++------- --2 files changed, 12 insertions(+), 10 deletions(-)
Quoted 15 lines
Quoted 7 lines
Quoted 7 lines
drivers/gpu/drm/scheduler/sched_entity.c +0
-0@@ -92,7 +92,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,Quoted 8 lines
Quoted 8 lines
drivers/gpu/drm/scheduler/sched_entity.c +1
-1* the lowest priority available. */ if (entity->priority >= sched_list[0]->num_rqs) { - drm_err(sched_list[0], "entity with out- of-bounds priority:%u num_rqs:%u\n", + dev_err(sched_list[0]->dev, "entity without-of-bounds priority:%u num_rqs:%u\n",
Since you're touching that line already, could you improve that string's formatting a bit?
"entity has out-of-bounds priority: %u. num_rqs: %u\n"
Thx,
P.
Quoted 103 lines
Quoted 102 lines
Quoted 102 lines
entity->priority, sched_list[0]-Quoted 1 line
num_rqs);
entity->priority= max_t(s32, (s32) sched_list[0]->num_rqs - 1,
(s32)DRM_SCHED_PRIORITY_KERNEL);drivers/gpu/drm/scheduler/sched_main.c +0
-0@@ -103,9 +103,9 @@ static u32 drm_sched_available_credits(struct drm_gpu_scheduler *sched) { u32 credits;drivers/gpu/drm/scheduler/sched_main.c +0
-1- drm_WARN_ON(sched, check_sub_overflow(sched-Quoted 1 line
credit_limit,drivers/gpu/drm/scheduler/sched_main.c +0
-1-
atomic_read(&sched->credit_count),drivers/gpu/drm/scheduler/sched_main.c +2
-1- &credits)); + WARN_ON(check_sub_overflow(sched->credit_limit, + atomic_read(&sched-Quoted 1 line
credit_count),drivers/gpu/drm/scheduler/sched_main.c +1
-0+ &credits));
return credits;
}drivers/gpu/drm/scheduler/sched_main.c +0
-0@@ -130,9 +130,11 @@ static bool drm_sched_can_queue(struct drm_gpu_scheduler *sched, /* If a job exceeds the credit limit, truncate it to thecredit limit
* itself to guarantee forward progress.
*/drivers/gpu/drm/scheduler/sched_main.c +0
-1- if (drm_WARN(sched, s_job->credits > sched-Quoted 1 line
credit_limit,drivers/gpu/drm/scheduler/sched_main.c +0
-1- "Jobs may not exceed the credit limit,truncate.\n"))
drivers/gpu/drm/scheduler/sched_main.c +3
-0+if (s_job->credits > sched->credit_limit) { + dev_WARN(sched->dev, + "Jobs may not exceed the credit limit,truncate.\n");
s_job->credits=sched->credit_limit;drivers/gpu/drm/scheduler/sched_main.c +1
-0+ }
returndrm_sched_available_credits(sched)>= s_job-Quoted 1 line
credits;
}
drivers/gpu/drm/scheduler/sched_main.c +0
-0@@ -790,7 +792,7 @@ int drm_sched_job_init(struct drm_sched_job *job, * or worse--a blank screen--leave a trail inthe
* logs, so this can be debugged easier. */drivers/gpu/drm/scheduler/sched_main.c +0
-1- drm_err(job->sched, "%s: entity has no rq!\n",
__func__);drivers/gpu/drm/scheduler/sched_main.c +1
-0+ dev_err(job->sched->dev, "%s: entity has norq!\n",
__func__);
return-ENOENT;
}drivers/gpu/drm/scheduler/sched_main.c +0
-0@@ -1280,7 +1282,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, if (num_rqs > DRM_SCHED_PRIORITY_COUNT) { /* This is a gross violation--tell drivers whatthe problem is.
*/drivers/gpu/drm/scheduler/sched_main.c +0
-1- drm_err(sched, "%s: num_rqs cannot be greaterthan DRM_SCHED_PRIORITY_COUNT\n",
drivers/gpu/drm/scheduler/sched_main.c +1
-0+ dev_err(sched->dev, "%s: num_rqs cannot begreater than DRM_SCHED_PRIORITY_COUNT\n",
__func__);
return-EINVAL;
} else if (sched->sched_rq) {drivers/gpu/drm/scheduler/sched_main.c +0
-0@@ -1288,7 +1290,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, * fine-tune their DRM calling order, and returnall
* is good.
*/drivers/gpu/drm/scheduler/sched_main.c +0
-1- drm_warn(sched, "%s: scheduler alreadyinitialized!\n",
__func__);drivers/gpu/drm/scheduler/sched_main.c +1
-0+ dev_warn(sched->dev, "%s: scheduler alreadyinitialized!\n",
__func__);
return 0;
}drivers/gpu/drm/scheduler/sched_main.c +0
-0@@ -1343,7 +1345,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,Out_check_own:
if (sched->own_submit_wq)destroy_workqueue(sched->submit_wq);drivers/gpu/drm/scheduler/sched_main.c +0
-1- drm_err(sched, "%s: Failed to setup GPU scheduler--outof memory\n",
__func__);drivers/gpu/drm/scheduler/sched_main.c +1
-0+ dev_err(sched->dev, "%s: Failed to setup GPU scheduler--out of memory\n",
__func__);
return-ENOMEM;
}
EXPORT_SYMBOL(drm_sched_init);Signature · 1 line
2.39.5
Re: [PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaLe 23/01/2025 à 16:09, Jani Nikula a écrit :
Quoted 8 lines
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.Signed-off-by Jani Nikula <[email protected]>
Quoted 158 lines
---
Looks like it's possible to hunt down the struct
drm_devicein most of these cases, if that's desired. This was the simplest change.Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>--- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 16 ++++++++-------- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +8
-8@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); } static int@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8
-8@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }
Signature · 3 lines
Louis Chauvet, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Re: [PATCH 3/5] drm/sched: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaLe 23/01/2025 à 16:09, Jani Nikula a écrit :
Quoted 4 lines
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.
Quoted 8 lines
Convert
drm_err(sched, ...)todev_err(sched->dev, ...)and similar. This matches current usage, as structdrm_deviceis not available, but drops "[drm]" or "[drm] *ERROR*" prefix from logging.Unfortunately, there's no
dev_WARN_ON(), so the conversion is not exactly the same.Signed-off-by Jani Nikula <[email protected]>
Quoted 92 lines
---
Cc Matthew Brost <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Philipp Stanner <[email protected]>Cc "Christian König" <[email protected]>--- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-)drivers/gpu/drm/scheduler/sched_entity.c +1
-1@@ -92,7 +92,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,* the lowest priority available. */ if (entity->priority >= sched_list[0 ]->num_rqs) { -drm_err (sched_list[0 ],"entity with out-of-bounds priority:%u num_rqs:%u\n" , +dev_err (sched_list[0 ]->dev,"entity with out-of-bounds priority:%u num_rqs:%u\n" , entity->priority, sched_list[0 ]->num_rqs); entity->priority =max_t (s32, (s32 ) sched_list[0 ]->num_rqs -1 , (s32 )DRM_SCHED_PRIORITY_KERNEL );drivers/gpu/drm/scheduler/sched_main.c +11
-9@@ -103,9 +103,9 @@ static u32 drm_sched_available_credits(struct drm_gpu_scheduler *sched) {u32 credits; -drm_WARN_ON (sched,check_sub_overflow (sched->credit_limit, -atomic_read (&sched->credit_count), - &credits)); +WARN_ON (check_sub_overflow (sched->credit_limit, +atomic_read (&sched->credit_count), + &credits));return credits; }@@ -130,9 +130,11 @@ static bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,/* If a job exceeds the credit limit, truncate it to the credit limit * itself to guarantee forward progress. */ -if (drm_WARN (sched, s_job->credits > sched->credit_limit, -"Jobs may not exceed the credit limit, truncate.\n" )) +if (s_job->credits > sched->credit_limit) { +dev_WARN (sched->dev, +"Jobs may not exceed the credit limit, truncate.\n" ); s_job->credits = sched->credit_limit; + }return drm_sched_available_credits (sched) >= s_job->credits; }@@ -790,7 +792,7 @@ int drm_sched_job_init(struct drm_sched_job *job,* or worse--a blank screen--leave a trail in the * logs, so this can be debugged easier. */ -drm_err (job->sched,"%s: entity has no rq!\n" , __func__); +dev_err (job->sched->dev,"%s: entity has no rq!\n" , __func__);return -ENOENT ; }@@ -1280,7 +1282,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,if (num_rqs >DRM_SCHED_PRIORITY_COUNT ) {/* This is a gross violation--tell drivers what the problem is. */ -drm_err (sched,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , +dev_err (sched->dev,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , __func__);return -EINVAL ; }else if (sched->sched_rq) {@@ -1288,7 +1290,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,* fine-tune their DRM calling order, and return all * is good. */ -drm_warn (sched,"%s: scheduler already initialized!\n" , __func__); +dev_warn (sched->dev,"%s: scheduler already initialized!\n" , __func__);return 0 ; }@@ -1343,7 +1345,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, Out_check_own:if (sched->own_submit_wq)destroy_workqueue (sched->submit_wq); -drm_err (sched,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__); +dev_err (sched->dev,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__);return -ENOMEM ; }EXPORT_SYMBOL (drm_sched_init);
Signature · 3 lines
Louis Chauvet, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Re: [PATCH 5/5] drm/print: require struct drm_device for drm_err() and friends
In reply to Jani NikulaLe 23/01/2025 à 16:09, Jani Nikula a écrit :
Quoted 11 lines
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Add a static inline helper to convert struct
drm_deviceto struct device, with the main benefit being the type checking of the macro argument.As a side effect, this also reduces macro argument double references.
Signed-off-by Jani Nikula <[email protected]>
Quoted 92 lines
--- include/drm/drm_print.h | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-)include/drm/drm_print.h +23
-18@@ -584,9 +584,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,* Prefer drm_device based logging over device or prink based logging. */ +/* Helper to enforce struct drm_device type */ +static inline struct device *__drm_to_dev (const struct drm_device *drm) +{ +return drm ? drm->dev :NULL ; +} +/* Helper for struct drm_device based logging. */ #define __drm_printk (drm, level, type, fmt, ...) \ - dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__) + dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)#define drm_info (drm, fmt, ...) \@@ -620,25 +626,25 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,#define drm_dbg_core (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__) -#define drm_dbg_driver (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__) +#define drm_dbg_driver (drm, fmt, ...) \ + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)#define drm_dbg_kms (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)#define drm_dbg_prime (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)#define drm_dbg_atomic (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)#define drm_dbg_vbl (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)#define drm_dbg_state (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)#define drm_dbg_lease (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)#define drm_dbg_dp (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)#define drm_dbg_drmres (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)#define drm_dbg (drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)@@ -727,10 +733,9 @@ void __drm_err(const char *format, ...);#define __DRM_DEFINE_DBG_RATELIMITED (category, drm, fmt, ...) \ ({ \ static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\ - const struct drm_device *drm_ = (drm); \ \ if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \ - drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \ + drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \ })#define drm_dbg_ratelimited (drm, fmt, ...) \@@ -752,13 +757,13 @@ void __drm_err(const char *format, ...);/* Helper for struct drm_device based WARNs */ #define drm_WARN(drm, condition, format, arg...) \ WARN(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) + dev_driver_string(__drm_to_dev(drm)), \ + dev_name(__drm_to_dev(drm)), ## arg) #define drm_WARN_ONCE(drm, condition, format, arg...) \ WARN_ONCE(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) + dev_driver_string(__drm_to_dev(drm)), \ + dev_name(__drm_to_dev(drm)), ## arg)#define drm_WARN_ON (drm, x) \ drm_WARN((drm), (x), "%s", \
Signature · 3 lines
Louis Chauvet, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Re: [PATCH 3/5] drm/sched: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaQuoted 20 lines · Jani Nikula
Quoted 12 lines · Simona Vetter
Quoted 11 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Convert
drm_err(sched, ...)todev_err(sched->dev, ...)and similar. This matches current usage, as structdrm_deviceis not available, but drops "[drm]" or "[drm] *ERROR*" prefix from logging.Unfortunately, there's no
dev_WARN_ON(), so the conversion is not exactly the same.Quoted 6 lines
Quoted 1 line
Signed-off-by Jani Nikula <[email protected]>For the two previous patches just
dev_makes sense since they're just platform drivers, but for drm/sched I wonder whether it wouldn't be better to switch from struct device * to structdrm_device* instead. I guess might be best to leave that decision to scheduler folks.
Quoted 4 lines
I had a very brief look, and it seemed like struct
drm_deviceisn't passed around in sched. If use of structdrm_deviceis preferred, I'm not the best person to figure out how to do that. But the abuse of thedrm_err()and friends macros needs to stop.
FWIW I agree it should be the DRM device and I even wanted to tidy this some time ago but something distracted me. Worst thing here is that sched->dev was apparently added exactly to enable abuse of the logging macros. See 8ab62eda177b ("drm/sched: Add device pointer to drm_gpu_scheduler"). Logging is the only use for sched->dev at the moment.
But I think it is fine to merge your patch until a more comprehensive cleanup happens. Only drm_sched_available_credits loses the device information and that one should be unreachable anyway.
Regards,
Tvrtko
Quoted 106 lines
Quoted 3 lines
Anyway on the series and with that caveat:
Reviewed-by Simona Vetter <[email protected]>Thanks,
Jani.Quoted 98 lines
Quoted 98 lines
---
Cc Matthew Brost <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Philipp Stanner <[email protected]>Cc "Christian König" <[email protected]>--- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-)drivers/gpu/drm/scheduler/sched_entity.c +1
-1@@ -92,7 +92,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,* the lowest priority available. */ if (entity->priority >= sched_list[0 ]->num_rqs) { -drm_err (sched_list[0 ],"entity with out-of-bounds priority:%u num_rqs:%u\n" , +dev_err (sched_list[0 ]->dev,"entity with out-of-bounds priority:%u num_rqs:%u\n" , entity->priority, sched_list[0 ]->num_rqs); entity->priority =max_t (s32, (s32 ) sched_list[0 ]->num_rqs -1 , (s32 )DRM_SCHED_PRIORITY_KERNEL );drivers/gpu/drm/scheduler/sched_main.c +11
-9@@ -103,9 +103,9 @@ static u32 drm_sched_available_credits(struct drm_gpu_scheduler *sched) {u32 credits; -drm_WARN_ON (sched,check_sub_overflow (sched->credit_limit, -atomic_read (&sched->credit_count), - &credits)); +WARN_ON (check_sub_overflow (sched->credit_limit, +atomic_read (&sched->credit_count), + &credits));return credits; }@@ -130,9 +130,11 @@ static bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,/* If a job exceeds the credit limit, truncate it to the credit limit * itself to guarantee forward progress. */ -if (drm_WARN (sched, s_job->credits > sched->credit_limit, -"Jobs may not exceed the credit limit, truncate.\n" )) +if (s_job->credits > sched->credit_limit) { +dev_WARN (sched->dev, +"Jobs may not exceed the credit limit, truncate.\n" ); s_job->credits = sched->credit_limit; + }return drm_sched_available_credits (sched) >= s_job->credits; }@@ -790,7 +792,7 @@ int drm_sched_job_init(struct drm_sched_job *job,* or worse--a blank screen--leave a trail in the * logs, so this can be debugged easier. */ -drm_err (job->sched,"%s: entity has no rq!\n" , __func__); +dev_err (job->sched->dev,"%s: entity has no rq!\n" , __func__);return -ENOENT ; }@@ -1280,7 +1282,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,if (num_rqs >DRM_SCHED_PRIORITY_COUNT ) {/* This is a gross violation--tell drivers what the problem is. */ -drm_err (sched,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , +dev_err (sched->dev,"%s: num_rqs cannot be greater than DRM_SCHED_PRIORITY_COUNT\n" , __func__);return -EINVAL ; }else if (sched->sched_rq) {@@ -1288,7 +1290,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched,* fine-tune their DRM calling order, and return all * is good. */ -drm_warn (sched,"%s: scheduler already initialized!\n" , __func__); +dev_warn (sched->dev,"%s: scheduler already initialized!\n" , __func__);return 0 ; }@@ -1343,7 +1345,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, Out_check_own:if (sched->own_submit_wq)destroy_workqueue (sched->submit_wq); -drm_err (sched,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__); +dev_err (sched->dev,"%s: Failed to setup GPU scheduler--out of memory\n" , __func__);return -ENOMEM ; }EXPORT_SYMBOL (drm_sched_init);Signature · 1 line
2.39.5
Re: [PATCH 1/5] drm/mipi-dsi: stop passing non struct drm_device to drm_err() and friends
In reply to Jani NikulaQuoted 9 lines · On Thu, 23 Jan 2025 17:09:08 +0200 Jani Nikula <[email protected]> wrote:
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Convert
drm_err(host, ...)todev_err(host->dev, ...). This matches current usage, as structdrm_deviceis not available, but drops "[drm] *ERROR*" from logs.Signed-off-by Jani Nikula <[email protected]>
Signature · 3 lines
Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Re: [PATCH 5/5] drm/print: require struct drm_device for drm_err() and friends
In reply to Jani NikulaQuoted 11 lines · On Thu, 23 Jan 2025 17:09:12 +0200 Jani Nikula <[email protected]> wrote:
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Add a static inline helper to convert struct
drm_deviceto struct device, with the main benefit being the type checking of the macro argument.As a side effect, this also reduces macro argument double references.
Signed-off-by Jani Nikula <[email protected]>
Signature · 3 lines
Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Re:Re:[PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
In reply to Andy YanQuoted 25 lines · Andy Yan
Quoted 15 lines · 在 2025-01-24 19:43:07,"Jani Nikula" <[email protected]> 写道:
Quoted 7 lines · Andy Yan
Hi,
Quoted 4 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Quoted 6 lines
Quoted 2 lines
Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.Frankly, I prefer the original version of the log.
It is a platform driver, so it should use its own device.
It is a driver that works in drm subsystem, so it's better to use "[drm] *ERROR*" prefix when loggingQuoted 8 lines
If you need to do struct device based logging that is not the same device as the struct
drm_devicedev member, you need to usedev_err()and friends. You can't and must not usedrm_err()and friends.It's as simple as that.
The current
drm_err(hdmi, ...)usage is simply abuse of the macros, and must stop.
Quoted 6 lines
Perhaps when you initially designed this macros, you intended it to accept only
drm_device, but your code implementation didn't enforce this restriction at the beginning.
If that's truly what you intended, I suggest just reverting this commit that converting to use these macros[0], as neitherdrm_errnordev_errcan maintain consistency with the original log of this driver. Alternatively, as suggested by Sam in the initial submission of your patch 5 years ago, there should also be a macro similar todrm_dev_info(device *, ..).[1]
Commit 1b8f576c6958 ("drm/rockchip: dw_hdmi: Use modern drm_device based logging") does not revert cleanly, and even if it did, DRM_DEV_ERROR() is deprecated in favour of drm_err() or dev_err(). I'm using the latter.
Ack for applying the patch at hand as-is?
BR,
Jani.
Quoted 184 lines
[0]https://lore.kernel.org/linux-rockchip/20240813-dw-hdmi-rockchip-cleanup-v1-1-b3e73b5f4fd6@collabora.com/ [1]https://lore.kernel.org/dri-devel/[email protected]/
Quoted 179 lines
BR,
Jani.Quoted 170 lines
Quoted 170 lines
Signed-off-by Jani Nikula <[email protected]>---
Looks like it's possible to hunt down the struct
drm_devicein most of these cases, if that's desired. This was the simplest change.Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>---
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c| 16 ++++++++--------drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c| 16 ++++++++--------2 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +6
-6@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); }static int
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +2
-2@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8
-8@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }Signature · 7 lines
2.39.5 _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchipSignature · 1 line
Jani Nikula, Intel
Signature · 1 line
Jani Nikula, Intel
Thomas Zimmermann
maintainerRe: [PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
In reply to Andy YanHi
Am 25.01.25 um 04:53 schrieb Andy Yan:
Quoted 19 lines · 在 2025-01-24 19:43:07,"Jani Nikula" <[email protected]> 写道:
Quoted 17 lines · Andy Yan
Quoted 7 lines
Hi,
Quoted 4 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Quoted 5 lines
Quoted 2 lines
Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.Frankly, I prefer the original version of the log.
It is a platform driver, so it should use its own device.
It is a driver that works in drm subsystem, so it's better to use "[drm] *ERROR*" prefix when loggingIf you need to do struct device based logging that is not the same device as the struct
drm_devicedev member, you need to usedev_err()and friends. You can't and must not usedrm_err()and friends.
Quoted 6 lines
Quoted 4 lines
It's as simple as that.
The current
drm_err(hdmi, ...)usage is simply abuse of the macros, and must stop.Perhaps when you initially designed this macros, you intended it to accept only
drm_device, but your code implementation didn't enforce this restriction at the beginning.
C'mon. Are we really arguing about type safety now?
Patch 5 adds a little getter function that does the type check on the function call's argument.
Quoted 4 lines
If that's truly what you intended, I suggest just reverting this commit that converting to use these macros[0], as neither
drm_errnordev_errcan maintain consistency with the original log of this driver. Alternatively, as suggested by Sam in the initial submission of your patch 5 years ago, there should also be a macro similar todrm_dev_info(device *, ..).[1]
DRM code tends to keep a reference to the drm_device somewhere and fetches it if necessary. For this patch, it should be possible to fetch the DRM device from struct rockchip_hdmi easily. Just do
drm_err(rockchip_hdmi_drm_dev(hdmi), "...");
This would resolve the problem without new logging functions and keep the "[drm]" prefix to the messages.
Best regards
Thomas
Quoted 180 lines
[0]https://lore.kernel.org/linux-rockchip/20240813-dw-hdmi-rockchip-cleanup-v1-1-b3e73b5f4fd6@collabora.com/ [1]https://lore.kernel.org/dri-devel/[email protected]/
Quoted 175 lines
BR,
Jani.Quoted 168 lines
Quoted 168 lines
Signed-off-by Jani Nikula <[email protected]>---
Looks like it's possible to hunt down the struct
drm_devicein most of these cases, if that's desired. This was the simplest change.Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>---
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c| 16 ++++++++--------drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c| 16 ++++++++--------2 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +6
-6@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); }static int
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +2
-2@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8
-8@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }Signature · 7 lines
2.39.5 _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchipSignature · 1 line
Jani Nikula, Intel
Signature · 7 lines
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg)
Andy Yan
maintainerRe:Re: [PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
Hi,
Quoted 40 lines · 在 2025-02-26 16:33:21,"Thomas Zimmermann" <[email protected]> 写道:
Hi
Am 25.01.25 um 04:53 schrieb Andy Yan:
Quoted 19 lines · 在 2025-01-24 19:43:07,"Jani Nikula" <[email protected]> 写道:
Quoted 17 lines · Andy Yan
Quoted 7 lines
Hi,
Quoted 4 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Quoted 5 lines
Quoted 2 lines
Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.Frankly, I prefer the original version of the log.
It is a platform driver, so it should use its own device.
It is a driver that works in drm subsystem, so it's better to use "[drm] *ERROR*" prefix when loggingIf you need to do struct device based logging that is not the same device as the struct
drm_devicedev member, you need to usedev_err()and friends. You can't and must not usedrm_err()and friends.Quoted 6 lines
Quoted 4 lines
It's as simple as that.
The current
drm_err(hdmi, ...)usage is simply abuse of the macros, and must stop.Perhaps when you initially designed this macros, you intended it to accept only
drm_device, but your code implementation didn't enforce this restriction at the beginning.C'mon. Are we really arguing about type safety now?
Patch 5 adds a little getter function that does the type check on the function call's argument.
Quoted 4 lines
If that's truly what you intended, I suggest just reverting this commit that converting to use these macros[0], as neither
drm_errnordev_errcan maintain consistency with the original log of this driver. Alternatively, as suggested by Sam in the initial submission of your patch 5 years ago, there should also be a macro similar todrm_dev_info(device *, ..).[1]
Quoted 8 lines
DRM code tends to keep a reference to the
drm_devicesomewhere and fetches it if necessary. For this patch, it should be possible to fetch the DRM device from structrockchip_hdmieasily. Just do
drm_err(rockchip_hdmi_drm_dev(hdmi), "...");This would resolve the problem without new logging functions and keep the "[drm]" prefix to the messages.
Yes, this keeps the "[drm]" prefix to the log messages, but it also changed hdmi
device from drm device in the log messages.
For more efficient debugging, it is preferable for log entries to explicitly specify which device generated them, especially in DRM systems where multiple devices(bridge/encoder) may be present."
And I'm ok with this PATCH. However, I would also like to know your and Jani's opinions on whether we can consider adding an API similar to drm_dev_info,as Sam suggested before. Of course, this could be left for future implementation by others.
Quoted 195 lines
Best regards
ThomasQuoted 180 lines
[0]https://lore.kernel.org/linux-rockchip/20240813-dw-hdmi-rockchip-cleanup-v1-1-b3e73b5f4fd6@collabora.com/ [1]https://lore.kernel.org/dri-devel/[email protected]/
Quoted 175 lines
BR,
Jani.Quoted 168 lines
Quoted 168 lines
Signed-off-by Jani Nikula <[email protected]>---
Looks like it's possible to hunt down the struct
drm_devicein most of these cases, if that's desired. This was the simplest change.Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>---
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c| 16 ++++++++--------drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c| 16 ++++++++--------2 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +6
-6@@ -203,7 +203,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi) hdmi->regmap =syscon_regmap_lookup_by_phandle (np,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); }@@ -214,7 +214,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->ref_clk)) { ret =PTR_ERR (hdmi->ref_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get reference clock\n" ); +dev_err (hdmi->dev,"failed to get reference clock\n" );return ret; }@@ -222,7 +222,7 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)if (IS_ERR (hdmi->grf_clk)) { ret =PTR_ERR (hdmi->grf_clk);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get grf clock\n" ); +dev_err (hdmi->dev,"failed to get grf clock\n" );return ret; }@@ -302,16 +302,16 @@ static void dw_hdmi_rockchip_encoder_enable(struct drm_encoder *encoder) ret =clk_prepare_enable (hdmi->grf_clk);if (ret <0 ) { -drm_err (hdmi,"failed to enable grfclk %d\n" , ret); +dev_err (hdmi->dev,"failed to enable grfclk %d\n" , ret);return ; } ret =regmap_write (hdmi->regmap, hdmi->chip_data->lcdsel_grf_reg, val);if (ret !=0 ) -drm_err (hdmi,"Could not write to GRF: %d\n" , ret); +dev_err (hdmi->dev,"Could not write to GRF: %d\n" , ret);clk_disable_unprepare (hdmi->grf_clk); -drm_dbg (hdmi,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); +dev_dbg (hdmi->dev,"vop %s output to hdmi\n" , ret ?"LIT" :"BIG" ); }static int
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +2
-2@@ -574,7 +574,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master, ret =rockchip_hdmi_parse_dt (hdmi);if (ret) {if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"Unable to parse OF data\n" ); +dev_err (hdmi->dev,"Unable to parse OF data\n" );return ret; }@@ -582,7 +582,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy\n" ); +dev_err (hdmi->dev,"failed to get phy\n" );return ret; }drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +8
-8@@ -242,7 +242,7 @@ static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)if (drm) { changed =drm_helper_hpd_irq_event (drm);if (changed) -drm_dbg (hdmi,"connector status changed\n" ); +dev_dbg (hdmi->dev,"connector status changed\n" ); } }@@ -472,7 +472,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, } }if (hdmi->port_id <0 ) { -drm_err (hdmi,"Failed to match HDMI port ID\n" ); +dev_err (hdmi->dev,"Failed to match HDMI port ID\n" );return hdmi->port_id; }@@ -496,20 +496,20 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, hdmi->regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,grf" );if (IS_ERR (hdmi->regmap)) { -drm_err (hdmi,"Unable to get rockchip,grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,grf\n" );return PTR_ERR (hdmi->regmap); } hdmi->vo_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"rockchip,vo-grf" );if (IS_ERR (hdmi->vo_regmap)) { -drm_err (hdmi,"Unable to get rockchip,vo-grf\n" ); +dev_err (hdmi->dev,"Unable to get rockchip,vo-grf\n" );return PTR_ERR (hdmi->vo_regmap); } ret =devm_clk_bulk_get_all_enabled (hdmi->dev, &clks);if (ret <0 ) { -drm_err (hdmi,"Failed to get clocks: %d\n" , ret); +dev_err (hdmi->dev,"Failed to get clocks: %d\n" , ret);return ret; }@@ -517,7 +517,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, GPIOD_OUT_HIGH);if (IS_ERR (hdmi->enable_gpio)) { ret =PTR_ERR (hdmi->enable_gpio); -drm_err (hdmi,"Failed to request enable GPIO: %d\n" , ret); +dev_err (hdmi->dev,"Failed to request enable GPIO: %d\n" , ret);return ret; }@@ -525,7 +525,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);if (ret != -EPROBE_DEFER ) -drm_err (hdmi,"failed to get phy: %d\n" , ret); +dev_err (hdmi->dev,"failed to get phy: %d\n" , ret);return ret; }@@ -564,7 +564,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master, connector =drm_bridge_connector_init (drm, encoder);if (IS_ERR (connector)) { ret =PTR_ERR (connector); -drm_err (hdmi,"failed to init bridge connector: %d\n" , ret); +dev_err (hdmi->dev,"failed to init bridge connector: %d\n" , ret);return ret; }Signature · 7 lines
2.39.5 _______________________________________________ Linux-rockchip mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-rockchipSignature · 1 line
Jani Nikula, IntelSignature · 7 lines
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg)
Re:Re: [PATCH 2/5] drm/rockchip: stop passing non struct drm_device to drm_err() and friends
Quoted 52 lines · Andy Yan
Hi,
Quoted 40 lines · 在 2025-02-26 16:33:21,"Thomas Zimmermann" <[email protected]> 写道:
Hi
Am 25.01.25 um 04:53 schrieb Andy Yan:
Quoted 19 lines · 在 2025-01-24 19:43:07,"Jani Nikula" <[email protected]> 写道:
Quoted 17 lines · Andy Yan
Quoted 7 lines
Hi,
Quoted 4 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Quoted 5 lines
Quoted 2 lines
Convert
drm_err(hdmi, ...)todev_err(hdmi->dev, ...). This matches current usage, but drops "[drm] *ERROR*" prefix from logging.Frankly, I prefer the original version of the log.
It is a platform driver, so it should use its own device.
It is a driver that works in drm subsystem, so it's better to use "[drm] *ERROR*" prefix when loggingIf you need to do struct device based logging that is not the same device as the struct
drm_devicedev member, you need to usedev_err()and friends. You can't and must not usedrm_err()and friends.Quoted 6 lines
Quoted 4 lines
It's as simple as that.
The current
drm_err(hdmi, ...)usage is simply abuse of the macros, and must stop.Perhaps when you initially designed this macros, you intended it to accept only
drm_device, but your code implementation didn't enforce this restriction at the beginning.C'mon. Are we really arguing about type safety now?
Patch 5 adds a little getter function that does the type check on the function call's argument.
Quoted 4 lines
If that's truly what you intended, I suggest just reverting this commit that converting to use these macros[0], as neither
drm_errnordev_errcan maintain consistency with the original log of this driver. Alternatively, as suggested by Sam in the initial submission of your patch 5 years ago, there should also be a macro similar todrm_dev_info(device *, ..).[1]Quoted 8 lines
DRM code tends to keep a reference to the
drm_devicesomewhere and fetches it if necessary. For this patch, it should be possible to fetch the DRM device from structrockchip_hdmieasily. Just do
drm_err(rockchip_hdmi_drm_dev(hdmi), "...");This would resolve the problem without new logging functions and keep the "[drm]" prefix to the messages.
Quoted 8 lines
Yes, this keeps the "[drm]" prefix to the log messages, but it also changed hdmi
device from drm device in the log messages.
For more efficient debugging, it is preferable for log entries to explicitly specify which device generated them, especially in DRM systems where multiple devices(bridge/encoder) may be present."And I'm ok with this PATCH. However, I would also like to know your and Jani's opinions on whether we can consider adding an API similar to drm_dev_info,as Sam suggested before. Of course, this could be left for future implementation by others.
I'm not at all thrilled about adding loads of variations of drm specific debug macros. They just multiply.
The way around that would be to use _Generic() to allow passing either struct drm_device (which would use drm->dev) or a more specific struct device to be used for dev based logging. I'd be supportive of that.
However, this patch series is a dependency for implementing generics at a later time. I'd like to start here instead of piling on more work.
Furthermore, there's been talk about drm display object based logging. The generics could later be expanded to allow for example:
drm_err(connector, "Fail\n");
to translate to:
dev_err(connector->dev->dev, "[CONNECTOR:%d:%s] Fail\n", connector->base.id, connector->name);
This would simplify a lot of connector based logging. Similarly for other objects.
BR,
Jani.
Signature · 1 line
Jani Nikula, Intel
Quoted 5 lines · Jani Nikula
Fix all cases that pass something other than struct
drm_deviceto thedrm_devicebased logging helpers, and add strict type checking.Gustavo Sousa (1):
drm/print: Includedrm_device.h
This was pushed earlier, independently.
Quoted 8 lines
Jani Nikula (4):
drm/mipi-dsi: stop passing non structdrm_devicetodrm_err()and
friends
drm/rockchip: stop passing non structdrm_devicetodrm_err()and
friends
drm/sched: stop passing non structdrm_devicetodrm_err()and friends drm/print: require structdrm_devicefordrm_err()and friends
Series pushed to drm-misc-next, thanks for the reviews.
BR,
Jani.
Quoted 8 lines
drivers/gpu/drm/drm_mipi_dsi.c | 12 +++--- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 16 +++---- .../gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 16 +++---- drivers/gpu/drm/scheduler/sched_entity.c | 2 +- drivers/gpu/drm/scheduler/sched_main.c | 20 +++++---- include/drm/drm_print.h | 42 +++++++++++-------- 6 files changed, 58 insertions(+), 50 deletions(-)
Signature · 1 line
Jani Nikula, Intel
Re: [PATCH 5/5] drm/print: require struct drm_device for drm_err() and friends
In reply to Jani NikulaQuoted 91 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Add a static inline helper to convert struct
drm_deviceto struct device, with the main benefit being the type checking of the macro argument.As a side effect, this also reduces macro argument double references.
Signed-off-by Jani Nikula <[email protected]>--- include/drm/drm_print.h | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-)include/drm/drm_print.h +19
-16@@ -584,9 +584,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,* Prefer drm_device based logging over device or prink based logging. */ +/* Helper to enforce struct drm_device type */ +static inline struct device *__drm_to_dev (const struct drm_device *drm) +{ +return drm ? drm->dev :NULL ; +} +/* Helper for struct drm_device based logging. */ #define __drm_printk (drm, level, type, fmt, ...) \ - dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__) + dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)#define drm_info (drm, fmt, ...) \@@ -620,25 +626,25 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,#define drm_dbg_core (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__) -#define drm_dbg_driver (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__) +#define drm_dbg_driver (drm, fmt, ...) \ + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)#define drm_dbg_kms (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)#define drm_dbg_prime (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)#define drm_dbg_atomic (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)#define drm_dbg_vbl (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)#define drm_dbg_state (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)#define drm_dbg_lease (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)#define drm_dbg_dp (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)#define drm_dbg_drmres (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)#define drm_dbg (drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)@@ -727,10 +733,9 @@ void __drm_err(const char *format, ...);#define __DRM_DEFINE_DBG_RATELIMITED (category, drm, fmt, ...) \ ({ \ static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\ - const struct drm_device *drm_ = (drm); \ \ if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \ - drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \ + drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \ })#define drm_dbg_ratelimited (drm, fmt, ...) \@@ -752,13 +757,13 @@ void __drm_err(const char *format, ...);/* Helper for struct drm_device based WARNs */ #define drm_WARN(drm, condition, format, arg...) \ WARN(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg)
include/drm/drm_print.h void __drm_err(const char *format, ...); · line 767
Quoted 10 lines
include/drm/drm_print.h +4
-2+dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg) #define drm_WARN_ONCE(drm, condition, format, arg...) \WARN_ONCE (condition,"%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) +dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg)
Hi Jani,
These two changes introduce undefined behavior into these macros. The final code generation becomes this (from 'bxt_port_to_phy_channel'):
__warn_printk("%s %s: [drm] " "PHY not found for PORT %c",
dev_driver_string(__drm_to_dev(display->drm)),
dev_name(__drm_to_dev(display->drm)),
(port + 'A'));The issue lies in 'dev_name(__drm_to_dev(display->drm))'. After inlining, it becomes this (pseudo code):
struct device *device = display->drm ? display->drm->dev : NULL;
const char *name = device->init_name ? device->init_name
: kobject_name(&device->kobj);
__warn_printk("%s %s: [drm] " "PHY not found for PORT %c",
dev_driver_string(device), name, (port + 'A'));The issue, of course, is that the 'device' may be NULL when attempting to get 'device->init_name'. The compiler sees this as undefined behavior, which may lead to unexpected outcomes, especially with Clang where paths determined to be undefined are removed entirely under certain conditions.
(Note, I'm working on making this behavior less draconian by adopting a GCC pass, but this will take time to filter out to Linux devs.)
Regards,
-bw
Re: [PATCH 5/5] drm/print: require struct drm_device for drm_err() and friends
Quoted 129 lines · Bill Wendling
Quoted 91 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Add a static inline helper to convert struct
drm_deviceto struct device, with the main benefit being the type checking of the macro argument.As a side effect, this also reduces macro argument double references.
Signed-off-by Jani Nikula <[email protected]>--- include/drm/drm_print.h | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-)include/drm/drm_print.h +19
-16@@ -584,9 +584,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,* Prefer drm_device based logging over device or prink based logging. */ +/* Helper to enforce struct drm_device type */ +static inline struct device *__drm_to_dev (const struct drm_device *drm) +{ +return drm ? drm->dev :NULL ; +} +/* Helper for struct drm_device based logging. */ #define __drm_printk (drm, level, type, fmt, ...) \ - dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__) + dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)#define drm_info (drm, fmt, ...) \@@ -620,25 +626,25 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,#define drm_dbg_core (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__) -#define drm_dbg_driver (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__) +#define drm_dbg_driver (drm, fmt, ...) \ + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)#define drm_dbg_kms (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)#define drm_dbg_prime (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)#define drm_dbg_atomic (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)#define drm_dbg_vbl (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)#define drm_dbg_state (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)#define drm_dbg_lease (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)#define drm_dbg_dp (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)#define drm_dbg_drmres (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)#define drm_dbg (drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)@@ -727,10 +733,9 @@ void __drm_err(const char *format, ...);#define __DRM_DEFINE_DBG_RATELIMITED (category, drm, fmt, ...) \ ({ \ static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\ - const struct drm_device *drm_ = (drm); \ \ if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \ - drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \ + drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \ })#define drm_dbg_ratelimited (drm, fmt, ...) \@@ -752,13 +757,13 @@ void __drm_err(const char *format, ...);/* Helper for struct drm_device based WARNs */ #define drm_WARN(drm, condition, format, arg...) \ WARN(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg)include/drm/drm_print.h void __drm_err(const char *format, ...); · line 767
Quoted 10 lines
include/drm/drm_print.h +4
-2+dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg) #define drm_WARN_ONCE(drm, condition, format, arg...) \WARN_ONCE (condition,"%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) +dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg)Hi Jani,
These two changes introduce undefined behavior into these macros. The final code generation becomes this (from '
bxt_port_to_phy_channel'):__warn_printk("%s %s: [drm] " "PHY not found for PORT %c", dev_driver_string(__drm_to_dev(display->drm)), dev_name(__drm_to_dev(display->drm)), (port + 'A'));The issue lies in 'dev_name(__drm_to_dev(display->drm))'. After inlining, it becomes this (pseudo code):
struct device *device = display->drm ? display->drm->dev : NULL; const char *name = device->init_name ? device->init_name : kobject_name(&device->kobj); __warn_printk("%s %s: [drm] " "PHY not found for PORT %c", dev_driver_string(device), name, (port + 'A'));The issue, of course, is that the 'device' may be NULL when attempting to get
'device->init_name'. The compiler sees this as undefined behavior, which may lead to unexpected outcomes, especially with Clang where paths determined to be
undefined are removed entirely under certain conditions.
Quoted 3 lines
(Note, I'm working on making this behavior less draconian by adopting a GCC pass, but this will take time to filter out to Linux devs.)
I potential fix for this would be something like this (untested). I'm not familiar with how 'dev_name' is used to know whether or not this could cause issues:
include/linux/device.h +3 -0
@@ -778,6 +778,9 @@ static inline bool device_iommu_mapped(struct device *dev)*/ static inline const char *dev_name (const struct device *dev) { +if (!dev) +return "default" ; +/* Use the init name until the kobject becomes available */ if (dev->init_name)return dev->init_name;
-bw
Re: [PATCH 5/5] drm/print: require struct drm_device for drm_err() and friends
In reply to Bill WendlingQuoted 122 lines · Bill Wendling
Quoted 91 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Add a static inline helper to convert struct
drm_deviceto struct device, with the main benefit being the type checking of the macro argument.As a side effect, this also reduces macro argument double references.
Signed-off-by Jani Nikula <[email protected]>--- include/drm/drm_print.h | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-)include/drm/drm_print.h +19
-16@@ -584,9 +584,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,* Prefer drm_device based logging over device or prink based logging. */ +/* Helper to enforce struct drm_device type */ +static inline struct device *__drm_to_dev (const struct drm_device *drm) +{ +return drm ? drm->dev :NULL ; +} +/* Helper for struct drm_device based logging. */ #define __drm_printk (drm, level, type, fmt, ...) \ - dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__) + dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)#define drm_info (drm, fmt, ...) \@@ -620,25 +626,25 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,#define drm_dbg_core (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__) -#define drm_dbg_driver (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__) +#define drm_dbg_driver (drm, fmt, ...) \ + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)#define drm_dbg_kms (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)#define drm_dbg_prime (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)#define drm_dbg_atomic (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)#define drm_dbg_vbl (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)#define drm_dbg_state (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)#define drm_dbg_lease (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)#define drm_dbg_dp (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)#define drm_dbg_drmres (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)#define drm_dbg (drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)@@ -727,10 +733,9 @@ void __drm_err(const char *format, ...);#define __DRM_DEFINE_DBG_RATELIMITED (category, drm, fmt, ...) \ ({ \ static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\ - const struct drm_device *drm_ = (drm); \ \ if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \ - drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \ + drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \ })#define drm_dbg_ratelimited (drm, fmt, ...) \@@ -752,13 +757,13 @@ void __drm_err(const char *format, ...);/* Helper for struct drm_device based WARNs */ #define drm_WARN(drm, condition, format, arg...) \ WARN(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg)include/drm/drm_print.h void __drm_err(const char *format, ...); · line 767
Quoted 10 lines
include/drm/drm_print.h +4
-2+dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg) #define drm_WARN_ONCE(drm, condition, format, arg...) \WARN_ONCE (condition,"%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) +dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg)Hi Jani,
These two changes introduce undefined behavior into these macros. The final code generation becomes this (from '
bxt_port_to_phy_channel'):__warn_printk("%s %s: [drm] " "PHY not found for PORT %c", dev_driver_string(__drm_to_dev(display->drm)), dev_name(__drm_to_dev(display->drm)), (port + 'A'));The issue lies in 'dev_name(__drm_to_dev(display->drm))'. After inlining, it becomes this (pseudo code):
struct device *device = display->drm ? display->drm->dev : NULL; const char *name = device->init_name ? device->init_name : kobject_name(&device->kobj); __warn_printk("%s %s: [drm] " "PHY not found for PORT %c", dev_driver_string(device), name, (port + 'A'));
Quoted 6 lines
The issue, of course, is that the 'device' may be NULL when attempting to get
'device->init_name'. The compiler sees this as undefined behavior, which may lead to unexpected outcomes, especially with Clang where paths determined to be
undefined are removed entirely under certain conditions.
Would it be better to just revert the drm_WARN() and drm_WARN_ONCE() macros to use (drm)->dev directly?
It's not ideal, but as the quick fix.
I don't think adding the check in dev_name() would go down well, as there are roughly 5k users of it, and feels like unnecessary code size bloat.
BR,
Jani.
Quoted 7 lines
(Note, I'm working on making this behavior less draconian by adopting a GCC pass, but this will take time to filter out to Linux devs.)
Regards,
-bw
Signature · 1 line
Jani Nikula, Intel
Re: [PATCH 5/5] drm/print: require struct drm_device for drm_err() and friends
Quoted 130 lines · Jani Nikula
Quoted 122 lines · Bill Wendling
Quoted 91 lines · Jani Nikula
The expectation is that the struct
drm_devicebased logging helpers get passed an actual structdrm_devicepointer rather than some random struct pointer where you can dereference the ->dev member.Add a static inline helper to convert struct
drm_deviceto struct device, with the main benefit being the type checking of the macro argument.As a side effect, this also reduces macro argument double references.
Signed-off-by Jani Nikula <[email protected]>--- include/drm/drm_print.h | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-)include/drm/drm_print.h +19
-16@@ -584,9 +584,15 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,* Prefer drm_device based logging over device or prink based logging. */ +/* Helper to enforce struct drm_device type */ +static inline struct device *__drm_to_dev (const struct drm_device *drm) +{ +return drm ? drm->dev :NULL ; +} +/* Helper for struct drm_device based logging. */ #define __drm_printk (drm, level, type, fmt, ...) \ - dev_##level##type((drm) ? (drm)->dev : NULL, "[drm] " fmt, ##__VA_ARGS__) + dev_##level##type(__drm_to_dev(drm), "[drm] " fmt, ##__VA_ARGS__)#define drm_info (drm, fmt, ...) \@@ -620,25 +626,25 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,#define drm_dbg_core (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__) -#define drm_dbg_driver (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_CORE, fmt, ##__VA_ARGS__) +#define drm_dbg_driver (drm, fmt, ...) \ + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRIVER, fmt, ##__VA_ARGS__)#define drm_dbg_kms (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_KMS, fmt, ##__VA_ARGS__)#define drm_dbg_prime (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_PRIME, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_PRIME, fmt, ##__VA_ARGS__)#define drm_dbg_atomic (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)#define drm_dbg_vbl (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_VBL, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_VBL, fmt, ##__VA_ARGS__)#define drm_dbg_state (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_STATE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_STATE, fmt, ##__VA_ARGS__)#define drm_dbg_lease (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_LEASE, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_LEASE, fmt, ##__VA_ARGS__)#define drm_dbg_dp (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DP, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DP, fmt, ##__VA_ARGS__)#define drm_dbg_drmres (drm, fmt, ...) \ - drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__) + drm_dev_dbg(__drm_to_dev(drm), DRM_UT_DRMRES, fmt, ##__VA_ARGS__)#define drm_dbg (drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)@@ -727,10 +733,9 @@ void __drm_err(const char *format, ...);#define __DRM_DEFINE_DBG_RATELIMITED (category, drm, fmt, ...) \ ({ \ static DEFINE_RATELIMIT_STATE(rs_, DEFAULT_RATELIMIT_INTERVAL, DEFAULT_RATELIMIT_BURST);\ - const struct drm_device *drm_ = (drm); \ \ if (drm_debug_enabled(DRM_UT_ ## category) && __ratelimit(&rs_)) \ - drm_dev_printk(drm_ ? drm_->dev : NULL, KERN_DEBUG, fmt, ## __VA_ARGS__); \ + drm_dev_printk(__drm_to_dev(drm), KERN_DEBUG, fmt, ## __VA_ARGS__); \ })#define drm_dbg_ratelimited (drm, fmt, ...) \@@ -752,13 +757,13 @@ void __drm_err(const char *format, ...);/* Helper for struct drm_device based WARNs */ #define drm_WARN(drm, condition, format, arg...) \ WARN(condition, "%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg)include/drm/drm_print.h void __drm_err(const char *format, ...); · line 767
Quoted 10 lines
include/drm/drm_print.h +4
-2+dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg) #define drm_WARN_ONCE(drm, condition, format, arg...) \WARN_ONCE (condition,"%s %s: [drm] " format, \ - dev_driver_string((drm)->dev), \ - dev_name((drm)->dev), ## arg) +dev_driver_string (__drm_to_dev (drm)), \ + dev_name(__drm_to_dev(drm)), ## arg)Hi Jani,
These two changes introduce undefined behavior into these macros. The final code generation becomes this (from '
bxt_port_to_phy_channel'):__warn_printk("%s %s: [drm] " "PHY not found for PORT %c", dev_driver_string(__drm_to_dev(display->drm)), dev_name(__drm_to_dev(display->drm)), (port + 'A'));The issue lies in 'dev_name(__drm_to_dev(display->drm))'. After inlining, it becomes this (pseudo code):
struct device *device = display->drm ? display->drm->dev : NULL; const char *name = device->init_name ? device->init_name : kobject_name(&device->kobj); __warn_printk("%s %s: [drm] " "PHY not found for PORT %c", dev_driver_string(device), name, (port + 'A'));Quoted 6 lines
The issue, of course, is that the 'device' may be NULL when attempting to get
'device->init_name'. The compiler sees this as undefined behavior, which may lead to unexpected outcomes, especially with Clang where paths determined to be
undefined are removed entirely under certain conditions.
Quoted 9 lines
Would it be better to just revert the
drm_WARN()anddrm_WARN_ONCE()macros to use (drm)->dev directly?It's not ideal, but as the quick fix.
I don't think adding the check in
dev_name()would go down well, as there are roughly 5k users of it, and feels like unnecessary code size bloat.
I did a quick check and vmlinux size changed by only about 0.0078%. Most modules didn't change size, some did increase, but typically less than 1%, and a few actually shrank in size (??). The largest change was 6.5840% : counter.ko.
Reverting the patches would probably work, but that relies upon 'drm' never being NULL. Indeed, it looks like 'dev_driver_string' is wary of a NULL 'drm', though it still accesses the argument as if it couldn't be NULL... This all seems like a disaster waiting to happen, to be honest. There should either be no way for 'drm' to be NULL or handling for when it is. What happened with this series of patches is adding only partial handling for when it is NULL.
-bw