All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Wu <peter@lekensteyn.nl>
To: Hayes Wang <hayeswang@realtek.com>
Cc: "David S . Miller" <davem@davemloft.net>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Lu Baolu <baolu.lu@linux.intel.com>
Subject: Re: [PATCH] r8152: fix lockup when runtime PM is enabled
Date: Tue, 8 Dec 2015 12:10:08 +0100	[thread overview]
Message-ID: <20151208111008.GA18728@al> (raw)
In-Reply-To: <0835B3720019904CB8F7AA43166CEEB2F8D48F@RTITMBSV03.realtek.com.tw>

On Tue, Dec 08, 2015 at 03:18:59AM +0000, Hayes Wang wrote:
> Peter Wu
> > Sent: Tuesday, December 08, 2015 12:59 AM
> [...]
> > +			if (tp->netdev->flags & IFF_UP) {
> 
> Maybe you could just replace the checking of netif_running(tp->netdev)
> with this.

Simply replacing netif_running by IFF_UP does not work, it hangs during
close when the device is suspended. This patch is correct, but I have a
v2 patch that moves rtl_runtime_suspend_enable from close to suspend.

This is the evaluated scenario (run = netif_running, up = IFF_UP set):

    # suspended before open
    suspend (run=0, up=0)
    open    (run=1)
    resume  (run=1, up=0)   <-- fixed by patch
    (open ends)

    # while up
    suspend (run=1, up=1)
    resume  (run=1, up=1)   <-- no issue, values match
    suspend (run=1, up=1)

    # close while suspended
    close   (run=0, up=1)
    resume  (run=0, up=1)   <-- fixed in patch v2
    (close cont and ends)   <-- rtl_runtime_suspend_enable removed in v2
    suspend (run=0, up=0)

    # while down
    resume  (run=0, up=0)
    suspend (run=0, up=0)

    # open while suspended, open fails
    open    (run=1)
    resume  (run=1, up=0)   <-- fixed by patch
    (open fails)
    suspend (run=0, up=0)

> Excuse me. I have a question. Before the open() is finished, the
> netif_running() would be true, but the IFF_UP wouldn't be set. Is it
> right?

That is right, this happens behind the scenes:

    # open
    netif_running = true
    open()
    if open succeeded
        set IFF_UP
    else
        netif_running = false

    # close
    netif_running = false
    close()
    clear IFF_UP
-- 
Kind regards,
Peter Wu
https://lekensteyn.nl

      reply	other threads:[~2015-12-08 11:10 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-07 16:58 [PATCH] r8152: fix lockup when runtime PM is enabled Peter Wu
2015-12-08  3:18 ` Hayes Wang
2015-12-08 11:10   ` Peter Wu [this message]

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=20151208111008.GA18728@al \
    --to=peter@lekensteyn.nl \
    --cc=baolu.lu@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=hayeswang@realtek.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --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.