From: Philipp Stanner <phasta@mailbox.org>
To: "Tvrtko Ursulin" <tvrtko.ursulin@igalia.com>,
"Philipp Stanner" <phasta@kernel.org>, "Min Ma" <min.ma@amd.com>,
"Lizhi Hou" <lizhi.hou@amd.com>,
"Oded Gabbay" <ogabbay@kernel.org>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"Xinhui Pan" <Xinhui.Pan@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Russell King" <linux+etnaviv@armlinux.org.uk>,
"Christian Gmeiner" <christian.gmeiner@gmail.com>,
"Frank Binns" <frank.binns@imgtec.com>,
"Matt Coster" <matt.coster@imgtec.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Qiang Yu" <yuq825@gmail.com>, "Rob Clark" <robdclark@gmail.com>,
"Sean Paul" <sean@poorly.run>,
"Konrad Dybcio" <konradybcio@kernel.org>,
"Abhinav Kumar" <quic_abhinavk@quicinc.com>,
"Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>,
"Marijn Suijten" <marijn.suijten@somainline.org>,
"Karol Herbst" <kherbst@redhat.com>,
"Lyude Paul" <lyude@redhat.com>,
"Danilo Krummrich" <dakr@redhat.com>,
"Boris Brezillon" <boris.brezillon@collabora.com>,
"Rob Herring" <robh@kernel.org>,
"Steven Price" <steven.price@arm.com>,
"Liviu Dudau" <liviu.dudau@arm.com>,
"Matthew Brost" <matthew.brost@intel.com>,
"Melissa Wen" <mwen@igalia.com>,
"Maíra Canal" <mcanal@igalia.com>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Sunil Khatri" <sunil.khatri@amd.com>,
"Lijo Lazar" <lijo.lazar@amd.com>,
"Hawking Zhang" <Hawking.Zhang@amd.com>,
"Mario Limonciello" <mario.limonciello@amd.com>,
"Ma Jun" <Jun.Ma2@amd.com>, "Yunxiang Li" <Yunxiang.Li@amd.com>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
amd-gfx@lists.freedesktop.org, etnaviv@lists.freedesktop.org,
lima@lists.freedesktop.org, linux-arm-msm@vger.kernel.org,
freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
intel-xe@lists.freedesktop.org,
Christian Gmeiner <cgmeiner@igalia.com>
Subject: Re: [PATCH v4] drm/sched: Use struct for drm_sched_init() params
Date: Wed, 09 Jul 2025 12:14:54 +0200 [thread overview]
Message-ID: <acb81a4e86f4f683c4f83509afdc5f24ea01e64d.camel@mailbox.org> (raw)
In-Reply-To: <b5d0921c-7cbf-4d55-aa47-c35cd7861c02@igalia.com>
On Tue, 2025-07-08 at 14:02 +0100, Tvrtko Ursulin wrote:
>
>
> On 11/02/2025 11:14, Philipp Stanner wrote:
> > drm_sched_init() has a great many parameters and upcoming new
> > functionality for the scheduler might add even more. Generally, the
> > great number of parameters reduces readability and has already
> > caused
> > one missnaming, addressed in:
> >
> > commit 6f1cacf4eba7 ("drm/nouveau: Improve variable name in
> > nouveau_sched_init()").
> >
> > Introduce a new struct for the scheduler init parameters and port
> > all
> > users.
> >
> > Signed-off-by: Philipp Stanner <phasta@kernel.org>
> > Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
> > Acked-by: Matthew Brost <matthew.brost@intel.com> # for Xe
> > Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> # for
> > Panfrost and Panthor
> > Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com> # for Etnaviv
> > Reviewed-by: Frank Binns <frank.binns@imgtec.com> # for Imagination
> > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com> # for Sched
> > Reviewed-by: Maíra Canal <mcanal@igalia.com> # for v3d
> > ---
> > Changes in v4:
> > - Add forgotten driver accel/amdxdna. (Me)
> > - Rephrase the "init to NULL" comments. (Tvrtko)
> > - Apply RBs by Tvrtko and Maira.
> > - Terminate the last struct members with a comma, so that future
> > fields can be added with a minimal patch diff. (Me)
> >
> > Changes in v3:
> > - Various formatting requirements.
> >
> > Changes in v2:
> > - Point out that the hang-limit is deprecated. (Christian)
> > - Initialize the structs to 0 at declaration. (Planet Earth)
> > - Don't set stuff explicitly to 0 / NULL. (Tvrtko)
> > - Make the structs const where possible. (Boris)
> > - v3d: Use just 1, universal, function for sched-init. (Maíra)
> > ---
>
> 8><
>
> > diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c
> > b/drivers/gpu/drm/panfrost/panfrost_job.c
> > index 9b8e82fb8bc4..5657106c2f7d 100644
> > --- a/drivers/gpu/drm/panfrost/panfrost_job.c
> > +++ b/drivers/gpu/drm/panfrost/panfrost_job.c
> > @@ -836,8 +836,16 @@ static irqreturn_t
> > panfrost_job_irq_handler(int irq, void *data)
> >
> > int panfrost_job_init(struct panfrost_device *pfdev)
> > {
> > + struct drm_sched_init_args args = {
> > + .ops = &panfrost_sched_ops,
> > + .num_rqs = DRM_SCHED_PRIORITY_COUNT,
> > + .credit_limit = 2,
> > + .timeout = msecs_to_jiffies(JOB_TIMEOUT_MS),
> > + .timeout_wq = pfdev->reset.wq,
>
> ^^^
>
> > + .name = "pan_js",
> > + .dev = pfdev->dev,
> > + };
> > struct panfrost_job_slot *js;
> > - unsigned int nentries = 2;
> > int ret, j;
> >
> > /* All GPUs have two entries per queue, but without
> > jobchain
> > @@ -845,7 +853,7 @@ int panfrost_job_init(struct panfrost_device
> > *pfdev)
> > * so let's just advertise one entry in that case.
> > */
> > if (!panfrost_has_hw_feature(pfdev,
> > HW_FEATURE_JOBCHAIN_DISAMBIGUATION))
> > - nentries = 1;
> > + args.credit_limit = 1;
> >
> > pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js),
> > GFP_KERNEL);
> > if (!js)
>
> Stumbled on this while looking at drm_sched_init() workqueue usage.
>
> I think this patch might need a fixup. Because somewhere around here
> in
> the code there is this:
>
> pfdev->reset.wq = alloc_ordered_workqueue("panfrost-reset",
> 0);
> if (!pfdev->reset.wq)
> return -ENOMEM;
>
> Which means that after the patch panfrost is using system_wq for the
> timeout handler instead the one it creates.
Ouch yes, that's definitely a very subtle bug. AFAICS it comes to be by
pfdev being initialized to 0.
Let me provide a fix..
P.
>
> > @@ -875,13 +883,7 @@ int panfrost_job_init(struct panfrost_device
> > *pfdev)
> > for (j = 0; j < NUM_JOB_SLOTS; j++) {
> > js->queue[j].fence_context =
> > dma_fence_context_alloc(1);
> >
> > - ret = drm_sched_init(&js->queue[j].sched,
> > - &panfrost_sched_ops, NULL,
> > - DRM_SCHED_PRIORITY_COUNT,
> > - nentries, 0,
> > -
> > msecs_to_jiffies(JOB_TIMEOUT_MS),
> > - pfdev->reset.wq,
> > - NULL, "pan_js", pfdev->dev);
> > + ret = drm_sched_init(&js->queue[j].sched, &args);
>
> ^^^
>
> > if (ret) {
> > dev_err(pfdev->dev, "Failed to create
> > scheduler: %d.", ret);
> > goto err_sched;
>
> Regards,
>
> Tvrtko
>
prev parent reply other threads:[~2025-07-09 10:59 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-11 11:14 [PATCH v4] drm/sched: Use struct for drm_sched_init() params Philipp Stanner
2025-02-11 15:03 ` Danilo Krummrich
2025-02-11 16:40 ` Lizhi Hou
2025-02-12 11:04 ` Philipp Stanner
2025-07-08 13:02 ` Tvrtko Ursulin
2025-07-09 10:14 ` Philipp Stanner [this message]
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=acb81a4e86f4f683c4f83509afdc5f24ea01e64d.camel@mailbox.org \
--to=phasta@mailbox.org \
--cc=Hawking.Zhang@amd.com \
--cc=Jun.Ma2@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=Yunxiang.Li@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=boris.brezillon@collabora.com \
--cc=cgmeiner@igalia.com \
--cc=christian.gmeiner@gmail.com \
--cc=christian.koenig@amd.com \
--cc=dakr@redhat.com \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=etnaviv@lists.freedesktop.org \
--cc=frank.binns@imgtec.com \
--cc=freedreno@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=kherbst@redhat.com \
--cc=konradybcio@kernel.org \
--cc=l.stach@pengutronix.de \
--cc=lijo.lazar@amd.com \
--cc=lima@lists.freedesktop.org \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liviu.dudau@arm.com \
--cc=lizhi.hou@amd.com \
--cc=lucas.demarchi@intel.com \
--cc=lyude@redhat.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marijn.suijten@somainline.org \
--cc=mario.limonciello@amd.com \
--cc=matt.coster@imgtec.com \
--cc=matthew.brost@intel.com \
--cc=mcanal@igalia.com \
--cc=min.ma@amd.com \
--cc=mripard@kernel.org \
--cc=mwen@igalia.com \
--cc=nouveau@lists.freedesktop.org \
--cc=ogabbay@kernel.org \
--cc=phasta@kernel.org \
--cc=quic_abhinavk@quicinc.com \
--cc=robdclark@gmail.com \
--cc=robh@kernel.org \
--cc=rodrigo.vivi@intel.com \
--cc=sean@poorly.run \
--cc=simona@ffwll.ch \
--cc=steven.price@arm.com \
--cc=sunil.khatri@amd.com \
--cc=thomas.hellstrom@linux.intel.com \
--cc=tvrtko.ursulin@igalia.com \
--cc=tzimmermann@suse.de \
--cc=yuq825@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).