|
@@ -18,17 +18,11 @@ extern int __irq_set_trigger(struct irq_desc *desc, unsigned int irq,
|
|
extern void __disable_irq(struct irq_desc *desc, unsigned int irq, bool susp);
|
|
extern void __disable_irq(struct irq_desc *desc, unsigned int irq, bool susp);
|
|
extern void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume);
|
|
extern void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume);
|
|
|
|
|
|
-extern struct lock_class_key irq_desc_lock_class;
|
|
|
|
extern void init_kstat_irqs(struct irq_desc *desc, int node, int nr);
|
|
extern void init_kstat_irqs(struct irq_desc *desc, int node, int nr);
|
|
-extern raw_spinlock_t sparse_irq_lock;
|
|
|
|
|
|
|
|
/* Resending of interrupts :*/
|
|
/* Resending of interrupts :*/
|
|
void check_irq_resend(struct irq_desc *desc, unsigned int irq);
|
|
void check_irq_resend(struct irq_desc *desc, unsigned int irq);
|
|
|
|
|
|
-#ifdef CONFIG_SPARSE_IRQ
|
|
|
|
-void replace_irq_desc(unsigned int irq, struct irq_desc *desc);
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
#ifdef CONFIG_PROC_FS
|
|
#ifdef CONFIG_PROC_FS
|
|
extern void register_irq_proc(unsigned int irq, struct irq_desc *desc);
|
|
extern void register_irq_proc(unsigned int irq, struct irq_desc *desc);
|
|
extern void unregister_irq_proc(unsigned int irq, struct irq_desc *desc);
|
|
extern void unregister_irq_proc(unsigned int irq, struct irq_desc *desc);
|
|
@@ -110,99 +104,3 @@ static inline void print_irq_desc(unsigned int irq, struct irq_desc *desc)
|
|
|
|
|
|
#undef P
|
|
#undef P
|
|
|
|
|
|
-/* Stuff below will be cleaned up after the sparse allocator is done */
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_SMP
|
|
|
|
-/**
|
|
|
|
- * alloc_desc_masks - allocate cpumasks for irq_desc
|
|
|
|
- * @desc: pointer to irq_desc struct
|
|
|
|
- * @node: node which will be handling the cpumasks
|
|
|
|
- * @boot: true if need bootmem
|
|
|
|
- *
|
|
|
|
- * Allocates affinity and pending_mask cpumask if required.
|
|
|
|
- * Returns true if successful (or not required).
|
|
|
|
- */
|
|
|
|
-static inline bool alloc_desc_masks(struct irq_desc *desc, int node,
|
|
|
|
- bool boot)
|
|
|
|
-{
|
|
|
|
- gfp_t gfp = GFP_ATOMIC;
|
|
|
|
-
|
|
|
|
- if (boot)
|
|
|
|
- gfp = GFP_NOWAIT;
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_CPUMASK_OFFSTACK
|
|
|
|
- if (!alloc_cpumask_var_node(&desc->irq_data.affinity, gfp, node))
|
|
|
|
- return false;
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_GENERIC_PENDING_IRQ
|
|
|
|
- if (!alloc_cpumask_var_node(&desc->pending_mask, gfp, node)) {
|
|
|
|
- free_cpumask_var(desc->irq_data.affinity);
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-#endif
|
|
|
|
-#endif
|
|
|
|
- return true;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline void init_desc_masks(struct irq_desc *desc)
|
|
|
|
-{
|
|
|
|
- cpumask_setall(desc->irq_data.affinity);
|
|
|
|
-#ifdef CONFIG_GENERIC_PENDING_IRQ
|
|
|
|
- cpumask_clear(desc->pending_mask);
|
|
|
|
-#endif
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * init_copy_desc_masks - copy cpumasks for irq_desc
|
|
|
|
- * @old_desc: pointer to old irq_desc struct
|
|
|
|
- * @new_desc: pointer to new irq_desc struct
|
|
|
|
- *
|
|
|
|
- * Insures affinity and pending_masks are copied to new irq_desc.
|
|
|
|
- * If !CONFIG_CPUMASKS_OFFSTACK the cpumasks are embedded in the
|
|
|
|
- * irq_desc struct so the copy is redundant.
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
-static inline void init_copy_desc_masks(struct irq_desc *old_desc,
|
|
|
|
- struct irq_desc *new_desc)
|
|
|
|
-{
|
|
|
|
-#ifdef CONFIG_CPUMASK_OFFSTACK
|
|
|
|
- cpumask_copy(new_desc->irq_data.affinity, old_desc->irq_data.affinity);
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_GENERIC_PENDING_IRQ
|
|
|
|
- cpumask_copy(new_desc->pending_mask, old_desc->pending_mask);
|
|
|
|
-#endif
|
|
|
|
-#endif
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline void free_desc_masks(struct irq_desc *old_desc,
|
|
|
|
- struct irq_desc *new_desc)
|
|
|
|
-{
|
|
|
|
- free_cpumask_var(old_desc->irq_data.affinity);
|
|
|
|
-
|
|
|
|
-#ifdef CONFIG_GENERIC_PENDING_IRQ
|
|
|
|
- free_cpumask_var(old_desc->pending_mask);
|
|
|
|
-#endif
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-#else /* !CONFIG_SMP */
|
|
|
|
-
|
|
|
|
-static inline bool alloc_desc_masks(struct irq_desc *desc, int node,
|
|
|
|
- bool boot)
|
|
|
|
-{
|
|
|
|
- return true;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline void init_desc_masks(struct irq_desc *desc)
|
|
|
|
-{
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline void init_copy_desc_masks(struct irq_desc *old_desc,
|
|
|
|
- struct irq_desc *new_desc)
|
|
|
|
-{
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static inline void free_desc_masks(struct irq_desc *old_desc,
|
|
|
|
- struct irq_desc *new_desc)
|
|
|
|
-{
|
|
|
|
-}
|
|
|
|
-#endif /* CONFIG_SMP */
|
|
|