After a more comprehensive offline discussion with Daniele and Rodrigo, design 
direction was made to go with Option2
where we elevate pxp to a global subsystem and within it it establish a pointer 
to the correct gt for pxp-controls. This
also reflects the current HW architectures where the PXP feature (when viewed 
as a service for contexts and buffers) is
global to all subsystems including any workload on any tile, despite its single 
control-knobs being only in the media
tile (because PXP controls needs to be global to the GPU to avoid any races).

This would mean we move 'struct intel_pxp' to be under i915 so that all 
subsystems that need to call into PXP would now
pass in i915 as its parameter. PXP internally would have a pointer to the 
correct GT (media-tile for MTL and gt0 for
prior).

It would also mean that certain code will still look a little kludgy or needs 
attention:
 - power-related operations like init/fini and suspend/resume would now need to 
called either before or after all-gt
equivalents to ensure proper flow.
 - KCR IRQ will although being a gt level IRQ will now require passing i915 
into the pxp subsystem.

*NOTE: above list, even if i missed any, would still be nowhere near the amount 
of other external facing interfaces that
would be called by global subsystems that would now look clean with i915->pxp 
as its param.

...alan


On Tue, 2022-11-22 at 10:52 -0800, Alan Previn Teres Alexis wrote:
> 
> On Tue, 2022-11-22 at 12:57 -0500, Vivi, Rodrigo wrote:
> > 
> > 
> [Alan:snip]
> 
> > As I had told I don't have a strong preference, as long as it keep clean
> > and without these many helpers of something "on_gt"...
> > 
> > If this stays inside the gt, just make sure that you call for all the gts,
> > but then you inside the functions you can skip if pxp not enabled... without
> > asking if enabled on_gt... 
> > 
> I think we have here conflicting requests. The "consumers" of pxp feature are 
> gem-execbuf, gem-context, gem-create (and
> even display, for checking). Are we okay with making these callers be aware 
> of "if mtl, ensure i call intel_pxp_foo with
> the media-tile's pxp, agnostic to the request, context or buffer i am dealing 
> with now". If you are okay with this, then
> we can make this stay inside gt without "enabled on_gt" functions. But if 
> dont want to polute such low level backend
> awareness into those upper layers, we need them to call something more global 
> like "intel_gpu_has_pxp_enabled" or
> "intel_gpu_has_pxp_started" at the least with an i915 param. So that these 
> callers dont need to worry about it. Or
> intel_pxp_enabled has to internally check with gt we are being passed with 
> and verify we are on the correct gt to - but
> you said you dont want to have an "enabled on_gt" inside the pxp folder since 
> pxp is a subset of gt. The only thing i
> can think of is just a rename  - i.e. instead of "intel_pxp_enabled_on_gt", 
> have a "intel_gpu_has_pxp_enabled(i915)" -
> but it would reside in the pxp folder. Would this work?
> 
> > > 
> > > ...alan
> 

Reply via email to