[Intel-xe] [PATCH 16/21] drm/xe/oa: Make xe_oa_timestamp_frequency per gt
Rodrigo Vivi
rodrigo.vivi at intel.com
Fri Sep 22 19:10:09 UTC 2023
On Thu, Sep 21, 2023 at 02:58:14PM -0700, Dixit, Ashutosh wrote:
> On Thu, 21 Sep 2023 13:45:54 -0700, Rodrigo Vivi wrote:
> >
>
> Hi Rodrigo,
>
> > On Tue, Sep 19, 2023 at 09:10:44AM -0700, Ashutosh Dixit wrote:
> > > Clock freq's can be different for different gt's.
> > >
> > > Suggested-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
> > > Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_oa.c | 44 +++++++++++++++++------------------
> > > drivers/gpu/drm/xe/xe_oa.h | 2 +-
> > > drivers/gpu/drm/xe/xe_query.c | 2 +-
> > > 3 files changed, 24 insertions(+), 24 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> > > index d49debe732bbd..8648652e05aa5 100644
> > > --- a/drivers/gpu/drm/xe/xe_oa.c
> > > +++ b/drivers/gpu/drm/xe/xe_oa.c
> > > @@ -1496,7 +1496,7 @@ xe_oa_stream_open_ioctl_locked(struct xe_oa *oa,
> > > * platforms OA unit ignores the CTC_SHIFT and the 2 timestamps differ. In such
> > > * cases, return the adjusted CS timestamp frequency to the user.
> > > */
> > > -u32 xe_oa_timestamp_frequency(struct xe_device *xe)
> > > +u32 xe_oa_timestamp_frequency(struct xe_gt *gt)
> > > {
> > > u32 reg, shift;
> > >
> > > @@ -1505,26 +1505,26 @@ u32 xe_oa_timestamp_frequency(struct xe_device *xe)
> > > * Wa_14015568240:pvc
> > > * Wa_14015846243:mtl
> > > */
> > > - switch (xe->info.platform) {
> > > + switch (gt->tile->xe->info.platform) {
> > > case XE_DG2:
> > > case XE_PVC:
> > > case XE_METEORLAKE:
> > > - xe_device_mem_access_get(xe);
> > > - reg = xe_mmio_read32(xe_root_mmio_gt(xe), RPM_CONFIG0);
> > > - xe_device_mem_access_put(xe);
> > > + xe_device_mem_access_get(gt->tile->xe);
> > > + reg = xe_mmio_read32(gt, RPM_CONFIG0);
> > > + xe_device_mem_access_put(gt->tile->xe);
> > >
> > > shift = REG_FIELD_GET(RPM_CONFIG0_CTC_SHIFT_PARAMETER_MASK, reg);
> > > - return xe_root_mmio_gt(xe)->info.clock_freq << (3 - shift);
> > > + return gt->info.clock_freq << (3 - shift);
> > >
> > > default:
> > > - return xe_root_mmio_gt(xe)->info.clock_freq;
> > > + return gt->info.clock_freq;
> > > }
> > > }
>
> /snip/
>
> > > diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
> > > index 4a3a9c11e8cc4..ad280bac9eed4 100644
> > > --- a/drivers/gpu/drm/xe/xe_query.c
> > > +++ b/drivers/gpu/drm/xe/xe_query.c
> > > @@ -244,7 +244,7 @@ static int query_gts(struct xe_device *xe, struct drm_xe_device_query *query)
> > > gts->gts[id].type = XE_QUERY_GT_TYPE_MAIN;
> > > gts->gts[id].instance = id;
> > > gts->gts[id].clock_freq = gt->info.clock_freq;
> >
> > first look it here ^
> >
> > > - gts->gts[id].oa_timestamp_freq = xe_oa_timestamp_frequency(xe);
> > > + gts->gts[id].oa_timestamp_freq = xe_oa_timestamp_frequency(gt);
> >
> > Then please notice that we are trying to kill the duplications on the uapi [1]
> > and now notice that this series is adding yet another duplication:
> >
> > +u32 xe_oa_timestamp_frequency(struct xe_gt *gt)
> > + return gt->info.clock_freq;
> > (copied from above)
> >
> > [1] - https://lore.kernel.org/all/20230920192940.135004-20-rodrigo.vivi@intel.com/
>
> Well it's duplicated on some platforms but not on others.
Oh, I see now. Thanks for the explanation.
> If it helps,
> there is another proposal which will move all OA related information
> (including oa_timestamp_freq) into a separate drm_xe_query_oa_info struct
> (so out of the current uapi struct's into drm_xe_query_oa_info). See:
>
> https://patchwork.freedesktop.org/patch/558367/?series=121084&rev=6
yeap, the individual query looks good.
>
> Thanks.
> --
> Ashutosh
More information about the Intel-xe
mailing list