From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Matthew Auld <matthew.auld@intel.com>
Cc: <intel-xe@lists.freedesktop.org>,
Jonathan Cavitt <jonathan.cavitt@intel.com>,
Matt Roper <matthew.d.roper@intel.com>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
Vinod Govindapillai <vinod.govindapillai@intel.com>,
<intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 2/2] drm/i915: disable fbc due to Wa_16023588340
Date: Wed, 26 Jun 2024 13:26:00 -0400 [thread overview]
Message-ID: <ZnxPKAIPax-95pyk@intel.com> (raw)
In-Reply-To: <70fd9b0e-36a7-4247-914f-ac71c33fca7d@intel.com>
On Wed, Jun 26, 2024 at 05:17:41PM +0100, Matthew Auld wrote:
> On 26/06/2024 16:53, Rodrigo Vivi wrote:
> > On Wed, Jun 19, 2024 at 03:31:27PM +0100, Matthew Auld wrote:
> > > On BMG-G21 we need to disable fbc due to complications around the WA.
> > >
> > > Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> > > Cc: Jonathan Cavitt <jonathan.cavitt@intel.com>
> > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> > > Cc: Vinod Govindapillai <vinod.govindapillai@intel.com>
> > > Cc: intel-gfx@lists.freedesktop.org
> > > ---
> > > drivers/gpu/drm/i915/display/intel_display_wa.h | 8 ++++++++
> > > drivers/gpu/drm/i915/display/intel_fbc.c | 6 ++++++
> > > drivers/gpu/drm/xe/Makefile | 4 +++-
> > > drivers/gpu/drm/xe/display/xe_display_wa.c | 16 ++++++++++++++++
> > > 4 files changed, 33 insertions(+), 1 deletion(-)
> > > create mode 100644 drivers/gpu/drm/xe/display/xe_display_wa.c
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_wa.h b/drivers/gpu/drm/i915/display/intel_display_wa.h
> > > index 63201d09852c..be644ab6ae00 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_wa.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_wa.h
> > > @@ -6,8 +6,16 @@
> > > #ifndef __INTEL_DISPLAY_WA_H__
> > > #define __INTEL_DISPLAY_WA_H__
> > > +#include <linux/types.h>
> > > +
> > > struct drm_i915_private;
> > > void intel_display_wa_apply(struct drm_i915_private *i915);
> > > +#ifdef I915
> > > +static inline bool intel_display_needs_wa_16023588340(struct drm_i915_private *i915) { return false; }
> > > +#else
> > > +bool intel_display_needs_wa_16023588340(struct drm_i915_private *i915);
> > > +#endif
> >
> > please avoid the ifdef I915 in new patches as we are trying to get away from that
> > in favor of a clean separation.
>
> Can you please share an example for the best way to do that here, with clean
> separation?
hmmm... looking more to the patch now...
I don't believe that the WA/RTP rule from Xe should leak into i915 to be honest.
It looks like we are trending to a separate intel-display.ko that shouldn't depend
on driver's declarations like this.
Ideally I would also say that wa in the display code should relly on the 'D'
(display-id) of the GMD-ID. But I see that this 16023588340 is for the 'G' ip.
So, perhaps the display code should inspect the 'G' id from the device inside
display code?
Jani, thoughts on this?
>
> I can add a new .c just for intel_display_needs_wa_16023588340 and move it
> there, which then avoids the ifdef I think, but that then adds an entirely
> new file just for this tiny stub. Unless I can dump it somewhere else?
One temporary workaround that I see without the ifdef I915 would be to
declare this function in i915_drv.h so in xe you add to the compat-i915-headers
instead of creating a new file there.
>
> >
> > > +
> > > #endif
> > > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> > > index 67116c9f1464..8488f82143a4 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> > > @@ -56,6 +56,7 @@
> > > #include "intel_display_device.h"
> > > #include "intel_display_trace.h"
> > > #include "intel_display_types.h"
> > > +#include "intel_display_wa.h"
> > > #include "intel_fbc.h"
> > > #include "intel_fbc_regs.h"
> > > #include "intel_frontbuffer.h"
> > > @@ -1237,6 +1238,11 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,
> > > return 0;
> > > }
> > > + if (intel_display_needs_wa_16023588340(i915)) {
> > > + plane_state->no_fbc_reason = "Wa_16023588340";
> > > + return 0;
> > > + }
> > > +
> > > /* WaFbcTurnOffFbcWhenHyperVisorIsUsed:skl,bxt */
> > > if (i915_vtd_active(i915) && (IS_SKYLAKE(i915) || IS_BROXTON(i915))) {
> > > plane_state->no_fbc_reason = "VT-d enabled";
> > > diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> > > index 0e16e5029081..f7521fd5db4c 100644
> > > --- a/drivers/gpu/drm/xe/Makefile
> > > +++ b/drivers/gpu/drm/xe/Makefile
> > > @@ -34,7 +34,8 @@ uses_generated_oob := \
> > > $(obj)/xe_ring_ops.o \
> > > $(obj)/xe_vm.o \
> > > $(obj)/xe_wa.o \
> > > - $(obj)/xe_ttm_stolen_mgr.o
> > > + $(obj)/xe_ttm_stolen_mgr.o \
> > > + $(obj)/display/xe_display_wa.o \
> > > $(uses_generated_oob): $(generated_oob)
> > > @@ -192,6 +193,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> > > display/xe_display.o \
> > > display/xe_display_misc.o \
> > > display/xe_display_rps.o \
> > > + display/xe_display_wa.o \
> > > display/xe_dsb_buffer.o \
> > > display/xe_fb_pin.o \
> > > display/xe_hdcp_gsc.o \
> > > diff --git a/drivers/gpu/drm/xe/display/xe_display_wa.c b/drivers/gpu/drm/xe/display/xe_display_wa.c
> > > new file mode 100644
> > > index 000000000000..68e3d1959ad6
> > > --- /dev/null
> > > +++ b/drivers/gpu/drm/xe/display/xe_display_wa.c
> > > @@ -0,0 +1,16 @@
> > > +// SPDX-License-Identifier: MIT
> > > +/*
> > > + * Copyright © 2024 Intel Corporation
> > > + */
> > > +
> > > +#include "intel_display_wa.h"
> > > +
> > > +#include "xe_device.h"
> > > +#include "xe_wa.h"
> > > +
> > > +#include <generated/xe_wa_oob.h>
> > > +
> > > +bool intel_display_needs_wa_16023588340(struct drm_i915_private *i915)
> > > +{
> > > + return XE_WA(xe_root_mmio_gt(i915), 16023588340);
> > > +}
> > > --
> > > 2.45.1
> > >
next prev parent reply other threads:[~2024-06-26 17:26 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-19 14:31 [PATCH 1/2] drm/xe/bmg: implement Wa_16023588340 Matthew Auld
2024-06-19 14:31 ` [PATCH 2/2] drm/i915: disable fbc due to Wa_16023588340 Matthew Auld
2024-06-20 22:20 ` Cavitt, Jonathan
2024-06-25 8:09 ` Matthew Auld
2024-06-26 15:14 ` Matthew Auld
2024-06-26 15:55 ` Rodrigo Vivi
2024-06-26 16:18 ` Matthew Auld
2024-06-26 15:53 ` Rodrigo Vivi
2024-06-26 16:17 ` Matthew Auld
2024-06-26 17:26 ` Rodrigo Vivi [this message]
2024-06-26 17:42 ` Matt Roper
2024-06-28 5:30 ` Lucas De Marchi
2024-06-28 18:36 ` Rodrigo Vivi
2024-06-28 20:23 ` Lucas De Marchi
2024-07-02 10:24 ` Jani Nikula
2024-07-02 10:18 ` Jani Nikula
2024-06-19 14:37 ` ✓ CI.Patch_applied: success for series starting with [1/2] drm/xe/bmg: implement Wa_16023588340 Patchwork
2024-06-19 14:37 ` ✗ CI.checkpatch: warning " Patchwork
2024-06-19 14:38 ` ✓ CI.KUnit: success " Patchwork
2024-06-19 14:50 ` ✓ CI.Build: " Patchwork
2024-06-19 14:52 ` ✗ CI.Hooks: failure " Patchwork
2024-06-19 14:53 ` ✗ CI.checksparse: warning " Patchwork
2024-06-19 15:18 ` ✓ CI.BAT: success " Patchwork
2024-06-19 20:20 ` ✓ CI.FULL: " Patchwork
2024-06-20 22:18 ` [PATCH 1/2] " Cavitt, Jonathan
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=ZnxPKAIPax-95pyk@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jonathan.cavitt@intel.com \
--cc=lucas.demarchi@intel.com \
--cc=matthew.auld@intel.com \
--cc=matthew.d.roper@intel.com \
--cc=vinod.govindapillai@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.