linux/arch/i386
Eric W. Biederman 8339f0008c [PATCH] i386: In assign_irq_vector look at all vectors before giving up
When the world was a simple and static place setting up irqs was easy.
It sufficed to allocate a linux irq number and a find a free cpu
vector we could receive that linux irq on.  In those days it was
a safe assumption that any allocated vector was actually in use
so after one global pass through all of the vectors we would have
none left.

These days things are much more dynamic with interrupt controllers
(in the form of MSI or MSI-X) appearing on plug in cards and linux
irqs appearing and disappearing.  As these irqs come and go vectors
are allocated and freed,  invalidating the ancient assumption that all
allocated vectors stayed in use forever.

So this patch modifies the vector allocator to walk through every
possible vector before giving up, and to check to see if a vector
is in use before assigning it.  With these changes we stop leaking
freed vectors and it becomes possible to allocate and free irq vectors
all day long.

This changed was modeled after the vector allocator on x86_64 where
this limitation has already been removed.  In essence we don't update
the static variables that hold the position of the last vector we
allocated until have successfully allocated another vector.  This
allows us to detect if we have completed one complete scan through
all of the possible vectors.

Acked-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-01-30 08:29:58 -08:00
..
boot [PATCH] Fix insta-reboot with "i386: Relocatable kernel support" 2007-01-02 13:44:11 -08:00
crypto [CRYPTO] api: Get rid of flags argument to setkey 2006-09-21 11:41:02 +10:00
kernel [PATCH] i386: In assign_irq_vector look at all vectors before giving up 2007-01-30 08:29:58 -08:00
lib [PATCH] separate bdi congestion functions from queue congestion functions 2006-10-20 10:26:35 -07:00
mach-default [PATCH] irq-flags: i386: Use the new IRQF_ constants 2006-07-02 13:58:47 -07:00
mach-es7000 [PATCH] Compilation fix for ES7000 when no ACPI is specified in config (i386) 2006-03-23 07:38:04 -08:00
mach-generic [PATCH] i386: make apic probe function non-init 2007-01-11 01:52:44 +01:00
mach-visws [PATCH] visws: sgivwfb as module needs exports 2006-12-08 08:29:07 -08:00
mach-voyager [PATCH] x86: fix PDA variables to work during boot 2007-01-22 19:39:36 -08:00
math-emu [PATCH] i386: fix must_checks 2006-12-07 02:14:00 +01:00
mm [PATCH] i386: Fix memory hotplug related MODPOST generated warning 2007-01-11 01:52:44 +01:00
oprofile [PATCH] oprofile: ppro: need to enable/disable all the counters 2006-09-29 09:18:11 -07:00
pci [PATCH] arch/i386/pci/mmconfig.c tlb flush fix 2006-12-23 14:06:33 -08:00
power Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
defconfig [PATCH] i386: Update defconfig 2007-01-11 01:52:44 +01:00
Kconfig [PATCH] i386: Restore CONFIG_PHYSICAL_START option 2007-01-05 23:55:23 -08:00
Kconfig.cpu [PATCH] LOG2: Implement a general integer log2 facility in the kernel 2006-12-08 08:28:51 -08:00
Kconfig.debug [PATCH] paravirt: Patch inline replacements for paravirt intercepts 2006-12-07 02:14:08 +01:00
Makefile [PATCH] i386: always enable regparm 2006-12-07 02:14:12 +01:00
Makefile.cpu [PATCH] i386: Add support for compilation for Core2 2006-12-07 02:14:09 +01:00