On 2021-12-14 09:36:52 [-0500], Steven Rostedt wrote:
> Another way around this that I can see is if the data for the tracepoints
> can fit on the stack and add wrappers around the tracepoints. For example,
> looking at the first tracepoint in i915_trace.h:
…

Nice.

> We could modify this to be:
…
> static inline void do_trace_intel_pipe(struct intel_crtc *crtc)
> {
>       u32 frame[3];
>       u32 scanline[3];
>       enum pipe pipe;
> 
>       if (!trace_intel_pipe_enable_enabled())
>               return;
> 
>       struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
>       struct intel_crtc *it__;
>       for_each_intel_crtc(&dev_priv->drm, it__) {
>               frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
>               scanline[it__->pipe] = intel_get_crtc_scanline(it__);
>       }
> 
>       trace_intel_pipe(frame, scanline, crtc->pipe);
> }
…

> Then have the code call do_trace_intel_pipe() instead of trace_intel_pipe()
> and this should fix the issue with preempt rt.

Is this is something, that the i915 devs would accept?

> -- Steve

Sebastian

Reply via email to