public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/5] drm/i915: Add drm_panic support
@ 2024-11-29 16:20 Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr() Jocelyn Falempe
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Jocelyn Falempe @ 2024-11-29 16:20 UTC (permalink / raw)
  To: Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
	David Airlie, Simona Vetter, intel-gfx, intel-xe, dri-devel,
	linux-kernel
  Cc: Jocelyn Falempe

This is a first draft of drm_panic support for i915.

I've tested it on the 3 intel laptops I have at my disposal.
one Haswell with 128MB of eDRAM, one Cometlake and one Alderlake.

I tested panic in both fbdev console and gnome desktop.

I still have an issue with Alderlake, and it doesn't work when in gnome desktop.
If I disable tiling on a framebuffer using DPT, then it displays some other memory location.
As DPT is enabled only for tiled framebuffer, there might be some hardware limitations?
I think it can be worked around by drawing the image tiled, (like what I've done on nouveau https://patchwork.freedesktop.org/series/133963/), but maybe there is another way?

Best regards,

Jocelyn Falempe (5):
  drm/i915/fbdev: Add intel_fbdev_getvaddr()
  drm/i915/display/i9xx: Add a disable_tiling() for i9xx planes
  drm/i915/display: Add a disable_tiling() for skl planes
  drm/i915/gem: export i915_gem_object_map_page/pfn
  drm/i915: Add drm_panic support

 drivers/gpu/drm/i915/display/i9xx_plane.c     | 24 +++++
 .../gpu/drm/i915/display/intel_atomic_plane.c | 98 ++++++++++++++++++-
 .../drm/i915/display/intel_display_types.h    |  2 +
 drivers/gpu/drm/i915/display/intel_fbdev.c    |  5 +
 drivers/gpu/drm/i915/display/intel_fbdev.h    |  5 +
 .../drm/i915/display/skl_universal_plane.c    | 20 ++++
 drivers/gpu/drm/i915/gem/i915_gem_object.h    |  5 +
 drivers/gpu/drm/i915/gem/i915_gem_pages.c     |  4 +-
 8 files changed, 160 insertions(+), 3 deletions(-)


base-commit: 44cff6c5b0b17a78bc0b30372bcd816cf6dd282a
-- 
2.47.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr()
  2024-11-29 16:20 [RFC PATCH 0/5] drm/i915: Add drm_panic support Jocelyn Falempe
@ 2024-11-29 16:20 ` Jocelyn Falempe
  2024-11-29 22:39   ` kernel test robot
  2024-11-29 23:31   ` kernel test robot
  2024-11-29 16:20 ` [PATCH 2/5] drm/i915/display/i9xx: Add a disable_tiling() for i9xx planes Jocelyn Falempe
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 10+ messages in thread
From: Jocelyn Falempe @ 2024-11-29 16:20 UTC (permalink / raw)
  To: Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
	David Airlie, Simona Vetter, intel-gfx, intel-xe, dri-devel,
	linux-kernel
  Cc: Jocelyn Falempe

The vaddr of the fbdev framebuffer is private to the struct
intel_fbdev, so this function is needed to access it for drm_panic.

Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
---
 drivers/gpu/drm/i915/display/intel_fbdev.c | 5 +++++
 drivers/gpu/drm/i915/display/intel_fbdev.h | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index 00852ff5b2470..9f4acc2d75601 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -695,3 +695,8 @@ struct intel_framebuffer *intel_fbdev_framebuffer(struct intel_fbdev *fbdev)
 
 	return to_intel_framebuffer(fbdev->helper.fb);
 }
+
+void *intel_fbdev_getvaddr(struct intel_fbdev *fbdev)
+{
+	return READ_ONCE(fbdev->vma->iomap);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.h b/drivers/gpu/drm/i915/display/intel_fbdev.h
index 08de2d5b34338..014fa5896af52 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.h
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.h
@@ -17,6 +17,7 @@ struct intel_framebuffer;
 void intel_fbdev_setup(struct drm_i915_private *dev_priv);
 void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous);
 struct intel_framebuffer *intel_fbdev_framebuffer(struct intel_fbdev *fbdev);
+void *intel_fbdev_getvaddr(struct intel_fbdev *fbdev);
 #else
 static inline void intel_fbdev_setup(struct drm_i915_private *dev_priv)
 {
@@ -30,6 +31,10 @@ static inline struct intel_framebuffer *intel_fbdev_framebuffer(struct intel_fbd
 {
 	return NULL;
 }
+static inline void *intel_fbdev_getvaddr(struct intel_fbdev *fbdev)
+{
+	return NULL;
+}
 #endif
 
 #endif /* __INTEL_FBDEV_H__ */
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/5] drm/i915/display/i9xx: Add a disable_tiling() for i9xx planes
  2024-11-29 16:20 [RFC PATCH 0/5] drm/i915: Add drm_panic support Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr() Jocelyn Falempe
@ 2024-11-29 16:20 ` Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 3/5] drm/i915/display: Add a disable_tiling() for skl planes Jocelyn Falempe
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Jocelyn Falempe @ 2024-11-29 16:20 UTC (permalink / raw)
  To: Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
	David Airlie, Simona Vetter, intel-gfx, intel-xe, dri-devel,
	linux-kernel
  Cc: Jocelyn Falempe

drm_panic draws in linear framebuffer, so it's easier to re-use the
current framebuffer, and disable tiling in the panic handler, to show
the panic screen.

Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
---
 drivers/gpu/drm/i915/display/i9xx_plane.c     | 24 +++++++++++++++++++
 .../drm/i915/display/intel_display_types.h    |  2 ++
 2 files changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c
index 17a1e3801a85c..95a97b91d5cdc 100644
--- a/drivers/gpu/drm/i915/display/i9xx_plane.c
+++ b/drivers/gpu/drm/i915/display/i9xx_plane.c
@@ -848,6 +848,28 @@ static const struct drm_plane_funcs i8xx_plane_funcs = {
 	.format_mod_supported = i8xx_plane_format_mod_supported,
 };
 
+static void i9xx_disable_tiling(struct intel_plane *plane)
+{
+	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
+	enum i9xx_plane_id i9xx_plane = plane->i9xx_plane;
+	struct intel_plane_state *plane_state = to_intel_plane_state(plane->base.state);
+	u32 dspcntr;
+
+	dspcntr = intel_de_read_fw(dev_priv, DSPCNTR(dev_priv, i9xx_plane));
+	dspcntr &= ~DISP_TILED;
+	intel_de_write_fw(dev_priv, DSPCNTR(dev_priv, i9xx_plane), dspcntr);
+
+	if (DISPLAY_VER(dev_priv) >= 4) {
+		u32 reg;
+
+		reg = intel_de_read_fw(dev_priv, DSPSURF(dev_priv, i9xx_plane));
+		intel_de_write_fw(dev_priv, DSPSURF(dev_priv, i9xx_plane), reg);
+
+	} else
+		intel_de_write_fw(dev_priv, DSPADDR(dev_priv, i9xx_plane),
+				  intel_plane_ggtt_offset(plane_state));
+}
+
 struct intel_plane *
 intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe)
 {
@@ -973,6 +995,8 @@ intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe)
 		plane->disable_flip_done = ilk_primary_disable_flip_done;
 	}
 
+	plane->disable_tiling = i9xx_disable_tiling;
+
 	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X);
 
 	if (DISPLAY_VER(dev_priv) >= 5 || IS_G4X(dev_priv))
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 2bb1fa64da2f1..0559b02569e49 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1482,6 +1482,8 @@ struct intel_plane {
 			   bool async_flip);
 	void (*enable_flip_done)(struct intel_plane *plane);
 	void (*disable_flip_done)(struct intel_plane *plane);
+	/* For drm_panic */
+	void (*disable_tiling)(struct intel_plane *plane);
 };
 
 #define to_intel_atomic_state(x) container_of(x, struct intel_atomic_state, base)
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/5] drm/i915/display: Add a disable_tiling() for skl planes
  2024-11-29 16:20 [RFC PATCH 0/5] drm/i915: Add drm_panic support Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr() Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 2/5] drm/i915/display/i9xx: Add a disable_tiling() for i9xx planes Jocelyn Falempe
@ 2024-11-29 16:20 ` Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 4/5] drm/i915/gem: export i915_gem_object_map_page/pfn Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 5/5] drm/i915: Add drm_panic support Jocelyn Falempe
  4 siblings, 0 replies; 10+ messages in thread
From: Jocelyn Falempe @ 2024-11-29 16:20 UTC (permalink / raw)
  To: Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
	David Airlie, Simona Vetter, intel-gfx, intel-xe, dri-devel,
	linux-kernel
  Cc: Jocelyn Falempe

drm_panic draws in linear framebuffer, so it's easier to re-use the
current framebuffer, and disable tiling in the panic handler, to show
the panic screen.

Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
---
 .../drm/i915/display/skl_universal_plane.c    | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index a0a7ed01415a5..62aa40b6e2347 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2560,6 +2560,25 @@ static u8 skl_get_plane_caps(struct drm_i915_private *i915,
 	return caps;
 }
 
+static void skl_disable_tiling(struct intel_plane *plane)
+{
+	u32 plane_ctl;
+	struct intel_plane_state *state = to_intel_plane_state(plane->base.state);
+	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
+	u32 stride = state->view.color_plane[0].scanout_stride / 64;
+
+	plane_ctl = intel_de_read(dev_priv, PLANE_CTL(plane->pipe, plane->id));
+	plane_ctl &= ~PLANE_CTL_TILED_MASK;
+
+	intel_de_write_fw(dev_priv, PLANE_STRIDE(plane->pipe, plane->id),
+			  PLANE_STRIDE_(stride));
+
+	intel_de_write_fw(dev_priv, PLANE_CTL(plane->pipe, plane->id), plane_ctl);
+
+	intel_de_write_fw(dev_priv, PLANE_SURF(plane->pipe, plane->id),
+			  skl_plane_surf(state, 0));
+}
+
 struct intel_plane *
 skl_universal_plane_create(struct drm_i915_private *dev_priv,
 			   enum pipe pipe, enum plane_id plane_id)
@@ -2601,6 +2620,7 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 		plane->max_height = skl_plane_max_height;
 		plane->min_cdclk = skl_plane_min_cdclk;
 	}
+	plane->disable_tiling = skl_disable_tiling;
 
 	if (DISPLAY_VER(dev_priv) >= 13)
 		plane->max_stride = adl_plane_max_stride;
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 4/5] drm/i915/gem: export i915_gem_object_map_page/pfn
  2024-11-29 16:20 [RFC PATCH 0/5] drm/i915: Add drm_panic support Jocelyn Falempe
                   ` (2 preceding siblings ...)
  2024-11-29 16:20 ` [PATCH 3/5] drm/i915/display: Add a disable_tiling() for skl planes Jocelyn Falempe
@ 2024-11-29 16:20 ` Jocelyn Falempe
  2024-11-29 16:20 ` [PATCH 5/5] drm/i915: Add drm_panic support Jocelyn Falempe
  4 siblings, 0 replies; 10+ messages in thread
From: Jocelyn Falempe @ 2024-11-29 16:20 UTC (permalink / raw)
  To: Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
	David Airlie, Simona Vetter, intel-gfx, intel-xe, dri-devel,
	linux-kernel
  Cc: Jocelyn Falempe

Prepare the work for drm_panic support. They are used to map the
current framebuffer, so the CPU can access it, and draws the panic
screen.

Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_object.h | 5 +++++
 drivers/gpu/drm/i915/gem/i915_gem_pages.c  | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h
index 3dc61cbd2e11f..3f99d021f9221 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h
@@ -694,6 +694,11 @@ i915_gem_object_unpin_pages(struct drm_i915_gem_object *obj)
 int __i915_gem_object_put_pages(struct drm_i915_gem_object *obj);
 int i915_gem_object_truncate(struct drm_i915_gem_object *obj);
 
+void *i915_gem_object_map_page(struct drm_i915_gem_object *obj,
+				      enum i915_map_type type);
+void *i915_gem_object_map_pfn(struct drm_i915_gem_object *obj,
+				     enum i915_map_type type);
+
 /**
  * i915_gem_object_pin_map - return a contiguous mapping of the entire object
  * @obj: the object to map into kernel address space
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pages.c b/drivers/gpu/drm/i915/gem/i915_gem_pages.c
index 8780aa2431053..76c023d2fbb1f 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_pages.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_pages.c
@@ -268,7 +268,7 @@ int __i915_gem_object_put_pages(struct drm_i915_gem_object *obj)
 }
 
 /* The 'mapping' part of i915_gem_object_pin_map() below */
-static void *i915_gem_object_map_page(struct drm_i915_gem_object *obj,
+void *i915_gem_object_map_page(struct drm_i915_gem_object *obj,
 				      enum i915_map_type type)
 {
 	unsigned long n_pages = obj->base.size >> PAGE_SHIFT, i;
@@ -325,7 +325,7 @@ static void *i915_gem_object_map_page(struct drm_i915_gem_object *obj,
 	return vaddr ?: ERR_PTR(-ENOMEM);
 }
 
-static void *i915_gem_object_map_pfn(struct drm_i915_gem_object *obj,
+void *i915_gem_object_map_pfn(struct drm_i915_gem_object *obj,
 				     enum i915_map_type type)
 {
 	resource_size_t iomap = obj->mm.region->iomap.base -
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 5/5] drm/i915: Add drm_panic support
  2024-11-29 16:20 [RFC PATCH 0/5] drm/i915: Add drm_panic support Jocelyn Falempe
                   ` (3 preceding siblings ...)
  2024-11-29 16:20 ` [PATCH 4/5] drm/i915/gem: export i915_gem_object_map_page/pfn Jocelyn Falempe
@ 2024-11-29 16:20 ` Jocelyn Falempe
  2024-11-29 22:18   ` kernel test robot
  2024-11-30 10:48   ` kernel test robot
  4 siblings, 2 replies; 10+ messages in thread
From: Jocelyn Falempe @ 2024-11-29 16:20 UTC (permalink / raw)
  To: Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
	David Airlie, Simona Vetter, intel-gfx, intel-xe, dri-devel,
	linux-kernel
  Cc: Jocelyn Falempe

This adds drm_panic support for a wide range of Intel GPU. I've
tested it only on 3 laptops, haswell (with 128MB of eDRAM),
cometlake and alderlake.

 * DPT: if I disable tiling on a framebuffer using DPT, then it
   displays some other memory location. As DPT is enabled only for
   tiled framebuffer, there might be some hardware limitations.
 * fbdev: On my haswell laptop, the fbdev framebuffer is configured
   with tiling enabled, but really it's linear, because fbcon don't
   know about tiling, and the panic screen is perfect when it's drawn
   as linear.

Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
---
 .../gpu/drm/i915/display/intel_atomic_plane.c | 98 ++++++++++++++++++-
 1 file changed, 97 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index b7e462075ded3..43dac5538a648 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -33,13 +33,17 @@
 
 #include <linux/dma-fence-chain.h>
 #include <linux/dma-resv.h>
+#include <linux/iosys-map.h>
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_blend.h>
+#include <drm/drm_cache.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_gem.h>
 #include <drm/drm_gem_atomic_helper.h>
+#include <drm/drm_panic.h>
 
+#include "gem/i915_gem_object.h"
 #include "i915_config.h"
 #include "i9xx_plane_regs.h"
 #include "intel_atomic_plane.h"
@@ -50,6 +54,7 @@
 #include "intel_display_types.h"
 #include "intel_fb.h"
 #include "intel_fb_pin.h"
+#include "intel_fbdev.h"
 #include "skl_scaler.h"
 #include "skl_watermark.h"
 
@@ -1198,14 +1203,105 @@ intel_cleanup_plane_fb(struct drm_plane *plane,
 	intel_plane_unpin_fb(old_plane_state);
 }
 
+/* Only used by drm_panic get_scanout_buffer() and panic_flush(), so it is
+ * protected by the drm panic spinlock
+ */
+static struct iosys_map panic_map;
+
+static void intel_panic_flush(struct drm_plane *plane)
+{
+	struct intel_plane_state *plane_state = to_intel_plane_state(plane->state);
+	struct drm_i915_private *dev_priv = to_i915(plane->dev);
+	struct drm_framebuffer *fb = plane_state->hw.fb;
+	struct intel_plane *iplane = to_intel_plane(plane);
+
+	/* Force a cache flush, otherwise the new pixels won't show up */
+	drm_clflush_virt_range(panic_map.vaddr, fb->height * fb->pitches[0]);
+
+	/* Don't disable tiling if it's the fbdev framebuffer.*/
+	if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(dev_priv->display.fbdev.fbdev))
+		return;
+
+	if (fb->modifier && iplane->disable_tiling)
+		iplane->disable_tiling(iplane);
+}
+
+static int intel_get_scanout_buffer(struct drm_plane *plane,
+				    struct drm_scanout_buffer *sb)
+{
+	struct intel_plane_state *plane_state;
+	struct drm_gem_object *gem_obj;
+	struct drm_i915_gem_object *obj;
+	struct drm_framebuffer *fb;
+	struct drm_i915_private *dev_priv = to_i915(plane->dev);
+	void *ptr;
+	enum i915_map_type has_type;
+
+	if (!plane->state || !plane->state->fb || !plane->state->visible)
+		return -ENODEV;
+
+	plane_state = to_intel_plane_state(plane->state);
+	fb = plane_state->hw.fb;
+	gem_obj = intel_fb_bo(fb);
+	if (!gem_obj)
+		return -ENODEV;
+
+	obj = to_intel_bo(gem_obj);
+
+	if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(dev_priv->display.fbdev.fbdev)) {
+		ptr = intel_fbdev_getvaddr(dev_priv->display.fbdev.fbdev);
+		if (!ptr)
+			return -ENOMEM;
+	} else {
+		/* can't disable tiling if DPT is in use */
+		if (fb->modifier && HAS_DPT(dev_priv))
+			return -EOPNOTSUPP;
+
+		/* Taken from i915_gem_object_pin_map() */
+		ptr = page_unpack_bits(obj->mm.mapping, &has_type);
+		if (!ptr) {
+			if (i915_gem_object_has_struct_page(obj))
+				ptr = i915_gem_object_map_page(obj, I915_MAP_WB);
+			else
+				ptr = i915_gem_object_map_pfn(obj, I915_MAP_WB);
+			if (IS_ERR(ptr))
+				return -ENOMEM;
+		}
+	}
+
+	if (i915_gem_object_has_iomem(obj))
+		iosys_map_set_vaddr_iomem(&panic_map, ptr);
+	else
+		iosys_map_set_vaddr(&panic_map, ptr);
+
+	sb->map[0] = panic_map;
+	sb->width = fb->width;
+	sb->height = fb->height;
+	sb->format = fb->format;
+	sb->pitch[0] = fb->pitches[0];
+
+	return 0;
+}
+
 static const struct drm_plane_helper_funcs intel_plane_helper_funcs = {
 	.prepare_fb = intel_prepare_plane_fb,
 	.cleanup_fb = intel_cleanup_plane_fb,
 };
 
+
+static const struct drm_plane_helper_funcs intel_primary_plane_helper_funcs = {
+	.prepare_fb = intel_prepare_plane_fb,
+	.cleanup_fb = intel_cleanup_plane_fb,
+	.get_scanout_buffer = intel_get_scanout_buffer,
+	.panic_flush = intel_panic_flush,
+};
+
 void intel_plane_helper_add(struct intel_plane *plane)
 {
-	drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs);
+	if (plane->base.type == DRM_PLANE_TYPE_PRIMARY)
+		drm_plane_helper_add(&plane->base, &intel_primary_plane_helper_funcs);
+	else
+		drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs);
 }
 
 void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_state,
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 5/5] drm/i915: Add drm_panic support
  2024-11-29 16:20 ` [PATCH 5/5] drm/i915: Add drm_panic support Jocelyn Falempe
@ 2024-11-29 22:18   ` kernel test robot
  2024-11-30 10:48   ` kernel test robot
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2024-11-29 22:18 UTC (permalink / raw)
  To: Jocelyn Falempe, Jani Nikula, Rodrigo Vivi, Joonas Lahtinen,
	Tvrtko Ursulin, David Airlie, Simona Vetter, intel-gfx, intel-xe,
	dri-devel, linux-kernel
  Cc: oe-kbuild-all, Jocelyn Falempe

Hi Jocelyn,

kernel test robot noticed the following build errors:

[auto build test ERROR on 44cff6c5b0b17a78bc0b30372bcd816cf6dd282a]

url:    https://github.com/intel-lab-lkp/linux/commits/Jocelyn-Falempe/drm-i915-fbdev-Add-intel_fbdev_getvaddr/20241130-002536
base:   44cff6c5b0b17a78bc0b30372bcd816cf6dd282a
patch link:    https://lore.kernel.org/r/20241129162232.7594-6-jfalempe%40redhat.com
patch subject: [PATCH 5/5] drm/i915: Add drm_panic support
config: i386-buildonly-randconfig-003-20241130 (https://download.01.org/0day-ci/archive/20241130/202411300629.WmnBjFIu-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241130/202411300629.WmnBjFIu-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411300629.WmnBjFIu-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/i915/display/intel_atomic_plane.c:46:10: fatal error: gem/i915_gem_object.h: No such file or directory
      46 | #include "gem/i915_gem_object.h"
         |          ^~~~~~~~~~~~~~~~~~~~~~~
   compilation terminated.


vim +46 drivers/gpu/drm/i915/display/intel_atomic_plane.c

    45	
  > 46	#include "gem/i915_gem_object.h"
    47	#include "i915_config.h"
    48	#include "i9xx_plane_regs.h"
    49	#include "intel_atomic_plane.h"
    50	#include "intel_cdclk.h"
    51	#include "intel_cursor.h"
    52	#include "intel_display_rps.h"
    53	#include "intel_display_trace.h"
    54	#include "intel_display_types.h"
    55	#include "intel_fb.h"
    56	#include "intel_fb_pin.h"
    57	#include "intel_fbdev.h"
    58	#include "skl_scaler.h"
    59	#include "skl_watermark.h"
    60	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr()
  2024-11-29 16:20 ` [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr() Jocelyn Falempe
@ 2024-11-29 22:39   ` kernel test robot
  2024-11-29 23:31   ` kernel test robot
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2024-11-29 22:39 UTC (permalink / raw)
  To: Jocelyn Falempe, Jani Nikula, Rodrigo Vivi, Joonas Lahtinen,
	Tvrtko Ursulin, David Airlie, Simona Vetter, intel-gfx, intel-xe,
	dri-devel, linux-kernel
  Cc: oe-kbuild-all, Jocelyn Falempe

Hi Jocelyn,

kernel test robot noticed the following build errors:

[auto build test ERROR on 44cff6c5b0b17a78bc0b30372bcd816cf6dd282a]

url:    https://github.com/intel-lab-lkp/linux/commits/Jocelyn-Falempe/drm-i915-fbdev-Add-intel_fbdev_getvaddr/20241130-002536
base:   44cff6c5b0b17a78bc0b30372bcd816cf6dd282a
patch link:    https://lore.kernel.org/r/20241129162232.7594-2-jfalempe%40redhat.com
patch subject: [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr()
config: arm-randconfig-002-20241130 (https://download.01.org/0day-ci/archive/20241130/202411300651.eqKjTuw3-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241130/202411300651.eqKjTuw3-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411300651.eqKjTuw3-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from <command-line>:
   drivers/gpu/drm/i915/display/intel_fbdev.c: In function 'intel_fbdev_getvaddr':
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:36: error: 'struct i915_vma' has no member named 'iomap'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                                    ^~
   include/linux/compiler_types.h:497:23: note: in definition of macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:517:9: note: in expansion of macro '_compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_fbdev.c:701:16: note: in expansion of macro 'READ_ONCE'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:36: error: 'struct i915_vma' has no member named 'iomap'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                                    ^~
   include/linux/compiler_types.h:497:23: note: in definition of macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:517:9: note: in expansion of macro '_compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_fbdev.c:701:16: note: in expansion of macro 'READ_ONCE'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:36: error: 'struct i915_vma' has no member named 'iomap'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                                    ^~
   include/linux/compiler_types.h:497:23: note: in definition of macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:517:9: note: in expansion of macro '_compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_fbdev.c:701:16: note: in expansion of macro 'READ_ONCE'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:36: error: 'struct i915_vma' has no member named 'iomap'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                                    ^~
   include/linux/compiler_types.h:497:23: note: in definition of macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:517:9: note: in expansion of macro '_compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_fbdev.c:701:16: note: in expansion of macro 'READ_ONCE'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:36: error: 'struct i915_vma' has no member named 'iomap'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                                    ^~
   include/linux/compiler_types.h:497:23: note: in definition of macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:517:9: note: in expansion of macro '_compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_fbdev.c:701:16: note: in expansion of macro 'READ_ONCE'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:36: error: 'struct i915_vma' has no member named 'iomap'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                                    ^~
   include/linux/compiler_types.h:473:27: note: in definition of macro '__unqual_scalar_typeof'
     473 |                 _Generic((x),                                           \
         |                           ^
   include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
      50 |         __READ_ONCE(x);                                                 \
         |         ^~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_fbdev.c:701:16: note: in expansion of macro 'READ_ONCE'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~
   In file included from ./arch/arm/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:317,
                    from arch/arm/include/asm/atomic.h:11,
                    from include/linux/atomic.h:7,
                    from include/linux/console.h:17,
                    from drivers/gpu/drm/i915/display/intel_fbdev.c:27:
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:36: error: 'struct i915_vma' has no member named 'iomap'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                                    ^~
   include/asm-generic/rwonce.h:44:73: note: in definition of macro '__READ_ONCE'
      44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                         ^
   drivers/gpu/drm/i915/display/intel_fbdev.c:701:16: note: in expansion of macro 'READ_ONCE'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:702:1: warning: control reaches end of non-void function [-Wreturn-type]
     702 | }
         | ^


vim +701 drivers/gpu/drm/i915/display/intel_fbdev.c

   698	
   699	void *intel_fbdev_getvaddr(struct intel_fbdev *fbdev)
   700	{
 > 701		return READ_ONCE(fbdev->vma->iomap);
 > 702	}

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr()
  2024-11-29 16:20 ` [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr() Jocelyn Falempe
  2024-11-29 22:39   ` kernel test robot
@ 2024-11-29 23:31   ` kernel test robot
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2024-11-29 23:31 UTC (permalink / raw)
  To: Jocelyn Falempe, Jani Nikula, Rodrigo Vivi, Joonas Lahtinen,
	Tvrtko Ursulin, David Airlie, Simona Vetter, intel-gfx, intel-xe,
	dri-devel, linux-kernel
  Cc: llvm, oe-kbuild-all, Jocelyn Falempe

Hi Jocelyn,

kernel test robot noticed the following build errors:

[auto build test ERROR on 44cff6c5b0b17a78bc0b30372bcd816cf6dd282a]

url:    https://github.com/intel-lab-lkp/linux/commits/Jocelyn-Falempe/drm-i915-fbdev-Add-intel_fbdev_getvaddr/20241130-002536
base:   44cff6c5b0b17a78bc0b30372bcd816cf6dd282a
patch link:    https://lore.kernel.org/r/20241129162232.7594-2-jfalempe%40redhat.com
patch subject: [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr()
config: i386-buildonly-randconfig-005-20241130 (https://download.01.org/0day-ci/archive/20241130/202411300759.H1yNqy6r-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241130/202411300759.H1yNqy6r-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411300759.H1yNqy6r-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/gpu/drm/i915/display/intel_fbdev.c:30:
   In file included from include/linux/fb.h:5:
   In file included from include/uapi/linux/fb.h:6:
   In file included from include/linux/i2c.h:19:
   In file included from include/linux/regulator/consumer.h:35:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:9:
   In file included from include/linux/memcontrol.h:21:
   In file included from include/linux/mm.h:2213:
   include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     518 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |                                        ^
   include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                                          ^
   include/linux/compiler_types.h:484:10: note: expanded from macro '__native_word'
     484 |         (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
         |                 ^
   include/linux/compiler_types.h:517:22: note: expanded from macro 'compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:505:23: note: expanded from macro '_compiletime_assert'
     505 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:497:9: note: expanded from macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |                                        ^
   include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                                          ^
   include/linux/compiler_types.h:484:39: note: expanded from macro '__native_word'
     484 |         (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
         |                                              ^
   include/linux/compiler_types.h:517:22: note: expanded from macro 'compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:505:23: note: expanded from macro '_compiletime_assert'
     505 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:497:9: note: expanded from macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |                                        ^
   include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                                          ^
   include/linux/compiler_types.h:485:10: note: expanded from macro '__native_word'
     485 |          sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
         |                 ^
   include/linux/compiler_types.h:517:22: note: expanded from macro 'compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:505:23: note: expanded from macro '_compiletime_assert'
     505 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:497:9: note: expanded from macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |                                        ^
   include/asm-generic/rwonce.h:36:35: note: expanded from macro 'compiletime_assert_rwonce_type'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                                          ^
   include/linux/compiler_types.h:485:38: note: expanded from macro '__native_word'
     485 |          sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
         |                                             ^
   include/linux/compiler_types.h:517:22: note: expanded from macro 'compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:505:23: note: expanded from macro '_compiletime_assert'
     505 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:497:9: note: expanded from macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:49:33: note: expanded from macro 'READ_ONCE'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |                                        ^
   include/asm-generic/rwonce.h:36:48: note: expanded from macro 'compiletime_assert_rwonce_type'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                                                       ^
   include/linux/compiler_types.h:517:22: note: expanded from macro 'compiletime_assert'
     517 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:505:23: note: expanded from macro '_compiletime_assert'
     505 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:497:9: note: expanded from macro '__compiletime_assert'
     497 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
      50 |         __READ_ONCE(x);                                                 \
         |                     ^
   include/asm-generic/rwonce.h:44:65: note: expanded from macro '__READ_ONCE'
      44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                  ^
   include/linux/compiler_types.h:473:13: note: expanded from macro '__unqual_scalar_typeof'
     473 |                 _Generic((x),                                           \
         |                           ^
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
      50 |         __READ_ONCE(x);                                                 \
         |                     ^
   include/asm-generic/rwonce.h:44:65: note: expanded from macro '__READ_ONCE'
      44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                  ^
   include/linux/compiler_types.h:480:15: note: expanded from macro '__unqual_scalar_typeof'
     480 |                          default: (x)))
         |                                    ^
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:31: error: no member named 'iomap' in 'struct i915_vma'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                          ~~~~~~~~~~  ^
   include/asm-generic/rwonce.h:50:14: note: expanded from macro 'READ_ONCE'
      50 |         __READ_ONCE(x);                                                 \
         |                     ^
   include/asm-generic/rwonce.h:44:72: note: expanded from macro '__READ_ONCE'
      44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                         ^
>> drivers/gpu/drm/i915/display/intel_fbdev.c:701:9: error: returning 'void' from a function with incompatible result type 'void *'
     701 |         return READ_ONCE(fbdev->vma->iomap);
         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:47:28: note: expanded from macro 'READ_ONCE'
      47 | #define READ_ONCE(x)                                                    \
         |                                                                         ^
      48 | ({                                                                      \
         | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      50 |         __READ_ONCE(x);                                                 \
         |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      51 | })
         | ~~
   1 warning and 9 errors generated.


vim +701 drivers/gpu/drm/i915/display/intel_fbdev.c

   698	
   699	void *intel_fbdev_getvaddr(struct intel_fbdev *fbdev)
   700	{
 > 701		return READ_ONCE(fbdev->vma->iomap);

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 5/5] drm/i915: Add drm_panic support
  2024-11-29 16:20 ` [PATCH 5/5] drm/i915: Add drm_panic support Jocelyn Falempe
  2024-11-29 22:18   ` kernel test robot
@ 2024-11-30 10:48   ` kernel test robot
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2024-11-30 10:48 UTC (permalink / raw)
  To: Jocelyn Falempe, Jani Nikula, Rodrigo Vivi, Joonas Lahtinen,
	Tvrtko Ursulin, David Airlie, Simona Vetter, intel-gfx, intel-xe,
	dri-devel, linux-kernel
  Cc: oe-kbuild-all, Jocelyn Falempe

Hi Jocelyn,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 44cff6c5b0b17a78bc0b30372bcd816cf6dd282a]

url:    https://github.com/intel-lab-lkp/linux/commits/Jocelyn-Falempe/drm-i915-fbdev-Add-intel_fbdev_getvaddr/20241130-002536
base:   44cff6c5b0b17a78bc0b30372bcd816cf6dd282a
patch link:    https://lore.kernel.org/r/20241129162232.7594-6-jfalempe%40redhat.com
patch subject: [PATCH 5/5] drm/i915: Add drm_panic support
config: i386-randconfig-061-20241130 (https://download.01.org/0day-ci/archive/20241130/202411302022.wlwTKMBh-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241130/202411302022.wlwTKMBh-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411302022.wlwTKMBh-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/display/intel_atomic_plane.c:1273:55: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void [noderef] __iomem *vaddr_iomem @@     got void *[assigned] ptr @@
   drivers/gpu/drm/i915/display/intel_atomic_plane.c:1273:55: sparse:     expected void [noderef] __iomem *vaddr_iomem
   drivers/gpu/drm/i915/display/intel_atomic_plane.c:1273:55: sparse:     got void *[assigned] ptr

vim +1273 drivers/gpu/drm/i915/display/intel_atomic_plane.c

  1228	
  1229	static int intel_get_scanout_buffer(struct drm_plane *plane,
  1230					    struct drm_scanout_buffer *sb)
  1231	{
  1232		struct intel_plane_state *plane_state;
  1233		struct drm_gem_object *gem_obj;
  1234		struct drm_i915_gem_object *obj;
  1235		struct drm_framebuffer *fb;
  1236		struct drm_i915_private *dev_priv = to_i915(plane->dev);
  1237		void *ptr;
  1238		enum i915_map_type has_type;
  1239	
  1240		if (!plane->state || !plane->state->fb || !plane->state->visible)
  1241			return -ENODEV;
  1242	
  1243		plane_state = to_intel_plane_state(plane->state);
  1244		fb = plane_state->hw.fb;
  1245		gem_obj = intel_fb_bo(fb);
  1246		if (!gem_obj)
  1247			return -ENODEV;
  1248	
  1249		obj = to_intel_bo(gem_obj);
  1250	
  1251		if (to_intel_framebuffer(fb) == intel_fbdev_framebuffer(dev_priv->display.fbdev.fbdev)) {
  1252			ptr = intel_fbdev_getvaddr(dev_priv->display.fbdev.fbdev);
  1253			if (!ptr)
  1254				return -ENOMEM;
  1255		} else {
  1256			/* can't disable tiling if DPT is in use */
  1257			if (fb->modifier && HAS_DPT(dev_priv))
  1258				return -EOPNOTSUPP;
  1259	
  1260			/* Taken from i915_gem_object_pin_map() */
  1261			ptr = page_unpack_bits(obj->mm.mapping, &has_type);
  1262			if (!ptr) {
  1263				if (i915_gem_object_has_struct_page(obj))
  1264					ptr = i915_gem_object_map_page(obj, I915_MAP_WB);
  1265				else
  1266					ptr = i915_gem_object_map_pfn(obj, I915_MAP_WB);
  1267				if (IS_ERR(ptr))
  1268					return -ENOMEM;
  1269			}
  1270		}
  1271	
  1272		if (i915_gem_object_has_iomem(obj))
> 1273			iosys_map_set_vaddr_iomem(&panic_map, ptr);
  1274		else
  1275			iosys_map_set_vaddr(&panic_map, ptr);
  1276	
  1277		sb->map[0] = panic_map;
  1278		sb->width = fb->width;
  1279		sb->height = fb->height;
  1280		sb->format = fb->format;
  1281		sb->pitch[0] = fb->pitches[0];
  1282	
  1283		return 0;
  1284	}
  1285	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-11-30 10:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-29 16:20 [RFC PATCH 0/5] drm/i915: Add drm_panic support Jocelyn Falempe
2024-11-29 16:20 ` [PATCH 1/5] drm/i915/fbdev: Add intel_fbdev_getvaddr() Jocelyn Falempe
2024-11-29 22:39   ` kernel test robot
2024-11-29 23:31   ` kernel test robot
2024-11-29 16:20 ` [PATCH 2/5] drm/i915/display/i9xx: Add a disable_tiling() for i9xx planes Jocelyn Falempe
2024-11-29 16:20 ` [PATCH 3/5] drm/i915/display: Add a disable_tiling() for skl planes Jocelyn Falempe
2024-11-29 16:20 ` [PATCH 4/5] drm/i915/gem: export i915_gem_object_map_page/pfn Jocelyn Falempe
2024-11-29 16:20 ` [PATCH 5/5] drm/i915: Add drm_panic support Jocelyn Falempe
2024-11-29 22:18   ` kernel test robot
2024-11-30 10:48   ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox