From: Linus Torvalds <torvalds@linux-foundation.org>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Frans Pop <elendil@planet.nl>, Greg KH <greg@kroah.com>,
Ingo Molnar <mingo@elte.hu>,
jbarnes@virtuousgeek.org, lenb@kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
tiwai@suse.de, Andrew Morton <akpm@linux-foundation.org>
Subject: Re: Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected)
Date: Thu, 4 Dec 2008 17:45:12 -0800 (PST) [thread overview]
Message-ID: <alpine.LFD.2.00.0812041724130.3543@nehalem.linux-foundation.org> (raw)
In-Reply-To: <200812050208.33827.rjw@sisk.pl>
On Fri, 5 Dec 2008, Rafael J. Wysocki wrote:
> >
> > Maybe the PIO window matters? Any magic suspend registers are usually in
> > PIO space, not in MMIO space. Did /proc/ioports change, and if so, how?
>
> |18,20c18,19
> |< 1000-1fff : PCI Bus 0000:03
> |< 1000-10ff : PCI CardBus 0000:04
> |< 1400-14ff : PCI CardBus 0000:04
> |---
> |> 1000-10ff : PCI CardBus 0000:04
> |> 1400-14ff : PCI CardBus 0000:04
>
> where the first one is with my patch and the second one is with the "no sizing
> for transparent bridges" patch. No difference to my eyes, if the "transparent"
> bridge is really transparent. :-)
Well, there _is_ a difference, although a subtle one. Not for the Cardbus
card itself, but for decode of _non-cardbus_ IO ranges.
IOW, if there is a secret magic IO port that we don't know about at (say)
address 0x1100, then the difference is that now there would be a fight
over who would take it.
And I think I actually have found some secret IO decoding in ICH7. Damn. I
_hate_ it when Intel does that. I asked (long ago) that Intel double-check
that we have quirks for all their idiotic magic IO addresses, but they
clearly never did that.
Or maybe I'm reading the ICH7 docs wrong. But I don't think I am.
NOTE NOTE NOTE! I didn't check which all LPC bridges there are out there
that have these magic registers. But it shows up in the ICH7 docs. It
migth exist in ICH[5-9] for all I know. But at least for ICH7, the only
LPC bridge ID's I find in the spec update are 27b8, 27b9 and 27bd, which
are those three devices that I list in the quirks.
Somebody should double-check this, and also check whether ICH6-9 have the
same LPC decode logic..
Anyway, does this cause anything to be printed out for you? I have _not_
checked whether this is the only such programmable hidden range register
set.
That said, the "no IO window" case should be the safe one (if there are
hidden IO ports that clash), and it's the one that does _not_ work for
you, so this may not be it either. But these kinds of quirks were very
common reasons for ACPI power states not working (because we would just
allocate something else on top of the damn hidden things that we didn't
know about).
Linus
---
drivers/pci/quirks.c | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 5f4f85f..355ccf2 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -474,6 +474,42 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9_4, quirk_
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9_7, quirk_ich6_lpc_acpi);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9_8, quirk_ich6_lpc_acpi);
+static void __devinit ich7_lpc_generic_decode(struct pci_dev *dev, unsigned reg, const char *name)
+{
+ u32 val;
+ u32 mask, base;
+
+ pci_read_config_dword(dev, reg, &val);
+
+ /* Enabled? */
+ if (!(val & 1))
+ return;
+
+ /* Base in bits 15:2 */
+ base = val & 0xfffc;
+
+ /* Decode mask in bits 23:18 */
+ mask = (val >> 16) & 0xfc;
+
+ /* The mask is only on a dword address, the word/byte is always matched */
+ mask |= 3;
+
+ /* Just print it out for now. We should reserve it after debugging */
+ dev_info(&dev->dev, "%s PIO at %04x (mask %04x)\n", name, base, mask);
+}
+
+static void __devinit quirk_ich7_lpc_decode(struct pci_dev *dev)
+{
+ ich7_lpc_generic_decode(dev, 0x84, "ICH7 LPC Generic IO decode 1");
+ ich7_lpc_generic_decode(dev, 0x88, "ICH7 LPC Generic IO decode 2");
+ ich7_lpc_generic_decode(dev, 0x8c, "ICH7 LPC Generic IO decode 3");
+ ich7_lpc_generic_decode(dev, 0x90, "ICH7 LPC Generic IO decode 4");
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_0, quirk_ich7_lpc_decode);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_1, quirk_ich7_lpc_decode);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_31, quirk_ich7_lpc_decode);
+
+
/*
* VIA ACPI: One IO region pointed to by longword at
* 0x48 or 0x20 (256 bytes of ACPI registers)
next prev parent reply other threads:[~2008-12-05 1:46 UTC|newest]
Thread overview: 137+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-02 2:20 Rafael J. Wysocki
2008-12-02 3:32 ` Linus Torvalds
2008-12-02 3:42 ` Linus Torvalds
2008-12-02 4:31 ` Frans Pop
2008-12-02 4:46 ` Linus Torvalds
2008-12-02 5:29 ` Frans Pop
2008-12-02 5:56 ` Frans Pop
2008-12-02 15:46 ` Linus Torvalds
2008-12-02 17:46 ` Frans Pop
2008-12-02 18:17 ` Linus Torvalds
2008-12-05 8:53 ` MSI changes in .28 Frans Pop
2008-12-05 9:09 ` Yinghai Lu
2008-12-05 12:20 ` Ingo Molnar
2008-12-05 13:04 ` Eric Dumazet
2008-12-05 17:49 ` H. Peter Anvin
2008-12-02 4:13 ` Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected) Frans Pop
2008-12-02 4:36 ` Linus Torvalds
2008-12-02 22:38 ` Rafael J. Wysocki
2008-12-02 23:37 ` Linus Torvalds
2008-12-03 0:00 ` Rafael J. Wysocki
2008-12-03 0:05 ` Rafael J. Wysocki
2008-12-03 0:31 ` Rafael J. Wysocki
2008-12-03 0:41 ` Linus Torvalds
2008-12-03 1:22 ` Rafael J. Wysocki
2008-12-03 2:02 ` Linus Torvalds
2008-12-03 7:40 ` Rafael J. Wysocki
2008-12-03 7:52 ` Rafael J. Wysocki
2008-12-03 11:20 ` Rafael J. Wysocki
2008-12-03 15:53 ` Linus Torvalds
2008-12-04 1:23 ` Rafael J. Wysocki
2008-12-04 4:40 ` Linus Torvalds
2008-12-04 8:21 ` Frans Pop
2008-12-04 22:01 ` Rafael J. Wysocki
2008-12-04 11:29 ` Frans Pop
2008-12-04 16:17 ` Linus Torvalds
2008-12-04 18:00 ` Frans Pop
2008-12-04 20:03 ` Linus Torvalds
2008-12-05 21:26 ` Linus Torvalds
2008-12-05 22:01 ` Rafael J. Wysocki
2008-12-05 22:14 ` Linus Torvalds
2008-12-06 0:04 ` Rafael J. Wysocki
2008-12-06 0:50 ` Linus Torvalds
2008-12-06 1:18 ` Rafael J. Wysocki
2008-12-06 1:55 ` Linus Torvalds
2008-12-06 2:18 ` Rafael J. Wysocki
2008-12-06 13:53 ` Rafael J. Wysocki
2008-12-06 2:45 ` Greg KH
2009-01-28 12:00 ` Frans Pop
2009-01-29 14:11 ` Ingo Molnar
2009-01-29 14:48 ` Rafael J. Wysocki
2009-01-29 16:44 ` Alexey Starikovskiy
2009-01-30 4:35 ` Frans Pop
2008-12-06 9:20 ` [patch,rfc] usb: restore config before enabling device on resume Frans Pop
2008-12-06 13:48 ` Rafael J. Wysocki
2008-12-06 15:02 ` Frans Pop
2008-12-10 14:06 ` "APIC error on CPU1: 00(40)" during resume (was: Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500) Frans Pop
2008-12-10 15:51 ` Linus Torvalds
2008-12-10 16:05 ` Frans Pop
2008-12-10 16:26 ` Linus Torvalds
2008-12-10 16:52 ` Matthew Garrett
2008-12-10 17:13 ` Linus Torvalds
2008-12-10 17:33 ` Ingo Molnar
2008-12-10 18:41 ` Maxim Levitsky
2008-12-20 21:31 ` "APIC error on CPU1: 00(40)" during resume Frans Pop
2008-12-21 8:29 ` Ingo Molnar
2008-12-23 4:28 ` Len Brown
2008-12-04 22:46 ` Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected) Rafael J. Wysocki
2008-12-04 22:40 ` Rafael J. Wysocki
2008-12-04 23:22 ` Linus Torvalds
2008-12-04 23:45 ` Rafael J. Wysocki
2008-12-05 0:07 ` Linus Torvalds
2008-12-05 0:20 ` Rafael J. Wysocki
2008-12-05 6:55 ` Frans Pop
2008-12-04 22:09 ` Rafael J. Wysocki
2008-12-04 22:20 ` Linus Torvalds
2008-12-04 23:31 ` Rafael J. Wysocki
2008-12-05 0:03 ` Linus Torvalds
2008-12-05 0:45 ` Linus Torvalds
2008-12-05 1:08 ` Rafael J. Wysocki
2008-12-05 1:45 ` Linus Torvalds [this message]
2008-12-05 2:55 ` Linus Torvalds
2008-12-05 3:25 ` Linus Torvalds
2008-12-05 6:44 ` Frans Pop
2008-12-05 8:27 ` Frans Pop
2008-12-05 12:00 ` Rafael J. Wysocki
2008-12-05 15:57 ` Linus Torvalds
2008-12-05 21:32 ` Rafael J. Wysocki
2008-12-05 17:25 ` Jesse Barnes
2008-12-02 15:49 ` Rafael J. Wysocki
2008-12-06 14:05 ` [PATCH 0/3] Fix hibernation regression on Toshiba Portege R500 Rafael J. Wysocki
2008-12-06 14:07 ` [PATCH 1/3] PCI: Rework default handling of suspend and resume Rafael J. Wysocki
2008-12-06 17:07 ` Linus Torvalds
2008-12-06 17:22 ` Rafael J. Wysocki
2008-12-06 17:33 ` Linus Torvalds
2008-12-06 17:43 ` Rafael J. Wysocki
2008-12-06 18:00 ` Linus Torvalds
2008-12-06 21:24 ` Rafael J. Wysocki
2008-12-07 4:44 ` Jesse Barnes
2008-12-07 5:41 ` Greg KH
2008-12-07 12:47 ` Rafael J. Wysocki
2008-12-07 16:44 ` Linus Torvalds
2008-12-07 21:02 ` Rafael J. Wysocki
2008-12-07 17:26 ` Greg KH
2008-12-07 23:34 ` [PATCH 1/3] PCI: Rework default handling of suspend and resume (rebased) Rafael J. Wysocki
2008-12-06 18:30 ` [linux-pm] [PATCH 1/3] PCI: Rework default handling of suspend and resume Alan Stern
2008-12-06 21:36 ` Rafael J. Wysocki
2008-12-06 22:24 ` Linus Torvalds
2008-12-06 23:25 ` Arjan van de Ven
2008-12-06 23:35 ` Alan Cox
2008-12-07 6:00 ` Linus Torvalds
2008-12-07 6:03 ` Linus Torvalds
2008-12-07 13:39 ` Rafael J. Wysocki
2008-12-07 16:34 ` Linus Torvalds
2008-12-14 9:28 ` Pavel Machek
2008-12-07 17:18 ` Arjan van de Ven
2008-12-07 9:44 ` Takashi Iwai
2008-12-07 0:02 ` Alan Stern
2008-12-07 13:14 ` Rafael J. Wysocki
2008-12-06 21:09 ` Alan Cox
2008-12-06 21:50 ` Rafael J. Wysocki
2008-12-06 14:07 ` [PATCH 2/3] PCI: Suspend and resume PCI Express ports with interrupts disabled Rafael J. Wysocki
2008-12-06 17:15 ` Linus Torvalds
2008-12-06 17:25 ` Rafael J. Wysocki
2008-12-06 17:38 ` Linus Torvalds
2008-12-06 17:46 ` Rafael J. Wysocki
2008-12-07 2:18 ` Jesse Barnes
2008-12-07 12:53 ` Rafael J. Wysocki
2008-12-06 14:09 ` [PATCH 3/3] Sound (HDA Intel): Restore PCI configuration space with interrupts off Rafael J. Wysocki
2008-12-07 4:45 ` Jesse Barnes
2008-12-07 9:47 ` Takashi Iwai
2008-12-11 7:07 ` Takashi Iwai
2008-12-11 20:03 ` Rafael J. Wysocki
2008-12-11 20:27 ` Takashi Iwai
2008-12-11 20:38 ` Rafael J. Wysocki
2008-12-12 6:32 ` Takashi Iwai
2008-12-06 19:30 ` [PATCH 0/3] Fix hibernation regression on Toshiba Portege R500 Frans Pop
2008-12-02 7:53 Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected) Frans Pop
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=alpine.LFD.2.00.0812041724130.3543@nehalem.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=akpm@linux-foundation.org \
--cc=elendil@planet.nl \
--cc=greg@kroah.com \
--cc=jbarnes@virtuousgeek.org \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rjw@sisk.pl \
--cc=tiwai@suse.de \
/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
Powered by JetHome