lkml.org 
[lkml]   [2009]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [RFC][PATCH 2/2] PM: Rework handling of interrupts during suspend-resume
    Date
    On Thursday 26 February 2009, Linus Torvalds wrote:
    >
    > On Thu, 26 Feb 2009, Rafael J. Wysocki wrote:
    > >
    > > Well, how exactly the $subject patch does cause this problem to happen?
    >
    > Rafael, the problem is that if an interrupt happens while it's disabled -
    > but before the CPU has actually turned all interrupts off - the CPU will
    > ACK the interrupt (but just set a flag for it being PENDING), so now the
    > chipset logic around it will not see it as pending any more, so now the
    > chipset won't auto-wake the CPU immediately (or more likely, it won't
    > even suspend it).

    Ah, I see now, thanks.

    > It's trivial to fix multiple ways, so I wouldn't worry. The most trivial
    > way is to just have some sysdev drievr code simply do something like
    >
    > static int sysdev_suspend()
    > {
    > for_each_irq(irq,desc) {
    > if (!(desc->flags & IRQF_WAKE))
    > continue;
    > if (desc->flags & IRQ_PENDING)
    > return -EBUSY;
    > }
    > return 0;
    > }
    >
    > and that should automatically mean that if any irq is pending, the suspend
    > will fail and we'll immediately wake up again.

    Yeah.

    Thanks,
    Rafael


    \
     
     \ /
      Last update: 2009-02-26 23:33    [W:0.023 / U:29.220 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site