linux/arch/x86/kernel
Suresh Siddha 75c46fa61b x64, x2apic/intr-remap: MSI and MSI-X support for interrupt remapping infrastructure
MSI and MSI-X support for interrupt remapping infrastructure.

MSI address register will be programmed with interrupt-remapping table
entry(IRTE) index and the IRTE will contain information about the vector,
cpu destination, etc.

For MSI-X, all the IRTE's will be consecutively allocated in the table,
and the address registers will contain the starting index to the block
and the data register will contain the subindex with in that block.

This also introduces a new irq_chip for cleaner irq migration (in the process
context as opposed to the current irq migration in the context of an interrupt.
interrupt-remapping infrastructure will help us achieve this).

As MSI is edge triggered, irq migration is a simple atomic update(of vector
and cpu destination) of IRTE and flushing the hardware cache.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: akpm@linux-foundation.org
Cc: arjan@linux.intel.com
Cc: andi@firstfloor.org
Cc: ebiederm@xmission.com
Cc: jbarnes@virtuousgeek.org
Cc: steiner@sgi.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-07-12 08:45:05 +02:00
..
acpi x86: remove conflicting nx6325 and nx6125 quirks 2008-07-12 06:44:58 +02:00
cpu x64, x2apic/intr-remap: cpuid bits for x2apic feature 2008-07-12 08:45:00 +02:00
.gitignore arch/x86/kernel/.gitignore: Added vmlinux.lds to .gitignore file because it shouldn't be tracked. 2008-07-10 10:13:51 -07:00
Makefile x64, x2apic/intr-remap: x2apic cluster mode support 2008-07-12 08:45:03 +02:00
alternative.c x86: harden kernel code patching 2008-04-25 19:54:07 +02:00
amd_iommu.c x86, AMD IOMMU: flush domain TLB when there is more than one page to flush 2008-07-04 11:44:40 +02:00
amd_iommu_init.c x86, AMD IOMMU: remove unnecessary code from the iommu_enable function 2008-07-04 11:44:44 +02:00
aperture_64.c x86: remove end_pfn in 64bit 2008-07-08 13:10:38 +02:00
apic_32.c x64, x2apic/intr-remap: basic apic ops support 2008-07-12 08:44:59 +02:00
apic_64.c x64, x2apic/intr-remap: IO-APIC support for interrupt-remapping 2008-07-12 08:45:05 +02:00
apm_32.c x86: Switch apm to unlocked_kernel 2008-05-25 12:03:27 +02:00
asm-offsets.c
asm-offsets_32.c x86/paravirt: split sysret and sysexit 2008-07-08 13:13:15 +02:00
asm-offsets_64.c x86: rename threadinfo to TI. 2008-07-09 09:14:02 +02:00
audit_64.c
bootflag.c
cpuid.c PM: Remove destroy_suspended_device() 2008-04-19 19:10:28 -07:00
crash.c x86: allow machine_crash_shutdown to be replaced 2008-04-27 12:00:29 +03:00
crash_dump_32.c
crash_dump_64.c
doublefault_32.c
ds.c x86: debug Store - call kfree if only we really need it 2008-04-17 17:41:34 +02:00
e820.c Merge branch 'x86/generalize-visws' into x86/core 2008-07-11 21:22:18 +02:00
early-quirks.c x86: remove end_pfn in 64bit 2008-07-08 13:10:38 +02:00
early_printk.c x86: coding style fixes to x86/kernel/early_printk.c 2008-04-17 17:40:51 +02:00
efi.c x86: introduce max_low_pfn_mapped for 64-bit 2008-07-11 10:24:04 +02:00
efi_32.c x86: fix Intel Mac booting with EFI 2008-07-03 08:19:18 +02:00
efi_64.c x86: add flags parameter to reserve_bootmem_generic() 2008-07-08 11:49:49 +02:00
efi_stub_32.S
efi_stub_64.S
entry_32.S x86: use matching CFI_ENDPROC 2008-07-11 20:49:28 +02:00
entry_64.S x86_64: fix delayed signals 2008-07-12 07:11:10 +02:00
genapic_64.c x64, x2apic/intr-remap: x2apic cluster mode support 2008-07-12 08:45:03 +02:00
genapic_flat_64.c x64, x2apic/intr-remap: introcude self IPI to genapic routines 2008-07-12 08:45:02 +02:00
genx2apic_cluster.c x64, x2apic/intr-remap: x2apic cluster mode support 2008-07-12 08:45:03 +02:00
genx2apic_uv_x.c x64, x2apic/intr-remap: setup init_apic_ldr for UV 2008-07-12 08:45:04 +02:00
geode_32.c x86, geode: add a VSA2 ID for General Software 2008-06-19 14:19:03 +02:00
head.c x86: move reserve_setup_data to setup.c 2008-07-08 13:16:14 +02:00
head32.c x86: extract common part of head32.c and head64.c into head.c 2008-06-05 15:10:02 +02:00
head64.c x86: move reserve_setup_data to setup.c 2008-07-08 13:16:14 +02:00
head_32.S x86: boot secondary cpus through initial_code 2008-07-08 12:48:18 +02:00
head_64.S x86: always set _PAGE_GLOBAL in _PAGE_KERNEL* flags 2008-07-08 13:16:28 +02:00
hpet.c x86: clean up computation of HPET .mult variables 2008-05-12 21:27:54 +02:00
i386_ksyms_32.c
i387.c x86 ptrace: fix PTRACE_GETFPXREGS error 2008-07-01 11:03:31 +02:00
i8237.c
i8253.c x86: cleanup div_sc() usage 2008-04-26 17:35:47 +02:00
i8259.c x64, x2apic/intr-remap: 8259 specific mask/unmask routines 2008-07-12 08:44:55 +02:00
init_task.c [PATCH] take init_files to fs/file.c 2008-05-16 17:22:20 -04:00
io_apic_32.c x86: I/O APIC: Never configure IRQ2 2008-07-11 20:54:03 +02:00
io_apic_64.c x64, x2apic/intr-remap: MSI and MSI-X support for interrupt remapping infrastructure 2008-07-12 08:45:05 +02:00
io_delay.c
ioport.c
ipi.c x86: ipi.c: removed duplicated include 2008-05-25 08:58:32 +02:00
irq_32.c Merge branch 'x86/irq' into x86/devel 2008-07-08 09:53:57 +02:00
irq_64.c x86: make /proc/stat account for all interrupts 2008-05-25 07:11:49 +02:00
irqinit_32.c x86: rename the i8259_32/64.c leftovers to irqinit_32/64.c 2008-05-24 16:47:39 +02:00
irqinit_64.c x86: rename the i8259_32/64.c leftovers to irqinit_32/64.c 2008-05-24 16:47:39 +02:00
k8.c
kdebugfs.c x86, boot: export linked list of struct setup_data via debugfs 2008-04-26 21:34:42 +02:00
kgdb.c x86: KGDB build fix 2008-04-19 19:19:54 +02:00
kprobes.c x86: replace most VM86 flags with flags from processor-flags.h 2008-04-17 17:41:33 +02:00
kvm.c x86: KVM guest: hypercall batching 2008-04-27 12:00:28 +03:00
kvmclock.c x86: KVM guest: Use the paravirt clocksource structs and functions 2008-06-24 21:02:33 +03:00
ldt.c x86: avoid re-loading LDT in unrelated address spaces 2008-05-22 19:11:20 +02:00
machine_kexec_32.c x86: arch/x86/kernel/machine_kexec_32.c: remove extra semicolons 2008-06-24 18:37:49 +02:00
machine_kexec_64.c x86: remove end_pfn in 64bit 2008-07-08 13:10:38 +02:00
mca_32.c
mfgpt_32.c geode: fix modular build 2008-06-12 21:25:51 +02:00
microcode.c x86: microcode: cosmetic changes 2008-07-03 11:37:20 +02:00
mmconf-fam10h_64.c x86: move mmconfig declarations to header 2008-05-30 15:45:17 -07:00
module_32.c
module_64.c
mpparse.c x86: add early quirk support 2008-07-10 18:55:31 +02:00
msr.c PM: Remove destroy_suspended_device() 2008-04-19 19:10:28 -07:00
nmi.c x86: Recover timer_ack lost in the merge of the NMI watchdog 2008-07-11 20:54:03 +02:00
numaq_32.c x86: make generic arch support NUMAQ 2008-06-10 11:34:42 +02:00
olpc.c x86: olpc: add One Laptop Per Child architecture support 2008-04-29 08:06:07 -07:00
paravirt.c x64, x2apic/intr-remap: basic apic ops support 2008-07-12 08:44:59 +02:00
paravirt_patch_32.c x86/paravirt: split sysret and sysexit 2008-07-08 13:13:15 +02:00
paravirt_patch_64.c x86/paravirt: add sysret/sysexit pvops for returning to 32-bit compatibility userspace 2008-07-08 13:15:52 +02:00
pci-calgary_64.c x86: remove end_pfn in 64bit 2008-07-08 13:10:38 +02:00
pci-dma.c x86: remove end_pfn in 64bit 2008-07-08 13:10:38 +02:00
pci-gart_64.c x86: remove end_pfn in 64bit 2008-07-08 13:10:38 +02:00
pci-nommu.c x86: unify pci-nommu 2008-04-19 19:19:57 +02:00
pci-swiotlb_64.c x86: remove end_pfn in 64bit 2008-07-08 13:10:38 +02:00
pcspeaker.c
pmtimer_64.c
probe_roms_32.c x86: seperate probe_roms into another file 2008-07-08 12:50:05 +02:00
process.c x86: add C1E aware idle function, fix 2008-07-08 07:47:37 +02:00
process_32.c x86: move cpu_exit_clear to process_32.c 2008-07-08 12:48:24 +02:00
process_64.c x86: save %fs and %gs before load_TLS() and arch_leave_lazy_cpu_mode() 2008-07-08 13:11:11 +02:00
ptrace.c x86 ptrace: fix PTRACE_GETFPXREGS error 2008-07-01 11:03:31 +02:00
pvclock.c x86: Add structs and functions for paravirt clocksource 2008-06-24 21:02:31 +03:00
quirks.c x86: add another PCI ID for ICH6 force hpet. 2008-06-05 15:11:35 +02:00
reboot.c x86: constify data in reboot.c 2008-05-25 08:58:30 +02:00
reboot_fixups_32.c x86: constify data in reboot.c 2008-05-25 08:58:30 +02:00
relocate_kernel_32.S x86: relocate_kernel - use predefined macroses for page attributes 2008-04-17 17:41:29 +02:00
relocate_kernel_64.S x86: relocate_kernel - use predefined macroses for page attributes 2008-04-17 17:41:29 +02:00
rtc.c provide rtc_cmos platform device 2008-06-12 18:05:42 -07:00
scx200_32.c
setup.c Merge branch 'x86/generalize-visws' into x86/core 2008-07-11 21:22:18 +02:00
setup_percpu.c x86: move prefill_possible_map calling early 2008-07-08 13:16:24 +02:00
sigframe.h
signal_32.c signals: x86 TS_RESTORE_SIGMASK 2008-04-30 08:29:37 -07:00
signal_64.c signals: x86 TS_RESTORE_SIGMASK 2008-04-30 08:29:37 -07:00
smp.c x86: fix app crashes after SMP resume 2008-05-13 19:36:12 +02:00
smpboot.c x64, x2apic/intr-remap: basic apic ops support 2008-07-12 08:44:59 +02:00
smpcommon.c x86: create smpcommon.c 2008-04-17 17:40:55 +02:00
smpcommon_32.c x86: create smpcommon.c 2008-04-17 17:40:55 +02:00
stacktrace.c
step.c x86: prevent unconditional writes to DebugCtl MSR 2008-04-17 17:40:58 +02:00
summit_32.c x86: make generic arch support NUMAQ 2008-06-10 11:34:42 +02:00
sys_i386_32.c x86: coding style fixes to arch/x86/kernel/sys_i386_32.c 2008-06-10 12:34:54 +02:00
sys_x86_64.c unified (weak) sys_pipe implementation 2008-05-03 13:50:33 -07:00
syscall_64.c
syscall_table_32.S
tce_64.c
test_nx.c x86: Explicitly include required header files. 2008-04-17 17:41:15 +02:00
test_rodata.c
time_32.c x86: merge sched_clock handling 2008-07-09 07:43:25 +02:00
time_64.c x86: merge tsc_init and clocksource code 2008-07-09 07:43:27 +02:00
tlb_32.c x86: create tlb files 2008-04-17 17:40:56 +02:00
tlb_64.c SGI UV: TLB shootdown using broadcast assist unit, cleanups 2008-07-08 12:23:24 +02:00
tlb_uv.c x86, SGI UV: uv_ptc_proc_write fix 2008-07-08 12:23:31 +02:00
tls.c
tls.h
topology.c
trampoline.c x86: extend e820 ealy_res support 32bit 2008-05-25 10:55:11 +02:00
trampoline_32.S x86: trampoline_32.S - switch to .cpuinit.data 2008-04-26 17:35:47 +02:00
trampoline_64.S x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
traps_32.c x86: traps_xx: various small changes 2008-07-09 08:18:31 +02:00
traps_64.c x86: traps_xx: various small changes 2008-07-09 08:18:31 +02:00
tsc.c x86: remove duplicate call to use_tsc_delay 2008-07-10 19:47:55 +02:00
tsc_sync.c
verify_cpu_64.S
visws_quirks.c x86, VisWS: build fix 2008-07-10 19:45:01 +02:00
vm86_32.c x86: replace most VM86 flags with flags from processor-flags.h 2008-04-17 17:41:33 +02:00
vmi_32.c x86: rename paravirtualized TSC functions 2008-07-09 07:43:28 +02:00
vmiclock_32.c x86: rename paravirtualized TSC functions 2008-07-09 07:43:28 +02:00
vmlinux.lds.S
vmlinux_32.lds.S x86: move tracedata to RODATA 2008-05-25 07:09:47 +02:00
vmlinux_64.lds.S Merge branches 'x86/numa-fixes', 'x86/apic', 'x86/apm', 'x86/bitops', 'x86/build', 'x86/cleanups', 'x86/cpa', 'x86/cpu', 'x86/defconfig', 'x86/gart', 'x86/i8259', 'x86/intel', 'x86/irqstats', 'x86/kconfig', 'x86/ldt', 'x86/mce', 'x86/memtest', 'x86/pat', 'x86/ptemask', 'x86/resumetrace', 'x86/threadinfo', 'x86/timers', 'x86/vdso' and 'x86/xen' into x86/devel 2008-07-08 09:16:56 +02:00
vsmp_64.c x86: vsmp_64 add missing includes 2008-05-25 08:58:24 +02:00
vsyscall_64.c x86, 64-bit: use write_gdt_entry in vsyscall_set_cpu 2008-07-08 13:10:26 +02:00
x8664_ksyms_64.c x86: move x86_64 gdt closer to i386 2008-07-08 12:48:16 +02:00