Messages in this thread | | | Date | Thu, 14 Aug 2008 15:26:38 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH 00/53] dyn_array/nr_irqs/sparse_irq support v10 |
| |
(lkml Cc:-ed)
* Yinghai Lu <yhlu.kernel@gmail.com> wrote:
> v10: make the x86 32 bit support sparse_irq too. > also make remove irqbalance in kernel for 32 bit > and make 32 bit support per_cpu vector. so start merging or io_apic_xx.c > > 01-03 is some fix for current tree > 04: is revert for one patch hide in sched/ and tip/master > > based on tip/master > > to do: > merge io_apic_xx.c
ok, i've created a new tip/irq/sparseirq topic branch for this.
Could you please send future updates against:
git-checkout tip/master git-merge tip/irq/sparseirq
Not yet integrated into tip/master, i've still got some other backlog.
A couple of observations about the general structure of the sparse irqs code:
- the new APIs should probably live in mm/bootmem.c not in init/main.c, and in bootmem.h. Also, it should be outlined clearly why this new API is needed as a wrapper ontop of existing bootmem mechanisms.
- the #ifdef complications, while fine for migration, should be eliminated. Could we introduce some compatible form for the definition/allocation APIs that work even if an architecture still uses a flat irq array? That would remove most of the uglinesses.
- some of the irq < 16 checks in x86 look a bit ugly, can we do anything about them?
- i think as a final-ish commit we should just remove the dyn-array define and make all architectures use this facility. You converted most of them - how many are still missing? Sparse-irq is more intrusive so that should probably stay a Kconfig knob.
- there was one aspect of NR_IRQS that was nice and useful: it acted as a sanity check against BIOS bugs and driver bugs that pass in some irrealistically high irq number. Now we'll just try to allocate some really high IRQ and accept it. I _think_ there should be a single, simple 'absolute maximum IRQ number' define which should set the maximum possible IRQ number. Lets call it NR_IRQS_MAX or so, and set it to NR_CPUS*NR_IO_APICS*224 or so?
- i'm a bit worried about linecount increase in general:
247 files changed, 3671 insertions(+), 2052 deletions(-)
could we work on reducing that somewhat? The new infrastructure bits in mm/* and kernel/irq/* will be unavoidable, what we should concentrate on is to make usage of the new facility just as straightforward, easy and compact as the old irq_desc[] usages.
A worst-case example is drivers/char/random.c: the CONFIG_HAVE_SPARSE_IRQ and CONFIG_HAVE_DYN_ARRAY #ifdef jungle is not acceptable. I think the best way out is to convert the whole kernel to the new facilities (as safely as possible, without breaking other architectures), and making sure that the end result is easy to understand and intuitive.
so i dont mind the current code as long as the extra complications are temporary during a safe conversion - but we should work on eliminating all those complications before thinking about upstream merging.
Ingo
--------------------> the irq/sparseirq git tree can be picked up from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git irq/sparseirq
[ note, the diffstat has x86/core and some other topics that your patches had dependencies on. Patch not included as vger would choke on its 700K size. ]
------------------> Alan Cox (1): serial, 8250: remove NR_IRQ usage
Alexander van Heukelum (1): x86, 64-bit, dwarf2: push pushes 8 bytes and popf pops 8
Andreas Herrmann (2): x86: pda_init(): fix memory leak when using CPU hotplug x86: cpu_init(): fix memory leak when using CPU hotplug
Cyrill Gorcunov (3): x86: apic unification - merge down lapic_get_maxlvt x86: apic unification - merge down enable_NMI_through_LVT0 x86: apic interrupts - move assignments to irqinit_32.c, v2
David Brownell (2): hpet: /dev/hpet - fixes and cleanup hpet: /dev/hpet - fixes and cleanup, fix
Eric W. Biederman (1): genirq: enable polling for disabled screaming irqs
Hiroshi Shimamoto (1): x86_32: use apic_ops at print_local_APIC()
Huang Weiyi (1): arch/x86/kernel/genx2apic_uv_x.c: Removed duplicated include
Ingo Molnar (2): x86, xen: fix apic_ops build on UP x86, lguest: fix apic_ops build on UP
Jaswinder Singh (27): x86: Introducing asm/syscalls.h x86: process_32.c declare cpu_number before they get used x86: signal_XX.c declare do_notify_resume before they get used x86: time_XX.c declare functions before they get used x86: setup.c declare saved_video_mode before they get used x86: e820.c declare pci_mem_start before they get used x86: pci-dma.c declare iommu_bio_merge before they get used x86: pci-nommu.c declare nommu_dma_ops before they get used x86: i387.c declare dump_fpu() before they get used x86: ptrace.c declare functions before they get used x86: proc.c declare cpuinfo_op before they get used x86: common.c declare idle_regs before they get used x86: mtrr/main.c declare range_state as static x86: apic_XX.c declare functions before they get used x86: vm86_32.c declare functions before they get used x86: mm/init_XX.c declare functions before they get used x86: mm/fault.c declare do_page_fault before they get used x86: mm/ioremap.c declare early_ioremap_debug and early_ioremap_nested as static x86: mm/pageattr.c declare arch_report_meminfo before they get used x86: mm/pgtable_32.c declare set_pmd_pfn before they get used x86: mach-default/setup.c declare no_broadcast before they get used x86_64: Declare new_utsname in asm-x86/syscalls.h X86_32: declare pt_regs_access as unsigned long X86_SMP: smp.c declare functions before they get used X86_SMP: smpboot.c declare idle_thread_array and smp_b_stepping as static X86_SMP: ipi.c declare functions before they get used X86_SMP: tlb_XX.c declare smp_invalidate_interrupt before they get used
Joe Buehler (1): x86: add PCI ID for 6300ESB force hpet
Kevin Hao (1): x86: get irq for hpet timer
Krzysztof Oledzki (1): x86: add another PCI ID for ICH6 force-hpet
Maciej W. Rozycki (1): x86: PIC, L-APIC and I/O APIC debug information
Randy Dunlap (1): documentation: move hpet.txt to timers/ subdirectory
Suresh Siddha (36): x64, x2apic/intr-remap: Intel vt-d, IOMMU code reorganization x64, x2apic/intr-remap: fix the need for sequential array allocation of iommus x64, x2apic/intr-remap: code re-structuring, to be used by both DMA and Interrupt remapping x64, x2apic/intr-remap: use CONFIG_DMAR for DMA-remapping specific code x64, x2apic/intr-remap: Fix the need for RMRR in the DMA-remapping detection x64, x2apic/intr-remap: parse ioapic scope under vt-d structures x64, x2apic/intr-remap: move IOMMU_WAIT_OP() macro to intel-iommu.h x64, x2apic/intr-remap: Queued invalidation infrastructure (part of VT-d) x64, x2apic/intr-remap: Interrupt remapping infrastructure x64, x2apic/intr-remap: routines managing Interrupt remapping table entries. x64, x2apic/intr-remap: generic irq migration support from process context x64, x2apic/intr-remap: 8259 specific mask/unmask routines x64, x2apic/intr-remap: ioapic routines which deal with initial io-apic RTE setup x64, x2apic/intr-remap: introduce read_apic_id() to genapic routines x64, x2apic/intr-remap: Interrupt-remapping and x2apic support, fix x64, x2apic/intr-remap: basic apic ops support x64, x2apic/intr-remap: cpuid bits for x2apic feature x64, x2apic/intr-remap: disable DMA-remapping if Interrupt-remapping is detected (temporary quirk) x64, x2apic/intr-remap: x2apic ops for x2apic mode support x64, x2apic/intr-remap: introcude self IPI to genapic routines x64, x2apic/intr-remap: x2apic cluster mode support x64, x2apic/intr-remap: setup init_apic_ldr for UV x64, x2apic/intr-remap: IO-APIC support for interrupt-remapping x64, x2apic/intr-remap: MSI and MSI-X support for interrupt remapping infrastructure x64, x2apic/intr-remap: add x2apic support, including enabling interrupt-remapping x64, x2apic/intr-remap: support for x2apic physical mode support x64, x2apic/intr-remap: introduce CONFIG_INTR_REMAP x64, x2apic/intr-remap: Interrupt-remapping and x2apic support x2apic: uninline uv_init_apic_ldr() x2apic: xen64 paravirt basic apic ops x2apic: kernel-parameter documentation for "x2apic_phys" x86: let 32bit use apic_ops too - fix x86: apic_ops for lguest x86: APIC: Remove apic_write_around(); use alternatives, merge fix x64, apic: use generic apic_write() for ack_APIC_irq() x64, fpu: fix possible FPU leakage in error conditions
Thomas Gleixner (1): genirq: remove last NO_IDLE_HZ leftovers
Vegard Nossum (3): x86: fix spurious '#' in kvm header x86: consolidate header guards x86: consolidate header guards
Yinghai Lu (62): x86: let 32bit use apic_ops too x86: mach_apicdef.h need to include before smp.h x86: make read_apic_id return final apicid x86: make 64bit have get_apic_id x86: let 32bit use apic_ops too - fix x86: add apic probe for genapic 64bit, v2 x86: move declaring x2apic_extra_bits x86: add setup_ioapic_ids for numaq in x86_quirks x86: mach-bigsmp to bigsmp x86: mach_es7000 to es7000 x86: mach_summit to summit x86: mach-numaq to numaq x86: add apic probe for genapic 64bit - fix x86: print per_cpu data address x86: add after_bootmem flag for 32bit x86: remove irq_vectors_limits generic: add dyn_array support add per_cpu_dyn_array support x86: alloc dyn_array all together x86: enable dyn_array support irq: introduce nr_irqs x86: use nr_irqs drivers/char: use nr_irqs drivers/net: use nr_irqs drivers/pci/ intr remapping: use nr_irqs drivers/pcmcia: use nr_irqs drivers/rtc: use nr_irqs drivers/scsi: use nr_irqs drivers/serial: use nr_irqs fs/proc: use nr_irqs drivers/xen: use nr_irqs irqs: make irq_timer_state to use dyn_array irq: make irq2_iommu to use dyn_array irq: make irq_desc to use dyn_array irq: make irqs in kernel stat use per_cpu_dyn_array x86: use dyn_array in io_apic_xx.c x86, irq: get nr_irqs from madt x86: remove nr_irq_vectors generic: sparse irqs: use irq_desc() together with dyn_array, instead of irq_desc[] x86: add irq_cfg in io_apic_64.c x86: put irq_2_pin pointer into irq_cfg x86: put timer_rand_state pointer into irq_desc x86: move kstat_irqs from kstat to irq_desc irq: add irq_desc_without_new irq: replace loop with nr_irqs with for_each_irq_desc irq, fs/proc: replace loop with nr_irqs for proc/stat x86, ioapic: replace loop with nr_irqs with for_each_irq_icfg irq: remove >= nr_irqs checking with config_have_sparse_irq generic: add irq_desc in function in paramater x86: check with without_new in show_interrupts x86_64: rename irq_desc/irq_desc_with_new irq: separate irq_descX from irq_descX_free x86_64: separate irq_cfgx from irq_cfgx_free x86_64: make /proc/interrupts work with dyn irq_desc x86: put irq_2_iommu pointer into irq_desc x86: use 28 bits irq NR for pci msi/msix and ht x86: remove irqbalance in kernel for 32 bit x86: add irq_cfg for 32bit x86: make 32bit use irq_cfg_with_new, etc x86: make 32bit to use irq_2_pin in irq_cfg x86: make 32 bit to use sparse_irq x86: make 32bit support per_cpu vector
Documentation/00-INDEX | 2 - Documentation/kernel-parameters.txt | 6 + Documentation/timers/00-INDEX | 10 + Documentation/{ => timers}/hpet.txt | 43 +- arch/Kconfig | 6 + arch/alpha/kernel/irq.c | 23 +- arch/alpha/kernel/irq_alpha.c | 7 +- arch/alpha/kernel/irq_i8259.c | 8 +- arch/alpha/kernel/irq_pyxis.c | 9 +- arch/alpha/kernel/irq_srm.c | 9 +- arch/alpha/kernel/sys_alcor.c | 9 +- arch/alpha/kernel/sys_cabriolet.c | 8 +- arch/alpha/kernel/sys_dp264.c | 9 +- arch/alpha/kernel/sys_eb64p.c | 8 +- arch/alpha/kernel/sys_eiger.c | 7 +- arch/alpha/kernel/sys_jensen.c | 50 +- arch/alpha/kernel/sys_marvel.c | 20 +- arch/alpha/kernel/sys_mikasa.c | 8 +- arch/alpha/kernel/sys_noritake.c | 8 +- arch/alpha/kernel/sys_rawhide.c | 8 +- arch/alpha/kernel/sys_rx164.c | 8 +- arch/alpha/kernel/sys_sable.c | 8 +- arch/alpha/kernel/sys_takara.c | 8 +- arch/alpha/kernel/sys_titan.c | 8 +- arch/alpha/kernel/sys_wildfire.c | 19 +- arch/arm/common/gic.c | 2 +- arch/arm/common/it8152.c | 2 +- arch/arm/common/locomo.c | 16 +- arch/arm/common/sa1111.c | 4 +- arch/arm/kernel/ecard.c | 4 +- arch/arm/kernel/irq.c | 20 +- arch/arm/mach-at91/gpio.c | 4 +- arch/arm/mach-davinci/gpio.c | 13 +- arch/arm/mach-ep93xx/core.c | 12 +- arch/arm/mach-footbridge/isa-irq.c | 2 +- arch/arm/mach-h720x/common.c | 2 +- arch/arm/mach-h720x/cpu-h7202.c | 2 +- arch/arm/mach-imx/irq.c | 2 +- arch/arm/mach-integrator/integrator_cp.c | 2 +- arch/arm/mach-iop13xx/msi.c | 6 +- arch/arm/mach-ixp2000/core.c | 4 +- arch/arm/mach-ixp2000/ixdp2x00.c | 2 +- arch/arm/mach-ixp2000/ixdp2x01.c | 2 +- arch/arm/mach-ixp23xx/core.c | 2 +- arch/arm/mach-ixp23xx/ixdp2351.c | 4 +- arch/arm/mach-lh7a40x/common.h | 2 +- arch/arm/mach-netx/generic.c | 2 +- arch/arm/mach-ns9xxx/board-a9m9750dev.c | 2 +- arch/arm/mach-ns9xxx/irq.c | 3 +- arch/arm/mach-omap1/fpga.c | 2 +- arch/arm/mach-orion5x/irq.c | 12 +- arch/arm/mach-pxa/gpio.c | 2 +- arch/arm/mach-pxa/lpd270.c | 2 +- arch/arm/mach-pxa/lubbock.c | 2 +- arch/arm/mach-pxa/mainstone.c | 2 +- arch/arm/mach-pxa/pcm990-baseboard.c | 2 +- arch/arm/mach-s3c2410/bast-irq.c | 6 +- arch/arm/mach-s3c2412/irq.c | 4 +- arch/arm/mach-s3c2440/irq.c | 4 +- arch/arm/mach-s3c2443/irq.c | 4 +- arch/arm/mach-sa1100/h3600.c | 14 +- arch/arm/mach-sa1100/irq.c | 2 +- arch/arm/mach-sa1100/neponset.c | 6 +- arch/arm/mach-versatile/core.c | 2 +- arch/arm/oprofile/op_model_mpcore.c | 2 +- arch/arm/plat-mxc/gpio.c | 7 +- arch/arm/plat-omap/gpio.c | 12 +- arch/arm/plat-orion/irq.c | 2 +- arch/arm/plat-s3c24xx/irq.c | 14 +- arch/arm/plat-s3c24xx/s3c244x-irq.c | 4 +- arch/avr32/kernel/irq.c | 12 +- arch/avr32/mach-at32ap/extint.c | 7 +- arch/avr32/mach-at32ap/intc.c | 2 +- arch/avr32/mach-at32ap/pio.c | 2 +- arch/blackfin/kernel/irqchip.c | 12 +- arch/blackfin/kernel/traps.c | 8 +- arch/blackfin/mach-bf527/boards/cm_bf527.c | 2 +- arch/blackfin/mach-bf527/boards/ezkit.c | 2 +- arch/blackfin/mach-bf533/boards/cm_bf533.c | 2 +- arch/blackfin/mach-bf533/boards/ezkit.c | 2 +- arch/blackfin/mach-bf533/boards/stamp.c | 2 +- arch/blackfin/mach-bf537/boards/cm_bf537.c | 2 +- arch/blackfin/mach-bf537/boards/generic_board.c | 2 +- arch/blackfin/mach-bf537/boards/stamp.c | 2 +- arch/blackfin/mach-bf561/boards/cm_bf561.c | 2 +- arch/blackfin/mach-bf561/boards/ezkit.c | 2 +- arch/blackfin/mach-common/ints-priority.c | 8 +- arch/cris/arch-v10/kernel/irq.c | 2 +- arch/cris/arch-v32/kernel/irq.c | 6 +- arch/cris/kernel/irq.c | 14 +- arch/frv/kernel/irq.c | 12 +- arch/h8300/kernel/irq.c | 26 +- arch/ia64/hp/sim/hpsim_irq.c | 2 +- arch/ia64/include/asm/hw_irq.h | 2 +- arch/ia64/kernel/iosapic.c | 27 +- arch/ia64/kernel/irq.c | 18 +- arch/ia64/kernel/irq_ia64.c | 14 +- arch/ia64/kernel/mca.c | 2 +- arch/ia64/kernel/msi_ia64.c | 6 +- arch/ia64/kernel/smpboot.c | 2 +- arch/ia64/sn/kernel/irq.c | 11 +- arch/ia64/sn/kernel/msi_sn.c | 6 +- arch/m32r/kernel/irq.c | 14 +- arch/m32r/platforms/m32104ut/setup.c | 37 +- arch/m32r/platforms/m32700ut/setup.c | 133 ++- arch/m32r/platforms/mappi/setup.c | 84 +- arch/m32r/platforms/mappi2/setup.c | 103 +- arch/m32r/platforms/mappi3/setup.c | 103 +- arch/m32r/platforms/oaks32r/setup.c | 62 +- arch/m32r/platforms/opsput/setup.c | 149 ++- arch/m32r/platforms/usrv/setup.c | 92 +- arch/m68k/kernel/ints.c | 2 + arch/m68knommu/kernel/irq.c | 18 +- arch/mips/au1000/common/irq.c | 2 +- arch/mips/dec/ioasic-irq.c | 2 +- arch/mips/emma2rh/markeins/irq_markeins.c | 2 +- arch/mips/kernel/irq-gic.c | 2 +- arch/mips/kernel/irq-msc01.c | 2 +- arch/mips/kernel/irq.c | 12 +- arch/mips/kernel/smtc.c | 2 +- arch/mips/mti-malta/malta-smtc.c | 2 +- arch/mips/sgi-ip22/ip22-int.c | 2 +- arch/mips/sgi-ip22/ip22-time.c | 2 +- arch/mips/sgi-ip32/ip32-irq.c | 10 +- arch/mips/sibyte/bcm1480/irq.c | 5 +- arch/mips/sibyte/bcm1480/smp.c | 2 +- arch/mips/sibyte/sb1250/irq.c | 5 +- arch/mips/sibyte/sb1250/smp.c | 2 +- arch/mips/sni/a20r.c | 2 +- arch/mips/sni/pcimt.c | 2 +- arch/mips/sni/pcit.c | 2 +- arch/mips/sni/rm200.c | 2 +- arch/mips/vr41xx/common/icu.c | 44 +- arch/mips/vr41xx/common/irq.c | 2 +- arch/mn10300/kernel/irq.c | 14 +- arch/parisc/kernel/irq.c | 45 +- arch/powerpc/include/asm/irq.h | 2 +- arch/powerpc/kernel/crash.c | 2 +- arch/powerpc/kernel/irq.c | 17 +- arch/powerpc/platforms/8xx/m8xx_setup.c | 2 +- arch/powerpc/platforms/cell/interrupt.c | 2 +- arch/powerpc/platforms/powermac/pic.c | 4 +- arch/powerpc/platforms/pseries/eeh_driver.c | 2 +- arch/powerpc/platforms/pseries/xics.c | 4 +- arch/powerpc/sysdev/cpm2_pic.c | 5 +- arch/powerpc/sysdev/mpic.c | 16 +- arch/powerpc/sysdev/qe_lib/qe_ic.c | 2 +- arch/s390/kernel/irq.c | 2 + arch/sh/boards/mach-cayman/irq.c | 4 +- arch/sh/boards/mach-dreamcast/irq.c | 2 +- arch/sh/boards/mach-dreamcast/setup.c | 2 +- arch/sh/boards/mach-microdev/irq.c | 4 +- arch/sh/boards/mach-se/7206/irq.c | 2 +- arch/sh/boards/mach-se/7343/irq.c | 2 +- arch/sh/boards/mach-se/7722/irq.c | 2 +- arch/sh/boards/mach-systemh/irq.c | 4 +- arch/sh/cchips/hd6446x/hd64461.c | 4 +- arch/sh/cchips/hd6446x/hd64465/setup.c | 4 +- arch/sh/kernel/cpu/irq/imask.c | 4 +- arch/sh/kernel/cpu/irq/intc-sh5.c | 4 +- arch/sh/kernel/irq.c | 14 +- arch/sparc/kernel/irq.c | 3 + arch/sparc64/kernel/irq.c | 45 +- arch/sparc64/kernel/pci_msi.c | 2 +- arch/sparc64/kernel/time.c | 3 +- arch/um/kernel/irq.c | 33 +- arch/x86/Kconfig | 18 +- arch/x86/boot/compressed/misc.c | 2 +- arch/x86/configs/i386_defconfig | 1 - arch/x86/{mach-es7000 => es7000}/Makefile | 0 arch/x86/{mach-es7000 => es7000}/es7000.h | 18 +- arch/x86/{mach-es7000 => es7000}/es7000plat.c | 2 +- arch/x86/kernel/Makefile | 2 + arch/x86/kernel/acpi/boot.c | 34 +- arch/x86/kernel/apic_32.c | 105 +- arch/x86/kernel/apic_64.c | 251 ++++- arch/x86/kernel/asm-offsets_64.c | 2 +- arch/x86/kernel/cpu/common_64.c | 40 +- arch/x86/kernel/cpu/feature_names.c | 2 +- arch/x86/kernel/cpu/mtrr/main.c | 2 +- arch/x86/kernel/entry_32.S | 2 +- arch/x86/kernel/entry_64.S | 4 +- arch/x86/kernel/genapic_64.c | 88 +- arch/x86/kernel/genapic_flat_64.c | 62 +- arch/x86/kernel/genx2apic_cluster.c | 164 +++ arch/x86/kernel/genx2apic_phys.c | 159 +++ arch/x86/kernel/genx2apic_uv_x.c | 70 +- arch/x86/kernel/hpet.c | 6 +- arch/x86/kernel/i8259.c | 24 + arch/x86/kernel/io_apic_32.c | 1346 +++++++++++--------- arch/x86/kernel/io_apic_64.c | 1163 +++++++++++++++--- arch/x86/kernel/ioport.c | 1 + arch/x86/kernel/ipi.c | 3 +- arch/x86/kernel/irq_32.c | 71 +- arch/x86/kernel/irq_64.c | 74 +- arch/x86/kernel/irqinit_32.c | 85 ++- arch/x86/kernel/irqinit_64.c | 28 +- arch/x86/kernel/ldt.c | 1 + arch/x86/kernel/mpparse.c | 2 + arch/x86/kernel/numaq_32.c | 7 + arch/x86/kernel/paravirt.c | 2 - arch/x86/kernel/process_32.c | 2 + arch/x86/kernel/process_64.c | 1 + arch/x86/kernel/ptrace.c | 2 +- arch/x86/kernel/quirks.c | 3 - arch/x86/kernel/setup.c | 8 + arch/x86/kernel/setup_percpu.c | 28 +- arch/x86/kernel/signal_32.c | 1 + arch/x86/kernel/signal_64.c | 12 +- arch/x86/kernel/smpboot.c | 42 +- arch/x86/kernel/summit_32.c | 2 +- arch/x86/kernel/sys_i386_32.c | 2 + arch/x86/kernel/sys_x86_64.c | 1 + arch/x86/kernel/syscall_64.c | 4 +- arch/x86/kernel/time_32.c | 1 + arch/x86/kernel/tls.c | 1 + arch/x86/kernel/traps_64.c | 9 +- arch/x86/kernel/visws_quirks.c | 32 +- arch/x86/kernel/vm86_32.c | 1 + arch/x86/kernel/vmi_32.c | 4 +- arch/x86/kernel/vmlinux_32.lds.S | 1 + arch/x86/kernel/vmlinux_64.lds.S | 3 + arch/x86/lguest/boot.c | 40 +- arch/x86/mach-default/setup.c | 19 +- arch/x86/mach-generic/Makefile | 2 +- arch/x86/mach-generic/bigsmp.c | 13 +- arch/x86/mach-generic/es7000.c | 27 +- arch/x86/mach-generic/numaq.c | 26 +- arch/x86/mach-generic/summit.c | 25 +- arch/x86/mach-voyager/voyager_smp.c | 4 +- arch/x86/mm/fault.c | 3 +- arch/x86/mm/init_32.c | 4 + arch/x86/mm/ioremap.c | 4 +- arch/x86/pci/acpi.c | 5 - arch/x86/xen/enlighten.c | 45 +- arch/xtensa/kernel/irq.c | 14 +- drivers/char/hpet.c | 155 ++- drivers/char/random.c | 72 +- drivers/char/vr41xx_giu.c | 2 +- drivers/gpio/gpiolib.c | 2 +- drivers/mfd/asic3.c | 4 +- drivers/mfd/htc-egpio.c | 2 +- drivers/mfd/tc6393xb.c | 3 +- drivers/net/3c59x.c | 4 +- drivers/net/hamradio/baycom_ser_fdx.c | 4 +- drivers/net/hamradio/scc.c | 6 +- drivers/net/wan/sbni.c | 2 +- drivers/parisc/dino.c | 9 +- drivers/parisc/eisa.c | 8 +- drivers/parisc/gsc.c | 15 +- drivers/parisc/iosapic.c | 4 +- drivers/parisc/superio.c | 8 +- drivers/pci/Makefile | 2 + drivers/pci/dma_remapping.h | 157 +++ drivers/pci/dmar.c | 397 ++++++- drivers/pci/htirq.c | 20 +- drivers/pci/intel-iommu.c | 164 +-- drivers/pci/intel-iommu.h | 233 ++-- drivers/pci/intr_remapping.c | 596 +++++++++ drivers/pci/intr_remapping.h | 8 + drivers/pcmcia/at91_cf.c | 2 +- drivers/pcmcia/hd64465_ss.c | 12 +- drivers/pcmcia/vrc4171_card.c | 2 +- drivers/rtc/rtc-vr41xx.c | 4 +- drivers/scsi/aha152x.c | 2 +- drivers/serial/68328serial.c | 11 +- drivers/serial/8250.c | 69 +- drivers/serial/amba-pl010.c | 2 +- drivers/serial/amba-pl011.c | 2 +- drivers/serial/cpm_uart/cpm_uart_core.c | 2 +- drivers/serial/m32r_sio.c | 4 +- drivers/serial/serial_core.c | 2 +- drivers/serial/serial_lh7a40x.c | 2 +- drivers/serial/sh-sci.c | 2 +- drivers/serial/ucc_uart.c | 2 +- drivers/xen/events.c | 20 +- fs/proc/proc_misc.c | 72 +- include/asm-generic/vmlinux.lds.h | 13 + include/asm-mips/irq.h | 2 +- include/asm-x86/a.out-core.h | 6 +- include/asm-x86/a.out.h | 6 +- include/asm-x86/acpi.h | 6 +- include/asm-x86/agp.h | 6 +- include/asm-x86/alternative.h | 6 +- include/asm-x86/amd_iommu.h | 6 +- include/asm-x86/amd_iommu_types.h | 6 +- include/asm-x86/apic.h | 76 +- include/asm-x86/apicdef.h | 9 +- include/asm-x86/arch_hooks.h | 8 +- include/asm-x86/asm.h | 6 +- include/asm-x86/atomic_32.h | 6 +- include/asm-x86/atomic_64.h | 6 +- include/asm-x86/auxvec.h | 6 +- .../{mach-bigsmp/mach_apic.h => bigsmp/apic.h} | 4 +- .../mach_apicdef.h => bigsmp/apicdef.h} | 6 +- .../{mach-bigsmp/mach_ipi.h => bigsmp/ipi.h} | 0 include/asm-x86/bios_ebda.h | 6 +- include/asm-x86/bitops.h | 6 +- include/asm-x86/boot.h | 6 +- include/asm-x86/bootparam.h | 6 +- include/asm-x86/bug.h | 6 +- include/asm-x86/bugs.h | 6 +- include/asm-x86/byteorder.h | 6 +- include/asm-x86/cache.h | 6 +- include/asm-x86/cacheflush.h | 6 +- include/asm-x86/calgary.h | 6 +- include/asm-x86/checksum_32.h | 6 +- include/asm-x86/checksum_64.h | 6 +- include/asm-x86/cmpxchg_32.h | 6 +- include/asm-x86/cmpxchg_64.h | 6 +- include/asm-x86/compat.h | 6 +- include/asm-x86/cpu.h | 6 +- include/asm-x86/cpufeature.h | 8 +- include/asm-x86/current.h | 6 +- include/asm-x86/debugreg.h | 6 +- include/asm-x86/delay.h | 6 +- include/asm-x86/desc.h | 6 +- include/asm-x86/desc_defs.h | 6 +- include/asm-x86/device.h | 6 +- include/asm-x86/div64.h | 6 +- include/asm-x86/dma-mapping.h | 6 +- include/asm-x86/dma.h | 6 +- include/asm-x86/dmi.h | 6 +- include/asm-x86/ds.h | 6 +- include/asm-x86/dwarf2.h | 6 +- include/asm-x86/e820.h | 7 +- include/asm-x86/edac.h | 6 +- include/asm-x86/efi.h | 6 +- include/asm-x86/elf.h | 6 +- include/asm-x86/emergency-restart.h | 6 +- .../{mach-es7000/mach_apic.h => es7000/apic.h} | 32 +- include/asm-x86/es7000/apicdef.h | 13 + .../{mach-es7000/mach_ipi.h => es7000/ipi.h} | 6 +- .../mach_mpparse.h => es7000/mpparse.h} | 4 +- .../mach_wakecpu.h => es7000/wakecpu.h} | 6 +- include/asm-x86/fb.h | 6 +- include/asm-x86/fixmap.h | 6 +- include/asm-x86/fixmap_32.h | 6 +- include/asm-x86/fixmap_64.h | 6 +- include/asm-x86/floppy.h | 6 +- include/asm-x86/ftrace.h | 6 +- include/asm-x86/futex.h | 6 +- include/asm-x86/gart.h | 6 +- include/asm-x86/genapic_32.h | 8 +- include/asm-x86/genapic_64.h | 14 +- include/asm-x86/geode.h | 6 +- include/asm-x86/gpio.h | 2 +- include/asm-x86/hardirq_32.h | 6 +- include/asm-x86/hardirq_64.h | 6 +- include/asm-x86/highmem.h | 6 +- include/asm-x86/hpet.h | 6 +- include/asm-x86/hugetlb.h | 6 +- include/asm-x86/hw_irq.h | 35 +- include/asm-x86/hypertransport.h | 6 +- include/asm-x86/i387.h | 9 +- include/asm-x86/i8253.h | 6 +- include/asm-x86/i8259.h | 9 +- include/asm-x86/ia32.h | 6 +- include/asm-x86/ia32_unistd.h | 6 +- include/asm-x86/idle.h | 6 +- include/asm-x86/intel_arch_perfmon.h | 6 +- include/asm-x86/io.h | 8 +- include/asm-x86/io_32.h | 6 +- include/asm-x86/io_64.h | 7 +- include/asm-x86/io_apic.h | 26 +- include/asm-x86/ioctls.h | 6 +- include/asm-x86/iommu.h | 6 +- include/asm-x86/ipcbuf.h | 6 +- include/asm-x86/ipi.h | 22 +- include/asm-x86/irq.h | 9 +- include/asm-x86/irq_regs_32.h | 6 +- include/asm-x86/irq_remapping.h | 8 + include/asm-x86/irq_vectors.h | 30 +- include/asm-x86/ist.h | 6 +- include/asm-x86/k8.h | 6 +- include/asm-x86/kdebug.h | 6 +- include/asm-x86/kexec.h | 6 +- include/asm-x86/kgdb.h | 6 +- include/asm-x86/kmap_types.h | 6 +- include/asm-x86/kprobes.h | 6 +- include/asm-x86/kvm.h | 6 +- include/asm-x86/kvm_host.h | 8 +- include/asm-x86/kvm_para.h | 6 +- include/asm-x86/kvm_x86_emulate.h | 6 +- include/asm-x86/ldt.h | 6 +- include/asm-x86/lguest.h | 6 +- include/asm-x86/lguest_hcall.h | 6 +- include/asm-x86/linkage.h | 6 +- include/asm-x86/local.h | 6 +- include/asm-x86/mach-default/apm.h | 6 +- include/asm-x86/mach-default/entry_arch.h | 1 + include/asm-x86/mach-default/mach_apic.h | 23 +- include/asm-x86/mach-default/mach_apicdef.h | 12 +- include/asm-x86/mach-default/mach_ipi.h | 6 +- include/asm-x86/mach-default/mach_mpparse.h | 6 +- include/asm-x86/mach-default/mach_mpspec.h | 6 +- include/asm-x86/mach-default/mach_timer.h | 6 +- include/asm-x86/mach-default/mach_traps.h | 6 +- include/asm-x86/mach-default/mach_wakecpu.h | 6 +- include/asm-x86/mach-es7000/mach_apicdef.h | 13 - include/asm-x86/mach-generic/gpio.h | 6 +- include/asm-x86/mach-generic/irq_vectors_limits.h | 14 - include/asm-x86/mach-generic/mach_apic.h | 7 +- include/asm-x86/mach-generic/mach_apicdef.h | 6 +- include/asm-x86/mach-generic/mach_ipi.h | 6 +- include/asm-x86/mach-generic/mach_mpparse.h | 6 +- include/asm-x86/mach-generic/mach_mpspec.h | 6 +- include/asm-x86/mach-rdc321x/gpio.h | 6 +- include/asm-x86/mach-summit/irq_vectors_limits.h | 14 - include/asm-x86/mach-summit/mach_apicdef.h | 13 - include/asm-x86/math_emu.h | 6 +- include/asm-x86/mc146818rtc.h | 6 +- include/asm-x86/mca.h | 6 +- include/asm-x86/mca_dma.h | 6 +- include/asm-x86/mce.h | 6 +- include/asm-x86/mman.h | 6 +- include/asm-x86/mmconfig.h | 6 +- include/asm-x86/mmu.h | 6 +- include/asm-x86/mmu_context.h | 6 +- include/asm-x86/mmu_context_32.h | 6 +- include/asm-x86/mmu_context_64.h | 6 +- include/asm-x86/mmx.h | 6 +- include/asm-x86/mmzone_32.h | 6 +- include/asm-x86/mmzone_64.h | 6 +- include/asm-x86/module.h | 6 +- include/asm-x86/mpspec.h | 7 +- include/asm-x86/mpspec_def.h | 6 +- include/asm-x86/msgbuf.h | 6 +- include/asm-x86/msidef.h | 10 +- include/asm-x86/msr-index.h | 6 +- include/asm-x86/msr.h | 6 +- include/asm-x86/mtrr.h | 6 +- include/asm-x86/mutex_32.h | 6 +- include/asm-x86/mutex_64.h | 6 +- include/asm-x86/nmi.h | 6 +- include/asm-x86/nops.h | 6 +- include/asm-x86/numa_32.h | 6 +- include/asm-x86/numa_64.h | 6 +- include/asm-x86/numaq.h | 6 +- .../{mach-numaq/mach_apic.h => numaq/apic.h} | 6 +- .../{mach-numaq/mach_apicdef.h => numaq/apicdef.h} | 4 +- .../asm-x86/{mach-numaq/mach_ipi.h => numaq/ipi.h} | 6 +- .../{mach-numaq/mach_mpparse.h => numaq/mpparse.h} | 6 +- .../{mach-numaq/mach_wakecpu.h => numaq/wakecpu.h} | 6 +- include/asm-x86/olpc.h | 6 +- include/asm-x86/page.h | 6 +- include/asm-x86/page_32.h | 7 +- include/asm-x86/page_64.h | 7 +- include/asm-x86/param.h | 6 +- include/asm-x86/paravirt.h | 25 +- include/asm-x86/parport.h | 6 +- include/asm-x86/pat.h | 6 +- include/asm-x86/pci-direct.h | 6 +- include/asm-x86/pci.h | 6 +- include/asm-x86/pci_32.h | 6 +- include/asm-x86/pci_64.h | 6 +- include/asm-x86/pda.h | 6 +- include/asm-x86/percpu.h | 6 +- include/asm-x86/pgalloc.h | 6 +- include/asm-x86/pgtable-2level-defs.h | 6 +- include/asm-x86/pgtable-2level.h | 6 +- include/asm-x86/pgtable-3level-defs.h | 6 +- include/asm-x86/pgtable-3level.h | 6 +- include/asm-x86/pgtable.h | 8 +- include/asm-x86/pgtable_32.h | 7 +- include/asm-x86/pgtable_64.h | 6 +- include/asm-x86/posix_types_32.h | 6 +- include/asm-x86/posix_types_64.h | 6 +- include/asm-x86/prctl.h | 6 +- include/asm-x86/processor-flags.h | 6 +- include/asm-x86/processor.h | 10 +- include/asm-x86/proto.h | 6 +- include/asm-x86/ptrace-abi.h | 6 +- include/asm-x86/ptrace.h | 9 +- include/asm-x86/pvclock-abi.h | 6 +- include/asm-x86/pvclock.h | 6 +- include/asm-x86/reboot.h | 6 +- include/asm-x86/reboot_fixups.h | 6 +- include/asm-x86/required-features.h | 6 +- include/asm-x86/resume-trace.h | 6 +- include/asm-x86/rio.h | 6 +- include/asm-x86/rwlock.h | 6 +- include/asm-x86/rwsem.h | 6 +- include/asm-x86/scatterlist.h | 6 +- include/asm-x86/seccomp_32.h | 6 +- include/asm-x86/seccomp_64.h | 6 +- include/asm-x86/segment.h | 6 +- include/asm-x86/sembuf.h | 6 +- include/asm-x86/serial.h | 6 +- include/asm-x86/setup.h | 8 +- include/asm-x86/shmbuf.h | 6 +- include/asm-x86/shmparam.h | 6 +- include/asm-x86/sigcontext.h | 6 +- include/asm-x86/sigcontext32.h | 6 +- include/asm-x86/siginfo.h | 6 +- include/asm-x86/signal.h | 9 +- include/asm-x86/smp.h | 27 +- include/asm-x86/socket.h | 6 +- include/asm-x86/sockios.h | 6 +- include/asm-x86/sparsemem.h | 6 +- include/asm-x86/spinlock.h | 6 +- include/asm-x86/spinlock_types.h | 6 +- include/asm-x86/srat.h | 6 +- include/asm-x86/stacktrace.h | 6 +- include/asm-x86/stat.h | 6 +- include/asm-x86/statfs.h | 6 +- include/asm-x86/string_32.h | 6 +- include/asm-x86/string_64.h | 6 +- .../{mach-summit/mach_apic.h => summit/apic.h} | 24 +- include/asm-x86/summit/apicdef.h | 13 + .../{mach-summit/mach_ipi.h => summit/ipi.h} | 6 +- .../mach_mpparse.h => summit/mpparse.h} | 13 +- include/asm-x86/suspend_32.h | 6 +- include/asm-x86/suspend_64.h | 6 +- include/asm-x86/swiotlb.h | 6 +- include/asm-x86/sync_bitops.h | 6 +- include/asm-x86/syscalls.h | 93 ++ include/asm-x86/system.h | 6 +- include/asm-x86/system_64.h | 6 +- include/asm-x86/tce.h | 6 +- include/asm-x86/termbits.h | 6 +- include/asm-x86/termios.h | 6 +- include/asm-x86/therm_throt.h | 6 +- include/asm-x86/thread_info.h | 6 +- include/asm-x86/time.h | 8 +- include/asm-x86/timer.h | 11 +- include/asm-x86/timex.h | 6 +- include/asm-x86/tlb.h | 6 +- include/asm-x86/tlbflush.h | 6 +- include/asm-x86/topology.h | 6 +- include/asm-x86/trampoline.h | 6 +- include/asm-x86/traps.h | 10 +- include/asm-x86/tsc.h | 6 +- include/asm-x86/types.h | 6 +- include/asm-x86/uaccess.h | 6 +- include/asm-x86/uaccess_32.h | 6 +- include/asm-x86/uaccess_64.h | 6 +- include/asm-x86/ucontext.h | 6 +- include/asm-x86/unaligned.h | 6 +- include/asm-x86/unistd_32.h | 6 +- include/asm-x86/unistd_64.h | 6 +- include/asm-x86/unwind.h | 6 +- include/asm-x86/user32.h | 6 +- include/asm-x86/user_32.h | 6 +- include/asm-x86/user_64.h | 6 +- include/asm-x86/uv/bios.h | 6 +- include/asm-x86/uv/uv_bau.h | 6 +- include/asm-x86/uv/uv_hub.h | 6 +- include/asm-x86/uv/uv_mmrs.h | 6 +- include/asm-x86/vdso.h | 6 +- include/asm-x86/vga.h | 6 +- include/asm-x86/vgtod.h | 6 +- include/asm-x86/visws/cobalt.h | 6 +- include/asm-x86/visws/lithium.h | 6 +- include/asm-x86/visws/piix4.h | 6 +- include/asm-x86/vm86.h | 6 +- include/asm-x86/vmi_time.h | 6 +- include/asm-x86/vsyscall.h | 6 +- include/asm-x86/xen/events.h | 6 +- include/asm-x86/xen/grant_table.h | 6 +- include/asm-x86/xen/hypercall.h | 6 +- include/asm-x86/xen/hypervisor.h | 6 +- include/asm-x86/xen/interface.h | 6 +- include/asm-x86/xen/interface_32.h | 6 +- include/asm-x86/xen/interface_64.h | 6 +- include/asm-x86/xen/page.h | 6 +- include/linux/dmar.h | 127 ++- include/linux/hpet.h | 14 +- include/linux/init.h | 44 + include/linux/interrupt.h | 7 + include/linux/irq.h | 121 ++- include/linux/kernel_stat.h | 20 +- init/main.c | 129 ++- kernel/irq/autoprobe.c | 20 +- kernel/irq/chip.c | 105 +- kernel/irq/handle.c | 297 ++++- kernel/irq/internals.h | 4 +- kernel/irq/manage.c | 82 +- kernel/irq/migration.c | 25 +- kernel/irq/proc.c | 44 +- kernel/irq/resend.c | 6 +- kernel/irq/spurious.c | 147 ++- 582 files changed, 7920 insertions(+), 3696 deletions(-) create mode 100644 Documentation/timers/00-INDEX rename Documentation/{ => timers}/hpet.txt (81%) rename arch/x86/{mach-es7000 => es7000}/Makefile (100%) rename arch/x86/{mach-es7000 => es7000}/es7000.h (89%) rename arch/x86/{mach-es7000 => es7000}/es7000plat.c (99%) create mode 100644 arch/x86/kernel/genx2apic_cluster.c create mode 100644 arch/x86/kernel/genx2apic_phys.c create mode 100644 drivers/pci/dma_remapping.h create mode 100644 drivers/pci/intr_remapping.c create mode 100644 drivers/pci/intr_remapping.h rename include/asm-x86/{mach-bigsmp/mach_apic.h => bigsmp/apic.h} (98%) rename include/asm-x86/{mach-bigsmp/mach_apicdef.h => bigsmp/apicdef.h} (74%) rename include/asm-x86/{mach-bigsmp/mach_ipi.h => bigsmp/ipi.h} (100%) rename include/asm-x86/{mach-es7000/mach_apic.h => es7000/apic.h} (92%) create mode 100644 include/asm-x86/es7000/apicdef.h rename include/asm-x86/{mach-es7000/mach_ipi.h => es7000/ipi.h} (83%) rename include/asm-x86/{mach-es7000/mach_mpparse.h => es7000/mpparse.h} (91%) rename include/asm-x86/{mach-es7000/mach_wakecpu.h => es7000/wakecpu.h} (95%) create mode 100644 include/asm-x86/irq_remapping.h delete mode 100644 include/asm-x86/mach-es7000/mach_apicdef.h delete mode 100644 include/asm-x86/mach-generic/irq_vectors_limits.h delete mode 100644 include/asm-x86/mach-summit/irq_vectors_limits.h delete mode 100644 include/asm-x86/mach-summit/mach_apicdef.h rename include/asm-x86/{mach-numaq/mach_apic.h => numaq/apic.h} (97%) rename include/asm-x86/{mach-numaq/mach_apicdef.h => numaq/apicdef.h} (75%) rename include/asm-x86/{mach-numaq/mach_ipi.h => numaq/ipi.h} (83%) rename include/asm-x86/{mach-numaq/mach_mpparse.h => numaq/mpparse.h} (50%) rename include/asm-x86/{mach-numaq/mach_wakecpu.h => numaq/wakecpu.h} (91%) rename include/asm-x86/{mach-summit/mach_apic.h => summit/apic.h} (94%) create mode 100644 include/asm-x86/summit/apicdef.h rename include/asm-x86/{mach-summit/mach_ipi.h => summit/ipi.h} (83%) rename include/asm-x86/{mach-summit/mach_mpparse.h => summit/mpparse.h} (96%) create mode 100644 include/asm-x86/syscalls.h
| |