All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Fredrik Noring <noring@nocrew.org>
Cc: laurentiu.tudor@nxp.com, hch@lst.de, stern@rowland.harvard.edu,
	gregkh@linuxfoundation.org, linux-usb@vger.kernel.org,
	marex@denx.de, leoyang.li@nxp.com, linux-kernel@vger.kernel.org,
	robin.murphy@arm.com, JuergenUrban@gmx.de
Subject: Re: [PATCH v7 3/5] usb: host: ohci-sm501: init genalloc for local memory
Date: Thu, 13 Jun 2019 11:05:42 -0700	[thread overview]
Message-ID: <3f2164cd-7655-b7cc-ec57-d8751886728c@roeck-us.net> (raw)
In-Reply-To: <20190613153414.GA909@sx9>

On 6/13/19 8:34 AM, Fredrik Noring wrote:
> Hi Guenter,
> 
>> Thanks for the confirmation. Do you see the problem only with the
>> ohci-sm501 driver or also with others ?
> 
> All are likely affected, but it depends, because I believe the problem is
> that the USB subsystem runs out of memory. Please try the attached patch!
> 
> The pool assumed 4096 byte page alignment for every allocation, which is
> excessive given that many requests are for 16 and 32 bytes. In the patch
> below, I have turned down the order to 5, which is good enough for the ED
> and TD structures of the OHCI, but not enough for the HCCA that needs 256
> byte alignment. With some luck, the WARN_ON_ONCE will not trigger in your
> test, though. If it does, you may try to increase the order from 5 to 8.
> 

You are right, the patch below fixes the problem. I did not get the warning
with order==5. Nevertheless, I also tested with order==8; that works as well.

Thanks a lot for tracking this down!
Guenter

> I have observed strange things happen when the USB subsystem runs out of
> memory. The mass storage drivers often seem to busy-wait on -ENOMEM,
> consuming a lot of processor resources. It would be much more efficient
> to sleep waiting for memory to become available.
> 
> In your case I suspect that allocation failures are not correctly
> attributed. Certain kinds of temporary freezes may also occur, as the
> various devices are reset due to host memory allocation errors.
>  > Fredrik
> 
> diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
> --- a/drivers/usb/core/hcd.c
> +++ b/drivers/usb/core/hcd.c
> @@ -3011,7 +3011,7 @@ int usb_hcd_setup_local_mem(struct usb_hcd *hcd, phys_addr_t phys_addr,
>   	int err;
>   	void __iomem *local_mem;
>   
> -	hcd->localmem_pool = devm_gen_pool_create(hcd->self.sysdev, PAGE_SHIFT,
> +	hcd->localmem_pool = devm_gen_pool_create(hcd->self.sysdev, 5,
>   						  dev_to_node(hcd->self.sysdev),
>   						  dev_name(hcd->self.sysdev));
>   	if (IS_ERR(hcd->localmem_pool))
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -517,6 +517,7 @@ static int ohci_init (struct ohci_hcd *ohci)
>   						GFP_KERNEL);
>   	if (!ohci->hcca)
>   		return -ENOMEM;
> +	WARN_ON_ONCE(ohci->hcca_dma & 0xff);
>   
>   	if ((ret = ohci_mem_init (ohci)) < 0)
>   		ohci_stop (hcd);
> 


  reply	other threads:[~2019-06-13 18:05 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-29 10:28 [PATCH v7 0/5] prerequisites for device reserved local mem rework laurentiu.tudor
2019-05-29 10:28 ` [PATCH v7 1/5] lib/genalloc.c: Add gen_pool_dma_zalloc() for zeroed DMA allocations laurentiu.tudor
2019-05-29 10:28 ` [PATCH v7 2/5] USB: use genalloc for USB HCs with local memory laurentiu.tudor
2019-05-29 10:38   ` Greg KH
2019-05-29 11:15     ` Laurentiu Tudor
2019-05-29 11:23       ` Greg KH
2019-05-29 11:25         ` hch
2019-05-29 11:32           ` Greg KH
2019-05-29 10:28 ` [PATCH v7 3/5] usb: host: ohci-sm501: init genalloc for " laurentiu.tudor
2019-06-05 21:46   ` Guenter Roeck
2019-06-11 13:32     ` Guenter Roeck
2019-06-11 17:26       ` Fredrik Noring
2019-06-11 19:03         ` Guenter Roeck
2019-06-13 13:40           ` Fredrik Noring
2019-06-13 13:54             ` Guenter Roeck
2019-06-13 15:34               ` Fredrik Noring
2019-06-13 18:05                 ` Guenter Roeck [this message]
2019-06-14 14:28                   ` Fredrik Noring
2019-06-24  6:35                     ` Christoph Hellwig
2019-06-24 12:59                       ` Fredrik Noring
2019-06-25  6:00                         ` Christoph Hellwig
2019-06-25 15:05                           ` [PATCH 1/2] lib/genalloc.c: Add algorithm, align and zeroed family of DMA allocators Fredrik Noring
2019-06-25 15:08                             ` [PATCH 2/2] usb: host: Fix excessive alignment restriction for local memory allocations Fredrik Noring
2019-06-25 20:54                               ` Guenter Roeck
2019-06-25 20:54                             ` [PATCH 1/2] lib/genalloc.c: Add algorithm, align and zeroed family of DMA allocators Guenter Roeck
2019-06-28  5:57                             ` Christoph Hellwig
2019-06-18 10:48                   ` [PATCH v7 3/5] usb: host: ohci-sm501: init genalloc for local memory Laurentiu Tudor
2019-05-29 10:28 ` [PATCH v7 4/5] usb: host: ohci-tmio: " laurentiu.tudor
2019-05-29 10:28 ` [PATCH v7 5/5] USB: drop HCD_LOCAL_MEM flag laurentiu.tudor
2019-05-29 11:34 ` [PATCH v7 0/5] prerequisites for device reserved local mem rework Greg KH
2019-05-29 11:37   ` Christoph Hellwig
2019-05-29 14:06     ` Laurentiu Tudor
2019-05-31 16:43       ` Christoph Hellwig
2019-05-31 17:06         ` Laurentiu Tudor
2019-06-04 14:16         ` Laurentiu Tudor

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=3f2164cd-7655-b7cc-ec57-d8751886728c@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=JuergenUrban@gmx.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@lst.de \
    --cc=laurentiu.tudor@nxp.com \
    --cc=leoyang.li@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=marex@denx.de \
    --cc=noring@nocrew.org \
    --cc=robin.murphy@arm.com \
    --cc=stern@rowland.harvard.edu \
    /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.