lkml.org 
[lkml]   [2010]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFC][PATCH] irq_work
    From
    Date
    On Thu, 2010-06-24 at 14:38 +0200, Andi Kleen wrote:
    > The sleepable
    > soft irq would have avoided that (that's not a show stopper)

    I'm still not convinced sleepable softirq is a workable thing.

    Softirqs:
    A) are non-preemptible
    B) are per-cpu because of A
    C) can be ran from ksoftirqd context
    D) generic kernel infrastructure with identical semantics on all archs

    If you were to make something like a sleepable softirq, you'd loose A
    (per definition), B (sleepable implies migratable to cpus_allowed) and
    possibly D (unless you want to touch all architectures).

    Now from your 'requirements':

    > I have one case that needs to sleep (but only when interrupting user code)

    > TIF works for user space, but it's a bit ugly because it requires adding
    > more data to the task_struct because CPUs can change.

    Which I read as:

    1) needs to run in the task context of the task that got 'interrupted'
    2) needs to stay on the cpu it got interrupted on.

    So C is out of the window too, at which point there's nothing resembling
    softirqs left.

    To boot, x86_64 runs softirqs from the hardirq stack:

    /* Call softirq on interrupt stack. Interrupts are off. */
    ENTRY(call_softirq)
    CFI_STARTPROC
    push %rbp
    CFI_ADJUST_CFA_OFFSET 8
    CFI_REL_OFFSET rbp,0
    mov %rsp,%rbp
    CFI_DEF_CFA_REGISTER rbp
    incl PER_CPU_VAR(irq_count)
    cmove PER_CPU_VAR(irq_stack_ptr),%rsp
    push %rbp # backlink for old unwinder
    call __do_softirq
    leaveq
    CFI_DEF_CFA_REGISTER rsp
    CFI_ADJUST_CFA_OFFSET -8
    decl PER_CPU_VAR(irq_count)
    ret
    CFI_ENDPROC
    END(call_softirq)

    Also, -rt has something that could be considered sleepable softirqs,
    although we call them preemptible softirqs. It runs all softirqs from
    cpu bound kthreads, which again doesn't match your requirements.

    So no, I don't think your idea of sleepable softirqs is sound.



    \
     
     \ /
      Last update: 2010-06-25 12:41    [W:0.024 / U:90.420 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site