Re: [linux-usb-devel] Re: 2.6.13-mm2

Linus Torvalds
2005-09-29T15:37:19Z

On Wed, 28 Sep 2005, David Brownell wrote:
>
> You could try adding
>
> ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
>
> near the end of ohci_pci_suspend().

Give it up.

The right thing is to not free and re-aquire the damn interrupt in the
first place. It was a MISTAKE. We undid the ACPI braindamage that made it
be required a month ago, because sane people REALIZED it was a mistake.

It's not just "random luck" that not releasing the interrupt over suspend
fixes the problem. The problem is _due_ to drivers releasing the
interrupt in the first place.

IT DOESN'T MATTER what we do before the suspend, because we don't control
the wakeup sequence. If the BIOS wakeup enables the devices again, the
fact that we disabled them on suspend makes zero difference.

And yes, we can always "fix" things by selecting the right order to
re-aquire the interrupts, but the thing is, the "right order" will be
machine-dependent and in general depend on the phase of the moon and BIOS
version, and ACPI quirks.

The _only_ sane thing to do is to not drop the interrupts in the first
place. So that if you start getting interrupts before you expect them, you
can still handle them.

Linus