public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: shaohua.li@intel.com, linux-pm@lists.linux-foundation.org,
	linux-acpi@vger.kernel.org, stern@rowland.harvard.edu
Subject: Re: [RFC 3/5] pci wakeup handler
Date: Tue, 9 Sep 2008 09:18:17 -0700	[thread overview]
Message-ID: <200809090918.18343.david-b@pacbell.net> (raw)
In-Reply-To: <200809091309.01433.rjw@sisk.pl>

On Tuesday 09 September 2008, Rafael J. Wysocki wrote:
> > 
> > Another rather important case is bridges.  I observe that with ACPI
> > the way PME# is handled for add-in cards _seems_ to be that the bridge
> > for that PCI bus segment gets a GPE (presumably matching the PME#
> > signal for that bus segment, and maybe for its subsidiaries).  That
> > suggests the bridge will need to scan its children to find out which
> > one(s) issued PME#.  You didn't include such code here, where that
> > notification will be received...
> 
> AFAICS, the 'original' PCI PME# (as opposed to the PCI Express native PME)
> signal is supposed to be routed _around_ bridges and (presumably) the entire
> PME# network would share one GPE in that case.

To the extent that board designers are expected to follow
such rules, but have the power not to do so, we know that
relying on such expectations would be ... unwise.  ;)

Isn't the notion of a GPE pretty much an x86-ism?
For non-x86 systems I'd just think "IRQ".  And for
x86, I regularly wonder if maybe chaining through
genirq wouldn't make SCI interrupts, including GPEs,
become a lot more robust.  :(

I suspect folk maintaining non-ACPI platforms with PCI
wiill have to help sort out this particular issue.  I
suspect their board designs will provide at least one
PME# indication.  ISTR multiple PME# domains were OK,
at least in the "one per root bridge" sense, but I've
not looked at the relevant spec recently.


> Then, we'd actually have to 
> check all of the PCI devices to see which of them caused the event to happen.

That emphasizes my point:  that patch #3 needs to include code
to handle bridges, scanning wakeup-eligible devices until it
finds the relevant one(s).

Of course there should be a few ways to speed that scanning:

 - First, bridges shouldn't need to scan devices for which PME#
   was not enabled.  Make pci_enable_wake() record that state
   for use in scanning ... look at that handful of devices first.
   (And possibly the rest later, in case of errors.)

 - Second, ACPI-specific, is to recognize that the mainboard
   devices all seem to be associated with private GPEs so they
   can get direct wake event notifications.  So when the PCI
   device getting this notification/probe isn't a bridge, it
   won't need to scan other devices.

EVERY system I have here seems to have PCI devices, including
ones in add-in slots, which will require that scanning ...
because they don't show up in the ACPI tables (second case).

- Dave
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2008-09-09 16:26 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-08  9:19 [RFC 0/5] device wakeup event support shaohua.li
2008-09-08  9:19 ` [RFC 1/5] devcore introduce wakeup_event callback shaohua.li
2008-09-09  2:56   ` David Brownell
2008-09-09  3:49     ` Li, Shaohua
2008-09-09  5:26       ` David Brownell
2008-09-09  8:36         ` Li, Shaohua
2008-09-09 11:45           ` Rafael J. Wysocki
2008-09-09 14:22             ` Alan Stern
2008-09-09 14:18         ` Alan Stern
2008-09-09 15:52           ` David Brownell
2008-09-09 18:39             ` Alan Stern
2008-09-08  9:19 ` [RFC 2/5] devcore adds generic wakeup event handler shaohua.li
2008-09-08  9:19 ` [RFC 3/5] pci wakeup handler shaohua.li
2008-09-08 13:09   ` Rafael J. Wysocki
2008-09-09  1:44     ` Li, Shaohua
2008-09-09  2:56       ` David Brownell
2008-09-09  3:38         ` Li, Shaohua
2008-09-09  2:56   ` David Brownell
2008-09-09  3:33     ` Li, Shaohua
2008-09-09  4:04       ` David Brownell
2008-09-09 11:09     ` Rafael J. Wysocki
2008-09-09 16:18       ` David Brownell [this message]
2008-09-08  9:19 ` [RFC 4/5] PCIe native PME detection shaohua.li
2008-09-08 21:36   ` Rafael J. Wysocki
2008-09-09  1:21     ` Li, Shaohua
2008-09-08  9:19 ` [RFC 5/5] ACPI GPE based wakeup event detection shaohua.li
2008-09-08 20:57   ` Rafael J. Wysocki
2008-09-09  1:13     ` Zhao Yakui
2008-09-09  1:08       ` Li, Shaohua
2008-09-09 11:17         ` Rafael J. Wysocki
2008-09-09 14:08       ` Alan Stern
2008-09-09  2:41 ` [RFC 0/5] device wakeup event support David Brownell
2008-09-09  3:54   ` Li, Shaohua
  -- strict thread matches above, loose matches on Subject: below --
2008-09-11  6:30 [RFC 0/5] device wakeup event support v2 Shaohua Li
2008-09-11  6:30 ` [RFC 3/5] pci wakeup handler Shaohua Li
2008-10-19 19:50   ` Rafael J. Wysocki
2008-10-22  5:34     ` Shaohua Li
2008-10-22 12:01       ` 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=200809090918.18343.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=rjw@sisk.pl \
    --cc=shaohua.li@intel.com \
    --cc=stern@rowland.harvard.edu \
    /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