From: Antonino Maniscalco <antomani103@gmail.com>
To: Rob Clark <robdclark@gmail.com>
Cc: Akhil P Oommen <quic_akhilpo@quicinc.com>,
Connor Abbott <cwabbott0@gmail.com>, Sean Paul <sean@poorly.run>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Abhinav Kumar <quic_abhinavk@quicinc.com>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Marijn Suijten <marijn.suijten@somainline.org>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org,
Sharat Masetty <smasetty@codeaurora.org>
Subject: Re: [PATCH 4/7] drm/msm/A6xx: Implement preemption for A7XX targets
Date: Wed, 28 Aug 2024 00:56:29 +0200 [thread overview]
Message-ID: <57064da3-190c-4554-b085-d56daf979933@gmail.com> (raw)
In-Reply-To: <CAF6AEGuASw0YO8b0X24-iq1pqTnBEpr0Tm3Scmt4-T+HeCMY_A@mail.gmail.com>
On 8/27/24 11:07 PM, Rob Clark wrote:
> On Tue, Aug 27, 2024 at 1:25 PM Antonino Maniscalco
> <antomani103@gmail.com> wrote:
>>
>> On 8/27/24 9:48 PM, Akhil P Oommen wrote:
>>> On Fri, Aug 23, 2024 at 10:23:48AM +0100, Connor Abbott wrote:
>>>> On Fri, Aug 23, 2024 at 10:21 AM Connor Abbott <cwabbott0@gmail.com> wrote:
>>>>>
>>>>> On Thu, Aug 22, 2024 at 9:06 PM Akhil P Oommen <quic_akhilpo@quicinc.com> wrote:
>>>>>>
>>>>>> On Wed, Aug 21, 2024 at 05:02:56PM +0100, Connor Abbott wrote:
>>>>>>> On Mon, Aug 19, 2024 at 9:09 PM Akhil P Oommen <quic_akhilpo@quicinc.com> wrote:
>>>>>>>>
>>>>>>>> On Thu, Aug 15, 2024 at 08:26:14PM +0200, Antonino Maniscalco wrote:
>>>>>>>>> This patch implements preemption feature for A6xx targets, this allows
>>>>>>>>> the GPU to switch to a higher priority ringbuffer if one is ready. A6XX
>>>>>>>>> hardware as such supports multiple levels of preemption granularities,
>>>>>>>>> ranging from coarse grained(ringbuffer level) to a more fine grained
>>>>>>>>> such as draw-call level or a bin boundary level preemption. This patch
>>>>>>>>> enables the basic preemption level, with more fine grained preemption
>>>>>>>>> support to follow.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
>>>>>>>>> Signed-off-by: Antonino Maniscalco <antomani103@gmail.com>
>>>>>>>>> ---
>>>>>>>>
>>>>>>>> No postamble packets which resets perfcounters? It is necessary. Also, I
>>>>>>>> think we should disable preemption during profiling like we disable slumber.
>>>>>>>>
>>>>>>>> -Akhil.
>>>>>>>
>>>>>>> I don't see anything in kgsl which disables preemption during
>>>>>>> profiling. It disables resetting perfcounters when doing system-wide
>>>>>>> profiling, like freedreno, and in that case I assume preempting is
>>>>>>> fine because the system profiler has a complete view of everything and
>>>>>>> should "see" preemptions through the traces. For something like
>>>>>>> VK_KHR_performance_query I suppose we'd want to disable preemption
>>>>>>> because we disable saving/restoring perf counters, but that has to
>>>>>>> happen in userspace because the kernel doesn't know what userspace
>>>>>>> does.
>>>>>>>
>>>>>>
>>>>>> KGSL does some sort of arbitration of perfcounter configurations and
>>>>>> adds the select/enablement reg configuration as part of dynamic
>>>>>> power up register list which we are not doing here. Is this something
>>>>>> you are taking care of from userspace via preamble?
>>>>>>
>>>>>> -Akhil
>>>>>
>>>>> I don't think we have to take care of that in userspace, because Mesa
>>>>> will always configure the counter registers before reading them in the
>>>>> same submission, and if it gets preempted in the meantime then we're
>>>>> toast anyways (due to not saving/restoring perf counters). kgsl sets
>>>>> them from userspace, which is why it has to do something to set them
>>>>
>>>> Sorry, should be "kgsl sets them from the kernel".
>>>>
>>>>> after IFPC slumber or a context switch when the HW state is gone.
>>>>> Also, because the upstream approach doesn't play nicely with system
>>>>> profilers like perfetto, VK_KHR_performance_query is hidden by default
>>>>> behind a debug flag in turnip. So there's already an element of "this
>>>>> is unsupported, you have to know what you're doing to use it."
>>>
>>> But when you have composition on GPU enabled, there will be very frequent
>>> preemption. And I don't know how usable profiling tools will be in that
>>> case unless you disable preemption with a Mesa debug flag. But for that
>>> to work, all existing submitqueues should be destroyed and recreated.
>>>
>>> So I was thinking that we can use the sysprof propertry to force L0
>>> preemption from kernel.
>>>
>>> -Akhil.
>>>
>>
>> Right but when using a system profiler I imagined the expectation would
>> be to be able to understand how applications and compositor interact. An
>> use case could be measuring latency and understanding what contributes
>> to it. That is actually the main reason I added traces for preemption.
>> Disabling preemption would make it less useful for this type of
>> analysis. Did you have an use case in mind for a system profiler that
>> would benefit from disabling preemption and that is not covered by
>> VK_KHR_performance_query (or equivalent GL ext)?
>
> I would think that we want to generate an event, with GPU timestamp
> (ie. RB_DONE) and which ring we are switching to, so that perfetto/etc
> could display multiple GPU timelines and where the switch from one to
> the other happens.
>
> I'm a bit curious how this is handled on android, with AGI/etc.. I
> don't see any support in perfetto for this.
>
> BR,
> -R
>
>> Best regards,
>> --
>> Antonino Maniscalco <antomani103@gmail.com>
>>
Looking at KGSL they seem to use ftrace and I don't see it doing
anything to get a timestamp from some GPU timer, really not sure how
that would be put in a gpu timeline.
Best regards,
--
Antonino Maniscalco <antomani103@gmail.com>
next prev parent reply other threads:[~2024-08-27 22:56 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-15 18:26 [PATCH 0/7] Preemption support for A7XX Antonino Maniscalco
2024-08-15 18:26 ` [PATCH 1/7] drm/msm: Fix bv_fence being used as bv_rptr Antonino Maniscalco
2024-08-19 19:59 ` Akhil P Oommen
2024-08-20 10:09 ` Konrad Dybcio
2024-08-20 10:45 ` Connor Abbott
2024-08-20 11:25 ` Konrad Dybcio
2024-08-15 18:26 ` [PATCH 2/7] drm/msm: Add submitqueue setup and close Antonino Maniscalco
2024-08-19 20:00 ` Akhil P Oommen
2024-08-20 10:10 ` Konrad Dybcio
2024-08-20 13:49 ` Antonino Maniscalco
2024-08-15 18:26 ` [PATCH 3/7] drm/msm: Add a `preempt_record_size` field Antonino Maniscalco
2024-08-19 20:03 ` Akhil P Oommen
2024-08-15 18:26 ` [PATCH 4/7] drm/msm/A6xx: Implement preemption for A7XX targets Antonino Maniscalco
2024-08-16 12:23 ` kernel test robot
2024-08-18 0:34 ` kernel test robot
2024-08-19 20:08 ` Akhil P Oommen
2024-08-21 14:34 ` Antonino Maniscalco
2024-08-22 19:23 ` Akhil P Oommen
2024-08-23 0:19 ` Antonino Maniscalco
2024-08-21 16:02 ` Connor Abbott
2024-08-22 20:05 ` Akhil P Oommen
2024-08-23 9:21 ` Connor Abbott
2024-08-23 9:23 ` Connor Abbott
2024-08-27 19:48 ` Akhil P Oommen
2024-08-27 20:25 ` Antonino Maniscalco
2024-08-27 21:07 ` Rob Clark
2024-08-27 22:56 ` Antonino Maniscalco [this message]
2024-08-28 13:42 ` Rob Clark
2024-08-28 13:46 ` Rob Clark
2024-08-28 19:23 ` Akhil P Oommen
2024-08-28 19:46 ` Antonino Maniscalco
2024-08-15 18:26 ` [PATCH 5/7] drm/msm/A6xx: Add traces for preemption Antonino Maniscalco
2024-08-19 20:11 ` Akhil P Oommen
2024-08-15 18:26 ` [PATCH 6/7] drm/msm/A6XX: Add a flag to allow preemption to submitqueue_create Antonino Maniscalco
2024-08-19 20:31 ` Akhil P Oommen
2024-08-20 10:48 ` Connor Abbott
2024-08-22 19:21 ` Akhil P Oommen
2024-08-23 0:01 ` Antonino Maniscalco
2024-08-20 10:16 ` Konrad Dybcio
2024-08-20 10:18 ` Konrad Dybcio
2024-08-15 18:26 ` [PATCH 7/7] drm/msm/A6xx: Enable preemption for A7xx targets Antonino Maniscalco
2024-08-19 20:41 ` Akhil P Oommen
2024-08-16 17:47 ` [PATCH 0/7] Preemption support for A7XX Rob Clark
2024-08-16 23:42 ` Antonino Maniscalco
2024-08-23 8:22 ` neil.armstrong
2024-08-23 9:54 ` Connor Abbott
2024-08-23 10:44 ` neil.armstrong
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=57064da3-190c-4554-b085-d56daf979933@gmail.com \
--to=antomani103@gmail.com \
--cc=airlied@gmail.com \
--cc=cwabbott0@gmail.com \
--cc=daniel@ffwll.ch \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=konrad.dybcio@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marijn.suijten@somainline.org \
--cc=mripard@kernel.org \
--cc=quic_abhinavk@quicinc.com \
--cc=quic_akhilpo@quicinc.com \
--cc=robdclark@gmail.com \
--cc=sean@poorly.run \
--cc=smasetty@codeaurora.org \
--cc=tzimmermann@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox