public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Alan Stern <stern@rowland.harvard.edu>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org,
	Linux PM list <linux-pm@vger.kernel.org>,
	Dmitry Torokhov <dtor@google.com>
Subject: Re: [PATCH 1/3] irq / PM: New driver interface for wakeup interrupts
Date: Fri, 1 Aug 2014 01:41:31 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.10.1408010134440.4997@nanos> (raw)
In-Reply-To: <1483885.6aPDiGeI4u@vostro.rjw.lan>

On Thu, 31 Jul 2014, Rafael J. Wysocki wrote:
> On Thursday, July 31, 2014 04:12:55 PM Alan Stern wrote:
> > Pardon me for sticking my nose into the middle of the conversation, but
> > here's what it looks like to me:
> > 
> > The entire no_irq phase of suspend/resume is starting to seem like a
> > mistake.  We should never have done it.
> 
> In hindsight, I totally agree.  Question is what we can do about it now.

<SNIP>

> So how can we eliminate the noirq phase in a workable way?

The straight way to do that is breaking the world and some more and
then fix up a gazillion of device drivers by doing a massive voodoo
debugging effort simply because in most cases we do not get any useful
information out of the system once the shit hits the fan.

We could add instrumentation to the core code about interrupts which
are coming in unexpectedly during suspend, but that does not solve
anything.

We really cannot call any device handler at that point as clocks might
be turned off already and any access to a device register might simply
cause a full undebuggable stall of the CPU.

And there is no way to prove that there is no chance of a spurious
interrupt for a given device. 

So if we cannot handle it at the infrastructure level, we need to make
sure that every fricking device driver interrupt handler has a 

     if (dev->suspended)
     	return CRAP;

conditional as the first line of code in it.

What is that buying us? 

Nothing than a shitload of hard to understand problems, really. The
only sensible way to handle this is at the core level.

#1 There is no way that you can rely on random drivers to do the Right
   Thing. 

#2 There is no way that all hardware is implemented in a sane way.

#3 You CANNOT educate the people who are tasked to implement something
   which "does the job" to understand all the subtle details of
   suspend/resume or whatever.

In fact such an approach would take the general aims of consolidating
repeating patterns into core infrastructure and hiding complexity from
the driver developers ad absurdum. No thanks. We have enough
uncomprehensible shite in drivers/* already. We really can do without
adding more reasons for voodoo programming.

This is a classic core infrastructure problem and we need to get the
semantics and the implementation straight by considering the
challenges of new fangled hardware and the incompentent usage of
that. Once we have that we need to fix the few offending drivers, but
that's a task which can be handled with grep and some brain applied.

Anyone who thinks that this can and should be solved at the driver
level is simply taking the wrong drugs or ran out of supply of the
proper ones. Either call your shrink or your drug dealer to get out of
that.

Thanks,

	tglx





  reply	other threads:[~2014-07-31 23:41 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20140724212620.GO3935@laptop>
2014-07-24 22:02 ` [RFC][PATCH] irq: Rework IRQF_NO_SUSPENDED Rafael J. Wysocki
2014-07-24 23:10 ` Rafael J. Wysocki
2014-07-25  5:58   ` Peter Zijlstra
2014-07-29 19:20     ` Brian Norris
2014-07-29 19:28       ` Peter Zijlstra
2014-07-29 20:41         ` Brian Norris
2014-07-25  9:27   ` Thomas Gleixner
2014-07-25 12:49     ` Rafael J. Wysocki
2014-07-25 13:55       ` Thomas Gleixner
     [not found] ` <alpine.DEB.2.10.1407251135590.23352@nanos>
2014-07-25 12:47   ` Rafael J. Wysocki
2014-07-25 13:22     ` Peter Zijlstra
     [not found] ` <20140725124037.GL20603@laptop.programming.kicks-ass.net>
     [not found]   ` <20140725132541.GT12054@laptop.lan>
2014-07-25 17:03     ` Rafael J. Wysocki
2014-07-25 16:58       ` Peter Zijlstra
2014-07-25 21:00       ` Thomas Gleixner
2014-07-25 22:25         ` Rafael J. Wysocki
2014-07-25 23:07           ` Rafael J. Wysocki
2014-07-26 11:49           ` Rafael J. Wysocki
2014-07-26 11:53             ` Rafael J. Wysocki
2014-07-28  6:49             ` Peter Zijlstra
2014-07-28 12:33               ` Thomas Gleixner
2014-07-28 13:04                 ` Peter Zijlstra
2014-07-28 21:53                 ` Rafael J. Wysocki
2014-07-28 23:01                   ` Rafael J. Wysocki
2014-07-29 12:46                     ` Thomas Gleixner
2014-07-29 13:33                       ` Rafael J. Wysocki
2014-07-30 21:46                         ` [PATCH 0/3] irq / PM: wakeup interrupt interface for drivers (was: Re: [RFC][PATCH] irq: Rework IRQF_NO_SUSPENDED) Rafael J. Wysocki
2014-07-30 21:51                           ` [PATCH 1/3] irq / PM: New driver interface for wakeup interrupts Rafael J. Wysocki
2014-07-30 22:56                             ` Thomas Gleixner
2014-07-31  0:12                               ` Thomas Gleixner
2014-07-31  2:14                                 ` Rafael J. Wysocki
2014-07-31 10:44                                   ` Thomas Gleixner
2014-07-31 18:36                                     ` Rafael J. Wysocki
2014-07-31 20:12                                       ` Alan Stern
2014-07-31 21:04                                         ` Rafael J. Wysocki
2014-07-31 23:41                                           ` Thomas Gleixner [this message]
2014-08-01  0:51                                             ` Rafael J. Wysocki
2014-08-01 14:41                                             ` Alan Stern
2014-07-31 22:16                                       ` Thomas Gleixner
2014-08-01  0:08                                         ` Rafael J. Wysocki
2014-08-01  1:24                                           ` Rafael J. Wysocki
2014-08-01  9:40                                           ` [PATCH 1/3] irq / PM: New driver interface for wakeup interruptsn Thomas Gleixner
2014-08-01 13:45                                             ` Rafael J. Wysocki
2014-08-01 13:43                                               ` Thomas Gleixner
2014-08-01 14:29                                                 ` Rafael J. Wysocki
2014-08-02  1:31                                                   ` Rafael J. Wysocki
2014-08-03 13:42                                                     ` Rafael J. Wysocki
2014-08-04  3:38                                                       ` Rafael J. Wysocki
2014-08-05 15:22                                                   ` [PATCH 0/5] irq / PM: Shared IRQs vs IRQF_NO_SUSPEND and suspend-to-idle wakeup Rafael J. Wysocki
2014-08-05 15:24                                                     ` [PATCH 1/5] PM / sleep: Mechanism for aborting system suspends unconditionally Rafael J. Wysocki
2014-08-05 23:29                                                       ` [Update][PATCH " Rafael J. Wysocki
2014-08-05 15:25                                                     ` [PATCH 2/5] irq / PM: Fix IRQF_NO_SUSPEND problem with shared interrupts Rafael J. Wysocki
2014-08-05 15:26                                                     ` [PATCH 3/5] irq / PM: Make wakeup interrupts wake up from suspend-to-idle Rafael J. Wysocki
2014-08-08  1:58                                                       ` [Update][PATCH " Rafael J. Wysocki
2014-08-09  0:28                                                         ` Rafael J. Wysocki
2014-08-05 15:27                                                     ` [PATCH 4/5] x86 / PM: Set IRQCHIP_SKIP_SET_WAKE for IOAPIC IRQ chip objects Rafael J. Wysocki
2014-08-05 15:28                                                     ` [PATCH 5/5] PCI / PM: Make PCIe PME interrupts wake up from suspend-to-idle Rafael J. Wysocki
2014-08-05 16:12                                                     ` [PATCH 0/5] irq / PM: Shared IRQs vs IRQF_NO_SUSPEND and suspend-to-idle wakeup Peter Zijlstra
2014-08-08  2:09                                                     ` Rafael J. Wysocki
2014-07-31 22:54                                       ` [PATCH 1/3] irq / PM: New driver interface for wakeup interrupts Thomas Gleixner
2014-07-30 21:51                           ` [PATCH 2/3] PCI / PM: Make PCIe PME interrupts wake up from "freeze" sleep state Rafael J. Wysocki
2014-07-30 21:52                           ` [PATCH 3/3] gpio-keys / PM: use enable/disable_device_irq_wake() Rafael J. Wysocki
2014-07-28 21:27               ` [RFC][PATCH] irq: Rework IRQF_NO_SUSPENDED Rafael J. Wysocki
2014-07-27 15:53           ` Rafael J. Wysocki
2014-07-27 22:00             ` [PATCH, v2] Rafael J. Wysocki
2014-07-28 12:11               ` Thomas Gleixner
2014-07-28 21:17                 ` [PATCH, v3] irq / PM: Fix IRQF_NO_SUSPEND problem with shared interrupts (was: Re: [PATCH, v2]) Rafael J. Wysocki
2014-07-29  7:28                   ` [PATCH, v4] irq / PM: Fix IRQF_NO_SUSPEND problem with shared interrupts Rafael J. Wysocki
2014-07-29 13:46                     ` [PATCH, v5] " Rafael J. Wysocki
2014-07-30  0:54                       ` [PATCH, v6] " Rafael J. Wysocki

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.10.1408010134440.4997@nanos \
    --to=tglx@linutronix.de \
    --cc=dtor@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=stern@rowland.harvard.edu \
    /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