All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Neukum <oneukum@suse.de>
To: Ming Lei <ming.lei@canonical.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	netdev@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: [PATCH 01/12] usbnet: introduce usbnet 3 command helpers
Date: Wed, 10 Oct 2012 12:08:32 +0200	[thread overview]
Message-ID: <1691674.ASueyuVmUn@linux-lqwf.site> (raw)
In-Reply-To: <CACVXFVMq8-t2o5=M=3xCQEiPFXjvH14g3NtRgOTMYr542d5zXw@mail.gmail.com>

On Wednesday 10 October 2012 17:48:54 Ming Lei wrote:
> On Wed, Oct 10, 2012 at 4:39 PM, Oliver Neukum <oneukum@suse.de> wrote:
> > On Wednesday 10 October 2012 16:17:25 Ming Lei wrote:
> >> On Wed, Oct 10, 2012 at 1:51 PM, Oliver Neukum <oneukum@suse.de> wrote:
> >
> >> > We need to use GFP_NOIO in situations the helper cannot know about.
> >> > Please add a gfp_t parameter. Then the caller will solve that.
> >>
> >> Considered that most of drivers call the helpers in different context, I think
> >> it is better to switch the gpf_t flag runtime inside helpers, like below:
> >>
> >>            if (dev->power.runtime_status == RPM_RESUMING)
> >>                    gfp = GFP_NOIO;
> >>           else
> >>                    gfp = GFP_KERNEL;
> >
> > You are admirably persistent ;-)
> 
> I am only trying to solve the problem more generally, :-)

The most generic solution is passing the parameter.

> > If you extended the check to RPM_SUSPENDING it might work,
> > but still the problem with error handling exists.
> 
> Could you describe the error handling case in a bit detail so
> that callers of these helpers can know when GFP_KERNEL
> is to be passed and when GFP_NOIO is taken if the gfp
> patamerer has to be added?

A reset always applies to the whole device. Resets are used in error
handling of block devices (storage and uas). If you reset a device,
pre_reset() and post_reset() of all interfaces need to be called. So they
are part of the SCSI error handler. SCSI error handlers can allocate memory
only with GFP_NOIO (or GFP_ATOMIC) because any IO for paging
can cause the SCSI layer to wait for the error handling to finish. The error
handling can only finish when pre/post_reset() have finished. Catch-22

So any control messages in block error handling need to use GFP_NOIO.
If you look at the control message helpers in usbcore you will find a lot
of GFP_NOIO. That is the reason.

	Regards
		Oliver

  reply	other threads:[~2012-10-10 10:10 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-02  6:51 [PATCH 00/12] usbnet: usb_control_msg cleanup Ming Lei
2012-10-02  6:51 ` [PATCH 03/12] usbnet: cdc-ncm: apply introduced usb command APIs Ming Lei
2012-10-02  6:51 ` [PATCH 04/12] usbnet: dm9601: " Ming Lei
2012-10-02  6:51 ` [PATCH 05/12] usbnet: int51x1: " Ming Lei
2012-10-02  6:51 ` [PATCH 06/12] usbnet: mcs7830: " Ming Lei
     [not found] ` <1349160684-6627-1-git-send-email-ming.lei-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2012-10-02  6:51   ` [PATCH 01/12] usbnet: introduce usbnet 3 command helpers Ming Lei
2012-10-09  8:47     ` Oliver Neukum
2012-10-10  3:19       ` Ming Lei
     [not found]         ` <CACVXFVOPc0gG3UdWqJ0E+6wiwdPv5EoEgbJ0cvJ4oD4602Yp3A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-10  5:51           ` Oliver Neukum
     [not found]             ` <4085386.s0fOKMaRDP-ugxBuEnWX9yG/4A2pS7c2Q@public.gmane.org>
2012-10-10  8:17               ` Ming Lei
     [not found]                 ` <CACVXFVM7wPLXy0JL7QDnCaZFidwucTFf3t_38DuwukxWtOESHQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-10  8:39                   ` Oliver Neukum
     [not found]                     ` <1631246.gHVDWoZpLi-ugxBuEnWX9yG/4A2pS7c2Q@public.gmane.org>
2012-10-10  9:48                       ` Ming Lei
2012-10-10 10:08                         ` Oliver Neukum [this message]
2012-10-10 11:02                           ` Ming Lei
     [not found]                             ` <CACVXFVPDg89y7LyKLA0YUN7oA2rGfptfHLZhJrqBjTVPjsGdNg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-10 11:25                               ` David Laight
     [not found]                                 ` <AE90C24D6B3A694183C094C60CF0A2F6026B702F-CgBM+Bx2aUAnGFn1LkZF6NBPR1lH4CV8@public.gmane.org>
2012-10-10 11:39                                   ` Oliver Neukum
2012-10-10 11:45                                 ` Ming Lei
2012-10-11  3:18               ` Ming Lei
     [not found]                 ` <CACVXFVMynoPm6_wYj2MD-5SvMpB7e1Wk94=XMp588rD8hU=eew-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-11  4:11                   ` Oliver Neukum
2012-10-11  8:14                     ` Ming Lei
     [not found]                       ` <CACVXFVPjx+053r_-QB=8kPCDmk3va3feN9MYdLgpf=eRWGe05A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-11  9:05                         ` Oliver Neukum
     [not found]                           ` <1940520.W6hRn23j86-ugxBuEnWX9yG/4A2pS7c2Q@public.gmane.org>
2012-10-11 11:29                             ` Ming Lei
     [not found]                     ` <1588459.VLxBbnNMlP-ugxBuEnWX9yG/4A2pS7c2Q@public.gmane.org>
2012-10-11 14:36                       ` Alan Stern
2012-10-12  1:43                         ` Ming Lei
     [not found]                           ` <CACVXFVPdOkvKBBrshnmQv5cYVdDhi8j0V_WxNwBU9VuDsCLkXA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-12 15:18                             ` Alan Stern
     [not found]                         ` <Pine.LNX.4.44L0.1210111030570.1170-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2012-10-12 13:51                           ` Oliver Neukum
2012-10-12 15:17                             ` Ming Lei
     [not found]                               ` <CACVXFVOChR3ZJSyjo44AMwzzjx5URWvEe25KY2eV5evJpF9D+g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-12 15:33                                 ` Ming Lei
     [not found]                             ` <3535515.7NRjKhCcrL-ugxBuEnWX9yG/4A2pS7c2Q@public.gmane.org>
2012-10-12 15:29                               ` Alan Stern
2012-10-15 10:04                                 ` Oliver Neukum
     [not found]                                   ` <15188898.QK0YCDZ0MW-ugxBuEnWX9yG/4A2pS7c2Q@public.gmane.org>
2012-10-15 14:27                                     ` Alan Stern
2012-10-10  5:56         ` Ming Lei
     [not found]           ` <CACVXFVM7CrxXPYzr+dfWhbbmbF+3sXq4C1q2OauvP6x_jebbYQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-10  8:24             ` Oliver Neukum
2012-10-02  6:51   ` [PATCH 02/12] usbnet: asix: apply introduced usb command APIs Ming Lei
2012-10-02  6:51   ` [PATCH 07/12] usbnet: net1080: " Ming Lei
2012-10-02  6:51   ` [PATCH 08/12] usbnet: plusb: " Ming Lei
2012-10-02  6:51   ` [PATCH 11/12] usbnet: smsc95xx: " Ming Lei
2012-10-09  8:42   ` [PATCH 00/12] usbnet: usb_control_msg cleanup Oliver Neukum
2012-10-02  6:51 ` [PATCH 09/12] usbnet: sierra_net: apply introduced usb command APIs Ming Lei
2012-10-02  6:51 ` [PATCH 10/12] usbnet: smsc75xx: " Ming Lei
2012-10-02  6:51 ` [PATCH 12/12] usbnet: make device out of suspend before calling usbnet_read/write_cmd Ming Lei
2012-10-09  8:50   ` Oliver Neukum
     [not found]     ` <2913414.gCAxlQ38lG-ugxBuEnWX9yG/4A2pS7c2Q@public.gmane.org>
2012-10-10  2:33       ` Ming Lei
     [not found]         ` <CACVXFVNb-APsJG=ejW+2jqxTfAFsGhHovpgpsyvk6wUoKn5TzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-10  5:34           ` Oliver Neukum
2012-10-10  6:00           ` Ming Lei

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=1691674.ASueyuVmUn@linux-lqwf.site \
    --to=oneukum@suse.de \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=ming.lei@canonical.com \
    --cc=netdev@vger.kernel.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.