linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Jesse Barnes <jbarnes@virtuousgeek.org>,
	Yinghai Lu <yinghai@kernel.org>,
	"Ronciak, John" <john.ronciak@intel.com>,
	"Penner, Miles J" <miles.j.penner@intel.com>,
	Bruce Allan <bruce.w.allan@intel.com>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"x86@kernel.org" <x86@kernel.org>
Subject: Re: [PATCH 5/6] PCI: acpiphp: look _RMV method a bit deeper in the hierarhcy
Date: Tue, 02 Jul 2013 22:40:56 +0200	[thread overview]
Message-ID: <1635199.U3MANZpM5C@vostro.rjw.lan> (raw)
In-Reply-To: <CAErSpo7GQ8M1rpWnez+=SByR_wmyAnJH7wfqdY20ZcvXW9_90Q@mail.gmail.com>

On Tuesday, July 02, 2013 11:09:19 AM Bjorn Helgaas wrote:
> On Tue, Jul 2, 2013 at 4:44 AM, Kirill A. Shutemov
> <kirill.shutemov@linux.intel.com> wrote:
> > Mika Westerberg wrote:
> >> The acpiphp driver finds out whether the device is hotpluggable by checking
> >> whether it has _RMV method behind it (and if it returns 1). However, at
> >> least Acer Aspire S5 with Thunderbolt host router has this method placed
> >> behind device called EPUP (endpoint upstream port?) and not directly behind
> >> the root port as can be seen from the ASL code below:
> >>
> >> Device (RP05)
> >> {
> >>       ...
> >>       Device (HRUP)
> >>       {
> >>               Name (_ADR, Zero)
> >>               Name (_PRW, Package (0x02)
> >>               {
> >>                       0x09,
> >>                       0x04
> >>               })
> >>               Device (HRDN)
> >>               {
> >>                       Name (_ADR, 0x00040000)
> >>                       Name (_PRW, Package (0x02)
> >>                       {
> >>                               0x09,
> >>                               0x04
> >>                       })
> >>                       Device (EPUP)
> >>                       {
> >>                               Name (_ADR, Zero)
> >>                               Method (_RMV, 0, NotSerialized)
> >>                               {
> >>                                       Return (One)
> >>                               }
> >>                       }
> >>               }
> >>       }
> >>
> >> If we want to support such machines we must look for the _RMV method a bit
> >> deeper in the hierarchy. Fix this by changing pcihp_is_ejectable() to check
> >> few more devices down from the root port.
> >
> > We found that this approach is broken. We've got false positive: host
> > bridge itself was detected as hotplugable slot %) I think it's not
> > acceptable.
> >
> > Mika has tried few more approaches, but we haven't found anything better
> > then hardcoded path like in original workaround patch[1]. It's not generic
> > at all, but safe from false positives.
> >
> > Any thoughts?
> >
> > [1] http://article.gmane.org/gmane.linux.kernel.pci/19102
> 
> The changelog of this patch ([1]) says "Correct ACPI PCI hotplug
> implementation should have _RMV method in a PCI slot (device under pci
> bridge). In Acer Aspire S5 case we have it deeper in hierarchy ..."
> 
> This is exactly what I mean about acpiphp being brittle because of the
> assumptions it makes about the ACPI namespace.  Is there actually
> something in the spec that requires the _RMV method to be where
> pcihp_is_ejectable() expects it?
> 
> I'm not 100% dead-set against merging the workaround with hard-coded
> path, but I still don't think it's a good idea.  It "fixes" it for one
> particular machine, but there will likely be other machines that
> require similar fixes in the future.  It makes it harder for somebody
> to clean up the design later, because that person won't have an Aspire
> S5 to test.  It makes it less likely that somebody *will* clean it up
> later, because "everything is already working."
> 
> That's why my preference (given infinite resources) would be to rework
> acpiphp now, while people are interested and can test it.

Well, I have a plan to do just that, but quite frankly I'd prefer to make
things physically work first and *then* to make them nicer.

> I'm sure this would be a major redesign of acpiphp and its interaction with
> pciehp, but I think it's something we're going to have to do at some
> point.

Yes, we need to do that pretty much as soon as reasonably possible, but let's
not hold back changes allowing people to use their hardware with Linux because
of that.  We very well may need to spend a couple of releases on it.

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

  parent reply	other threads:[~2013-07-02 20:31 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-25 16:22 [PATCH 0/6] Thunderbolt workarounds take 2 Mika Westerberg
2013-06-25 16:22 ` [PATCH 1/6] PCI: acpiphp: do not check for SLOT_ENABLED in enable_device() Mika Westerberg
2013-06-26 23:28   ` Bjorn Helgaas
2013-06-27 13:25     ` Kirill A. Shutemov
2013-06-28  9:51     ` Kirill A. Shutemov
2013-06-28 17:00       ` Bjorn Helgaas
2013-06-28 18:54         ` Rafael J. Wysocki
2013-07-01  9:32           ` Mika Westerberg
2013-07-01 14:01             ` Rafael J. Wysocki
2013-07-01 18:36               ` Mika Westerberg
2013-07-02  1:29                 ` Rafael J. Wysocki
2013-07-02 16:40                   ` Bjorn Helgaas
2013-07-02 20:29                     ` Rafael J. Wysocki
2013-07-02 20:31                       ` Mika Westerberg
2013-07-02 20:49                         ` Rafael J. Wysocki
2013-06-25 16:22 ` [PATCH 2/6] PCI: acpiphp: enable_device(): rescan even if no new devices on slot Mika Westerberg
2013-06-26 23:37   ` Bjorn Helgaas
2013-06-27 13:02     ` Mika Westerberg
2013-06-27 16:32       ` Mika Westerberg
2013-06-27 16:50         ` Bjorn Helgaas
2013-06-27 16:54         ` Bjorn Helgaas
2013-06-27  1:20   ` Yinghai Lu
2013-06-27 13:04     ` Mika Westerberg
2013-06-25 16:22 ` [PATCH 3/6] PCI: introduce pci_trim_stale_devices() Mika Westerberg
2013-06-25 17:47   ` Andy Shevchenko
2013-06-25 17:56     ` Kirill A. Shutemov
2013-06-28 19:59   ` Rafael J. Wysocki
2013-06-25 16:22 ` [PATCH 4/6] PCI: acpiphp: check for new devices on enabled host Mika Westerberg
2013-06-25 18:04   ` Andy Shevchenko
2013-06-26  9:39     ` Kirill A. Shutemov
2013-06-27 19:05   ` Yinghai Lu
2013-06-28  9:33     ` Kirill A. Shutemov
2013-06-28 16:22       ` Yinghai Lu
2013-06-28 20:04         ` Rafael J. Wysocki
2013-06-25 16:22 ` [PATCH 5/6] PCI: acpiphp: look _RMV method a bit deeper in the hierarhcy Mika Westerberg
2013-06-25 18:15   ` Andy Shevchenko
2013-06-25 18:31     ` Mika Westerberg
2013-06-25 18:31       ` Andy Shevchenko
2013-06-25 18:51         ` Mika Westerberg
2013-06-25 19:30           ` Andy Shevchenko
2013-07-02 10:44   ` Kirill A. Shutemov
2013-07-02 17:09     ` Bjorn Helgaas
2013-07-02 17:45       ` Kirill A. Shutemov
2013-07-02 20:48         ` Rafael J. Wysocki
2013-07-02 20:40       ` Rafael J. Wysocki [this message]
2013-06-25 16:22 ` [PATCH 6/6] x86/PCI: quirk Thunderbolt PCI-to-PCI bridges Mika Westerberg
2013-06-25 21:15   ` Jesse Barnes
2013-06-26 12:17     ` Mika Westerberg
2013-06-26 15:04       ` Greg Kroah-Hartman
2013-06-26 20:59       ` Bjorn Helgaas
2013-06-26 22:15         ` Alex Williamson
2013-06-27 13:09           ` Mika Westerberg
2013-06-26 22:18   ` Bjorn Helgaas
2013-06-26 22:26     ` Yinghai Lu
2013-06-26 22:31       ` Yinghai Lu
2013-06-26 22:44         ` Rafael J. Wysocki
2013-06-26 22:38           ` Yinghai Lu
2013-06-26 22:55         ` Bjorn Helgaas
2013-06-26 23:56           ` Yinghai Lu
2013-06-27 16:00             ` Bjorn Helgaas
2013-06-27 17:27               ` Yinghai Lu
2013-06-27 13:58       ` Mika Westerberg
2013-06-27 13:54     ` Mika Westerberg
2013-06-27 16:27       ` Mika Westerberg
2013-06-27 17:18         ` Yinghai Lu
2013-06-25 23:24 ` [PATCH 0/6] Thunderbolt workarounds take 2 Rafael J. Wysocki
2013-06-26  7:25   ` Mika Westerberg
2013-06-26 12:45     ` Rafael J. Wysocki
2013-06-26 19:48       ` Bjorn Helgaas
2013-06-26 20:01         ` Rafael J. Wysocki
2013-06-26 19:55           ` Bjorn Helgaas

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=1635199.U3MANZpM5C@vostro.rjw.lan \
    --to=rjw@sisk.pl \
    --cc=bhelgaas@google.com \
    --cc=bruce.w.allan@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=john.ronciak@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=miles.j.penner@intel.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=x86@kernel.org \
    --cc=yinghai@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).