Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 234761
b: refs/heads/master
c: a439520
h: refs/heads/master
i:
  234759: 02cc1b6
v: v3
  • Loading branch information
Thomas Gleixner committed Feb 19, 2011
1 parent f2586e2 commit 72742fa
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 77694b408abb8f92195ad5ed6ce5492f1d794c77
refs/heads/master: a439520f8b18917b322f576be04c54aba84bb044
4 changes: 4 additions & 0 deletions trunk/include/linux/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -363,9 +363,13 @@ extern void remove_irq(unsigned int irq, struct irqaction *act);
#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_PENDING_IRQ)
void move_native_irq(int irq);
void move_masked_irq(int irq);
void irq_move_irq(struct irq_data *data);
void irq_move_masked_irq(struct irq_data *data);
#else
static inline void move_native_irq(int irq) { }
static inline void move_masked_irq(int irq) { }
static inline void irq_move_irq(struct irq_data *data) { }
static inline void irq_move_masked_irq(struct irq_data *data) { }
#endif

extern int no_irq_affinity;
Expand Down
28 changes: 19 additions & 9 deletions trunk/kernel/irq/migration.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

#include "internals.h"

void move_masked_irq(int irq)
void irq_move_masked_irq(struct irq_data *idata)
{
struct irq_desc *desc = irq_to_desc(irq);
struct irq_chip *chip = desc->irq_data.chip;
struct irq_desc *desc = irq_data_to_desc(idata);
struct irq_chip *chip = idata->chip;

if (likely(!irqd_is_setaffinity_pending(&desc->irq_data)))
return;
Expand Down Expand Up @@ -53,12 +53,17 @@ void move_masked_irq(int irq)
cpumask_clear(desc->pending_mask);
}

void move_native_irq(int irq)
void move_masked_irq(int irq)
{
irq_move_masked_irq(irq_get_irq_data(irq));
}

void irq_move_irq(struct irq_data *idata)
{
struct irq_desc *desc = irq_to_desc(irq);
struct irq_desc *desc = irq_data_to_desc(idata);
bool masked;

if (likely(!irqd_is_setaffinity_pending(&desc->irq_data)))
if (likely(!irqd_is_setaffinity_pending(idata)))
return;

if (unlikely(desc->istate & IRQS_DISABLED))
Expand All @@ -71,8 +76,13 @@ void move_native_irq(int irq)
*/
masked = desc->istate & IRQS_MASKED;
if (!masked)
desc->irq_data.chip->irq_mask(&desc->irq_data);
move_masked_irq(irq);
idata->chip->irq_mask(idata);
irq_move_masked_irq(idata);
if (!masked)
desc->irq_data.chip->irq_unmask(&desc->irq_data);
idata->chip->irq_unmask(idata);
}

void move_native_irq(int irq)
{
irq_move_irq(irq_get_irq_data(irq));
}

0 comments on commit 72742fa

Please sign in to comment.