Skip to content
  • Philippe Gerum's avatar
    genirq: irq_pipeline: add IRQD_SETAFFINITY_BLOCKED state · 3488ef20
    Philippe Gerum authored
    
    
    Some irqchips require IRQ affinity to be set from the context of the
    migrated interrupt, such as Intel's IO*APIC hardware (see
    CONFIG_GENERIC_PENDING_IRQ). Since the code actually changing the
    affinity may be available to the in-band stage exclusively, we have to
    defer its execution until events are synchronized for that stage
    before returning from the interrupt frame.
    
    Since we might have received the original event in a context from
    which the in-band interrupt log will not be synchronized on top of
    handle_irq_pipelined_finish(), we need a way to tag IRQ descriptors on
    entry to the pipeline so that the flow handler won't schedule any
    deferred affinity update for the event. Those contexts are:
    
    - if the in-band stage is stalled
    - if running on the out-of-band stage
    
    IRQD_SETAFFINITY_BLOCKED is such a marker, telling the
    architecture-specific pipeline code not to schedule any affinity
    update when set.
    
    Signed-off-by: default avatarPhilippe Gerum <rpm@xenomai.org>
    3488ef20