From: Boris BREZILLON <boris.brezillon@free-electrons.com>
To: Boris BREZILLON <boris.brezillon@free-electrons.com>
Cc: "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org>
Subject: Re: [RFC PATCH] drm: rework flip-work helpers to avoid calling func when the FIFO is full
Date: Fri, 11 Jul 2014 17:57:50 +0200 [thread overview]
Message-ID: <20140711175750.20c57776@bbrezillon> (raw)
In-Reply-To: <20140711174705.099e3a3a@bbrezillon>
On Fri, 11 Jul 2014 17:47:05 +0200
Boris BREZILLON <boris.brezillon@free-electrons.com> wrote:
> On Fri, 11 Jul 2014 11:41:12 -0400
> Rob Clark <robdclark@gmail.com> wrote:
>
> > On Fri, Jul 11, 2014 at 11:17 AM, Boris BREZILLON
> > <boris.brezillon@free-electrons.com> wrote:
> > > Make use of lists instead of kfifo in order to dynamically allocate
> > > task entry when someone require some delayed work, and thus preventing
> > > drm_flip_work_queue from directly calling func instead of queuing this
> > > call.
> > > This allow drm_flip_work_queue to be safely called even within irq
> > > handlers.
> > >
> > > Add new helper functions to allocate a flip work task and queue it when
> > > needed. This prevents allocating data within irq context (which might
> > > impact the time spent in the irq handler).
> > >
> > > Signed-off-by: Boris BREZILLON <boris.brezillon@free-electrons.com>
> > > ---
> > > Hi Rob,
> > >
> > > This is a proposal for what you suggested (dynamically growing the drm
> > > flip work queue in order to avoid direct call of work->func when calling
> > > drm_flip_work_queue).
> > >
> > > I'm not sure this is exactly what you expected, because I'm now using
> > > lists instead of kfifo (and thus lose the lockless part), but at least
> > > we can now safely call drm_flip_work_queue or drm_flip_work_queue_task
> > > from irq handlers :-).
> > >
> > > You were also worried about queueing the same framebuffer multiple times
> > > and with this implementation you shouldn't have any problem (at least with
> > > drm_flip_work_queue, what people do with drm_flip_work_queue_task is their
> > > own responsability, but they should allocate one task for each operation
> > > even if they are manipulating the same framebuffer).
> >
> > yeah, if we are dynamically allocating the list nodes, that solves the
> > queuing-up-multiple-times issue..
> >
> > I wonder if drm_flip_work_allocate_task() should use GPF_ATOMIC when
> > allocating?
>
> That's funny, I was actually modifying the API to pass gfp_t flags to
> this function ;-)
>
> > I guess maybe it is possible to pre-allocate the task
> > from non-irq context, and then queue it from irq context.. it makes
> > the API a bit more complex, but there are only a couple users
> > currently, so I suppose this should be doable.
>
> I tried to keep the existing API so that existing users won't see the
> difference (I guess none of them are calling drm_flip_work_queue).
Some words are missing :-):
(I guess none of them are calling drm_flip_work_queue from irq
handlers).
>
> I just added the drm_flip_work_allocate_task and
> drm_flip_work_queue_task for those who want more control on the
> queuing process.
>
> Best Regards,
>
> Boris
>
>
>
>
>
--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
next prev parent reply other threads:[~2014-07-11 15:57 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-07 16:42 [RESEND PATCH v3 00/11] drm: add support for Atmel HLCDC Display Controller Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 01/11] mfd: add atmel-hlcdc driver Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 02/11] mfd: add documentation for atmel-hlcdc DT bindings Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 03/11] pwm: add support for atmel-hlcdc-pwm device Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 04/11] pwm: add DT bindings documentation for atmel-hlcdc-pwm driver Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 05/11] drm: add Atmel HLCDC Display Controller support Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-08 3:45 ` Rob Clark
2014-07-08 7:23 ` Boris BREZILLON
2014-07-08 7:23 ` Boris BREZILLON
2014-07-08 12:49 ` Rob Clark
2014-07-08 12:49 ` Rob Clark
2014-07-08 14:37 ` Boris BREZILLON
2014-07-08 14:37 ` Boris BREZILLON
2014-07-08 15:41 ` Rob Clark
2014-07-08 15:41 ` Rob Clark
2014-07-08 17:08 ` Boris BREZILLON
2014-07-08 17:08 ` Boris BREZILLON
2014-07-08 23:51 ` Matt Roper
2014-07-08 23:51 ` Matt Roper
2014-07-09 7:14 ` Boris BREZILLON
2014-07-09 7:14 ` Boris BREZILLON
2014-07-09 14:02 ` Daniel Vetter
2014-07-09 14:02 ` Daniel Vetter
2014-07-09 8:18 ` Boris BREZILLON
2014-07-09 8:18 ` Boris BREZILLON
2014-07-09 11:53 ` Rob Clark
2014-07-09 11:53 ` Rob Clark
2014-07-11 15:17 ` [RFC PATCH] drm: rework flip-work helpers to avoid calling func when the FIFO is full Boris BREZILLON
2014-07-11 15:41 ` Rob Clark
2014-07-11 15:47 ` Boris BREZILLON
2014-07-11 15:57 ` Boris BREZILLON [this message]
2014-07-11 16:05 ` Rob Clark
2014-07-12 18:16 ` [RESEND PATCH v3 05/11] drm: add Atmel HLCDC Display Controller support Boris BREZILLON
2014-07-12 18:16 ` Boris BREZILLON
2014-07-12 18:37 ` Rob Clark
2014-07-12 18:37 ` Rob Clark
2014-07-15 11:26 ` Boris BREZILLON
2014-07-15 11:26 ` Boris BREZILLON
2014-07-07 16:42 ` [RESEND PATCH v3 06/11] drm: add DT bindings documentation for atmel-hlcdc-dc driver Boris BREZILLON
2014-07-07 16:42 ` Boris BREZILLON
2014-07-10 11:16 ` Laurent Pinchart
2014-07-10 11:16 ` Laurent Pinchart
2014-07-10 12:56 ` Boris BREZILLON
2014-07-10 12:56 ` Boris BREZILLON
2014-07-11 10:37 ` Laurent Pinchart
2014-07-11 10:37 ` Laurent Pinchart
2014-07-11 12:00 ` Boris BREZILLON
2014-07-11 12:00 ` Boris BREZILLON
2014-07-11 12:19 ` Boris BREZILLON
2014-07-11 12:19 ` Boris BREZILLON
2014-07-14 10:18 ` Thierry Reding
2014-07-14 10:18 ` Thierry Reding
2014-07-15 11:45 ` Boris BREZILLON
2014-07-15 11:45 ` Boris BREZILLON
2014-07-14 10:05 ` Thierry Reding
2014-07-14 10:05 ` Thierry Reding
2014-07-15 10:06 ` Boris BREZILLON
2014-07-15 10:06 ` Boris BREZILLON
2014-07-15 10:20 ` Laurent Pinchart
2014-07-15 10:20 ` Laurent Pinchart
2014-07-15 10:37 ` Thierry Reding
2014-07-15 10:37 ` Thierry Reding
2014-07-15 10:43 ` Laurent Pinchart
2014-07-15 10:43 ` Laurent Pinchart
2014-07-15 10:52 ` Thierry Reding
2014-07-15 10:52 ` Thierry Reding
2014-07-15 11:07 ` Laurent Pinchart
2014-07-15 11:07 ` Laurent Pinchart
2014-07-16 13:05 ` Boris BREZILLON
2014-07-16 13:05 ` Boris BREZILLON
2014-07-16 13:20 ` Laurent Pinchart
2014-07-16 13:20 ` Laurent Pinchart
2014-07-16 13:20 ` Laurent Pinchart
2014-07-16 13:44 ` Boris BREZILLON
2014-07-16 13:44 ` Boris BREZILLON
2014-07-15 12:14 ` Boris BREZILLON
2014-07-15 12:14 ` Boris BREZILLON
2014-07-15 10:31 ` Thierry Reding
2014-07-15 10:31 ` Thierry Reding
2014-07-18 14:51 ` Boris BREZILLON
2014-07-18 14:51 ` Boris BREZILLON
2014-07-18 15:43 ` Boris BREZILLON
2014-07-18 15:43 ` Boris BREZILLON
2014-07-21 8:59 ` Thierry Reding
2014-07-21 8:59 ` Thierry Reding
2014-07-21 9:24 ` Boris BREZILLON
2014-07-21 9:24 ` Boris BREZILLON
2014-07-21 9:32 ` Laurent Pinchart
2014-07-21 9:32 ` Laurent Pinchart
2014-07-21 9:57 ` Boris BREZILLON
2014-07-21 9:57 ` Boris BREZILLON
2014-07-21 12:12 ` Thierry Reding
2014-07-21 12:12 ` Thierry Reding
2014-07-21 12:16 ` Laurent Pinchart
2014-07-21 12:16 ` Laurent Pinchart
2014-07-21 12:34 ` Boris BREZILLON
2014-07-21 12:34 ` Boris BREZILLON
2014-07-21 12:55 ` Thierry Reding
2014-07-21 12:55 ` Thierry Reding
2014-07-21 13:22 ` Laurent Pinchart
2014-07-21 13:22 ` Laurent Pinchart
2014-07-21 13:30 ` Thierry Reding
2014-07-21 13:30 ` Thierry Reding
2014-07-21 13:43 ` Boris BREZILLON
2014-07-21 13:43 ` Boris BREZILLON
2014-07-21 13:47 ` Laurent Pinchart
2014-07-21 13:47 ` Laurent Pinchart
2014-07-21 13:54 ` Thierry Reding
2014-07-21 13:54 ` Thierry Reding
2014-07-21 14:21 ` Boris BREZILLON
2014-07-21 14:21 ` Boris BREZILLON
2014-07-21 18:30 ` Laurent Pinchart
2014-07-21 18:30 ` Laurent Pinchart
2014-07-21 22:04 ` Thierry Reding
2014-07-21 22:04 ` Thierry Reding
2014-07-21 14:18 ` Boris BREZILLON
2014-07-21 14:18 ` Boris BREZILLON
2014-07-21 18:32 ` Laurent Pinchart
2014-07-21 18:32 ` Laurent Pinchart
2014-07-21 17:06 ` Russell King - ARM Linux
2014-07-21 17:06 ` Russell King - ARM Linux
2014-07-21 22:17 ` Thierry Reding
2014-07-21 22:17 ` Thierry Reding
2014-07-21 12:15 ` Thierry Reding
2014-07-21 12:15 ` Thierry Reding
2014-07-21 12:33 ` Boris BREZILLON
2014-07-21 12:33 ` Boris BREZILLON
2014-07-21 12:56 ` Thierry Reding
2014-07-21 12:56 ` Thierry Reding
2014-07-21 13:26 ` Laurent Pinchart
2014-07-21 13:26 ` Laurent Pinchart
2014-07-21 13:33 ` Thierry Reding
2014-07-21 13:33 ` Thierry Reding
2014-07-07 16:43 ` [RESEND PATCH v3 07/11] ARM: AT91/dt: split sama5d3 lcd pin definitions to match RGB mode configs Boris BREZILLON
2014-07-07 16:43 ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 08/11] ARM: AT91/dt: add alternative pin muxing for sama5d3 lcd pins Boris BREZILLON
2014-07-07 16:43 ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 09/11] ARM: at91/dt: define the HLCDC node available on sama5d3 SoCs Boris BREZILLON
2014-07-07 16:43 ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 10/11] ARM: at91/dt: add LCD panel description to sama5d3xdm.dtsi Boris BREZILLON
2014-07-07 16:43 ` Boris BREZILLON
2014-07-07 16:43 ` [RESEND PATCH v3 11/11] ARM: at91/dt: enable the LCD panel on sama5d3xek boards Boris BREZILLON
2014-07-07 16:43 ` 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=20140711175750.20c57776@bbrezillon \
--to=boris.brezillon@free-electrons.com \
--cc=dri-devel@lists.freedesktop.org \
/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.