* [PATCH v3 01/12] drm/i915: Select DRM_CLIENT_SELECTION
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 20:54 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 02/12] drm/xe: " Thomas Zimmermann
` (14 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin
The Kconfig token DRM_CLIENT_SELECTION will make DRM clients
available to drivers. Select it from i915.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Tvrtko Ursulin <tursulin@ursulin.net>
---
drivers/gpu/drm/i915/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index db400aad88fa..1158a6b97f9a 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -10,6 +10,7 @@ config DRM_I915
# the shmem_readpage() which depends upon tmpfs
select SHMEM
select TMPFS
+ select DRM_CLIENT_SELECTION
select DRM_DISPLAY_DP_HELPER
select DRM_DISPLAY_DSC_HELPER
select DRM_DISPLAY_HDCP_HELPER
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 01/12] drm/i915: Select DRM_CLIENT_SELECTION
2024-10-08 11:59 ` [PATCH v3 01/12] drm/i915: Select DRM_CLIENT_SELECTION Thomas Zimmermann
@ 2024-10-08 20:54 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 20:54 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Jani Nikula, Joonas Lahtinen, Vivi, Rodrigo, Tvrtko Ursulin,
Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; Jani Nikula <jani.nikula@linux.intel.com>; Joonas Lahtinen <joonas.lahtinen@linux.intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>; Tvrtko Ursulin <tursulin@ursulin.net>
Subject: [PATCH v3 01/12] drm/i915: Select DRM_CLIENT_SELECTION
>
> The Kconfig token DRM_CLIENT_SELECTION will make DRM clients
> available to drivers. Select it from i915.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Tvrtko Ursulin <tursulin@ursulin.net>
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/i915/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
> index db400aad88fa..1158a6b97f9a 100644
> --- a/drivers/gpu/drm/i915/Kconfig
> +++ b/drivers/gpu/drm/i915/Kconfig
> @@ -10,6 +10,7 @@ config DRM_I915
> # the shmem_readpage() which depends upon tmpfs
> select SHMEM
> select TMPFS
> + select DRM_CLIENT_SELECTION
> select DRM_DISPLAY_DP_HELPER
> select DRM_DISPLAY_DSC_HELPER
> select DRM_DISPLAY_HDCP_HELPER
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 02/12] drm/xe: Select DRM_CLIENT_SELECTION
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
2024-10-08 11:59 ` [PATCH v3 01/12] drm/i915: Select DRM_CLIENT_SELECTION Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 20:54 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 03/12] drm/fbdev-dma: Select FB_DEFERRED_IO Thomas Zimmermann
` (13 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
Lucas De Marchi, Thomas Hellström, Rodrigo Vivi
The Kconfig token DRM_CLIENT_SELECTION will make DRM clients
available to drivers. Select it from xe.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
index ebd0879e04d4..bac96c0dd66e 100644
--- a/drivers/gpu/drm/xe/Kconfig
+++ b/drivers/gpu/drm/xe/Kconfig
@@ -8,6 +8,7 @@ config DRM_XE
select SHMEM
select TMPFS
select DRM_BUDDY
+ select DRM_CLIENT_SELECTION
select DRM_EXEC
select DRM_KMS_HELPER
select DRM_KUNIT_TEST_HELPERS if DRM_XE_KUNIT_TEST != n
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 02/12] drm/xe: Select DRM_CLIENT_SELECTION
2024-10-08 11:59 ` [PATCH v3 02/12] drm/xe: " Thomas Zimmermann
@ 2024-10-08 20:54 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 20:54 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
De Marchi, Lucas, Thomas Hellström, Vivi, Rodrigo,
Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; De Marchi, Lucas <lucas.demarchi@intel.com>; Thomas Hellström <thomas.hellstrom@linux.intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>
Subject: [PATCH v3 02/12] drm/xe: Select DRM_CLIENT_SELECTION
>
> The Kconfig token DRM_CLIENT_SELECTION will make DRM clients
> available to drivers. Select it from xe.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/xe/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
> index ebd0879e04d4..bac96c0dd66e 100644
> --- a/drivers/gpu/drm/xe/Kconfig
> +++ b/drivers/gpu/drm/xe/Kconfig
> @@ -8,6 +8,7 @@ config DRM_XE
> select SHMEM
> select TMPFS
> select DRM_BUDDY
> + select DRM_CLIENT_SELECTION
> select DRM_EXEC
> select DRM_KMS_HELPER
> select DRM_KUNIT_TEST_HELPERS if DRM_XE_KUNIT_TEST != n
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 03/12] drm/fbdev-dma: Select FB_DEFERRED_IO
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
2024-10-08 11:59 ` [PATCH v3 01/12] drm/i915: Select DRM_CLIENT_SELECTION Thomas Zimmermann
2024-10-08 11:59 ` [PATCH v3 02/12] drm/xe: " Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 20:55 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 04/12] drm/fbdev: Select fbdev I/O helpers from modules that require them Thomas Zimmermann
` (12 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
kernel test robot, Maarten Lankhorst, Maxime Ripard, stable
Commit 808a40b69468 ("drm/fbdev-dma: Implement damage handling and
deferred I/O") added deferred I/O for fbdev-dma. Also select the
Kconfig symbol FB_DEFERRED_IO (via FB_DMAMEM_HELPERS_DEFERRED). Fixes
build errors about missing fbdefio, such as
drivers/gpu/drm/drm_fbdev_dma.c:218:26: error: 'struct drm_fb_helper' has no member named 'fbdefio'
218 | fb_helper->fbdefio.delay = HZ / 20;
| ^~
drivers/gpu/drm/drm_fbdev_dma.c:219:26: error: 'struct drm_fb_helper' has no member named 'fbdefio'
219 | fb_helper->fbdefio.deferred_io = drm_fb_helper_deferred_io;
| ^~
drivers/gpu/drm/drm_fbdev_dma.c:221:21: error: 'struct fb_info' has no member named 'fbdefio'
221 | info->fbdefio = &fb_helper->fbdefio;
| ^~
drivers/gpu/drm/drm_fbdev_dma.c:221:43: error: 'struct drm_fb_helper' has no member named 'fbdefio'
221 | info->fbdefio = &fb_helper->fbdefio;
| ^~
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202410050241.Mox9QRjP-lkp@intel.com/
Fixes: 808a40b69468 ("drm/fbdev-dma: Implement damage handling and deferred I/O")
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: <stable@vger.kernel.org> # v6.11+
---
drivers/gpu/drm/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 1df4e627e3d3..db2e206a117c 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -338,7 +338,7 @@ config DRM_TTM_HELPER
config DRM_GEM_DMA_HELPER
tristate
depends on DRM
- select FB_DMAMEM_HELPERS if DRM_FBDEV_EMULATION
+ select FB_DMAMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
help
Choose this if you need the GEM DMA helper functions
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 03/12] drm/fbdev-dma: Select FB_DEFERRED_IO
2024-10-08 11:59 ` [PATCH v3 03/12] drm/fbdev-dma: Select FB_DEFERRED_IO Thomas Zimmermann
@ 2024-10-08 20:55 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 20:55 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
lkp, Maarten Lankhorst, Maxime Ripard, stable@vger.kernel.org,
Cavitt, Jonathan
-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; lkp <lkp@intel.com>; Maarten Lankhorst <maarten.lankhorst@linux.intel.com>; Maxime Ripard <mripard@kernel.org>; stable@vger.kernel.org
Subject: [PATCH v3 03/12] drm/fbdev-dma: Select FB_DEFERRED_IO
>
> Commit 808a40b69468 ("drm/fbdev-dma: Implement damage handling and
> deferred I/O") added deferred I/O for fbdev-dma. Also select the
> Kconfig symbol FB_DEFERRED_IO (via FB_DMAMEM_HELPERS_DEFERRED). Fixes
> build errors about missing fbdefio, such as
>
> drivers/gpu/drm/drm_fbdev_dma.c:218:26: error: 'struct drm_fb_helper' has no member named 'fbdefio'
> 218 | fb_helper->fbdefio.delay = HZ / 20;
> | ^~
> drivers/gpu/drm/drm_fbdev_dma.c:219:26: error: 'struct drm_fb_helper' has no member named 'fbdefio'
> 219 | fb_helper->fbdefio.deferred_io = drm_fb_helper_deferred_io;
> | ^~
> drivers/gpu/drm/drm_fbdev_dma.c:221:21: error: 'struct fb_info' has no member named 'fbdefio'
> 221 | info->fbdefio = &fb_helper->fbdefio;
> | ^~
> drivers/gpu/drm/drm_fbdev_dma.c:221:43: error: 'struct drm_fb_helper' has no member named 'fbdefio'
> 221 | info->fbdefio = &fb_helper->fbdefio;
> | ^~
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202410050241.Mox9QRjP-lkp@intel.com/
> Fixes: 808a40b69468 ("drm/fbdev-dma: Implement damage handling and deferred I/O")
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Javier Martinez Canillas <javierm@redhat.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: <stable@vger.kernel.org> # v6.11+
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/Kconfig | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 1df4e627e3d3..db2e206a117c 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -338,7 +338,7 @@ config DRM_TTM_HELPER
> config DRM_GEM_DMA_HELPER
> tristate
> depends on DRM
> - select FB_DMAMEM_HELPERS if DRM_FBDEV_EMULATION
> + select FB_DMAMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
> help
> Choose this if you need the GEM DMA helper functions
>
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 04/12] drm/fbdev: Select fbdev I/O helpers from modules that require them
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (2 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 03/12] drm/fbdev-dma: Select FB_DEFERRED_IO Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 20:55 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 05/12] drm/fbdev: Store fbdev module parameters in separate file Thomas Zimmermann
` (11 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann
Fbdev emulation for SHMEM and TTM requires helpers from the fbdev
subsystem. Select them from the modules that use them instead of the
core DRM module.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index db2e206a117c..88c4837d070c 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -11,7 +11,6 @@ menuconfig DRM
select DRM_PANEL_ORIENTATION_QUIRKS
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
select FB_CORE if DRM_FBDEV_EMULATION
- select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
select HDMI
select I2C
select DMA_SHARED_BUFFER
@@ -332,6 +331,7 @@ config DRM_TTM_HELPER
tristate
depends on DRM
select DRM_TTM
+ select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
help
Helpers for ttm-based gem objects
@@ -345,6 +345,7 @@ config DRM_GEM_DMA_HELPER
config DRM_GEM_SHMEM_HELPER
tristate
depends on DRM && MMU
+ select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
help
Choose this if you need the GEM shmem helper functions
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 04/12] drm/fbdev: Select fbdev I/O helpers from modules that require them
2024-10-08 11:59 ` [PATCH v3 04/12] drm/fbdev: Select fbdev I/O helpers from modules that require them Thomas Zimmermann
@ 2024-10-08 20:55 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 20:55 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 04/12] drm/fbdev: Select fbdev I/O helpers from modules that require them
>
> Fbdev emulation for SHMEM and TTM requires helpers from the fbdev
> subsystem. Select them from the modules that use them instead of the
> core DRM module.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/Kconfig | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index db2e206a117c..88c4837d070c 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -11,7 +11,6 @@ menuconfig DRM
> select DRM_PANEL_ORIENTATION_QUIRKS
> select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
> select FB_CORE if DRM_FBDEV_EMULATION
> - select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
> select HDMI
> select I2C
> select DMA_SHARED_BUFFER
> @@ -332,6 +331,7 @@ config DRM_TTM_HELPER
> tristate
> depends on DRM
> select DRM_TTM
> + select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
> help
> Helpers for ttm-based gem objects
>
> @@ -345,6 +345,7 @@ config DRM_GEM_DMA_HELPER
> config DRM_GEM_SHMEM_HELPER
> tristate
> depends on DRM && MMU
> + select FB_SYSMEM_HELPERS_DEFERRED if DRM_FBDEV_EMULATION
> help
> Choose this if you need the GEM shmem helper functions
>
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 05/12] drm/fbdev: Store fbdev module parameters in separate file
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (3 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 04/12] drm/fbdev: Select fbdev I/O helpers from modules that require them Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 20:56 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 06/12] drm/client: Move client event handlers to drm_client_event.c Thomas Zimmermann
` (10 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann
The fbdev code does not really belong into drm_kms_helper.ko. But
there are module parameters that control the behavior of the fbdev
emulation. It is not possible to remove them from the module without
breaking someone's installation.
Therefore move the fbdev module parameters to drm_kms_helper_common.c,
so that the actual fbdev implementaton can later go into a separate
module.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/drm_fb_helper.c | 31 ----------------------
drivers/gpu/drm/drm_internal.h | 7 +++++
drivers/gpu/drm/drm_kms_helper_common.c | 35 +++++++++++++++++++++++++
3 files changed, 42 insertions(+), 31 deletions(-)
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index d5e8994345bb..004f7c437897 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -46,37 +46,6 @@
#include "drm_internal.h"
#include "drm_crtc_internal.h"
-static bool drm_fbdev_emulation = true;
-module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600);
-MODULE_PARM_DESC(fbdev_emulation,
- "Enable legacy fbdev emulation [default=true]");
-
-static int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC;
-module_param(drm_fbdev_overalloc, int, 0444);
-MODULE_PARM_DESC(drm_fbdev_overalloc,
- "Overallocation of the fbdev buffer (%) [default="
- __MODULE_STRING(CONFIG_DRM_FBDEV_OVERALLOC) "]");
-
-/*
- * In order to keep user-space compatibility, we want in certain use-cases
- * to keep leaking the fbdev physical address to the user-space program
- * handling the fbdev buffer.
- *
- * This is a bad habit, essentially kept to support closed-source OpenGL
- * drivers that should really be moved into open-source upstream projects
- * instead of using legacy physical addresses in user space to communicate
- * with other out-of-tree kernel modules.
- *
- * This module_param *should* be removed as soon as possible and be
- * considered as a broken and legacy behaviour from a modern fbdev device.
- */
-static bool drm_leak_fbdev_smem;
-#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
-module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
-MODULE_PARM_DESC(drm_leak_fbdev_smem,
- "Allow unsafe leaking fbdev physical smem address [default=false]");
-#endif
-
static LIST_HEAD(kernel_fb_helper_list);
static DEFINE_MUTEX(kernel_fb_helper_lock);
diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
index 1705bfc90b1e..9af72bab86d1 100644
--- a/drivers/gpu/drm/drm_internal.h
+++ b/drivers/gpu/drm/drm_internal.h
@@ -54,6 +54,13 @@ bool drm_dev_needs_global_mutex(struct drm_device *dev);
struct drm_file *drm_file_alloc(struct drm_minor *minor);
void drm_file_free(struct drm_file *file);
+/* drm_kms_helper_common.c */
+#if defined(CONFIG_DRM_FBDEV_EMULATION)
+extern bool drm_fbdev_emulation;
+extern int drm_fbdev_overalloc;
+extern bool drm_leak_fbdev_smem;
+#endif
+
#ifdef CONFIG_PCI
/* drm_pci.c */
diff --git a/drivers/gpu/drm/drm_kms_helper_common.c b/drivers/gpu/drm/drm_kms_helper_common.c
index 0c7550c0462b..cfdbc1ac88dc 100644
--- a/drivers/gpu/drm/drm_kms_helper_common.c
+++ b/drivers/gpu/drm/drm_kms_helper_common.c
@@ -27,6 +27,41 @@
#include <linux/module.h>
+#include "drm_internal.h"
+
+#if defined(CONFIG_DRM_FBDEV_EMULATION)
+bool drm_fbdev_emulation = true;
+module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600);
+MODULE_PARM_DESC(fbdev_emulation,
+ "Enable legacy fbdev emulation [default=true]");
+
+int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC;
+module_param(drm_fbdev_overalloc, int, 0444);
+MODULE_PARM_DESC(drm_fbdev_overalloc,
+ "Overallocation of the fbdev buffer (%) [default="
+ __MODULE_STRING(CONFIG_DRM_FBDEV_OVERALLOC) "]");
+
+/*
+ * In order to keep user-space compatibility, we want in certain use-cases
+ * to keep leaking the fbdev physical address to the user-space program
+ * handling the fbdev buffer.
+ *
+ * This is a bad habit, essentially kept to support closed-source OpenGL
+ * drivers that should really be moved into open-source upstream projects
+ * instead of using legacy physical addresses in user space to communicate
+ * with other out-of-tree kernel modules.
+ *
+ * This module_param *should* be removed as soon as possible and be
+ * considered as a broken and legacy behaviour from a modern fbdev device.
+ */
+bool drm_leak_fbdev_smem;
+#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
+module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
+MODULE_PARM_DESC(drm_leak_fbdev_smem,
+ "Allow unsafe leaking fbdev physical smem address [default=false]");
+#endif
+#endif
+
MODULE_AUTHOR("David Airlie, Jesse Barnes");
MODULE_DESCRIPTION("DRM KMS helper");
MODULE_LICENSE("GPL and additional rights");
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 05/12] drm/fbdev: Store fbdev module parameters in separate file
2024-10-08 11:59 ` [PATCH v3 05/12] drm/fbdev: Store fbdev module parameters in separate file Thomas Zimmermann
@ 2024-10-08 20:56 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 20:56 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 05/12] drm/fbdev: Store fbdev module parameters in separate file
>
> The fbdev code does not really belong into drm_kms_helper.ko. But
> there are module parameters that control the behavior of the fbdev
> emulation. It is not possible to remove them from the module without
> breaking someone's installation.
>
> Therefore move the fbdev module parameters to drm_kms_helper_common.c,
> so that the actual fbdev implementaton can later go into a separate
> module.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/drm_fb_helper.c | 31 ----------------------
> drivers/gpu/drm/drm_internal.h | 7 +++++
> drivers/gpu/drm/drm_kms_helper_common.c | 35 +++++++++++++++++++++++++
> 3 files changed, 42 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index d5e8994345bb..004f7c437897 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -46,37 +46,6 @@
> #include "drm_internal.h"
> #include "drm_crtc_internal.h"
>
> -static bool drm_fbdev_emulation = true;
> -module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600);
> -MODULE_PARM_DESC(fbdev_emulation,
> - "Enable legacy fbdev emulation [default=true]");
> -
> -static int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC;
> -module_param(drm_fbdev_overalloc, int, 0444);
> -MODULE_PARM_DESC(drm_fbdev_overalloc,
> - "Overallocation of the fbdev buffer (%) [default="
> - __MODULE_STRING(CONFIG_DRM_FBDEV_OVERALLOC) "]");
> -
> -/*
> - * In order to keep user-space compatibility, we want in certain use-cases
> - * to keep leaking the fbdev physical address to the user-space program
> - * handling the fbdev buffer.
> - *
> - * This is a bad habit, essentially kept to support closed-source OpenGL
> - * drivers that should really be moved into open-source upstream projects
> - * instead of using legacy physical addresses in user space to communicate
> - * with other out-of-tree kernel modules.
> - *
> - * This module_param *should* be removed as soon as possible and be
> - * considered as a broken and legacy behaviour from a modern fbdev device.
> - */
> -static bool drm_leak_fbdev_smem;
> -#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
> -module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
> -MODULE_PARM_DESC(drm_leak_fbdev_smem,
> - "Allow unsafe leaking fbdev physical smem address [default=false]");
> -#endif
> -
> static LIST_HEAD(kernel_fb_helper_list);
> static DEFINE_MUTEX(kernel_fb_helper_lock);
>
> diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
> index 1705bfc90b1e..9af72bab86d1 100644
> --- a/drivers/gpu/drm/drm_internal.h
> +++ b/drivers/gpu/drm/drm_internal.h
> @@ -54,6 +54,13 @@ bool drm_dev_needs_global_mutex(struct drm_device *dev);
> struct drm_file *drm_file_alloc(struct drm_minor *minor);
> void drm_file_free(struct drm_file *file);
>
> +/* drm_kms_helper_common.c */
> +#if defined(CONFIG_DRM_FBDEV_EMULATION)
> +extern bool drm_fbdev_emulation;
> +extern int drm_fbdev_overalloc;
> +extern bool drm_leak_fbdev_smem;
> +#endif
> +
> #ifdef CONFIG_PCI
>
> /* drm_pci.c */
> diff --git a/drivers/gpu/drm/drm_kms_helper_common.c b/drivers/gpu/drm/drm_kms_helper_common.c
> index 0c7550c0462b..cfdbc1ac88dc 100644
> --- a/drivers/gpu/drm/drm_kms_helper_common.c
> +++ b/drivers/gpu/drm/drm_kms_helper_common.c
> @@ -27,6 +27,41 @@
>
> #include <linux/module.h>
>
> +#include "drm_internal.h"
> +
> +#if defined(CONFIG_DRM_FBDEV_EMULATION)
> +bool drm_fbdev_emulation = true;
> +module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600);
> +MODULE_PARM_DESC(fbdev_emulation,
> + "Enable legacy fbdev emulation [default=true]");
> +
> +int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC;
> +module_param(drm_fbdev_overalloc, int, 0444);
> +MODULE_PARM_DESC(drm_fbdev_overalloc,
> + "Overallocation of the fbdev buffer (%) [default="
> + __MODULE_STRING(CONFIG_DRM_FBDEV_OVERALLOC) "]");
> +
> +/*
> + * In order to keep user-space compatibility, we want in certain use-cases
> + * to keep leaking the fbdev physical address to the user-space program
> + * handling the fbdev buffer.
> + *
> + * This is a bad habit, essentially kept to support closed-source OpenGL
> + * drivers that should really be moved into open-source upstream projects
> + * instead of using legacy physical addresses in user space to communicate
> + * with other out-of-tree kernel modules.
> + *
> + * This module_param *should* be removed as soon as possible and be
> + * considered as a broken and legacy behaviour from a modern fbdev device.
> + */
> +bool drm_leak_fbdev_smem;
> +#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
> +module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
> +MODULE_PARM_DESC(drm_leak_fbdev_smem,
> + "Allow unsafe leaking fbdev physical smem address [default=false]");
> +#endif
> +#endif
> +
> MODULE_AUTHOR("David Airlie, Jesse Barnes");
> MODULE_DESCRIPTION("DRM KMS helper");
> MODULE_LICENSE("GPL and additional rights");
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 06/12] drm/client: Move client event handlers to drm_client_event.c
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (4 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 05/12] drm/fbdev: Store fbdev module parameters in separate file Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 21:11 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks Thomas Zimmermann
` (9 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Karol Herbst, Lyude Paul, Danilo Krummrich
A number of DRM-client functions serve as entry points from device
operations to client code. Moving them info a separate file will later
allow for a more fine-grained kernel configuration. For most of the
users it is sufficient to include <drm/drm_client_event.h> instead of
the full driver-side interface in <drm/drm_client.h>
v2:
- rename new files to drm_client_event.{c,h}
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tursulin@ursulin.net>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Danilo Krummrich <dakr@redhat.com>
---
Documentation/gpu/drm-client.rst | 3 +
drivers/gpu/drm/Makefile | 1 +
drivers/gpu/drm/drm_client.c | 121 ----------------
drivers/gpu/drm/drm_client_event.c | 135 ++++++++++++++++++
drivers/gpu/drm/drm_drv.c | 2 +-
drivers/gpu/drm/drm_file.c | 2 +-
drivers/gpu/drm/drm_probe_helper.c | 2 +-
.../drm/i915/display/intel_display_driver.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_vga.c | 2 +-
include/drm/drm_client.h | 4 -
include/drm/drm_client_event.h | 12 ++
11 files changed, 156 insertions(+), 130 deletions(-)
create mode 100644 drivers/gpu/drm/drm_client_event.c
create mode 100644 include/drm/drm_client_event.h
diff --git a/Documentation/gpu/drm-client.rst b/Documentation/gpu/drm-client.rst
index 58b5a1d1219d..cbcfe30de777 100644
--- a/Documentation/gpu/drm-client.rst
+++ b/Documentation/gpu/drm-client.rst
@@ -13,3 +13,6 @@ Kernel clients
.. kernel-doc:: drivers/gpu/drm/drm_client_modeset.c
:export:
+
+.. kernel-doc:: drivers/gpu/drm/drm_client_event.c
+ :export:
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 3894f43f6d47..6b7d168ca790 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -42,6 +42,7 @@ drm-y := \
drm_bridge.o \
drm_cache.o \
drm_client.o \
+ drm_client_event.o \
drm_client_modeset.o \
drm_color_mgmt.o \
drm_connector.o \
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
index bfedcbf516db..549b28a5918c 100644
--- a/drivers/gpu/drm/drm_client.c
+++ b/drivers/gpu/drm/drm_client.c
@@ -10,7 +10,6 @@
#include <linux/slab.h>
#include <drm/drm_client.h>
-#include <drm/drm_debugfs.h>
#include <drm/drm_device.h>
#include <drm/drm_drv.h>
#include <drm/drm_file.h>
@@ -172,99 +171,6 @@ void drm_client_release(struct drm_client_dev *client)
}
EXPORT_SYMBOL(drm_client_release);
-/**
- * drm_client_dev_unregister - Unregister clients
- * @dev: DRM device
- *
- * This function releases all clients by calling each client's
- * &drm_client_funcs.unregister callback. The callback function
- * is responsibe for releaseing all resources including the client
- * itself.
- *
- * The helper drm_dev_unregister() calls this function. Drivers
- * that use it don't need to call this function themselves.
- */
-void drm_client_dev_unregister(struct drm_device *dev)
-{
- struct drm_client_dev *client, *tmp;
-
- if (!drm_core_check_feature(dev, DRIVER_MODESET))
- return;
-
- mutex_lock(&dev->clientlist_mutex);
- list_for_each_entry_safe(client, tmp, &dev->clientlist, list) {
- list_del(&client->list);
- if (client->funcs && client->funcs->unregister) {
- client->funcs->unregister(client);
- } else {
- drm_client_release(client);
- kfree(client);
- }
- }
- mutex_unlock(&dev->clientlist_mutex);
-}
-EXPORT_SYMBOL(drm_client_dev_unregister);
-
-/**
- * drm_client_dev_hotplug - Send hotplug event to clients
- * @dev: DRM device
- *
- * This function calls the &drm_client_funcs.hotplug callback on the attached clients.
- *
- * drm_kms_helper_hotplug_event() calls this function, so drivers that use it
- * don't need to call this function themselves.
- */
-void drm_client_dev_hotplug(struct drm_device *dev)
-{
- struct drm_client_dev *client;
- int ret;
-
- if (!drm_core_check_feature(dev, DRIVER_MODESET))
- return;
-
- if (!dev->mode_config.num_connector) {
- drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n");
- return;
- }
-
- mutex_lock(&dev->clientlist_mutex);
- list_for_each_entry(client, &dev->clientlist, list) {
- if (!client->funcs || !client->funcs->hotplug)
- continue;
-
- if (client->hotplug_failed)
- continue;
-
- ret = client->funcs->hotplug(client);
- drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
- if (ret)
- client->hotplug_failed = true;
- }
- mutex_unlock(&dev->clientlist_mutex);
-}
-EXPORT_SYMBOL(drm_client_dev_hotplug);
-
-void drm_client_dev_restore(struct drm_device *dev)
-{
- struct drm_client_dev *client;
- int ret;
-
- if (!drm_core_check_feature(dev, DRIVER_MODESET))
- return;
-
- mutex_lock(&dev->clientlist_mutex);
- list_for_each_entry(client, &dev->clientlist, list) {
- if (!client->funcs || !client->funcs->restore)
- continue;
-
- ret = client->funcs->restore(client);
- drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
- if (!ret) /* The first one to return zero gets the privilege to restore */
- break;
- }
- mutex_unlock(&dev->clientlist_mutex);
-}
-
static void drm_client_buffer_delete(struct drm_client_buffer *buffer)
{
if (buffer->gem) {
@@ -584,30 +490,3 @@ int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_re
0, 0, NULL, 0);
}
EXPORT_SYMBOL(drm_client_framebuffer_flush);
-
-#ifdef CONFIG_DEBUG_FS
-static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
-{
- struct drm_debugfs_entry *entry = m->private;
- struct drm_device *dev = entry->dev;
- struct drm_printer p = drm_seq_file_printer(m);
- struct drm_client_dev *client;
-
- mutex_lock(&dev->clientlist_mutex);
- list_for_each_entry(client, &dev->clientlist, list)
- drm_printf(&p, "%s\n", client->name);
- mutex_unlock(&dev->clientlist_mutex);
-
- return 0;
-}
-
-static const struct drm_debugfs_info drm_client_debugfs_list[] = {
- { "internal_clients", drm_client_debugfs_internal_clients, 0 },
-};
-
-void drm_client_debugfs_init(struct drm_device *dev)
-{
- drm_debugfs_add_files(dev, drm_client_debugfs_list,
- ARRAY_SIZE(drm_client_debugfs_list));
-}
-#endif
diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
new file mode 100644
index 000000000000..d13d44320c5c
--- /dev/null
+++ b/drivers/gpu/drm/drm_client_event.c
@@ -0,0 +1,135 @@
+// SPDX-License-Identifier: GPL-2.0 or MIT
+/*
+ * Copyright 2018 Noralf Trønnes
+ */
+
+#include <linux/list.h>
+#include <linux/mutex.h>
+#include <linux/seq_file.h>
+
+#include <drm/drm_client.h>
+#include <drm/drm_client_event.h>
+#include <drm/drm_debugfs.h>
+#include <drm/drm_device.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_print.h>
+
+/**
+ * drm_client_dev_unregister - Unregister clients
+ * @dev: DRM device
+ *
+ * This function releases all clients by calling each client's
+ * &drm_client_funcs.unregister callback. The callback function
+ * is responsibe for releaseing all resources including the client
+ * itself.
+ *
+ * The helper drm_dev_unregister() calls this function. Drivers
+ * that use it don't need to call this function themselves.
+ */
+void drm_client_dev_unregister(struct drm_device *dev)
+{
+ struct drm_client_dev *client, *tmp;
+
+ if (!drm_core_check_feature(dev, DRIVER_MODESET))
+ return;
+
+ mutex_lock(&dev->clientlist_mutex);
+ list_for_each_entry_safe(client, tmp, &dev->clientlist, list) {
+ list_del(&client->list);
+ if (client->funcs && client->funcs->unregister) {
+ client->funcs->unregister(client);
+ } else {
+ drm_client_release(client);
+ kfree(client);
+ }
+ }
+ mutex_unlock(&dev->clientlist_mutex);
+}
+EXPORT_SYMBOL(drm_client_dev_unregister);
+
+/**
+ * drm_client_dev_hotplug - Send hotplug event to clients
+ * @dev: DRM device
+ *
+ * This function calls the &drm_client_funcs.hotplug callback on the attached clients.
+ *
+ * drm_kms_helper_hotplug_event() calls this function, so drivers that use it
+ * don't need to call this function themselves.
+ */
+void drm_client_dev_hotplug(struct drm_device *dev)
+{
+ struct drm_client_dev *client;
+ int ret;
+
+ if (!drm_core_check_feature(dev, DRIVER_MODESET))
+ return;
+
+ if (!dev->mode_config.num_connector) {
+ drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n");
+ return;
+ }
+
+ mutex_lock(&dev->clientlist_mutex);
+ list_for_each_entry(client, &dev->clientlist, list) {
+ if (!client->funcs || !client->funcs->hotplug)
+ continue;
+
+ if (client->hotplug_failed)
+ continue;
+
+ ret = client->funcs->hotplug(client);
+ drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+ if (ret)
+ client->hotplug_failed = true;
+ }
+ mutex_unlock(&dev->clientlist_mutex);
+}
+EXPORT_SYMBOL(drm_client_dev_hotplug);
+
+void drm_client_dev_restore(struct drm_device *dev)
+{
+ struct drm_client_dev *client;
+ int ret;
+
+ if (!drm_core_check_feature(dev, DRIVER_MODESET))
+ return;
+
+ mutex_lock(&dev->clientlist_mutex);
+ list_for_each_entry(client, &dev->clientlist, list) {
+ if (!client->funcs || !client->funcs->restore)
+ continue;
+
+ ret = client->funcs->restore(client);
+ drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+ if (!ret) /* The first one to return zero gets the privilege to restore */
+ break;
+ }
+ mutex_unlock(&dev->clientlist_mutex);
+}
+
+#ifdef CONFIG_DEBUG_FS
+static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
+{
+ struct drm_debugfs_entry *entry = m->private;
+ struct drm_device *dev = entry->dev;
+ struct drm_printer p = drm_seq_file_printer(m);
+ struct drm_client_dev *client;
+
+ mutex_lock(&dev->clientlist_mutex);
+ list_for_each_entry(client, &dev->clientlist, list)
+ drm_printf(&p, "%s\n", client->name);
+ mutex_unlock(&dev->clientlist_mutex);
+
+ return 0;
+}
+
+static const struct drm_debugfs_info drm_client_debugfs_list[] = {
+ { "internal_clients", drm_client_debugfs_internal_clients, 0 },
+};
+
+void drm_client_debugfs_init(struct drm_device *dev)
+{
+ drm_debugfs_add_files(dev, drm_client_debugfs_list,
+ ARRAY_SIZE(drm_client_debugfs_list));
+}
+#endif
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index ac30b0ec9d93..c2c172eb25df 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -38,7 +38,7 @@
#include <drm/drm_accel.h>
#include <drm/drm_cache.h>
-#include <drm/drm_client.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_color_mgmt.h>
#include <drm/drm_drv.h>
#include <drm/drm_file.h>
diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
index ad1dc638c83b..7415abb7faca 100644
--- a/drivers/gpu/drm/drm_file.c
+++ b/drivers/gpu/drm/drm_file.c
@@ -40,7 +40,7 @@
#include <linux/slab.h>
#include <linux/vga_switcheroo.h>
-#include <drm/drm_client.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_drv.h>
#include <drm/drm_file.h>
#include <drm/drm_gem.h>
diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index 92f21764246f..96b266b37ba4 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -33,7 +33,7 @@
#include <linux/moduleparam.h>
#include <drm/drm_bridge.h>
-#include <drm/drm_client.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_crtc.h>
#include <drm/drm_edid.h>
#include <drm/drm_fourcc.h>
diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
index c106fb2dd20b..673f9b965494 100644
--- a/drivers/gpu/drm/i915/display/intel_display_driver.c
+++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
@@ -11,7 +11,7 @@
#include <acpi/video.h>
#include <drm/display/drm_dp_mst_helper.h>
#include <drm/drm_atomic_helper.h>
-#include <drm/drm_client.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_mode_config.h>
#include <drm/drm_privacy_screen_consumer.h>
#include <drm/drm_probe_helper.h>
diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
index ab4e11dc0b8a..a6c375a24154 100644
--- a/drivers/gpu/drm/nouveau/nouveau_vga.c
+++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
@@ -2,7 +2,7 @@
#include <linux/vgaarb.h>
#include <linux/vga_switcheroo.h>
-#include <drm/drm_fb_helper.h>
+#include <drm/drm_client_event.h>
#include "nouveau_drv.h"
#include "nouveau_acpi.h"
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index bc0e66f9c425..dfd5afcc9463 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -121,10 +121,6 @@ int drm_client_init(struct drm_device *dev, struct drm_client_dev *client,
void drm_client_release(struct drm_client_dev *client);
void drm_client_register(struct drm_client_dev *client);
-void drm_client_dev_unregister(struct drm_device *dev);
-void drm_client_dev_hotplug(struct drm_device *dev);
-void drm_client_dev_restore(struct drm_device *dev);
-
/**
* struct drm_client_buffer - DRM client buffer
*/
diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
new file mode 100644
index 000000000000..2c8915241120
--- /dev/null
+++ b/include/drm/drm_client_event.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 or MIT */
+
+#ifndef _DRM_CLIENT_EVENT_H_
+#define _DRM_CLIENT_EVENT_H_
+
+struct drm_device;
+
+void drm_client_dev_unregister(struct drm_device *dev);
+void drm_client_dev_hotplug(struct drm_device *dev);
+void drm_client_dev_restore(struct drm_device *dev);
+
+#endif
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 06/12] drm/client: Move client event handlers to drm_client_event.c
2024-10-08 11:59 ` [PATCH v3 06/12] drm/client: Move client event handlers to drm_client_event.c Thomas Zimmermann
@ 2024-10-08 21:11 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 21:11 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Jani Nikula, Vivi, Rodrigo, Joonas Lahtinen, Tvrtko Ursulin,
Karol Herbst, Lyude Paul, Danilo Krummrich, Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; Jani Nikula <jani.nikula@linux.intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>; Joonas Lahtinen <joonas.lahtinen@linux.intel.com>; Tvrtko Ursulin <tursulin@ursulin.net>; Karol Herbst <kherbst@redhat.com>; Lyude Paul <lyude@redhat.com>; Danilo Krummrich <dakr@redhat.com>
Subject: [PATCH v3 06/12] drm/client: Move client event handlers to drm_client_event.c
>
> A number of DRM-client functions serve as entry points from device
> operations to client code. Moving them info a separate file will later
> allow for a more fine-grained kernel configuration. For most of the
> users it is sufficient to include <drm/drm_client_event.h> instead of
> the full driver-side interface in <drm/drm_client.h>
>
> v2:
> - rename new files to drm_client_event.{c,h}
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Tvrtko Ursulin <tursulin@ursulin.net>
> Cc: Karol Herbst <kherbst@redhat.com>
> Cc: Lyude Paul <lyude@redhat.com>
> Cc: Danilo Krummrich <dakr@redhat.com>
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> Documentation/gpu/drm-client.rst | 3 +
> drivers/gpu/drm/Makefile | 1 +
> drivers/gpu/drm/drm_client.c | 121 ----------------
> drivers/gpu/drm/drm_client_event.c | 135 ++++++++++++++++++
> drivers/gpu/drm/drm_drv.c | 2 +-
> drivers/gpu/drm/drm_file.c | 2 +-
> drivers/gpu/drm/drm_probe_helper.c | 2 +-
> .../drm/i915/display/intel_display_driver.c | 2 +-
> drivers/gpu/drm/nouveau/nouveau_vga.c | 2 +-
> include/drm/drm_client.h | 4 -
> include/drm/drm_client_event.h | 12 ++
> 11 files changed, 156 insertions(+), 130 deletions(-)
> create mode 100644 drivers/gpu/drm/drm_client_event.c
> create mode 100644 include/drm/drm_client_event.h
>
> diff --git a/Documentation/gpu/drm-client.rst b/Documentation/gpu/drm-client.rst
> index 58b5a1d1219d..cbcfe30de777 100644
> --- a/Documentation/gpu/drm-client.rst
> +++ b/Documentation/gpu/drm-client.rst
> @@ -13,3 +13,6 @@ Kernel clients
>
> .. kernel-doc:: drivers/gpu/drm/drm_client_modeset.c
> :export:
> +
> +.. kernel-doc:: drivers/gpu/drm/drm_client_event.c
> + :export:
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 3894f43f6d47..6b7d168ca790 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -42,6 +42,7 @@ drm-y := \
> drm_bridge.o \
> drm_cache.o \
> drm_client.o \
> + drm_client_event.o \
> drm_client_modeset.o \
> drm_color_mgmt.o \
> drm_connector.o \
> diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
> index bfedcbf516db..549b28a5918c 100644
> --- a/drivers/gpu/drm/drm_client.c
> +++ b/drivers/gpu/drm/drm_client.c
> @@ -10,7 +10,6 @@
> #include <linux/slab.h>
>
> #include <drm/drm_client.h>
> -#include <drm/drm_debugfs.h>
> #include <drm/drm_device.h>
> #include <drm/drm_drv.h>
> #include <drm/drm_file.h>
> @@ -172,99 +171,6 @@ void drm_client_release(struct drm_client_dev *client)
> }
> EXPORT_SYMBOL(drm_client_release);
>
> -/**
> - * drm_client_dev_unregister - Unregister clients
> - * @dev: DRM device
> - *
> - * This function releases all clients by calling each client's
> - * &drm_client_funcs.unregister callback. The callback function
> - * is responsibe for releaseing all resources including the client
> - * itself.
> - *
> - * The helper drm_dev_unregister() calls this function. Drivers
> - * that use it don't need to call this function themselves.
> - */
> -void drm_client_dev_unregister(struct drm_device *dev)
> -{
> - struct drm_client_dev *client, *tmp;
> -
> - if (!drm_core_check_feature(dev, DRIVER_MODESET))
> - return;
> -
> - mutex_lock(&dev->clientlist_mutex);
> - list_for_each_entry_safe(client, tmp, &dev->clientlist, list) {
> - list_del(&client->list);
> - if (client->funcs && client->funcs->unregister) {
> - client->funcs->unregister(client);
> - } else {
> - drm_client_release(client);
> - kfree(client);
> - }
> - }
> - mutex_unlock(&dev->clientlist_mutex);
> -}
> -EXPORT_SYMBOL(drm_client_dev_unregister);
> -
> -/**
> - * drm_client_dev_hotplug - Send hotplug event to clients
> - * @dev: DRM device
> - *
> - * This function calls the &drm_client_funcs.hotplug callback on the attached clients.
> - *
> - * drm_kms_helper_hotplug_event() calls this function, so drivers that use it
> - * don't need to call this function themselves.
> - */
> -void drm_client_dev_hotplug(struct drm_device *dev)
> -{
> - struct drm_client_dev *client;
> - int ret;
> -
> - if (!drm_core_check_feature(dev, DRIVER_MODESET))
> - return;
> -
> - if (!dev->mode_config.num_connector) {
> - drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n");
> - return;
> - }
> -
> - mutex_lock(&dev->clientlist_mutex);
> - list_for_each_entry(client, &dev->clientlist, list) {
> - if (!client->funcs || !client->funcs->hotplug)
> - continue;
> -
> - if (client->hotplug_failed)
> - continue;
> -
> - ret = client->funcs->hotplug(client);
> - drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
> - if (ret)
> - client->hotplug_failed = true;
> - }
> - mutex_unlock(&dev->clientlist_mutex);
> -}
> -EXPORT_SYMBOL(drm_client_dev_hotplug);
> -
> -void drm_client_dev_restore(struct drm_device *dev)
> -{
> - struct drm_client_dev *client;
> - int ret;
> -
> - if (!drm_core_check_feature(dev, DRIVER_MODESET))
> - return;
> -
> - mutex_lock(&dev->clientlist_mutex);
> - list_for_each_entry(client, &dev->clientlist, list) {
> - if (!client->funcs || !client->funcs->restore)
> - continue;
> -
> - ret = client->funcs->restore(client);
> - drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
> - if (!ret) /* The first one to return zero gets the privilege to restore */
> - break;
> - }
> - mutex_unlock(&dev->clientlist_mutex);
> -}
> -
> static void drm_client_buffer_delete(struct drm_client_buffer *buffer)
> {
> if (buffer->gem) {
> @@ -584,30 +490,3 @@ int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_re
> 0, 0, NULL, 0);
> }
> EXPORT_SYMBOL(drm_client_framebuffer_flush);
> -
> -#ifdef CONFIG_DEBUG_FS
> -static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
> -{
> - struct drm_debugfs_entry *entry = m->private;
> - struct drm_device *dev = entry->dev;
> - struct drm_printer p = drm_seq_file_printer(m);
> - struct drm_client_dev *client;
> -
> - mutex_lock(&dev->clientlist_mutex);
> - list_for_each_entry(client, &dev->clientlist, list)
> - drm_printf(&p, "%s\n", client->name);
> - mutex_unlock(&dev->clientlist_mutex);
> -
> - return 0;
> -}
> -
> -static const struct drm_debugfs_info drm_client_debugfs_list[] = {
> - { "internal_clients", drm_client_debugfs_internal_clients, 0 },
> -};
> -
> -void drm_client_debugfs_init(struct drm_device *dev)
> -{
> - drm_debugfs_add_files(dev, drm_client_debugfs_list,
> - ARRAY_SIZE(drm_client_debugfs_list));
> -}
> -#endif
> diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
> new file mode 100644
> index 000000000000..d13d44320c5c
> --- /dev/null
> +++ b/drivers/gpu/drm/drm_client_event.c
> @@ -0,0 +1,135 @@
> +// SPDX-License-Identifier: GPL-2.0 or MIT
> +/*
> + * Copyright 2018 Noralf Trønnes
> + */
> +
> +#include <linux/list.h>
> +#include <linux/mutex.h>
> +#include <linux/seq_file.h>
> +
> +#include <drm/drm_client.h>
> +#include <drm/drm_client_event.h>
> +#include <drm/drm_debugfs.h>
> +#include <drm/drm_device.h>
> +#include <drm/drm_drv.h>
> +#include <drm/drm_print.h>
> +
> +/**
> + * drm_client_dev_unregister - Unregister clients
> + * @dev: DRM device
> + *
> + * This function releases all clients by calling each client's
> + * &drm_client_funcs.unregister callback. The callback function
> + * is responsibe for releaseing all resources including the client
> + * itself.
> + *
> + * The helper drm_dev_unregister() calls this function. Drivers
> + * that use it don't need to call this function themselves.
> + */
> +void drm_client_dev_unregister(struct drm_device *dev)
> +{
> + struct drm_client_dev *client, *tmp;
> +
> + if (!drm_core_check_feature(dev, DRIVER_MODESET))
> + return;
> +
> + mutex_lock(&dev->clientlist_mutex);
> + list_for_each_entry_safe(client, tmp, &dev->clientlist, list) {
> + list_del(&client->list);
> + if (client->funcs && client->funcs->unregister) {
> + client->funcs->unregister(client);
> + } else {
> + drm_client_release(client);
> + kfree(client);
> + }
> + }
> + mutex_unlock(&dev->clientlist_mutex);
> +}
> +EXPORT_SYMBOL(drm_client_dev_unregister);
> +
> +/**
> + * drm_client_dev_hotplug - Send hotplug event to clients
> + * @dev: DRM device
> + *
> + * This function calls the &drm_client_funcs.hotplug callback on the attached clients.
> + *
> + * drm_kms_helper_hotplug_event() calls this function, so drivers that use it
> + * don't need to call this function themselves.
> + */
> +void drm_client_dev_hotplug(struct drm_device *dev)
> +{
> + struct drm_client_dev *client;
> + int ret;
> +
> + if (!drm_core_check_feature(dev, DRIVER_MODESET))
> + return;
> +
> + if (!dev->mode_config.num_connector) {
> + drm_dbg_kms(dev, "No connectors found, will not send hotplug events!\n");
> + return;
> + }
> +
> + mutex_lock(&dev->clientlist_mutex);
> + list_for_each_entry(client, &dev->clientlist, list) {
> + if (!client->funcs || !client->funcs->hotplug)
> + continue;
> +
> + if (client->hotplug_failed)
> + continue;
> +
> + ret = client->funcs->hotplug(client);
> + drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
> + if (ret)
> + client->hotplug_failed = true;
> + }
> + mutex_unlock(&dev->clientlist_mutex);
> +}
> +EXPORT_SYMBOL(drm_client_dev_hotplug);
> +
> +void drm_client_dev_restore(struct drm_device *dev)
> +{
> + struct drm_client_dev *client;
> + int ret;
> +
> + if (!drm_core_check_feature(dev, DRIVER_MODESET))
> + return;
> +
> + mutex_lock(&dev->clientlist_mutex);
> + list_for_each_entry(client, &dev->clientlist, list) {
> + if (!client->funcs || !client->funcs->restore)
> + continue;
> +
> + ret = client->funcs->restore(client);
> + drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
> + if (!ret) /* The first one to return zero gets the privilege to restore */
> + break;
> + }
> + mutex_unlock(&dev->clientlist_mutex);
> +}
> +
> +#ifdef CONFIG_DEBUG_FS
> +static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
> +{
> + struct drm_debugfs_entry *entry = m->private;
> + struct drm_device *dev = entry->dev;
> + struct drm_printer p = drm_seq_file_printer(m);
> + struct drm_client_dev *client;
> +
> + mutex_lock(&dev->clientlist_mutex);
> + list_for_each_entry(client, &dev->clientlist, list)
> + drm_printf(&p, "%s\n", client->name);
> + mutex_unlock(&dev->clientlist_mutex);
> +
> + return 0;
> +}
> +
> +static const struct drm_debugfs_info drm_client_debugfs_list[] = {
> + { "internal_clients", drm_client_debugfs_internal_clients, 0 },
> +};
> +
> +void drm_client_debugfs_init(struct drm_device *dev)
> +{
> + drm_debugfs_add_files(dev, drm_client_debugfs_list,
> + ARRAY_SIZE(drm_client_debugfs_list));
> +}
> +#endif
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index ac30b0ec9d93..c2c172eb25df 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -38,7 +38,7 @@
>
> #include <drm/drm_accel.h>
> #include <drm/drm_cache.h>
> -#include <drm/drm_client.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_color_mgmt.h>
> #include <drm/drm_drv.h>
> #include <drm/drm_file.h>
> diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c
> index ad1dc638c83b..7415abb7faca 100644
> --- a/drivers/gpu/drm/drm_file.c
> +++ b/drivers/gpu/drm/drm_file.c
> @@ -40,7 +40,7 @@
> #include <linux/slab.h>
> #include <linux/vga_switcheroo.h>
>
> -#include <drm/drm_client.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_drv.h>
> #include <drm/drm_file.h>
> #include <drm/drm_gem.h>
> diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
> index 92f21764246f..96b266b37ba4 100644
> --- a/drivers/gpu/drm/drm_probe_helper.c
> +++ b/drivers/gpu/drm/drm_probe_helper.c
> @@ -33,7 +33,7 @@
> #include <linux/moduleparam.h>
>
> #include <drm/drm_bridge.h>
> -#include <drm/drm_client.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_crtc.h>
> #include <drm/drm_edid.h>
> #include <drm/drm_fourcc.h>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index c106fb2dd20b..673f9b965494 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -11,7 +11,7 @@
> #include <acpi/video.h>
> #include <drm/display/drm_dp_mst_helper.h>
> #include <drm/drm_atomic_helper.h>
> -#include <drm/drm_client.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_mode_config.h>
> #include <drm/drm_privacy_screen_consumer.h>
> #include <drm/drm_probe_helper.h>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c b/drivers/gpu/drm/nouveau/nouveau_vga.c
> index ab4e11dc0b8a..a6c375a24154 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_vga.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_vga.c
> @@ -2,7 +2,7 @@
> #include <linux/vgaarb.h>
> #include <linux/vga_switcheroo.h>
>
> -#include <drm/drm_fb_helper.h>
> +#include <drm/drm_client_event.h>
>
> #include "nouveau_drv.h"
> #include "nouveau_acpi.h"
> diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
> index bc0e66f9c425..dfd5afcc9463 100644
> --- a/include/drm/drm_client.h
> +++ b/include/drm/drm_client.h
> @@ -121,10 +121,6 @@ int drm_client_init(struct drm_device *dev, struct drm_client_dev *client,
> void drm_client_release(struct drm_client_dev *client);
> void drm_client_register(struct drm_client_dev *client);
>
> -void drm_client_dev_unregister(struct drm_device *dev);
> -void drm_client_dev_hotplug(struct drm_device *dev);
> -void drm_client_dev_restore(struct drm_device *dev);
> -
> /**
> * struct drm_client_buffer - DRM client buffer
> */
> diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
> new file mode 100644
> index 000000000000..2c8915241120
> --- /dev/null
> +++ b/include/drm/drm_client_event.h
> @@ -0,0 +1,12 @@
> +/* SPDX-License-Identifier: GPL-2.0 or MIT */
> +
> +#ifndef _DRM_CLIENT_EVENT_H_
> +#define _DRM_CLIENT_EVENT_H_
> +
> +struct drm_device;
> +
> +void drm_client_dev_unregister(struct drm_device *dev);
> +void drm_client_dev_hotplug(struct drm_device *dev);
> +void drm_client_dev_restore(struct drm_device *dev);
> +
> +#endif
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (5 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 06/12] drm/client: Move client event handlers to drm_client_event.c Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 21:21 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 08/12] drm/amdgpu: Suspend and resume internal clients with client helpers Thomas Zimmermann
` (8 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann
Suspend and resume is still tied to fbdev emulation. Modeset helpers
and several drivers call drm_fb_helper_set_suspend_unlocked() to inform
the fbdev client about suspend/resume events.
To make it work with arbitrary clients, add per-client callback
functions for suspend and resume. Implement them for fbdev emulation
with the existing drm_fb_helper_set_suspend_unlocked(). Then update
DRM's modeset helpers to call the new interface.
Clients that are not fbdev can now implement suspend/resume to their
requirements.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/drm_client_event.c | 60 ++++++++++++++++++++++++++++
drivers/gpu/drm/drm_fbdev_client.c | 30 +++++++++++++-
drivers/gpu/drm/drm_modeset_helper.c | 14 ++++---
include/drm/drm_client.h | 35 ++++++++++++++++
include/drm/drm_client_event.h | 2 +
5 files changed, 133 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
index d13d44320c5c..c52e93643672 100644
--- a/drivers/gpu/drm/drm_client_event.c
+++ b/drivers/gpu/drm/drm_client_event.c
@@ -107,6 +107,66 @@ void drm_client_dev_restore(struct drm_device *dev)
mutex_unlock(&dev->clientlist_mutex);
}
+static int drm_client_suspend(struct drm_client_dev *client, bool holds_console_lock)
+{
+ struct drm_device *dev = client->dev;
+ int ret = 0;
+
+ if (drm_WARN_ON_ONCE(dev, client->suspended))
+ return 0;
+
+ if (client->funcs && client->funcs->suspend)
+ ret = client->funcs->suspend(client, holds_console_lock);
+ drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+
+ client->suspended = true;
+
+ return ret;
+}
+
+void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock)
+{
+ struct drm_client_dev *client;
+
+ mutex_lock(&dev->clientlist_mutex);
+ list_for_each_entry(client, &dev->clientlist, list) {
+ if (!client->suspended)
+ drm_client_suspend(client, holds_console_lock);
+ }
+ mutex_unlock(&dev->clientlist_mutex);
+}
+EXPORT_SYMBOL(drm_client_dev_suspend);
+
+static int drm_client_resume(struct drm_client_dev *client, bool holds_console_lock)
+{
+ struct drm_device *dev = client->dev;
+ int ret = 0;
+
+ if (drm_WARN_ON_ONCE(dev, !client->suspended))
+ return 0;
+
+ if (client->funcs && client->funcs->resume)
+ ret = client->funcs->resume(client, holds_console_lock);
+ drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
+
+ client->suspended = false;
+
+ return ret;
+}
+
+void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock)
+{
+ struct drm_client_dev *client;
+
+ mutex_lock(&dev->clientlist_mutex);
+ list_for_each_entry(client, &dev->clientlist, list) {
+ if (client->suspended)
+ drm_client_resume(client, holds_console_lock);
+ }
+ mutex_unlock(&dev->clientlist_mutex);
+}
+EXPORT_SYMBOL(drm_client_dev_resume);
+
#ifdef CONFIG_DEBUG_FS
static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
{
diff --git a/drivers/gpu/drm/drm_fbdev_client.c b/drivers/gpu/drm/drm_fbdev_client.c
index a09382afe2fb..246fb63ab250 100644
--- a/drivers/gpu/drm/drm_fbdev_client.c
+++ b/drivers/gpu/drm/drm_fbdev_client.c
@@ -61,11 +61,37 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
return ret;
}
+static int drm_fbdev_client_suspend(struct drm_client_dev *client, bool holds_console_lock)
+{
+ struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
+
+ if (holds_console_lock)
+ drm_fb_helper_set_suspend(fb_helper, true);
+ else
+ drm_fb_helper_set_suspend_unlocked(fb_helper, true);
+
+ return 0;
+}
+
+static int drm_fbdev_client_resume(struct drm_client_dev *client, bool holds_console_lock)
+{
+ struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
+
+ if (holds_console_lock)
+ drm_fb_helper_set_suspend(fb_helper, false);
+ else
+ drm_fb_helper_set_suspend_unlocked(fb_helper, false);
+
+ return 0;
+}
+
static const struct drm_client_funcs drm_fbdev_client_funcs = {
.owner = THIS_MODULE,
.unregister = drm_fbdev_client_unregister,
.restore = drm_fbdev_client_restore,
.hotplug = drm_fbdev_client_hotplug,
+ .suspend = drm_fbdev_client_suspend,
+ .resume = drm_fbdev_client_resume,
};
/**
@@ -76,8 +102,8 @@ static const struct drm_client_funcs drm_fbdev_client_funcs = {
*
* This function sets up fbdev emulation. Restore, hotplug events and
* teardown are all taken care of. Drivers that do suspend/resume need
- * to call drm_fb_helper_set_suspend_unlocked() themselves. Simple
- * drivers might use drm_mode_config_helper_suspend().
+ * to call drm_client_dev_suspend() and drm_client_dev_resume() by
+ * themselves. Simple drivers might use drm_mode_config_helper_suspend().
*
* This function is safe to call even when there are no connectors present.
* Setup will be retried on the next hotplug event.
diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c
index 2c582020cb42..5565464c1734 100644
--- a/drivers/gpu/drm/drm_modeset_helper.c
+++ b/drivers/gpu/drm/drm_modeset_helper.c
@@ -21,7 +21,7 @@
*/
#include <drm/drm_atomic_helper.h>
-#include <drm/drm_fb_helper.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_modeset_helper.h>
@@ -185,7 +185,7 @@ EXPORT_SYMBOL(drm_crtc_init);
* Zero on success, negative error code on error.
*
* See also:
- * drm_kms_helper_poll_disable() and drm_fb_helper_set_suspend_unlocked().
+ * drm_kms_helper_poll_disable() and drm_client_dev_suspend().
*/
int drm_mode_config_helper_suspend(struct drm_device *dev)
{
@@ -199,10 +199,11 @@ int drm_mode_config_helper_suspend(struct drm_device *dev)
if (dev->mode_config.poll_enabled)
drm_kms_helper_poll_disable(dev);
- drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 1);
+ drm_client_dev_suspend(dev, false);
state = drm_atomic_helper_suspend(dev);
if (IS_ERR(state)) {
- drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 0);
+ drm_client_dev_resume(dev, false);
+
/*
* Don't enable polling if it was never initialized
*/
@@ -230,7 +231,7 @@ EXPORT_SYMBOL(drm_mode_config_helper_suspend);
* Zero on success, negative error code on error.
*
* See also:
- * drm_fb_helper_set_suspend_unlocked() and drm_kms_helper_poll_enable().
+ * drm_client_dev_resume() and drm_kms_helper_poll_enable().
*/
int drm_mode_config_helper_resume(struct drm_device *dev)
{
@@ -247,7 +248,8 @@ int drm_mode_config_helper_resume(struct drm_device *dev)
DRM_ERROR("Failed to resume (%d)\n", ret);
dev->mode_config.suspend_state = NULL;
- drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 0);
+ drm_client_dev_resume(dev, false);
+
/*
* Don't enable polling if it is not initialized
*/
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index dfd5afcc9463..c03c4b0f3e94 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -63,6 +63,34 @@ struct drm_client_funcs {
* This callback is optional.
*/
int (*hotplug)(struct drm_client_dev *client);
+
+ /**
+ * @suspend:
+ *
+ * Called when suspending the device.
+ *
+ * This callback is optional.
+ *
+ * FIXME: Some callers hold the console lock when invoking this
+ * function. This interferes with fbdev emulation, which
+ * also tries to acquire the lock. Push the console lock
+ * into the callback and remove 'holds_console_lock'.
+ */
+ int (*suspend)(struct drm_client_dev *client, bool holds_console_lock);
+
+ /**
+ * @resume:
+ *
+ * Called when resuming the device from suspend.
+ *
+ * This callback is optional.
+ *
+ * FIXME: Some callers hold the console lock when invoking this
+ * function. This interferes with fbdev emulation, which
+ * also tries to acquire the lock. Push the console lock
+ * into the callback and remove 'holds_console_lock'.
+ */
+ int (*resume)(struct drm_client_dev *client, bool holds_console_lock);
};
/**
@@ -107,6 +135,13 @@ struct drm_client_dev {
*/
struct drm_mode_set *modesets;
+ /**
+ * @suspended:
+ *
+ * The client has been suspended.
+ */
+ bool suspended;
+
/**
* @hotplug_failed:
*
diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
index 2c8915241120..72c97d111169 100644
--- a/include/drm/drm_client_event.h
+++ b/include/drm/drm_client_event.h
@@ -8,5 +8,7 @@ struct drm_device;
void drm_client_dev_unregister(struct drm_device *dev);
void drm_client_dev_hotplug(struct drm_device *dev);
void drm_client_dev_restore(struct drm_device *dev);
+void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock);
+void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock);
#endif
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks
2024-10-08 11:59 ` [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks Thomas Zimmermann
@ 2024-10-08 21:21 ` Cavitt, Jonathan
2024-10-14 7:07 ` Thomas Zimmermann
0 siblings, 1 reply; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 21:21 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks
>
> Suspend and resume is still tied to fbdev emulation. Modeset helpers
> and several drivers call drm_fb_helper_set_suspend_unlocked() to inform
> the fbdev client about suspend/resume events.
>
> To make it work with arbitrary clients, add per-client callback
> functions for suspend and resume. Implement them for fbdev emulation
> with the existing drm_fb_helper_set_suspend_unlocked(). Then update
> DRM's modeset helpers to call the new interface.
>
> Clients that are not fbdev can now implement suspend/resume to their
> requirements.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Some questions below, but nothing blocking.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
> ---
> drivers/gpu/drm/drm_client_event.c | 60 ++++++++++++++++++++++++++++
> drivers/gpu/drm/drm_fbdev_client.c | 30 +++++++++++++-
> drivers/gpu/drm/drm_modeset_helper.c | 14 ++++---
> include/drm/drm_client.h | 35 ++++++++++++++++
> include/drm/drm_client_event.h | 2 +
> 5 files changed, 133 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
> index d13d44320c5c..c52e93643672 100644
> --- a/drivers/gpu/drm/drm_client_event.c
> +++ b/drivers/gpu/drm/drm_client_event.c
> @@ -107,6 +107,66 @@ void drm_client_dev_restore(struct drm_device *dev)
> mutex_unlock(&dev->clientlist_mutex);
> }
>
> +static int drm_client_suspend(struct drm_client_dev *client, bool holds_console_lock)
> +{
> + struct drm_device *dev = client->dev;
> + int ret = 0;
> +
> + if (drm_WARN_ON_ONCE(dev, client->suspended))
> + return 0;
> +
> + if (client->funcs && client->funcs->suspend)
> + ret = client->funcs->suspend(client, holds_console_lock);
> + drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
> +
> + client->suspended = true;
> +
> + return ret;
> +}
> +
> +void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock)
> +{
> + struct drm_client_dev *client;
> +
> + mutex_lock(&dev->clientlist_mutex);
> + list_for_each_entry(client, &dev->clientlist, list) {
> + if (!client->suspended)
> + drm_client_suspend(client, holds_console_lock);
> + }
> + mutex_unlock(&dev->clientlist_mutex);
> +}
> +EXPORT_SYMBOL(drm_client_dev_suspend);
> +
> +static int drm_client_resume(struct drm_client_dev *client, bool holds_console_lock)
> +{
> + struct drm_device *dev = client->dev;
> + int ret = 0;
> +
> + if (drm_WARN_ON_ONCE(dev, !client->suspended))
> + return 0;
> +
> + if (client->funcs && client->funcs->resume)
> + ret = client->funcs->resume(client, holds_console_lock);
> + drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
> +
> + client->suspended = false;
> +
> + return ret;
> +}
> +
> +void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock)
> +{
> + struct drm_client_dev *client;
> +
> + mutex_lock(&dev->clientlist_mutex);
> + list_for_each_entry(client, &dev->clientlist, list) {
> + if (client->suspended)
> + drm_client_resume(client, holds_console_lock);
> + }
> + mutex_unlock(&dev->clientlist_mutex);
> +}
> +EXPORT_SYMBOL(drm_client_dev_resume);
I had to double check, as it seemed a bit weird to have a Boolean "holds_console_lock"
if it was always going to be False in the use cases presented in this patch, but we do set
it to True in the Radeon use case in patch 10, so that makes more sense.
> +
> #ifdef CONFIG_DEBUG_FS
> static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
> {
> diff --git a/drivers/gpu/drm/drm_fbdev_client.c b/drivers/gpu/drm/drm_fbdev_client.c
> index a09382afe2fb..246fb63ab250 100644
> --- a/drivers/gpu/drm/drm_fbdev_client.c
> +++ b/drivers/gpu/drm/drm_fbdev_client.c
> @@ -61,11 +61,37 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
> return ret;
> }
>
> +static int drm_fbdev_client_suspend(struct drm_client_dev *client, bool holds_console_lock)
> +{
> + struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
> +
> + if (holds_console_lock)
> + drm_fb_helper_set_suspend(fb_helper, true);
> + else
> + drm_fb_helper_set_suspend_unlocked(fb_helper, true);
> +
> + return 0;
> +}
> +
> +static int drm_fbdev_client_resume(struct drm_client_dev *client, bool holds_console_lock)
> +{
> + struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
> +
> + if (holds_console_lock)
> + drm_fb_helper_set_suspend(fb_helper, false);
> + else
> + drm_fb_helper_set_suspend_unlocked(fb_helper, false);
> +
> + return 0;
> +}
> +
> static const struct drm_client_funcs drm_fbdev_client_funcs = {
> .owner = THIS_MODULE,
> .unregister = drm_fbdev_client_unregister,
> .restore = drm_fbdev_client_restore,
> .hotplug = drm_fbdev_client_hotplug,
> + .suspend = drm_fbdev_client_suspend,
> + .resume = drm_fbdev_client_resume,
> };
Just a question for my own understanding:
The expected order of operations here is:
drm_mode_config_helper_suspend calls drm_client_dev_suspend
drm_client_dev_suspend calls drm_client_suspend
drm_client_suspend calls client->funcs->suspend, which for fbdev is
drm_fbdev_client_suspend
drm_fbdev_client_suspend calls drm_fb_helper_set_suspend(_unlocked)
And, circling back to the start, drm_mode_config_helper_suspend is called by
several drivers in the suspend case.
Is this correct?
>
> /**
> @@ -76,8 +102,8 @@ static const struct drm_client_funcs drm_fbdev_client_funcs = {
> *
> * This function sets up fbdev emulation. Restore, hotplug events and
> * teardown are all taken care of. Drivers that do suspend/resume need
> - * to call drm_fb_helper_set_suspend_unlocked() themselves. Simple
> - * drivers might use drm_mode_config_helper_suspend().
> + * to call drm_client_dev_suspend() and drm_client_dev_resume() by
> + * themselves. Simple drivers might use drm_mode_config_helper_suspend().
> *
> * This function is safe to call even when there are no connectors present.
> * Setup will be retried on the next hotplug event.
> diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c
> index 2c582020cb42..5565464c1734 100644
> --- a/drivers/gpu/drm/drm_modeset_helper.c
> +++ b/drivers/gpu/drm/drm_modeset_helper.c
> @@ -21,7 +21,7 @@
> */
>
> #include <drm/drm_atomic_helper.h>
> -#include <drm/drm_fb_helper.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_fourcc.h>
> #include <drm/drm_framebuffer.h>
> #include <drm/drm_modeset_helper.h>
> @@ -185,7 +185,7 @@ EXPORT_SYMBOL(drm_crtc_init);
> * Zero on success, negative error code on error.
> *
> * See also:
> - * drm_kms_helper_poll_disable() and drm_fb_helper_set_suspend_unlocked().
> + * drm_kms_helper_poll_disable() and drm_client_dev_suspend().
> */
> int drm_mode_config_helper_suspend(struct drm_device *dev)
> {
> @@ -199,10 +199,11 @@ int drm_mode_config_helper_suspend(struct drm_device *dev)
> if (dev->mode_config.poll_enabled)
> drm_kms_helper_poll_disable(dev);
>
> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 1);
> + drm_client_dev_suspend(dev, false);
> state = drm_atomic_helper_suspend(dev);
> if (IS_ERR(state)) {
> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 0);
> + drm_client_dev_resume(dev, false);
> +
> /*
> * Don't enable polling if it was never initialized
> */
> @@ -230,7 +231,7 @@ EXPORT_SYMBOL(drm_mode_config_helper_suspend);
> * Zero on success, negative error code on error.
> *
> * See also:
> - * drm_fb_helper_set_suspend_unlocked() and drm_kms_helper_poll_enable().
> + * drm_client_dev_resume() and drm_kms_helper_poll_enable().
> */
> int drm_mode_config_helper_resume(struct drm_device *dev)
> {
> @@ -247,7 +248,8 @@ int drm_mode_config_helper_resume(struct drm_device *dev)
> DRM_ERROR("Failed to resume (%d)\n", ret);
> dev->mode_config.suspend_state = NULL;
>
> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 0);
> + drm_client_dev_resume(dev, false);
> +
> /*
> * Don't enable polling if it is not initialized
> */
> diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
> index dfd5afcc9463..c03c4b0f3e94 100644
> --- a/include/drm/drm_client.h
> +++ b/include/drm/drm_client.h
> @@ -63,6 +63,34 @@ struct drm_client_funcs {
> * This callback is optional.
> */
> int (*hotplug)(struct drm_client_dev *client);
> +
> + /**
> + * @suspend:
> + *
> + * Called when suspending the device.
> + *
> + * This callback is optional.
> + *
> + * FIXME: Some callers hold the console lock when invoking this
> + * function. This interferes with fbdev emulation, which
> + * also tries to acquire the lock. Push the console lock
> + * into the callback and remove 'holds_console_lock'.
> + */
Is there an estimated time for the fix to this FIXME? It's out of scope
for this series, so I won't insist on fixing it immediately, but if it's a
"quick" fix (relatively speaking), then we should definitely try to get
this FIXME resolved in short order.
-Jonathan Cavitt
> + int (*suspend)(struct drm_client_dev *client, bool holds_console_lock);
> +
> + /**
> + * @resume:
> + *
> + * Called when resuming the device from suspend.
> + *
> + * This callback is optional.
> + *
> + * FIXME: Some callers hold the console lock when invoking this
> + * function. This interferes with fbdev emulation, which
> + * also tries to acquire the lock. Push the console lock
> + * into the callback and remove 'holds_console_lock'.
> + */
> + int (*resume)(struct drm_client_dev *client, bool holds_console_lock);
> };
>
> /**
> @@ -107,6 +135,13 @@ struct drm_client_dev {
> */
> struct drm_mode_set *modesets;
>
> + /**
> + * @suspended:
> + *
> + * The client has been suspended.
> + */
> + bool suspended;
> +
> /**
> * @hotplug_failed:
> *
> diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
> index 2c8915241120..72c97d111169 100644
> --- a/include/drm/drm_client_event.h
> +++ b/include/drm/drm_client_event.h
> @@ -8,5 +8,7 @@ struct drm_device;
> void drm_client_dev_unregister(struct drm_device *dev);
> void drm_client_dev_hotplug(struct drm_device *dev);
> void drm_client_dev_restore(struct drm_device *dev);
> +void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock);
> +void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock);
>
> #endif
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks
2024-10-08 21:21 ` Cavitt, Jonathan
@ 2024-10-14 7:07 ` Thomas Zimmermann
0 siblings, 0 replies; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-14 7:07 UTC (permalink / raw)
To: Cavitt, Jonathan, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Hi
Am 08.10.24 um 23:21 schrieb Cavitt, Jonathan:
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
> Sent: Tuesday, October 8, 2024 4:59 AM
> To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
> Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>
> Subject: [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks
>> Suspend and resume is still tied to fbdev emulation. Modeset helpers
>> and several drivers call drm_fb_helper_set_suspend_unlocked() to inform
>> the fbdev client about suspend/resume events.
>>
>> To make it work with arbitrary clients, add per-client callback
>> functions for suspend and resume. Implement them for fbdev emulation
>> with the existing drm_fb_helper_set_suspend_unlocked(). Then update
>> DRM's modeset helpers to call the new interface.
>>
>> Clients that are not fbdev can now implement suspend/resume to their
>> requirements.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Some questions below, but nothing blocking.
>
> Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Thanks for reviewing this series.
>
>> ---
>> drivers/gpu/drm/drm_client_event.c | 60 ++++++++++++++++++++++++++++
>> drivers/gpu/drm/drm_fbdev_client.c | 30 +++++++++++++-
>> drivers/gpu/drm/drm_modeset_helper.c | 14 ++++---
>> include/drm/drm_client.h | 35 ++++++++++++++++
>> include/drm/drm_client_event.h | 2 +
>> 5 files changed, 133 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
>> index d13d44320c5c..c52e93643672 100644
>> --- a/drivers/gpu/drm/drm_client_event.c
>> +++ b/drivers/gpu/drm/drm_client_event.c
>> @@ -107,6 +107,66 @@ void drm_client_dev_restore(struct drm_device *dev)
>> mutex_unlock(&dev->clientlist_mutex);
>> }
>>
>> +static int drm_client_suspend(struct drm_client_dev *client, bool holds_console_lock)
>> +{
>> + struct drm_device *dev = client->dev;
>> + int ret = 0;
>> +
>> + if (drm_WARN_ON_ONCE(dev, client->suspended))
>> + return 0;
>> +
>> + if (client->funcs && client->funcs->suspend)
>> + ret = client->funcs->suspend(client, holds_console_lock);
>> + drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
>> +
>> + client->suspended = true;
>> +
>> + return ret;
>> +}
>> +
>> +void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock)
>> +{
>> + struct drm_client_dev *client;
>> +
>> + mutex_lock(&dev->clientlist_mutex);
>> + list_for_each_entry(client, &dev->clientlist, list) {
>> + if (!client->suspended)
>> + drm_client_suspend(client, holds_console_lock);
>> + }
>> + mutex_unlock(&dev->clientlist_mutex);
>> +}
>> +EXPORT_SYMBOL(drm_client_dev_suspend);
>> +
>> +static int drm_client_resume(struct drm_client_dev *client, bool holds_console_lock)
>> +{
>> + struct drm_device *dev = client->dev;
>> + int ret = 0;
>> +
>> + if (drm_WARN_ON_ONCE(dev, !client->suspended))
>> + return 0;
>> +
>> + if (client->funcs && client->funcs->resume)
>> + ret = client->funcs->resume(client, holds_console_lock);
>> + drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
>> +
>> + client->suspended = false;
>> +
>> + return ret;
>> +}
>> +
>> +void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock)
>> +{
>> + struct drm_client_dev *client;
>> +
>> + mutex_lock(&dev->clientlist_mutex);
>> + list_for_each_entry(client, &dev->clientlist, list) {
>> + if (client->suspended)
>> + drm_client_resume(client, holds_console_lock);
>> + }
>> + mutex_unlock(&dev->clientlist_mutex);
>> +}
>> +EXPORT_SYMBOL(drm_client_dev_resume);
> I had to double check, as it seemed a bit weird to have a Boolean "holds_console_lock"
> if it was always going to be False in the use cases presented in this patch, but we do set
> it to True in the Radeon use case in patch 10, so that makes more sense.
I can mention this in the commit message.
>
>> +
>> #ifdef CONFIG_DEBUG_FS
>> static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
>> {
>> diff --git a/drivers/gpu/drm/drm_fbdev_client.c b/drivers/gpu/drm/drm_fbdev_client.c
>> index a09382afe2fb..246fb63ab250 100644
>> --- a/drivers/gpu/drm/drm_fbdev_client.c
>> +++ b/drivers/gpu/drm/drm_fbdev_client.c
>> @@ -61,11 +61,37 @@ static int drm_fbdev_client_hotplug(struct drm_client_dev *client)
>> return ret;
>> }
>>
>> +static int drm_fbdev_client_suspend(struct drm_client_dev *client, bool holds_console_lock)
>> +{
>> + struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
>> +
>> + if (holds_console_lock)
>> + drm_fb_helper_set_suspend(fb_helper, true);
>> + else
>> + drm_fb_helper_set_suspend_unlocked(fb_helper, true);
>> +
>> + return 0;
>> +}
>> +
>> +static int drm_fbdev_client_resume(struct drm_client_dev *client, bool holds_console_lock)
>> +{
>> + struct drm_fb_helper *fb_helper = drm_fb_helper_from_client(client);
>> +
>> + if (holds_console_lock)
>> + drm_fb_helper_set_suspend(fb_helper, false);
>> + else
>> + drm_fb_helper_set_suspend_unlocked(fb_helper, false);
>> +
>> + return 0;
>> +}
>> +
>> static const struct drm_client_funcs drm_fbdev_client_funcs = {
>> .owner = THIS_MODULE,
>> .unregister = drm_fbdev_client_unregister,
>> .restore = drm_fbdev_client_restore,
>> .hotplug = drm_fbdev_client_hotplug,
>> + .suspend = drm_fbdev_client_suspend,
>> + .resume = drm_fbdev_client_resume,
>> };
> Just a question for my own understanding:
>
>
> The expected order of operations here is:
>
> drm_mode_config_helper_suspend calls drm_client_dev_suspend
>
> drm_client_dev_suspend calls drm_client_suspend
>
> drm_client_suspend calls client->funcs->suspend, which for fbdev is
> drm_fbdev_client_suspend
>
> drm_fbdev_client_suspend calls drm_fb_helper_set_suspend(_unlocked)
>
> And, circling back to the start, drm_mode_config_helper_suspend is called by
> several drivers in the suspend case.
>
>
> Is this correct?
Yes, that's what's happening. This patch pushes the driver's direct call
to drm_fb_helper_() interfaces into a callback of the client. That
releases the module dependency and other clients can be used as well.
>
>>
>> /**
>> @@ -76,8 +102,8 @@ static const struct drm_client_funcs drm_fbdev_client_funcs = {
>> *
>> * This function sets up fbdev emulation. Restore, hotplug events and
>> * teardown are all taken care of. Drivers that do suspend/resume need
>> - * to call drm_fb_helper_set_suspend_unlocked() themselves. Simple
>> - * drivers might use drm_mode_config_helper_suspend().
>> + * to call drm_client_dev_suspend() and drm_client_dev_resume() by
>> + * themselves. Simple drivers might use drm_mode_config_helper_suspend().
>> *
>> * This function is safe to call even when there are no connectors present.
>> * Setup will be retried on the next hotplug event.
>> diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c
>> index 2c582020cb42..5565464c1734 100644
>> --- a/drivers/gpu/drm/drm_modeset_helper.c
>> +++ b/drivers/gpu/drm/drm_modeset_helper.c
>> @@ -21,7 +21,7 @@
>> */
>>
>> #include <drm/drm_atomic_helper.h>
>> -#include <drm/drm_fb_helper.h>
>> +#include <drm/drm_client_event.h>
>> #include <drm/drm_fourcc.h>
>> #include <drm/drm_framebuffer.h>
>> #include <drm/drm_modeset_helper.h>
>> @@ -185,7 +185,7 @@ EXPORT_SYMBOL(drm_crtc_init);
>> * Zero on success, negative error code on error.
>> *
>> * See also:
>> - * drm_kms_helper_poll_disable() and drm_fb_helper_set_suspend_unlocked().
>> + * drm_kms_helper_poll_disable() and drm_client_dev_suspend().
>> */
>> int drm_mode_config_helper_suspend(struct drm_device *dev)
>> {
>> @@ -199,10 +199,11 @@ int drm_mode_config_helper_suspend(struct drm_device *dev)
>> if (dev->mode_config.poll_enabled)
>> drm_kms_helper_poll_disable(dev);
>>
>> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 1);
>> + drm_client_dev_suspend(dev, false);
>> state = drm_atomic_helper_suspend(dev);
>> if (IS_ERR(state)) {
>> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 0);
>> + drm_client_dev_resume(dev, false);
>> +
>> /*
>> * Don't enable polling if it was never initialized
>> */
>> @@ -230,7 +231,7 @@ EXPORT_SYMBOL(drm_mode_config_helper_suspend);
>> * Zero on success, negative error code on error.
>> *
>> * See also:
>> - * drm_fb_helper_set_suspend_unlocked() and drm_kms_helper_poll_enable().
>> + * drm_client_dev_resume() and drm_kms_helper_poll_enable().
>> */
>> int drm_mode_config_helper_resume(struct drm_device *dev)
>> {
>> @@ -247,7 +248,8 @@ int drm_mode_config_helper_resume(struct drm_device *dev)
>> DRM_ERROR("Failed to resume (%d)\n", ret);
>> dev->mode_config.suspend_state = NULL;
>>
>> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, 0);
>> + drm_client_dev_resume(dev, false);
>> +
>> /*
>> * Don't enable polling if it is not initialized
>> */
>> diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
>> index dfd5afcc9463..c03c4b0f3e94 100644
>> --- a/include/drm/drm_client.h
>> +++ b/include/drm/drm_client.h
>> @@ -63,6 +63,34 @@ struct drm_client_funcs {
>> * This callback is optional.
>> */
>> int (*hotplug)(struct drm_client_dev *client);
>> +
>> + /**
>> + * @suspend:
>> + *
>> + * Called when suspending the device.
>> + *
>> + * This callback is optional.
>> + *
>> + * FIXME: Some callers hold the console lock when invoking this
>> + * function. This interferes with fbdev emulation, which
>> + * also tries to acquire the lock. Push the console lock
>> + * into the callback and remove 'holds_console_lock'.
>> + */
> Is there an estimated time for the fix to this FIXME? It's out of scope
> for this series, so I won't insist on fixing it immediately, but if it's a
> "quick" fix (relatively speaking), then we should definitely try to get
> this FIXME resolved in short order.
There's no quick fix AFAICT. Radeon, i915 and xe call
drm_fb_helper_set_suspend() from various places. These drivers always
had their own code, so they likely need some work to make the change to
the _unlocked() helper.
Best regards
Thomas
>
> -Jonathan Cavitt
>
>> + int (*suspend)(struct drm_client_dev *client, bool holds_console_lock);
>> +
>> + /**
>> + * @resume:
>> + *
>> + * Called when resuming the device from suspend.
>> + *
>> + * This callback is optional.
>> + *
>> + * FIXME: Some callers hold the console lock when invoking this
>> + * function. This interferes with fbdev emulation, which
>> + * also tries to acquire the lock. Push the console lock
>> + * into the callback and remove 'holds_console_lock'.
>> + */
>> + int (*resume)(struct drm_client_dev *client, bool holds_console_lock);
>> };
>>
>> /**
>> @@ -107,6 +135,13 @@ struct drm_client_dev {
>> */
>> struct drm_mode_set *modesets;
>>
>> + /**
>> + * @suspended:
>> + *
>> + * The client has been suspended.
>> + */
>> + bool suspended;
>> +
>> /**
>> * @hotplug_failed:
>> *
>> diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
>> index 2c8915241120..72c97d111169 100644
>> --- a/include/drm/drm_client_event.h
>> +++ b/include/drm/drm_client_event.h
>> @@ -8,5 +8,7 @@ struct drm_device;
>> void drm_client_dev_unregister(struct drm_device *dev);
>> void drm_client_dev_hotplug(struct drm_device *dev);
>> void drm_client_dev_restore(struct drm_device *dev);
>> +void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock);
>> +void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock);
>>
>> #endif
>> --
>> 2.46.0
>>
>>
--
--
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)
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 08/12] drm/amdgpu: Suspend and resume internal clients with client helpers
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (6 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 21:37 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 09/12] drm/nouveau: Suspend and resume " Thomas Zimmermann
` (7 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
Alex Deucher, Christian König, Xinhui Pan
Replace calls to drm_fb_helper_set_suspend_unlocked() with calls
to the client functions drm_client_dev_suspend() and
drm_client_dev_resume(). Any registered in-kernel client will now
receive suspend and resume events.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Xinhui Pan <Xinhui.Pan@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index fd853dc843e9..9c40d620a658 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -37,8 +37,8 @@
#include <drm/drm_aperture.h>
#include <drm/drm_atomic_helper.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_crtc_helper.h>
-#include <drm/drm_fb_helper.h>
#include <drm/drm_probe_helper.h>
#include <drm/amdgpu_drm.h>
#include <linux/device.h>
@@ -4711,13 +4711,13 @@ int amdgpu_device_prepare(struct drm_device *dev)
* amdgpu_device_suspend - initiate device suspend
*
* @dev: drm dev pointer
- * @fbcon : notify the fbdev of suspend
+ * @notify_clients: notify in-kernel DRM clients
*
* Puts the hw in the suspend state (all asics).
* Returns 0 for success or an error on failure.
* Called at driver suspend.
*/
-int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
+int amdgpu_device_suspend(struct drm_device *dev, bool notify_clients)
{
struct amdgpu_device *adev = drm_to_adev(dev);
int r = 0;
@@ -4737,8 +4737,8 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DEV_D3))
DRM_WARN("smart shift update failed\n");
- if (fbcon)
- drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, true);
+ if (notify_clients)
+ drm_client_dev_suspend(adev_to_drm(adev), false);
cancel_delayed_work_sync(&adev->delayed_init_work);
@@ -4773,13 +4773,13 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
* amdgpu_device_resume - initiate device resume
*
* @dev: drm dev pointer
- * @fbcon : notify the fbdev of resume
+ * @notify_clients: notify in-kernel DRM clients
*
* Bring the hw back to operating state (all asics).
* Returns 0 for success or an error on failure.
* Called at driver resume.
*/
-int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
+int amdgpu_device_resume(struct drm_device *dev, bool notify_clients)
{
struct amdgpu_device *adev = drm_to_adev(dev);
int r = 0;
@@ -4835,8 +4835,8 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
/* Make sure IB tests flushed */
flush_delayed_work(&adev->delayed_init_work);
- if (fbcon)
- drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, false);
+ if (notify_clients)
+ drm_client_dev_resume(adev_to_drm(adev), false);
amdgpu_ras_resume(adev);
@@ -5448,7 +5448,7 @@ int amdgpu_do_asic_reset(struct list_head *device_list_handle,
if (r)
goto out;
- drm_fb_helper_set_suspend_unlocked(adev_to_drm(tmp_adev)->fb_helper, false);
+ drm_client_dev_resume(adev_to_drm(tmp_adev), false);
/*
* The GPU enters bad state once faulty pages
@@ -5734,7 +5734,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
*/
amdgpu_unregister_gpu_instance(tmp_adev);
- drm_fb_helper_set_suspend_unlocked(adev_to_drm(tmp_adev)->fb_helper, true);
+ drm_client_dev_suspend(adev_to_drm(tmp_adev), false);
/* disable ras on ALL IPs */
if (!need_emergency_restart &&
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 08/12] drm/amdgpu: Suspend and resume internal clients with client helpers
2024-10-08 11:59 ` [PATCH v3 08/12] drm/amdgpu: Suspend and resume internal clients with client helpers Thomas Zimmermann
@ 2024-10-08 21:37 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 21:37 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Alex Deucher, Christian König, Xinhui Pan, Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; Alex Deucher <alexander.deucher@amd.com>; Christian König <christian.koenig@amd.com>; Xinhui Pan <Xinhui.Pan@amd.com>
Subject: [PATCH v3 08/12] drm/amdgpu: Suspend and resume internal clients with client helpers
>
> Replace calls to drm_fb_helper_set_suspend_unlocked() with calls
> to the client functions drm_client_dev_suspend() and
> drm_client_dev_resume(). Any registered in-kernel client will now
> receive suspend and resume events.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Xinhui Pan <Xinhui.Pan@amd.com>
LGTM, though perhaps it's not my place to say this is okay.
I'd wait for an expert on the amdgpu to respond first before
jumping to push.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index fd853dc843e9..9c40d620a658 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -37,8 +37,8 @@
>
> #include <drm/drm_aperture.h>
> #include <drm/drm_atomic_helper.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_crtc_helper.h>
> -#include <drm/drm_fb_helper.h>
> #include <drm/drm_probe_helper.h>
> #include <drm/amdgpu_drm.h>
> #include <linux/device.h>
> @@ -4711,13 +4711,13 @@ int amdgpu_device_prepare(struct drm_device *dev)
> * amdgpu_device_suspend - initiate device suspend
> *
> * @dev: drm dev pointer
> - * @fbcon : notify the fbdev of suspend
> + * @notify_clients: notify in-kernel DRM clients
> *
> * Puts the hw in the suspend state (all asics).
> * Returns 0 for success or an error on failure.
> * Called at driver suspend.
> */
> -int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
> +int amdgpu_device_suspend(struct drm_device *dev, bool notify_clients)
> {
> struct amdgpu_device *adev = drm_to_adev(dev);
> int r = 0;
> @@ -4737,8 +4737,8 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
> if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DEV_D3))
> DRM_WARN("smart shift update failed\n");
>
> - if (fbcon)
> - drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, true);
> + if (notify_clients)
> + drm_client_dev_suspend(adev_to_drm(adev), false);
>
> cancel_delayed_work_sync(&adev->delayed_init_work);
>
> @@ -4773,13 +4773,13 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
> * amdgpu_device_resume - initiate device resume
> *
> * @dev: drm dev pointer
> - * @fbcon : notify the fbdev of resume
> + * @notify_clients: notify in-kernel DRM clients
> *
> * Bring the hw back to operating state (all asics).
> * Returns 0 for success or an error on failure.
> * Called at driver resume.
> */
> -int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
> +int amdgpu_device_resume(struct drm_device *dev, bool notify_clients)
> {
> struct amdgpu_device *adev = drm_to_adev(dev);
> int r = 0;
> @@ -4835,8 +4835,8 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
> /* Make sure IB tests flushed */
> flush_delayed_work(&adev->delayed_init_work);
>
> - if (fbcon)
> - drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, false);
> + if (notify_clients)
> + drm_client_dev_resume(adev_to_drm(adev), false);
>
> amdgpu_ras_resume(adev);
>
> @@ -5448,7 +5448,7 @@ int amdgpu_do_asic_reset(struct list_head *device_list_handle,
> if (r)
> goto out;
>
> - drm_fb_helper_set_suspend_unlocked(adev_to_drm(tmp_adev)->fb_helper, false);
> + drm_client_dev_resume(adev_to_drm(tmp_adev), false);
>
> /*
> * The GPU enters bad state once faulty pages
> @@ -5734,7 +5734,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
> */
> amdgpu_unregister_gpu_instance(tmp_adev);
>
> - drm_fb_helper_set_suspend_unlocked(adev_to_drm(tmp_adev)->fb_helper, true);
> + drm_client_dev_suspend(adev_to_drm(tmp_adev), false);
>
> /* disable ras on ALL IPs */
> if (!need_emergency_restart &&
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 09/12] drm/nouveau: Suspend and resume clients with client helpers
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (7 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 08/12] drm/amdgpu: Suspend and resume internal clients with client helpers Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 21:38 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 10/12] drm/radeon: " Thomas Zimmermann
` (6 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
Karol Herbst, Lyude Paul, Danilo Krummrich
Replace calls to drm_fb_helper_set_suspend_unlocked() with calls
to the client functions drm_client_dev_suspend() and
drm_client_dev_resume(). Any registered in-kernel client will now
receive suspend and resume events.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Danilo Krummrich <dakr@redhat.com>
---
drivers/gpu/drm/nouveau/nouveau_display.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index e2fd561cd23f..619a3efbe8c8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -28,8 +28,8 @@
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_crtc_helper.h>
-#include <drm/drm_fb_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_probe_helper.h>
@@ -804,8 +804,7 @@ nouveau_display_suspend(struct drm_device *dev, bool runtime)
{
struct nouveau_display *disp = nouveau_display(dev);
- /* Disable console. */
- drm_fb_helper_set_suspend_unlocked(dev->fb_helper, true);
+ drm_client_dev_suspend(dev, false);
if (drm_drv_uses_atomic_modeset(dev)) {
if (!runtime) {
@@ -836,8 +835,7 @@ nouveau_display_resume(struct drm_device *dev, bool runtime)
}
}
- /* Enable console. */
- drm_fb_helper_set_suspend_unlocked(dev->fb_helper, false);
+ drm_client_dev_resume(dev, false);
}
int
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 09/12] drm/nouveau: Suspend and resume clients with client helpers
2024-10-08 11:59 ` [PATCH v3 09/12] drm/nouveau: Suspend and resume " Thomas Zimmermann
@ 2024-10-08 21:38 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 21:38 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Karol Herbst, Lyude Paul, Danilo Krummrich, Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; Karol Herbst <kherbst@redhat.com>; Lyude Paul <lyude@redhat.com>; Danilo Krummrich <dakr@redhat.com>
Subject: [PATCH v3 09/12] drm/nouveau: Suspend and resume clients with client helpers
>
> Replace calls to drm_fb_helper_set_suspend_unlocked() with calls
> to the client functions drm_client_dev_suspend() and
> drm_client_dev_resume(). Any registered in-kernel client will now
> receive suspend and resume events.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Karol Herbst <kherbst@redhat.com>
> Cc: Lyude Paul <lyude@redhat.com>
> Cc: Danilo Krummrich <dakr@redhat.com>
LGTM, though perhaps it's not my place to say this is okay.
I'd wait for an expert on nouveau to respond first before
jumping to push.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/nouveau/nouveau_display.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
> index e2fd561cd23f..619a3efbe8c8 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_display.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_display.c
> @@ -28,8 +28,8 @@
>
> #include <drm/drm_atomic.h>
> #include <drm/drm_atomic_helper.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_crtc_helper.h>
> -#include <drm/drm_fb_helper.h>
> #include <drm/drm_fourcc.h>
> #include <drm/drm_gem_framebuffer_helper.h>
> #include <drm/drm_probe_helper.h>
> @@ -804,8 +804,7 @@ nouveau_display_suspend(struct drm_device *dev, bool runtime)
> {
> struct nouveau_display *disp = nouveau_display(dev);
>
> - /* Disable console. */
> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, true);
> + drm_client_dev_suspend(dev, false);
>
> if (drm_drv_uses_atomic_modeset(dev)) {
> if (!runtime) {
> @@ -836,8 +835,7 @@ nouveau_display_resume(struct drm_device *dev, bool runtime)
> }
> }
>
> - /* Enable console. */
> - drm_fb_helper_set_suspend_unlocked(dev->fb_helper, false);
> + drm_client_dev_resume(dev, false);
> }
>
> int
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 10/12] drm/radeon: Suspend and resume clients with client helpers
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (8 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 09/12] drm/nouveau: Suspend and resume " Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 21:40 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 11/12] drm/client: Make client support optional Thomas Zimmermann
` (5 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
Alex Deucher, Christian König, Xinhui Pan
Replace calls to drm_fb_helper_set_suspend() with calls to the client
functions drm_client_dev_suspend() and drm_client_dev_resume(). Any
registered in-kernel client will now receive suspend and resume events.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Xinhui Pan <Xinhui.Pan@amd.com>
---
drivers/gpu/drm/radeon/radeon_device.c | 19 ++++++++++---------
drivers/gpu/drm/radeon/radeon_fbdev.c | 6 ------
drivers/gpu/drm/radeon/radeon_mode.h | 3 ---
3 files changed, 10 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index 554b236c2328..6f071e61f764 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -35,6 +35,7 @@
#include <linux/vgaarb.h>
#include <drm/drm_cache.h>
+#include <drm/drm_client_event.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_device.h>
#include <drm/drm_file.h>
@@ -1542,7 +1543,7 @@ void radeon_device_fini(struct radeon_device *rdev)
* Called at driver suspend.
*/
int radeon_suspend_kms(struct drm_device *dev, bool suspend,
- bool fbcon, bool freeze)
+ bool notify_clients, bool freeze)
{
struct radeon_device *rdev;
struct pci_dev *pdev;
@@ -1634,9 +1635,9 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend,
pci_set_power_state(pdev, PCI_D3hot);
}
- if (fbcon) {
+ if (notify_clients) {
console_lock();
- radeon_fbdev_set_suspend(rdev, 1);
+ drm_client_dev_suspend(dev, true);
console_unlock();
}
return 0;
@@ -1649,7 +1650,7 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend,
* Returns 0 for success or an error on failure.
* Called at driver resume.
*/
-int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
+int radeon_resume_kms(struct drm_device *dev, bool resume, bool notify_clients)
{
struct drm_connector *connector;
struct radeon_device *rdev = dev->dev_private;
@@ -1660,14 +1661,14 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
return 0;
- if (fbcon) {
+ if (notify_clients) {
console_lock();
}
if (resume) {
pci_set_power_state(pdev, PCI_D0);
pci_restore_state(pdev);
if (pci_enable_device(pdev)) {
- if (fbcon)
+ if (notify_clients)
console_unlock();
return -1;
}
@@ -1730,7 +1731,7 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
/* reset hpd state */
radeon_hpd_init(rdev);
/* blat the mode back in */
- if (fbcon) {
+ if (notify_clients) {
drm_helper_resume_force_mode(dev);
/* turn on display hw */
drm_modeset_lock_all(dev);
@@ -1746,8 +1747,8 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled)
radeon_pm_compute_clocks(rdev);
- if (fbcon) {
- radeon_fbdev_set_suspend(rdev, 0);
+ if (notify_clients) {
+ drm_client_dev_resume(dev, true);
console_unlock();
}
diff --git a/drivers/gpu/drm/radeon/radeon_fbdev.c b/drivers/gpu/drm/radeon/radeon_fbdev.c
index 0aa20c8df546..d4a58bd679db 100644
--- a/drivers/gpu/drm/radeon/radeon_fbdev.c
+++ b/drivers/gpu/drm/radeon/radeon_fbdev.c
@@ -288,12 +288,6 @@ int radeon_fbdev_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
return ret;
}
-void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state)
-{
- if (rdev_to_drm(rdev)->fb_helper)
- drm_fb_helper_set_suspend(rdev_to_drm(rdev)->fb_helper, state);
-}
-
bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
{
struct drm_fb_helper *fb_helper = rdev_to_drm(rdev)->fb_helper;
diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
index 12a1d99a1815..4063d3801e81 100644
--- a/drivers/gpu/drm/radeon/radeon_mode.h
+++ b/drivers/gpu/drm/radeon/radeon_mode.h
@@ -942,13 +942,10 @@ int radeon_fbdev_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
struct drm_fb_helper_surface_size *sizes);
#define RADEON_FBDEV_DRIVER_OPS \
.fbdev_probe = radeon_fbdev_driver_fbdev_probe
-void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state);
bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj);
#else
#define RADEON_FBDEV_DRIVER_OPS \
.fbdev_probe = NULL
-static inline void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state)
-{ }
static inline bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
{
return false;
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 10/12] drm/radeon: Suspend and resume clients with client helpers
2024-10-08 11:59 ` [PATCH v3 10/12] drm/radeon: " Thomas Zimmermann
@ 2024-10-08 21:40 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 21:40 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Alex Deucher, Christian König, Xinhui Pan, Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 4:59 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; Alex Deucher <alexander.deucher@amd.com>; Christian König <christian.koenig@amd.com>; Xinhui Pan <Xinhui.Pan@amd.com>
Subject: [PATCH v3 10/12] drm/radeon: Suspend and resume clients with client helpers
>
> Replace calls to drm_fb_helper_set_suspend() with calls to the client
> functions drm_client_dev_suspend() and drm_client_dev_resume(). Any
> registered in-kernel client will now receive suspend and resume events.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Xinhui Pan <Xinhui.Pan@amd.com>
LGTM, though referring to drm_fb_helper_set_suspend in the commit
message when we're replacing radeon_fbdev_set_suspend, while
functionally correct (as that's what's being called internally), might be
a bit obfuscatory.
It's not a big deal, you don't have to change it.
Though you should probably wait for a radeon expert to review this
patch before deciding to push.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/radeon/radeon_device.c | 19 ++++++++++---------
> drivers/gpu/drm/radeon/radeon_fbdev.c | 6 ------
> drivers/gpu/drm/radeon/radeon_mode.h | 3 ---
> 3 files changed, 10 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
> index 554b236c2328..6f071e61f764 100644
> --- a/drivers/gpu/drm/radeon/radeon_device.c
> +++ b/drivers/gpu/drm/radeon/radeon_device.c
> @@ -35,6 +35,7 @@
> #include <linux/vgaarb.h>
>
> #include <drm/drm_cache.h>
> +#include <drm/drm_client_event.h>
> #include <drm/drm_crtc_helper.h>
> #include <drm/drm_device.h>
> #include <drm/drm_file.h>
> @@ -1542,7 +1543,7 @@ void radeon_device_fini(struct radeon_device *rdev)
> * Called at driver suspend.
> */
> int radeon_suspend_kms(struct drm_device *dev, bool suspend,
> - bool fbcon, bool freeze)
> + bool notify_clients, bool freeze)
> {
> struct radeon_device *rdev;
> struct pci_dev *pdev;
> @@ -1634,9 +1635,9 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend,
> pci_set_power_state(pdev, PCI_D3hot);
> }
>
> - if (fbcon) {
> + if (notify_clients) {
> console_lock();
> - radeon_fbdev_set_suspend(rdev, 1);
> + drm_client_dev_suspend(dev, true);
> console_unlock();
> }
> return 0;
> @@ -1649,7 +1650,7 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend,
> * Returns 0 for success or an error on failure.
> * Called at driver resume.
> */
> -int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
> +int radeon_resume_kms(struct drm_device *dev, bool resume, bool notify_clients)
> {
> struct drm_connector *connector;
> struct radeon_device *rdev = dev->dev_private;
> @@ -1660,14 +1661,14 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
> if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
> return 0;
>
> - if (fbcon) {
> + if (notify_clients) {
> console_lock();
> }
> if (resume) {
> pci_set_power_state(pdev, PCI_D0);
> pci_restore_state(pdev);
> if (pci_enable_device(pdev)) {
> - if (fbcon)
> + if (notify_clients)
> console_unlock();
> return -1;
> }
> @@ -1730,7 +1731,7 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
> /* reset hpd state */
> radeon_hpd_init(rdev);
> /* blat the mode back in */
> - if (fbcon) {
> + if (notify_clients) {
> drm_helper_resume_force_mode(dev);
> /* turn on display hw */
> drm_modeset_lock_all(dev);
> @@ -1746,8 +1747,8 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
> if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled)
> radeon_pm_compute_clocks(rdev);
>
> - if (fbcon) {
> - radeon_fbdev_set_suspend(rdev, 0);
> + if (notify_clients) {
> + drm_client_dev_resume(dev, true);
> console_unlock();
> }
>
> diff --git a/drivers/gpu/drm/radeon/radeon_fbdev.c b/drivers/gpu/drm/radeon/radeon_fbdev.c
> index 0aa20c8df546..d4a58bd679db 100644
> --- a/drivers/gpu/drm/radeon/radeon_fbdev.c
> +++ b/drivers/gpu/drm/radeon/radeon_fbdev.c
> @@ -288,12 +288,6 @@ int radeon_fbdev_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
> return ret;
> }
>
> -void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state)
> -{
> - if (rdev_to_drm(rdev)->fb_helper)
> - drm_fb_helper_set_suspend(rdev_to_drm(rdev)->fb_helper, state);
> -}
> -
> bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
> {
> struct drm_fb_helper *fb_helper = rdev_to_drm(rdev)->fb_helper;
> diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h
> index 12a1d99a1815..4063d3801e81 100644
> --- a/drivers/gpu/drm/radeon/radeon_mode.h
> +++ b/drivers/gpu/drm/radeon/radeon_mode.h
> @@ -942,13 +942,10 @@ int radeon_fbdev_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
> struct drm_fb_helper_surface_size *sizes);
> #define RADEON_FBDEV_DRIVER_OPS \
> .fbdev_probe = radeon_fbdev_driver_fbdev_probe
> -void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state);
> bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj);
> #else
> #define RADEON_FBDEV_DRIVER_OPS \
> .fbdev_probe = NULL
> -static inline void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state)
> -{ }
> static inline bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj)
> {
> return false;
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 11/12] drm/client: Make client support optional
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (9 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 10/12] drm/radeon: " Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 21:41 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 12/12] drm/client: Add client-lib module Thomas Zimmermann
` (4 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann,
Alex Deucher, Christian König, Xinhui Pan
Only build client code if DRM_CLIENT has been selected. Automatially
do so if one of the default clients has been enabled. If client support
has been disabled, the helpers for client-related events are empty and
the regular client functions are not present.
Amdgpu has an internal DRM client, so it has to select DRM_CLIENT by
itself unconditionally.
v3:
- provide empty drm_client_debugfs_init() if DRM_CLIENT=n (kernel
test robot)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Xinhui Pan <Xinhui.Pan@amd.com>
---
drivers/gpu/drm/Kconfig | 10 ++++++++++
drivers/gpu/drm/Makefile | 7 ++++---
drivers/gpu/drm/amd/amdgpu/Kconfig | 1 +
drivers/gpu/drm/drm_client_event.c | 2 ++
drivers/gpu/drm/drm_debugfs.c | 1 -
drivers/gpu/drm/drm_internal.h | 8 ++++++++
include/drm/drm_client.h | 2 --
include/drm/drm_client_event.h | 13 +++++++++++++
8 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 88c4837d070c..ea1cc924528c 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -209,6 +209,15 @@ config DRM_DEBUG_MODESET_LOCK
If in doubt, say "N".
+config DRM_CLIENT
+ bool
+ depends on DRM
+ help
+ Enables support for DRM clients. DRM drivers that need
+ struct drm_client_dev and its interfaces should select this
+ option. Drivers that support the default clients should
+ select DRM_CLIENT_SELECTION instead.
+
config DRM_CLIENT_SELECTION
bool
depends on DRM
@@ -224,6 +233,7 @@ config DRM_CLIENT_SETUP
config DRM_FBDEV_EMULATION
bool "Enable legacy fbdev support for your modesetting driver"
depends on DRM
+ select DRM_CLIENT
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
default FB
help
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 6b7d168ca790..c3e5d353588e 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -41,9 +41,6 @@ drm-y := \
drm_blend.o \
drm_bridge.o \
drm_cache.o \
- drm_client.o \
- drm_client_event.o \
- drm_client_modeset.o \
drm_color_mgmt.o \
drm_connector.o \
drm_crtc.o \
@@ -77,6 +74,10 @@ drm-y := \
drm_vblank_work.o \
drm_vma_manager.o \
drm_writeback.o
+drm-$(CONFIG_DRM_CLIENT) += \
+ drm_client.o \
+ drm_client_event.o \
+ drm_client_modeset.o
drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o
drm-$(CONFIG_COMPAT) += drm_ioc32.o
drm-$(CONFIG_DRM_PANEL) += drm_panel.o
diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig
index 680a94c361ba..41fa3377d9cf 100644
--- a/drivers/gpu/drm/amd/amdgpu/Kconfig
+++ b/drivers/gpu/drm/amd/amdgpu/Kconfig
@@ -5,6 +5,7 @@ config DRM_AMDGPU
depends on DRM && PCI && MMU
depends on !UML
select FW_LOADER
+ select DRM_CLIENT
select DRM_CLIENT_SELECTION
select DRM_DISPLAY_DP_HELPER
select DRM_DISPLAY_DSC_HELPER
diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
index c52e93643672..e303de564485 100644
--- a/drivers/gpu/drm/drm_client_event.c
+++ b/drivers/gpu/drm/drm_client_event.c
@@ -14,6 +14,8 @@
#include <drm/drm_drv.h>
#include <drm/drm_print.h>
+#include "drm_internal.h"
+
/**
* drm_client_dev_unregister - Unregister clients
* @dev: DRM device
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 9d3e6dd68810..5844a9234d9f 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -32,7 +32,6 @@
#include <drm/drm_atomic.h>
#include <drm/drm_auth.h>
#include <drm/drm_bridge.h>
-#include <drm/drm_client.h>
#include <drm/drm_debugfs.h>
#include <drm/drm_device.h>
#include <drm/drm_drv.h>
diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
index 9af72bab86d1..0bfcba6949b0 100644
--- a/drivers/gpu/drm/drm_internal.h
+++ b/drivers/gpu/drm/drm_internal.h
@@ -48,6 +48,14 @@ struct drm_prime_file_private;
struct drm_printer;
struct drm_vblank_crtc;
+/* drm_client_event.c */
+#if defined(CONFIG_DRM_CLIENT)
+void drm_client_debugfs_init(struct drm_device *dev);
+#else
+static inline void drm_client_debugfs_init(struct drm_device *dev)
+{ }
+#endif
+
/* drm_file.c */
extern struct mutex drm_global_mutex;
bool drm_dev_needs_global_mutex(struct drm_device *dev);
diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
index c03c4b0f3e94..3b13cf29ed55 100644
--- a/include/drm/drm_client.h
+++ b/include/drm/drm_client.h
@@ -236,6 +236,4 @@ int drm_client_modeset_dpms(struct drm_client_dev *client, int mode);
drm_for_each_connector_iter(connector, iter) \
if (connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK)
-void drm_client_debugfs_init(struct drm_device *dev);
-
#endif
diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
index 72c97d111169..99863554b055 100644
--- a/include/drm/drm_client_event.h
+++ b/include/drm/drm_client_event.h
@@ -5,10 +5,23 @@
struct drm_device;
+#if defined(CONFIG_DRM_CLIENT)
void drm_client_dev_unregister(struct drm_device *dev);
void drm_client_dev_hotplug(struct drm_device *dev);
void drm_client_dev_restore(struct drm_device *dev);
void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock);
void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock);
+#else
+static inline void drm_client_dev_unregister(struct drm_device *dev)
+{ }
+static inline void drm_client_dev_hotplug(struct drm_device *dev)
+{ }
+static inline void drm_client_dev_restore(struct drm_device *dev)
+{ }
+static inline void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock)
+{ }
+static inline void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock)
+{ }
+#endif
#endif
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 11/12] drm/client: Make client support optional
2024-10-08 11:59 ` [PATCH v3 11/12] drm/client: Make client support optional Thomas Zimmermann
@ 2024-10-08 21:41 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 21:41 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Alex Deucher, Christian König, Xinhui Pan, Cavitt, Jonathan
-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 5:00 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>; Alex Deucher <alexander.deucher@amd.com>; Christian König <christian.koenig@amd.com>; Xinhui Pan <Xinhui.Pan@amd.com>
Subject: [PATCH v3 11/12] drm/client: Make client support optional
>
> Only build client code if DRM_CLIENT has been selected. Automatially
> do so if one of the default clients has been enabled. If client support
> has been disabled, the helpers for client-related events are empty and
> the regular client functions are not present.
>
> Amdgpu has an internal DRM client, so it has to select DRM_CLIENT by
> itself unconditionally.
>
> v3:
> - provide empty drm_client_debugfs_init() if DRM_CLIENT=n (kernel
> test robot)
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Xinhui Pan <Xinhui.Pan@amd.com>
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/Kconfig | 10 ++++++++++
> drivers/gpu/drm/Makefile | 7 ++++---
> drivers/gpu/drm/amd/amdgpu/Kconfig | 1 +
> drivers/gpu/drm/drm_client_event.c | 2 ++
> drivers/gpu/drm/drm_debugfs.c | 1 -
> drivers/gpu/drm/drm_internal.h | 8 ++++++++
> include/drm/drm_client.h | 2 --
> include/drm/drm_client_event.h | 13 +++++++++++++
> 8 files changed, 38 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 88c4837d070c..ea1cc924528c 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -209,6 +209,15 @@ config DRM_DEBUG_MODESET_LOCK
>
> If in doubt, say "N".
>
> +config DRM_CLIENT
> + bool
> + depends on DRM
> + help
> + Enables support for DRM clients. DRM drivers that need
> + struct drm_client_dev and its interfaces should select this
> + option. Drivers that support the default clients should
> + select DRM_CLIENT_SELECTION instead.
> +
> config DRM_CLIENT_SELECTION
> bool
> depends on DRM
> @@ -224,6 +233,7 @@ config DRM_CLIENT_SETUP
> config DRM_FBDEV_EMULATION
> bool "Enable legacy fbdev support for your modesetting driver"
> depends on DRM
> + select DRM_CLIENT
> select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
> default FB
> help
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 6b7d168ca790..c3e5d353588e 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -41,9 +41,6 @@ drm-y := \
> drm_blend.o \
> drm_bridge.o \
> drm_cache.o \
> - drm_client.o \
> - drm_client_event.o \
> - drm_client_modeset.o \
> drm_color_mgmt.o \
> drm_connector.o \
> drm_crtc.o \
> @@ -77,6 +74,10 @@ drm-y := \
> drm_vblank_work.o \
> drm_vma_manager.o \
> drm_writeback.o
> +drm-$(CONFIG_DRM_CLIENT) += \
> + drm_client.o \
> + drm_client_event.o \
> + drm_client_modeset.o
> drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o
> drm-$(CONFIG_COMPAT) += drm_ioc32.o
> drm-$(CONFIG_DRM_PANEL) += drm_panel.o
> diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig
> index 680a94c361ba..41fa3377d9cf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/Kconfig
> +++ b/drivers/gpu/drm/amd/amdgpu/Kconfig
> @@ -5,6 +5,7 @@ config DRM_AMDGPU
> depends on DRM && PCI && MMU
> depends on !UML
> select FW_LOADER
> + select DRM_CLIENT
> select DRM_CLIENT_SELECTION
> select DRM_DISPLAY_DP_HELPER
> select DRM_DISPLAY_DSC_HELPER
> diff --git a/drivers/gpu/drm/drm_client_event.c b/drivers/gpu/drm/drm_client_event.c
> index c52e93643672..e303de564485 100644
> --- a/drivers/gpu/drm/drm_client_event.c
> +++ b/drivers/gpu/drm/drm_client_event.c
> @@ -14,6 +14,8 @@
> #include <drm/drm_drv.h>
> #include <drm/drm_print.h>
>
> +#include "drm_internal.h"
> +
> /**
> * drm_client_dev_unregister - Unregister clients
> * @dev: DRM device
> diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
> index 9d3e6dd68810..5844a9234d9f 100644
> --- a/drivers/gpu/drm/drm_debugfs.c
> +++ b/drivers/gpu/drm/drm_debugfs.c
> @@ -32,7 +32,6 @@
> #include <drm/drm_atomic.h>
> #include <drm/drm_auth.h>
> #include <drm/drm_bridge.h>
> -#include <drm/drm_client.h>
> #include <drm/drm_debugfs.h>
> #include <drm/drm_device.h>
> #include <drm/drm_drv.h>
> diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
> index 9af72bab86d1..0bfcba6949b0 100644
> --- a/drivers/gpu/drm/drm_internal.h
> +++ b/drivers/gpu/drm/drm_internal.h
> @@ -48,6 +48,14 @@ struct drm_prime_file_private;
> struct drm_printer;
> struct drm_vblank_crtc;
>
> +/* drm_client_event.c */
> +#if defined(CONFIG_DRM_CLIENT)
> +void drm_client_debugfs_init(struct drm_device *dev);
> +#else
> +static inline void drm_client_debugfs_init(struct drm_device *dev)
> +{ }
> +#endif
> +
> /* drm_file.c */
> extern struct mutex drm_global_mutex;
> bool drm_dev_needs_global_mutex(struct drm_device *dev);
> diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h
> index c03c4b0f3e94..3b13cf29ed55 100644
> --- a/include/drm/drm_client.h
> +++ b/include/drm/drm_client.h
> @@ -236,6 +236,4 @@ int drm_client_modeset_dpms(struct drm_client_dev *client, int mode);
> drm_for_each_connector_iter(connector, iter) \
> if (connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK)
>
> -void drm_client_debugfs_init(struct drm_device *dev);
> -
> #endif
> diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
> index 72c97d111169..99863554b055 100644
> --- a/include/drm/drm_client_event.h
> +++ b/include/drm/drm_client_event.h
> @@ -5,10 +5,23 @@
>
> struct drm_device;
>
> +#if defined(CONFIG_DRM_CLIENT)
> void drm_client_dev_unregister(struct drm_device *dev);
> void drm_client_dev_hotplug(struct drm_device *dev);
> void drm_client_dev_restore(struct drm_device *dev);
> void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock);
> void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock);
> +#else
> +static inline void drm_client_dev_unregister(struct drm_device *dev)
> +{ }
> +static inline void drm_client_dev_hotplug(struct drm_device *dev)
> +{ }
> +static inline void drm_client_dev_restore(struct drm_device *dev)
> +{ }
> +static inline void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock)
> +{ }
> +static inline void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock)
> +{ }
> +#endif
>
> #endif
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v3 12/12] drm/client: Add client-lib module
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (10 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 11/12] drm/client: Make client support optional Thomas Zimmermann
@ 2024-10-08 11:59 ` Thomas Zimmermann
2024-10-08 21:42 ` Cavitt, Jonathan
2024-10-08 12:36 ` ✗ Fi.CI.CHECKPATCH: warning for drm: Introduce DRM client library (rev3) Patchwork
` (3 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Thomas Zimmermann @ 2024-10-08 11:59 UTC (permalink / raw)
To: simona, airlied, javierm, jfalempe
Cc: dri-devel, amd-gfx, intel-gfx, intel-xe, Thomas Zimmermann
Add drm_client_lib.ko to contain DRM's built-in client. Move the
existing client for fbdev emulation into the new module. Protect the
new module behind CONFIG_DRM_CLIENT_LIB.
The Kconfig rules separate the DRM drivers from the DRM clients. A
driver can opt into the default clients, but the user configures
each client individually. To do so, DRM drivers still select
DRM_CLIENT_SELECTION. The option is now a tristate that further
selects all dependencies of the enabled DRM clients. There's
a menu option for each client. Enabling at least one client also
selects DRM_CLIENT_SETUP, so that drivers call drm_client_setup().
New DRM clients should depend on DRM_CLIENT_SELECTION.
There are existing kernel options in drm_fb_helper.o, so leave this
file in the KMS-helper module for now.
v3:
- fix commit changelog
v2:
- keep client code in core
- protect lib with DRM_CLIENT_LIB
- remove duplicate line from Makefile (Jocelyn)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/Kconfig | 26 ++++++++++++++++++++-----
drivers/gpu/drm/Makefile | 14 +++++++++----
drivers/gpu/drm/drm_client_setup.c | 3 +++
drivers/gpu/drm/drm_kms_helper_common.c | 3 +++
4 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index ea1cc924528c..a9055c0b9a1a 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -9,8 +9,6 @@ menuconfig DRM
tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA
select DRM_PANEL_ORIENTATION_QUIRKS
- select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
- select FB_CORE if DRM_FBDEV_EMULATION
select HDMI
select I2C
select DMA_SHARED_BUFFER
@@ -218,10 +216,19 @@ config DRM_CLIENT
option. Drivers that support the default clients should
select DRM_CLIENT_SELECTION instead.
+config DRM_CLIENT_LIB
+ tristate
+ depends on DRM
+ select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
+ select FB_CORE if DRM_FBDEV_EMULATION
+ help
+ This option enables the DRM client library and selects all
+ modules and components according to the enabled clients.
+
config DRM_CLIENT_SELECTION
- bool
+ tristate
depends on DRM
- select DRM_CLIENT_SETUP if DRM_FBDEV_EMULATION
+ select DRM_CLIENT_LIB if DRM_FBDEV_EMULATION
help
Drivers that support in-kernel DRM clients have to select this
option.
@@ -229,11 +236,18 @@ config DRM_CLIENT_SELECTION
config DRM_CLIENT_SETUP
bool
depends on DRM_CLIENT_SELECTION
+ help
+ Enables the DRM client selection. DRM drivers that support the
+ default clients should select DRM_CLIENT_SELECTION instead.
+
+menu "Supported DRM clients"
+ depends on DRM_CLIENT_SELECTION
config DRM_FBDEV_EMULATION
bool "Enable legacy fbdev support for your modesetting driver"
- depends on DRM
+ depends on DRM_CLIENT_SELECTION
select DRM_CLIENT
+ select DRM_CLIENT_SETUP
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
default FB
help
@@ -272,6 +286,8 @@ config DRM_FBDEV_LEAK_PHYS_SMEM
If in doubt, say "N" or spread the word to your closed source
library vendor.
+endmenu
+
config DRM_LOAD_EDID_FIRMWARE
bool "Allow to specify an EDID data set instead of probing for it"
depends on DRM
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index c3e5d353588e..edfd2ebaf153 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -145,13 +145,19 @@ drm_kms_helper-y := \
drm_probe_helper.o \
drm_self_refresh_helper.o \
drm_simple_kms_helper.o
-drm_kms_helper-$(CONFIG_DRM_CLIENT_SETUP) += \
- drm_client_setup.o
drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o
-drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += \
+obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
+
+#
+# DRM clients
+#
+
+drm_client_lib-y := \
+ drm_client_setup.o
+drm_client_lib-$(CONFIG_DRM_FBDEV_EMULATION) += \
drm_fbdev_client.o \
drm_fb_helper.o
-obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
+obj-$(CONFIG_DRM_CLIENT_LIB) += drm_client_lib.o
#
# Drivers and the rest
diff --git a/drivers/gpu/drm/drm_client_setup.c b/drivers/gpu/drm/drm_client_setup.c
index 5969c4ffe31b..c14221ca5a0d 100644
--- a/drivers/gpu/drm/drm_client_setup.c
+++ b/drivers/gpu/drm/drm_client_setup.c
@@ -64,3 +64,6 @@ void drm_client_setup_with_color_mode(struct drm_device *dev, unsigned int color
drm_client_setup_with_fourcc(dev, fourcc);
}
EXPORT_SYMBOL(drm_client_setup_with_color_mode);
+
+MODULE_DESCRIPTION("In-kernel DRM clients");
+MODULE_LICENSE("GPL and additional rights");
diff --git a/drivers/gpu/drm/drm_kms_helper_common.c b/drivers/gpu/drm/drm_kms_helper_common.c
index cfdbc1ac88dc..ecff0b1414ac 100644
--- a/drivers/gpu/drm/drm_kms_helper_common.c
+++ b/drivers/gpu/drm/drm_kms_helper_common.c
@@ -31,11 +31,13 @@
#if defined(CONFIG_DRM_FBDEV_EMULATION)
bool drm_fbdev_emulation = true;
+EXPORT_SYMBOL(drm_fbdev_emulation);
module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600);
MODULE_PARM_DESC(fbdev_emulation,
"Enable legacy fbdev emulation [default=true]");
int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC;
+EXPORT_SYMBOL(drm_fbdev_overalloc);
module_param(drm_fbdev_overalloc, int, 0444);
MODULE_PARM_DESC(drm_fbdev_overalloc,
"Overallocation of the fbdev buffer (%) [default="
@@ -55,6 +57,7 @@ MODULE_PARM_DESC(drm_fbdev_overalloc,
* considered as a broken and legacy behaviour from a modern fbdev device.
*/
bool drm_leak_fbdev_smem;
+EXPORT_SYMBOL(drm_leak_fbdev_smem);
#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
MODULE_PARM_DESC(drm_leak_fbdev_smem,
--
2.46.0
^ permalink raw reply related [flat|nested] 30+ messages in thread* RE: [PATCH v3 12/12] drm/client: Add client-lib module
2024-10-08 11:59 ` [PATCH v3 12/12] drm/client: Add client-lib module Thomas Zimmermann
@ 2024-10-08 21:42 ` Cavitt, Jonathan
0 siblings, 0 replies; 30+ messages in thread
From: Cavitt, Jonathan @ 2024-10-08 21:42 UTC (permalink / raw)
To: Thomas Zimmermann, simona@ffwll.ch, airlied@gmail.com,
javierm@redhat.com, jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Cavitt, Jonathan
-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Thomas Zimmermann
Sent: Tuesday, October 8, 2024 5:00 AM
To: simona@ffwll.ch; airlied@gmail.com; javierm@redhat.com; jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 12/12] drm/client: Add client-lib module
>
> Add drm_client_lib.ko to contain DRM's built-in client. Move the
> existing client for fbdev emulation into the new module. Protect the
> new module behind CONFIG_DRM_CLIENT_LIB.
>
> The Kconfig rules separate the DRM drivers from the DRM clients. A
> driver can opt into the default clients, but the user configures
> each client individually. To do so, DRM drivers still select
> DRM_CLIENT_SELECTION. The option is now a tristate that further
> selects all dependencies of the enabled DRM clients. There's
> a menu option for each client. Enabling at least one client also
> selects DRM_CLIENT_SETUP, so that drivers call drm_client_setup().
> New DRM clients should depend on DRM_CLIENT_SELECTION.
>
> There are existing kernel options in drm_fb_helper.o, so leave this
> file in the KMS-helper module for now.
>
> v3:
> - fix commit changelog
> v2:
> - keep client code in core
> - protect lib with DRM_CLIENT_LIB
> - remove duplicate line from Makefile (Jocelyn)
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
> ---
> drivers/gpu/drm/Kconfig | 26 ++++++++++++++++++++-----
> drivers/gpu/drm/Makefile | 14 +++++++++----
> drivers/gpu/drm/drm_client_setup.c | 3 +++
> drivers/gpu/drm/drm_kms_helper_common.c | 3 +++
> 4 files changed, 37 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index ea1cc924528c..a9055c0b9a1a 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -9,8 +9,6 @@ menuconfig DRM
> tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
> depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA
> select DRM_PANEL_ORIENTATION_QUIRKS
> - select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
> - select FB_CORE if DRM_FBDEV_EMULATION
> select HDMI
> select I2C
> select DMA_SHARED_BUFFER
> @@ -218,10 +216,19 @@ config DRM_CLIENT
> option. Drivers that support the default clients should
> select DRM_CLIENT_SELECTION instead.
>
> +config DRM_CLIENT_LIB
> + tristate
> + depends on DRM
> + select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
> + select FB_CORE if DRM_FBDEV_EMULATION
> + help
> + This option enables the DRM client library and selects all
> + modules and components according to the enabled clients.
> +
> config DRM_CLIENT_SELECTION
> - bool
> + tristate
> depends on DRM
> - select DRM_CLIENT_SETUP if DRM_FBDEV_EMULATION
> + select DRM_CLIENT_LIB if DRM_FBDEV_EMULATION
> help
> Drivers that support in-kernel DRM clients have to select this
> option.
> @@ -229,11 +236,18 @@ config DRM_CLIENT_SELECTION
> config DRM_CLIENT_SETUP
> bool
> depends on DRM_CLIENT_SELECTION
> + help
> + Enables the DRM client selection. DRM drivers that support the
> + default clients should select DRM_CLIENT_SELECTION instead.
> +
> +menu "Supported DRM clients"
> + depends on DRM_CLIENT_SELECTION
>
> config DRM_FBDEV_EMULATION
> bool "Enable legacy fbdev support for your modesetting driver"
> - depends on DRM
> + depends on DRM_CLIENT_SELECTION
> select DRM_CLIENT
> + select DRM_CLIENT_SETUP
> select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
> default FB
> help
> @@ -272,6 +286,8 @@ config DRM_FBDEV_LEAK_PHYS_SMEM
> If in doubt, say "N" or spread the word to your closed source
> library vendor.
>
> +endmenu
> +
> config DRM_LOAD_EDID_FIRMWARE
> bool "Allow to specify an EDID data set instead of probing for it"
> depends on DRM
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index c3e5d353588e..edfd2ebaf153 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -145,13 +145,19 @@ drm_kms_helper-y := \
> drm_probe_helper.o \
> drm_self_refresh_helper.o \
> drm_simple_kms_helper.o
> -drm_kms_helper-$(CONFIG_DRM_CLIENT_SETUP) += \
> - drm_client_setup.o
> drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o
> -drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += \
> +obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
> +
> +#
> +# DRM clients
> +#
> +
> +drm_client_lib-y := \
> + drm_client_setup.o
> +drm_client_lib-$(CONFIG_DRM_FBDEV_EMULATION) += \
> drm_fbdev_client.o \
> drm_fb_helper.o
> -obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
> +obj-$(CONFIG_DRM_CLIENT_LIB) += drm_client_lib.o
>
> #
> # Drivers and the rest
> diff --git a/drivers/gpu/drm/drm_client_setup.c b/drivers/gpu/drm/drm_client_setup.c
> index 5969c4ffe31b..c14221ca5a0d 100644
> --- a/drivers/gpu/drm/drm_client_setup.c
> +++ b/drivers/gpu/drm/drm_client_setup.c
> @@ -64,3 +64,6 @@ void drm_client_setup_with_color_mode(struct drm_device *dev, unsigned int color
> drm_client_setup_with_fourcc(dev, fourcc);
> }
> EXPORT_SYMBOL(drm_client_setup_with_color_mode);
> +
> +MODULE_DESCRIPTION("In-kernel DRM clients");
> +MODULE_LICENSE("GPL and additional rights");
> diff --git a/drivers/gpu/drm/drm_kms_helper_common.c b/drivers/gpu/drm/drm_kms_helper_common.c
> index cfdbc1ac88dc..ecff0b1414ac 100644
> --- a/drivers/gpu/drm/drm_kms_helper_common.c
> +++ b/drivers/gpu/drm/drm_kms_helper_common.c
> @@ -31,11 +31,13 @@
>
> #if defined(CONFIG_DRM_FBDEV_EMULATION)
> bool drm_fbdev_emulation = true;
> +EXPORT_SYMBOL(drm_fbdev_emulation);
> module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600);
> MODULE_PARM_DESC(fbdev_emulation,
> "Enable legacy fbdev emulation [default=true]");
>
> int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC;
> +EXPORT_SYMBOL(drm_fbdev_overalloc);
> module_param(drm_fbdev_overalloc, int, 0444);
> MODULE_PARM_DESC(drm_fbdev_overalloc,
> "Overallocation of the fbdev buffer (%) [default="
> @@ -55,6 +57,7 @@ MODULE_PARM_DESC(drm_fbdev_overalloc,
> * considered as a broken and legacy behaviour from a modern fbdev device.
> */
> bool drm_leak_fbdev_smem;
> +EXPORT_SYMBOL(drm_leak_fbdev_smem);
> #if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
> module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
> MODULE_PARM_DESC(drm_leak_fbdev_smem,
> --
> 2.46.0
>
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm: Introduce DRM client library (rev3)
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (11 preceding siblings ...)
2024-10-08 11:59 ` [PATCH v3 12/12] drm/client: Add client-lib module Thomas Zimmermann
@ 2024-10-08 12:36 ` Patchwork
2024-10-08 12:36 ` ✗ Fi.CI.SPARSE: " Patchwork
` (2 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2024-10-08 12:36 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: intel-gfx
== Series Details ==
Series: drm: Introduce DRM client library (rev3)
URL : https://patchwork.freedesktop.org/series/139221/
State : warning
== Summary ==
Error: dim checkpatch failed
788cc065f162 drm/i915: Select DRM_CLIENT_SELECTION
b2f325ee3728 drm/xe: Select DRM_CLIENT_SELECTION
b004c7fe4793 drm/fbdev-dma: Select FB_DEFERRED_IO
-:15: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#15:
219 | fb_helper->fbdefio.deferred_io = drm_fb_helper_deferred_io;
total: 0 errors, 1 warnings, 0 checks, 8 lines checked
fecdcbe22624 drm/fbdev: Select fbdev I/O helpers from modules that require them
feceaef2925c drm/fbdev: Store fbdev module parameters in separate file
ce9622dcb5d3 drm/client: Move client event handlers to drm_client_event.c
-:191: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#191:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 319 lines checked
dff07e04e9e5 drm/client: Move suspend/resume into DRM client callbacks
89655e7c8186 drm/amdgpu: Suspend and resume internal clients with client helpers
0291c4c0e5a6 drm/nouveau: Suspend and resume clients with client helpers
2bcc32addb28 drm/radeon: Suspend and resume clients with client helpers
602094605571 drm/client: Make client support optional
9cff569442d8 drm/client: Add client-lib module
^ permalink raw reply [flat|nested] 30+ messages in thread* ✗ Fi.CI.SPARSE: warning for drm: Introduce DRM client library (rev3)
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (12 preceding siblings ...)
2024-10-08 12:36 ` ✗ Fi.CI.CHECKPATCH: warning for drm: Introduce DRM client library (rev3) Patchwork
@ 2024-10-08 12:36 ` Patchwork
2024-10-08 13:02 ` ✓ Fi.CI.BAT: success " Patchwork
2024-10-09 17:34 ` ✗ Fi.CI.IGT: failure " Patchwork
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2024-10-08 12:36 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: intel-gfx
== Series Details ==
Series: drm: Introduce DRM client library (rev3)
URL : https://patchwork.freedesktop.org/series/139221/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
^ permalink raw reply [flat|nested] 30+ messages in thread* ✓ Fi.CI.BAT: success for drm: Introduce DRM client library (rev3)
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (13 preceding siblings ...)
2024-10-08 12:36 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-10-08 13:02 ` Patchwork
2024-10-09 17:34 ` ✗ Fi.CI.IGT: failure " Patchwork
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2024-10-08 13:02 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 1619 bytes --]
== Series Details ==
Series: drm: Introduce DRM client library (rev3)
URL : https://patchwork.freedesktop.org/series/139221/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_15490 -> Patchwork_139221v3
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/index.html
Participating hosts (44 -> 42)
------------------------------
Missing (2): bat-rpls-4 fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_139221v3 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live:
- fi-hsw-4770: [PASS][1] -> [DMESG-WARN][2] ([i915#12310]) +1 other test dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/fi-hsw-4770/igt@i915_selftest@live.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/fi-hsw-4770/igt@i915_selftest@live.html
[i915#12310]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12310
Build changes
-------------
* Linux: CI_DRM_15490 -> Patchwork_139221v3
CI-20190529: 20190529
CI_DRM_15490: 131a5dd267541faa13894b97d44af39b257fc887 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8056: a327720fd57ba9f17ed8f15c6453cd2234f9398d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_139221v3: 131a5dd267541faa13894b97d44af39b257fc887 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/index.html
[-- Attachment #2: Type: text/html, Size: 2204 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread* ✗ Fi.CI.IGT: failure for drm: Introduce DRM client library (rev3)
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
` (14 preceding siblings ...)
2024-10-08 13:02 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-10-09 17:34 ` Patchwork
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2024-10-09 17:34 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 99931 bytes --]
== Series Details ==
Series: drm: Introduce DRM client library (rev3)
URL : https://patchwork.freedesktop.org/series/139221/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15490_full -> Patchwork_139221v3_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_139221v3_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_139221v3_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (9 -> 8)
------------------------------
Missing (1): shard-glk-0
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_139221v3_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_exec_balancer@nop:
- shard-mtlp: [PASS][1] -> [DMESG-WARN][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-5/igt@gem_exec_balancer@nop.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-4/igt@gem_exec_balancer@nop.html
New tests
---------
New tests have been introduced between CI_DRM_15490_full and Patchwork_139221v3_full:
### New IGT tests (2) ###
* igt@kms_universal_plane@universal-plane-pageflip-windowed@pipe-b-dp-3:
- Statuses : 1 pass(s)
- Exec time: [0.49] s
* igt@kms_universal_plane@universal-plane-pageflip-windowed@pipe-c-dp-3:
- Statuses : 1 pass(s)
- Exec time: [0.51] s
Known issues
------------
Here are the changes found in Patchwork_139221v3_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@drm_fdinfo@virtual-busy-hang:
- shard-dg2: NOTRUN -> [SKIP][3] ([i915#8414])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@drm_fdinfo@virtual-busy-hang.html
- shard-dg1: NOTRUN -> [SKIP][4] ([i915#8414])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@drm_fdinfo@virtual-busy-hang.html
* igt@fbdev@unaligned-read:
- shard-dg2: [PASS][5] -> [SKIP][6] ([i915#2582])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@fbdev@unaligned-read.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@fbdev@unaligned-read.html
* igt@gem_busy@close-race:
- shard-tglu: NOTRUN -> [FAIL][7] ([i915#12297])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@gem_busy@close-race.html
* igt@gem_ccs@block-copy-compressed:
- shard-rkl: NOTRUN -> [SKIP][8] ([i915#3555] / [i915#9323])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@gem_ccs@block-copy-compressed.html
* igt@gem_ccs@suspend-resume:
- shard-rkl: NOTRUN -> [SKIP][9] ([i915#9323])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@gem_ccs@suspend-resume.html
- shard-tglu: NOTRUN -> [SKIP][10] ([i915#9323]) +1 other test skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@gem_ccs@suspend-resume.html
* igt@gem_ctx_engines@invalid-engines:
- shard-mtlp: [PASS][11] -> [FAIL][12] ([i915#12027])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-4/igt@gem_ctx_engines@invalid-engines.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-5/igt@gem_ctx_engines@invalid-engines.html
* igt@gem_ctx_persistence@heartbeat-hostile:
- shard-dg2: NOTRUN -> [SKIP][13] ([i915#8555])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@gem_ctx_persistence@heartbeat-hostile.html
- shard-dg1: NOTRUN -> [SKIP][14] ([i915#8555])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gem_ctx_persistence@heartbeat-hostile.html
* igt@gem_ctx_sseu@invalid-sseu:
- shard-dg2: NOTRUN -> [SKIP][15] ([i915#280])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@gem_ctx_sseu@invalid-sseu.html
- shard-dg1: NOTRUN -> [SKIP][16] ([i915#280])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gem_ctx_sseu@invalid-sseu.html
* igt@gem_exec_balancer@parallel-balancer:
- shard-rkl: NOTRUN -> [SKIP][17] ([i915#4525])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@gem_exec_balancer@parallel-balancer.html
* igt@gem_exec_fair@basic-deadline:
- shard-rkl: [PASS][18] -> [FAIL][19] ([i915#2846])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-rkl-5/igt@gem_exec_fair@basic-deadline.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-2/igt@gem_exec_fair@basic-deadline.html
* igt@gem_exec_fair@basic-none-solo:
- shard-snb: NOTRUN -> [SKIP][20] +19 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb5/igt@gem_exec_fair@basic-none-solo.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-rkl: [PASS][21] -> [FAIL][22] ([i915#2842]) +1 other test fail
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-rkl-5/igt@gem_exec_fair@basic-pace-share@rcs0.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-1/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_reloc@basic-range-active:
- shard-dg2: NOTRUN -> [SKIP][23] ([i915#3281]) +3 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-8/igt@gem_exec_reloc@basic-range-active.html
* igt@gem_exec_reloc@basic-write-read:
- shard-rkl: NOTRUN -> [SKIP][24] ([i915#3281]) +9 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@gem_exec_reloc@basic-write-read.html
* igt@gem_exec_reloc@basic-write-read-noreloc:
- shard-dg1: NOTRUN -> [SKIP][25] ([i915#3281]) +2 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gem_exec_reloc@basic-write-read-noreloc.html
* igt@gem_exec_schedule@semaphore-power:
- shard-dg1: NOTRUN -> [SKIP][26] ([i915#4812])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gem_exec_schedule@semaphore-power.html
- shard-dg2: NOTRUN -> [SKIP][27] ([i915#4537] / [i915#4812])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@gem_exec_schedule@semaphore-power.html
* igt@gem_exec_suspend@basic-s4-devices:
- shard-dg2: [PASS][28] -> [ABORT][29] ([i915#7975] / [i915#8213]) +1 other test abort
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-11/igt@gem_exec_suspend@basic-s4-devices.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-7/igt@gem_exec_suspend@basic-s4-devices.html
* igt@gem_fence_thrash@bo-write-verify-x:
- shard-dg2: NOTRUN -> [SKIP][30] ([i915#4860])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@gem_fence_thrash@bo-write-verify-x.html
- shard-dg1: NOTRUN -> [SKIP][31] ([i915#4860])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gem_fence_thrash@bo-write-verify-x.html
* igt@gem_lmem_swapping@heavy-verify-random:
- shard-rkl: NOTRUN -> [SKIP][32] ([i915#4613]) +3 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@gem_lmem_swapping@heavy-verify-random.html
- shard-tglu: NOTRUN -> [SKIP][33] ([i915#4613]) +2 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@gem_lmem_swapping@heavy-verify-random.html
* igt@gem_mmap_gtt@ptrace:
- shard-dg2: NOTRUN -> [SKIP][34] ([i915#4077])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@gem_mmap_gtt@ptrace.html
* igt@gem_mmap_wc@write-gtt-read-wc:
- shard-dg2: NOTRUN -> [SKIP][35] ([i915#4083]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@gem_mmap_wc@write-gtt-read-wc.html
- shard-dg1: NOTRUN -> [SKIP][36] ([i915#4083]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gem_mmap_wc@write-gtt-read-wc.html
* igt@gem_partial_pwrite_pread@reads-snoop:
- shard-dg1: NOTRUN -> [SKIP][37] ([i915#3282]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gem_partial_pwrite_pread@reads-snoop.html
* igt@gem_partial_pwrite_pread@writes-after-reads:
- shard-rkl: NOTRUN -> [SKIP][38] ([i915#3282]) +4 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads.html
* igt@gem_pread@display:
- shard-dg2: NOTRUN -> [SKIP][39] ([i915#3282]) +2 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-10/igt@gem_pread@display.html
* igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted:
- shard-tglu: NOTRUN -> [SKIP][40] ([i915#4270])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html
* igt@gem_pxp@protected-raw-src-copy-not-readible:
- shard-rkl: NOTRUN -> [SKIP][41] ([i915#4270])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@gem_pxp@protected-raw-src-copy-not-readible.html
* igt@gem_render_copy@mixed-tiled-to-yf-tiled-ccs:
- shard-mtlp: NOTRUN -> [SKIP][42] ([i915#8428])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-7/igt@gem_render_copy@mixed-tiled-to-yf-tiled-ccs.html
* igt@gem_set_tiling_vs_blt@tiled-to-untiled:
- shard-dg1: NOTRUN -> [SKIP][43] ([i915#4079])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-19/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
- shard-mtlp: NOTRUN -> [SKIP][44] ([i915#4079])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
* igt@gem_userptr_blits@dmabuf-unsync:
- shard-rkl: NOTRUN -> [SKIP][45] ([i915#3297]) +2 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@gem_userptr_blits@dmabuf-unsync.html
- shard-tglu: NOTRUN -> [SKIP][46] ([i915#3297]) +1 other test skip
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@gem_userptr_blits@dmabuf-unsync.html
* igt@gen3_render_tiledy_blits:
- shard-mtlp: NOTRUN -> [SKIP][47] +3 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@gen3_render_tiledy_blits.html
* igt@gen9_exec_parse@batch-without-end:
- shard-dg2: NOTRUN -> [SKIP][48] ([i915#2856])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@gen9_exec_parse@batch-without-end.html
- shard-dg1: NOTRUN -> [SKIP][49] ([i915#2527]) +1 other test skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@gen9_exec_parse@batch-without-end.html
* igt@gen9_exec_parse@bb-secure:
- shard-mtlp: NOTRUN -> [SKIP][50] ([i915#2856])
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@gen9_exec_parse@bb-secure.html
* igt@gen9_exec_parse@bb-start-param:
- shard-rkl: NOTRUN -> [SKIP][51] ([i915#2527]) +2 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@gen9_exec_parse@bb-start-param.html
* igt@i915_module_load@load:
- shard-rkl: NOTRUN -> [SKIP][52] ([i915#6227])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@i915_module_load@load.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-snb: [PASS][53] -> [ABORT][54] ([i915#9820])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-snb5/igt@i915_module_load@reload-with-fault-injection.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb1/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_freq_api@freq-reset:
- shard-rkl: NOTRUN -> [SKIP][55] ([i915#8399])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@i915_pm_freq_api@freq-reset.html
* igt@i915_pm_rps@engine-order:
- shard-glk: ([PASS][56], [PASS][57]) -> [FAIL][58] ([i915#12308])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk9/igt@i915_pm_rps@engine-order.html
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk5/igt@i915_pm_rps@engine-order.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk7/igt@i915_pm_rps@engine-order.html
* igt@i915_pm_rps@min-max-config-loaded:
- shard-dg2: NOTRUN -> [SKIP][59] ([i915#11681] / [i915#6621])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@i915_pm_rps@min-max-config-loaded.html
- shard-dg1: NOTRUN -> [SKIP][60] ([i915#11681] / [i915#6621])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@i915_pm_rps@min-max-config-loaded.html
* igt@i915_pm_rps@reset:
- shard-snb: [PASS][61] -> [INCOMPLETE][62] ([i915#7790])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-snb1/igt@i915_pm_rps@reset.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb1/igt@i915_pm_rps@reset.html
* igt@i915_selftest@live@workarounds:
- shard-mtlp: [PASS][63] -> [ABORT][64] ([i915#12061] / [i915#12216]) +1 other test abort
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-1/igt@i915_selftest@live@workarounds.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@i915_selftest@live@workarounds.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-dp-3-4-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][65] ([i915#8709]) +11 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-10/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-dp-3-4-mc-ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc-ccs:
- shard-dg1: NOTRUN -> [SKIP][66] ([i915#8709]) +7 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-3-y-rc-ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][67] ([i915#8709]) +3 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html
* igt@kms_big_fb@4-tiled-addfb-size-overflow:
- shard-tglu: NOTRUN -> [SKIP][68] ([i915#5286]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_big_fb@4-tiled-addfb-size-overflow.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-mtlp: [PASS][69] -> [FAIL][70] ([i915#5138])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-5/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-rkl: NOTRUN -> [SKIP][71] ([i915#5286]) +4 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_big_fb@linear-16bpp-rotate-270:
- shard-dg2: NOTRUN -> [SKIP][72] ([i915#9197])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_big_fb@linear-16bpp-rotate-270.html
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-dg1: NOTRUN -> [SKIP][73] ([i915#3638])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][74] ([i915#3638]) +1 other test skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-16bpp-rotate-270:
- shard-dg2: NOTRUN -> [SKIP][75] ([i915#5190] / [i915#9197])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_big_fb@y-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-addfb:
- shard-dg2: NOTRUN -> [SKIP][76] ([i915#5190]) +1 other test skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_big_fb@y-tiled-addfb.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-dg2: NOTRUN -> [SKIP][77] ([i915#4538] / [i915#5190]) +1 other test skip
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-dg1: NOTRUN -> [SKIP][78] ([i915#4538])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][79] ([i915#6095]) +43 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-2/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
- shard-tglu: NOTRUN -> [SKIP][80] ([i915#12313])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][81] ([i915#10307] / [i915#10434] / [i915#6095])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-8/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-rkl: NOTRUN -> [SKIP][82] ([i915#12313]) +2 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs:
- shard-tglu: NOTRUN -> [SKIP][83] ([i915#6095]) +14 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-2:
- shard-dg2: NOTRUN -> [SKIP][84] ([i915#10307] / [i915#6095]) +173 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-11/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-2.html
* igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3:
- shard-dg1: NOTRUN -> [SKIP][85] ([i915#6095]) +149 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-13/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3.html
* igt@kms_cdclk@mode-transition:
- shard-rkl: NOTRUN -> [SKIP][86] ([i915#3742]) +1 other test skip
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_cdclk@mode-transition.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-tglu: NOTRUN -> [SKIP][87] ([i915#3742])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][88] ([i915#4087]) +3 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-5/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html
* igt@kms_chamelium_audio@hdmi-audio:
- shard-dg2: NOTRUN -> [SKIP][89] ([i915#7828]) +2 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_chamelium_audio@hdmi-audio.html
* igt@kms_chamelium_frames@dp-crc-single:
- shard-tglu: NOTRUN -> [SKIP][90] ([i915#7828]) +3 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_chamelium_frames@dp-crc-single.html
* igt@kms_chamelium_frames@hdmi-frame-dump:
- shard-dg1: NOTRUN -> [SKIP][91] ([i915#7828])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_chamelium_frames@hdmi-frame-dump.html
* igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
- shard-rkl: NOTRUN -> [SKIP][92] ([i915#7828]) +7 other tests skip
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-tglu: NOTRUN -> [SKIP][93] ([i915#11453]) +1 other test skip
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-rkl: NOTRUN -> [SKIP][94] ([i915#11453]) +2 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-rkl: NOTRUN -> [SKIP][95] ([i915#3555]) +3 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_crc@cursor-sliding-max-size:
- shard-dg1: NOTRUN -> [SKIP][96] ([i915#3555])
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-19/igt@kms_cursor_crc@cursor-sliding-max-size.html
- shard-mtlp: NOTRUN -> [SKIP][97] ([i915#3555] / [i915#8814])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@kms_cursor_crc@cursor-sliding-max-size.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-rkl: NOTRUN -> [SKIP][98] +27 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-dg2: NOTRUN -> [SKIP][99] ([i915#9833])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
- shard-dg1: NOTRUN -> [SKIP][100] ([i915#9723])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_display_modes@mst-extended-mode-negative:
- shard-rkl: NOTRUN -> [SKIP][101] ([i915#8588])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_display_modes@mst-extended-mode-negative.html
- shard-tglu: NOTRUN -> [SKIP][102] ([i915#8588])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_display_modes@mst-extended-mode-negative.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-dg2: NOTRUN -> [SKIP][103] ([i915#3840] / [i915#9688])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_dsc@dsc-fractional-bpp.html
- shard-dg1: NOTRUN -> [SKIP][104] ([i915#3840])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-rkl: NOTRUN -> [SKIP][105] ([i915#3840])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
- shard-mtlp: NOTRUN -> [SKIP][106] ([i915#3840])
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-7/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_fbcon_fbt@fbc:
- shard-dg2: [PASS][107] -> [SKIP][108] ([i915#1849])
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_fbcon_fbt@fbc.html
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_fbcon_fbt@fbc.html
* igt@kms_fbcon_fbt@psr:
- shard-dg2: NOTRUN -> [SKIP][109] ([i915#3469])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_fbcon_fbt@psr.html
- shard-dg1: NOTRUN -> [SKIP][110] ([i915#3469])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_fbcon_fbt@psr.html
* igt@kms_feature_discovery@display-2x:
- shard-tglu: NOTRUN -> [SKIP][111] ([i915#1839])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_feature_discovery@display-2x.html
* igt@kms_feature_discovery@display-4x:
- shard-rkl: NOTRUN -> [SKIP][112] ([i915#1839])
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_feature_discovery@display-4x.html
* igt@kms_feature_discovery@dp-mst:
- shard-rkl: NOTRUN -> [SKIP][113] ([i915#9337])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_feature_discovery@dp-mst.html
- shard-tglu: NOTRUN -> [SKIP][114] ([i915#9337])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_feature_discovery@dp-mst.html
* igt@kms_flip@2x-absolute-wf_vblank:
- shard-dg2: NOTRUN -> [SKIP][115] +6 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_flip@2x-absolute-wf_vblank.html
- shard-dg1: NOTRUN -> [SKIP][116] ([i915#9934]) +2 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_flip@2x-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-wf_vblank-interruptible:
- shard-mtlp: NOTRUN -> [SKIP][117] ([i915#3637])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html
* igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ab-vga1-hdmi-a1:
- shard-snb: [PASS][118] -> [FAIL][119] ([i915#2122]) +1 other test fail
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-snb2/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ab-vga1-hdmi-a1.html
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb5/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ab-vga1-hdmi-a1.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-tglu: NOTRUN -> [SKIP][120] ([i915#3637]) +4 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@plain-flip-ts-check-interruptible:
- shard-mtlp: [PASS][121] -> [FAIL][122] ([i915#11989] / [i915#2122])
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-2/igt@kms_flip@plain-flip-ts-check-interruptible.html
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-8/igt@kms_flip@plain-flip-ts-check-interruptible.html
* igt@kms_flip@plain-flip-ts-check-interruptible@a-edp1:
- shard-mtlp: [PASS][123] -> [FAIL][124] ([i915#2122])
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-2/igt@kms_flip@plain-flip-ts-check-interruptible@a-edp1.html
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-8/igt@kms_flip@plain-flip-ts-check-interruptible@a-edp1.html
* igt@kms_flip_event_leak@basic:
- shard-dg1: [PASS][125] -> [DMESG-WARN][126] ([i915#4423])
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg1-19/igt@kms_flip_event_leak@basic.html
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-18/igt@kms_flip_event_leak@basic.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
- shard-dg1: NOTRUN -> [SKIP][127] ([i915#2672] / [i915#3555]) +1 other test skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling:
- shard-rkl: NOTRUN -> [SKIP][128] ([i915#2672] / [i915#3555]) +2 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling:
- shard-tglu: NOTRUN -> [SKIP][129] ([i915#2672] / [i915#3555]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode:
- shard-tglu: NOTRUN -> [SKIP][130] ([i915#2587] / [i915#2672]) +1 other test skip
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][131] ([i915#2672]) +2 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][132] ([i915#2672]) +1 other test skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/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-16bpp-4tile-downscaling@pipe-a-valid-mode:
- shard-dg1: NOTRUN -> [SKIP][133] ([i915#2587] / [i915#2672]) +1 other test skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling:
- shard-dg2: [PASS][134] -> [SKIP][135] ([i915#3555]) +3 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu:
- shard-dg2: [PASS][136] -> [SKIP][137] ([i915#5354]) +7 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu.html
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt:
- shard-dg2: NOTRUN -> [SKIP][138] ([i915#5354]) +4 other tests skip
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt:
- shard-rkl: NOTRUN -> [SKIP][139] ([i915#1825]) +33 other tests skip
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-tiling-4:
- shard-tglu: NOTRUN -> [SKIP][140] ([i915#5439])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][141] ([i915#3458]) +2 other tests skip
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-10/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-dg2: NOTRUN -> [SKIP][142] ([i915#8708]) +4 other tests skip
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc.html
- shard-dg1: NOTRUN -> [SKIP][143] ([i915#8708]) +3 other tests skip
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render:
- shard-mtlp: NOTRUN -> [SKIP][144] ([i915#1825]) +2 other tests skip
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@pipe-fbc-rte:
- shard-rkl: NOTRUN -> [SKIP][145] ([i915#9766])
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
* igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw:
- shard-dg1: NOTRUN -> [SKIP][146] ([i915#3458]) +1 other test skip
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move:
- shard-tglu: NOTRUN -> [SKIP][147] +39 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt:
- shard-dg1: NOTRUN -> [SKIP][148] +5 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@psr-suspend:
- shard-rkl: NOTRUN -> [SKIP][149] ([i915#3023]) +23 other tests skip
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_frontbuffer_tracking@psr-suspend.html
* igt@kms_hdr@static-toggle:
- shard-dg2: [PASS][150] -> [SKIP][151] ([i915#3555] / [i915#8228]) +1 other test skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-10/igt@kms_hdr@static-toggle.html
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-11/igt@kms_hdr@static-toggle.html
- shard-rkl: NOTRUN -> [SKIP][152] ([i915#3555] / [i915#8228]) +1 other test skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_hdr@static-toggle.html
* igt@kms_hdr@static-toggle-dpms:
- shard-dg2: NOTRUN -> [SKIP][153] ([i915#3555] / [i915#8228])
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_joiner@basic-force-big-joiner:
- shard-tglu: NOTRUN -> [SKIP][154] ([i915#10656]) +1 other test skip
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_joiner@basic-force-big-joiner.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-rkl: NOTRUN -> [SKIP][155] ([i915#10656]) +2 other tests skip
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_plane@plane-position-hole-dpms:
- shard-dg2: [PASS][156] -> [SKIP][157] ([i915#8825]) +1 other test skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_plane@plane-position-hole-dpms.html
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane@plane-position-hole-dpms.html
* igt@kms_plane_alpha_blend@constant-alpha-mid:
- shard-dg2: [PASS][158] -> [SKIP][159] ([i915#7294]) +1 other test skip
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_plane_alpha_blend@constant-alpha-mid.html
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_alpha_blend@constant-alpha-mid.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format:
- shard-dg2: [PASS][160] -> [SKIP][161] ([i915#8152] / [i915#9423])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format.html
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a:
- shard-rkl: NOTRUN -> [SKIP][162] ([i915#12247]) +5 other tests skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html
- shard-tglu: NOTRUN -> [SKIP][163] ([i915#12247]) +4 other tests skip
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-d:
- shard-dg2: [PASS][164] -> [SKIP][165] ([i915#8152]) +3 other tests skip
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-d.html
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-d.html
* igt@kms_plane_scaling@planes-scaler-unity-scaling:
- shard-dg2: [PASS][166] -> [SKIP][167] ([i915#3555] / [i915#8152] / [i915#9423]) +2 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_plane_scaling@planes-scaler-unity-scaling.html
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_scaling@planes-scaler-unity-scaling.html
* igt@kms_plane_scaling@planes-scaler-unity-scaling@pipe-d:
- shard-dg2: [PASS][168] -> [SKIP][169] ([i915#12247] / [i915#8152]) +1 other test skip
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_plane_scaling@planes-scaler-unity-scaling@pipe-d.html
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_scaling@planes-scaler-unity-scaling@pipe-d.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b:
- shard-dg2: [PASS][170] -> [SKIP][171] ([i915#12247]) +17 other tests skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b.html
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-b.html
* igt@kms_plane_scaling@planes-upscale-20x20:
- shard-dg2: [PASS][172] -> [SKIP][173] ([i915#6953] / [i915#8152] / [i915#9423]) +1 other test skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_plane_scaling@planes-upscale-20x20.html
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_scaling@planes-upscale-20x20.html
* igt@kms_pm_backlight@basic-brightness:
- shard-rkl: NOTRUN -> [SKIP][174] ([i915#5354])
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_pm_backlight@basic-brightness.html
- shard-tglu: NOTRUN -> [SKIP][175] ([i915#9812])
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_pm_dc@dc9-dpms:
- shard-tglu: [PASS][176] -> [SKIP][177] ([i915#4281])
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-tglu-6/igt@kms_pm_dc@dc9-dpms.html
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_pm_dc@dc9-dpms.html
* igt@kms_pm_rpm@dpms-mode-unset-lpsp:
- shard-rkl: NOTRUN -> [SKIP][178] ([i915#9519])
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-dg2: [PASS][179] -> [SKIP][180] ([i915#9519]) +2 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_pm_rpm@modeset-non-lpsp.html
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-rkl: [PASS][181] -> [SKIP][182] ([i915#9519]) +2 other tests skip
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
* igt@kms_prime@basic-modeset-hybrid:
- shard-rkl: NOTRUN -> [SKIP][183] ([i915#6524])
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_prime@basic-modeset-hybrid.html
- shard-tglu: NOTRUN -> [SKIP][184] ([i915#6524])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_prime@basic-modeset-hybrid.html
* igt@kms_properties@plane-properties-legacy:
- shard-dg2: [PASS][185] -> [SKIP][186] ([i915#11521])
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_properties@plane-properties-legacy.html
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_properties@plane-properties-legacy.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
- shard-rkl: NOTRUN -> [SKIP][187] ([i915#11520]) +7 other tests skip
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf@pipe-a-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][188] ([i915#9808])
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf@pipe-a-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][189] ([i915#12316]) +1 other test skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf@pipe-b-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area:
- shard-tglu: NOTRUN -> [SKIP][190] ([i915#11520]) +3 other tests skip
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
- shard-dg2: NOTRUN -> [SKIP][191] ([i915#11520]) +1 other test skip
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf:
- shard-dg1: NOTRUN -> [SKIP][192] ([i915#11520]) +2 other tests skip
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf.html
* igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area:
- shard-snb: NOTRUN -> [SKIP][193] ([i915#11520])
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb5/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-rkl: NOTRUN -> [SKIP][194] ([i915#9683])
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@fbc-psr-primary-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][195] ([i915#1072] / [i915#9732]) +5 other tests skip
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_psr@fbc-psr-primary-mmap-cpu.html
* igt@kms_psr@fbc-psr2-primary-mmap-cpu:
- shard-glk: NOTRUN -> [SKIP][196]
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk2/igt@kms_psr@fbc-psr2-primary-mmap-cpu.html
* igt@kms_psr@fbc-psr2-sprite-render:
- shard-dg1: NOTRUN -> [SKIP][197] ([i915#1072] / [i915#9732]) +4 other tests skip
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_psr@fbc-psr2-sprite-render.html
* igt@kms_psr@pr-dpms:
- shard-tglu: NOTRUN -> [SKIP][198] ([i915#9732]) +9 other tests skip
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@kms_psr@pr-dpms.html
* igt@kms_psr@psr-sprite-plane-onoff:
- shard-rkl: NOTRUN -> [SKIP][199] ([i915#1072] / [i915#9732]) +19 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_rotation_crc@primary-4-tiled-reflect-x-0:
- shard-rkl: NOTRUN -> [SKIP][200] ([i915#5289])
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-dg1: NOTRUN -> [SKIP][201] ([i915#5289])
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_scaling_modes@scaling-mode-full-aspect:
- shard-tglu: NOTRUN -> [SKIP][202] ([i915#3555]) +3 other tests skip
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_scaling_modes@scaling-mode-full-aspect.html
* igt@kms_sysfs_edid_timing:
- shard-dg2: [PASS][203] -> [FAIL][204] ([IGT#2])
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-10/igt@kms_sysfs_edid_timing.html
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-11/igt@kms_sysfs_edid_timing.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-rkl: NOTRUN -> [SKIP][205] ([i915#8623])
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vblank@ts-continuation-modeset:
- shard-dg2: [PASS][206] -> [SKIP][207] ([i915#9197]) +41 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_vblank@ts-continuation-modeset.html
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_vblank@ts-continuation-modeset.html
* igt@kms_vrr@negative-basic:
- shard-dg2: [PASS][208] -> [SKIP][209] ([i915#3555] / [i915#9906])
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-10/igt@kms_vrr@negative-basic.html
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-11/igt@kms_vrr@negative-basic.html
* igt@kms_writeback@writeback-fb-id:
- shard-rkl: NOTRUN -> [SKIP][210] ([i915#2437])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@kms_writeback@writeback-fb-id.html
* igt@kms_writeback@writeback-pixel-formats:
- shard-rkl: NOTRUN -> [SKIP][211] ([i915#2437] / [i915#9412])
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-3/igt@kms_writeback@writeback-pixel-formats.html
- shard-tglu: NOTRUN -> [SKIP][212] ([i915#2437] / [i915#9412])
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@kms_writeback@writeback-pixel-formats.html
* igt@perf@global-sseu-config:
- shard-dg2: NOTRUN -> [SKIP][213] ([i915#7387])
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@perf@global-sseu-config.html
* igt@perf@per-context-mode-unprivileged:
- shard-dg1: NOTRUN -> [SKIP][214] ([i915#2433])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-19/igt@perf@per-context-mode-unprivileged.html
* igt@perf_pmu@cpu-hotplug:
- shard-tglu: NOTRUN -> [SKIP][215] ([i915#8850])
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@perf_pmu@cpu-hotplug.html
* igt@prime_vgem@basic-read:
- shard-rkl: NOTRUN -> [SKIP][216] ([i915#3291] / [i915#3708])
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-5/igt@prime_vgem@basic-read.html
* igt@prime_vgem@fence-write-hang:
- shard-rkl: NOTRUN -> [SKIP][217] ([i915#3708])
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-6/igt@prime_vgem@fence-write-hang.html
* igt@sriov_basic@enable-vfs-bind-unbind-each:
- shard-tglu: NOTRUN -> [SKIP][218] ([i915#9917])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-8/igt@sriov_basic@enable-vfs-bind-unbind-each.html
* igt@tools_test@sysfs_l3_parity:
- shard-dg2: NOTRUN -> [SKIP][219] ([i915#4818])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@tools_test@sysfs_l3_parity.html
- shard-dg1: NOTRUN -> [SKIP][220] ([i915#4818])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@tools_test@sysfs_l3_parity.html
#### Possible fixes ####
* igt@fbdev@unaligned-write:
- shard-dg2: [SKIP][221] ([i915#2582]) -> [PASS][222]
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@fbdev@unaligned-write.html
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@fbdev@unaligned-write.html
* igt@gem_ccs@suspend-resume:
- shard-dg2: [INCOMPLETE][223] ([i915#7297]) -> [PASS][224] +1 other test pass
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-1/igt@gem_ccs@suspend-resume.html
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-8/igt@gem_ccs@suspend-resume.html
* igt@gem_ctx_engines@invalid-engines:
- shard-rkl: [FAIL][225] ([i915#12027]) -> [PASS][226]
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-rkl-2/igt@gem_ctx_engines@invalid-engines.html
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-4/igt@gem_ctx_engines@invalid-engines.html
* igt@gem_ctx_persistence@hostile:
- shard-tglu: [FAIL][227] ([i915#11980]) -> [PASS][228]
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-tglu-10/igt@gem_ctx_persistence@hostile.html
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-9/igt@gem_ctx_persistence@hostile.html
* igt@gem_eio@kms:
- shard-dg1: [FAIL][229] ([i915#5784]) -> [PASS][230]
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg1-17/igt@gem_eio@kms.html
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-18/igt@gem_eio@kms.html
* igt@gem_eio@reset-stress:
- shard-dg2: [FAIL][231] ([i915#5784]) -> [PASS][232]
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@gem_eio@reset-stress.html
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@gem_eio@reset-stress.html
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-glk: ([PASS][233], [FAIL][234]) ([i915#2842]) -> [PASS][235] +1 other test pass
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk7/igt@gem_exec_fair@basic-pace-share@rcs0.html
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk5/igt@gem_exec_fair@basic-pace-share@rcs0.html
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk1/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_fair@basic-pace@vecs0:
- shard-rkl: [FAIL][236] ([i915#2842]) -> [PASS][237] +1 other test pass
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-rkl-7/igt@gem_exec_fair@basic-pace@vecs0.html
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@gem_exec_fair@basic-pace@vecs0.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-glk: ([PASS][238], [ABORT][239]) ([i915#9820]) -> [PASS][240]
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk4/igt@i915_module_load@reload-with-fault-injection.html
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk1/igt@i915_module_load@reload-with-fault-injection.html
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk7/igt@i915_module_load@reload-with-fault-injection.html
- shard-dg2: [ABORT][241] ([i915#9820]) -> [PASS][242]
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-7/igt@i915_module_load@reload-with-fault-injection.html
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@i915_module_load@reload-with-fault-injection.html
- shard-dg1: [ABORT][243] ([i915#9820]) -> [PASS][244]
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg1-16/igt@i915_module_load@reload-with-fault-injection.html
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-12/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0:
- shard-dg1: [FAIL][245] ([i915#3591]) -> [PASS][246] +1 other test pass
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg1-19/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-13/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-4:
- shard-dg1: [FAIL][247] ([i915#5956]) -> [PASS][248] +1 other test pass
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg1-18/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-4.html
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-19/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-4.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs:
- shard-dg2: [SKIP][249] ([i915#9197]) -> [PASS][250] +21 other tests pass
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs.html
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs.html
* igt@kms_color@ctm-0-50:
- shard-dg2: [SKIP][251] ([i915#5354]) -> [PASS][252] +8 other tests pass
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_color@ctm-0-50.html
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_color@ctm-0-50.html
* igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2:
- shard-glk: ([FAIL][253], [PASS][254]) -> [PASS][255]
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2.html
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk8/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2.html
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2.html
* igt@kms_flip@2x-wf_vblank-ts-check@ac-hdmi-a1-hdmi-a2:
- shard-glk: ([FAIL][256], [PASS][257]) ([i915#2122]) -> [PASS][258] +2 other tests pass
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk4/igt@kms_flip@2x-wf_vblank-ts-check@ac-hdmi-a1-hdmi-a2.html
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk9/igt@kms_flip@2x-wf_vblank-ts-check@ac-hdmi-a1-hdmi-a2.html
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk5/igt@kms_flip@2x-wf_vblank-ts-check@ac-hdmi-a1-hdmi-a2.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a2:
- shard-glk: ([PASS][259], [FAIL][260]) ([i915#79]) -> [PASS][261] +1 other test pass
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk4/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a2.html
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk1/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a2.html
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk5/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a2.html
* igt@kms_flip@flip-vs-suspend:
- shard-dg1: [INCOMPLETE][262] ([i915#4839] / [i915#6113]) -> [PASS][263] +1 other test pass
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg1-12/igt@kms_flip@flip-vs-suspend.html
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-19/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-glk: ([INCOMPLETE][264], [INCOMPLETE][265]) ([i915#4839]) -> [PASS][266]
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk2/igt@kms_flip@flip-vs-suspend-interruptible.html
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk8/igt@kms_flip@flip-vs-suspend-interruptible.html
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk2/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a2:
- shard-glk: ([INCOMPLETE][267], [INCOMPLETE][268]) ([i915#9878]) -> [PASS][269]
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk8/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a2.html
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk2/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a2.html
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk2/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a2.html
* igt@kms_flip@flip-vs-suspend@d-edp1:
- shard-mtlp: [INCOMPLETE][270] ([i915#6113]) -> [PASS][271] +3 other tests pass
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-4/igt@kms_flip@flip-vs-suspend@d-edp1.html
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-1/igt@kms_flip@flip-vs-suspend@d-edp1.html
* igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling:
- shard-dg2: [SKIP][272] ([i915#3555]) -> [PASS][273] +2 other tests pass
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling.html
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
- shard-dg2: [FAIL][274] ([i915#6880]) -> [PASS][275]
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-10/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-snb: [SKIP][276] -> [PASS][277]
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-snb2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-wc.html
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-dg2: [SKIP][278] ([i915#3555] / [i915#8228]) -> [PASS][279]
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_hdr@invalid-metadata-sizes.html
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-10/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_plane_alpha_blend@constant-alpha-max:
- shard-dg2: [SKIP][280] ([i915#7294]) -> [PASS][281] +1 other test pass
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_alpha_blend@constant-alpha-max.html
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_plane_alpha_blend@constant-alpha-max.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation:
- shard-dg2: [SKIP][282] ([i915#12247] / [i915#8152] / [i915#9423]) -> [PASS][283]
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation.html
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b:
- shard-dg2: [SKIP][284] ([i915#12247]) -> [PASS][285] +2 other tests pass
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-d:
- shard-dg2: [SKIP][286] ([i915#12247] / [i915#8152]) -> [PASS][287]
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-d.html
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-d.html
* igt@kms_pm_dc@dc6-dpms:
- shard-tglu: [FAIL][288] ([i915#9295]) -> [PASS][289]
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-tglu-8/igt@kms_pm_dc@dc6-dpms.html
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-6/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-rkl: [SKIP][290] ([i915#9519]) -> [PASS][291]
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-rkl-6/igt@kms_pm_rpm@dpms-lpsp.html
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-rkl-7/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-dg2: [SKIP][292] ([i915#9519]) -> [PASS][293] +1 other test pass
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
- shard-mtlp: [FAIL][294] -> [PASS][295] +1 other test pass
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-6/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-6/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-mtlp: [FAIL][296] ([i915#9196]) -> [PASS][297] +1 other test pass
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-4/igt@kms_universal_plane@cursor-fb-leak.html
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-6/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_vblank@ts-continuation-dpms-suspend:
- shard-snb: [INCOMPLETE][298] -> [PASS][299] +1 other test pass
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-snb5/igt@kms_vblank@ts-continuation-dpms-suspend.html
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb5/igt@kms_vblank@ts-continuation-dpms-suspend.html
#### Warnings ####
* igt@gem_exec_fair@basic-pace@rcs0:
- shard-tglu: [FAIL][300] ([i915#2842]) -> [FAIL][301] ([i915#2876])
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-tglu-3/igt@gem_exec_fair@basic-pace@rcs0.html
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-tglu-7/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-mtlp: [ABORT][302] ([i915#10131] / [i915#10887] / [i915#9820]) -> [ABORT][303] ([i915#10131] / [i915#9820])
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-mtlp-1/igt@i915_module_load@reload-with-fault-injection.html
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-mtlp-4/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_selftest@mock:
- shard-glk: ([DMESG-WARN][304], [DMESG-WARN][305]) ([i915#1982] / [i915#9311]) -> [DMESG-WARN][306] ([i915#9311])
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk7/igt@i915_selftest@mock.html
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk5/igt@i915_selftest@mock.html
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk1/igt@i915_selftest@mock.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-270:
- shard-dg2: [SKIP][307] -> [SKIP][308] ([i915#9197]) +1 other test skip
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180:
- shard-dg2: [SKIP][309] ([i915#5190] / [i915#9197]) -> [SKIP][310] ([i915#4538] / [i915#5190]) +5 other tests skip
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180.html
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-dg2: [SKIP][311] ([i915#4538] / [i915#5190]) -> [SKIP][312] ([i915#5190] / [i915#9197]) +7 other tests skip
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_ccs@bad-aux-stride-yf-tiled-ccs:
- shard-dg2: [SKIP][313] ([i915#10307] / [i915#6095]) -> [SKIP][314] ([i915#9197]) +8 other tests skip
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html
* igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
- shard-dg2: [SKIP][315] ([i915#12313]) -> [SKIP][316] ([i915#9197])
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs:
- shard-dg2: [SKIP][317] ([i915#9197]) -> [SKIP][318] ([i915#10307] / [i915#6095]) +6 other tests skip
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs.html
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
- shard-dg2: [SKIP][319] ([i915#9197]) -> [SKIP][320] ([i915#12313])
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
* igt@kms_cdclk@mode-transition:
- shard-dg2: [SKIP][321] ([i915#11616] / [i915#7213]) -> [SKIP][322] ([i915#9197])
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_cdclk@mode-transition.html
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_cdclk@mode-transition.html
* igt@kms_cdclk@plane-scaling:
- shard-dg2: [SKIP][323] ([i915#9197]) -> [SKIP][324] ([i915#4087])
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_cdclk@plane-scaling.html
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-5/igt@kms_cdclk@plane-scaling.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-dg2: [SKIP][325] ([i915#3299]) -> [SKIP][326] ([i915#9197])
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_content_protection@dp-mst-lic-type-0.html
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@mei-interface:
- shard-dg1: [SKIP][327] ([i915#9433]) -> [SKIP][328] ([i915#9424])
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg1-13/igt@kms_content_protection@mei-interface.html
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg1-17/igt@kms_content_protection@mei-interface.html
* igt@kms_content_protection@type1:
- shard-dg2: [SKIP][329] ([i915#9197]) -> [SKIP][330] ([i915#7118] / [i915#9424]) +1 other test skip
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_content_protection@type1.html
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_content_protection@type1.html
* igt@kms_content_protection@uevent:
- shard-dg2: [SKIP][331] ([i915#7118] / [i915#9424]) -> [SKIP][332] ([i915#9197])
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_content_protection@uevent.html
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-dg2: [SKIP][333] ([i915#9197]) -> [SKIP][334] ([i915#11453])
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_cursor_crc@cursor-onscreen-512x512.html
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_cursor_crc@cursor-onscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-max-size:
- shard-dg2: [SKIP][335] ([i915#9197]) -> [SKIP][336] ([i915#3555]) +2 other tests skip
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_cursor_crc@cursor-onscreen-max-size.html
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_cursor_crc@cursor-onscreen-max-size.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-dg2: [SKIP][337] ([i915#3555]) -> [SKIP][338] ([i915#9197])
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
- shard-dg2: [SKIP][339] ([i915#5354]) -> [SKIP][340] ([i915#9197]) +3 other tests skip
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
- shard-dg2: [SKIP][341] ([i915#4103] / [i915#4213]) -> [SKIP][342] ([i915#9197])
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
* igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
- shard-dg2: [SKIP][343] ([i915#9197]) -> [SKIP][344] ([i915#9833])
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
* igt@kms_draw_crc@draw-method-mmap-gtt:
- shard-dg2: [SKIP][345] ([i915#9197]) -> [SKIP][346] ([i915#8812])
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_draw_crc@draw-method-mmap-gtt.html
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_draw_crc@draw-method-mmap-gtt.html
* igt@kms_dsc@dsc-basic:
- shard-dg2: [SKIP][347] ([i915#3555] / [i915#3840]) -> [SKIP][348] ([i915#9197])
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_dsc@dsc-basic.html
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_dsc@dsc-basic.html
* igt@kms_dsc@dsc-with-formats:
- shard-dg2: [SKIP][349] ([i915#9197]) -> [SKIP][350] ([i915#3555] / [i915#3840])
[349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_dsc@dsc-with-formats.html
[350]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_dsc@dsc-with-formats.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-dg2: [SKIP][351] ([i915#3840] / [i915#9053]) -> [SKIP][352] ([i915#9197])
[351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-6/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
[352]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2:
- shard-glk: ([FAIL][353], [PASS][354]) ([i915#2122]) -> [FAIL][355] ([i915#2122]) +1 other test fail
[353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2.html
[354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk8/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2.html
[355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2.html
* igt@kms_flip@2x-plain-flip-ts-check:
- shard-snb: [FAIL][356] ([i915#10826]) -> [FAIL][357] ([i915#2122]) +1 other test fail
[356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-snb7/igt@kms_flip@2x-plain-flip-ts-check.html
[357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-snb6/igt@kms_flip@2x-plain-flip-ts-check.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling:
- shard-dg2: [SKIP][358] ([i915#2672] / [i915#3555]) -> [SKIP][359] ([i915#3555]) +1 other test skip
[358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling.html
[359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
- shard-dg2: [SKIP][360] ([i915#3555] / [i915#5190]) -> [SKIP][361] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip
[360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
[361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling:
- shard-dg2: [SKIP][362] ([i915#2672] / [i915#3555] / [i915#5190]) -> [SKIP][363] ([i915#3555] / [i915#5190]) +1 other test skip
[362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html
[363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-dg2: [SKIP][364] ([i915#8708]) -> [SKIP][365] ([i915#5354]) +9 other tests skip
[364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc.html
[365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt:
- shard-dg2: [SKIP][366] ([i915#3458]) -> [SKIP][367] ([i915#5354]) +11 other tests skip
[366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt.html
[367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt:
- shard-dg2: [SKIP][368] ([i915#5354]) -> [SKIP][369] ([i915#8708]) +10 other tests skip
[368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt.html
[369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt:
- shard-dg2: [SKIP][370] ([i915#3458]) -> [SKIP][371] ([i915#10433] / [i915#3458]) +3 other tests skip
[370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html
[371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
- shard-dg2: [SKIP][372] ([i915#5354]) -> [SKIP][373] ([i915#3458]) +8 other tests skip
[372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
[373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
- shard-dg2: [SKIP][374] ([i915#10433] / [i915#3458]) -> [SKIP][375] ([i915#3458]) +4 other tests skip
[374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
[375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
* igt@kms_hdr@bpc-switch:
- shard-dg2: [SKIP][376] ([i915#9197]) -> [SKIP][377] ([i915#3555] / [i915#8228])
[376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_hdr@bpc-switch.html
[377]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_hdr@bpc-switch.html
* igt@kms_plane_lowres@tiling-yf:
- shard-dg2: [SKIP][378] ([i915#9197]) -> [SKIP][379] ([i915#3555] / [i915#8821])
[378]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_lowres@tiling-yf.html
[379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_plane_lowres@tiling-yf.html
* igt@kms_plane_scaling@2x-scaler-multi-pipe:
- shard-dg2: [SKIP][380] ([i915#5354] / [i915#9423]) -> [SKIP][381] ([i915#5354] / [i915#8152] / [i915#9423])
[380]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
[381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers:
- shard-dg2: [SKIP][382] ([i915#12247] / [i915#8152] / [i915#9423]) -> [SKIP][383] ([i915#12247] / [i915#9423]) +1 other test skip
[382]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html
[383]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-d:
- shard-dg2: [SKIP][384] ([i915#12247] / [i915#8152]) -> [SKIP][385] ([i915#12247]) +3 other tests skip
[384]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-d.html
[385]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-d.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25:
- shard-dg2: [SKIP][386] ([i915#12247] / [i915#6953] / [i915#8152] / [i915#9423]) -> [SKIP][387] ([i915#12247] / [i915#6953] / [i915#9423]) +1 other test skip
[386]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html
[387]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
- shard-glk: ([SKIP][388], [INCOMPLETE][389]) ([i915#11520] / [i915#2295]) -> [SKIP][390] ([i915#11520])
[388]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk2/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
[389]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-glk7/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
[390]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-glk3/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
* igt@kms_rotation_crc@bad-tiling:
- shard-dg2: [SKIP][391] ([i915#11131]) -> [SKIP][392] ([i915#9197])
[391]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_rotation_crc@bad-tiling.html
[392]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_rotation_crc@bad-tiling.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-dg2: [SKIP][393] ([i915#5190] / [i915#9197]) -> [SKIP][394] ([i915#11131] / [i915#5190])
[393]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
[394]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg2: [SKIP][395] ([i915#8623]) -> [SKIP][396] ([i915#9197])
[395]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[396]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vrr@flip-basic-fastset:
- shard-dg2: [SKIP][397] ([i915#9197]) -> [SKIP][398] ([i915#9906]) +1 other test skip
[397]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15490/shard-dg2-2/igt@kms_vrr@flip-basic-fastset.html
[398]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/shard-dg2-3/igt@kms_vrr@flip-basic-fastset.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
[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#10826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10826
[i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
[i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11521]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11521
[i915#11616]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11616
[i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
[i915#11980]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11980
[i915#11989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11989
[i915#12027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12027
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12216
[i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
[i915#12296]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12296
[i915#12297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12297
[i915#12308]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12308
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12316]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12316
[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#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
[i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
[i915#2295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2295
[i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
[i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
[i915#2846]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2846
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#2876]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2876
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
[i915#3826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3826
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4087]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4087
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
[i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
[i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
[i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
[i915#6227]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6227
[i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
[i915#7294]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7294
[i915#7297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7297
[i915#7387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7387
[i915#7790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7790
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#79]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/79
[i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
[i915#8152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8152
[i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
[i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
[i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
[i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
[i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
[i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
[i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
[i915#8812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8812
[i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
[i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
[i915#8825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8825
[i915#8850]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8850
[i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
[i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
[i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
[i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
[i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
[i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
[i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
[i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
[i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
[i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
[i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
[i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
[i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
[i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
[i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
[i915#9833]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9833
[i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* Linux: CI_DRM_15490 -> Patchwork_139221v3
CI-20190529: 20190529
CI_DRM_15490: 131a5dd267541faa13894b97d44af39b257fc887 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8056: a327720fd57ba9f17ed8f15c6453cd2234f9398d @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_139221v3: 131a5dd267541faa13894b97d44af39b257fc887 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_139221v3/index.html
[-- Attachment #2: Type: text/html, Size: 123853 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread