linux/include/asm-x86_64
Eric W. Biederman c7111c1318 [PATCH] x86_64 irq: Allocate a vector across all cpus for genapic_flat.
The problem we can't take advantage of lowest priority delivery mode if
the vectors are allocated for only one cpu at a time.  Nor can we work
around hardware that assumes lowest priority delivery mode is always
used with several cpus.

So this patch introduces the concept of a vector_allocation_domain.  A
set of cpus that will receive an irq on the same vector.  Currently the
code for implementing this is placed in the genapic structure so we can
vary this depending on how we are using the io_apics.

This allows us to restore the previous behaviour of genapic_flat without
removing the benefits of having separate vector allocation for large
machines.

This should also fix the problem report where a hyperthreaded cpu was
receving the irq on the wrong hyperthread when in logical delivery mode
because the previous behaviour is restored.

This patch properly records our allocation of the first 16 irqs to the
first 16 available vectors on all cpus.  This should be fine but it may
run into problems with multiple interrupts at the same interrupt level.
Except for some badly maintained comments in the code and the behaviour
of the interrupt allocator I have no real understanding of that problem.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Muli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-08 12:24:02 -07:00
..
8253pit.h
a.out.h
acpi.h
agp.h
alternative-asm.i Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
alternative.h
apic.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
apicdef.h
atomic.h
auxvec.h
bitops.h
boot.h
bootsetup.h
bug.h
bugs.h
byteorder.h
cache.h fix file specification in comments 2006-10-03 23:01:26 +02:00
cacheflush.h
calgary.h
calling.h
checksum.h
compat.h
cpu.h
cpufeature.h
cputime.h
current.h
debugreg.h
delay.h
desc.h
div64.h
dma-mapping.h [PATCH] Move valid_dma_direction() from x86_64 to generic code 2006-09-29 09:18:10 -07:00
dma.h
dmi.h
dwarf2.h
e820.h [PATCH] Have x86_64 use add_active_range() and free_area_init_nodes 2006-09-27 08:26:11 -07:00
edac.h
elf.h
emergency-restart.h
errno.h
fcntl.h
fixmap.h
floppy.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
fpu32.h
futex.h
genapic.h [PATCH] x86_64 irq: Allocate a vector across all cpus for genapic_flat. 2006-10-08 12:24:02 -07:00
hardirq.h [PATCH] genirq: irq: generalize the check for HARDIRQ_BITS 2006-10-04 07:55:28 -07:00
hpet.h
hw_irq.h [PATCH] i386/x86_64: Remove global IO_APIC_VECTOR 2006-10-08 12:24:02 -07:00
hypertransport.h [PATCH] Initial generic hypertransport interrupt support 2006-10-04 07:55:29 -07:00
i387.h
ia32_unistd.h
ia32.h
ide.h
idle.h
intel_arch_perfmon.h
io_apic.h [PATCH] genirq: x86_64 irq: Kill irq compression 2006-10-04 07:55:29 -07:00
io.h
ioctl.h
ioctls.h
ipcbuf.h
ipi.h
irq_regs.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
irq.h [PATCH] genirq: x86_64 irq: make vector_irq per cpu 2006-10-04 07:55:29 -07:00
irqflags.h
k8.h
Kbuild
kdebug.h
kexec.h
kmap_types.h
kprobes.h
ldt.h
linkage.h
local.h
mach_apic.h [PATCH] x86_64 irq: Allocate a vector across all cpus for genapic_flat. 2006-10-08 12:24:02 -07:00
mc146818rtc.h
mce.h
mman.h
mmsegment.h
mmu_context.h
mmu.h
mmzone.h
module.h
mpspec.h
msgbuf.h
msidef.h [PATCH] genirq: x86_64 irq: Move msi message composition into io_apic.c 2006-10-04 07:55:28 -07:00
msr.h
mtrr.h
mutex.h
namei.h
nmi.h [PATCH] x86: Clean up x86 NMI sysctls 2006-09-30 01:47:55 +02:00
node.h
numa.h
page.h
param.h
parport.h
pci-direct.h
pci.h
pda.h
percpu.h [PATCH] Fix typo in "syntax error if percpu macros are incorrectly used" patch 2006-10-06 08:53:41 -07:00
pgalloc.h
pgtable.h
poll.h
posix_types.h
prctl.h
processor.h
proto.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
ptrace-abi.h
ptrace.h [PATCH] Add regs_return_value() helper 2006-10-02 07:57:16 -07:00
resource.h
rtc.h
rwlock.h
scatterlist.h
seccomp.h
sections.h
segment.h
semaphore.h [PATCH] Use early clobber in semaphores 2006-09-30 01:47:55 +02:00
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext32.h
sigcontext.h
siginfo.h
signal.h
smp.h
socket.h
sockios.h
sparsemem.h
spinlock_types.h
spinlock.h [PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks 2006-10-01 00:39:21 -07:00
stacktrace.h
stat.h
statfs.h
string.h
suspend.h
swiotlb.h
system.h
tce.h
termbits.h
termios.h
therm_throt.h
thread_info.h
timex.h
tlb.h
tlbflush.h
topology.h [PATCH] sched: introduce child field in sched_domain 2006-10-03 08:04:06 -07:00
types.h
uaccess.h [PATCH] Add proper sparse __user casts to __copy_to_user_inatomic 2006-09-30 01:47:55 +02:00
ucontext.h
unaligned.h
unistd.h [PATCH] rename the provided execve functions to kernel_execve 2006-10-02 07:57:23 -07:00
unwind.h
user32.h
user.h
vga.h
vsyscall32.h
vsyscall.h [PATCH] kill wall_jiffies 2006-10-01 00:39:27 -07:00
xor.h