powerpc/smp: Do not disable IPI interrupts during suspend

Started by Zhao Chenhui on Jul 20, 2012 · 9 messages from 3 authors · Last reply Sep 19, 2012

Subsystems (2)

Maintainers (2)

STALE5165d

open the first message on its own page

Message details and related content
During suspend, all interrupts including IPI will be disabled. In this case,
the suspend process will hang in SMP. To prevent this, pass the flag
IRQF_NO_SUSPEND when requesting IPI irq.

Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
 arch/powerpc/kernel/smp.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index fecb038..d26bbf8 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -171,7 +171,7 @@ int smp_request_message_ipi(int virq, int msg)
 	}
 #endif
 	err = request_irq(virq, smp_ipi_action[msg],
-			  IRQF_PERCPU | IRQF_NO_THREAD,
+			  IRQF_PERCPU | IRQF_NO_THREAD | IRQF_NO_SUSPEND,
 			  smp_ipi_name[msg], 0);
 	WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n",
 		virq, smp_ipi_name[msg], err);
-- 
1.6.4.1
Message details and related content
On Jul 20, 2012, at 7:47 AM, Zhao Chenhui wrote:
During suspend, all interrupts including IPI will be disabled. In this =
case,
the suspend process will hang in SMP. To prevent this, pass the flag
IRQF_NO_SUSPEND when requesting IPI irq.
=20
Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
arch/powerpc/kernel/smp.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
BenH,

Can you ack?

- k
quoted hunk
=20
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index fecb038..d26bbf8 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -171,7 +171,7 @@ int smp_request_message_ipi(int virq, int msg)
	}
#endif
	err =3D request_irq(virq, smp_ipi_action[msg],
-			  IRQF_PERCPU | IRQF_NO_THREAD,
+			  IRQF_PERCPU | IRQF_NO_THREAD | =
IRQF_NO_SUSPEND,
			  smp_ipi_name[msg], 0);
	WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n",
		virq, smp_ipi_name[msg], err);
--=20
1.6.4.1
=20
Message details and related content
On Fri, 2012-07-27 at 16:58 -0500, Kumar Gala wrote:
On Jul 20, 2012, at 7:47 AM, Zhao Chenhui wrote:
quoted
During suspend, all interrupts including IPI will be disabled. In this case,
the suspend process will hang in SMP. To prevent this, pass the flag
IRQF_NO_SUSPEND when requesting IPI irq.

Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
arch/powerpc/kernel/smp.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
BenH,

Can you ack?
No I'll merge it but not until it's been in next for a bit unless you
have some strong emergency there, it's on my mental list of things to
shovel into next after rc1.

Curiosity: didn't we use to disable all non-boot CPUs on suspend ?

Cheers,
Ben.
- k
quoted
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index fecb038..d26bbf8 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -171,7 +171,7 @@ int smp_request_message_ipi(int virq, int msg)
	}
#endif
	err = request_irq(virq, smp_ipi_action[msg],
-			  IRQF_PERCPU | IRQF_NO_THREAD,
+			  IRQF_PERCPU | IRQF_NO_THREAD | IRQF_NO_SUSPEND,
			  smp_ipi_name[msg], 0);
	WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n",
		virq, smp_ipi_name[msg], err);
-- 
1.6.4.1
Message details and related content
On Jul 27, 2012, at 5:20 PM, Benjamin Herrenschmidt wrote:
On Fri, 2012-07-27 at 16:58 -0500, Kumar Gala wrote:
quoted
On Jul 20, 2012, at 7:47 AM, Zhao Chenhui wrote:
=20
quoted
During suspend, all interrupts including IPI will be disabled. In =
this case,
quoted
quoted
the suspend process will hang in SMP. To prevent this, pass the flag
IRQF_NO_SUSPEND when requesting IPI irq.
=20
Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
arch/powerpc/kernel/smp.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
=20
BenH,
=20
Can you ack?
=20
No I'll merge it but not until it's been in next for a bit unless you
have some strong emergency there, it's on my mental list of things to
shovel into next after rc1.
I wasn't clear, I was meaning for my 'next' tree, not 3.6.  Trying to =
get these FSL PM patches into my 'next' for 3.7.

- k
Curiosity: didn't we use to disable all non-boot CPUs on suspend ?
=20
Cheers,
Ben.
=20
quoted
- k
=20
quoted
=20
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index fecb038..d26bbf8 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -171,7 +171,7 @@ int smp_request_message_ipi(int virq, int msg)
	}
#endif
	err =3D request_irq(virq, smp_ipi_action[msg],
-			  IRQF_PERCPU | IRQF_NO_THREAD,
+			  IRQF_PERCPU | IRQF_NO_THREAD | =
IRQF_NO_SUSPEND,
quoted
quoted
			  smp_ipi_name[msg], 0);
	WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n",
		virq, smp_ipi_name[msg], err);
--=20
1.6.4.1
=20
=20
Message details and related content
On Sat, Jul 28, 2012 at 08:20:31AM +1000, Benjamin Herrenschmidt wrote:
On Fri, 2012-07-27 at 16:58 -0500, Kumar Gala wrote:
quoted
On Jul 20, 2012, at 7:47 AM, Zhao Chenhui wrote:
quoted
During suspend, all interrupts including IPI will be disabled. In this case,
the suspend process will hang in SMP. To prevent this, pass the flag
IRQF_NO_SUSPEND when requesting IPI irq.

Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
arch/powerpc/kernel/smp.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
BenH,

Can you ack?
No I'll merge it but not until it's been in next for a bit unless you
have some strong emergency there, it's on my mental list of things to
shovel into next after rc1.

Curiosity: didn't we use to disable all non-boot CPUs on suspend ?

Cheers,
Ben.
Yes, we disabled all non-boot CPUs on suspend by calling disable_nonboot_cpus().
The disable_nonboot_cpus() needs IPIs to work. But prior to
calling disable_nonboot_cpus(), the IPIs are disabled in dpm_suspend_noirq().

-Chenhui
Message details and related content
On Aug 2, 2012, at 5:04 AM, Zhao Chenhui wrote:
On Sat, Jul 28, 2012 at 08:20:31AM +1000, Benjamin Herrenschmidt =
wrote:
quoted
On Fri, 2012-07-27 at 16:58 -0500, Kumar Gala wrote:
quoted
On Jul 20, 2012, at 7:47 AM, Zhao Chenhui wrote:
=20
quoted
During suspend, all interrupts including IPI will be disabled. In =
this case,
quoted
quoted
quoted
the suspend process will hang in SMP. To prevent this, pass the =
flag
quoted
quoted
quoted
IRQF_NO_SUSPEND when requesting IPI irq.
=20
Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
arch/powerpc/kernel/smp.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
=20
BenH,
=20
Can you ack?
=20
No I'll merge it but not until it's been in next for a bit unless you
have some strong emergency there, it's on my mental list of things to
shovel into next after rc1.
=20
Curiosity: didn't we use to disable all non-boot CPUs on suspend ?
=20
Cheers,
Ben.
=20
Yes, we disabled all non-boot CPUs on suspend by calling =
disable_nonboot_cpus().
The disable_nonboot_cpus() needs IPIs to work. But prior to
calling disable_nonboot_cpus(), the IPIs are disabled in =
dpm_suspend_noirq().
=20
-Chenhui
Benh, Ack?

- k=
Message details and related content
On Aug 10, 2012, at 7:40 AM, Kumar Gala wrote:
=20
On Aug 2, 2012, at 5:04 AM, Zhao Chenhui wrote:
=20
quoted
On Sat, Jul 28, 2012 at 08:20:31AM +1000, Benjamin Herrenschmidt =
wrote:
quoted
quoted
On Fri, 2012-07-27 at 16:58 -0500, Kumar Gala wrote:
quoted
On Jul 20, 2012, at 7:47 AM, Zhao Chenhui wrote:
=20
quoted
During suspend, all interrupts including IPI will be disabled. In =
this case,
quoted
quoted
quoted
quoted
the suspend process will hang in SMP. To prevent this, pass the =
flag
quoted
quoted
quoted
quoted
IRQF_NO_SUSPEND when requesting IPI irq.
=20
Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
arch/powerpc/kernel/smp.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
=20
BenH,
=20
Can you ack?
=20
No I'll merge it but not until it's been in next for a bit unless =
you
quoted
quoted
have some strong emergency there, it's on my mental list of things =
to
quoted
quoted
shovel into next after rc1.
=20
Curiosity: didn't we use to disable all non-boot CPUs on suspend ?
=20
Cheers,
Ben.
=20
Yes, we disabled all non-boot CPUs on suspend by calling =
disable_nonboot_cpus().
quoted
The disable_nonboot_cpus() needs IPIs to work. But prior to
calling disable_nonboot_cpus(), the IPIs are disabled in =
dpm_suspend_noirq().
quoted
=20
-Chenhui
=20
Benh, Ack?
Ben?

- k=
Message details and related content
On Thu, 2012-09-13 at 13:16 -0500, Kumar Gala wrote:
quoted
quoted
Yes, we disabled all non-boot CPUs on suspend by calling
disable_nonboot_cpus().
quoted
quoted
The disable_nonboot_cpus() needs IPIs to work. But prior to
calling disable_nonboot_cpus(), the IPIs are disabled in
dpm_suspend_noirq().
Sure, no biggie on this one, forgot to ack it, just stick my ack in and
put it in your tree.

Cheers,
Ben.
Message details and related content
On Jul 20, 2012, at 7:47 AM, Zhao Chenhui wrote:
During suspend, all interrupts including IPI will be disabled. In this =
case,
the suspend process will hang in SMP. To prevent this, pass the flag
IRQF_NO_SUSPEND when requesting IPI irq.
=20
Signed-off-by: Zhao Chenhui <redacted>
Signed-off-by: Li Yang <redacted>
---
arch/powerpc/kernel/smp.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
applied to next

- k=
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help