Messages in this thread | | | Subject | Re: [PATCH 5/8] x86/apic: Try to spread IRQ vectors to different priority levels | From | Suresh Siddha <> | Date | Thu, 07 Jun 2012 15:26:03 -0700 |
| |
On Thu, 2012-06-07 at 15:15 +0200, Alexander Gordeev wrote: > When assigning a new vector it is primarially done by adding 8 to the > previously given out vector number. Hence, two consequently allocated > vector numbers would likely fall into the same priority level. Try to > spread vector numbers to different priority levels better by changing > the step from 8 to 16. >
Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>
> Signed-off-by: Alexander Gordeev <agordeev@redhat.com> > --- > arch/x86/kernel/apic/io_apic.c | 7 +++---- > 1 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c > index 74c5697..05af3d3 100644 > --- a/arch/x86/kernel/apic/io_apic.c > +++ b/arch/x86/kernel/apic/io_apic.c > @@ -1112,7 +1112,7 @@ __assign_irq_vector(int irq, struct irq_cfg *cfg, const struct cpumask *mask) > * 0x80, because int 0x80 is hm, kind of importantish. ;) > */ > static int current_vector = FIRST_EXTERNAL_VECTOR + VECTOR_OFFSET_START; > - static int current_offset = VECTOR_OFFSET_START % 8; > + static int current_offset = VECTOR_OFFSET_START % 16; > unsigned int old_vector; > int cpu, err; > cpumask_var_t tmp_mask; > @@ -1148,10 +1148,9 @@ __assign_irq_vector(int irq, struct irq_cfg *cfg, const struct cpumask *mask) > vector = current_vector; > offset = current_offset; > next: > - vector += 8; > + vector += 16; > if (vector >= first_system_vector) { > - /* If out of vectors on large boxen, must share them. */ > - offset = (offset + 1) % 8; > + offset = (offset + 1) % 16; > vector = FIRST_EXTERNAL_VECTOR + offset; > } > if (unlikely(current_vector == vector)) > -- > 1.7.7.6 >
| |