Lines Matching +full:msi +full:- +full:base +full:- +full:vec
1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright (C) 1998-2001 Hewlett-Packard Co
7 * David Mosberger-Tang <davidm@hpl.hp.com>
54 /* default base addr of IPI table */
61 * Legacy IRQ to IA-64 vector translation table.
73 [0 ... NR_IRQS - 1] = {
80 [0 ... IA64_NUM_VECTORS - 1] = -1
84 [0 ... IA64_NUM_VECTORS - 1] = CPU_MASK_NONE
88 [0 ... NR_IRQS -1] = IRQ_UNUSED
98 return -ENOSPC; in find_unassigned_irq()
108 return -EINVAL; in find_unassigned_vector()
117 return -ENOSPC; in find_unassigned_vector()
131 return -EINVAL; in __bind_irq_vector()
132 if ((cfg->vector == vector) && cpumask_equal(&cfg->domain, &domain)) in __bind_irq_vector()
134 if (cfg->vector != IRQ_VECTOR_UNASSIGNED) in __bind_irq_vector()
135 return -EBUSY; in __bind_irq_vector()
138 cfg->vector = vector; in __bind_irq_vector()
139 cfg->domain = domain; in __bind_irq_vector()
163 BUG_ON(cfg->vector == IRQ_VECTOR_UNASSIGNED); in __clear_irq_vector()
164 vector = cfg->vector; in __clear_irq_vector()
165 domain = cfg->domain; in __clear_irq_vector()
166 for_each_cpu_and(cpu, &cfg->domain, cpu_online_mask) in __clear_irq_vector()
167 per_cpu(vector_irq, cpu)[vector] = -1; in __clear_irq_vector()
168 cfg->vector = IRQ_VECTOR_UNASSIGNED; in __clear_irq_vector()
169 cfg->domain = CPU_MASK_NONE; in __clear_irq_vector()
190 vector = -ENOSPC; in ia64_native_assign_irq_vector()
223 return -EINVAL; in reserve_irq_vector()
237 per_cpu(vector_irq, cpu)[vector] = -1; in __setup_vector_irq()
267 if (cfg->move_in_progress || cfg->move_cleanup_count) in __irq_prepare_move()
268 return -EBUSY; in __irq_prepare_move()
269 if (cfg->vector == IRQ_VECTOR_UNASSIGNED || !cpu_online(cpu)) in __irq_prepare_move()
270 return -EINVAL; in __irq_prepare_move()
271 if (cpumask_test_cpu(cpu, &cfg->domain)) in __irq_prepare_move()
276 return -ENOSPC; in __irq_prepare_move()
277 cfg->move_in_progress = 1; in __irq_prepare_move()
278 cfg->old_domain = cfg->domain; in __irq_prepare_move()
279 cfg->vector = IRQ_VECTOR_UNASSIGNED; in __irq_prepare_move()
280 cfg->domain = CPU_MASK_NONE; in __irq_prepare_move()
302 if (likely(!cfg->move_in_progress)) in irq_complete_move()
305 if (unlikely(cpumask_test_cpu(smp_processor_id(), &cfg->old_domain))) in irq_complete_move()
308 cpumask_and(&cleanup_mask, &cfg->old_domain, cpu_online_mask); in irq_complete_move()
309 cfg->move_cleanup_count = cpumask_weight(&cleanup_mask); in irq_complete_move()
312 cfg->move_in_progress = 0; in irq_complete_move()
332 raw_spin_lock(&desc->lock); in smp_irq_move_cleanup_interrupt()
333 if (!cfg->move_cleanup_count) in smp_irq_move_cleanup_interrupt()
336 if (!cpumask_test_cpu(me, &cfg->old_domain)) in smp_irq_move_cleanup_interrupt()
340 __this_cpu_write(vector_irq[vector], -1); in smp_irq_move_cleanup_interrupt()
343 cfg->move_cleanup_count--; in smp_irq_move_cleanup_interrupt()
345 raw_spin_unlock(&desc->lock); in smp_irq_move_cleanup_interrupt()
353 return -EINVAL; in parse_vector_domain()
381 * Dynamic irq allocate and deallocation for MSI
389 irq = vector = -ENOSPC; in create_irq()
417 # define IS_RESCHEDULE(vec) (vec == IA64_IPI_RESCHEDULE) argument
418 # define IS_LOCAL_TLB_FLUSH(vec) (vec == IA64_IPI_LOCAL_TLB_FLUSH) argument
420 # define IS_RESCHEDULE(vec) (0) argument
421 # define IS_LOCAL_TLB_FLUSH(vec) (0) argument
448 if ((sp - bsp) < 1024) { in ia64_handle_irq()
587 register_percpu_irq(ia64_vector vec, irq_handler_t handler, unsigned long flags, in register_percpu_irq() argument
592 irq = vec; in register_percpu_irq()
593 BUG_ON(bind_irq_vector(irq, vec, CPU_MASK_ALL)); in register_percpu_irq()