[PATCH] drm/i915/xe3lpd: Power request asserting/deasserting

Kahola, Mika mika.kahola at intel.com
Mon Oct 28 14:56:54 UTC 2024



> -----Original Message-----
> From: Jadav, Raag <raag.jadav at intel.com>
> Sent: Monday, 28 October 2024 16.43
> To: Sousa, Gustavo <gustavo.sousa at intel.com>
> Cc: Kahola, Mika <mika.kahola at intel.com>; intel-gfx at lists.freedesktop.org
> Subject: Re: [PATCH] drm/i915/xe3lpd: Power request asserting/deasserting
> 
> On Mon, Oct 28, 2024 at 11:21:59AM -0300, Gustavo Sousa wrote:
> > Quoting Raag Jadav (2024-10-28 11:02:02-03:00)
> > >On Mon, Oct 28, 2024 at 02:58:35PM +0200, Mika Kahola wrote:
> > >
> > >...
> > >
> > >> +static bool wa_tcss_power_request_assert(struct drm_i915_private *i915,
> > >> +                                         bool enable) {
> > >> +        /*
> > >> +         * Limit to PTL only
> > >> +         * TODO: Add check for PICA IP and use that instead limiting WA for
> > >> +         * platform
> > >> +         */
> > >> +        if (DISPLAY_VER(i915) != 30)
> > >
> > >Not sure if hardcoding constants is the best of the approach, but I
> > >found similar patterns in other places, so upto you.
> >
> > Using version number directly makes it easier to concurrently merge
> > independent patches for some display IP without having to wait some
> > #define to become available. That comes with the cost of having to
> > remember the version numbers (or checking somewhere) though.
> 
> Agree. Although usually we have codenames for this, which is easier to track or
> grep.
> 
> > >
> > >> +                return true;
> > >> +
> > >> +        /* check if mailbox is running busy */
> > >> +        if (intel_de_wait_for_clear(i915, TCSS_DISP_MAILBOX_IN_CMD,
> > >> +                                    TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY, 10)) {
> > >> +                drm_dbg_kms(&i915->drm,
> > >> +                            "Power request assert WA timeout
> > >> + waiting for TCSS mailbox run/busy bit to clear\n");
> > >
> > >Is timeout considered a failure? Not sure _dbg is the right helper if it.
> >
> > I believe it is okay to have _dbg here, because the returned value is
> > checked and a warning is raised.
> 
> Which makes the logging redundant...
> 
> > Althought we could make this more
> > self-contained by jumping an error path inside this function.
> 
> ... but if we'd still want it I think this will be best.
> 
> >
> > >
> > >> +                return false;
> > >> +        }
> > >> +
> > >> +        if (enable)
> > >> +                intel_de_write(i915, TCSS_DISP_MAILBOX_IN_DATA, 1);
> > >> +        else
> > >> +                intel_de_write(i915, TCSS_DISP_MAILBOX_IN_DATA,
> > >> + 0);
> > >
> > >Since enable it already a bool, this can be
> > >
> > >        intel_de_write(i915, TCSS_DISP_MAILBOX_IN_DATA, enable);
> > >
> > >> +
> > >> +        intel_de_write(i915, TCSS_DISP_MAILBOX_IN_CMD,
> > >> +                       TCSS_DISP_MAILBOX_IN_CMD_RUN_BUSY |
> > >> +                       TCSS_DISP_MAILBOX_IN_CMD_DATA(0x1));
> > >> +
> > >> +        /* wait to clear mailbox running busy bit before
> > >> + continuing */
> > >
> > >Any specific reason to do this on exit?
> > >I'm assuming anyone trying to use the mailbox further down would be
> > >doing this anyway since it's a prerequisite, right?
> >
> > This wait is part of the "DE to IOM Mailbox" flow. I believe this is
> > necessary and the workaround might even not be effective without it.
> 
> My understanding is that the wait is for the availability of mailbox which is not
> equivalent to command success, but I could be wrong.

I think these two are related. We could consider command to be successful if mailbox is free to use within a certain timeframe. Otherwise, I would consider that there might be something wrong with the communication or command hasn't been successfully executed.

-Mika-
> 
> Raag


More information about the Intel-gfx mailing list