OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
x86/irq: Plug irq vector hotplug race
[uclinux-h8/linux.git]
/
arch
/
x86
/
kernel
/
apic
/
vector.c
diff --git
a/arch/x86/kernel/apic/vector.c
b/arch/x86/kernel/apic/vector.c
index
28eba2d
..
f813261
100644
(file)
--- a/
arch/x86/kernel/apic/vector.c
+++ b/
arch/x86/kernel/apic/vector.c
@@
-409,12
+409,6
@@
static void __setup_vector_irq(int cpu)
int irq, vector;
struct apic_chip_data *data;
int irq, vector;
struct apic_chip_data *data;
- /*
- * vector_lock will make sure that we don't run into irq vector
- * assignments that might be happening on another cpu in parallel,
- * while we setup our initial vector to irq mappings.
- */
- raw_spin_lock(&vector_lock);
/* Mark the inuse vectors */
for_each_active_irq(irq) {
data = apic_chip_data(irq_get_irq_data(irq));
/* Mark the inuse vectors */
for_each_active_irq(irq) {
data = apic_chip_data(irq_get_irq_data(irq));
@@
-436,16
+430,16
@@
static void __setup_vector_irq(int cpu)
if (!cpumask_test_cpu(cpu, data->domain))
per_cpu(vector_irq, cpu)[vector] = VECTOR_UNDEFINED;
}
if (!cpumask_test_cpu(cpu, data->domain))
per_cpu(vector_irq, cpu)[vector] = VECTOR_UNDEFINED;
}
- raw_spin_unlock(&vector_lock);
}
/*
}
/*
- * Setup the vector to irq mappings.
+ * Setup the vector to irq mappings.
Must be called with vector_lock held.
*/
void setup_vector_irq(int cpu)
{
int irq;
*/
void setup_vector_irq(int cpu)
{
int irq;
+ lockdep_assert_held(&vector_lock);
/*
* On most of the platforms, legacy PIC delivers the interrupts on the
* boot cpu. But there are certain platforms where PIC interrupts are
/*
* On most of the platforms, legacy PIC delivers the interrupts on the
* boot cpu. But there are certain platforms where PIC interrupts are