Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/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
This commit is contained in:
@@ -100,13 +100,6 @@ struct irq_desc {
|
|||||||
extern struct irq_desc irq_desc[NR_IRQS];
|
extern struct irq_desc irq_desc[NR_IRQS];
|
||||||
#endif
|
#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
|
#ifdef CONFIG_GENERIC_HARDIRQS
|
||||||
|
|
||||||
static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
|
static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc)
|
||||||
@@ -178,7 +171,36 @@ static inline int irq_has_action(unsigned int irq)
|
|||||||
return desc->action != NULL;
|
return desc->action != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
desc->handle_irq = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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
|
#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)
|
static inline int irq_balancing_disabled(unsigned int irq)
|
||||||
{
|
{
|
||||||
struct irq_desc *desc;
|
struct irq_desc *desc;
|
||||||
@@ -188,14 +210,13 @@ static inline int irq_balancing_disabled(unsigned int irq)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* caller has locked the irq_desc and both params are valid */
|
static inline void
|
||||||
static inline void __set_irq_handler_unlocked(int irq,
|
irq_set_lockdep_class(unsigned int irq, struct lock_class_key *class)
|
||||||
irq_flow_handler_t handler)
|
|
||||||
{
|
{
|
||||||
struct irq_desc *desc;
|
struct irq_desc *desc = irq_to_desc(irq);
|
||||||
|
|
||||||
desc = irq_to_desc(irq);
|
if (desc)
|
||||||
desc->handle_irq = handler;
|
lockdep_set_class(&desc->lock, class);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
|
#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
|
||||||
|
@@ -198,15 +198,6 @@ err:
|
|||||||
return -ENOMEM;
|
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)
|
static int irq_expand_nr_irqs(unsigned int nr)
|
||||||
{
|
{
|
||||||
if (nr > IRQ_BITMAP_BITS)
|
if (nr > IRQ_BITMAP_BITS)
|
||||||
@@ -283,11 +274,6 @@ struct irq_desc *irq_to_desc(unsigned int irq)
|
|||||||
return (irq < NR_IRQS) ? irq_desc + irq : NULL;
|
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)
|
static void free_desc(unsigned int irq)
|
||||||
{
|
{
|
||||||
dynamic_irq_cleanup(irq);
|
dynamic_irq_cleanup(irq);
|
||||||
|
Reference in New Issue
Block a user