intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe
@ 2023-03-18 13:45 Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 2/8] sna: " Ville Syrjala
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Start using the kms crtc index rather than the pipe almost
everywhere. The two numbers could in theory be different
if the hardware has some pipes fused off. Though I think
such non-contiguous fusing won't actually happen on the
hardware generations the driver fully supports.

The places where using the kms crtc index is the correct
choice have to do with the vblank ioctl crtc selection.

The only place where we must stick to the hardware pipe
indexing is the MI_SCANLINE_WAIT stuff as there we have to
construct CS packets to be consumed by the hardware itself.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/uxa/intel.h         |  1 +
 src/uxa/intel_display.c | 20 ++++++++++++++------
 src/uxa/intel_dri.c     | 28 ++++++++++++++--------------
 src/uxa/intel_present.c | 20 ++++++++++----------
 4 files changed, 39 insertions(+), 30 deletions(-)

diff --git a/src/uxa/intel.h b/src/uxa/intel.h
index a5e77af46260..04d17f863e60 100644
--- a/src/uxa/intel.h
+++ b/src/uxa/intel.h
@@ -467,6 +467,7 @@ Bool intel_dri3_screen_init(ScreenPtr screen);
 
 extern Bool intel_crtc_on(xf86CrtcPtr crtc);
 int intel_crtc_to_pipe(xf86CrtcPtr crtc);
+int intel_crtc_to_index(xf86CrtcPtr crtc);
 
 /* intel_memory.c */
 unsigned long intel_get_fence_size(intel_screen_private *intel, unsigned long size);
diff --git a/src/uxa/intel_display.c b/src/uxa/intel_display.c
index ba4b8d87412c..409cbbcf7901 100644
--- a/src/uxa/intel_display.c
+++ b/src/uxa/intel_display.c
@@ -106,6 +106,7 @@ struct intel_crtc {
 	drmModeModeInfo kmode;
 	drmModeCrtcPtr mode_crtc;
 	int pipe;
+	int index;
 	dri_bo *cursor;
 	dri_bo *rotate_bo;
 	uint32_t rotate_pitch;
@@ -755,6 +756,7 @@ intel_crtc_init(ScrnInfoPtr scrn, struct intel_mode *mode, drmModeResPtr mode_re
 
 	intel_crtc->pipe = drm_intel_get_pipe_from_crtc_id(intel->bufmgr,
 							   crtc_id(intel_crtc));
+	intel_crtc->index = num;
 
 	intel_crtc->cursor = drm_intel_bo_alloc(intel->bufmgr, "ARGB cursor",
 						4*64*64, 4096);
@@ -1768,7 +1770,7 @@ intel_do_pageflip(intel_screen_private *intel,
 		/* Only the reference crtc will finally deliver its page flip
 		 * completion event. All other crtc's events will be discarded.
 		 */
-		flip->dispatch_me = (intel_crtc_to_pipe(crtc->crtc) == ref_crtc_hw_id);
+		flip->dispatch_me = (intel_crtc_to_index(crtc->crtc) == ref_crtc_hw_id);
 		flip->mode = mode;
 
 		seq = intel_drm_queue_alloc(scrn, config->crtc[i], flip, intel_pageflip_handler, intel_pageflip_abort);
@@ -1913,11 +1915,11 @@ intel_drm_abort_scrn(ScrnInfoPtr scrn)
 	}
 }
 
-static uint32_t pipe_select(int pipe)
+static uint32_t crtc_select(int index)
 {
-	if (pipe > 1)
-		return pipe << DRM_VBLANK_HIGH_CRTC_SHIFT;
-	else if (pipe > 0)
+	if (index > 1)
+		return index << DRM_VBLANK_HIGH_CRTC_SHIFT;
+	else if (index > 0)
 		return DRM_VBLANK_SECONDARY;
 	else
 		return 0;
@@ -1933,7 +1935,7 @@ intel_get_msc_ust(ScrnInfoPtr scrn, xf86CrtcPtr crtc, uint32_t *msc, uint64_t *u
 	drmVBlank vbl;
 
 	/* Get current count */
-	vbl.request.type = DRM_VBLANK_RELATIVE | pipe_select(intel_crtc_to_pipe(crtc));
+	vbl.request.type = DRM_VBLANK_RELATIVE | crtc_select(intel_crtc_to_index(crtc));
 	vbl.request.sequence = 0;
 	vbl.request.signal = 0;
 	if (drmWaitVBlank(intel->drmSubFD, &vbl)) {
@@ -2349,6 +2351,12 @@ int intel_crtc_to_pipe(xf86CrtcPtr crtc)
 	return intel_crtc->pipe;
 }
 
+int intel_crtc_to_index(xf86CrtcPtr crtc)
+{
+	struct intel_crtc *intel_crtc = crtc->driver_private;
+	return intel_crtc->index;
+}
+
 Bool intel_crtc_on(xf86CrtcPtr crtc)
 {
 	struct intel_crtc *intel_crtc = crtc->driver_private;
diff --git a/src/uxa/intel_dri.c b/src/uxa/intel_dri.c
index e707b74f091f..d91ed295985d 100644
--- a/src/uxa/intel_dri.c
+++ b/src/uxa/intel_dri.c
@@ -94,11 +94,11 @@ static void I830DRI2FrameEventHandler(unsigned int frame,
 static void
 i830_dri2_del_frame_event(DRI2FrameEventPtr info);
 
-static uint32_t pipe_select(int pipe)
+static uint32_t crtc_select(int index)
 {
-	if (pipe > 1)
-		return pipe << DRM_VBLANK_HIGH_CRTC_SHIFT;
-	else if (pipe > 0)
+	if (index > 1)
+		return index << DRM_VBLANK_HIGH_CRTC_SHIFT;
+	else if (index > 0)
 		return DRM_VBLANK_SECONDARY;
 	else
 		return 0;
@@ -896,7 +896,7 @@ queue_flip(struct intel_screen_private *intel,
 		return FALSE;
 
 	if (!intel_do_pageflip(intel, old_back,
-			       intel_crtc_to_pipe(crtc),
+			       intel_crtc_to_index(crtc),
 			       FALSE, info,
 			       I830DRI2FlipComplete, I830DRI2FlipAbort))
 		return FALSE;
@@ -940,7 +940,7 @@ queue_swap(struct intel_screen_private *intel,
 	vbl.request.type =
 		DRM_VBLANK_RELATIVE |
 		DRM_VBLANK_EVENT |
-		pipe_select(intel_crtc_to_pipe(crtc));
+		crtc_select(intel_crtc_to_index(crtc));
 	vbl.request.sequence = 1;
 	vbl.request.signal =
 		intel_drm_queue_alloc(intel->scrn, crtc, info,
@@ -1096,7 +1096,7 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front,
 	drmVBlank vbl;
 	int ret;
         xf86CrtcPtr crtc = I830DRI2DrawableCrtc(draw);
-        int pipe = crtc ? intel_crtc_to_pipe(crtc) : -1;
+        int index = crtc ? intel_crtc_to_index(crtc) : -1;
         int flip = 0;
 	DRI2FrameEventPtr swap_info = NULL;
 	uint64_t current_msc, current_ust;
@@ -1104,7 +1104,7 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front,
         uint32_t seq;
 
 	/* Drawable not displayed... just complete the swap */
-	if (pipe == -1)
+	if (index == -1)
 	    goto blit_fallback;
 
 	swap_info = calloc(1, sizeof(DRI2FrameEventRec));
@@ -1162,7 +1162,7 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front,
 	 */
 	if (divisor == 0 || current_msc < *target_msc) {
 		vbl.request.type =
-			DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | pipe_select(pipe);
+			DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | crtc_select(index);
 
 		/* If non-pageflipping, but blitting/exchanging, we need to use
 		 * DRM_VBLANK_NEXTONMISS to avoid unreliable timestamping later
@@ -1207,7 +1207,7 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front,
 	 * equation.
 	 */
 	vbl.request.type =
-		DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | pipe_select(pipe);
+		DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | crtc_select(index);
 	if (flip == 0)
 		vbl.request.type |= DRM_VBLANK_NEXTONMISS;
 
@@ -1322,12 +1322,12 @@ I830DRI2ScheduleWaitMSC(ClientPtr client, DrawablePtr draw, CARD64 target_msc,
 	drmVBlank vbl;
 	int ret;
         xf86CrtcPtr crtc = I830DRI2DrawableCrtc(draw);
-        int pipe = crtc ? intel_crtc_to_pipe(crtc) : -1;
+        int index = crtc ? intel_crtc_to_index(crtc) : -1;
 	CARD64 current_msc, current_ust, request_msc;
         uint32_t seq;
 
 	/* Drawable not visible, return immediately */
-	if (pipe == -1)
+	if (index == -1)
 		goto out_complete;
 
 	wait_info = calloc(1, sizeof(DRI2FrameEventRec));
@@ -1368,7 +1368,7 @@ I830DRI2ScheduleWaitMSC(ClientPtr client, DrawablePtr draw, CARD64 target_msc,
 		if (current_msc >= target_msc)
 			target_msc = current_msc;
 		vbl.request.type =
-			DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | pipe_select(pipe);
+			DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | crtc_select(index);
 		vbl.request.sequence = intel_crtc_msc_to_sequence(scrn, crtc, target_msc);
 		vbl.request.signal = seq;
 
@@ -1396,7 +1396,7 @@ I830DRI2ScheduleWaitMSC(ClientPtr client, DrawablePtr draw, CARD64 target_msc,
 	 * so we queue an event that will satisfy the divisor/remainder equation.
 	 */
 	vbl.request.type =
-		DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | pipe_select(pipe);
+		DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | crtc_select(index);
 
         request_msc = current_msc - (current_msc % divisor) +
                 remainder;
diff --git a/src/uxa/intel_present.c b/src/uxa/intel_present.c
index ac028edd883e..b21e5c41072f 100644
--- a/src/uxa/intel_present.c
+++ b/src/uxa/intel_present.c
@@ -58,11 +58,11 @@ struct intel_present_vblank_event {
 	uint64_t        event_id;
 };
 
-static uint32_t pipe_select(int pipe)
+static uint32_t crtc_select(int index)
 {
-	if (pipe > 1)
-		return pipe << DRM_VBLANK_HIGH_CRTC_SHIFT;
-	else if (pipe > 0)
+	if (index > 1)
+		return index << DRM_VBLANK_HIGH_CRTC_SHIFT;
+	else if (index > 0)
 		return DRM_VBLANK_SECONDARY;
 	else
 		return 0;
@@ -92,7 +92,7 @@ intel_present_get_crtc(WindowPtr window)
 }
 
 static int
-intel_present_crtc_pipe(ScreenPtr screen, RRCrtcPtr randr_crtc)
+intel_present_crtc_index(ScreenPtr screen, RRCrtcPtr randr_crtc)
 {
 	xf86CrtcPtr crtc;
 
@@ -100,7 +100,7 @@ intel_present_crtc_pipe(ScreenPtr screen, RRCrtcPtr randr_crtc)
 		return 0;
 
 	crtc = randr_crtc->devPrivate;
-	return intel_crtc_to_pipe(crtc);
+	return intel_crtc_to_index(crtc);
 }
 
 static int
@@ -162,7 +162,7 @@ intel_present_queue_vblank(RRCrtcPtr                    crtc,
 	ScreenPtr                               screen = crtc->pScreen;
 	ScrnInfoPtr                             scrn = xf86ScreenToScrn(screen);
 	intel_screen_private                    *intel = intel_get_screen_private(scrn);
-	int                                     pipe = intel_present_crtc_pipe(screen, crtc);
+	int                                     index = intel_present_crtc_index(screen, crtc);
 	struct intel_present_vblank_event       *event;
 	drmVBlank                               vbl;
 	int                                     ret;
@@ -180,7 +180,7 @@ intel_present_queue_vblank(RRCrtcPtr                    crtc,
 		return BadAlloc;
 	}
 
-	vbl.request.type = DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | pipe_select(pipe);
+	vbl.request.type = DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT | crtc_select(index);
 	vbl.request.sequence = intel_crtc_msc_to_sequence(scrn, xf86_crtc, msc);
 	vbl.request.signal = seq;
 	for (;;) {
@@ -315,7 +315,7 @@ intel_present_flip(RRCrtcPtr                    crtc,
 	ScrnInfoPtr                             scrn = xf86ScreenToScrn(screen);
 	intel_screen_private                    *intel = intel_get_screen_private(scrn);
 	struct intel_present_vblank_event       *event;
-	int                                     pipe = intel_present_crtc_pipe(screen, crtc);
+	int                                     index = intel_present_crtc_index(screen, crtc);
 	dri_bo                                  *bo;
 	Bool                                    ret;
 
@@ -332,7 +332,7 @@ intel_present_flip(RRCrtcPtr                    crtc,
 
 	event->event_id = event_id;
 
-	ret = intel_do_pageflip(intel, bo, pipe, !sync_flip,
+	ret = intel_do_pageflip(intel, bo, index, !sync_flip,
 				event,
 				intel_present_flip_event,
 				intel_present_flip_abort);
-- 
2.39.2


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

* [Intel-gfx] [PATCH xf86-video-intel 2/8] sna: Switch to using crtc index instead of pipe
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
@ 2023-03-18 13:45 ` Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 3/8] sna/video: Use " Ville Syrjala
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Start using the kms crtc index rather than the pipe almost
everywhere. The two numbers could in theory be different
if the hardware has some pipes fused off. Though I think
such non-contiguous fusing won't actually happen on the
hardware generations the driver fully supports.

The places where we must use the kms crtc indexes are
eg. vblank ioctl crtc selection bits, and checks
against in encoder possible_crtcs bitmask.

The only place where we must stick to the hardware pipe
indexing is the MI_SCANLINE_WAIT stuff as there we have to
construct CS packets to be consumed by the hardware itself.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/sna/sna.h         |  5 +++++
 src/sna/sna_display.c | 12 +++++++++---
 src/sna/sna_dri2.c    | 43 ++++++++++++++++++++++---------------------
 src/sna/sna_present.c | 32 ++++++++++++++++----------------
 4 files changed, 52 insertions(+), 40 deletions(-)

diff --git a/src/sna/sna.h b/src/sna/sna.h
index f08f4d239878..cbebea0dc7f3 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -670,6 +670,11 @@ static inline unsigned sna_crtc_pipe(xf86CrtcPtr crtc)
 	return *sna_crtc_flags(crtc) >> 8 & 0xff;
 }
 
+static inline unsigned sna_crtc_index(xf86CrtcPtr crtc)
+{
+	return *sna_crtc_flags(crtc) >> 16 & 0xff;
+}
+
 static inline bool sna_crtc_is_on(xf86CrtcPtr crtc)
 {
 	return *sna_crtc_flags(crtc) & CRTC_ON;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 15df51f6a213..508c35e98742 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -434,6 +434,11 @@ static inline unsigned __sna_crtc_pipe(struct sna_crtc *crtc)
 	return crtc->public.flags >> 8 & 0xff;
 }
 
+static inline unsigned __sna_crtc_index(struct sna_crtc *crtc)
+{
+	return crtc->public.flags >> 16 & 0xff;
+}
+
 static inline unsigned __sna_crtc_id(struct sna_crtc *crtc)
 {
 	return crtc->id;
@@ -3777,7 +3782,7 @@ sna_crtc_init__cursor(struct sna *sna, struct sna_crtc *crtc)
 }
 
 static bool
-sna_crtc_add(ScrnInfoPtr scrn, unsigned id)
+sna_crtc_add(ScrnInfoPtr scrn, unsigned id, int index)
 {
 	struct sna *sna = to_sna(scrn);
 	xf86CrtcPtr crtc;
@@ -3804,9 +3809,10 @@ sna_crtc_add(ScrnInfoPtr scrn, unsigned id)
 	}
 	assert((unsigned)get_pipe.pipe < 256);
 	sna_crtc->public.flags |= get_pipe.pipe << 8;
+	sna_crtc->public.flags |= index << 16;
 
 	if (is_zaphod(scrn) &&
-	    (get_zaphod_crtcs(sna) & (1 << get_pipe.pipe)) == 0) {
+	    (get_zaphod_crtcs(sna) & (1 << index)) == 0) {
 		free(sna_crtc);
 		return true;
 	}
@@ -7891,7 +7897,7 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna)
 		xf86_config->compat_output = 0;
 
 		for (i = 0; i < res->count_crtcs; i++)
-			if (!sna_crtc_add(scrn, res->crtcs[i]))
+			if (!sna_crtc_add(scrn, res->crtcs[i], i))
 				return false;
 
 		sna->mode.num_real_crtc = xf86_config->num_crtc;
diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 4361af71f3aa..82c855a06a59 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -118,7 +118,7 @@ struct sna_dri2_event {
 	ClientPtr client;
 	enum event_type type;
 	xf86CrtcPtr crtc;
-	int pipe;
+	int index;
 	bool queued;
 	bool sync;
 	bool chained;
@@ -1459,17 +1459,17 @@ sna_dri2_copy_region(DrawablePtr draw,
 	__sna_dri2_copy_region(sna, draw, region, src, dst, DRI2_DAMAGE);
 }
 
-inline static uint32_t pipe_select(int pipe)
+inline static uint32_t crtc_select(int index)
 {
 	/* The third pipe was introduced with IvyBridge long after
 	 * multiple pipe support was added to the kernel, hence
 	 * we can safely ignore the capability check - if we have more
 	 * than two pipes, we can assume that they are fully supported.
 	 */
-	assert(pipe < _DRM_VBLANK_HIGH_CRTC_MASK);
-	if (pipe > 1)
-		return pipe << DRM_VBLANK_HIGH_CRTC_SHIFT;
-	else if (pipe > 0)
+	assert(index < _DRM_VBLANK_HIGH_CRTC_MASK);
+	if (index > 1)
+		return index << DRM_VBLANK_HIGH_CRTC_SHIFT;
+	else if (index > 0)
 		return DRM_VBLANK_SECONDARY;
 	else
 		return 0;
@@ -1479,15 +1479,15 @@ static inline bool sna_next_vblank(struct sna_dri2_event *info)
 {
 	union drm_wait_vblank vbl;
 
-	DBG(("%s(pipe=%d, waiting until next vblank)\n",
-	     __FUNCTION__, info->pipe));
-	assert(info->pipe != -1);
+	DBG(("%s(crtc=%d, waiting until next vblank)\n",
+	     __FUNCTION__, info->index));
+	assert(info->index != -1);
 
 	VG_CLEAR(vbl);
 	vbl.request.type =
 		DRM_VBLANK_RELATIVE |
 		DRM_VBLANK_EVENT |
-		pipe_select(info->pipe);
+		crtc_select(info->index);
 	vbl.request.sequence = 1;
 	vbl.request.signal = (uintptr_t)info;
 
@@ -1504,15 +1504,15 @@ static inline bool sna_wait_vblank(struct sna_dri2_event *info,
 {
 	union drm_wait_vblank vbl;
 
-	DBG(("%s(pipe=%d, waiting until vblank %u)\n",
-	     __FUNCTION__, info->pipe, seq));
-	assert(info->pipe != -1);
+	DBG(("%s(crtc=%d, waiting until vblank %u)\n",
+	     __FUNCTION__, info->index, seq));
+	assert(info->index != -1);
 
 	VG_CLEAR(vbl);
 	vbl.request.type =
 		DRM_VBLANK_ABSOLUTE |
 		DRM_VBLANK_EVENT |
-		pipe_select(info->pipe);
+		crtc_select(info->index);
 	vbl.request.sequence = seq;
 	vbl.request.signal = (uintptr_t)info;
 
@@ -1610,8 +1610,8 @@ static void frame_swap_complete(struct sna_dri2_event *frame, int type)
 	assert(frame->draw);
 
 	swap = sna_crtc_last_swap(frame->crtc);
-	DBG(("%s(type=%d): draw=%ld, pipe=%d, frame=%lld [msc=%lld], tv=%d.%06d\n",
-	     __FUNCTION__, type, (long)frame->draw->id, frame->pipe,
+	DBG(("%s(type=%d): draw=%ld, crtc=%d, frame=%lld [msc=%lld], tv=%d.%06d\n",
+	     __FUNCTION__, type, (long)frame->draw->id, frame->index,
 	     (long long)swap->msc,
 	     (long long)draw_current_msc(frame->draw, frame->crtc, swap->msc),
 	     swap->tv_sec, swap->tv_usec));
@@ -1809,7 +1809,7 @@ sna_dri2_add_event(struct sna *sna,
 	info->sna = sna;
 	info->draw = draw;
 	info->crtc = crtc;
-	info->pipe = sna_crtc_pipe(crtc);
+	info->index = sna_crtc_index(crtc);
 	info->keepalive = 1;
 
 	if (!add_event_to_client(info, sna, client)) {
@@ -2749,8 +2749,8 @@ sna_dri2_immediate_blit(struct sna *sna,
 	if (sna->flags & SNA_NO_WAIT)
 		sync = false;
 
-	DBG(("%s: emitting immediate blit, throttling client, synced? %d, chained? %d, pipe %d\n",
-	     __FUNCTION__, sync, chain != info, info->pipe));
+	DBG(("%s: emitting immediate blit, throttling client, synced? %d, chained? %d, crtc %d\n",
+	     __FUNCTION__, sync, chain != info, info->index));
 	assert(chain);
 
 	info->type = SWAP_COMPLETE;
@@ -2925,7 +2925,8 @@ static void sna_dri2_flip_event(struct sna_dri2_event *flip)
 {
 	struct sna *sna = flip->sna;
 
-	DBG(("%s flip=%p (pipe=%d, event=%d, queued?=%d)\n", __FUNCTION__, flip, flip->pipe, flip->type, flip->queued));
+	DBG(("%s flip=%p (crtc=%d, event=%d, queued?=%d)\n",
+	     __FUNCTION__, flip, flip->index, flip->type, flip->queued));
 	if (!flip->queued) /* pageflip died whilst being queued */
 		return;
 	flip->queued = false;
@@ -2995,7 +2996,7 @@ sna_query_vblank(struct sna *sna, xf86CrtcPtr crtc, union drm_wait_vblank *vbl)
 {
 	VG_CLEAR(*vbl);
 	vbl->request.type =
-		_DRM_VBLANK_RELATIVE | pipe_select(sna_crtc_pipe(crtc));
+		_DRM_VBLANK_RELATIVE | crtc_select(sna_crtc_index(crtc));
 	vbl->request.sequence = 0;
 
 	return drmIoctl(sna->kgem.fd, DRM_IOCTL_WAIT_VBLANK, vbl);
diff --git a/src/sna/sna_present.c b/src/sna/sna_present.c
index 96be088a7450..b4f6256691e6 100644
--- a/src/sna/sna_present.c
+++ b/src/sna/sna_present.c
@@ -104,27 +104,27 @@ static inline bool has_vblank(xf86CrtcPtr crtc)
 	return (uintptr_t)crtc & 1;
 }
 
-static inline int pipe_from_crtc(RRCrtcPtr crtc)
+static inline int crtc_index_from_crtc(RRCrtcPtr crtc)
 {
-	return crtc ? sna_crtc_pipe(crtc->devPrivate) : -1;
+	return crtc ? sna_crtc_index(crtc->devPrivate) : -1;
 }
 
-static uint32_t pipe_select(int pipe)
+static uint32_t crtc_select(int index)
 {
-	if (pipe > 1)
-		return pipe << DRM_VBLANK_HIGH_CRTC_SHIFT;
-	else if (pipe > 0)
+	if (index > 1)
+		return index << DRM_VBLANK_HIGH_CRTC_SHIFT;
+	else if (index > 0)
 		return DRM_VBLANK_SECONDARY;
 	else
 		return 0;
 }
 
-static inline int sna_wait_vblank(struct sna *sna, union drm_wait_vblank *vbl, int pipe)
+static inline int sna_wait_vblank(struct sna *sna, union drm_wait_vblank *vbl, int index)
 {
-	DBG(("%s(pipe=%d, waiting until seq=%u%s)\n",
-	     __FUNCTION__, pipe, vbl->request.sequence,
+	DBG(("%s(crtc=%d, waiting until seq=%u%s)\n",
+	     __FUNCTION__, index, vbl->request.sequence,
 	     vbl->request.type & DRM_VBLANK_RELATIVE ? " [relative]" : ""));
-	vbl->request.type |= pipe_select(pipe);
+	vbl->request.type |= crtc_select(index);
 	return drmIoctl(sna->kgem.fd, DRM_IOCTL_WAIT_VBLANK, vbl);
 }
 
@@ -228,7 +228,7 @@ static CARD32 sna_fake_vblank_handler(OsTimerPtr timer, CARD32 now, void *data)
 	VG_CLEAR(vbl);
 	vbl.request.type = (uint32_t)DRM_VBLANK_RELATIVE;
 	vbl.request.sequence = 0;
-	if (sna_wait_vblank(info->sna, &vbl, sna_crtc_pipe(info->crtc)) == 0) {
+	if (sna_wait_vblank(info->sna, &vbl, sna_crtc_index(info->crtc)) == 0) {
 		ust = ust64(vbl.reply.tval_sec, vbl.reply.tval_usec);
 		msc = sna_crtc_record_vblank(info->crtc, &vbl);
 		DBG(("%s: event=%lld, target msc=%lld, now %lld\n",
@@ -243,7 +243,7 @@ static CARD32 sna_fake_vblank_handler(OsTimerPtr timer, CARD32 now, void *data)
 				vbl.request.type = DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT;
 				vbl.request.sequence = info->target_msc;
 				vbl.request.signal = (uintptr_t)MARK_PRESENT(info);
-				if (sna_wait_vblank(info->sna, &vbl, sna_crtc_pipe(info->crtc)) == 0) {
+				if (sna_wait_vblank(info->sna, &vbl, sna_crtc_index(info->crtc)) == 0) {
 					DBG(("%s: scheduled new vblank event for %lld\n", __FUNCTION__, (long long)info->target_msc));
 					add_to_crtc_vblank(info, delta);
 					free(timer);
@@ -263,7 +263,7 @@ static CARD32 sna_fake_vblank_handler(OsTimerPtr timer, CARD32 now, void *data)
 			DBG(("%s: blocking wait!\n", __FUNCTION__));
 			vbl.request.type = (uint32_t)DRM_VBLANK_ABSOLUTE;
 			vbl.request.sequence = info->target_msc;
-			if (sna_wait_vblank(info->sna, &vbl, sna_crtc_pipe(info->crtc)) == 0) {
+			if (sna_wait_vblank(info->sna, &vbl, sna_crtc_index(info->crtc)) == 0) {
 				ust = ust64(vbl.reply.tval_sec, vbl.reply.tval_usec);
 				msc = sna_crtc_record_vblank(info->crtc, &vbl);
 			} else {
@@ -337,7 +337,7 @@ static bool sna_present_queue(struct sna_present_event *info,
 	vbl.request.sequence = info->target_msc;
 	vbl.request.signal = (uintptr_t)MARK_PRESENT(info);
 	if (delta > 2 ||
-	    sna_wait_vblank(info->sna, &vbl, sna_crtc_pipe(info->crtc))) {
+	    sna_wait_vblank(info->sna, &vbl, sna_crtc_index(info->crtc))) {
 		DBG(("%s: vblank enqueue failed, faking delta=%d\n", __FUNCTION__, delta));
 		if (!sna_fake_vblank(info))
 			return false;
@@ -408,7 +408,7 @@ static void add_keepalive(struct sna *sna, xf86CrtcPtr crtc, uint64_t msc)
 	vbl.request.sequence = msc;
 	vbl.request.signal = (uintptr_t)MARK_PRESENT(info);
 
-	if (sna_wait_vblank(info->sna, &vbl, sna_crtc_pipe(crtc)) == 0) {
+	if (sna_wait_vblank(info->sna, &vbl, sna_crtc_index(crtc)) == 0) {
 		list_add_tail(&info->link, &tmp->link);
 		add_to_crtc_vblank(info, 1);
 		info->queued = true;
@@ -432,7 +432,7 @@ sna_present_get_ust_msc(RRCrtcPtr crtc, CARD64 *ust, CARD64 *msc)
 	VG_CLEAR(vbl);
 	vbl.request.type = (uint32_t)DRM_VBLANK_RELATIVE;
 	vbl.request.sequence = 0;
-	if (sna_wait_vblank(sna, &vbl, sna_crtc_pipe(crtc->devPrivate)) == 0) {
+	if (sna_wait_vblank(sna, &vbl, sna_crtc_index(crtc->devPrivate)) == 0) {
 		*ust = ust64(vbl.reply.tval_sec, vbl.reply.tval_usec);
 		*msc = sna_crtc_record_vblank(crtc->devPrivate, &vbl);
 
-- 
2.39.2


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

* [Intel-gfx] [PATCH xf86-video-intel 3/8] sna/video: Use crtc index instead of pipe
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 2/8] sna: " Ville Syrjala
@ 2023-03-18 13:45 ` Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 4/8] sna: Switch debugs/errors to use crtc index rather than pipe Ville Syrjala
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

For consistency with most other code use the kms crtc index
instead of the hardware pipe number where either will do.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/sna/sna_video_sprite.c | 44 +++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/sna/sna_video_sprite.c b/src/sna/sna_video_sprite.c
index 711a2fb261c0..df0081878a3b 100644
--- a/src/sna/sna_video_sprite.c
+++ b/src/sna/sna_video_sprite.c
@@ -102,11 +102,11 @@ static int sna_video_sprite_stop(ddStopVideo_ARGS)
 
 	for (i = 0; i < video->sna->mode.num_real_crtc; i++) {
 		xf86CrtcPtr crtc = config->crtc[i];
-		int pipe;
+		int index;
 
-		pipe = sna_crtc_pipe(crtc);
-		assert(pipe < ARRAY_SIZE(video->bo));
-		if (video->bo[pipe] == NULL)
+		index = sna_crtc_index(crtc);
+		assert(index < ARRAY_SIZE(video->bo));
+		if (video->bo[index] == NULL)
 			continue;
 
 		memset(&s, 0, sizeof(s));
@@ -115,9 +115,9 @@ static int sna_video_sprite_stop(ddStopVideo_ARGS)
 			xf86DrvMsg(video->sna->scrn->scrnIndex, X_ERROR,
 				   "failed to disable plane\n");
 
-		if (video->bo[pipe])
-			kgem_bo_destroy(&video->sna->kgem, video->bo[pipe]);
-		video->bo[pipe] = NULL;
+		if (video->bo[index])
+			kgem_bo_destroy(&video->sna->kgem, video->bo[index]);
+		video->bo[index] = NULL;
 	}
 
 	sna_window_set_port((WindowPtr)draw, NULL);
@@ -290,7 +290,7 @@ sna_video_sprite_show(struct sna *sna,
 		      BoxPtr dstBox)
 {
 	struct local_mode_set_plane s;
-	int pipe = sna_crtc_pipe(crtc);
+	int index = sna_crtc_index(crtc);
 
 	/* XXX handle video spanning multiple CRTC */
 
@@ -301,7 +301,7 @@ sna_video_sprite_show(struct sna *sna,
 #define LOCAL_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct local_intel_sprite_colorkey)
 #define LOCAL_IOCTL_MODE_ADDFB2 DRM_IOWR(0xb8, struct local_mode_fb_cmd2)
 
-	if (video->color_key_changed & (1 << pipe) && video->has_color_key) {
+	if (video->color_key_changed & (1 << index) && video->has_color_key) {
 		struct local_intel_sprite_colorkey {
 			uint32_t plane_id;
 			uint32_t min_value;
@@ -339,17 +339,17 @@ sna_video_sprite_show(struct sna *sna,
 			}
 		}
 
-		video->color_key_changed &= ~(1 << pipe);
+		video->color_key_changed &= ~(1 << index);
 	}
 
-	if (video->colorspace_changed & (1 << pipe)) {
+	if (video->colorspace_changed & (1 << index)) {
 		DBG(("%s: updating colorspace: %x\n",
 		     __FUNCTION__, video->colorspace));
 
 		sna_crtc_set_sprite_colorspace(crtc, video->idx,
 					       video->colorspace);
 
-		video->colorspace_changed &= ~(1 << pipe);
+		video->colorspace_changed &= ~(1 << index);
 	}
 
 	update_dst_box_to_crtc_coords(sna, crtc, dstBox);
@@ -468,18 +468,18 @@ sna_video_sprite_show(struct sna *sna,
 
 	if (drmIoctl(sna->kgem.fd, LOCAL_IOCTL_MODE_SETPLANE, &s)) {
 		DBG(("SET_PLANE failed: ret=%d\n", errno));
-		if (video->bo[pipe]) {
-			kgem_bo_destroy(&sna->kgem, video->bo[pipe]);
-			video->bo[pipe] = NULL;
+		if (video->bo[index]) {
+			kgem_bo_destroy(&sna->kgem, video->bo[index]);
+			video->bo[index] = NULL;
 		}
 		return false;
 	}
 
 	__kgem_bo_clear_dirty(frame->bo);
 
-	if (video->bo[pipe])
-		kgem_bo_destroy(&sna->kgem, video->bo[pipe]);
-	video->bo[pipe] = kgem_bo_reference(frame->bo);
+	if (video->bo[index])
+		kgem_bo_destroy(&sna->kgem, video->bo[index]);
+	video->bo[index] = kgem_bo_reference(frame->bo);
 	return true;
 }
 
@@ -529,7 +529,7 @@ static int sna_video_sprite_put_image(ddPutImage_ARGS)
 	for (i = 0; i < video->sna->mode.num_real_crtc; i++) {
 		xf86CrtcPtr crtc = config->crtc[i];
 		struct sna_video_frame frame;
-		const int pipe = sna_crtc_pipe(crtc);
+		const int index = sna_crtc_index(crtc);
 		bool hw_scaling = has_hw_scaling(sna, video);
 		INT32 x1, x2, y1, y2;
 		Rotation rotation;
@@ -547,15 +547,15 @@ retry:
 		RegionIntersect(&reg, &reg, &clip);
 		if (RegionNil(&reg)) {
 off:
-			assert(pipe < ARRAY_SIZE(video->bo));
-			if (video->bo[pipe]) {
+			assert(index < ARRAY_SIZE(video->bo));
+			if (video->bo[index]) {
 				struct local_mode_set_plane s;
 				memset(&s, 0, sizeof(s));
 				s.plane_id = sna_crtc_to_sprite(crtc, video->idx);
 				if (drmIoctl(video->sna->kgem.fd, LOCAL_IOCTL_MODE_SETPLANE, &s))
 					xf86DrvMsg(video->sna->scrn->scrnIndex, X_ERROR,
 						   "failed to disable plane\n");
-				video->bo[pipe] = NULL;
+				video->bo[index] = NULL;
 			}
 			continue;
 		}
-- 
2.39.2


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

* [Intel-gfx] [PATCH xf86-video-intel 4/8] sna: Switch debugs/errors to use crtc index rather than pipe
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 2/8] sna: " Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 3/8] sna/video: Use " Ville Syrjala
@ 2023-03-18 13:45 ` Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 5/8] sna/gen2: Silence compiler warn Ville Syrjala
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Let's the limit the use of hardware pipe numbers to absolutely
the only place where it's needed (MI_SCANLINE_WAIT). Everywhere
else just use the crtc index.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/sna/sna_display.c      | 220 +++++++++++++++++++------------------
 src/sna/sna_dri2.c         |  24 ++--
 src/sna/sna_present.c      |  40 +++----
 src/sna/sna_video_sprite.c |   4 +-
 4 files changed, 148 insertions(+), 140 deletions(-)

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 508c35e98742..d4fa7b0bc759 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -515,12 +515,12 @@ static inline bool msc64(struct sna_crtc *sna_crtc, uint32_t seq, uint64_t *msc)
 	if (seq < sna_crtc->last_seq) {
 		if (sna_crtc->last_seq - seq > 0x40000000) {
 			sna_crtc->wrap_seq++;
-			DBG(("%s: pipe=%d wrapped; was %u, now %u, wraps=%u\n",
-			     __FUNCTION__, __sna_crtc_pipe(sna_crtc),
+			DBG(("%s: crtc=%d wrapped; was %u, now %u, wraps=%u\n",
+			     __FUNCTION__, __sna_crtc_index(sna_crtc),
 			     sna_crtc->last_seq, seq, sna_crtc->wrap_seq));
 		} else {
-			DBG(("%s: pipe=%d msc went backwards; was %u, now %u; ignoring for last_swap\n",
-			     __FUNCTION__, __sna_crtc_pipe(sna_crtc), sna_crtc->last_seq, seq));
+			DBG(("%s: crtc=%d msc went backwards; was %u, now %u; ignoring for last_swap\n",
+			     __FUNCTION__, __sna_crtc_index(sna_crtc), sna_crtc->last_seq, seq));
 
 			record = false;
 		}
@@ -538,15 +538,15 @@ uint64_t sna_crtc_record_swap(xf86CrtcPtr crtc,
 	assert(sna_crtc);
 
 	if (msc64(sna_crtc, seq, &msc)) {
-		DBG(("%s: recording last swap on pipe=%d, frame %d [msc=%08lld], time %d.%06d\n",
-		     __FUNCTION__, __sna_crtc_pipe(sna_crtc), seq, (long long)msc,
+		DBG(("%s: recording last swap on crtc=%d, frame %d [msc=%08lld], time %d.%06d\n",
+		     __FUNCTION__, __sna_crtc_index(sna_crtc), seq, (long long)msc,
 		     tv_sec, tv_usec));
 		sna_crtc->swap.tv_sec = tv_sec;
 		sna_crtc->swap.tv_usec = tv_usec;
 		sna_crtc->swap.msc = msc;
 	} else {
-		DBG(("%s: swap event on pipe=%d, frame %d [msc=%08lld], time %d.%06d\n",
-		     __FUNCTION__, __sna_crtc_pipe(sna_crtc), seq, (long long)msc,
+		DBG(("%s: swap event on crtc=%d, frame %d [msc=%08lld], time %d.%06d\n",
+		     __FUNCTION__, __sna_crtc_index(sna_crtc), seq, (long long)msc,
 		     tv_sec, tv_usec));
 	}
 
@@ -1272,7 +1272,7 @@ sna_crtc_force_outputs_on(xf86CrtcPtr crtc)
 	int i;
 
 	assert(to_sna_crtc(crtc));
-	DBG(("%s(pipe=%d)\n", __FUNCTION__, sna_crtc_pipe(crtc)));
+	DBG(("%s(crtc=%d)\n", __FUNCTION__, sna_crtc_index(crtc)));
 
 	/* DPMS handling by the kernel is inconsistent, so after setting a
 	 * mode on an output presume that we intend for it to be on, or that
@@ -1304,7 +1304,7 @@ sna_crtc_force_outputs_off(xf86CrtcPtr crtc)
 	int i;
 
 	assert(to_sna_crtc(crtc));
-	DBG(("%s(pipe=%d)\n", __FUNCTION__, sna_crtc_pipe(crtc)));
+	DBG(("%s(crtc=%d)\n", __FUNCTION__, sna_crtc_index(crtc)));
 
 	/* DPMS handling by the kernel is inconsistent, so after setting a
 	 * mode on an output presume that we intend for it to be on, or that
@@ -1423,9 +1423,9 @@ bool sna_crtc_set_sprite_rotation(xf86CrtcPtr crtc,
 	if (!sprite)
 		return false;
 
-	DBG(("%s: CRTC:%d [pipe=%d], sprite=%u set-rotation=%x\n",
+	DBG(("%s: CRTC:%d [crtc=%d], sprite=%u set-rotation=%x\n",
 	     __FUNCTION__,
-	     sna_crtc_id(crtc), sna_crtc_pipe(crtc),
+	     sna_crtc_id(crtc), sna_crtc_index(crtc),
 	     sprite->id, rotation));
 
 	return rotation_set(to_sna(crtc->scrn), sprite,
@@ -1534,12 +1534,12 @@ sna_crtc_apply(xf86CrtcPtr crtc)
 	struct kmsg kmsg;
 	int ret = EINVAL;
 
-	DBG(("%s CRTC:%d [pipe=%d], handle=%d\n", __FUNCTION__,
-	     __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc),
+	DBG(("%s CRTC:%d [crtc=%d], handle=%d\n", __FUNCTION__,
+	     __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc),
 	     sna_crtc->bo->handle));
 	if (!sna_crtc->kmode.clock) {
-		ERR(("%s(CRTC:%d [pipe=%d]): attempted to set an invalid mode\n",
-		     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc)));
+		ERR(("%s(CRTC:%d [crtc=%d]): attempted to set an invalid mode\n",
+		     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc)));
 		return EINVAL;
 	}
 
@@ -1556,13 +1556,14 @@ sna_crtc_apply(xf86CrtcPtr crtc)
 	}
 
 	if (!rotation_set(sna, &sna_crtc->primary, sna_crtc->rotation)) {
-		ERR(("%s: set-primary-rotation failed (rotation-id=%d, rotation=%d) on CRTC:%d [pipe=%d], errno=%d\n",
-		     __FUNCTION__, sna_crtc->primary.rotation.prop, sna_crtc->rotation, __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc), errno));
+		ERR(("%s: set-primary-rotation failed (rotation-id=%d, rotation=%d) on CRTC:%d [crtc=%d], errno=%d\n",
+		     __FUNCTION__, sna_crtc->primary.rotation.prop, sna_crtc->rotation,
+		     __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc), errno));
 		sna_crtc->primary.rotation.supported &= ~sna_crtc->rotation;
 		goto unblock;
 	}
-	DBG(("%s: CRTC:%d [pipe=%d] primary rotation set to %x\n",
-	     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc), sna_crtc->rotation));
+	DBG(("%s: CRTC:%d [crtc=%d] primary rotation set to %x\n",
+	     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc), sna_crtc->rotation));
 
 	for (i = 0; i < sna->mode.num_real_output; i++) {
 		xf86OutputPtr output = config->output[i];
@@ -1585,13 +1586,13 @@ sna_crtc_apply(xf86CrtcPtr crtc)
 		if (!to_sna_output(output)->id)
 			continue;
 
-		DBG(("%s: attaching output '%s' %d [%d] to crtc:%d (pipe %d) (possible crtc:%x, possible clones:%x)\n",
+		DBG(("%s: attaching output '%s' %d [%d] to crtc:%d (crtc %d) (possible crtc:%x, possible clones:%x)\n",
 		     __FUNCTION__, output->name, i, to_connector_id(output),
-		     __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc),
+		     __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc),
 		     (uint32_t)output->possible_crtcs,
 		     (uint32_t)output->possible_clones));
 
-		assert(output->possible_crtcs & (1 << __sna_crtc_pipe(sna_crtc)) ||
+		assert(output->possible_crtcs & (1 << __sna_crtc_index(sna_crtc)) ||
 		       is_zaphod(crtc->scrn));
 
 		output_ids[output_count] = to_connector_id(output);
@@ -1623,8 +1624,8 @@ sna_crtc_apply(xf86CrtcPtr crtc)
 	arg.mode = sna_crtc->kmode;
 	arg.mode_valid = 1;
 
-	DBG(("%s: applying crtc [%d, pipe=%d] mode=%dx%d+%d+%d@%d, fb=%d%s%s update to %d outputs [%d...]\n",
-	     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc),
+	DBG(("%s: applying crtc [%d, crtc=%d] mode=%dx%d+%d+%d@%d, fb=%d%s%s update to %d outputs [%d...]\n",
+	     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc),
 	     arg.mode.hdisplay,
 	     arg.mode.vdisplay,
 	     arg.x, arg.y,
@@ -2032,11 +2033,11 @@ static void sna_crtc_slave_damage(DamagePtr damage, RegionPtr region, void *clos
 	struct sna *sna = to_sna(crtc->base->scrn);
 	RegionPtr scr;
 
-	DBG(("%s: pushing damage [(%d, %d), (%d, %d) x %d] to CRTC [pipe=%d] (%d, %d)\n",
+	DBG(("%s: pushing damage [(%d, %d), (%d, %d) x %d] to CRTC [crtc=%d] (%d, %d)\n",
 	     __FUNCTION__,
 	     region->extents.x1, region->extents.y1, region->extents.x2, region->extents.y2,
 	     region_num_rects(region),
-	     __sna_crtc_pipe(crtc), crtc->base->x, crtc->base->y));
+	     __sna_crtc_index(crtc), crtc->base->x, crtc->base->y));
 
 	assert(crtc->slave_damage == damage);
 	assert(sna->mode.shadow_damage);
@@ -2066,8 +2067,9 @@ static bool sna_crtc_enable_shadow(struct sna *sna, struct sna_crtc *crtc)
 	if (crtc->slave_pixmap) {
 		assert(crtc->slave_damage == NULL);
 
-		DBG(("%s: enabling PRIME slave tracking on CRTC %d [pipe=%d], pixmap=%ld\n",
-		     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc), crtc->slave_pixmap->drawable.serialNumber));
+		DBG(("%s: enabling PRIME slave tracking on CRTC %d [crtc=%d], pixmap=%ld\n",
+		     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_index(crtc),
+		     crtc->slave_pixmap->drawable.serialNumber));
 		crtc->slave_damage = DamageCreate(sna_crtc_slave_damage, NULL,
 						  DamageReportRawRegion, TRUE,
 						  to_screen_from_sna(sna),
@@ -2195,8 +2197,8 @@ sna_crtc_disable(xf86CrtcPtr crtc, bool force)
 	if (!force && sna_crtc->bo == NULL)
 		return;
 
-	DBG(("%s: disabling crtc [%d, pipe=%d], force?=%d\n", __FUNCTION__,
-	     __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc), force));
+	DBG(("%s: disabling crtc [%d, crtc=%d], force?=%d\n", __FUNCTION__,
+	     __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc), force));
 
 	sna_crtc_force_outputs_off(crtc);
 
@@ -2220,20 +2222,20 @@ static void update_flush_interval(struct sna *sna)
 		assert(to_sna_crtc(crtc) != NULL);
 
 		if (!crtc->enabled) {
-			DBG(("%s: CRTC:%d (pipe %d) disabled\n",
-			     __FUNCTION__,i, sna_crtc_pipe(crtc)));
+			DBG(("%s: CRTC:%d (crtc %d) disabled\n",
+			     __FUNCTION__,i, sna_crtc_index(crtc)));
 			assert(to_sna_crtc(crtc)->bo == NULL);
 			continue;
 		}
 
 		if (to_sna_crtc(crtc)->bo == NULL) {
-			DBG(("%s: CRTC:%d (pipe %d) turned off\n",
-			     __FUNCTION__,i, sna_crtc_pipe(crtc)));
+			DBG(("%s: CRTC:%d (crtc %d) turned off\n",
+			     __FUNCTION__,i, sna_crtc_index(crtc)));
 			continue;
 		}
 
-		DBG(("%s: CRTC:%d (pipe %d) vrefresh=%f\n",
-		     __FUNCTION__, i, sna_crtc_pipe(crtc),
+		DBG(("%s: CRTC:%d (crt %d) vrefresh=%f\n",
+		     __FUNCTION__, i, sna_crtc_index(crtc),
 		     xf86ModeVRefresh(&crtc->mode)));
 		max_vrefresh = max(max_vrefresh, xf86ModeVRefresh(&crtc->mode));
 	}
@@ -3053,8 +3055,8 @@ __sna_crtc_set_mode(xf86CrtcPtr crtc)
 	bool saved_cursor_transform;
 	int ret;
 
-	DBG(("%s: CRTC=%d, pipe=%d, hidden?=%d\n", __FUNCTION__,
-	     __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc), sna->mode.hidden));
+	DBG(("%s: CRTC=%d, crtc=%d, hidden?=%d\n", __FUNCTION__,
+	     __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc), sna->mode.hidden));
 	if (sna->mode.hidden)
 		return TRUE;
 
@@ -3155,9 +3157,9 @@ sna_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 	assert(sna_crtc);
 
 	xf86DrvMsg(crtc->scrn->scrnIndex, X_INFO,
-		   "switch to mode %dx%d@%.1f on %s using pipe %d, position (%d, %d), rotation %s, reflection %s\n",
+		   "switch to mode %dx%d@%.1f on %s using crtc %d, position (%d, %d), rotation %s, reflection %s\n",
 		   mode->HDisplay, mode->VDisplay, xf86ModeVRefresh(mode),
-		   outputs_for_crtc(crtc, outputs, sizeof(outputs)), __sna_crtc_pipe(sna_crtc),
+		   outputs_for_crtc(crtc, outputs, sizeof(outputs)), __sna_crtc_index(sna_crtc),
 		   x, y, rotation_to_str(rotation), reflection_to_str(rotation));
 
 	assert(mode->HDisplay <= sna->mode.max_crtc_width &&
@@ -3181,8 +3183,8 @@ sna_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 static void
 sna_crtc_dpms(xf86CrtcPtr crtc, int mode)
 {
-	DBG(("%s(pipe %d, dpms mode -> %d):= active=%d\n",
-	     __FUNCTION__, sna_crtc_pipe(crtc), mode, mode == DPMSModeOn));
+	DBG(("%s(crtc %d, dpms mode -> %d):= active=%d\n",
+	     __FUNCTION__, sna_crtc_index(crtc), mode, mode == DPMSModeOn));
 
 	if (mode == DPMSModeOn && crtc->enabled) {
 		if (__sna_crtc_set_mode(crtc))
@@ -3294,8 +3296,8 @@ sna_crtc_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr pixmap)
 	if (pixmap == sna_crtc->slave_pixmap)
 		return TRUE;
 
-	DBG(("%s: CRTC:%d, pipe=%d setting scanout pixmap=%ld\n",
-	     __FUNCTION__, __sna_crtc_id(sna_crtc),  __sna_crtc_pipe(sna_crtc),
+	DBG(("%s: CRTC:%d, crtc=%d setting scanout pixmap=%ld\n",
+	     __FUNCTION__, __sna_crtc_id(sna_crtc),  __sna_crtc_index(sna_crtc),
 	     pixmap ? pixmap->drawable.serialNumber : 0));
 
 	/* Disable first so that we can unregister the damage tracking */
@@ -3601,11 +3603,11 @@ sna_crtc_find_planes(struct sna *sna, struct sna_crtc *crtc)
 		if (drmIoctl(sna->kgem.fd, LOCAL_IOCTL_MODE_GETPLANE, &p))
 			continue;
 
-		if ((p.possible_crtcs & (1 << __sna_crtc_pipe(crtc))) == 0)
+		if ((p.possible_crtcs & (1 << __sna_crtc_index(crtc))) == 0)
 			continue;
 
-		DBG(("%s: plane %d is attached to our pipe=%d\n",
-		     __FUNCTION__, planes[i], __sna_crtc_pipe(crtc)));
+		DBG(("%s: plane %d is attached to our crtc=%d\n",
+		     __FUNCTION__, planes[i], __sna_crtc_index(crtc)));
 
 		details.id = p.plane_id;
 		details.rotation.prop = 0;
@@ -3824,8 +3826,8 @@ sna_crtc_add(ScrnInfoPtr scrn, unsigned id, int index)
 
 	sna_crtc_find_planes(sna, sna_crtc);
 
-	DBG(("%s: CRTC:%d [pipe=%d], primary id=%x: supported-rotations=%x, current-rotation=%x\n",
-	     __FUNCTION__, id, get_pipe.pipe,
+	DBG(("%s: CRTC:%d [crtc=%d][pipe=%d], primary id=%x: supported-rotations=%x, current-rotation=%x\n",
+	     __FUNCTION__, id, index, get_pipe.pipe,
 	     sna_crtc->primary.id, sna_crtc->primary.rotation.supported, sna_crtc->primary.rotation.current));
 
 	list_init(&sna_crtc->shadow_link);
@@ -3840,8 +3842,8 @@ sna_crtc_add(ScrnInfoPtr scrn, unsigned id, int index)
 
 	crtc->driver_private = sna_crtc;
 	sna_crtc->base = crtc;
-	DBG(("%s: attached crtc[%d] pipe=%d\n",
-	     __FUNCTION__, id, __sna_crtc_pipe(sna_crtc)));
+	DBG(("%s: attached crtc[%d] crtc=%d\n",
+	     __FUNCTION__, id, __sna_crtc_index(sna_crtc)));
 
 	return true;
 }
@@ -4411,9 +4413,9 @@ sna_output_get_modes(xf86OutputPtr output)
 		mode.crtc_id = sna_crtc_id(output->crtc);
 
 		if (drmIoctl(to_sna(output->scrn)->kgem.fd, DRM_IOCTL_MODE_GETCRTC, &mode) == 0) {
-			DBG(("%s: CRTC:%d, pipe=%d: has mode?=%d\n", __FUNCTION__,
+			DBG(("%s: CRTC:%d, crtc=%d: has mode?=%d\n", __FUNCTION__,
 			     sna_crtc_id(output->crtc),
-			     sna_crtc_pipe(output->crtc),
+			     sna_crtc_index(output->crtc),
 			     mode.mode_valid && mode.mode.clock));
 
 			if (mode.mode_valid && mode.mode.clock) {
@@ -6467,21 +6469,21 @@ sna_show_cursors(ScrnInfoPtr scrn)
 			continue;
 
 		if (!crtc->cursor_in_range) {
-			DBG(("%s: skipping cursor outside CRTC (pipe=%d)\n",
-			     __FUNCTION__, sna_crtc_pipe(crtc)));
+			DBG(("%s: skipping cursor outside CRTC (crtc=%d)\n",
+			     __FUNCTION__, sna_crtc_index(crtc)));
 			continue;
 		}
 
 		cursor = __sna_get_cursor(sna, crtc);
 		if (cursor == NULL ||
 		    (sna_crtc->cursor == cursor && sna_crtc->last_cursor_size == cursor->size)) {
-			DBG(("%s: skipping cursor already show on CRTC (pipe=%d)\n",
-			     __FUNCTION__, sna_crtc_pipe(crtc)));
+			DBG(("%s: skipping cursor already show on CRTC (crtc=%d)\n",
+			     __FUNCTION__, sna_crtc_index(crtc)));
 			continue;
 		}
 
-		DBG(("%s: CRTC pipe=%d, handle->%d\n", __FUNCTION__,
-		     sna_crtc_pipe(crtc), cursor->handle));
+		DBG(("%s: CRTC crtc=%d, handle->%d\n", __FUNCTION__,
+		     sna_crtc_index(crtc), cursor->handle));
 
 		VG_CLEAR(arg);
 		arg.flags = DRM_MODE_CURSOR_BO;
@@ -6499,8 +6501,8 @@ sna_show_cursors(ScrnInfoPtr scrn)
 			sna_crtc->cursor = cursor;
 			sna_crtc->last_cursor_size = cursor->size;
 		} else {
-			ERR(("%s: failed to show cursor on CRTC:%d [pipe=%d], disabling hwcursor: errno=%d\n",
-			     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_pipe(crtc), errno));
+			ERR(("%s: failed to show cursor on CRTC:%d [crtc=%d], disabling hwcursor: errno=%d\n",
+			     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_index(crtc), errno));
 			sna->cursor.disable = true;
 		}
 	}
@@ -6733,8 +6735,8 @@ disable:
 					sna_crtc->last_cursor_size = 0;
 			}
 		} else {
-			ERR(("%s: failed to update cursor on CRTC:%d [pipe=%d], disabling hwcursor: errno=%d\n",
-			     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_pipe(crtc), errno));
+			ERR(("%s: failed to update cursor on CRTC:%d [crtc=%d], disabling hwcursor: errno=%d\n",
+			     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_index(crtc), errno));
 			/* XXX How to force switch back to SW cursor?
 			 * Right now we just want until the next cursor image
 			 * change, which is fairly frequent.
@@ -6802,8 +6804,8 @@ transformable_cursor(struct sna *sna, CursorPtr cursor)
 		int size;
 
 		if (!to_sna_crtc(crtc)->hwcursor) {
-			DBG(("%s: hwcursor disabled on CRTC:%d [pipe=%d]\n",
-			     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_pipe(crtc)));
+			DBG(("%s: hwcursor disabled on CRTC:%d [crtc=%d]\n",
+			     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_index(crtc)));
 			return false;
 		}
 
@@ -7038,7 +7040,8 @@ sna_crtc_flip(struct sna *sna, struct sna_crtc *crtc, struct kgem_bo *bo, int x,
 	int output_count = 0;
 	int i;
 
-	DBG(("%s CRTC:%d [pipe=%d], handle=%d\n", __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc), bo->handle));
+	DBG(("%s CRTC:%d [crtc=%d], handle=%d\n", __FUNCTION__,
+	     __sna_crtc_id(crtc), __sna_crtc_index(crtc), bo->handle));
 
 	assert(sna->mode.num_real_output < ARRAY_SIZE(output_ids));
 	assert(crtc->bo);
@@ -7050,13 +7053,13 @@ sna_crtc_flip(struct sna *sna, struct sna_crtc *crtc, struct kgem_bo *bo, int x,
 		if (output->crtc != crtc->base)
 			continue;
 
-		DBG(("%s: attaching output '%s' %d [%d] to crtc:%d (pipe %d) (possible crtc:%x, possible clones:%x)\n",
+		DBG(("%s: attaching output '%s' %d [%d] to crtc:%d (crtc %d) (possible crtc:%x, possible clones:%x)\n",
 		     __FUNCTION__, output->name, i, to_connector_id(output),
-		     __sna_crtc_id(crtc), __sna_crtc_pipe(crtc),
+		     __sna_crtc_id(crtc), __sna_crtc_index(crtc),
 		     (uint32_t)output->possible_crtcs,
 		     (uint32_t)output->possible_clones));
 
-		assert(output->possible_crtcs & (1 << __sna_crtc_pipe(crtc)) ||
+		assert(output->possible_crtcs & (1 << __sna_crtc_index(crtc)) ||
 		       is_zaphod(sna->scrn));
 
 		output_ids[output_count] = to_connector_id(output);
@@ -7076,8 +7079,8 @@ sna_crtc_flip(struct sna *sna, struct sna_crtc *crtc, struct kgem_bo *bo, int x,
 	arg.mode = crtc->kmode;
 	arg.mode_valid = 1;
 
-	DBG(("%s: applying crtc [%d, pipe=%d] mode=%dx%d+%d+%d@%d, fb=%d across %d outputs [%d...]\n",
-	     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc),
+	DBG(("%s: applying crtc [%d, crtc=%d] mode=%dx%d+%d+%d@%d, fb=%d across %d outputs [%d...]\n",
+	     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_index(crtc),
 	     arg.mode.hdisplay,
 	     arg.mode.vdisplay,
 	     arg.x, arg.y,
@@ -7182,8 +7185,8 @@ sna_page_flip(struct sna *sna,
 		uint32_t crtc_offset;
 		int fixup;
 
-		DBG(("%s: crtc %d id=%d, pipe=%d active? %d\n",
-		     __FUNCTION__, i, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc), crtc->bo != NULL));
+		DBG(("%s: crtc %d id=%d, crtc=%d active? %d\n",
+		     __FUNCTION__, i, __sna_crtc_id(crtc), __sna_crtc_index(crtc), crtc->bo != NULL));
 		if (crtc->bo == NULL)
 			continue;
 		assert(!crtc->transform);
@@ -7249,8 +7252,8 @@ update_scanout:
 		arg.reserved = 0;
 
 retry_flip:
-		DBG(("%s: crtc %d id=%d, pipe=%d  --> fb %d\n",
-		     __FUNCTION__, i, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc), arg.fb_id));
+		DBG(("%s: crtc %d id=%d, crtc=%d  --> fb %d\n",
+		     __FUNCTION__, i, __sna_crtc_id(crtc), __sna_crtc_index(crtc), arg.fb_id));
 		if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_PAGE_FLIP, &arg)) {
 			ERR(("%s: pageflip failed with err=%d\n", __FUNCTION__, errno));
 
@@ -7284,8 +7287,9 @@ retry_flip:
 
 error:
 			xf86DrvMsg(sna->scrn->scrnIndex, X_ERROR,
-					"page flipping failed, on CRTC:%d (pipe=%d), disabling %s page flips\n",
-					__sna_crtc_id(crtc), __sna_crtc_pipe(crtc), async ? "asynchronous": "synchronous");
+				   "page flipping failed, on CRTC:%d (crtc=%d), disabling %s page flips\n",
+				   __sna_crtc_id(crtc), __sna_crtc_index(crtc),
+				   async ? "asynchronous": "synchronous");
 
 			if (count || crtc->bo == bo)
 				sna_mode_restore(sna);
@@ -7474,8 +7478,8 @@ static void crtc_init_gamma(xf86CrtcPtr crtc)
 			gamma_set = crtc_get_gamma_legacy(crtc, red,
 							  green, blue, size);
 
-		DBG(("%s: CRTC:%d, pipe=%d: gamma set?=%d\n",
-		     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc),
+		DBG(("%s: CRTC:%d, crtc=%d: gamma set?=%d\n",
+		     __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc),
 		     gamma_set));
 		if (!gamma_set) {
 			int i;
@@ -7576,8 +7580,8 @@ static bool sna_probe_initial_configuration(struct sna *sna)
 		if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_GETCRTC, &mode))
 			continue;
 
-		DBG(("%s: CRTC:%d, pipe=%d: has mode?=%d\n", __FUNCTION__,
-		     __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc),
+		DBG(("%s: CRTC:%d, crtc=%d: has mode?=%d\n", __FUNCTION__,
+		     __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc),
 		     mode.mode_valid && mode.mode.clock));
 
 		if (!mode.mode_valid || mode.mode.clock == 0)
@@ -7635,10 +7639,10 @@ static bool sna_probe_initial_configuration(struct sna *sna)
 				}
 
 				xf86DrvMsg(scrn->scrnIndex, X_PROBED,
-					   "Output %s using initial mode %s on pipe %d\n",
+					   "Output %s using initial mode %s on crtc %d\n",
 					   output->name,
 					   crtc->desiredMode.name,
-					   sna_crtc_pipe(crtc));
+					   sna_crtc_index(crtc));
 
 				output->crtc = crtc;
 				output->status = XF86OutputStatusConnected;
@@ -8545,9 +8549,9 @@ static bool sna_mode_shutdown_crtc(xf86CrtcPtr crtc)
 	int o;
 
 	xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR,
-		   "%s: invalid state found on pipe %d, disabling CRTC:%d\n",
+		   "%s: invalid state found on crtc %d, disabling CRTC:%d\n",
 		   __FUNCTION__,
-		   __sna_crtc_pipe(to_sna_crtc(crtc)),
+		   __sna_crtc_index(to_sna_crtc(crtc)),
 		   __sna_crtc_id(to_sna_crtc(crtc)));
 	sna_crtc_disable(crtc, true);
 #if XF86_CRTC_VERSION >= 3
@@ -9034,8 +9038,8 @@ sna_crtc_redisplay(xf86CrtcPtr crtc, RegionPtr region, struct kgem_bo *bo)
 	DrawablePtr draw = crtc_source(crtc, &sx, &sy);
 	struct sna_pixmap *priv = sna_pixmap((PixmapPtr)draw);
 
-	DBG(("%s: crtc %d [pipe=%d], damage (%d, %d), (%d, %d) x %d\n",
-	     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_pipe(crtc),
+	DBG(("%s: crtc %d [crtc=%d], damage (%d, %d), (%d, %d) x %d\n",
+	     __FUNCTION__, sna_crtc_id(crtc), sna_crtc_index(crtc),
 	     region->extents.x1, region->extents.y1,
 	     region->extents.x2, region->extents.y2,
 	     region_num_rects(region)));
@@ -9221,8 +9225,8 @@ static bool move_crtc_to_gpu(struct sna *sna)
 		if (sna->flags & SNA_TEAR_FREE)
 			hint |= __MOVE_FORCE;
 
-		DBG(("%s: CRTC %d [pipe=%d] requires frontbuffer\n",
-		     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc)));
+		DBG(("%s: CRTC %d [crtc=%d] requires frontbuffer\n",
+		     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_index(crtc)));
 		return sna_pixmap_move_to_gpu(sna->front, hint);
 	}
 
@@ -9292,8 +9296,8 @@ void sna_mode_redisplay(struct sna *sna)
 			damage.data = NULL;
 			RegionIntersect(&damage, &damage, region);
 			if (!box_empty(&damage.extents)) {
-				DBG(("%s: fallback intersects pipe=%d [(%d, %d), (%d, %d)]\n",
-				     __FUNCTION__, __sna_crtc_pipe(sna_crtc),
+				DBG(("%s: fallback intersects crtc=%d [(%d, %d), (%d, %d)]\n",
+				     __FUNCTION__, __sna_crtc_index(sna_crtc),
 				     damage.extents.x1, damage.extents.y1,
 				     damage.extents.x2, damage.extents.y2));
 
@@ -9420,8 +9424,8 @@ void sna_mode_redisplay(struct sna *sna)
 						BoxRec box;
 						DrawableRec tmp;
 
-						DBG(("%s: flip [fb=%d] on crtc %d [%d, pipe=%d] failed - %d\n",
-						     __FUNCTION__, arg.fb_id, i, __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc), errno));
+						DBG(("%s: flip [fb=%d] on crtc %d [%d, crtc=%d] failed - %d\n",
+						     __FUNCTION__, arg.fb_id, i, __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc), errno));
 						xf86DrvMsg(sna->scrn->scrnIndex, X_ERROR,
 							   "Page flipping failed, disabling TearFree\n");
 						sna->flags &= ~SNA_TEAR_FREE;
@@ -9439,8 +9443,8 @@ disable1:
 									    &tmp, sna_crtc->bo, 0, 0,
 									    &box, 1, COPY_LAST)) {
 							xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR,
-								   "%s: page flipping failed, disabling CRTC:%d (pipe=%d)\n",
-								   __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_pipe(sna_crtc));
+								   "%s: page flipping failed, disabling CRTC:%d (crtc=%d)\n",
+								   __FUNCTION__, __sna_crtc_id(sna_crtc), __sna_crtc_index(sna_crtc));
 							sna_crtc_disable(crtc, false);
 						}
 					}
@@ -9504,8 +9508,9 @@ disable1:
 			int x, y;
 
 			assert(crtc != NULL);
-			DBG(("%s: crtc %d [%d, pipe=%d] active? %d, transformed? %d\n",
-			     __FUNCTION__, i, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc), crtc->bo ? crtc->bo->handle : 0, crtc->transform));
+			DBG(("%s: crtc %d [%d, crtc=%d] active? %d, transformed? %d\n",
+			     __FUNCTION__, i, __sna_crtc_id(crtc), __sna_crtc_index(crtc),
+			     crtc->bo ? crtc->bo->handle : 0, crtc->transform));
 			if (crtc->bo == NULL || crtc->transform)
 				continue;
 
@@ -9517,8 +9522,9 @@ disable1:
 			arg.user_data = (uintptr_t)crtc;
 
 			if (crtc->client_bo) {
-				DBG(("%s: apply shadow override bo for CRTC:%d on pipe=%d, handle=%d\n",
-				     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc), crtc->client_bo->handle));
+				DBG(("%s: apply shadow override bo for CRTC:%d on crtc=%d, handle=%d\n",
+				     __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_index(crtc),
+				     crtc->client_bo->handle));
 				arg.fb_id = get_fb(sna, crtc->client_bo,
 						   crtc->base->mode.HDisplay,
 						   crtc->base->mode.VDisplay);
@@ -9599,16 +9605,17 @@ fixup_flip:
 					}
 
 					xf86DrvMsg(sna->scrn->scrnIndex, X_ERROR,
-						   "%s: page flipping failed, disabling CRTC:%d (pipe=%d)\n",
-						   __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc));
+						   "%s: page flipping failed, disabling CRTC:%d (crtc=%d)\n",
+						   __FUNCTION__, __sna_crtc_id(crtc), __sna_crtc_index(crtc));
 					sna_crtc_disable(crtc->base, false);
 				}
 				continue;
 			}
 
 			if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_PAGE_FLIP, &arg)) {
-				ERR(("%s: flip [fb=%d] on crtc %d [%d, pipe=%d] failed - %d\n",
-				     __FUNCTION__, arg.fb_id, i, __sna_crtc_id(crtc), __sna_crtc_pipe(crtc), errno));
+				ERR(("%s: flip [fb=%d] on crtc %d [%d, crtc=%d] failed - %d\n",
+				     __FUNCTION__, arg.fb_id, i, __sna_crtc_id(crtc),
+				     __sna_crtc_index(crtc), errno));
 				goto fixup_flip;
 			}
 			sna->mode.flip_active++;
@@ -9708,8 +9715,9 @@ again:
 				sna = to_sna(crtc->base->scrn);
 
 				if (msc64(crtc, vbl->sequence, &msc)) {
-					DBG(("%s: recording last swap on pipe=%d, frame %d [%08llx], time %d.%06d\n",
-					     __FUNCTION__, __sna_crtc_pipe(crtc), vbl->sequence, (long long)msc, vbl->tv_sec, vbl->tv_usec));
+					DBG(("%s: recording last swap on crtc=%d, frame %d [%08llx], time %d.%06d\n",
+					     __FUNCTION__, __sna_crtc_index(crtc), vbl->sequence,
+					     (long long)msc, vbl->tv_sec, vbl->tv_usec));
 					crtc->swap.tv_sec = vbl->tv_sec;
 					crtc->swap.tv_usec = vbl->tv_usec;
 					crtc->swap.msc = msc;
diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 82c855a06a59..ee4b89db56a8 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -1559,10 +1559,10 @@ draw_current_msc(DrawablePtr draw, xf86CrtcPtr crtc, uint64_t msc)
 		if (priv->crtc != crtc) {
 			const struct ust_msc *last = sna_crtc_last_swap(priv->crtc);
 			const struct ust_msc *this = sna_crtc_last_swap(crtc);
-			DBG(("%s: Window transferring from pipe=%d [msc=%llu] to pipe=%d [msc=%llu], delta now %lld\n",
+			DBG(("%s: Window transferring from crtc=%d [msc=%llu] to crtc=%d [msc=%llu], delta now %lld\n",
 			     __FUNCTION__,
-			     sna_crtc_pipe(priv->crtc), (long long)last->msc,
-			     sna_crtc_pipe(crtc), (long long)this->msc,
+			     sna_crtc_index(priv->crtc), (long long)last->msc,
+			     sna_crtc_index(crtc), (long long)this->msc,
 			     (long long)(priv->msc_delta + this->msc - last->msc)));
 			priv->msc_delta += this->msc - last->msc;
 			priv->crtc = crtc;
@@ -1634,8 +1634,8 @@ static void fake_swap_complete(struct sna *sna, ClientPtr client,
 		crtc = sna_primary_crtc(sna);
 
 	swap = sna_crtc_last_swap(crtc);
-	DBG(("%s(type=%d): draw=%ld, pipe=%d, frame=%lld [msc %lld], tv=%d.%06d\n",
-	     __FUNCTION__, type, (long)draw->id, crtc ? sna_crtc_pipe(crtc) : -1,
+	DBG(("%s(type=%d): draw=%ld, crtc=%d, frame=%lld [msc %lld], tv=%d.%06d\n",
+	     __FUNCTION__, type, (long)draw->id, crtc ? sna_crtc_index(crtc) : -1,
 	     (long long)swap->msc,
 	     (long long)draw_current_msc(draw, crtc, swap->msc),
 	     swap->tv_sec, swap->tv_usec));
@@ -2055,7 +2055,7 @@ can_flip(struct sna * sna,
 	}
 
 	if (!sna_crtc_is_on(crtc)) {
-		DBG(("%s: ref-pipe=%d is disabled\n", __FUNCTION__, sna_crtc_pipe(crtc)));
+		DBG(("%s: ref-crtc=%d is disabled\n", __FUNCTION__, sna_crtc_index(crtc)));
 		return false;
 	}
 
@@ -3125,8 +3125,8 @@ sna_dri2_schedule_flip(ClientPtr client, DrawablePtr draw, xf86CrtcPtr crtc,
 	if (immediate) {
 		bool signal = false;
 		info = sna->dri2.flip_pending;
-		DBG(("%s: performing immediate swap on pipe %d, pending? %d, mode: %d, continuation? %d\n",
-		     __FUNCTION__, sna_crtc_pipe(crtc),
+		DBG(("%s: performing immediate swap on crtc %d, pending? %d, mode: %d, continuation? %d\n",
+		     __FUNCTION__, sna_crtc_index(crtc),
 		     info != NULL, info ? info->flip_continue : 0,
 		     info && info->draw == draw));
 
@@ -3510,8 +3510,8 @@ sna_dri2_get_msc(DrawablePtr draw, CARD64 *ust, CARD64 *msc)
 	const struct ust_msc *swap;
 	union drm_wait_vblank vbl;
 
-	DBG(("%s(draw=%ld, pipe=%d)\n", __FUNCTION__, draw->id,
-	     crtc ? sna_crtc_pipe(crtc) : -1));
+	DBG(("%s(draw=%ld, crtc=%d)\n", __FUNCTION__, draw->id,
+	     crtc ? sna_crtc_index(crtc) : -1));
 
 	/* Drawable not displayed, make up a *monotonic* value */
 	if (crtc == NULL)
@@ -3547,8 +3547,8 @@ sna_dri2_schedule_wait_msc(ClientPtr client, DrawablePtr draw, CARD64 target_msc
 	const struct ust_msc *swap;
 
 	crtc = sna_dri2_get_crtc(draw);
-	DBG(("%s(pipe=%d, target_msc=%llu, divisor=%llu, rem=%llu)\n",
-	     __FUNCTION__, crtc ? sna_crtc_pipe(crtc) : -1,
+	DBG(("%s(crtc=%d, target_msc=%llu, divisor=%llu, rem=%llu)\n",
+	     __FUNCTION__, crtc ? sna_crtc_index(crtc) : -1,
 	     (long long)target_msc,
 	     (long long)divisor,
 	     (long long)remainder));
diff --git a/src/sna/sna_present.c b/src/sna/sna_present.c
index b4f6256691e6..99e79c01cce6 100644
--- a/src/sna/sna_present.c
+++ b/src/sna/sna_present.c
@@ -158,8 +158,8 @@ static void vblank_complete(struct sna_present_event *info,
 
 		DBG(("%s: %d events complete\n", __FUNCTION__, info->n_event_id));
 		for (n = 0; n < info->n_event_id; n++) {
-			DBG(("%s: pipe=%d tv=%d.%06d msc=%lld (target=%lld), event=%lld complete%s\n", __FUNCTION__,
-			     sna_crtc_pipe(info->crtc),
+			DBG(("%s: certc=%d tv=%d.%06d msc=%lld (target=%lld), event=%lld complete%s\n", __FUNCTION__,
+			     sna_crtc_index(info->crtc),
 			     (int)(ust / 1000000), (int)(ust % 1000000),
 			     (long long)msc, (long long)info->target_msc,
 			     (long long)info->event_id[n],
@@ -422,7 +422,7 @@ sna_present_get_ust_msc(RRCrtcPtr crtc, CARD64 *ust, CARD64 *msc)
 	struct sna *sna = to_sna_from_screen(crtc->pScreen);
 	union drm_wait_vblank vbl;
 
-	DBG(("%s(pipe=%d)\n", __FUNCTION__, sna_crtc_pipe(crtc->devPrivate)));
+	DBG(("%s(crtc=%d)\n", __FUNCTION__, sna_crtc_index(crtc->devPrivate)));
 	if (sna_crtc_has_vblank(crtc->devPrivate)) {
 		DBG(("%s: vblank active, reusing last swap msc/ust\n",
 		     __FUNCTION__));
@@ -445,8 +445,8 @@ last:
 		*msc = swap->msc;
 	}
 
-	DBG(("%s: pipe=%d, tv=%d.%06d seq=%d msc=%lld\n", __FUNCTION__,
-	     sna_crtc_pipe(crtc->devPrivate),
+	DBG(("%s: crtc=%d, tv=%d.%06d seq=%d msc=%lld\n", __FUNCTION__,
+	     sna_crtc_index(crtc->devPrivate),
 	     (int)(*ust / 1000000), (int)(*ust % 1000000),
 	     vbl.reply.sequence, (long long)*msc));
 
@@ -488,13 +488,13 @@ sna_present_queue_vblank(RRCrtcPtr crtc, uint64_t event_id, uint64_t msc)
 		return BadAlloc;
 
 	swap = sna_crtc_last_swap(crtc->devPrivate);
-	DBG(("%s(pipe=%d, event=%lld, msc=%lld, last swap=%lld)\n",
-	     __FUNCTION__, sna_crtc_pipe(crtc->devPrivate),
+	DBG(("%s(crtc=%d, event=%lld, msc=%lld, last swap=%lld)\n",
+	     __FUNCTION__, sna_crtc_index(crtc->devPrivate),
 	     (long long)event_id, (long long)msc, (long long)swap->msc));
 
 	if (warn_unless((int64_t)(msc - swap->msc) >= 0)) {
-		DBG(("%s: pipe=%d tv=%d.%06d msc=%lld (target=%lld), event=%lld complete\n", __FUNCTION__,
-		     sna_crtc_pipe(crtc->devPrivate),
+		DBG(("%s: crtc=%d tv=%d.%06d msc=%lld (target=%lld), event=%lld complete\n", __FUNCTION__,
+		     sna_crtc_index(crtc->devPrivate),
 		     swap->tv_sec, swap->tv_usec,
 		     (long long)swap->msc, (long long)msc,
 		     (long long)event_id));
@@ -561,8 +561,8 @@ sna_present_queue_vblank(RRCrtcPtr crtc, uint64_t event_id, uint64_t msc)
 static void
 sna_present_abort_vblank(RRCrtcPtr crtc, uint64_t event_id, uint64_t msc)
 {
-	DBG(("%s(pipe=%d, event=%lld, msc=%lld)\n",
-	     __FUNCTION__, pipe_from_crtc(crtc),
+	DBG(("%s(crtc=%d, event=%lld, msc=%lld)\n",
+	     __FUNCTION__, crtc_index_from_crtc(crtc),
 	     (long long)event_id, (long long)msc));
 }
 
@@ -604,9 +604,9 @@ sna_present_check_flip(RRCrtcPtr crtc,
 	struct sna *sna = to_sna_from_pixmap(pixmap);
 	struct sna_pixmap *flip;
 
-	DBG(("%s(pipe=%d, pixmap=%ld, sync_flip=%d)\n",
+	DBG(("%s(crtc=%d, pixmap=%ld, sync_flip=%d)\n",
 	     __FUNCTION__,
-	     pipe_from_crtc(crtc),
+	     crtc_index_from_crtc(crtc),
 	     pixmap->drawable.serialNumber,
 	     sync_flip));
 
@@ -697,8 +697,8 @@ present_flip_handler(struct drm_event_vblank *event, void *data)
 		swap = *sna_crtc_last_swap(info->crtc);
 	}
 
-	DBG(("%s: pipe=%d, tv=%d.%06d msc=%lld (target %lld), event=%lld complete%s\n", __FUNCTION__,
-	     info->crtc ? sna_crtc_pipe(info->crtc) : -1,
+	DBG(("%s: crtc=%d, tv=%d.%06d msc=%lld (target %lld), event=%lld complete%s\n", __FUNCTION__,
+	     info->crtc ? sna_crtc_index(info->crtc) : -1,
 	     swap.tv_sec, swap.tv_usec, (long long)swap.msc,
 	     (long long)info->target_msc,
 	     (long long)info->event_id[0],
@@ -729,9 +729,9 @@ do_flip(struct sna *sna,
 {
 	struct sna_present_event *info;
 
-	DBG(("%s(pipe=%d, event=%lld, handle=%d)\n",
+	DBG(("%s(crtc=%d, event=%lld, handle=%d)\n",
 	     __FUNCTION__,
-	     pipe_from_crtc(crtc),
+	     crtc_index_from_crtc(crtc),
 	     (long long)event_id,
 	     bo->handle));
 
@@ -859,9 +859,9 @@ sna_present_flip(RRCrtcPtr crtc,
 	struct sna *sna = to_sna_from_pixmap(pixmap);
 	struct kgem_bo *bo;
 
-	DBG(("%s(pipe=%d, event=%lld, msc=%lld, pixmap=%ld, sync?=%d)\n",
+	DBG(("%s(crtc=%d, event=%lld, msc=%lld, pixmap=%ld, sync?=%d)\n",
 	     __FUNCTION__,
-	     pipe_from_crtc(crtc),
+	     crtc_index_from_crtc(crtc),
 	     (long long)event_id,
 	     (long long)target_msc,
 	     pixmap->drawable.serialNumber, sync_flip));
@@ -918,7 +918,7 @@ sna_present_unflip(ScreenPtr screen, uint64_t event_id)
 
 notify:
 		swap = sna_crtc_last_swap(sna_primary_crtc(sna));
-		DBG(("%s: pipe=%d, tv=%d.%06d msc=%lld, event=%lld complete\n", __FUNCTION__,
+		DBG(("%s: crtc=%d, tv=%d.%06d msc=%lld, event=%lld complete\n", __FUNCTION__,
 		     -1,
 		     swap->tv_sec, swap->tv_usec, (long long)swap->msc,
 		     (long long)event_id));
diff --git a/src/sna/sna_video_sprite.c b/src/sna/sna_video_sprite.c
index df0081878a3b..db3865b9ffae 100644
--- a/src/sna/sna_video_sprite.c
+++ b/src/sna/sna_video_sprite.c
@@ -816,8 +816,8 @@ static int sna_video_has_sprites(struct sna *sna)
 	min = -1;
 	for (i = 0; i < sna->mode.num_real_crtc; i++) {
 		unsigned count =  sna_crtc_count_sprites(config->crtc[i]);
-		DBG(("%s: %d sprites found on pipe %d\n", __FUNCTION__,
-		     count, sna_crtc_pipe(config->crtc[i])));
+		DBG(("%s: %d sprites found on crtc %d\n", __FUNCTION__,
+		     count, sna_crtc_index(config->crtc[i])));
 		if (count < min)
 			min = count;
 	}
-- 
2.39.2


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

* [Intel-gfx] [PATCH xf86-video-intel 5/8] sna/gen2: Silence compiler warn
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
                   ` (2 preceding siblings ...)
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 4/8] sna: Switch debugs/errors to use crtc index rather than pipe Ville Syrjala
@ 2023-03-18 13:45 ` Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 6/8] sna/gen3: Fix 3DSTATE_PIXEL_SHADER_PROGRAM debugs Ville Syrjala
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

../src/sna/kgem_debug_gen2.c:625:5: warning: ‘static’ is not at beginning of declaration [-Wold-style-declaration]
  625 |     const static struct {
      |     ^~~~~

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/sna/kgem_debug_gen2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sna/kgem_debug_gen2.c b/src/sna/kgem_debug_gen2.c
index 3f91c29d1967..a4b1b841aef9 100644
--- a/src/sna/kgem_debug_gen2.c
+++ b/src/sna/kgem_debug_gen2.c
@@ -622,7 +622,7 @@ decode_3d_1c(struct kgem *kgem, uint32_t offset)
 
 int kgem_gen2_decode_3d(struct kgem *kgem, uint32_t offset)
 {
-    const static struct {
+    static const struct {
 	uint32_t opcode;
 	int min_len;
 	int max_len;
-- 
2.39.2


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

* [Intel-gfx] [PATCH xf86-video-intel 6/8] sna/gen3: Fix 3DSTATE_PIXEL_SHADER_PROGRAM debugs
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
                   ` (3 preceding siblings ...)
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 5/8] sna/gen2: Silence compiler warn Ville Syrjala
@ 2023-03-18 13:45 ` Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 7/8] sna/gen3: Silence compiler warn Ville Syrjala
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

3DSTATE_PIXEL_SHADER_PROGRAM instruction length is
9 bits, not 8 bits.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/sna/kgem_debug_gen3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sna/kgem_debug_gen3.c b/src/sna/kgem_debug_gen3.c
index 1634225c4193..4a7b1aaaeafa 100644
--- a/src/sna/kgem_debug_gen3.c
+++ b/src/sna/kgem_debug_gen3.c
@@ -1279,7 +1279,7 @@ gen3_decode_3d_1d(struct kgem *kgem, uint32_t offset)
 		return len;
 	case 0x05:
 		kgem_debug_print(data, offset, 0, "3DSTATE_PIXEL_SHADER_PROGRAM\n");
-		len = (data[0] & 0x000000ff) + 2;
+		len = (data[0] & 0x000001ff) + 2;
 		assert(((len-1) % 3) == 0);
 		assert(len <= 370);
 		i = 1;
-- 
2.39.2


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

* [Intel-gfx] [PATCH xf86-video-intel 7/8] sna/gen3: Silence compiler warn
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
                   ` (4 preceding siblings ...)
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 6/8] sna/gen3: Fix 3DSTATE_PIXEL_SHADER_PROGRAM debugs Ville Syrjala
@ 2023-03-18 13:45 ` Ville Syrjala
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 8/8] intel: Fix some theoretical buffer overflow Ville Syrjala
  2023-03-18 14:15 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [xf86-video-intel,1/8] uxa: Switch to using crtc index instead of pipe Patchwork
  7 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

../src/sna/kgem_debug_gen3.c:1289:50: warning: ‘%03d’ directive writing between 3 and 10 bytes into a region of size 8 [-Wformat-overflow=]
 1289 |                         sprintf(instr_prefix, "PS%03d", instr);
      |                                                  ^~~~
../src/sna/kgem_debug_gen3.c:1289:47: note: directive argument in the range [0, 1431655764]
 1289 |                         sprintf(instr_prefix, "PS%03d", instr);
      |                                               ^~~~~~~~
../src/sna/kgem_debug_gen3.c:1289:25: note: ‘sprintf’ output between 6 and 13 bytes into a destination of size 10
 1289 |                         sprintf(instr_prefix, "PS%03d", instr);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The compiler is utterly wrong here of course since 'instr'
will at most be (0x1ff + 2 - 1) / 3 ~= 170 (though the hardware
defined max is actually only 123). But let's bump the buffer
size a little bit to shut the compiler up.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/sna/kgem_debug_gen3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sna/kgem_debug_gen3.c b/src/sna/kgem_debug_gen3.c
index 4a7b1aaaeafa..a52ee61d23f8 100644
--- a/src/sna/kgem_debug_gen3.c
+++ b/src/sna/kgem_debug_gen3.c
@@ -1284,7 +1284,7 @@ gen3_decode_3d_1d(struct kgem *kgem, uint32_t offset)
 		assert(len <= 370);
 		i = 1;
 		for (instr = 0; instr < (len - 1) / 3; instr++) {
-			char instr_prefix[10];
+			char instr_prefix[13];
 
 			sprintf(instr_prefix, "PS%03d", instr);
 			gen3_decode_instruction(data, offset, i, instr_prefix);
-- 
2.39.2


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

* [Intel-gfx] [PATCH xf86-video-intel 8/8] intel: Fix some theoretical buffer overflow
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
                   ` (5 preceding siblings ...)
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 7/8] sna/gen3: Silence compiler warn Ville Syrjala
@ 2023-03-18 13:45 ` Ville Syrjala
  2023-03-18 14:15 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [xf86-video-intel,1/8] uxa: Switch to using crtc index instead of pipe Patchwork
  7 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjala @ 2023-03-18 13:45 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Looks to me like the theoretical max the sprintf()s need
here is about 34+4+9+sizeof(de->d_name) bytes. Let's just
make that 64+sizeof(de->d_name) for simplicity.

This shuts up the compiler:
../src/intel_device.c: In function ‘__intel_open_device__pci’:
../src/intel_device.c:387:60: warning: ‘%s’ directive writing up to 255 bytes into a region of size 247 [-Wformat-overflow=]
  387 |                         sprintf(path + base + 4, "/dev/dri/%s", de->d_name);
      |                                                            ^~
../src/intel_device.c:387:25: note: ‘sprintf’ output between 10 and 265 bytes into a destination of size 256
  387 |                         sprintf(path + base + 4, "/dev/dri/%s", de->d_name);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/intel_device.c:392:54: warning: ‘/dev’ directive writing 4 bytes into a region of size between 0 and 255 [-Wformat-overflow=]
  392 |                         sprintf(path + base + 3, "/%s/dev", de->d_name);
      |                                                      ^~~~
../src/intel_device.c:392:25: note: ‘sprintf’ output between 6 and 261 bytes into a destination of size 256
  392 |                         sprintf(path + base + 3, "/%s/dev", de->d_name);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 src/intel_device.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/intel_device.c b/src/intel_device.c
index f28d3be11796..2ce2e9ad1467 100644
--- a/src/intel_device.c
+++ b/src/intel_device.c
@@ -335,9 +335,9 @@ static int __intel_open_device__major_minor(int _major, int _minor)
 static int __intel_open_device__pci(const struct pci_device *pci)
 {
 	struct stat st;
-	char path[256];
-	DIR *dir;
 	struct dirent *de;
+	char path[64+sizeof(de->d_name)];
+	DIR *dir;
 	int base;
 	int fd;
 
-- 
2.39.2


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

* [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [xf86-video-intel,1/8] uxa: Switch to using crtc index instead of pipe
  2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
                   ` (6 preceding siblings ...)
  2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 8/8] intel: Fix some theoretical buffer overflow Ville Syrjala
@ 2023-03-18 14:15 ` Patchwork
  7 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2023-03-18 14:15 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-gfx

== Series Details ==

Series: series starting with [xf86-video-intel,1/8] uxa: Switch to using crtc index instead of pipe
URL   : https://patchwork.freedesktop.org/series/115348/
State : failure

== Summary ==

Error: patch https://patchwork.freedesktop.org/api/1.0/series/115348/revisions/1/mbox/ not applied
Applying: uxa: Switch to using crtc index instead of pipe
error: sha1 information is lacking or useless (src/uxa/intel.h).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 uxa: Switch to using crtc index instead of pipe
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Build failed, no error log produced



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

end of thread, other threads:[~2023-03-18 14:15 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-18 13:45 [Intel-gfx] [PATCH xf86-video-intel 1/8] uxa: Switch to using crtc index instead of pipe Ville Syrjala
2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 2/8] sna: " Ville Syrjala
2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 3/8] sna/video: Use " Ville Syrjala
2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 4/8] sna: Switch debugs/errors to use crtc index rather than pipe Ville Syrjala
2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 5/8] sna/gen2: Silence compiler warn Ville Syrjala
2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 6/8] sna/gen3: Fix 3DSTATE_PIXEL_SHADER_PROGRAM debugs Ville Syrjala
2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 7/8] sna/gen3: Silence compiler warn Ville Syrjala
2023-03-18 13:45 ` [Intel-gfx] [PATCH xf86-video-intel 8/8] intel: Fix some theoretical buffer overflow Ville Syrjala
2023-03-18 14:15 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [xf86-video-intel,1/8] uxa: Switch to using crtc index instead of pipe Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).