All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Heiner Kallweit <hkallweit1@gmail.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	netdev@vger.kernel.org, Johannes Berg <johannes.berg@intel.com>,
	Marc MERLIN <marc@merlins.org>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>
Subject: Re: [PATCH net v3] net: ethtool: do runtime PM outside RTNL
Date: Fri, 5 Jan 2024 17:29:16 +0100	[thread overview]
Message-ID: <ZZguXLO3DAX/2Y0/@linux.intel.com> (raw)
In-Reply-To: <20240105073001.15f2f3cb@kernel.org>

On Fri, Jan 05, 2024 at 07:30:01AM -0800, Jakub Kicinski wrote:
> On Fri, 5 Jan 2024 12:53:42 +0100 Stanislaw Gruszka wrote:
> > On Thu, Jan 04, 2024 at 08:16:56AM -0800, Jakub Kicinski wrote:
> > > __dev_open() tries to resume as well, and is also under rtnl_lock.  
> > 
> > This one is plain 100% deadlock for igc (and igb before ac8c58f5b535)
> > I'm opting for remove those rpm calls from __dev_open() and ethtool.
> 
> I don't know what gets powered down, exactly, in this device,
> so I can't give you a concrete example. But usually there's
> at least one ndo / ethtool callback which needs to resume
> the device (and already holds rtnl_lock). Taking rtnl_lock
> on the resume path is fundamentally broken.

I agree with that.

> Removing the
> rpm calls from the core is just going to lead to a whack-a-mole
> of bugs in the drivers themselves.
>
> IOW I look at the RPM calls in the core as a canary for people
> doing the wrong thing :(

Hmm, this one I don't understand, what other bugs could pop up
after reverting bd869245a3dcc and others that added rpm calls
for the net core?

> > > So that resume call somehow must never happen or users would see
> > > -ENODEV? Sorry for the basic questions, the flow is confusing :S  
> > 
> > If we talk about situation before rpm calls were added to net core
> > (i.e. < 5.9) there was open/ethtool -ENODEV error when igc/igb
> > was runtime suspend due to netif_device_present() check fail.
> > 
> > That was by design, what for open the device and loose
> > energy if there is no cable and device can not be used anyway ?
> 
> I think "link" means actual link up here, no? As opposed to no cable
> plugged in. If I understand that right - the device would have to train
> the link in DOWN state in order for the device to be opened?
> That would be quite wasteful in terms of power.

I ment no cable plugged. When igc device was runtime suspended, and
user connected the cable, user has to power device up via on > power/control
and then ip link set up.

> Regardless, returning -ENODEV is really not how netdevs should behave.
> That's what carrier reporting is for! :(

Ok, I can agrre with that. But I think this should be achived by not using
netif_device_detach() in rpm suspend, not by

        if (!netif_device_present(dev)) {
                /* may be detached because parent is runtime-suspended */
                if (dev->dev.parent)
                        pm_runtime_resume(dev->dev.parent);
                if (!netif_device_present(dev))
                        return -ENODEV;
        }

Regards
Stanislaw

  reply	other threads:[~2024-01-05 16:29 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-06 10:39 [PATCH net v3] net: ethtool: do runtime PM outside RTNL Johannes Berg
2023-12-06 16:44 ` Jakub Kicinski
2023-12-06 16:46   ` Johannes Berg
2023-12-06 21:39     ` Marc MERLIN
2023-12-07 10:16     ` [Intel-wired-lan] " Przemek Kitszel
2023-12-07 10:16       ` Przemek Kitszel
2023-12-07 17:40       ` [Intel-wired-lan] " Jakub Kicinski
2023-12-07 17:40         ` Jakub Kicinski
2023-12-11  4:52         ` [Intel-wired-lan] " Marc MERLIN
2023-12-11  4:52           ` Marc MERLIN
2023-12-15 13:42           ` [Intel-wired-lan] " Heiner Kallweit
2023-12-15 13:42             ` Heiner Kallweit
2023-12-15 17:46             ` [Intel-wired-lan] " Marc MERLIN
2023-12-15 17:46               ` Marc MERLIN
2023-12-24 16:30               ` [Intel-wired-lan] " Marc MERLIN
2023-12-24 16:30                 ` Marc MERLIN
2023-12-24 23:12                 ` [Intel-wired-lan] " Heiner Kallweit
2023-12-24 23:12                   ` Heiner Kallweit
2023-12-25  8:03                   ` [Intel-wired-lan] " Sasha Neftin
2023-12-25  8:03                     ` Sasha Neftin
2023-12-25 11:21                     ` Marc MERLIN
2023-12-25 11:21                       ` Marc MERLIN
2024-01-03 10:30   ` Stanislaw Gruszka
2024-01-03 11:24     ` Heiner Kallweit
2024-01-03 12:15       ` Stanislaw Gruszka
2024-01-03 23:34     ` Jakub Kicinski
2024-01-04  8:25       ` Stanislaw Gruszka
2024-01-04  9:05         ` Heiner Kallweit
2024-01-04 16:16           ` Jakub Kicinski
2024-01-05 11:53             ` Stanislaw Gruszka
2024-01-05 15:30               ` Jakub Kicinski
2024-01-05 16:29                 ` Stanislaw Gruszka [this message]
2024-01-06  3:02                   ` Jakub Kicinski
2024-01-08 11:18                     ` Stanislaw Gruszka
2024-01-05 10:34           ` Stanislaw Gruszka

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=ZZguXLO3DAX/2Y0/@linux.intel.com \
    --to=stanislaw.gruszka@linux.intel.com \
    --cc=hkallweit1@gmail.com \
    --cc=johannes.berg@intel.com \
    --cc=johannes@sipsolutions.net \
    --cc=kuba@kernel.org \
    --cc=marc@merlins.org \
    --cc=netdev@vger.kernel.org \
    --cc=przemyslaw.kitszel@intel.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.