mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: "Daniel Glöckner" <dg@emlix.com>
Cc: Barebox List <barebox@lists.infradead.org>,
	Edmund Henniges <eh@emlix.com>
Subject: Re: [PATCH 19/19] poller: Allow to run pollers inside of pollers
Date: Wed, 22 Apr 2020 09:40:59 +0200	[thread overview]
Message-ID: <20200422074059.GK1694@pengutronix.de> (raw)
In-Reply-To: <2e7c11ab-a83f-ba67-50f5-9e6b88b7595d@emlix.com>

Hi Daniel,

On Tue, Apr 07, 2020 at 09:28:26PM +0200, Daniel Glöckner wrote:
> Hello Sascha,
> 
> Am 03/16/20 um 09:04 schrieb Sascha Hauer:
> > On Thu, Mar 12, 2020 at 11:36:15PM +0100, Daniel Glöckner wrote:
> >> On Thu, Mar 12, 2020 at 09:35:55AM +0100, Sascha Hauer wrote:
> >>> This adds a slice to each poller which is acquired before the poller is
> >>> executed. This allows us to run pollers inside of other pollers.
> >>
> >> ok, so in the UDP fastboot case there is now a poller that receives
> >> packets and a poller that executes commands and needs packets to
> >> be received to send more than one message. How do I make sure that
> >> the fastboot poller will never be called inside the net poller since
> >> that would cause a deadlock?
> [...]
> > I wonder if we need some idle slice, a slice that is locked once we are
> > outside of some idle loop (shell is waiting for input). In the end the
> > fastboot code may only call long running commands when the idle slice is
> > not locked.
> 
> RATP has a similar requirement and tries to fulfill it by calling
> barebox_ratp_command_run from within readline. I would also like to be
> able to run fastboot commands during console_countdown (fb_run_command
> already calls console_countdown_abort).
> 
> So how about calling slice_add and the initial slice_acquire for the idle
> slice within a pure_initcall and then temporarily dropping the acquired
> count inside readline and console_countdown? It should also be temporarily
> increased inside poller_call (after checking the poller's slice),
> execute_command, and binfmt_run in case someone wants to use the readline
> or timeout commands in code called from there.

Sounds good.

For the fastboot case the incoming commands will never be received in
the idle context, so we will have to queue the commands until we can
pick them up in the idle context. Well, a "queue" with one entry might
be enough already.

> 
> Btw., what are your plans for merging this patch set?

Before I merge this series want to have the idle slice issue solved. I
don't want to risk merging something that we have to completely
restructure soon.
Do you have any resources to look into the idle slice?

BTW I have just rebased the series on latest master. I already merged
some of the patches and there are some small merge conflicts. I'll
resend the remaining series in a moment.

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2020-04-22  7:41 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-12  8:35 [PATCH v3 00/19] Protect code from pollers Sascha Hauer
2020-03-12  8:35 ` [PATCH 01/19] net: fec_imx: Do not clear MII interrupt during receive Sascha Hauer
2020-03-12  8:35 ` [PATCH 02/19] miitool: Use mdiobus_read() Sascha Hauer
2020-03-12  8:35 ` [PATCH 03/19] net: phy: mdio-mux: Use mdiobus_read/write() Sascha Hauer
2020-03-12  8:35 ` [PATCH 04/19] net: Open ethernet devices explicitly Sascha Hauer
2020-03-12  8:35 ` [PATCH 05/19] poller: Give pollers a name Sascha Hauer
2020-03-12  8:35 ` [PATCH 06/19] poller: Add a poller command Sascha Hauer
2020-03-12  8:35 ` [PATCH 07/19] Introduce slices Sascha Hauer
2020-03-12  8:35 ` [PATCH 08/19] net: Add a slice to struct eth_device Sascha Hauer
2020-03-12  8:35 ` [PATCH 09/19] net: mdiobus: Add slice Sascha Hauer
2020-03-12  8:35 ` [PATCH 10/19] usb: Add a slice to usb host controllers Sascha Hauer
2020-03-12  8:35 ` [PATCH 11/19] usbnet: Add slice Sascha Hauer
2020-03-12  8:35 ` [PATCH 12/19] net: Call net_poll() in a poller Sascha Hauer
2020-03-12  8:35 ` [PATCH 13/19] net: reply to ping requests Sascha Hauer
2020-03-12  8:35 ` [PATCH 14/19] usbnet: Be more friendly in the receive path Sascha Hauer
2020-03-12  8:35 ` [PATCH 15/19] net: phy: Also print link down messages Sascha Hauer
2020-03-12  8:35 ` [PATCH 16/19] net: ifup command: add ethernet device completion Sascha Hauer
2020-03-12  8:35 ` [PATCH 17/19] net: phy: Do not claim the link is up initially Sascha Hauer
2020-03-12  8:35 ` [PATCH 18/19] net: Add ifdown support and command Sascha Hauer
2020-03-12  8:35 ` [PATCH 19/19] poller: Allow to run pollers inside of pollers Sascha Hauer
2020-03-12 22:36   ` Daniel Glöckner
2020-03-16  8:04     ` Sascha Hauer
2020-04-07 19:28       ` Daniel Glöckner
2020-04-22  7:40         ` Sascha Hauer [this message]
2020-05-08 17:42           ` Daniel Glöckner

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=20200422074059.GK1694@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=dg@emlix.com \
    --cc=eh@emlix.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