From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: "Maarten Lankhorst" <dev@lankhorst.se>,
"Ville Syrjälä" <ville.syrjala@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 01/11] drm/xe/display: Add intel_plane_initial_vblank_wait
Date: Thu, 12 Dec 2024 09:33:00 -0500 [thread overview]
Message-ID: <Z1r0HMyS7wl_iSx3@intel.com> (raw)
In-Reply-To: <20241210083111.230484-2-dev@lankhorst.se>
On Tue, Dec 10, 2024 at 09:31:01AM +0100, Maarten Lankhorst wrote:
please identify patches touching both drivers with drm/{i915,xe}, or something like that...
> We're changing the driver to have no interrupts during early init for
> Xe, so we poll the PIPE_FRMSTMSMP counter instead.
>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 6 +++---
> .../drm/i915/display/intel_plane_initial.c | 7 ++++++-
> .../drm/i915/display/intel_plane_initial.h | 2 ++
> drivers/gpu/drm/xe/display/xe_plane_initial.c | 19 ++++++++++++++++++-
> 4 files changed, 29 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 35c8904ecf443..a963610c4e259 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -796,7 +796,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
> if ((crtc_state->active_planes & ~BIT(PLANE_CURSOR)) == 0 &&
> hsw_ips_disable(crtc_state)) {
> crtc_state->ips_enabled = false;
> - intel_crtc_wait_for_next_vblank(crtc);
> + intel_plane_initial_vblank_wait(crtc);
> }
>
> /*
> @@ -810,7 +810,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
> */
> if (HAS_GMCH(dev_priv) &&
> intel_set_memory_cxsr(dev_priv, false))
> - intel_crtc_wait_for_next_vblank(crtc);
> + intel_plane_initial_vblank_wait(crtc);
>
> /*
> * Gen2 reports pipe underruns whenever all planes are disabled.
> @@ -820,7 +820,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
> intel_set_cpu_fifo_underrun_reporting(dev_priv, crtc->pipe, false);
>
> intel_plane_disable_arm(NULL, plane, crtc_state);
> - intel_crtc_wait_for_next_vblank(crtc);
> + intel_plane_initial_vblank_wait(crtc);
> }
>
> unsigned int
> diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
> index 6789b7f140952..b1675b46e06cb 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
> @@ -14,6 +14,11 @@
> #include "intel_frontbuffer.h"
> #include "intel_plane_initial.h"
>
> +void intel_plane_initial_vblank_wait(struct intel_crtc *crtc)
> +{
> + intel_crtc_wait_for_next_vblank(crtc);
> +}
> +
> static bool
> intel_reuse_initial_plane_obj(struct intel_crtc *this,
> const struct intel_initial_plane_config plane_configs[],
> @@ -442,7 +447,7 @@ void intel_initial_plane_config(struct intel_display *display)
> intel_find_initial_plane_obj(crtc, plane_configs);
>
> if (display->funcs.display->fixup_initial_plane_config(crtc, plane_config))
> - intel_crtc_wait_for_next_vblank(crtc);
> + intel_plane_initial_vblank_wait(crtc);
>
> plane_config_fini(plane_config);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.h b/drivers/gpu/drm/i915/display/intel_plane_initial.h
> index 6c6aa717ed21f..5c315acda2101 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane_initial.h
> +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.h
> @@ -6,8 +6,10 @@
> #ifndef __INTEL_PLANE_INITIAL_H__
> #define __INTEL_PLANE_INITIAL_H__
>
> +struct intel_crtc;
> struct intel_display;
>
> void intel_initial_plane_config(struct intel_display *display);
> +void intel_plane_initial_vblank_wait(struct intel_crtc *crtc);
>
> #endif
> diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> index 2eb9633f163a7..a22e7adfb09d9 100644
> --- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
> +++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> @@ -8,7 +8,9 @@
>
> #include "regs/xe_gtt_defs.h"
> #include "xe_ggtt.h"
> +#include "xe_mmio.h"
>
> +#include "i915_reg.h"
> #include "intel_atomic_plane.h"
> #include "intel_crtc.h"
> #include "intel_display.h"
> @@ -22,6 +24,21 @@
>
> #include <generated/xe_wa_oob.h>
>
> +void intel_plane_initial_vblank_wait(struct intel_crtc *crtc)
> +{
> + /* Early xe has no irq */
> + struct xe_device *xe = to_xe_device(crtc->base.dev);
> + struct xe_reg pipe_frmtmstmp = XE_REG(i915_mmio_reg_offset(PIPE_FRMTMSTMP(crtc->pipe)));
> + u32 timestamp;
> + int ret;
> +
> + timestamp = xe_mmio_read32(xe_root_tile_mmio(xe), pipe_frmtmstmp);
> +
> + ret = xe_mmio_wait32_not(xe_root_tile_mmio(xe), pipe_frmtmstmp, ~0U, timestamp, 40000U, ×tamp, false);
> + if (ret < 0)
> + drm_warn(&xe->drm, "waiting for early vblank failed with %i\n", ret);
Hmm, I do understand your point of not touching the i915 side,
but if this approach is indeed correct, we could benefit from broader
validation on i915 side.
> +}
> +
> static bool
> intel_reuse_initial_plane_obj(struct intel_crtc *this,
> const struct intel_initial_plane_config plane_configs[],
> @@ -303,7 +320,7 @@ void intel_initial_plane_config(struct intel_display *display)
> intel_find_initial_plane_obj(crtc, plane_configs);
>
> if (display->funcs.display->fixup_initial_plane_config(crtc, plane_config))
> - intel_crtc_wait_for_next_vblank(crtc);
> + intel_plane_initial_vblank_wait(crtc);
>
> plane_config_fini(plane_config);
> }
> --
> 2.45.2
>
next prev parent reply other threads:[~2024-12-12 14:33 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-10 8:31 [PATCH 00/11] GuC changes for flicker-free boot Maarten Lankhorst
2024-12-10 8:31 ` [PATCH 01/11] drm/xe/display: Add intel_plane_initial_vblank_wait Maarten Lankhorst
2024-12-12 14:33 ` Rodrigo Vivi [this message]
2024-12-10 8:31 ` [PATCH 02/11] drm/xe: Remove double pageflip Maarten Lankhorst
2024-12-10 8:31 ` [PATCH 03/11] drm/xe: Move suballocator init to after display init Maarten Lankhorst
2024-12-10 8:31 ` [PATCH 04/11] drm/xe: Defer irq init until after xe_display_init_noaccel Maarten Lankhorst
2024-12-10 18:06 ` Levi, Ilia
2024-12-10 8:31 ` [PATCH 05/11] drm/xe/display: Use a single early init call for display Maarten Lankhorst
2024-12-10 8:31 ` [PATCH 06/11] drm/xe: Defer memirq init until needed Maarten Lankhorst
2024-12-10 14:30 ` Lucas De Marchi
2024-12-10 18:02 ` Levi, Ilia
2024-12-10 8:31 ` [PATCH 07/11] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init Maarten Lankhorst
2024-12-12 14:34 ` Rodrigo Vivi
2024-12-10 8:31 ` [PATCH 08/11] drm/xe: Simplify GuC early initialisation Maarten Lankhorst
2024-12-10 15:18 ` Lucas De Marchi
2024-12-10 8:31 ` [PATCH 09/11] drm/xe: Make it possible to read instance0 MCR registers after xe_gt_mcr_init_early Maarten Lankhorst
2024-12-12 14:35 ` Rodrigo Vivi
2024-12-12 22:12 ` Matt Roper
2024-12-10 8:31 ` [PATCH 10/11] drm/xe: Split init of xe_gt_init_hwconfig to xe_gt_init and *_early Maarten Lankhorst
2024-12-10 15:25 ` Lucas De Marchi
2024-12-11 18:52 ` Maarten Lankhorst
2024-12-13 0:36 ` Lucas De Marchi
2024-12-10 8:31 ` [PATCH 11/11] drm/xe: Do not attempt to bootstrap VF in execlists mode Maarten Lankhorst
2024-12-10 15:27 ` Lucas De Marchi
2024-12-10 8:37 ` ✓ CI.Patch_applied: success for GuC changes for flicker-free boot Patchwork
2024-12-10 8:38 ` ✗ CI.checkpatch: warning " Patchwork
2024-12-10 8:39 ` ✓ CI.KUnit: success " Patchwork
2024-12-10 8:57 ` ✓ CI.Build: " Patchwork
2024-12-10 8:59 ` ✓ CI.Hooks: " Patchwork
2024-12-10 9:01 ` ✓ CI.checksparse: " Patchwork
2024-12-10 9:27 ` ✓ Xe.CI.BAT: " Patchwork
2024-12-10 10:20 ` ✗ Xe.CI.Full: failure " Patchwork
2025-01-21 12:10 ` [PATCH 00/11] " Jani Nikula
2025-01-21 12:53 ` Maarten Lankhorst
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z1r0HMyS7wl_iSx3@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=dev@lankhorst.se \
--cc=intel-xe@lists.freedesktop.org \
--cc=ville.syrjala@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.