mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
genirq: Add affinity hint to irq allocation
Add an extra argument to the irq(domain) allocation functions, so we can hand down affinity hints to the allocator. Thats necessary to implement proper support for multiqueue devices. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Christoph Hellwig <hch@lst.de> Cc: linux-block@vger.kernel.org Cc: linux-pci@vger.kernel.org Cc: linux-nvme@lists.infradead.org Cc: axboe@fb.com Cc: agordeev@redhat.com Link: http://lkml.kernel.org/r/1467621574-8277-4-git-send-email-hch@lst.de Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
9c2555835b
commit
06ee6d571f
9 changed files with 41 additions and 25 deletions
|
@ -39,6 +39,7 @@ struct irq_domain;
|
|||
struct of_device_id;
|
||||
struct irq_chip;
|
||||
struct irq_data;
|
||||
struct cpumask;
|
||||
|
||||
/* Number of irqs reserved for a legacy isa controller */
|
||||
#define NUM_ISA_INTERRUPTS 16
|
||||
|
@ -217,7 +218,8 @@ extern struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec,
|
|||
enum irq_domain_bus_token bus_token);
|
||||
extern void irq_set_default_host(struct irq_domain *host);
|
||||
extern int irq_domain_alloc_descs(int virq, unsigned int nr_irqs,
|
||||
irq_hw_number_t hwirq, int node);
|
||||
irq_hw_number_t hwirq, int node,
|
||||
const struct cpumask *affinity);
|
||||
|
||||
static inline struct fwnode_handle *of_node_to_fwnode(struct device_node *node)
|
||||
{
|
||||
|
@ -389,7 +391,7 @@ static inline struct irq_domain *irq_domain_add_hierarchy(struct irq_domain *par
|
|||
|
||||
extern int __irq_domain_alloc_irqs(struct irq_domain *domain, int irq_base,
|
||||
unsigned int nr_irqs, int node, void *arg,
|
||||
bool realloc);
|
||||
bool realloc, const struct cpumask *affinity);
|
||||
extern void irq_domain_free_irqs(unsigned int virq, unsigned int nr_irqs);
|
||||
extern void irq_domain_activate_irq(struct irq_data *irq_data);
|
||||
extern void irq_domain_deactivate_irq(struct irq_data *irq_data);
|
||||
|
@ -397,7 +399,8 @@ extern void irq_domain_deactivate_irq(struct irq_data *irq_data);
|
|||
static inline int irq_domain_alloc_irqs(struct irq_domain *domain,
|
||||
unsigned int nr_irqs, int node, void *arg)
|
||||
{
|
||||
return __irq_domain_alloc_irqs(domain, -1, nr_irqs, node, arg, false);
|
||||
return __irq_domain_alloc_irqs(domain, -1, nr_irqs, node, arg, false,
|
||||
NULL);
|
||||
}
|
||||
|
||||
extern int irq_domain_alloc_irqs_recursive(struct irq_domain *domain,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue