* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <200712240305.18080.carlos@strangeworlds.co.uk>
@ 2007-12-24 13:44 ` Rafael J. Wysocki
2007-12-24 18:34 ` Linus Torvalds
0 siblings, 1 reply; 18+ messages in thread
From: Rafael J. Wysocki @ 2007-12-24 13:44 UTC (permalink / raw)
To: Carlos Corbacho
Cc: Andrew Morton, Greg KH, Linux Kernel Mailing List, Ingo Molnar,
pm list, Thomas Gleixner, Linus Torvalds, H. Peter Anvin
On Monday, 24 of December 2007, Carlos Corbacho wrote:
> On Monday 24 December 2007 01:14:34 Linus Torvalds wrote:
> > Side note: we could obviously undo the commit that triggered this for you
> > [..]
> > In other words, we'd have to go back to our original ordering, which Len
> > said was fundamentally wrong. I don't think anybody really wants that.
>
> Nor would I argue to do so.
>
> > It would be better to figure out why "device_suspend()" apparently causes
> > problems for your AML crud.
>
> Will do - thanks for the pointer.
Well, having considered that for a longer while, I think the AML code is
referring to a device that we have suspended already, and since it's in a low
power state, it just can't handle the reference.
If that is the case, we'll have to find the device (that should be possible
using some code instrumentation) and move the suspending of it into the late
stage.
> > Oh, and why is linux-kernel cc'd, but not linux-pm?
>
> Because I like to compound my errors (I mean, if you're going to screw up, you
> might as well _really_ go for it).
BTW, linux-pm is on linux-foundation, changed the CC. ;-)
Thanks,
Rafael
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
2007-12-24 13:44 ` x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM Rafael J. Wysocki
@ 2007-12-24 18:34 ` Linus Torvalds
2007-12-24 21:53 ` Carlos Corbacho
` (2 more replies)
0 siblings, 3 replies; 18+ messages in thread
From: Linus Torvalds @ 2007-12-24 18:34 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, Ingo Molnar, pm list, H. Peter Anvin,
Thomas Gleixner
On Mon, 24 Dec 2007, Rafael J. Wysocki wrote:
>
> Well, having considered that for a longer while, I think the AML code is
> referring to a device that we have suspended already, and since it's in a low
> power state, it just can't handle the reference.
>
> If that is the case, we'll have to find the device (that should be possible
> using some code instrumentation) and move the suspending of it into the late
> stage.
Yes.
In general, I'm personally of the opinion that drivers should *not*
actually go into D3 at all in the regular "->suspend()" phase. It should
be done in ->suspend_late. The early suspend is for saving state and
returning errors.
Sadly, we've made it a bit too inconvenient to actually do that. Almost
all drivers only do the "->suspend" thing, and the default PCI behaviour
doesn't help us in any way either.
Anyway, I wonder if a patch like this could make it easier for driver
writers to handle things. It basically does:
- if you don't have a regular "suspend()" function, we'll just save state
at suspend time.
- if you don't have a "suspend_late()" function, we'll look at the
current state, and if it's still in PCI_D0, we'll suspend to PCI_D3hot
if it's a regular PCI device (ie not a bridge or something else odd).
- then, at resume time, by default we don't do anything in the early
resume, but in the late resume we'll undo everything, of course.
Anyway, with this, most drivers could just remove the
"pci_set_power_state()" call *entirely*, and let the default
suspend_late action power the device down. But if you want to override
that default action, you can either:
- set the power state in your own ->suspend() routine (either by using
pci_set_power_state(), or by just explicitly setting the state to
unknown with "dev->current_state = PCI_UNKNOWN"
- have a "late_suspend()" action, which obviously will override the
default action entirely.
Hmm?
In the case of the NVidia issue, one thing to try migh be to remove the
current call to "pci_set_power_state(pdev, 3);" in agp_nvidia_suspend() in
drivers/char/agp/nvidia-agp.c. That sounds like the most likely culprit
for something that ACPI might want to shut down.
NOTE! This following patch is just for discussion, and while I think it's
conceptually a good thing to try, I don't think it will help Carlos'
problem. But removing the "pci_set_power_state()" in agp_nvidia_suspend()
might.
Linus
---
drivers/pci/pci-driver.c | 32 +++++++++++++++++++++++++-------
1 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index 6d1a216..6992f73 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -264,6 +264,28 @@ static int pci_device_remove(struct device * dev)
return 0;
}
+static void pci_default_suspend(struct pci_dev *dev, pm_message_t state)
+{
+ pci_save_state(dev);
+}
+
+static void pci_default_suspend_late(struct pci_dev *dev, pm_message_t state)
+{
+ /* Something has already suspended it? Never mind then.. */
+ if (dev->current_state != PCI_D0)
+ return;
+
+ /* We avoid powering down bridges by default.. */
+ if (dev->hdr_type == PCI_HEADER_TYPE_NORMAL)
+ pci_set_power_state(dev, PCI_D3hot);
+
+ /*
+ * mark its power state as "unknown", since we don't know if
+ * e.g. the BIOS will change its device state when we suspend.
+ */
+ dev->current_state = PCI_UNKNOWN;
+}
+
static int pci_device_suspend(struct device * dev, pm_message_t state)
{
struct pci_dev * pci_dev = to_pci_dev(dev);
@@ -274,13 +296,7 @@ static int pci_device_suspend(struct device * dev, pm_message_t state)
i = drv->suspend(pci_dev, state);
suspend_report_result(drv->suspend, i);
} else {
- pci_save_state(pci_dev);
- /*
- * mark its power state as "unknown", since we don't know if
- * e.g. the BIOS will change its device state when we suspend.
- */
- if (pci_dev->current_state == PCI_D0)
- pci_dev->current_state = PCI_UNKNOWN;
+ pci_default_suspend(pci_dev, state);
}
return i;
}
@@ -294,6 +310,8 @@ static int pci_device_suspend_late(struct device * dev, pm_message_t state)
if (drv && drv->suspend_late) {
i = drv->suspend_late(pci_dev, state);
suspend_report_result(drv->suspend_late, i);
+ } else {
+ pci_default_suspend_late(pci_dev, state);
}
return i;
}
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
2007-12-24 18:34 ` Linus Torvalds
@ 2007-12-24 21:53 ` Carlos Corbacho
2007-12-25 16:13 ` Suspend code ordering (again) (was: Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM) Rafael J. Wysocki
[not found] ` <200712251713.13223.rjw@sisk.pl>
2 siblings, 0 replies; 18+ messages in thread
From: Carlos Corbacho @ 2007-12-24 21:53 UTC (permalink / raw)
To: Linus Torvalds
Cc: Andrew Morton, Greg KH, Linux Kernel Mailing List, Ingo Molnar,
pm list, H. Peter Anvin, Thomas Gleixner
On Monday 24 December 2007 18:34:21 Linus Torvalds wrote:
> On Mon, 24 Dec 2007, Rafael J. Wysocki wrote:
> > Well, having considered that for a longer while, I think the AML code is
> > referring to a device that we have suspended already, and since it's in a
> > low power state, it just can't handle the reference.
> >
> > If that is the case, we'll have to find the device (that should be
> > possible using some code instrumentation) and move the suspending of it
> > into the late stage.
>
> Yes.
My own experimentation (in device_suspend(), calling _PTS() in the AML after
each suspend_device() runs, until one device causes it to hang) points to
ohci_hcd being the culprit here (with or without any devices attached). With
the ohci_hcd module unloaded, the machine suspends just fine[1].
Of course, I'm at a complete loss as to why suspending OHCI would cause a
problem for an IO port write.
> NOTE! This following patch is just for discussion, and while I think it's
> conceptually a good thing to try, I don't think it will help Carlos'
> problem. But removing the "pci_set_power_state()" in agp_nvidia_suspend()
> might.
nvidia-agp cannot be built on x86-64, so it's not the culprit in this case.
-Carlos
[1] And yes, I double checked the custom DSDT is not loaded this time.
--
E-Mail: carlos@strangeworlds.co.uk
Web: strangeworlds.co.uk
GPG Key ID: 0x23EE722D
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <fa.ZBHAMdWAEaW7Flaz8/Gc8PLZUNg@ifi.uio.no>
@ 2007-12-24 22:40 ` Robert Hancock
[not found] ` <4770356E.1000407@shaw.ca>
1 sibling, 0 replies; 18+ messages in thread
From: Robert Hancock @ 2007-12-24 22:40 UTC (permalink / raw)
To: Carlos Corbacho
Cc: Andrew Morton, Greg KH, Linux Kernel Mailing List,
Thomas Gleixner, pm list, H. Peter Anvin, Linus Torvalds,
Ingo Molnar
Carlos Corbacho wrote:
> On Monday 24 December 2007 18:34:21 Linus Torvalds wrote:
>> On Mon, 24 Dec 2007, Rafael J. Wysocki wrote:
>>> Well, having considered that for a longer while, I think the AML code is
>>> referring to a device that we have suspended already, and since it's in a
>>> low power state, it just can't handle the reference.
>>>
>>> If that is the case, we'll have to find the device (that should be
>>> possible using some code instrumentation) and move the suspending of it
>>> into the late stage.
>> Yes.
>
> My own experimentation (in device_suspend(), calling _PTS() in the AML after
> each suspend_device() runs, until one device causes it to hang) points to
> ohci_hcd being the culprit here (with or without any devices attached). With
> the ohci_hcd module unloaded, the machine suspends just fine[1].
>
> Of course, I'm at a complete loss as to why suspending OHCI would cause a
> problem for an IO port write.
The name of the operation region, SMIP, suggests that the BIOS has an
SMI trap on that port. In that case, writing to that port will result in
the BIOS taking control. We have little idea what it could be doing.
Could be it's trying to access the OHCI controller which has been
suspended already.
This sounds kind of like the Toshiba laptops that go nuts somewhere if
the AHCI SATA controller gets put into suspend state before the system
suspends..
The ACPI spec has the following to say about the _PTS method:
"The platform must not make any assumptions about the state of the
machine when _PTS is called. For example, operation region accesses that
require devices to be configured and enabled may not succeed, as these
devices may be in a non-decoding state due to plug and play or power
management operations."
I would guess some BIOS writers failed to heed this..
>
>> NOTE! This following patch is just for discussion, and while I think it's
>> conceptually a good thing to try, I don't think it will help Carlos'
>> problem. But removing the "pci_set_power_state()" in agp_nvidia_suspend()
>> might.
>
> nvidia-agp cannot be built on x86-64, so it's not the culprit in this case.
Yeah, and this is a PCI Express system not AGP, so it wouldn't load anyway.
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <4770356E.1000407@shaw.ca>
@ 2007-12-25 0:03 ` Carlos Corbacho
0 siblings, 0 replies; 18+ messages in thread
From: Carlos Corbacho @ 2007-12-25 0:03 UTC (permalink / raw)
To: Robert Hancock
Cc: Andrew Morton, Greg KH, Linux Kernel Mailing List,
Thomas Gleixner, pm list, H. Peter Anvin, Linus Torvalds,
Ingo Molnar
On Monday 24 December 2007 22:40:46 Robert Hancock wrote:
> The ACPI spec has the following to say about the _PTS method:
>
> "The platform must not make any assumptions about the state of the
> machine when _PTS is called. For example, operation region accesses that
> require devices to be configured and enabled may not succeed, as these
> devices may be in a non-decoding state due to plug and play or power
> management operations."
That is from the 3.0 spec though. And it looks like the definition changed
from pre-3.0 to 3.0 and above.
This is what the 1.0B spec says (and this is also repeated verbatim in 2.0,
2.0a, 2.0b, and 2.0c):
"The _PTS control method is executed by the operating system at the beginning
of the sleep process for S1, S2, S3, S4, and for orderly S5 shutdown. The
sleeping state value (1, 2, 3, 4, or 5) is passed to the _PTS control method.
Before the OS notifies native device drivers and prepares the system software
for a system sleeping state, it executes this ACPI control method. Thus, this
control method can be executed a relatively long time before actually
entering the desired sleeping state. In addition, the OS can abort the
sleeping operation without notification to the ACPI driver, in which case
another _PTS would occur some time before the next attempt by the OS to enter
a sleeping state. The _PTS control method cannot modify the current
configuration or power state of any device in the system. For example, _PTS
would simply store the sleep type in the embedded controller in sequencing
the system into a sleep state when the SLP_EN bit is set."
According to the earlier versions of the ACPI spec, Linux is doing the wrong
thing - we should call _PTS() before we start powerding down devices, or
notifying device drivers to start suspending.
So, my limited understanding of what we currently do for ACPI suspend-to-RAM
is:
1) Freeze processes/ devices
2) Put all devices into low power mode
3) Execute _PTS()
4) Suspend system
So the problem is - our current suspend order is fine for ACPI 3.0 and above,
but for pre-3.0 systems, this violates the older specs, where 2) and 3)
should be reversed.
> I would guess some BIOS writers failed to heed this..
No, it looks like the BIOS is obeying the older specs, and Linux is at fault
here for breaking the suspend logic of pre ACPI 3.0 systems.
-Carlos
--
E-Mail: carlos@strangeworlds.co.uk
Web: strangeworlds.co.uk
GPG Key ID: 0x23EE722D
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <200712251426.14024.rjw@sisk.pl>
@ 2007-12-25 13:12 ` Carlos Corbacho
[not found] ` <200712251312.43478.carlos@strangeworlds.co.uk>
1 sibling, 0 replies; 18+ messages in thread
From: Carlos Corbacho @ 2007-12-25 13:12 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Robert Hancock, Andrew Morton, Greg KH, Linux Kernel Mailing List,
Thomas Gleixner, Ingo Molnar, pm list, Linus Torvalds,
H. Peter Anvin
On Tuesday 25 December 2007 13:26:12 Rafael J. Wysocki wrote:
> Well, citing from the ACPI 2.0 specification, section 9.1.6 Transitioning
> from the Working to the Sleeping State (which is what we're discussing
> here):
>
> 3. OSPM places all device drivers into their respective Dx state. If the
> device is enabled for wake, it enters the Dx state associated with the wake
> capability. If the device is not enabled to wake the system, it enters the
> D3 state.
> 4. OSPM executes the _PTS control method, passing an argument that
> indicates the desired sleeping state (1, 2, 3, or 4 representing S1, S2,
> S3, and S4).
>
> My opinion is that we should follow this part of the specification and so
> we do.
This is that same section from ACPI 1.0B:
3. The OS executes the Prepare To Sleep (_PTS) control method, passing an
argument that indicates the desired sleeping state (1, 2, 3, or 4 representing
S1, S2, S3, and S4).
4. The OS places all device drivers into their respective Dx state. If the
device is enabled for wakeup, it enters the Dx state associated with the
wakeup capability. If the device is not enabled to wakeup the system, it
enters the D3 state.
The DSDTs in question also claim ACPI 1.0 compatiblity.
> You're wrong, sorry.
No, I'm not entirely wrong - read the 1.0 spec, and read section 7.3.2 of the
ACPI 2.0 spec.
* ACPI 1.0 is very clear - we are breaking the 1.0 spec
* ACPI 2.0 is contradictory - section 7.3.2 repeats 1.0 ad verbatim (which is
what I quote in reply to Robert Hancock), but as you point out, 9.3.2 says
the opposite.
So, 1.0 and 3.0 are very clear and rather different on this, and 2.0 is
contradictory (and I presume this is one of the points ACPI 3.0 set out to
clean up).
I will rescind my point on ACPI 2.0 - I don't know what we should or shouldn't
be doing there, the spec is unclear.
But for ACPI 1.0, we are doing the wrong thing.
-Carlos
--
E-Mail: carlos@strangeworlds.co.uk
Web: strangeworlds.co.uk
GPG Key ID: 0x23EE722D
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <200712250003.27570.carlos@strangeworlds.co.uk>
[not found] ` <200712251426.14024.rjw@sisk.pl>
@ 2007-12-25 13:26 ` Rafael J. Wysocki
1 sibling, 0 replies; 18+ messages in thread
From: Rafael J. Wysocki @ 2007-12-25 13:26 UTC (permalink / raw)
To: Carlos Corbacho, pm list
Cc: Robert Hancock, Andrew Morton, Greg KH, Linux Kernel Mailing List,
Thomas Gleixner, H. Peter Anvin, Linus Torvalds, Ingo Molnar
On Tuesday, 25 of December 2007, Carlos Corbacho wrote:
> On Monday 24 December 2007 22:40:46 Robert Hancock wrote:
> > The ACPI spec has the following to say about the _PTS method:
> >
> > "The platform must not make any assumptions about the state of the
> > machine when _PTS is called. For example, operation region accesses that
> > require devices to be configured and enabled may not succeed, as these
> > devices may be in a non-decoding state due to plug and play or power
> > management operations."
>
> That is from the 3.0 spec though. And it looks like the definition changed
> from pre-3.0 to 3.0 and above.
>
> This is what the 1.0B spec says (and this is also repeated verbatim in 2.0,
> 2.0a, 2.0b, and 2.0c):
>
> "The _PTS control method is executed by the operating system at the beginning
> of the sleep process for S1, S2, S3, S4, and for orderly S5 shutdown. The
> sleeping state value (1, 2, 3, 4, or 5) is passed to the _PTS control method.
> Before the OS notifies native device drivers and prepares the system software
> for a system sleeping state, it executes this ACPI control method. Thus, this
> control method can be executed a relatively long time before actually
> entering the desired sleeping state. In addition, the OS can abort the
> sleeping operation without notification to the ACPI driver, in which case
> another _PTS would occur some time before the next attempt by the OS to enter
> a sleeping state. The _PTS control method cannot modify the current
> configuration or power state of any device in the system. For example, _PTS
> would simply store the sleep type in the embedded controller in sequencing
> the system into a sleep state when the SLP_EN bit is set."
>
> According to the earlier versions of the ACPI spec, Linux is doing the wrong
> thing - we should call _PTS() before we start powerding down devices, or
> notifying device drivers to start suspending.
Well, citing from the ACPI 2.0 specification, section 9.1.6 Transitioning from
the Working to the Sleeping State (which is what we're discussing here):
3. OSPM places all device drivers into their respective Dx state. If the device
is enabled for wake, it enters the Dx state associated with the wake
capability. If the device is not enabled to wake the system, it enters the
D3 state.
4. OSPM executes the _PTS control method, passing an argument that indicates
the desired sleeping state (1, 2, 3, or 4 representing S1, S2, S3, and S4).
My opinion is that we should follow this part of the specification and so we do.
> So, my limited understanding of what we currently do for ACPI suspend-to-RAM
> is:
>
> 1) Freeze processes/ devices
> 2) Put all devices into low power mode
> 3) Execute _PTS()
> 4) Suspend system
>
> So the problem is - our current suspend order is fine for ACPI 3.0 and above,
> but for pre-3.0 systems, this violates the older specs, where 2) and 3)
> should be reversed.
>
> > I would guess some BIOS writers failed to heed this..
>
> No, it looks like the BIOS is obeying the older specs, and Linux is at fault
> here for breaking the suspend logic of pre ACPI 3.0 systems.
You're wrong, sorry.
Greetings,
Rafael
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <200712251312.43478.carlos@strangeworlds.co.uk>
@ 2007-12-25 14:11 ` Rafael J. Wysocki
2007-12-25 17:17 ` Robert Hancock
[not found] ` <47713B2B.3000105@shaw.ca>
2 siblings, 0 replies; 18+ messages in thread
From: Rafael J. Wysocki @ 2007-12-25 14:11 UTC (permalink / raw)
To: Carlos Corbacho
Cc: Robert Hancock, Andrew Morton, Greg KH, Linux Kernel Mailing List,
Thomas Gleixner, Ingo Molnar, pm list, Linus Torvalds,
H. Peter Anvin
On Tuesday, 25 of December 2007, Carlos Corbacho wrote:
> On Tuesday 25 December 2007 13:26:12 Rafael J. Wysocki wrote:
> > Well, citing from the ACPI 2.0 specification, section 9.1.6 Transitioning
> > from the Working to the Sleeping State (which is what we're discussing
> > here):
> >
> > 3. OSPM places all device drivers into their respective Dx state. If the
> > device is enabled for wake, it enters the Dx state associated with the wake
> > capability. If the device is not enabled to wake the system, it enters the
> > D3 state.
> > 4. OSPM executes the _PTS control method, passing an argument that
> > indicates the desired sleeping state (1, 2, 3, or 4 representing S1, S2,
> > S3, and S4).
> >
> > My opinion is that we should follow this part of the specification and so
> > we do.
>
> This is that same section from ACPI 1.0B:
>
> 3. The OS executes the Prepare To Sleep (_PTS) control method, passing an
> argument that indicates the desired sleeping state (1, 2, 3, or 4 representing
> S1, S2, S3, and S4).
>
> 4. The OS places all device drivers into their respective Dx state. If the
> device is enabled for wakeup, it enters the Dx state associated with the
> wakeup capability. If the device is not enabled to wakeup the system, it
> enters the D3 state.
>
> The DSDTs in question also claim ACPI 1.0 compatiblity.
>
> > You're wrong, sorry.
>
> No, I'm not entirely wrong - read the 1.0 spec, and read section 7.3.2 of the
> ACPI 2.0 spec.
>
> * ACPI 1.0 is very clear - we are breaking the 1.0 spec
By following the 2.0 and later ones. Well ...
> * ACPI 2.0 is contradictory - section 7.3.2 repeats 1.0 ad verbatim (which is
> what I quote in reply to Robert Hancock), but as you point out, 9.3.2 says
> the opposite.
>
> So, 1.0 and 3.0 are very clear and rather different on this, and 2.0 is
> contradictory (and I presume this is one of the points ACPI 3.0 set out to
> clean up).
>
> I will rescind my point on ACPI 2.0 - I don't know what we should or shouldn't
> be doing there, the spec is unclear.
I think we should follow section 9.3.2 that is explicit and has been reiterated
in the 3.0 specification.
> But for ACPI 1.0, we are doing the wrong thing.
Yes, we are.
OK, I think we can rearrange things to call _PTS early for ACPI 1.0x-compliant
systems.
Thanks,
Rafael
^ permalink raw reply [flat|nested] 18+ messages in thread
* Suspend code ordering (again) (was: Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM)
2007-12-24 18:34 ` Linus Torvalds
2007-12-24 21:53 ` Carlos Corbacho
@ 2007-12-25 16:13 ` Rafael J. Wysocki
[not found] ` <200712251713.13223.rjw@sisk.pl>
2 siblings, 0 replies; 18+ messages in thread
From: Rafael J. Wysocki @ 2007-12-25 16:13 UTC (permalink / raw)
To: Linus Torvalds
Cc: Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, ACPI Devel Maling List, Ingo Molnar,
pm list, H. Peter Anvin, Thomas Gleixner
On Monday, 24 of December 2007, Linus Torvalds wrote:
>
> On Mon, 24 Dec 2007, Rafael J. Wysocki wrote:
> >
> > Well, having considered that for a longer while, I think the AML code is
> > referring to a device that we have suspended already, and since it's in a low
> > power state, it just can't handle the reference.
> >
> > If that is the case, we'll have to find the device (that should be possible
> > using some code instrumentation) and move the suspending of it into the late
> > stage.
>
> Yes.
>
> In general, I'm personally of the opinion that drivers should *not*
> actually go into D3 at all in the regular "->suspend()" phase. It should
> be done in ->suspend_late. The early suspend is for saving state and
> returning errors.
>
> Sadly, we've made it a bit too inconvenient to actually do that. Almost
> all drivers only do the "->suspend" thing, and the default PCI behaviour
> doesn't help us in any way either.
>
> Anyway, I wonder if a patch like this could make it easier for driver
> writers to handle things. It basically does:
>
> - if you don't have a regular "suspend()" function, we'll just save state
> at suspend time.
>
> - if you don't have a "suspend_late()" function, we'll look at the
> current state, and if it's still in PCI_D0, we'll suspend to PCI_D3hot
> if it's a regular PCI device (ie not a bridge or something else odd).
>
> - then, at resume time, by default we don't do anything in the early
> resume, but in the late resume we'll undo everything, of course.
>
> Anyway, with this, most drivers could just remove the
> "pci_set_power_state()" call *entirely*, and let the default
> suspend_late action power the device down. But if you want to override
> that default action, you can either:
>
> - set the power state in your own ->suspend() routine (either by using
> pci_set_power_state(), or by just explicitly setting the state to
> unknown with "dev->current_state = PCI_UNKNOWN"
>
> - have a "late_suspend()" action, which obviously will override the
> default action entirely.
>
> Hmm?
Well, as Carlos correctly noticed, the problem is related to the change in
the ACPI specification between versions 1.0x and 2.0. Namely, while ACPI
2.0 and later wants us to put devices into low power states before calling
_PTS, ACPI 1.0x wants us to do that after calling _PTS. Since we're following
the 2.0 and later specifications right now, we're not doing the right thing for
the (strictly) ACPI 1.0x-compliant systems.
We ought to be able to fix things on the high level, by calling _PTS earlier on
systems that claim to be ACPI 1.0x-compliant. That will require us to modify
the generic susped code quite a bit and will need to be tested for some time.
I'm going to prepare patches to implement this idea targeted for the 2.6.25
time frame.
Greetings,
Rafael
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <200712251312.43478.carlos@strangeworlds.co.uk>
2007-12-25 14:11 ` Rafael J. Wysocki
@ 2007-12-25 17:17 ` Robert Hancock
[not found] ` <47713B2B.3000105@shaw.ca>
2 siblings, 0 replies; 18+ messages in thread
From: Robert Hancock @ 2007-12-25 17:17 UTC (permalink / raw)
To: Carlos Corbacho
Cc: Andrew Morton, Greg KH, Linux Kernel Mailing List,
Thomas Gleixner, Ingo Molnar, pm list, Linus Torvalds,
H. Peter Anvin
Carlos Corbacho wrote:
> On Tuesday 25 December 2007 13:26:12 Rafael J. Wysocki wrote:
>> Well, citing from the ACPI 2.0 specification, section 9.1.6 Transitioning
>> from the Working to the Sleeping State (which is what we're discussing
>> here):
>>
>> 3. OSPM places all device drivers into their respective Dx state. If the
>> device is enabled for wake, it enters the Dx state associated with the wake
>> capability. If the device is not enabled to wake the system, it enters the
>> D3 state.
>> 4. OSPM executes the _PTS control method, passing an argument that
>> indicates the desired sleeping state (1, 2, 3, or 4 representing S1, S2,
>> S3, and S4).
>>
>> My opinion is that we should follow this part of the specification and so
>> we do.
>
> This is that same section from ACPI 1.0B:
>
> 3. The OS executes the Prepare To Sleep (_PTS) control method, passing an
> argument that indicates the desired sleeping state (1, 2, 3, or 4 representing
> S1, S2, S3, and S4).
>
> 4. The OS places all device drivers into their respective Dx state. If the
> device is enabled for wakeup, it enters the Dx state associated with the
> wakeup capability. If the device is not enabled to wakeup the system, it
> enters the D3 state.
>
> The DSDTs in question also claim ACPI 1.0 compatiblity.
>
>> You're wrong, sorry.
>
> No, I'm not entirely wrong - read the 1.0 spec, and read section 7.3.2 of the
> ACPI 2.0 spec.
>
> * ACPI 1.0 is very clear - we are breaking the 1.0 spec
>
> * ACPI 2.0 is contradictory - section 7.3.2 repeats 1.0 ad verbatim (which is
> what I quote in reply to Robert Hancock), but as you point out, 9.3.2 says
> the opposite.
>
> So, 1.0 and 3.0 are very clear and rather different on this, and 2.0 is
> contradictory (and I presume this is one of the points ACPI 3.0 set out to
> clean up).
>
> I will rescind my point on ACPI 2.0 - I don't know what we should or shouldn't
> be doing there, the spec is unclear.
>
> But for ACPI 1.0, we are doing the wrong thing.
Correct me if I'm wrong, but it appears ACPI 1.0 wants _PTS called
before any devices are suspended, ACPI 2.0 is contradictory, and ACPI
3.0 says that you can't assume anything about device state. My guess is
that unless Windows has different behavior depending on ACPI version, it
probably has called _PTS before suspending devices all along. Therefore
it would likely be safest to emulate that behavior, no?
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <47713B2B.3000105@shaw.ca>
@ 2007-12-25 18:26 ` Rafael J. Wysocki
[not found] ` <200712251926.51628.rjw@sisk.pl>
1 sibling, 0 replies; 18+ messages in thread
From: Rafael J. Wysocki @ 2007-12-25 18:26 UTC (permalink / raw)
To: Robert Hancock
Cc: Carlos Corbacho, Andrew Morton, Greg KH,
Linux Kernel Mailing List, Thomas Gleixner, Ingo Molnar, pm list,
Linus Torvalds, H. Peter Anvin
On Tuesday, 25 of December 2007, Robert Hancock wrote:
> Carlos Corbacho wrote:
> > On Tuesday 25 December 2007 13:26:12 Rafael J. Wysocki wrote:
> >> Well, citing from the ACPI 2.0 specification, section 9.1.6 Transitioning
> >> from the Working to the Sleeping State (which is what we're discussing
> >> here):
> >>
> >> 3. OSPM places all device drivers into their respective Dx state. If the
> >> device is enabled for wake, it enters the Dx state associated with the wake
> >> capability. If the device is not enabled to wake the system, it enters the
> >> D3 state.
> >> 4. OSPM executes the _PTS control method, passing an argument that
> >> indicates the desired sleeping state (1, 2, 3, or 4 representing S1, S2,
> >> S3, and S4).
> >>
> >> My opinion is that we should follow this part of the specification and so
> >> we do.
> >
> > This is that same section from ACPI 1.0B:
> >
> > 3. The OS executes the Prepare To Sleep (_PTS) control method, passing an
> > argument that indicates the desired sleeping state (1, 2, 3, or 4 representing
> > S1, S2, S3, and S4).
> >
> > 4. The OS places all device drivers into their respective Dx state. If the
> > device is enabled for wakeup, it enters the Dx state associated with the
> > wakeup capability. If the device is not enabled to wakeup the system, it
> > enters the D3 state.
> >
> > The DSDTs in question also claim ACPI 1.0 compatiblity.
> >
> >> You're wrong, sorry.
> >
> > No, I'm not entirely wrong - read the 1.0 spec, and read section 7.3.2 of the
> > ACPI 2.0 spec.
> >
> > * ACPI 1.0 is very clear - we are breaking the 1.0 spec
> >
> > * ACPI 2.0 is contradictory - section 7.3.2 repeats 1.0 ad verbatim (which is
> > what I quote in reply to Robert Hancock), but as you point out, 9.3.2 says
> > the opposite.
> >
> > So, 1.0 and 3.0 are very clear and rather different on this, and 2.0 is
> > contradictory (and I presume this is one of the points ACPI 3.0 set out to
> > clean up).
> >
> > I will rescind my point on ACPI 2.0 - I don't know what we should or shouldn't
> > be doing there, the spec is unclear.
> >
> > But for ACPI 1.0, we are doing the wrong thing.
>
> Correct me if I'm wrong, but it appears ACPI 1.0 wants _PTS called
> before any devices are suspended, ACPI 2.0 is contradictory, and ACPI
> 3.0 says that you can't assume anything about device state. My guess is
> that unless Windows has different behavior depending on ACPI version, it
> probably has called _PTS before suspending devices all along. Therefore
> it would likely be safest to emulate that behavior, no?
Well, I don't think so.
In fact ACPI 3.0 repeats the 2.0 wording in section 9.1.6 (so the current
requirement seems to be to put devices into low power states before calling
_PTS) and I _guess_ there was a change in the default behavior of Windows that
caused the specification to be modified (I'd bet that was between 2000 and XP
or something like this).
IMO, we should check which version of the specification we're supposed to
follow, on the basis of FADT contents, for example, and follow this one.
Thanks,
Rafael
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Suspend code ordering (again) (was: Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM)
[not found] ` <200712251713.13223.rjw@sisk.pl>
@ 2007-12-26 4:11 ` Linus Torvalds
2007-12-26 15:07 ` Rafael J. Wysocki
[not found] ` <200712261607.18429.rjw@sisk.pl>
0 siblings, 2 replies; 18+ messages in thread
From: Linus Torvalds @ 2007-12-26 4:11 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, ACPI Devel Maling List, Ingo Molnar,
pm list, H. Peter Anvin, Thomas Gleixner
On Tue, 25 Dec 2007, Rafael J. Wysocki wrote:
>
> the ACPI specification between versions 1.0x and 2.0. Namely, while ACPI
> 2.0 and later wants us to put devices into low power states before calling
> _PTS, ACPI 1.0x wants us to do that after calling _PTS. Since we're following
> the 2.0 and later specifications right now, we're not doing the right thing for
> the (strictly) ACPI 1.0x-compliant systems.
>
> We ought to be able to fix things on the high level, by calling _PTS earlier on
> systems that claim to be ACPI 1.0x-compliant. That will require us to modify
> the generic susped code quite a bit and will need to be tested for some time.
That's insane. Are you really saying that ACPI wants totally different
orderings for different versions of the spec? And does Windows really do
that?
Please don't make lots of modifications to the generic suspend code. The
only thing that is worth doing is to just have a firmware callback before
the "device_suspend()" thing (and then on a ACPI-1.0 system, call _PTS
*there*), and on an ACPI-2.0 system, call _PTS *after* device_suspend().
Still, the fact is, some (most, I think) drivers *should* put themselves
into D3 only in "late_suspend()", so if ACPI-2.0 really expects _PTS to be
called after that, we're just screwed. That's when the system is really
down, interrupts disabled etc, we don't want to call anything but the
final ACPI "turn us off" stuff there!
Linus
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
[not found] ` <200712251926.51628.rjw@sisk.pl>
@ 2007-12-26 4:29 ` Linus Torvalds
2007-12-26 5:13 ` Robert Hancock
2007-12-26 7:23 ` Avi Kivity
0 siblings, 2 replies; 18+ messages in thread
From: Linus Torvalds @ 2007-12-26 4:29 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Robert Hancock, Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, Thomas Gleixner, Ingo Molnar, pm list,
H. Peter Anvin
On Tue, 25 Dec 2007, Rafael J. Wysocki wrote:
> >
> > Correct me if I'm wrong, but it appears ACPI 1.0 wants _PTS called
> > before any devices are suspended, ACPI 2.0 is contradictory, and ACPI
> > 3.0 says that you can't assume anything about device state. My guess is
> > that unless Windows has different behavior depending on ACPI version, it
> > probably has called _PTS before suspending devices all along. Therefore
> > it would likely be safest to emulate that behavior, no?
>
> Well, I don't think so.
It would *definitely* always be safest to emulate what Windows does.
> In fact ACPI 3.0 repeats the 2.0 wording in section 9.1.6 (so the current
> requirement seems to be to put devices into low power states before calling
> _PTS) and I _guess_ there was a change in the default behavior of Windows that
> caused the specification to be modified (I'd bet that was between 2000 and XP
> or something like this).
You seem to put a lot of trust in a piece of documentation.
Do you realize how those pieces of paper are written? They are written by
people who have absolutely *nothing* to do with the actual implementation,
and whose job it is to write documentation. And while the people who
actually do the programming etc are supposed to help them, the two parties
generally detest each other.
Technical writers hate the "real engineers" for not helping them, and the
"real engineers" tend to dislike having to be pestered to explain their
stuff and have to read through some document that isn't meant for them,
but that they need to sign off on.
In other words: please do *not* expect that the documentation actually
matches reality. You seem to think that the documentation came first
and/or is quite accurate. That's not at all likely to be true.
> IMO, we should check which version of the specification we're supposed to
> follow, on the basis of FADT contents, for example, and follow this one.
No, we should try to figure out what Windows does. *If* windows checks the
version, we should do that too. But we should absolutely *not* just assume
that the documentation is an accurate picture of reality.
Does anybody know how we could find out?
Linus
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
2007-12-26 4:29 ` Linus Torvalds
@ 2007-12-26 5:13 ` Robert Hancock
2007-12-26 7:23 ` Avi Kivity
1 sibling, 0 replies; 18+ messages in thread
From: Robert Hancock @ 2007-12-26 5:13 UTC (permalink / raw)
To: Linus Torvalds
Cc: Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, Thomas Gleixner, Ingo Molnar, pm list,
H. Peter Anvin
Linus Torvalds wrote:
>> IMO, we should check which version of the specification we're supposed to
>> follow, on the basis of FADT contents, for example, and follow this one.
>
> No, we should try to figure out what Windows does. *If* windows checks the
> version, we should do that too. But we should absolutely *not* just assume
> that the documentation is an accurate picture of reality.
>
> Does anybody know how we could find out?
>
> Linus
>
Well, it seems that if one had a checked (debug) build of Windows (or at
least the acpi.sys driver) installed, as well as a copy of the Microsoft
ASL compiler, they could compile and temporarily override the DSDT with
a hacked one that would output what the device power states were in some
fashion (maybe through the kernel debugger). Some info about this here:
http://download.microsoft.com/download/1/8/f/18f8cee2-0b64-41f2-893d-a6f2295b40c8/TW04015_WINHEC2004.ppt
I suspect that might require more Windows hacking skill and/or
motivation than one might be likely to find on this list, though :-)
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM
2007-12-26 4:29 ` Linus Torvalds
2007-12-26 5:13 ` Robert Hancock
@ 2007-12-26 7:23 ` Avi Kivity
1 sibling, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2007-12-26 7:23 UTC (permalink / raw)
To: Linus Torvalds
Cc: Robert Hancock, Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, Thomas Gleixner, Ingo Molnar, pm list,
H. Peter Anvin
Linus Torvalds wrote:
>
>> IMO, we should check which version of the specification we're supposed to
>> follow, on the basis of FADT contents, for example, and follow this one.
>>
>
> No, we should try to figure out what Windows does. *If* windows checks the
> version, we should do that too. But we should absolutely *not* just assume
> that the documentation is an accurate picture of reality.
>
> Does anybody know how we could find out?
>
>
Run it in a virtual machine, with the ACPI methods of interest wired to
output to some port, and log that I/O port in the monitor/emulator.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Suspend code ordering (again) (was: Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM)
2007-12-26 4:11 ` Linus Torvalds
@ 2007-12-26 15:07 ` Rafael J. Wysocki
[not found] ` <200712261607.18429.rjw@sisk.pl>
1 sibling, 0 replies; 18+ messages in thread
From: Rafael J. Wysocki @ 2007-12-26 15:07 UTC (permalink / raw)
To: Linus Torvalds
Cc: Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, ACPI Devel Maling List, Ingo Molnar,
pm list, H. Peter Anvin, Thomas Gleixner
On Wednesday, 26 of December 2007, Linus Torvalds wrote:
>
> On Tue, 25 Dec 2007, Rafael J. Wysocki wrote:
> >
> > the ACPI specification between versions 1.0x and 2.0. Namely, while ACPI
> > 2.0 and later wants us to put devices into low power states before calling
> > _PTS, ACPI 1.0x wants us to do that after calling _PTS. Since we're following
> > the 2.0 and later specifications right now, we're not doing the right thing for
> > the (strictly) ACPI 1.0x-compliant systems.
> >
> > We ought to be able to fix things on the high level, by calling _PTS earlier on
> > systems that claim to be ACPI 1.0x-compliant. That will require us to modify
> > the generic susped code quite a bit and will need to be tested for some time.
>
> That's insane. Are you really saying that ACPI wants totally different
> orderings for different versions of the spec?
Yes, I am.
> And does Windows really do that?
I don't know.
> Please don't make lots of modifications to the generic suspend code. The
> only thing that is worth doing is to just have a firmware callback before
> the "device_suspend()" thing (and then on a ACPI-1.0 system, call _PTS
> *there*), and on an ACPI-2.0 system, call _PTS *after* device_suspend().
Yes, that's what I'm going to do, but I need to untangle some ACPI code for
this purpose.
> Still, the fact is, some (most, I think) drivers *should* put themselves
> into D3 only in "late_suspend()", so if ACPI-2.0 really expects _PTS to be
> called after that, we're just screwed.
Well, section 9.1.6 of ACPI 2.0 specifies the suspend ordering directly and
says exactly that _PTS is to be executed after putting devices into respective
D states.
> That's when the system is really down, interrupts disabled etc, we don't want
> to call anything but the final ACPI "turn us off" stuff there!
OTOH, we ought to be able to put devices into low power states at any time, for
example when they are not used, without any problems and having to put them
back into D0 just in order to execute _PTS doesn't seem very logical to me. ;-)
Greetings,
Rafael
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Suspend code ordering (again)
[not found] ` <200712261607.18429.rjw@sisk.pl>
@ 2007-12-26 15:24 ` Alexey Starikovskiy
[not found] ` <47727216.4050003@gmail.com>
1 sibling, 0 replies; 18+ messages in thread
From: Alexey Starikovskiy @ 2007-12-26 15:24 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, ACPI Devel Maling List,
Thomas Gleixner, pm list, H. Peter Anvin, Linus Torvalds,
Ingo Molnar
Rafael J. Wysocki wrote:
> On Wednesday, 26 of December 2007, Linus Torvalds wrote:
>
>> On Tue, 25 Dec 2007, Rafael J. Wysocki wrote:
>>
>>> the ACPI specification between versions 1.0x and 2.0. Namely, while ACPI
>>> 2.0 and later wants us to put devices into low power states before calling
>>> _PTS, ACPI 1.0x wants us to do that after calling _PTS. Since we're following
>>> the 2.0 and later specifications right now, we're not doing the right thing for
>>> the (strictly) ACPI 1.0x-compliant systems.
>>>
>>> We ought to be able to fix things on the high level, by calling _PTS earlier on
>>> systems that claim to be ACPI 1.0x-compliant. That will require us to modify
>>> the generic susped code quite a bit and will need to be tested for some time.
>>>
>> That's insane. Are you really saying that ACPI wants totally different
>> orderings for different versions of the spec?
>>
>
> Yes, I am.
>
>
>> And does Windows really do that?
>>
>
> I don't know.
>
Windows was compliant only with 1.x spec until Vista.
With Vista claims are 3.x compliance.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Suspend code ordering (again)
[not found] ` <47727216.4050003@gmail.com>
@ 2007-12-26 17:50 ` H. Peter Anvin
0 siblings, 0 replies; 18+ messages in thread
From: H. Peter Anvin @ 2007-12-26 17:50 UTC (permalink / raw)
To: Alexey Starikovskiy
Cc: Greg KH, Andrew Morton, Carlos Corbacho,
Linux Kernel Mailing List, ACPI Devel Maling List, pm list,
Ingo Molnar, Linus Torvalds, Thomas Gleixner
Alexey Starikovskiy wrote:
>>
>> I don't know.
>>
> Windows was compliant only with 1.x spec until Vista.
> With Vista claims are 3.x compliance.
>
In other words, the 1.x spec is the only thing that matters, at least in
the short term (*noone* is giving up XP compatibility at this point.)
-hpa
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2007-12-26 17:50 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <200712231419.40207.carlos@strangeworlds.co.uk>
[not found] ` <alpine.LFD.0.9999.0712231703390.21557@woody.linux-foundation.org>
[not found] ` <200712240305.18080.carlos@strangeworlds.co.uk>
2007-12-24 13:44 ` x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM Rafael J. Wysocki
2007-12-24 18:34 ` Linus Torvalds
2007-12-24 21:53 ` Carlos Corbacho
2007-12-25 16:13 ` Suspend code ordering (again) (was: Re: x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM) Rafael J. Wysocki
[not found] ` <200712251713.13223.rjw@sisk.pl>
2007-12-26 4:11 ` Linus Torvalds
2007-12-26 15:07 ` Rafael J. Wysocki
[not found] ` <200712261607.18429.rjw@sisk.pl>
2007-12-26 15:24 ` Suspend code ordering (again) Alexey Starikovskiy
[not found] ` <47727216.4050003@gmail.com>
2007-12-26 17:50 ` H. Peter Anvin
[not found] <fa.Tr7qmPdet0rF2FSRX/94s2UEMSE@ifi.uio.no>
[not found] ` <fa.5MPS0t6OtOOALbc90ywKDrtik+4@ifi.uio.no>
[not found] ` <fa.zg2cR0292Evub+o7LgQUdg4A7ZM@ifi.uio.no>
[not found] ` <fa.ZBHAMdWAEaW7Flaz8/Gc8PLZUNg@ifi.uio.no>
2007-12-24 22:40 ` x86: Increase PCIBIOS_MIN_IO to 0x1500 to fix nForce 4 suspend-to-RAM Robert Hancock
[not found] ` <4770356E.1000407@shaw.ca>
2007-12-25 0:03 ` Carlos Corbacho
[not found] ` <200712250003.27570.carlos@strangeworlds.co.uk>
[not found] ` <200712251426.14024.rjw@sisk.pl>
2007-12-25 13:12 ` Carlos Corbacho
[not found] ` <200712251312.43478.carlos@strangeworlds.co.uk>
2007-12-25 14:11 ` Rafael J. Wysocki
2007-12-25 17:17 ` Robert Hancock
[not found] ` <47713B2B.3000105@shaw.ca>
2007-12-25 18:26 ` Rafael J. Wysocki
[not found] ` <200712251926.51628.rjw@sisk.pl>
2007-12-26 4:29 ` Linus Torvalds
2007-12-26 5:13 ` Robert Hancock
2007-12-26 7:23 ` Avi Kivity
2007-12-25 13:26 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox