All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Heiner Kallweit <hkallweit1@gmail.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	Linux PM <linux-pm@vger.kernel.org>
Subject: Re: [PATCH] PCI: Forbid RPM on ACPI systems before 5.0 only
Date: Tue, 18 Jan 2022 18:11:26 +0100	[thread overview]
Message-ID: <CAJZ5v0jKBSxHXf_N8BgtiOYnoxz9UUCZP8UwAHcFt_-6z4TozQ@mail.gmail.com> (raw)
In-Reply-To: <28e851d8-50cf-ee58-b340-1138a37990f6@gmail.com>

On Tue, Jan 18, 2022 at 5:57 PM Heiner Kallweit <hkallweit1@gmail.com> wrote:
>
> On 18.01.2022 17:28, Rafael J. Wysocki wrote:
> > On Mon, Jan 17, 2022 at 11:52 AM Heiner Kallweit <hkallweit1@gmail.com> wrote:
> >>
> >> Currently PCI core forbids RPM and requires opt-in from userspace,
> >> apart from few drivers calling pm_runtime_allow(). Reason is that some
> >> early ACPI PM implementations conflict with RPM, see [0].
> >> Note that as of today pm_runtime_forbid() is also called for non-ACPI
> >> systems. Maybe it's time to allow RPM per default for non-ACPI systems
> >> and recent enough ACPI versions. Let's allow RPM from ACPI 5.0 which
> >> was published in 2011.
> >>
> >> [0] https://lkml.org/lkml/2020/11/17/1548
> >>
> >> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> >> ---
> >>  drivers/pci/pci.c | 7 ++++++-
> >>  1 file changed, 6 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> >> index 428afd459..26e3a500c 100644
> >> --- a/drivers/pci/pci.c
> >> +++ b/drivers/pci/pci.c
> >> @@ -3101,7 +3101,12 @@ void pci_pm_init(struct pci_dev *dev)
> >>         u16 status;
> >>         u16 pmc;
> >>
> >> -       pm_runtime_forbid(&dev->dev);
> >> +#ifdef CONFIG_ACPI
> >> +       /* Some early ACPI PM implementations conflict with RPM. */
> >> +       if (acpi_gbl_FADT.header.revision > 0 &&
> >> +           acpi_gbl_FADT.header.revision < 5)
> >> +               pm_runtime_forbid(&dev->dev);
> >> +#endif
> >
> > Well, there are two things here.
> >
> > First, there were systems in which ACPI PM was not ready for changing
> > power states in the S0 system state (ie. run-time) and it was assuming
> > that power states would only be changed during transitions to sleep
> > states (S1 - S4) and to S5.  This can be covered by the ACPI revicion
> > check, but I'm not sure if ACPI 5.0 is the right one.  Why ACPI 5 and
> > not ACPI 6, for instance?
> >
> Just based on the assumption that ACPI 5.0 should be recent enough.
> We can also go with ACPI 6.

I know that we can, the question is whether or not we should.

IOW, there needs to be at least some technical grounds on which to
assume that a given ACPI release is safe enough.

> > Second, there were PCI devices without ACPI PM where the PCI standard
> > PM didn't work correctly.  This is not related to ACPI at all and I'm
> > not sure why the ACPI revision check would be sufficient to cover
> > these cases.
> >
> Didn't know that there were such cases. Can you provide any examples or
> links to reports about such misbehaving devices?

Admittedly, I don't have a list of them, so I would need to look them
up and not just in the mailing lists.

> >>         pm_runtime_set_active(&dev->dev);
> >>         pm_runtime_enable(&dev->dev);
> >>         device_enable_async_suspend(&dev->dev);
> >> --

Also note that this change will allow PM-runtime to be used on PCI
devices without drivers by default and that may not be entirely safe
either.  It didn't work really well in the past IIRC, so I'm wondering
what's the reason to believe that it will work just fine this time.

  reply	other threads:[~2022-01-18 17:11 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-17 10:51 [PATCH] PCI: Forbid RPM on ACPI systems before 5.0 only Heiner Kallweit
2022-01-17 23:35 ` Bjorn Helgaas
2022-01-18  8:06   ` Heiner Kallweit
2022-01-18 16:09     ` Bjorn Helgaas
2022-01-18 16:28 ` Rafael J. Wysocki
2022-01-18 16:56   ` Heiner Kallweit
2022-01-18 17:11     ` Rafael J. Wysocki [this message]
2022-01-18 17:42       ` Heiner Kallweit
2022-01-19 19:38         ` Rafael J. Wysocki

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=CAJZ5v0jKBSxHXf_N8BgtiOYnoxz9UUCZP8UwAHcFt_-6z4TozQ@mail.gmail.com \
    --to=rafael@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-pm@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.