From: Boris Brezillon <boris.brezillon@collabora.com>
To: Ketil Johnsen <ketil.johnsen@arm.com>
Cc: "Neil Armstrong" <neil.armstrong@linaro.org>,
"Nicolas Boichat" <drinkcat@chromium.org>,
"Daniel Stone" <daniels@collabora.com>,
"Liviu Dudau" <Liviu.Dudau@arm.com>,
dri-devel@lists.freedesktop.org,
"Steven Price" <steven.price@arm.com>,
"Clément Péron" <peron.clem@gmail.com>,
kernel@collabora.com, "Robin Murphy" <robin.murphy@arm.com>,
"Faith Ekstrand" <faith.ekstrand@collabora.com>,
"Marty E . Plummer" <hanetzer@startmail.com>
Subject: Re: [PATCH v3 10/14] drm/panthor: Add the scheduler logical block
Date: Mon, 15 Jan 2024 14:11:15 +0100 [thread overview]
Message-ID: <20240115141115.0b9f4da6@collabora.com> (raw)
In-Reply-To: <a185918b-19d0-40c3-8cef-92a91196d09e@arm.com>
On Wed, 20 Dec 2023 20:59:43 +0100
Ketil Johnsen <ketil.johnsen@arm.com> wrote:
> > +/**
> > + * cs_slot_sync_queue_state_locked() - Synchronize the queue slot priority
> > + * @ptdev: Device.
> > + * @csg_id: Group slot.
> > + * @cs_id: Queue slot.
> > + *
> > + * Queue state is updated on group suspend or STATUS_UPDATE event.
> > + */
> > +static void
> > +cs_slot_sync_queue_state_locked(struct panthor_device *ptdev, u32 csg_id, u32 cs_id)
> > +{
> > + struct panthor_group *group = ptdev->scheduler->csg_slots[csg_id].group;
> > + struct panthor_queue *queue = group->queues[cs_id];
> > + struct panthor_fw_cs_iface *cs_iface =
> > + panthor_fw_get_cs_iface(group->ptdev, csg_id, cs_id);
> > +
> > + u32 status_wait_cond;
> > +
> > + switch (cs_iface->output->status_blocked_reason) {
> > + case CS_STATUS_BLOCKED_REASON_UNBLOCKED:
> > + if (queue->iface.input->insert == queue->iface.output->extract &&
> > + cs_iface->output->status_scoreboards == 0)
> > + group->idle_queues |= BIT(cs_id);
> > + break;
> > +
> > + case CS_STATUS_BLOCKED_REASON_SYNC_WAIT:
> > + drm_WARN_ON(&ptdev->base, !list_empty(&group->wait_node));
>
> I think we should remove this drm_WARN_ON(). With my user submission
> experiments, I keep hitting this warning because I'm a bit slow to
> signal a Mali sync object. In other words; I'm keeping a stream blocked
> for a while.
>
> It is quite common to get two rapid job IRQs, e.g. one for a global
> event, and one for a particular CSG event. Depending on timing of the
> scheduled work to deal with the IRQs, I quite often end up with two
> tick_work() being scheduled and executed as a result of this. Both of
> these will see the same stream as CS_STATUS_BLOCKED_REASON_UNBLOCKED,
> and hence the second will trigger the drm_WARN_ON(), as the first run
> already added the group to the waiting list.
>
> I'm pretty sure we can hit this drm_WARN_ON() when user space starts
> making use of multiple streams pr group as well, since two or more
> streams for the same group could both be
> CS_STATUS_BLOCKED_REASON_SYNC_WAIT, thus running into the same issue.
It makes total sense, I'll drop the WARN_ON().
>
> > + list_move_tail(&group->wait_node, &group->ptdev->scheduler->groups.waiting);
> > + group->blocked_queues |= BIT(cs_id);
> > + queue->syncwait.gpu_va = cs_iface->output->status_wait_sync_ptr;
> > + queue->syncwait.ref = cs_iface->output->status_wait_sync_value;
> > + status_wait_cond = cs_iface->output->status_wait & CS_STATUS_WAIT_SYNC_COND_MASK;
> > + queue->syncwait.gt = status_wait_cond == CS_STATUS_WAIT_SYNC_COND_GT;
> > + if (cs_iface->output->status_wait & CS_STATUS_WAIT_SYNC_64B) {
> > + u64 sync_val_hi = cs_iface->output->status_wait_sync_value_hi;
> > +
> > + queue->syncwait.sync64 = true;
> > + queue->syncwait.ref |= sync_val_hi << 32;
> > + } else {
> > + queue->syncwait.sync64 = false;
> > + }
> > + break;
> > +
> > + default:
> > + /* Other reasons are not blocking. Consider the queue as runnable
> > + * in those cases.
> > + */
> > + break;
> > + }
> > +}
next prev parent reply other threads:[~2024-01-15 13:11 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-04 17:32 [PATCH v3 00/14] drm: Add a driver for CSF-based Mali GPUs Boris Brezillon
2023-12-04 17:32 ` [PATCH v3 01/14] drm/panthor: Add uAPI Boris Brezillon
2023-12-06 16:17 ` Steven Price
2023-12-18 13:20 ` Chris Diamand
2024-01-15 11:18 ` Boris Brezillon
2023-12-04 17:32 ` [PATCH v3 02/14] drm/panthor: Add GPU register definitions Boris Brezillon
2023-12-06 16:23 ` Steven Price
2023-12-04 17:32 ` [PATCH v3 03/14] drm/panthor: Add the device logical block Boris Brezillon
2023-12-06 16:55 ` Steven Price
2023-12-07 8:12 ` Boris Brezillon
2023-12-07 8:56 ` Boris Brezillon
2023-12-07 10:23 ` Steven Price
2023-12-07 10:49 ` Boris Brezillon
2023-12-07 11:11 ` [EXTERNAL] " Donald Robson
2023-12-22 13:26 ` Liviu Dudau
2023-12-22 14:04 ` Boris Brezillon
2023-12-04 17:32 ` [PATCH v3 04/14] drm/panthor: Add the GPU " Boris Brezillon
2023-12-07 16:05 ` Steven Price
2023-12-04 17:32 ` [PATCH v3 05/14] drm/panthor: Add GEM " Boris Brezillon
2023-12-07 16:38 ` Steven Price
2024-01-15 10:29 ` Boris Brezillon
2023-12-04 17:32 ` [PATCH v3 06/14] drm/panthor: Add the devfreq " Boris Brezillon
2023-12-05 9:42 ` Clément Péron
2023-12-04 17:33 ` [PATCH v3 07/14] drm/panthor: Add the MMU/VM " Boris Brezillon
2023-12-08 14:28 ` Steven Price
2024-01-15 11:04 ` Boris Brezillon
2024-01-15 17:31 ` Boris Brezillon
2024-01-15 17:38 ` Boris Brezillon
2024-01-15 17:41 ` Boris Brezillon
2024-01-15 18:09 ` Boris Brezillon
2023-12-04 17:33 ` [PATCH v3 08/14] drm/panthor: Add the FW " Boris Brezillon
2023-12-08 15:39 ` Steven Price
2023-12-18 21:25 ` Chris Diamand
2024-01-15 11:37 ` Boris Brezillon
2024-01-22 16:34 ` Boris Brezillon
2024-01-22 21:14 ` Chris Diamand
2023-12-20 15:12 ` Liviu Dudau
2024-01-15 12:56 ` Boris Brezillon
2023-12-04 17:33 ` [PATCH v3 09/14] drm/panthor: Add the heap " Boris Brezillon
2023-12-08 16:27 ` Steven Price
2024-01-15 11:15 ` Boris Brezillon
2023-12-04 17:33 ` [PATCH v3 10/14] drm/panthor: Add the scheduler " Boris Brezillon
2023-12-11 16:27 ` Steven Price
2024-01-15 13:03 ` Boris Brezillon
2023-12-19 11:50 ` Ketil Johnsen
2024-01-15 13:05 ` Boris Brezillon
2023-12-20 19:59 ` Ketil Johnsen
2024-01-15 13:11 ` Boris Brezillon [this message]
2023-12-04 17:33 ` [PATCH v3 11/14] drm/panthor: Add the driver frontend block Boris Brezillon
2023-12-13 11:47 ` Steven Price
2023-12-20 16:24 ` Liviu Dudau
2024-01-15 12:59 ` Boris Brezillon
2023-12-04 17:33 ` [PATCH v3 12/14] drm/panthor: Allow driver compilation Boris Brezillon
2023-12-05 4:39 ` kernel test robot
2023-12-05 8:06 ` Boris Brezillon
2023-12-05 14:38 ` kernel test robot
2023-12-05 23:34 ` kernel test robot
2023-12-13 13:18 ` Steven Price
2023-12-04 17:33 ` [PATCH v3 13/14] dt-bindings: gpu: mali-valhall-csf: Add support for Arm Mali CSF GPUs Boris Brezillon
2023-12-04 17:33 ` Boris Brezillon
2023-12-04 19:29 ` Rob Herring
2023-12-04 19:29 ` Rob Herring
2023-12-05 8:46 ` Boris Brezillon
2023-12-05 8:46 ` Boris Brezillon
2023-12-05 6:24 ` kernel test robot
2023-12-05 20:48 ` Rob Herring
2023-12-05 20:48 ` Rob Herring
2023-12-06 10:59 ` Liviu Dudau
2023-12-06 10:59 ` Liviu Dudau
2024-01-22 16:37 ` Boris Brezillon
2024-01-22 16:37 ` Boris Brezillon
2023-12-04 17:33 ` [PATCH v3 14/14] drm/panthor: Add an entry to MAINTAINERS Boris Brezillon
2023-12-13 13:51 ` Steven Price
2023-12-04 18:09 ` [PATCH v3 00/14] drm: Add a driver for CSF-based Mali GPUs Clément Péron
2023-12-05 8:04 ` Boris Brezillon
2023-12-05 8:48 ` Boris Brezillon
2023-12-06 15:47 ` Steven Price
2023-12-06 16:28 ` Boris Brezillon
2023-12-10 4:58 ` Tatsuyuki Ishi
2023-12-11 8:52 ` Boris Brezillon
2023-12-11 18:18 ` Faith Ekstrand
2024-01-15 14:18 ` Boris Brezillon
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=20240115141115.0b9f4da6@collabora.com \
--to=boris.brezillon@collabora.com \
--cc=Liviu.Dudau@arm.com \
--cc=daniels@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=drinkcat@chromium.org \
--cc=faith.ekstrand@collabora.com \
--cc=hanetzer@startmail.com \
--cc=kernel@collabora.com \
--cc=ketil.johnsen@arm.com \
--cc=neil.armstrong@linaro.org \
--cc=peron.clem@gmail.com \
--cc=robin.murphy@arm.com \
--cc=steven.price@arm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.