[lkml]   [2008]   [Jan]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [patch/rfc 2.6.24-rc8-git] genirq: partial lockdep fixes

    On Fri, 2008-01-18 at 14:29 -0800, David Brownell wrote:
    > EXPERIMENTAL and incomplete patch to make LOCKDEP behave better in
    > the face of irq chaining, by annotating irqs with a lock_class which
    > can reflect that hierarchy.

    This is too short for me (who has no clue about genirq) to understand
    what this patch does or why it does it.

    > This version of the patch is incomplete in at least two respects:
    > - There's no spin_lock_irq_nested() primitive, so that locking calls
    > on irq probing (yeech!) paths must ignore the annotations.
    > ==> LOCKDEP feature is evidently missing:
    > spin_lock_irq_nested(lock_ptr, lock_class)

    This rant is more lines than adding the API :-/ the reason for it not
    being there is simple, it wasn't needed up until now.

    > - We'd really need new API to declare the parent/child relationships
    > between IRQs to handle this properly. Lacking such calls, this just
    > piggybacks set_irq_chained_handler() to modify the parent's class.
    > That's a problem, since only the lowest level of any lock tree gets
    > accurate nesting annotations. On the plus side: no platform changes
    > are needed this way, so testing is easy.
    > ==> GENIRQ programming interface evidently missing
    > set_irq_parent(parent_irqnum, child_irqnum) (?)
    > Example: when a GPIO controller's set_wake() handler needs to call its
    > parent's set_irq_wake() method to ensure all appropriate signal paths are
    > set up, that currently generates a bogus lockdep warning. This patch
    > removes those bogus warnings ... when there's only one level of parent.

    OK.... still need a bit more detail here.

     \ /
      Last update: 2008-01-21 09:35    [W:0.020 / U:44.816 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site