All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Mamonov <pmamonov@gmail.com>
To: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH 4/5] usb: ehci-hcd: use mdelay_non_inerruptible()
Date: Wed, 7 Oct 2015 19:52:21 +0300	[thread overview]
Message-ID: <20151007195221.7aaea4c6@berta> (raw)
In-Reply-To: <20151007154024.GA14384@ns203013.ovh.net>

On Wed, 7 Oct 2015 17:40:24 +0200
Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> wrote:

> On 17:40 Wed 07 Oct     , Peter Mamonov wrote:
> > On Wed, 7 Oct 2015 15:47:03 +0200
> > Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> wrote:
> > 
> > > On 18:58 Tue 22 Sep     , Peter Mamonov wrote:
> > > > Signed-off-by: Peter Mamonov <pmamonov@gmail.com>
> > > > ---
> > > >  drivers/usb/host/ehci-hcd.c | 6 +++---
> > > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > > > 
> > > > diff --git a/drivers/usb/host/ehci-hcd.c
> > > > b/drivers/usb/host/ehci-hcd.c index d6df7b8..03d6150 100644
> > > > --- a/drivers/usb/host/ehci-hcd.c
> > > > +++ b/drivers/usb/host/ehci-hcd.c
> > > > @@ -684,7 +684,7 @@ ehci_submit_root(struct usb_device *dev,
> > > > unsigned long pipe, void *buffer,
> > > >  				 * root
> > > >  				 */
> > > >  				ehci_powerup_fixup(ehci);
> > > > -				mdelay(50);
> > > > +				mdelay_non_interruptible(50);
> > > >  				ehci->portreset |= 1 << port;
> > > >  				/* terminate the reset */
> > > >  				ehci_writel(status_reg, reg &
> > > > ~EHCI_PS_PR); @@ -747,7 +747,7 @@ ehci_submit_root(struct
> > > > usb_device *dev, unsigned long pipe, void *buffer, goto unknown;
> > > >  	}
> > > >  
> > > > -	mdelay(1);
> > > > +	mdelay_non_interruptible(1);
> > > >  	len = min3(srclen, (int)le16_to_cpu(req->length),
> > > > length); if (srcptr != NULL && len > 0)
> > > >  		memcpy(buffer, srcptr, len);
> > > > @@ -889,7 +889,7 @@ static int ehci_init(struct usb_host *host)
> > > >  	ehci_writel(&ehci->hcor->or_configflag, cmd);
> > > >  	/* unblock posted write */
> > > >  	cmd = ehci_readl(&ehci->hcor->or_usbcmd);
> > > > -	mdelay(5);
> > > > +	mdelay_non_interruptible(5);
> > > why do you need that much non interruptible delau?
> > 
> > Non-interruptible delays are needed here to prevent ehci_* functions
> > re-entrance. The re-entrance occurs during a usb bus scan, after
> > detection of a usb keyboard. As soon as a USB keyboard is detected,
> > it's driver starts the poller, which interferes with the process of
> > usb bus scan. However that last one delay may be interruptible.
> 
> my problem is as soon as you start a usb control msg you block
> everything
> 
> nothing else can run in barebox
> 
> can slow down barebox boot
> 
> I do think we need a real mdelay_non_interruptible feature but just
> forbidden to recall usb control msg.
> But the rest of barebox can run durring those 5ms

Well, I think it can be done by returning -EAGAIN on re-entrance
detection in ehci_* functions [1], and skipping the poll in the keyboard
driver.

By the way, could you clarify: do you really experience
considerable barebox slowdown or you make an assumtion based on the
code analysis?

[1]
http://lists.infradead.org/pipermail/barebox/2015-September/024715.html

Regards,
Peter

> 
> Best Regards,
> J.


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

  reply	other threads:[~2015-10-07 16:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-22 15:58 [PATCH v6 0/5] input: add usb keyboard driver Peter Mamonov
2015-09-22 15:58 ` [PATCH 1/5] common: clock: introduce mdelay_non_interruptible() Peter Mamonov
2015-09-22 21:15   ` Antony Pavlov
2015-09-22 21:20     ` Peter Mamonov
2015-09-22 15:58 ` [PATCH 2/5] usb: ehci-hcd: port periodic transactions implementation from the u-boot Peter Mamonov
2015-09-22 15:58 ` [PATCH 3/5] usb: ehci-hcd: detect re-entrance Peter Mamonov
2015-09-23 14:23   ` Sascha Hauer
2015-09-22 15:58 ` [PATCH 4/5] usb: ehci-hcd: use mdelay_non_inerruptible() Peter Mamonov
2015-10-07 13:47   ` Jean-Christophe PLAGNIOL-VILLARD
2015-10-07 14:40     ` Peter Mamonov
2015-10-07 15:40       ` Jean-Christophe PLAGNIOL-VILLARD
2015-10-07 16:52         ` Peter Mamonov [this message]
2015-10-12  7:00           ` Sascha Hauer
2015-10-12 11:43             ` Peter Mamonov
2015-10-12 13:44               ` Sascha Hauer
2015-10-13 10:37                 ` Peter Mamonov
2015-10-13 10:38                   ` Sascha Hauer
2015-10-13  2:04           ` Jean-Christophe PLAGNIOL-VILLARD
2015-10-13  9:11             ` Antony Pavlov
2015-09-22 15:58 ` [PATCH 5/5] input: port usb keyboard driver from the u-boot Peter Mamonov
2015-09-23 14:34 ` [PATCH 1/2] fixup! usb: ehci-hcd: port periodic transactions implementation " Sascha Hauer
2015-09-23 14:34   ` [PATCH 2/2] fixup! input: port usb keyboard driver " Sascha Hauer
  -- strict thread matches above, loose matches on Subject: below --
2015-09-21 11:30 [RFC v5 0/2] WIP: add usb keyboard driver Peter Mamonov
2015-09-21 11:30 ` [PATCH 4/5] usb: ehci-hcd: use mdelay_non_inerruptible() Peter Mamonov

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=20151007195221.7aaea4c6@berta \
    --to=pmamonov@gmail.com \
    --cc=barebox@lists.infradead.org \
    --cc=plagnioj@jcrosoft.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.