mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Tomi Sarvela <tomi.p.sarvela@intel.com>
Cc: Martin Peres <martin.peres@linux.intel.com>,
	jeffy.chen@rock-chips.com, linux-kernel@vger.kernel.org
Subject: Re: Suspend-resume failure on Intel Eagle Lake Core2Duo
Date: Fri, 28 Jul 2017 16:13:36 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.20.1707281609250.1986@nanos> (raw)
In-Reply-To: <f7f52efa-f45c-7e9e-e407-a72c13a55089@intel.com>

On Fri, 28 Jul 2017, Tomi Sarvela wrote:
> On 28/07/17 16:15, Thomas Gleixner wrote:
> > Another question. Is the machine completely dead or not?
> 
> Completely dead. Powerled is on, so host isn't shut down.

So that means it does not even power the machine down. That's what I
expected least.

> Serial or network if don't give any signs of life.

> Patch applies cleanly but still getting the same error:

Sorry for the noise. I'm an idiot trying to do 10 things at once. This time
it actually compiles and links.

If the machine does still not powerdown with this applied, then please redo
the 'platform' test and grab the trace for that one.

Thanks,

	tglx

8<-----------
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -304,7 +304,10 @@ void irq_shutdown(struct irq_desc *desc)
 
 void irq_enable(struct irq_desc *desc)
 {
-	if (!irqd_irq_disabled(&desc->irq_data)) {
+	if (irq_suspend_resume)
+		irq_trace_state("preenable", desc);
+
+	if (!irqd_irq_disabled(&desc->irq_data) && !irq_suspend_resume) {
 		unmask_irq(desc);
 	} else {
 		irq_state_clr_disabled(desc);
@@ -315,10 +318,16 @@ void irq_enable(struct irq_desc *desc)
 			unmask_irq(desc);
 		}
 	}
+
+	if (irq_suspend_resume)
+		irq_trace_state("postenable", desc);
 }
 
 static void __irq_disable(struct irq_desc *desc, bool mask)
 {
+	if (irq_suspend_resume)
+		irq_trace_state("predisable", desc);
+
 	if (irqd_irq_disabled(&desc->irq_data)) {
 		if (mask)
 			mask_irq(desc);
@@ -331,6 +340,9 @@ static void __irq_disable(struct irq_des
 			mask_irq(desc);
 		}
 	}
+
+	if (irq_suspend_resume)
+		irq_trace_state("postdisable", desc);
 }
 
 /**
@@ -390,6 +402,9 @@ static inline void mask_ack_irq(struct i
 
 void mask_irq(struct irq_desc *desc)
 {
+	if (irq_suspend_resume)
+		irq_trace_state("premask", desc);
+
 	if (irqd_irq_masked(&desc->irq_data))
 		return;
 
@@ -397,17 +412,26 @@ void mask_irq(struct irq_desc *desc)
 		desc->irq_data.chip->irq_mask(&desc->irq_data);
 		irq_state_set_masked(desc);
 	}
+
+	if (irq_suspend_resume)
+		irq_trace_state("postmask", desc);
 }
 
 void unmask_irq(struct irq_desc *desc)
 {
-	if (!irqd_irq_masked(&desc->irq_data))
+	if (irq_suspend_resume)
+		irq_trace_state("preunmask", desc);
+
+	if (!irqd_irq_masked(&desc->irq_data) && !irq_suspend_resume)
 		return;
 
 	if (desc->irq_data.chip->irq_unmask) {
 		desc->irq_data.chip->irq_unmask(&desc->irq_data);
 		irq_state_clr_masked(desc);
 	}
+
+	if (irq_suspend_resume)
+		irq_trace_state("postunmask", desc);
 }
 
 void unmask_threaded_irq(struct irq_desc *desc)
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -459,3 +459,11 @@ static inline void irq_remove_debugfs_en
 {
 }
 #endif /* CONFIG_GENERIC_IRQ_DEBUGFS */
+
+extern bool irq_suspend_resume;
+
+static inline void irq_trace_state(const char *what, struct irq_desc *desc)
+{
+	trace_printk("%s %d state %08x\n", what, irq_desc_get_irq(desc),
+		     irqd_get(&desc->irq_data));
+}
--- a/kernel/irq/pm.c
+++ b/kernel/irq/pm.c
@@ -14,6 +14,8 @@
 
 #include "internals.h"
 
+bool irq_suspend_resume;
+
 bool irq_pm_check_wakeup(struct irq_desc *desc)
 {
 	if (irqd_is_wakeup_armed(&desc->irq_data)) {
@@ -120,6 +122,7 @@ void suspend_device_irqs(void)
 	struct irq_desc *desc;
 	int irq;
 
+	irq_suspend_resume = true;
 	for_each_irq_desc(irq, desc) {
 		unsigned long flags;
 		bool sync;
@@ -127,7 +130,9 @@ void suspend_device_irqs(void)
 		if (irq_settings_is_nested_thread(desc))
 			continue;
 		raw_spin_lock_irqsave(&desc->lock, flags);
+		irq_trace_state("presuspend", desc);
 		sync = suspend_device_irq(desc);
+		irq_trace_state("postsuspend", desc);
 		raw_spin_unlock_irqrestore(&desc->lock, flags);
 
 		if (sync)
@@ -172,9 +177,14 @@ static void resume_irqs(bool want_early)
 			continue;
 
 		raw_spin_lock_irqsave(&desc->lock, flags);
+		irq_trace_state("preresume", desc);
 		resume_irq(desc);
+		irq_trace_state("postresume", desc);
 		raw_spin_unlock_irqrestore(&desc->lock, flags);
 	}
+
+	if (!want_early)
+		irq_suspend_resume = false;
 }
 
 /**

  reply	other threads:[~2017-07-28 14:13 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-24 13:45 Martin Peres
2017-07-24 15:28 ` Thomas Gleixner
2017-07-24 15:41   ` Martin Peres
2017-07-24 16:35     ` Thomas Gleixner
2017-07-24 16:37       ` Martin Peres
2017-07-25  7:01         ` Tomi Sarvela
2017-07-26 13:47           ` Martin Peres
2017-07-26 14:26             ` Thomas Gleixner
2017-07-27  7:36               ` Tomi Sarvela
2017-07-27  7:42                 ` Thomas Gleixner
2017-07-27  8:12                   ` Tomi Sarvela
2017-07-27 19:42                     ` Thomas Gleixner
2017-07-27 20:13                       ` Thomas Gleixner
2017-07-27 21:08                         ` Thomas Gleixner
2017-07-28 12:29                           ` Tomi Sarvela
2017-07-28 12:42                             ` Thomas Gleixner
2017-07-28 13:15                               ` Thomas Gleixner
2017-07-28 13:25                                 ` Tomi Sarvela
2017-07-28 14:13                                   ` Thomas Gleixner [this message]
2017-07-28 14:46                                     ` Tomi Sarvela
2017-07-28 14:50                                       ` Thomas Gleixner
2017-07-28 14:55                                         ` Tomi Sarvela
2017-07-28 16:26                                           ` Thomas Gleixner
2017-07-31  7:21                                             ` Tomi Sarvela
2017-07-31  7:45                                               ` Thomas Gleixner
2017-07-31  7:55                                                 ` Tomi Sarvela
2017-07-31  8:29                                                   ` Thomas Gleixner
2017-07-31  8:41                                                     ` Tomi Sarvela
2017-07-31 14:04                                                       ` Thomas Gleixner
2017-07-31 14:13                                                         ` Tomi Sarvela
2017-07-31 15:06                                                   ` Thomas Gleixner
2017-07-31 15:44                                                     ` Tomi Sarvela
2017-07-31 15:55                                                       ` Thomas Gleixner
2017-08-03  7:32                                                         ` Masahiro Yamada
2017-08-03  8:23                                                           ` Peter Zijlstra
2017-08-03  8:41                                                           ` Marc Zyngier
2017-08-03 12:52                                                             ` Masahiro Yamada
2017-08-03 13:30                                                               ` Marc Zyngier
2017-08-07  4:45                                                                 ` Masahiro Yamada
2017-08-07  8:17                                                                   ` Marc Zyngier
2017-08-08  1:30                                                                     ` Masahiro Yamada
2017-08-08  7:39                                                                       ` Marc Zyngier
2017-08-09  4:03                                                                         ` Masahiro Yamada
2017-07-31  8:35                                           ` Thomas Gleixner
2017-07-28 12:34                 ` Martin Peres

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.DEB.2.20.1707281609250.1986@nanos \
    --to=tglx@linutronix.de \
    --cc=jeffy.chen@rock-chips.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martin.peres@linux.intel.com \
    --cc=tomi.p.sarvela@intel.com \
    /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

all inboxes | Powered by JetHome®