Skip to content

Commit

Permalink
Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/li…
Browse files Browse the repository at this point in the history
…nux/kernel/git/tip/linux-2.6-tip

* 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  genirq: Provide locked setter for chip, handler, name
  genirq: Provide a lockdep helper
  genirq; Remove the last leftovers of the old sparse irq code
  • Loading branch information
Linus Torvalds committed Mar 26, 2011
2 parents 94df491 + a2e8461 commit 839767e
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 26 deletions.
45 changes: 33 additions & 12 deletions include/linux/irqdesc.h
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,6 @@ struct irq_desc {
extern struct irq_desc irq_desc[NR_IRQS];
#endif

/* Will be removed once the last users in power and sh are gone */
extern struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node);
static inline struct irq_desc *move_irq_desc(struct irq_desc *desc, int node)
{
return desc;
}

#ifdef CONFIG_GENERIC_HARDIRQS

static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
Expand Down Expand Up @@ -178,24 +171,52 @@ static inline int irq_has_action(unsigned int irq)
return desc->action != NULL;
}

#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
static inline int irq_balancing_disabled(unsigned int irq)
/* caller has locked the irq_desc and both params are valid */
static inline void __irq_set_handler_locked(unsigned int irq,
irq_flow_handler_t handler)
{
struct irq_desc *desc;

desc = irq_to_desc(irq);
return desc->status & IRQ_NO_BALANCING_MASK;
desc->handle_irq = handler;
}
#endif

/* caller has locked the irq_desc and both params are valid */
static inline void
__irq_set_chip_handler_name_locked(unsigned int irq, struct irq_chip *chip,
irq_flow_handler_t handler, const char *name)
{
struct irq_desc *desc;

desc = irq_to_desc(irq);
irq_desc_get_irq_data(desc)->chip = chip;
desc->handle_irq = handler;
desc->name = name;
}

#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
static inline void __set_irq_handler_unlocked(int irq,
irq_flow_handler_t handler)
{
__irq_set_handler_locked(irq, handler);
}

static inline int irq_balancing_disabled(unsigned int irq)
{
struct irq_desc *desc;

desc = irq_to_desc(irq);
desc->handle_irq = handler;
return desc->status & IRQ_NO_BALANCING_MASK;
}
#endif

static inline void
irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)
{
struct irq_desc *desc = irq_to_desc(irq);

if (desc)
lockdep_set_class(&desc->lock, class);
}

#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
Expand Down
14 changes: 0 additions & 14 deletions kernel/irq/irqdesc.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,15 +198,6 @@ static int alloc_descs(unsigned int start, unsigned int cnt, int node)
return -ENOMEM;
}

struct irq_desc * __ref irq_to_desc_alloc_node(unsigned int irq, int node)
{
int res = irq_alloc_descs(irq, irq, 1, node);

if (res == -EEXIST || res == irq)
return irq_to_desc(irq);
return NULL;
}

static int irq_expand_nr_irqs(unsigned int nr)
{
if (nr > IRQ_BITMAP_BITS)
Expand Down Expand Up @@ -283,11 +274,6 @@ struct irq_desc *irq_to_desc(unsigned int irq)
return (irq < NR_IRQS) ? irq_desc + irq : NULL;
}

struct irq_desc *irq_to_desc_alloc_node(unsigned int irq, int node)
{
return irq_to_desc(irq);
}

static void free_desc(unsigned int irq)
{
dynamic_irq_cleanup(irq);
Expand Down

0 comments on commit 839767e

Please sign in to comment.