* RE: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
@ 2005-03-25 12:54 Li, Shaohua
2005-03-25 14:19 ` Rafael J. Wysocki
0 siblings, 1 reply; 9+ messages in thread
From: Li, Shaohua @ 2005-03-25 12:54 UTC (permalink / raw)
To: Rafael J. Wysocki, Andrew Morton; +Cc: Brown, Len, linux-kernel, Pavel Machek
Hi,
>On Friday, 25 of March 2005 09:21, Andrew Morton wrote:
>>
>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-
>rc1/2.6.12-rc1-mm3/
>>
>> - Mainly a bunch of fixes relative to 2.6.12-rc1-mm2.
>
>First, rmmod works again (thanks ;-)).
>
>> - Again, we'd like people who have had recent DRM and USB resume
problems
>to
>> test and report, please.
>
>My box is still hanged solid on resume (swsusp) by the drivers:
>
>ohci_hcd
>ehci_hcd
>yenta_socket
>
>possibly others, too. To avoid this, I had to revert the following
patch
>from
>the Len's tree:
>
>diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
>--- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
>+++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
>@@ -72,10 +72,12 @@
> u8 active; /* Current IRQ
*/
> u8 edge_level; /* All IRQs */
> u8 active_high_low; /* All IRQs */
>- u8 initialized;
> u8 resource_type;
> u8 possible_count;
> u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
>+ u8 initialized:1;
>+ u8 suspend_resume:1;
>+ u8 reserved:6;
> };
>
> struct acpi_pci_link {
>@@ -530,6 +532,10 @@
>
> ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
>
>+ if (link->irq.suspend_resume) {
>+ acpi_pci_link_set(link, link->irq.active);
>+ link->irq.suspend_resume = 0;
>+ }
> if (link->irq.initialized)
> return_VALUE(0);
How about just remove below line:
>+ acpi_pci_link_set(link, link->irq.active);
Thanks,
Shaohua
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-03-25 12:54 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers Li, Shaohua
@ 2005-03-25 14:19 ` Rafael J. Wysocki
2005-03-26 18:23 ` Rafael J. Wysocki
0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2005-03-25 14:19 UTC (permalink / raw)
To: Li, Shaohua, Andrew Morton; +Cc: Brown, Len, linux-kernel, Pavel Machek
Hi,
On Friday, 25 of March 2005 13:54, you wrote:
]--snip--[
> >My box is still hanged solid on resume (swsusp) by the drivers:
> >
> >ohci_hcd
> >ehci_hcd
> >yenta_socket
> >
> >possibly others, too. To avoid this, I had to revert the following
> patch from the Len's tree:
> >
> >diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
> >--- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> >+++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> >@@ -72,10 +72,12 @@
> > u8 active; /* Current IRQ
> */
> > u8 edge_level; /* All IRQs */
> > u8 active_high_low; /* All IRQs */
> >- u8 initialized;
> > u8 resource_type;
> > u8 possible_count;
> > u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
> >+ u8 initialized:1;
> >+ u8 suspend_resume:1;
> >+ u8 reserved:6;
> > };
> >
> > struct acpi_pci_link {
> >@@ -530,6 +532,10 @@
> >
> > ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
> >
> >+ if (link->irq.suspend_resume) {
> >+ acpi_pci_link_set(link, link->irq.active);
> >+ link->irq.suspend_resume = 0;
> >+ }
> > if (link->irq.initialized)
> > return_VALUE(0);
>
> How about just remove below line:
> >+ acpi_pci_link_set(link, link->irq.active);
You mean apply the patch again and remove just the single
line? No effect (ie hangs).
Greets,
Rafael
--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-03-25 14:19 ` Rafael J. Wysocki
@ 2005-03-26 18:23 ` Rafael J. Wysocki
2005-03-26 19:07 ` Rafael J. Wysocki
2005-03-28 1:22 ` Li Shaohua
0 siblings, 2 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2005-03-26 18:23 UTC (permalink / raw)
To: Li, Shaohua; +Cc: Andrew Morton, Brown, Len, linux-kernel, Pavel Machek
Hi,
On Friday, 25 of March 2005 15:19, Rafael J. Wysocki wrote:
> On Friday, 25 of March 2005 13:54, you wrote:
> ]--snip--[
> > >My box is still hanged solid on resume (swsusp) by the drivers:
> > >
> > >ohci_hcd
> > >ehci_hcd
> > >yenta_socket
> > >
> > >possibly others, too. To avoid this, I had to revert the following
> > patch from the Len's tree:
> > >
> > >diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
> > >--- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> > >+++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> > >@@ -72,10 +72,12 @@
> > > u8 active; /* Current IRQ
> > */
> > > u8 edge_level; /* All IRQs */
> > > u8 active_high_low; /* All IRQs */
> > >- u8 initialized;
> > > u8 resource_type;
> > > u8 possible_count;
> > > u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
> > >+ u8 initialized:1;
> > >+ u8 suspend_resume:1;
> > >+ u8 reserved:6;
> > > };
> > >
> > > struct acpi_pci_link {
> > >@@ -530,6 +532,10 @@
> > >
> > > ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
> > >
> > >+ if (link->irq.suspend_resume) {
> > >+ acpi_pci_link_set(link, link->irq.active);
> > >+ link->irq.suspend_resume = 0;
> > >+ }
> > > if (link->irq.initialized)
> > > return_VALUE(0);
> >
> > How about just remove below line:
> > >+ acpi_pci_link_set(link, link->irq.active);
>
> You mean apply the patch again and remove just the single
> line? No effect (ie hangs).
It looks like removing this line couldn't help.
Apparently, acpi_pci_link_set(link, link->irq.active) must be called
_before_ the call to pci_write_config_word() in
drivers/pci/pci.c:pci_set_power_state(), because the box hangs
otherwise. However, with the patch applied,
acpi_pci_link_set(link, link->irq.active) is only called through
pcibios_enable_irq() in pcibios_enable_device(), which is _after_
the call to pci_set_power_state() in pci_enable_device_bars(),
so it's too late.
Hence, it seems, if you really want to get rid of the
irqrouter_resume(), whatever the reason, the simplest fix
seems to be to change the order of calls to pci_set_power_state()
and pcibios_enable_device() in pci_enable_device_bars():
--- old/drivers/pci/pci.c 2005-03-26 19:10:09.000000000 +0100
+++ linux-2.6.12-rc1-mm2/drivers/pci/pci.c 2005-03-26 19:10:54.000000000 +0100
@@ -442,9 +442,9 @@ pci_enable_device_bars(struct pci_dev *d
{
int err;
- pci_set_power_state(dev, PCI_D0);
if ((err = pcibios_enable_device(dev, bars)) < 0)
return err;
+ pci_set_power_state(dev, PCI_D0);
return 0;
}
though I'm not sure if that's legal.
Greets,
Rafael
--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-03-26 18:23 ` Rafael J. Wysocki
@ 2005-03-26 19:07 ` Rafael J. Wysocki
2005-03-28 1:22 ` Li Shaohua
1 sibling, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2005-03-26 19:07 UTC (permalink / raw)
To: Li, Shaohua; +Cc: Andrew Morton, Brown, Len, linux-kernel, Pavel Machek
On Saturday, 26 of March 2005 19:23, Rafael J. Wysocki wrote:
> Hi,
>
> On Friday, 25 of March 2005 15:19, Rafael J. Wysocki wrote:
> > On Friday, 25 of March 2005 13:54, you wrote:
> > ]--snip--[
> > > >My box is still hanged solid on resume (swsusp) by the drivers:
> > > >
> > > >ohci_hcd
> > > >ehci_hcd
> > > >yenta_socket
> > > >
> > > >possibly others, too. To avoid this, I had to revert the following
> > > patch from the Len's tree:
> > > >
> > > >diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
> > > >--- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> > > >+++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> > > >@@ -72,10 +72,12 @@
> > > > u8 active; /* Current IRQ
> > > */
> > > > u8 edge_level; /* All IRQs */
> > > > u8 active_high_low; /* All IRQs */
> > > >- u8 initialized;
> > > > u8 resource_type;
> > > > u8 possible_count;
> > > > u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
> > > >+ u8 initialized:1;
> > > >+ u8 suspend_resume:1;
> > > >+ u8 reserved:6;
> > > > };
> > > >
> > > > struct acpi_pci_link {
> > > >@@ -530,6 +532,10 @@
> > > >
> > > > ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
> > > >
> > > >+ if (link->irq.suspend_resume) {
> > > >+ acpi_pci_link_set(link, link->irq.active);
> > > >+ link->irq.suspend_resume = 0;
> > > >+ }
> > > > if (link->irq.initialized)
> > > > return_VALUE(0);
> > >
> > > How about just remove below line:
> > > >+ acpi_pci_link_set(link, link->irq.active);
> >
> > You mean apply the patch again and remove just the single
> > line? No effect (ie hangs).
>
> It looks like removing this line couldn't help.
>
> Apparently, acpi_pci_link_set(link, link->irq.active) must be called
> _before_ the call to pci_write_config_word() in
> drivers/pci/pci.c:pci_set_power_state(), because the box hangs
> otherwise. However, with the patch applied,
> acpi_pci_link_set(link, link->irq.active) is only called through
> pcibios_enable_irq() in pcibios_enable_device(), which is _after_
> the call to pci_set_power_state() in pci_enable_device_bars(),
> so it's too late.
>
> Hence, it seems, if you really want to get rid of the
> irqrouter_resume(), whatever the reason, the simplest fix
> seems to be to change the order of calls to pci_set_power_state()
> and pcibios_enable_device() in pci_enable_device_bars():
Sorry, forget it. It was a good theory that didn't work.
It seems that we have to set all of the PCI links or at least some
of them before we start calling pci_set_power_state().
Greets,
Rafael
--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-03-26 18:23 ` Rafael J. Wysocki
2005-03-26 19:07 ` Rafael J. Wysocki
@ 2005-03-28 1:22 ` Li Shaohua
2005-03-29 10:33 ` Rafael J. Wysocki
1 sibling, 1 reply; 9+ messages in thread
From: Li Shaohua @ 2005-03-28 1:22 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: Andrew Morton, Len Brown, lkml, Pavel Machek
On Sun, 2005-03-27 at 02:23, Rafael J. Wysocki wrote:
> Hi,
>
> On Friday, 25 of March 2005 15:19, Rafael J. Wysocki wrote:
> > On Friday, 25 of March 2005 13:54, you wrote:
> > ]--snip--[
> > > >My box is still hanged solid on resume (swsusp) by the drivers:
> > > >
> > > >ohci_hcd
> > > >ehci_hcd
> > > >yenta_socket
> > > >
> > > >possibly others, too. To avoid this, I had to revert the following
> > > patch from the Len's tree:
> > > >
> > > >diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
> > > >--- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> > > >+++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> > > >@@ -72,10 +72,12 @@
> > > > u8 active; /* Current IRQ
> > > */
> > > > u8 edge_level; /* All IRQs */
> > > > u8 active_high_low; /* All IRQs */
> > > >- u8 initialized;
> > > > u8 resource_type;
> > > > u8 possible_count;
> > > > u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
> > > >+ u8 initialized:1;
> > > >+ u8 suspend_resume:1;
> > > >+ u8 reserved:6;
> > > > };
> > > >
> > > > struct acpi_pci_link {
> > > >@@ -530,6 +532,10 @@
> > > >
> > > > ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
> > > >
> > > >+ if (link->irq.suspend_resume) {
> > > >+ acpi_pci_link_set(link, link->irq.active);
> > > >+ link->irq.suspend_resume = 0;
> > > >+ }
> > > > if (link->irq.initialized)
> > > > return_VALUE(0);
> > >
> > > How about just remove below line:
> > > >+ acpi_pci_link_set(link, link->irq.active);
> >
> > You mean apply the patch again and remove just the single
> > line? No effect (ie hangs).
>
> It looks like removing this line couldn't help.
>
> Apparently, acpi_pci_link_set(link, link->irq.active) must be called
> _before_ the call to pci_write_config_word() in
> drivers/pci/pci.c:pci_set_power_state(), because the box hangs
> otherwise. However, with the patch applied,
> acpi_pci_link_set(link, link->irq.active) is only called through
> pcibios_enable_irq() in pcibios_enable_device(), which is _after_
> the call to pci_set_power_state() in pci_enable_device_bars(),
> so it's too late.
>
> Hence, it seems, if you really want to get rid of the
> irqrouter_resume(), whatever the reason, the simplest fix
> seems to be to change the order of calls to pci_set_power_state()
> and pcibios_enable_device() in pci_enable_device_bars():
>
> --- old/drivers/pci/pci.c 2005-03-26 19:10:09.000000000 +0100
> +++ linux-2.6.12-rc1-mm2/drivers/pci/pci.c 2005-03-26 19:10:54.000000000 +0100
> @@ -442,9 +442,9 @@ pci_enable_device_bars(struct pci_dev *d
> {
> int err;
>
> - pci_set_power_state(dev, PCI_D0);
> if ((err = pcibios_enable_device(dev, bars)) < 0)
> return err;
> + pci_set_power_state(dev, PCI_D0);
> return 0;
> }
>
> though I'm not sure if that's legal.
Hmm, no, pci_set_power_state should be called before
pcibios_enable_device, otherwise enable_device may fail. This is very
strange. In boot time, there also are uninitialized link devices, I'm
wonder why the call of pci_enable_device_bars doesn't fail in boot time.
Did you find the bug only in specific system?
Could you please file a bug in bugzilla? I don't want to lose the
context of thread. And please attach your acpidmp output in the bug.
Thanks,
Shaohua
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-03-28 1:22 ` Li Shaohua
@ 2005-03-29 10:33 ` Rafael J. Wysocki
0 siblings, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2005-03-29 10:33 UTC (permalink / raw)
To: Li Shaohua; +Cc: Andrew Morton, Len Brown, lkml, Pavel Machek
Hi,
On Monday, 28 of March 2005 03:22, Li Shaohua wrote:
> On Sun, 2005-03-27 at 02:23, Rafael J. Wysocki wrote:
]--snip--[
> Could you please file a bug in bugzilla? I don't want to lose the
> context of thread. And please attach your acpidmp output in the bug.
The bug report is at:
http://bugzilla.kernel.org/show_bug.cgi?id=4416
I've put there all the information related to it that I've already collected.
Greets,
Rafael
--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-05-02 22:54 ` Andrew Morton
@ 2005-05-03 19:34 ` Rafael J. Wysocki
0 siblings, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2005-05-03 19:34 UTC (permalink / raw)
To: Andrew Morton; +Cc: len.brown, linux-kernel, shaohua.li, pavel
Hi,
On Tuesday, 3 of May 2005 00:54, Andrew Morton wrote:
> "Rafael J. Wysocki" <rjw@sisk.pl> wrote:
> >
> > Hi,
> >
> > On Friday, 25 of March 2005 09:21, Andrew Morton wrote:
> > >
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc1/2.6.12-rc1-mm3/
> > >
> > > - Mainly a bunch of fixes relative to 2.6.12-rc1-mm2.
> >
> > First, rmmod works again (thanks ;-)).
> >
> > > - Again, we'd like people who have had recent DRM and USB resume problems to
> > > test and report, please.
> >
> > My box is still hanged solid on resume (swsusp) by the drivers:
> >
> > ohci_hcd
> > ehci_hcd
> > yenta_socket
> >
> > possibly others, too. To avoid this, I had to revert the following patch from
> > the Len's tree:
>
> Rafael, does this problem still exist in latest -mm?
Yes, it does. I've already updated its bugzilla entry
(http://bugzilla.kernel.org/show_bug.cgi?id=4416).
Greets,
Rafael
--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-03-25 11:29 ` 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers Rafael J. Wysocki
@ 2005-05-02 22:54 ` Andrew Morton
2005-05-03 19:34 ` Rafael J. Wysocki
0 siblings, 1 reply; 9+ messages in thread
From: Andrew Morton @ 2005-05-02 22:54 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: len.brown, linux-kernel, shaohua.li, pavel
"Rafael J. Wysocki" <rjw@sisk.pl> wrote:
>
> Hi,
>
> On Friday, 25 of March 2005 09:21, Andrew Morton wrote:
> >
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc1/2.6.12-rc1-mm3/
> >
> > - Mainly a bunch of fixes relative to 2.6.12-rc1-mm2.
>
> First, rmmod works again (thanks ;-)).
>
> > - Again, we'd like people who have had recent DRM and USB resume problems to
> > test and report, please.
>
> My box is still hanged solid on resume (swsusp) by the drivers:
>
> ohci_hcd
> ehci_hcd
> yenta_socket
>
> possibly others, too. To avoid this, I had to revert the following patch from
> the Len's tree:
Rafael, does this problem still exist in latest -mm?
I think it does...
> diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
> --- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> +++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
> @@ -72,10 +72,12 @@
> u8 active; /* Current IRQ */
> u8 edge_level; /* All IRQs */
> u8 active_high_low; /* All IRQs */
> - u8 initialized;
> u8 resource_type;
> u8 possible_count;
> u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
> + u8 initialized:1;
> + u8 suspend_resume:1;
> + u8 reserved:6;
> };
>
> struct acpi_pci_link {
> @@ -530,6 +532,10 @@
>
> ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
>
> + if (link->irq.suspend_resume) {
> + acpi_pci_link_set(link, link->irq.active);
> + link->irq.suspend_resume = 0;
> + }
> if (link->irq.initialized)
> return_VALUE(0);
>
> @@ -713,38 +719,24 @@
> return_VALUE(result);
> }
>
> -
> -static int
> -acpi_pci_link_resume (
> - struct acpi_pci_link *link)
> -{
> - ACPI_FUNCTION_TRACE("acpi_pci_link_resume");
> -
> - if (link->irq.active && link->irq.initialized)
> - return_VALUE(acpi_pci_link_set(link, link->irq.active));
> - else
> - return_VALUE(0);
> -}
> -
> -
> static int
> -irqrouter_resume(
> - struct sys_device *dev)
> +irqrouter_suspend(
> + struct sys_device *dev,
> + u32 state)
> {
> struct list_head *node = NULL;
> struct acpi_pci_link *link = NULL;
>
> - ACPI_FUNCTION_TRACE("irqrouter_resume");
> + ACPI_FUNCTION_TRACE("irqrouter_suspend");
>
> list_for_each(node, &acpi_link.entries) {
> -
> link = list_entry(node, struct acpi_pci_link, node);
> if (!link) {
> ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n"));
> continue;
> }
> -
> - acpi_pci_link_resume(link);
> + if (link->irq.active && link->irq.initialized)
> + link->irq.suspend_resume = 1;
> }
> return_VALUE(0);
> }
> @@ -856,7 +848,7 @@
>
> static struct sysdev_class irqrouter_sysdev_class = {
> set_kset_name("irqrouter"),
> - .resume = irqrouter_resume,
> + .suspend = irqrouter_suspend,
> };
>
>
> # This is a BitKeeper generated diff -Nru style patch.
> #
> # ChangeSet
> # 2005/03/18 16:30:29-05:00 len.brown@intel.com
> # [ACPI] S3 Suspend to RAM: interrupt resume fix
> #
> # Delete PCI Interrupt Link Device .resume method --
> # it is the device driver's job to request interrupts,
> # not the Link's job to remember what the devices want.
> #
> # This addresses the issue of attempting to run
> # the ACPI interpreter too early in resume, when
> # interrupts are still disabled.
> #
> # http://bugzilla.kernel.org/show_bug.cgi?id=3469
> #
> # Signed-off-by: David Shaohua Li <shaohua.li@intel.com>
> # Signed-off-by: Len Brown <len.brown@intel.com>
> #
> # drivers/acpi/pci_link.c
> # 2005/03/02 22:23:50-05:00 len.brown@intel.com +14 -22
> # Delete PCI Interrupt Link .resume method
> #
>
> Greets,
> Rafael
>
>
> --
> - Would you tell me, please, which way I ought to go from here?
> - That depends a good deal on where you want to get to.
> -- Lewis Carroll "Alice's Adventures in Wonderland"
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers
2005-03-25 8:21 2.6.12-rc1-mm3 Andrew Morton
@ 2005-03-25 11:29 ` Rafael J. Wysocki
2005-05-02 22:54 ` Andrew Morton
0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2005-03-25 11:29 UTC (permalink / raw)
To: Andrew Morton; +Cc: Len Brown, linux-kernel, Li Shaohua, Pavel Machek
Hi,
On Friday, 25 of March 2005 09:21, Andrew Morton wrote:
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc1/2.6.12-rc1-mm3/
>
> - Mainly a bunch of fixes relative to 2.6.12-rc1-mm2.
First, rmmod works again (thanks ;-)).
> - Again, we'd like people who have had recent DRM and USB resume problems to
> test and report, please.
My box is still hanged solid on resume (swsusp) by the drivers:
ohci_hcd
ehci_hcd
yenta_socket
possibly others, too. To avoid this, I had to revert the following patch from
the Len's tree:
diff -Naru a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
--- a/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
+++ b/drivers/acpi/pci_link.c 2005-03-24 04:57:27 -08:00
@@ -72,10 +72,12 @@
u8 active; /* Current IRQ */
u8 edge_level; /* All IRQs */
u8 active_high_low; /* All IRQs */
- u8 initialized;
u8 resource_type;
u8 possible_count;
u8 possible[ACPI_PCI_LINK_MAX_POSSIBLE];
+ u8 initialized:1;
+ u8 suspend_resume:1;
+ u8 reserved:6;
};
struct acpi_pci_link {
@@ -530,6 +532,10 @@
ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
+ if (link->irq.suspend_resume) {
+ acpi_pci_link_set(link, link->irq.active);
+ link->irq.suspend_resume = 0;
+ }
if (link->irq.initialized)
return_VALUE(0);
@@ -713,38 +719,24 @@
return_VALUE(result);
}
-
-static int
-acpi_pci_link_resume (
- struct acpi_pci_link *link)
-{
- ACPI_FUNCTION_TRACE("acpi_pci_link_resume");
-
- if (link->irq.active && link->irq.initialized)
- return_VALUE(acpi_pci_link_set(link, link->irq.active));
- else
- return_VALUE(0);
-}
-
-
static int
-irqrouter_resume(
- struct sys_device *dev)
+irqrouter_suspend(
+ struct sys_device *dev,
+ u32 state)
{
struct list_head *node = NULL;
struct acpi_pci_link *link = NULL;
- ACPI_FUNCTION_TRACE("irqrouter_resume");
+ ACPI_FUNCTION_TRACE("irqrouter_suspend");
list_for_each(node, &acpi_link.entries) {
-
link = list_entry(node, struct acpi_pci_link, node);
if (!link) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n"));
continue;
}
-
- acpi_pci_link_resume(link);
+ if (link->irq.active && link->irq.initialized)
+ link->irq.suspend_resume = 1;
}
return_VALUE(0);
}
@@ -856,7 +848,7 @@
static struct sysdev_class irqrouter_sysdev_class = {
set_kset_name("irqrouter"),
- .resume = irqrouter_resume,
+ .suspend = irqrouter_suspend,
};
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2005/03/18 16:30:29-05:00 len.brown@intel.com
# [ACPI] S3 Suspend to RAM: interrupt resume fix
#
# Delete PCI Interrupt Link Device .resume method --
# it is the device driver's job to request interrupts,
# not the Link's job to remember what the devices want.
#
# This addresses the issue of attempting to run
# the ACPI interpreter too early in resume, when
# interrupts are still disabled.
#
# http://bugzilla.kernel.org/show_bug.cgi?id=3469
#
# Signed-off-by: David Shaohua Li <shaohua.li@intel.com>
# Signed-off-by: Len Brown <len.brown@intel.com>
#
# drivers/acpi/pci_link.c
# 2005/03/02 22:23:50-05:00 len.brown@intel.com +14 -22
# Delete PCI Interrupt Link .resume method
#
Greets,
Rafael
--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2005-05-03 19:33 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-25 12:54 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers Li, Shaohua
2005-03-25 14:19 ` Rafael J. Wysocki
2005-03-26 18:23 ` Rafael J. Wysocki
2005-03-26 19:07 ` Rafael J. Wysocki
2005-03-28 1:22 ` Li Shaohua
2005-03-29 10:33 ` Rafael J. Wysocki
-- strict thread matches above, loose matches on Subject: below --
2005-03-25 8:21 2.6.12-rc1-mm3 Andrew Morton
2005-03-25 11:29 ` 2.6.12-rc1-mm3: box hangs solid on resume from disk while resuming device drivers Rafael J. Wysocki
2005-05-02 22:54 ` Andrew Morton
2005-05-03 19:34 ` 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
all inboxes | Powered by JetHome®