aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-10-11 03:56:12 -0400
committerJeff Garzik <jeff@garzik.org>2006-10-11 03:56:12 -0400
commit24fcbacedb0d83cabc6761acbecfbf751265ce52 (patch)
tree7147b206304b028c3cfd5de6317e5c8510098ca9
parent2f614fe04f4463ff22234133319067d7361f54e5 (diff)
parent53a5fbdc2dff55161a206ed1a1385a8fa8055c34 (diff)
Merge branch 'master' into upstream-fixes
-rw-r--r--MAINTAINERS37
-rw-r--r--arch/alpha/kernel/core_apecs.c5
-rw-r--r--arch/alpha/kernel/core_cia.c5
-rw-r--r--arch/alpha/kernel/core_lca.c6
-rw-r--r--arch/alpha/kernel/core_mcpcia.c5
-rw-r--r--arch/alpha/kernel/core_polaris.c5
-rw-r--r--arch/alpha/kernel/core_t2.c5
-rw-r--r--arch/alpha/kernel/core_tsunami.c5
-rw-r--r--arch/alpha/kernel/core_wildfire.c5
-rw-r--r--arch/alpha/kernel/err_ev6.c5
-rw-r--r--arch/alpha/kernel/err_ev7.c2
-rw-r--r--arch/alpha/kernel/err_impl.h10
-rw-r--r--arch/alpha/kernel/err_marvel.c4
-rw-r--r--arch/alpha/kernel/err_titan.c14
-rw-r--r--arch/alpha/kernel/irq.c4
-rw-r--r--arch/alpha/kernel/irq_alpha.c22
-rw-r--r--arch/alpha/kernel/irq_i8259.c8
-rw-r--r--arch/alpha/kernel/irq_impl.h10
-rw-r--r--arch/alpha/kernel/irq_pyxis.c6
-rw-r--r--arch/alpha/kernel/irq_srm.c4
-rw-r--r--arch/alpha/kernel/proto.h29
-rw-r--r--arch/alpha/kernel/smp.c6
-rw-r--r--arch/alpha/kernel/sys_alcor.c6
-rw-r--r--arch/alpha/kernel/sys_cabriolet.c16
-rw-r--r--arch/alpha/kernel/sys_dp264.c14
-rw-r--r--arch/alpha/kernel/sys_eb64p.c6
-rw-r--r--arch/alpha/kernel/sys_eiger.c16
-rw-r--r--arch/alpha/kernel/sys_jensen.c8
-rw-r--r--arch/alpha/kernel/sys_marvel.c4
-rw-r--r--arch/alpha/kernel/sys_miata.c4
-rw-r--r--arch/alpha/kernel/sys_mikasa.c11
-rw-r--r--arch/alpha/kernel/sys_nautilus.c7
-rw-r--r--arch/alpha/kernel/sys_noritake.c15
-rw-r--r--arch/alpha/kernel/sys_rawhide.c4
-rw-r--r--arch/alpha/kernel/sys_rx164.c6
-rw-r--r--arch/alpha/kernel/sys_sable.c4
-rw-r--r--arch/alpha/kernel/sys_takara.c16
-rw-r--r--arch/alpha/kernel/sys_titan.c12
-rw-r--r--arch/alpha/kernel/sys_wildfire.c4
-rw-r--r--arch/alpha/kernel/time.c6
-rw-r--r--arch/arm/common/locomo.c25
-rw-r--r--arch/arm/common/sa1111.c8
-rw-r--r--arch/arm/common/sharpsl_pm.c6
-rw-r--r--arch/arm/common/time-acorn.c4
-rw-r--r--arch/arm/kernel/ecard.c8
-rw-r--r--arch/arm/kernel/irq.c4
-rw-r--r--arch/arm/kernel/time.c6
-rw-r--r--arch/arm/mach-aaec2000/core.c4
-rw-r--r--arch/arm/mach-at91rm9200/at91rm9200_time.c4
-rw-r--r--arch/arm/mach-at91rm9200/gpio.c4
-rw-r--r--arch/arm/mach-clps711x/time.c4
-rw-r--r--arch/arm/mach-clps7500/core.c4
-rw-r--r--arch/arm/mach-ebsa110/core.c4
-rw-r--r--arch/arm/mach-ep93xx/core.c10
-rw-r--r--arch/arm/mach-footbridge/dc21285-timer.c4
-rw-r--r--arch/arm/mach-footbridge/dc21285.c12
-rw-r--r--arch/arm/mach-footbridge/isa-irq.c6
-rw-r--r--arch/arm/mach-footbridge/isa-timer.c4
-rw-r--r--arch/arm/mach-h720x/common.c29
-rw-r--r--arch/arm/mach-h720x/cpu-h7201.c4
-rw-r--r--arch/arm/mach-h720x/cpu-h7202.c11
-rw-r--r--arch/arm/mach-imx/dma.c12
-rw-r--r--arch/arm/mach-imx/irq.c24
-rw-r--r--arch/arm/mach-imx/time.c4
-rw-r--r--arch/arm/mach-integrator/core.c6
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c6
-rw-r--r--arch/arm/mach-integrator/pci_v3.c3
-rw-r--r--arch/arm/mach-integrator/time.c3
-rw-r--r--arch/arm/mach-ixp2000/core.c12
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x00.c4
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x01.c4
-rw-r--r--arch/arm/mach-ixp23xx/core.c8
-rw-r--r--arch/arm/mach-ixp23xx/ixdp2351.c8
-rw-r--r--arch/arm/mach-ixp4xx/common.c4
-rw-r--r--arch/arm/mach-ixp4xx/nas100d-power.c2
-rw-r--r--arch/arm/mach-ixp4xx/nslu2-power.c4
-rw-r--r--arch/arm/mach-lh7a40x/arch-kev7a400.c5
-rw-r--r--arch/arm/mach-lh7a40x/arch-lpd7a40x.c3
-rw-r--r--arch/arm/mach-lh7a40x/irq-kev7a400.c5
-rw-r--r--arch/arm/mach-lh7a40x/irq-lpd7a40x.c3
-rw-r--r--arch/arm/mach-lh7a40x/time.c4
-rw-r--r--arch/arm/mach-netx/generic.c5
-rw-r--r--arch/arm/mach-netx/time.c4
-rw-r--r--arch/arm/mach-omap1/board-osk.c2
-rw-r--r--arch/arm/mach-omap1/fpga.c5
-rw-r--r--arch/arm/mach-omap1/pm.c3
-rw-r--r--arch/arm/mach-omap1/serial.c3
-rw-r--r--arch/arm/mach-omap1/time.c8
-rw-r--r--arch/arm/mach-omap2/board-apollon.c2
-rw-r--r--arch/arm/mach-omap2/timer-gp.c5
-rw-r--r--arch/arm/mach-pnx4008/dma.c10
-rw-r--r--arch/arm/mach-pnx4008/time.c5
-rw-r--r--arch/arm/mach-pxa/corgi.c2
-rw-r--r--arch/arm/mach-pxa/dma.c8
-rw-r--r--arch/arm/mach-pxa/idp.c2
-rw-r--r--arch/arm/mach-pxa/irq.c11
-rw-r--r--arch/arm/mach-pxa/lpd270.c5
-rw-r--r--arch/arm/mach-pxa/lubbock.c13
-rw-r--r--arch/arm/mach-pxa/mainstone.c7
-rw-r--r--arch/arm/mach-pxa/poodle.c2
-rw-r--r--arch/arm/mach-pxa/spitz.c2
-rw-r--r--arch/arm/mach-pxa/ssp.c2
-rw-r--r--arch/arm/mach-pxa/time.c8
-rw-r--r--arch/arm/mach-pxa/tosa.c2
-rw-r--r--arch/arm/mach-pxa/trizeps4.c2
-rw-r--r--arch/arm/mach-realview/core.c6
-rw-r--r--arch/arm/mach-rpc/dma.c2
-rw-r--r--arch/arm/mach-s3c2410/bast-irq.c5
-rw-r--r--arch/arm/mach-s3c2410/dma.c2
-rw-r--r--arch/arm/mach-s3c2410/irq.c41
-rw-r--r--arch/arm/mach-s3c2410/mach-amlm5900.c2
-rw-r--r--arch/arm/mach-s3c2410/s3c2440-irq.c7
-rw-r--r--arch/arm/mach-s3c2410/s3c244x-irq.c7
-rw-r--r--arch/arm/mach-s3c2410/time.c4
-rw-r--r--arch/arm/mach-s3c2410/usb-simtec.c2
-rw-r--r--arch/arm/mach-sa1100/dma.c2
-rw-r--r--arch/arm/mach-sa1100/h3600.c6
-rw-r--r--arch/arm/mach-sa1100/irq.c5
-rw-r--r--arch/arm/mach-sa1100/neponset.c8
-rw-r--r--arch/arm/mach-sa1100/ssp.c2
-rw-r--r--arch/arm/mach-sa1100/time.c8
-rw-r--r--arch/arm/mach-shark/core.c4
-rw-r--r--arch/arm/mach-shark/irq.c2
-rw-r--r--arch/arm/mach-versatile/core.c10
-rw-r--r--arch/arm/mm/ioremap.c6
-rw-r--r--arch/arm/oprofile/op_model_xscale.c4
-rw-r--r--arch/arm/plat-iop/time.c4
-rw-r--r--arch/arm/plat-omap/dma.c9
-rw-r--r--arch/arm/plat-omap/gpio.c5
-rw-r--r--arch/arm/plat-omap/mcbsp.c4
-rw-r--r--arch/arm/plat-omap/timer32k.c15
-rw-r--r--arch/frv/kernel/dma.c5
-rw-r--r--arch/frv/kernel/irq-mb93091.c4
-rw-r--r--arch/frv/kernel/irq-mb93093.c4
-rw-r--r--arch/frv/kernel/irq-mb93493.c4
-rw-r--r--arch/frv/kernel/irq.c2
-rw-r--r--arch/frv/kernel/time.c8
-rw-r--r--arch/i386/defconfig41
-rw-r--r--arch/i386/kernel/apic.c18
-rw-r--r--arch/i386/kernel/i8259.c4
-rw-r--r--arch/i386/kernel/io_apic.c12
-rw-r--r--arch/i386/kernel/irq.c12
-rw-r--r--arch/i386/kernel/process.c6
-rw-r--r--arch/i386/kernel/smp.c6
-rw-r--r--arch/i386/kernel/time.c10
-rw-r--r--arch/i386/kernel/time_hpet.c4
-rw-r--r--arch/i386/kernel/vm86.c2
-rw-r--r--arch/i386/lib/semaphore.S3
-rw-r--r--arch/i386/mach-visws/visws_apic.c4
-rw-r--r--arch/i386/mach-voyager/voyager_basic.c2
-rw-r--r--arch/i386/mach-voyager/voyager_smp.c28
-rw-r--r--arch/i386/pci/direct.c2
-rw-r--r--arch/i386/pci/init.c4
-rw-r--r--arch/i386/pci/irq.c4
-rw-r--r--arch/ia64/hp/sim/simeth.c6
-rw-r--r--arch/ia64/hp/sim/simscsi.c2
-rw-r--r--arch/ia64/hp/sim/simserial.c20
-rw-r--r--arch/ia64/kernel/irq.c5
-rw-r--r--arch/ia64/kernel/irq_ia64.c11
-rw-r--r--arch/ia64/kernel/machvec.c2
-rw-r--r--arch/ia64/kernel/mca.c32
-rw-r--r--arch/ia64/kernel/time.c8
-rw-r--r--arch/ia64/sn/kernel/huberror.c4
-rw-r--r--arch/ia64/sn/kernel/sn2/timer_interrupt.c2
-rw-r--r--arch/ia64/sn/kernel/xpc_main.c7
-rw-r--r--arch/ia64/sn/pci/pcibr/pcibr_ate.c2
-rw-r--r--arch/ia64/sn/pci/pcibr/pcibr_provider.c4
-rw-r--r--arch/ia64/sn/pci/tioca_provider.c3
-rw-r--r--arch/ia64/sn/pci/tioce_provider.c45
-rw-r--r--arch/m32r/kernel/irq.c5
-rw-r--r--arch/m32r/kernel/smp.c13
-rw-r--r--arch/m32r/kernel/time.c10
-rw-r--r--arch/m68k/Kconfig2
-rw-r--r--arch/m68k/amiga/amiints.c40
-rw-r--r--arch/m68k/amiga/cia.c4
-rw-r--r--arch/m68k/amiga/config.c5
-rw-r--r--arch/m68k/apollo/config.c14
-rw-r--r--arch/m68k/apollo/dma.c50
-rw-r--r--arch/m68k/apollo/dn_ints.c2
-rw-r--r--arch/m68k/atari/ataints.c9
-rw-r--r--arch/m68k/atari/config.c2
-rw-r--r--arch/m68k/atari/stdma.c11
-rw-r--r--arch/m68k/atari/time.c11
-rw-r--r--arch/m68k/bvme6000/config.c12
-rw-r--r--arch/m68k/hp300/time.c8
-rw-r--r--arch/m68k/hp300/time.h2
-rw-r--r--arch/m68k/kernel/Makefile3
-rw-r--r--arch/m68k/kernel/dma.c4
-rw-r--r--arch/m68k/kernel/entry.S33
-rw-r--r--arch/m68k/kernel/ints.c21
-rw-r--r--arch/m68k/kernel/m68k_ksyms.c4
-rw-r--r--arch/m68k/kernel/setup.c2
-rw-r--r--arch/m68k/kernel/time.c7
-rw-r--r--arch/m68k/lib/string.c15
-rw-r--r--arch/m68k/lib/uaccess.c2
-rw-r--r--arch/m68k/mac/baboon.c6
-rw-r--r--arch/m68k/mac/config.c4
-rw-r--r--arch/m68k/mac/iop.c22
-rw-r--r--arch/m68k/mac/macints.c16
-rw-r--r--arch/m68k/mac/oss.c16
-rw-r--r--arch/m68k/mac/psc.c6
-rw-r--r--arch/m68k/mac/via.c24
-rw-r--r--arch/m68k/mvme147/config.c10
-rw-r--r--arch/m68k/mvme16x/config.c12
-rw-r--r--arch/m68k/q40/config.c2
-rw-r--r--arch/m68k/q40/q40ints.c16
-rw-r--r--arch/m68k/sun3/config.c4
-rw-r--r--arch/m68k/sun3/sun3ints.c11
-rw-r--r--arch/m68k/sun3x/time.c2
-rw-r--r--arch/m68k/sun3x/time.h2
-rw-r--r--arch/mips/Kconfig25
-rw-r--r--arch/mips/au1000/common/Makefile1
-rw-r--r--arch/mips/au1000/common/dma.c2
-rw-r--r--arch/mips/au1000/common/irq.c52
-rw-r--r--arch/mips/au1000/common/time.c14
-rw-r--r--arch/mips/au1000/common/usbdev.c1555
-rw-r--r--arch/mips/au1000/db1x00/board_setup.c5
-rw-r--r--arch/mips/au1000/mtx-1/board_setup.c8
-rw-r--r--arch/mips/au1000/pb1000/board_setup.c10
-rw-r--r--arch/mips/au1000/pb1100/board_setup.c6
-rw-r--r--arch/mips/au1000/pb1200/irqmap.c5
-rw-r--r--arch/mips/au1000/pb1500/board_setup.c9
-rw-r--r--arch/mips/basler/excite/excite_dbg_io.c2
-rw-r--r--arch/mips/basler/excite/excite_iodev.c14
-rw-r--r--arch/mips/basler/excite/excite_irq.c18
-rw-r--r--arch/mips/cobalt/irq.c52
-rw-r--r--arch/mips/cobalt/setup.c4
-rw-r--r--arch/mips/configs/jazz_defconfig1404
-rw-r--r--arch/mips/configs/malta_defconfig98
-rw-r--r--arch/mips/configs/pb1100_defconfig1
-rw-r--r--arch/mips/configs/pb1500_defconfig1
-rw-r--r--arch/mips/ddb5xxx/ddb5477/irq.c19
-rw-r--r--arch/mips/dec/ecc-berr.c5
-rw-r--r--arch/mips/dec/int-handler.S13
-rw-r--r--arch/mips/dec/kn01-berr.c4
-rw-r--r--arch/mips/dec/kn02xa-berr.c6
-rw-r--r--arch/mips/dec/reset.c3
-rw-r--r--arch/mips/dec/setup.c2
-rw-r--r--arch/mips/emma2rh/common/irq.c12
-rw-r--r--arch/mips/emma2rh/markeins/irq.c14
-rw-r--r--arch/mips/gt64120/common/time.c8
-rw-r--r--arch/mips/gt64120/ev64120/irq.c14
-rw-r--r--arch/mips/gt64120/ev64120/setup.c1
-rw-r--r--arch/mips/gt64120/momenco_ocelot/irq.c22
-rw-r--r--arch/mips/gt64120/momenco_ocelot/setup.c1
-rw-r--r--arch/mips/gt64120/wrppmc/irq.c10
-rw-r--r--arch/mips/jazz/irq.c30
-rw-r--r--arch/mips/jazz/setup.c29
-rw-r--r--arch/mips/jmr3927/rbhma3100/irq.c106
-rw-r--r--arch/mips/kernel/asm-offsets.c3
-rw-r--r--arch/mips/kernel/cpu-probe.c9
-rw-r--r--arch/mips/kernel/entry.S15
-rw-r--r--arch/mips/kernel/genex.S7
-rw-r--r--arch/mips/kernel/irq-msc01.c13
-rw-r--r--arch/mips/kernel/irq-mv6434x.c9
-rw-r--r--arch/mips/kernel/irq.c6
-rw-r--r--arch/mips/kernel/proc.c12
-rw-r--r--arch/mips/kernel/process.c2
-rw-r--r--arch/mips/kernel/ptrace.c18
-rw-r--r--arch/mips/kernel/ptrace32.c3
-rw-r--r--arch/mips/kernel/rtlx.c6
-rw-r--r--arch/mips/kernel/smp-mt.c16
-rw-r--r--arch/mips/kernel/smp.c14
-rw-r--r--arch/mips/kernel/smtc-asm.S9
-rw-r--r--arch/mips/kernel/smtc.c26
-rw-r--r--arch/mips/kernel/time.c25
-rw-r--r--arch/mips/kernel/traps.c16
-rw-r--r--arch/mips/lasat/interrupt.c6
-rw-r--r--arch/mips/math-emu/cp1emu.c7
-rw-r--r--arch/mips/mips-boards/atlas/atlas_int.c12
-rw-r--r--arch/mips/mips-boards/generic/time.c23
-rw-r--r--arch/mips/mips-boards/malta/malta_int.c38
-rw-r--r--arch/mips/mips-boards/sead/sead_int.c4
-rw-r--r--arch/mips/mips-boards/sim/sim_int.c11
-rw-r--r--arch/mips/mips-boards/sim/sim_time.c15
-rw-r--r--arch/mips/momentum/jaguar_atx/irq.c20
-rw-r--r--arch/mips/momentum/jaguar_atx/setup.c1
-rw-r--r--arch/mips/momentum/ocelot_3/irq.c22
-rw-r--r--arch/mips/momentum/ocelot_3/setup.c1
-rw-r--r--arch/mips/momentum/ocelot_c/cpci-irq.c5
-rw-r--r--arch/mips/momentum/ocelot_c/irq.c24
-rw-r--r--arch/mips/momentum/ocelot_c/setup.c1
-rw-r--r--arch/mips/momentum/ocelot_c/uart-irq.c5
-rw-r--r--arch/mips/momentum/ocelot_g/gt-irq.c5
-rw-r--r--arch/mips/momentum/ocelot_g/irq.c24
-rw-r--r--arch/mips/momentum/ocelot_g/setup.c1
-rw-r--r--arch/mips/oprofile/op_impl.h4
-rw-r--r--arch/mips/oprofile/op_model_mipsxx.c7
-rw-r--r--arch/mips/pci/pci-ip32.c2
-rw-r--r--arch/mips/philips/pnx8550/common/int.c32
-rw-r--r--arch/mips/pmc-sierra/yosemite/irq.c54
-rw-r--r--arch/mips/pmc-sierra/yosemite/setup.c1
-rw-r--r--arch/mips/pmc-sierra/yosemite/smp.c2
-rw-r--r--arch/mips/qemu/q-irq.c6
-rw-r--r--arch/mips/sgi-ip22/ip22-berr.c4
-rw-r--r--arch/mips/sgi-ip22/ip22-eisa.c5
-rw-r--r--arch/mips/sgi-ip22/ip22-int.c32
-rw-r--r--arch/mips/sgi-ip22/ip22-reset.c2
-rw-r--r--arch/mips/sgi-ip22/ip22-time.c6
-rw-r--r--arch/mips/sgi-ip27/ip27-irq.c27
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c4
-rw-r--r--arch/mips/sgi-ip32/crime.c7
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c48
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c28
-rw-r--r--arch/mips/sibyte/bcm1480/smp.c2
-rw-r--r--arch/mips/sibyte/bcm1480/time.c9
-rw-r--r--arch/mips/sibyte/sb1250/irq.c29
-rw-r--r--arch/mips/sibyte/sb1250/smp.c2
-rw-r--r--arch/mips/sibyte/sb1250/time.c7
-rw-r--r--arch/mips/sni/irq.c34
-rw-r--r--arch/mips/sni/setup.c1
-rw-r--r--arch/mips/tx4927/common/tx4927_irq.c14
-rw-r--r--arch/mips/tx4927/common/tx4927_setup.c10
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c2
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c7
-rw-r--r--arch/mips/tx4938/common/irq.c47
-rw-r--r--arch/mips/tx4938/common/setup.c19
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/irq.c2
-rw-r--r--arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c3
-rw-r--r--arch/mips/vr41xx/common/icu.c2
-rw-r--r--arch/mips/vr41xx/common/irq.c32
-rw-r--r--arch/parisc/kernel/drivers.c6
-rw-r--r--arch/parisc/kernel/firmware.c250
-rw-r--r--arch/parisc/kernel/irq.c9
-rw-r--r--arch/parisc/kernel/smp.c15
-rw-r--r--arch/parisc/kernel/time.c34
-rw-r--r--arch/powerpc/boot/Makefile16
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitx.dts246
-rw-r--r--arch/powerpc/boot/of.c5
-rw-r--r--arch/powerpc/configs/iseries_defconfig86
-rw-r--r--arch/powerpc/configs/maple_defconfig56
-rw-r--r--arch/powerpc/configs/pseries_defconfig2
-rw-r--r--arch/powerpc/kernel/ibmebus.c2
-rw-r--r--arch/powerpc/kernel/iommu.c2
-rw-r--r--arch/powerpc/kernel/irq.c12
-rw-r--r--arch/powerpc/kernel/misc_64.S6
-rw-r--r--arch/powerpc/kernel/prom.c2
-rw-r--r--arch/powerpc/kernel/smp.c6
-rw-r--r--arch/powerpc/kernel/time.c8
-rw-r--r--arch/powerpc/platforms/82xx/mpc82xx.c1
-rw-r--r--arch/powerpc/platforms/82xx/mpc82xx_ads.c7
-rw-r--r--arch/powerpc/platforms/82xx/pq2ads.h2
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_ads.c7
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_cds.c9
-rw-r--r--arch/powerpc/platforms/86xx/mpc86xx_hpcn.c7
-rw-r--r--arch/powerpc/platforms/cell/interrupt.c11
-rw-r--r--arch/powerpc/platforms/cell/spider-pic.c5
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c6
-rw-r--r--arch/powerpc/platforms/chrp/setup.c9
-rw-r--r--arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c5
-rw-r--r--arch/powerpc/platforms/iseries/irq.c17
-rw-r--r--arch/powerpc/platforms/iseries/irq.h2
-rw-r--r--arch/powerpc/platforms/iseries/lpevents.c4
-rw-r--r--arch/powerpc/platforms/iseries/mf.c4
-rw-r--r--arch/powerpc/platforms/iseries/smp.c6
-rw-r--r--arch/powerpc/platforms/iseries/smp.h6
-rw-r--r--arch/powerpc/platforms/iseries/viopath.c2
-rw-r--r--arch/powerpc/platforms/maple/pci.c187
-rw-r--r--arch/powerpc/platforms/pasemi/pci.c26
-rw-r--r--arch/powerpc/platforms/powermac/low_i2c.c2
-rw-r--r--arch/powerpc/platforms/powermac/pfunc_base.c2
-rw-r--r--arch/powerpc/platforms/powermac/pic.c19
-rw-r--r--arch/powerpc/platforms/powermac/pic.h4
-rw-r--r--arch/powerpc/platforms/powermac/smp.c15
-rw-r--r--arch/powerpc/platforms/pseries/iommu.c3
-rw-r--r--arch/powerpc/platforms/pseries/ras.c14
-rw-r--r--arch/powerpc/platforms/pseries/setup.c7
-rw-r--r--arch/powerpc/platforms/pseries/xics.c22
-rw-r--r--arch/powerpc/platforms/pseries/xics.h3
-rw-r--r--arch/powerpc/sysdev/cpm2_pic.c2
-rw-r--r--arch/powerpc/sysdev/cpm2_pic.h2
-rw-r--r--arch/powerpc/sysdev/fsl_soc.c9
-rw-r--r--arch/powerpc/sysdev/i8259.c2
-rw-r--r--arch/powerpc/sysdev/ipic.c2
-rw-r--r--arch/powerpc/sysdev/mpic.c10
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe_ic.c18
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe_io.c1
-rw-r--r--arch/powerpc/sysdev/tsi108_pci.c5
-rw-r--r--arch/powerpc/xmon/xmon.c12
-rw-r--r--arch/ppc/4xx_io/serial_sicc.c10
-rw-r--r--arch/ppc/8260_io/enet.c4
-rw-r--r--arch/ppc/8260_io/fcc_enet.c6
-rw-r--r--arch/ppc/8xx_io/commproc.c19
-rw-r--r--arch/ppc/8xx_io/cs4218_tdm.c4
-rw-r--r--arch/ppc/8xx_io/enet.c4
-rw-r--r--arch/ppc/8xx_io/fec.c7
-rw-r--r--arch/ppc/kernel/smp.c4
-rw-r--r--arch/ppc/kernel/time.c2
-rw-r--r--arch/ppc/platforms/85xx/mpc8560_ads.c6
-rw-r--r--arch/ppc/platforms/85xx/mpc85xx_cds_common.c6
-rw-r--r--arch/ppc/platforms/85xx/stx_gp3.c6
-rw-r--r--arch/ppc/platforms/85xx/tqm85xx.c6
-rw-r--r--arch/ppc/platforms/apus_setup.c2
-rw-r--r--arch/ppc/platforms/hdpu.c22
-rw-r--r--arch/ppc/platforms/radstone_ppc7d.c10
-rw-r--r--arch/ppc/platforms/sbc82xx.c4
-rw-r--r--arch/ppc/syslib/cpc700.h2
-rw-r--r--arch/ppc/syslib/cpc700_pic.c2
-rw-r--r--arch/ppc/syslib/cpm2_pic.c2
-rw-r--r--arch/ppc/syslib/cpm2_pic.h2
-rw-r--r--arch/ppc/syslib/gt64260_pic.c9
-rw-r--r--arch/ppc/syslib/i8259.c2
-rw-r--r--arch/ppc/syslib/ibm440gx_common.c2
-rw-r--r--arch/ppc/syslib/ipic.c2
-rw-r--r--arch/ppc/syslib/m82xx_pci.c4
-rw-r--r--arch/ppc/syslib/m8xx_setup.c2
-rw-r--r--arch/ppc/syslib/m8xx_wdt.c4
-rw-r--r--arch/ppc/syslib/mpc52xx_pic.c2
-rw-r--r--arch/ppc/syslib/mv64360_pic.c22
-rw-r--r--arch/ppc/syslib/open_pic.c14
-rw-r--r--arch/ppc/syslib/open_pic2.c2
-rw-r--r--arch/ppc/syslib/ppc403_pic.c2
-rw-r--r--arch/ppc/syslib/ppc4xx_pic.c8
-rw-r--r--arch/ppc/syslib/ppc85xx_rio.c9
-rw-r--r--arch/ppc/syslib/ppc8xx_pic.c4
-rw-r--r--arch/ppc/syslib/xilinx_pic.c2
-rw-r--r--arch/s390/Kconfig3
-rw-r--r--arch/s390/defconfig1
-rw-r--r--arch/s390/kernel/s390_ext.c9
-rw-r--r--arch/s390/kernel/smp.c2
-rw-r--r--arch/s390/kernel/time.c103
-rw-r--r--arch/s390/kernel/traps.c12
-rw-r--r--arch/s390/kernel/vtime.c5
-rw-r--r--arch/s390/mm/fault.c2
-rw-r--r--arch/sparc/kernel/irq.c23
-rw-r--r--arch/sparc/kernel/pcic.c4
-rw-r--r--arch/sparc/kernel/prom.c7
-rw-r--r--arch/sparc/kernel/sparc_ksyms.c4
-rw-r--r--arch/sparc/kernel/sun4c_irq.c2
-rw-r--r--arch/sparc/kernel/sun4d_irq.c12
-rw-r--r--arch/sparc/kernel/sun4d_smp.c6
-rw-r--r--arch/sparc/kernel/sun4m_irq.c2
-rw-r--r--arch/sparc/kernel/sun4m_smp.c7
-rw-r--r--arch/sparc/kernel/tick14.c2
-rw-r--r--arch/sparc/kernel/time.c7
-rw-r--r--arch/sparc/lib/locks.S20
-rw-r--r--arch/sparc64/defconfig19
-rw-r--r--arch/sparc64/kernel/ebus.c2
-rw-r--r--arch/sparc64/kernel/irq.c12
-rw-r--r--arch/sparc64/kernel/of_device.c2
-rw-r--r--arch/sparc64/kernel/pci_psycho.c6
-rw-r--r--arch/sparc64/kernel/pci_sabre.c6
-rw-r--r--arch/sparc64/kernel/pci_schizo.c8
-rw-r--r--arch/sparc64/kernel/power.c2
-rw-r--r--arch/sparc64/kernel/sbus.c6
-rw-r--r--arch/sparc64/kernel/smp.c6
-rw-r--r--arch/sparc64/kernel/time.c7
-rw-r--r--arch/um/drivers/line.c7
-rw-r--r--arch/um/drivers/mconsole_kern.c8
-rw-r--r--arch/um/drivers/net_kern.c2
-rw-r--r--arch/um/drivers/pcap_user.h2
-rw-r--r--arch/um/drivers/port_kern.c4
-rw-r--r--arch/um/drivers/ubd_kern.c2
-rw-r--r--arch/um/drivers/xterm_kern.c2
-rw-r--r--arch/um/include/irq_kern.h5
-rw-r--r--arch/um/kernel/irq.c15
-rw-r--r--arch/um/kernel/sigio.c2
-rw-r--r--arch/um/kernel/time.c2
-rw-r--r--arch/x86_64/defconfig43
-rw-r--r--arch/x86_64/ia32/ptrace32.c4
-rw-r--r--arch/x86_64/kernel/apic.c13
-rw-r--r--arch/x86_64/kernel/entry.S8
-rw-r--r--arch/x86_64/kernel/genapic_cluster.c8
-rw-r--r--arch/x86_64/kernel/genapic_flat.c24
-rw-r--r--arch/x86_64/kernel/io_apic.c139
-rw-r--r--arch/x86_64/kernel/irq.c19
-rw-r--r--arch/x86_64/kernel/pci-calgary.c36
-rw-r--r--arch/x86_64/kernel/process.c7
-rw-r--r--arch/x86_64/kernel/time.c20
-rw-r--r--arch/x86_64/kernel/traps.c2
-rw-r--r--crypto/serpent.c16
-rw-r--r--drivers/acorn/block/mfmhd.c2
-rw-r--r--drivers/acpi/cm_sbs.c4
-rw-r--r--drivers/acpi/hardware/hwregs.c2
-rw-r--r--drivers/acpi/osl.c2
-rw-r--r--drivers/ata/ahci.c4
-rw-r--r--drivers/ata/libata-core.c3
-rw-r--r--drivers/ata/pdc_adma.c5
-rw-r--r--drivers/ata/sata_mv.c6
-rw-r--r--drivers/ata/sata_nv.c18
-rw-r--r--drivers/ata/sata_promise.c6
-rw-r--r--drivers/ata/sata_qstor.c4
-rw-r--r--drivers/ata/sata_sil.c8
-rw-r--r--drivers/ata/sata_sil24.c4
-rw-r--r--drivers/ata/sata_svw.c4
-rw-r--r--drivers/ata/sata_sx4.c4
-rw-r--r--drivers/ata/sata_vsc.c3
-rw-r--r--drivers/atm/ambassador.c11
-rw-r--r--drivers/atm/eni.c2
-rw-r--r--drivers/atm/firestream.c2
-rw-r--r--drivers/atm/fore200e.c2
-rw-r--r--drivers/atm/he.c4
-rw-r--r--drivers/atm/horizon.c13
-rw-r--r--drivers/atm/idt77252.c2
-rw-r--r--drivers/atm/iphase.c2
-rw-r--r--drivers/atm/lanai.c6
-rw-r--r--drivers/atm/nicstar.c4
-rw-r--r--drivers/atm/zatm.c2
-rw-r--r--drivers/block/DAC960.c38
-rw-r--r--drivers/block/DAC960.h14
-rw-r--r--drivers/block/acsi.c4
-rw-r--r--drivers/block/acsi_slm.c4
-rw-r--r--drivers/block/amiflop.c4
-rw-r--r--drivers/block/ataflop.c4
-rw-r--r--drivers/block/cciss.c6
-rw-r--r--drivers/block/cpqarray.c4
-rw-r--r--drivers/block/floppy.c4
-rw-r--r--drivers/block/loop.c8
-rw-r--r--drivers/block/ps2esdi.c6
-rw-r--r--drivers/block/swim3.c8
-rw-r--r--drivers/block/swim_iop.c4
-rw-r--r--drivers/block/sx8.c2
-rw-r--r--drivers/block/ub.c6
-rw-r--r--drivers/block/umem.c2
-rw-r--r--drivers/block/xd.c3
-rw-r--r--drivers/block/xd.h3
-rw-r--r--drivers/bluetooth/bcm203x.c2
-rw-r--r--drivers/bluetooth/bfusb.c8
-rw-r--r--drivers/bluetooth/bluecard_cs.c2
-rw-r--r--drivers/bluetooth/bpa10x.c2
-rw-r--r--drivers/bluetooth/bt3c_cs.c2
-rw-r--r--drivers/bluetooth/btuart_cs.c2
-rw-r--r--drivers/bluetooth/dtl1_cs.c2
-rw-r--r--drivers/bluetooth/hci_usb.c8
-rw-r--r--drivers/cdrom/cdrom.c6
-rw-r--r--drivers/cdrom/cdu31a.c2
-rw-r--r--drivers/cdrom/cm206.c2
-rw-r--r--drivers/cdrom/mcdx.c6
-rw-r--r--drivers/cdrom/sonycd535.c2
-rw-r--r--drivers/char/amiserial.c6
-rw-r--r--drivers/char/applicom.c4
-rw-r--r--drivers/char/cyclades.c4
-rw-r--r--drivers/char/drm/drm_os_linux.h2
-rw-r--r--drivers/char/ec3104_keyb.c2
-rw-r--r--drivers/char/esp.c3
-rw-r--r--drivers/char/ftape/lowlevel/fdc-io.c2
-rw-r--r--drivers/char/hangcheck-timer.c2
-rw-r--r--drivers/char/hpet.c2
-rw-r--r--drivers/char/hvc_console.c4
-rw-r--r--drivers/char/hvcs.c6
-rw-r--r--drivers/char/hvsi.c6
-rw-r--r--drivers/char/ip2/ip2main.c9
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c6
-rw-r--r--drivers/char/ipmi/ipmi_watchdog.c2
-rw-r--r--drivers/char/isicom.c2
-rw-r--r--drivers/char/istallion.c58
-rw-r--r--drivers/char/keyboard.c135
-rw-r--r--drivers/char/mbcs.c3
-rw-r--r--drivers/char/mmtimer.c3
-rw-r--r--drivers/char/mwave/tp3780i.c4
-rw-r--r--drivers/char/mxser.c4
-rw-r--r--drivers/char/nwbutton.c2
-rw-r--r--drivers/char/nwbutton.h2
-rw-r--r--drivers/char/pcmcia/synclink_cs.c5
-rw-r--r--drivers/char/ppdev.c2
-rw-r--r--drivers/char/qtronix.c605
-rw-r--r--drivers/char/rio/func.h2
-rw-r--r--drivers/char/rio/rio_linux.c8
-rw-r--r--drivers/char/rio/riointr.c2
-rw-r--r--drivers/char/riscom8.c9
-rw-r--r--drivers/char/rtc.c12
-rw-r--r--drivers/char/ser_a2232.c4
-rw-r--r--drivers/char/serial167.c26
-rw-r--r--drivers/char/snsc.c2
-rw-r--r--drivers/char/snsc_event.c2
-rw-r--r--drivers/char/sonypi.c2
-rw-r--r--drivers/char/specialix.c6
-rw-r--r--drivers/char/stallion.c5
-rw-r--r--drivers/char/sx.c4
-rw-r--r--drivers/char/synclink.c3
-rw-r--r--drivers/char/synclink_gt.c5
-rw-r--r--drivers/char/synclinkmp.c3
-rw-r--r--drivers/char/sysrq.c63
-rw-r--r--drivers/char/tlclk.c4
-rw-r--r--drivers/char/tpm/tpm_tis.c4
-rw-r--r--drivers/char/viocons.c2
-rw-r--r--drivers/char/vme_scc.c20
-rw-r--r--drivers/char/vr41xx_giu.c2
-rw-r--r--drivers/char/watchdog/eurotechwdt.c2
-rw-r--r--drivers/char/watchdog/mpcore_wdt.c2
-rw-r--r--drivers/char/watchdog/pcwd_usb.c2
-rw-r--r--drivers/char/watchdog/s3c2410_wdt.c3
-rw-r--r--drivers/char/watchdog/wdt.c3
-rw-r--r--drivers/char/watchdog/wdt285.c2
-rw-r--r--drivers/char/watchdog/wdt_pci.c3
-rw-r--r--drivers/dma/ioatdma.c6
-rw-r--r--drivers/dma/ioatdma.h4
-rw-r--r--drivers/fc4/soc.c2
-rw-r--r--drivers/fc4/socal.c2
-rw-r--r--drivers/firmware/dcdbas.c2
-rw-r--r--drivers/i2c/busses/i2c-elektor.c2
-rw-r--r--drivers/i2c/busses/i2c-ibm_iic.c2
-rw-r--r--drivers/i2c/busses/i2c-iop3xx.c2
-rw-r--r--drivers/i2c/busses/i2c-ite.c3
-rw-r--r--drivers/i2c/busses/i2c-mpc.c2
-rw-r--r--drivers/i2c/busses/i2c-mv64xxx.c2
-rw-r--r--drivers/i2c/busses/i2c-ocores.c2
-rw-r--r--drivers/i2c/busses/i2c-omap.c4
-rw-r--r--drivers/i2c/busses/i2c-pca-isa.c2
-rw-r--r--drivers/i2c/busses/i2c-powermac.c28
-rw-r--r--drivers/i2c/busses/i2c-pxa.c2
-rw-r--r--drivers/i2c/busses/i2c-rpx.c4
-rw-r--r--drivers/i2c/busses/i2c-s3c2410.c3
-rw-r--r--drivers/i2c/chips/isp1301_omap.c4
-rw-r--r--drivers/i2c/chips/tps65010.c2
-rw-r--r--drivers/ide/ide-io.c2
-rw-r--r--drivers/ide/legacy/hd.c2
-rw-r--r--drivers/ide/legacy/macide.c2
-rw-r--r--drivers/ide/mips/swarm.c2
-rw-r--r--drivers/ieee1394/nodemgr.c2
-rw-r--r--drivers/ieee1394/ohci1394.c3
-rw-r--r--drivers/ieee1394/pcilynx.c3
-rw-r--r--drivers/infiniband/core/cm.c84
-rw-r--r--drivers/infiniband/hw/amso1100/c2.c4
-rw-r--r--drivers/infiniband/hw/amso1100/c2_ae.c2
-rw-r--r--drivers/infiniband/hw/amso1100/c2_qp.c16
-rw-r--r--drivers/infiniband/hw/ehca/ehca_irq.c4
-rw-r--r--drivers/infiniband/hw/ehca/ehca_irq.h4
-rw-r--r--drivers/infiniband/hw/ipath/ipath_intr.c2
-rw-r--r--drivers/infiniband/hw/ipath/ipath_kernel.h2
-rw-r--r--drivers/infiniband/hw/mthca/mthca_eq.c10
-rw-r--r--drivers/infiniband/hw/mthca/mthca_provider.c2
-rw-r--r--drivers/infiniband/hw/mthca/mthca_srq.c6
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ib.c5
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.c27
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.h2
-rw-r--r--drivers/input/joystick/amijoy.c4
-rw-r--r--drivers/input/joystick/iforce/iforce-packets.c6
-rw-r--r--drivers/input/joystick/iforce/iforce-serio.c4
-rw-r--r--drivers/input/joystick/iforce/iforce-usb.c8
-rw-r--r--drivers/input/joystick/iforce/iforce.h2
-rw-r--r--drivers/input/joystick/magellan.c8
-rw-r--r--drivers/input/joystick/spaceball.c8
-rw-r--r--drivers/input/joystick/spaceorb.c8
-rw-r--r--drivers/input/joystick/stinger.c8
-rw-r--r--drivers/input/joystick/twidjoy.c8
-rw-r--r--drivers/input/joystick/warrior.c10
-rw-r--r--drivers/input/keyboard/Kconfig4
-rw-r--r--drivers/input/keyboard/amikbd.c4
-rw-r--r--drivers/input/keyboard/atkbd.c4
-rw-r--r--drivers/input/keyboard/corgikbd.c9
-rw-r--r--drivers/input/keyboard/hil_kbd.c4
-rw-r--r--drivers/input/keyboard/hilkbd.c2
-rw-r--r--drivers/input/keyboard/lkkbd.c5
-rw-r--r--drivers/input/keyboard/locomokbd.c8
-rw-r--r--drivers/input/keyboard/newtonkbd.c3
-rw-r--r--drivers/input/keyboard/omap-keypad.c3
-rw-r--r--drivers/input/keyboard/spitzkbd.c10
-rw-r--r--drivers/input/keyboard/stowaway.c3
-rw-r--r--drivers/input/keyboard/sunkbd.c3
-rw-r--r--drivers/input/keyboard/xtkbd.c3
-rw-r--r--drivers/input/misc/Kconfig2
-rw-r--r--drivers/input/misc/ixp4xx-beeper.c2
-rw-r--r--drivers/input/mouse/Kconfig2
-rw-r--r--drivers/input/mouse/alps.c10
-rw-r--r--drivers/input/mouse/amimouse.c4
-rw-r--r--drivers/input/mouse/hil_ptr.c4
-rw-r--r--drivers/input/mouse/inport.c4
-rw-r--r--drivers/input/mouse/lifebook.c4
-rw-r--r--drivers/input/mouse/logibm.c3
-rw-r--r--drivers/input/mouse/logips2pp.c4
-rw-r--r--drivers/input/mouse/pc110pad.c9
-rw-r--r--drivers/input/mouse/psmouse-base.c16
-rw-r--r--drivers/input/mouse/psmouse.h2
-rw-r--r--drivers/input/mouse/rpcmouse.c4
-rw-r--r--drivers/input/mouse/sermouse.c14
-rw-r--r--drivers/input/mouse/synaptics.c15
-rw-r--r--drivers/input/mouse/vsxxxaa.c22
-rw-r--r--drivers/input/serio/Kconfig2
-rw-r--r--drivers/input/serio/ambakmi.c4
-rw-r--r--drivers/input/serio/ct82c710.c4
-rw-r--r--drivers/input/serio/gscps2.c10
-rw-r--r--drivers/input/serio/hil_mlc.c32
-rw-r--r--drivers/input/serio/hp_sdc.c4
-rw-r--r--drivers/input/serio/i8042.c12
-rw-r--r--drivers/input/serio/maceps2.c5
-rw-r--r--drivers/input/serio/parkbd.c4
-rw-r--r--drivers/input/serio/pcips2.c4
-rw-r--r--drivers/input/serio/q40kbd.c4
-rw-r--r--drivers/input/serio/rpckbd.c6
-rw-r--r--drivers/input/serio/sa1111ps2.c6
-rw-r--r--drivers/input/serio/serio.c4
-rw-r--r--drivers/input/serio/serio_raw.c2
-rw-r--r--drivers/input/serio/serport.c5
-rw-r--r--drivers/input/touchscreen/ads7846.c2
-rw-r--r--drivers/input/touchscreen/corgi_ts.c13
-rw-r--r--drivers/input/touchscreen/elo.c17
-rw-r--r--drivers/input/touchscreen/gunze.c7
-rw-r--r--drivers/input/touchscreen/h3600_ts_input.c14
-rw-r--r--drivers/input/touchscreen/hp680_ts_input.c2
-rw-r--r--drivers/input/touchscreen/mk712.c3
-rw-r--r--drivers/input/touchscreen/mtouch.c11
-rw-r--r--drivers/input/touchscreen/penmount.c3
-rw-r--r--drivers/input/touchscreen/touchright.c3
-rw-r--r--drivers/input/touchscreen/touchwin.c3
-rw-r--r--drivers/isdn/act2000/act2000_isa.c24
-rw-r--r--drivers/isdn/gigaset/bas-gigaset.c12
-rw-r--r--drivers/isdn/gigaset/usb-gigaset.c4
-rw-r--r--drivers/isdn/hardware/avm/avmcard.h4
-rw-r--r--drivers/isdn/hardware/avm/b1.c2
-rw-r--r--drivers/isdn/hardware/avm/b1dma.c2
-rw-r--r--drivers/isdn/hardware/avm/c4.c2
-rw-r--r--drivers/isdn/hardware/avm/t1isa.c2
-rw-r--r--drivers/isdn/hardware/eicon/diva.c4
-rw-r--r--drivers/isdn/hardware/eicon/divasmain.c3
-rw-r--r--drivers/isdn/hisax/amd7930_fn.c2
-rw-r--r--drivers/isdn/hisax/asuscom.c4
-rw-r--r--drivers/isdn/hisax/avm_a1.c2
-rw-r--r--drivers/isdn/hisax/avm_a1p.c2
-rw-r--r--drivers/isdn/hisax/avm_pci.c2
-rw-r--r--drivers/isdn/hisax/bkm_a4t.c2
-rw-r--r--drivers/isdn/hisax/bkm_a8.c2
-rw-r--r--drivers/isdn/hisax/diva.c8
-rw-r--r--drivers/isdn/hisax/elsa.c4
-rw-r--r--drivers/isdn/hisax/enternow_pci.c2
-rw-r--r--drivers/isdn/hisax/gazel.c4
-rw-r--r--drivers/isdn/hisax/hfc4s8s_l1.c2
-rw-r--r--drivers/isdn/hisax/hfc_pci.c2
-rw-r--r--drivers/isdn/hisax/hfc_sx.c2
-rw-r--r--drivers/isdn/hisax/hfc_usb.c8
-rw-r--r--drivers/isdn/hisax/hfcscard.c2
-rw-r--r--drivers/isdn/hisax/hisax.h2
-rw-r--r--drivers/isdn/hisax/hisax_fcpcipnp.c4
-rw-r--r--drivers/isdn/hisax/icc.c2
-rw-r--r--drivers/isdn/hisax/isac.c2
-rw-r--r--drivers/isdn/hisax/isurf.c2
-rw-r--r--drivers/isdn/hisax/ix1_micro.c2
-rw-r--r--drivers/isdn/hisax/mic.c2
-rw-r--r--drivers/isdn/hisax/netjet.h2
-rw-r--r--drivers/isdn/hisax/niccy.c3
-rw-r--r--drivers/isdn/hisax/nj_s.c2
-rw-r--r--drivers/isdn/hisax/nj_u.c2
-rw-r--r--drivers/isdn/hisax/s0box.c2
-rw-r--r--drivers/isdn/hisax/saphir.c2
-rw-r--r--drivers/isdn/hisax/sedlbauer.c6
-rw-r--r--drivers/isdn/hisax/sportster.c2
-rw-r--r--drivers/isdn/hisax/st5481_b.c2
-rw-r--r--drivers/isdn/hisax/st5481_d.c2
-rw-r--r--drivers/isdn/hisax/st5481_usb.c6
-rw-r--r--drivers/isdn/hisax/teleint.c2
-rw-r--r--drivers/isdn/hisax/teles0.c2
-rw-r--r--drivers/isdn/hisax/teles3.c2
-rw-r--r--drivers/isdn/hisax/telespci.c2
-rw-r--r--drivers/isdn/hisax/w6692.c4
-rw-r--r--drivers/isdn/hysdn/boardergo.c2
-rw-r--r--drivers/isdn/pcbit/layer2.c2
-rw-r--r--drivers/isdn/pcbit/layer2.h2
-rw-r--r--drivers/isdn/sc/init.c2
-rw-r--r--drivers/isdn/sc/interrupt.c2
-rw-r--r--drivers/macintosh/adb-iop.c10
-rw-r--r--drivers/macintosh/adb.c10
-rw-r--r--drivers/macintosh/adbhid.c20
-rw-r--r--drivers/macintosh/macio-adb.c9
-rw-r--r--drivers/macintosh/smu.c6
-rw-r--r--drivers/macintosh/via-cuda.c14
-rw-r--r--drivers/macintosh/via-macii.c9
-rw-r--r--drivers/macintosh/via-maciisi.c14
-rw-r--r--drivers/macintosh/via-pmu.c32
-rw-r--r--drivers/macintosh/via-pmu68k.c19
-rw-r--r--drivers/macintosh/windfarm_pm112.c18
-rw-r--r--drivers/macintosh/windfarm_pm81.c24
-rw-r--r--drivers/macintosh/windfarm_pm91.c24
-rw-r--r--drivers/md/md.c1
-rw-r--r--drivers/media/common/saa7146_core.c2
-rw-r--r--drivers/media/dvb/b2c2/flexcop-pci.c2
-rw-r--r--drivers/media/dvb/b2c2/flexcop-usb.c2
-rw-r--r--drivers/media/dvb/bt8xx/bt878.c2
-rw-r--r--drivers/media/dvb/cinergyT2/cinergyT2.c4
-rw-r--r--drivers/media/dvb/dvb-usb/usb-urb.c2
-rw-r--r--drivers/media/dvb/pluto2/pluto2.c2
-rw-r--r--drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c2
-rw-r--r--drivers/media/dvb/ttusb-dec/ttusb_dec.c4
-rw-r--r--drivers/media/video/arv.c2
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c2
-rw-r--r--drivers/media/video/cpia2/cpia2_usb.c4
-rw-r--r--drivers/media/video/cpia_usb.c2
-rw-r--r--drivers/media/video/cx88/cx88-alsa.c2
-rw-r--r--drivers/media/video/cx88/cx88-mpeg.c2
-rw-r--r--drivers/media/video/cx88/cx88-video.c2
-rw-r--r--drivers/media/video/dabusb.c2
-rw-r--r--drivers/media/video/em28xx/em28xx-core.c6
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c2
-rw-r--r--drivers/media/video/et61x251/et61x251_core.c2
-rw-r--r--drivers/media/video/meye.c2
-rw-r--r--drivers/media/video/ov511.c2
-rw-r--r--drivers/media/video/planb.c4
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c4
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-io.c2
-rw-r--r--drivers/media/video/pwc/pwc-if.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-alsa.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-core.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-oss.c2
-rw-r--r--drivers/media/video/se401.c4
-rw-r--r--drivers/media/video/sn9c102/sn9c102_core.c2
-rw-r--r--drivers/media/video/stradis.c2
-rw-r--r--drivers/media/video/stv680.c2
-rw-r--r--drivers/media/video/usbvideo/konicawc.c2
-rw-r--r--drivers/media/video/usbvideo/quickcam_messenger.c4
-rw-r--r--drivers/media/video/usbvideo/usbvideo.c2
-rw-r--r--drivers/media/video/vino.c2
-rw-r--r--drivers/media/video/w9968cf.c4
-rw-r--r--drivers/media/video/zc0301/zc0301_core.c2
-rw-r--r--drivers/media/video/zoran_device.c5
-rw-r--r--drivers/media/video/zoran_device.h4
-rw-r--r--drivers/media/video/zr36120.c4
-rw-r--r--drivers/message/fusion/mptbase.c5
-rw-r--r--drivers/message/i2o/pci.c3
-rw-r--r--drivers/mfd/ucb1x00-core.c2
-rw-r--r--drivers/misc/ibmasm/ibmasm.h4
-rw-r--r--drivers/misc/ibmasm/lowlevel.c4
-rw-r--r--drivers/misc/ibmasm/remote.c14
-rw-r--r--drivers/misc/lkdtm.c5
-rw-r--r--drivers/misc/tifm_7xx1.c15
-rw-r--r--drivers/misc/tifm_core.c2
-rw-r--r--drivers/mmc/at91_mci.c4
-rw-r--r--drivers/mmc/au1xmmc.c2
-rw-r--r--drivers/mmc/imxmmc.c4
-rw-r--r--drivers/mmc/mmc_block.c104
-rw-r--r--drivers/mmc/mmci.c4
-rw-r--r--drivers/mmc/omap.c4
-rw-r--r--drivers/mmc/pxamci.c6
-rw-r--r--drivers/mmc/sdhci.c4
-rw-r--r--drivers/mmc/tifm_sd.c14
-rw-r--r--drivers/mmc/wbsd.c2
-rw-r--r--drivers/mtd/maps/physmap.c2
-rw-r--r--drivers/mtd/nand/cs553x_nand.c2
-rw-r--r--drivers/net/3c501.c3
-rw-r--r--drivers/net/3c501.h2
-rw-r--r--drivers/net/3c505.c2
-rw-r--r--drivers/net/3c507.c4
-rw-r--r--drivers/net/3c509.c13
-rw-r--r--drivers/net/3c515.c6
-rw-r--r--drivers/net/3c523.c11
-rw-r--r--drivers/net/3c527.c9
-rw-r--r--drivers/net/3c59x.c14
-rw-r--r--drivers/net/7990.c4
-rw-r--r--drivers/net/8139cp.c5
-rw-r--r--drivers/net/8139too.c8
-rw-r--r--drivers/net/82596.c8
-rw-r--r--drivers/net/8390.c13
-rw-r--r--drivers/net/8390.h2
-rw-r--r--drivers/net/a2065.c3
-rw-r--r--drivers/net/acenic.c2
-rw-r--r--drivers/net/acenic.h2
-rw-r--r--drivers/net/amd8111e.c4
-rw-r--r--drivers/net/apne.c6
-rw-r--r--drivers/net/appletalk/cops.c4
-rw-r--r--drivers/net/appletalk/ltpc.c2
-rw-r--r--drivers/net/arcnet/arcnet.c2
-rw-r--r--drivers/net/ariadne.c4
-rw-r--r--drivers/net/arm/am79c961a.c4
-rw-r--r--drivers/net/arm/at91_ether.c4
-rw-r--r--drivers/net/arm/ep93xx_eth.c2
-rw-r--r--drivers/net/arm/ether1.c4
-rw-r--r--drivers/net/arm/ether3.c4
-rw-r--r--drivers/net/at1700.c5
-rw-r--r--drivers/net/atari_bionet.c2
-rw-r--r--drivers/net/atari_pamsnet.c3
-rw-r--r--drivers/net/atarilance.c4
-rw-r--r--drivers/net/atp.c11
-rw-r--r--drivers/net/au1000_eth.c4
-rw-r--r--drivers/net/b44.c4
-rw-r--r--drivers/net/bmac.c14
-rw-r--r--drivers/net/bnx2.c6
-rw-r--r--drivers/net/cassini.c8
-rw-r--r--drivers/net/chelsio/cpl5_cmd.h6
-rw-r--r--drivers/net/chelsio/cxgb2.c2
-rw-r--r--drivers/net/chelsio/sge.c6
-rw-r--r--drivers/net/chelsio/sge.h9
-rw-r--r--drivers/net/cris/eth_v10.c8
-rw-r--r--drivers/net/cs89x0.c6
-rw-r--r--drivers/net/de600.c8
-rw-r--r--drivers/net/de600.h2
-rw-r--r--drivers/net/de620.c4
-rw-r--r--drivers/net/declance.c10
-rw-r--r--drivers/net/defxx.c6
-rw-r--r--drivers/net/depca.c4
-rw-r--r--drivers/net/dgrs.c6
-rw-r--r--drivers/net/dl2k.c4
-rw-r--r--drivers/net/dm9000.c6
-rw-r--r--drivers/net/e100.c4
-rw-r--r--drivers/net/e1000/e1000_ethtool.c3
-rw-r--r--drivers/net/e1000/e1000_main.c7
-rw-r--r--drivers/net/eepro.c26
-rw-r--r--drivers/net/eepro100.c6
-rw-r--r--drivers/net/eexpress.c11
-rw-r--r--drivers/net/ehea/ehea_main.c12
-rw-r--r--drivers/net/epic100.c4
-rw-r--r--drivers/net/eth16i.c4
-rw-r--r--drivers/net/ewrk3.c4
-rw-r--r--drivers/net/fealnx.c4
-rw-r--r--drivers/net/fec.c10
-rw-r--r--drivers/net/fec_8xx/fec_main.c4
-rw-r--r--drivers/net/forcedeth.c20
-rw-r--r--drivers/net/fs_enet/fs_enet-main.c4
-rw-r--r--drivers/net/gianfar.c22
-rw-r--r--drivers/net/gianfar.h2
-rw-r--r--drivers/net/hamachi.c4
-rw-r--r--drivers/net/hamradio/baycom_epp.c2
-rw-r--r--drivers/net/hamradio/baycom_par.c2
-rw-r--r--drivers/net/hamradio/baycom_ser_fdx.c2
-rw-r--r--drivers/net/hamradio/baycom_ser_hdx.c2
-rw-r--r--drivers/net/hamradio/dmascc.c4
-rw-r--r--drivers/net/hamradio/scc.c4
-rw-r--r--drivers/net/hamradio/yam.c2
-rw-r--r--drivers/net/hp100.c4
-rw-r--r--drivers/net/ibm_emac/ibm_emac_core.c4
-rw-r--r--drivers/net/ibm_emac/ibm_emac_debug.c3
-rw-r--r--drivers/net/ibm_emac/ibm_emac_mal.c10
-rw-r--r--drivers/net/ibmlana.c2
-rw-r--r--drivers/net/ibmveth.c8
-rw-r--r--drivers/net/ioc3-eth.c2
-rw-r--r--drivers/net/irda/ali-ircc.c13
-rw-r--r--drivers/net/irda/au1k_ir.c4
-rw-r--r--drivers/net/irda/donauboe.c35
-rw-r--r--drivers/net/irda/irda-usb.c12
-rw-r--r--drivers/net/irda/irport.c16
-rw-r--r--drivers/net/irda/irport.h2
-rw-r--r--drivers/net/irda/mcs7780.c4
-rw-r--r--drivers/net/irda/mcs7780.h4
-rw-r--r--drivers/net/irda/nsc-ircc.c12
-rw-r--r--drivers/net/irda/pxaficp_ir.c8
-rw-r--r--drivers/net/irda/sa1100_ir.c2
-rw-r--r--drivers/net/irda/smsc-ircc2.c6
-rw-r--r--drivers/net/irda/stir4200.c2
-rw-r--r--drivers/net/irda/via-ircc.c8
-rw-r--r--drivers/net/irda/vlsi_ir.c3
-rw-r--r--drivers/net/irda/w83977af_ir.c12
-rw-r--r--drivers/net/isa-skeleton.c4
-rw-r--r--drivers/net/iseries_veth.c2
-rw-r--r--drivers/net/ixgb/ixgb_main.c7
-rw-r--r--drivers/net/ixp2000/ixpdev.c2
-rw-r--r--drivers/net/lance.c10
-rw-r--r--drivers/net/lasi_82596.c8
-rw-r--r--drivers/net/lp486e.c4
-rw-r--r--drivers/net/mac89x0.c4
-rw-r--r--drivers/net/mace.c12
-rw-r--r--drivers/net/macmace.c8
-rw-r--r--drivers/net/meth.c4
-rw-r--r--drivers/net/mipsnet.c3
-rw-r--r--drivers/net/mv643xx_eth.c5
-rw-r--r--drivers/net/myri10ge/myri10ge.c2
-rw-r--r--drivers/net/myri_sbus.c2
-rw-r--r--drivers/net/natsemi.c6
-rw-r--r--drivers/net/netx-eth.c2
-rw-r--r--drivers/net/ni5010.c4
-rw-r--r--drivers/net/ni52.c4
-rw-r--r--drivers/net/ni65.c4
-rw-r--r--drivers/net/ns83820.c2
-rw-r--r--drivers/net/pci-skeleton.c6
-rw-r--r--drivers/net/pcmcia/3c574_cs.c6
-rw-r--r--drivers/net/pcmcia/3c589_cs.c6
-rw-r--r--drivers/net/pcmcia/axnet_cs.c20
-rw-r--r--drivers/net/pcmcia/fmvj18x_cs.c4
-rw-r--r--drivers/net/pcmcia/nmclan_cs.c4
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c8
-rw-r--r--drivers/net/pcmcia/smc91c92_cs.c6
-rw-r--r--drivers/net/pcmcia/xirc2ps_cs.c4
-rw-r--r--drivers/net/pcnet32.c13
-rw-r--r--drivers/net/phy/phy.c2
-rw-r--r--drivers/net/plip.c11
-rw-r--r--drivers/net/qla3xxx.c2
-rw-r--r--drivers/net/r8169.c7
-rw-r--r--drivers/net/rrunner.c2
-rw-r--r--drivers/net/rrunner.h2
-rw-r--r--drivers/net/s2io.c12
-rw-r--r--drivers/net/s2io.h330
-rw-r--r--drivers/net/saa9730.c5
-rw-r--r--drivers/net/sb1000.c12
-rw-r--r--drivers/net/sb1250-mac.c4
-rw-r--r--drivers/net/seeq8005.c4
-rw-r--r--drivers/net/sgiseeq.c2
-rw-r--r--drivers/net/sis190.c4
-rw-r--r--drivers/net/sis900.c6
-rw-r--r--drivers/net/sk98lin/skge.c10
-rw-r--r--drivers/net/sk_mca.c2
-rw-r--r--drivers/net/skfp/skfddi.c12
-rw-r--r--drivers/net/skge.c4
-rw-r--r--drivers/net/sky2.c5
-rw-r--r--drivers/net/smc-ultra.c2
-rw-r--r--drivers/net/smc911x.c6
-rw-r--r--drivers/net/smc9194.c4
-rw-r--r--drivers/net/smc91x.c4
-rw-r--r--drivers/net/smc91x.h2
-rw-r--r--drivers/net/sonic.c9
-rw-r--r--drivers/net/sonic.h2
-rw-r--r--drivers/net/spider_net.c4
-rw-r--r--drivers/net/starfire.c4
-rw-r--r--drivers/net/sun3_82586.c4
-rw-r--r--drivers/net/sun3lance.c4
-rw-r--r--drivers/net/sunbmac.c2
-rw-r--r--drivers/net/sundance.c4
-rw-r--r--drivers/net/sungem.c4
-rw-r--r--drivers/net/sunhme.c8
-rw-r--r--drivers/net/sunlance.c4
-rw-r--r--drivers/net/sunqe.c4
-rw-r--r--drivers/net/tc35815.c4
-rw-r--r--drivers/net/tg3.c15
-rw-r--r--drivers/net/tlan.c7
-rw-r--r--drivers/net/tokenring/3c359.c4
-rw-r--r--drivers/net/tokenring/ibmtr.c6
-rw-r--r--drivers/net/tokenring/lanstreamer.c5
-rw-r--r--drivers/net/tokenring/madgemc.c6
-rw-r--r--drivers/net/tokenring/olympic.c4
-rw-r--r--drivers/net/tokenring/smctr.c11
-rw-r--r--drivers/net/tokenring/tms380tr.c7
-rw-r--r--drivers/net/tokenring/tms380tr.h2
-rw-r--r--drivers/net/tulip/de2104x.c2
-rw-r--r--drivers/net/tulip/de4x5.c10
-rw-r--r--drivers/net/tulip/dmfe.c6
-rw-r--r--drivers/net/tulip/interrupt.c2
-rw-r--r--drivers/net/tulip/tulip.h2
-rw-r--r--drivers/net/tulip/tulip_core.c2
-rw-r--r--drivers/net/tulip/uli526x.c4
-rw-r--r--drivers/net/tulip/winbond-840.c4
-rw-r--r--drivers/net/tulip/xircom_cb.c6
-rw-r--r--drivers/net/tulip/xircom_tulip_cb.c4
-rw-r--r--drivers/net/typhoon.c2
-rw-r--r--drivers/net/ucc_geth.c5
-rw-r--r--drivers/net/via-rhine.c6
-rw-r--r--drivers/net/via-velocity.c5
-rw-r--r--drivers/net/wan/cosa.c4
-rw-r--r--drivers/net/wan/cycx_main.c8
-rw-r--r--drivers/net/wan/dscc4.c4
-rw-r--r--drivers/net/wan/farsync.c2
-rw-r--r--drivers/net/wan/hd6457x.c2
-rw-r--r--drivers/net/wan/lmc/lmc_main.c4
-rw-r--r--drivers/net/wan/pc300_drv.c4
-rw-r--r--drivers/net/wan/sbni.c4
-rw-r--r--drivers/net/wan/sdla.c10
-rw-r--r--drivers/net/wan/wanxl.c2
-rw-r--r--drivers/net/wan/z85230.c2
-rw-r--r--drivers/net/wan/z85230.h2
-rw-r--r--drivers/net/wireless/airo.c5
-rw-r--r--drivers/net/wireless/arlan-main.c4
-rw-r--r--drivers/net/wireless/atmel.c2
-rw-r--r--drivers/net/wireless/bcm43xx/bcm43xx_main.c4
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c2
-rw-r--r--drivers/net/wireless/ipw2100.c2
-rw-r--r--drivers/net/wireless/ipw2200.c2
-rw-r--r--drivers/net/wireless/netwave_cs.c6
-rw-r--r--drivers/net/wireless/orinoco.c4
-rw-r--r--drivers/net/wireless/orinoco.h2
-rw-r--r--drivers/net/wireless/prism54/islpci_dev.c2
-rw-r--r--drivers/net/wireless/prism54/islpci_dev.h2
-rw-r--r--drivers/net/wireless/ray_cs.c4
-rw-r--r--drivers/net/wireless/wavelan.c2
-rw-r--r--drivers/net/wireless/wavelan.p.h3
-rw-r--r--drivers/net/wireless/wavelan_cs.c14
-rw-r--r--drivers/net/wireless/wavelan_cs.p.h3
-rw-r--r--drivers/net/wireless/wl3501_cs.c18
-rw-r--r--drivers/net/wireless/zd1201.c6
-rw-r--r--drivers/net/wireless/zd1211rw/zd_usb.c6
-rw-r--r--drivers/net/yellowfin.c11
-rw-r--r--drivers/net/znet.c9
-rw-r--r--drivers/parisc/dino.c5
-rw-r--r--drivers/parisc/eisa.c6
-rw-r--r--drivers/parisc/gsc.c4
-rw-r--r--drivers/parisc/gsc.h2
-rw-r--r--drivers/parisc/power.c2
-rw-r--r--drivers/parisc/superio.c4
-rw-r--r--drivers/parport/daisy.c2
-rw-r--r--drivers/parport/ieee1284.c2
-rw-r--r--drivers/parport/parport_amiga.c4
-rw-r--r--drivers/parport/parport_atari.c4
-rw-r--r--drivers/parport/parport_ax88796.c4
-rw-r--r--drivers/parport/parport_gsc.c4
-rw-r--r--drivers/parport/parport_ip32.c11
-rw-r--r--drivers/parport/parport_mfc3.c4
-rw-r--r--drivers/parport/parport_pc.c4
-rw-r--r--drivers/parport/parport_sunbpp.c4
-rw-r--r--drivers/parport/share.c2
-rw-r--r--drivers/pci/hotplug/cpci_hotplug_core.c2
-rw-r--r--drivers/pci/hotplug/cpqphp.h2
-rw-r--r--drivers/pci/hotplug/cpqphp_ctrl.c2
-rw-r--r--drivers/pci/hotplug/pciehp_hpc.c6
-rw-r--r--drivers/pci/hotplug/shpchp_hpc.c6
-rw-r--r--drivers/pci/pcie/aer/aerdrv.c3
-rw-r--r--drivers/pcmcia/at91_cf.c4
-rw-r--r--drivers/pcmcia/hd64465_ss.c9
-rw-r--r--drivers/pcmcia/i82092.c2
-rw-r--r--drivers/pcmcia/i82092aa.h2
-rw-r--r--drivers/pcmcia/i82365.c9
-rw-r--r--drivers/pcmcia/m32r_cfc.c7
-rw-r--r--drivers/pcmcia/m32r_pcc.c6
-rw-r--r--drivers/pcmcia/m8xx_pcmcia.c4
-rw-r--r--drivers/pcmcia/omap_cf.c2
-rw-r--r--drivers/pcmcia/pcmcia_resource.c2
-rw-r--r--drivers/pcmcia/pd6729.c6
-rw-r--r--drivers/pcmcia/soc_common.c2
-rw-r--r--drivers/pcmcia/tcic.c10
-rw-r--r--drivers/pcmcia/vrc4171_card.c2
-rw-r--r--drivers/pcmcia/vrc4173_cardu.c2
-rw-r--r--drivers/pcmcia/yenta_socket.c6
-rw-r--r--drivers/pnp/resource.c2
-rw-r--r--drivers/rtc/rtc-at91.c3
-rw-r--r--drivers/rtc/rtc-ds1553.c3
-rw-r--r--drivers/rtc/rtc-pl031.c2
-rw-r--r--drivers/rtc/rtc-s3c.c4
-rw-r--r--drivers/rtc/rtc-sa1100.c6
-rw-r--r--drivers/rtc/rtc-sh.c4
-rw-r--r--drivers/rtc/rtc-vr41xx.c4
-rw-r--r--drivers/s390/block/dasd_diag.c2
-rw-r--r--drivers/s390/char/ctrlchar.c2
-rw-r--r--drivers/s390/char/keyboard.c2
-rw-r--r--drivers/s390/char/monwriter.c10
-rw-r--r--drivers/s390/char/sclp.c4
-rw-r--r--drivers/s390/cio/chsc.c25
-rw-r--r--drivers/s390/cio/cio.c6
-rw-r--r--drivers/s390/crypto/ap_bus.c2
-rw-r--r--drivers/s390/net/iucv.c4
-rw-r--r--drivers/s390/scsi/zfcp_erp.c2
-rw-r--r--drivers/sbus/char/aurora.c4
-rw-r--r--drivers/sbus/char/bbc_i2c.c2
-rw-r--r--drivers/sbus/char/cpwatchdog.c4
-rw-r--r--drivers/sbus/char/openprom.c2
-rw-r--r--drivers/sbus/char/uctrl.c4
-rw-r--r--drivers/scsi/3w-9xxx.c2
-rw-r--r--drivers/scsi/3w-xxxx.c3
-rw-r--r--drivers/scsi/53c700.c2
-rw-r--r--drivers/scsi/53c700.h2
-rw-r--r--drivers/scsi/53c7xx.c6
-rw-r--r--drivers/scsi/BusLogic.c2
-rw-r--r--drivers/scsi/BusLogic.h2
-rw-r--r--drivers/scsi/NCR5380.c6
-rw-r--r--drivers/scsi/NCR5380.h2
-rw-r--r--drivers/scsi/NCR53C9x.c6
-rw-r--r--drivers/scsi/NCR53C9x.h2
-rw-r--r--drivers/scsi/NCR53c406a.c13
-rw-r--r--drivers/scsi/NCR_D700.c4
-rw-r--r--drivers/scsi/NCR_Q720.c4
-rw-r--r--drivers/scsi/a100u2w.c2
-rw-r--r--drivers/scsi/a2091.c2
-rw-r--r--drivers/scsi/a3000.c2
-rw-r--r--drivers/scsi/aacraid/rx.c4
-rw-r--r--drivers/scsi/aacraid/sa.c2
-rw-r--r--drivers/scsi/advansys.c10
-rw-r--r--drivers/scsi/aha152x.c13
-rw-r--r--drivers/scsi/aha1542.c12
-rw-r--r--drivers/scsi/aha1740.c3
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.c2
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.h2
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.c2
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.h2
-rw-r--r--drivers/scsi/aic7xxx_old.c14
-rw-r--r--drivers/scsi/aic94xx/aic94xx_hwi.c3
-rw-r--r--drivers/scsi/aic94xx/aic94xx_hwi.h2
-rw-r--r--drivers/scsi/amiga7xx.h2
-rw-r--r--drivers/scsi/arcmsr/arcmsr_hba.c3
-rw-r--r--drivers/scsi/arm/acornscsi.c5
-rw-r--r--drivers/scsi/arm/cumana_2.c3
-rw-r--r--drivers/scsi/arm/eesox.c3
-rw-r--r--drivers/scsi/arm/powertec.c4
-rw-r--r--drivers/scsi/atari_NCR5380.c2
-rw-r--r--drivers/scsi/atari_dma_emul.c4
-rw-r--r--drivers/scsi/atari_scsi.c10
-rw-r--r--drivers/scsi/atp870u.c2
-rw-r--r--drivers/scsi/bvme6000.h2
-rw-r--r--drivers/scsi/dc395x.c7
-rw-r--r--drivers/scsi/dec_esp.c12
-rw-r--r--drivers/scsi/dpt_i2o.c2
-rw-r--r--drivers/scsi/dpti.h2
-rw-r--r--drivers/scsi/eata.c5
-rw-r--r--drivers/scsi/eata_pio.c7
-rw-r--r--drivers/scsi/esp.c4
-rw-r--r--drivers/scsi/fd_mcs.c4
-rw-r--r--drivers/scsi/fdomain.c6
-rw-r--r--drivers/scsi/gdth.c6
-rw-r--r--drivers/scsi/gvp11.c2
-rw-r--r--drivers/scsi/hptiop.c2
-rw-r--r--drivers/scsi/ibmmca.c3
-rw-r--r--drivers/scsi/ibmvscsi/rpa_vscsi.c5
-rw-r--r--drivers/scsi/in2000.c2
-rw-r--r--drivers/scsi/initio.c2
-rw-r--r--drivers/scsi/ipr.c3
-rw-r--r--drivers/scsi/ips.c4
-rw-r--r--drivers/scsi/lpfc/lpfc_crtn.h2
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c2
-rw-r--r--drivers/scsi/mac53c94.c10
-rw-r--r--drivers/scsi/mac_esp.c14
-rw-r--r--drivers/scsi/megaraid.c6
-rw-r--r--drivers/scsi/megaraid.h4
-rw-r--r--drivers/scsi/megaraid/megaraid_mbox.c4
-rw-r--r--drivers/scsi/megaraid/megaraid_sas.c2
-rw-r--r--drivers/scsi/mesh.c12
-rw-r--r--drivers/scsi/mvme147.c2
-rw-r--r--drivers/scsi/mvme16x.h2
-rw-r--r--drivers/scsi/ncr53c8xx.c2
-rw-r--r--drivers/scsi/ncr53c8xx.h2
-rw-r--r--drivers/scsi/nsp32.c4
-rw-r--r--drivers/scsi/pcmcia/nsp_cs.c2
-rw-r--r--drivers/scsi/pcmcia/nsp_cs.h2
-rw-r--r--drivers/scsi/pcmcia/sym53c500_cs.c2
-rw-r--r--drivers/scsi/psi240i.c7
-rw-r--r--drivers/scsi/qla1280.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_dbg.h14
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h8
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_inline.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c9
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c8
-rw-r--r--drivers/scsi/qla4xxx/ql4_dbg.h4
-rw-r--r--drivers/scsi/qla4xxx/ql4_glbl.h4
-rw-r--r--drivers/scsi/qla4xxx/ql4_isr.c3
-rw-r--r--drivers/scsi/qla4xxx/ql4_mbx.c2
-rw-r--r--drivers/scsi/qla4xxx/ql4_os.c8
-rw-r--r--drivers/scsi/qlogicfas408.c8
-rw-r--r--drivers/scsi/qlogicfas408.h2
-rw-r--r--drivers/scsi/qlogicpti.c4
-rw-r--r--drivers/scsi/scsi_error.c2
-rw-r--r--drivers/scsi/seagate.c11
-rw-r--r--drivers/scsi/sgiwd93.c2
-rw-r--r--drivers/scsi/stex.c2
-rw-r--r--drivers/scsi/sun3_NCR5380.c2
-rw-r--r--drivers/scsi/sun3_scsi.c6
-rw-r--r--drivers/scsi/sun3_scsi_vme.c6
-rw-r--r--drivers/scsi/sym53c416.c3
-rw-r--r--drivers/scsi/sym53c8xx_2/sym_glue.c2
-rw-r--r--drivers/scsi/tmscsim.c8
-rw-r--r--drivers/scsi/u14-34f.c5
-rw-r--r--drivers/scsi/ultrastor.c13
-rw-r--r--drivers/scsi/wd7000.c2
-rw-r--r--drivers/serial/21285.c4
-rw-r--r--drivers/serial/68328serial.c9
-rw-r--r--drivers/serial/68360serial.c4
-rw-r--r--drivers/serial/8250.c14
-rw-r--r--drivers/serial/amba-pl010.c15
-rw-r--r--drivers/serial/amba-pl011.c15
-rw-r--r--drivers/serial/atmel_serial.c8
-rw-r--r--drivers/serial/clps711x.c6
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_core.c16
-rw-r--r--drivers/serial/crisv10.c6
-rw-r--r--drivers/serial/dz.c2
-rw-r--r--drivers/serial/icom.c3
-rw-r--r--drivers/serial/imx.c8
-rw-r--r--drivers/serial/ioc3_serial.c10
-rw-r--r--drivers/serial/ioc4_serial.c3
-rw-r--r--drivers/serial/ip22zilog.c18
-rw-r--r--drivers/serial/jsm/jsm.h2
-rw-r--r--drivers/serial/jsm/jsm_neo.c4
-rw-r--r--drivers/serial/m32r_sio.c16
-rw-r--r--drivers/serial/mcfserial.c2
-rw-r--r--drivers/serial/mpc52xx_uart.c20
-rw-r--r--drivers/serial/mpsc.c8
-rw-r--r--drivers/serial/mux.c2
-rw-r--r--drivers/serial/netx-serial.c10
-rw-r--r--drivers/serial/pmac_zilog.c17
-rw-r--r--drivers/serial/pxa.c12
-rw-r--r--drivers/serial/s3c2410.c6
-rw-r--r--drivers/serial/sa1100.c8
-rw-r--r--drivers/serial/serial_lh7a40x.c16
-rw-r--r--drivers/serial/serial_txx9.c8
-rw-r--r--drivers/serial/sh-sci.c33
-rw-r--r--drivers/serial/sn_console.c13
-rw-r--r--drivers/serial/sunhv.c10
-rw-r--r--drivers/serial/sunsab.c13
-rw-r--r--drivers/serial/sunsu.c19
-rw-r--r--drivers/serial/sunzilog.c33
-rw-r--r--drivers/serial/v850e_uart.c4
-rw-r--r--drivers/serial/vr41xx_siu.c9
-rw-r--r--drivers/sn/ioc3.c14
-rw-r--r--drivers/spi/pxa2xx_spi.c6
-rw-r--r--drivers/spi/spi_mpc83xx.c3
-rw-r--r--drivers/spi/spi_s3c24xx.c2
-rw-r--r--drivers/tc/zs.c8
-rw-r--r--drivers/usb/atm/cxacru.c2
-rw-r--r--drivers/usb/atm/speedtch.c2
-rw-r--r--drivers/usb/atm/ueagle-atm.c2
-rw-r--r--drivers/usb/atm/usbatm.c2
-rw-r--r--drivers/usb/class/cdc-acm.c6
-rw-r--r--drivers/usb/class/usblp.c4
-rw-r--r--drivers/usb/core/devio.c8
-rw-r--r--drivers/usb/core/hcd.c15
-rw-r--r--drivers/usb/core/hcd.h9
-rw-r--r--drivers/usb/core/hub.c2
-rw-r--r--drivers/usb/core/message.c4
-rw-r--r--drivers/usb/gadget/at91_udc.c4
-rw-r--r--drivers/usb/gadget/dummy_hcd.c2
-rw-r--r--drivers/usb/gadget/goku_udc.c2
-rw-r--r--drivers/usb/gadget/lh7a40x_udc.c2
-rw-r--r--drivers/usb/gadget/net2280.c2
-rw-r--r--drivers/usb/gadget/omap_udc.c9
-rw-r--r--drivers/usb/gadget/pxa2xx_udc.c11
-rw-r--r--drivers/usb/host/ehci-hcd.c26
-rw-r--r--drivers/usb/host/ehci-hub.c4
-rw-r--r--drivers/usb/host/ehci-pci.c4
-rw-r--r--drivers/usb/host/ehci-q.c21
-rw-r--r--drivers/usb/host/ehci-sched.c21
-rw-r--r--drivers/usb/host/hc_crisv10.c12
-rw-r--r--drivers/usb/host/isp116x-hcd.c16
-rw-r--r--drivers/usb/host/ohci-hcd.c14
-rw-r--r--drivers/usb/host/ohci-hub.c8
-rw-r--r--drivers/usb/host/ohci-q.c16
-rw-r--r--drivers/usb/host/sl811-hcd.c21
-rw-r--r--drivers/usb/host/u132-hcd.c8
-rw-r--r--drivers/usb/host/uhci-hcd.c8
-rw-r--r--drivers/usb/host/uhci-hub.c2
-rw-r--r--drivers/usb/host/uhci-q.c15
-rw-r--r--drivers/usb/image/mdc800.c6
-rw-r--r--drivers/usb/image/microtek.c10
-rw-r--r--drivers/usb/input/acecad.c2
-rw-r--r--drivers/usb/input/aiptek.c13
-rw-r--r--drivers/usb/input/appletouch.c2
-rw-r--r--drivers/usb/input/ati_remote.c17
-rw-r--r--drivers/usb/input/ati_remote2.c14
-rw-r--r--drivers/usb/input/hid-core.c28
-rw-r--r--drivers/usb/input/hid-input.c4
-rw-r--r--drivers/usb/input/hid.h4
-rw-r--r--drivers/usb/input/hiddev.c2
-rw-r--r--drivers/usb/input/itmtouch.c4
-rw-r--r--drivers/usb/input/kbtab.c2
-rw-r--r--drivers/usb/input/keyspan_remote.c7
-rw-r--r--drivers/usb/input/mtouchusb.c3
-rw-r--r--drivers/usb/input/powermate.c7
-rw-r--r--drivers/usb/input/touchkitusb.c15
-rw-r--r--drivers/usb/input/usbkbd.c6
-rw-r--r--drivers/usb/input/usbmouse.c4
-rw-r--r--drivers/usb/input/usbtouchscreen.c15
-rw-r--r--drivers/usb/input/wacom.h4
-rw-r--r--drivers/usb/input/wacom_sys.c9
-rw-r--r--drivers/usb/input/wacom_wac.c9
-rw-r--r--drivers/usb/input/xpad.c8
-rw-r--r--drivers/usb/input/yealink.c9
-rw-r--r--drivers/usb/misc/adutux.c4
-rw-r--r--drivers/usb/misc/appledisplay.c2
-rw-r--r--drivers/usb/misc/auerswald.c30
-rw-r--r--drivers/usb/misc/ftdi-elan.c2
-rw-r--r--drivers/usb/misc/ldusb.c4
-rw-r--r--drivers/usb/misc/legousbtower.c8
-rw-r--r--drivers/usb/misc/phidgetkit.c2
-rw-r--r--drivers/usb/misc/phidgetmotorcontrol.c2
-rw-r--r--drivers/usb/misc/sisusbvga/sisusb.c4
-rw-r--r--drivers/usb/misc/usblcd.c2
-rw-r--r--drivers/usb/misc/usbtest.c8
-rw-r--r--drivers/usb/misc/uss720.c4
-rw-r--r--drivers/usb/net/asix.c2
-rw-r--r--drivers/usb/net/catc.c8
-rw-r--r--drivers/usb/net/gl620a.c2
-rw-r--r--drivers/usb/net/kaweth.c10
-rw-r--r--drivers/usb/net/net1080.c2
-rw-r--r--drivers/usb/net/pegasus.c14
-rw-r--r--drivers/usb/net/rtl8150.c12
-rw-r--r--drivers/usb/net/usbnet.c10
-rw-r--r--drivers/usb/serial/aircable.c4
-rw-r--r--drivers/usb/serial/airprime.c4
-rw-r--r--drivers/usb/serial/belkin_sa.c4
-rw-r--r--drivers/usb/serial/cyberjack.c12
-rw-r--r--drivers/usb/serial/cypress_m8.c8
-rw-r--r--drivers/usb/serial/digi_acceleport.c8
-rw-r--r--drivers/usb/serial/empeg.c8
-rw-r--r--drivers/usb/serial/ftdi_sio.c8
-rw-r--r--drivers/usb/serial/garmin_gps.c6
-rw-r--r--drivers/usb/serial/generic.c4
-rw-r--r--drivers/usb/serial/io_edgeport.c16
-rw-r--r--drivers/usb/serial/io_ti.c6
-rw-r--r--drivers/usb/serial/ipaq.c8
-rw-r--r--drivers/usb/serial/ipw.c4
-rw-r--r--drivers/usb/serial/ir-usb.c8
-rw-r--r--drivers/usb/serial/keyspan.c52
-rw-r--r--drivers/usb/serial/keyspan_pda.c4
-rw-r--r--drivers/usb/serial/kl5kusb105.c8
-rw-r--r--drivers/usb/serial/kobil_sct.c8
-rw-r--r--drivers/usb/serial/mct_u232.c4
-rw-r--r--drivers/usb/serial/mos7840.c55
-rw-r--r--drivers/usb/serial/navman.c2
-rw-r--r--drivers/usb/serial/omninet.c8
-rw-r--r--drivers/usb/serial/option.c10
-rw-r--r--drivers/usb/serial/pl2303.c6
-rw-r--r--drivers/usb/serial/safe_serial.c2
-rw-r--r--drivers/usb/serial/ti_usb_3410_5052.c12
-rw-r--r--drivers/usb/serial/visor.c12
-rw-r--r--drivers/usb/serial/whiteheat.c16
-rw-r--r--drivers/usb/storage/onetouch.c3
-rw-r--r--drivers/usb/storage/transport.c2
-rw-r--r--drivers/usb/usb-skeleton.c2
-rw-r--r--drivers/video/amifb.c4
-rw-r--r--drivers/video/arcfb.c3
-rw-r--r--drivers/video/atafb.c2
-rw-r--r--drivers/video/aty/atyfb_base.c2
-rw-r--r--drivers/video/au1200fb.c2
-rw-r--r--drivers/video/console/fbcon.c4
-rw-r--r--drivers/video/intelfb/intelfbhw.c2
-rw-r--r--drivers/video/matrox/matroxfb_base.c2
-rw-r--r--drivers/video/pvr2fb.c4
-rw-r--r--drivers/video/pxafb.c2
-rw-r--r--drivers/video/s3c2410fb.c2
-rw-r--r--drivers/video/sa1100fb.c2
-rw-r--r--fs/befs/befs.h6
-rw-r--r--fs/befs/befs_fs_types.h112
-rw-r--r--fs/befs/btree.c29
-rw-r--r--fs/befs/datastream.c11
-rw-r--r--fs/befs/debug.c12
-rw-r--r--fs/befs/endian.h57
-rw-r--r--fs/befs/inode.c1
-rw-r--r--fs/befs/linuxvfs.c1
-rw-r--r--fs/befs/super.c1
-rw-r--r--fs/buffer.c5
-rw-r--r--fs/compat.c2
-rw-r--r--fs/dlm/lowcomms.c6
-rw-r--r--fs/dlm/lowcomms.h2
-rw-r--r--fs/fat/inode.c2
-rw-r--r--fs/hpfs/inode.c11
-rw-r--r--fs/hppfs/hppfs_kern.c2
-rw-r--r--fs/inode.c2
-rw-r--r--fs/isofs/joliet.c10
-rw-r--r--fs/ncpfs/ioctl.c2
-rw-r--r--fs/nfs/client.c24
-rw-r--r--fs/nfsd/nfssvc.c2
-rw-r--r--fs/partitions/msdos.c6
-rw-r--r--fs/proc/proc_misc.c2
-rw-r--r--fs/reiserfs/bitmap.c4
-rw-r--r--fs/udf/super.c3
-rw-r--r--fs/ufs/util.c14
-rw-r--r--fs/xattr.c33
-rw-r--r--include/acpi/aclocal.h2
-rw-r--r--include/asm-alpha/irq_regs.h1
-rw-r--r--include/asm-alpha/machvec.h5
-rw-r--r--include/asm-arm/arch-clps711x/time.h3
-rw-r--r--include/asm-arm/arch-imx/imx-dma.h8
-rw-r--r--include/asm-arm/arch-l7200/time.h3
-rw-r--r--include/asm-arm/arch-pnx4008/dma.h2
-rw-r--r--include/asm-arm/arch-pxa/dma.h2
-rw-r--r--include/asm-arm/arch-pxa/mmc.h2
-rw-r--r--include/asm-arm/hardware/sharpsl_pm.h6
-rw-r--r--include/asm-arm/hw_irq.h2
-rw-r--r--include/asm-arm/io.h2
-rw-r--r--include/asm-arm/irq_regs.h1
-rw-r--r--include/asm-arm/mach/irq.h9
-rw-r--r--include/asm-arm/mach/time.h4
-rw-r--r--include/asm-frv/dma.h5
-rw-r--r--include/asm-frv/irq_regs.h27
-rw-r--r--include/asm-frv/ptrace.h1
-rw-r--r--include/asm-generic/bug.h16
-rw-r--r--include/asm-generic/irq_regs.h37
-rw-r--r--include/asm-generic/percpu.h2
-rw-r--r--include/asm-i386/apic.h4
-rw-r--r--include/asm-i386/arch_hooks.h2
-rw-r--r--include/asm-i386/floppy.h6
-rw-r--r--include/asm-i386/hpet.h2
-rw-r--r--include/asm-i386/hw_irq.h5
-rw-r--r--include/asm-i386/irq_regs.h1
-rw-r--r--include/asm-i386/mach-default/do_timer.h8
-rw-r--r--include/asm-i386/mach-visws/do_timer.h8
-rw-r--r--include/asm-i386/mach-voyager/do_timer.h6
-rw-r--r--include/asm-i386/smp.h5
-rw-r--r--include/asm-i386/voyager.h4
-rw-r--r--include/asm-ia64/irq_regs.h1
-rw-r--r--include/asm-ia64/machvec.h4
-rw-r--r--include/asm-ia64/sn/pcibr_provider.h2
-rw-r--r--include/asm-ia64/sn/tioca_provider.h4
-rw-r--r--include/asm-ia64/sn/tioce_provider.h2
-rw-r--r--include/asm-ia64/sn/xpc.h2
-rw-r--r--include/asm-m32r/irq_regs.h1
-rw-r--r--include/asm-m68k/atari_stdma.h3
-rw-r--r--include/asm-m68k/dma-mapping.h7
-rw-r--r--include/asm-m68k/floppy.h10
-rw-r--r--include/asm-m68k/ide.h2
-rw-r--r--include/asm-m68k/irq.h11
-rw-r--r--include/asm-m68k/irq_regs.h1
-rw-r--r--include/asm-m68k/mac_iop.h6
-rw-r--r--include/asm-m68k/machdep.h2
-rw-r--r--include/asm-m68k/signal.h1
-rw-r--r--include/asm-m68k/string.h198
-rw-r--r--include/asm-m68k/sun3xflop.h7
-rw-r--r--include/asm-m68k/system.h6
-rw-r--r--include/asm-m68k/unistd.h31
-rw-r--r--include/asm-m68k/user.h2
-rw-r--r--include/asm-mips/dec/ecc.h3
-rw-r--r--include/asm-mips/dec/kn01.h3
-rw-r--r--include/asm-mips/dec/kn02xa.h3
-rw-r--r--include/asm-mips/fpu.h6
-rw-r--r--include/asm-mips/irq.h8
-rw-r--r--include/asm-mips/irq_regs.h21
-rw-r--r--include/asm-mips/jmr3927/irq.h4
-rw-r--r--include/asm-mips/mach-au1x00/au1000_dma.h3
-rw-r--r--include/asm-mips/mach-au1x00/au1000_usbdev.h73
-rw-r--r--include/asm-mips/marvell.h2
-rw-r--r--include/asm-mips/msc01_ic.h2
-rw-r--r--include/asm-mips/thread_info.h1
-rw-r--r--include/asm-mips/time.h8
-rw-r--r--include/asm-parisc/irq_regs.h1
-rw-r--r--include/asm-parisc/pdc.h2
-rw-r--r--include/asm-powerpc/i8259.h4
-rw-r--r--include/asm-powerpc/ibmebus.h2
-rw-r--r--include/asm-powerpc/ipic.h4
-rw-r--r--include/asm-powerpc/irq.h2
-rw-r--r--include/asm-powerpc/irq_regs.h2
-rw-r--r--include/asm-powerpc/iseries/hv_lp_event.h2
-rw-r--r--include/asm-powerpc/iseries/it_lp_queue.h2
-rw-r--r--include/asm-powerpc/machdep.h2
-rw-r--r--include/asm-powerpc/mpic.h4
-rw-r--r--include/asm-powerpc/reg.h2
-rw-r--r--include/asm-powerpc/smp.h3
-rw-r--r--include/asm-ppc/commproc.h3
-rw-r--r--include/asm-ppc/floppy.h6
-rw-r--r--include/asm-ppc/gt64260.h2
-rw-r--r--include/asm-ppc/machdep.h2
-rw-r--r--include/asm-ppc/mpc52xx.h2
-rw-r--r--include/asm-ppc/mv64x60.h4
-rw-r--r--include/asm-ppc/open_pic.h6
-rw-r--r--include/asm-ppc/smp.h2
-rw-r--r--include/asm-s390/hardirq.h2
-rw-r--r--include/asm-s390/irq_regs.h1
-rw-r--r--include/asm-s390/percpu.h4
-rw-r--r--include/asm-s390/s390_ext.h2
-rw-r--r--include/asm-sparc/floppy.h2
-rw-r--r--include/asm-sparc/irq.h6
-rw-r--r--include/asm-sparc/irq_regs.h1
-rw-r--r--include/asm-sparc/spinlock.h28
-rw-r--r--include/asm-sparc64/floppy.h8
-rw-r--r--include/asm-sparc64/irq_regs.h1
-rw-r--r--include/asm-um/irq_regs.h1
-rw-r--r--include/asm-x86_64/apic.h2
-rw-r--r--include/asm-x86_64/floppy.h6
-rw-r--r--include/asm-x86_64/genapic.h1
-rw-r--r--include/asm-x86_64/hw_irq.h2
-rw-r--r--include/asm-x86_64/irq_regs.h1
-rw-r--r--include/asm-x86_64/mach_apic.h1
-rw-r--r--include/asm-x86_64/percpu.h6
-rw-r--r--include/asm-x86_64/proto.h4
-rw-r--r--include/linux/adb.h4
-rw-r--r--include/linux/arcdevice.h2
-rw-r--r--include/linux/cdrom.h28
-rw-r--r--include/linux/compat.h2
-rw-r--r--include/linux/config.h9
-rw-r--r--include/linux/dccp.h2
-rw-r--r--include/linux/hiddev.h4
-rw-r--r--include/linux/ide.h2
-rw-r--r--include/linux/if_vlan.h2
-rw-r--r--include/linux/input.h7
-rw-r--r--include/linux/interrupt.h9
-rw-r--r--include/linux/io.h1
-rw-r--r--include/linux/ioc3.h2
-rw-r--r--include/linux/ioc4.h2
-rw-r--r--include/linux/irq.h66
-rw-r--r--include/linux/istallion.h4
-rw-r--r--include/linux/libata.h4
-rw-r--r--include/linux/mm.h1
-rw-r--r--include/linux/mmc/protocol.h1
-rw-r--r--include/linux/parport.h16
-rw-r--r--include/linux/percpu.h2
-rw-r--r--include/linux/profile.h2
-rw-r--r--include/linux/rtc.h2
-rw-r--r--include/linux/sched.h7
-rw-r--r--include/linux/serial_core.h7
-rw-r--r--include/linux/serio.h5
-rw-r--r--include/linux/smb_fs.h12
-rw-r--r--include/linux/sunrpc/svc.h3
-rw-r--r--include/linux/syscalls.h2
-rw-r--r--include/linux/sysrq.h6
-rw-r--r--include/linux/tifm.h1
-rw-r--r--include/linux/timex.h3
-rw-r--r--include/linux/ufs_fs.h10
-rw-r--r--include/linux/usb.h3
-rw-r--r--include/linux/usb/serial.h12
-rw-r--r--include/linux/xattr.h1
-rw-r--r--include/sound/core.h4
-rw-r--r--include/sound/cs4231.h2
-rw-r--r--include/sound/emu10k1.h2
-rw-r--r--include/sound/gus.h2
-rw-r--r--include/sound/initval.h2
-rw-r--r--include/sound/mpu401.h6
-rw-r--r--include/sound/sb.h6
-rw-r--r--include/sound/version.h6
-rw-r--r--include/sound/vx_core.h2
-rw-r--r--kernel/audit.c3
-rw-r--r--kernel/cpuset.c2
-rw-r--r--kernel/futex.c15
-rw-r--r--kernel/futex_compat.c12
-rw-r--r--kernel/irq/chip.c48
-rw-r--r--kernel/irq/handle.c19
-rw-r--r--kernel/irq/manage.c4
-rw-r--r--kernel/irq/resend.c2
-rw-r--r--kernel/irq/spurious.c10
-rw-r--r--kernel/power/poweroff.c3
-rw-r--r--kernel/power/user.c2
-rw-r--r--kernel/profile.c5
-rw-r--r--kernel/relay.c41
-rw-r--r--lib/Makefile2
-rw-r--r--lib/irq_regs.c17
-rw-r--r--lib/radix-tree.c6
-rw-r--r--mm/memory.c9
-rw-r--r--mm/slab.c35
-rw-r--r--net/8021q/vlan_dev.c2
-rw-r--r--net/ipv4/ipvs/ip_vs_ftp.c2
-rw-r--r--net/irda/irias_object.c2
-rw-r--r--net/sunrpc/auth_gss/svcauth_gss.c5
-rw-r--r--net/sunrpc/svc.c17
-rw-r--r--net/sunrpc/svcsock.c28
-rw-r--r--net/tipc/socket.c6
-rw-r--r--sound/aoa/core/snd-aoa-gpio-feature.c4
-rw-r--r--sound/aoa/soundbus/i2sbus/i2sbus-core.c5
-rw-r--r--sound/aoa/soundbus/i2sbus/i2sbus-pcm.c4
-rw-r--r--sound/aoa/soundbus/i2sbus/i2sbus.h4
-rw-r--r--sound/arm/aaci.c2
-rw-r--r--sound/arm/pxa2xx-ac97.c2
-rw-r--r--sound/arm/pxa2xx-pcm.c2
-rw-r--r--sound/core/hwdep.c3
-rw-r--r--sound/core/hwdep_compat.c2
-rw-r--r--sound/core/init.c92
-rw-r--r--sound/drivers/mpu401/mpu401_uart.c8
-rw-r--r--sound/drivers/mtpav.c2
-rw-r--r--sound/drivers/mts64.c2
-rw-r--r--sound/drivers/serial-u16550.c2
-rw-r--r--sound/drivers/vx/vx_core.c2
-rw-r--r--sound/isa/ad1816a/ad1816a_lib.c2
-rw-r--r--sound/isa/ad1848/ad1848_lib.c2
-rw-r--r--sound/isa/cs423x/cs4231_lib.c2
-rw-r--r--sound/isa/es1688/es1688_lib.c2
-rw-r--r--sound/isa/es18xx.c5
-rw-r--r--sound/isa/gus/gus_irq.c2
-rw-r--r--sound/isa/gus/gusmax.c8
-rw-r--r--sound/isa/gus/interwave.c8
-rw-r--r--sound/isa/opl3sa2.c6
-rw-r--r--sound/isa/opti9xx/opti92x-ad1848.c2
-rw-r--r--sound/isa/sb/es968.c3
-rw-r--r--sound/isa/sb/sb16_main.c4
-rw-r--r--sound/isa/sb/sb8.c2
-rw-r--r--sound/isa/sb/sb_common.c2
-rw-r--r--sound/isa/sgalaxy.c2
-rw-r--r--sound/isa/wavefront/wavefront.c4
-rw-r--r--sound/mips/au1x00.c2
-rw-r--r--sound/oss/ad1816.c2
-rw-r--r--sound/oss/ad1848.c4
-rw-r--r--sound/oss/ad1889.c2
-rw-r--r--sound/oss/btaudio.c2
-rw-r--r--sound/oss/cs46xx.c2
-rw-r--r--sound/oss/dmasound/dmasound_atari.c4
-rw-r--r--sound/oss/dmasound/dmasound_awacs.c18
-rw-r--r--sound/oss/dmasound/dmasound_paula.c4
-rw-r--r--sound/oss/dmasound/dmasound_q40.c8
-rw-r--r--sound/oss/emu10k1/irqmgr.c2
-rw-r--r--sound/oss/emu10k1/main.c2
-rw-r--r--sound/oss/es1371.c4
-rw-r--r--sound/oss/hal2.c4
-rw-r--r--sound/oss/i810_audio.c4
-rw-r--r--sound/oss/mpu401.c4
-rw-r--r--sound/oss/mpu401.h3
-rw-r--r--sound/oss/msnd_pinnacle.c2
-rw-r--r--sound/oss/nec_vrc5477.c2
-rw-r--r--sound/oss/nm256.h2
-rw-r--r--sound/oss/nm256_audio.c8
-rw-r--r--sound/oss/pas2_card.c2
-rw-r--r--sound/oss/sb_common.c4
-rw-r--r--sound/oss/sh_dac_audio.c2
-rw-r--r--sound/oss/swarm_cs4297a.c2
-rw-r--r--sound/oss/trident.c2
-rw-r--r--sound/oss/uart401.c2
-rw-r--r--sound/oss/uart6850.c2
-rw-r--r--sound/oss/via82cxxx_audio.c6
-rw-r--r--sound/oss/vidc.c2
-rw-r--r--sound/oss/vidc.h2
-rw-r--r--sound/oss/vwsnd.c6
-rw-r--r--sound/oss/waveartist.c2
-rw-r--r--sound/parisc/harmony.c2
-rw-r--r--sound/pci/ac97/ac97_patch.c7
-rw-r--r--sound/pci/ad1889.c4
-rw-r--r--sound/pci/ali5451/ali5451.c4
-rw-r--r--sound/pci/als300.c6
-rw-r--r--sound/pci/als4000.c4
-rw-r--r--sound/pci/atiixp.c2
-rw-r--r--sound/pci/atiixp_modem.c2
-rw-r--r--sound/pci/au88x0/au88x0.c1
-rw-r--r--sound/pci/au88x0/au88x0.h3
-rw-r--r--sound/pci/au88x0/au88x0_core.c4
-rw-r--r--sound/pci/azt3328.c4
-rw-r--r--sound/pci/bt87x.c2
-rw-r--r--sound/pci/ca0106/ca0106_main.c3
-rw-r--r--sound/pci/cmipci.c4
-rw-r--r--sound/pci/cs4281.c4
-rw-r--r--sound/pci/cs46xx/cs46xx_lib.c2
-rw-r--r--sound/pci/cs5535audio/cs5535audio.c3
-rw-r--r--sound/pci/echoaudio/echoaudio.c3
-rw-r--r--sound/pci/emu10k1/emu10k1_main.c4
-rw-r--r--sound/pci/emu10k1/emu10k1x.c3
-rw-r--r--sound/pci/emu10k1/irq.c2
-rw-r--r--sound/pci/ens1370.c4
-rw-r--r--sound/pci/es1938.c6
-rw-r--r--sound/pci/es1968.c6
-rw-r--r--sound/pci/fm801.c4
-rw-r--r--sound/pci/hda/hda_intel.c3
-rw-r--r--sound/pci/hda/patch_realtek.c4
-rw-r--r--sound/pci/hda/patch_si3054.c5
-rw-r--r--sound/pci/ice1712/ice1712.c6
-rw-r--r--sound/pci/ice1712/ice1724.c4
-rw-r--r--sound/pci/intel8x0.c2
-rw-r--r--sound/pci/intel8x0m.c2
-rw-r--r--sound/pci/korg1212/korg1212.c6
-rw-r--r--sound/pci/maestro3.c3
-rw-r--r--sound/pci/mixart/mixart_core.c2
-rw-r--r--sound/pci/mixart/mixart_core.h2
-rw-r--r--sound/pci/nm256/nm256.c6
-rw-r--r--sound/pci/pcxhr/pcxhr_core.c2
-rw-r--r--sound/pci/pcxhr/pcxhr_core.h2
-rw-r--r--sound/pci/riptide/riptide.c5
-rw-r--r--sound/pci/rme32.c3
-rw-r--r--sound/pci/rme96.c3
-rw-r--r--sound/pci/rme9652/hdsp.c2
-rw-r--r--sound/pci/rme9652/hdspm.c3
-rw-r--r--sound/pci/rme9652/rme9652.c2
-rw-r--r--sound/pci/sonicvibes.c4
-rw-r--r--sound/pci/trident/trident_main.c7
-rw-r--r--sound/pci/via82xx.c6
-rw-r--r--sound/pci/via82xx_modem.c2
-rw-r--r--sound/pci/ymfpci/ymfpci_main.c4
-rw-r--r--sound/pcmcia/pdaudiocf/pdaudiocf.h2
-rw-r--r--sound/pcmcia/pdaudiocf/pdaudiocf_irq.c5
-rw-r--r--sound/ppc/pmac.c6
-rw-r--r--sound/ppc/tumbler.c2
-rw-r--r--sound/sparc/amd7930.c2
-rw-r--r--sound/sparc/cs4231.c2
-rw-r--r--sound/sparc/dbri.c3
-rw-r--r--sound/usb/usbaudio.c4
-rw-r--r--sound/usb/usbmidi.c4
-rw-r--r--sound/usb/usbmixer.c5
-rw-r--r--sound/usb/usx2y/usbusx2y.c4
-rw-r--r--sound/usb/usx2y/usbusx2yaudio.c28
-rw-r--r--sound/usb/usx2y/usx2yhwdeppcm.c23
1719 files changed, 8372 insertions, 8893 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 17becb9b1a96..931e6e40c08b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -641,7 +641,7 @@ CALGARY x86-64 IOMMU
641P: Muli Ben-Yehuda 641P: Muli Ben-Yehuda
642M: muli@il.ibm.com 642M: muli@il.ibm.com
643P: Jon D. Mason 643P: Jon D. Mason
644M: jdmason@us.ibm.com 644M: jdmason@kudzu.us
645L: linux-kernel@vger.kernel.org 645L: linux-kernel@vger.kernel.org
646L: discuss@x86-64.org 646L: discuss@x86-64.org
647S: Maintained 647S: Maintained
@@ -2261,6 +2261,17 @@ T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
2261T: cvs cvs.parisc-linux.org:/var/cvs/linux-2.6 2261T: cvs cvs.parisc-linux.org:/var/cvs/linux-2.6
2262S: Maintained 2262S: Maintained
2263 2263
2264PC87360 HARDWARE MONITORING DRIVER
2265P: Jim Cromie
2266M: jim.cromie@gmail.com
2267L: lm-sensors@lm-sensors.org
2268S: Maintained
2269
2270PC8736x GPIO DRIVER
2271P: Jim Cromie
2272M: jim.cromie@gmail.com
2273S: Maintained
2274
2264PCI ERROR RECOVERY 2275PCI ERROR RECOVERY
2265P: Linas Vepstas 2276P: Linas Vepstas
2266M: linas@austin.ibm.com 2277M: linas@austin.ibm.com
@@ -2592,10 +2603,19 @@ L: lksctp-developers@lists.sourceforge.net
2592S: Supported 2603S: Supported
2593 2604
2594SCx200 CPU SUPPORT 2605SCx200 CPU SUPPORT
2595P: Christer Weinigel 2606P: Jim Cromie
2596M: christer@weinigel.se 2607M: jim.cromie@gmail.com
2597W: http://www.weinigel.se 2608S: Odd Fixes
2598S: Supported 2609
2610SCx200 GPIO DRIVER
2611P: Jim Cromie
2612M: jim.cromie@gmail.com
2613S: Maintained
2614
2615SCx200 HRT CLOCKSOURCE DRIVER
2616P: Jim Cromie
2617M: jim.cromie@gmail.com
2618S: Maintained
2599 2619
2600SECURITY CONTACT 2620SECURITY CONTACT
2601P: Security Officers 2621P: Security Officers
@@ -2760,14 +2780,7 @@ S: Maintained
2760UltraSPARC (sparc64): 2780UltraSPARC (sparc64):
2761P: David S. Miller 2781P: David S. Miller
2762M: davem@davemloft.net 2782M: davem@davemloft.net
2763P: Eddie C. Dost
2764M: ecd@brainaid.de
2765P: Jakub Jelinek
2766M: jj@sunsite.ms.mff.cuni.cz
2767P: Anton Blanchard
2768M: anton@samba.org
2769L: sparclinux@vger.kernel.org 2783L: sparclinux@vger.kernel.org
2770L: ultralinux@vger.kernel.org
2771T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git 2784T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
2772S: Maintained 2785S: Maintained
2773 2786
diff --git a/arch/alpha/kernel/core_apecs.c b/arch/alpha/kernel/core_apecs.c
index a27ba12ba35e..ca46b2c24457 100644
--- a/arch/alpha/kernel/core_apecs.c
+++ b/arch/alpha/kernel/core_apecs.c
@@ -387,8 +387,7 @@ apecs_pci_clr_err(void)
387} 387}
388 388
389void 389void
390apecs_machine_check(unsigned long vector, unsigned long la_ptr, 390apecs_machine_check(unsigned long vector, unsigned long la_ptr)
391 struct pt_regs * regs)
392{ 391{
393 struct el_common *mchk_header; 392 struct el_common *mchk_header;
394 struct el_apecs_procdata *mchk_procdata; 393 struct el_apecs_procdata *mchk_procdata;
@@ -412,7 +411,7 @@ apecs_machine_check(unsigned long vector, unsigned long la_ptr,
412 wrmces(0x7); /* reset machine check pending flag */ 411 wrmces(0x7); /* reset machine check pending flag */
413 mb(); 412 mb();
414 413
415 process_mcheck_info(vector, la_ptr, regs, "APECS", 414 process_mcheck_info(vector, la_ptr, "APECS",
416 (mcheck_expected(0) 415 (mcheck_expected(0)
417 && (mchk_sysdata->epic_dcsr & 0x0c00UL))); 416 && (mchk_sysdata->epic_dcsr & 0x0c00UL)));
418} 417}
diff --git a/arch/alpha/kernel/core_cia.c b/arch/alpha/kernel/core_cia.c
index fd563064363c..1d6ee6c985f9 100644
--- a/arch/alpha/kernel/core_cia.c
+++ b/arch/alpha/kernel/core_cia.c
@@ -1192,8 +1192,7 @@ cia_decode_mchk(unsigned long la_ptr)
1192} 1192}
1193 1193
1194void 1194void
1195cia_machine_check(unsigned long vector, unsigned long la_ptr, 1195cia_machine_check(unsigned long vector, unsigned long la_ptr)
1196 struct pt_regs * regs)
1197{ 1196{
1198 int expected; 1197 int expected;
1199 1198
@@ -1208,5 +1207,5 @@ cia_machine_check(unsigned long vector, unsigned long la_ptr,
1208 expected = mcheck_expected(0); 1207 expected = mcheck_expected(0);
1209 if (!expected && vector == 0x660) 1208 if (!expected && vector == 0x660)
1210 expected = cia_decode_mchk(la_ptr); 1209 expected = cia_decode_mchk(la_ptr);
1211 process_mcheck_info(vector, la_ptr, regs, "CIA", expected); 1210 process_mcheck_info(vector, la_ptr, "CIA", expected);
1212} 1211}
diff --git a/arch/alpha/kernel/core_lca.c b/arch/alpha/kernel/core_lca.c
index 6a5a9145c676..4843f6ec9f3a 100644
--- a/arch/alpha/kernel/core_lca.c
+++ b/arch/alpha/kernel/core_lca.c
@@ -19,6 +19,7 @@
19#include <linux/tty.h> 19#include <linux/tty.h>
20 20
21#include <asm/ptrace.h> 21#include <asm/ptrace.h>
22#include <asm/irq_regs.h>
22#include <asm/smp.h> 23#include <asm/smp.h>
23 24
24#include "proto.h" 25#include "proto.h"
@@ -386,8 +387,7 @@ ioc_error(__u32 stat0, __u32 stat1)
386} 387}
387 388
388void 389void
389lca_machine_check(unsigned long vector, unsigned long la_ptr, 390lca_machine_check(unsigned long vector, unsigned long la_ptr)
390 struct pt_regs *regs)
391{ 391{
392 const char * reason; 392 const char * reason;
393 union el_lca el; 393 union el_lca el;
@@ -397,7 +397,7 @@ lca_machine_check(unsigned long vector, unsigned long la_ptr,
397 wrmces(rdmces()); /* reset machine check pending flag */ 397 wrmces(rdmces()); /* reset machine check pending flag */
398 398
399 printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n", 399 printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n",
400 vector, regs->pc, (unsigned int) el.c->code); 400 vector, get_irq_regs()->pc, (unsigned int) el.c->code);
401 401
402 /* 402 /*
403 * The first quadword after the common header always seems to 403 * The first quadword after the common header always seems to
diff --git a/arch/alpha/kernel/core_mcpcia.c b/arch/alpha/kernel/core_mcpcia.c
index 28849c894153..8d019071190a 100644
--- a/arch/alpha/kernel/core_mcpcia.c
+++ b/arch/alpha/kernel/core_mcpcia.c
@@ -572,8 +572,7 @@ mcpcia_print_system_area(unsigned long la_ptr)
572} 572}
573 573
574void 574void
575mcpcia_machine_check(unsigned long vector, unsigned long la_ptr, 575mcpcia_machine_check(unsigned long vector, unsigned long la_ptr)
576 struct pt_regs * regs)
577{ 576{
578 struct el_common *mchk_header; 577 struct el_common *mchk_header;
579 struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout; 578 struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout;
@@ -610,7 +609,7 @@ mcpcia_machine_check(unsigned long vector, unsigned long la_ptr,
610 wrmces(0x7); 609 wrmces(0x7);
611 mb(); 610 mb();
612 611
613 process_mcheck_info(vector, la_ptr, regs, "MCPCIA", expected != 0); 612 process_mcheck_info(vector, la_ptr, "MCPCIA", expected != 0);
614 if (!expected && vector != 0x620 && vector != 0x630) { 613 if (!expected && vector != 0x620 && vector != 0x630) {
615 mcpcia_print_uncorrectable(mchk_logout); 614 mcpcia_print_uncorrectable(mchk_logout);
616 mcpcia_print_system_area(la_ptr); 615 mcpcia_print_system_area(la_ptr);
diff --git a/arch/alpha/kernel/core_polaris.c b/arch/alpha/kernel/core_polaris.c
index 277674a500ff..c5a271d37abd 100644
--- a/arch/alpha/kernel/core_polaris.c
+++ b/arch/alpha/kernel/core_polaris.c
@@ -187,8 +187,7 @@ polaris_pci_clr_err(void)
187} 187}
188 188
189void 189void
190polaris_machine_check(unsigned long vector, unsigned long la_ptr, 190polaris_machine_check(unsigned long vector, unsigned long la_ptr)
191 struct pt_regs * regs)
192{ 191{
193 /* Clear the error before any reporting. */ 192 /* Clear the error before any reporting. */
194 mb(); 193 mb();
@@ -198,6 +197,6 @@ polaris_machine_check(unsigned long vector, unsigned long la_ptr,
198 wrmces(0x7); 197 wrmces(0x7);
199 mb(); 198 mb();
200 199
201 process_mcheck_info(vector, la_ptr, regs, "POLARIS", 200 process_mcheck_info(vector, la_ptr, "POLARIS",
202 mcheck_expected(0)); 201 mcheck_expected(0));
203} 202}
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c
index ecce09e3626a..f5ca5255eb06 100644
--- a/arch/alpha/kernel/core_t2.c
+++ b/arch/alpha/kernel/core_t2.c
@@ -551,8 +551,7 @@ t2_clear_errors(int cpu)
551 * Hence all the taken/expected/any_expected/last_taken stuff... 551 * Hence all the taken/expected/any_expected/last_taken stuff...
552 */ 552 */
553void 553void
554t2_machine_check(unsigned long vector, unsigned long la_ptr, 554t2_machine_check(unsigned long vector, unsigned long la_ptr)
555 struct pt_regs * regs)
556{ 555{
557 int cpu = smp_processor_id(); 556 int cpu = smp_processor_id();
558#ifdef CONFIG_VERBOSE_MCHECK 557#ifdef CONFIG_VERBOSE_MCHECK
@@ -618,5 +617,5 @@ t2_machine_check(unsigned long vector, unsigned long la_ptr,
618 } 617 }
619#endif 618#endif
620 619
621 process_mcheck_info(vector, la_ptr, regs, "T2", mcheck_expected(cpu)); 620 process_mcheck_info(vector, la_ptr, "T2", mcheck_expected(cpu));
622} 621}
diff --git a/arch/alpha/kernel/core_tsunami.c b/arch/alpha/kernel/core_tsunami.c
index 8aa305bd6a2c..ce623c6e55e1 100644
--- a/arch/alpha/kernel/core_tsunami.c
+++ b/arch/alpha/kernel/core_tsunami.c
@@ -443,8 +443,7 @@ tsunami_pci_clr_err(void)
443} 443}
444 444
445void 445void
446tsunami_machine_check(unsigned long vector, unsigned long la_ptr, 446tsunami_machine_check(unsigned long vector, unsigned long la_ptr)
447 struct pt_regs * regs)
448{ 447{
449 /* Clear error before any reporting. */ 448 /* Clear error before any reporting. */
450 mb(); 449 mb();
@@ -454,6 +453,6 @@ tsunami_machine_check(unsigned long vector, unsigned long la_ptr,
454 wrmces(0x7); 453 wrmces(0x7);
455 mb(); 454 mb();
456 455
457 process_mcheck_info(vector, la_ptr, regs, "TSUNAMI", 456 process_mcheck_info(vector, la_ptr, "TSUNAMI",
458 mcheck_expected(smp_processor_id())); 457 mcheck_expected(smp_processor_id()));
459} 458}
diff --git a/arch/alpha/kernel/core_wildfire.c b/arch/alpha/kernel/core_wildfire.c
index 2b767a1bad96..7e072443d7fd 100644
--- a/arch/alpha/kernel/core_wildfire.c
+++ b/arch/alpha/kernel/core_wildfire.c
@@ -322,8 +322,7 @@ wildfire_init_arch(void)
322} 322}
323 323
324void 324void
325wildfire_machine_check(unsigned long vector, unsigned long la_ptr, 325wildfire_machine_check(unsigned long vector, unsigned long la_ptr)
326 struct pt_regs * regs)
327{ 326{
328 mb(); 327 mb();
329 mb(); /* magic */ 328 mb(); /* magic */
@@ -332,7 +331,7 @@ wildfire_machine_check(unsigned long vector, unsigned long la_ptr,
332 wrmces(0x7); 331 wrmces(0x7);
333 mb(); 332 mb();
334 333
335 process_mcheck_info(vector, la_ptr, regs, "WILDFIRE", 334 process_mcheck_info(vector, la_ptr, "WILDFIRE",
336 mcheck_expected(smp_processor_id())); 335 mcheck_expected(smp_processor_id()));
337} 336}
338 337
diff --git a/arch/alpha/kernel/err_ev6.c b/arch/alpha/kernel/err_ev6.c
index 64f59f2fcf5c..69b5f4ea7355 100644
--- a/arch/alpha/kernel/err_ev6.c
+++ b/arch/alpha/kernel/err_ev6.c
@@ -11,6 +11,7 @@
11#include <linux/sched.h> 11#include <linux/sched.h>
12 12
13#include <asm/io.h> 13#include <asm/io.h>
14#include <asm/irq_regs.h>
14#include <asm/hwrpb.h> 15#include <asm/hwrpb.h>
15#include <asm/smp.h> 16#include <asm/smp.h>
16#include <asm/err_common.h> 17#include <asm/err_common.h>
@@ -229,7 +230,7 @@ ev6_process_logout_frame(struct el_common *mchk_header, int print)
229} 230}
230 231
231void 232void
232ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 233ev6_machine_check(u64 vector, u64 la_ptr)
233{ 234{
234 struct el_common *mchk_header = (struct el_common *)la_ptr; 235 struct el_common *mchk_header = (struct el_common *)la_ptr;
235 236
@@ -260,7 +261,7 @@ ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
260 (unsigned int)vector, (int)smp_processor_id()); 261 (unsigned int)vector, (int)smp_processor_id());
261 262
262 ev6_process_logout_frame(mchk_header, 1); 263 ev6_process_logout_frame(mchk_header, 1);
263 dik_show_regs(regs, NULL); 264 dik_show_regs(get_irq_regs(), NULL);
264 265
265 err_print_prefix = saved_err_prefix; 266 err_print_prefix = saved_err_prefix;
266 } 267 }
diff --git a/arch/alpha/kernel/err_ev7.c b/arch/alpha/kernel/err_ev7.c
index fed6b3d1b803..95463ab1cf35 100644
--- a/arch/alpha/kernel/err_ev7.c
+++ b/arch/alpha/kernel/err_ev7.c
@@ -118,7 +118,7 @@ ev7_collect_logout_frame_subpackets(struct el_subpacket *el_ptr,
118} 118}
119 119
120void 120void
121ev7_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 121ev7_machine_check(u64 vector, u64 la_ptr)
122{ 122{
123 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; 123 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
124 char *saved_err_prefix = err_print_prefix; 124 char *saved_err_prefix = err_print_prefix;
diff --git a/arch/alpha/kernel/err_impl.h b/arch/alpha/kernel/err_impl.h
index 64e9b73809fa..3c12258158e6 100644
--- a/arch/alpha/kernel/err_impl.h
+++ b/arch/alpha/kernel/err_impl.h
@@ -60,26 +60,26 @@ extern struct ev7_lf_subpackets *
60ev7_collect_logout_frame_subpackets(struct el_subpacket *, 60ev7_collect_logout_frame_subpackets(struct el_subpacket *,
61 struct ev7_lf_subpackets *); 61 struct ev7_lf_subpackets *);
62extern void ev7_register_error_handlers(void); 62extern void ev7_register_error_handlers(void);
63extern void ev7_machine_check(u64, u64, struct pt_regs *); 63extern void ev7_machine_check(u64, u64);
64 64
65/* 65/*
66 * err_ev6.c 66 * err_ev6.c
67 */ 67 */
68extern void ev6_register_error_handlers(void); 68extern void ev6_register_error_handlers(void);
69extern int ev6_process_logout_frame(struct el_common *, int); 69extern int ev6_process_logout_frame(struct el_common *, int);
70extern void ev6_machine_check(u64, u64, struct pt_regs *); 70extern void ev6_machine_check(u64, u64);
71 71
72/* 72/*
73 * err_marvel.c 73 * err_marvel.c
74 */ 74 */
75extern void marvel_machine_check(u64, u64, struct pt_regs *); 75extern void marvel_machine_check(u64, u64);
76extern void marvel_register_error_handlers(void); 76extern void marvel_register_error_handlers(void);
77 77
78/* 78/*
79 * err_titan.c 79 * err_titan.c
80 */ 80 */
81extern int titan_process_logout_frame(struct el_common *, int); 81extern int titan_process_logout_frame(struct el_common *, int);
82extern void titan_machine_check(u64, u64, struct pt_regs *); 82extern void titan_machine_check(u64, u64);
83extern void titan_register_error_handlers(void); 83extern void titan_register_error_handlers(void);
84extern int privateer_process_logout_frame(struct el_common *, int); 84extern int privateer_process_logout_frame(struct el_common *, int);
85extern void privateer_machine_check(u64, u64, struct pt_regs *); 85extern void privateer_machine_check(u64, u64);
diff --git a/arch/alpha/kernel/err_marvel.c b/arch/alpha/kernel/err_marvel.c
index 70b38b1d2af3..f2956ac8dccc 100644
--- a/arch/alpha/kernel/err_marvel.c
+++ b/arch/alpha/kernel/err_marvel.c
@@ -1042,7 +1042,7 @@ marvel_process_logout_frame(struct ev7_lf_subpackets *lf_subpackets, int print)
1042} 1042}
1043 1043
1044void 1044void
1045marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 1045marvel_machine_check(u64 vector, u64 la_ptr)
1046{ 1046{
1047 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; 1047 struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr;
1048 int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL; 1048 int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL;
@@ -1077,7 +1077,7 @@ marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
1077 1077
1078 default: 1078 default:
1079 /* Don't know it - pass it up. */ 1079 /* Don't know it - pass it up. */
1080 ev7_machine_check(vector, la_ptr, regs); 1080 ev7_machine_check(vector, la_ptr);
1081 return; 1081 return;
1082 } 1082 }
1083 1083
diff --git a/arch/alpha/kernel/err_titan.c b/arch/alpha/kernel/err_titan.c
index 7e6720d45f02..febe71c6869f 100644
--- a/arch/alpha/kernel/err_titan.c
+++ b/arch/alpha/kernel/err_titan.c
@@ -379,7 +379,7 @@ titan_process_logout_frame(struct el_common *mchk_header, int print)
379} 379}
380 380
381void 381void
382titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 382titan_machine_check(u64 vector, u64 la_ptr)
383{ 383{
384 struct el_common *mchk_header = (struct el_common *)la_ptr; 384 struct el_common *mchk_header = (struct el_common *)la_ptr;
385 struct el_TITAN_sysdata_mcheck *tmchk = 385 struct el_TITAN_sysdata_mcheck *tmchk =
@@ -408,7 +408,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
408 * Only handle system errors here 408 * Only handle system errors here
409 */ 409 */
410 if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) { 410 if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) {
411 ev6_machine_check(vector, la_ptr, regs); 411 ev6_machine_check(vector, la_ptr);
412 return; 412 return;
413 } 413 }
414 414
@@ -442,7 +442,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
442#ifdef CONFIG_VERBOSE_MCHECK 442#ifdef CONFIG_VERBOSE_MCHECK
443 titan_process_logout_frame(mchk_header, alpha_verbose_mcheck); 443 titan_process_logout_frame(mchk_header, alpha_verbose_mcheck);
444 if (alpha_verbose_mcheck) 444 if (alpha_verbose_mcheck)
445 dik_show_regs(regs, NULL); 445 dik_show_regs(get_irq_regs(), NULL);
446#endif /* CONFIG_VERBOSE_MCHECK */ 446#endif /* CONFIG_VERBOSE_MCHECK */
447 447
448 err_print_prefix = saved_err_prefix; 448 err_print_prefix = saved_err_prefix;
@@ -452,7 +452,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
452 * machine checks to interrupts 452 * machine checks to interrupts
453 */ 453 */
454 irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK; 454 irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK;
455 titan_dispatch_irqs(irqmask, regs); 455 titan_dispatch_irqs(irqmask);
456 } 456 }
457 457
458 458
@@ -701,7 +701,7 @@ privateer_process_logout_frame(struct el_common *mchk_header, int print)
701} 701}
702 702
703void 703void
704privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) 704privateer_machine_check(u64 vector, u64 la_ptr)
705{ 705{
706 struct el_common *mchk_header = (struct el_common *)la_ptr; 706 struct el_common *mchk_header = (struct el_common *)la_ptr;
707 struct el_TITAN_sysdata_mcheck *tmchk = 707 struct el_TITAN_sysdata_mcheck *tmchk =
@@ -723,7 +723,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
723 * Only handle system events here. 723 * Only handle system events here.
724 */ 724 */
725 if (vector != SCB_Q_SYSEVENT) 725 if (vector != SCB_Q_SYSEVENT)
726 return titan_machine_check(vector, la_ptr, regs); 726 return titan_machine_check(vector, la_ptr);
727 727
728 /* 728 /*
729 * Report the event - System Events should be reported even if no 729 * Report the event - System Events should be reported even if no
@@ -746,7 +746,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs)
746 /* 746 /*
747 * Dispatch the interrupt(s). 747 * Dispatch the interrupt(s).
748 */ 748 */
749 titan_dispatch_irqs(irqmask, regs); 749 titan_dispatch_irqs(irqmask);
750 750
751 /* 751 /*
752 * Release the logout frame. 752 * Release the logout frame.
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index 729c475d2269..facf82a5499a 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -127,7 +127,7 @@ unlock:
127#define MAX_ILLEGAL_IRQS 16 127#define MAX_ILLEGAL_IRQS 16
128 128
129void 129void
130handle_irq(int irq, struct pt_regs * regs) 130handle_irq(int irq)
131{ 131{
132 /* 132 /*
133 * We ack quickly, we don't want the irq controller 133 * We ack quickly, we don't want the irq controller
@@ -157,6 +157,6 @@ handle_irq(int irq, struct pt_regs * regs)
157 * at IPL 0. 157 * at IPL 0.
158 */ 158 */
159 local_irq_disable(); 159 local_irq_disable();
160 __do_IRQ(irq, regs); 160 __do_IRQ(irq);
161 irq_exit(); 161 irq_exit();
162} 162}
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c
index ddf5cf8dcb0b..6dd126b8be85 100644
--- a/arch/alpha/kernel/irq_alpha.c
+++ b/arch/alpha/kernel/irq_alpha.c
@@ -39,6 +39,7 @@ asmlinkage void
39do_entInt(unsigned long type, unsigned long vector, 39do_entInt(unsigned long type, unsigned long vector,
40 unsigned long la_ptr, struct pt_regs *regs) 40 unsigned long la_ptr, struct pt_regs *regs)
41{ 41{
42 struct pt_regs *old_regs;
42 switch (type) { 43 switch (type) {
43 case 0: 44 case 0:
44#ifdef CONFIG_SMP 45#ifdef CONFIG_SMP
@@ -51,6 +52,7 @@ do_entInt(unsigned long type, unsigned long vector,
51#endif 52#endif
52 break; 53 break;
53 case 1: 54 case 1:
55 old_regs = set_irq_regs(regs);
54#ifdef CONFIG_SMP 56#ifdef CONFIG_SMP
55 { 57 {
56 long cpu; 58 long cpu;
@@ -61,18 +63,23 @@ do_entInt(unsigned long type, unsigned long vector,
61 if (cpu != boot_cpuid) { 63 if (cpu != boot_cpuid) {
62 kstat_cpu(cpu).irqs[RTC_IRQ]++; 64 kstat_cpu(cpu).irqs[RTC_IRQ]++;
63 } else { 65 } else {
64 handle_irq(RTC_IRQ, regs); 66 handle_irq(RTC_IRQ);
65 } 67 }
66 } 68 }
67#else 69#else
68 handle_irq(RTC_IRQ, regs); 70 handle_irq(RTC_IRQ);
69#endif 71#endif
72 set_irq_regs(old_regs);
70 return; 73 return;
71 case 2: 74 case 2:
72 alpha_mv.machine_check(vector, la_ptr, regs); 75 old_regs = set_irq_regs(regs);
76 alpha_mv.machine_check(vector, la_ptr);
77 set_irq_regs(old_regs);
73 return; 78 return;
74 case 3: 79 case 3:
75 alpha_mv.device_interrupt(vector, regs); 80 old_regs = set_irq_regs(regs);
81 alpha_mv.device_interrupt(vector);
82 set_irq_regs(old_regs);
76 return; 83 return;
77 case 4: 84 case 4:
78 perf_irq(la_ptr, regs); 85 perf_irq(la_ptr, regs);
@@ -120,8 +127,7 @@ struct mcheck_info __mcheck_info;
120 127
121void 128void
122process_mcheck_info(unsigned long vector, unsigned long la_ptr, 129process_mcheck_info(unsigned long vector, unsigned long la_ptr,
123 struct pt_regs *regs, const char *machine, 130 const char *machine, int expected)
124 int expected)
125{ 131{
126 struct el_common *mchk_header; 132 struct el_common *mchk_header;
127 const char *reason; 133 const char *reason;
@@ -148,7 +154,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr,
148 mchk_header = (struct el_common *)la_ptr; 154 mchk_header = (struct el_common *)la_ptr;
149 155
150 printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n", 156 printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n",
151 machine, vector, regs->pc, mchk_header->code); 157 machine, vector, get_irq_regs()->pc, mchk_header->code);
152 158
153 switch (mchk_header->code) { 159 switch (mchk_header->code) {
154 /* Machine check reasons. Defined according to PALcode sources. */ 160 /* Machine check reasons. Defined according to PALcode sources. */
@@ -189,7 +195,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr,
189 printk(KERN_CRIT "machine check type: %s%s\n", 195 printk(KERN_CRIT "machine check type: %s%s\n",
190 reason, mchk_header->retry ? " (retryable)" : ""); 196 reason, mchk_header->retry ? " (retryable)" : "");
191 197
192 dik_show_regs(regs, NULL); 198 dik_show_regs(get_irq_regs(), NULL);
193 199
194#ifdef CONFIG_VERBOSE_MCHECK 200#ifdef CONFIG_VERBOSE_MCHECK
195 if (alpha_verbose_mcheck > 1) { 201 if (alpha_verbose_mcheck > 1) {
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c
index ebbadbc0c36a..9405bee9894e 100644
--- a/arch/alpha/kernel/irq_i8259.c
+++ b/arch/alpha/kernel/irq_i8259.c
@@ -137,7 +137,7 @@ init_i8259a_irqs(void)
137 137
138#if defined(IACK_SC) 138#if defined(IACK_SC)
139void 139void
140isa_device_interrupt(unsigned long vector, struct pt_regs *regs) 140isa_device_interrupt(unsigned long vector)
141{ 141{
142 /* 142 /*
143 * Generate a PCI interrupt acknowledge cycle. The PIC will 143 * Generate a PCI interrupt acknowledge cycle. The PIC will
@@ -147,13 +147,13 @@ isa_device_interrupt(unsigned long vector, struct pt_regs *regs)
147 */ 147 */
148 int j = *(vuip) IACK_SC; 148 int j = *(vuip) IACK_SC;
149 j &= 0xff; 149 j &= 0xff;
150 handle_irq(j, regs); 150 handle_irq(j);
151} 151}
152#endif 152#endif
153 153
154#if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC) 154#if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC)
155void 155void
156isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs) 156isa_no_iack_sc_device_interrupt(unsigned long vector)
157{ 157{
158 unsigned long pic; 158 unsigned long pic;
159 159
@@ -176,7 +176,7 @@ isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs)
176 while (pic) { 176 while (pic) {
177 int j = ffz(~pic); 177 int j = ffz(~pic);
178 pic &= pic - 1; 178 pic &= pic - 1;
179 handle_irq(j, regs); 179 handle_irq(j);
180 } 180 }
181} 181}
182#endif 182#endif
diff --git a/arch/alpha/kernel/irq_impl.h b/arch/alpha/kernel/irq_impl.h
index f201d8ffc0d9..cc9a8a7aa279 100644
--- a/arch/alpha/kernel/irq_impl.h
+++ b/arch/alpha/kernel/irq_impl.h
@@ -15,10 +15,10 @@
15 15
16#define RTC_IRQ 8 16#define RTC_IRQ 8
17 17
18extern void isa_device_interrupt(unsigned long, struct pt_regs *); 18extern void isa_device_interrupt(unsigned long);
19extern void isa_no_iack_sc_device_interrupt(unsigned long, struct pt_regs *); 19extern void isa_no_iack_sc_device_interrupt(unsigned long);
20extern void srm_device_interrupt(unsigned long, struct pt_regs *); 20extern void srm_device_interrupt(unsigned long);
21extern void pyxis_device_interrupt(unsigned long, struct pt_regs *); 21extern void pyxis_device_interrupt(unsigned long);
22 22
23extern struct irqaction timer_irqaction; 23extern struct irqaction timer_irqaction;
24extern struct irqaction isa_cascade_irqaction; 24extern struct irqaction isa_cascade_irqaction;
@@ -39,4 +39,4 @@ extern void i8259a_end_irq(unsigned int);
39extern struct hw_interrupt_type i8259a_irq_type; 39extern struct hw_interrupt_type i8259a_irq_type;
40extern void init_i8259a_irqs(void); 40extern void init_i8259a_irqs(void);
41 41
42extern void handle_irq(int irq, struct pt_regs * regs); 42extern void handle_irq(int irq);
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c
index 3b581415bab0..d53edbccbfe5 100644
--- a/arch/alpha/kernel/irq_pyxis.c
+++ b/arch/alpha/kernel/irq_pyxis.c
@@ -81,7 +81,7 @@ static struct hw_interrupt_type pyxis_irq_type = {
81}; 81};
82 82
83void 83void
84pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs) 84pyxis_device_interrupt(unsigned long vector)
85{ 85{
86 unsigned long pld; 86 unsigned long pld;
87 unsigned int i; 87 unsigned int i;
@@ -98,9 +98,9 @@ pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs)
98 i = ffz(~pld); 98 i = ffz(~pld);
99 pld &= pld - 1; /* clear least bit set */ 99 pld &= pld - 1; /* clear least bit set */
100 if (i == 7) 100 if (i == 7)
101 isa_device_interrupt(vector, regs); 101 isa_device_interrupt(vector);
102 else 102 else
103 handle_irq(16+i, regs); 103 handle_irq(16+i);
104 } 104 }
105} 105}
106 106
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c
index 8e4d121f84cc..32212014fbe9 100644
--- a/arch/alpha/kernel/irq_srm.c
+++ b/arch/alpha/kernel/irq_srm.c
@@ -72,8 +72,8 @@ init_srm_irqs(long max, unsigned long ignore_mask)
72} 72}
73 73
74void 74void
75srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 75srm_device_interrupt(unsigned long vector)
76{ 76{
77 int irq = (vector - 0x800) >> 4; 77 int irq = (vector - 0x800) >> 4;
78 handle_irq(irq, regs); 78 handle_irq(irq);
79} 79}
diff --git a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h
index 21f71287b6f5..95912ecc65e1 100644
--- a/arch/alpha/kernel/proto.h
+++ b/arch/alpha/kernel/proto.h
@@ -20,7 +20,7 @@ struct pci_controller;
20extern struct pci_ops apecs_pci_ops; 20extern struct pci_ops apecs_pci_ops;
21extern void apecs_init_arch(void); 21extern void apecs_init_arch(void);
22extern void apecs_pci_clr_err(void); 22extern void apecs_pci_clr_err(void);
23extern void apecs_machine_check(u64, u64, struct pt_regs *); 23extern void apecs_machine_check(u64, u64);
24extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 24extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
25 25
26/* core_cia.c */ 26/* core_cia.c */
@@ -29,27 +29,27 @@ extern void cia_init_pci(void);
29extern void cia_init_arch(void); 29extern void cia_init_arch(void);
30extern void pyxis_init_arch(void); 30extern void pyxis_init_arch(void);
31extern void cia_kill_arch(int); 31extern void cia_kill_arch(int);
32extern void cia_machine_check(u64, u64, struct pt_regs *); 32extern void cia_machine_check(u64, u64);
33extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 33extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
34 34
35/* core_irongate.c */ 35/* core_irongate.c */
36extern struct pci_ops irongate_pci_ops; 36extern struct pci_ops irongate_pci_ops;
37extern int irongate_pci_clr_err(void); 37extern int irongate_pci_clr_err(void);
38extern void irongate_init_arch(void); 38extern void irongate_init_arch(void);
39extern void irongate_machine_check(u64, u64, struct pt_regs *); 39extern void irongate_machine_check(u64, u64);
40#define irongate_pci_tbi ((void *)0) 40#define irongate_pci_tbi ((void *)0)
41 41
42/* core_lca.c */ 42/* core_lca.c */
43extern struct pci_ops lca_pci_ops; 43extern struct pci_ops lca_pci_ops;
44extern void lca_init_arch(void); 44extern void lca_init_arch(void);
45extern void lca_machine_check(u64, u64, struct pt_regs *); 45extern void lca_machine_check(u64, u64);
46extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 46extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
47 47
48/* core_marvel.c */ 48/* core_marvel.c */
49extern struct pci_ops marvel_pci_ops; 49extern struct pci_ops marvel_pci_ops;
50extern void marvel_init_arch(void); 50extern void marvel_init_arch(void);
51extern void marvel_kill_arch(int); 51extern void marvel_kill_arch(int);
52extern void marvel_machine_check(u64, u64, struct pt_regs *); 52extern void marvel_machine_check(u64, u64);
53extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 53extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
54extern int marvel_pa_to_nid(unsigned long); 54extern int marvel_pa_to_nid(unsigned long);
55extern int marvel_cpuid_to_nid(int); 55extern int marvel_cpuid_to_nid(int);
@@ -64,7 +64,7 @@ void io7_clear_errors(struct io7 *io7);
64extern struct pci_ops mcpcia_pci_ops; 64extern struct pci_ops mcpcia_pci_ops;
65extern void mcpcia_init_arch(void); 65extern void mcpcia_init_arch(void);
66extern void mcpcia_init_hoses(void); 66extern void mcpcia_init_hoses(void);
67extern void mcpcia_machine_check(u64, u64, struct pt_regs *); 67extern void mcpcia_machine_check(u64, u64);
68extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 68extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
69 69
70/* core_polaris.c */ 70/* core_polaris.c */
@@ -72,21 +72,21 @@ extern struct pci_ops polaris_pci_ops;
72extern int polaris_read_config_dword(struct pci_dev *, int, u32 *); 72extern int polaris_read_config_dword(struct pci_dev *, int, u32 *);
73extern int polaris_write_config_dword(struct pci_dev *, int, u32); 73extern int polaris_write_config_dword(struct pci_dev *, int, u32);
74extern void polaris_init_arch(void); 74extern void polaris_init_arch(void);
75extern void polaris_machine_check(u64, u64, struct pt_regs *); 75extern void polaris_machine_check(u64, u64);
76#define polaris_pci_tbi ((void *)0) 76#define polaris_pci_tbi ((void *)0)
77 77
78/* core_t2.c */ 78/* core_t2.c */
79extern struct pci_ops t2_pci_ops; 79extern struct pci_ops t2_pci_ops;
80extern void t2_init_arch(void); 80extern void t2_init_arch(void);
81extern void t2_kill_arch(int); 81extern void t2_kill_arch(int);
82extern void t2_machine_check(u64, u64, struct pt_regs *); 82extern void t2_machine_check(u64, u64);
83extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 83extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
84 84
85/* core_titan.c */ 85/* core_titan.c */
86extern struct pci_ops titan_pci_ops; 86extern struct pci_ops titan_pci_ops;
87extern void titan_init_arch(void); 87extern void titan_init_arch(void);
88extern void titan_kill_arch(int); 88extern void titan_kill_arch(int);
89extern void titan_machine_check(u64, u64, struct pt_regs *); 89extern void titan_machine_check(u64, u64);
90extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 90extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
91extern struct _alpha_agp_info *titan_agp_info(void); 91extern struct _alpha_agp_info *titan_agp_info(void);
92 92
@@ -94,14 +94,14 @@ extern struct _alpha_agp_info *titan_agp_info(void);
94extern struct pci_ops tsunami_pci_ops; 94extern struct pci_ops tsunami_pci_ops;
95extern void tsunami_init_arch(void); 95extern void tsunami_init_arch(void);
96extern void tsunami_kill_arch(int); 96extern void tsunami_kill_arch(int);
97extern void tsunami_machine_check(u64, u64, struct pt_regs *); 97extern void tsunami_machine_check(u64, u64);
98extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 98extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
99 99
100/* core_wildfire.c */ 100/* core_wildfire.c */
101extern struct pci_ops wildfire_pci_ops; 101extern struct pci_ops wildfire_pci_ops;
102extern void wildfire_init_arch(void); 102extern void wildfire_init_arch(void);
103extern void wildfire_kill_arch(int); 103extern void wildfire_kill_arch(int);
104extern void wildfire_machine_check(u64, u64, struct pt_regs *); 104extern void wildfire_machine_check(u64, u64);
105extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); 105extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t);
106extern int wildfire_pa_to_nid(unsigned long); 106extern int wildfire_pa_to_nid(unsigned long);
107extern int wildfire_cpuid_to_nid(int); 107extern int wildfire_cpuid_to_nid(int);
@@ -133,7 +133,7 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *);
133/* extern void reset_for_srm(void); */ 133/* extern void reset_for_srm(void); */
134 134
135/* time.c */ 135/* time.c */
136extern irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs); 136extern irqreturn_t timer_interrupt(int irq, void *dev);
137extern void common_init_rtc(void); 137extern void common_init_rtc(void);
138extern unsigned long est_cycle_freq; 138extern unsigned long est_cycle_freq;
139 139
@@ -177,7 +177,7 @@ extern void dik_show_regs(struct pt_regs *regs, unsigned long *r9_15);
177extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *); 177extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *);
178 178
179/* sys_titan.c */ 179/* sys_titan.c */
180extern void titan_dispatch_irqs(u64, struct pt_regs *); 180extern void titan_dispatch_irqs(u64);
181 181
182/* ../mm/init.c */ 182/* ../mm/init.c */
183extern void switch_to_system_map(void); 183extern void switch_to_system_map(void);
@@ -214,5 +214,4 @@ extern struct mcheck_info
214#endif 214#endif
215 215
216extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr, 216extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr,
217 struct pt_regs *regs, const char *machine, 217 const char *machine, int expected);
218 int expected);
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index 4dc273e537fd..596780e2c7da 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -515,12 +515,15 @@ smp_cpus_done(unsigned int max_cpus)
515void 515void
516smp_percpu_timer_interrupt(struct pt_regs *regs) 516smp_percpu_timer_interrupt(struct pt_regs *regs)
517{ 517{
518 struct pt_regs *old_regs;
518 int cpu = smp_processor_id(); 519 int cpu = smp_processor_id();
519 unsigned long user = user_mode(regs); 520 unsigned long user = user_mode(regs);
520 struct cpuinfo_alpha *data = &cpu_data[cpu]; 521 struct cpuinfo_alpha *data = &cpu_data[cpu];
521 522
523 old_regs = set_irq_regs(regs);
524
522 /* Record kernel PC. */ 525 /* Record kernel PC. */
523 profile_tick(CPU_PROFILING, regs); 526 profile_tick(CPU_PROFILING);
524 527
525 if (!--data->prof_counter) { 528 if (!--data->prof_counter) {
526 /* We need to make like a normal interrupt -- otherwise 529 /* We need to make like a normal interrupt -- otherwise
@@ -534,6 +537,7 @@ smp_percpu_timer_interrupt(struct pt_regs *regs)
534 537
535 irq_exit(); 538 irq_exit();
536 } 539 }
540 set_irq_regs(old_regs);
537} 541}
538 542
539int __init 543int __init
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c
index d6926b7b1e99..49bedfbbd31b 100644
--- a/arch/alpha/kernel/sys_alcor.c
+++ b/arch/alpha/kernel/sys_alcor.c
@@ -100,7 +100,7 @@ static struct hw_interrupt_type alcor_irq_type = {
100}; 100};
101 101
102static void 102static void
103alcor_device_interrupt(unsigned long vector, struct pt_regs *regs) 103alcor_device_interrupt(unsigned long vector)
104{ 104{
105 unsigned long pld; 105 unsigned long pld;
106 unsigned int i; 106 unsigned int i;
@@ -116,9 +116,9 @@ alcor_device_interrupt(unsigned long vector, struct pt_regs *regs)
116 i = ffz(~pld); 116 i = ffz(~pld);
117 pld &= pld - 1; /* clear least bit set */ 117 pld &= pld - 1; /* clear least bit set */
118 if (i == 31) { 118 if (i == 31) {
119 isa_device_interrupt(vector, regs); 119 isa_device_interrupt(vector);
120 } else { 120 } else {
121 handle_irq(16 + i, regs); 121 handle_irq(16 + i);
122 } 122 }
123 } 123 }
124} 124}
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c
index 25a215067da8..ace475c124f6 100644
--- a/arch/alpha/kernel/sys_cabriolet.c
+++ b/arch/alpha/kernel/sys_cabriolet.c
@@ -82,7 +82,7 @@ static struct hw_interrupt_type cabriolet_irq_type = {
82}; 82};
83 83
84static void 84static void
85cabriolet_device_interrupt(unsigned long v, struct pt_regs *r) 85cabriolet_device_interrupt(unsigned long v)
86{ 86{
87 unsigned long pld; 87 unsigned long pld;
88 unsigned int i; 88 unsigned int i;
@@ -98,15 +98,15 @@ cabriolet_device_interrupt(unsigned long v, struct pt_regs *r)
98 i = ffz(~pld); 98 i = ffz(~pld);
99 pld &= pld - 1; /* clear least bit set */ 99 pld &= pld - 1; /* clear least bit set */
100 if (i == 4) { 100 if (i == 4) {
101 isa_device_interrupt(v, r); 101 isa_device_interrupt(v);
102 } else { 102 } else {
103 handle_irq(16 + i, r); 103 handle_irq(16 + i);
104 } 104 }
105 } 105 }
106} 106}
107 107
108static void __init 108static void __init
109common_init_irq(void (*srm_dev_int)(unsigned long v, struct pt_regs *r)) 109common_init_irq(void (*srm_dev_int)(unsigned long v))
110{ 110{
111 init_i8259a_irqs(); 111 init_i8259a_irqs();
112 112
@@ -154,18 +154,18 @@ cabriolet_init_irq(void)
154 too invasive though. */ 154 too invasive though. */
155 155
156static void 156static void
157pc164_srm_device_interrupt(unsigned long v, struct pt_regs *r) 157pc164_srm_device_interrupt(unsigned long v)
158{ 158{
159 __min_ipl = getipl(); 159 __min_ipl = getipl();
160 srm_device_interrupt(v, r); 160 srm_device_interrupt(v);
161 __min_ipl = 0; 161 __min_ipl = 0;
162} 162}
163 163
164static void 164static void
165pc164_device_interrupt(unsigned long v, struct pt_regs *r) 165pc164_device_interrupt(unsigned long v)
166{ 166{
167 __min_ipl = getipl(); 167 __min_ipl = getipl();
168 cabriolet_device_interrupt(v, r); 168 cabriolet_device_interrupt(v);
169 __min_ipl = 0; 169 __min_ipl = 0;
170} 170}
171 171
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c
index dd6103b867e7..85d2f933dd07 100644
--- a/arch/alpha/kernel/sys_dp264.c
+++ b/arch/alpha/kernel/sys_dp264.c
@@ -217,7 +217,7 @@ static struct hw_interrupt_type clipper_irq_type = {
217}; 217};
218 218
219static void 219static void
220dp264_device_interrupt(unsigned long vector, struct pt_regs * regs) 220dp264_device_interrupt(unsigned long vector)
221{ 221{
222#if 1 222#if 1
223 printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n"); 223 printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n");
@@ -236,9 +236,9 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
236 i = ffz(~pld); 236 i = ffz(~pld);
237 pld &= pld - 1; /* clear least bit set */ 237 pld &= pld - 1; /* clear least bit set */
238 if (i == 55) 238 if (i == 55)
239 isa_device_interrupt(vector, regs); 239 isa_device_interrupt(vector);
240 else 240 else
241 handle_irq(16 + i, 16 + i, regs); 241 handle_irq(16 + i);
242#if 0 242#if 0
243 TSUNAMI_cchip->dir0.csr = 1UL << i; mb(); 243 TSUNAMI_cchip->dir0.csr = 1UL << i; mb();
244 tmp = TSUNAMI_cchip->dir0.csr; 244 tmp = TSUNAMI_cchip->dir0.csr;
@@ -248,7 +248,7 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs)
248} 248}
249 249
250static void 250static void
251dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 251dp264_srm_device_interrupt(unsigned long vector)
252{ 252{
253 int irq; 253 int irq;
254 254
@@ -268,11 +268,11 @@ dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
268 if (irq >= 32) 268 if (irq >= 32)
269 irq -= 16; 269 irq -= 16;
270 270
271 handle_irq(irq, regs); 271 handle_irq(irq);
272} 272}
273 273
274static void 274static void
275clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 275clipper_srm_device_interrupt(unsigned long vector)
276{ 276{
277 int irq; 277 int irq;
278 278
@@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
290 * 290 *
291 * Eg IRQ 24 is DRIR bit 8, etc, etc 291 * Eg IRQ 24 is DRIR bit 8, etc, etc
292 */ 292 */
293 handle_irq(irq, regs); 293 handle_irq(irq);
294} 294}
295 295
296static void __init 296static void __init
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c
index ed108b66ec09..9c5a306dc0ee 100644
--- a/arch/alpha/kernel/sys_eb64p.c
+++ b/arch/alpha/kernel/sys_eb64p.c
@@ -80,7 +80,7 @@ static struct hw_interrupt_type eb64p_irq_type = {
80}; 80};
81 81
82static void 82static void
83eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs) 83eb64p_device_interrupt(unsigned long vector)
84{ 84{
85 unsigned long pld; 85 unsigned long pld;
86 unsigned int i; 86 unsigned int i;
@@ -97,9 +97,9 @@ eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs)
97 pld &= pld - 1; /* clear least bit set */ 97 pld &= pld - 1; /* clear least bit set */
98 98
99 if (i == 5) { 99 if (i == 5) {
100 isa_device_interrupt(vector, regs); 100 isa_device_interrupt(vector);
101 } else { 101 } else {
102 handle_irq(16 + i, regs); 102 handle_irq(16 + i);
103 } 103 }
104 } 104 }
105} 105}
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c
index 64a785baf53a..7ef3b6fb3700 100644
--- a/arch/alpha/kernel/sys_eiger.c
+++ b/arch/alpha/kernel/sys_eiger.c
@@ -91,7 +91,7 @@ static struct hw_interrupt_type eiger_irq_type = {
91}; 91};
92 92
93static void 93static void
94eiger_device_interrupt(unsigned long vector, struct pt_regs * regs) 94eiger_device_interrupt(unsigned long vector)
95{ 95{
96 unsigned intstatus; 96 unsigned intstatus;
97 97
@@ -118,20 +118,20 @@ eiger_device_interrupt(unsigned long vector, struct pt_regs * regs)
118 * despatch an interrupt if it's set. 118 * despatch an interrupt if it's set.
119 */ 119 */
120 120
121 if (intstatus & 8) handle_irq(16+3, regs); 121 if (intstatus & 8) handle_irq(16+3);
122 if (intstatus & 4) handle_irq(16+2, regs); 122 if (intstatus & 4) handle_irq(16+2);
123 if (intstatus & 2) handle_irq(16+1, regs); 123 if (intstatus & 2) handle_irq(16+1);
124 if (intstatus & 1) handle_irq(16+0, regs); 124 if (intstatus & 1) handle_irq(16+0);
125 } else { 125 } else {
126 isa_device_interrupt(vector, regs); 126 isa_device_interrupt(vector);
127 } 127 }
128} 128}
129 129
130static void 130static void
131eiger_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 131eiger_srm_device_interrupt(unsigned long vector)
132{ 132{
133 int irq = (vector - 0x800) >> 4; 133 int irq = (vector - 0x800) >> 4;
134 handle_irq(irq, regs); 134 handle_irq(irq);
135} 135}
136 136
137static void __init 137static void __init
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c
index 4ac2b328b8de..2c3de97de46c 100644
--- a/arch/alpha/kernel/sys_jensen.c
+++ b/arch/alpha/kernel/sys_jensen.c
@@ -129,7 +129,7 @@ static struct hw_interrupt_type jensen_local_irq_type = {
129}; 129};
130 130
131static void 131static void
132jensen_device_interrupt(unsigned long vector, struct pt_regs * regs) 132jensen_device_interrupt(unsigned long vector)
133{ 133{
134 int irq; 134 int irq;
135 135
@@ -189,7 +189,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
189 if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) || 189 if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) ||
190 irq != last_irq) { 190 irq != last_irq) {
191 printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n", 191 printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n",
192 irq, count, cc-last_cc, regs->pc); 192 irq, count, cc-last_cc, get_irq_regs()->pc);
193 count = 0; 193 count = 0;
194 last_msg = cc; 194 last_msg = cc;
195 last_irq = irq; 195 last_irq = irq;
@@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs)
198 } 198 }
199#endif 199#endif
200 200
201 handle_irq(irq, regs); 201 handle_irq(irq);
202} 202}
203 203
204static void __init 204static void __init
@@ -244,7 +244,7 @@ jensen_init_arch(void)
244} 244}
245 245
246static void 246static void
247jensen_machine_check (u64 vector, u64 la, struct pt_regs *regs) 247jensen_machine_check (u64 vector, u64 la)
248{ 248{
249 printk(KERN_CRIT "Machine check\n"); 249 printk(KERN_CRIT "Machine check\n");
250} 250}
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c
index 36d215954376..e349f03b830e 100644
--- a/arch/alpha/kernel/sys_marvel.c
+++ b/arch/alpha/kernel/sys_marvel.c
@@ -38,7 +38,7 @@
38 * Interrupt handling. 38 * Interrupt handling.
39 */ 39 */
40static void 40static void
41io7_device_interrupt(unsigned long vector, struct pt_regs * regs) 41io7_device_interrupt(unsigned long vector)
42{ 42{
43 unsigned int pid; 43 unsigned int pid;
44 unsigned int irq; 44 unsigned int irq;
@@ -64,7 +64,7 @@ io7_device_interrupt(unsigned long vector, struct pt_regs * regs)
64 irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */ 64 irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */
65 irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */ 65 irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */
66 66
67 handle_irq(irq, regs); 67 handle_irq(irq);
68} 68}
69 69
70static volatile unsigned long * 70static volatile unsigned long *
diff --git a/arch/alpha/kernel/sys_miata.c b/arch/alpha/kernel/sys_miata.c
index 61ac56f8eeea..b8b817feb1ee 100644
--- a/arch/alpha/kernel/sys_miata.c
+++ b/arch/alpha/kernel/sys_miata.c
@@ -33,7 +33,7 @@
33 33
34 34
35static void 35static void
36miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 36miata_srm_device_interrupt(unsigned long vector)
37{ 37{
38 int irq; 38 int irq;
39 39
@@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
56 if (irq >= 16) 56 if (irq >= 16)
57 irq = irq + 8; 57 irq = irq + 8;
58 58
59 handle_irq(irq, regs); 59 handle_irq(irq);
60} 60}
61 61
62static void __init 62static void __init
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c
index cc4c58111366..8d3e9429c5ee 100644
--- a/arch/alpha/kernel/sys_mikasa.c
+++ b/arch/alpha/kernel/sys_mikasa.c
@@ -79,7 +79,7 @@ static struct hw_interrupt_type mikasa_irq_type = {
79}; 79};
80 80
81static void 81static void
82mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs) 82mikasa_device_interrupt(unsigned long vector)
83{ 83{
84 unsigned long pld; 84 unsigned long pld;
85 unsigned int i; 85 unsigned int i;
@@ -97,9 +97,9 @@ mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs)
97 i = ffz(~pld); 97 i = ffz(~pld);
98 pld &= pld - 1; /* clear least bit set */ 98 pld &= pld - 1; /* clear least bit set */
99 if (i < 16) { 99 if (i < 16) {
100 isa_device_interrupt(vector, regs); 100 isa_device_interrupt(vector);
101 } else { 101 } else {
102 handle_irq(i, regs); 102 handle_irq(i);
103 } 103 }
104 } 104 }
105} 105}
@@ -182,8 +182,7 @@ mikasa_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
182 182
183#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) 183#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
184static void 184static void
185mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr, 185mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
186 struct pt_regs * regs)
187{ 186{
188#define MCHK_NO_DEVSEL 0x205U 187#define MCHK_NO_DEVSEL 0x205U
189#define MCHK_NO_TABT 0x204U 188#define MCHK_NO_TABT 0x204U
@@ -202,7 +201,7 @@ mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
202 mb(); 201 mb();
203 202
204 code = mchk_header->code; 203 code = mchk_header->code;
205 process_mcheck_info(vector, la_ptr, regs, "MIKASA APECS", 204 process_mcheck_info(vector, la_ptr, "MIKASA APECS",
206 (mcheck_expected(0) 205 (mcheck_expected(0)
207 && (code == MCHK_NO_DEVSEL 206 && (code == MCHK_NO_DEVSEL
208 || code == MCHK_NO_TABT))); 207 || code == MCHK_NO_TABT)));
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
index c0d696efec5b..93744bab73fb 100644
--- a/arch/alpha/kernel/sys_nautilus.c
+++ b/arch/alpha/kernel/sys_nautilus.c
@@ -124,8 +124,7 @@ naut_sys_machine_check(unsigned long vector, unsigned long la_ptr,
124 in the system. They are analysed separately but all starts here. */ 124 in the system. They are analysed separately but all starts here. */
125 125
126void 126void
127nautilus_machine_check(unsigned long vector, unsigned long la_ptr, 127nautilus_machine_check(unsigned long vector, unsigned long la_ptr)
128 struct pt_regs *regs)
129{ 128{
130 char *mchk_class; 129 char *mchk_class;
131 130
@@ -165,7 +164,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr,
165 else if (vector == SCB_Q_SYSMCHK) 164 else if (vector == SCB_Q_SYSMCHK)
166 mchk_class = "Fatal"; 165 mchk_class = "Fatal";
167 else { 166 else {
168 ev6_machine_check(vector, la_ptr, regs); 167 ev6_machine_check(vector, la_ptr);
169 return; 168 return;
170 } 169 }
171 170
@@ -173,7 +172,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr,
173 "[%s System Machine Check (NMI)]\n", 172 "[%s System Machine Check (NMI)]\n",
174 vector, mchk_class); 173 vector, mchk_class);
175 174
176 naut_sys_machine_check(vector, la_ptr, regs); 175 naut_sys_machine_check(vector, la_ptr, get_irq_regs());
177 176
178 /* Tell the PALcode to clear the machine check */ 177 /* Tell the PALcode to clear the machine check */
179 draina(); 178 draina();
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c
index 2d3cff7e8c5f..de6ba3432e8a 100644
--- a/arch/alpha/kernel/sys_noritake.c
+++ b/arch/alpha/kernel/sys_noritake.c
@@ -77,7 +77,7 @@ static struct hw_interrupt_type noritake_irq_type = {
77}; 77};
78 78
79static void 79static void
80noritake_device_interrupt(unsigned long vector, struct pt_regs *regs) 80noritake_device_interrupt(unsigned long vector)
81{ 81{
82 unsigned long pld; 82 unsigned long pld;
83 unsigned int i; 83 unsigned int i;
@@ -96,15 +96,15 @@ noritake_device_interrupt(unsigned long vector, struct pt_regs *regs)
96 i = ffz(~pld); 96 i = ffz(~pld);
97 pld &= pld - 1; /* clear least bit set */ 97 pld &= pld - 1; /* clear least bit set */
98 if (i < 16) { 98 if (i < 16) {
99 isa_device_interrupt(vector, regs); 99 isa_device_interrupt(vector);
100 } else { 100 } else {
101 handle_irq(i, regs); 101 handle_irq(i);
102 } 102 }
103 } 103 }
104} 104}
105 105
106static void 106static void
107noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 107noritake_srm_device_interrupt(unsigned long vector)
108{ 108{
109 int irq; 109 int irq;
110 110
@@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
122 if (irq >= 16) 122 if (irq >= 16)
123 irq = irq + 1; 123 irq = irq + 1;
124 124
125 handle_irq(irq, regs); 125 handle_irq(irq);
126} 126}
127 127
128static void __init 128static void __init
@@ -264,8 +264,7 @@ noritake_swizzle(struct pci_dev *dev, u8 *pinp)
264 264
265#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) 265#if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO)
266static void 266static void
267noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr, 267noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr)
268 struct pt_regs * regs)
269{ 268{
270#define MCHK_NO_DEVSEL 0x205U 269#define MCHK_NO_DEVSEL 0x205U
271#define MCHK_NO_TABT 0x204U 270#define MCHK_NO_TABT 0x204U
@@ -284,7 +283,7 @@ noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr,
284 mb(); 283 mb();
285 284
286 code = mchk_header->code; 285 code = mchk_header->code;
287 process_mcheck_info(vector, la_ptr, regs, "NORITAKE APECS", 286 process_mcheck_info(vector, la_ptr, "NORITAKE APECS",
288 (mcheck_expected(0) 287 (mcheck_expected(0)
289 && (code == MCHK_NO_DEVSEL 288 && (code == MCHK_NO_DEVSEL
290 || code == MCHK_NO_TABT))); 289 || code == MCHK_NO_TABT)));
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c
index 949607e3d6fb..581d08c70b92 100644
--- a/arch/alpha/kernel/sys_rawhide.c
+++ b/arch/alpha/kernel/sys_rawhide.c
@@ -134,7 +134,7 @@ static struct hw_interrupt_type rawhide_irq_type = {
134}; 134};
135 135
136static void 136static void
137rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 137rawhide_srm_device_interrupt(unsigned long vector)
138{ 138{
139 int irq; 139 int irq;
140 140
@@ -158,7 +158,7 @@ rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
158 /* Adjust by which hose it is from. */ 158 /* Adjust by which hose it is from. */
159 irq -= ((irq + 16) >> 2) & 0x38; 159 irq -= ((irq + 16) >> 2) & 0x38;
160 160
161 handle_irq(irq, regs); 161 handle_irq(irq);
162} 162}
163 163
164static void __init 164static void __init
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c
index 6ae506052635..ce1faa6f1df1 100644
--- a/arch/alpha/kernel/sys_rx164.c
+++ b/arch/alpha/kernel/sys_rx164.c
@@ -83,7 +83,7 @@ static struct hw_interrupt_type rx164_irq_type = {
83}; 83};
84 84
85static void 85static void
86rx164_device_interrupt(unsigned long vector, struct pt_regs *regs) 86rx164_device_interrupt(unsigned long vector)
87{ 87{
88 unsigned long pld; 88 unsigned long pld;
89 volatile unsigned int *dirr; 89 volatile unsigned int *dirr;
@@ -102,9 +102,9 @@ rx164_device_interrupt(unsigned long vector, struct pt_regs *regs)
102 i = ffz(~pld); 102 i = ffz(~pld);
103 pld &= pld - 1; /* clear least bit set */ 103 pld &= pld - 1; /* clear least bit set */
104 if (i == 20) { 104 if (i == 20) {
105 isa_no_iack_sc_device_interrupt(vector, regs); 105 isa_no_iack_sc_device_interrupt(vector);
106 } else { 106 } else {
107 handle_irq(16+i, regs); 107 handle_irq(16+i);
108 } 108 }
109 } 109 }
110} 110}
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c
index a7a14647b50e..906019cfa681 100644
--- a/arch/alpha/kernel/sys_sable.c
+++ b/arch/alpha/kernel/sys_sable.c
@@ -512,7 +512,7 @@ static struct hw_interrupt_type sable_lynx_irq_type = {
512}; 512};
513 513
514static void 514static void
515sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 515sable_lynx_srm_device_interrupt(unsigned long vector)
516{ 516{
517 /* Note that the vector reported by the SRM PALcode corresponds 517 /* Note that the vector reported by the SRM PALcode corresponds
518 to the interrupt mask bits, but we have to manage via the 518 to the interrupt mask bits, but we have to manage via the
@@ -526,7 +526,7 @@ sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
526 printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n", 526 printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n",
527 __FUNCTION__, vector, bit, irq); 527 __FUNCTION__, vector, bit, irq);
528#endif 528#endif
529 handle_irq(irq, regs); 529 handle_irq(irq);
530} 530}
531 531
532static void __init 532static void __init
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c
index 2c75cd1fd81a..9bd9a31450c6 100644
--- a/arch/alpha/kernel/sys_takara.c
+++ b/arch/alpha/kernel/sys_takara.c
@@ -85,7 +85,7 @@ static struct hw_interrupt_type takara_irq_type = {
85}; 85};
86 86
87static void 87static void
88takara_device_interrupt(unsigned long vector, struct pt_regs *regs) 88takara_device_interrupt(unsigned long vector)
89{ 89{
90 unsigned intstatus; 90 unsigned intstatus;
91 91
@@ -112,20 +112,20 @@ takara_device_interrupt(unsigned long vector, struct pt_regs *regs)
112 * despatch an interrupt if it's set. 112 * despatch an interrupt if it's set.
113 */ 113 */
114 114
115 if (intstatus & 8) handle_irq(16+3, regs); 115 if (intstatus & 8) handle_irq(16+3);
116 if (intstatus & 4) handle_irq(16+2, regs); 116 if (intstatus & 4) handle_irq(16+2);
117 if (intstatus & 2) handle_irq(16+1, regs); 117 if (intstatus & 2) handle_irq(16+1);
118 if (intstatus & 1) handle_irq(16+0, regs); 118 if (intstatus & 1) handle_irq(16+0);
119 } else { 119 } else {
120 isa_device_interrupt (vector, regs); 120 isa_device_interrupt (vector);
121 } 121 }
122} 122}
123 123
124static void 124static void
125takara_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 125takara_srm_device_interrupt(unsigned long vector)
126{ 126{
127 int irq = (vector - 0x800) >> 4; 127 int irq = (vector - 0x800) >> 4;
128 handle_irq(irq, regs); 128 handle_irq(irq);
129} 129}
130 130
131static void __init 131static void __init
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c
index 302aab38d95f..29ab7db81c30 100644
--- a/arch/alpha/kernel/sys_titan.c
+++ b/arch/alpha/kernel/sys_titan.c
@@ -167,18 +167,18 @@ titan_set_irq_affinity(unsigned int irq, cpumask_t affinity)
167} 167}
168 168
169static void 169static void
170titan_device_interrupt(unsigned long vector, struct pt_regs * regs) 170titan_device_interrupt(unsigned long vector)
171{ 171{
172 printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n"); 172 printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n");
173} 173}
174 174
175static void 175static void
176titan_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) 176titan_srm_device_interrupt(unsigned long vector)
177{ 177{
178 int irq; 178 int irq;
179 179
180 irq = (vector - 0x800) >> 4; 180 irq = (vector - 0x800) >> 4;
181 handle_irq(irq, regs); 181 handle_irq(irq);
182} 182}
183 183
184 184
@@ -204,7 +204,7 @@ static struct hw_interrupt_type titan_irq_type = {
204}; 204};
205 205
206static irqreturn_t 206static irqreturn_t
207titan_intr_nop(int irq, void *dev_id, struct pt_regs *regs) 207titan_intr_nop(int irq, void *dev_id)
208{ 208{
209 /* 209 /*
210 * This is a NOP interrupt handler for the purposes of 210 * This is a NOP interrupt handler for the purposes of
@@ -243,7 +243,7 @@ titan_legacy_init_irq(void)
243} 243}
244 244
245void 245void
246titan_dispatch_irqs(u64 mask, struct pt_regs *regs) 246titan_dispatch_irqs(u64 mask)
247{ 247{
248 unsigned long vector; 248 unsigned long vector;
249 249
@@ -263,7 +263,7 @@ titan_dispatch_irqs(u64 mask, struct pt_regs *regs)
263 vector = 0x900 + (vector << 4); /* convert to SRM vector */ 263 vector = 0x900 + (vector << 4); /* convert to SRM vector */
264 264
265 /* dispatch it */ 265 /* dispatch it */
266 alpha_mv.device_interrupt(vector, regs); 266 alpha_mv.device_interrupt(vector);
267 } 267 }
268} 268}
269 269
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c
index 22c5798fe083..42c3eede4d09 100644
--- a/arch/alpha/kernel/sys_wildfire.c
+++ b/arch/alpha/kernel/sys_wildfire.c
@@ -234,7 +234,7 @@ wildfire_init_irq(void)
234} 234}
235 235
236static void 236static void
237wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs) 237wildfire_device_interrupt(unsigned long vector)
238{ 238{
239 int irq; 239 int irq;
240 240
@@ -246,7 +246,7 @@ wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs)
246 * bits 5-0: irq in PCA 246 * bits 5-0: irq in PCA
247 */ 247 */
248 248
249 handle_irq(irq, regs); 249 handle_irq(irq);
250 return; 250 return;
251} 251}
252 252
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index 581ddcc22fc5..cf0666523989 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -104,7 +104,7 @@ unsigned long long sched_clock(void)
104 * timer_interrupt() needs to keep up the real-time clock, 104 * timer_interrupt() needs to keep up the real-time clock,
105 * as well as call the "do_timer()" routine every clocktick 105 * as well as call the "do_timer()" routine every clocktick
106 */ 106 */
107irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs) 107irqreturn_t timer_interrupt(int irq, void *dev)
108{ 108{
109 unsigned long delta; 109 unsigned long delta;
110 __u32 now; 110 __u32 now;
@@ -112,7 +112,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
112 112
113#ifndef CONFIG_SMP 113#ifndef CONFIG_SMP
114 /* Not SMP, do kernel PC profiling here. */ 114 /* Not SMP, do kernel PC profiling here. */
115 profile_tick(CPU_PROFILING, regs); 115 profile_tick(CPU_PROFILING);
116#endif 116#endif
117 117
118 write_seqlock(&xtime_lock); 118 write_seqlock(&xtime_lock);
@@ -132,7 +132,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
132 while (nticks > 0) { 132 while (nticks > 0) {
133 do_timer(1); 133 do_timer(1);
134#ifndef CONFIG_SMP 134#ifndef CONFIG_SMP
135 update_process_times(user_mode(regs)); 135 update_process_times(user_mode(get_irq_regs()));
136#endif 136#endif
137 nticks--; 137 nticks--;
138 } 138 }
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 181ef1ead5b8..80a72c75214f 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -163,8 +163,7 @@ static struct locomo_dev_info locomo_devices[] = {
163#define LOCOMO_IRQ_LT_START (IRQ_LOCOMO_LT) 163#define LOCOMO_IRQ_LT_START (IRQ_LOCOMO_LT)
164#define LOCOMO_IRQ_SPI_START (IRQ_LOCOMO_SPI_RFR) 164#define LOCOMO_IRQ_SPI_START (IRQ_LOCOMO_SPI_RFR)
165 165
166static void locomo_handler(unsigned int irq, struct irqdesc *desc, 166static void locomo_handler(unsigned int irq, struct irqdesc *desc)
167 struct pt_regs *regs)
168{ 167{
169 int req, i; 168 int req, i;
170 struct irqdesc *d; 169 struct irqdesc *d;
@@ -182,7 +181,7 @@ static void locomo_handler(unsigned int irq, struct irqdesc *desc,
182 d = irq_desc + irq; 181 d = irq_desc + irq;
183 for (i = 0; i <= 3; i++, d++, irq++) { 182 for (i = 0; i <= 3; i++, d++, irq++) {
184 if (req & (0x0100 << i)) { 183 if (req & (0x0100 << i)) {
185 desc_handle_irq(irq, d, regs); 184 desc_handle_irq(irq, d);
186 } 185 }
187 186
188 } 187 }
@@ -218,15 +217,14 @@ static struct irq_chip locomo_chip = {
218 .unmask = locomo_unmask_irq, 217 .unmask = locomo_unmask_irq,
219}; 218};
220 219
221static void locomo_key_handler(unsigned int irq, struct irqdesc *desc, 220static void locomo_key_handler(unsigned int irq, struct irqdesc *desc)
222 struct pt_regs *regs)
223{ 221{
224 struct irqdesc *d; 222 struct irqdesc *d;
225 void __iomem *mapbase = get_irq_chipdata(irq); 223 void __iomem *mapbase = get_irq_chipdata(irq);
226 224
227 if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { 225 if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) {
228 d = irq_desc + LOCOMO_IRQ_KEY_START; 226 d = irq_desc + LOCOMO_IRQ_KEY_START;
229 desc_handle_irq(LOCOMO_IRQ_KEY_START, d, regs); 227 desc_handle_irq(LOCOMO_IRQ_KEY_START, d);
230 } 228 }
231} 229}
232 230
@@ -264,8 +262,7 @@ static struct irq_chip locomo_key_chip = {
264 .unmask = locomo_key_unmask_irq, 262 .unmask = locomo_key_unmask_irq,
265}; 263};
266 264
267static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc, 265static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc)
268 struct pt_regs *regs)
269{ 266{
270 int req, i; 267 int req, i;
271 struct irqdesc *d; 268 struct irqdesc *d;
@@ -280,7 +277,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc,
280 d = irq_desc + LOCOMO_IRQ_GPIO_START; 277 d = irq_desc + LOCOMO_IRQ_GPIO_START;
281 for (i = 0; i <= 15; i++, irq++, d++) { 278 for (i = 0; i <= 15; i++, irq++, d++) {
282 if (req & (0x0001 << i)) { 279 if (req & (0x0001 << i)) {
283 desc_handle_irq(irq, d, regs); 280 desc_handle_irq(irq, d);
284 } 281 }
285 } 282 }
286 } 283 }
@@ -328,15 +325,14 @@ static struct irq_chip locomo_gpio_chip = {
328 .unmask = locomo_gpio_unmask_irq, 325 .unmask = locomo_gpio_unmask_irq,
329}; 326};
330 327
331static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc, 328static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc)
332 struct pt_regs *regs)
333{ 329{
334 struct irqdesc *d; 330 struct irqdesc *d;
335 void __iomem *mapbase = get_irq_chipdata(irq); 331 void __iomem *mapbase = get_irq_chipdata(irq);
336 332
337 if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { 333 if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) {
338 d = irq_desc + LOCOMO_IRQ_LT_START; 334 d = irq_desc + LOCOMO_IRQ_LT_START;
339 desc_handle_irq(LOCOMO_IRQ_LT_START, d, regs); 335 desc_handle_irq(LOCOMO_IRQ_LT_START, d);
340 } 336 }
341} 337}
342 338
@@ -374,8 +370,7 @@ static struct irq_chip locomo_lt_chip = {
374 .unmask = locomo_lt_unmask_irq, 370 .unmask = locomo_lt_unmask_irq,
375}; 371};
376 372
377static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc, 373static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc)
378 struct pt_regs *regs)
379{ 374{
380 int req, i; 375 int req, i;
381 struct irqdesc *d; 376 struct irqdesc *d;
@@ -388,7 +383,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
388 383
389 for (i = 0; i <= 3; i++, irq++, d++) { 384 for (i = 0; i <= 3; i++, irq++, d++) {
390 if (req & (0x0001 << i)) { 385 if (req & (0x0001 << i)) {
391 desc_handle_irq(irq, d, regs); 386 desc_handle_irq(irq, d);
392 } 387 }
393 } 388 }
394 } 389 }
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 30046ad41ced..d5f72010a6f3 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -147,7 +147,7 @@ void __init sa1111_adjust_zones(int node, unsigned long *size, unsigned long *ho
147 * will call us again if there are more interrupts to process. 147 * will call us again if there are more interrupts to process.
148 */ 148 */
149static void 149static void
150sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 150sa1111_irq_handler(unsigned int irq, struct irqdesc *desc)
151{ 151{
152 unsigned int stat0, stat1, i; 152 unsigned int stat0, stat1, i;
153 void __iomem *base = get_irq_data(irq); 153 void __iomem *base = get_irq_data(irq);
@@ -162,17 +162,17 @@ sa1111_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
162 sa1111_writel(stat1, base + SA1111_INTSTATCLR1); 162 sa1111_writel(stat1, base + SA1111_INTSTATCLR1);
163 163
164 if (stat0 == 0 && stat1 == 0) { 164 if (stat0 == 0 && stat1 == 0) {
165 do_bad_IRQ(irq, desc, regs); 165 do_bad_IRQ(irq, desc);
166 return; 166 return;
167 } 167 }
168 168
169 for (i = IRQ_SA1111_START; stat0; i++, stat0 >>= 1) 169 for (i = IRQ_SA1111_START; stat0; i++, stat0 >>= 1)
170 if (stat0 & 1) 170 if (stat0 & 1)
171 handle_edge_irq(i, irq_desc + i, regs); 171 handle_edge_irq(i, irq_desc + i);
172 172
173 for (i = IRQ_SA1111_START + 32; stat1; i++, stat1 >>= 1) 173 for (i = IRQ_SA1111_START + 32; stat1; i++, stat1 >>= 1)
174 if (stat1 & 1) 174 if (stat1 & 1)
175 handle_edge_irq(i, irq_desc + i, regs); 175 handle_edge_irq(i, irq_desc + i);
176 176
177 /* For level-based interrupts */ 177 /* For level-based interrupts */
178 desc->chip->unmask(irq); 178 desc->chip->unmask(irq);
diff --git a/arch/arm/common/sharpsl_pm.c b/arch/arm/common/sharpsl_pm.c
index f412dedda684..605dedf96790 100644
--- a/arch/arm/common/sharpsl_pm.c
+++ b/arch/arm/common/sharpsl_pm.c
@@ -258,7 +258,7 @@ static void sharpsl_ac_timer(unsigned long data)
258} 258}
259 259
260 260
261irqreturn_t sharpsl_ac_isr(int irq, void *dev_id, struct pt_regs *fp) 261irqreturn_t sharpsl_ac_isr(int irq, void *dev_id)
262{ 262{
263 /* Delay the event slightly to debounce */ 263 /* Delay the event slightly to debounce */
264 /* Must be a smaller delay than the chrg_full_isr below */ 264 /* Must be a smaller delay than the chrg_full_isr below */
@@ -293,7 +293,7 @@ static void sharpsl_chrg_full_timer(unsigned long data)
293/* Charging Finished Interrupt (Not present on Corgi) */ 293/* Charging Finished Interrupt (Not present on Corgi) */
294/* Can trigger at the same time as an AC staus change so 294/* Can trigger at the same time as an AC staus change so
295 delay until after that has been processed */ 295 delay until after that has been processed */
296irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp) 296irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id)
297{ 297{
298 if (sharpsl_pm.flags & SHARPSL_SUSPENDED) 298 if (sharpsl_pm.flags & SHARPSL_SUSPENDED)
299 return IRQ_HANDLED; 299 return IRQ_HANDLED;
@@ -304,7 +304,7 @@ irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp)
304 return IRQ_HANDLED; 304 return IRQ_HANDLED;
305} 305}
306 306
307irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id, struct pt_regs *fp) 307irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id)
308{ 308{
309 int is_fatal = 0; 309 int is_fatal = 0;
310 310
diff --git a/arch/arm/common/time-acorn.c b/arch/arm/common/time-acorn.c
index 3f60dd9aca80..34038eccbba9 100644
--- a/arch/arm/common/time-acorn.c
+++ b/arch/arm/common/time-acorn.c
@@ -67,10 +67,10 @@ void __init ioctime_init(void)
67} 67}
68 68
69static irqreturn_t 69static irqreturn_t
70ioc_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 70ioc_timer_interrupt(int irq, void *dev_id)
71{ 71{
72 write_seqlock(&xtime_lock); 72 write_seqlock(&xtime_lock);
73 timer_tick(regs); 73 timer_tick();
74 write_sequnlock(&xtime_lock); 74 write_sequnlock(&xtime_lock);
75 return IRQ_HANDLED; 75 return IRQ_HANDLED;
76} 76}
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c
index 3e14b1348c0b..b27513a0f11e 100644
--- a/arch/arm/kernel/ecard.c
+++ b/arch/arm/kernel/ecard.c
@@ -567,7 +567,7 @@ static void ecard_check_lockup(struct irqdesc *desc)
567} 567}
568 568
569static void 569static void
570ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 570ecard_irq_handler(unsigned int irq, struct irqdesc *desc)
571{ 571{
572 ecard_t *ec; 572 ecard_t *ec;
573 int called = 0; 573 int called = 0;
@@ -586,7 +586,7 @@ ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
586 586
587 if (pending) { 587 if (pending) {
588 struct irqdesc *d = irq_desc + ec->irq; 588 struct irqdesc *d = irq_desc + ec->irq;
589 desc_handle_irq(ec->irq, d, regs); 589 desc_handle_irq(ec->irq, d);
590 called ++; 590 called ++;
591 } 591 }
592 } 592 }
@@ -609,7 +609,7 @@ static unsigned char first_set[] =
609}; 609};
610 610
611static void 611static void
612ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 612ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc)
613{ 613{
614 const unsigned int statusmask = 15; 614 const unsigned int statusmask = 15;
615 unsigned int status; 615 unsigned int status;
@@ -633,7 +633,7 @@ ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
633 * Serial cards should go in 0/1, ethernet/scsi in 2/3 633 * Serial cards should go in 0/1, ethernet/scsi in 2/3
634 * otherwise you will lose serial data at high speeds! 634 * otherwise you will lose serial data at high speeds!
635 */ 635 */
636 desc_handle_irq(ec->irq, d, regs); 636 desc_handle_irq(ec->irq, d);
637 } else { 637 } else {
638 printk(KERN_WARNING "card%d: interrupt from unclaimed " 638 printk(KERN_WARNING "card%d: interrupt from unclaimed "
639 "card???\n", slot); 639 "card???\n", slot);
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 2e1bf830fe11..2c4ff1cbe334 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = {
111 */ 111 */
112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) 112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
113{ 113{
114 struct pt_regs *old_regs = set_irq_regs(regs);
114 struct irqdesc *desc = irq_desc + irq; 115 struct irqdesc *desc = irq_desc + irq;
115 116
116 /* 117 /*
@@ -122,12 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
122 123
123 irq_enter(); 124 irq_enter();
124 125
125 desc_handle_irq(irq, desc, regs); 126 desc_handle_irq(irq, desc);
126 127
127 /* AT91 specific workaround */ 128 /* AT91 specific workaround */
128 irq_finish(irq); 129 irq_finish(irq);
129 130
130 irq_exit(); 131 irq_exit();
132 set_irq_regs(old_regs);
131} 133}
132 134
133void set_irq_flags(unsigned int irq, unsigned int iflags) 135void set_irq_flags(unsigned int irq, unsigned int iflags)
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index b030320b17c7..c03cab5c4c79 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -27,6 +27,7 @@
27#include <linux/profile.h> 27#include <linux/profile.h>
28#include <linux/sysdev.h> 28#include <linux/sysdev.h>
29#include <linux/timer.h> 29#include <linux/timer.h>
30#include <linux/irq.h>
30 31
31#include <asm/leds.h> 32#include <asm/leds.h>
32#include <asm/thread_info.h> 33#include <asm/thread_info.h>
@@ -324,9 +325,10 @@ EXPORT_SYMBOL(restore_time_delta);
324/* 325/*
325 * Kernel system timer support. 326 * Kernel system timer support.
326 */ 327 */
327void timer_tick(struct pt_regs *regs) 328void timer_tick(void)
328{ 329{
329 profile_tick(CPU_PROFILING, regs); 330 struct pt_regs *regs = get_irq_regs();
331 profile_tick(CPU_PROFILING);
330 do_leds(); 332 do_leds();
331 do_set_rtc(); 333 do_set_rtc();
332 do_timer(1); 334 do_timer(1);
diff --git a/arch/arm/mach-aaec2000/core.c b/arch/arm/mach-aaec2000/core.c
index baa997c857dc..fe3d297d682d 100644
--- a/arch/arm/mach-aaec2000/core.c
+++ b/arch/arm/mach-aaec2000/core.c
@@ -127,12 +127,12 @@ static unsigned long aaec2000_gettimeoffset(void)
127 127
128/* We enter here with IRQs enabled */ 128/* We enter here with IRQs enabled */
129static irqreturn_t 129static irqreturn_t
130aaec2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 130aaec2000_timer_interrupt(int irq, void *dev_id)
131{ 131{
132 /* TODO: Check timer accuracy */ 132 /* TODO: Check timer accuracy */
133 write_seqlock(&xtime_lock); 133 write_seqlock(&xtime_lock);
134 134
135 timer_tick(regs); 135 timer_tick();
136 TIMER1_CLEAR = 1; 136 TIMER1_CLEAR = 1;
137 137
138 write_sequnlock(&xtime_lock); 138 write_sequnlock(&xtime_lock);
diff --git a/arch/arm/mach-at91rm9200/at91rm9200_time.c b/arch/arm/mach-at91rm9200/at91rm9200_time.c
index a92a8622c78a..07c9cea8961d 100644
--- a/arch/arm/mach-at91rm9200/at91rm9200_time.c
+++ b/arch/arm/mach-at91rm9200/at91rm9200_time.c
@@ -65,13 +65,13 @@ static unsigned long at91rm9200_gettimeoffset(void)
65/* 65/*
66 * IRQ handler for the timer. 66 * IRQ handler for the timer.
67 */ 67 */
68static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 68static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id)
69{ 69{
70 if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */ 70 if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */
71 write_seqlock(&xtime_lock); 71 write_seqlock(&xtime_lock);
72 72
73 while (((read_CRTR() - last_crtr) & AT91_ST_ALMV) >= LATCH) { 73 while (((read_CRTR() - last_crtr) & AT91_ST_ALMV) >= LATCH) {
74 timer_tick(regs); 74 timer_tick();
75 last_crtr = (last_crtr + LATCH) & AT91_ST_ALMV; 75 last_crtr = (last_crtr + LATCH) & AT91_ST_ALMV;
76 } 76 }
77 77
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c
index 58c9bf5e9520..7467d644f0a3 100644
--- a/arch/arm/mach-at91rm9200/gpio.c
+++ b/arch/arm/mach-at91rm9200/gpio.c
@@ -332,7 +332,7 @@ static struct irq_chip gpio_irqchip = {
332 .set_wake = gpio_irq_set_wake, 332 .set_wake = gpio_irq_set_wake,
333}; 333};
334 334
335static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs *regs) 335static void gpio_irq_handler(unsigned irq, struct irqdesc *desc)
336{ 336{
337 unsigned pin; 337 unsigned pin;
338 struct irqdesc *gpio; 338 struct irqdesc *gpio;
@@ -363,7 +363,7 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs
363 gpio_irq_mask(pin); 363 gpio_irq_mask(pin);
364 } 364 }
365 else 365 else
366 desc_handle_irq(pin, gpio, regs); 366 desc_handle_irq(pin, gpio);
367 } 367 }
368 pin++; 368 pin++;
369 gpio++; 369 gpio++;
diff --git a/arch/arm/mach-clps711x/time.c b/arch/arm/mach-clps711x/time.c
index a071eac4a30a..428493dd4687 100644
--- a/arch/arm/mach-clps711x/time.c
+++ b/arch/arm/mach-clps711x/time.c
@@ -48,10 +48,10 @@ static unsigned long clps711x_gettimeoffset(void)
48 * IRQ handler for the timer 48 * IRQ handler for the timer
49 */ 49 */
50static irqreturn_t 50static irqreturn_t
51p720t_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 51p720t_timer_interrupt(int irq, void *dev_id)
52{ 52{
53 write_seqlock(&xtime_lock); 53 write_seqlock(&xtime_lock);
54 timer_tick(regs); 54 timer_tick();
55 write_sequnlock(&xtime_lock); 55 write_sequnlock(&xtime_lock);
56 return IRQ_HANDLED; 56 return IRQ_HANDLED;
57} 57}
diff --git a/arch/arm/mach-clps7500/core.c b/arch/arm/mach-clps7500/core.c
index 92eaebdd5606..fb10cf252588 100644
--- a/arch/arm/mach-clps7500/core.c
+++ b/arch/arm/mach-clps7500/core.c
@@ -292,11 +292,11 @@ extern void ioctime_init(void);
292extern unsigned long ioc_timer_gettimeoffset(void); 292extern unsigned long ioc_timer_gettimeoffset(void);
293 293
294static irqreturn_t 294static irqreturn_t
295clps7500_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 295clps7500_timer_interrupt(int irq, void *dev_id)
296{ 296{
297 write_seqlock(&xtime_lock); 297 write_seqlock(&xtime_lock);
298 298
299 timer_tick(regs); 299 timer_tick();
300 300
301 /* Why not using do_leds interface?? */ 301 /* Why not using do_leds interface?? */
302 { 302 {
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c
index 70dd12ef3c40..90103ab373a6 100644
--- a/arch/arm/mach-ebsa110/core.c
+++ b/arch/arm/mach-ebsa110/core.c
@@ -174,7 +174,7 @@ static unsigned long ebsa110_gettimeoffset(void)
174} 174}
175 175
176static irqreturn_t 176static irqreturn_t
177ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 177ebsa110_timer_interrupt(int irq, void *dev_id)
178{ 178{
179 u32 count; 179 u32 count;
180 180
@@ -190,7 +190,7 @@ ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
190 __raw_writeb(count & 0xff, PIT_T1); 190 __raw_writeb(count & 0xff, PIT_T1);
191 __raw_writeb(count >> 8, PIT_T1); 191 __raw_writeb(count >> 8, PIT_T1);
192 192
193 timer_tick(regs); 193 timer_tick();
194 194
195 write_sequnlock(&xtime_lock); 195 write_sequnlock(&xtime_lock);
196 196
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index a87a784b9201..e3fd1ab6adcc 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -97,7 +97,7 @@ static unsigned int last_jiffy_time;
97 97
98#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ) 98#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ)
99 99
100static int ep93xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 100static int ep93xx_timer_interrupt(int irq, void *dev_id)
101{ 101{
102 write_seqlock(&xtime_lock); 102 write_seqlock(&xtime_lock);
103 103
@@ -106,7 +106,7 @@ static int ep93xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
106 (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time) 106 (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time)
107 >= TIMER4_TICKS_PER_JIFFY) { 107 >= TIMER4_TICKS_PER_JIFFY) {
108 last_jiffy_time += TIMER4_TICKS_PER_JIFFY; 108 last_jiffy_time += TIMER4_TICKS_PER_JIFFY;
109 timer_tick(regs); 109 timer_tick();
110 } 110 }
111 111
112 write_sequnlock(&xtime_lock); 112 write_sequnlock(&xtime_lock);
@@ -245,7 +245,7 @@ EXPORT_SYMBOL(gpio_line_set);
245 * EP93xx IRQ handling 245 * EP93xx IRQ handling
246 *************************************************************************/ 246 *************************************************************************/
247static void ep93xx_gpio_ab_irq_handler(unsigned int irq, 247static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
248 struct irqdesc *desc, struct pt_regs *regs) 248 struct irqdesc *desc)
249{ 249{
250 unsigned char status; 250 unsigned char status;
251 int i; 251 int i;
@@ -254,7 +254,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
254 for (i = 0; i < 8; i++) { 254 for (i = 0; i < 8; i++) {
255 if (status & (1 << i)) { 255 if (status & (1 << i)) {
256 desc = irq_desc + IRQ_EP93XX_GPIO(0) + i; 256 desc = irq_desc + IRQ_EP93XX_GPIO(0) + i;
257 desc_handle_irq(IRQ_EP93XX_GPIO(0) + i, desc, regs); 257 desc_handle_irq(IRQ_EP93XX_GPIO(0) + i, desc);
258 } 258 }
259 } 259 }
260 260
@@ -262,7 +262,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq,
262 for (i = 0; i < 8; i++) { 262 for (i = 0; i < 8; i++) {
263 if (status & (1 << i)) { 263 if (status & (1 << i)) {
264 desc = irq_desc + IRQ_EP93XX_GPIO(8) + i; 264 desc = irq_desc + IRQ_EP93XX_GPIO(8) + i;
265 desc_handle_irq(IRQ_EP93XX_GPIO(8) + i, desc, regs); 265 desc_handle_irq(IRQ_EP93XX_GPIO(8) + i, desc);
266 } 266 }
267 } 267 }
268} 268}
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c
index 2af610811ca4..fa6be870c6c2 100644
--- a/arch/arm/mach-footbridge/dc21285-timer.c
+++ b/arch/arm/mach-footbridge/dc21285-timer.c
@@ -28,13 +28,13 @@ static unsigned long timer1_gettimeoffset (void)
28} 28}
29 29
30static irqreturn_t 30static irqreturn_t
31timer1_interrupt(int irq, void *dev_id, struct pt_regs *regs) 31timer1_interrupt(int irq, void *dev_id)
32{ 32{
33 write_seqlock(&xtime_lock); 33 write_seqlock(&xtime_lock);
34 34
35 *CSR_TIMER1_CLR = 0; 35 *CSR_TIMER1_CLR = 0;
36 36
37 timer_tick(regs); 37 timer_tick();
38 38
39 write_sequnlock(&xtime_lock); 39 write_sequnlock(&xtime_lock);
40 40
diff --git a/arch/arm/mach-footbridge/dc21285.c b/arch/arm/mach-footbridge/dc21285.c
index a1ae49df5c3b..fa5d4976f514 100644
--- a/arch/arm/mach-footbridge/dc21285.c
+++ b/arch/arm/mach-footbridge/dc21285.c
@@ -154,7 +154,7 @@ static void dc21285_enable_error(unsigned long __data)
154/* 154/*
155 * Warn on PCI errors. 155 * Warn on PCI errors.
156 */ 156 */
157static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs) 157static irqreturn_t dc21285_abort_irq(int irq, void *dev_id)
158{ 158{
159 unsigned int cmd; 159 unsigned int cmd;
160 unsigned int status; 160 unsigned int status;
@@ -165,7 +165,7 @@ static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs
165 165
166 if (status & PCI_STATUS_REC_MASTER_ABORT) { 166 if (status & PCI_STATUS_REC_MASTER_ABORT) {
167 printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n", 167 printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n",
168 instruction_pointer(regs)); 168 instruction_pointer(get_irq_regs()));
169 cmd |= PCI_STATUS_REC_MASTER_ABORT << 16; 169 cmd |= PCI_STATUS_REC_MASTER_ABORT << 16;
170 } 170 }
171 171
@@ -184,7 +184,7 @@ static irqreturn_t dc21285_abort_irq(int irq, void *dev_id, struct pt_regs *regs
184 return IRQ_HANDLED; 184 return IRQ_HANDLED;
185} 185}
186 186
187static irqreturn_t dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs) 187static irqreturn_t dc21285_serr_irq(int irq, void *dev_id)
188{ 188{
189 struct timer_list *timer = dev_id; 189 struct timer_list *timer = dev_id;
190 unsigned int cntl; 190 unsigned int cntl;
@@ -206,7 +206,7 @@ static irqreturn_t dc21285_serr_irq(int irq, void *dev_id, struct pt_regs *regs)
206 return IRQ_HANDLED; 206 return IRQ_HANDLED;
207} 207}
208 208
209static irqreturn_t dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *regs) 209static irqreturn_t dc21285_discard_irq(int irq, void *dev_id)
210{ 210{
211 printk(KERN_DEBUG "PCI: discard timer expired\n"); 211 printk(KERN_DEBUG "PCI: discard timer expired\n");
212 *CSR_SA110_CNTL &= 0xffffde07; 212 *CSR_SA110_CNTL &= 0xffffde07;
@@ -214,7 +214,7 @@ static irqreturn_t dc21285_discard_irq(int irq, void *dev_id, struct pt_regs *re
214 return IRQ_HANDLED; 214 return IRQ_HANDLED;
215} 215}
216 216
217static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *regs) 217static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id)
218{ 218{
219 unsigned int cmd; 219 unsigned int cmd;
220 220
@@ -228,7 +228,7 @@ static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id, struct pt_regs *re
228 return IRQ_HANDLED; 228 return IRQ_HANDLED;
229} 229}
230 230
231static irqreturn_t dc21285_parity_irq(int irq, void *dev_id, struct pt_regs *regs) 231static irqreturn_t dc21285_parity_irq(int irq, void *dev_id)
232{ 232{
233 struct timer_list *timer = dev_id; 233 struct timer_list *timer = dev_id;
234 unsigned int cmd; 234 unsigned int cmd;
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index 87448c2d6baa..888dedd501b9 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -85,17 +85,17 @@ static struct irqchip isa_hi_chip = {
85}; 85};
86 86
87static void 87static void
88isa_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 88isa_irq_handler(unsigned int irq, struct irqdesc *desc)
89{ 89{
90 unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE; 90 unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
91 91
92 if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) { 92 if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
93 do_bad_IRQ(isa_irq, desc, regs); 93 do_bad_IRQ(isa_irq, desc);
94 return; 94 return;
95 } 95 }
96 96
97 desc = irq_desc + isa_irq; 97 desc = irq_desc + isa_irq;
98 desc_handle_irq(isa_irq, desc, regs); 98 desc_handle_irq(isa_irq, desc);
99} 99}
100 100
101static struct irqaction irq_cascade = { 101static struct irqaction irq_cascade = {
diff --git a/arch/arm/mach-footbridge/isa-timer.c b/arch/arm/mach-footbridge/isa-timer.c
index c4810a40c8e1..d884a3954fb4 100644
--- a/arch/arm/mach-footbridge/isa-timer.c
+++ b/arch/arm/mach-footbridge/isa-timer.c
@@ -62,10 +62,10 @@ static unsigned long isa_gettimeoffset(void)
62} 62}
63 63
64static irqreturn_t 64static irqreturn_t
65isa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 65isa_timer_interrupt(int irq, void *dev_id)
66{ 66{
67 write_seqlock(&xtime_lock); 67 write_seqlock(&xtime_lock);
68 timer_tick(regs); 68 timer_tick();
69 write_sequnlock(&xtime_lock); 69 write_sequnlock(&xtime_lock);
70 return IRQ_HANDLED; 70 return IRQ_HANDLED;
71} 71}
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c
index c096b4569308..4719229a1a78 100644
--- a/arch/arm/mach-h720x/common.c
+++ b/arch/arm/mach-h720x/common.c
@@ -101,14 +101,14 @@ static void inline unmask_gpio_irq(u32 irq)
101 101
102static void 102static void
103h720x_gpio_handler(unsigned int mask, unsigned int irq, 103h720x_gpio_handler(unsigned int mask, unsigned int irq,
104 struct irqdesc *desc, struct pt_regs *regs) 104 struct irqdesc *desc)
105{ 105{
106 IRQDBG("%s irq: %d\n",__FUNCTION__,irq); 106 IRQDBG("%s irq: %d\n",__FUNCTION__,irq);
107 desc = irq_desc + irq; 107 desc = irq_desc + irq;
108 while (mask) { 108 while (mask) {
109 if (mask & 1) { 109 if (mask & 1) {
110 IRQDBG("handling irq %d\n", irq); 110 IRQDBG("handling irq %d\n", irq);
111 desc_handle_irq(irq, desc, regs); 111 desc_handle_irq(irq, desc);
112 } 112 }
113 irq++; 113 irq++;
114 desc++; 114 desc++;
@@ -117,63 +117,58 @@ h720x_gpio_handler(unsigned int mask, unsigned int irq,
117} 117}
118 118
119static void 119static void
120h720x_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 120h720x_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
121 struct pt_regs *regs)
122{ 121{
123 unsigned int mask, irq; 122 unsigned int mask, irq;
124 123
125 mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT); 124 mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
126 irq = IRQ_CHAINED_GPIOA(0); 125 irq = IRQ_CHAINED_GPIOA(0);
127 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 126 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
128 h720x_gpio_handler(mask, irq, desc, regs); 127 h720x_gpio_handler(mask, irq, desc);
129} 128}
130 129
131static void 130static void
132h720x_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 131h720x_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
133 struct pt_regs *regs)
134{ 132{
135 unsigned int mask, irq; 133 unsigned int mask, irq;
136 mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT); 134 mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
137 irq = IRQ_CHAINED_GPIOB(0); 135 irq = IRQ_CHAINED_GPIOB(0);
138 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 136 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
139 h720x_gpio_handler(mask, irq, desc, regs); 137 h720x_gpio_handler(mask, irq, desc);
140} 138}
141 139
142static void 140static void
143h720x_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 141h720x_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
144 struct pt_regs *regs)
145{ 142{
146 unsigned int mask, irq; 143 unsigned int mask, irq;
147 144
148 mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT); 145 mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
149 irq = IRQ_CHAINED_GPIOC(0); 146 irq = IRQ_CHAINED_GPIOC(0);
150 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 147 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
151 h720x_gpio_handler(mask, irq, desc, regs); 148 h720x_gpio_handler(mask, irq, desc);
152} 149}
153 150
154static void 151static void
155h720x_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 152h720x_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
156 struct pt_regs *regs)
157{ 153{
158 unsigned int mask, irq; 154 unsigned int mask, irq;
159 155
160 mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT); 156 mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
161 irq = IRQ_CHAINED_GPIOD(0); 157 irq = IRQ_CHAINED_GPIOD(0);
162 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 158 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
163 h720x_gpio_handler(mask, irq, desc, regs); 159 h720x_gpio_handler(mask, irq, desc);
164} 160}
165 161
166#ifdef CONFIG_CPU_H7202 162#ifdef CONFIG_CPU_H7202
167static void 163static void
168h720x_gpioe_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 164h720x_gpioe_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
169 struct pt_regs *regs)
170{ 165{
171 unsigned int mask, irq; 166 unsigned int mask, irq;
172 167
173 mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT); 168 mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
174 irq = IRQ_CHAINED_GPIOE(0); 169 irq = IRQ_CHAINED_GPIOE(0);
175 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 170 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
176 h720x_gpio_handler(mask, irq, desc, regs); 171 h720x_gpio_handler(mask, irq, desc);
177} 172}
178#endif 173#endif
179 174
diff --git a/arch/arm/mach-h720x/cpu-h7201.c b/arch/arm/mach-h720x/cpu-h7201.c
index a9a8255a3a03..13f76bdb3d9d 100644
--- a/arch/arm/mach-h720x/cpu-h7201.c
+++ b/arch/arm/mach-h720x/cpu-h7201.c
@@ -27,12 +27,12 @@
27 * Timer interrupt handler 27 * Timer interrupt handler
28 */ 28 */
29static irqreturn_t 29static irqreturn_t
30h7201_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 30h7201_timer_interrupt(int irq, void *dev_id)
31{ 31{
32 write_seqlock(&xtime_lock); 32 write_seqlock(&xtime_lock);
33 33
34 CPU_REG (TIMER_VIRT, TIMER_TOPSTAT); 34 CPU_REG (TIMER_VIRT, TIMER_TOPSTAT);
35 timer_tick(regs); 35 timer_tick();
36 36
37 write_sequnlock(&xtime_lock); 37 write_sequnlock(&xtime_lock);
38 38
diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c
index da678d163fd9..06fecaefd8dc 100644
--- a/arch/arm/mach-h720x/cpu-h7202.c
+++ b/arch/arm/mach-h720x/cpu-h7202.c
@@ -106,8 +106,7 @@ static struct platform_device *devices[] __initdata = {
106 * we have to handle all timer interrupts in one place. 106 * we have to handle all timer interrupts in one place.
107 */ 107 */
108static void 108static void
109h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 109h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
110 struct pt_regs *regs)
111{ 110{
112 unsigned int mask, irq; 111 unsigned int mask, irq;
113 112
@@ -115,7 +114,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
115 114
116 if ( mask & TSTAT_T0INT ) { 115 if ( mask & TSTAT_T0INT ) {
117 write_seqlock(&xtime_lock); 116 write_seqlock(&xtime_lock);
118 timer_tick(regs); 117 timer_tick();
119 write_sequnlock(&xtime_lock); 118 write_sequnlock(&xtime_lock);
120 if( mask == TSTAT_T0INT ) 119 if( mask == TSTAT_T0INT )
121 return; 120 return;
@@ -126,7 +125,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
126 desc = irq_desc + irq; 125 desc = irq_desc + irq;
127 while (mask) { 126 while (mask) {
128 if (mask & 1) 127 if (mask & 1)
129 desc_handle_irq(irq, desc, regs); 128 desc_handle_irq(irq, desc);
130 irq++; 129 irq++;
131 desc++; 130 desc++;
132 mask >>= 1; 131 mask >>= 1;
@@ -137,9 +136,9 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
137 * Timer interrupt handler 136 * Timer interrupt handler
138 */ 137 */
139static irqreturn_t 138static irqreturn_t
140h7202_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 139h7202_timer_interrupt(int irq, void *dev_id)
141{ 140{
142 h7202_timerx_demux_handler(0, NULL, regs); 141 h7202_timerx_demux_handler(0, NULL);
143 return IRQ_HANDLED; 142 return IRQ_HANDLED;
144} 143}
145 144
diff --git a/arch/arm/mach-imx/dma.c b/arch/arm/mach-imx/dma.c
index 36578871ecc8..6d50d85a618c 100644
--- a/arch/arm/mach-imx/dma.c
+++ b/arch/arm/mach-imx/dma.c
@@ -279,8 +279,8 @@ imx_dma_setup_sg(imx_dmach_t dma_ch,
279 */ 279 */
280int 280int
281imx_dma_setup_handlers(imx_dmach_t dma_ch, 281imx_dma_setup_handlers(imx_dmach_t dma_ch,
282 void (*irq_handler) (int, void *, struct pt_regs *), 282 void (*irq_handler) (int, void *),
283 void (*err_handler) (int, void *, struct pt_regs *, int), 283 void (*err_handler) (int, void *, int),
284 void *data) 284 void *data)
285{ 285{
286 struct imx_dma_channel *imxdma = &imx_dma_channels[dma_ch]; 286 struct imx_dma_channel *imxdma = &imx_dma_channels[dma_ch];
@@ -461,7 +461,7 @@ imx_dma_request_by_prio(imx_dmach_t * pdma_ch, const char *name,
461 return -ENODEV; 461 return -ENODEV;
462} 462}
463 463
464static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs) 464static irqreturn_t dma_err_handler(int irq, void *dev_id)
465{ 465{
466 int i, disr = DISR; 466 int i, disr = DISR;
467 struct imx_dma_channel *channel; 467 struct imx_dma_channel *channel;
@@ -500,7 +500,7 @@ static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
500 /*imx_dma_channels[i].sg = NULL;*/ 500 /*imx_dma_channels[i].sg = NULL;*/
501 501
502 if (channel->name && channel->err_handler) { 502 if (channel->name && channel->err_handler) {
503 channel->err_handler(i, channel->data, regs, errcode); 503 channel->err_handler(i, channel->data, errcode);
504 continue; 504 continue;
505 } 505 }
506 506
@@ -517,7 +517,7 @@ static irqreturn_t dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
517 return IRQ_HANDLED; 517 return IRQ_HANDLED;
518} 518}
519 519
520static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 520static irqreturn_t dma_irq_handler(int irq, void *dev_id)
521{ 521{
522 int i, disr = DISR; 522 int i, disr = DISR;
523 523
@@ -536,7 +536,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
536 } else { 536 } else {
537 if (channel->irq_handler) 537 if (channel->irq_handler)
538 channel->irq_handler(i, 538 channel->irq_handler(i,
539 channel->data, regs); 539 channel->data);
540 } 540 }
541 } else { 541 } else {
542 /* 542 /*
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c
index 2688bd82c2a2..368b13b058ab 100644
--- a/arch/arm/mach-imx/irq.c
+++ b/arch/arm/mach-imx/irq.c
@@ -146,13 +146,13 @@ imx_gpio_unmask_irq(unsigned int irq)
146 146
147static void 147static void
148imx_gpio_handler(unsigned int mask, unsigned int irq, 148imx_gpio_handler(unsigned int mask, unsigned int irq,
149 struct irqdesc *desc, struct pt_regs *regs) 149 struct irqdesc *desc)
150{ 150{
151 desc = irq_desc + irq; 151 desc = irq_desc + irq;
152 while (mask) { 152 while (mask) {
153 if (mask & 1) { 153 if (mask & 1) {
154 DEBUG_IRQ("handling irq %d\n", irq); 154 DEBUG_IRQ("handling irq %d\n", irq);
155 desc_handle_irq(irq, desc, regs); 155 desc_handle_irq(irq, desc);
156 } 156 }
157 irq++; 157 irq++;
158 desc++; 158 desc++;
@@ -161,47 +161,43 @@ imx_gpio_handler(unsigned int mask, unsigned int irq,
161} 161}
162 162
163static void 163static void
164imx_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 164imx_gpioa_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
165 struct pt_regs *regs)
166{ 165{
167 unsigned int mask, irq; 166 unsigned int mask, irq;
168 167
169 mask = ISR(0); 168 mask = ISR(0);
170 irq = IRQ_GPIOA(0); 169 irq = IRQ_GPIOA(0);
171 imx_gpio_handler(mask, irq, desc, regs); 170 imx_gpio_handler(mask, irq, desc);
172} 171}
173 172
174static void 173static void
175imx_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 174imx_gpiob_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
176 struct pt_regs *regs)
177{ 175{
178 unsigned int mask, irq; 176 unsigned int mask, irq;
179 177
180 mask = ISR(1); 178 mask = ISR(1);
181 irq = IRQ_GPIOB(0); 179 irq = IRQ_GPIOB(0);
182 imx_gpio_handler(mask, irq, desc, regs); 180 imx_gpio_handler(mask, irq, desc);
183} 181}
184 182
185static void 183static void
186imx_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 184imx_gpioc_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
187 struct pt_regs *regs)
188{ 185{
189 unsigned int mask, irq; 186 unsigned int mask, irq;
190 187
191 mask = ISR(2); 188 mask = ISR(2);
192 irq = IRQ_GPIOC(0); 189 irq = IRQ_GPIOC(0);
193 imx_gpio_handler(mask, irq, desc, regs); 190 imx_gpio_handler(mask, irq, desc);
194} 191}
195 192
196static void 193static void
197imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 194imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
198 struct pt_regs *regs)
199{ 195{
200 unsigned int mask, irq; 196 unsigned int mask, irq;
201 197
202 mask = ISR(3); 198 mask = ISR(3);
203 irq = IRQ_GPIOD(0); 199 irq = IRQ_GPIOD(0);
204 imx_gpio_handler(mask, irq, desc, regs); 200 imx_gpio_handler(mask, irq, desc);
205} 201}
206 202
207static struct irq_chip imx_internal_chip = { 203static struct irq_chip imx_internal_chip = {
diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
index 6ed7523c65bb..8ae4a2c5066f 100644
--- a/arch/arm/mach-imx/time.c
+++ b/arch/arm/mach-imx/time.c
@@ -56,7 +56,7 @@ static unsigned long imx_gettimeoffset(void)
56 * IRQ handler for the timer 56 * IRQ handler for the timer
57 */ 57 */
58static irqreturn_t 58static irqreturn_t
59imx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 59imx_timer_interrupt(int irq, void *dev_id)
60{ 60{
61 write_seqlock(&xtime_lock); 61 write_seqlock(&xtime_lock);
62 62
@@ -64,7 +64,7 @@ imx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
64 if (IMX_TSTAT(TIMER_BASE)) 64 if (IMX_TSTAT(TIMER_BASE))
65 IMX_TSTAT(TIMER_BASE) = 0; 65 IMX_TSTAT(TIMER_BASE) = 0;
66 66
67 timer_tick(regs); 67 timer_tick();
68 write_sequnlock(&xtime_lock); 68 write_sequnlock(&xtime_lock);
69 69
70 return IRQ_HANDLED; 70 return IRQ_HANDLED;
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c
index 42021fdfa0c6..8d880cb9ba39 100644
--- a/arch/arm/mach-integrator/core.c
+++ b/arch/arm/mach-integrator/core.c
@@ -248,7 +248,7 @@ unsigned long integrator_gettimeoffset(void)
248 * IRQ handler for the timer 248 * IRQ handler for the timer
249 */ 249 */
250static irqreturn_t 250static irqreturn_t
251integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 251integrator_timer_interrupt(int irq, void *dev_id)
252{ 252{
253 write_seqlock(&xtime_lock); 253 write_seqlock(&xtime_lock);
254 254
@@ -262,7 +262,7 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
262 * primary CPU 262 * primary CPU
263 */ 263 */
264 if (hard_smp_processor_id() == 0) { 264 if (hard_smp_processor_id() == 0) {
265 timer_tick(regs); 265 timer_tick();
266#ifdef CONFIG_SMP 266#ifdef CONFIG_SMP
267 smp_send_timer(); 267 smp_send_timer();
268#endif 268#endif
@@ -272,7 +272,7 @@ integrator_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
272 /* 272 /*
273 * this is the ARM equivalent of the APIC timer interrupt 273 * this is the ARM equivalent of the APIC timer interrupt
274 */ 274 */
275 update_process_times(user_mode(regs)); 275 update_process_times(user_mode(get_irq_regs()));
276#endif /* CONFIG_SMP */ 276#endif /* CONFIG_SMP */
277 277
278 write_sequnlock(&xtime_lock); 278 write_sequnlock(&xtime_lock);
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 678b6ba2b463..771b65bffe69 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -202,12 +202,12 @@ static struct irq_chip sic_chip = {
202}; 202};
203 203
204static void 204static void
205sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 205sic_handle_irq(unsigned int irq, struct irqdesc *desc)
206{ 206{
207 unsigned long status = sic_readl(INTCP_VA_SIC_BASE + IRQ_STATUS); 207 unsigned long status = sic_readl(INTCP_VA_SIC_BASE + IRQ_STATUS);
208 208
209 if (status == 0) { 209 if (status == 0) {
210 do_bad_IRQ(irq, desc, regs); 210 do_bad_IRQ(irq, desc);
211 return; 211 return;
212 } 212 }
213 213
@@ -218,7 +218,7 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
218 irq += IRQ_SIC_START; 218 irq += IRQ_SIC_START;
219 219
220 desc = irq_desc + irq; 220 desc = irq_desc + irq;
221 desc_handle_irq(irq, desc, regs); 221 desc_handle_irq(irq, desc);
222 } while (status); 222 } while (status);
223} 223}
224 224
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c
index 4418f6d7572d..fb8c6d97b22b 100644
--- a/arch/arm/mach-integrator/pci_v3.c
+++ b/arch/arm/mach-integrator/pci_v3.c
@@ -440,9 +440,10 @@ v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
440 return 1; 440 return 1;
441} 441}
442 442
443static irqreturn_t v3_irq(int irq, void *devid, struct pt_regs *regs) 443static irqreturn_t v3_irq(int irq, void *devid)
444{ 444{
445#ifdef CONFIG_DEBUG_LL 445#ifdef CONFIG_DEBUG_LL
446 struct pt_regs *regs = get_irq_regs();
446 unsigned long pc = instruction_pointer(regs); 447 unsigned long pc = instruction_pointer(regs);
447 unsigned long instr = *(unsigned long *)pc; 448 unsigned long instr = *(unsigned long *)pc;
448 char buf[128]; 449 char buf[128];
diff --git a/arch/arm/mach-integrator/time.c b/arch/arm/mach-integrator/time.c
index ee49cf790dab..5278f589fcee 100644
--- a/arch/arm/mach-integrator/time.c
+++ b/arch/arm/mach-integrator/time.c
@@ -96,8 +96,7 @@ static struct rtc_ops rtc_ops = {
96 .set_alarm = integrator_rtc_set_alarm, 96 .set_alarm = integrator_rtc_set_alarm,
97}; 97};
98 98
99static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id, 99static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id)
100 struct pt_regs *regs)
101{ 100{
102 writel(0, rtc_base + RTC_EOI); 101 writel(0, rtc_base + RTC_EOI);
103 return IRQ_HANDLED; 102 return IRQ_HANDLED;
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c
index 7f91f689a041..22c98e9dad28 100644
--- a/arch/arm/mach-ixp2000/core.c
+++ b/arch/arm/mach-ixp2000/core.c
@@ -204,7 +204,7 @@ unsigned long ixp2000_gettimeoffset (void)
204 return offset / ticks_per_usec; 204 return offset / ticks_per_usec;
205} 205}
206 206
207static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 207static int ixp2000_timer_interrupt(int irq, void *dev_id)
208{ 208{
209 write_seqlock(&xtime_lock); 209 write_seqlock(&xtime_lock);
210 210
@@ -213,7 +213,7 @@ static int ixp2000_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
213 213
214 while ((signed long)(next_jiffy_time - *missing_jiffy_timer_csr) 214 while ((signed long)(next_jiffy_time - *missing_jiffy_timer_csr)
215 >= ticks_per_jiffy) { 215 >= ticks_per_jiffy) {
216 timer_tick(regs); 216 timer_tick();
217 next_jiffy_time -= ticks_per_jiffy; 217 next_jiffy_time -= ticks_per_jiffy;
218 } 218 }
219 219
@@ -308,7 +308,7 @@ EXPORT_SYMBOL(gpio_line_config);
308/************************************************************************* 308/*************************************************************************
309 * IRQ handling IXP2000 309 * IRQ handling IXP2000
310 *************************************************************************/ 310 *************************************************************************/
311static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 311static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc)
312{ 312{
313 int i; 313 int i;
314 unsigned long status = *IXP2000_GPIO_INST; 314 unsigned long status = *IXP2000_GPIO_INST;
@@ -316,7 +316,7 @@ static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, str
316 for (i = 0; i <= 7; i++) { 316 for (i = 0; i <= 7; i++) {
317 if (status & (1<<i)) { 317 if (status & (1<<i)) {
318 desc = irq_desc + i + IRQ_IXP2000_GPIO0; 318 desc = irq_desc + i + IRQ_IXP2000_GPIO0;
319 desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc, regs); 319 desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc);
320 } 320 }
321 } 321 }
322} 322}
@@ -401,7 +401,7 @@ static void ixp2000_pci_irq_unmask(unsigned int irq)
401/* 401/*
402 * Error interrupts. These are used extensively by the microengine drivers 402 * Error interrupts. These are used extensively by the microengine drivers
403 */ 403 */
404static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 404static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc)
405{ 405{
406 int i; 406 int i;
407 unsigned long status = *IXP2000_IRQ_ERR_STATUS; 407 unsigned long status = *IXP2000_IRQ_ERR_STATUS;
@@ -409,7 +409,7 @@ static void ixp2000_err_irq_handler(unsigned int irq, struct irqdesc *desc, str
409 for(i = 31; i >= 0; i--) { 409 for(i = 31; i >= 0; i--) {
410 if(status & (1 << i)) { 410 if(status & (1 << i)) {
411 desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i; 411 desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i;
412 desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc, regs); 412 desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc);
413 } 413 }
414 } 414 }
415} 415}
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c
index 40eef8b36740..af48cb52dfc4 100644
--- a/arch/arm/mach-ixp2000/ixdp2x00.c
+++ b/arch/arm/mach-ixp2000/ixdp2x00.c
@@ -106,7 +106,7 @@ static void ixdp2x00_irq_unmask(unsigned int irq)
106 ixp2000_release_slowport(&old_cfg); 106 ixp2000_release_slowport(&old_cfg);
107} 107}
108 108
109static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 109static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc)
110{ 110{
111 volatile u32 ex_interrupt = 0; 111 volatile u32 ex_interrupt = 0;
112 static struct slowport_cfg old_cfg; 112 static struct slowport_cfg old_cfg;
@@ -132,7 +132,7 @@ static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc, struct
132 struct irqdesc *cpld_desc; 132 struct irqdesc *cpld_desc;
133 int cpld_irq = IXP2000_BOARD_IRQ(0) + i; 133 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
134 cpld_desc = irq_desc + cpld_irq; 134 cpld_desc = irq_desc + cpld_irq;
135 desc_handle_irq(cpld_irq, cpld_desc, regs); 135 desc_handle_irq(cpld_irq, cpld_desc);
136 } 136 }
137 } 137 }
138 138
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c
index 7f42366f60d1..9ccae9e63f70 100644
--- a/arch/arm/mach-ixp2000/ixdp2x01.c
+++ b/arch/arm/mach-ixp2000/ixdp2x01.c
@@ -63,7 +63,7 @@ static void ixdp2x01_irq_unmask(unsigned int irq)
63 63
64static u32 valid_irq_mask; 64static u32 valid_irq_mask;
65 65
66static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 66static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc)
67{ 67{
68 u32 ex_interrupt; 68 u32 ex_interrupt;
69 int i; 69 int i;
@@ -82,7 +82,7 @@ static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc, struct
82 struct irqdesc *cpld_desc; 82 struct irqdesc *cpld_desc;
83 int cpld_irq = IXP2000_BOARD_IRQ(0) + i; 83 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
84 cpld_desc = irq_desc + cpld_irq; 84 cpld_desc = irq_desc + cpld_irq;
85 desc_handle_irq(cpld_irq, cpld_desc, regs); 85 desc_handle_irq(cpld_irq, cpld_desc);
86 } 86 }
87 } 87 }
88 88
diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c
index 566a07821c77..a704a1820048 100644
--- a/arch/arm/mach-ixp23xx/core.c
+++ b/arch/arm/mach-ixp23xx/core.c
@@ -251,7 +251,7 @@ static void ixp23xx_pci_irq_unmask(unsigned int irq)
251/* 251/*
252 * TODO: Should this just be done at ASM level? 252 * TODO: Should this just be done at ASM level?
253 */ 253 */
254static void pci_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 254static void pci_handler(unsigned int irq, struct irqdesc *desc)
255{ 255{
256 u32 pci_interrupt; 256 u32 pci_interrupt;
257 unsigned int irqno; 257 unsigned int irqno;
@@ -271,7 +271,7 @@ static void pci_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *
271 } 271 }
272 272
273 int_desc = irq_desc + irqno; 273 int_desc = irq_desc + irqno;
274 desc_handle_irq(irqno, int_desc, regs); 274 desc_handle_irq(irqno, int_desc);
275 275
276 desc->chip->unmask(irq); 276 desc->chip->unmask(irq);
277} 277}
@@ -348,12 +348,12 @@ ixp23xx_gettimeoffset(void)
348} 348}
349 349
350static irqreturn_t 350static irqreturn_t
351ixp23xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 351ixp23xx_timer_interrupt(int irq, void *dev_id)
352{ 352{
353 /* Clear Pending Interrupt by writing '1' to it */ 353 /* Clear Pending Interrupt by writing '1' to it */
354 *IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND; 354 *IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
355 while ((signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >= LATCH) { 355 while ((signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >= LATCH) {
356 timer_tick(regs); 356 timer_tick();
357 next_jiffy_time += LATCH; 357 next_jiffy_time += LATCH;
358 } 358 }
359 359
diff --git a/arch/arm/mach-ixp23xx/ixdp2351.c b/arch/arm/mach-ixp23xx/ixdp2351.c
index 37a32e6bcca2..b6ab0e8bb5e8 100644
--- a/arch/arm/mach-ixp23xx/ixdp2351.c
+++ b/arch/arm/mach-ixp23xx/ixdp2351.c
@@ -60,7 +60,7 @@ static void ixdp2351_inta_unmask(unsigned int irq)
60 *IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(irq); 60 *IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(irq);
61} 61}
62 62
63static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 63static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc)
64{ 64{
65 u16 ex_interrupt = 65 u16 ex_interrupt =
66 *IXDP2351_CPLD_INTA_STAT_REG & IXDP2351_INTA_IRQ_VALID; 66 *IXDP2351_CPLD_INTA_STAT_REG & IXDP2351_INTA_IRQ_VALID;
@@ -74,7 +74,7 @@ static void ixdp2351_inta_handler(unsigned int irq, struct irqdesc *desc, struct
74 int cpld_irq = 74 int cpld_irq =
75 IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i); 75 IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i);
76 cpld_desc = irq_desc + cpld_irq; 76 cpld_desc = irq_desc + cpld_irq;
77 desc_handle_irq(cpld_irq, cpld_desc, regs); 77 desc_handle_irq(cpld_irq, cpld_desc);
78 } 78 }
79 } 79 }
80 80
@@ -97,7 +97,7 @@ static void ixdp2351_intb_unmask(unsigned int irq)
97 *IXDP2351_CPLD_INTB_MASK_CLR_REG = IXDP2351_INTB_IRQ_MASK(irq); 97 *IXDP2351_CPLD_INTB_MASK_CLR_REG = IXDP2351_INTB_IRQ_MASK(irq);
98} 98}
99 99
100static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 100static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc)
101{ 101{
102 u16 ex_interrupt = 102 u16 ex_interrupt =
103 *IXDP2351_CPLD_INTB_STAT_REG & IXDP2351_INTB_IRQ_VALID; 103 *IXDP2351_CPLD_INTB_STAT_REG & IXDP2351_INTB_IRQ_VALID;
@@ -111,7 +111,7 @@ static void ixdp2351_intb_handler(unsigned int irq, struct irqdesc *desc, struct
111 int cpld_irq = 111 int cpld_irq =
112 IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i); 112 IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i);
113 cpld_desc = irq_desc + cpld_irq; 113 cpld_desc = irq_desc + cpld_irq;
114 desc_handle_irq(cpld_irq, cpld_desc, regs); 114 desc_handle_irq(cpld_irq, cpld_desc);
115 } 115 }
116 } 116 }
117 117
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index 35dd8b3824b0..c7513f6eb50c 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -256,7 +256,7 @@ static unsigned volatile last_jiffy_time;
256 256
257#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC) 257#define CLOCK_TICKS_PER_USEC ((CLOCK_TICK_RATE + USEC_PER_SEC/2) / USEC_PER_SEC)
258 258
259static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 259static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
260{ 260{
261 write_seqlock(&xtime_lock); 261 write_seqlock(&xtime_lock);
262 262
@@ -267,7 +267,7 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id, struct pt_regs
267 * Catch up with the real idea of time 267 * Catch up with the real idea of time
268 */ 268 */
269 while ((signed long)(*IXP4XX_OSTS - last_jiffy_time) >= LATCH) { 269 while ((signed long)(*IXP4XX_OSTS - last_jiffy_time) >= LATCH) {
270 timer_tick(regs); 270 timer_tick();
271 last_jiffy_time += LATCH; 271 last_jiffy_time += LATCH;
272 } 272 }
273 273
diff --git a/arch/arm/mach-ixp4xx/nas100d-power.c b/arch/arm/mach-ixp4xx/nas100d-power.c
index 81ffcae1f56e..29aa98d3a7fa 100644
--- a/arch/arm/mach-ixp4xx/nas100d-power.c
+++ b/arch/arm/mach-ixp4xx/nas100d-power.c
@@ -24,7 +24,7 @@
24 24
25#include <asm/mach-types.h> 25#include <asm/mach-types.h>
26 26
27static irqreturn_t nas100d_reset_handler(int irq, void *dev_id, struct pt_regs *regs) 27static irqreturn_t nas100d_reset_handler(int irq, void *dev_id)
28{ 28{
29 /* Signal init to do the ctrlaltdel action, this will bypass init if 29 /* Signal init to do the ctrlaltdel action, this will bypass init if
30 * it hasn't started and do a kernel_restart. 30 * it hasn't started and do a kernel_restart.
diff --git a/arch/arm/mach-ixp4xx/nslu2-power.c b/arch/arm/mach-ixp4xx/nslu2-power.c
index a29b3b2b61b6..acd71e9c38a7 100644
--- a/arch/arm/mach-ixp4xx/nslu2-power.c
+++ b/arch/arm/mach-ixp4xx/nslu2-power.c
@@ -25,7 +25,7 @@
25 25
26#include <asm/mach-types.h> 26#include <asm/mach-types.h>
27 27
28static irqreturn_t nslu2_power_handler(int irq, void *dev_id, struct pt_regs *regs) 28static irqreturn_t nslu2_power_handler(int irq, void *dev_id)
29{ 29{
30 /* Signal init to do the ctrlaltdel action, this will bypass init if 30 /* Signal init to do the ctrlaltdel action, this will bypass init if
31 * it hasn't started and do a kernel_restart. 31 * it hasn't started and do a kernel_restart.
@@ -35,7 +35,7 @@ static irqreturn_t nslu2_power_handler(int irq, void *dev_id, struct pt_regs *re
35 return IRQ_HANDLED; 35 return IRQ_HANDLED;
36} 36}
37 37
38static irqreturn_t nslu2_reset_handler(int irq, void *dev_id, struct pt_regs *regs) 38static irqreturn_t nslu2_reset_handler(int irq, void *dev_id)
39{ 39{
40 /* This is the paper-clip reset, it shuts the machine down directly. 40 /* This is the paper-clip reset, it shuts the machine down directly.
41 */ 41 */
diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c
index 4f2ab48800a5..15fbcc911fe7 100644
--- a/arch/arm/mach-lh7a40x/arch-kev7a400.c
+++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c
@@ -71,14 +71,13 @@ static struct irq_chip kev7a400_cpld_chip = {
71}; 71};
72 72
73 73
74static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc, 74static void kev7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
75 struct pt_regs *regs)
76{ 75{
77 u32 mask = CPLD_LATCHED_INTS; 76 u32 mask = CPLD_LATCHED_INTS;
78 irq = IRQ_KEV7A400_CPLD; 77 irq = IRQ_KEV7A400_CPLD;
79 for (; mask; mask >>= 1, ++irq) { 78 for (; mask; mask >>= 1, ++irq) {
80 if (mask & 1) 79 if (mask & 1)
81 desc[irq].handle (irq, desc, regs); 80 desc[irq].handle (irq, desc);
82 } 81 }
83} 82}
84 83
diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
index a21b12f06c6b..8441e0a156cb 100644
--- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
+++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c
@@ -207,8 +207,7 @@ static struct irq_chip lpd7a40x_cpld_chip = {
207 .unmask = lh7a40x_unmask_cpld_irq, 207 .unmask = lh7a40x_unmask_cpld_irq,
208}; 208};
209 209
210static void lpd7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc, 210static void lpd7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
211 struct pt_regs *regs)
212{ 211{
213 unsigned int mask = CPLD_INTERRUPTS; 212 unsigned int mask = CPLD_INTERRUPTS;
214 213
diff --git a/arch/arm/mach-lh7a40x/irq-kev7a400.c b/arch/arm/mach-lh7a40x/irq-kev7a400.c
index f9b3fe9174a5..646071334b8f 100644
--- a/arch/arm/mach-lh7a40x/irq-kev7a400.c
+++ b/arch/arm/mach-lh7a40x/irq-kev7a400.c
@@ -51,14 +51,13 @@ irq_chip lh7a400_cpld_chip = {
51}; 51};
52 52
53static void 53static void
54lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc, 54lh7a400_cpld_handler (unsigned int irq, struct irqdesc *desc)
55 struct pt_regs *regs)
56{ 55{
57 u32 mask = CPLD_LATCHED_INTS; 56 u32 mask = CPLD_LATCHED_INTS;
58 irq = IRQ_KEV_7A400_CPLD; 57 irq = IRQ_KEV_7A400_CPLD;
59 for (; mask; mask >>= 1, ++irq) { 58 for (; mask; mask >>= 1, ++irq) {
60 if (mask & 1) 59 if (mask & 1)
61 desc[irq].handle (irq, desc, regs); 60 desc[irq].handle (irq, desc);
62 } 61 }
63} 62}
64 63
diff --git a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c
index d6055dde6468..b20376804bbb 100644
--- a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c
+++ b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c
@@ -57,8 +57,7 @@ static struct irq_chip lh7a40x_cpld_chip = {
57 .unmask = lh7a40x_unmask_cpld_irq, 57 .unmask = lh7a40x_unmask_cpld_irq,
58}; 58};
59 59
60static void lh7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc, 60static void lh7a40x_cpld_handler (unsigned int irq, struct irqdesc *desc)
61 struct pt_regs *regs)
62{ 61{
63 unsigned int mask = CPLD_INTERRUPTS; 62 unsigned int mask = CPLD_INTERRUPTS;
64 63
diff --git a/arch/arm/mach-lh7a40x/time.c b/arch/arm/mach-lh7a40x/time.c
index ad5652e01507..bef3c4b68d3b 100644
--- a/arch/arm/mach-lh7a40x/time.c
+++ b/arch/arm/mach-lh7a40x/time.c
@@ -39,12 +39,12 @@
39#endif 39#endif
40 40
41static irqreturn_t 41static irqreturn_t
42lh7a40x_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 42lh7a40x_timer_interrupt(int irq, void *dev_id)
43{ 43{
44 write_seqlock(&xtime_lock); 44 write_seqlock(&xtime_lock);
45 45
46 TIMER_EOI = 0; 46 TIMER_EOI = 0;
47 timer_tick(regs); 47 timer_tick();
48 48
49 write_sequnlock(&xtime_lock); 49 write_sequnlock(&xtime_lock);
50 50
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c
index af0b13534cfd..edbbbdc3b06b 100644
--- a/arch/arm/mach-netx/generic.c
+++ b/arch/arm/mach-netx/generic.c
@@ -69,8 +69,7 @@ static struct platform_device *devices[] __initdata = {
69#endif 69#endif
70 70
71static void 71static void
72netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc, 72netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc)
73 struct pt_regs *regs)
74{ 73{
75 unsigned int irq = NETX_IRQ_HIF_CHAINED(0); 74 unsigned int irq = NETX_IRQ_HIF_CHAINED(0);
76 unsigned int stat; 75 unsigned int stat;
@@ -83,7 +82,7 @@ netx_hif_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
83 while (stat) { 82 while (stat) {
84 if (stat & 1) { 83 if (stat & 1) {
85 DEBUG_IRQ("handling irq %d\n", irq); 84 DEBUG_IRQ("handling irq %d\n", irq);
86 desc_handle_irq(irq, desc, regs); 85 desc_handle_irq(irq, desc);
87 } 86 }
88 irq++; 87 irq++;
89 desc++; 88 desc++;
diff --git a/arch/arm/mach-netx/time.c b/arch/arm/mach-netx/time.c
index 6d72c81b7d9f..0993336c0b55 100644
--- a/arch/arm/mach-netx/time.c
+++ b/arch/arm/mach-netx/time.c
@@ -38,11 +38,11 @@ static unsigned long netx_gettimeoffset(void)
38 * IRQ handler for the timer 38 * IRQ handler for the timer
39 */ 39 */
40static irqreturn_t 40static irqreturn_t
41netx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 41netx_timer_interrupt(int irq, void *dev_id)
42{ 42{
43 write_seqlock(&xtime_lock); 43 write_seqlock(&xtime_lock);
44 44
45 timer_tick(regs); 45 timer_tick();
46 write_sequnlock(&xtime_lock); 46 write_sequnlock(&xtime_lock);
47 47
48 /* acknowledge interrupt */ 48 /* acknowledge interrupt */
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 6b05647a6c01..3a622801d7b0 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -327,7 +327,7 @@ static struct spi_board_info __initdata mistral_boardinfo[] = { {
327 327
328#ifdef CONFIG_PM 328#ifdef CONFIG_PM
329static irqreturn_t 329static irqreturn_t
330osk_mistral_wake_interrupt(int irq, void *ignored, struct pt_regs *regs) 330osk_mistral_wake_interrupt(int irq, void *ignored)
331{ 331{
332 return IRQ_HANDLED; 332 return IRQ_HANDLED;
333} 333}
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index efe9bfc6e55f..8e40208b10bb 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -84,8 +84,7 @@ static void fpga_mask_ack_irq(unsigned int irq)
84 fpga_ack_irq(irq); 84 fpga_ack_irq(irq);
85} 85}
86 86
87void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc, 87void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc)
88 struct pt_regs *regs)
89{ 88{
90 struct irqdesc *d; 89 struct irqdesc *d;
91 u32 stat; 90 u32 stat;
@@ -101,7 +100,7 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc,
101 fpga_irq++, stat >>= 1) { 100 fpga_irq++, stat >>= 1) {
102 if (stat & 1) { 101 if (stat & 1) {
103 d = irq_desc + fpga_irq; 102 d = irq_desc + fpga_irq;
104 desc_handle_irq(fpga_irq, d, regs); 103 desc_handle_irq(fpga_irq, d);
105 } 104 }
106 } 105 }
107} 106}
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c
index cd76185bab74..4834758d340c 100644
--- a/arch/arm/mach-omap1/pm.c
+++ b/arch/arm/mach-omap1/pm.c
@@ -682,8 +682,7 @@ static int omap_pm_finish(suspend_state_t state)
682} 682}
683 683
684 684
685static irqreturn_t omap_wakeup_interrupt(int irq, void * dev, 685static irqreturn_t omap_wakeup_interrupt(int irq, void *dev)
686 struct pt_regs * regs)
687{ 686{
688 return IRQ_HANDLED; 687 return IRQ_HANDLED;
689} 688}
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c
index c4b790217a5b..4cc98a578e4b 100644
--- a/arch/arm/mach-omap1/serial.c
+++ b/arch/arm/mach-omap1/serial.c
@@ -204,8 +204,7 @@ void __init omap_serial_init(void)
204 204
205#ifdef CONFIG_OMAP_SERIAL_WAKE 205#ifdef CONFIG_OMAP_SERIAL_WAKE
206 206
207static irqreturn_t omap_serial_wake_interrupt(int irq, void *dev_id, 207static irqreturn_t omap_serial_wake_interrupt(int irq, void *dev_id)
208 struct pt_regs *regs)
209{ 208{
210 /* Need to do something with serial port right after wake-up? */ 209 /* Need to do something with serial port right after wake-up? */
211 return IRQ_HANDLED; 210 return IRQ_HANDLED;
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c
index 4d91b9f51084..1b7e4a506c26 100644
--- a/arch/arm/mach-omap1/time.c
+++ b/arch/arm/mach-omap1/time.c
@@ -160,8 +160,7 @@ static unsigned long omap_mpu_timer_gettimeoffset(void)
160 * Latency during the interrupt is calculated using timer1. 160 * Latency during the interrupt is calculated using timer1.
161 * Both timer0 and timer1 are counting at 6MHz (P2 6.5MHz). 161 * Both timer0 and timer1 are counting at 6MHz (P2 6.5MHz).
162 */ 162 */
163static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id, 163static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id)
164 struct pt_regs *regs)
165{ 164{
166 unsigned long now, latency; 165 unsigned long now, latency;
167 166
@@ -169,7 +168,7 @@ static irqreturn_t omap_mpu_timer_interrupt(int irq, void *dev_id,
169 now = 0 - omap_mpu_timer_read(0); 168 now = 0 - omap_mpu_timer_read(0);
170 latency = MPU_TICKS_PER_SEC / HZ - omap_mpu_timer_read(1); 169 latency = MPU_TICKS_PER_SEC / HZ - omap_mpu_timer_read(1);
171 omap_mpu_timer_last = now - latency; 170 omap_mpu_timer_last = now - latency;
172 timer_tick(regs); 171 timer_tick();
173 write_sequnlock(&xtime_lock); 172 write_sequnlock(&xtime_lock);
174 173
175 return IRQ_HANDLED; 174 return IRQ_HANDLED;
@@ -182,8 +181,7 @@ static struct irqaction omap_mpu_timer_irq = {
182}; 181};
183 182
184static unsigned long omap_mpu_timer1_overflows; 183static unsigned long omap_mpu_timer1_overflows;
185static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id, 184static irqreturn_t omap_mpu_timer1_interrupt(int irq, void *dev_id)
186 struct pt_regs *regs)
187{ 185{
188 omap_mpu_timer1_overflows++; 186 omap_mpu_timer1_overflows++;
189 return IRQ_HANDLED; 187 return IRQ_HANDLED;
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
index c37b0e6d1248..03d6905ba490 100644
--- a/arch/arm/mach-omap2/board-apollon.c
+++ b/arch/arm/mach-omap2/board-apollon.c
@@ -203,7 +203,7 @@ static void __init apollon_led_init(void)
203 omap_set_gpio_dataout(LED2_GPIO15, 0); 203 omap_set_gpio_dataout(LED2_GPIO15, 0);
204} 204}
205 205
206static irqreturn_t apollon_sw_interrupt(int irq, void *ignored, struct pt_regs *regs) 206static irqreturn_t apollon_sw_interrupt(int irq, void *ignored)
207{ 207{
208 static unsigned int led0, led1, led2; 208 static unsigned int led0, led1, led2;
209 209
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index fe5fd6d42dea..973189cd9766 100644
--- a/arch/arm/mach-omap2/timer-gp.c
+++ b/arch/arm/mach-omap2/timer-gp.c
@@ -37,13 +37,12 @@ static inline void omap2_gp_timer_start(unsigned long load_val)
37 omap_dm_timer_start(gptimer); 37 omap_dm_timer_start(gptimer);
38} 38}
39 39
40static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id, 40static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
41 struct pt_regs *regs)
42{ 41{
43 write_seqlock(&xtime_lock); 42 write_seqlock(&xtime_lock);
44 43
45 omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW); 44 omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW);
46 timer_tick(regs); 45 timer_tick();
47 46
48 write_sequnlock(&xtime_lock); 47 write_sequnlock(&xtime_lock);
49 48
diff --git a/arch/arm/mach-pnx4008/dma.c b/arch/arm/mach-pnx4008/dma.c
index ec01574f88ac..d6a279e4b524 100644
--- a/arch/arm/mach-pnx4008/dma.c
+++ b/arch/arm/mach-pnx4008/dma.c
@@ -32,7 +32,7 @@
32 32
33static struct dma_channel { 33static struct dma_channel {
34 char *name; 34 char *name;
35 void (*irq_handler) (int, int, void *, struct pt_regs *); 35 void (*irq_handler) (int, int, void *);
36 void *data; 36 void *data;
37 struct pnx4008_dma_ll *ll; 37 struct pnx4008_dma_ll *ll;
38 u32 ll_dma; 38 u32 ll_dma;
@@ -150,8 +150,7 @@ static inline void pnx4008_dma_unlock(void)
150#define VALID_CHANNEL(c) (((c) >= 0) && ((c) < MAX_DMA_CHANNELS)) 150#define VALID_CHANNEL(c) (((c) >= 0) && ((c) < MAX_DMA_CHANNELS))
151 151
152int pnx4008_request_channel(char *name, int ch, 152int pnx4008_request_channel(char *name, int ch,
153 void (*irq_handler) (int, int, void *, 153 void (*irq_handler) (int, int, void *), void *data)
154 struct pt_regs *), void *data)
155{ 154{
156 int i, found = 0; 155 int i, found = 0;
157 156
@@ -1033,7 +1032,7 @@ int pnx4008_dma_ch_enabled(int ch)
1033 1032
1034EXPORT_SYMBOL_GPL(pnx4008_dma_ch_enabled); 1033EXPORT_SYMBOL_GPL(pnx4008_dma_ch_enabled);
1035 1034
1036static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 1035static irqreturn_t dma_irq_handler(int irq, void *dev_id)
1037{ 1036{
1038 int i; 1037 int i;
1039 unsigned long dint = __raw_readl(DMAC_INT_STAT); 1038 unsigned long dint = __raw_readl(DMAC_INT_STAT);
@@ -1053,8 +1052,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
1053 cause |= DMA_ERR_INT; 1052 cause |= DMA_ERR_INT;
1054 if (tcint & i_bit) 1053 if (tcint & i_bit)
1055 cause |= DMA_TC_INT; 1054 cause |= DMA_TC_INT;
1056 channel->irq_handler(i, cause, channel->data, 1055 channel->irq_handler(i, cause, channel->data);
1057 regs);
1058 } else { 1056 } else {
1059 /* 1057 /*
1060 * IRQ for an unregistered DMA channel 1058 * IRQ for an unregistered DMA channel
diff --git a/arch/arm/mach-pnx4008/time.c b/arch/arm/mach-pnx4008/time.c
index b986065cd0f3..8621c206ac84 100644
--- a/arch/arm/mach-pnx4008/time.c
+++ b/arch/arm/mach-pnx4008/time.c
@@ -47,15 +47,14 @@ static unsigned long pnx4008_gettimeoffset(void)
47/*! 47/*!
48 * IRQ handler for the timer 48 * IRQ handler for the timer
49 */ 49 */
50static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id, 50static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id)
51 struct pt_regs *regs)
52{ 51{
53 if (__raw_readl(HSTIM_INT) & MATCH0_INT) { 52 if (__raw_readl(HSTIM_INT) & MATCH0_INT) {
54 53
55 write_seqlock(&xtime_lock); 54 write_seqlock(&xtime_lock);
56 55
57 do { 56 do {
58 timer_tick(regs); 57 timer_tick();
59 58
60 /* 59 /*
61 * this algorithm takes care of possible delay 60 * this algorithm takes care of possible delay
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 337c01c4ac37..a1a900d16665 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -212,7 +212,7 @@ static struct platform_device corgits_device = {
212 */ 212 */
213static struct pxamci_platform_data corgi_mci_platform_data; 213static struct pxamci_platform_data corgi_mci_platform_data;
214 214
215static int corgi_mci_init(struct device *dev, irqreturn_t (*corgi_detect_int)(int, void *, struct pt_regs *), void *data) 215static int corgi_mci_init(struct device *dev, irq_handler_t corgi_detect_int, void *data)
216{ 216{
217 int err; 217 int err;
218 218
diff --git a/arch/arm/mach-pxa/dma.c b/arch/arm/mach-pxa/dma.c
index 7d8c85486c66..4440babe7b97 100644
--- a/arch/arm/mach-pxa/dma.c
+++ b/arch/arm/mach-pxa/dma.c
@@ -27,13 +27,13 @@
27 27
28static struct dma_channel { 28static struct dma_channel {
29 char *name; 29 char *name;
30 void (*irq_handler)(int, void *, struct pt_regs *); 30 void (*irq_handler)(int, void *);
31 void *data; 31 void *data;
32} dma_channels[PXA_DMA_CHANNELS]; 32} dma_channels[PXA_DMA_CHANNELS];
33 33
34 34
35int pxa_request_dma (char *name, pxa_dma_prio prio, 35int pxa_request_dma (char *name, pxa_dma_prio prio,
36 void (*irq_handler)(int, void *, struct pt_regs *), 36 void (*irq_handler)(int, void *),
37 void *data) 37 void *data)
38{ 38{
39 unsigned long flags; 39 unsigned long flags;
@@ -87,7 +87,7 @@ void pxa_free_dma (int dma_ch)
87 local_irq_restore(flags); 87 local_irq_restore(flags);
88} 88}
89 89
90static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 90static irqreturn_t dma_irq_handler(int irq, void *dev_id)
91{ 91{
92 int i, dint = DINT; 92 int i, dint = DINT;
93 93
@@ -95,7 +95,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
95 if (dint & (1 << i)) { 95 if (dint & (1 << i)) {
96 struct dma_channel *channel = &dma_channels[i]; 96 struct dma_channel *channel = &dma_channels[i];
97 if (channel->name && channel->irq_handler) { 97 if (channel->name && channel->irq_handler) {
98 channel->irq_handler(i, channel->data, regs); 98 channel->irq_handler(i, channel->data);
99 } else { 99 } else {
100 /* 100 /*
101 * IRQ for an unregistered DMA channel: 101 * IRQ for an unregistered DMA channel:
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index 3e4b0ab71c66..64df44043a65 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -125,7 +125,7 @@ static struct pxafb_mach_info sharp_lm8v31 = {
125 .pxafb_lcd_power = &idp_lcd_power 125 .pxafb_lcd_power = &idp_lcd_power
126}; 126};
127 127
128static int idp_mci_init(struct device *dev, irqreturn_t (*idp_detect_int)(int, void *, struct pt_regs *), void *data) 128static int idp_mci_init(struct device *dev, irq_handler_t idp_detect_int, void *data)
129{ 129{
130 /* setup GPIO for PXA25x MMC controller */ 130 /* setup GPIO for PXA25x MMC controller */
131 pxa_gpio_mode(GPIO6_MMCCLK_MD); 131 pxa_gpio_mode(GPIO6_MMCCLK_MD);
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index 12141e2a50cc..ab1a16025d51 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -143,8 +143,7 @@ static struct irq_chip pxa_low_gpio_chip = {
143 * Demux handler for GPIO>=2 edge detect interrupts 143 * Demux handler for GPIO>=2 edge detect interrupts
144 */ 144 */
145 145
146static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc, 146static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc)
147 struct pt_regs *regs)
148{ 147{
149 unsigned int mask; 148 unsigned int mask;
150 int loop; 149 int loop;
@@ -160,7 +159,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
160 mask >>= 2; 159 mask >>= 2;
161 do { 160 do {
162 if (mask & 1) 161 if (mask & 1)
163 desc_handle_irq(irq, desc, regs); 162 desc_handle_irq(irq, desc);
164 irq++; 163 irq++;
165 desc++; 164 desc++;
166 mask >>= 1; 165 mask >>= 1;
@@ -175,7 +174,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
175 desc = irq_desc + irq; 174 desc = irq_desc + irq;
176 do { 175 do {
177 if (mask & 1) 176 if (mask & 1)
178 desc_handle_irq(irq, desc, regs); 177 desc_handle_irq(irq, desc);
179 irq++; 178 irq++;
180 desc++; 179 desc++;
181 mask >>= 1; 180 mask >>= 1;
@@ -190,7 +189,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
190 desc = irq_desc + irq; 189 desc = irq_desc + irq;
191 do { 190 do {
192 if (mask & 1) 191 if (mask & 1)
193 desc_handle_irq(irq, desc, regs); 192 desc_handle_irq(irq, desc);
194 irq++; 193 irq++;
195 desc++; 194 desc++;
196 mask >>= 1; 195 mask >>= 1;
@@ -206,7 +205,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
206 desc = irq_desc + irq; 205 desc = irq_desc + irq;
207 do { 206 do {
208 if (mask & 1) 207 if (mask & 1)
209 desc_handle_irq(irq, desc, regs); 208 desc_handle_irq(irq, desc);
210 irq++; 209 irq++;
211 desc++; 210 desc++;
212 mask >>= 1; 211 mask >>= 1;
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index eff2a91b2565..5749f6b72e12 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -75,8 +75,7 @@ static struct irq_chip lpd270_irq_chip = {
75 .unmask = lpd270_unmask_irq, 75 .unmask = lpd270_unmask_irq,
76}; 76};
77 77
78static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc, 78static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc)
79 struct pt_regs *regs)
80{ 79{
81 unsigned long pending; 80 unsigned long pending;
82 81
@@ -86,7 +85,7 @@ static void lpd270_irq_handler(unsigned int irq, struct irqdesc *desc,
86 if (likely(pending)) { 85 if (likely(pending)) {
87 irq = LPD270_IRQ(0) + __ffs(pending); 86 irq = LPD270_IRQ(0) + __ffs(pending);
88 desc = irq_desc + irq; 87 desc = irq_desc + irq;
89 desc_handle_irq(irq, desc, regs); 88 desc_handle_irq(irq, desc);
90 89
91 pending = __raw_readw(LPD270_INT_STATUS) & 90 pending = __raw_readw(LPD270_INT_STATUS) &
92 lpd270_irq_enabled; 91 lpd270_irq_enabled;
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 157cf47cbe66..ee80d62119d3 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -85,8 +85,7 @@ static struct irq_chip lubbock_irq_chip = {
85 .unmask = lubbock_unmask_irq, 85 .unmask = lubbock_unmask_irq,
86}; 86};
87 87
88static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc, 88static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc)
89 struct pt_regs *regs)
90{ 89{
91 unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; 90 unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
92 do { 91 do {
@@ -94,7 +93,7 @@ static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc,
94 if (likely(pending)) { 93 if (likely(pending)) {
95 irq = LUBBOCK_IRQ(0) + __ffs(pending); 94 irq = LUBBOCK_IRQ(0) + __ffs(pending);
96 desc = irq_desc + irq; 95 desc = irq_desc + irq;
97 desc_handle_irq(irq, desc, regs); 96 desc_handle_irq(irq, desc);
98 } 97 }
99 pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; 98 pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
100 } while (pending); 99 } while (pending);
@@ -379,7 +378,7 @@ static struct pxafb_mach_info sharp_lm8v31 = {
379#define MMC_POLL_RATE msecs_to_jiffies(1000) 378#define MMC_POLL_RATE msecs_to_jiffies(1000)
380 379
381static void lubbock_mmc_poll(unsigned long); 380static void lubbock_mmc_poll(unsigned long);
382static irqreturn_t (*mmc_detect_int)(int, void *, struct pt_regs *); 381static irq_handler_t mmc_detect_int;
383 382
384static struct timer_list mmc_timer = { 383static struct timer_list mmc_timer = {
385 .function = lubbock_mmc_poll, 384 .function = lubbock_mmc_poll,
@@ -403,17 +402,17 @@ static void lubbock_mmc_poll(unsigned long data)
403 } 402 }
404} 403}
405 404
406static irqreturn_t lubbock_detect_int(int irq, void *data, struct pt_regs *regs) 405static irqreturn_t lubbock_detect_int(int irq, void *data)
407{ 406{
408 /* IRQ is level triggered; disable, and poll for removal */ 407 /* IRQ is level triggered; disable, and poll for removal */
409 disable_irq(irq); 408 disable_irq(irq);
410 mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE); 409 mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE);
411 410
412 return mmc_detect_int(irq, data, regs); 411 return mmc_detect_int(irq, data);
413} 412}
414 413
415static int lubbock_mci_init(struct device *dev, 414static int lubbock_mci_init(struct device *dev,
416 irqreturn_t (*detect_int)(int, void *, struct pt_regs *), 415 irq_handler_t detect_int,
417 void *data) 416 void *data)
418{ 417{
419 /* setup GPIO for PXA25x MMC controller */ 418 /* setup GPIO for PXA25x MMC controller */
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index 7ba0447d6fa3..49c34d94a9fe 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -71,8 +71,7 @@ static struct irq_chip mainstone_irq_chip = {
71 .unmask = mainstone_unmask_irq, 71 .unmask = mainstone_unmask_irq,
72}; 72};
73 73
74static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc, 74static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc)
75 struct pt_regs *regs)
76{ 75{
77 unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled; 76 unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled;
78 do { 77 do {
@@ -80,7 +79,7 @@ static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc,
80 if (likely(pending)) { 79 if (likely(pending)) {
81 irq = MAINSTONE_IRQ(0) + __ffs(pending); 80 irq = MAINSTONE_IRQ(0) + __ffs(pending);
82 desc = irq_desc + irq; 81 desc = irq_desc + irq;
83 desc_handle_irq(irq, desc, regs); 82 desc_handle_irq(irq, desc);
84 } 83 }
85 pending = MST_INTSETCLR & mainstone_irq_enabled; 84 pending = MST_INTSETCLR & mainstone_irq_enabled;
86 } while (pending); 85 } while (pending);
@@ -314,7 +313,7 @@ static struct pxafb_mach_info mainstone_pxafb_info = {
314 .pxafb_backlight_power = mainstone_backlight_power, 313 .pxafb_backlight_power = mainstone_backlight_power,
315}; 314};
316 315
317static int mainstone_mci_init(struct device *dev, irqreturn_t (*mstone_detect_int)(int, void *, struct pt_regs *), void *data) 316static int mainstone_mci_init(struct device *dev, irq_handler_t mstone_detect_int, void *data)
318{ 317{
319 int err; 318 int err;
320 319
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 5e8c098ca139..34fb80b37023 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -197,7 +197,7 @@ static struct platform_device poodle_ts_device = {
197 */ 197 */
198static struct pxamci_platform_data poodle_mci_platform_data; 198static struct pxamci_platform_data poodle_mci_platform_data;
199 199
200static int poodle_mci_init(struct device *dev, irqreturn_t (*poodle_detect_int)(int, void *, struct pt_regs *), void *data) 200static int poodle_mci_init(struct device *dev, irq_handler_t poodle_detect_int, void *data)
201{ 201{
202 int err; 202 int err;
203 203
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 401cdb850fbc..3cbac63bed3c 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -291,7 +291,7 @@ static struct platform_device spitzts_device = {
291 291
292static struct pxamci_platform_data spitz_mci_platform_data; 292static struct pxamci_platform_data spitz_mci_platform_data;
293 293
294static int spitz_mci_init(struct device *dev, irqreturn_t (*spitz_detect_int)(int, void *, struct pt_regs *), void *data) 294static int spitz_mci_init(struct device *dev, irq_handler_t spitz_detect_int, void *data)
295{ 295{
296 int err; 296 int err;
297 297
diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c
index 1fddfeaa630d..6cc202755fb4 100644
--- a/arch/arm/mach-pxa/ssp.c
+++ b/arch/arm/mach-pxa/ssp.c
@@ -65,7 +65,7 @@ static const struct ssp_info_ ssp_info[PXA_SSP_PORTS] = {
65static DEFINE_MUTEX(mutex); 65static DEFINE_MUTEX(mutex);
66static int use_count[PXA_SSP_PORTS] = {0, 0, 0}; 66static int use_count[PXA_SSP_PORTS] = {0, 0, 0};
67 67
68static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 68static irqreturn_t ssp_interrupt(int irq, void *dev_id)
69{ 69{
70 struct ssp_dev *dev = (struct ssp_dev*) dev_id; 70 struct ssp_dev *dev = (struct ssp_dev*) dev_id;
71 unsigned int status = SSSR_P(dev->port); 71 unsigned int status = SSSR_P(dev->port);
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
index 5dbd191c57c4..3ac268fa419b 100644
--- a/arch/arm/mach-pxa/time.c
+++ b/arch/arm/mach-pxa/time.c
@@ -75,7 +75,7 @@ static int match_posponed;
75#endif 75#endif
76 76
77static irqreturn_t 77static irqreturn_t
78pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 78pxa_timer_interrupt(int irq, void *dev_id)
79{ 79{
80 int next_match; 80 int next_match;
81 81
@@ -105,7 +105,7 @@ pxa_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
105 * exactly one tick period which should be a pretty rare event. 105 * exactly one tick period which should be a pretty rare event.
106 */ 106 */
107 do { 107 do {
108 timer_tick(regs); 108 timer_tick();
109 OSSR = OSSR_M0; /* Clear match on timer 0 */ 109 OSSR = OSSR_M0; /* Clear match on timer 0 */
110 next_match = (OSMR0 += LATCH); 110 next_match = (OSMR0 += LATCH);
111 } while( (signed long)(next_match - OSCR) <= 8 ); 111 } while( (signed long)(next_match - OSCR) <= 8 );
@@ -157,13 +157,13 @@ static void pxa_dyn_tick_reprogram(unsigned long ticks)
157} 157}
158 158
159static irqreturn_t 159static irqreturn_t
160pxa_dyn_tick_handler(int irq, void *dev_id, struct pt_regs *regs) 160pxa_dyn_tick_handler(int irq, void *dev_id)
161{ 161{
162 if (match_posponed) { 162 if (match_posponed) {
163 match_posponed = 0; 163 match_posponed = 0;
164 OSMR0 = initial_match; 164 OSMR0 = initial_match;
165 if ( (signed long)(initial_match - OSCR) <= 8 ) 165 if ( (signed long)(initial_match - OSCR) <= 8 )
166 return pxa_timer_interrupt(irq, dev_id, regs); 166 return pxa_timer_interrupt(irq, dev_id);
167 } 167 }
168 return IRQ_NONE; 168 return IRQ_NONE;
169} 169}
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 249353616aba..7915a5a22865 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -174,7 +174,7 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
174 */ 174 */
175static struct pxamci_platform_data tosa_mci_platform_data; 175static struct pxamci_platform_data tosa_mci_platform_data;
176 176
177static int tosa_mci_init(struct device *dev, irqreturn_t (*tosa_detect_int)(int, void *, struct pt_regs *), void *data) 177static int tosa_mci_init(struct device *dev, irq_handler_t tosa_detect_int, void *data)
178{ 178{
179 int err; 179 int err;
180 180
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index 910571e9a190..c1827d021ba8 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -270,7 +270,7 @@ void board_pcmcia_power(int power) {;}
270#endif /* CONFIG_MACH_TRIZEPS4_CONXS */ 270#endif /* CONFIG_MACH_TRIZEPS4_CONXS */
271EXPORT_SYMBOL(board_pcmcia_power); 271EXPORT_SYMBOL(board_pcmcia_power);
272 272
273static int trizeps4_mci_init(struct device *dev, irqreturn_t (*mci_detect_int)(int, void *, struct pt_regs *), void *data) 273static int trizeps4_mci_init(struct device *dev, irq_handler_t mci_detect_int, void *data)
274{ 274{
275 int err; 275 int err;
276 /* setup GPIO for PXA27x MMC controller */ 276 /* setup GPIO for PXA27x MMC controller */
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index da0286973823..68c67053f479 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -515,18 +515,18 @@ static unsigned long realview_gettimeoffset(void)
515/* 515/*
516 * IRQ handler for the timer 516 * IRQ handler for the timer
517 */ 517 */
518static irqreturn_t realview_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 518static irqreturn_t realview_timer_interrupt(int irq, void *dev_id)
519{ 519{
520 write_seqlock(&xtime_lock); 520 write_seqlock(&xtime_lock);
521 521
522 // ...clear the interrupt 522 // ...clear the interrupt
523 writel(1, TIMER0_VA_BASE + TIMER_INTCLR); 523 writel(1, TIMER0_VA_BASE + TIMER_INTCLR);
524 524
525 timer_tick(regs); 525 timer_tick();
526 526
527#if defined(CONFIG_SMP) && !defined(CONFIG_LOCAL_TIMERS) 527#if defined(CONFIG_SMP) && !defined(CONFIG_LOCAL_TIMERS)
528 smp_send_timer(); 528 smp_send_timer();
529 update_process_times(user_mode(regs)); 529 update_process_times(user_mode(get_irq_regs()));
530#endif 530#endif
531 531
532 write_sequnlock(&xtime_lock); 532 write_sequnlock(&xtime_lock);
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c
index ac511d41d4d7..596379a4cf82 100644
--- a/arch/arm/mach-rpc/dma.c
+++ b/arch/arm/mach-rpc/dma.c
@@ -83,7 +83,7 @@ static void iomd_get_next_sg(struct scatterlist *sg, dma_t *dma)
83 sg->length |= flags; 83 sg->length |= flags;
84} 84}
85 85
86static irqreturn_t iomd_dma_handle(int irq, void *dev_id, struct pt_regs *regs) 86static irqreturn_t iomd_dma_handle(int irq, void *dev_id)
87{ 87{
88 dma_t *dma = (dma_t *)dev_id; 88 dma_t *dma = (dma_t *)dev_id;
89 unsigned long base = dma->dma_base; 89 unsigned long base = dma->dma_base;
diff --git a/arch/arm/mach-s3c2410/bast-irq.c b/arch/arm/mach-s3c2410/bast-irq.c
index 440e9aa0211a..23d5beea5568 100644
--- a/arch/arm/mach-s3c2410/bast-irq.c
+++ b/arch/arm/mach-s3c2410/bast-irq.c
@@ -112,8 +112,7 @@ static struct irqchip bast_pc104_chip = {
112 112
113static void 113static void
114bast_irq_pc104_demux(unsigned int irq, 114bast_irq_pc104_demux(unsigned int irq,
115 struct irqdesc *desc, 115 struct irqdesc *desc)
116 struct pt_regs *regs)
117{ 116{
118 unsigned int stat; 117 unsigned int stat;
119 unsigned int irqno; 118 unsigned int irqno;
@@ -133,7 +132,7 @@ bast_irq_pc104_demux(unsigned int irq,
133 if (stat & 1) { 132 if (stat & 1) {
134 irqno = bast_pc104_irqs[i]; 133 irqno = bast_pc104_irqs[i];
135 desc = irq_desc + irqno; 134 desc = irq_desc + irqno;
136 desc_handle_irq(irqno, desc, regs); 135 desc_handle_irq(irqno, desc);
137 } 136 }
138 } 137 }
139 } 138 }
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c
index d264bbbd8bef..3d211dc2f2f9 100644
--- a/arch/arm/mach-s3c2410/dma.c
+++ b/arch/arm/mach-s3c2410/dma.c
@@ -595,7 +595,7 @@ s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan)
595#define dmadbg2(x...) 595#define dmadbg2(x...)
596 596
597static irqreturn_t 597static irqreturn_t
598s3c2410_dma_irq(int irq, void *devpw, struct pt_regs *regs) 598s3c2410_dma_irq(int irq, void *devpw)
599{ 599{
600 struct s3c2410_dma_chan *chan = (struct s3c2410_dma_chan *)devpw; 600 struct s3c2410_dma_chan *chan = (struct s3c2410_dma_chan *)devpw;
601 struct s3c2410_dma_buf *buf; 601 struct s3c2410_dma_buf *buf;
diff --git a/arch/arm/mach-s3c2410/irq.c b/arch/arm/mach-s3c2410/irq.c
index 3e9f3462c61b..683b3491ba3c 100644
--- a/arch/arm/mach-s3c2410/irq.c
+++ b/arch/arm/mach-s3c2410/irq.c
@@ -480,8 +480,7 @@ static struct irqchip s3c_irq_adc = {
480 480
481/* irq demux for adc */ 481/* irq demux for adc */
482static void s3c_irq_demux_adc(unsigned int irq, 482static void s3c_irq_demux_adc(unsigned int irq,
483 struct irqdesc *desc, 483 struct irqdesc *desc)
484 struct pt_regs *regs)
485{ 484{
486 unsigned int subsrc, submsk; 485 unsigned int subsrc, submsk;
487 unsigned int offset = 9; 486 unsigned int offset = 9;
@@ -500,17 +499,16 @@ static void s3c_irq_demux_adc(unsigned int irq,
500 if (subsrc != 0) { 499 if (subsrc != 0) {
501 if (subsrc & 1) { 500 if (subsrc & 1) {
502 mydesc = irq_desc + IRQ_TC; 501 mydesc = irq_desc + IRQ_TC;
503 desc_handle_irq(IRQ_TC, mydesc, regs); 502 desc_handle_irq(IRQ_TC, mydesc);
504 } 503 }
505 if (subsrc & 2) { 504 if (subsrc & 2) {
506 mydesc = irq_desc + IRQ_ADC; 505 mydesc = irq_desc + IRQ_ADC;
507 desc_handle_irq(IRQ_ADC, mydesc, regs); 506 desc_handle_irq(IRQ_ADC, mydesc);
508 } 507 }
509 } 508 }
510} 509}
511 510
512static void s3c_irq_demux_uart(unsigned int start, 511static void s3c_irq_demux_uart(unsigned int start)
513 struct pt_regs *regs)
514{ 512{
515 unsigned int subsrc, submsk; 513 unsigned int subsrc, submsk;
516 unsigned int offset = start - IRQ_S3CUART_RX0; 514 unsigned int offset = start - IRQ_S3CUART_RX0;
@@ -533,17 +531,17 @@ static void s3c_irq_demux_uart(unsigned int start,
533 desc = irq_desc + start; 531 desc = irq_desc + start;
534 532
535 if (subsrc & 1) 533 if (subsrc & 1)
536 desc_handle_irq(start, desc, regs); 534 desc_handle_irq(start, desc);
537 535
538 desc++; 536 desc++;
539 537
540 if (subsrc & 2) 538 if (subsrc & 2)
541 desc_handle_irq(start+1, desc, regs); 539 desc_handle_irq(start+1, desc);
542 540
543 desc++; 541 desc++;
544 542
545 if (subsrc & 4) 543 if (subsrc & 4)
546 desc_handle_irq(start+2, desc, regs); 544 desc_handle_irq(start+2, desc);
547 } 545 }
548} 546}
549 547
@@ -551,35 +549,31 @@ static void s3c_irq_demux_uart(unsigned int start,
551 549
552static void 550static void
553s3c_irq_demux_uart0(unsigned int irq, 551s3c_irq_demux_uart0(unsigned int irq,
554 struct irqdesc *desc, 552 struct irqdesc *desc)
555 struct pt_regs *regs)
556{ 553{
557 irq = irq; 554 irq = irq;
558 s3c_irq_demux_uart(IRQ_S3CUART_RX0, regs); 555 s3c_irq_demux_uart(IRQ_S3CUART_RX0);
559} 556}
560 557
561static void 558static void
562s3c_irq_demux_uart1(unsigned int irq, 559s3c_irq_demux_uart1(unsigned int irq,
563 struct irqdesc *desc, 560 struct irqdesc *desc)
564 struct pt_regs *regs)
565{ 561{
566 irq = irq; 562 irq = irq;
567 s3c_irq_demux_uart(IRQ_S3CUART_RX1, regs); 563 s3c_irq_demux_uart(IRQ_S3CUART_RX1);
568} 564}
569 565
570static void 566static void
571s3c_irq_demux_uart2(unsigned int irq, 567s3c_irq_demux_uart2(unsigned int irq,
572 struct irqdesc *desc, 568 struct irqdesc *desc)
573 struct pt_regs *regs)
574{ 569{
575 irq = irq; 570 irq = irq;
576 s3c_irq_demux_uart(IRQ_S3CUART_RX2, regs); 571 s3c_irq_demux_uart(IRQ_S3CUART_RX2);
577} 572}
578 573
579static void 574static void
580s3c_irq_demux_extint8(unsigned int irq, 575s3c_irq_demux_extint8(unsigned int irq,
581 struct irqdesc *desc, 576 struct irqdesc *desc)
582 struct pt_regs *regs)
583{ 577{
584 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND); 578 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND);
585 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK); 579 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK);
@@ -594,15 +588,14 @@ s3c_irq_demux_extint8(unsigned int irq,
594 eintpnd &= ~(1<<irq); 588 eintpnd &= ~(1<<irq);
595 589
596 irq += (IRQ_EINT4 - 4); 590 irq += (IRQ_EINT4 - 4);
597 desc_handle_irq(irq, irq_desc + irq, regs); 591 desc_handle_irq(irq, irq_desc + irq);
598 } 592 }
599 593
600} 594}
601 595
602static void 596static void
603s3c_irq_demux_extint4t7(unsigned int irq, 597s3c_irq_demux_extint4t7(unsigned int irq,
604 struct irqdesc *desc, 598 struct irqdesc *desc)
605 struct pt_regs *regs)
606{ 599{
607 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND); 600 unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND);
608 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK); 601 unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK);
@@ -618,7 +611,7 @@ s3c_irq_demux_extint4t7(unsigned int irq,
618 611
619 irq += (IRQ_EINT4 - 4); 612 irq += (IRQ_EINT4 - 4);
620 613
621 desc_handle_irq(irq, irq_desc + irq, regs); 614 desc_handle_irq(irq, irq_desc + irq);
622 } 615 }
623} 616}
624 617
diff --git a/arch/arm/mach-s3c2410/mach-amlm5900.c b/arch/arm/mach-s3c2410/mach-amlm5900.c
index ba5109af40b4..817e2c684410 100644
--- a/arch/arm/mach-s3c2410/mach-amlm5900.c
+++ b/arch/arm/mach-s3c2410/mach-amlm5900.c
@@ -226,7 +226,7 @@ static struct s3c2410fb_mach_info __initdata amlm5900_lcd_info = {
226#endif 226#endif
227 227
228static irqreturn_t 228static irqreturn_t
229amlm5900_wake_interrupt(int irq, void *ignored, struct pt_regs *regs) 229amlm5900_wake_interrupt(int irq, void *ignored)
230{ 230{
231 return IRQ_HANDLED; 231 return IRQ_HANDLED;
232} 232}
diff --git a/arch/arm/mach-s3c2410/s3c2440-irq.c b/arch/arm/mach-s3c2410/s3c2440-irq.c
index fc08febe2e54..39db0752d53b 100644
--- a/arch/arm/mach-s3c2410/s3c2440-irq.c
+++ b/arch/arm/mach-s3c2410/s3c2440-irq.c
@@ -42,8 +42,7 @@
42/* WDT/AC97 */ 42/* WDT/AC97 */
43 43
44static void s3c_irq_demux_wdtac97(unsigned int irq, 44static void s3c_irq_demux_wdtac97(unsigned int irq,
45 struct irqdesc *desc, 45 struct irqdesc *desc)
46 struct pt_regs *regs)
47{ 46{
48 unsigned int subsrc, submsk; 47 unsigned int subsrc, submsk;
49 struct irqdesc *mydesc; 48 struct irqdesc *mydesc;
@@ -61,11 +60,11 @@ static void s3c_irq_demux_wdtac97(unsigned int irq,
61 if (subsrc != 0) { 60 if (subsrc != 0) {
62 if (subsrc & 1) { 61 if (subsrc & 1) {
63 mydesc = irq_desc + IRQ_S3C2440_WDT; 62 mydesc = irq_desc + IRQ_S3C2440_WDT;
64 desc_handle_irq(IRQ_S3C2440_WDT, mydesc, regs); 63 desc_handle_irq(IRQ_S3C2440_WDT, mydesc);
65 } 64 }
66 if (subsrc & 2) { 65 if (subsrc & 2) {
67 mydesc = irq_desc + IRQ_S3C2440_AC97; 66 mydesc = irq_desc + IRQ_S3C2440_AC97;
68 desc_handle_irq(IRQ_S3C2440_AC97, mydesc, regs); 67 desc_handle_irq(IRQ_S3C2440_AC97, mydesc);
69 } 68 }
70 } 69 }
71} 70}
diff --git a/arch/arm/mach-s3c2410/s3c244x-irq.c b/arch/arm/mach-s3c2410/s3c244x-irq.c
index ec702f88b299..146f2109dd90 100644
--- a/arch/arm/mach-s3c2410/s3c244x-irq.c
+++ b/arch/arm/mach-s3c2410/s3c244x-irq.c
@@ -42,8 +42,7 @@
42/* camera irq */ 42/* camera irq */
43 43
44static void s3c_irq_demux_cam(unsigned int irq, 44static void s3c_irq_demux_cam(unsigned int irq,
45 struct irqdesc *desc, 45 struct irqdesc *desc)
46 struct pt_regs *regs)
47{ 46{
48 unsigned int subsrc, submsk; 47 unsigned int subsrc, submsk;
49 struct irqdesc *mydesc; 48 struct irqdesc *mydesc;
@@ -61,11 +60,11 @@ static void s3c_irq_demux_cam(unsigned int irq,
61 if (subsrc != 0) { 60 if (subsrc != 0) {
62 if (subsrc & 1) { 61 if (subsrc & 1) {
63 mydesc = irq_desc + IRQ_S3C2440_CAM_C; 62 mydesc = irq_desc + IRQ_S3C2440_CAM_C;
64 desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc, regs); 63 desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc);
65 } 64 }
66 if (subsrc & 2) { 65 if (subsrc & 2) {
67 mydesc = irq_desc + IRQ_S3C2440_CAM_P; 66 mydesc = irq_desc + IRQ_S3C2440_CAM_P;
68 desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc, regs); 67 desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc);
69 } 68 }
70 } 69 }
71} 70}
diff --git a/arch/arm/mach-s3c2410/time.c b/arch/arm/mach-s3c2410/time.c
index 00d1cfca9712..9910bf0f2cea 100644
--- a/arch/arm/mach-s3c2410/time.c
+++ b/arch/arm/mach-s3c2410/time.c
@@ -128,10 +128,10 @@ static unsigned long s3c2410_gettimeoffset (void)
128 * IRQ handler for the timer 128 * IRQ handler for the timer
129 */ 129 */
130static irqreturn_t 130static irqreturn_t
131s3c2410_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 131s3c2410_timer_interrupt(int irq, void *dev_id)
132{ 132{
133 write_seqlock(&xtime_lock); 133 write_seqlock(&xtime_lock);
134 timer_tick(regs); 134 timer_tick();
135 write_sequnlock(&xtime_lock); 135 write_sequnlock(&xtime_lock);
136 return IRQ_HANDLED; 136 return IRQ_HANDLED;
137} 137}
diff --git a/arch/arm/mach-s3c2410/usb-simtec.c b/arch/arm/mach-s3c2410/usb-simtec.c
index c635efa7cd31..22b0e1cdd4bf 100644
--- a/arch/arm/mach-s3c2410/usb-simtec.c
+++ b/arch/arm/mach-s3c2410/usb-simtec.c
@@ -58,7 +58,7 @@ usb_simtec_powercontrol(int port, int to)
58} 58}
59 59
60static irqreturn_t 60static irqreturn_t
61usb_simtec_ocirq(int irq, void *pw, struct pt_regs *regs) 61usb_simtec_ocirq(int irq, void *pw)
62{ 62{
63 struct s3c2410_hcd_info *info = (struct s3c2410_hcd_info *)pw; 63 struct s3c2410_hcd_info *info = (struct s3c2410_hcd_info *)pw;
64 64
diff --git a/arch/arm/mach-sa1100/dma.c b/arch/arm/mach-sa1100/dma.c
index 2ea2a657a034..1fbe053e8b59 100644
--- a/arch/arm/mach-sa1100/dma.c
+++ b/arch/arm/mach-sa1100/dma.c
@@ -42,7 +42,7 @@ static sa1100_dma_t dma_chan[SA1100_DMA_CHANNELS];
42static spinlock_t dma_list_lock; 42static spinlock_t dma_list_lock;
43 43
44 44
45static irqreturn_t dma_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 45static irqreturn_t dma_irq_handler(int irq, void *dev_id)
46{ 46{
47 dma_regs_t *dma_regs = dev_id; 47 dma_regs_t *dma_regs = dev_id;
48 sa1100_dma_t *dma = dma_chan + (((u_int)dma_regs >> 5) & 7); 48 sa1100_dma_t *dma = dma_chan + (((u_int)dma_regs >> 5) & 7);
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index 7364478cec12..fa6dc71bd6ad 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -702,7 +702,7 @@ static u32 gpio_irq_mask[] = {
702 GPIO2_SD_CON_SLT, 702 GPIO2_SD_CON_SLT,
703}; 703};
704 704
705static void h3800_IRQ_demux(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 705static void h3800_IRQ_demux(unsigned int irq, struct irqdesc *desc)
706{ 706{
707 int i; 707 int i;
708 708
@@ -719,14 +719,14 @@ static void h3800_IRQ_demux(unsigned int irq, struct irqdesc *desc, struct pt_re
719 if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq); 719 if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq);
720 for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++) 720 for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++)
721 if (irq & kpio_irq_mask[j]) 721 if (irq & kpio_irq_mask[j])
722 do_edge_IRQ(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j, regs); 722 do_edge_IRQ(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j);
723 723
724 /* GPIO2 */ 724 /* GPIO2 */
725 irq = H3800_ASIC2_GPIINTFLAG; 725 irq = H3800_ASIC2_GPIINTFLAG;
726 if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq); 726 if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq);
727 for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++) 727 for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++)
728 if (irq & gpio_irq_mask[j]) 728 if (irq & gpio_irq_mask[j])
729 do_edge_IRQ(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j , regs); 729 do_edge_IRQ(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j);
730 } 730 }
731 731
732 if (i >= MAX_ASIC_ISR_LOOPS) 732 if (i >= MAX_ASIC_ISR_LOOPS)
diff --git a/arch/arm/mach-sa1100/irq.c b/arch/arm/mach-sa1100/irq.c
index b55b90a2e8fe..f4c6322ca33e 100644
--- a/arch/arm/mach-sa1100/irq.c
+++ b/arch/arm/mach-sa1100/irq.c
@@ -110,8 +110,7 @@ static struct irq_chip sa1100_low_gpio_chip = {
110 * and call the handler. 110 * and call the handler.
111 */ 111 */
112static void 112static void
113sa1100_high_gpio_handler(unsigned int irq, struct irqdesc *desc, 113sa1100_high_gpio_handler(unsigned int irq, struct irqdesc *desc)
114 struct pt_regs *regs)
115{ 114{
116 unsigned int mask; 115 unsigned int mask;
117 116
@@ -128,7 +127,7 @@ sa1100_high_gpio_handler(unsigned int irq, struct irqdesc *desc,
128 mask >>= 11; 127 mask >>= 11;
129 do { 128 do {
130 if (mask & 1) 129 if (mask & 1)
131 desc_handle_irq(irq, desc, regs); 130 desc_handle_irq(irq, desc);
132 mask >>= 1; 131 mask >>= 1;
133 irq++; 132 irq++;
134 desc++; 133 desc++;
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index af6d2775cf82..354d5e91da59 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -29,7 +29,7 @@
29 * is rather unfortunate. 29 * is rather unfortunate.
30 */ 30 */
31static void 31static void
32neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 32neponset_irq_handler(unsigned int irq, struct irqdesc *desc)
33{ 33{
34 unsigned int irr; 34 unsigned int irr;
35 35
@@ -69,12 +69,12 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
69 69
70 if (irr & IRR_ETHERNET) { 70 if (irr & IRR_ETHERNET) {
71 d = irq_desc + IRQ_NEPONSET_SMC9196; 71 d = irq_desc + IRQ_NEPONSET_SMC9196;
72 desc_handle_irq(IRQ_NEPONSET_SMC9196, d, regs); 72 desc_handle_irq(IRQ_NEPONSET_SMC9196, d);
73 } 73 }
74 74
75 if (irr & IRR_USAR) { 75 if (irr & IRR_USAR) {
76 d = irq_desc + IRQ_NEPONSET_USAR; 76 d = irq_desc + IRQ_NEPONSET_USAR;
77 desc_handle_irq(IRQ_NEPONSET_USAR, d, regs); 77 desc_handle_irq(IRQ_NEPONSET_USAR, d);
78 } 78 }
79 79
80 desc->chip->unmask(irq); 80 desc->chip->unmask(irq);
@@ -82,7 +82,7 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
82 82
83 if (irr & IRR_SA1111) { 83 if (irr & IRR_SA1111) {
84 d = irq_desc + IRQ_NEPONSET_SA1111; 84 d = irq_desc + IRQ_NEPONSET_SA1111;
85 desc_handle_irq(IRQ_NEPONSET_SA1111, d, regs); 85 desc_handle_irq(IRQ_NEPONSET_SA1111, d);
86 } 86 }
87 } 87 }
88} 88}
diff --git a/arch/arm/mach-sa1100/ssp.c b/arch/arm/mach-sa1100/ssp.c
index 5eba5fbbb561..59703c6fb29b 100644
--- a/arch/arm/mach-sa1100/ssp.c
+++ b/arch/arm/mach-sa1100/ssp.c
@@ -25,7 +25,7 @@
25 25
26#define TIMEOUT 100000 26#define TIMEOUT 100000
27 27
28static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 28static irqreturn_t ssp_interrupt(int irq, void *dev_id)
29{ 29{
30 unsigned int status = Ser4SSSR; 30 unsigned int status = Ser4SSSR;
31 31
diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c
index 49ae716e16c2..4284bd6f7a1f 100644
--- a/arch/arm/mach-sa1100/time.c
+++ b/arch/arm/mach-sa1100/time.c
@@ -77,7 +77,7 @@ static int match_posponed;
77#endif 77#endif
78 78
79static irqreturn_t 79static irqreturn_t
80sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 80sa1100_timer_interrupt(int irq, void *dev_id)
81{ 81{
82 unsigned int next_match; 82 unsigned int next_match;
83 83
@@ -99,7 +99,7 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
99 * handlers. 99 * handlers.
100 */ 100 */
101 do { 101 do {
102 timer_tick(regs); 102 timer_tick();
103 OSSR = OSSR_M0; /* Clear match on timer 0 */ 103 OSSR = OSSR_M0; /* Clear match on timer 0 */
104 next_match = (OSMR0 += LATCH); 104 next_match = (OSMR0 += LATCH);
105 } while ((signed long)(next_match - OSCR) <= 0); 105 } while ((signed long)(next_match - OSCR) <= 0);
@@ -151,13 +151,13 @@ static void sa1100_dyn_tick_reprogram(unsigned long ticks)
151} 151}
152 152
153static irqreturn_t 153static irqreturn_t
154sa1100_dyn_tick_handler(int irq, void *dev_id, struct pt_regs *regs) 154sa1100_dyn_tick_handler(int irq, void *dev_id)
155{ 155{
156 if (match_posponed) { 156 if (match_posponed) {
157 match_posponed = 0; 157 match_posponed = 0;
158 OSMR0 = initial_match; 158 OSMR0 = initial_match;
159 if ((signed long)(initial_match - OSCR) <= 0) 159 if ((signed long)(initial_match - OSCR) <= 0)
160 return sa1100_timer_interrupt(irq, dev_id, regs); 160 return sa1100_timer_interrupt(irq, dev_id);
161 } 161 }
162 return IRQ_NONE; 162 return IRQ_NONE;
163} 163}
diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c
index 1095df34fec0..0e480fae8ec5 100644
--- a/arch/arm/mach-shark/core.c
+++ b/arch/arm/mach-shark/core.c
@@ -80,10 +80,10 @@ static void __init shark_map_io(void)
80#define HZ_TIME ((1193180 + HZ/2) / HZ) 80#define HZ_TIME ((1193180 + HZ/2) / HZ)
81 81
82static irqreturn_t 82static irqreturn_t
83shark_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 83shark_timer_interrupt(int irq, void *dev_id)
84{ 84{
85 write_seqlock(&xtime_lock); 85 write_seqlock(&xtime_lock);
86 timer_tick(regs); 86 timer_tick();
87 write_sequnlock(&xtime_lock); 87 write_sequnlock(&xtime_lock);
88 return IRQ_HANDLED; 88 return IRQ_HANDLED;
89} 89}
diff --git a/arch/arm/mach-shark/irq.c b/arch/arm/mach-shark/irq.c
index b227052296cf..297ecf130650 100644
--- a/arch/arm/mach-shark/irq.c
+++ b/arch/arm/mach-shark/irq.c
@@ -61,7 +61,7 @@ static void shark_enable_8259A_irq(unsigned int irq)
61 61
62static void shark_ack_8259A_irq(unsigned int irq){} 62static void shark_ack_8259A_irq(unsigned int irq){}
63 63
64static irqreturn_t bogus_int(int irq, void *dev_id, struct pt_regs *regs) 64static irqreturn_t bogus_int(int irq, void *dev_id)
65{ 65{
66 printk("Got interrupt %i!\n",irq); 66 printk("Got interrupt %i!\n",irq);
67 return IRQ_NONE; 67 return IRQ_NONE;
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index f2bbef07b1e4..2aa150b57ba1 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -77,12 +77,12 @@ static struct irq_chip sic_chip = {
77}; 77};
78 78
79static void 79static void
80sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) 80sic_handle_irq(unsigned int irq, struct irqdesc *desc)
81{ 81{
82 unsigned long status = readl(VA_SIC_BASE + SIC_IRQ_STATUS); 82 unsigned long status = readl(VA_SIC_BASE + SIC_IRQ_STATUS);
83 83
84 if (status == 0) { 84 if (status == 0) {
85 do_bad_IRQ(irq, desc, regs); 85 do_bad_IRQ(irq, desc);
86 return; 86 return;
87 } 87 }
88 88
@@ -93,7 +93,7 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
93 irq += IRQ_SIC_START; 93 irq += IRQ_SIC_START;
94 94
95 desc = irq_desc + irq; 95 desc = irq_desc + irq;
96 desc_handle_irq(irq, desc, regs); 96 desc_handle_irq(irq, desc);
97 } while (status); 97 } while (status);
98} 98}
99 99
@@ -851,14 +851,14 @@ static unsigned long versatile_gettimeoffset(void)
851/* 851/*
852 * IRQ handler for the timer 852 * IRQ handler for the timer
853 */ 853 */
854static irqreturn_t versatile_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 854static irqreturn_t versatile_timer_interrupt(int irq, void *dev_id)
855{ 855{
856 write_seqlock(&xtime_lock); 856 write_seqlock(&xtime_lock);
857 857
858 // ...clear the interrupt 858 // ...clear the interrupt
859 writel(1, TIMER0_VA_BASE + TIMER_INTCLR); 859 writel(1, TIMER0_VA_BASE + TIMER_INTCLR);
860 860
861 timer_tick(regs); 861 timer_tick();
862 862
863 write_sequnlock(&xtime_lock); 863 write_sequnlock(&xtime_lock);
864 864
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index 591fc3187c7f..465440592791 100644
--- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c
@@ -361,14 +361,14 @@ __ioremap(unsigned long phys_addr, size_t size, unsigned long flags)
361} 361}
362EXPORT_SYMBOL(__ioremap); 362EXPORT_SYMBOL(__ioremap);
363 363
364void __iounmap(void __iomem *addr) 364void __iounmap(volatile void __iomem *addr)
365{ 365{
366#ifndef CONFIG_SMP 366#ifndef CONFIG_SMP
367 struct vm_struct **p, *tmp; 367 struct vm_struct **p, *tmp;
368#endif 368#endif
369 unsigned int section_mapping = 0; 369 unsigned int section_mapping = 0;
370 370
371 addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); 371 addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long)addr);
372 372
373#ifndef CONFIG_SMP 373#ifndef CONFIG_SMP
374 /* 374 /*
@@ -395,6 +395,6 @@ void __iounmap(void __iomem *addr)
395#endif 395#endif
396 396
397 if (!section_mapping) 397 if (!section_mapping)
398 vunmap(addr); 398 vunmap((void __force *)addr);
399} 399}
400EXPORT_SYMBOL(__iounmap); 400EXPORT_SYMBOL(__iounmap);
diff --git a/arch/arm/oprofile/op_model_xscale.c b/arch/arm/oprofile/op_model_xscale.c
index 726ad2b3b435..7899d3ca75a3 100644
--- a/arch/arm/oprofile/op_model_xscale.c
+++ b/arch/arm/oprofile/op_model_xscale.c
@@ -341,7 +341,7 @@ static void inline __xsc2_check_ctrs(void)
341 __asm__ __volatile__ ("mcr p14, 0, %0, c5, c1, 0" : : "r" (flag)); 341 __asm__ __volatile__ ("mcr p14, 0, %0, c5, c1, 0" : : "r" (flag));
342} 342}
343 343
344static irqreturn_t xscale_pmu_interrupt(int irq, void *arg, struct pt_regs *regs) 344static irqreturn_t xscale_pmu_interrupt(int irq, void *arg)
345{ 345{
346 int i; 346 int i;
347 u32 pmnc; 347 u32 pmnc;
@@ -356,7 +356,7 @@ static irqreturn_t xscale_pmu_interrupt(int irq, void *arg, struct pt_regs *regs
356 continue; 356 continue;
357 357
358 write_counter(i, -(u32)results[i].reset_counter); 358 write_counter(i, -(u32)results[i].reset_counter);
359 oprofile_add_sample(regs, i); 359 oprofile_add_sample(get_irq_regs(), i);
360 results[i].ovf--; 360 results[i].ovf--;
361 } 361 }
362 362
diff --git a/arch/arm/plat-iop/time.c b/arch/arm/plat-iop/time.c
index 06282dffbdc6..f530abdaa7a1 100644
--- a/arch/arm/plat-iop/time.c
+++ b/arch/arm/plat-iop/time.c
@@ -47,7 +47,7 @@ unsigned long iop3xx_gettimeoffset(void)
47} 47}
48 48
49static irqreturn_t 49static irqreturn_t
50iop3xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 50iop3xx_timer_interrupt(int irq, void *dev_id)
51{ 51{
52 write_seqlock(&xtime_lock); 52 write_seqlock(&xtime_lock);
53 53
@@ -57,7 +57,7 @@ iop3xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
57 57
58 while ((signed long)(next_jiffy_time - *IOP3XX_TU_TCR1) 58 while ((signed long)(next_jiffy_time - *IOP3XX_TU_TCR1)
59 >= ticks_per_jiffy) { 59 >= ticks_per_jiffy) {
60 timer_tick(regs); 60 timer_tick();
61 next_jiffy_time -= ticks_per_jiffy; 61 next_jiffy_time -= ticks_per_jiffy;
62 } 62 }
63 63
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index 1bbb431843ce..bb045e5ddbd8 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -899,8 +899,7 @@ static int omap1_dma_handle_ch(int ch)
899 return 1; 899 return 1;
900} 900}
901 901
902static irqreturn_t omap1_dma_irq_handler(int irq, void *dev_id, 902static irqreturn_t omap1_dma_irq_handler(int irq, void *dev_id)
903 struct pt_regs *regs)
904{ 903{
905 int ch = ((int) dev_id) - 1; 904 int ch = ((int) dev_id) - 1;
906 int handled = 0; 905 int handled = 0;
@@ -962,8 +961,7 @@ static int omap2_dma_handle_ch(int ch)
962} 961}
963 962
964/* STATUS register count is from 1-32 while our is 0-31 */ 963/* STATUS register count is from 1-32 while our is 0-31 */
965static irqreturn_t omap2_dma_irq_handler(int irq, void *dev_id, 964static irqreturn_t omap2_dma_irq_handler(int irq, void *dev_id)
966 struct pt_regs *regs)
967{ 965{
968 u32 val; 966 u32 val;
969 int i; 967 int i;
@@ -1220,8 +1218,7 @@ static void set_b1_regs(void)
1220 omap_writew(fi, OMAP1610_DMA_LCD_SRC_FI_B1_L); 1218 omap_writew(fi, OMAP1610_DMA_LCD_SRC_FI_B1_L);
1221} 1219}
1222 1220
1223static irqreturn_t lcd_dma_irq_handler(int irq, void *dev_id, 1221static irqreturn_t lcd_dma_irq_handler(int irq, void *dev_id)
1224 struct pt_regs *regs)
1225{ 1222{
1226 u16 w; 1223 u16 w;
1227 1224
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index f55f99ae58ae..8162eed8b500 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -783,8 +783,7 @@ void omap_free_gpio(int gpio)
783 * line's interrupt handler has been run, we may miss some nested 783 * line's interrupt handler has been run, we may miss some nested
784 * interrupts. 784 * interrupts.
785 */ 785 */
786static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc, 786static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc)
787 struct pt_regs *regs)
788{ 787{
789 void __iomem *isr_reg = NULL; 788 void __iomem *isr_reg = NULL;
790 u32 isr; 789 u32 isr;
@@ -882,7 +881,7 @@ static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc,
882 continue; 881 continue;
883 } 882 }
884 883
885 desc_handle_irq(gpio_irq, d, regs); 884 desc_handle_irq(gpio_irq, d);
886 885
887 if (unlikely((d->status & IRQ_PENDING) && !d->depth)) { 886 if (unlikely((d->status & IRQ_PENDING) && !d->depth)) {
888 irq_mask = 1 << 887 irq_mask = 1 <<
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index ade9a0fa6ef6..ec50008a2df6 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -96,7 +96,7 @@ static void omap_mcbsp_dump_reg(u8 id)
96 DBG("***********************\n"); 96 DBG("***********************\n");
97} 97}
98 98
99static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 99static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id)
100{ 100{
101 struct omap_mcbsp * mcbsp_tx = (struct omap_mcbsp *)(dev_id); 101 struct omap_mcbsp * mcbsp_tx = (struct omap_mcbsp *)(dev_id);
102 102
@@ -106,7 +106,7 @@ static irqreturn_t omap_mcbsp_tx_irq_handler(int irq, void *dev_id, struct pt_re
106 return IRQ_HANDLED; 106 return IRQ_HANDLED;
107} 107}
108 108
109static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 109static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id)
110{ 110{
111 struct omap_mcbsp * mcbsp_rx = (struct omap_mcbsp *)(dev_id); 111 struct omap_mcbsp * mcbsp_rx = (struct omap_mcbsp *)(dev_id);
112 112
diff --git a/arch/arm/plat-omap/timer32k.c b/arch/arm/plat-omap/timer32k.c
index cf6df3378d37..265310601161 100644
--- a/arch/arm/plat-omap/timer32k.c
+++ b/arch/arm/plat-omap/timer32k.c
@@ -194,8 +194,7 @@ unsigned long long sched_clock(void)
194 * issues with dynamic tick. In the dynamic tick case, we need to lock 194 * issues with dynamic tick. In the dynamic tick case, we need to lock
195 * with irqsave. 195 * with irqsave.
196 */ 196 */
197static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id, 197static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id)
198 struct pt_regs *regs)
199{ 198{
200 unsigned long now; 199 unsigned long now;
201 200
@@ -205,7 +204,7 @@ static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id,
205 while ((signed long)(now - omap_32k_last_tick) 204 while ((signed long)(now - omap_32k_last_tick)
206 >= OMAP_32K_TICKS_PER_HZ) { 205 >= OMAP_32K_TICKS_PER_HZ) {
207 omap_32k_last_tick += OMAP_32K_TICKS_PER_HZ; 206 omap_32k_last_tick += OMAP_32K_TICKS_PER_HZ;
208 timer_tick(regs); 207 timer_tick();
209 } 208 }
210 209
211 /* Restart timer so we don't drift off due to modulo or dynamic tick. 210 /* Restart timer so we don't drift off due to modulo or dynamic tick.
@@ -218,19 +217,17 @@ static inline irqreturn_t _omap_32k_timer_interrupt(int irq, void *dev_id,
218 return IRQ_HANDLED; 217 return IRQ_HANDLED;
219} 218}
220 219
221static irqreturn_t omap_32k_timer_handler(int irq, void *dev_id, 220static irqreturn_t omap_32k_timer_handler(int irq, void *dev_id)
222 struct pt_regs *regs)
223{ 221{
224 return _omap_32k_timer_interrupt(irq, dev_id, regs); 222 return _omap_32k_timer_interrupt(irq, dev_id);
225} 223}
226 224
227static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id, 225static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id)
228 struct pt_regs *regs)
229{ 226{
230 unsigned long flags; 227 unsigned long flags;
231 228
232 write_seqlock_irqsave(&xtime_lock, flags); 229 write_seqlock_irqsave(&xtime_lock, flags);
233 _omap_32k_timer_interrupt(irq, dev_id, regs); 230 _omap_32k_timer_interrupt(irq, dev_id);
234 write_sequnlock_irqrestore(&xtime_lock, flags); 231 write_sequnlock_irqrestore(&xtime_lock, flags);
235 232
236 return IRQ_HANDLED; 233 return IRQ_HANDLED;
diff --git a/arch/frv/kernel/dma.c b/arch/frv/kernel/dma.c
index f5de6cf7df4e..156184e17e57 100644
--- a/arch/frv/kernel/dma.c
+++ b/arch/frv/kernel/dma.c
@@ -121,15 +121,14 @@ unsigned long frv_dma_inprogress;
121/* 121/*
122 * DMA irq handler - determine channel involved, grab status and call real handler 122 * DMA irq handler - determine channel involved, grab status and call real handler
123 */ 123 */
124static irqreturn_t dma_irq_handler(int irq, void *_channel, struct pt_regs *regs) 124static irqreturn_t dma_irq_handler(int irq, void *_channel)
125{ 125{
126 struct frv_dma_channel *channel = _channel; 126 struct frv_dma_channel *channel = _channel;
127 127
128 frv_clear_dma_inprogress(channel - frv_dma_channels); 128 frv_clear_dma_inprogress(channel - frv_dma_channels);
129 return channel->handler(channel - frv_dma_channels, 129 return channel->handler(channel - frv_dma_channels,
130 __get_DMAC(channel->ioaddr, CSTR), 130 __get_DMAC(channel->ioaddr, CSTR),
131 channel->data, 131 channel->data);
132 regs);
133 132
134} /* end dma_irq_handler() */ 133} /* end dma_irq_handler() */
135 134
diff --git a/arch/frv/kernel/irq-mb93091.c b/arch/frv/kernel/irq-mb93091.c
index 369bc0a7443d..ad753c1e9b8f 100644
--- a/arch/frv/kernel/irq-mb93091.c
+++ b/arch/frv/kernel/irq-mb93091.c
@@ -80,7 +80,7 @@ static struct irq_chip frv_fpga_pic = {
80/* 80/*
81 * FPGA PIC interrupt handler 81 * FPGA PIC interrupt handler
82 */ 82 */
83static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs) 83static irqreturn_t fpga_interrupt(int irq, void *_mask)
84{ 84{
85 uint16_t imr, mask = (unsigned long) _mask; 85 uint16_t imr, mask = (unsigned long) _mask;
86 86
@@ -95,7 +95,7 @@ static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs)
95 irq = 31 - irq; 95 irq = 31 - irq;
96 mask &= ~(1 << irq); 96 mask &= ~(1 << irq);
97 97
98 generic_handle_irq(IRQ_BASE_FPGA + irq, regs); 98 generic_handle_irq(IRQ_BASE_FPGA + irq);
99 } 99 }
100 100
101 return IRQ_HANDLED; 101 return IRQ_HANDLED;
diff --git a/arch/frv/kernel/irq-mb93093.c b/arch/frv/kernel/irq-mb93093.c
index a43a22158956..e0983f6926ed 100644
--- a/arch/frv/kernel/irq-mb93093.c
+++ b/arch/frv/kernel/irq-mb93093.c
@@ -79,7 +79,7 @@ static struct irq_chip frv_fpga_pic = {
79/* 79/*
80 * FPGA PIC interrupt handler 80 * FPGA PIC interrupt handler
81 */ 81 */
82static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs) 82static irqreturn_t fpga_interrupt(int irq, void *_mask)
83{ 83{
84 uint16_t imr, mask = (unsigned long) _mask; 84 uint16_t imr, mask = (unsigned long) _mask;
85 85
@@ -94,7 +94,7 @@ static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs)
94 irq = 31 - irq; 94 irq = 31 - irq;
95 mask &= ~(1 << irq); 95 mask &= ~(1 << irq);
96 96
97 generic_irq_handle(IRQ_BASE_FPGA + irq, regs); 97 generic_irq_handle(IRQ_BASE_FPGA + irq);
98 } 98 }
99 99
100 return IRQ_HANDLED; 100 return IRQ_HANDLED;
diff --git a/arch/frv/kernel/irq-mb93493.c b/arch/frv/kernel/irq-mb93493.c
index 39c0188a3498..c157eeff871d 100644
--- a/arch/frv/kernel/irq-mb93493.c
+++ b/arch/frv/kernel/irq-mb93493.c
@@ -90,7 +90,7 @@ static struct irq_chip frv_mb93493_pic = {
90/* 90/*
91 * MB93493 PIC interrupt handler 91 * MB93493 PIC interrupt handler
92 */ 92 */
93static irqreturn_t mb93493_interrupt(int irq, void *_piqsr, struct pt_regs *regs) 93static irqreturn_t mb93493_interrupt(int irq, void *_piqsr)
94{ 94{
95 volatile void *piqsr = _piqsr; 95 volatile void *piqsr = _piqsr;
96 uint32_t iqsr; 96 uint32_t iqsr;
@@ -106,7 +106,7 @@ static irqreturn_t mb93493_interrupt(int irq, void *_piqsr, struct pt_regs *regs
106 irq = 31 - irq; 106 irq = 31 - irq;
107 iqsr &= ~(1 << irq); 107 iqsr &= ~(1 << irq);
108 108
109 generic_handle_irq(IRQ_BASE_MB93493 + irq, regs); 109 generic_handle_irq(IRQ_BASE_MB93493 + irq);
110 } 110 }
111 111
112 return IRQ_HANDLED; 112 return IRQ_HANDLED;
diff --git a/arch/frv/kernel/irq.c b/arch/frv/kernel/irq.c
index 5ac041c7c0a4..87f360a4ea27 100644
--- a/arch/frv/kernel/irq.c
+++ b/arch/frv/kernel/irq.c
@@ -143,7 +143,7 @@ static struct irq_chip frv_cpu_pic = {
143asmlinkage void do_IRQ(void) 143asmlinkage void do_IRQ(void)
144{ 144{
145 irq_enter(); 145 irq_enter();
146 generic_handle_irq(__get_IRL(), __frame); 146 generic_handle_irq(__get_IRL());
147 irq_exit(); 147 irq_exit();
148} 148}
149 149
diff --git a/arch/frv/kernel/time.c b/arch/frv/kernel/time.c
index 44a9aebc4f5a..ed588d73d7d8 100644
--- a/arch/frv/kernel/time.c
+++ b/arch/frv/kernel/time.c
@@ -40,7 +40,7 @@ unsigned long __nongprelbss __dsu_clock_speed_HZ;
40unsigned long __nongprelbss __serial_clock_speed_HZ; 40unsigned long __nongprelbss __serial_clock_speed_HZ;
41unsigned long __delay_loops_MHz; 41unsigned long __delay_loops_MHz;
42 42
43static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs *regs); 43static irqreturn_t timer_interrupt(int irq, void *dummy);
44 44
45static struct irqaction timer_irq = { 45static struct irqaction timer_irq = {
46 timer_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "timer", NULL, NULL 46 timer_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "timer", NULL, NULL
@@ -55,7 +55,7 @@ static inline int set_rtc_mmss(unsigned long nowtime)
55 * timer_interrupt() needs to keep up the real-time clock, 55 * timer_interrupt() needs to keep up the real-time clock,
56 * as well as call the "do_timer()" routine every clocktick 56 * as well as call the "do_timer()" routine every clocktick
57 */ 57 */
58static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs) 58static irqreturn_t timer_interrupt(int irq, void *dummy)
59{ 59{
60 /* last time the cmos clock got updated */ 60 /* last time the cmos clock got updated */
61 static long last_rtc_update = 0; 61 static long last_rtc_update = 0;
@@ -70,8 +70,8 @@ static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs)
70 write_seqlock(&xtime_lock); 70 write_seqlock(&xtime_lock);
71 71
72 do_timer(1); 72 do_timer(1);
73 update_process_times(user_mode(regs)); 73 update_process_times(user_mode(get_irq_regs()));
74 profile_tick(CPU_PROFILING, regs); 74 profile_tick(CPU_PROFILING);
75 75
76 /* 76 /*
77 * If we have an externally synchronized Linux clock, then update 77 * If we have an externally synchronized Linux clock, then update
diff --git a/arch/i386/defconfig b/arch/i386/defconfig
index ee2d79bd8af7..60c0c02574f0 100644
--- a/arch/i386/defconfig
+++ b/arch/i386/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-git7 3# Linux kernel version: 2.6.19-rc1
4# Wed Sep 27 21:53:10 2006 4# Thu Oct 5 13:04:53 2006
5# 5#
6CONFIG_X86_32=y 6CONFIG_X86_32=y
7CONFIG_GENERIC_TIME=y 7CONFIG_GENERIC_TIME=y
@@ -31,9 +31,11 @@ CONFIG_LOCALVERSION=""
31CONFIG_LOCALVERSION_AUTO=y 31CONFIG_LOCALVERSION_AUTO=y
32CONFIG_SWAP=y 32CONFIG_SWAP=y
33CONFIG_SYSVIPC=y 33CONFIG_SYSVIPC=y
34# CONFIG_IPC_NS is not set
34CONFIG_POSIX_MQUEUE=y 35CONFIG_POSIX_MQUEUE=y
35# CONFIG_BSD_PROCESS_ACCT is not set 36# CONFIG_BSD_PROCESS_ACCT is not set
36# CONFIG_TASKSTATS is not set 37# CONFIG_TASKSTATS is not set
38# CONFIG_UTS_NS is not set
37# CONFIG_AUDIT is not set 39# CONFIG_AUDIT is not set
38CONFIG_IKCONFIG=y 40CONFIG_IKCONFIG=y
39CONFIG_IKCONFIG_PROC=y 41CONFIG_IKCONFIG_PROC=y
@@ -41,9 +43,10 @@ CONFIG_IKCONFIG_PROC=y
41# CONFIG_RELAY is not set 43# CONFIG_RELAY is not set
42CONFIG_INITRAMFS_SOURCE="" 44CONFIG_INITRAMFS_SOURCE=""
43CONFIG_CC_OPTIMIZE_FOR_SIZE=y 45CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y
44# CONFIG_EMBEDDED is not set 47# CONFIG_EMBEDDED is not set
45CONFIG_UID16=y 48CONFIG_UID16=y
46CONFIG_SYSCTL=y 49# CONFIG_SYSCTL_SYSCALL is not set
47CONFIG_KALLSYMS=y 50CONFIG_KALLSYMS=y
48CONFIG_KALLSYMS_ALL=y 51CONFIG_KALLSYMS_ALL=y
49# CONFIG_KALLSYMS_EXTRA_PASS is not set 52# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -76,6 +79,7 @@ CONFIG_STOP_MACHINE=y
76# 79#
77# Block layer 80# Block layer
78# 81#
82CONFIG_BLOCK=y
79CONFIG_LBD=y 83CONFIG_LBD=y
80# CONFIG_BLK_DEV_IO_TRACE is not set 84# CONFIG_BLK_DEV_IO_TRACE is not set
81# CONFIG_LSF is not set 85# CONFIG_LSF is not set
@@ -163,6 +167,7 @@ CONFIG_VM86=y
163# CONFIG_I8K is not set 167# CONFIG_I8K is not set
164# CONFIG_X86_REBOOTFIXUPS is not set 168# CONFIG_X86_REBOOTFIXUPS is not set
165CONFIG_MICROCODE=y 169CONFIG_MICROCODE=y
170CONFIG_MICROCODE_OLD_INTERFACE=y
166CONFIG_X86_MSR=y 171CONFIG_X86_MSR=y
167CONFIG_X86_CPUID=y 172CONFIG_X86_CPUID=y
168 173
@@ -177,6 +182,7 @@ CONFIG_HIGHMEM4G=y
177# CONFIG_HIGHMEM64G is not set 182# CONFIG_HIGHMEM64G is not set
178CONFIG_PAGE_OFFSET=0xC0000000 183CONFIG_PAGE_OFFSET=0xC0000000
179CONFIG_HIGHMEM=y 184CONFIG_HIGHMEM=y
185CONFIG_ARCH_POPULATES_NODE_MAP=y
180CONFIG_SELECT_MEMORY_MODEL=y 186CONFIG_SELECT_MEMORY_MODEL=y
181CONFIG_FLATMEM_MANUAL=y 187CONFIG_FLATMEM_MANUAL=y
182# CONFIG_DISCONTIGMEM_MANUAL is not set 188# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -295,6 +301,7 @@ CONFIG_PCI_MMCONFIG=y
295CONFIG_PCI_MSI=y 301CONFIG_PCI_MSI=y
296# CONFIG_PCI_MULTITHREAD_PROBE is not set 302# CONFIG_PCI_MULTITHREAD_PROBE is not set
297# CONFIG_PCI_DEBUG is not set 303# CONFIG_PCI_DEBUG is not set
304# CONFIG_HT_IRQ is not set
298CONFIG_ISA_DMA_API=y 305CONFIG_ISA_DMA_API=y
299# CONFIG_ISA is not set 306# CONFIG_ISA is not set
300# CONFIG_MCA is not set 307# CONFIG_MCA is not set
@@ -354,6 +361,7 @@ CONFIG_IP_PNP_DHCP=y
354# CONFIG_INET_TUNNEL is not set 361# CONFIG_INET_TUNNEL is not set
355CONFIG_INET_XFRM_MODE_TRANSPORT=y 362CONFIG_INET_XFRM_MODE_TRANSPORT=y
356CONFIG_INET_XFRM_MODE_TUNNEL=y 363CONFIG_INET_XFRM_MODE_TUNNEL=y
364# CONFIG_INET_XFRM_MODE_BEET is not set
357CONFIG_INET_DIAG=y 365CONFIG_INET_DIAG=y
358CONFIG_INET_TCP_DIAG=y 366CONFIG_INET_TCP_DIAG=y
359# CONFIG_TCP_CONG_ADVANCED is not set 367# CONFIG_TCP_CONG_ADVANCED is not set
@@ -370,6 +378,7 @@ CONFIG_IPV6=y
370# CONFIG_INET6_TUNNEL is not set 378# CONFIG_INET6_TUNNEL is not set
371CONFIG_INET6_XFRM_MODE_TRANSPORT=y 379CONFIG_INET6_XFRM_MODE_TRANSPORT=y
372CONFIG_INET6_XFRM_MODE_TUNNEL=y 380CONFIG_INET6_XFRM_MODE_TUNNEL=y
381# CONFIG_INET6_XFRM_MODE_BEET is not set
373# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 382# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
374# CONFIG_IPV6_TUNNEL is not set 383# CONFIG_IPV6_TUNNEL is not set
375# CONFIG_IPV6_SUBTREES is not set 384# CONFIG_IPV6_SUBTREES is not set
@@ -519,6 +528,7 @@ CONFIG_BLK_DEV_AMD74XX=y
519# CONFIG_BLK_DEV_CS5535 is not set 528# CONFIG_BLK_DEV_CS5535 is not set
520# CONFIG_BLK_DEV_HPT34X is not set 529# CONFIG_BLK_DEV_HPT34X is not set
521# CONFIG_BLK_DEV_HPT366 is not set 530# CONFIG_BLK_DEV_HPT366 is not set
531# CONFIG_BLK_DEV_JMICRON is not set
522# CONFIG_BLK_DEV_SC1200 is not set 532# CONFIG_BLK_DEV_SC1200 is not set
523CONFIG_BLK_DEV_PIIX=y 533CONFIG_BLK_DEV_PIIX=y
524# CONFIG_BLK_DEV_IT821X is not set 534# CONFIG_BLK_DEV_IT821X is not set
@@ -615,6 +625,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0
615# CONFIG_SCSI_IPR is not set 625# CONFIG_SCSI_IPR is not set
616# CONFIG_SCSI_QLOGIC_1280 is not set 626# CONFIG_SCSI_QLOGIC_1280 is not set
617# CONFIG_SCSI_QLA_FC is not set 627# CONFIG_SCSI_QLA_FC is not set
628# CONFIG_SCSI_QLA_ISCSI is not set
618# CONFIG_SCSI_LPFC is not set 629# CONFIG_SCSI_LPFC is not set
619# CONFIG_SCSI_DC395x is not set 630# CONFIG_SCSI_DC395x is not set
620# CONFIG_SCSI_DC390T is not set 631# CONFIG_SCSI_DC390T is not set
@@ -658,7 +669,6 @@ CONFIG_SATA_INTEL_COMBINED=y
658# CONFIG_PATA_HPT3X3 is not set 669# CONFIG_PATA_HPT3X3 is not set
659# CONFIG_PATA_IT821X is not set 670# CONFIG_PATA_IT821X is not set
660# CONFIG_PATA_JMICRON is not set 671# CONFIG_PATA_JMICRON is not set
661# CONFIG_PATA_LEGACY is not set
662# CONFIG_PATA_TRIFLEX is not set 672# CONFIG_PATA_TRIFLEX is not set
663# CONFIG_PATA_MPIIX is not set 673# CONFIG_PATA_MPIIX is not set
664# CONFIG_PATA_OLDPIIX is not set 674# CONFIG_PATA_OLDPIIX is not set
@@ -667,7 +677,6 @@ CONFIG_SATA_INTEL_COMBINED=y
667# CONFIG_PATA_OPTI is not set 677# CONFIG_PATA_OPTI is not set
668# CONFIG_PATA_OPTIDMA is not set 678# CONFIG_PATA_OPTIDMA is not set
669# CONFIG_PATA_PDC_OLD is not set 679# CONFIG_PATA_PDC_OLD is not set
670# CONFIG_PATA_QDI is not set
671# CONFIG_PATA_RADISYS is not set 680# CONFIG_PATA_RADISYS is not set
672# CONFIG_PATA_RZ1000 is not set 681# CONFIG_PATA_RZ1000 is not set
673# CONFIG_PATA_SC1200 is not set 682# CONFIG_PATA_SC1200 is not set
@@ -684,6 +693,7 @@ CONFIG_SATA_INTEL_COMBINED=y
684CONFIG_MD=y 693CONFIG_MD=y
685# CONFIG_BLK_DEV_MD is not set 694# CONFIG_BLK_DEV_MD is not set
686CONFIG_BLK_DEV_DM=y 695CONFIG_BLK_DEV_DM=y
696# CONFIG_DM_DEBUG is not set
687# CONFIG_DM_CRYPT is not set 697# CONFIG_DM_CRYPT is not set
688# CONFIG_DM_SNAPSHOT is not set 698# CONFIG_DM_SNAPSHOT is not set
689# CONFIG_DM_MIRROR is not set 699# CONFIG_DM_MIRROR is not set
@@ -874,6 +884,7 @@ CONFIG_NET_POLL_CONTROLLER=y
874# Input device support 884# Input device support
875# 885#
876CONFIG_INPUT=y 886CONFIG_INPUT=y
887# CONFIG_INPUT_FF_MEMLESS is not set
877 888
878# 889#
879# Userland interfaces 890# Userland interfaces
@@ -896,6 +907,7 @@ CONFIG_KEYBOARD_ATKBD=y
896# CONFIG_KEYBOARD_LKKBD is not set 907# CONFIG_KEYBOARD_LKKBD is not set
897# CONFIG_KEYBOARD_XTKBD is not set 908# CONFIG_KEYBOARD_XTKBD is not set
898# CONFIG_KEYBOARD_NEWTON is not set 909# CONFIG_KEYBOARD_NEWTON is not set
910# CONFIG_KEYBOARD_STOWAWAY is not set
899CONFIG_INPUT_MOUSE=y 911CONFIG_INPUT_MOUSE=y
900CONFIG_MOUSE_PS2=y 912CONFIG_MOUSE_PS2=y
901# CONFIG_MOUSE_SERIAL is not set 913# CONFIG_MOUSE_SERIAL is not set
@@ -1023,12 +1035,12 @@ CONFIG_HANGCHECK_TIMER=y
1023# Misc devices 1035# Misc devices
1024# 1036#
1025# CONFIG_IBM_ASM is not set 1037# CONFIG_IBM_ASM is not set
1038# CONFIG_TIFM_CORE is not set
1026 1039
1027# 1040#
1028# Multimedia devices 1041# Multimedia devices
1029# 1042#
1030# CONFIG_VIDEO_DEV is not set 1043# CONFIG_VIDEO_DEV is not set
1031CONFIG_VIDEO_V4L2=y
1032 1044
1033# 1045#
1034# Digital Video Broadcasting Devices 1046# Digital Video Broadcasting Devices
@@ -1134,6 +1146,7 @@ CONFIG_USB_STORAGE=y
1134# CONFIG_USB_STORAGE_SDDR55 is not set 1146# CONFIG_USB_STORAGE_SDDR55 is not set
1135# CONFIG_USB_STORAGE_JUMPSHOT is not set 1147# CONFIG_USB_STORAGE_JUMPSHOT is not set
1136# CONFIG_USB_STORAGE_ALAUDA is not set 1148# CONFIG_USB_STORAGE_ALAUDA is not set
1149# CONFIG_USB_STORAGE_KARMA is not set
1137# CONFIG_USB_LIBUSUAL is not set 1150# CONFIG_USB_LIBUSUAL is not set
1138 1151
1139# 1152#
@@ -1156,6 +1169,7 @@ CONFIG_USB_HIDINPUT=y
1156# CONFIG_USB_ATI_REMOTE2 is not set 1169# CONFIG_USB_ATI_REMOTE2 is not set
1157# CONFIG_USB_KEYSPAN_REMOTE is not set 1170# CONFIG_USB_KEYSPAN_REMOTE is not set
1158# CONFIG_USB_APPLETOUCH is not set 1171# CONFIG_USB_APPLETOUCH is not set
1172# CONFIG_USB_TRANCEVIBRATOR is not set
1159 1173
1160# 1174#
1161# USB Imaging devices 1175# USB Imaging devices
@@ -1187,6 +1201,7 @@ CONFIG_USB_MON=y
1187# 1201#
1188# CONFIG_USB_EMI62 is not set 1202# CONFIG_USB_EMI62 is not set
1189# CONFIG_USB_EMI26 is not set 1203# CONFIG_USB_EMI26 is not set
1204# CONFIG_USB_ADUTUX is not set
1190# CONFIG_USB_AUERSWALD is not set 1205# CONFIG_USB_AUERSWALD is not set
1191# CONFIG_USB_RIO500 is not set 1206# CONFIG_USB_RIO500 is not set
1192# CONFIG_USB_LEGOTOWER is not set 1207# CONFIG_USB_LEGOTOWER is not set
@@ -1194,9 +1209,9 @@ CONFIG_USB_MON=y
1194# CONFIG_USB_LED is not set 1209# CONFIG_USB_LED is not set
1195# CONFIG_USB_CYPRESS_CY7C63 is not set 1210# CONFIG_USB_CYPRESS_CY7C63 is not set
1196# CONFIG_USB_CYTHERM is not set 1211# CONFIG_USB_CYTHERM is not set
1197# CONFIG_USB_PHIDGETKIT is not set 1212# CONFIG_USB_PHIDGET is not set
1198# CONFIG_USB_PHIDGETSERVO is not set
1199# CONFIG_USB_IDMOUSE is not set 1213# CONFIG_USB_IDMOUSE is not set
1214# CONFIG_USB_FTDI_ELAN is not set
1200# CONFIG_USB_APPLEDISPLAY is not set 1215# CONFIG_USB_APPLEDISPLAY is not set
1201# CONFIG_USB_SISUSBVGA is not set 1216# CONFIG_USB_SISUSBVGA is not set
1202# CONFIG_USB_LD is not set 1217# CONFIG_USB_LD is not set
@@ -1281,6 +1296,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
1281# CONFIG_JFS_FS is not set 1296# CONFIG_JFS_FS is not set
1282CONFIG_FS_POSIX_ACL=y 1297CONFIG_FS_POSIX_ACL=y
1283# CONFIG_XFS_FS is not set 1298# CONFIG_XFS_FS is not set
1299# CONFIG_GFS2_FS is not set
1284# CONFIG_OCFS2_FS is not set 1300# CONFIG_OCFS2_FS is not set
1285# CONFIG_MINIX_FS is not set 1301# CONFIG_MINIX_FS is not set
1286# CONFIG_ROMFS_FS is not set 1302# CONFIG_ROMFS_FS is not set
@@ -1315,8 +1331,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1315# 1331#
1316CONFIG_PROC_FS=y 1332CONFIG_PROC_FS=y
1317CONFIG_PROC_KCORE=y 1333CONFIG_PROC_KCORE=y
1334CONFIG_PROC_SYSCTL=y
1318CONFIG_SYSFS=y 1335CONFIG_SYSFS=y
1319CONFIG_TMPFS=y 1336CONFIG_TMPFS=y
1337CONFIG_TMPFS_POSIX_ACL=y
1320CONFIG_HUGETLBFS=y 1338CONFIG_HUGETLBFS=y
1321CONFIG_HUGETLB_PAGE=y 1339CONFIG_HUGETLB_PAGE=y
1322CONFIG_RAMFS=y 1340CONFIG_RAMFS=y
@@ -1366,6 +1384,7 @@ CONFIG_SUNRPC=y
1366# CONFIG_CODA_FS is not set 1384# CONFIG_CODA_FS is not set
1367# CONFIG_AFS_FS is not set 1385# CONFIG_AFS_FS is not set
1368# CONFIG_9P_FS is not set 1386# CONFIG_9P_FS is not set
1387CONFIG_GENERIC_ACL=y
1369 1388
1370# 1389#
1371# Partition Types 1390# Partition Types
@@ -1418,6 +1437,10 @@ CONFIG_NLS_ISO8859_15=y
1418CONFIG_NLS_UTF8=y 1437CONFIG_NLS_UTF8=y
1419 1438
1420# 1439#
1440# Distributed Lock Manager
1441#
1442
1443#
1421# Instrumentation Support 1444# Instrumentation Support
1422# 1445#
1423CONFIG_PROFILING=y 1446CONFIG_PROFILING=y
@@ -1452,11 +1475,13 @@ CONFIG_DEBUG_BUGVERBOSE=y
1452# CONFIG_DEBUG_INFO is not set 1475# CONFIG_DEBUG_INFO is not set
1453# CONFIG_DEBUG_FS is not set 1476# CONFIG_DEBUG_FS is not set
1454# CONFIG_DEBUG_VM is not set 1477# CONFIG_DEBUG_VM is not set
1478# CONFIG_DEBUG_LIST is not set
1455# CONFIG_FRAME_POINTER is not set 1479# CONFIG_FRAME_POINTER is not set
1456CONFIG_UNWIND_INFO=y 1480CONFIG_UNWIND_INFO=y
1457CONFIG_STACK_UNWIND=y 1481CONFIG_STACK_UNWIND=y
1458# CONFIG_FORCED_INLINING is not set 1482# CONFIG_FORCED_INLINING is not set
1459# CONFIG_RCU_TORTURE_TEST is not set 1483# CONFIG_RCU_TORTURE_TEST is not set
1484# CONFIG_LKDTM is not set
1460CONFIG_EARLY_PRINTK=y 1485CONFIG_EARLY_PRINTK=y
1461CONFIG_DEBUG_STACKOVERFLOW=y 1486CONFIG_DEBUG_STACKOVERFLOW=y
1462# CONFIG_DEBUG_STACK_USAGE is not set 1487# CONFIG_DEBUG_STACK_USAGE is not set
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index 90faae5c5d30..2fd4b7d927c2 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -1193,11 +1193,11 @@ EXPORT_SYMBOL(switch_ipi_to_APIC_timer);
1193 * value into /proc/profile. 1193 * value into /proc/profile.
1194 */ 1194 */
1195 1195
1196inline void smp_local_timer_interrupt(struct pt_regs * regs) 1196inline void smp_local_timer_interrupt(void)
1197{ 1197{
1198 profile_tick(CPU_PROFILING, regs); 1198 profile_tick(CPU_PROFILING);
1199#ifdef CONFIG_SMP 1199#ifdef CONFIG_SMP
1200 update_process_times(user_mode_vm(regs)); 1200 update_process_times(user_mode_vm(get_irq_regs()));
1201#endif 1201#endif
1202 1202
1203 /* 1203 /*
@@ -1223,6 +1223,7 @@ inline void smp_local_timer_interrupt(struct pt_regs * regs)
1223 1223
1224fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) 1224fastcall void smp_apic_timer_interrupt(struct pt_regs *regs)
1225{ 1225{
1226 struct pt_regs *old_regs = set_irq_regs(regs);
1226 int cpu = smp_processor_id(); 1227 int cpu = smp_processor_id();
1227 1228
1228 /* 1229 /*
@@ -1241,12 +1242,13 @@ fastcall void smp_apic_timer_interrupt(struct pt_regs *regs)
1241 * interrupt lock, which is the WrongThing (tm) to do. 1242 * interrupt lock, which is the WrongThing (tm) to do.
1242 */ 1243 */
1243 irq_enter(); 1244 irq_enter();
1244 smp_local_timer_interrupt(regs); 1245 smp_local_timer_interrupt();
1245 irq_exit(); 1246 irq_exit();
1247 set_irq_regs(old_regs);
1246} 1248}
1247 1249
1248#ifndef CONFIG_SMP 1250#ifndef CONFIG_SMP
1249static void up_apic_timer_interrupt_call(struct pt_regs *regs) 1251static void up_apic_timer_interrupt_call(void)
1250{ 1252{
1251 int cpu = smp_processor_id(); 1253 int cpu = smp_processor_id();
1252 1254
@@ -1255,11 +1257,11 @@ static void up_apic_timer_interrupt_call(struct pt_regs *regs)
1255 */ 1257 */
1256 per_cpu(irq_stat, cpu).apic_timer_irqs++; 1258 per_cpu(irq_stat, cpu).apic_timer_irqs++;
1257 1259
1258 smp_local_timer_interrupt(regs); 1260 smp_local_timer_interrupt();
1259} 1261}
1260#endif 1262#endif
1261 1263
1262void smp_send_timer_broadcast_ipi(struct pt_regs *regs) 1264void smp_send_timer_broadcast_ipi(void)
1263{ 1265{
1264 cpumask_t mask; 1266 cpumask_t mask;
1265 1267
@@ -1272,7 +1274,7 @@ void smp_send_timer_broadcast_ipi(struct pt_regs *regs)
1272 * We can directly call the apic timer interrupt handler 1274 * We can directly call the apic timer interrupt handler
1273 * in UP case. Minus all irq related functions 1275 * in UP case. Minus all irq related functions
1274 */ 1276 */
1275 up_apic_timer_interrupt_call(regs); 1277 up_apic_timer_interrupt_call();
1276#endif 1278#endif
1277 } 1279 }
1278} 1280}
diff --git a/arch/i386/kernel/i8259.c b/arch/i386/kernel/i8259.c
index d07ed31f11e3..d53eafb6daa7 100644
--- a/arch/i386/kernel/i8259.c
+++ b/arch/i386/kernel/i8259.c
@@ -335,13 +335,13 @@ void init_8259A(int auto_eoi)
335 */ 335 */
336 336
337 337
338static irqreturn_t math_error_irq(int cpl, void *dev_id, struct pt_regs *regs) 338static irqreturn_t math_error_irq(int cpl, void *dev_id)
339{ 339{
340 extern void math_error(void __user *); 340 extern void math_error(void __user *);
341 outb(0,0xF0); 341 outb(0,0xF0);
342 if (ignore_fpu_irq || !boot_cpu_data.hard_math) 342 if (ignore_fpu_irq || !boot_cpu_data.hard_math)
343 return IRQ_NONE; 343 return IRQ_NONE;
344 math_error((void __user *)regs->eip); 344 math_error((void __user *)get_irq_regs()->eip);
345 return IRQ_HANDLED; 345 return IRQ_HANDLED;
346} 346}
347 347
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index b7287fb499f3..cd082c36ca03 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -1184,8 +1184,8 @@ static int __assign_irq_vector(int irq)
1184 1184
1185 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); 1185 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS);
1186 1186
1187 if (IO_APIC_VECTOR(irq) > 0) 1187 if (irq_vector[irq] > 0)
1188 return IO_APIC_VECTOR(irq); 1188 return irq_vector[irq];
1189 1189
1190 current_vector += 8; 1190 current_vector += 8;
1191 if (current_vector == SYSCALL_VECTOR) 1191 if (current_vector == SYSCALL_VECTOR)
@@ -1199,7 +1199,7 @@ static int __assign_irq_vector(int irq)
1199 } 1199 }
1200 1200
1201 vector = current_vector; 1201 vector = current_vector;
1202 IO_APIC_VECTOR(irq) = vector; 1202 irq_vector[irq] = vector;
1203 1203
1204 return vector; 1204 return vector;
1205} 1205}
@@ -1967,7 +1967,7 @@ static void ack_ioapic_quirk_irq(unsigned int irq)
1967 * operation to prevent an edge-triggered interrupt escaping meanwhile. 1967 * operation to prevent an edge-triggered interrupt escaping meanwhile.
1968 * The idea is from Manfred Spraul. --macro 1968 * The idea is from Manfred Spraul. --macro
1969 */ 1969 */
1970 i = IO_APIC_VECTOR(irq); 1970 i = irq_vector[irq];
1971 1971
1972 v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1)); 1972 v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1));
1973 1973
@@ -1984,7 +1984,7 @@ static void ack_ioapic_quirk_irq(unsigned int irq)
1984 1984
1985static int ioapic_retrigger_irq(unsigned int irq) 1985static int ioapic_retrigger_irq(unsigned int irq)
1986{ 1986{
1987 send_IPI_self(IO_APIC_VECTOR(irq)); 1987 send_IPI_self(irq_vector[irq]);
1988 1988
1989 return 1; 1989 return 1;
1990} 1990}
@@ -2020,7 +2020,7 @@ static inline void init_IO_APIC_traps(void)
2020 */ 2020 */
2021 for (irq = 0; irq < NR_IRQS ; irq++) { 2021 for (irq = 0; irq < NR_IRQS ; irq++) {
2022 int tmp = irq; 2022 int tmp = irq;
2023 if (IO_APIC_IRQ(tmp) && !IO_APIC_VECTOR(tmp)) { 2023 if (IO_APIC_IRQ(tmp) && !irq_vector[tmp]) {
2024 /* 2024 /*
2025 * Hmm.. We don't have an entry for this, 2025 * Hmm.. We don't have an entry for this,
2026 * so default to an old-fashioned 8259 2026 * so default to an old-fashioned 8259
diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c
index 3dd2e180151b..8cfc7dbec7b9 100644
--- a/arch/i386/kernel/irq.c
+++ b/arch/i386/kernel/irq.c
@@ -53,6 +53,7 @@ static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly;
53 */ 53 */
54fastcall unsigned int do_IRQ(struct pt_regs *regs) 54fastcall unsigned int do_IRQ(struct pt_regs *regs)
55{ 55{
56 struct pt_regs *old_regs;
56 /* high bit used in ret_from_ code */ 57 /* high bit used in ret_from_ code */
57 int irq = ~regs->orig_eax; 58 int irq = ~regs->orig_eax;
58 struct irq_desc *desc = irq_desc + irq; 59 struct irq_desc *desc = irq_desc + irq;
@@ -67,6 +68,7 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
67 BUG(); 68 BUG();
68 } 69 }
69 70
71 old_regs = set_irq_regs(regs);
70 irq_enter(); 72 irq_enter();
71#ifdef CONFIG_DEBUG_STACKOVERFLOW 73#ifdef CONFIG_DEBUG_STACKOVERFLOW
72 /* Debugging check for stack overflow: is there less than 1KB free? */ 74 /* Debugging check for stack overflow: is there less than 1KB free? */
@@ -95,7 +97,7 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
95 * current stack (which is the irq stack already after all) 97 * current stack (which is the irq stack already after all)
96 */ 98 */
97 if (curctx != irqctx) { 99 if (curctx != irqctx) {
98 int arg1, arg2, arg3, ebx; 100 int arg1, arg2, ebx;
99 101
100 /* build the stack frame on the IRQ stack */ 102 /* build the stack frame on the IRQ stack */
101 isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); 103 isp = (u32*) ((char*)irqctx + sizeof(*irqctx));
@@ -114,17 +116,17 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
114 " xchgl %%ebx,%%esp \n" 116 " xchgl %%ebx,%%esp \n"
115 " call *%%edi \n" 117 " call *%%edi \n"
116 " movl %%ebx,%%esp \n" 118 " movl %%ebx,%%esp \n"
117 : "=a" (arg1), "=d" (arg2), "=c" (arg3), "=b" (ebx) 119 : "=a" (arg1), "=d" (arg2), "=b" (ebx)
118 : "0" (irq), "1" (desc), "2" (regs), "3" (isp), 120 : "0" (irq), "1" (desc), "2" (isp),
119 "D" (desc->handle_irq) 121 "D" (desc->handle_irq)
120 : "memory", "cc" 122 : "memory", "cc"
121 ); 123 );
122 } else 124 } else
123#endif 125#endif
124 desc->handle_irq(irq, desc, regs); 126 desc->handle_irq(irq, desc);
125 127
126 irq_exit(); 128 irq_exit();
127 129 set_irq_regs(old_regs);
128 return 1; 130 return 1;
129} 131}
130 132
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c
index dad02a960e03..b0a07801d9df 100644
--- a/arch/i386/kernel/process.c
+++ b/arch/i386/kernel/process.c
@@ -328,6 +328,7 @@ extern void kernel_thread_helper(void);
328int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) 328int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
329{ 329{
330 struct pt_regs regs; 330 struct pt_regs regs;
331 int err;
331 332
332 memset(&regs, 0, sizeof(regs)); 333 memset(&regs, 0, sizeof(regs));
333 334
@@ -342,7 +343,10 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
342 regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2; 343 regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;
343 344
344 /* Ok, create the new process.. */ 345 /* Ok, create the new process.. */
345 return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL); 346 err = do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
347 if (err == 0) /* terminate kernel stack */
348 task_pt_regs(current)->eip = 0;
349 return err;
346} 350}
347EXPORT_SYMBOL(kernel_thread); 351EXPORT_SYMBOL(kernel_thread);
348 352
diff --git a/arch/i386/kernel/smp.c b/arch/i386/kernel/smp.c
index 1b080ab8a49f..31e5c6573aae 100644
--- a/arch/i386/kernel/smp.c
+++ b/arch/i386/kernel/smp.c
@@ -321,6 +321,7 @@ static inline void leave_mm (unsigned long cpu)
321 321
322fastcall void smp_invalidate_interrupt(struct pt_regs *regs) 322fastcall void smp_invalidate_interrupt(struct pt_regs *regs)
323{ 323{
324 struct pt_regs *old_regs = set_irq_regs(regs);
324 unsigned long cpu; 325 unsigned long cpu;
325 326
326 cpu = get_cpu(); 327 cpu = get_cpu();
@@ -351,6 +352,7 @@ fastcall void smp_invalidate_interrupt(struct pt_regs *regs)
351 smp_mb__after_clear_bit(); 352 smp_mb__after_clear_bit();
352out: 353out:
353 put_cpu_no_resched(); 354 put_cpu_no_resched();
355 set_irq_regs(old_regs);
354} 356}
355 357
356static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm, 358static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
@@ -605,11 +607,14 @@ void smp_send_stop(void)
605 */ 607 */
606fastcall void smp_reschedule_interrupt(struct pt_regs *regs) 608fastcall void smp_reschedule_interrupt(struct pt_regs *regs)
607{ 609{
610 struct pt_regs *old_regs = set_irq_regs(regs);
608 ack_APIC_irq(); 611 ack_APIC_irq();
612 set_irq_regs(old_regs);
609} 613}
610 614
611fastcall void smp_call_function_interrupt(struct pt_regs *regs) 615fastcall void smp_call_function_interrupt(struct pt_regs *regs)
612{ 616{
617 struct pt_regs *old_regs = set_irq_regs(regs);
613 void (*func) (void *info) = call_data->func; 618 void (*func) (void *info) = call_data->func;
614 void *info = call_data->info; 619 void *info = call_data->info;
615 int wait = call_data->wait; 620 int wait = call_data->wait;
@@ -632,6 +637,7 @@ fastcall void smp_call_function_interrupt(struct pt_regs *regs)
632 mb(); 637 mb();
633 atomic_inc(&call_data->finished); 638 atomic_inc(&call_data->finished);
634 } 639 }
640 set_irq_regs(old_regs);
635} 641}
636 642
637/* 643/*
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c
index 58a2d5582419..78af572fd17c 100644
--- a/arch/i386/kernel/time.c
+++ b/arch/i386/kernel/time.c
@@ -161,7 +161,7 @@ EXPORT_SYMBOL(profile_pc);
161 * Time Stamp Counter value at the time of the timer interrupt, so that 161 * Time Stamp Counter value at the time of the timer interrupt, so that
162 * we later on can estimate the time of day more exactly. 162 * we later on can estimate the time of day more exactly.
163 */ 163 */
164irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 164irqreturn_t timer_interrupt(int irq, void *dev_id)
165{ 165{
166 /* 166 /*
167 * Here we are in the timer irq handler. We just have irqs locally 167 * Here we are in the timer irq handler. We just have irqs locally
@@ -188,7 +188,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
188 } 188 }
189#endif 189#endif
190 190
191 do_timer_interrupt_hook(regs); 191 do_timer_interrupt_hook();
192 192
193 193
194 if (MCA_bus) { 194 if (MCA_bus) {
@@ -201,15 +201,15 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
201 high bit of the PPI port B (0x61). Note that some PS/2s, 201 high bit of the PPI port B (0x61). Note that some PS/2s,
202 notably the 55SX, work fine if this is removed. */ 202 notably the 55SX, work fine if this is removed. */
203 203
204 irq = inb_p( 0x61 ); /* read the current state */ 204 u8 irq_v = inb_p( 0x61 ); /* read the current state */
205 outb_p( irq|0x80, 0x61 ); /* reset the IRQ */ 205 outb_p( irq_v|0x80, 0x61 ); /* reset the IRQ */
206 } 206 }
207 207
208 write_sequnlock(&xtime_lock); 208 write_sequnlock(&xtime_lock);
209 209
210#ifdef CONFIG_X86_LOCAL_APIC 210#ifdef CONFIG_X86_LOCAL_APIC
211 if (using_apic_timer) 211 if (using_apic_timer)
212 smp_send_timer_broadcast_ipi(regs); 212 smp_send_timer_broadcast_ipi();
213#endif 213#endif
214 214
215 return IRQ_HANDLED; 215 return IRQ_HANDLED;
diff --git a/arch/i386/kernel/time_hpet.c b/arch/i386/kernel/time_hpet.c
index 6bf14a4e995e..1a2a979cf6a3 100644
--- a/arch/i386/kernel/time_hpet.c
+++ b/arch/i386/kernel/time_hpet.c
@@ -441,7 +441,7 @@ int hpet_rtc_dropped_irq(void)
441 return 1; 441 return 1;
442} 442}
443 443
444irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 444irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id)
445{ 445{
446 struct rtc_time curr_time; 446 struct rtc_time curr_time;
447 unsigned long rtc_int_flag = 0; 447 unsigned long rtc_int_flag = 0;
@@ -480,7 +480,7 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
480 } 480 }
481 if (call_rtc_interrupt) { 481 if (call_rtc_interrupt) {
482 rtc_int_flag |= (RTC_IRQF | (RTC_NUM_INTS << 8)); 482 rtc_int_flag |= (RTC_IRQF | (RTC_NUM_INTS << 8));
483 rtc_interrupt(rtc_int_flag, dev_id, regs); 483 rtc_interrupt(rtc_int_flag, dev_id);
484 } 484 }
485 return IRQ_HANDLED; 485 return IRQ_HANDLED;
486} 486}
diff --git a/arch/i386/kernel/vm86.c b/arch/i386/kernel/vm86.c
index 8355d8d87d18..cbcd61d6120b 100644
--- a/arch/i386/kernel/vm86.c
+++ b/arch/i386/kernel/vm86.c
@@ -714,7 +714,7 @@ static int irqbits;
714 | (1 << SIGUSR1) | (1 << SIGUSR2) | (1 << SIGIO) | (1 << SIGURG) \ 714 | (1 << SIGUSR1) | (1 << SIGUSR2) | (1 << SIGIO) | (1 << SIGURG) \
715 | (1 << SIGUNUSED) ) 715 | (1 << SIGUNUSED) )
716 716
717static irqreturn_t irq_handler(int intno, void *dev_id, struct pt_regs * regs) 717static irqreturn_t irq_handler(int intno, void *dev_id)
718{ 718{
719 int irq_bit; 719 int irq_bit;
720 unsigned long flags; 720 unsigned long flags;
diff --git a/arch/i386/lib/semaphore.S b/arch/i386/lib/semaphore.S
index ef6ad9e1a609..c01eb39c0b43 100644
--- a/arch/i386/lib/semaphore.S
+++ b/arch/i386/lib/semaphore.S
@@ -152,6 +152,8 @@ ENTRY(__read_lock_failed)
152 152
153#endif 153#endif
154 154
155#ifdef CONFIG_RWSEM_XCHGADD_ALGORITHM
156
155/* Fix up special calling conventions */ 157/* Fix up special calling conventions */
156ENTRY(call_rwsem_down_read_failed) 158ENTRY(call_rwsem_down_read_failed)
157 CFI_STARTPROC 159 CFI_STARTPROC
@@ -214,3 +216,4 @@ ENTRY(call_rwsem_downgrade_wake)
214 CFI_ENDPROC 216 CFI_ENDPROC
215 END(call_rwsem_downgrade_wake) 217 END(call_rwsem_downgrade_wake)
216 218
219#endif
diff --git a/arch/i386/mach-visws/visws_apic.c b/arch/i386/mach-visws/visws_apic.c
index 5929f884d79b..07097ed48890 100644
--- a/arch/i386/mach-visws/visws_apic.c
+++ b/arch/i386/mach-visws/visws_apic.c
@@ -191,7 +191,7 @@ static struct hw_interrupt_type piix4_virtual_irq_type = {
191 * enable_irq gets the right irq. This 'master' irq is never directly 191 * enable_irq gets the right irq. This 'master' irq is never directly
192 * manipulated by any driver. 192 * manipulated by any driver.
193 */ 193 */
194static irqreturn_t piix4_master_intr(int irq, void *dev_id, struct pt_regs * regs) 194static irqreturn_t piix4_master_intr(int irq, void *dev_id)
195{ 195{
196 int realirq; 196 int realirq;
197 irq_desc_t *desc; 197 irq_desc_t *desc;
@@ -244,7 +244,7 @@ static irqreturn_t piix4_master_intr(int irq, void *dev_id, struct pt_regs * reg
244 kstat_cpu(smp_processor_id()).irqs[realirq]++; 244 kstat_cpu(smp_processor_id()).irqs[realirq]++;
245 245
246 if (likely(desc->action != NULL)) 246 if (likely(desc->action != NULL))
247 handle_IRQ_event(realirq, regs, desc->action); 247 handle_IRQ_event(realirq, desc->action);
248 248
249 if (!(desc->status & IRQ_DISABLED)) 249 if (!(desc->status & IRQ_DISABLED))
250 enable_8259A_irq(realirq); 250 enable_8259A_irq(realirq);
diff --git a/arch/i386/mach-voyager/voyager_basic.c b/arch/i386/mach-voyager/voyager_basic.c
index 80b7f2fc4f46..c639d30d8bdc 100644
--- a/arch/i386/mach-voyager/voyager_basic.c
+++ b/arch/i386/mach-voyager/voyager_basic.c
@@ -87,7 +87,7 @@ voyager_detect(struct voyager_bios_info *bios)
87} 87}
88 88
89void 89void
90voyager_system_interrupt(int cpl, void *dev_id, struct pt_regs *regs) 90voyager_system_interrupt(int cpl, void *dev_id)
91{ 91{
92 printk("Voyager: detected system interrupt\n"); 92 printk("Voyager: detected system interrupt\n");
93} 93}
diff --git a/arch/i386/mach-voyager/voyager_smp.c b/arch/i386/mach-voyager/voyager_smp.c
index 856c73fcb7e7..d42422fc4af3 100644
--- a/arch/i386/mach-voyager/voyager_smp.c
+++ b/arch/i386/mach-voyager/voyager_smp.c
@@ -126,10 +126,10 @@ send_QIC_CPI(__u32 cpuset, __u8 cpi)
126} 126}
127 127
128static inline void 128static inline void
129wrapper_smp_local_timer_interrupt(struct pt_regs *regs) 129wrapper_smp_local_timer_interrupt(void)
130{ 130{
131 irq_enter(); 131 irq_enter();
132 smp_local_timer_interrupt(regs); 132 smp_local_timer_interrupt();
133 irq_exit(); 133 irq_exit();
134} 134}
135 135
@@ -786,7 +786,7 @@ fastcall void
786smp_vic_sys_interrupt(struct pt_regs *regs) 786smp_vic_sys_interrupt(struct pt_regs *regs)
787{ 787{
788 ack_CPI(VIC_SYS_INT); 788 ack_CPI(VIC_SYS_INT);
789 printk("Voyager SYSTEM INTERRUPT\n"); 789 printk("Voyager SYSTEM INTERRUPT\n");
790} 790}
791 791
792/* Handle a voyager CMN_INT; These interrupts occur either because of 792/* Handle a voyager CMN_INT; These interrupts occur either because of
@@ -1135,7 +1135,9 @@ EXPORT_SYMBOL(smp_call_function);
1135fastcall void 1135fastcall void
1136smp_apic_timer_interrupt(struct pt_regs *regs) 1136smp_apic_timer_interrupt(struct pt_regs *regs)
1137{ 1137{
1138 wrapper_smp_local_timer_interrupt(regs); 1138 struct pt_regs *old_regs = set_irq_regs(regs);
1139 wrapper_smp_local_timer_interrupt();
1140 set_irq_regs(old_regs);
1139} 1141}
1140 1142
1141/* All of the QUAD interrupt GATES */ 1143/* All of the QUAD interrupt GATES */
@@ -1143,7 +1145,9 @@ fastcall void
1143smp_qic_timer_interrupt(struct pt_regs *regs) 1145smp_qic_timer_interrupt(struct pt_regs *regs)
1144{ 1146{
1145 ack_QIC_CPI(QIC_TIMER_CPI); 1147 ack_QIC_CPI(QIC_TIMER_CPI);
1146 wrapper_smp_local_timer_interrupt(regs); 1148 struct pt_regs *old_regs = set_irq_regs(regs);
1149 wrapper_smp_local_timer_interrupt(void);
1150 set_irq_regs(old_regs);
1147} 1151}
1148 1152
1149fastcall void 1153fastcall void
@@ -1177,6 +1181,7 @@ smp_qic_call_function_interrupt(struct pt_regs *regs)
1177fastcall void 1181fastcall void
1178smp_vic_cpi_interrupt(struct pt_regs *regs) 1182smp_vic_cpi_interrupt(struct pt_regs *regs)
1179{ 1183{
1184 struct pt_regs *old_regs = set_irq_regs(regs);
1180 __u8 cpu = smp_processor_id(); 1185 __u8 cpu = smp_processor_id();
1181 1186
1182 if(is_cpu_quad()) 1187 if(is_cpu_quad())
@@ -1185,7 +1190,7 @@ smp_vic_cpi_interrupt(struct pt_regs *regs)
1185 ack_VIC_CPI(VIC_CPI_LEVEL0); 1190 ack_VIC_CPI(VIC_CPI_LEVEL0);
1186 1191
1187 if(test_and_clear_bit(VIC_TIMER_CPI, &vic_cpi_mailbox[cpu])) 1192 if(test_and_clear_bit(VIC_TIMER_CPI, &vic_cpi_mailbox[cpu]))
1188 wrapper_smp_local_timer_interrupt(regs); 1193 wrapper_smp_local_timer_interrupt();
1189 if(test_and_clear_bit(VIC_INVALIDATE_CPI, &vic_cpi_mailbox[cpu])) 1194 if(test_and_clear_bit(VIC_INVALIDATE_CPI, &vic_cpi_mailbox[cpu]))
1190 smp_invalidate_interrupt(); 1195 smp_invalidate_interrupt();
1191 if(test_and_clear_bit(VIC_RESCHEDULE_CPI, &vic_cpi_mailbox[cpu])) 1196 if(test_and_clear_bit(VIC_RESCHEDULE_CPI, &vic_cpi_mailbox[cpu]))
@@ -1194,6 +1199,7 @@ smp_vic_cpi_interrupt(struct pt_regs *regs)
1194 smp_enable_irq_interrupt(); 1199 smp_enable_irq_interrupt();
1195 if(test_and_clear_bit(VIC_CALL_FUNCTION_CPI, &vic_cpi_mailbox[cpu])) 1200 if(test_and_clear_bit(VIC_CALL_FUNCTION_CPI, &vic_cpi_mailbox[cpu]))
1196 smp_call_function_interrupt(); 1201 smp_call_function_interrupt();
1202 set_irq_regs(old_regs);
1197} 1203}
1198 1204
1199static void 1205static void
@@ -1266,8 +1272,10 @@ smp_send_stop(void)
1266void 1272void
1267smp_vic_timer_interrupt(struct pt_regs *regs) 1273smp_vic_timer_interrupt(struct pt_regs *regs)
1268{ 1274{
1275 struct pt_regs *old_regs = set_irq_regs(regs);
1269 send_CPI_allbutself(VIC_TIMER_CPI); 1276 send_CPI_allbutself(VIC_TIMER_CPI);
1270 smp_local_timer_interrupt(regs); 1277 smp_local_timer_interrupt();
1278 set_irq_regs(old_regs);
1271} 1279}
1272 1280
1273/* local (per CPU) timer interrupt. It does both profiling and 1281/* local (per CPU) timer interrupt. It does both profiling and
@@ -1279,12 +1287,12 @@ smp_vic_timer_interrupt(struct pt_regs *regs)
1279 * value into /proc/profile. 1287 * value into /proc/profile.
1280 */ 1288 */
1281void 1289void
1282smp_local_timer_interrupt(struct pt_regs * regs) 1290smp_local_timer_interrupt(void)
1283{ 1291{
1284 int cpu = smp_processor_id(); 1292 int cpu = smp_processor_id();
1285 long weight; 1293 long weight;
1286 1294
1287 profile_tick(CPU_PROFILING, regs); 1295 profile_tick(CPU_PROFILING);
1288 if (--per_cpu(prof_counter, cpu) <= 0) { 1296 if (--per_cpu(prof_counter, cpu) <= 0) {
1289 /* 1297 /*
1290 * The multiplier may have changed since the last time we got 1298 * The multiplier may have changed since the last time we got
@@ -1302,7 +1310,7 @@ smp_local_timer_interrupt(struct pt_regs * regs)
1302 per_cpu(prof_counter, cpu); 1310 per_cpu(prof_counter, cpu);
1303 } 1311 }
1304 1312
1305 update_process_times(user_mode_vm(regs)); 1313 update_process_times(user_mode_vm(irq_regs));
1306 } 1314 }
1307 1315
1308 if( ((1<<cpu) & voyager_extended_vic_processors) == 0) 1316 if( ((1<<cpu) & voyager_extended_vic_processors) == 0)
diff --git a/arch/i386/pci/direct.c b/arch/i386/pci/direct.c
index 5acf0b4743cf..431c9a51b157 100644
--- a/arch/i386/pci/direct.c
+++ b/arch/i386/pci/direct.c
@@ -256,6 +256,8 @@ static int __init pci_check_type2(void)
256 256
257void __init pci_direct_init(int type) 257void __init pci_direct_init(int type)
258{ 258{
259 if (type == 0)
260 return;
259 printk(KERN_INFO "PCI: Using configuration type %d\n", type); 261 printk(KERN_INFO "PCI: Using configuration type %d\n", type);
260 if (type == 1) 262 if (type == 1)
261 raw_pci_ops = &pci_direct_conf1; 263 raw_pci_ops = &pci_direct_conf1;
diff --git a/arch/i386/pci/init.c b/arch/i386/pci/init.c
index d028e1b05c36..b21b6da8ab1d 100644
--- a/arch/i386/pci/init.c
+++ b/arch/i386/pci/init.c
@@ -28,6 +28,10 @@ static __init int pci_access_init(void)
28#ifdef CONFIG_PCI_DIRECT 28#ifdef CONFIG_PCI_DIRECT
29 pci_direct_init(type); 29 pci_direct_init(type);
30#endif 30#endif
31 if (!raw_pci_ops)
32 printk(KERN_ERR
33 "PCI: Fatal: No config space access function found\n");
34
31 return 0; 35 return 0;
32} 36}
33arch_initcall(pci_access_init); 37arch_initcall(pci_access_init);
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
index 47f02af74be3..dbc4aae91959 100644
--- a/arch/i386/pci/irq.c
+++ b/arch/i386/pci/irq.c
@@ -1141,10 +1141,6 @@ static int pirq_enable_irq(struct pci_dev *dev)
1141 } 1141 }
1142 dev = temp_dev; 1142 dev = temp_dev;
1143 if (irq >= 0) { 1143 if (irq >= 0) {
1144#ifdef CONFIG_PCI_MSI
1145 if (!platform_legacy_irq(irq))
1146 irq = IO_APIC_VECTOR(irq);
1147#endif
1148 printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n", 1144 printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n",
1149 pci_name(dev), 'A' + pin, irq); 1145 pci_name(dev), 'A' + pin, irq);
1150 dev->irq = irq; 1146 dev->irq = irq;
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c
index e1a1b11473e2..424e9257c9a0 100644
--- a/arch/ia64/hp/sim/simeth.c
+++ b/arch/ia64/hp/sim/simeth.c
@@ -54,7 +54,7 @@ static int simeth_close(struct net_device *dev);
54static int simeth_tx(struct sk_buff *skb, struct net_device *dev); 54static int simeth_tx(struct sk_buff *skb, struct net_device *dev);
55static int simeth_rx(struct net_device *dev); 55static int simeth_rx(struct net_device *dev);
56static struct net_device_stats *simeth_get_stats(struct net_device *dev); 56static struct net_device_stats *simeth_get_stats(struct net_device *dev);
57static irqreturn_t simeth_interrupt(int irq, void *dev_id, struct pt_regs * regs); 57static irqreturn_t simeth_interrupt(int irq, void *dev_id);
58static void set_multicast_list(struct net_device *dev); 58static void set_multicast_list(struct net_device *dev);
59static int simeth_device_event(struct notifier_block *this,unsigned long event, void *ptr); 59static int simeth_device_event(struct notifier_block *this,unsigned long event, void *ptr);
60 60
@@ -87,7 +87,7 @@ static int simeth_debug; /* set to 1 to get debug information */
87 */ 87 */
88static struct notifier_block simeth_dev_notifier = { 88static struct notifier_block simeth_dev_notifier = {
89 simeth_device_event, 89 simeth_device_event,
90 0 90 NULL
91}; 91};
92 92
93 93
@@ -497,7 +497,7 @@ simeth_rx(struct net_device *dev)
497 * Interrupt handler (Yes, we can do it too !!!) 497 * Interrupt handler (Yes, we can do it too !!!)
498 */ 498 */
499static irqreturn_t 499static irqreturn_t
500simeth_interrupt(int irq, void *dev_id, struct pt_regs * regs) 500simeth_interrupt(int irq, void *dev_id)
501{ 501{
502 struct net_device *dev = dev_id; 502 struct net_device *dev = dev_id;
503 503
diff --git a/arch/ia64/hp/sim/simscsi.c b/arch/ia64/hp/sim/simscsi.c
index 8f0a16a79a67..bb87682bbb1b 100644
--- a/arch/ia64/hp/sim/simscsi.c
+++ b/arch/ia64/hp/sim/simscsi.c
@@ -103,7 +103,7 @@ simscsi_interrupt (unsigned long val)
103 103
104 while ((sc = queue[rd].sc) != 0) { 104 while ((sc = queue[rd].sc) != 0) {
105 atomic_dec(&num_reqs); 105 atomic_dec(&num_reqs);
106 queue[rd].sc = 0; 106 queue[rd].sc = NULL;
107 if (DBG) 107 if (DBG)
108 printk("simscsi_interrupt: done with %ld\n", sc->serial_number); 108 printk("simscsi_interrupt: done with %ld\n", sc->serial_number);
109 (*sc->scsi_done)(sc); 109 (*sc->scsi_done)(sc);
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c
index 246eb3d3757a..caab986af70c 100644
--- a/arch/ia64/hp/sim/simserial.c
+++ b/arch/ia64/hp/sim/simserial.c
@@ -92,7 +92,7 @@ static struct serial_uart_config uart_config[] = {
92 { "ST16650V2", 32, UART_CLEAR_FIFO | UART_USE_FIFO | 92 { "ST16650V2", 32, UART_CLEAR_FIFO | UART_USE_FIFO |
93 UART_STARTECH }, 93 UART_STARTECH },
94 { "TI16750", 64, UART_CLEAR_FIFO | UART_USE_FIFO}, 94 { "TI16750", 64, UART_CLEAR_FIFO | UART_USE_FIFO},
95 { 0, 0} 95 { NULL, 0}
96}; 96};
97 97
98struct tty_driver *hp_simserial_driver; 98struct tty_driver *hp_simserial_driver;
@@ -130,7 +130,7 @@ static void rs_start(struct tty_struct *tty)
130#endif 130#endif
131} 131}
132 132
133static void receive_chars(struct tty_struct *tty, struct pt_regs *regs) 133static void receive_chars(struct tty_struct *tty)
134{ 134{
135 unsigned char ch; 135 unsigned char ch;
136 static unsigned char seen_esc = 0; 136 static unsigned char seen_esc = 0;
@@ -152,7 +152,7 @@ static void receive_chars(struct tty_struct *tty, struct pt_regs *regs)
152 ch = ia64_ssc(0, 0, 0, 0, 152 ch = ia64_ssc(0, 0, 0, 0,
153 SSC_GETCHAR); 153 SSC_GETCHAR);
154 while (!ch); 154 while (!ch);
155 handle_sysrq(ch, regs, NULL); 155 handle_sysrq(ch, NULL);
156 } 156 }
157#endif 157#endif
158 seen_esc = 0; 158 seen_esc = 0;
@@ -170,7 +170,7 @@ static void receive_chars(struct tty_struct *tty, struct pt_regs *regs)
170/* 170/*
171 * This is the serial driver's interrupt routine for a single port 171 * This is the serial driver's interrupt routine for a single port
172 */ 172 */
173static irqreturn_t rs_interrupt_single(int irq, void *dev_id, struct pt_regs * regs) 173static irqreturn_t rs_interrupt_single(int irq, void *dev_id)
174{ 174{
175 struct async_struct * info; 175 struct async_struct * info;
176 176
@@ -187,7 +187,7 @@ static irqreturn_t rs_interrupt_single(int irq, void *dev_id, struct pt_regs * r
187 * pretty simple in our case, because we only get interrupts 187 * pretty simple in our case, because we only get interrupts
188 * on inbound traffic 188 * on inbound traffic
189 */ 189 */
190 receive_chars(info->tty, regs); 190 receive_chars(info->tty);
191 return IRQ_HANDLED; 191 return IRQ_HANDLED;
192} 192}
193 193
@@ -555,7 +555,7 @@ static void shutdown(struct async_struct * info)
555 555
556 if (info->xmit.buf) { 556 if (info->xmit.buf) {
557 free_page((unsigned long) info->xmit.buf); 557 free_page((unsigned long) info->xmit.buf);
558 info->xmit.buf = 0; 558 info->xmit.buf = NULL;
559 } 559 }
560 560
561 if (info->tty) set_bit(TTY_IO_ERROR, &info->tty->flags); 561 if (info->tty) set_bit(TTY_IO_ERROR, &info->tty->flags);
@@ -628,7 +628,7 @@ static void rs_close(struct tty_struct *tty, struct file * filp)
628 if (tty->driver->flush_buffer) tty->driver->flush_buffer(tty); 628 if (tty->driver->flush_buffer) tty->driver->flush_buffer(tty);
629 if (tty->ldisc.flush_buffer) tty->ldisc.flush_buffer(tty); 629 if (tty->ldisc.flush_buffer) tty->ldisc.flush_buffer(tty);
630 info->event = 0; 630 info->event = 0;
631 info->tty = 0; 631 info->tty = NULL;
632 if (info->blocked_open) { 632 if (info->blocked_open) {
633 if (info->close_delay) 633 if (info->close_delay)
634 schedule_timeout_interruptible(info->close_delay); 634 schedule_timeout_interruptible(info->close_delay);
@@ -668,7 +668,7 @@ static void rs_hangup(struct tty_struct *tty)
668 info->event = 0; 668 info->event = 0;
669 state->count = 0; 669 state->count = 0;
670 info->flags &= ~ASYNC_NORMAL_ACTIVE; 670 info->flags &= ~ASYNC_NORMAL_ACTIVE;
671 info->tty = 0; 671 info->tty = NULL;
672 wake_up_interruptible(&info->open_wait); 672 wake_up_interruptible(&info->open_wait);
673} 673}
674 674
@@ -714,7 +714,7 @@ startup(struct async_struct *info)
714{ 714{
715 unsigned long flags; 715 unsigned long flags;
716 int retval=0; 716 int retval=0;
717 irqreturn_t (*handler)(int, void *, struct pt_regs *); 717 irq_handler_t handler;
718 struct serial_state *state= info->state; 718 struct serial_state *state= info->state;
719 unsigned long page; 719 unsigned long page;
720 720
@@ -769,7 +769,7 @@ startup(struct async_struct *info)
769 /* 769 /*
770 * Insert serial port into IRQ chain. 770 * Insert serial port into IRQ chain.
771 */ 771 */
772 info->prev_port = 0; 772 info->prev_port = NULL;
773 info->next_port = IRQ_ports[state->irq]; 773 info->next_port = IRQ_ports[state->irq];
774 if (info->next_port) 774 if (info->next_port)
775 info->next_port->prev_port = info; 775 info->next_port->prev_port = info;
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 7852382de2fa..f07c0864b0b4 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -194,8 +194,11 @@ void fixup_irqs(void)
194 */ 194 */
195 for (irq=0; irq < NR_IRQS; irq++) { 195 for (irq=0; irq < NR_IRQS; irq++) {
196 if (vectors_in_migration[irq]) { 196 if (vectors_in_migration[irq]) {
197 struct pt_regs *old_regs = set_irq_regs(NULL);
198
197 vectors_in_migration[irq]=0; 199 vectors_in_migration[irq]=0;
198 __do_IRQ(irq, NULL); 200 __do_IRQ(irq);
201 set_irq_regs(old_regs);
199 } 202 }
200 } 203 }
201 204
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index ab2d19c3661f..68339dd0c9e2 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -138,6 +138,7 @@ void destroy_irq(unsigned int irq)
138void 138void
139ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) 139ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
140{ 140{
141 struct pt_regs *old_regs = set_irq_regs(regs);
141 unsigned long saved_tpr; 142 unsigned long saved_tpr;
142 143
143#if IRQ_DEBUG 144#if IRQ_DEBUG
@@ -183,7 +184,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
183 ia64_setreg(_IA64_REG_CR_TPR, vector); 184 ia64_setreg(_IA64_REG_CR_TPR, vector);
184 ia64_srlz_d(); 185 ia64_srlz_d();
185 186
186 __do_IRQ(local_vector_to_irq(vector), regs); 187 __do_IRQ(local_vector_to_irq(vector));
187 188
188 /* 189 /*
189 * Disable interrupts and send EOI: 190 * Disable interrupts and send EOI:
@@ -200,6 +201,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
200 * come through until ia64_eoi() has been done. 201 * come through until ia64_eoi() has been done.
201 */ 202 */
202 irq_exit(); 203 irq_exit();
204 set_irq_regs(old_regs);
203} 205}
204 206
205#ifdef CONFIG_HOTPLUG_CPU 207#ifdef CONFIG_HOTPLUG_CPU
@@ -224,6 +226,8 @@ void ia64_process_pending_intr(void)
224 */ 226 */
225 while (vector != IA64_SPURIOUS_INT_VECTOR) { 227 while (vector != IA64_SPURIOUS_INT_VECTOR) {
226 if (!IS_RESCHEDULE(vector)) { 228 if (!IS_RESCHEDULE(vector)) {
229 struct pt_regs *old_regs = set_irq_regs(NULL);
230
227 ia64_setreg(_IA64_REG_CR_TPR, vector); 231 ia64_setreg(_IA64_REG_CR_TPR, vector);
228 ia64_srlz_d(); 232 ia64_srlz_d();
229 233
@@ -234,7 +238,8 @@ void ia64_process_pending_intr(void)
234 * Probably could shared code. 238 * Probably could shared code.
235 */ 239 */
236 vectors_in_migration[local_vector_to_irq(vector)]=0; 240 vectors_in_migration[local_vector_to_irq(vector)]=0;
237 __do_IRQ(local_vector_to_irq(vector), NULL); 241 __do_IRQ(local_vector_to_irq(vector));
242 set_irq_regs(old_regs);
238 243
239 /* 244 /*
240 * Disable interrupts and send EOI 245 * Disable interrupts and send EOI
@@ -251,7 +256,7 @@ void ia64_process_pending_intr(void)
251 256
252 257
253#ifdef CONFIG_SMP 258#ifdef CONFIG_SMP
254extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs); 259extern irqreturn_t handle_IPI (int irq, void *dev_id);
255 260
256static struct irqaction ipi_irqaction = { 261static struct irqaction ipi_irqaction = {
257 .handler = handle_IPI, 262 .handler = handle_IPI,
diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c
index d4a546aa5048..9620822270a6 100644
--- a/arch/ia64/kernel/machvec.c
+++ b/arch/ia64/kernel/machvec.c
@@ -60,7 +60,7 @@ machvec_setup (char **arg)
60EXPORT_SYMBOL(machvec_setup); 60EXPORT_SYMBOL(machvec_setup);
61 61
62void 62void
63machvec_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) 63machvec_timer_interrupt (int irq, void *dev_id)
64{ 64{
65} 65}
66EXPORT_SYMBOL(machvec_timer_interrupt); 66EXPORT_SYMBOL(machvec_timer_interrupt);
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 663230183254..7cfa63a98cb3 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -499,7 +499,7 @@ int cpe_vector = -1;
499int ia64_cpe_irq = -1; 499int ia64_cpe_irq = -1;
500 500
501static irqreturn_t 501static irqreturn_t
502ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs) 502ia64_mca_cpe_int_handler (int cpe_irq, void *arg)
503{ 503{
504 static unsigned long cpe_history[CPE_HISTORY_LENGTH]; 504 static unsigned long cpe_history[CPE_HISTORY_LENGTH];
505 static int index; 505 static int index;
@@ -744,7 +744,7 @@ ia64_mca_wakeup_all(void)
744 * Outputs : None 744 * Outputs : None
745 */ 745 */
746static irqreturn_t 746static irqreturn_t
747ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs) 747ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
748{ 748{
749 unsigned long flags; 749 unsigned long flags;
750 int cpu = smp_processor_id(); 750 int cpu = smp_processor_id();
@@ -753,8 +753,8 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs)
753 753
754 /* Mask all interrupts */ 754 /* Mask all interrupts */
755 local_irq_save(flags); 755 local_irq_save(flags);
756 if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", regs, (long)&nd, 0, 0) 756 if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", get_irq_regs(),
757 == NOTIFY_STOP) 757 (long)&nd, 0, 0) == NOTIFY_STOP)
758 ia64_mca_spin(__FUNCTION__); 758 ia64_mca_spin(__FUNCTION__);
759 759
760 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE; 760 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE;
@@ -763,16 +763,16 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs)
763 */ 763 */
764 ia64_sal_mc_rendez(); 764 ia64_sal_mc_rendez();
765 765
766 if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", regs, (long)&nd, 0, 0) 766 if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", get_irq_regs(),
767 == NOTIFY_STOP) 767 (long)&nd, 0, 0) == NOTIFY_STOP)
768 ia64_mca_spin(__FUNCTION__); 768 ia64_mca_spin(__FUNCTION__);
769 769
770 /* Wait for the monarch cpu to exit. */ 770 /* Wait for the monarch cpu to exit. */
771 while (monarch_cpu != -1) 771 while (monarch_cpu != -1)
772 cpu_relax(); /* spin until monarch leaves */ 772 cpu_relax(); /* spin until monarch leaves */
773 773
774 if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", regs, (long)&nd, 0, 0) 774 if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", get_irq_regs(),
775 == NOTIFY_STOP) 775 (long)&nd, 0, 0) == NOTIFY_STOP)
776 ia64_mca_spin(__FUNCTION__); 776 ia64_mca_spin(__FUNCTION__);
777 777
778 /* Enable all interrupts */ 778 /* Enable all interrupts */
@@ -791,12 +791,11 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs)
791 * 791 *
792 * Inputs : wakeup_irq (Wakeup-interrupt bit) 792 * Inputs : wakeup_irq (Wakeup-interrupt bit)
793 * arg (Interrupt handler specific argument) 793 * arg (Interrupt handler specific argument)
794 * ptregs (Exception frame at the time of the interrupt)
795 * Outputs : None 794 * Outputs : None
796 * 795 *
797 */ 796 */
798static irqreturn_t 797static irqreturn_t
799ia64_mca_wakeup_int_handler(int wakeup_irq, void *arg, struct pt_regs *ptregs) 798ia64_mca_wakeup_int_handler(int wakeup_irq, void *arg)
800{ 799{
801 return IRQ_HANDLED; 800 return IRQ_HANDLED;
802} 801}
@@ -1261,13 +1260,12 @@ static DECLARE_WORK(cmc_enable_work, ia64_mca_cmc_vector_enable_keventd, NULL);
1261 * Inputs 1260 * Inputs
1262 * interrupt number 1261 * interrupt number
1263 * client data arg ptr 1262 * client data arg ptr
1264 * saved registers ptr
1265 * 1263 *
1266 * Outputs 1264 * Outputs
1267 * None 1265 * None
1268 */ 1266 */
1269static irqreturn_t 1267static irqreturn_t
1270ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs) 1268ia64_mca_cmc_int_handler(int cmc_irq, void *arg)
1271{ 1269{
1272 static unsigned long cmc_history[CMC_HISTORY_LENGTH]; 1270 static unsigned long cmc_history[CMC_HISTORY_LENGTH];
1273 static int index; 1271 static int index;
@@ -1336,12 +1334,11 @@ out:
1336 * Inputs 1334 * Inputs
1337 * interrupt number 1335 * interrupt number
1338 * client data arg ptr 1336 * client data arg ptr
1339 * saved registers ptr
1340 * Outputs 1337 * Outputs
1341 * handled 1338 * handled
1342 */ 1339 */
1343static irqreturn_t 1340static irqreturn_t
1344ia64_mca_cmc_int_caller(int cmc_irq, void *arg, struct pt_regs *ptregs) 1341ia64_mca_cmc_int_caller(int cmc_irq, void *arg)
1345{ 1342{
1346 static int start_count = -1; 1343 static int start_count = -1;
1347 unsigned int cpuid; 1344 unsigned int cpuid;
@@ -1352,7 +1349,7 @@ ia64_mca_cmc_int_caller(int cmc_irq, void *arg, struct pt_regs *ptregs)
1352 if (start_count == -1) 1349 if (start_count == -1)
1353 start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CMC); 1350 start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CMC);
1354 1351
1355 ia64_mca_cmc_int_handler(cmc_irq, arg, ptregs); 1352 ia64_mca_cmc_int_handler(cmc_irq, arg);
1356 1353
1357 for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++); 1354 for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++);
1358 1355
@@ -1403,14 +1400,13 @@ ia64_mca_cmc_poll (unsigned long dummy)
1403 * Inputs 1400 * Inputs
1404 * interrupt number 1401 * interrupt number
1405 * client data arg ptr 1402 * client data arg ptr
1406 * saved registers ptr
1407 * Outputs 1403 * Outputs
1408 * handled 1404 * handled
1409 */ 1405 */
1410#ifdef CONFIG_ACPI 1406#ifdef CONFIG_ACPI
1411 1407
1412static irqreturn_t 1408static irqreturn_t
1413ia64_mca_cpe_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs) 1409ia64_mca_cpe_int_caller(int cpe_irq, void *arg)
1414{ 1410{
1415 static int start_count = -1; 1411 static int start_count = -1;
1416 static int poll_time = MIN_CPE_POLL_INTERVAL; 1412 static int poll_time = MIN_CPE_POLL_INTERVAL;
@@ -1422,7 +1418,7 @@ ia64_mca_cpe_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs)
1422 if (start_count == -1) 1418 if (start_count == -1)
1423 start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CPE); 1419 start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CPE);
1424 1420
1425 ia64_mca_cpe_int_handler(cpe_irq, arg, ptregs); 1421 ia64_mca_cpe_int_handler(cpe_irq, arg);
1426 1422
1427 for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++); 1423 for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++);
1428 1424
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 62e07f906e05..41169a9bc301 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -45,7 +45,7 @@ static struct time_interpolator itc_interpolator = {
45}; 45};
46 46
47static irqreturn_t 47static irqreturn_t
48timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) 48timer_interrupt (int irq, void *dev_id)
49{ 49{
50 unsigned long new_itm; 50 unsigned long new_itm;
51 51
@@ -53,7 +53,7 @@ timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
53 return IRQ_HANDLED; 53 return IRQ_HANDLED;
54 } 54 }
55 55
56 platform_timer_interrupt(irq, dev_id, regs); 56 platform_timer_interrupt(irq, dev_id);
57 57
58 new_itm = local_cpu_data->itm_next; 58 new_itm = local_cpu_data->itm_next;
59 59
@@ -61,10 +61,10 @@ timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
61 printk(KERN_ERR "Oops: timer tick before it's due (itc=%lx,itm=%lx)\n", 61 printk(KERN_ERR "Oops: timer tick before it's due (itc=%lx,itm=%lx)\n",
62 ia64_get_itc(), new_itm); 62 ia64_get_itc(), new_itm);
63 63
64 profile_tick(CPU_PROFILING, regs); 64 profile_tick(CPU_PROFILING);
65 65
66 while (1) { 66 while (1) {
67 update_process_times(user_mode(regs)); 67 update_process_times(user_mode(get_irq_regs()));
68 68
69 new_itm += local_cpu_data->itm_delta; 69 new_itm += local_cpu_data->itm_delta;
70 70
diff --git a/arch/ia64/sn/kernel/huberror.c b/arch/ia64/sn/kernel/huberror.c
index 96fb81e6321f..abca6bd7962f 100644
--- a/arch/ia64/sn/kernel/huberror.c
+++ b/arch/ia64/sn/kernel/huberror.c
@@ -22,7 +22,7 @@
22void hubiio_crb_error_handler(struct hubdev_info *hubdev_info); 22void hubiio_crb_error_handler(struct hubdev_info *hubdev_info);
23extern void bte_crb_error_handler(cnodeid_t, int, int, ioerror_t *, 23extern void bte_crb_error_handler(cnodeid_t, int, int, ioerror_t *,
24 int); 24 int);
25static irqreturn_t hub_eint_handler(int irq, void *arg, struct pt_regs *ep) 25static irqreturn_t hub_eint_handler(int irq, void *arg)
26{ 26{
27 struct hubdev_info *hubdev_info; 27 struct hubdev_info *hubdev_info;
28 struct ia64_sal_retval ret_stuff; 28 struct ia64_sal_retval ret_stuff;
@@ -178,7 +178,7 @@ void hubiio_crb_error_handler(struct hubdev_info *hubdev_info)
178 */ 178 */
179void hub_error_init(struct hubdev_info *hubdev_info) 179void hub_error_init(struct hubdev_info *hubdev_info)
180{ 180{
181 if (request_irq(SGI_II_ERROR, (void *)hub_eint_handler, IRQF_SHARED, 181 if (request_irq(SGI_II_ERROR, hub_eint_handler, IRQF_SHARED,
182 "SN_hub_error", (void *)hubdev_info)) 182 "SN_hub_error", (void *)hubdev_info))
183 printk("hub_error_init: Failed to request_irq for 0x%p\n", 183 printk("hub_error_init: Failed to request_irq for 0x%p\n",
184 hubdev_info); 184 hubdev_info);
diff --git a/arch/ia64/sn/kernel/sn2/timer_interrupt.c b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
index fa7f69945917..103d6ea8e94b 100644
--- a/arch/ia64/sn/kernel/sn2/timer_interrupt.c
+++ b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
@@ -36,7 +36,7 @@ extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs);
36 36
37#define SN_LB_INT_WAR_INTERVAL 100 37#define SN_LB_INT_WAR_INTERVAL 100
38 38
39void sn_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 39void sn_timer_interrupt(int irq, void *dev_id)
40{ 40{
41 /* LED blinking */ 41 /* LED blinking */
42 if (!pda->hb_count--) { 42 if (!pda->hb_count--) {
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
index 4d026f9dd98b..fa96dfc0e1aa 100644
--- a/arch/ia64/sn/kernel/xpc_main.c
+++ b/arch/ia64/sn/kernel/xpc_main.c
@@ -222,7 +222,7 @@ xpc_timeout_partition_disengage_request(unsigned long data)
222 * Notify the heartbeat check thread that an IRQ has been received. 222 * Notify the heartbeat check thread that an IRQ has been received.
223 */ 223 */
224static irqreturn_t 224static irqreturn_t
225xpc_act_IRQ_handler(int irq, void *dev_id, struct pt_regs *regs) 225xpc_act_IRQ_handler(int irq, void *dev_id)
226{ 226{
227 atomic_inc(&xpc_act_IRQ_rcvd); 227 atomic_inc(&xpc_act_IRQ_rcvd);
228 wake_up_interruptible(&xpc_act_IRQ_wq); 228 wake_up_interruptible(&xpc_act_IRQ_wq);
@@ -607,12 +607,9 @@ xpc_activate_partition(struct xpc_partition *part)
607 * irq - Interrupt ReQuest number. NOT USED. 607 * irq - Interrupt ReQuest number. NOT USED.
608 * 608 *
609 * dev_id - partid of IPI's potential sender. 609 * dev_id - partid of IPI's potential sender.
610 *
611 * regs - processor's context before the processor entered
612 * interrupt code. NOT USED.
613 */ 610 */
614irqreturn_t 611irqreturn_t
615xpc_notify_IRQ_handler(int irq, void *dev_id, struct pt_regs *regs) 612xpc_notify_IRQ_handler(int irq, void *dev_id)
616{ 613{
617 partid_t partid = (partid_t) (u64) dev_id; 614 partid_t partid = (partid_t) (u64) dev_id;
618 struct xpc_partition *part = &xpc_partitions[partid]; 615 struct xpc_partition *part = &xpc_partitions[partid];
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_ate.c b/arch/ia64/sn/pci/pcibr/pcibr_ate.c
index 5eb1e1e078b4..935029fc400d 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_ate.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_ate.c
@@ -126,7 +126,7 @@ int pcibr_ate_alloc(struct pcibus_info *pcibus_info, int count)
126 * Setup an Address Translation Entry as specified. Use either the Bridge 126 * Setup an Address Translation Entry as specified. Use either the Bridge
127 * internal maps or the external map RAM, as appropriate. 127 * internal maps or the external map RAM, as appropriate.
128 */ 128 */
129static inline u64 *pcibr_ate_addr(struct pcibus_info *pcibus_info, 129static inline u64 __iomem *pcibr_ate_addr(struct pcibus_info *pcibus_info,
130 int ate_index) 130 int ate_index)
131{ 131{
132 if (ate_index < pcibus_info->pbi_int_ate_size) { 132 if (ate_index < pcibus_info->pbi_int_ate_size) {
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_provider.c b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
index 838c93c9a16a..27dd7df0f446 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_provider.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
@@ -95,7 +95,7 @@ u16 sn_ioboard_to_pci_bus(struct pci_bus *pci_bus)
95 * bridge sends an error interrupt. 95 * bridge sends an error interrupt.
96 */ 96 */
97static irqreturn_t 97static irqreturn_t
98pcibr_error_intr_handler(int irq, void *arg, struct pt_regs *regs) 98pcibr_error_intr_handler(int irq, void *arg)
99{ 99{
100 struct pcibus_info *soft = (struct pcibus_info *)arg; 100 struct pcibus_info *soft = (struct pcibus_info *)arg;
101 101
@@ -138,7 +138,7 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
138 /* 138 /*
139 * register the bridge's error interrupt handler 139 * register the bridge's error interrupt handler
140 */ 140 */
141 if (request_irq(SGI_PCIASIC_ERROR, (void *)pcibr_error_intr_handler, 141 if (request_irq(SGI_PCIASIC_ERROR, pcibr_error_intr_handler,
142 IRQF_SHARED, "PCIBR error", (void *)(soft))) { 142 IRQF_SHARED, "PCIBR error", (void *)(soft))) {
143 printk(KERN_WARNING 143 printk(KERN_WARNING
144 "pcibr cannot allocate interrupt for error handler\n"); 144 "pcibr cannot allocate interrupt for error handler\n");
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c
index c36b0f5affb3..8a2cb4e691fd 100644
--- a/arch/ia64/sn/pci/tioca_provider.c
+++ b/arch/ia64/sn/pci/tioca_provider.c
@@ -550,13 +550,12 @@ tioca_dma_map(struct pci_dev *pdev, u64 paddr, size_t byte_count, int dma_flags)
550 * tioca_error_intr_handler - SGI TIO CA error interrupt handler 550 * tioca_error_intr_handler - SGI TIO CA error interrupt handler
551 * @irq: unused 551 * @irq: unused
552 * @arg: pointer to tioca_common struct for the given CA 552 * @arg: pointer to tioca_common struct for the given CA
553 * @pt: unused
554 * 553 *
555 * Handle a CA error interrupt. Simply a wrapper around a SAL call which 554 * Handle a CA error interrupt. Simply a wrapper around a SAL call which
556 * defers processing to the SGI prom. 555 * defers processing to the SGI prom.
557 */ 556 */
558static irqreturn_t 557static irqreturn_t
559tioca_error_intr_handler(int irq, void *arg, struct pt_regs *pt) 558tioca_error_intr_handler(int irq, void *arg)
560{ 559{
561 struct tioca_common *soft = arg; 560 struct tioca_common *soft = arg;
562 struct ia64_sal_retval ret_stuff; 561 struct ia64_sal_retval ret_stuff;
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index af7171adcd2c..46e16dcf5971 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -53,7 +53,7 @@
53 */ 53 */
54 54
55static void inline 55static void inline
56tioce_mmr_war_pre(struct tioce_kernel *kern, void *mmr_addr) 56tioce_mmr_war_pre(struct tioce_kernel *kern, void __iomem *mmr_addr)
57{ 57{
58 u64 mmr_base; 58 u64 mmr_base;
59 u64 mmr_offset; 59 u64 mmr_offset;
@@ -62,7 +62,7 @@ tioce_mmr_war_pre(struct tioce_kernel *kern, void *mmr_addr)
62 return; 62 return;
63 63
64 mmr_base = kern->ce_common->ce_pcibus.bs_base; 64 mmr_base = kern->ce_common->ce_pcibus.bs_base;
65 mmr_offset = (u64)mmr_addr - mmr_base; 65 mmr_offset = (unsigned long)mmr_addr - mmr_base;
66 66
67 if (mmr_offset < 0x45000) { 67 if (mmr_offset < 0x45000) {
68 u64 mmr_war_offset; 68 u64 mmr_war_offset;
@@ -79,7 +79,7 @@ tioce_mmr_war_pre(struct tioce_kernel *kern, void *mmr_addr)
79} 79}
80 80
81static void inline 81static void inline
82tioce_mmr_war_post(struct tioce_kernel *kern, void *mmr_addr) 82tioce_mmr_war_post(struct tioce_kernel *kern, void __iomem *mmr_addr)
83{ 83{
84 u64 mmr_base; 84 u64 mmr_base;
85 u64 mmr_offset; 85 u64 mmr_offset;
@@ -88,7 +88,7 @@ tioce_mmr_war_post(struct tioce_kernel *kern, void *mmr_addr)
88 return; 88 return;
89 89
90 mmr_base = kern->ce_common->ce_pcibus.bs_base; 90 mmr_base = kern->ce_common->ce_pcibus.bs_base;
91 mmr_offset = (u64)mmr_addr - mmr_base; 91 mmr_offset = (unsigned long)mmr_addr - mmr_base;
92 92
93 if (mmr_offset < 0x45000) { 93 if (mmr_offset < 0x45000) {
94 if (mmr_offset == 0x100) 94 if (mmr_offset == 0x100)
@@ -223,7 +223,7 @@ tioce_dma_d64(unsigned long ct_addr, int dma_flags)
223 * @pci_dev. 223 * @pci_dev.
224 */ 224 */
225static inline void 225static inline void
226pcidev_to_tioce(struct pci_dev *pdev, struct tioce **base, 226pcidev_to_tioce(struct pci_dev *pdev, struct tioce __iomem **base,
227 struct tioce_kernel **kernel, int *port) 227 struct tioce_kernel **kernel, int *port)
228{ 228{
229 struct pcidev_info *pcidev_info; 229 struct pcidev_info *pcidev_info;
@@ -235,7 +235,7 @@ pcidev_to_tioce(struct pci_dev *pdev, struct tioce **base,
235 ce_kernel = (struct tioce_kernel *)ce_common->ce_kernel_private; 235 ce_kernel = (struct tioce_kernel *)ce_common->ce_kernel_private;
236 236
237 if (base) 237 if (base)
238 *base = (struct tioce *)ce_common->ce_pcibus.bs_base; 238 *base = (struct tioce __iomem *)ce_common->ce_pcibus.bs_base;
239 if (kernel) 239 if (kernel)
240 *kernel = ce_kernel; 240 *kernel = ce_kernel;
241 241
@@ -275,13 +275,13 @@ tioce_alloc_map(struct tioce_kernel *ce_kern, int type, int port,
275 u64 pagesize; 275 u64 pagesize;
276 int msi_capable, msi_wanted; 276 int msi_capable, msi_wanted;
277 u64 *ate_shadow; 277 u64 *ate_shadow;
278 u64 *ate_reg; 278 u64 __iomem *ate_reg;
279 u64 addr; 279 u64 addr;
280 struct tioce *ce_mmr; 280 struct tioce __iomem *ce_mmr;
281 u64 bus_base; 281 u64 bus_base;
282 struct tioce_dmamap *map; 282 struct tioce_dmamap *map;
283 283
284 ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base; 284 ce_mmr = (struct tioce __iomem *)ce_kern->ce_common->ce_pcibus.bs_base;
285 285
286 switch (type) { 286 switch (type) {
287 case TIOCE_ATE_M32: 287 case TIOCE_ATE_M32:
@@ -386,7 +386,7 @@ tioce_dma_d32(struct pci_dev *pdev, u64 ct_addr, int dma_flags)
386{ 386{
387 int dma_ok; 387 int dma_ok;
388 int port; 388 int port;
389 struct tioce *ce_mmr; 389 struct tioce __iomem *ce_mmr;
390 struct tioce_kernel *ce_kern; 390 struct tioce_kernel *ce_kern;
391 u64 ct_upper; 391 u64 ct_upper;
392 u64 ct_lower; 392 u64 ct_lower;
@@ -461,7 +461,7 @@ tioce_dma_unmap(struct pci_dev *pdev, dma_addr_t bus_addr, int dir)
461 int i; 461 int i;
462 int port; 462 int port;
463 struct tioce_kernel *ce_kern; 463 struct tioce_kernel *ce_kern;
464 struct tioce *ce_mmr; 464 struct tioce __iomem *ce_mmr;
465 unsigned long flags; 465 unsigned long flags;
466 466
467 bus_addr = tioce_dma_barrier(bus_addr, 0); 467 bus_addr = tioce_dma_barrier(bus_addr, 0);
@@ -666,12 +666,11 @@ tioce_dma_consistent(struct pci_dev *pdev, u64 paddr, size_t byte_count, int dma
666 * tioce_error_intr_handler - SGI TIO CE error interrupt handler 666 * tioce_error_intr_handler - SGI TIO CE error interrupt handler
667 * @irq: unused 667 * @irq: unused
668 * @arg: pointer to tioce_common struct for the given CE 668 * @arg: pointer to tioce_common struct for the given CE
669 * @pt: unused
670 * 669 *
671 * Handle a CE error interrupt. Simply a wrapper around a SAL call which 670 * Handle a CE error interrupt. Simply a wrapper around a SAL call which
672 * defers processing to the SGI prom. 671 * defers processing to the SGI prom.
673 */ static irqreturn_t 672 */ static irqreturn_t
674tioce_error_intr_handler(int irq, void *arg, struct pt_regs *pt) 673tioce_error_intr_handler(int irq, void *arg)
675{ 674{
676 struct tioce_common *soft = arg; 675 struct tioce_common *soft = arg;
677 struct ia64_sal_retval ret_stuff; 676 struct ia64_sal_retval ret_stuff;
@@ -701,9 +700,9 @@ static void
701tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit) 700tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit)
702{ 701{
703 int ate_index, last_ate, ps; 702 int ate_index, last_ate, ps;
704 struct tioce *ce_mmr; 703 struct tioce __iomem *ce_mmr;
705 704
706 ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base; 705 ce_mmr = (struct tioce __iomem *)ce_kern->ce_common->ce_pcibus.bs_base;
707 ps = ce_kern->ce_ate3240_pagesize; 706 ps = ce_kern->ce_ate3240_pagesize;
708 ate_index = ATE_PAGE(base, ps); 707 ate_index = ATE_PAGE(base, ps);
709 last_ate = ate_index + ATE_NPAGES(base, limit-base+1, ps) - 1; 708 last_ate = ate_index + ATE_NPAGES(base, limit-base+1, ps) - 1;
@@ -737,7 +736,7 @@ tioce_kern_init(struct tioce_common *tioce_common)
737 int dev; 736 int dev;
738 u32 tmp; 737 u32 tmp;
739 unsigned int seg, bus; 738 unsigned int seg, bus;
740 struct tioce *tioce_mmr; 739 struct tioce __iomem *tioce_mmr;
741 struct tioce_kernel *tioce_kern; 740 struct tioce_kernel *tioce_kern;
742 741
743 tioce_kern = kzalloc(sizeof(struct tioce_kernel), GFP_KERNEL); 742 tioce_kern = kzalloc(sizeof(struct tioce_kernel), GFP_KERNEL);
@@ -768,7 +767,7 @@ tioce_kern_init(struct tioce_common *tioce_common)
768 * the ate's. 767 * the ate's.
769 */ 768 */
770 769
771 tioce_mmr = (struct tioce *)tioce_common->ce_pcibus.bs_base; 770 tioce_mmr = (struct tioce __iomem *)tioce_common->ce_pcibus.bs_base;
772 tioce_mmr_clri(tioce_kern, &tioce_mmr->ce_ure_page_map, 771 tioce_mmr_clri(tioce_kern, &tioce_mmr->ce_ure_page_map,
773 CE_URE_PAGESIZE_MASK); 772 CE_URE_PAGESIZE_MASK);
774 tioce_mmr_seti(tioce_kern, &tioce_mmr->ce_ure_page_map, 773 tioce_mmr_seti(tioce_kern, &tioce_mmr->ce_ure_page_map,
@@ -859,7 +858,7 @@ tioce_force_interrupt(struct sn_irq_info *sn_irq_info)
859 struct pcidev_info *pcidev_info; 858 struct pcidev_info *pcidev_info;
860 struct tioce_common *ce_common; 859 struct tioce_common *ce_common;
861 struct tioce_kernel *ce_kern; 860 struct tioce_kernel *ce_kern;
862 struct tioce *ce_mmr; 861 struct tioce __iomem *ce_mmr;
863 u64 force_int_val; 862 u64 force_int_val;
864 863
865 if (!sn_irq_info->irq_bridge) 864 if (!sn_irq_info->irq_bridge)
@@ -873,7 +872,7 @@ tioce_force_interrupt(struct sn_irq_info *sn_irq_info)
873 return; 872 return;
874 873
875 ce_common = (struct tioce_common *)pcidev_info->pdi_pcibus_info; 874 ce_common = (struct tioce_common *)pcidev_info->pdi_pcibus_info;
876 ce_mmr = (struct tioce *)ce_common->ce_pcibus.bs_base; 875 ce_mmr = (struct tioce __iomem *)ce_common->ce_pcibus.bs_base;
877 ce_kern = (struct tioce_kernel *)ce_common->ce_kernel_private; 876 ce_kern = (struct tioce_kernel *)ce_common->ce_kernel_private;
878 877
879 /* 878 /*
@@ -954,7 +953,7 @@ tioce_target_interrupt(struct sn_irq_info *sn_irq_info)
954 struct pcidev_info *pcidev_info; 953 struct pcidev_info *pcidev_info;
955 struct tioce_common *ce_common; 954 struct tioce_common *ce_common;
956 struct tioce_kernel *ce_kern; 955 struct tioce_kernel *ce_kern;
957 struct tioce *ce_mmr; 956 struct tioce __iomem *ce_mmr;
958 int bit; 957 int bit;
959 u64 vector; 958 u64 vector;
960 959
@@ -963,7 +962,7 @@ tioce_target_interrupt(struct sn_irq_info *sn_irq_info)
963 return; 962 return;
964 963
965 ce_common = (struct tioce_common *)pcidev_info->pdi_pcibus_info; 964 ce_common = (struct tioce_common *)pcidev_info->pdi_pcibus_info;
966 ce_mmr = (struct tioce *)ce_common->ce_pcibus.bs_base; 965 ce_mmr = (struct tioce __iomem *)ce_common->ce_pcibus.bs_base;
967 ce_kern = (struct tioce_kernel *)ce_common->ce_kernel_private; 966 ce_kern = (struct tioce_kernel *)ce_common->ce_kernel_private;
968 967
969 bit = sn_irq_info->irq_int_bit; 968 bit = sn_irq_info->irq_int_bit;
@@ -995,7 +994,7 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
995 cnodeid_t my_cnode, mem_cnode; 994 cnodeid_t my_cnode, mem_cnode;
996 struct tioce_common *tioce_common; 995 struct tioce_common *tioce_common;
997 struct tioce_kernel *tioce_kern; 996 struct tioce_kernel *tioce_kern;
998 struct tioce *tioce_mmr; 997 struct tioce __iomem *tioce_mmr;
999 998
1000 /* 999 /*
1001 * Allocate kernel bus soft and copy from prom. 1000 * Allocate kernel bus soft and copy from prom.
@@ -1019,7 +1018,7 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
1019 * interrupt handler. 1018 * interrupt handler.
1020 */ 1019 */
1021 1020
1022 tioce_mmr = (struct tioce *)tioce_common->ce_pcibus.bs_base; 1021 tioce_mmr = (struct tioce __iomem *)tioce_common->ce_pcibus.bs_base;
1023 tioce_mmr_seti(tioce_kern, &tioce_mmr->ce_adm_int_status_alias, ~0ULL); 1022 tioce_mmr_seti(tioce_kern, &tioce_mmr->ce_adm_int_status_alias, ~0ULL);
1024 tioce_mmr_seti(tioce_kern, &tioce_mmr->ce_adm_error_summary_alias, 1023 tioce_mmr_seti(tioce_kern, &tioce_mmr->ce_adm_error_summary_alias,
1025 ~0ULL); 1024 ~0ULL);
diff --git a/arch/m32r/kernel/irq.c b/arch/m32r/kernel/irq.c
index 3841861df6a2..f8d8650383e0 100644
--- a/arch/m32r/kernel/irq.c
+++ b/arch/m32r/kernel/irq.c
@@ -77,13 +77,16 @@ skip:
77 */ 77 */
78asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs) 78asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs)
79{ 79{
80 struct pt_regs *old_regs;
81 old_regs = set_irq_regs(regs);
80 irq_enter(); 82 irq_enter();
81 83
82#ifdef CONFIG_DEBUG_STACKOVERFLOW 84#ifdef CONFIG_DEBUG_STACKOVERFLOW
83 /* FIXME M32R */ 85 /* FIXME M32R */
84#endif 86#endif
85 __do_IRQ(irq, regs); 87 __do_IRQ(irq);
86 irq_exit(); 88 irq_exit();
89 set_irq_regs(old_regs);
87 90
88 return 1; 91 return 1;
89} 92}
diff --git a/arch/m32r/kernel/smp.c b/arch/m32r/kernel/smp.c
index 8b1f6eb76870..722e21f556dc 100644
--- a/arch/m32r/kernel/smp.c
+++ b/arch/m32r/kernel/smp.c
@@ -101,7 +101,7 @@ void smp_call_function_interrupt(void);
101 101
102void smp_send_timer(void); 102void smp_send_timer(void);
103void smp_ipi_timer_interrupt(struct pt_regs *); 103void smp_ipi_timer_interrupt(struct pt_regs *);
104void smp_local_timer_interrupt(struct pt_regs *); 104void smp_local_timer_interrupt(void);
105 105
106void send_IPI_allbutself(int, int); 106void send_IPI_allbutself(int, int);
107static void send_IPI_mask(cpumask_t, int, int); 107static void send_IPI_mask(cpumask_t, int, int);
@@ -734,9 +734,12 @@ void smp_send_timer(void)
734 *==========================================================================*/ 734 *==========================================================================*/
735void smp_ipi_timer_interrupt(struct pt_regs *regs) 735void smp_ipi_timer_interrupt(struct pt_regs *regs)
736{ 736{
737 struct pt_regs *old_regs;
738 old_regs = set_irq_regs(regs);
737 irq_enter(); 739 irq_enter();
738 smp_local_timer_interrupt(regs); 740 smp_local_timer_interrupt();
739 irq_exit(); 741 irq_exit();
742 set_irq_regs(old_regs);
740} 743}
741 744
742/*==========================================================================* 745/*==========================================================================*
@@ -762,9 +765,9 @@ void smp_ipi_timer_interrupt(struct pt_regs *regs)
762 * ---------- --- -------------------------------------------------------- 765 * ---------- --- --------------------------------------------------------
763 * 2003-06-24 hy use per_cpu structure. 766 * 2003-06-24 hy use per_cpu structure.
764 *==========================================================================*/ 767 *==========================================================================*/
765void smp_local_timer_interrupt(struct pt_regs *regs) 768void smp_local_timer_interrupt(void)
766{ 769{
767 int user = user_mode(regs); 770 int user = user_mode(get_irq_regs());
768 int cpu_id = smp_processor_id(); 771 int cpu_id = smp_processor_id();
769 772
770 /* 773 /*
@@ -774,7 +777,7 @@ void smp_local_timer_interrupt(struct pt_regs *regs)
774 * useful with a profiling multiplier != 1 777 * useful with a profiling multiplier != 1
775 */ 778 */
776 779
777 profile_tick(CPU_PROFILING, regs); 780 profile_tick(CPU_PROFILING);
778 781
779 if (--per_cpu(prof_counter, cpu_id) <= 0) { 782 if (--per_cpu(prof_counter, cpu_id) <= 0) {
780 /* 783 /*
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c
index d8af155db984..a09038282c78 100644
--- a/arch/m32r/kernel/time.c
+++ b/arch/m32r/kernel/time.c
@@ -35,7 +35,7 @@
35 35
36#ifdef CONFIG_SMP 36#ifdef CONFIG_SMP
37extern void send_IPI_allbutself(int, int); 37extern void send_IPI_allbutself(int, int);
38extern void smp_local_timer_interrupt(struct pt_regs *); 38extern void smp_local_timer_interrupt(void);
39#endif 39#endif
40 40
41#define TICK_SIZE (tick_nsec / 1000) 41#define TICK_SIZE (tick_nsec / 1000)
@@ -188,15 +188,15 @@ static long last_rtc_update = 0;
188 * timer_interrupt() needs to keep up the real-time clock, 188 * timer_interrupt() needs to keep up the real-time clock,
189 * as well as call the "do_timer()" routine every clocktick 189 * as well as call the "do_timer()" routine every clocktick
190 */ 190 */
191irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 191irqreturn_t timer_interrupt(int irq, void *dev_id)
192{ 192{
193#ifndef CONFIG_SMP 193#ifndef CONFIG_SMP
194 profile_tick(CPU_PROFILING, regs); 194 profile_tick(CPU_PROFILING);
195#endif 195#endif
196 do_timer(1); 196 do_timer(1);
197 197
198#ifndef CONFIG_SMP 198#ifndef CONFIG_SMP
199 update_process_times(user_mode(regs)); 199 update_process_times(user_mode(get_irq_regs()));
200#endif 200#endif
201 /* 201 /*
202 * If we have an externally synchronized Linux clock, then update 202 * If we have an externally synchronized Linux clock, then update
@@ -221,7 +221,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
221 a hack, so don't look closely for now.. */ 221 a hack, so don't look closely for now.. */
222 222
223#ifdef CONFIG_SMP 223#ifdef CONFIG_SMP
224 smp_local_timer_interrupt(regs); 224 smp_local_timer_interrupt();
225 smp_send_timer(); 225 smp_send_timer();
226#endif 226#endif
227 227
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 805b81fedf80..7bc14461a6ac 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -600,7 +600,7 @@ config MVME147_SCC
600 600
601config SERIAL167 601config SERIAL167
602 bool "CD2401 support for MVME166/7 serial ports" 602 bool "CD2401 support for MVME166/7 serial ports"
603 depends on MVME16x && BROKEN 603 depends on MVME16x
604 help 604 help
605 This is the driver for the serial ports on the Motorola MVME166, 605 This is the driver for the serial ports on the Motorola MVME166,
606 167, and 172 boards. Everyone using one of these boards should say 606 167, and 172 boards. Everyone using one of these boards should say
diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index 96c79d840cff..28d95cfe8ac0 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -47,10 +47,10 @@
47 47
48static void amiga_enable_irq(unsigned int irq); 48static void amiga_enable_irq(unsigned int irq);
49static void amiga_disable_irq(unsigned int irq); 49static void amiga_disable_irq(unsigned int irq);
50static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp); 50static irqreturn_t ami_int1(int irq, void *dev_id);
51static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp); 51static irqreturn_t ami_int3(int irq, void *dev_id);
52static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp); 52static irqreturn_t ami_int4(int irq, void *dev_id);
53static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp); 53static irqreturn_t ami_int5(int irq, void *dev_id);
54 54
55static struct irq_controller amiga_irq_controller = { 55static struct irq_controller amiga_irq_controller = {
56 .name = "amiga", 56 .name = "amiga",
@@ -113,98 +113,98 @@ static void amiga_disable_irq(unsigned int irq)
113 * The builtin Amiga hardware interrupt handlers. 113 * The builtin Amiga hardware interrupt handlers.
114 */ 114 */
115 115
116static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp) 116static irqreturn_t ami_int1(int irq, void *dev_id)
117{ 117{
118 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 118 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
119 119
120 /* if serial transmit buffer empty, interrupt */ 120 /* if serial transmit buffer empty, interrupt */
121 if (ints & IF_TBE) { 121 if (ints & IF_TBE) {
122 amiga_custom.intreq = IF_TBE; 122 amiga_custom.intreq = IF_TBE;
123 m68k_handle_int(IRQ_AMIGA_TBE, fp); 123 m68k_handle_int(IRQ_AMIGA_TBE);
124 } 124 }
125 125
126 /* if floppy disk transfer complete, interrupt */ 126 /* if floppy disk transfer complete, interrupt */
127 if (ints & IF_DSKBLK) { 127 if (ints & IF_DSKBLK) {
128 amiga_custom.intreq = IF_DSKBLK; 128 amiga_custom.intreq = IF_DSKBLK;
129 m68k_handle_int(IRQ_AMIGA_DSKBLK, fp); 129 m68k_handle_int(IRQ_AMIGA_DSKBLK);
130 } 130 }
131 131
132 /* if software interrupt set, interrupt */ 132 /* if software interrupt set, interrupt */
133 if (ints & IF_SOFT) { 133 if (ints & IF_SOFT) {
134 amiga_custom.intreq = IF_SOFT; 134 amiga_custom.intreq = IF_SOFT;
135 m68k_handle_int(IRQ_AMIGA_SOFT, fp); 135 m68k_handle_int(IRQ_AMIGA_SOFT);
136 } 136 }
137 return IRQ_HANDLED; 137 return IRQ_HANDLED;
138} 138}
139 139
140static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp) 140static irqreturn_t ami_int3(int irq, void *dev_id)
141{ 141{
142 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 142 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
143 143
144 /* if a blitter interrupt */ 144 /* if a blitter interrupt */
145 if (ints & IF_BLIT) { 145 if (ints & IF_BLIT) {
146 amiga_custom.intreq = IF_BLIT; 146 amiga_custom.intreq = IF_BLIT;
147 m68k_handle_int(IRQ_AMIGA_BLIT, fp); 147 m68k_handle_int(IRQ_AMIGA_BLIT);
148 } 148 }
149 149
150 /* if a copper interrupt */ 150 /* if a copper interrupt */
151 if (ints & IF_COPER) { 151 if (ints & IF_COPER) {
152 amiga_custom.intreq = IF_COPER; 152 amiga_custom.intreq = IF_COPER;
153 m68k_handle_int(IRQ_AMIGA_COPPER, fp); 153 m68k_handle_int(IRQ_AMIGA_COPPER);
154 } 154 }
155 155
156 /* if a vertical blank interrupt */ 156 /* if a vertical blank interrupt */
157 if (ints & IF_VERTB) { 157 if (ints & IF_VERTB) {
158 amiga_custom.intreq = IF_VERTB; 158 amiga_custom.intreq = IF_VERTB;
159 m68k_handle_int(IRQ_AMIGA_VERTB, fp); 159 m68k_handle_int(IRQ_AMIGA_VERTB);
160 } 160 }
161 return IRQ_HANDLED; 161 return IRQ_HANDLED;
162} 162}
163 163
164static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp) 164static irqreturn_t ami_int4(int irq, void *dev_id)
165{ 165{
166 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 166 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
167 167
168 /* if audio 0 interrupt */ 168 /* if audio 0 interrupt */
169 if (ints & IF_AUD0) { 169 if (ints & IF_AUD0) {
170 amiga_custom.intreq = IF_AUD0; 170 amiga_custom.intreq = IF_AUD0;
171 m68k_handle_int(IRQ_AMIGA_AUD0, fp); 171 m68k_handle_int(IRQ_AMIGA_AUD0);
172 } 172 }
173 173
174 /* if audio 1 interrupt */ 174 /* if audio 1 interrupt */
175 if (ints & IF_AUD1) { 175 if (ints & IF_AUD1) {
176 amiga_custom.intreq = IF_AUD1; 176 amiga_custom.intreq = IF_AUD1;
177 m68k_handle_int(IRQ_AMIGA_AUD1, fp); 177 m68k_handle_int(IRQ_AMIGA_AUD1);
178 } 178 }
179 179
180 /* if audio 2 interrupt */ 180 /* if audio 2 interrupt */
181 if (ints & IF_AUD2) { 181 if (ints & IF_AUD2) {
182 amiga_custom.intreq = IF_AUD2; 182 amiga_custom.intreq = IF_AUD2;
183 m68k_handle_int(IRQ_AMIGA_AUD2, fp); 183 m68k_handle_int(IRQ_AMIGA_AUD2);
184 } 184 }
185 185
186 /* if audio 3 interrupt */ 186 /* if audio 3 interrupt */
187 if (ints & IF_AUD3) { 187 if (ints & IF_AUD3) {
188 amiga_custom.intreq = IF_AUD3; 188 amiga_custom.intreq = IF_AUD3;
189 m68k_handle_int(IRQ_AMIGA_AUD3, fp); 189 m68k_handle_int(IRQ_AMIGA_AUD3);
190 } 190 }
191 return IRQ_HANDLED; 191 return IRQ_HANDLED;
192} 192}
193 193
194static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp) 194static irqreturn_t ami_int5(int irq, void *dev_id)
195{ 195{
196 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; 196 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
197 197
198 /* if serial receive buffer full interrupt */ 198 /* if serial receive buffer full interrupt */
199 if (ints & IF_RBF) { 199 if (ints & IF_RBF) {
200 /* acknowledge of IF_RBF must be done by the serial interrupt */ 200 /* acknowledge of IF_RBF must be done by the serial interrupt */
201 m68k_handle_int(IRQ_AMIGA_RBF, fp); 201 m68k_handle_int(IRQ_AMIGA_RBF);
202 } 202 }
203 203
204 /* if a disk sync interrupt */ 204 /* if a disk sync interrupt */
205 if (ints & IF_DSKSYN) { 205 if (ints & IF_DSKSYN) {
206 amiga_custom.intreq = IF_DSKSYN; 206 amiga_custom.intreq = IF_DSKSYN;
207 m68k_handle_int(IRQ_AMIGA_DSKSYN, fp); 207 m68k_handle_int(IRQ_AMIGA_DSKSYN);
208 } 208 }
209 return IRQ_HANDLED; 209 return IRQ_HANDLED;
210} 210}
diff --git a/arch/m68k/amiga/cia.c b/arch/m68k/amiga/cia.c
index dbad30054721..7a20058eb380 100644
--- a/arch/m68k/amiga/cia.c
+++ b/arch/m68k/amiga/cia.c
@@ -82,7 +82,7 @@ unsigned char cia_able_irq(struct ciabase *base, unsigned char mask)
82 return old; 82 return old;
83} 83}
84 84
85static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp) 85static irqreturn_t cia_handler(int irq, void *dev_id)
86{ 86{
87 struct ciabase *base = (struct ciabase *)dev_id; 87 struct ciabase *base = (struct ciabase *)dev_id;
88 int mach_irq; 88 int mach_irq;
@@ -93,7 +93,7 @@ static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp)
93 amiga_custom.intreq = base->int_mask; 93 amiga_custom.intreq = base->int_mask;
94 for (; ints; mach_irq++, ints >>= 1) { 94 for (; ints; mach_irq++, ints >>= 1) {
95 if (ints & 1) 95 if (ints & 1)
96 m68k_handle_int(mach_irq, fp); 96 m68k_handle_int(mach_irq);
97 } 97 }
98 return IRQ_HANDLED; 98 return IRQ_HANDLED;
99} 99}
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c
index 092e50d2cb13..3204f412cad8 100644
--- a/arch/m68k/amiga/config.c
+++ b/arch/m68k/amiga/config.c
@@ -83,7 +83,7 @@ static char amiga_model_name[13] = "Amiga ";
83 83
84extern char m68k_debug_device[]; 84extern char m68k_debug_device[];
85 85
86static void amiga_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 86static void amiga_sched_init(irq_handler_t handler);
87/* amiga specific irq functions */ 87/* amiga specific irq functions */
88extern void amiga_init_IRQ (void); 88extern void amiga_init_IRQ (void);
89static void amiga_get_model(char *model); 89static void amiga_get_model(char *model);
@@ -487,8 +487,7 @@ void __init config_amiga(void)
487 487
488static unsigned short jiffy_ticks; 488static unsigned short jiffy_ticks;
489 489
490static void __init amiga_sched_init(irqreturn_t (*timer_routine)(int, void *, 490static void __init amiga_sched_init(irq_handler_t timer_routine)
491 struct pt_regs *))
492{ 491{
493 static struct resource sched_res = { 492 static struct resource sched_res = {
494 .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff, 493 .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff,
diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c
index 6f4581575fb4..cb8e7609df4c 100644
--- a/arch/m68k/apollo/config.c
+++ b/arch/m68k/apollo/config.c
@@ -25,7 +25,7 @@ u_long cpuctrl_physaddr;
25u_long timer_physaddr; 25u_long timer_physaddr;
26u_long apollo_model; 26u_long apollo_model;
27 27
28extern void dn_sched_init(irqreturn_t (*handler)(int,void *,struct pt_regs *)); 28extern void dn_sched_init(irq_handler_t handler);
29extern void dn_init_IRQ(void); 29extern void dn_init_IRQ(void);
30extern unsigned long dn_gettimeoffset(void); 30extern unsigned long dn_gettimeoffset(void);
31extern int dn_dummy_hwclk(int, struct rtc_time *); 31extern int dn_dummy_hwclk(int, struct rtc_time *);
@@ -38,7 +38,7 @@ extern irqreturn_t dn_process_int(int irq, struct pt_regs *fp);
38#ifdef CONFIG_HEARTBEAT 38#ifdef CONFIG_HEARTBEAT
39static void dn_heartbeat(int on); 39static void dn_heartbeat(int on);
40#endif 40#endif
41static irqreturn_t dn_timer_int(int irq,void *, struct pt_regs *); 41static irqreturn_t dn_timer_int(int irq,void *);
42static void dn_get_model(char *model); 42static void dn_get_model(char *model);
43static const char *apollo_models[] = { 43static const char *apollo_models[] = {
44 [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)", 44 [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)",
@@ -174,13 +174,13 @@ void config_apollo(void) {
174 174
175} 175}
176 176
177irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp) 177irqreturn_t dn_timer_int(int irq, void *dev_id)
178{ 178{
179 irqreturn_t (*timer_handler)(int, void *, struct pt_regs *) = dev_id; 179 irq_handler_t timer_handler = dev_id;
180 180
181 volatile unsigned char x; 181 volatile unsigned char x;
182 182
183 timer_handler(irq, dev_id, fp); 183 timer_handler(irq, dev_id);
184 184
185 x=*(volatile unsigned char *)(timer+3); 185 x=*(volatile unsigned char *)(timer+3);
186 x=*(volatile unsigned char *)(timer+5); 186 x=*(volatile unsigned char *)(timer+5);
@@ -188,8 +188,8 @@ irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp)
188 return IRQ_HANDLED; 188 return IRQ_HANDLED;
189} 189}
190 190
191void dn_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) { 191void dn_sched_init(irq_handler_t timer_routine)
192 192{
193 /* program timer 1 */ 193 /* program timer 1 */
194 *(volatile unsigned char *)(timer+3)=0x01; 194 *(volatile unsigned char *)(timer+3)=0x01;
195 *(volatile unsigned char *)(timer+1)=0x40; 195 *(volatile unsigned char *)(timer+1)=0x40;
diff --git a/arch/m68k/apollo/dma.c b/arch/m68k/apollo/dma.c
deleted file mode 100644
index aed8be177ef1..000000000000
--- a/arch/m68k/apollo/dma.c
+++ /dev/null
@@ -1,50 +0,0 @@
1#include <linux/types.h>
2#include <linux/kernel.h>
3#include <linux/mm.h>
4#include <linux/kd.h>
5#include <linux/tty.h>
6#include <linux/console.h>
7
8#include <asm/setup.h>
9#include <asm/bootinfo.h>
10#include <asm/system.h>
11#include <asm/pgtable.h>
12#include <asm/apollodma.h>
13#include <asm/io.h>
14
15/* note only works for 16 Bit 1 page DMA's */
16
17static unsigned short next_free_xlat_entry=0;
18
19unsigned short dma_map_page(unsigned long phys_addr,int count,int type) {
20
21 unsigned long page_aligned_addr=phys_addr & (~((1<<12)-1));
22 unsigned short start_map_addr=page_aligned_addr >> 10;
23 unsigned short free_xlat_entry, *xlat_map_entry;
24 int i;
25
26 free_xlat_entry=next_free_xlat_entry;
27 for(i=0,xlat_map_entry=addr_xlat_map+(free_xlat_entry<<2);i<8;i++,xlat_map_entry++) {
28#if 0
29 printk("phys_addr: %x, page_aligned_addr: %x, start_map_addr: %x\n",phys_addr,page_aligned_addr,start_map_addr+i);
30#endif
31 out_be16(xlat_map_entry, start_map_addr+i);
32 }
33
34 next_free_xlat_entry+=2;
35 if(next_free_xlat_entry>125)
36 next_free_xlat_entry=0;
37
38#if 0
39 printk("next_free_xlat_entry: %d\n",next_free_xlat_entry);
40#endif
41
42 return free_xlat_entry<<10;
43}
44
45void dma_unmap_page(unsigned short dma_addr) {
46
47 return ;
48
49}
50
diff --git a/arch/m68k/apollo/dn_ints.c b/arch/m68k/apollo/dn_ints.c
index 9fe07803797b..4274af125998 100644
--- a/arch/m68k/apollo/dn_ints.c
+++ b/arch/m68k/apollo/dn_ints.c
@@ -6,7 +6,7 @@
6 6
7void dn_process_int(unsigned int irq, struct pt_regs *fp) 7void dn_process_int(unsigned int irq, struct pt_regs *fp)
8{ 8{
9 m68k_handle_int(irq, fp); 9 __m68k_handle_int(irq, fp);
10 10
11 *(volatile unsigned char *)(pica)=0x20; 11 *(volatile unsigned char *)(pica)=0x20;
12 *(volatile unsigned char *)(picb)=0x20; 12 *(volatile unsigned char *)(picb)=0x20;
diff --git a/arch/m68k/atari/ataints.c b/arch/m68k/atari/ataints.c
index ece13cbf9950..7f812641790c 100644
--- a/arch/m68k/atari/ataints.c
+++ b/arch/m68k/atari/ataints.c
@@ -332,6 +332,9 @@ static void atari_shutdown_irq(unsigned int irq)
332 atari_disable_irq(irq); 332 atari_disable_irq(irq);
333 atari_turnoff_irq(irq); 333 atari_turnoff_irq(irq);
334 m68k_irq_shutdown(irq); 334 m68k_irq_shutdown(irq);
335
336 if (irq == IRQ_AUTO_4)
337 vectors[VEC_INT4] = falcon_hblhandler;
335} 338}
336 339
337static struct irq_controller atari_irq_controller = { 340static struct irq_controller atari_irq_controller = {
@@ -356,7 +359,7 @@ static struct irq_controller atari_irq_controller = {
356 359
357void __init atari_init_IRQ(void) 360void __init atari_init_IRQ(void)
358{ 361{
359 m68k_setup_user_interrupt(VEC_USER, 192, NULL); 362 m68k_setup_user_interrupt(VEC_USER, NUM_ATARI_SOURCES - IRQ_USER, NULL);
360 m68k_setup_irq_controller(&atari_irq_controller, 1, NUM_ATARI_SOURCES - 1); 363 m68k_setup_irq_controller(&atari_irq_controller, 1, NUM_ATARI_SOURCES - 1);
361 364
362 /* Initialize the MFP(s) */ 365 /* Initialize the MFP(s) */
@@ -403,8 +406,10 @@ void __init atari_init_IRQ(void)
403 * gets overruns) 406 * gets overruns)
404 */ 407 */
405 408
406 if (!MACH_IS_HADES) 409 if (!MACH_IS_HADES) {
407 vectors[VEC_INT2] = falcon_hblhandler; 410 vectors[VEC_INT2] = falcon_hblhandler;
411 vectors[VEC_INT4] = falcon_hblhandler;
412 }
408 } 413 }
409 414
410 if (ATARIHW_PRESENT(PCM_8BIT) && ATARIHW_PRESENT(MICROWIRE)) { 415 if (ATARIHW_PRESENT(PCM_8BIT) && ATARIHW_PRESENT(MICROWIRE)) {
diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c
index b2079252a954..ca5cd4344e3d 100644
--- a/arch/m68k/atari/config.c
+++ b/arch/m68k/atari/config.c
@@ -62,7 +62,7 @@ static void atari_heartbeat( int on );
62#endif 62#endif
63 63
64/* atari specific timer functions (in time.c) */ 64/* atari specific timer functions (in time.c) */
65extern void atari_sched_init(irqreturn_t (*)(int, void *, struct pt_regs *)); 65extern void atari_sched_init(irq_handler_t );
66extern unsigned long atari_gettimeoffset (void); 66extern unsigned long atari_gettimeoffset (void);
67extern int atari_mste_hwclk (int, struct rtc_time *); 67extern int atari_mste_hwclk (int, struct rtc_time *);
68extern int atari_tt_hwclk (int, struct rtc_time *); 68extern int atari_tt_hwclk (int, struct rtc_time *);
diff --git a/arch/m68k/atari/stdma.c b/arch/m68k/atari/stdma.c
index 288f5e6a124e..d64b5804e980 100644
--- a/arch/m68k/atari/stdma.c
+++ b/arch/m68k/atari/stdma.c
@@ -44,7 +44,7 @@
44 44
45static int stdma_locked; /* the semaphore */ 45static int stdma_locked; /* the semaphore */
46 /* int func to be called */ 46 /* int func to be called */
47static irqreturn_t (*stdma_isr)(int, void *, struct pt_regs *); 47static irq_handler_t stdma_isr;
48static void *stdma_isr_data; /* data passed to isr */ 48static void *stdma_isr_data; /* data passed to isr */
49static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */ 49static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */
50 50
@@ -53,7 +53,7 @@ static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */
53 53
54/***************************** Prototypes *****************************/ 54/***************************** Prototypes *****************************/
55 55
56static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp); 56static irqreturn_t stdma_int (int irq, void *dummy);
57 57
58/************************* End of Prototypes **************************/ 58/************************* End of Prototypes **************************/
59 59
@@ -75,8 +75,7 @@ static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp);
75 * 75 *
76 */ 76 */
77 77
78void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), 78void stdma_lock(irq_handler_t handler, void *data)
79 void *data)
80{ 79{
81 unsigned long flags; 80 unsigned long flags;
82 81
@@ -188,9 +187,9 @@ void __init stdma_init(void)
188 * 187 *
189 */ 188 */
190 189
191static irqreturn_t stdma_int(int irq, void *dummy, struct pt_regs *fp) 190static irqreturn_t stdma_int(int irq, void *dummy)
192{ 191{
193 if (stdma_isr) 192 if (stdma_isr)
194 (*stdma_isr)(irq, stdma_isr_data, fp); 193 (*stdma_isr)(irq, stdma_isr_data);
195 return IRQ_HANDLED; 194 return IRQ_HANDLED;
196} 195}
diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c
index e79bbc94216d..e0d3c8bfb408 100644
--- a/arch/m68k/atari/time.c
+++ b/arch/m68k/atari/time.c
@@ -16,11 +16,12 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/rtc.h> 17#include <linux/rtc.h>
18#include <linux/bcd.h> 18#include <linux/bcd.h>
19#include <linux/delay.h>
19 20
20#include <asm/atariints.h> 21#include <asm/atariints.h>
21 22
22void __init 23void __init
23atari_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 24atari_sched_init(irq_handler_t timer_routine)
24{ 25{
25 /* set Timer C data Register */ 26 /* set Timer C data Register */
26 mfp.tim_dt_c = INT_TICKS; 27 mfp.tim_dt_c = INT_TICKS;
@@ -212,8 +213,12 @@ int atari_tt_hwclk( int op, struct rtc_time *t )
212 * additionally the RTC_SET bit is set to prevent an update cycle. 213 * additionally the RTC_SET bit is set to prevent an update cycle.
213 */ 214 */
214 215
215 while( RTC_READ(RTC_FREQ_SELECT) & RTC_UIP ) 216 while( RTC_READ(RTC_FREQ_SELECT) & RTC_UIP ) {
216 schedule_timeout_interruptible(HWCLK_POLL_INTERVAL); 217 if (in_atomic() || irqs_disabled())
218 mdelay(1);
219 else
220 schedule_timeout_interruptible(HWCLK_POLL_INTERVAL);
221 }
217 222
218 local_irq_save(flags); 223 local_irq_save(flags);
219 RTC_WRITE( RTC_CONTROL, ctrl | RTC_SET ); 224 RTC_WRITE( RTC_CONTROL, ctrl | RTC_SET );
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c
index d1e916ae55a8..896ae3d3d919 100644
--- a/arch/m68k/bvme6000/config.c
+++ b/arch/m68k/bvme6000/config.c
@@ -38,7 +38,7 @@
38 38
39static void bvme6000_get_model(char *model); 39static void bvme6000_get_model(char *model);
40static int bvme6000_get_hardware_list(char *buffer); 40static int bvme6000_get_hardware_list(char *buffer);
41extern void bvme6000_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 41extern void bvme6000_sched_init(irq_handler_t handler);
42extern unsigned long bvme6000_gettimeoffset (void); 42extern unsigned long bvme6000_gettimeoffset (void);
43extern int bvme6000_hwclk (int, struct rtc_time *); 43extern int bvme6000_hwclk (int, struct rtc_time *);
44extern int bvme6000_set_clock_mmss (unsigned long); 44extern int bvme6000_set_clock_mmss (unsigned long);
@@ -52,7 +52,7 @@ static unsigned char bin2bcd (unsigned char b);
52/* Save tick handler routine pointer, will point to do_timer() in 52/* Save tick handler routine pointer, will point to do_timer() in
53 * kernel/sched.c, called via bvme6000_process_int() */ 53 * kernel/sched.c, called via bvme6000_process_int() */
54 54
55static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); 55static irq_handler_t tick_handler;
56 56
57 57
58int bvme6000_parse_bootinfo(const struct bi_record *bi) 58int bvme6000_parse_bootinfo(const struct bi_record *bi)
@@ -154,7 +154,7 @@ void __init config_bvme6000(void)
154} 154}
155 155
156 156
157irqreturn_t bvme6000_abort_int (int irq, void *dev_id, struct pt_regs *fp) 157irqreturn_t bvme6000_abort_int (int irq, void *dev_id)
158{ 158{
159 unsigned long *new = (unsigned long *)vectors; 159 unsigned long *new = (unsigned long *)vectors;
160 unsigned long *old = (unsigned long *)0xf8000000; 160 unsigned long *old = (unsigned long *)0xf8000000;
@@ -171,14 +171,14 @@ irqreturn_t bvme6000_abort_int (int irq, void *dev_id, struct pt_regs *fp)
171} 171}
172 172
173 173
174static irqreturn_t bvme6000_timer_int (int irq, void *dev_id, struct pt_regs *fp) 174static irqreturn_t bvme6000_timer_int (int irq, void *dev_id)
175{ 175{
176 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; 176 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
177 unsigned char msr = rtc->msr & 0xc0; 177 unsigned char msr = rtc->msr & 0xc0;
178 178
179 rtc->msr = msr | 0x20; /* Ack the interrupt */ 179 rtc->msr = msr | 0x20; /* Ack the interrupt */
180 180
181 return tick_handler(irq, dev_id, fp); 181 return tick_handler(irq, dev_id);
182} 182}
183 183
184/* 184/*
@@ -190,7 +190,7 @@ static irqreturn_t bvme6000_timer_int (int irq, void *dev_id, struct pt_regs *fp
190 * so divide by 8 to get the microsecond result. 190 * so divide by 8 to get the microsecond result.
191 */ 191 */
192 192
193void bvme6000_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 193void bvme6000_sched_init (irq_handler_t timer_routine)
194{ 194{
195 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; 195 volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
196 unsigned char msr = rtc->msr & 0xc0; 196 unsigned char msr = rtc->msr & 0xc0;
diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c
index 7df05662b277..dd7c8a2583d3 100644
--- a/arch/m68k/hp300/time.c
+++ b/arch/m68k/hp300/time.c
@@ -36,15 +36,15 @@
36 36
37#define INTVAL ((10000 / 4) - 1) 37#define INTVAL ((10000 / 4) - 1)
38 38
39static irqreturn_t hp300_tick(int irq, void *dev_id, struct pt_regs *regs) 39static irqreturn_t hp300_tick(int irq, void *dev_id)
40{ 40{
41 unsigned long tmp; 41 unsigned long tmp;
42 irqreturn_t (*vector)(int, void *, struct pt_regs *) = dev_id; 42 irq_handler_t vector = dev_id;
43 in_8(CLOCKBASE + CLKSR); 43 in_8(CLOCKBASE + CLKSR);
44 asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE)); 44 asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE));
45 /* Turn off the network and SCSI leds */ 45 /* Turn off the network and SCSI leds */
46 blinken_leds(0, 0xe0); 46 blinken_leds(0, 0xe0);
47 return vector(irq, NULL, regs); 47 return vector(irq, NULL);
48} 48}
49 49
50unsigned long hp300_gettimeoffset(void) 50unsigned long hp300_gettimeoffset(void)
@@ -63,7 +63,7 @@ unsigned long hp300_gettimeoffset(void)
63 return (USECS_PER_JIFFY * ticks) / INTVAL; 63 return (USECS_PER_JIFFY * ticks) / INTVAL;
64} 64}
65 65
66void __init hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) 66void __init hp300_sched_init(irq_handler_t vector)
67{ 67{
68 out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */ 68 out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */
69 out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */ 69 out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */
diff --git a/arch/m68k/hp300/time.h b/arch/m68k/hp300/time.h
index 8ef9987b49ab..f5b3d098b0f5 100644
--- a/arch/m68k/hp300/time.h
+++ b/arch/m68k/hp300/time.h
@@ -1,4 +1,4 @@
1extern void hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)); 1extern void hp300_sched_init(irq_handler_t vector);
2extern unsigned long hp300_gettimeoffset (void); 2extern unsigned long hp300_gettimeoffset (void);
3 3
4 4
diff --git a/arch/m68k/kernel/Makefile b/arch/m68k/kernel/Makefile
index dae609797dc0..1c9ecaa473d5 100644
--- a/arch/m68k/kernel/Makefile
+++ b/arch/m68k/kernel/Makefile
@@ -9,10 +9,11 @@ else
9endif 9endif
10extra-y += vmlinux.lds 10extra-y += vmlinux.lds
11 11
12obj-y := entry.o process.o traps.o ints.o dma.o signal.o ptrace.o \ 12obj-y := entry.o process.o traps.o ints.o signal.o ptrace.o \
13 sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o 13 sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o
14 14
15obj-$(CONFIG_PCI) += bios32.o 15obj-$(CONFIG_PCI) += bios32.o
16obj-$(CONFIG_MODULES) += module.o 16obj-$(CONFIG_MODULES) += module.o
17obj-y$(CONFIG_MMU_SUN3) += dma.o # no, it's not a typo
17 18
18EXTRA_AFLAGS := -traditional 19EXTRA_AFLAGS := -traditional
diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c
index fc449f8b2045..9d4e4b5b6bd8 100644
--- a/arch/m68k/kernel/dma.c
+++ b/arch/m68k/kernel/dma.c
@@ -15,7 +15,7 @@
15#include <asm/scatterlist.h> 15#include <asm/scatterlist.h>
16 16
17void *dma_alloc_coherent(struct device *dev, size_t size, 17void *dma_alloc_coherent(struct device *dev, size_t size,
18 dma_addr_t *handle, int flag) 18 dma_addr_t *handle, gfp_t flag)
19{ 19{
20 struct page *page, **map; 20 struct page *page, **map;
21 pgprot_t pgprot; 21 pgprot_t pgprot;
@@ -51,7 +51,7 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
51 pgprot_val(pgprot) |= _PAGE_GLOBAL040 | _PAGE_NOCACHE_S; 51 pgprot_val(pgprot) |= _PAGE_GLOBAL040 | _PAGE_NOCACHE_S;
52 else 52 else
53 pgprot_val(pgprot) |= _PAGE_NOCACHE030; 53 pgprot_val(pgprot) |= _PAGE_NOCACHE030;
54 addr = vmap(map, size, flag, pgprot); 54 addr = vmap(map, size, VM_MAP, pgprot);
55 kfree(map); 55 kfree(map);
56 56
57 return addr; 57 return addr;
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
index 9083c8b7659f..222ce4244564 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -205,7 +205,7 @@ ENTRY(auto_inthandler)
205 movel %sp,%sp@- 205 movel %sp,%sp@-
206 movel %d0,%sp@- | put vector # on stack 206 movel %d0,%sp@- | put vector # on stack
207auto_irqhandler_fixup = . + 2 207auto_irqhandler_fixup = . + 2
208 jsr m68k_handle_int | process the IRQ 208 jsr __m68k_handle_int | process the IRQ
209 addql #8,%sp | pop parameters off stack 209 addql #8,%sp | pop parameters off stack
210 210
211ret_from_interrupt: 211ret_from_interrupt:
@@ -239,7 +239,7 @@ user_irqvec_fixup = . + 2
239 movel %sp,%sp@- 239 movel %sp,%sp@-
240 movel %d0,%sp@- | put vector # on stack 240 movel %d0,%sp@- | put vector # on stack
241user_irqhandler_fixup = . + 2 241user_irqhandler_fixup = . + 2
242 jsr m68k_handle_int | process the IRQ 242 jsr __m68k_handle_int | process the IRQ
243 addql #8,%sp | pop parameters off stack 243 addql #8,%sp | pop parameters off stack
244 244
245 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) 245 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
@@ -706,4 +706,33 @@ sys_call_table:
706 .long sys_add_key 706 .long sys_add_key
707 .long sys_request_key /* 280 */ 707 .long sys_request_key /* 280 */
708 .long sys_keyctl 708 .long sys_keyctl
709 .long sys_ioprio_set
710 .long sys_ioprio_get
711 .long sys_inotify_init
712 .long sys_inotify_add_watch /* 285 */
713 .long sys_inotify_rm_watch
714 .long sys_migrate_pages
715 .long sys_openat
716 .long sys_mkdirat
717 .long sys_mknodat /* 290 */
718 .long sys_fchownat
719 .long sys_futimesat
720 .long sys_fstatat64
721 .long sys_unlinkat
722 .long sys_renameat /* 295 */
723 .long sys_linkat
724 .long sys_symlinkat
725 .long sys_readlinkat
726 .long sys_fchmodat
727 .long sys_faccessat /* 300 */
728 .long sys_ni_syscall /* Reserved for pselect6 */
729 .long sys_ni_syscall /* Reserved for ppoll */
730 .long sys_unshare
731 .long sys_set_robust_list
732 .long sys_get_robust_list /* 305 */
733 .long sys_splice
734 .long sys_sync_file_range
735 .long sys_tee
736 .long sys_vmsplice
737 .long sys_move_pages /* 310 */
709 738
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c
index b33e37fb7b0e..84aceca6c05c 100644
--- a/arch/m68k/kernel/ints.c
+++ b/arch/m68k/kernel/ints.c
@@ -39,6 +39,7 @@
39#include <asm/page.h> 39#include <asm/page.h>
40#include <asm/machdep.h> 40#include <asm/machdep.h>
41#include <asm/cacheflush.h> 41#include <asm/cacheflush.h>
42#include <asm/irq_regs.h>
42 43
43#ifdef CONFIG_Q40 44#ifdef CONFIG_Q40
44#include <asm/q40ints.h> 45#include <asm/q40ints.h>
@@ -104,7 +105,7 @@ void __init init_IRQ(void)
104 * @handler: called from auto vector interrupts 105 * @handler: called from auto vector interrupts
105 * 106 *
106 * setup the handler to be called from auto vector interrupts instead of the 107 * setup the handler to be called from auto vector interrupts instead of the
107 * standard m68k_handle_int(), it will be called with irq numbers in the range 108 * standard __m68k_handle_int(), it will be called with irq numbers in the range
108 * from IRQ_AUTO_1 - IRQ_AUTO_7. 109 * from IRQ_AUTO_1 - IRQ_AUTO_7.
109 */ 110 */
110void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_regs *)) 111void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_regs *))
@@ -123,7 +124,7 @@ void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_re
123 * setup user vector interrupts, this includes activating the specified range 124 * setup user vector interrupts, this includes activating the specified range
124 * of interrupts, only then these interrupts can be requested (note: this is 125 * of interrupts, only then these interrupts can be requested (note: this is
125 * different from auto vector interrupts). An optional handler can be installed 126 * different from auto vector interrupts). An optional handler can be installed
126 * to be called instead of the default m68k_handle_int(), it will be called 127 * to be called instead of the default __m68k_handle_int(), it will be called
127 * with irq numbers starting from IRQ_USER. 128 * with irq numbers starting from IRQ_USER.
128 */ 129 */
129void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, 130void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt,
@@ -131,6 +132,7 @@ void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt,
131{ 132{
132 int i; 133 int i;
133 134
135 BUG_ON(IRQ_USER + cnt >= NR_IRQS);
134 m68k_first_user_vec = vec; 136 m68k_first_user_vec = vec;
135 for (i = 0; i < cnt; i++) 137 for (i = 0; i < cnt; i++)
136 irq_controller[IRQ_USER + i] = &user_irq_controller; 138 irq_controller[IRQ_USER + i] = &user_irq_controller;
@@ -215,7 +217,7 @@ int setup_irq(unsigned int irq, struct irq_node *node)
215} 217}
216 218
217int request_irq(unsigned int irq, 219int request_irq(unsigned int irq,
218 irqreturn_t (*handler) (int, void *, struct pt_regs *), 220 irq_handler_t handler,
219 unsigned long flags, const char *devname, void *dev_id) 221 unsigned long flags, const char *devname, void *dev_id)
220{ 222{
221 struct irq_node *node; 223 struct irq_node *node;
@@ -379,18 +381,25 @@ unsigned int irq_canonicalize(unsigned int irq)
379 381
380EXPORT_SYMBOL(irq_canonicalize); 382EXPORT_SYMBOL(irq_canonicalize);
381 383
382asmlinkage void m68k_handle_int(unsigned int irq, struct pt_regs *regs) 384asmlinkage void m68k_handle_int(unsigned int irq)
383{ 385{
384 struct irq_node *node; 386 struct irq_node *node;
385
386 kstat_cpu(0).irqs[irq]++; 387 kstat_cpu(0).irqs[irq]++;
387 node = irq_list[irq]; 388 node = irq_list[irq];
388 do { 389 do {
389 node->handler(irq, node->dev_id, regs); 390 node->handler(irq, node->dev_id);
390 node = node->next; 391 node = node->next;
391 } while (node); 392 } while (node);
392} 393}
393 394
395asmlinkage void __m68k_handle_int(unsigned int irq, struct pt_regs *regs)
396{
397 struct pt_regs *old_regs;
398 old_regs = set_irq_regs(regs);
399 m68k_handle_int(irq);
400 set_irq_regs(old_regs);
401}
402
394asmlinkage void handle_badint(struct pt_regs *regs) 403asmlinkage void handle_badint(struct pt_regs *regs)
395{ 404{
396 kstat_cpu(0).irqs[0]++; 405 kstat_cpu(0).irqs[0]++;
diff --git a/arch/m68k/kernel/m68k_ksyms.c b/arch/m68k/kernel/m68k_ksyms.c
index aff26a52167c..f9636e84e6a4 100644
--- a/arch/m68k/kernel/m68k_ksyms.c
+++ b/arch/m68k/kernel/m68k_ksyms.c
@@ -1,7 +1,6 @@
1#include <linux/module.h> 1#include <linux/module.h>
2#include <linux/linkage.h> 2#include <linux/linkage.h>
3#include <linux/sched.h> 3#include <linux/sched.h>
4#include <linux/string.h>
5#include <linux/mm.h> 4#include <linux/mm.h>
6#include <linux/user.h> 5#include <linux/user.h>
7#include <linux/elfcore.h> 6#include <linux/elfcore.h>
@@ -53,9 +52,6 @@ EXPORT_SYMBOL(mach_beep);
53#endif 52#endif
54EXPORT_SYMBOL(dump_fpu); 53EXPORT_SYMBOL(dump_fpu);
55EXPORT_SYMBOL(dump_thread); 54EXPORT_SYMBOL(dump_thread);
56EXPORT_SYMBOL(strnlen);
57EXPORT_SYMBOL(strrchr);
58EXPORT_SYMBOL(strstr);
59EXPORT_SYMBOL(kernel_thread); 55EXPORT_SYMBOL(kernel_thread);
60#ifdef CONFIG_VME 56#ifdef CONFIG_VME
61EXPORT_SYMBOL(vme_brdtype); 57EXPORT_SYMBOL(vme_brdtype);
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c
index f2d7ee0ee18c..42d5b85f3350 100644
--- a/arch/m68k/kernel/setup.c
+++ b/arch/m68k/kernel/setup.c
@@ -64,7 +64,7 @@ static char m68k_command_line[CL_SIZE];
64 64
65char m68k_debug_device[6] = ""; 65char m68k_debug_device[6] = "";
66 66
67void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)) __initdata = NULL; 67void (*mach_sched_init) (irq_handler_t handler) __initdata = NULL;
68/* machine dependent irq functions */ 68/* machine dependent irq functions */
69void (*mach_init_IRQ) (void) __initdata = NULL; 69void (*mach_init_IRQ) (void) __initdata = NULL;
70void (*mach_get_model) (char *model); 70void (*mach_get_model) (char *model);
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c
index 28b2fefa4513..2a599c3ed787 100644
--- a/arch/m68k/kernel/time.c
+++ b/arch/m68k/kernel/time.c
@@ -21,6 +21,7 @@
21 21
22#include <asm/machdep.h> 22#include <asm/machdep.h>
23#include <asm/io.h> 23#include <asm/io.h>
24#include <asm/irq_regs.h>
24 25
25#include <linux/time.h> 26#include <linux/time.h>
26#include <linux/timex.h> 27#include <linux/timex.h>
@@ -37,13 +38,13 @@ static inline int set_rtc_mmss(unsigned long nowtime)
37 * timer_interrupt() needs to keep up the real-time clock, 38 * timer_interrupt() needs to keep up the real-time clock,
38 * as well as call the "do_timer()" routine every clocktick 39 * as well as call the "do_timer()" routine every clocktick
39 */ 40 */
40static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs) 41static irqreturn_t timer_interrupt(int irq, void *dummy)
41{ 42{
42 do_timer(1); 43 do_timer(1);
43#ifndef CONFIG_SMP 44#ifndef CONFIG_SMP
44 update_process_times(user_mode(regs)); 45 update_process_times(user_mode(get_irq_regs()));
45#endif 46#endif
46 profile_tick(CPU_PROFILING, regs); 47 profile_tick(CPU_PROFILING);
47 48
48#ifdef CONFIG_HEARTBEAT 49#ifdef CONFIG_HEARTBEAT
49 /* use power LED as a heartbeat instead -- much more useful 50 /* use power LED as a heartbeat instead -- much more useful
diff --git a/arch/m68k/lib/string.c b/arch/m68k/lib/string.c
index b92b89e1ea0c..891e1347bc4e 100644
--- a/arch/m68k/lib/string.c
+++ b/arch/m68k/lib/string.c
@@ -1,6 +1,19 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file COPYING in the main directory of this archive
4 * for more details.
5 */
6
7#define __IN_STRING_C
1 8
2#include <linux/types.h>
3#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/string.h>
11
12char *strcpy(char *dest, const char *src)
13{
14 return __kernel_strcpy(dest, src);
15}
16EXPORT_SYMBOL(strcpy);
4 17
5void *memset(void *s, int c, size_t count) 18void *memset(void *s, int c, size_t count)
6{ 19{
diff --git a/arch/m68k/lib/uaccess.c b/arch/m68k/lib/uaccess.c
index 1bc188c0d983..865f9fb9e686 100644
--- a/arch/m68k/lib/uaccess.c
+++ b/arch/m68k/lib/uaccess.c
@@ -84,7 +84,7 @@ unsigned long __generic_copy_to_user(void __user *to, const void *from,
84 " .even\n" 84 " .even\n"
85 "20: lsl.l #2,%0\n" 85 "20: lsl.l #2,%0\n"
86 "50: add.l %5,%0\n" 86 "50: add.l %5,%0\n"
87 " jra 7b\n" 87 " jra 8b\n"
88 " .previous\n" 88 " .previous\n"
89 "\n" 89 "\n"
90 " .section __ex_table,\"a\"\n" 90 " .section __ex_table,\"a\"\n"
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c
index 6eaa881793d1..a1c7ec706741 100644
--- a/arch/m68k/mac/baboon.c
+++ b/arch/m68k/mac/baboon.c
@@ -25,7 +25,7 @@
25int baboon_present,baboon_active; 25int baboon_present,baboon_active;
26volatile struct baboon *baboon; 26volatile struct baboon *baboon;
27 27
28irqreturn_t baboon_irq(int, void *, struct pt_regs *); 28irqreturn_t baboon_irq(int, void *);
29 29
30#if 0 30#if 0
31extern int macide_ack_intr(struct ata_channel *); 31extern int macide_ack_intr(struct ata_channel *);
@@ -64,7 +64,7 @@ void __init baboon_register_interrupts(void)
64 * Baboon interrupt handler. This works a lot like a VIA. 64 * Baboon interrupt handler. This works a lot like a VIA.
65 */ 65 */
66 66
67irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs) 67irqreturn_t baboon_irq(int irq, void *dev_id)
68{ 68{
69 int irq_bit,i; 69 int irq_bit,i;
70 unsigned char events; 70 unsigned char events;
@@ -81,7 +81,7 @@ irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs)
81 for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) { 81 for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) {
82 if (events & irq_bit/* & baboon_active*/) { 82 if (events & irq_bit/* & baboon_active*/) {
83 baboon_active &= ~irq_bit; 83 baboon_active &= ~irq_bit;
84 m68k_handle_int(IRQ_BABOON_0 + i, regs); 84 m68k_handle_int(IRQ_BABOON_0 + i);
85 baboon_active |= irq_bit; 85 baboon_active |= irq_bit;
86 baboon->mb_ifr &= ~irq_bit; 86 baboon->mb_ifr &= ~irq_bit;
87 } 87 }
diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c
index 85dda1095b1f..562b38d00180 100644
--- a/arch/m68k/mac/config.c
+++ b/arch/m68k/mac/config.c
@@ -72,7 +72,7 @@ extern int show_mac_interrupts(struct seq_file *, void *);
72extern void iop_preinit(void); 72extern void iop_preinit(void);
73extern void iop_init(void); 73extern void iop_init(void);
74extern void via_init(void); 74extern void via_init(void);
75extern void via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *)); 75extern void via_init_clock(irq_handler_t func);
76extern void via_flush_cache(void); 76extern void via_flush_cache(void);
77extern void oss_init(void); 77extern void oss_init(void);
78extern void psc_init(void); 78extern void psc_init(void);
@@ -88,7 +88,7 @@ extern void mac_debugging_long(int, long);
88 88
89static void mac_get_model(char *str); 89static void mac_get_model(char *str);
90 90
91static void mac_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) 91static void mac_sched_init(irq_handler_t vector)
92{ 92{
93 via_init_clock(vector); 93 via_init_clock(vector);
94} 94}
diff --git a/arch/m68k/mac/iop.c b/arch/m68k/mac/iop.c
index bc657b1057a7..0cea21f58192 100644
--- a/arch/m68k/mac/iop.c
+++ b/arch/m68k/mac/iop.c
@@ -132,7 +132,7 @@ static int iop_get_proc_info(char *, char **, off_t, int);
132 132
133struct listener { 133struct listener {
134 const char *devname; 134 const char *devname;
135 void (*handler)(struct iop_msg *, struct pt_regs *); 135 void (*handler)(struct iop_msg *);
136}; 136};
137 137
138/* 138/*
@@ -152,7 +152,7 @@ static struct iop_msg iop_msg_pool[NUM_IOP_MSGS];
152static struct iop_msg *iop_send_queue[NUM_IOPS][NUM_IOP_CHAN]; 152static struct iop_msg *iop_send_queue[NUM_IOPS][NUM_IOP_CHAN];
153static struct listener iop_listeners[NUM_IOPS][NUM_IOP_CHAN]; 153static struct listener iop_listeners[NUM_IOPS][NUM_IOP_CHAN];
154 154
155irqreturn_t iop_ism_irq(int, void *, struct pt_regs *); 155irqreturn_t iop_ism_irq(int, void *);
156 156
157extern void oss_irq_enable(int); 157extern void oss_irq_enable(int);
158 158
@@ -342,7 +342,7 @@ void __init iop_register_interrupts(void)
342 */ 342 */
343 343
344int iop_listen(uint iop_num, uint chan, 344int iop_listen(uint iop_num, uint chan,
345 void (*handler)(struct iop_msg *, struct pt_regs *), 345 void (*handler)(struct iop_msg *),
346 const char *devname) 346 const char *devname)
347{ 347{
348 if ((iop_num >= NUM_IOPS) || !iop_base[iop_num]) return -EINVAL; 348 if ((iop_num >= NUM_IOPS) || !iop_base[iop_num]) return -EINVAL;
@@ -407,7 +407,7 @@ static void iop_do_send(struct iop_msg *msg)
407 * has gone into the IOP_MSG_COMPLETE state. 407 * has gone into the IOP_MSG_COMPLETE state.
408 */ 408 */
409 409
410static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs) 410static void iop_handle_send(uint iop_num, uint chan)
411{ 411{
412 volatile struct mac_iop *iop = iop_base[iop_num]; 412 volatile struct mac_iop *iop = iop_base[iop_num];
413 struct iop_msg *msg,*msg2; 413 struct iop_msg *msg,*msg2;
@@ -426,7 +426,7 @@ static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs)
426 for (i = 0 ; i < IOP_MSG_LEN ; i++, offset++) { 426 for (i = 0 ; i < IOP_MSG_LEN ; i++, offset++) {
427 msg->reply[i] = iop_readb(iop, offset); 427 msg->reply[i] = iop_readb(iop, offset);
428 } 428 }
429 if (msg->handler) (*msg->handler)(msg, regs); 429 if (msg->handler) (*msg->handler)(msg);
430 msg2 = msg; 430 msg2 = msg;
431 msg = msg->next; 431 msg = msg->next;
432 iop_free_msg(msg2); 432 iop_free_msg(msg2);
@@ -440,7 +440,7 @@ static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs)
440 * gone into the IOP_MSG_NEW state. 440 * gone into the IOP_MSG_NEW state.
441 */ 441 */
442 442
443static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs) 443static void iop_handle_recv(uint iop_num, uint chan)
444{ 444{
445 volatile struct mac_iop *iop = iop_base[iop_num]; 445 volatile struct mac_iop *iop = iop_base[iop_num];
446 int i,offset; 446 int i,offset;
@@ -468,7 +468,7 @@ static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs)
468 /* the message ourselves to avoid possible stalls. */ 468 /* the message ourselves to avoid possible stalls. */
469 469
470 if (msg->handler) { 470 if (msg->handler) {
471 (*msg->handler)(msg, regs); 471 (*msg->handler)(msg);
472 } else { 472 } else {
473#ifdef DEBUG_IOP 473#ifdef DEBUG_IOP
474 printk("iop_handle_recv: unclaimed message on iop %d channel %d\n", iop_num, chan); 474 printk("iop_handle_recv: unclaimed message on iop %d channel %d\n", iop_num, chan);
@@ -492,7 +492,7 @@ static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs)
492 492
493int iop_send_message(uint iop_num, uint chan, void *privdata, 493int iop_send_message(uint iop_num, uint chan, void *privdata,
494 uint msg_len, __u8 *msg_data, 494 uint msg_len, __u8 *msg_data,
495 void (*handler)(struct iop_msg *, struct pt_regs *)) 495 void (*handler)(struct iop_msg *))
496{ 496{
497 struct iop_msg *msg, *q; 497 struct iop_msg *msg, *q;
498 498
@@ -584,7 +584,7 @@ __u8 *iop_compare_code(uint iop_num, __u8 *code_start,
584 * Handle an ISM IOP interrupt 584 * Handle an ISM IOP interrupt
585 */ 585 */
586 586
587irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs) 587irqreturn_t iop_ism_irq(int irq, void *dev_id)
588{ 588{
589 uint iop_num = (uint) dev_id; 589 uint iop_num = (uint) dev_id;
590 volatile struct mac_iop *iop = iop_base[iop_num]; 590 volatile struct mac_iop *iop = iop_base[iop_num];
@@ -608,7 +608,7 @@ irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs)
608 printk(" %02X", state); 608 printk(" %02X", state);
609#endif 609#endif
610 if (state == IOP_MSG_COMPLETE) { 610 if (state == IOP_MSG_COMPLETE) {
611 iop_handle_send(iop_num, i, regs); 611 iop_handle_send(iop_num, i);
612 } 612 }
613 } 613 }
614#ifdef DEBUG_IOP 614#ifdef DEBUG_IOP
@@ -628,7 +628,7 @@ irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs)
628 printk(" %02X", state); 628 printk(" %02X", state);
629#endif 629#endif
630 if (state == IOP_MSG_NEW) { 630 if (state == IOP_MSG_NEW) {
631 iop_handle_recv(iop_num, i, regs); 631 iop_handle_recv(iop_num, i);
632 } 632 }
633 } 633 }
634#ifdef DEBUG_IOP 634#ifdef DEBUG_IOP
diff --git a/arch/m68k/mac/macints.c b/arch/m68k/mac/macints.c
index 694b14bb0de1..f6fcd754d8f6 100644
--- a/arch/m68k/mac/macints.c
+++ b/arch/m68k/mac/macints.c
@@ -133,6 +133,7 @@
133#include <asm/hwtest.h> 133#include <asm/hwtest.h>
134#include <asm/errno.h> 134#include <asm/errno.h>
135#include <asm/macints.h> 135#include <asm/macints.h>
136#include <asm/irq_regs.h>
136 137
137#define DEBUG_SPURIOUS 138#define DEBUG_SPURIOUS
138#define SHUTUP_SONIC 139#define SHUTUP_SONIC
@@ -208,8 +209,8 @@ static void scc_irq_disable(unsigned int);
208 * console_loglevel determines NMI handler function 209 * console_loglevel determines NMI handler function
209 */ 210 */
210 211
211irqreturn_t mac_nmi_handler(int, void *, struct pt_regs *); 212irqreturn_t mac_nmi_handler(int, void *);
212irqreturn_t mac_debug_handler(int, void *, struct pt_regs *); 213irqreturn_t mac_debug_handler(int, void *);
213 214
214/* #define DEBUG_MACINTS */ 215/* #define DEBUG_MACINTS */
215 216
@@ -393,7 +394,7 @@ int mac_irq_pending(unsigned int irq)
393 394
394static int num_debug[8]; 395static int num_debug[8];
395 396
396irqreturn_t mac_debug_handler(int irq, void *dev_id, struct pt_regs *regs) 397irqreturn_t mac_debug_handler(int irq, void *dev_id)
397{ 398{
398 if (num_debug[irq] < 10) { 399 if (num_debug[irq] < 10) {
399 printk("DEBUG: Unexpected IRQ %d\n", irq); 400 printk("DEBUG: Unexpected IRQ %d\n", irq);
@@ -405,7 +406,7 @@ irqreturn_t mac_debug_handler(int irq, void *dev_id, struct pt_regs *regs)
405static int in_nmi; 406static int in_nmi;
406static volatile int nmi_hold; 407static volatile int nmi_hold;
407 408
408irqreturn_t mac_nmi_handler(int irq, void *dev_id, struct pt_regs *fp) 409irqreturn_t mac_nmi_handler(int irq, void *dev_id)
409{ 410{
410 int i; 411 int i;
411 /* 412 /*
@@ -432,6 +433,7 @@ irqreturn_t mac_nmi_handler(int irq, void *dev_id, struct pt_regs *fp)
432 433
433 if (console_loglevel >= 8) { 434 if (console_loglevel >= 8) {
434#if 0 435#if 0
436 struct pt_regs *fp = get_irq_regs();
435 show_state(); 437 show_state();
436 printk("PC: %08lx\nSR: %04x SP: %p\n", fp->pc, fp->sr, fp); 438 printk("PC: %08lx\nSR: %04x SP: %p\n", fp->pc, fp->sr, fp);
437 printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", 439 printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n",
@@ -479,7 +481,7 @@ static void scc_irq_disable(unsigned int irq)
479 * here is cleaner than hacking it into drivers/char/macserial.c. 481 * here is cleaner than hacking it into drivers/char/macserial.c.
480 */ 482 */
481 483
482void mac_scc_dispatch(int irq, void *dev_id, struct pt_regs *regs) 484void mac_scc_dispatch(int irq, void *dev_id)
483{ 485{
484 volatile unsigned char *scc = (unsigned char *) mac_bi_data.sccbase + 2; 486 volatile unsigned char *scc = (unsigned char *) mac_bi_data.sccbase + 2;
485 unsigned char reg; 487 unsigned char reg;
@@ -504,7 +506,7 @@ void mac_scc_dispatch(int irq, void *dev_id, struct pt_regs *regs)
504 /* pretty much kill the system. */ 506 /* pretty much kill the system. */
505 507
506 if (reg & 0x38) 508 if (reg & 0x38)
507 m68k_handle_int(IRQ_SCCA, regs); 509 m68k_handle_int(IRQ_SCCA);
508 if (reg & 0x07) 510 if (reg & 0x07)
509 m68k_handle_int(IRQ_SCCB, regs); 511 m68k_handle_int(IRQ_SCCB);
510} 512}
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c
index 63e04365191f..63690819565a 100644
--- a/arch/m68k/mac/oss.c
+++ b/arch/m68k/mac/oss.c
@@ -30,11 +30,11 @@
30int oss_present; 30int oss_present;
31volatile struct mac_oss *oss; 31volatile struct mac_oss *oss;
32 32
33irqreturn_t oss_irq(int, void *, struct pt_regs *); 33irqreturn_t oss_irq(int, void *);
34irqreturn_t oss_nubus_irq(int, void *, struct pt_regs *); 34irqreturn_t oss_nubus_irq(int, void *);
35 35
36extern irqreturn_t via1_irq(int, void *, struct pt_regs *); 36extern irqreturn_t via1_irq(int, void *);
37extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *); 37extern irqreturn_t mac_scc_dispatch(int, void *);
38 38
39/* 39/*
40 * Initialize the OSS 40 * Initialize the OSS
@@ -92,7 +92,7 @@ void __init oss_nubus_init(void)
92 * and SCSI; everything else is routed to its own autovector IRQ. 92 * and SCSI; everything else is routed to its own autovector IRQ.
93 */ 93 */
94 94
95irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs) 95irqreturn_t oss_irq(int irq, void *dev_id)
96{ 96{
97 int events; 97 int events;
98 98
@@ -113,7 +113,7 @@ irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs)
113 oss->irq_pending &= ~OSS_IP_SOUND; 113 oss->irq_pending &= ~OSS_IP_SOUND;
114 } else if (events & OSS_IP_SCSI) { 114 } else if (events & OSS_IP_SCSI) {
115 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED; 115 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED;
116 m68k_handle_int(IRQ_MAC_SCSI, regs); 116 m68k_handle_int(IRQ_MAC_SCSI);
117 oss->irq_pending &= ~OSS_IP_SCSI; 117 oss->irq_pending &= ~OSS_IP_SCSI;
118 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI; 118 oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI;
119 } else { 119 } else {
@@ -128,7 +128,7 @@ irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs)
128 * Unlike the VIA/RBV this is on its own autovector interrupt level. 128 * Unlike the VIA/RBV this is on its own autovector interrupt level.
129 */ 129 */
130 130
131irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) 131irqreturn_t oss_nubus_irq(int irq, void *dev_id)
132{ 132{
133 int events, irq_bit, i; 133 int events, irq_bit, i;
134 134
@@ -146,7 +146,7 @@ irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
146 for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) { 146 for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) {
147 if (events & irq_bit) { 147 if (events & irq_bit) {
148 oss->irq_level[i] = OSS_IRQLEV_DISABLED; 148 oss->irq_level[i] = OSS_IRQLEV_DISABLED;
149 m68k_handle_int(NUBUS_SOURCE_BASE + i, regs); 149 m68k_handle_int(NUBUS_SOURCE_BASE + i);
150 oss->irq_pending &= ~irq_bit; 150 oss->irq_pending &= ~irq_bit;
151 oss->irq_level[i] = OSS_IRQLEV_NUBUS; 151 oss->irq_level[i] = OSS_IRQLEV_NUBUS;
152 } 152 }
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c
index e26218091755..15378a5878c9 100644
--- a/arch/m68k/mac/psc.c
+++ b/arch/m68k/mac/psc.c
@@ -30,7 +30,7 @@
30int psc_present; 30int psc_present;
31volatile __u8 *psc; 31volatile __u8 *psc;
32 32
33irqreturn_t psc_irq(int, void *, struct pt_regs *); 33irqreturn_t psc_irq(int, void *);
34 34
35/* 35/*
36 * Debugging dump, used in various places to see what's going on. 36 * Debugging dump, used in various places to see what's going on.
@@ -127,7 +127,7 @@ void __init psc_register_interrupts(void)
127 * PSC interrupt handler. It's a lot like the VIA interrupt handler. 127 * PSC interrupt handler. It's a lot like the VIA interrupt handler.
128 */ 128 */
129 129
130irqreturn_t psc_irq(int irq, void *dev_id, struct pt_regs *regs) 130irqreturn_t psc_irq(int irq, void *dev_id)
131{ 131{
132 int pIFR = pIFRbase + ((int) dev_id); 132 int pIFR = pIFRbase + ((int) dev_id);
133 int pIER = pIERbase + ((int) dev_id); 133 int pIER = pIERbase + ((int) dev_id);
@@ -149,7 +149,7 @@ irqreturn_t psc_irq(int irq, void *dev_id, struct pt_regs *regs)
149 for (i = 0, irq_bit = 1 ; i < 4 ; i++, irq_bit <<= 1) { 149 for (i = 0, irq_bit = 1 ; i < 4 ; i++, irq_bit <<= 1) {
150 if (events & irq_bit) { 150 if (events & irq_bit) {
151 psc_write_byte(pIER, irq_bit); 151 psc_write_byte(pIER, irq_bit);
152 m68k_handle_int(base_irq + i, regs); 152 m68k_handle_int(base_irq + i);
153 psc_write_byte(pIFR, irq_bit); 153 psc_write_byte(pIFR, irq_bit);
154 psc_write_byte(pIER, irq_bit | 0x80); 154 psc_write_byte(pIER, irq_bit | 0x80);
155 } 155 }
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c
index c4aa345d544e..e27735be2924 100644
--- a/arch/m68k/mac/via.c
+++ b/arch/m68k/mac/via.c
@@ -63,14 +63,14 @@ static int gIER,gIFR,gBufA,gBufB;
63static int nubus_active; 63static int nubus_active;
64 64
65void via_debug_dump(void); 65void via_debug_dump(void);
66irqreturn_t via1_irq(int, void *, struct pt_regs *); 66irqreturn_t via1_irq(int, void *);
67irqreturn_t via2_irq(int, void *, struct pt_regs *); 67irqreturn_t via2_irq(int, void *);
68irqreturn_t via_nubus_irq(int, void *, struct pt_regs *); 68irqreturn_t via_nubus_irq(int, void *);
69void via_irq_enable(int irq); 69void via_irq_enable(int irq);
70void via_irq_disable(int irq); 70void via_irq_disable(int irq);
71void via_irq_clear(int irq); 71void via_irq_clear(int irq);
72 72
73extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *); 73extern irqreturn_t mac_scc_dispatch(int, void *);
74extern int oss_present; 74extern int oss_present;
75 75
76/* 76/*
@@ -235,7 +235,7 @@ void __init via_init(void)
235 * Start the 100 Hz clock 235 * Start the 100 Hz clock
236 */ 236 */
237 237
238void __init via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *)) 238void __init via_init_clock(irq_handler_t func)
239{ 239{
240 via1[vACR] |= 0x40; 240 via1[vACR] |= 0x40;
241 via1[vT1LL] = MAC_CLOCK_LOW; 241 via1[vT1LL] = MAC_CLOCK_LOW;
@@ -412,7 +412,7 @@ void __init via_nubus_init(void)
412 * the machspec interrupt number after clearing the interrupt. 412 * the machspec interrupt number after clearing the interrupt.
413 */ 413 */
414 414
415irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs) 415irqreturn_t via1_irq(int irq, void *dev_id)
416{ 416{
417 int irq_bit, i; 417 int irq_bit, i;
418 unsigned char events, mask; 418 unsigned char events, mask;
@@ -424,7 +424,7 @@ irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs)
424 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) 424 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1)
425 if (events & irq_bit) { 425 if (events & irq_bit) {
426 via1[vIER] = irq_bit; 426 via1[vIER] = irq_bit;
427 m68k_handle_int(VIA1_SOURCE_BASE + i, regs); 427 m68k_handle_int(VIA1_SOURCE_BASE + i);
428 via1[vIFR] = irq_bit; 428 via1[vIFR] = irq_bit;
429 via1[vIER] = irq_bit | 0x80; 429 via1[vIER] = irq_bit | 0x80;
430 } 430 }
@@ -439,14 +439,14 @@ irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs)
439 /* No, it won't be set. that's why we're doing this. */ 439 /* No, it won't be set. that's why we're doing this. */
440 via_irq_disable(IRQ_MAC_NUBUS); 440 via_irq_disable(IRQ_MAC_NUBUS);
441 via_irq_clear(IRQ_MAC_NUBUS); 441 via_irq_clear(IRQ_MAC_NUBUS);
442 m68k_handle_int(IRQ_MAC_NUBUS, regs); 442 m68k_handle_int(IRQ_MAC_NUBUS);
443 via_irq_enable(IRQ_MAC_NUBUS); 443 via_irq_enable(IRQ_MAC_NUBUS);
444 } 444 }
445#endif 445#endif
446 return IRQ_HANDLED; 446 return IRQ_HANDLED;
447} 447}
448 448
449irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs) 449irqreturn_t via2_irq(int irq, void *dev_id)
450{ 450{
451 int irq_bit, i; 451 int irq_bit, i;
452 unsigned char events, mask; 452 unsigned char events, mask;
@@ -459,7 +459,7 @@ irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs)
459 if (events & irq_bit) { 459 if (events & irq_bit) {
460 via2[gIER] = irq_bit; 460 via2[gIER] = irq_bit;
461 via2[gIFR] = irq_bit | rbv_clear; 461 via2[gIFR] = irq_bit | rbv_clear;
462 m68k_handle_int(VIA2_SOURCE_BASE + i, regs); 462 m68k_handle_int(VIA2_SOURCE_BASE + i);
463 via2[gIER] = irq_bit | 0x80; 463 via2[gIER] = irq_bit | 0x80;
464 } 464 }
465 return IRQ_HANDLED; 465 return IRQ_HANDLED;
@@ -470,7 +470,7 @@ irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs)
470 * VIA2 dispatcher as a fast interrupt handler. 470 * VIA2 dispatcher as a fast interrupt handler.
471 */ 471 */
472 472
473irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) 473irqreturn_t via_nubus_irq(int irq, void *dev_id)
474{ 474{
475 int irq_bit, i; 475 int irq_bit, i;
476 unsigned char events; 476 unsigned char events;
@@ -481,7 +481,7 @@ irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
481 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) { 481 for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) {
482 if (events & irq_bit) { 482 if (events & irq_bit) {
483 via_irq_disable(NUBUS_SOURCE_BASE + i); 483 via_irq_disable(NUBUS_SOURCE_BASE + i);
484 m68k_handle_int(NUBUS_SOURCE_BASE + i, regs); 484 m68k_handle_int(NUBUS_SOURCE_BASE + i);
485 via_irq_enable(NUBUS_SOURCE_BASE + i); 485 via_irq_enable(NUBUS_SOURCE_BASE + i);
486 } 486 }
487 } 487 }
diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c
index 0cd0e5bddcee..4a7df9c3f85a 100644
--- a/arch/m68k/mvme147/config.c
+++ b/arch/m68k/mvme147/config.c
@@ -38,7 +38,7 @@
38 38
39static void mvme147_get_model(char *model); 39static void mvme147_get_model(char *model);
40static int mvme147_get_hardware_list(char *buffer); 40static int mvme147_get_hardware_list(char *buffer);
41extern void mvme147_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 41extern void mvme147_sched_init(irq_handler_t handler);
42extern unsigned long mvme147_gettimeoffset (void); 42extern unsigned long mvme147_gettimeoffset (void);
43extern int mvme147_hwclk (int, struct rtc_time *); 43extern int mvme147_hwclk (int, struct rtc_time *);
44extern int mvme147_set_clock_mmss (unsigned long); 44extern int mvme147_set_clock_mmss (unsigned long);
@@ -51,7 +51,7 @@ static int bcd2int (unsigned char b);
51/* Save tick handler routine pointer, will point to do_timer() in 51/* Save tick handler routine pointer, will point to do_timer() in
52 * kernel/sched.c, called via mvme147_process_int() */ 52 * kernel/sched.c, called via mvme147_process_int() */
53 53
54irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); 54irq_handler_t tick_handler;
55 55
56 56
57int mvme147_parse_bootinfo(const struct bi_record *bi) 57int mvme147_parse_bootinfo(const struct bi_record *bi)
@@ -114,15 +114,15 @@ void __init config_mvme147(void)
114 114
115/* Using pcc tick timer 1 */ 115/* Using pcc tick timer 1 */
116 116
117static irqreturn_t mvme147_timer_int (int irq, void *dev_id, struct pt_regs *fp) 117static irqreturn_t mvme147_timer_int (int irq, void *dev_id)
118{ 118{
119 m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; 119 m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR;
120 m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1; 120 m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1;
121 return tick_handler(irq, dev_id, fp); 121 return tick_handler(irq, dev_id);
122} 122}
123 123
124 124
125void mvme147_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 125void mvme147_sched_init (irq_handler_t timer_routine)
126{ 126{
127 tick_handler = timer_routine; 127 tick_handler = timer_routine;
128 request_irq (PCC_IRQ_TIMER1, mvme147_timer_int, 128 request_irq (PCC_IRQ_TIMER1, mvme147_timer_int,
diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c
index ce2727ed1bc0..c829ebb6b1af 100644
--- a/arch/m68k/mvme16x/config.c
+++ b/arch/m68k/mvme16x/config.c
@@ -42,7 +42,7 @@ static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;
42 42
43static void mvme16x_get_model(char *model); 43static void mvme16x_get_model(char *model);
44static int mvme16x_get_hardware_list(char *buffer); 44static int mvme16x_get_hardware_list(char *buffer);
45extern void mvme16x_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 45extern void mvme16x_sched_init(irq_handler_t handler);
46extern unsigned long mvme16x_gettimeoffset (void); 46extern unsigned long mvme16x_gettimeoffset (void);
47extern int mvme16x_hwclk (int, struct rtc_time *); 47extern int mvme16x_hwclk (int, struct rtc_time *);
48extern int mvme16x_set_clock_mmss (unsigned long); 48extern int mvme16x_set_clock_mmss (unsigned long);
@@ -54,7 +54,7 @@ int bcd2int (unsigned char b);
54/* Save tick handler routine pointer, will point to do_timer() in 54/* Save tick handler routine pointer, will point to do_timer() in
55 * kernel/sched.c, called via mvme16x_process_int() */ 55 * kernel/sched.c, called via mvme16x_process_int() */
56 56
57static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); 57static irq_handler_t tick_handler;
58 58
59 59
60unsigned short mvme16x_config; 60unsigned short mvme16x_config;
@@ -190,7 +190,7 @@ void __init config_mvme16x(void)
190 } 190 }
191} 191}
192 192
193static irqreturn_t mvme16x_abort_int (int irq, void *dev_id, struct pt_regs *fp) 193static irqreturn_t mvme16x_abort_int (int irq, void *dev_id)
194{ 194{
195 p_bdid p = &mvme_bdid; 195 p_bdid p = &mvme_bdid;
196 unsigned long *new = (unsigned long *)vectors; 196 unsigned long *new = (unsigned long *)vectors;
@@ -218,13 +218,13 @@ static irqreturn_t mvme16x_abort_int (int irq, void *dev_id, struct pt_regs *fp)
218 return IRQ_HANDLED; 218 return IRQ_HANDLED;
219} 219}
220 220
221static irqreturn_t mvme16x_timer_int (int irq, void *dev_id, struct pt_regs *fp) 221static irqreturn_t mvme16x_timer_int (int irq, void *dev_id)
222{ 222{
223 *(volatile unsigned char *)0xfff4201b |= 8; 223 *(volatile unsigned char *)0xfff4201b |= 8;
224 return tick_handler(irq, dev_id, fp); 224 return tick_handler(irq, dev_id);
225} 225}
226 226
227void mvme16x_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 227void mvme16x_sched_init (irq_handler_t timer_routine)
228{ 228{
229 p_bdid p = &mvme_bdid; 229 p_bdid p = &mvme_bdid;
230 int irq; 230 int irq;
diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c
index 9a1827876408..92f873cc7060 100644
--- a/arch/m68k/q40/config.c
+++ b/arch/m68k/q40/config.c
@@ -39,7 +39,7 @@ extern irqreturn_t q40_process_int (int level, struct pt_regs *regs);
39extern void q40_init_IRQ (void); 39extern void q40_init_IRQ (void);
40static void q40_get_model(char *model); 40static void q40_get_model(char *model);
41static int q40_get_hardware_list(char *buffer); 41static int q40_get_hardware_list(char *buffer);
42extern void q40_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 42extern void q40_sched_init(irq_handler_t handler);
43 43
44extern unsigned long q40_gettimeoffset (void); 44extern unsigned long q40_gettimeoffset (void);
45extern int q40_hwclk (int, struct rtc_time *); 45extern int q40_hwclk (int, struct rtc_time *);
diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c
index 472f41c4158b..31cc07d8cec4 100644
--- a/arch/m68k/q40/q40ints.c
+++ b/arch/m68k/q40/q40ints.c
@@ -125,9 +125,9 @@ void q40_mksound(unsigned int hz, unsigned int ticks)
125 sound_ticks = ticks << 1; 125 sound_ticks = ticks << 1;
126} 126}
127 127
128static irqreturn_t (*q40_timer_routine)(int, void *, struct pt_regs *); 128static irq_handler_t q40_timer_routine;
129 129
130static irqreturn_t q40_timer_int (int irq, void * dev, struct pt_regs * regs) 130static irqreturn_t q40_timer_int (int irq, void * dev)
131{ 131{
132 ql_ticks = ql_ticks ? 0 : 1; 132 ql_ticks = ql_ticks ? 0 : 1;
133 if (sound_ticks) { 133 if (sound_ticks) {
@@ -138,11 +138,11 @@ static irqreturn_t q40_timer_int (int irq, void * dev, struct pt_regs * regs)
138 } 138 }
139 139
140 if (!ql_ticks) 140 if (!ql_ticks)
141 q40_timer_routine(irq, dev, regs); 141 q40_timer_routine(irq, dev);
142 return IRQ_HANDLED; 142 return IRQ_HANDLED;
143} 143}
144 144
145void q40_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 145void q40_sched_init (irq_handler_t timer_routine)
146{ 146{
147 int timer_irq; 147 int timer_irq;
148 148
@@ -218,11 +218,11 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp)
218 switch (irq) { 218 switch (irq) {
219 case 4: 219 case 4:
220 case 6: 220 case 6:
221 m68k_handle_int(Q40_IRQ_SAMPLE, fp); 221 __m68k_handle_int(Q40_IRQ_SAMPLE, fp);
222 return; 222 return;
223 } 223 }
224 if (mir & Q40_IRQ_FRAME_MASK) { 224 if (mir & Q40_IRQ_FRAME_MASK) {
225 m68k_handle_int(Q40_IRQ_FRAME, fp); 225 __m68k_handle_int(Q40_IRQ_FRAME, fp);
226 master_outb(-1, FRAME_CLEAR_REG); 226 master_outb(-1, FRAME_CLEAR_REG);
227 } 227 }
228 if ((mir & Q40_IRQ_SER_MASK) || (mir & Q40_IRQ_EXT_MASK)) { 228 if ((mir & Q40_IRQ_SER_MASK) || (mir & Q40_IRQ_EXT_MASK)) {
@@ -257,7 +257,7 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp)
257 goto iirq; 257 goto iirq;
258 } 258 }
259 q40_state[irq] |= IRQ_INPROGRESS; 259 q40_state[irq] |= IRQ_INPROGRESS;
260 m68k_handle_int(irq, fp); 260 __m68k_handle_int(irq, fp);
261 q40_state[irq] &= ~IRQ_INPROGRESS; 261 q40_state[irq] &= ~IRQ_INPROGRESS;
262 262
263 /* naively enable everything, if that fails than */ 263 /* naively enable everything, if that fails than */
@@ -288,7 +288,7 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp)
288 mir = master_inb(IIRQ_REG); 288 mir = master_inb(IIRQ_REG);
289 /* should test whether keyboard irq is really enabled, doing it in defhand */ 289 /* should test whether keyboard irq is really enabled, doing it in defhand */
290 if (mir & Q40_IRQ_KEYB_MASK) 290 if (mir & Q40_IRQ_KEYB_MASK)
291 m68k_handle_int(Q40_IRQ_KEYBOARD, fp); 291 __m68k_handle_int(Q40_IRQ_KEYBOARD, fp);
292 292
293 return; 293 return;
294} 294}
diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c
index d09d03b3d956..4851b8437a87 100644
--- a/arch/m68k/sun3/config.c
+++ b/arch/m68k/sun3/config.c
@@ -35,7 +35,7 @@ extern char _text, _end;
35char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; 35char sun3_reserved_pmeg[SUN3_PMEGS_NUM];
36 36
37extern unsigned long sun3_gettimeoffset(void); 37extern unsigned long sun3_gettimeoffset(void);
38extern void sun3_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 38extern void sun3_sched_init(irq_handler_t handler);
39extern void sun3_get_model (char* model); 39extern void sun3_get_model (char* model);
40extern void idprom_init (void); 40extern void idprom_init (void);
41extern int sun3_hwclk(int set, struct rtc_time *t); 41extern int sun3_hwclk(int set, struct rtc_time *t);
@@ -162,7 +162,7 @@ void __init config_sun3(void)
162 sun3_bootmem_alloc(memory_start, memory_end); 162 sun3_bootmem_alloc(memory_start, memory_end);
163} 163}
164 164
165void __init sun3_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) 165void __init sun3_sched_init(irq_handler_t timer_routine)
166{ 166{
167 sun3_disable_interrupts(); 167 sun3_disable_interrupts();
168 intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE); 168 intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE);
diff --git a/arch/m68k/sun3/sun3ints.c b/arch/m68k/sun3/sun3ints.c
index dc4ea7e074a6..baf74e8de8b5 100644
--- a/arch/m68k/sun3/sun3ints.c
+++ b/arch/m68k/sun3/sun3ints.c
@@ -15,6 +15,7 @@
15#include <asm/intersil.h> 15#include <asm/intersil.h>
16#include <asm/oplib.h> 16#include <asm/oplib.h>
17#include <asm/sun3ints.h> 17#include <asm/sun3ints.h>
18#include <asm/irq_regs.h>
18#include <linux/seq_file.h> 19#include <linux/seq_file.h>
19 20
20extern void sun3_leds (unsigned char); 21extern void sun3_leds (unsigned char);
@@ -48,7 +49,7 @@ void sun3_disable_irq(unsigned int irq)
48 *sun3_intreg &= ~(1 << irq); 49 *sun3_intreg &= ~(1 << irq);
49} 50}
50 51
51static irqreturn_t sun3_int7(int irq, void *dev_id, struct pt_regs *fp) 52static irqreturn_t sun3_int7(int irq, void *dev_id)
52{ 53{
53 *sun3_intreg |= (1 << irq); 54 *sun3_intreg |= (1 << irq);
54 if (!(kstat_cpu(0).irqs[irq] % 2000)) 55 if (!(kstat_cpu(0).irqs[irq] % 2000))
@@ -56,7 +57,7 @@ static irqreturn_t sun3_int7(int irq, void *dev_id, struct pt_regs *fp)
56 return IRQ_HANDLED; 57 return IRQ_HANDLED;
57} 58}
58 59
59static irqreturn_t sun3_int5(int irq, void *dev_id, struct pt_regs *fp) 60static irqreturn_t sun3_int5(int irq, void *dev_id)
60{ 61{
61#ifdef CONFIG_SUN3 62#ifdef CONFIG_SUN3
62 intersil_clear(); 63 intersil_clear();
@@ -67,14 +68,14 @@ static irqreturn_t sun3_int5(int irq, void *dev_id, struct pt_regs *fp)
67#endif 68#endif
68 do_timer(1); 69 do_timer(1);
69#ifndef CONFIG_SMP 70#ifndef CONFIG_SMP
70 update_process_times(user_mode(fp)); 71 update_process_times(user_mode(get_irq_regs()));
71#endif 72#endif
72 if (!(kstat_cpu(0).irqs[irq] % 20)) 73 if (!(kstat_cpu(0).irqs[irq] % 20))
73 sun3_leds(led_pattern[(kstat_cpu(0).irqs[irq] % 160) / 20]); 74 sun3_leds(led_pattern[(kstat_cpu(0).irqs[irq] % 160) / 20]);
74 return IRQ_HANDLED; 75 return IRQ_HANDLED;
75} 76}
76 77
77static irqreturn_t sun3_vec255(int irq, void *dev_id, struct pt_regs *fp) 78static irqreturn_t sun3_vec255(int irq, void *dev_id)
78{ 79{
79// intersil_clear(); 80// intersil_clear();
80 return IRQ_HANDLED; 81 return IRQ_HANDLED;
@@ -84,7 +85,7 @@ static void sun3_inthandle(unsigned int irq, struct pt_regs *fp)
84{ 85{
85 *sun3_intreg &= ~(1 << irq); 86 *sun3_intreg &= ~(1 << irq);
86 87
87 m68k_handle_int(irq, fp); 88 __m68k_handle_int(irq, fp);
88} 89}
89 90
90static struct irq_controller sun3_irq_controller = { 91static struct irq_controller sun3_irq_controller = {
diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c
index 6f4204fbecd7..f5eaafb00d21 100644
--- a/arch/m68k/sun3x/time.c
+++ b/arch/m68k/sun3x/time.c
@@ -90,7 +90,7 @@ static void sun3x_timer_tick(int irq, void *dev_id, struct pt_regs *regs)
90} 90}
91#endif 91#endif
92 92
93void __init sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) 93void __init sun3x_sched_init(irq_handler_t vector)
94{ 94{
95 95
96 sun3_disable_interrupts(); 96 sun3_disable_interrupts();
diff --git a/arch/m68k/sun3x/time.h b/arch/m68k/sun3x/time.h
index e7e43b4ec4a1..6909e1297534 100644
--- a/arch/m68k/sun3x/time.h
+++ b/arch/m68k/sun3x/time.h
@@ -3,7 +3,7 @@
3 3
4extern int sun3x_hwclk(int set, struct rtc_time *t); 4extern int sun3x_hwclk(int set, struct rtc_time *t);
5unsigned long sun3x_gettimeoffset (void); 5unsigned long sun3x_gettimeoffset (void);
6void sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)); 6void sun3x_sched_init(irq_handler_t vector);
7 7
8struct mostek_dt { 8struct mostek_dt {
9 volatile unsigned char csr; 9 volatile unsigned char csr;
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 8a49884bd5ec..14af6cce2fa2 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1010,11 +1010,6 @@ endchoice
1010config ARC32 1010config ARC32
1011 bool 1011 bool
1012 1012
1013config AU1X00_USB_DEVICE
1014 bool
1015 depends on MIPS_PB1500 || MIPS_PB1100 || MIPS_PB1000
1016 default n
1017
1018config BOOT_ELF32 1013config BOOT_ELF32
1019 bool 1014 bool
1020 1015
@@ -1465,10 +1460,8 @@ config MIPS_MT_DISABLED
1465 the option of an MT-enabled processor this option will be the only 1460 the option of an MT-enabled processor this option will be the only
1466 option in this menu. 1461 option in this menu.
1467 1462
1468config MIPS_MT_SMTC 1463config MIPS_MT_SMP
1469 bool "SMTC: Use all TCs on all VPEs for SMP" 1464 bool "Use 1 TC on each available VPE for SMP"
1470 depends on CPU_MIPS32_R2
1471 #depends on CPU_MIPS64_R2 # once there is hardware ...
1472 depends on SYS_SUPPORTS_MULTITHREADING 1465 depends on SYS_SUPPORTS_MULTITHREADING
1473 select CPU_MIPSR2_IRQ_VI 1466 select CPU_MIPSR2_IRQ_VI
1474 select CPU_MIPSR2_SRS 1467 select CPU_MIPSR2_SRS
@@ -1476,11 +1469,13 @@ config MIPS_MT_SMTC
1476 select SMP 1469 select SMP
1477 select SYS_SUPPORTS_SMP 1470 select SYS_SUPPORTS_SMP
1478 help 1471 help
1479 This is a kernel model which is known a SMTC or lately has been 1472 This is a kernel model which is also known a VSMP or lately
1480 marketesed into SMVP. 1473 has been marketesed into SMVP.
1481 1474
1482config MIPS_MT_SMP 1475config MIPS_MT_SMTC
1483 bool "Use 1 TC on each available VPE for SMP" 1476 bool "SMTC: Use all TCs on all VPEs for SMP"
1477 depends on CPU_MIPS32_R2
1478 #depends on CPU_MIPS64_R2 # once there is hardware ...
1484 depends on SYS_SUPPORTS_MULTITHREADING 1479 depends on SYS_SUPPORTS_MULTITHREADING
1485 select CPU_MIPSR2_IRQ_VI 1480 select CPU_MIPSR2_IRQ_VI
1486 select CPU_MIPSR2_SRS 1481 select CPU_MIPSR2_SRS
@@ -1488,8 +1483,8 @@ config MIPS_MT_SMP
1488 select SMP 1483 select SMP
1489 select SYS_SUPPORTS_SMP 1484 select SYS_SUPPORTS_SMP
1490 help 1485 help
1491 This is a kernel model which is also known a VSMP or lately 1486 This is a kernel model which is known a SMTC or lately has been
1492 has been marketesed into SMVP. 1487 marketesed into SMVP.
1493 1488
1494config MIPS_VPE_LOADER 1489config MIPS_VPE_LOADER
1495 bool "VPE loader support." 1490 bool "VPE loader support."
diff --git a/arch/mips/au1000/common/Makefile b/arch/mips/au1000/common/Makefile
index bf682f50b859..4c35525edb4f 100644
--- a/arch/mips/au1000/common/Makefile
+++ b/arch/mips/au1000/common/Makefile
@@ -10,6 +10,5 @@ obj-y += prom.o irq.o puts.o time.o reset.o \
10 au1xxx_irqmap.o clocks.o platform.o power.o setup.o \ 10 au1xxx_irqmap.o clocks.o platform.o power.o setup.o \
11 sleeper.o cputable.o dma.o dbdma.o gpio.o 11 sleeper.o cputable.o dma.o dbdma.o gpio.o
12 12
13obj-$(CONFIG_AU1X00_USB_DEVICE) += usbdev.o
14obj-$(CONFIG_KGDB) += dbg_io.o 13obj-$(CONFIG_KGDB) += dbg_io.o
15obj-$(CONFIG_PCI) += pci.o 14obj-$(CONFIG_PCI) += pci.o
diff --git a/arch/mips/au1000/common/dma.c b/arch/mips/au1000/common/dma.c
index fb7c47c1585d..c78260d4e837 100644
--- a/arch/mips/au1000/common/dma.c
+++ b/arch/mips/au1000/common/dma.c
@@ -160,7 +160,7 @@ void dump_au1000_dma_channel(unsigned int dmanr)
160 * Requests the DMA done IRQ if irqhandler != NULL. 160 * Requests the DMA done IRQ if irqhandler != NULL.
161 */ 161 */
162int request_au1000_dma(int dev_id, const char *dev_str, 162int request_au1000_dma(int dev_id, const char *dev_str,
163 irqreturn_t (*irqhandler)(int, void *, struct pt_regs *), 163 irq_handler_t irqhandler,
164 unsigned long irqflags, 164 unsigned long irqflags,
165 void *irq_dev_id) 165 void *irq_dev_id)
166{ 166{
diff --git a/arch/mips/au1000/common/irq.c b/arch/mips/au1000/common/irq.c
index 316722ee8cf5..2abe132bb07d 100644
--- a/arch/mips/au1000/common/irq.c
+++ b/arch/mips/au1000/common/irq.c
@@ -67,7 +67,7 @@
67 67
68extern void set_debug_traps(void); 68extern void set_debug_traps(void);
69extern irq_cpustat_t irq_stat [NR_CPUS]; 69extern irq_cpustat_t irq_stat [NR_CPUS];
70extern void mips_timer_interrupt(struct pt_regs *regs); 70extern void mips_timer_interrupt(void);
71 71
72static void setup_local_irq(unsigned int irq, int type, int int_req); 72static void setup_local_irq(unsigned int irq, int type, int int_req);
73static unsigned int startup_irq(unsigned int irq); 73static unsigned int startup_irq(unsigned int irq);
@@ -81,10 +81,6 @@ inline void local_disable_irq(unsigned int irq_nr);
81 81
82void (*board_init_irq)(void); 82void (*board_init_irq)(void);
83 83
84#ifdef CONFIG_PM
85extern irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs);
86#endif
87
88static DEFINE_SPINLOCK(irq_lock); 84static DEFINE_SPINLOCK(irq_lock);
89 85
90 86
@@ -292,7 +288,7 @@ static struct irq_chip level_irq_type = {
292}; 288};
293 289
294#ifdef CONFIG_PM 290#ifdef CONFIG_PM
295void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)) 291void startup_match20_interrupt(irq_handler_t handler)
296{ 292{
297 struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT]; 293 struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT];
298 294
@@ -501,14 +497,15 @@ void __init arch_init_irq(void)
501 * intcX_reqX_irqdispatch(). 497 * intcX_reqX_irqdispatch().
502 */ 498 */
503 499
504void intc0_req0_irqdispatch(struct pt_regs *regs) 500static void intc0_req0_irqdispatch(void)
505{ 501{
506 int irq = 0; 502 int irq = 0;
507 static unsigned long intc0_req0 = 0; 503 static unsigned long intc0_req0 = 0;
508 504
509 intc0_req0 |= au_readl(IC0_REQ0INT); 505 intc0_req0 |= au_readl(IC0_REQ0INT);
510 506
511 if (!intc0_req0) return; 507 if (!intc0_req0)
508 return;
512#ifdef AU1000_USB_DEV_REQ_INT 509#ifdef AU1000_USB_DEV_REQ_INT
513 /* 510 /*
514 * Because of the tight timing of SETUP token to reply 511 * Because of the tight timing of SETUP token to reply
@@ -517,28 +514,29 @@ void intc0_req0_irqdispatch(struct pt_regs *regs)
517 */ 514 */
518 if ((intc0_req0 & (1<<AU1000_USB_DEV_REQ_INT))) { 515 if ((intc0_req0 & (1<<AU1000_USB_DEV_REQ_INT))) {
519 intc0_req0 &= ~(1<<AU1000_USB_DEV_REQ_INT); 516 intc0_req0 &= ~(1<<AU1000_USB_DEV_REQ_INT);
520 do_IRQ(AU1000_USB_DEV_REQ_INT, regs); 517 do_IRQ(AU1000_USB_DEV_REQ_INT);
521 return; 518 return;
522 } 519 }
523#endif 520#endif
524 irq = au_ffs(intc0_req0) - 1; 521 irq = au_ffs(intc0_req0) - 1;
525 intc0_req0 &= ~(1<<irq); 522 intc0_req0 &= ~(1<<irq);
526 do_IRQ(irq, regs); 523 do_IRQ(irq);
527} 524}
528 525
529 526
530void intc0_req1_irqdispatch(struct pt_regs *regs) 527static void intc0_req1_irqdispatch(void)
531{ 528{
532 int irq = 0; 529 int irq = 0;
533 static unsigned long intc0_req1 = 0; 530 static unsigned long intc0_req1 = 0;
534 531
535 intc0_req1 |= au_readl(IC0_REQ1INT); 532 intc0_req1 |= au_readl(IC0_REQ1INT);
536 533
537 if (!intc0_req1) return; 534 if (!intc0_req1)
535 return;
538 536
539 irq = au_ffs(intc0_req1) - 1; 537 irq = au_ffs(intc0_req1) - 1;
540 intc0_req1 &= ~(1<<irq); 538 intc0_req1 &= ~(1<<irq);
541 do_IRQ(irq, regs); 539 do_IRQ(irq);
542} 540}
543 541
544 542
@@ -546,35 +544,37 @@ void intc0_req1_irqdispatch(struct pt_regs *regs)
546 * Interrupt Controller 1: 544 * Interrupt Controller 1:
547 * interrupts 32 - 63 545 * interrupts 32 - 63
548 */ 546 */
549void intc1_req0_irqdispatch(struct pt_regs *regs) 547static void intc1_req0_irqdispatch(void)
550{ 548{
551 int irq = 0; 549 int irq = 0;
552 static unsigned long intc1_req0 = 0; 550 static unsigned long intc1_req0 = 0;
553 551
554 intc1_req0 |= au_readl(IC1_REQ0INT); 552 intc1_req0 |= au_readl(IC1_REQ0INT);
555 553
556 if (!intc1_req0) return; 554 if (!intc1_req0)
555 return;
557 556
558 irq = au_ffs(intc1_req0) - 1; 557 irq = au_ffs(intc1_req0) - 1;
559 intc1_req0 &= ~(1<<irq); 558 intc1_req0 &= ~(1<<irq);
560 irq += 32; 559 irq += 32;
561 do_IRQ(irq, regs); 560 do_IRQ(irq);
562} 561}
563 562
564 563
565void intc1_req1_irqdispatch(struct pt_regs *regs) 564static void intc1_req1_irqdispatch(void)
566{ 565{
567 int irq = 0; 566 int irq = 0;
568 static unsigned long intc1_req1 = 0; 567 static unsigned long intc1_req1 = 0;
569 568
570 intc1_req1 |= au_readl(IC1_REQ1INT); 569 intc1_req1 |= au_readl(IC1_REQ1INT);
571 570
572 if (!intc1_req1) return; 571 if (!intc1_req1)
572 return;
573 573
574 irq = au_ffs(intc1_req1) - 1; 574 irq = au_ffs(intc1_req1) - 1;
575 intc1_req1 &= ~(1<<irq); 575 intc1_req1 &= ~(1<<irq);
576 irq += 32; 576 irq += 32;
577 do_IRQ(irq, regs); 577 do_IRQ(irq);
578} 578}
579 579
580#ifdef CONFIG_PM 580#ifdef CONFIG_PM
@@ -660,20 +660,20 @@ restore_au1xxx_intctl(void)
660} 660}
661#endif /* CONFIG_PM */ 661#endif /* CONFIG_PM */
662 662
663asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 663asmlinkage void plat_irq_dispatch(void)
664{ 664{
665 unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; 665 unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM;
666 666
667 if (pending & CAUSEF_IP7) 667 if (pending & CAUSEF_IP7)
668 mips_timer_interrupt(regs); 668 mips_timer_interrupt();
669 else if (pending & CAUSEF_IP2) 669 else if (pending & CAUSEF_IP2)
670 intc0_req0_irqdispatch(regs); 670 intc0_req0_irqdispatch();
671 else if (pending & CAUSEF_IP3) 671 else if (pending & CAUSEF_IP3)
672 intc0_req1_irqdispatch(regs); 672 intc0_req1_irqdispatch();
673 else if (pending & CAUSEF_IP4) 673 else if (pending & CAUSEF_IP4)
674 intc1_req0_irqdispatch(regs); 674 intc1_req0_irqdispatch();
675 else if (pending & CAUSEF_IP5) 675 else if (pending & CAUSEF_IP5)
676 intc1_req1_irqdispatch(regs); 676 intc1_req1_irqdispatch();
677 else 677 else
678 spurious_interrupt(regs); 678 spurious_interrupt();
679} 679}
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c
index 0a067f3113a5..94f09194d63d 100644
--- a/arch/mips/au1000/common/time.c
+++ b/arch/mips/au1000/common/time.c
@@ -41,7 +41,6 @@
41 41
42#include <asm/compiler.h> 42#include <asm/compiler.h>
43#include <asm/mipsregs.h> 43#include <asm/mipsregs.h>
44#include <asm/ptrace.h>
45#include <asm/time.h> 44#include <asm/time.h>
46#include <asm/div64.h> 45#include <asm/div64.h>
47#include <asm/mach-au1x00/au1000.h> 46#include <asm/mach-au1x00/au1000.h>
@@ -62,7 +61,7 @@ static unsigned int timerhi = 0, timerlo = 0;
62#error "unsupported HZ value! Must be in [100,1000]" 61#error "unsupported HZ value! Must be in [100,1000]"
63#endif 62#endif
64#define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */ 63#define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */
65extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 64extern void startup_match20_interrupt(irq_handler_t handler);
66static unsigned long last_pc0, last_match20; 65static unsigned long last_pc0, last_match20;
67#endif 66#endif
68 67
@@ -79,7 +78,8 @@ static inline void ack_r4ktimer(unsigned long newval)
79 * is provably more robust. 78 * is provably more robust.
80 */ 79 */
81unsigned long wtimer; 80unsigned long wtimer;
82void mips_timer_interrupt(struct pt_regs *regs) 81
82void mips_timer_interrupt(void)
83{ 83{
84 int irq = 63; 84 int irq = 63;
85 unsigned long count; 85 unsigned long count;
@@ -98,7 +98,7 @@ void mips_timer_interrupt(struct pt_regs *regs)
98 kstat_this_cpu.irqs[irq]++; 98 kstat_this_cpu.irqs[irq]++;
99 do_timer(1); 99 do_timer(1);
100#ifndef CONFIG_SMP 100#ifndef CONFIG_SMP
101 update_process_times(user_mode(regs)); 101 update_process_times(user_mode(get_irq_regs()));
102#endif 102#endif
103 r4k_cur += r4k_offset; 103 r4k_cur += r4k_offset;
104 ack_r4ktimer(r4k_cur); 104 ack_r4ktimer(r4k_cur);
@@ -115,7 +115,7 @@ null:
115} 115}
116 116
117#ifdef CONFIG_PM 117#ifdef CONFIG_PM
118irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) 118irqreturn_t counter0_irq(int irq, void *dev_id)
119{ 119{
120 unsigned long pc0; 120 unsigned long pc0;
121 int time_elapsed; 121 int time_elapsed;
@@ -139,7 +139,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs)
139 while (time_elapsed > 0) { 139 while (time_elapsed > 0) {
140 do_timer(1); 140 do_timer(1);
141#ifndef CONFIG_SMP 141#ifndef CONFIG_SMP
142 update_process_times(user_mode(regs)); 142 update_process_times(user_mode(get_irq_regs()));
143#endif 143#endif
144 time_elapsed -= MATCH20_INC; 144 time_elapsed -= MATCH20_INC;
145 last_match20 += MATCH20_INC; 145 last_match20 += MATCH20_INC;
@@ -158,7 +158,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs)
158 jiffie_drift -= 999; 158 jiffie_drift -= 999;
159 do_timer(1); /* increment jiffies by one */ 159 do_timer(1); /* increment jiffies by one */
160#ifndef CONFIG_SMP 160#ifndef CONFIG_SMP
161 update_process_times(user_mode(regs)); 161 update_process_times(user_mode(get_irq_regs()));
162#endif 162#endif
163 } 163 }
164 164
diff --git a/arch/mips/au1000/common/usbdev.c b/arch/mips/au1000/common/usbdev.c
deleted file mode 100644
index 63bcb3a95dc7..000000000000
--- a/arch/mips/au1000/common/usbdev.c
+++ /dev/null
@@ -1,1555 +0,0 @@
1/*
2 * BRIEF MODULE DESCRIPTION
3 * Au1000 USB Device-Side (device layer)
4 *
5 * Copyright 2001-2002 MontaVista Software Inc.
6 * Author: MontaVista Software, Inc.
7 * stevel@mvista.com or source@mvista.com
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version.
13 *
14 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
17 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
20 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 *
25 * You should have received a copy of the GNU General Public License along
26 * with this program; if not, write to the Free Software Foundation, Inc.,
27 * 675 Mass Ave, Cambridge, MA 02139, USA.
28 */
29#include <linux/kernel.h>
30#include <linux/ioport.h>
31#include <linux/sched.h>
32#include <linux/signal.h>
33#include <linux/errno.h>
34#include <linux/poll.h>
35#include <linux/init.h>
36#include <linux/slab.h>
37#include <linux/fcntl.h>
38#include <linux/module.h>
39#include <linux/spinlock.h>
40#include <linux/list.h>
41#include <linux/smp_lock.h>
42#define DEBUG
43#include <linux/usb.h>
44
45#include <asm/io.h>
46#include <asm/uaccess.h>
47#include <asm/irq.h>
48#include <asm/mipsregs.h>
49#include <asm/au1000.h>
50#include <asm/au1000_dma.h>
51#include <asm/au1000_usbdev.h>
52
53#ifdef DEBUG
54#undef VDEBUG
55#ifdef VDEBUG
56#define vdbg(fmt, arg...) printk(KERN_DEBUG __FILE__ ": " fmt "\n" , ## arg)
57#else
58#define vdbg(fmt, arg...) do {} while (0)
59#endif
60#else
61#define vdbg(fmt, arg...) do {} while (0)
62#endif
63
64#define ALLOC_FLAGS (in_interrupt () ? GFP_ATOMIC : GFP_KERNEL)
65
66#define EP_FIFO_DEPTH 8
67
68typedef enum {
69 SETUP_STAGE = 0,
70 DATA_STAGE,
71 STATUS_STAGE
72} ep0_stage_t;
73
74typedef struct {
75 int read_fifo;
76 int write_fifo;
77 int ctrl_stat;
78 int read_fifo_status;
79 int write_fifo_status;
80} endpoint_reg_t;
81
82typedef struct {
83 usbdev_pkt_t *head;
84 usbdev_pkt_t *tail;
85 int count;
86} pkt_list_t;
87
88typedef struct {
89 int active;
90 struct usb_endpoint_descriptor *desc;
91 endpoint_reg_t *reg;
92 /* Only one of these are used, unless this is the control ep */
93 pkt_list_t inlist;
94 pkt_list_t outlist;
95 unsigned int indma, outdma; /* DMA channel numbers for IN, OUT */
96 /* following are extracted from endpoint descriptor for easy access */
97 int max_pkt_size;
98 int type;
99 int direction;
100 /* WE assign endpoint addresses! */
101 int address;
102 spinlock_t lock;
103} endpoint_t;
104
105
106static struct usb_dev {
107 endpoint_t ep[6];
108 ep0_stage_t ep0_stage;
109
110 struct usb_device_descriptor * dev_desc;
111 struct usb_interface_descriptor* if_desc;
112 struct usb_config_descriptor * conf_desc;
113 u8 * full_conf_desc;
114 struct usb_string_descriptor * str_desc[6];
115
116 /* callback to function layer */
117 void (*func_cb)(usbdev_cb_type_t type, unsigned long arg,
118 void *cb_data);
119 void* cb_data;
120
121 usbdev_state_t state; // device state
122 int suspended; // suspended flag
123 int address; // device address
124 int interface;
125 int num_ep;
126 u8 alternate_setting;
127 u8 configuration; // configuration value
128 int remote_wakeup_en;
129} usbdev;
130
131
132static endpoint_reg_t ep_reg[] = {
133 // FIFO's 0 and 1 are EP0 default control
134 {USBD_EP0RD, USBD_EP0WR, USBD_EP0CS, USBD_EP0RDSTAT, USBD_EP0WRSTAT },
135 {0},
136 // FIFO 2 is EP2, IN
137 { -1, USBD_EP2WR, USBD_EP2CS, -1, USBD_EP2WRSTAT },
138 // FIFO 3 is EP3, IN
139 { -1, USBD_EP3WR, USBD_EP3CS, -1, USBD_EP3WRSTAT },
140 // FIFO 4 is EP4, OUT
141 {USBD_EP4RD, -1, USBD_EP4CS, USBD_EP4RDSTAT, -1 },
142 // FIFO 5 is EP5, OUT
143 {USBD_EP5RD, -1, USBD_EP5CS, USBD_EP5RDSTAT, -1 }
144};
145
146static struct {
147 unsigned int id;
148 const char *str;
149} ep_dma_id[] = {
150 { DMA_ID_USBDEV_EP0_TX, "USBDev EP0 IN" },
151 { DMA_ID_USBDEV_EP0_RX, "USBDev EP0 OUT" },
152 { DMA_ID_USBDEV_EP2_TX, "USBDev EP2 IN" },
153 { DMA_ID_USBDEV_EP3_TX, "USBDev EP3 IN" },
154 { DMA_ID_USBDEV_EP4_RX, "USBDev EP4 OUT" },
155 { DMA_ID_USBDEV_EP5_RX, "USBDev EP5 OUT" }
156};
157
158#define DIR_OUT 0
159#define DIR_IN (1<<3)
160
161#define CONTROL_EP USB_ENDPOINT_XFER_CONTROL
162#define BULK_EP USB_ENDPOINT_XFER_BULK
163
164static inline endpoint_t *
165epaddr_to_ep(struct usb_dev* dev, int ep_addr)
166{
167 if (ep_addr >= 0 && ep_addr < 2)
168 return &dev->ep[0];
169 if (ep_addr < 6)
170 return &dev->ep[ep_addr];
171 return NULL;
172}
173
174static const char* std_req_name[] = {
175 "GET_STATUS",
176 "CLEAR_FEATURE",
177 "RESERVED",
178 "SET_FEATURE",
179 "RESERVED",
180 "SET_ADDRESS",
181 "GET_DESCRIPTOR",
182 "SET_DESCRIPTOR",
183 "GET_CONFIGURATION",
184 "SET_CONFIGURATION",
185 "GET_INTERFACE",
186 "SET_INTERFACE",
187 "SYNCH_FRAME"
188};
189
190static inline const char*
191get_std_req_name(int req)
192{
193 return (req >= 0 && req <= 12) ? std_req_name[req] : "UNKNOWN";
194}
195
196#if 0
197static void
198dump_setup(struct usb_ctrlrequest* s)
199{
200 dbg("%s: requesttype=%d", __FUNCTION__, s->requesttype);
201 dbg("%s: request=%d %s", __FUNCTION__, s->request,
202 get_std_req_name(s->request));
203 dbg("%s: value=0x%04x", __FUNCTION__, s->wValue);
204 dbg("%s: index=%d", __FUNCTION__, s->index);
205 dbg("%s: length=%d", __FUNCTION__, s->length);
206}
207#endif
208
209static inline usbdev_pkt_t *
210alloc_packet(endpoint_t * ep, int data_size, void* data)
211{
212 usbdev_pkt_t* pkt = kmalloc(sizeof(usbdev_pkt_t) + data_size,
213 ALLOC_FLAGS);
214 if (!pkt)
215 return NULL;
216 pkt->ep_addr = ep->address;
217 pkt->size = data_size;
218 pkt->status = 0;
219 pkt->next = NULL;
220 if (data)
221 memcpy(pkt->payload, data, data_size);
222
223 return pkt;
224}
225
226
227/*
228 * Link a packet to the tail of the enpoint's packet list.
229 * EP spinlock must be held when calling.
230 */
231static void
232link_tail(endpoint_t * ep, pkt_list_t * list, usbdev_pkt_t * pkt)
233{
234 if (!list->tail) {
235 list->head = list->tail = pkt;
236 list->count = 1;
237 } else {
238 list->tail->next = pkt;
239 list->tail = pkt;
240 list->count++;
241 }
242}
243
244/*
245 * Unlink and return a packet from the head of the given packet
246 * list. It is the responsibility of the caller to free the packet.
247 * EP spinlock must be held when calling.
248 */
249static usbdev_pkt_t *
250unlink_head(pkt_list_t * list)
251{
252 usbdev_pkt_t *pkt;
253
254 pkt = list->head;
255 if (!pkt || !list->count) {
256 return NULL;
257 }
258
259 list->head = pkt->next;
260 if (!list->head) {
261 list->head = list->tail = NULL;
262 list->count = 0;
263 } else
264 list->count--;
265
266 return pkt;
267}
268
269/*
270 * Create and attach a new packet to the tail of the enpoint's
271 * packet list. EP spinlock must be held when calling.
272 */
273static usbdev_pkt_t *
274add_packet(endpoint_t * ep, pkt_list_t * list, int size)
275{
276 usbdev_pkt_t *pkt = alloc_packet(ep, size, NULL);
277 if (!pkt)
278 return NULL;
279
280 link_tail(ep, list, pkt);
281 return pkt;
282}
283
284
285/*
286 * Unlink and free a packet from the head of the enpoint's
287 * packet list. EP spinlock must be held when calling.
288 */
289static inline void
290free_packet(pkt_list_t * list)
291{
292 kfree(unlink_head(list));
293}
294
295/* EP spinlock must be held when calling. */
296static inline void
297flush_pkt_list(pkt_list_t * list)
298{
299 while (list->count)
300 free_packet(list);
301}
302
303/* EP spinlock must be held when calling */
304static inline void
305flush_write_fifo(endpoint_t * ep)
306{
307 if (ep->reg->write_fifo_status >= 0) {
308 au_writel(USBDEV_FSTAT_FLUSH | USBDEV_FSTAT_UF |
309 USBDEV_FSTAT_OF,
310 ep->reg->write_fifo_status);
311 //udelay(100);
312 //au_writel(USBDEV_FSTAT_UF | USBDEV_FSTAT_OF,
313 // ep->reg->write_fifo_status);
314 }
315}
316
317/* EP spinlock must be held when calling */
318static inline void
319flush_read_fifo(endpoint_t * ep)
320{
321 if (ep->reg->read_fifo_status >= 0) {
322 au_writel(USBDEV_FSTAT_FLUSH | USBDEV_FSTAT_UF |
323 USBDEV_FSTAT_OF,
324 ep->reg->read_fifo_status);
325 //udelay(100);
326 //au_writel(USBDEV_FSTAT_UF | USBDEV_FSTAT_OF,
327 // ep->reg->read_fifo_status);
328 }
329}
330
331
332/* EP spinlock must be held when calling. */
333static void
334endpoint_flush(endpoint_t * ep)
335{
336 // First, flush all packets
337 flush_pkt_list(&ep->inlist);
338 flush_pkt_list(&ep->outlist);
339
340 // Now flush the endpoint's h/w FIFO(s)
341 flush_write_fifo(ep);
342 flush_read_fifo(ep);
343}
344
345/* EP spinlock must be held when calling. */
346static void
347endpoint_stall(endpoint_t * ep)
348{
349 u32 cs;
350
351 warn("%s", __FUNCTION__);
352
353 cs = au_readl(ep->reg->ctrl_stat) | USBDEV_CS_STALL;
354 au_writel(cs, ep->reg->ctrl_stat);
355}
356
357/* EP spinlock must be held when calling. */
358static void
359endpoint_unstall(endpoint_t * ep)
360{
361 u32 cs;
362
363 warn("%s", __FUNCTION__);
364
365 cs = au_readl(ep->reg->ctrl_stat) & ~USBDEV_CS_STALL;
366 au_writel(cs, ep->reg->ctrl_stat);
367}
368
369static void
370endpoint_reset_datatoggle(endpoint_t * ep)
371{
372 // FIXME: is this possible?
373}
374
375
376/* EP spinlock must be held when calling. */
377static int
378endpoint_fifo_read(endpoint_t * ep)
379{
380 int read_count = 0;
381 u8 *bufptr;
382 usbdev_pkt_t *pkt = ep->outlist.tail;
383
384 if (!pkt)
385 return -EINVAL;
386
387 bufptr = &pkt->payload[pkt->size];
388 while (au_readl(ep->reg->read_fifo_status) & USBDEV_FSTAT_FCNT_MASK) {
389 *bufptr++ = au_readl(ep->reg->read_fifo) & 0xff;
390 read_count++;
391 pkt->size++;
392 }
393
394 return read_count;
395}
396
397#if 0
398/* EP spinlock must be held when calling. */
399static int
400endpoint_fifo_write(endpoint_t * ep, int index)
401{
402 int write_count = 0;
403 u8 *bufptr;
404 usbdev_pkt_t *pkt = ep->inlist.head;
405
406 if (!pkt)
407 return -EINVAL;
408
409 bufptr = &pkt->payload[index];
410 while ((au_readl(ep->reg->write_fifo_status) &
411 USBDEV_FSTAT_FCNT_MASK) < EP_FIFO_DEPTH) {
412 if (bufptr < pkt->payload + pkt->size) {
413 au_writel(*bufptr++, ep->reg->write_fifo);
414 write_count++;
415 } else {
416 break;
417 }
418 }
419
420 return write_count;
421}
422#endif
423
424/*
425 * This routine is called to restart transmission of a packet.
426 * The endpoint's TSIZE must be set to the new packet's size,
427 * and DMA to the write FIFO needs to be restarted.
428 * EP spinlock must be held when calling.
429 */
430static void
431kickstart_send_packet(endpoint_t * ep)
432{
433 u32 cs;
434 usbdev_pkt_t *pkt = ep->inlist.head;
435
436 vdbg("%s: ep%d, pkt=%p", __FUNCTION__, ep->address, pkt);
437
438 if (!pkt) {
439 err("%s: head=NULL! list->count=%d", __FUNCTION__,
440 ep->inlist.count);
441 return;
442 }
443
444 dma_cache_wback_inv((unsigned long)pkt->payload, pkt->size);
445
446 /*
447 * make sure FIFO is empty
448 */
449 flush_write_fifo(ep);
450
451 cs = au_readl(ep->reg->ctrl_stat) & USBDEV_CS_STALL;
452 cs |= (pkt->size << USBDEV_CS_TSIZE_BIT);
453 au_writel(cs, ep->reg->ctrl_stat);
454
455 if (get_dma_active_buffer(ep->indma) == 1) {
456 set_dma_count1(ep->indma, pkt->size);
457 set_dma_addr1(ep->indma, virt_to_phys(pkt->payload));
458 enable_dma_buffer1(ep->indma); // reenable
459 } else {
460 set_dma_count0(ep->indma, pkt->size);
461 set_dma_addr0(ep->indma, virt_to_phys(pkt->payload));
462 enable_dma_buffer0(ep->indma); // reenable
463 }
464 if (dma_halted(ep->indma))
465 start_dma(ep->indma);
466}
467
468
469/*
470 * This routine is called when a packet in the inlist has been
471 * completed. Frees the completed packet and starts sending the
472 * next. EP spinlock must be held when calling.
473 */
474static usbdev_pkt_t *
475send_packet_complete(endpoint_t * ep)
476{
477 usbdev_pkt_t *pkt = unlink_head(&ep->inlist);
478
479 if (pkt) {
480 pkt->status =
481 (au_readl(ep->reg->ctrl_stat) & USBDEV_CS_NAK) ?
482 PKT_STATUS_NAK : PKT_STATUS_ACK;
483
484 vdbg("%s: ep%d, %s pkt=%p, list count=%d", __FUNCTION__,
485 ep->address, (pkt->status & PKT_STATUS_NAK) ?
486 "NAK" : "ACK", pkt, ep->inlist.count);
487 }
488
489 /*
490 * The write fifo should already be drained if things are
491 * working right, but flush it anyway just in case.
492 */
493 flush_write_fifo(ep);
494
495 // begin transmitting next packet in the inlist
496 if (ep->inlist.count) {
497 kickstart_send_packet(ep);
498 }
499
500 return pkt;
501}
502
503/*
504 * Add a new packet to the tail of the given ep's packet
505 * inlist. The transmit complete interrupt frees packets from
506 * the head of this list. EP spinlock must be held when calling.
507 */
508static int
509send_packet(struct usb_dev* dev, usbdev_pkt_t *pkt, int async)
510{
511 pkt_list_t *list;
512 endpoint_t* ep;
513
514 if (!pkt || !(ep = epaddr_to_ep(dev, pkt->ep_addr)))
515 return -EINVAL;
516
517 if (!pkt->size)
518 return 0;
519
520 list = &ep->inlist;
521
522 if (!async && list->count) {
523 halt_dma(ep->indma);
524 flush_pkt_list(list);
525 }
526
527 link_tail(ep, list, pkt);
528
529 vdbg("%s: ep%d, pkt=%p, size=%d, list count=%d", __FUNCTION__,
530 ep->address, pkt, pkt->size, list->count);
531
532 if (list->count == 1) {
533 /*
534 * if the packet count is one, it means the list was empty,
535 * and no more data will go out this ep until we kick-start
536 * it again.
537 */
538 kickstart_send_packet(ep);
539 }
540
541 return pkt->size;
542}
543
544/*
545 * This routine is called to restart reception of a packet.
546 * EP spinlock must be held when calling.
547 */
548static void
549kickstart_receive_packet(endpoint_t * ep)
550{
551 usbdev_pkt_t *pkt;
552
553 // get and link a new packet for next reception
554 if (!(pkt = add_packet(ep, &ep->outlist, ep->max_pkt_size))) {
555 err("%s: could not alloc new packet", __FUNCTION__);
556 return;
557 }
558
559 if (get_dma_active_buffer(ep->outdma) == 1) {
560 clear_dma_done1(ep->outdma);
561 set_dma_count1(ep->outdma, ep->max_pkt_size);
562 set_dma_count0(ep->outdma, 0);
563 set_dma_addr1(ep->outdma, virt_to_phys(pkt->payload));
564 enable_dma_buffer1(ep->outdma); // reenable
565 } else {
566 clear_dma_done0(ep->outdma);
567 set_dma_count0(ep->outdma, ep->max_pkt_size);
568 set_dma_count1(ep->outdma, 0);
569 set_dma_addr0(ep->outdma, virt_to_phys(pkt->payload));
570 enable_dma_buffer0(ep->outdma); // reenable
571 }
572 if (dma_halted(ep->outdma))
573 start_dma(ep->outdma);
574}
575
576
577/*
578 * This routine is called when a packet in the outlist has been
579 * completed (received) and we need to prepare for a new packet
580 * to be received. Halts DMA and computes the packet size from the
581 * remaining DMA counter. Then prepares a new packet for reception
582 * and restarts DMA. FIXME: what if another packet comes in
583 * on top of the completed packet? Counter would be wrong.
584 * EP spinlock must be held when calling.
585 */
586static usbdev_pkt_t *
587receive_packet_complete(endpoint_t * ep)
588{
589 usbdev_pkt_t *pkt = ep->outlist.tail;
590 u32 cs;
591
592 halt_dma(ep->outdma);
593
594 cs = au_readl(ep->reg->ctrl_stat);
595
596 if (!pkt)
597 return NULL;
598
599 pkt->size = ep->max_pkt_size - get_dma_residue(ep->outdma);
600 if (pkt->size)
601 dma_cache_inv((unsigned long)pkt->payload, pkt->size);
602 /*
603 * need to pull out any remaining bytes in the FIFO.
604 */
605 endpoint_fifo_read(ep);
606 /*
607 * should be drained now, but flush anyway just in case.
608 */
609 flush_read_fifo(ep);
610
611 pkt->status = (cs & USBDEV_CS_NAK) ? PKT_STATUS_NAK : PKT_STATUS_ACK;
612 if (ep->address == 0 && (cs & USBDEV_CS_SU))
613 pkt->status |= PKT_STATUS_SU;
614
615 vdbg("%s: ep%d, %s pkt=%p, size=%d", __FUNCTION__,
616 ep->address, (pkt->status & PKT_STATUS_NAK) ?
617 "NAK" : "ACK", pkt, pkt->size);
618
619 kickstart_receive_packet(ep);
620
621 return pkt;
622}
623
624
625/*
626 ****************************************************************************
627 * Here starts the standard device request handlers. They are
628 * all called by do_setup() via a table of function pointers.
629 ****************************************************************************
630 */
631
632static ep0_stage_t
633do_get_status(struct usb_dev* dev, struct usb_ctrlrequest* setup)
634{
635 switch (setup->bRequestType) {
636 case 0x80: // Device
637 // FIXME: send device status
638 break;
639 case 0x81: // Interface
640 // FIXME: send interface status
641 break;
642 case 0x82: // End Point
643 // FIXME: send endpoint status
644 break;
645 default:
646 // Invalid Command
647 endpoint_stall(&dev->ep[0]); // Stall End Point 0
648 break;
649 }
650
651 return STATUS_STAGE;
652}
653
654static ep0_stage_t
655do_clear_feature(struct usb_dev* dev, struct usb_ctrlrequest* setup)
656{
657 switch (setup->bRequestType) {
658 case 0x00: // Device
659 if ((le16_to_cpu(setup->wValue) & 0xff) == 1)
660 dev->remote_wakeup_en = 0;
661 else
662 endpoint_stall(&dev->ep[0]);
663 break;
664 case 0x02: // End Point
665 if ((le16_to_cpu(setup->wValue) & 0xff) == 0) {
666 endpoint_t *ep =
667 epaddr_to_ep(dev,
668 le16_to_cpu(setup->wIndex) & 0xff);
669
670 endpoint_unstall(ep);
671 endpoint_reset_datatoggle(ep);
672 } else
673 endpoint_stall(&dev->ep[0]);
674 break;
675 }
676
677 return SETUP_STAGE;
678}
679
680static ep0_stage_t
681do_reserved(struct usb_dev* dev, struct usb_ctrlrequest* setup)
682{
683 // Invalid request, stall End Point 0
684 endpoint_stall(&dev->ep[0]);
685 return SETUP_STAGE;
686}
687
688static ep0_stage_t
689do_set_feature(struct usb_dev* dev, struct usb_ctrlrequest* setup)
690{
691 switch (setup->bRequestType) {
692 case 0x00: // Device
693 if ((le16_to_cpu(setup->wValue) & 0xff) == 1)
694 dev->remote_wakeup_en = 1;
695 else
696 endpoint_stall(&dev->ep[0]);
697 break;
698 case 0x02: // End Point
699 if ((le16_to_cpu(setup->wValue) & 0xff) == 0) {
700 endpoint_t *ep =
701 epaddr_to_ep(dev,
702 le16_to_cpu(setup->wIndex) & 0xff);
703
704 endpoint_stall(ep);
705 } else
706 endpoint_stall(&dev->ep[0]);
707 break;
708 }
709
710 return SETUP_STAGE;
711}
712
713static ep0_stage_t
714do_set_address(struct usb_dev* dev, struct usb_ctrlrequest* setup)
715{
716 int new_state = dev->state;
717 int new_addr = le16_to_cpu(setup->wValue);
718
719 dbg("%s: our address=%d", __FUNCTION__, new_addr);
720
721 if (new_addr > 127) {
722 // usb spec doesn't tell us what to do, so just go to
723 // default state
724 new_state = DEFAULT;
725 dev->address = 0;
726 } else if (dev->address != new_addr) {
727 dev->address = new_addr;
728 new_state = ADDRESS;
729 }
730
731 if (dev->state != new_state) {
732 dev->state = new_state;
733 /* inform function layer of usbdev state change */
734 dev->func_cb(CB_NEW_STATE, dev->state, dev->cb_data);
735 }
736
737 return SETUP_STAGE;
738}
739
740static ep0_stage_t
741do_get_descriptor(struct usb_dev* dev, struct usb_ctrlrequest* setup)
742{
743 int strnum, desc_len = le16_to_cpu(setup->wLength);
744
745 switch (le16_to_cpu(setup->wValue) >> 8) {
746 case USB_DT_DEVICE:
747 // send device descriptor!
748 desc_len = desc_len > dev->dev_desc->bLength ?
749 dev->dev_desc->bLength : desc_len;
750 dbg("sending device desc, size=%d", desc_len);
751 send_packet(dev, alloc_packet(&dev->ep[0], desc_len,
752 dev->dev_desc), 0);
753 break;
754 case USB_DT_CONFIG:
755 // If the config descr index in low-byte of
756 // setup->wValue is valid, send config descr,
757 // otherwise stall ep0.
758 if ((le16_to_cpu(setup->wValue) & 0xff) == 0) {
759 // send config descriptor!
760 if (desc_len <= USB_DT_CONFIG_SIZE) {
761 dbg("sending partial config desc, size=%d",
762 desc_len);
763 send_packet(dev,
764 alloc_packet(&dev->ep[0],
765 desc_len,
766 dev->conf_desc),
767 0);
768 } else {
769 int len = le16_to_cpu(dev->conf_desc->wTotalLength);
770 dbg("sending whole config desc,"
771 " size=%d, our size=%d", desc_len, len);
772 desc_len = desc_len > len ? len : desc_len;
773 send_packet(dev,
774 alloc_packet(&dev->ep[0],
775 desc_len,
776 dev->full_conf_desc),
777 0);
778 }
779 } else
780 endpoint_stall(&dev->ep[0]);
781 break;
782 case USB_DT_STRING:
783 // If the string descr index in low-byte of setup->wValue
784 // is valid, send string descr, otherwise stall ep0.
785 strnum = le16_to_cpu(setup->wValue) & 0xff;
786 if (strnum >= 0 && strnum < 6) {
787 struct usb_string_descriptor *desc =
788 dev->str_desc[strnum];
789 desc_len = desc_len > desc->bLength ?
790 desc->bLength : desc_len;
791 dbg("sending string desc %d", strnum);
792 send_packet(dev,
793 alloc_packet(&dev->ep[0], desc_len,
794 desc), 0);
795 } else
796 endpoint_stall(&dev->ep[0]);
797 break;
798 default:
799 // Invalid request
800 err("invalid get desc=%d, stalled",
801 le16_to_cpu(setup->wValue) >> 8);
802 endpoint_stall(&dev->ep[0]); // Stall endpoint 0
803 break;
804 }
805
806 return STATUS_STAGE;
807}
808
809static ep0_stage_t
810do_set_descriptor(struct usb_dev* dev, struct usb_ctrlrequest* setup)
811{
812 // TODO: implement
813 // there will be an OUT data stage (the descriptor to set)
814 return DATA_STAGE;
815}
816
817static ep0_stage_t
818do_get_configuration(struct usb_dev* dev, struct usb_ctrlrequest* setup)
819{
820 // send dev->configuration
821 dbg("sending config");
822 send_packet(dev, alloc_packet(&dev->ep[0], 1, &dev->configuration),
823 0);
824 return STATUS_STAGE;
825}
826
827static ep0_stage_t
828do_set_configuration(struct usb_dev* dev, struct usb_ctrlrequest* setup)
829{
830 // set active config to low-byte of setup->wValue
831 dev->configuration = le16_to_cpu(setup->wValue) & 0xff;
832 dbg("set config, config=%d", dev->configuration);
833 if (!dev->configuration && dev->state > DEFAULT) {
834 dev->state = ADDRESS;
835 /* inform function layer of usbdev state change */
836 dev->func_cb(CB_NEW_STATE, dev->state, dev->cb_data);
837 } else if (dev->configuration == 1) {
838 dev->state = CONFIGURED;
839 /* inform function layer of usbdev state change */
840 dev->func_cb(CB_NEW_STATE, dev->state, dev->cb_data);
841 } else {
842 // FIXME: "respond with request error" - how?
843 }
844
845 return SETUP_STAGE;
846}
847
848static ep0_stage_t
849do_get_interface(struct usb_dev* dev, struct usb_ctrlrequest* setup)
850{
851 // interface must be zero.
852 if ((le16_to_cpu(setup->wIndex) & 0xff) || dev->state == ADDRESS) {
853 // FIXME: respond with "request error". how?
854 } else if (dev->state == CONFIGURED) {
855 // send dev->alternate_setting
856 dbg("sending alt setting");
857 send_packet(dev, alloc_packet(&dev->ep[0], 1,
858 &dev->alternate_setting), 0);
859 }
860
861 return STATUS_STAGE;
862
863}
864
865static ep0_stage_t
866do_set_interface(struct usb_dev* dev, struct usb_ctrlrequest* setup)
867{
868 if (dev->state == ADDRESS) {
869 // FIXME: respond with "request error". how?
870 } else if (dev->state == CONFIGURED) {
871 dev->interface = le16_to_cpu(setup->wIndex) & 0xff;
872 dev->alternate_setting =
873 le16_to_cpu(setup->wValue) & 0xff;
874 // interface and alternate_setting must be zero
875 if (dev->interface || dev->alternate_setting) {
876 // FIXME: respond with "request error". how?
877 }
878 }
879
880 return SETUP_STAGE;
881}
882
883static ep0_stage_t
884do_synch_frame(struct usb_dev* dev, struct usb_ctrlrequest* setup)
885{
886 // TODO
887 return SETUP_STAGE;
888}
889
890typedef ep0_stage_t (*req_method_t)(struct usb_dev* dev,
891 struct usb_ctrlrequest* setup);
892
893
894/* Table of the standard device request handlers */
895static const req_method_t req_method[] = {
896 do_get_status,
897 do_clear_feature,
898 do_reserved,
899 do_set_feature,
900 do_reserved,
901 do_set_address,
902 do_get_descriptor,
903 do_set_descriptor,
904 do_get_configuration,
905 do_set_configuration,
906 do_get_interface,
907 do_set_interface,
908 do_synch_frame
909};
910
911
912// SETUP packet request dispatcher
913static void
914do_setup (struct usb_dev* dev, struct usb_ctrlrequest* setup)
915{
916 req_method_t m;
917
918 dbg("%s: req %d %s", __FUNCTION__, setup->bRequestType,
919 get_std_req_name(setup->bRequestType));
920
921 if ((setup->bRequestType & USB_TYPE_MASK) != USB_TYPE_STANDARD ||
922 (setup->bRequestType & USB_RECIP_MASK) != USB_RECIP_DEVICE) {
923 err("%s: invalid requesttype 0x%02x", __FUNCTION__,
924 setup->bRequestType);
925 return;
926 }
927
928 if ((setup->bRequestType & 0x80) == USB_DIR_OUT && setup->wLength)
929 dbg("%s: OUT phase! length=%d", __FUNCTION__, setup->wLength);
930
931 if (setup->bRequestType < sizeof(req_method)/sizeof(req_method_t))
932 m = req_method[setup->bRequestType];
933 else
934 m = do_reserved;
935
936 dev->ep0_stage = (*m)(dev, setup);
937}
938
939/*
940 * A SETUP, DATA0, or DATA1 packet has been received
941 * on the default control endpoint's fifo.
942 */
943static void
944process_ep0_receive (struct usb_dev* dev)
945{
946 endpoint_t *ep0 = &dev->ep[0];
947 usbdev_pkt_t *pkt;
948
949 spin_lock(&ep0->lock);
950
951 // complete packet and prepare a new packet
952 pkt = receive_packet_complete(ep0);
953 if (!pkt) {
954 // FIXME: should put a warn/err here.
955 spin_unlock(&ep0->lock);
956 return;
957 }
958
959 // unlink immediately from endpoint.
960 unlink_head(&ep0->outlist);
961
962 // override current stage if h/w says it's a setup packet
963 if (pkt->status & PKT_STATUS_SU)
964 dev->ep0_stage = SETUP_STAGE;
965
966 switch (dev->ep0_stage) {
967 case SETUP_STAGE:
968 vdbg("SU bit is %s in setup stage",
969 (pkt->status & PKT_STATUS_SU) ? "set" : "not set");
970
971 if (pkt->size == sizeof(struct usb_ctrlrequest)) {
972#ifdef VDEBUG
973 if (pkt->status & PKT_STATUS_ACK)
974 vdbg("received SETUP");
975 else
976 vdbg("received NAK SETUP");
977#endif
978 do_setup(dev, (struct usb_ctrlrequest*)pkt->payload);
979 } else
980 err("%s: wrong size SETUP received", __FUNCTION__);
981 break;
982 case DATA_STAGE:
983 /*
984 * this setup has an OUT data stage. Of the standard
985 * device requests, only set_descriptor has this stage,
986 * so this packet is that descriptor. TODO: drop it for
987 * now, set_descriptor not implemented.
988 *
989 * Need to place a byte in the write FIFO here, to prepare
990 * to send a zero-length DATA ack packet to the host in the
991 * STATUS stage.
992 */
993 au_writel(0, ep0->reg->write_fifo);
994 dbg("received OUT stage DATAx on EP0, size=%d", pkt->size);
995 dev->ep0_stage = SETUP_STAGE;
996 break;
997 case STATUS_STAGE:
998 // this setup had an IN data stage, and host is ACK'ing
999 // the packet we sent during that stage.
1000 if (pkt->size != 0)
1001 warn("received non-zero ACK on EP0??");
1002#ifdef VDEBUG
1003 else
1004 vdbg("received ACK on EP0");
1005#endif
1006 dev->ep0_stage = SETUP_STAGE;
1007 break;
1008 }
1009
1010 spin_unlock(&ep0->lock);
1011 // we're done processing the packet, free it
1012 kfree(pkt);
1013}
1014
1015
1016/*
1017 * A DATA0/1 packet has been received on one of the OUT endpoints (4 or 5)
1018 */
1019static void
1020process_ep_receive (struct usb_dev* dev, endpoint_t *ep)
1021{
1022 usbdev_pkt_t *pkt;
1023
1024 spin_lock(&ep->lock);
1025 pkt = receive_packet_complete(ep);
1026 spin_unlock(&ep->lock);
1027
1028 dev->func_cb(CB_PKT_COMPLETE, (unsigned long)pkt, dev->cb_data);
1029}
1030
1031
1032
1033/* This ISR handles the receive complete and suspend events */
1034static void
1035req_sus_intr (int irq, void *dev_id, struct pt_regs *regs)
1036{
1037 struct usb_dev *dev = (struct usb_dev *) dev_id;
1038 u32 status;
1039
1040 status = au_readl(USBD_INTSTAT);
1041 au_writel(status, USBD_INTSTAT); // ack'em
1042
1043 if (status & (1<<0))
1044 process_ep0_receive(dev);
1045 if (status & (1<<4))
1046 process_ep_receive(dev, &dev->ep[4]);
1047 if (status & (1<<5))
1048 process_ep_receive(dev, &dev->ep[5]);
1049}
1050
1051
1052/* This ISR handles the DMA done events on EP0 */
1053static void
1054dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs)
1055{
1056 struct usb_dev *dev = (struct usb_dev *) dev_id;
1057 usbdev_pkt_t* pkt;
1058 endpoint_t *ep0 = &dev->ep[0];
1059 u32 cs0, buff_done;
1060
1061 spin_lock(&ep0->lock);
1062 cs0 = au_readl(ep0->reg->ctrl_stat);
1063
1064 // first check packet transmit done
1065 if ((buff_done = get_dma_buffer_done(ep0->indma)) != 0) {
1066 // transmitted a DATAx packet during DATA stage
1067 // on control endpoint 0
1068 // clear DMA done bit
1069 if (buff_done & DMA_D0)
1070 clear_dma_done0(ep0->indma);
1071 if (buff_done & DMA_D1)
1072 clear_dma_done1(ep0->indma);
1073
1074 pkt = send_packet_complete(ep0);
1075 kfree(pkt);
1076 }
1077
1078 /*
1079 * Now check packet receive done. Shouldn't get these,
1080 * the receive packet complete intr should happen
1081 * before the DMA done intr occurs.
1082 */
1083 if ((buff_done = get_dma_buffer_done(ep0->outdma)) != 0) {
1084 // clear DMA done bit
1085 if (buff_done & DMA_D0)
1086 clear_dma_done0(ep0->outdma);
1087 if (buff_done & DMA_D1)
1088 clear_dma_done1(ep0->outdma);
1089
1090 //process_ep0_receive(dev);
1091 }
1092
1093 spin_unlock(&ep0->lock);
1094}
1095
1096/* This ISR handles the DMA done events on endpoints 2,3,4,5 */
1097static void
1098dma_done_ep_intr(int irq, void *dev_id, struct pt_regs *regs)
1099{
1100 struct usb_dev *dev = (struct usb_dev *) dev_id;
1101 int i;
1102
1103 for (i = 2; i < 6; i++) {
1104 u32 buff_done;
1105 usbdev_pkt_t* pkt;
1106 endpoint_t *ep = &dev->ep[i];
1107
1108 if (!ep->active) continue;
1109
1110 spin_lock(&ep->lock);
1111
1112 if (ep->direction == USB_DIR_IN) {
1113 buff_done = get_dma_buffer_done(ep->indma);
1114 if (buff_done != 0) {
1115 // transmitted a DATAx pkt on the IN ep
1116 // clear DMA done bit
1117 if (buff_done & DMA_D0)
1118 clear_dma_done0(ep->indma);
1119 if (buff_done & DMA_D1)
1120 clear_dma_done1(ep->indma);
1121
1122 pkt = send_packet_complete(ep);
1123
1124 spin_unlock(&ep->lock);
1125 dev->func_cb(CB_PKT_COMPLETE,
1126 (unsigned long)pkt,
1127 dev->cb_data);
1128 spin_lock(&ep->lock);
1129 }
1130 } else {
1131 /*
1132 * Check packet receive done (OUT ep). Shouldn't get
1133 * these, the rx packet complete intr should happen
1134 * before the DMA done intr occurs.
1135 */
1136 buff_done = get_dma_buffer_done(ep->outdma);
1137 if (buff_done != 0) {
1138 // received a DATAx pkt on the OUT ep
1139 // clear DMA done bit
1140 if (buff_done & DMA_D0)
1141 clear_dma_done0(ep->outdma);
1142 if (buff_done & DMA_D1)
1143 clear_dma_done1(ep->outdma);
1144
1145 //process_ep_receive(dev, ep);
1146 }
1147 }
1148
1149 spin_unlock(&ep->lock);
1150 }
1151}
1152
1153
1154/***************************************************************************
1155 * Here begins the external interface functions
1156 ***************************************************************************
1157 */
1158
1159/*
1160 * allocate a new packet
1161 */
1162int
1163usbdev_alloc_packet(int ep_addr, int data_size, usbdev_pkt_t** pkt)
1164{
1165 endpoint_t * ep = epaddr_to_ep(&usbdev, ep_addr);
1166 usbdev_pkt_t* lpkt = NULL;
1167
1168 if (!ep || !ep->active || ep->address < 2)
1169 return -ENODEV;
1170 if (data_size > ep->max_pkt_size)
1171 return -EINVAL;
1172
1173 lpkt = *pkt = alloc_packet(ep, data_size, NULL);
1174 if (!lpkt)
1175 return -ENOMEM;
1176 return 0;
1177}
1178
1179
1180/*
1181 * packet send
1182 */
1183int
1184usbdev_send_packet(int ep_addr, usbdev_pkt_t * pkt)
1185{
1186 unsigned long flags;
1187 int count;
1188 endpoint_t * ep;
1189
1190 if (!pkt || !(ep = epaddr_to_ep(&usbdev, pkt->ep_addr)) ||
1191 !ep->active || ep->address < 2)
1192 return -ENODEV;
1193 if (ep->direction != USB_DIR_IN)
1194 return -EINVAL;
1195
1196 spin_lock_irqsave(&ep->lock, flags);
1197 count = send_packet(&usbdev, pkt, 1);
1198 spin_unlock_irqrestore(&ep->lock, flags);
1199
1200 return count;
1201}
1202
1203/*
1204 * packet receive
1205 */
1206int
1207usbdev_receive_packet(int ep_addr, usbdev_pkt_t** pkt)
1208{
1209 unsigned long flags;
1210 usbdev_pkt_t* lpkt = NULL;
1211 endpoint_t *ep = epaddr_to_ep(&usbdev, ep_addr);
1212
1213 if (!ep || !ep->active || ep->address < 2)
1214 return -ENODEV;
1215 if (ep->direction != USB_DIR_OUT)
1216 return -EINVAL;
1217
1218 spin_lock_irqsave(&ep->lock, flags);
1219 if (ep->outlist.count > 1)
1220 lpkt = unlink_head(&ep->outlist);
1221 spin_unlock_irqrestore(&ep->lock, flags);
1222
1223 if (!lpkt) {
1224 /* no packet available */
1225 *pkt = NULL;
1226 return -ENODATA;
1227 }
1228
1229 *pkt = lpkt;
1230
1231 return lpkt->size;
1232}
1233
1234
1235/*
1236 * return total queued byte count on the endpoint.
1237 */
1238int
1239usbdev_get_byte_count(int ep_addr)
1240{
1241 unsigned long flags;
1242 pkt_list_t *list;
1243 usbdev_pkt_t *scan;
1244 int count = 0;
1245 endpoint_t * ep = epaddr_to_ep(&usbdev, ep_addr);
1246
1247 if (!ep || !ep->active || ep->address < 2)
1248 return -ENODEV;
1249
1250 if (ep->direction == USB_DIR_IN) {
1251 list = &ep->inlist;
1252
1253 spin_lock_irqsave(&ep->lock, flags);
1254 for (scan = list->head; scan; scan = scan->next)
1255 count += scan->size;
1256 spin_unlock_irqrestore(&ep->lock, flags);
1257 } else {
1258 list = &ep->outlist;
1259
1260 spin_lock_irqsave(&ep->lock, flags);
1261 if (list->count > 1) {
1262 for (scan = list->head; scan != list->tail;
1263 scan = scan->next)
1264 count += scan->size;
1265 }
1266 spin_unlock_irqrestore(&ep->lock, flags);
1267 }
1268
1269 return count;
1270}
1271
1272
1273void
1274usbdev_exit(void)
1275{
1276 endpoint_t *ep;
1277 int i;
1278
1279 au_writel(0, USBD_INTEN); // disable usb dev ints
1280 au_writel(0, USBD_ENABLE); // disable usb dev
1281
1282 free_irq(AU1000_USB_DEV_REQ_INT, &usbdev);
1283 free_irq(AU1000_USB_DEV_SUS_INT, &usbdev);
1284
1285 // free all control endpoint resources
1286 ep = &usbdev.ep[0];
1287 free_au1000_dma(ep->indma);
1288 free_au1000_dma(ep->outdma);
1289 endpoint_flush(ep);
1290
1291 // free ep resources
1292 for (i = 2; i < 6; i++) {
1293 ep = &usbdev.ep[i];
1294 if (!ep->active) continue;
1295
1296 if (ep->direction == USB_DIR_IN) {
1297 free_au1000_dma(ep->indma);
1298 } else {
1299 free_au1000_dma(ep->outdma);
1300 }
1301 endpoint_flush(ep);
1302 }
1303
1304 kfree(usbdev.full_conf_desc);
1305}
1306
1307int
1308usbdev_init(struct usb_device_descriptor* dev_desc,
1309 struct usb_config_descriptor* config_desc,
1310 struct usb_interface_descriptor* if_desc,
1311 struct usb_endpoint_descriptor* ep_desc,
1312 struct usb_string_descriptor* str_desc[],
1313 void (*cb)(usbdev_cb_type_t, unsigned long, void *),
1314 void* cb_data)
1315{
1316 endpoint_t *ep0;
1317 int i, ret=0;
1318 u8* fcd;
1319
1320 if (dev_desc->bNumConfigurations > 1 ||
1321 config_desc->bNumInterfaces > 1 ||
1322 if_desc->bNumEndpoints > 4) {
1323 err("Only one config, one i/f, and no more "
1324 "than 4 ep's allowed");
1325 ret = -EINVAL;
1326 goto out;
1327 }
1328
1329 if (!cb) {
1330 err("Function-layer callback required");
1331 ret = -EINVAL;
1332 goto out;
1333 }
1334
1335 if (dev_desc->bMaxPacketSize0 != USBDEV_EP0_MAX_PACKET_SIZE) {
1336 warn("EP0 Max Packet size must be %d",
1337 USBDEV_EP0_MAX_PACKET_SIZE);
1338 dev_desc->bMaxPacketSize0 = USBDEV_EP0_MAX_PACKET_SIZE;
1339 }
1340
1341 memset(&usbdev, 0, sizeof(struct usb_dev));
1342
1343 usbdev.state = DEFAULT;
1344 usbdev.dev_desc = dev_desc;
1345 usbdev.if_desc = if_desc;
1346 usbdev.conf_desc = config_desc;
1347 for (i=0; i<6; i++)
1348 usbdev.str_desc[i] = str_desc[i];
1349 usbdev.func_cb = cb;
1350 usbdev.cb_data = cb_data;
1351
1352 /* Initialize default control endpoint */
1353 ep0 = &usbdev.ep[0];
1354 ep0->active = 1;
1355 ep0->type = CONTROL_EP;
1356 ep0->max_pkt_size = USBDEV_EP0_MAX_PACKET_SIZE;
1357 spin_lock_init(&ep0->lock);
1358 ep0->desc = NULL; // ep0 has no descriptor
1359 ep0->address = 0;
1360 ep0->direction = 0;
1361 ep0->reg = &ep_reg[0];
1362
1363 /* Initialize the other requested endpoints */
1364 for (i = 0; i < if_desc->bNumEndpoints; i++) {
1365 struct usb_endpoint_descriptor* epd = &ep_desc[i];
1366 endpoint_t *ep;
1367
1368 if ((epd->bEndpointAddress & 0x80) == USB_DIR_IN) {
1369 ep = &usbdev.ep[2];
1370 ep->address = 2;
1371 if (ep->active) {
1372 ep = &usbdev.ep[3];
1373 ep->address = 3;
1374 if (ep->active) {
1375 err("too many IN ep's requested");
1376 ret = -ENODEV;
1377 goto out;
1378 }
1379 }
1380 } else {
1381 ep = &usbdev.ep[4];
1382 ep->address = 4;
1383 if (ep->active) {
1384 ep = &usbdev.ep[5];
1385 ep->address = 5;
1386 if (ep->active) {
1387 err("too many OUT ep's requested");
1388 ret = -ENODEV;
1389 goto out;
1390 }
1391 }
1392 }
1393
1394 ep->active = 1;
1395 epd->bEndpointAddress &= ~0x0f;
1396 epd->bEndpointAddress |= (u8)ep->address;
1397 ep->direction = epd->bEndpointAddress & 0x80;
1398 ep->type = epd->bmAttributes & 0x03;
1399 ep->max_pkt_size = le16_to_cpu(epd->wMaxPacketSize);
1400 spin_lock_init(&ep->lock);
1401 ep->desc = epd;
1402 ep->reg = &ep_reg[ep->address];
1403 }
1404
1405 /*
1406 * initialize the full config descriptor
1407 */
1408 usbdev.full_conf_desc = fcd = kmalloc(le16_to_cpu(config_desc->wTotalLength),
1409 ALLOC_FLAGS);
1410 if (!fcd) {
1411 err("failed to alloc full config descriptor");
1412 ret = -ENOMEM;
1413 goto out;
1414 }
1415
1416 memcpy(fcd, config_desc, USB_DT_CONFIG_SIZE);
1417 fcd += USB_DT_CONFIG_SIZE;
1418 memcpy(fcd, if_desc, USB_DT_INTERFACE_SIZE);
1419 fcd += USB_DT_INTERFACE_SIZE;
1420 for (i = 0; i < if_desc->bNumEndpoints; i++) {
1421 memcpy(fcd, &ep_desc[i], USB_DT_ENDPOINT_SIZE);
1422 fcd += USB_DT_ENDPOINT_SIZE;
1423 }
1424
1425 /* Now we're ready to enable the controller */
1426 au_writel(0x0002, USBD_ENABLE);
1427 udelay(100);
1428 au_writel(0x0003, USBD_ENABLE);
1429 udelay(100);
1430
1431 /* build and send config table based on ep descriptors */
1432 for (i = 0; i < 6; i++) {
1433 endpoint_t *ep;
1434 if (i == 1)
1435 continue; // skip dummy ep
1436 ep = &usbdev.ep[i];
1437 if (ep->active) {
1438 au_writel((ep->address << 4) | 0x04, USBD_CONFIG);
1439 au_writel(((ep->max_pkt_size & 0x380) >> 7) |
1440 (ep->direction >> 4) | (ep->type << 4),
1441 USBD_CONFIG);
1442 au_writel((ep->max_pkt_size & 0x7f) << 1, USBD_CONFIG);
1443 au_writel(0x00, USBD_CONFIG);
1444 au_writel(ep->address, USBD_CONFIG);
1445 } else {
1446 u8 dir = (i==2 || i==3) ? DIR_IN : DIR_OUT;
1447 au_writel((i << 4) | 0x04, USBD_CONFIG);
1448 au_writel(((16 & 0x380) >> 7) | dir |
1449 (BULK_EP << 4), USBD_CONFIG);
1450 au_writel((16 & 0x7f) << 1, USBD_CONFIG);
1451 au_writel(0x00, USBD_CONFIG);
1452 au_writel(i, USBD_CONFIG);
1453 }
1454 }
1455
1456 /*
1457 * Enable Receive FIFO Complete interrupts only. Transmit
1458 * complete is being handled by the DMA done interrupts.
1459 */
1460 au_writel(0x31, USBD_INTEN);
1461
1462 /*
1463 * Controller is now enabled, request DMA and IRQ
1464 * resources.
1465 */
1466
1467 /* request the USB device transfer complete interrupt */
1468 if (request_irq(AU1000_USB_DEV_REQ_INT, req_sus_intr, IRQF_DISABLED,
1469 "USBdev req", &usbdev)) {
1470 err("Can't get device request intr");
1471 ret = -ENXIO;
1472 goto out;
1473 }
1474 /* request the USB device suspend interrupt */
1475 if (request_irq(AU1000_USB_DEV_SUS_INT, req_sus_intr, IRQF_DISABLED,
1476 "USBdev sus", &usbdev)) {
1477 err("Can't get device suspend intr");
1478 ret = -ENXIO;
1479 goto out;
1480 }
1481
1482 /* Request EP0 DMA and IRQ */
1483 if ((ep0->indma = request_au1000_dma(ep_dma_id[0].id,
1484 ep_dma_id[0].str,
1485 dma_done_ep0_intr,
1486 IRQF_DISABLED,
1487 &usbdev)) < 0) {
1488 err("Can't get %s DMA", ep_dma_id[0].str);
1489 ret = -ENXIO;
1490 goto out;
1491 }
1492 if ((ep0->outdma = request_au1000_dma(ep_dma_id[1].id,
1493 ep_dma_id[1].str,
1494 NULL, 0, NULL)) < 0) {
1495 err("Can't get %s DMA", ep_dma_id[1].str);
1496 ret = -ENXIO;
1497 goto out;
1498 }
1499
1500 // Flush the ep0 buffers and FIFOs
1501 endpoint_flush(ep0);
1502 // start packet reception on ep0
1503 kickstart_receive_packet(ep0);
1504
1505 /* Request DMA and IRQ for the other endpoints */
1506 for (i = 2; i < 6; i++) {
1507 endpoint_t *ep = &usbdev.ep[i];
1508 if (!ep->active)
1509 continue;
1510
1511 // Flush the endpoint buffers and FIFOs
1512 endpoint_flush(ep);
1513
1514 if (ep->direction == USB_DIR_IN) {
1515 ep->indma =
1516 request_au1000_dma(ep_dma_id[ep->address].id,
1517 ep_dma_id[ep->address].str,
1518 dma_done_ep_intr,
1519 IRQF_DISABLED,
1520 &usbdev);
1521 if (ep->indma < 0) {
1522 err("Can't get %s DMA",
1523 ep_dma_id[ep->address].str);
1524 ret = -ENXIO;
1525 goto out;
1526 }
1527 } else {
1528 ep->outdma =
1529 request_au1000_dma(ep_dma_id[ep->address].id,
1530 ep_dma_id[ep->address].str,
1531 NULL, 0, NULL);
1532 if (ep->outdma < 0) {
1533 err("Can't get %s DMA",
1534 ep_dma_id[ep->address].str);
1535 ret = -ENXIO;
1536 goto out;
1537 }
1538
1539 // start packet reception on OUT endpoint
1540 kickstart_receive_packet(ep);
1541 }
1542 }
1543
1544 out:
1545 if (ret)
1546 usbdev_exit();
1547 return ret;
1548}
1549
1550EXPORT_SYMBOL(usbdev_init);
1551EXPORT_SYMBOL(usbdev_exit);
1552EXPORT_SYMBOL(usbdev_alloc_packet);
1553EXPORT_SYMBOL(usbdev_receive_packet);
1554EXPORT_SYMBOL(usbdev_send_packet);
1555EXPORT_SYMBOL(usbdev_get_byte_count);
diff --git a/arch/mips/au1000/db1x00/board_setup.c b/arch/mips/au1000/db1x00/board_setup.c
index 7a79293f8527..8b08edb977be 100644
--- a/arch/mips/au1000/db1x00/board_setup.c
+++ b/arch/mips/au1000/db1x00/board_setup.c
@@ -58,11 +58,6 @@ void __init board_setup(void)
58 58
59 pin_func = 0; 59 pin_func = 0;
60 /* not valid for 1550 */ 60 /* not valid for 1550 */
61#ifdef CONFIG_AU1X00_USB_DEVICE
62 // 2nd USB port is USB device
63 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000);
64 au_writel(pin_func, SYS_PINFUNC);
65#endif
66 61
67#if defined(CONFIG_IRDA) && (defined(CONFIG_SOC_AU1000) || defined(CONFIG_SOC_AU1100)) 62#if defined(CONFIG_IRDA) && (defined(CONFIG_SOC_AU1000) || defined(CONFIG_SOC_AU1100))
68 /* set IRFIRSEL instead of GPIO15 */ 63 /* set IRFIRSEL instead of GPIO15 */
diff --git a/arch/mips/au1000/mtx-1/board_setup.c b/arch/mips/au1000/mtx-1/board_setup.c
index e917e54fc683..13f9bf5f91a6 100644
--- a/arch/mips/au1000/mtx-1/board_setup.c
+++ b/arch/mips/au1000/mtx-1/board_setup.c
@@ -51,15 +51,11 @@ void board_reset (void)
51 51
52void __init board_setup(void) 52void __init board_setup(void)
53{ 53{
54#if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 54#ifdef CONFIG_USB_OHCI
55#ifdef CONFIG_AU1X00_USB_DEVICE
56 // 2nd USB port is USB device
57 au_writel(au_readl(SYS_PINFUNC) & (u32)(~0x8000), SYS_PINFUNC);
58#endif
59 // enable USB power switch 55 // enable USB power switch
60 au_writel( au_readl(GPIO2_DIR) | 0x10, GPIO2_DIR ); 56 au_writel( au_readl(GPIO2_DIR) | 0x10, GPIO2_DIR );
61 au_writel( 0x100000, GPIO2_OUTPUT ); 57 au_writel( 0x100000, GPIO2_OUTPUT );
62#endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 58#endif // defined (CONFIG_USB_OHCI)
63 59
64#ifdef CONFIG_PCI 60#ifdef CONFIG_PCI
65#if defined(__MIPSEB__) 61#if defined(__MIPSEB__)
diff --git a/arch/mips/au1000/pb1000/board_setup.c b/arch/mips/au1000/pb1000/board_setup.c
index 1cf18e16ab54..824cfafaff92 100644
--- a/arch/mips/au1000/pb1000/board_setup.c
+++ b/arch/mips/au1000/pb1000/board_setup.c
@@ -54,7 +54,7 @@ void __init board_setup(void)
54 au_writel(0, SYS_PINSTATERD); 54 au_writel(0, SYS_PINSTATERD);
55 udelay(100); 55 udelay(100);
56 56
57#if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 57#ifdef CONFIG_USB_OHCI
58 /* zero and disable FREQ2 */ 58 /* zero and disable FREQ2 */
59 sys_freqctrl = au_readl(SYS_FREQCTRL0); 59 sys_freqctrl = au_readl(SYS_FREQCTRL0);
60 sys_freqctrl &= ~0xFFF00000; 60 sys_freqctrl &= ~0xFFF00000;
@@ -105,22 +105,18 @@ void __init board_setup(void)
105#ifdef CONFIG_USB_OHCI 105#ifdef CONFIG_USB_OHCI
106 sys_clksrc |= ((4<<12) | (0<<11) | (0<<10)); 106 sys_clksrc |= ((4<<12) | (0<<11) | (0<<10));
107#endif 107#endif
108#ifdef CONFIG_AU1X00_USB_DEVICE
109 sys_clksrc |= ((4<<7) | (0<<6) | (0<<5));
110#endif
111 au_writel(sys_clksrc, SYS_CLKSRC); 108 au_writel(sys_clksrc, SYS_CLKSRC);
112 109
113 // configure pins GPIO[14:9] as GPIO 110 // configure pins GPIO[14:9] as GPIO
114 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8080); 111 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8080);
115 112
116#ifndef CONFIG_AU1X00_USB_DEVICE
117 // 2nd USB port is USB host 113 // 2nd USB port is USB host
118 pin_func |= 0x8000; 114 pin_func |= 0x8000;
119#endif 115
120 au_writel(pin_func, SYS_PINFUNC); 116 au_writel(pin_func, SYS_PINFUNC);
121 au_writel(0x2800, SYS_TRIOUTCLR); 117 au_writel(0x2800, SYS_TRIOUTCLR);
122 au_writel(0x0030, SYS_OUTPUTCLR); 118 au_writel(0x0030, SYS_OUTPUTCLR);
123#endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 119#endif // defined (CONFIG_USB_OHCI)
124 120
125 // make gpio 15 an input (for interrupt line) 121 // make gpio 15 an input (for interrupt line)
126 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x100); 122 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x100);
diff --git a/arch/mips/au1000/pb1100/board_setup.c b/arch/mips/au1000/pb1100/board_setup.c
index db27b9331ff3..2d1533f116c0 100644
--- a/arch/mips/au1000/pb1100/board_setup.c
+++ b/arch/mips/au1000/pb1100/board_setup.c
@@ -55,7 +55,7 @@ void __init board_setup(void)
55 au_writel(0, SYS_PININPUTEN); 55 au_writel(0, SYS_PININPUTEN);
56 udelay(100); 56 udelay(100);
57 57
58#if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 58#ifdef CONFIG_USB_OHCI
59 // configure pins GPIO[14:9] as GPIO 59 // configure pins GPIO[14:9] as GPIO
60 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x80); 60 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x80);
61 61
@@ -92,12 +92,10 @@ void __init board_setup(void)
92 92
93 // get USB Functionality pin state (device vs host drive pins) 93 // get USB Functionality pin state (device vs host drive pins)
94 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000); 94 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000);
95#ifndef CONFIG_AU1X00_USB_DEVICE
96 // 2nd USB port is USB host 95 // 2nd USB port is USB host
97 pin_func |= 0x8000; 96 pin_func |= 0x8000;
98#endif
99 au_writel(pin_func, SYS_PINFUNC); 97 au_writel(pin_func, SYS_PINFUNC);
100#endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 98#endif // defined (CONFIG_USB_OHCI)
101 99
102 /* Enable sys bus clock divider when IDLE state or no bus activity. */ 100 /* Enable sys bus clock divider when IDLE state or no bus activity. */
103 au_writel(au_readl(SYS_POWERCTRL) | (0x3 << 5), SYS_POWERCTRL); 101 au_writel(au_readl(SYS_POWERCTRL) | (0x3 << 5), SYS_POWERCTRL);
diff --git a/arch/mips/au1000/pb1200/irqmap.c b/arch/mips/au1000/pb1200/irqmap.c
index f66779f0d4cd..91983ba407c4 100644
--- a/arch/mips/au1000/pb1200/irqmap.c
+++ b/arch/mips/au1000/pb1200/irqmap.c
@@ -65,7 +65,7 @@ int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
65 */ 65 */
66static volatile int pb1200_cascade_en=0; 66static volatile int pb1200_cascade_en=0;
67 67
68irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs) 68irqreturn_t pb1200_cascade_handler( int irq, void *dev_id)
69{ 69{
70 unsigned short bisr = bcsr->int_status; 70 unsigned short bisr = bcsr->int_status;
71 int extirq_nr = 0; 71 int extirq_nr = 0;
@@ -76,8 +76,9 @@ irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs)
76 { 76 {
77 extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr); 77 extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr);
78 /* Ack and dispatch IRQ */ 78 /* Ack and dispatch IRQ */
79 do_IRQ(extirq_nr,regs); 79 do_IRQ(extirq_nr);
80 } 80 }
81
81 return IRQ_RETVAL(1); 82 return IRQ_RETVAL(1);
82} 83}
83 84
diff --git a/arch/mips/au1000/pb1500/board_setup.c b/arch/mips/au1000/pb1500/board_setup.c
index 1a9a293de6ab..0ffdb4fd575b 100644
--- a/arch/mips/au1000/pb1500/board_setup.c
+++ b/arch/mips/au1000/pb1500/board_setup.c
@@ -56,7 +56,7 @@ void __init board_setup(void)
56 au_writel(0, SYS_PINSTATERD); 56 au_writel(0, SYS_PINSTATERD);
57 udelay(100); 57 udelay(100);
58 58
59#if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 59#ifdef CONFIG_USB_OHCI
60 60
61 /* GPIO201 is input for PCMCIA card detect */ 61 /* GPIO201 is input for PCMCIA card detect */
62 /* GPIO203 is input for PCMCIA interrupt request */ 62 /* GPIO203 is input for PCMCIA interrupt request */
@@ -88,19 +88,14 @@ void __init board_setup(void)
88#ifdef CONFIG_USB_OHCI 88#ifdef CONFIG_USB_OHCI
89 sys_clksrc |= ((4<<12) | (0<<11) | (0<<10)); 89 sys_clksrc |= ((4<<12) | (0<<11) | (0<<10));
90#endif 90#endif
91#ifdef CONFIG_AU1X00_USB_DEVICE
92 sys_clksrc |= ((4<<7) | (0<<6) | (0<<5));
93#endif
94 au_writel(sys_clksrc, SYS_CLKSRC); 91 au_writel(sys_clksrc, SYS_CLKSRC);
95 92
96 93
97 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000); 94 pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000);
98#ifndef CONFIG_AU1X00_USB_DEVICE
99 // 2nd USB port is USB host 95 // 2nd USB port is USB host
100 pin_func |= 0x8000; 96 pin_func |= 0x8000;
101#endif
102 au_writel(pin_func, SYS_PINFUNC); 97 au_writel(pin_func, SYS_PINFUNC);
103#endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE) 98#endif // defined (CONFIG_USB_OHCI)
104 99
105 100
106 101
diff --git a/arch/mips/basler/excite/excite_dbg_io.c b/arch/mips/basler/excite/excite_dbg_io.c
index c04505afa47f..d289e3a868cf 100644
--- a/arch/mips/basler/excite/excite_dbg_io.c
+++ b/arch/mips/basler/excite/excite_dbg_io.c
@@ -112,7 +112,7 @@ int putDebugChar(int data)
112} 112}
113 113
114/* KGDB interrupt handler */ 114/* KGDB interrupt handler */
115asmlinkage void excite_kgdb_inthdl(struct pt_regs *regs) 115asmlinkage void excite_kgdb_inthdl(void)
116{ 116{
117 if (unlikely( 117 if (unlikely(
118 ((titan_readl(UAIIR) & 0x7) == 4) 118 ((titan_readl(UAIIR) & 0x7) == 4)
diff --git a/arch/mips/basler/excite/excite_iodev.c b/arch/mips/basler/excite/excite_iodev.c
index 10bbb8cfb964..6af0b21ebc32 100644
--- a/arch/mips/basler/excite/excite_iodev.c
+++ b/arch/mips/basler/excite/excite_iodev.c
@@ -38,7 +38,7 @@ static int iodev_open(struct inode *, struct file *);
38static int iodev_release(struct inode *, struct file *); 38static int iodev_release(struct inode *, struct file *);
39static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *); 39static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *);
40static unsigned int iodev_poll(struct file *, struct poll_table_struct *); 40static unsigned int iodev_poll(struct file *, struct poll_table_struct *);
41static irqreturn_t iodev_irqhdl(int, void *, struct pt_regs *); 41static irqreturn_t iodev_irqhdl(int, void *);
42 42
43 43
44 44
@@ -108,16 +108,12 @@ static int __exit iodev_remove(struct device *dev)
108 return misc_deregister(&miscdev); 108 return misc_deregister(&miscdev);
109} 109}
110 110
111
112
113static int iodev_open(struct inode *i, struct file *f) 111static int iodev_open(struct inode *i, struct file *f)
114{ 112{
115 return request_irq(iodev_irq, iodev_irqhdl, IRQF_DISABLED, 113 return request_irq(iodev_irq, iodev_irqhdl, IRQF_DISABLED,
116 iodev_name, &miscdev); 114 iodev_name, &miscdev);
117} 115}
118 116
119
120
121static int iodev_release(struct inode *i, struct file *f) 117static int iodev_release(struct inode *i, struct file *f)
122{ 118{
123 free_irq(iodev_irq, &miscdev); 119 free_irq(iodev_irq, &miscdev);
@@ -148,17 +144,13 @@ static unsigned int iodev_poll(struct file *f, struct poll_table_struct *p)
148 return POLLOUT | POLLWRNORM; 144 return POLLOUT | POLLWRNORM;
149} 145}
150 146
151 147static irqreturn_t iodev_irqhdl(int irq, void *ctxt)
152
153
154static irqreturn_t iodev_irqhdl(int irq, void *ctxt, struct pt_regs *regs)
155{ 148{
156 wake_up(&wq); 149 wake_up(&wq);
150
157 return IRQ_HANDLED; 151 return IRQ_HANDLED;
158} 152}
159 153
160
161
162static int __init iodev_init_module(void) 154static int __init iodev_init_module(void)
163{ 155{
164 return driver_register(&iodev_driver); 156 return driver_register(&iodev_driver);
diff --git a/arch/mips/basler/excite/excite_irq.c b/arch/mips/basler/excite/excite_irq.c
index 511ad8730f54..2e2061a286c5 100644
--- a/arch/mips/basler/excite/excite_irq.c
+++ b/arch/mips/basler/excite/excite_irq.c
@@ -56,7 +56,7 @@ void __init arch_init_irq(void)
56#endif 56#endif
57} 57}
58 58
59asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 59asmlinkage void plat_irq_dispatch(void)
60{ 60{
61 const u32 61 const u32
62 interrupts = read_c0_cause() >> 8, 62 interrupts = read_c0_cause() >> 8,
@@ -67,7 +67,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
67 67
68 /* process timer interrupt */ 68 /* process timer interrupt */
69 if (pending & (1 << TIMER_IRQ)) { 69 if (pending & (1 << TIMER_IRQ)) {
70 do_IRQ(TIMER_IRQ, regs); 70 do_IRQ(TIMER_IRQ);
71 return; 71 return;
72 } 72 }
73 73
@@ -80,7 +80,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
80#else 80#else
81 if (pending & (1 << USB_IRQ)) { 81 if (pending & (1 << USB_IRQ)) {
82#endif 82#endif
83 do_IRQ(USB_IRQ, regs); 83 do_IRQ(USB_IRQ);
84 return; 84 return;
85 } 85 }
86 86
@@ -91,9 +91,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
91 if ((pending & (1 << TITAN_IRQ)) && msgint) { 91 if ((pending & (1 << TITAN_IRQ)) && msgint) {
92 ocd_writel(msgint, INTP0Clear0 + (TITAN_MSGINT / 0x20 * 0x10)); 92 ocd_writel(msgint, INTP0Clear0 + (TITAN_MSGINT / 0x20 * 0x10));
93#if defined(CONFIG_KGDB) 93#if defined(CONFIG_KGDB)
94 excite_kgdb_inthdl(regs); 94 excite_kgdb_inthdl();
95#endif 95#endif
96 do_IRQ(TITAN_IRQ, regs); 96 do_IRQ(TITAN_IRQ);
97 return; 97 return;
98 } 98 }
99 99
@@ -102,7 +102,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
102 msgintmask = ocd_readl(INTP0Mask0 + (FPGA0_MSGINT / 0x20 * 0x10)); 102 msgintmask = ocd_readl(INTP0Mask0 + (FPGA0_MSGINT / 0x20 * 0x10));
103 msgint = msgintflags & msgintmask & (0x1 << (FPGA0_MSGINT % 0x20)); 103 msgint = msgintflags & msgintmask & (0x1 << (FPGA0_MSGINT % 0x20));
104 if ((pending & (1 << FPGA0_IRQ)) && msgint) { 104 if ((pending & (1 << FPGA0_IRQ)) && msgint) {
105 do_IRQ(FPGA0_IRQ, regs); 105 do_IRQ(FPGA0_IRQ);
106 return; 106 return;
107 } 107 }
108 108
@@ -111,7 +111,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
111 msgintmask = ocd_readl(INTP0Mask0 + (FPGA1_MSGINT / 0x20 * 0x10)); 111 msgintmask = ocd_readl(INTP0Mask0 + (FPGA1_MSGINT / 0x20 * 0x10));
112 msgint = msgintflags & msgintmask & (0x1 << (FPGA1_MSGINT % 0x20)); 112 msgint = msgintflags & msgintmask & (0x1 << (FPGA1_MSGINT % 0x20));
113 if ((pending & (1 << FPGA1_IRQ)) && msgint) { 113 if ((pending & (1 << FPGA1_IRQ)) && msgint) {
114 do_IRQ(FPGA1_IRQ, regs); 114 do_IRQ(FPGA1_IRQ);
115 return; 115 return;
116 } 116 }
117 117
@@ -120,10 +120,10 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
120 msgintmask = ocd_readl(INTP0Mask0 + (PHY_MSGINT / 0x20 * 0x10)); 120 msgintmask = ocd_readl(INTP0Mask0 + (PHY_MSGINT / 0x20 * 0x10));
121 msgint = msgintflags & msgintmask & (0x1 << (PHY_MSGINT % 0x20)); 121 msgint = msgintflags & msgintmask & (0x1 << (PHY_MSGINT % 0x20));
122 if ((pending & (1 << PHY_IRQ)) && msgint) { 122 if ((pending & (1 << PHY_IRQ)) && msgint) {
123 do_IRQ(PHY_IRQ, regs); 123 do_IRQ(PHY_IRQ);
124 return; 124 return;
125 } 125 }
126 126
127 /* Process spurious interrupts */ 127 /* Process spurious interrupts */
128 spurious_interrupt(regs); 128 spurious_interrupt();
129} 129}
diff --git a/arch/mips/cobalt/irq.c b/arch/mips/cobalt/irq.c
index 0b75f4fb7195..82e569d5b02c 100644
--- a/arch/mips/cobalt/irq.c
+++ b/arch/mips/cobalt/irq.c
@@ -16,7 +16,6 @@
16#include <asm/i8259.h> 16#include <asm/i8259.h>
17#include <asm/irq_cpu.h> 17#include <asm/irq_cpu.h>
18#include <asm/gt64120.h> 18#include <asm/gt64120.h>
19#include <asm/ptrace.h>
20 19
21#include <asm/mach-cobalt/cobalt.h> 20#include <asm/mach-cobalt/cobalt.h>
22 21
@@ -42,7 +41,7 @@
42 * 15 - IDE1 41 * 15 - IDE1
43 */ 42 */
44 43
45static inline void galileo_irq(struct pt_regs *regs) 44static inline void galileo_irq(void)
46{ 45{
47 unsigned int mask, pending, devfn; 46 unsigned int mask, pending, devfn;
48 47
@@ -52,7 +51,7 @@ static inline void galileo_irq(struct pt_regs *regs)
52 if (pending & GALILEO_INTR_T0EXP) { 51 if (pending & GALILEO_INTR_T0EXP) {
53 52
54 GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS); 53 GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS);
55 do_IRQ(COBALT_GALILEO_IRQ, regs); 54 do_IRQ(COBALT_GALILEO_IRQ);
56 55
57 } else if (pending & GALILEO_INTR_RETRY_CTR) { 56 } else if (pending & GALILEO_INTR_RETRY_CTR) {
58 57
@@ -68,44 +67,31 @@ static inline void galileo_irq(struct pt_regs *regs)
68 } 67 }
69} 68}
70 69
71static inline void via_pic_irq(struct pt_regs *regs) 70static inline void via_pic_irq(void)
72{ 71{
73 int irq; 72 int irq;
74 73
75 irq = i8259_irq(); 74 irq = i8259_irq();
76 if (irq >= 0) 75 if (irq >= 0)
77 do_IRQ(irq, regs); 76 do_IRQ(irq);
78} 77}
79 78
80asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 79asmlinkage void plat_irq_dispatch(void)
81{ 80{
82 unsigned pending; 81 unsigned pending = read_c0_status() & read_c0_cause();
83 82
84 pending = read_c0_status() & read_c0_cause(); 83 if (pending & CAUSEF_IP2) /* COBALT_GALILEO_IRQ (18) */
85 84 galileo_irq();
86 if (pending & CAUSEF_IP2) /* COBALT_GALILEO_IRQ (18) */ 85 else if (pending & CAUSEF_IP6) /* COBALT_VIA_IRQ (22) */
87 86 via_pic_irq();
88 galileo_irq(regs); 87 else if (pending & CAUSEF_IP3) /* COBALT_ETH0_IRQ (19) */
89 88 do_IRQ(COBALT_CPU_IRQ + 3);
90 else if (pending & CAUSEF_IP6) /* COBALT_VIA_IRQ (22) */ 89 else if (pending & CAUSEF_IP4) /* COBALT_ETH1_IRQ (20) */
91 90 do_IRQ(COBALT_CPU_IRQ + 4);
92 via_pic_irq(regs); 91 else if (pending & CAUSEF_IP5) /* COBALT_SERIAL_IRQ (21) */
93 92 do_IRQ(COBALT_CPU_IRQ + 5);
94 else if (pending & CAUSEF_IP3) /* COBALT_ETH0_IRQ (19) */ 93 else if (pending & CAUSEF_IP7) /* IRQ 23 */
95 94 do_IRQ(COBALT_CPU_IRQ + 7);
96 do_IRQ(COBALT_CPU_IRQ + 3, regs);
97
98 else if (pending & CAUSEF_IP4) /* COBALT_ETH1_IRQ (20) */
99
100 do_IRQ(COBALT_CPU_IRQ + 4, regs);
101
102 else if (pending & CAUSEF_IP5) /* COBALT_SERIAL_IRQ (21) */
103
104 do_IRQ(COBALT_CPU_IRQ + 5, regs);
105
106 else if (pending & CAUSEF_IP7) /* IRQ 23 */
107
108 do_IRQ(COBALT_CPU_IRQ + 7, regs);
109} 95}
110 96
111static struct irqaction irq_via = { 97static struct irqaction irq_via = {
diff --git a/arch/mips/cobalt/setup.c b/arch/mips/cobalt/setup.c
index 0b347cffc768..bf9dc72b9720 100644
--- a/arch/mips/cobalt/setup.c
+++ b/arch/mips/cobalt/setup.c
@@ -50,8 +50,8 @@ const char *get_system_type(void)
50 50
51void __init plat_timer_setup(struct irqaction *irq) 51void __init plat_timer_setup(struct irqaction *irq)
52{ 52{
53 /* Load timer value for 1KHz (TCLK is 50MHz) */ 53 /* Load timer value for HZ (TCLK is 50MHz) */
54 GALILEO_OUTL(50*1000*1000 / 1000, GT_TC0_OFS); 54 GALILEO_OUTL(50*1000*1000 / HZ, GT_TC0_OFS);
55 55
56 /* Enable timer */ 56 /* Enable timer */
57 GALILEO_OUTL(GALILEO_ENTC0 | GALILEO_SELTC0, GT_TC_CONTROL_OFS); 57 GALILEO_OUTL(GALILEO_ENTC0 | GALILEO_SELTC0, GT_TC_CONTROL_OFS);
diff --git a/arch/mips/configs/jazz_defconfig b/arch/mips/configs/jazz_defconfig
new file mode 100644
index 000000000000..382083ebea0a
--- /dev/null
+++ b/arch/mips/configs/jazz_defconfig
@@ -0,0 +1,1404 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-rc1
4# Sun Oct 8 19:03:07 2006
5#
6CONFIG_MIPS=y
7
8#
9# Machine selection
10#
11# CONFIG_MIPS_MTX1 is not set
12# CONFIG_MIPS_BOSPORUS is not set
13# CONFIG_MIPS_PB1000 is not set
14# CONFIG_MIPS_PB1100 is not set
15# CONFIG_MIPS_PB1500 is not set
16# CONFIG_MIPS_PB1550 is not set
17# CONFIG_MIPS_PB1200 is not set
18# CONFIG_MIPS_DB1000 is not set
19# CONFIG_MIPS_DB1100 is not set
20# CONFIG_MIPS_DB1500 is not set
21# CONFIG_MIPS_DB1550 is not set
22# CONFIG_MIPS_DB1200 is not set
23# CONFIG_MIPS_MIRAGE is not set
24# CONFIG_BASLER_EXCITE is not set
25# CONFIG_MIPS_COBALT is not set
26# CONFIG_MACH_DECSTATION is not set
27# CONFIG_MIPS_EV64120 is not set
28CONFIG_MACH_JAZZ=y
29# CONFIG_LASAT is not set
30# CONFIG_MIPS_ATLAS is not set
31# CONFIG_MIPS_MALTA is not set
32# CONFIG_MIPS_SEAD is not set
33# CONFIG_WR_PPMC is not set
34# CONFIG_MIPS_SIM is not set
35# CONFIG_MOMENCO_JAGUAR_ATX is not set
36# CONFIG_MOMENCO_OCELOT is not set
37# CONFIG_MOMENCO_OCELOT_3 is not set
38# CONFIG_MOMENCO_OCELOT_C is not set
39# CONFIG_MOMENCO_OCELOT_G is not set
40# CONFIG_MIPS_XXS1500 is not set
41# CONFIG_PNX8550_V2PCI is not set
42# CONFIG_PNX8550_JBS is not set
43# CONFIG_DDB5477 is not set
44# CONFIG_MACH_VR41XX is not set
45# CONFIG_PMC_YOSEMITE is not set
46# CONFIG_QEMU is not set
47# CONFIG_MARKEINS is not set
48# CONFIG_SGI_IP22 is not set
49# CONFIG_SGI_IP27 is not set
50# CONFIG_SGI_IP32 is not set
51# CONFIG_SIBYTE_BIGSUR is not set
52# CONFIG_SIBYTE_SWARM is not set
53# CONFIG_SIBYTE_SENTOSA is not set
54# CONFIG_SIBYTE_RHONE is not set
55# CONFIG_SIBYTE_CARMEL is not set
56# CONFIG_SIBYTE_PTSWARM is not set
57# CONFIG_SIBYTE_LITTLESUR is not set
58# CONFIG_SIBYTE_CRHINE is not set
59# CONFIG_SIBYTE_CRHONE is not set
60# CONFIG_SNI_RM200_PCI is not set
61# CONFIG_TOSHIBA_JMR3927 is not set
62# CONFIG_TOSHIBA_RBTX4927 is not set
63# CONFIG_TOSHIBA_RBTX4938 is not set
64# CONFIG_ACER_PICA_61 is not set
65# CONFIG_MIPS_MAGNUM_4000 is not set
66CONFIG_OLIVETTI_M700=y
67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
70CONFIG_GENERIC_CALIBRATE_DELAY=y
71CONFIG_GENERIC_TIME=y
72CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
73CONFIG_ARC=y
74CONFIG_ARCH_MAY_HAVE_PC_FDC=y
75CONFIG_DMA_NONCOHERENT=y
76CONFIG_DMA_NEED_PCI_MAP_STATE=y
77CONFIG_GENERIC_ISA_DMA=y
78CONFIG_I8259=y
79# CONFIG_CPU_BIG_ENDIAN is not set
80CONFIG_CPU_LITTLE_ENDIAN=y
81CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
82CONFIG_ARC32=y
83CONFIG_MIPS_L1_CACHE_SHIFT=5
84CONFIG_ARC_MEMORY=y
85CONFIG_ARC_PROMLIB=y
86
87#
88# CPU selection
89#
90# CONFIG_CPU_MIPS32_R1 is not set
91# CONFIG_CPU_MIPS32_R2 is not set
92# CONFIG_CPU_MIPS64_R1 is not set
93# CONFIG_CPU_MIPS64_R2 is not set
94# CONFIG_CPU_R3000 is not set
95# CONFIG_CPU_TX39XX is not set
96# CONFIG_CPU_VR41XX is not set
97# CONFIG_CPU_R4300 is not set
98CONFIG_CPU_R4X00=y
99# CONFIG_CPU_TX49XX is not set
100# CONFIG_CPU_R5000 is not set
101# CONFIG_CPU_R5432 is not set
102# CONFIG_CPU_R6000 is not set
103# CONFIG_CPU_NEVADA is not set
104# CONFIG_CPU_R8000 is not set
105# CONFIG_CPU_R10000 is not set
106# CONFIG_CPU_RM7000 is not set
107# CONFIG_CPU_RM9000 is not set
108# CONFIG_CPU_SB1 is not set
109CONFIG_SYS_HAS_CPU_R4X00=y
110CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
111CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
112CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
113CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
114
115#
116# Kernel type
117#
118CONFIG_32BIT=y
119# CONFIG_64BIT is not set
120CONFIG_PAGE_SIZE_4KB=y
121# CONFIG_PAGE_SIZE_8KB is not set
122# CONFIG_PAGE_SIZE_16KB is not set
123# CONFIG_PAGE_SIZE_64KB is not set
124CONFIG_MIPS_MT_DISABLED=y
125# CONFIG_MIPS_MT_SMP is not set
126# CONFIG_MIPS_MT_SMTC is not set
127# CONFIG_MIPS_VPE_LOADER is not set
128# CONFIG_64BIT_PHYS_ADDR is not set
129CONFIG_CPU_HAS_LLSC=y
130CONFIG_CPU_HAS_SYNC=y
131CONFIG_GENERIC_HARDIRQS=y
132CONFIG_GENERIC_IRQ_PROBE=y
133CONFIG_ARCH_FLATMEM_ENABLE=y
134CONFIG_SELECT_MEMORY_MODEL=y
135CONFIG_FLATMEM_MANUAL=y
136# CONFIG_DISCONTIGMEM_MANUAL is not set
137# CONFIG_SPARSEMEM_MANUAL is not set
138CONFIG_FLATMEM=y
139CONFIG_FLAT_NODE_MEM_MAP=y
140# CONFIG_SPARSEMEM_STATIC is not set
141CONFIG_SPLIT_PTLOCK_CPUS=4
142# CONFIG_RESOURCES_64BIT is not set
143# CONFIG_HZ_48 is not set
144CONFIG_HZ_100=y
145# CONFIG_HZ_128 is not set
146# CONFIG_HZ_250 is not set
147# CONFIG_HZ_256 is not set
148# CONFIG_HZ_1000 is not set
149# CONFIG_HZ_1024 is not set
150CONFIG_SYS_SUPPORTS_100HZ=y
151CONFIG_HZ=100
152# CONFIG_PREEMPT_NONE is not set
153CONFIG_PREEMPT_VOLUNTARY=y
154# CONFIG_PREEMPT is not set
155CONFIG_LOCKDEP_SUPPORT=y
156CONFIG_STACKTRACE_SUPPORT=y
157CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
158
159#
160# Code maturity level options
161#
162CONFIG_EXPERIMENTAL=y
163CONFIG_BROKEN_ON_SMP=y
164CONFIG_INIT_ENV_ARG_LIMIT=32
165
166#
167# General setup
168#
169CONFIG_LOCALVERSION=""
170CONFIG_LOCALVERSION_AUTO=y
171CONFIG_SWAP=y
172CONFIG_SYSVIPC=y
173# CONFIG_IPC_NS is not set
174CONFIG_POSIX_MQUEUE=y
175CONFIG_BSD_PROCESS_ACCT=y
176# CONFIG_BSD_PROCESS_ACCT_V3 is not set
177# CONFIG_TASKSTATS is not set
178# CONFIG_UTS_NS is not set
179# CONFIG_AUDIT is not set
180CONFIG_IKCONFIG=y
181CONFIG_IKCONFIG_PROC=y
182CONFIG_RELAY=y
183CONFIG_INITRAMFS_SOURCE=""
184# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
185CONFIG_SYSCTL=y
186CONFIG_EMBEDDED=y
187# CONFIG_SYSCTL_SYSCALL is not set
188CONFIG_KALLSYMS=y
189# CONFIG_KALLSYMS_EXTRA_PASS is not set
190CONFIG_HOTPLUG=y
191CONFIG_PRINTK=y
192CONFIG_BUG=y
193CONFIG_ELF_CORE=y
194CONFIG_BASE_FULL=y
195CONFIG_FUTEX=y
196CONFIG_EPOLL=y
197CONFIG_SHMEM=y
198CONFIG_SLAB=y
199CONFIG_VM_EVENT_COUNTERS=y
200CONFIG_RT_MUTEXES=y
201# CONFIG_TINY_SHMEM is not set
202CONFIG_BASE_SMALL=0
203# CONFIG_SLOB is not set
204
205#
206# Loadable module support
207#
208CONFIG_MODULES=y
209CONFIG_MODULE_UNLOAD=y
210# CONFIG_MODULE_FORCE_UNLOAD is not set
211CONFIG_MODVERSIONS=y
212# CONFIG_MODULE_SRCVERSION_ALL is not set
213CONFIG_KMOD=y
214
215#
216# Block layer
217#
218CONFIG_BLOCK=y
219# CONFIG_LBD is not set
220# CONFIG_BLK_DEV_IO_TRACE is not set
221# CONFIG_LSF is not set
222
223#
224# IO Schedulers
225#
226CONFIG_IOSCHED_NOOP=y
227CONFIG_IOSCHED_AS=y
228CONFIG_IOSCHED_DEADLINE=y
229CONFIG_IOSCHED_CFQ=y
230CONFIG_DEFAULT_AS=y
231# CONFIG_DEFAULT_DEADLINE is not set
232# CONFIG_DEFAULT_CFQ is not set
233# CONFIG_DEFAULT_NOOP is not set
234CONFIG_DEFAULT_IOSCHED="anticipatory"
235
236#
237# Bus options (PCI, PCMCIA, EISA, ISA, TC)
238#
239CONFIG_ISA=y
240CONFIG_MMU=y
241CONFIG_I8253=y
242
243#
244# PCCARD (PCMCIA/CardBus) support
245#
246# CONFIG_PCCARD is not set
247
248#
249# PCI Hotplug Support
250#
251
252#
253# Executable file formats
254#
255CONFIG_BINFMT_ELF=y
256CONFIG_BINFMT_MISC=m
257CONFIG_TRAD_SIGNALS=y
258
259#
260# Networking
261#
262CONFIG_NET=y
263
264#
265# Networking options
266#
267# CONFIG_NETDEBUG is not set
268CONFIG_PACKET=m
269CONFIG_PACKET_MMAP=y
270CONFIG_UNIX=y
271CONFIG_XFRM=y
272# CONFIG_XFRM_USER is not set
273# CONFIG_XFRM_SUB_POLICY is not set
274CONFIG_NET_KEY=m
275CONFIG_INET=y
276CONFIG_IP_MULTICAST=y
277# CONFIG_IP_ADVANCED_ROUTER is not set
278CONFIG_IP_FIB_HASH=y
279# CONFIG_IP_PNP is not set
280CONFIG_NET_IPIP=m
281CONFIG_NET_IPGRE=m
282CONFIG_NET_IPGRE_BROADCAST=y
283CONFIG_IP_MROUTE=y
284CONFIG_IP_PIMSM_V1=y
285CONFIG_IP_PIMSM_V2=y
286# CONFIG_ARPD is not set
287# CONFIG_SYN_COOKIES is not set
288# CONFIG_INET_AH is not set
289# CONFIG_INET_ESP is not set
290# CONFIG_INET_IPCOMP is not set
291# CONFIG_INET_XFRM_TUNNEL is not set
292CONFIG_INET_TUNNEL=m
293CONFIG_INET_XFRM_MODE_TRANSPORT=m
294CONFIG_INET_XFRM_MODE_TUNNEL=m
295CONFIG_INET_XFRM_MODE_BEET=y
296CONFIG_INET_DIAG=y
297CONFIG_INET_TCP_DIAG=y
298# CONFIG_TCP_CONG_ADVANCED is not set
299CONFIG_TCP_CONG_CUBIC=y
300CONFIG_DEFAULT_TCP_CONG="cubic"
301
302#
303# IP: Virtual Server Configuration
304#
305# CONFIG_IP_VS is not set
306CONFIG_IPV6=m
307CONFIG_IPV6_PRIVACY=y
308CONFIG_IPV6_ROUTER_PREF=y
309CONFIG_IPV6_ROUTE_INFO=y
310CONFIG_INET6_AH=m
311CONFIG_INET6_ESP=m
312CONFIG_INET6_IPCOMP=m
313# CONFIG_IPV6_MIP6 is not set
314CONFIG_INET6_XFRM_TUNNEL=m
315CONFIG_INET6_TUNNEL=m
316CONFIG_INET6_XFRM_MODE_TRANSPORT=m
317CONFIG_INET6_XFRM_MODE_TUNNEL=m
318CONFIG_INET6_XFRM_MODE_BEET=m
319# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
320CONFIG_IPV6_TUNNEL=m
321# CONFIG_IPV6_SUBTREES is not set
322# CONFIG_IPV6_MULTIPLE_TABLES is not set
323CONFIG_NETWORK_SECMARK=y
324CONFIG_NETFILTER=y
325# CONFIG_NETFILTER_DEBUG is not set
326CONFIG_BRIDGE_NETFILTER=y
327
328#
329# Core Netfilter Configuration
330#
331CONFIG_NETFILTER_NETLINK=m
332CONFIG_NETFILTER_NETLINK_QUEUE=m
333CONFIG_NETFILTER_NETLINK_LOG=m
334CONFIG_NETFILTER_XTABLES=m
335CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
336CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
337# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
338CONFIG_NETFILTER_XT_TARGET_MARK=m
339CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
340CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
341CONFIG_NETFILTER_XT_TARGET_SECMARK=m
342# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
343CONFIG_NETFILTER_XT_MATCH_COMMENT=m
344CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
345CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
346CONFIG_NETFILTER_XT_MATCH_DCCP=m
347# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
348CONFIG_NETFILTER_XT_MATCH_ESP=m
349CONFIG_NETFILTER_XT_MATCH_HELPER=m
350CONFIG_NETFILTER_XT_MATCH_LENGTH=m
351CONFIG_NETFILTER_XT_MATCH_LIMIT=m
352CONFIG_NETFILTER_XT_MATCH_MAC=m
353CONFIG_NETFILTER_XT_MATCH_MARK=m
354CONFIG_NETFILTER_XT_MATCH_POLICY=m
355CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
356CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
357CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
358CONFIG_NETFILTER_XT_MATCH_QUOTA=m
359CONFIG_NETFILTER_XT_MATCH_REALM=m
360CONFIG_NETFILTER_XT_MATCH_SCTP=m
361CONFIG_NETFILTER_XT_MATCH_STATE=m
362CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
363CONFIG_NETFILTER_XT_MATCH_STRING=m
364CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
365
366#
367# IP: Netfilter Configuration
368#
369CONFIG_IP_NF_CONNTRACK=m
370# CONFIG_IP_NF_CT_ACCT is not set
371CONFIG_IP_NF_CONNTRACK_MARK=y
372CONFIG_IP_NF_CONNTRACK_SECMARK=y
373CONFIG_IP_NF_CONNTRACK_EVENTS=y
374CONFIG_IP_NF_CONNTRACK_NETLINK=m
375CONFIG_IP_NF_CT_PROTO_SCTP=m
376CONFIG_IP_NF_FTP=m
377CONFIG_IP_NF_IRC=m
378# CONFIG_IP_NF_NETBIOS_NS is not set
379CONFIG_IP_NF_TFTP=m
380CONFIG_IP_NF_AMANDA=m
381CONFIG_IP_NF_PPTP=m
382CONFIG_IP_NF_H323=m
383CONFIG_IP_NF_SIP=m
384CONFIG_IP_NF_QUEUE=m
385CONFIG_IP_NF_IPTABLES=m
386CONFIG_IP_NF_MATCH_IPRANGE=m
387CONFIG_IP_NF_MATCH_TOS=m
388CONFIG_IP_NF_MATCH_RECENT=m
389CONFIG_IP_NF_MATCH_ECN=m
390CONFIG_IP_NF_MATCH_AH=m
391CONFIG_IP_NF_MATCH_TTL=m
392CONFIG_IP_NF_MATCH_OWNER=m
393CONFIG_IP_NF_MATCH_ADDRTYPE=m
394CONFIG_IP_NF_MATCH_HASHLIMIT=m
395CONFIG_IP_NF_FILTER=m
396CONFIG_IP_NF_TARGET_REJECT=m
397CONFIG_IP_NF_TARGET_LOG=m
398CONFIG_IP_NF_TARGET_ULOG=m
399CONFIG_IP_NF_TARGET_TCPMSS=m
400CONFIG_IP_NF_NAT=m
401CONFIG_IP_NF_NAT_NEEDED=y
402CONFIG_IP_NF_TARGET_MASQUERADE=m
403CONFIG_IP_NF_TARGET_REDIRECT=m
404CONFIG_IP_NF_TARGET_NETMAP=m
405CONFIG_IP_NF_TARGET_SAME=m
406CONFIG_IP_NF_NAT_SNMP_BASIC=m
407CONFIG_IP_NF_NAT_IRC=m
408CONFIG_IP_NF_NAT_FTP=m
409CONFIG_IP_NF_NAT_TFTP=m
410CONFIG_IP_NF_NAT_AMANDA=m
411CONFIG_IP_NF_NAT_PPTP=m
412CONFIG_IP_NF_NAT_H323=m
413CONFIG_IP_NF_NAT_SIP=m
414CONFIG_IP_NF_MANGLE=m
415CONFIG_IP_NF_TARGET_TOS=m
416CONFIG_IP_NF_TARGET_ECN=m
417CONFIG_IP_NF_TARGET_TTL=m
418CONFIG_IP_NF_TARGET_CLUSTERIP=m
419CONFIG_IP_NF_RAW=m
420CONFIG_IP_NF_ARPTABLES=m
421CONFIG_IP_NF_ARPFILTER=m
422CONFIG_IP_NF_ARP_MANGLE=m
423
424#
425# IPv6: Netfilter Configuration (EXPERIMENTAL)
426#
427CONFIG_IP6_NF_QUEUE=m
428CONFIG_IP6_NF_IPTABLES=m
429CONFIG_IP6_NF_MATCH_RT=m
430CONFIG_IP6_NF_MATCH_OPTS=m
431CONFIG_IP6_NF_MATCH_FRAG=m
432CONFIG_IP6_NF_MATCH_HL=m
433CONFIG_IP6_NF_MATCH_OWNER=m
434CONFIG_IP6_NF_MATCH_IPV6HEADER=m
435CONFIG_IP6_NF_MATCH_AH=m
436CONFIG_IP6_NF_MATCH_EUI64=m
437CONFIG_IP6_NF_FILTER=m
438CONFIG_IP6_NF_TARGET_LOG=m
439CONFIG_IP6_NF_TARGET_REJECT=m
440CONFIG_IP6_NF_MANGLE=m
441CONFIG_IP6_NF_TARGET_HL=m
442CONFIG_IP6_NF_RAW=m
443
444#
445# DECnet: Netfilter Configuration
446#
447CONFIG_DECNET_NF_GRABULATOR=m
448
449#
450# Bridge: Netfilter Configuration
451#
452CONFIG_BRIDGE_NF_EBTABLES=m
453CONFIG_BRIDGE_EBT_BROUTE=m
454CONFIG_BRIDGE_EBT_T_FILTER=m
455CONFIG_BRIDGE_EBT_T_NAT=m
456CONFIG_BRIDGE_EBT_802_3=m
457CONFIG_BRIDGE_EBT_AMONG=m
458CONFIG_BRIDGE_EBT_ARP=m
459CONFIG_BRIDGE_EBT_IP=m
460CONFIG_BRIDGE_EBT_LIMIT=m
461CONFIG_BRIDGE_EBT_MARK=m
462CONFIG_BRIDGE_EBT_PKTTYPE=m
463CONFIG_BRIDGE_EBT_STP=m
464CONFIG_BRIDGE_EBT_VLAN=m
465CONFIG_BRIDGE_EBT_ARPREPLY=m
466CONFIG_BRIDGE_EBT_DNAT=m
467CONFIG_BRIDGE_EBT_MARK_T=m
468CONFIG_BRIDGE_EBT_REDIRECT=m
469CONFIG_BRIDGE_EBT_SNAT=m
470CONFIG_BRIDGE_EBT_LOG=m
471CONFIG_BRIDGE_EBT_ULOG=m
472
473#
474# DCCP Configuration (EXPERIMENTAL)
475#
476# CONFIG_IP_DCCP is not set
477
478#
479# SCTP Configuration (EXPERIMENTAL)
480#
481# CONFIG_IP_SCTP is not set
482
483#
484# TIPC Configuration (EXPERIMENTAL)
485#
486# CONFIG_TIPC is not set
487# CONFIG_ATM is not set
488CONFIG_BRIDGE=m
489# CONFIG_VLAN_8021Q is not set
490CONFIG_DECNET=m
491# CONFIG_DECNET_ROUTER is not set
492CONFIG_LLC=m
493# CONFIG_LLC2 is not set
494# CONFIG_IPX is not set
495# CONFIG_ATALK is not set
496# CONFIG_X25 is not set
497# CONFIG_LAPB is not set
498# CONFIG_ECONET is not set
499# CONFIG_WAN_ROUTER is not set
500
501#
502# QoS and/or fair queueing
503#
504CONFIG_NET_SCHED=y
505CONFIG_NET_SCH_CLK_JIFFIES=y
506# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
507# CONFIG_NET_SCH_CLK_CPU is not set
508
509#
510# Queueing/Scheduling
511#
512CONFIG_NET_SCH_CBQ=m
513CONFIG_NET_SCH_HTB=m
514CONFIG_NET_SCH_HFSC=m
515CONFIG_NET_SCH_PRIO=m
516CONFIG_NET_SCH_RED=m
517CONFIG_NET_SCH_SFQ=m
518CONFIG_NET_SCH_TEQL=m
519CONFIG_NET_SCH_TBF=m
520CONFIG_NET_SCH_GRED=m
521CONFIG_NET_SCH_DSMARK=m
522CONFIG_NET_SCH_NETEM=m
523CONFIG_NET_SCH_INGRESS=m
524
525#
526# Classification
527#
528CONFIG_NET_CLS=y
529CONFIG_NET_CLS_BASIC=m
530CONFIG_NET_CLS_TCINDEX=m
531CONFIG_NET_CLS_ROUTE4=m
532CONFIG_NET_CLS_ROUTE=y
533CONFIG_NET_CLS_FW=m
534CONFIG_NET_CLS_U32=m
535# CONFIG_CLS_U32_PERF is not set
536# CONFIG_CLS_U32_MARK is not set
537CONFIG_NET_CLS_RSVP=m
538CONFIG_NET_CLS_RSVP6=m
539# CONFIG_NET_EMATCH is not set
540# CONFIG_NET_CLS_ACT is not set
541CONFIG_NET_CLS_POLICE=y
542# CONFIG_NET_CLS_IND is not set
543CONFIG_NET_ESTIMATOR=y
544
545#
546# Network testing
547#
548# CONFIG_NET_PKTGEN is not set
549CONFIG_HAMRADIO=y
550
551#
552# Packet Radio protocols
553#
554CONFIG_AX25=m
555CONFIG_AX25_DAMA_SLAVE=y
556CONFIG_NETROM=m
557CONFIG_ROSE=m
558
559#
560# AX.25 network device drivers
561#
562CONFIG_MKISS=m
563CONFIG_6PACK=m
564CONFIG_BPQETHER=m
565# CONFIG_BAYCOM_SER_FDX is not set
566# CONFIG_BAYCOM_SER_HDX is not set
567# CONFIG_BAYCOM_PAR is not set
568# CONFIG_BAYCOM_EPP is not set
569# CONFIG_YAM is not set
570# CONFIG_IRDA is not set
571# CONFIG_BT is not set
572CONFIG_IEEE80211=m
573# CONFIG_IEEE80211_DEBUG is not set
574CONFIG_IEEE80211_CRYPT_WEP=m
575CONFIG_IEEE80211_CRYPT_CCMP=m
576CONFIG_IEEE80211_SOFTMAC=m
577# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
578CONFIG_WIRELESS_EXT=y
579
580#
581# Device Drivers
582#
583
584#
585# Generic Driver Options
586#
587CONFIG_STANDALONE=y
588CONFIG_PREVENT_FIRMWARE_BUILD=y
589CONFIG_FW_LOADER=y
590# CONFIG_SYS_HYPERVISOR is not set
591
592#
593# Connector - unified userspace <-> kernelspace linker
594#
595CONFIG_CONNECTOR=m
596
597#
598# Memory Technology Devices (MTD)
599#
600# CONFIG_MTD is not set
601
602#
603# Parallel port support
604#
605CONFIG_PARPORT=m
606CONFIG_PARPORT_PC=m
607# CONFIG_PARPORT_PC_FIFO is not set
608# CONFIG_PARPORT_PC_SUPERIO is not set
609# CONFIG_PARPORT_GSC is not set
610# CONFIG_PARPORT_AX88796 is not set
611CONFIG_PARPORT_1284=y
612
613#
614# Plug and Play support
615#
616# CONFIG_PNP is not set
617
618#
619# Block devices
620#
621CONFIG_BLK_DEV_FD=m
622CONFIG_PARIDE=m
623CONFIG_PARIDE_PARPORT=m
624
625#
626# Parallel IDE high-level drivers
627#
628CONFIG_PARIDE_PD=m
629CONFIG_PARIDE_PCD=m
630CONFIG_PARIDE_PF=m
631CONFIG_PARIDE_PT=m
632CONFIG_PARIDE_PG=m
633
634#
635# Parallel IDE protocol modules
636#
637CONFIG_PARIDE_ATEN=m
638CONFIG_PARIDE_BPCK=m
639CONFIG_PARIDE_BPCK6=m
640CONFIG_PARIDE_COMM=m
641CONFIG_PARIDE_DSTR=m
642CONFIG_PARIDE_FIT2=m
643CONFIG_PARIDE_FIT3=m
644CONFIG_PARIDE_EPAT=m
645# CONFIG_PARIDE_EPATC8 is not set
646CONFIG_PARIDE_EPIA=m
647CONFIG_PARIDE_FRIQ=m
648CONFIG_PARIDE_FRPW=m
649CONFIG_PARIDE_KBIC=m
650CONFIG_PARIDE_KTTI=m
651CONFIG_PARIDE_ON20=m
652CONFIG_PARIDE_ON26=m
653# CONFIG_BLK_DEV_COW_COMMON is not set
654CONFIG_BLK_DEV_LOOP=m
655CONFIG_BLK_DEV_CRYPTOLOOP=m
656CONFIG_BLK_DEV_NBD=m
657CONFIG_BLK_DEV_RAM=m
658CONFIG_BLK_DEV_RAM_COUNT=16
659CONFIG_BLK_DEV_RAM_SIZE=4096
660CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
661# CONFIG_BLK_DEV_INITRD is not set
662CONFIG_CDROM_PKTCDVD=m
663CONFIG_CDROM_PKTCDVD_BUFFERS=8
664# CONFIG_CDROM_PKTCDVD_WCACHE is not set
665CONFIG_ATA_OVER_ETH=m
666
667#
668# ATA/ATAPI/MFM/RLL support
669#
670# CONFIG_IDE is not set
671
672#
673# SCSI device support
674#
675CONFIG_RAID_ATTRS=m
676CONFIG_SCSI=y
677CONFIG_SCSI_NETLINK=y
678CONFIG_SCSI_PROC_FS=y
679
680#
681# SCSI support type (disk, tape, CD-ROM)
682#
683CONFIG_BLK_DEV_SD=y
684CONFIG_CHR_DEV_ST=m
685# CONFIG_CHR_DEV_OSST is not set
686CONFIG_BLK_DEV_SR=m
687CONFIG_BLK_DEV_SR_VENDOR=y
688# CONFIG_CHR_DEV_SG is not set
689# CONFIG_CHR_DEV_SCH is not set
690
691#
692# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
693#
694# CONFIG_SCSI_MULTI_LUN is not set
695CONFIG_SCSI_CONSTANTS=y
696# CONFIG_SCSI_LOGGING is not set
697
698#
699# SCSI Transports
700#
701CONFIG_SCSI_SPI_ATTRS=y
702CONFIG_SCSI_FC_ATTRS=y
703CONFIG_SCSI_ISCSI_ATTRS=m
704CONFIG_SCSI_SAS_ATTRS=m
705# CONFIG_SCSI_SAS_LIBSAS is not set
706
707#
708# SCSI low-level drivers
709#
710CONFIG_ISCSI_TCP=m
711# CONFIG_SCSI_AHA152X is not set
712# CONFIG_SCSI_AIC7XXX_OLD is not set
713# CONFIG_SCSI_IN2000 is not set
714# CONFIG_SCSI_DTC3280 is not set
715# CONFIG_SCSI_FUTURE_DOMAIN is not set
716# CONFIG_SCSI_GENERIC_NCR5380 is not set
717# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
718CONFIG_SCSI_PPA=m
719CONFIG_SCSI_IMM=m
720# CONFIG_SCSI_IZIP_EPP16 is not set
721# CONFIG_SCSI_IZIP_SLOW_CTR is not set
722# CONFIG_SCSI_NCR53C406A is not set
723# CONFIG_SCSI_PAS16 is not set
724# CONFIG_SCSI_PSI240I is not set
725# CONFIG_SCSI_QLOGIC_FAS is not set
726# CONFIG_SCSI_SYM53C416 is not set
727# CONFIG_SCSI_T128 is not set
728# CONFIG_SCSI_DEBUG is not set
729CONFIG_JAZZ_ESP=y
730
731#
732# Serial ATA (prod) and Parallel ATA (experimental) drivers
733#
734# CONFIG_ATA is not set
735
736#
737# Old CD-ROM drivers (not SCSI, not IDE)
738#
739# CONFIG_CD_NO_IDESCSI is not set
740
741#
742# Multi-device support (RAID and LVM)
743#
744CONFIG_MD=y
745CONFIG_BLK_DEV_MD=m
746CONFIG_MD_LINEAR=m
747CONFIG_MD_RAID0=m
748CONFIG_MD_RAID1=m
749CONFIG_MD_RAID10=m
750CONFIG_MD_RAID456=m
751CONFIG_MD_RAID5_RESHAPE=y
752CONFIG_MD_MULTIPATH=m
753CONFIG_MD_FAULTY=m
754CONFIG_BLK_DEV_DM=m
755# CONFIG_DM_DEBUG is not set
756# CONFIG_DM_CRYPT is not set
757CONFIG_DM_SNAPSHOT=m
758CONFIG_DM_MIRROR=m
759CONFIG_DM_ZERO=m
760CONFIG_DM_MULTIPATH=m
761CONFIG_DM_MULTIPATH_EMC=m
762
763#
764# Fusion MPT device support
765#
766# CONFIG_FUSION is not set
767
768#
769# IEEE 1394 (FireWire) support
770#
771
772#
773# I2O device support
774#
775
776#
777# Network device support
778#
779CONFIG_NETDEVICES=y
780CONFIG_DUMMY=m
781CONFIG_BONDING=m
782CONFIG_EQUALIZER=m
783CONFIG_TUN=m
784
785#
786# ARCnet devices
787#
788# CONFIG_ARCNET is not set
789
790#
791# PHY device support
792#
793CONFIG_PHYLIB=m
794
795#
796# MII PHY device drivers
797#
798CONFIG_MARVELL_PHY=m
799CONFIG_DAVICOM_PHY=m
800CONFIG_QSEMI_PHY=m
801CONFIG_LXT_PHY=m
802CONFIG_CICADA_PHY=m
803CONFIG_VITESSE_PHY=m
804CONFIG_SMSC_PHY=m
805# CONFIG_FIXED_PHY is not set
806
807#
808# Ethernet (10 or 100Mbit)
809#
810CONFIG_NET_ETHERNET=y
811CONFIG_MII=y
812CONFIG_MIPS_JAZZ_SONIC=y
813# CONFIG_NET_VENDOR_3COM is not set
814# CONFIG_NET_VENDOR_SMC is not set
815# CONFIG_DM9000 is not set
816# CONFIG_NET_VENDOR_RACAL is not set
817# CONFIG_AT1700 is not set
818# CONFIG_DEPCA is not set
819# CONFIG_HP100 is not set
820CONFIG_NET_ISA=y
821# CONFIG_E2100 is not set
822# CONFIG_EWRK3 is not set
823# CONFIG_EEXPRESS is not set
824# CONFIG_EEXPRESS_PRO is not set
825# CONFIG_HPLAN_PLUS is not set
826# CONFIG_HPLAN is not set
827# CONFIG_LP486E is not set
828# CONFIG_ETH16I is not set
829CONFIG_NE2000=m
830# CONFIG_SEEQ8005 is not set
831CONFIG_NET_PCI=y
832# CONFIG_AC3200 is not set
833# CONFIG_APRICOT is not set
834# CONFIG_CS89x0 is not set
835# CONFIG_LAN_SAA9730 is not set
836# CONFIG_NET_POCKET is not set
837
838#
839# Ethernet (1000 Mbit)
840#
841
842#
843# Ethernet (10000 Mbit)
844#
845
846#
847# Token Ring devices
848#
849# CONFIG_TR is not set
850
851#
852# Wireless LAN (non-hamradio)
853#
854# CONFIG_NET_RADIO is not set
855
856#
857# Wan interfaces
858#
859# CONFIG_WAN is not set
860CONFIG_PLIP=m
861# CONFIG_PPP is not set
862# CONFIG_SLIP is not set
863# CONFIG_SHAPER is not set
864# CONFIG_NETCONSOLE is not set
865# CONFIG_NETPOLL is not set
866# CONFIG_NET_POLL_CONTROLLER is not set
867
868#
869# ISDN subsystem
870#
871# CONFIG_ISDN is not set
872
873#
874# Telephony Support
875#
876# CONFIG_PHONE is not set
877
878#
879# Input device support
880#
881CONFIG_INPUT=y
882CONFIG_INPUT_FF_MEMLESS=m
883
884#
885# Userland interfaces
886#
887CONFIG_INPUT_MOUSEDEV=y
888CONFIG_INPUT_MOUSEDEV_PSAUX=y
889CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
890CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
891# CONFIG_INPUT_JOYDEV is not set
892# CONFIG_INPUT_TSDEV is not set
893# CONFIG_INPUT_EVDEV is not set
894# CONFIG_INPUT_EVBUG is not set
895
896#
897# Input Device Drivers
898#
899CONFIG_INPUT_KEYBOARD=y
900CONFIG_KEYBOARD_ATKBD=y
901# CONFIG_KEYBOARD_SUNKBD is not set
902# CONFIG_KEYBOARD_LKKBD is not set
903# CONFIG_KEYBOARD_XTKBD is not set
904# CONFIG_KEYBOARD_NEWTON is not set
905# CONFIG_KEYBOARD_STOWAWAY is not set
906CONFIG_INPUT_MOUSE=y
907CONFIG_MOUSE_PS2=y
908# CONFIG_MOUSE_SERIAL is not set
909# CONFIG_MOUSE_INPORT is not set
910# CONFIG_MOUSE_LOGIBM is not set
911# CONFIG_MOUSE_PC110PAD is not set
912# CONFIG_MOUSE_VSXXXAA is not set
913# CONFIG_INPUT_JOYSTICK is not set
914# CONFIG_INPUT_TOUCHSCREEN is not set
915# CONFIG_INPUT_MISC is not set
916
917#
918# Hardware I/O ports
919#
920CONFIG_SERIO=y
921CONFIG_SERIO_I8042=y
922CONFIG_SERIO_SERPORT=y
923CONFIG_SERIO_PARKBD=m
924CONFIG_SERIO_LIBPS2=y
925CONFIG_SERIO_RAW=m
926# CONFIG_GAMEPORT is not set
927
928#
929# Character devices
930#
931CONFIG_VT=y
932CONFIG_VT_CONSOLE=y
933CONFIG_HW_CONSOLE=y
934CONFIG_VT_HW_CONSOLE_BINDING=y
935# CONFIG_SERIAL_NONSTANDARD is not set
936
937#
938# Serial drivers
939#
940CONFIG_SERIAL_8250=m
941CONFIG_SERIAL_8250_NR_UARTS=4
942CONFIG_SERIAL_8250_RUNTIME_UARTS=4
943CONFIG_SERIAL_8250_EXTENDED=y
944# CONFIG_SERIAL_8250_MANY_PORTS is not set
945CONFIG_SERIAL_8250_SHARE_IRQ=y
946CONFIG_SERIAL_8250_DETECT_IRQ=y
947CONFIG_SERIAL_8250_RSA=y
948
949#
950# Non-8250 serial port support
951#
952CONFIG_SERIAL_CORE=m
953CONFIG_UNIX98_PTYS=y
954CONFIG_LEGACY_PTYS=y
955CONFIG_LEGACY_PTY_COUNT=256
956CONFIG_PRINTER=m
957# CONFIG_LP_CONSOLE is not set
958CONFIG_PPDEV=m
959CONFIG_TIPAR=m
960
961#
962# IPMI
963#
964# CONFIG_IPMI_HANDLER is not set
965
966#
967# Watchdog Cards
968#
969# CONFIG_WATCHDOG is not set
970# CONFIG_HW_RANDOM is not set
971CONFIG_RTC=m
972# CONFIG_GEN_RTC is not set
973# CONFIG_DTLK is not set
974# CONFIG_R3964 is not set
975
976#
977# Ftape, the floppy tape device driver
978#
979# CONFIG_RAW_DRIVER is not set
980
981#
982# TPM devices
983#
984# CONFIG_TCG_TPM is not set
985# CONFIG_TELCLOCK is not set
986
987#
988# I2C support
989#
990# CONFIG_I2C is not set
991
992#
993# SPI support
994#
995# CONFIG_SPI is not set
996# CONFIG_SPI_MASTER is not set
997
998#
999# Dallas's 1-wire bus
1000#
1001CONFIG_W1=m
1002CONFIG_W1_CON=y
1003
1004#
1005# 1-wire Bus Masters
1006#
1007
1008#
1009# 1-wire Slaves
1010#
1011# CONFIG_W1_SLAVE_THERM is not set
1012# CONFIG_W1_SLAVE_SMEM is not set
1013# CONFIG_W1_SLAVE_DS2433 is not set
1014
1015#
1016# Hardware Monitoring support
1017#
1018# CONFIG_HWMON is not set
1019# CONFIG_HWMON_VID is not set
1020
1021#
1022# Misc devices
1023#
1024# CONFIG_TIFM_CORE is not set
1025
1026#
1027# Multimedia devices
1028#
1029# CONFIG_VIDEO_DEV is not set
1030
1031#
1032# Digital Video Broadcasting Devices
1033#
1034# CONFIG_DVB is not set
1035
1036#
1037# Graphics support
1038#
1039# CONFIG_FIRMWARE_EDID is not set
1040# CONFIG_FB is not set
1041
1042#
1043# Console display driver support
1044#
1045CONFIG_VGA_CONSOLE=y
1046# CONFIG_VGACON_SOFT_SCROLLBACK is not set
1047# CONFIG_MDA_CONSOLE is not set
1048CONFIG_DUMMY_CONSOLE=y
1049# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1050
1051#
1052# Sound
1053#
1054# CONFIG_SOUND is not set
1055
1056#
1057# USB support
1058#
1059# CONFIG_USB_ARCH_HAS_HCD is not set
1060# CONFIG_USB_ARCH_HAS_OHCI is not set
1061# CONFIG_USB_ARCH_HAS_EHCI is not set
1062
1063#
1064# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
1065#
1066
1067#
1068# USB Gadget Support
1069#
1070# CONFIG_USB_GADGET is not set
1071
1072#
1073# MMC/SD Card support
1074#
1075# CONFIG_MMC is not set
1076
1077#
1078# LED devices
1079#
1080# CONFIG_NEW_LEDS is not set
1081
1082#
1083# LED drivers
1084#
1085
1086#
1087# LED Triggers
1088#
1089
1090#
1091# InfiniBand support
1092#
1093
1094#
1095# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1096#
1097
1098#
1099# Real Time Clock
1100#
1101# CONFIG_RTC_CLASS is not set
1102
1103#
1104# DMA Engine support
1105#
1106# CONFIG_DMA_ENGINE is not set
1107
1108#
1109# DMA Clients
1110#
1111
1112#
1113# DMA Devices
1114#
1115
1116#
1117# File systems
1118#
1119CONFIG_EXT2_FS=m
1120# CONFIG_EXT2_FS_XATTR is not set
1121# CONFIG_EXT2_FS_XIP is not set
1122CONFIG_EXT3_FS=y
1123CONFIG_EXT3_FS_XATTR=y
1124# CONFIG_EXT3_FS_POSIX_ACL is not set
1125# CONFIG_EXT3_FS_SECURITY is not set
1126CONFIG_JBD=y
1127# CONFIG_JBD_DEBUG is not set
1128CONFIG_FS_MBCACHE=y
1129CONFIG_REISERFS_FS=m
1130# CONFIG_REISERFS_CHECK is not set
1131# CONFIG_REISERFS_PROC_INFO is not set
1132CONFIG_REISERFS_FS_XATTR=y
1133CONFIG_REISERFS_FS_POSIX_ACL=y
1134CONFIG_REISERFS_FS_SECURITY=y
1135# CONFIG_JFS_FS is not set
1136CONFIG_FS_POSIX_ACL=y
1137CONFIG_XFS_FS=m
1138CONFIG_XFS_QUOTA=y
1139CONFIG_XFS_SECURITY=y
1140# CONFIG_XFS_POSIX_ACL is not set
1141# CONFIG_XFS_RT is not set
1142# CONFIG_GFS2_FS is not set
1143# CONFIG_OCFS2_FS is not set
1144CONFIG_MINIX_FS=m
1145CONFIG_ROMFS_FS=m
1146CONFIG_INOTIFY=y
1147CONFIG_INOTIFY_USER=y
1148# CONFIG_QUOTA is not set
1149CONFIG_QUOTACTL=y
1150CONFIG_DNOTIFY=y
1151CONFIG_AUTOFS_FS=m
1152CONFIG_AUTOFS4_FS=m
1153CONFIG_FUSE_FS=m
1154
1155#
1156# CD-ROM/DVD Filesystems
1157#
1158CONFIG_ISO9660_FS=m
1159CONFIG_JOLIET=y
1160CONFIG_ZISOFS=y
1161CONFIG_ZISOFS_FS=m
1162CONFIG_UDF_FS=m
1163CONFIG_UDF_NLS=y
1164
1165#
1166# DOS/FAT/NT Filesystems
1167#
1168CONFIG_FAT_FS=m
1169CONFIG_MSDOS_FS=m
1170CONFIG_VFAT_FS=m
1171CONFIG_FAT_DEFAULT_CODEPAGE=437
1172CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1173CONFIG_NTFS_FS=m
1174# CONFIG_NTFS_DEBUG is not set
1175# CONFIG_NTFS_RW is not set
1176
1177#
1178# Pseudo filesystems
1179#
1180CONFIG_PROC_FS=y
1181CONFIG_PROC_KCORE=y
1182CONFIG_PROC_SYSCTL=y
1183CONFIG_SYSFS=y
1184CONFIG_TMPFS=y
1185# CONFIG_TMPFS_POSIX_ACL is not set
1186# CONFIG_HUGETLB_PAGE is not set
1187CONFIG_RAMFS=y
1188# CONFIG_CONFIGFS_FS is not set
1189
1190#
1191# Miscellaneous filesystems
1192#
1193CONFIG_ADFS_FS=m
1194# CONFIG_ADFS_FS_RW is not set
1195CONFIG_AFFS_FS=m
1196# CONFIG_ECRYPT_FS is not set
1197CONFIG_HFS_FS=m
1198# CONFIG_HFSPLUS_FS is not set
1199CONFIG_BEFS_FS=m
1200# CONFIG_BEFS_DEBUG is not set
1201CONFIG_BFS_FS=m
1202CONFIG_EFS_FS=m
1203CONFIG_CRAMFS=m
1204CONFIG_VXFS_FS=m
1205CONFIG_HPFS_FS=m
1206CONFIG_QNX4FS_FS=m
1207CONFIG_SYSV_FS=m
1208CONFIG_UFS_FS=m
1209# CONFIG_UFS_FS_WRITE is not set
1210# CONFIG_UFS_DEBUG is not set
1211
1212#
1213# Network File Systems
1214#
1215CONFIG_NFS_FS=m
1216CONFIG_NFS_V3=y
1217# CONFIG_NFS_V3_ACL is not set
1218# CONFIG_NFS_V4 is not set
1219# CONFIG_NFS_DIRECTIO is not set
1220CONFIG_NFSD=m
1221CONFIG_NFSD_V3=y
1222# CONFIG_NFSD_V3_ACL is not set
1223# CONFIG_NFSD_V4 is not set
1224CONFIG_NFSD_TCP=y
1225CONFIG_LOCKD=m
1226CONFIG_LOCKD_V4=y
1227CONFIG_EXPORTFS=m
1228CONFIG_NFS_COMMON=y
1229CONFIG_SUNRPC=m
1230CONFIG_SUNRPC_GSS=m
1231CONFIG_RPCSEC_GSS_KRB5=m
1232CONFIG_RPCSEC_GSS_SPKM3=m
1233CONFIG_SMB_FS=m
1234# CONFIG_SMB_NLS_DEFAULT is not set
1235CONFIG_CIFS=m
1236# CONFIG_CIFS_STATS is not set
1237# CONFIG_CIFS_WEAK_PW_HASH is not set
1238# CONFIG_CIFS_XATTR is not set
1239# CONFIG_CIFS_DEBUG2 is not set
1240# CONFIG_CIFS_EXPERIMENTAL is not set
1241CONFIG_NCP_FS=m
1242CONFIG_NCPFS_PACKET_SIGNING=y
1243CONFIG_NCPFS_IOCTL_LOCKING=y
1244CONFIG_NCPFS_STRONG=y
1245CONFIG_NCPFS_NFS_NS=y
1246CONFIG_NCPFS_OS2_NS=y
1247CONFIG_NCPFS_SMALLDOS=y
1248CONFIG_NCPFS_NLS=y
1249CONFIG_NCPFS_EXTRAS=y
1250CONFIG_CODA_FS=m
1251CONFIG_CODA_FS_OLD_API=y
1252CONFIG_AFS_FS=m
1253CONFIG_RXRPC=m
1254# CONFIG_9P_FS is not set
1255
1256#
1257# Partition Types
1258#
1259CONFIG_PARTITION_ADVANCED=y
1260# CONFIG_ACORN_PARTITION is not set
1261# CONFIG_OSF_PARTITION is not set
1262# CONFIG_AMIGA_PARTITION is not set
1263# CONFIG_ATARI_PARTITION is not set
1264# CONFIG_MAC_PARTITION is not set
1265CONFIG_MSDOS_PARTITION=y
1266# CONFIG_BSD_DISKLABEL is not set
1267# CONFIG_MINIX_SUBPARTITION is not set
1268# CONFIG_SOLARIS_X86_PARTITION is not set
1269# CONFIG_UNIXWARE_DISKLABEL is not set
1270# CONFIG_LDM_PARTITION is not set
1271# CONFIG_SGI_PARTITION is not set
1272# CONFIG_ULTRIX_PARTITION is not set
1273# CONFIG_SUN_PARTITION is not set
1274# CONFIG_KARMA_PARTITION is not set
1275# CONFIG_EFI_PARTITION is not set
1276
1277#
1278# Native Language Support
1279#
1280CONFIG_NLS=m
1281CONFIG_NLS_DEFAULT="iso8859-1"
1282CONFIG_NLS_CODEPAGE_437=m
1283CONFIG_NLS_CODEPAGE_737=m
1284CONFIG_NLS_CODEPAGE_775=m
1285CONFIG_NLS_CODEPAGE_850=m
1286CONFIG_NLS_CODEPAGE_852=m
1287CONFIG_NLS_CODEPAGE_855=m
1288CONFIG_NLS_CODEPAGE_857=m
1289CONFIG_NLS_CODEPAGE_860=m
1290CONFIG_NLS_CODEPAGE_861=m
1291CONFIG_NLS_CODEPAGE_862=m
1292CONFIG_NLS_CODEPAGE_863=m
1293CONFIG_NLS_CODEPAGE_864=m
1294CONFIG_NLS_CODEPAGE_865=m
1295CONFIG_NLS_CODEPAGE_866=m
1296CONFIG_NLS_CODEPAGE_869=m
1297CONFIG_NLS_CODEPAGE_936=m
1298CONFIG_NLS_CODEPAGE_950=m
1299CONFIG_NLS_CODEPAGE_932=m
1300CONFIG_NLS_CODEPAGE_949=m
1301CONFIG_NLS_CODEPAGE_874=m
1302CONFIG_NLS_ISO8859_8=m
1303CONFIG_NLS_CODEPAGE_1250=m
1304CONFIG_NLS_CODEPAGE_1251=m
1305CONFIG_NLS_ASCII=m
1306CONFIG_NLS_ISO8859_1=m
1307CONFIG_NLS_ISO8859_2=m
1308CONFIG_NLS_ISO8859_3=m
1309CONFIG_NLS_ISO8859_4=m
1310CONFIG_NLS_ISO8859_5=m
1311CONFIG_NLS_ISO8859_6=m
1312CONFIG_NLS_ISO8859_7=m
1313CONFIG_NLS_ISO8859_9=m
1314CONFIG_NLS_ISO8859_13=m
1315CONFIG_NLS_ISO8859_14=m
1316CONFIG_NLS_ISO8859_15=m
1317CONFIG_NLS_KOI8_R=m
1318CONFIG_NLS_KOI8_U=m
1319CONFIG_NLS_UTF8=m
1320
1321#
1322# Distributed Lock Manager
1323#
1324
1325#
1326# Profiling support
1327#
1328# CONFIG_PROFILING is not set
1329
1330#
1331# Kernel hacking
1332#
1333CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1334# CONFIG_PRINTK_TIME is not set
1335CONFIG_ENABLE_MUST_CHECK=y
1336# CONFIG_MAGIC_SYSRQ is not set
1337# CONFIG_UNUSED_SYMBOLS is not set
1338# CONFIG_DEBUG_KERNEL is not set
1339CONFIG_LOG_BUF_SHIFT=14
1340# CONFIG_DEBUG_FS is not set
1341CONFIG_CROSSCOMPILE=y
1342CONFIG_CMDLINE=""
1343
1344#
1345# Security options
1346#
1347CONFIG_KEYS=y
1348CONFIG_KEYS_DEBUG_PROC_KEYS=y
1349# CONFIG_SECURITY is not set
1350
1351#
1352# Cryptographic options
1353#
1354CONFIG_CRYPTO=y
1355CONFIG_CRYPTO_ALGAPI=y
1356CONFIG_CRYPTO_BLKCIPHER=m
1357CONFIG_CRYPTO_HASH=y
1358CONFIG_CRYPTO_MANAGER=m
1359CONFIG_CRYPTO_HMAC=y
1360CONFIG_CRYPTO_NULL=m
1361CONFIG_CRYPTO_MD4=m
1362CONFIG_CRYPTO_MD5=m
1363CONFIG_CRYPTO_SHA1=m
1364CONFIG_CRYPTO_SHA256=m
1365CONFIG_CRYPTO_SHA512=m
1366CONFIG_CRYPTO_WP512=m
1367CONFIG_CRYPTO_TGR192=m
1368CONFIG_CRYPTO_ECB=m
1369CONFIG_CRYPTO_CBC=m
1370CONFIG_CRYPTO_DES=m
1371CONFIG_CRYPTO_BLOWFISH=m
1372CONFIG_CRYPTO_TWOFISH=m
1373CONFIG_CRYPTO_TWOFISH_COMMON=m
1374CONFIG_CRYPTO_SERPENT=m
1375CONFIG_CRYPTO_AES=m
1376CONFIG_CRYPTO_CAST5=m
1377CONFIG_CRYPTO_CAST6=m
1378CONFIG_CRYPTO_TEA=m
1379CONFIG_CRYPTO_ARC4=m
1380CONFIG_CRYPTO_KHAZAD=m
1381CONFIG_CRYPTO_ANUBIS=m
1382CONFIG_CRYPTO_DEFLATE=m
1383CONFIG_CRYPTO_MICHAEL_MIC=m
1384CONFIG_CRYPTO_CRC32C=m
1385# CONFIG_CRYPTO_TEST is not set
1386
1387#
1388# Hardware crypto devices
1389#
1390
1391#
1392# Library routines
1393#
1394CONFIG_CRC_CCITT=m
1395CONFIG_CRC16=m
1396CONFIG_CRC32=y
1397CONFIG_LIBCRC32C=m
1398CONFIG_ZLIB_INFLATE=m
1399CONFIG_ZLIB_DEFLATE=m
1400CONFIG_TEXTSEARCH=y
1401CONFIG_TEXTSEARCH_KMP=m
1402CONFIG_TEXTSEARCH_BM=m
1403CONFIG_TEXTSEARCH_FSM=m
1404CONFIG_PLIST=y
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig
index aeefe2873e38..101e80347dce 100644
--- a/arch/mips/configs/malta_defconfig
+++ b/arch/mips/configs/malta_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc1 3# Linux kernel version: 2.6.19-rc1
4# Thu Jul 6 10:04:13 2006 4# Fri Oct 6 17:34:55 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -25,8 +25,6 @@ CONFIG_MIPS=y
25# CONFIG_MIPS_COBALT is not set 25# CONFIG_MIPS_COBALT is not set
26# CONFIG_MACH_DECSTATION is not set 26# CONFIG_MACH_DECSTATION is not set
27# CONFIG_MIPS_EV64120 is not set 27# CONFIG_MIPS_EV64120 is not set
28# CONFIG_MIPS_IVR is not set
29# CONFIG_MIPS_ITE8172 is not set
30# CONFIG_MACH_JAZZ is not set 28# CONFIG_MACH_JAZZ is not set
31# CONFIG_LASAT is not set 29# CONFIG_LASAT is not set
32# CONFIG_MIPS_ATLAS is not set 30# CONFIG_MIPS_ATLAS is not set
@@ -67,6 +65,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y 65CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y 66CONFIG_GENERIC_HWEIGHT=y
69CONFIG_GENERIC_CALIBRATE_DELAY=y 67CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_GENERIC_TIME=y
70CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 69CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
71CONFIG_ARCH_MAY_HAVE_PC_FDC=y 70CONFIG_ARCH_MAY_HAVE_PC_FDC=y
72CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
@@ -134,19 +133,19 @@ CONFIG_MIPS_CPU_SCACHE=y
134CONFIG_CPU_HAS_PREFETCH=y 133CONFIG_CPU_HAS_PREFETCH=y
135# CONFIG_MIPS_MT_DISABLED is not set 134# CONFIG_MIPS_MT_DISABLED is not set
136# CONFIG_MIPS_MT_SMTC is not set 135# CONFIG_MIPS_MT_SMTC is not set
137# CONFIG_MIPS_MT_SMP is not set 136CONFIG_MIPS_MT_SMP=y
138CONFIG_MIPS_VPE_LOADER=y 137# CONFIG_MIPS_VPE_LOADER is not set
139CONFIG_MIPS_MT=y 138CONFIG_MIPS_MT=y
140CONFIG_SYS_SUPPORTS_MULTITHREADING=y 139CONFIG_SYS_SUPPORTS_MULTITHREADING=y
141CONFIG_MIPS_MT_FPAFF=y 140CONFIG_MIPS_MT_FPAFF=y
142CONFIG_MIPS_VPE_LOADER_TOM=y
143CONFIG_MIPS_VPE_APSP_API=y
144CONFIG_MIPS_APSP_KSPD=y
145# CONFIG_64BIT_PHYS_ADDR is not set 141# CONFIG_64BIT_PHYS_ADDR is not set
146CONFIG_CPU_HAS_LLSC=y 142CONFIG_CPU_HAS_LLSC=y
143CONFIG_CPU_MIPSR2_IRQ_VI=y
144CONFIG_CPU_MIPSR2_SRS=y
147CONFIG_CPU_HAS_SYNC=y 145CONFIG_CPU_HAS_SYNC=y
148CONFIG_GENERIC_HARDIRQS=y 146CONFIG_GENERIC_HARDIRQS=y
149CONFIG_GENERIC_IRQ_PROBE=y 147CONFIG_GENERIC_IRQ_PROBE=y
148CONFIG_IRQ_PER_CPU=y
150CONFIG_CPU_SUPPORTS_HIGHMEM=y 149CONFIG_CPU_SUPPORTS_HIGHMEM=y
151CONFIG_ARCH_FLATMEM_ENABLE=y 150CONFIG_ARCH_FLATMEM_ENABLE=y
152CONFIG_SELECT_MEMORY_MODEL=y 151CONFIG_SELECT_MEMORY_MODEL=y
@@ -158,6 +157,9 @@ CONFIG_FLAT_NODE_MEM_MAP=y
158# CONFIG_SPARSEMEM_STATIC is not set 157# CONFIG_SPARSEMEM_STATIC is not set
159CONFIG_SPLIT_PTLOCK_CPUS=4 158CONFIG_SPLIT_PTLOCK_CPUS=4
160# CONFIG_RESOURCES_64BIT is not set 159# CONFIG_RESOURCES_64BIT is not set
160CONFIG_SMP=y
161CONFIG_SYS_SUPPORTS_SMP=y
162CONFIG_NR_CPUS=2
161# CONFIG_HZ_48 is not set 163# CONFIG_HZ_48 is not set
162CONFIG_HZ_100=y 164CONFIG_HZ_100=y
163# CONFIG_HZ_128 is not set 165# CONFIG_HZ_128 is not set
@@ -170,6 +172,7 @@ CONFIG_HZ=100
170CONFIG_PREEMPT_NONE=y 172CONFIG_PREEMPT_NONE=y
171# CONFIG_PREEMPT_VOLUNTARY is not set 173# CONFIG_PREEMPT_VOLUNTARY is not set
172# CONFIG_PREEMPT is not set 174# CONFIG_PREEMPT is not set
175CONFIG_PREEMPT_BKL=y
173CONFIG_LOCKDEP_SUPPORT=y 176CONFIG_LOCKDEP_SUPPORT=y
174CONFIG_STACKTRACE_SUPPORT=y 177CONFIG_STACKTRACE_SUPPORT=y
175CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 178CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -178,7 +181,7 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
178# Code maturity level options 181# Code maturity level options
179# 182#
180CONFIG_EXPERIMENTAL=y 183CONFIG_EXPERIMENTAL=y
181CONFIG_BROKEN_ON_SMP=y 184CONFIG_LOCK_KERNEL=y
182CONFIG_INIT_ENV_ARG_LIMIT=32 185CONFIG_INIT_ENV_ARG_LIMIT=32
183 186
184# 187#
@@ -188,15 +191,20 @@ CONFIG_LOCALVERSION=""
188CONFIG_LOCALVERSION_AUTO=y 191CONFIG_LOCALVERSION_AUTO=y
189CONFIG_SWAP=y 192CONFIG_SWAP=y
190CONFIG_SYSVIPC=y 193CONFIG_SYSVIPC=y
194# CONFIG_IPC_NS is not set
191# CONFIG_POSIX_MQUEUE is not set 195# CONFIG_POSIX_MQUEUE is not set
192# CONFIG_BSD_PROCESS_ACCT is not set 196# CONFIG_BSD_PROCESS_ACCT is not set
193CONFIG_SYSCTL=y 197# CONFIG_TASKSTATS is not set
198# CONFIG_UTS_NS is not set
194# CONFIG_AUDIT is not set 199# CONFIG_AUDIT is not set
195# CONFIG_IKCONFIG is not set 200# CONFIG_IKCONFIG is not set
201# CONFIG_CPUSETS is not set
196CONFIG_RELAY=y 202CONFIG_RELAY=y
197CONFIG_INITRAMFS_SOURCE="" 203CONFIG_INITRAMFS_SOURCE=""
198# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 204# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
205CONFIG_SYSCTL=y
199CONFIG_EMBEDDED=y 206CONFIG_EMBEDDED=y
207# CONFIG_SYSCTL_SYSCALL is not set
200CONFIG_KALLSYMS=y 208CONFIG_KALLSYMS=y
201# CONFIG_KALLSYMS_EXTRA_PASS is not set 209# CONFIG_KALLSYMS_EXTRA_PASS is not set
202CONFIG_HOTPLUG=y 210CONFIG_HOTPLUG=y
@@ -204,12 +212,12 @@ CONFIG_PRINTK=y
204CONFIG_BUG=y 212CONFIG_BUG=y
205CONFIG_ELF_CORE=y 213CONFIG_ELF_CORE=y
206CONFIG_BASE_FULL=y 214CONFIG_BASE_FULL=y
207CONFIG_RT_MUTEXES=y
208CONFIG_FUTEX=y 215CONFIG_FUTEX=y
209CONFIG_EPOLL=y 216CONFIG_EPOLL=y
210CONFIG_SHMEM=y 217CONFIG_SHMEM=y
211CONFIG_SLAB=y 218CONFIG_SLAB=y
212CONFIG_VM_EVENT_COUNTERS=y 219CONFIG_VM_EVENT_COUNTERS=y
220CONFIG_RT_MUTEXES=y
213# CONFIG_TINY_SHMEM is not set 221# CONFIG_TINY_SHMEM is not set
214CONFIG_BASE_SMALL=0 222CONFIG_BASE_SMALL=0
215# CONFIG_SLOB is not set 223# CONFIG_SLOB is not set
@@ -223,10 +231,12 @@ CONFIG_MODULE_UNLOAD=y
223CONFIG_MODVERSIONS=y 231CONFIG_MODVERSIONS=y
224CONFIG_MODULE_SRCVERSION_ALL=y 232CONFIG_MODULE_SRCVERSION_ALL=y
225CONFIG_KMOD=y 233CONFIG_KMOD=y
234CONFIG_STOP_MACHINE=y
226 235
227# 236#
228# Block layer 237# Block layer
229# 238#
239CONFIG_BLOCK=y
230# CONFIG_LBD is not set 240# CONFIG_LBD is not set
231# CONFIG_BLK_DEV_IO_TRACE is not set 241# CONFIG_BLK_DEV_IO_TRACE is not set
232# CONFIG_LSF is not set 242# CONFIG_LSF is not set
@@ -249,6 +259,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
249# 259#
250CONFIG_HW_HAS_PCI=y 260CONFIG_HW_HAS_PCI=y
251CONFIG_PCI=y 261CONFIG_PCI=y
262# CONFIG_PCI_MULTITHREAD_PROBE is not set
252CONFIG_MMU=y 263CONFIG_MMU=y
253 264
254# 265#
@@ -282,6 +293,7 @@ CONFIG_PACKET_MMAP=y
282CONFIG_UNIX=y 293CONFIG_UNIX=y
283CONFIG_XFRM=y 294CONFIG_XFRM=y
284CONFIG_XFRM_USER=m 295CONFIG_XFRM_USER=m
296# CONFIG_XFRM_SUB_POLICY is not set
285CONFIG_NET_KEY=y 297CONFIG_NET_KEY=y
286CONFIG_INET=y 298CONFIG_INET=y
287CONFIG_IP_MULTICAST=y 299CONFIG_IP_MULTICAST=y
@@ -313,10 +325,12 @@ CONFIG_INET_XFRM_TUNNEL=m
313CONFIG_INET_TUNNEL=m 325CONFIG_INET_TUNNEL=m
314CONFIG_INET_XFRM_MODE_TRANSPORT=m 326CONFIG_INET_XFRM_MODE_TRANSPORT=m
315CONFIG_INET_XFRM_MODE_TUNNEL=m 327CONFIG_INET_XFRM_MODE_TUNNEL=m
328CONFIG_INET_XFRM_MODE_BEET=y
316CONFIG_INET_DIAG=y 329CONFIG_INET_DIAG=y
317CONFIG_INET_TCP_DIAG=y 330CONFIG_INET_TCP_DIAG=y
318# CONFIG_TCP_CONG_ADVANCED is not set 331# CONFIG_TCP_CONG_ADVANCED is not set
319CONFIG_TCP_CONG_BIC=y 332CONFIG_TCP_CONG_CUBIC=y
333CONFIG_DEFAULT_TCP_CONG="cubic"
320 334
321# 335#
322# IP: Virtual Server Configuration 336# IP: Virtual Server Configuration
@@ -358,11 +372,16 @@ CONFIG_IPV6_ROUTE_INFO=y
358CONFIG_INET6_AH=m 372CONFIG_INET6_AH=m
359CONFIG_INET6_ESP=m 373CONFIG_INET6_ESP=m
360CONFIG_INET6_IPCOMP=m 374CONFIG_INET6_IPCOMP=m
375# CONFIG_IPV6_MIP6 is not set
361CONFIG_INET6_XFRM_TUNNEL=m 376CONFIG_INET6_XFRM_TUNNEL=m
362CONFIG_INET6_TUNNEL=m 377CONFIG_INET6_TUNNEL=m
363CONFIG_INET6_XFRM_MODE_TRANSPORT=m 378CONFIG_INET6_XFRM_MODE_TRANSPORT=m
364CONFIG_INET6_XFRM_MODE_TUNNEL=m 379CONFIG_INET6_XFRM_MODE_TUNNEL=m
380CONFIG_INET6_XFRM_MODE_BEET=m
381# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
365CONFIG_IPV6_TUNNEL=m 382CONFIG_IPV6_TUNNEL=m
383# CONFIG_IPV6_SUBTREES is not set
384# CONFIG_IPV6_MULTIPLE_TABLES is not set
366CONFIG_NETWORK_SECMARK=y 385CONFIG_NETWORK_SECMARK=y
367CONFIG_NETFILTER=y 386CONFIG_NETFILTER=y
368# CONFIG_NETFILTER_DEBUG is not set 387# CONFIG_NETFILTER_DEBUG is not set
@@ -377,6 +396,7 @@ CONFIG_NETFILTER_NETLINK_LOG=m
377CONFIG_NETFILTER_XTABLES=m 396CONFIG_NETFILTER_XTABLES=m
378CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 397CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
379CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 398CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
399# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
380CONFIG_NETFILTER_XT_TARGET_MARK=m 400CONFIG_NETFILTER_XT_TARGET_MARK=m
381CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 401CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
382CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 402CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
@@ -387,6 +407,7 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
387CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 407CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
388CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 408CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
389CONFIG_NETFILTER_XT_MATCH_DCCP=m 409CONFIG_NETFILTER_XT_MATCH_DCCP=m
410# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
390CONFIG_NETFILTER_XT_MATCH_ESP=m 411CONFIG_NETFILTER_XT_MATCH_ESP=m
391CONFIG_NETFILTER_XT_MATCH_HELPER=m 412CONFIG_NETFILTER_XT_MATCH_HELPER=m
392CONFIG_NETFILTER_XT_MATCH_LENGTH=m 413CONFIG_NETFILTER_XT_MATCH_LENGTH=m
@@ -429,7 +450,6 @@ CONFIG_IP_NF_MATCH_IPRANGE=m
429CONFIG_IP_NF_MATCH_TOS=m 450CONFIG_IP_NF_MATCH_TOS=m
430CONFIG_IP_NF_MATCH_RECENT=m 451CONFIG_IP_NF_MATCH_RECENT=m
431CONFIG_IP_NF_MATCH_ECN=m 452CONFIG_IP_NF_MATCH_ECN=m
432CONFIG_IP_NF_MATCH_DSCP=m
433CONFIG_IP_NF_MATCH_AH=m 453CONFIG_IP_NF_MATCH_AH=m
434CONFIG_IP_NF_MATCH_TTL=m 454CONFIG_IP_NF_MATCH_TTL=m
435CONFIG_IP_NF_MATCH_OWNER=m 455CONFIG_IP_NF_MATCH_OWNER=m
@@ -457,7 +477,6 @@ CONFIG_IP_NF_NAT_SIP=m
457CONFIG_IP_NF_MANGLE=m 477CONFIG_IP_NF_MANGLE=m
458CONFIG_IP_NF_TARGET_TOS=m 478CONFIG_IP_NF_TARGET_TOS=m
459CONFIG_IP_NF_TARGET_ECN=m 479CONFIG_IP_NF_TARGET_ECN=m
460CONFIG_IP_NF_TARGET_DSCP=m
461CONFIG_IP_NF_TARGET_TTL=m 480CONFIG_IP_NF_TARGET_TTL=m
462CONFIG_IP_NF_TARGET_CLUSTERIP=m 481CONFIG_IP_NF_TARGET_CLUSTERIP=m
463CONFIG_IP_NF_RAW=m 482CONFIG_IP_NF_RAW=m
@@ -536,13 +555,12 @@ CONFIG_LLC=m
536# CONFIG_LLC2 is not set 555# CONFIG_LLC2 is not set
537# CONFIG_IPX is not set 556# CONFIG_IPX is not set
538CONFIG_ATALK=m 557CONFIG_ATALK=m
539CONFIG_DEV_APPLETALK=y 558CONFIG_DEV_APPLETALK=m
540CONFIG_IPDDP=m 559CONFIG_IPDDP=m
541CONFIG_IPDDP_ENCAP=y 560CONFIG_IPDDP_ENCAP=y
542CONFIG_IPDDP_DECAP=y 561CONFIG_IPDDP_DECAP=y
543# CONFIG_X25 is not set 562# CONFIG_X25 is not set
544# CONFIG_LAPB is not set 563# CONFIG_LAPB is not set
545CONFIG_NET_DIVERT=y
546# CONFIG_ECONET is not set 564# CONFIG_ECONET is not set
547# CONFIG_WAN_ROUTER is not set 565# CONFIG_WAN_ROUTER is not set
548 566
@@ -604,6 +622,7 @@ CONFIG_IEEE80211_CRYPT_CCMP=m
604CONFIG_IEEE80211_SOFTMAC=m 622CONFIG_IEEE80211_SOFTMAC=m
605# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set 623# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
606CONFIG_WIRELESS_EXT=y 624CONFIG_WIRELESS_EXT=y
625CONFIG_FIB_RULES=y
607 626
608# 627#
609# Device Drivers 628# Device Drivers
@@ -652,6 +671,7 @@ CONFIG_BLK_DEV_NBD=m
652CONFIG_BLK_DEV_RAM=y 671CONFIG_BLK_DEV_RAM=y
653CONFIG_BLK_DEV_RAM_COUNT=16 672CONFIG_BLK_DEV_RAM_COUNT=16
654CONFIG_BLK_DEV_RAM_SIZE=4096 673CONFIG_BLK_DEV_RAM_SIZE=4096
674CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
655# CONFIG_BLK_DEV_INITRD is not set 675# CONFIG_BLK_DEV_INITRD is not set
656CONFIG_CDROM_PKTCDVD=m 676CONFIG_CDROM_PKTCDVD=m
657CONFIG_CDROM_PKTCDVD_BUFFERS=8 677CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -662,6 +682,7 @@ CONFIG_ATA_OVER_ETH=m
662# ATA/ATAPI/MFM/RLL support 682# ATA/ATAPI/MFM/RLL support
663# 683#
664CONFIG_IDE=y 684CONFIG_IDE=y
685CONFIG_IDE_MAX_HWIFS=4
665CONFIG_BLK_DEV_IDE=y 686CONFIG_BLK_DEV_IDE=y
666 687
667# 688#
@@ -699,6 +720,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
699# CONFIG_BLK_DEV_CS5530 is not set 720# CONFIG_BLK_DEV_CS5530 is not set
700# CONFIG_BLK_DEV_HPT34X is not set 721# CONFIG_BLK_DEV_HPT34X is not set
701# CONFIG_BLK_DEV_HPT366 is not set 722# CONFIG_BLK_DEV_HPT366 is not set
723# CONFIG_BLK_DEV_JMICRON is not set
702# CONFIG_BLK_DEV_SC1200 is not set 724# CONFIG_BLK_DEV_SC1200 is not set
703CONFIG_BLK_DEV_PIIX=y 725CONFIG_BLK_DEV_PIIX=y
704# CONFIG_BLK_DEV_IT821X is not set 726# CONFIG_BLK_DEV_IT821X is not set
@@ -721,6 +743,7 @@ CONFIG_IDEDMA_AUTO=y
721# 743#
722CONFIG_RAID_ATTRS=m 744CONFIG_RAID_ATTRS=m
723CONFIG_SCSI=m 745CONFIG_SCSI=m
746CONFIG_SCSI_NETLINK=y
724CONFIG_SCSI_PROC_FS=y 747CONFIG_SCSI_PROC_FS=y
725 748
726# 749#
@@ -742,12 +765,13 @@ CONFIG_SCSI_CONSTANTS=y
742CONFIG_SCSI_LOGGING=y 765CONFIG_SCSI_LOGGING=y
743 766
744# 767#
745# SCSI Transport Attributes 768# SCSI Transports
746# 769#
747CONFIG_SCSI_SPI_ATTRS=m 770CONFIG_SCSI_SPI_ATTRS=m
748CONFIG_SCSI_FC_ATTRS=m 771CONFIG_SCSI_FC_ATTRS=m
749CONFIG_SCSI_ISCSI_ATTRS=m 772CONFIG_SCSI_ISCSI_ATTRS=m
750CONFIG_SCSI_SAS_ATTRS=m 773CONFIG_SCSI_SAS_ATTRS=m
774# CONFIG_SCSI_SAS_LIBSAS is not set
751 775
752# 776#
753# SCSI low-level drivers 777# SCSI low-level drivers
@@ -765,21 +789,23 @@ CONFIG_AIC7XXX_DEBUG_MASK=0
765CONFIG_AIC7XXX_REG_PRETTY_PRINT=y 789CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
766# CONFIG_SCSI_AIC7XXX_OLD is not set 790# CONFIG_SCSI_AIC7XXX_OLD is not set
767# CONFIG_SCSI_AIC79XX is not set 791# CONFIG_SCSI_AIC79XX is not set
792# CONFIG_SCSI_AIC94XX is not set
768# CONFIG_SCSI_DPT_I2O is not set 793# CONFIG_SCSI_DPT_I2O is not set
794# CONFIG_SCSI_ARCMSR is not set
769# CONFIG_MEGARAID_NEWGEN is not set 795# CONFIG_MEGARAID_NEWGEN is not set
770# CONFIG_MEGARAID_LEGACY is not set 796# CONFIG_MEGARAID_LEGACY is not set
771# CONFIG_MEGARAID_SAS is not set 797# CONFIG_MEGARAID_SAS is not set
772# CONFIG_SCSI_SATA is not set
773# CONFIG_SCSI_HPTIOP is not set 798# CONFIG_SCSI_HPTIOP is not set
774# CONFIG_SCSI_DMX3191D is not set 799# CONFIG_SCSI_DMX3191D is not set
775# CONFIG_SCSI_FUTURE_DOMAIN is not set 800# CONFIG_SCSI_FUTURE_DOMAIN is not set
776# CONFIG_SCSI_IPS is not set 801# CONFIG_SCSI_IPS is not set
777# CONFIG_SCSI_INITIO is not set 802# CONFIG_SCSI_INITIO is not set
778# CONFIG_SCSI_INIA100 is not set 803# CONFIG_SCSI_INIA100 is not set
804# CONFIG_SCSI_STEX is not set
779# CONFIG_SCSI_SYM53C8XX_2 is not set 805# CONFIG_SCSI_SYM53C8XX_2 is not set
780# CONFIG_SCSI_IPR is not set
781# CONFIG_SCSI_QLOGIC_1280 is not set 806# CONFIG_SCSI_QLOGIC_1280 is not set
782# CONFIG_SCSI_QLA_FC is not set 807# CONFIG_SCSI_QLA_FC is not set
808# CONFIG_SCSI_QLA_ISCSI is not set
783# CONFIG_SCSI_LPFC is not set 809# CONFIG_SCSI_LPFC is not set
784# CONFIG_SCSI_DC395x is not set 810# CONFIG_SCSI_DC395x is not set
785# CONFIG_SCSI_DC390T is not set 811# CONFIG_SCSI_DC390T is not set
@@ -787,6 +813,11 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
787# CONFIG_SCSI_DEBUG is not set 813# CONFIG_SCSI_DEBUG is not set
788 814
789# 815#
816# Serial ATA (prod) and Parallel ATA (experimental) drivers
817#
818# CONFIG_ATA is not set
819
820#
790# Multi-device support (RAID and LVM) 821# Multi-device support (RAID and LVM)
791# 822#
792CONFIG_MD=y 823CONFIG_MD=y
@@ -800,6 +831,7 @@ CONFIG_MD_RAID5_RESHAPE=y
800CONFIG_MD_MULTIPATH=m 831CONFIG_MD_MULTIPATH=m
801CONFIG_MD_FAULTY=m 832CONFIG_MD_FAULTY=m
802CONFIG_BLK_DEV_DM=m 833CONFIG_BLK_DEV_DM=m
834# CONFIG_DM_DEBUG is not set
803CONFIG_DM_CRYPT=m 835CONFIG_DM_CRYPT=m
804CONFIG_DM_SNAPSHOT=m 836CONFIG_DM_SNAPSHOT=m
805CONFIG_DM_MIRROR=m 837CONFIG_DM_MIRROR=m
@@ -854,6 +886,7 @@ CONFIG_LXT_PHY=m
854CONFIG_CICADA_PHY=m 886CONFIG_CICADA_PHY=m
855CONFIG_VITESSE_PHY=m 887CONFIG_VITESSE_PHY=m
856CONFIG_SMSC_PHY=m 888CONFIG_SMSC_PHY=m
889# CONFIG_FIXED_PHY is not set
857 890
858# 891#
859# Ethernet (10 or 100Mbit) 892# Ethernet (10 or 100Mbit)
@@ -873,6 +906,7 @@ CONFIG_MII=y
873# CONFIG_HP100 is not set 906# CONFIG_HP100 is not set
874CONFIG_NET_PCI=y 907CONFIG_NET_PCI=y
875CONFIG_PCNET32=y 908CONFIG_PCNET32=y
909# CONFIG_PCNET32_NAPI is not set
876# CONFIG_AMD8111_ETH is not set 910# CONFIG_AMD8111_ETH is not set
877# CONFIG_ADAPTEC_STARFIRE is not set 911# CONFIG_ADAPTEC_STARFIRE is not set
878# CONFIG_B44 is not set 912# CONFIG_B44 is not set
@@ -909,6 +943,7 @@ CONFIG_PCNET32=y
909# CONFIG_VIA_VELOCITY is not set 943# CONFIG_VIA_VELOCITY is not set
910# CONFIG_TIGON3 is not set 944# CONFIG_TIGON3 is not set
911# CONFIG_BNX2 is not set 945# CONFIG_BNX2 is not set
946# CONFIG_QLA3XXX is not set
912 947
913# 948#
914# Ethernet (10000 Mbit) 949# Ethernet (10000 Mbit)
@@ -956,6 +991,7 @@ CONFIG_PCNET32=y
956# Input device support 991# Input device support
957# 992#
958CONFIG_INPUT=y 993CONFIG_INPUT=y
994# CONFIG_INPUT_FF_MEMLESS is not set
959 995
960# 996#
961# Userland interfaces 997# Userland interfaces
@@ -1070,12 +1106,12 @@ CONFIG_RTC=y
1070# 1106#
1071# Misc devices 1107# Misc devices
1072# 1108#
1109# CONFIG_TIFM_CORE is not set
1073 1110
1074# 1111#
1075# Multimedia devices 1112# Multimedia devices
1076# 1113#
1077# CONFIG_VIDEO_DEV is not set 1114# CONFIG_VIDEO_DEV is not set
1078CONFIG_VIDEO_V4L2=y
1079 1115
1080# 1116#
1081# Digital Video Broadcasting Devices 1117# Digital Video Broadcasting Devices
@@ -1093,6 +1129,7 @@ CONFIG_VIDEO_V4L2=y
1093# 1129#
1094# CONFIG_VGA_CONSOLE is not set 1130# CONFIG_VGA_CONSOLE is not set
1095CONFIG_DUMMY_CONSOLE=y 1131CONFIG_DUMMY_CONSOLE=y
1132# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1096 1133
1097# 1134#
1098# Sound 1135# Sound
@@ -1191,6 +1228,7 @@ CONFIG_XFS_QUOTA=y
1191CONFIG_XFS_SECURITY=y 1228CONFIG_XFS_SECURITY=y
1192CONFIG_XFS_POSIX_ACL=y 1229CONFIG_XFS_POSIX_ACL=y
1193# CONFIG_XFS_RT is not set 1230# CONFIG_XFS_RT is not set
1231# CONFIG_GFS2_FS is not set
1194# CONFIG_OCFS2_FS is not set 1232# CONFIG_OCFS2_FS is not set
1195CONFIG_MINIX_FS=m 1233CONFIG_MINIX_FS=m
1196CONFIG_ROMFS_FS=m 1234CONFIG_ROMFS_FS=m
@@ -1230,8 +1268,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1230# 1268#
1231CONFIG_PROC_FS=y 1269CONFIG_PROC_FS=y
1232CONFIG_PROC_KCORE=y 1270CONFIG_PROC_KCORE=y
1271CONFIG_PROC_SYSCTL=y
1233CONFIG_SYSFS=y 1272CONFIG_SYSFS=y
1234CONFIG_TMPFS=y 1273CONFIG_TMPFS=y
1274# CONFIG_TMPFS_POSIX_ACL is not set
1235# CONFIG_HUGETLB_PAGE is not set 1275# CONFIG_HUGETLB_PAGE is not set
1236CONFIG_RAMFS=y 1276CONFIG_RAMFS=y
1237# CONFIG_CONFIGFS_FS is not set 1277# CONFIG_CONFIGFS_FS is not set
@@ -1279,7 +1319,6 @@ CONFIG_SUNRPC=y
1279# CONFIG_RPCSEC_GSS_SPKM3 is not set 1319# CONFIG_RPCSEC_GSS_SPKM3 is not set
1280# CONFIG_SMB_FS is not set 1320# CONFIG_SMB_FS is not set
1281# CONFIG_CIFS is not set 1321# CONFIG_CIFS is not set
1282# CONFIG_CIFS_DEBUG2 is not set
1283# CONFIG_NCP_FS is not set 1322# CONFIG_NCP_FS is not set
1284# CONFIG_CODA_FS is not set 1323# CONFIG_CODA_FS is not set
1285# CONFIG_AFS_FS is not set 1324# CONFIG_AFS_FS is not set
@@ -1336,6 +1375,11 @@ CONFIG_NLS_KOI8_U=m
1336CONFIG_NLS_UTF8=m 1375CONFIG_NLS_UTF8=m
1337 1376
1338# 1377#
1378# Distributed Lock Manager
1379#
1380# CONFIG_DLM is not set
1381
1382#
1339# Profiling support 1383# Profiling support
1340# 1384#
1341# CONFIG_PROFILING is not set 1385# CONFIG_PROFILING is not set
@@ -1345,10 +1389,11 @@ CONFIG_NLS_UTF8=m
1345# 1389#
1346CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1390CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1347# CONFIG_PRINTK_TIME is not set 1391# CONFIG_PRINTK_TIME is not set
1392CONFIG_ENABLE_MUST_CHECK=y
1348# CONFIG_MAGIC_SYSRQ is not set 1393# CONFIG_MAGIC_SYSRQ is not set
1349# CONFIG_UNUSED_SYMBOLS is not set 1394# CONFIG_UNUSED_SYMBOLS is not set
1350# CONFIG_DEBUG_KERNEL is not set 1395# CONFIG_DEBUG_KERNEL is not set
1351CONFIG_LOG_BUF_SHIFT=14 1396CONFIG_LOG_BUF_SHIFT=15
1352# CONFIG_DEBUG_FS is not set 1397# CONFIG_DEBUG_FS is not set
1353CONFIG_CROSSCOMPILE=y 1398CONFIG_CROSSCOMPILE=y
1354CONFIG_CMDLINE="" 1399CONFIG_CMDLINE=""
@@ -1363,6 +1408,10 @@ CONFIG_CMDLINE=""
1363# Cryptographic options 1408# Cryptographic options
1364# 1409#
1365CONFIG_CRYPTO=y 1410CONFIG_CRYPTO=y
1411CONFIG_CRYPTO_ALGAPI=y
1412CONFIG_CRYPTO_BLKCIPHER=m
1413CONFIG_CRYPTO_HASH=y
1414CONFIG_CRYPTO_MANAGER=m
1366CONFIG_CRYPTO_HMAC=y 1415CONFIG_CRYPTO_HMAC=y
1367CONFIG_CRYPTO_NULL=m 1416CONFIG_CRYPTO_NULL=m
1368CONFIG_CRYPTO_MD4=m 1417CONFIG_CRYPTO_MD4=m
@@ -1372,9 +1421,12 @@ CONFIG_CRYPTO_SHA256=m
1372CONFIG_CRYPTO_SHA512=m 1421CONFIG_CRYPTO_SHA512=m
1373CONFIG_CRYPTO_WP512=m 1422CONFIG_CRYPTO_WP512=m
1374CONFIG_CRYPTO_TGR192=m 1423CONFIG_CRYPTO_TGR192=m
1424CONFIG_CRYPTO_ECB=m
1425CONFIG_CRYPTO_CBC=m
1375CONFIG_CRYPTO_DES=m 1426CONFIG_CRYPTO_DES=m
1376CONFIG_CRYPTO_BLOWFISH=m 1427CONFIG_CRYPTO_BLOWFISH=m
1377CONFIG_CRYPTO_TWOFISH=m 1428CONFIG_CRYPTO_TWOFISH=m
1429CONFIG_CRYPTO_TWOFISH_COMMON=m
1378CONFIG_CRYPTO_SERPENT=m 1430CONFIG_CRYPTO_SERPENT=m
1379CONFIG_CRYPTO_AES=m 1431CONFIG_CRYPTO_AES=m
1380CONFIG_CRYPTO_CAST5=m 1432CONFIG_CRYPTO_CAST5=m
diff --git a/arch/mips/configs/pb1100_defconfig b/arch/mips/configs/pb1100_defconfig
index 741f8258075c..9e672f63a0aa 100644
--- a/arch/mips/configs/pb1100_defconfig
+++ b/arch/mips/configs/pb1100_defconfig
@@ -76,7 +76,6 @@ CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
76CONFIG_SOC_AU1100=y 76CONFIG_SOC_AU1100=y
77CONFIG_SOC_AU1X00=y 77CONFIG_SOC_AU1X00=y
78CONFIG_SWAP_IO_SPACE=y 78CONFIG_SWAP_IO_SPACE=y
79# CONFIG_AU1X00_USB_DEVICE is not set
80CONFIG_MIPS_L1_CACHE_SHIFT=5 79CONFIG_MIPS_L1_CACHE_SHIFT=5
81 80
82# 81#
diff --git a/arch/mips/configs/pb1500_defconfig b/arch/mips/configs/pb1500_defconfig
index 8576340714da..d0c0f4af1bff 100644
--- a/arch/mips/configs/pb1500_defconfig
+++ b/arch/mips/configs/pb1500_defconfig
@@ -75,7 +75,6 @@ CONFIG_CPU_LITTLE_ENDIAN=y
75CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 75CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
76CONFIG_SOC_AU1500=y 76CONFIG_SOC_AU1500=y
77CONFIG_SOC_AU1X00=y 77CONFIG_SOC_AU1X00=y
78# CONFIG_AU1X00_USB_DEVICE is not set
79CONFIG_MIPS_L1_CACHE_SHIFT=5 78CONFIG_MIPS_L1_CACHE_SHIFT=5
80 79
81# 80#
diff --git a/arch/mips/ddb5xxx/ddb5477/irq.c b/arch/mips/ddb5xxx/ddb5477/irq.c
index 513fc6722d84..a8bd2e66705c 100644
--- a/arch/mips/ddb5xxx/ddb5477/irq.c
+++ b/arch/mips/ddb5xxx/ddb5477/irq.c
@@ -153,8 +153,7 @@ u8 i8259_interrupt_ack(void)
153 * the first level int-handler will jump here if it is a vrc5477 irq 153 * the first level int-handler will jump here if it is a vrc5477 irq
154 */ 154 */
155#define NUM_5477_IRQS 32 155#define NUM_5477_IRQS 32
156static void 156static void vrc5477_irq_dispatch(void)
157vrc5477_irq_dispatch(struct pt_regs *regs)
158{ 157{
159 u32 intStatus; 158 u32 intStatus;
160 u32 bitmask; 159 u32 bitmask;
@@ -178,7 +177,7 @@ vrc5477_irq_dispatch(struct pt_regs *regs)
178 /* check for i8259 interrupts */ 177 /* check for i8259 interrupts */
179 if (intStatus & (1 << VRC5477_I8259_CASCADE)) { 178 if (intStatus & (1 << VRC5477_I8259_CASCADE)) {
180 int i8259_irq = i8259_interrupt_ack(); 179 int i8259_irq = i8259_interrupt_ack();
181 do_IRQ(I8259_IRQ_BASE + i8259_irq, regs); 180 do_IRQ(I8259_IRQ_BASE + i8259_irq);
182 return; 181 return;
183 } 182 }
184 } 183 }
@@ -186,7 +185,7 @@ vrc5477_irq_dispatch(struct pt_regs *regs)
186 for (i=0, bitmask=1; i<= NUM_5477_IRQS; bitmask <<=1, i++) { 185 for (i=0, bitmask=1; i<= NUM_5477_IRQS; bitmask <<=1, i++) {
187 /* do we need to "and" with the int mask? */ 186 /* do we need to "and" with the int mask? */
188 if (intStatus & bitmask) { 187 if (intStatus & bitmask) {
189 do_IRQ(VRC5477_IRQ_BASE + i, regs); 188 do_IRQ(VRC5477_IRQ_BASE + i);
190 return; 189 return;
191 } 190 }
192 } 191 }
@@ -194,18 +193,18 @@ vrc5477_irq_dispatch(struct pt_regs *regs)
194 193
195#define VR5477INTS (STATUSF_IP2|STATUSF_IP3|STATUSF_IP4|STATUSF_IP5|STATUSF_IP6) 194#define VR5477INTS (STATUSF_IP2|STATUSF_IP3|STATUSF_IP4|STATUSF_IP5|STATUSF_IP6)
196 195
197asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 196asmlinkage void plat_irq_dispatch(void)
198{ 197{
199 unsigned int pending = read_c0_cause() & read_c0_status(); 198 unsigned int pending = read_c0_cause() & read_c0_status();
200 199
201 if (pending & STATUSF_IP7) 200 if (pending & STATUSF_IP7)
202 do_IRQ(CPU_IRQ_BASE + 7, regs); 201 do_IRQ(CPU_IRQ_BASE + 7);
203 else if (pending & VR5477INTS) 202 else if (pending & VR5477INTS)
204 vrc5477_irq_dispatch(regs); 203 vrc5477_irq_dispatch();
205 else if (pending & STATUSF_IP0) 204 else if (pending & STATUSF_IP0)
206 do_IRQ(CPU_IRQ_BASE, regs); 205 do_IRQ(CPU_IRQ_BASE);
207 else if (pending & STATUSF_IP1) 206 else if (pending & STATUSF_IP1)
208 do_IRQ(CPU_IRQ_BASE + 1, regs); 207 do_IRQ(CPU_IRQ_BASE + 1);
209 else 208 else
210 spurious_interrupt(regs); 209 spurious_interrupt();
211} 210}
diff --git a/arch/mips/dec/ecc-berr.c b/arch/mips/dec/ecc-berr.c
index cc24c5ed0c05..3e374d05978f 100644
--- a/arch/mips/dec/ecc-berr.c
+++ b/arch/mips/dec/ecc-berr.c
@@ -24,6 +24,7 @@
24#include <asm/addrspace.h> 24#include <asm/addrspace.h>
25#include <asm/bootinfo.h> 25#include <asm/bootinfo.h>
26#include <asm/cpu.h> 26#include <asm/cpu.h>
27#include <asm/irq_regs.h>
27#include <asm/processor.h> 28#include <asm/processor.h>
28#include <asm/system.h> 29#include <asm/system.h>
29#include <asm/traps.h> 30#include <asm/traps.h>
@@ -200,8 +201,10 @@ int dec_ecc_be_handler(struct pt_regs *regs, int is_fixup)
200 return dec_ecc_be_backend(regs, is_fixup, 0); 201 return dec_ecc_be_backend(regs, is_fixup, 0);
201} 202}
202 203
203irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id, struct pt_regs *regs) 204irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id)
204{ 205{
206 struct pt_regs *regs = get_irq_regs();
207
205 int action = dec_ecc_be_backend(regs, 0, 1); 208 int action = dec_ecc_be_backend(regs, 0, 1);
206 209
207 if (action == MIPS_BE_DISCARD) 210 if (action == MIPS_BE_DISCARD)
diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S
index 455a65b91cb0..31dd47d1002d 100644
--- a/arch/mips/dec/int-handler.S
+++ b/arch/mips/dec/int-handler.S
@@ -264,10 +264,10 @@
264 srlv t3,t1,t2 264 srlv t3,t1,t2
265 265
266handle_it: 266handle_it:
267 jal do_IRQ 267 LONG_L s0, TI_REGS($28)
268 move a1,sp 268 LONG_S sp, TI_REGS($28)
269 269 PTR_LA ra, ret_from_irq
270 j ret_from_irq 270 j do_IRQ
271 nop 271 nop
272 272
273#ifdef CONFIG_32BIT 273#ifdef CONFIG_32BIT
@@ -277,9 +277,8 @@ fpu:
277#endif 277#endif
278 278
279spurious: 279spurious:
280 jal spurious_interrupt 280 PTR_LA ra, _ret_from_irq
281 nop 281 j spurious_interrupt
282 j ret_from_irq
283 nop 282 nop
284 END(plat_irq_dispatch) 283 END(plat_irq_dispatch)
285 284
diff --git a/arch/mips/dec/kn01-berr.c b/arch/mips/dec/kn01-berr.c
index b9271db9bc76..f19b4617a0a6 100644
--- a/arch/mips/dec/kn01-berr.c
+++ b/arch/mips/dec/kn01-berr.c
@@ -150,10 +150,10 @@ int dec_kn01_be_handler(struct pt_regs *regs, int is_fixup)
150 return dec_kn01_be_backend(regs, is_fixup, 0); 150 return dec_kn01_be_backend(regs, is_fixup, 0);
151} 151}
152 152
153irqreturn_t dec_kn01_be_interrupt(int irq, void *dev_id, 153irqreturn_t dec_kn01_be_interrupt(int irq, void *dev_id)
154 struct pt_regs *regs)
155{ 154{
156 volatile u16 *csr = (void *)CKSEG1ADDR(KN01_SLOT_BASE + KN01_CSR); 155 volatile u16 *csr = (void *)CKSEG1ADDR(KN01_SLOT_BASE + KN01_CSR);
156 struct pt_regs *regs = get_irq_regs();
157 int action; 157 int action;
158 158
159 if (!(*csr & KN01_CSR_MEMERR)) 159 if (!(*csr & KN01_CSR_MEMERR))
diff --git a/arch/mips/dec/kn02xa-berr.c b/arch/mips/dec/kn02xa-berr.c
index 6cd3f94f79fe..7a053aadcd3a 100644
--- a/arch/mips/dec/kn02xa-berr.c
+++ b/arch/mips/dec/kn02xa-berr.c
@@ -21,6 +21,8 @@
21#include <linux/types.h> 21#include <linux/types.h>
22 22
23#include <asm/addrspace.h> 23#include <asm/addrspace.h>
24#include <asm/irq_regs.h>
25#include <asm/ptrace.h>
24#include <asm/system.h> 26#include <asm/system.h>
25#include <asm/traps.h> 27#include <asm/traps.h>
26 28
@@ -104,9 +106,9 @@ int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup)
104 return dec_kn02xa_be_backend(regs, is_fixup, 0); 106 return dec_kn02xa_be_backend(regs, is_fixup, 0);
105} 107}
106 108
107irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id, 109irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id)
108 struct pt_regs *regs)
109{ 110{
111 struct pt_regs *regs = get_irq_regs();
110 int action = dec_kn02xa_be_backend(regs, 0, 1); 112 int action = dec_kn02xa_be_backend(regs, 0, 1);
111 113
112 if (action == MIPS_BE_DISCARD) 114 if (action == MIPS_BE_DISCARD)
diff --git a/arch/mips/dec/reset.c b/arch/mips/dec/reset.c
index f78c6da47921..56397227adb0 100644
--- a/arch/mips/dec/reset.c
+++ b/arch/mips/dec/reset.c
@@ -8,7 +8,6 @@
8#include <linux/linkage.h> 8#include <linux/linkage.h>
9 9
10#include <asm/addrspace.h> 10#include <asm/addrspace.h>
11#include <asm/ptrace.h>
12 11
13typedef void ATTRIB_NORET (* noret_func_t)(void); 12typedef void ATTRIB_NORET (* noret_func_t)(void);
14 13
@@ -35,7 +34,7 @@ void ATTRIB_NORET dec_machine_power_off(void)
35 back_to_prom(); 34 back_to_prom();
36} 35}
37 36
38irqreturn_t dec_intr_halt(int irq, void *dev_id, struct pt_regs *regs) 37irqreturn_t dec_intr_halt(int irq, void *dev_id)
39{ 38{
40 dec_machine_halt(); 39 dec_machine_halt();
41} 40}
diff --git a/arch/mips/dec/setup.c b/arch/mips/dec/setup.c
index d43241c2f541..6b7481e97bec 100644
--- a/arch/mips/dec/setup.c
+++ b/arch/mips/dec/setup.c
@@ -46,7 +46,7 @@
46extern void dec_machine_restart(char *command); 46extern void dec_machine_restart(char *command);
47extern void dec_machine_halt(void); 47extern void dec_machine_halt(void);
48extern void dec_machine_power_off(void); 48extern void dec_machine_power_off(void);
49extern irqreturn_t dec_intr_halt(int irq, void *dev_id, struct pt_regs *regs); 49extern irqreturn_t dec_intr_halt(int irq, void *dev_id);
50 50
51unsigned long dec_kn_slot_base, dec_kn_slot_size; 51unsigned long dec_kn_slot_base, dec_kn_slot_size;
52 52
diff --git a/arch/mips/emma2rh/common/irq.c b/arch/mips/emma2rh/common/irq.c
index 3af57693c84c..c191b3e9d9d9 100644
--- a/arch/mips/emma2rh/common/irq.c
+++ b/arch/mips/emma2rh/common/irq.c
@@ -39,7 +39,7 @@
39/* 39/*
40 * the first level int-handler will jump here if it is a emma2rh irq 40 * the first level int-handler will jump here if it is a emma2rh irq
41 */ 41 */
42asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs) 42void emma2rh_irq_dispatch(void)
43{ 43{
44 u32 intStatus; 44 u32 intStatus;
45 u32 bitmask; 45 u32 bitmask;
@@ -56,7 +56,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs)
56 & emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN); 56 & emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN);
57 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { 57 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
58 if (swIntStatus & bitmask) { 58 if (swIntStatus & bitmask) {
59 do_IRQ(EMMA2RH_SW_IRQ_BASE + i, regs); 59 do_IRQ(EMMA2RH_SW_IRQ_BASE + i);
60 return; 60 return;
61 } 61 }
62 } 62 }
@@ -65,7 +65,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs)
65 65
66 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { 66 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
67 if (intStatus & bitmask) { 67 if (intStatus & bitmask) {
68 do_IRQ(EMMA2RH_IRQ_BASE + i, regs); 68 do_IRQ(EMMA2RH_IRQ_BASE + i);
69 return; 69 return;
70 } 70 }
71 } 71 }
@@ -81,7 +81,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs)
81 & emma2rh_in32(EMMA2RH_GPIO_INT_MASK); 81 & emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
82 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { 82 for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
83 if (gpioIntStatus & bitmask) { 83 if (gpioIntStatus & bitmask) {
84 do_IRQ(EMMA2RH_GPIO_IRQ_BASE + i, regs); 84 do_IRQ(EMMA2RH_GPIO_IRQ_BASE + i);
85 return; 85 return;
86 } 86 }
87 } 87 }
@@ -90,7 +90,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs)
90 90
91 for (i = 32, bitmask = 1; i < 64; i++, bitmask <<= 1) { 91 for (i = 32, bitmask = 1; i < 64; i++, bitmask <<= 1) {
92 if (intStatus & bitmask) { 92 if (intStatus & bitmask) {
93 do_IRQ(EMMA2RH_IRQ_BASE + i, regs); 93 do_IRQ(EMMA2RH_IRQ_BASE + i);
94 return; 94 return;
95 } 95 }
96 } 96 }
@@ -100,7 +100,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs)
100 100
101 for (i = 64, bitmask = 1; i < 96; i++, bitmask <<= 1) { 101 for (i = 64, bitmask = 1; i < 96; i++, bitmask <<= 1) {
102 if (intStatus & bitmask) { 102 if (intStatus & bitmask) {
103 do_IRQ(EMMA2RH_IRQ_BASE + i, regs); 103 do_IRQ(EMMA2RH_IRQ_BASE + i);
104 return; 104 return;
105 } 105 }
106 } 106 }
diff --git a/arch/mips/emma2rh/markeins/irq.c b/arch/mips/emma2rh/markeins/irq.c
index 2a736be42c8c..c93369cb4115 100644
--- a/arch/mips/emma2rh/markeins/irq.c
+++ b/arch/mips/emma2rh/markeins/irq.c
@@ -57,7 +57,7 @@
57extern void emma2rh_sw_irq_init(u32 base); 57extern void emma2rh_sw_irq_init(u32 base);
58extern void emma2rh_gpio_irq_init(u32 base); 58extern void emma2rh_gpio_irq_init(u32 base);
59extern void emma2rh_irq_init(u32 base); 59extern void emma2rh_irq_init(u32 base);
60extern asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs); 60extern void emma2rh_irq_dispatch(void);
61 61
62static struct irqaction irq_cascade = { 62static struct irqaction irq_cascade = {
63 .handler = no_action, 63 .handler = no_action,
@@ -114,20 +114,20 @@ void __init arch_init_irq(void)
114 setup_irq(CPU_IRQ_BASE + CPU_EMMA2RH_CASCADE, &irq_cascade); 114 setup_irq(CPU_IRQ_BASE + CPU_EMMA2RH_CASCADE, &irq_cascade);
115} 115}
116 116
117asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 117asmlinkage void plat_irq_dispatch(void)
118{ 118{
119 unsigned int pending = read_c0_status() & read_c0_cause(); 119 unsigned int pending = read_c0_status() & read_c0_cause();
120 120
121 if (pending & STATUSF_IP7) 121 if (pending & STATUSF_IP7)
122 do_IRQ(CPU_IRQ_BASE + 7, regs); 122 do_IRQ(CPU_IRQ_BASE + 7);
123 else if (pending & STATUSF_IP2) 123 else if (pending & STATUSF_IP2)
124 emma2rh_irq_dispatch(regs); 124 emma2rh_irq_dispatch();
125 else if (pending & STATUSF_IP1) 125 else if (pending & STATUSF_IP1)
126 do_IRQ(CPU_IRQ_BASE + 1, regs); 126 do_IRQ(CPU_IRQ_BASE + 1);
127 else if (pending & STATUSF_IP0) 127 else if (pending & STATUSF_IP0)
128 do_IRQ(CPU_IRQ_BASE + 0, regs); 128 do_IRQ(CPU_IRQ_BASE + 0);
129 else 129 else
130 spurious_interrupt(regs); 130 spurious_interrupt();
131} 131}
132 132
133 133
diff --git a/arch/mips/gt64120/common/time.c b/arch/mips/gt64120/common/time.c
index 7feca49350d1..c83ae6acd601 100644
--- a/arch/mips/gt64120/common/time.c
+++ b/arch/mips/gt64120/common/time.c
@@ -10,7 +10,7 @@
10#include <linux/kernel.h> 10#include <linux/kernel.h>
11#include <linux/sched.h> 11#include <linux/sched.h>
12#include <linux/kernel_stat.h> 12#include <linux/kernel_stat.h>
13#include <asm/ptrace.h> 13#include <asm/irq_regs.h>
14#include <asm/gt64120.h> 14#include <asm/gt64120.h>
15 15
16/* 16/*
@@ -19,7 +19,7 @@
19 * differently than other MIPS interrupts. 19 * differently than other MIPS interrupts.
20 */ 20 */
21 21
22static void gt64120_irq(int irq, void *dev_id, struct pt_regs *regs) 22static irqreturn_t gt64120_irq(int irq, void *dev_id)
23{ 23{
24 unsigned int irq_src, int_high_src, irq_src_mask, int_high_src_mask; 24 unsigned int irq_src, int_high_src, irq_src_mask, int_high_src_mask;
25 int handled = 0; 25 int handled = 0;
@@ -36,12 +36,14 @@ static void gt64120_irq(int irq, void *dev_id, struct pt_regs *regs)
36 irq_src &= ~0x00000800; 36 irq_src &= ~0x00000800;
37 do_timer(1); 37 do_timer(1);
38#ifndef CONFIG_SMP 38#ifndef CONFIG_SMP
39 update_process_times(user_mode(regs)); 39 update_process_times(user_mode(get_irq_regs()));
40#endif 40#endif
41 } 41 }
42 42
43 GT_WRITE(GT_INTRCAUSE_OFS, 0); 43 GT_WRITE(GT_INTRCAUSE_OFS, 0);
44 GT_WRITE(GT_HINTRCAUSE_OFS, 0); 44 GT_WRITE(GT_HINTRCAUSE_OFS, 0);
45
46 return IRQ_HANDLED;
45} 47}
46 48
47/* 49/*
diff --git a/arch/mips/gt64120/ev64120/irq.c b/arch/mips/gt64120/ev64120/irq.c
index 5d939ac58f3f..ed4d82b9a24a 100644
--- a/arch/mips/gt64120/ev64120/irq.c
+++ b/arch/mips/gt64120/ev64120/irq.c
@@ -46,22 +46,22 @@
46#include <asm/system.h> 46#include <asm/system.h>
47#include <asm/gt64120.h> 47#include <asm/gt64120.h>
48 48
49asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 49asmlinkage void plat_irq_dispatch(void)
50{ 50{
51 unsigned int pending = read_c0_status() & read_c0_cause(); 51 unsigned int pending = read_c0_status() & read_c0_cause();
52 52
53 if (pending & STATUSF_IP4) /* int2 hardware line (timer) */ 53 if (pending & STATUSF_IP4) /* int2 hardware line (timer) */
54 do_IRQ(4, regs); 54 do_IRQ(4);
55 else if (pending & STATUSF_IP2) /* int0 hardware line */ 55 else if (pending & STATUSF_IP2) /* int0 hardware line */
56 do_IRQ(GT_INTA, regs); 56 do_IRQ(GT_INTA);
57 else if (pending & STATUSF_IP5) /* int3 hardware line */ 57 else if (pending & STATUSF_IP5) /* int3 hardware line */
58 do_IRQ(GT_INTD, regs); 58 do_IRQ(GT_INTD);
59 else if (pending & STATUSF_IP6) /* int4 hardware line */ 59 else if (pending & STATUSF_IP6) /* int4 hardware line */
60 do_IRQ(6, regs); 60 do_IRQ(6);
61 else if (pending & STATUSF_IP7) /* compare int */ 61 else if (pending & STATUSF_IP7) /* compare int */
62 do_IRQ(7, regs); 62 do_IRQ(7);
63 else 63 else
64 spurious_interrupt(regs); 64 spurious_interrupt();
65} 65}
66 66
67static void disable_ev64120_irq(unsigned int irq_nr) 67static void disable_ev64120_irq(unsigned int irq_nr)
diff --git a/arch/mips/gt64120/ev64120/setup.c b/arch/mips/gt64120/ev64120/setup.c
index 4236da31ecc6..91c2d3f41617 100644
--- a/arch/mips/gt64120/ev64120/setup.c
+++ b/arch/mips/gt64120/ev64120/setup.c
@@ -42,7 +42,6 @@
42#include <asm/irq.h> 42#include <asm/irq.h>
43#include <asm/pci.h> 43#include <asm/pci.h>
44#include <asm/processor.h> 44#include <asm/processor.h>
45#include <asm/ptrace.h>
46#include <asm/time.h> 45#include <asm/time.h>
47#include <asm/reboot.h> 46#include <asm/reboot.h>
48#include <asm/traps.h> 47#include <asm/traps.h>
diff --git a/arch/mips/gt64120/momenco_ocelot/irq.c b/arch/mips/gt64120/momenco_ocelot/irq.c
index 885f67f32ea3..d9294401ccb0 100644
--- a/arch/mips/gt64120/momenco_ocelot/irq.c
+++ b/arch/mips/gt64120/momenco_ocelot/irq.c
@@ -48,22 +48,22 @@
48#include <asm/mipsregs.h> 48#include <asm/mipsregs.h>
49#include <asm/system.h> 49#include <asm/system.h>
50 50
51asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 51asmlinkage void plat_irq_dispatch(void)
52{ 52{
53 unsigned int pending = read_c0_status() & read_c0_cause(); 53 unsigned int pending = read_c0_status() & read_c0_cause();
54 54
55 if (pending & STATUSF_IP2) /* int0 hardware line */ 55 if (pending & STATUSF_IP2) /* int0 hardware line */
56 do_IRQ(2, regs); 56 do_IRQ(2);
57 else if (pending & STATUSF_IP3) /* int1 hardware line */ 57 else if (pending & STATUSF_IP3) /* int1 hardware line */
58 do_IRQ(3, regs); 58 do_IRQ(3);
59 else if (pending & STATUSF_IP4) /* int2 hardware line */ 59 else if (pending & STATUSF_IP4) /* int2 hardware line */
60 do_IRQ(4, regs); 60 do_IRQ(4);
61 else if (pending & STATUSF_IP5) /* int3 hardware line */ 61 else if (pending & STATUSF_IP5) /* int3 hardware line */
62 do_IRQ(5, regs); 62 do_IRQ(5);
63 else if (pending & STATUSF_IP6) /* int4 hardware line */ 63 else if (pending & STATUSF_IP6) /* int4 hardware line */
64 do_IRQ(6, regs); 64 do_IRQ(6);
65 else if (pending & STATUSF_IP7) /* cpu timer */ 65 else if (pending & STATUSF_IP7) /* cpu timer */
66 do_IRQ(7, regs); 66 do_IRQ(7);
67 else { 67 else {
68 /* 68 /*
69 * Now look at the extended interrupts 69 * Now look at the extended interrupts
@@ -71,13 +71,13 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
71 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; 71 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16;
72 72
73 if (pending & STATUSF_IP8) /* int6 hardware line */ 73 if (pending & STATUSF_IP8) /* int6 hardware line */
74 do_IRQ(8, regs); 74 do_IRQ(8);
75 else if (pending & STATUSF_IP9) /* int7 hardware line */ 75 else if (pending & STATUSF_IP9) /* int7 hardware line */
76 do_IRQ(9, regs); 76 do_IRQ(9);
77 else if (pending & STATUSF_IP10) /* int8 hardware line */ 77 else if (pending & STATUSF_IP10) /* int8 hardware line */
78 do_IRQ(10, regs); 78 do_IRQ(10);
79 else if (pending & STATUSF_IP11) /* int9 hardware line */ 79 else if (pending & STATUSF_IP11) /* int9 hardware line */
80 do_IRQ(11, regs); 80 do_IRQ(11);
81 } 81 }
82} 82}
83 83
diff --git a/arch/mips/gt64120/momenco_ocelot/setup.c b/arch/mips/gt64120/momenco_ocelot/setup.c
index 9804642ecf89..0e5bbee2d5b7 100644
--- a/arch/mips/gt64120/momenco_ocelot/setup.c
+++ b/arch/mips/gt64120/momenco_ocelot/setup.c
@@ -56,7 +56,6 @@
56#include <asm/irq.h> 56#include <asm/irq.h>
57#include <asm/pci.h> 57#include <asm/pci.h>
58#include <asm/processor.h> 58#include <asm/processor.h>
59#include <asm/ptrace.h>
60#include <asm/reboot.h> 59#include <asm/reboot.h>
61#include <asm/traps.h> 60#include <asm/traps.h>
62#include <linux/bootmem.h> 61#include <linux/bootmem.h>
diff --git a/arch/mips/gt64120/wrppmc/irq.c b/arch/mips/gt64120/wrppmc/irq.c
index 8d75a43ce877..eedfc24e1eae 100644
--- a/arch/mips/gt64120/wrppmc/irq.c
+++ b/arch/mips/gt64120/wrppmc/irq.c
@@ -30,18 +30,18 @@
30#include <asm/irq_cpu.h> 30#include <asm/irq_cpu.h>
31#include <asm/gt64120.h> 31#include <asm/gt64120.h>
32 32
33asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 33asmlinkage void plat_irq_dispatch(void)
34{ 34{
35 unsigned int pending = read_c0_status() & read_c0_cause(); 35 unsigned int pending = read_c0_status() & read_c0_cause();
36 36
37 if (pending & STATUSF_IP7) 37 if (pending & STATUSF_IP7)
38 do_IRQ(WRPPMC_MIPS_TIMER_IRQ, regs); /* CPU Compare/Count internal timer */ 38 do_IRQ(WRPPMC_MIPS_TIMER_IRQ); /* CPU Compare/Count internal timer */
39 else if (pending & STATUSF_IP6) 39 else if (pending & STATUSF_IP6)
40 do_IRQ(WRPPMC_UART16550_IRQ, regs); /* UART 16550 port */ 40 do_IRQ(WRPPMC_UART16550_IRQ); /* UART 16550 port */
41 else if (pending & STATUSF_IP3) 41 else if (pending & STATUSF_IP3)
42 do_IRQ(WRPPMC_PCI_INTA_IRQ, regs); /* PCI INT_A */ 42 do_IRQ(WRPPMC_PCI_INTA_IRQ); /* PCI INT_A */
43 else 43 else
44 spurious_interrupt(regs); 44 spurious_interrupt();
45} 45}
46 46
47/** 47/**
diff --git a/arch/mips/jazz/irq.c b/arch/mips/jazz/irq.c
index eef05093deb4..d5bd6b3a0933 100644
--- a/arch/mips/jazz/irq.c
+++ b/arch/mips/jazz/irq.c
@@ -94,26 +94,26 @@ void __init arch_init_irq(void)
94 change_c0_status(ST0_IM, IE_IRQ4 | IE_IRQ3 | IE_IRQ2 | IE_IRQ1); 94 change_c0_status(ST0_IM, IE_IRQ4 | IE_IRQ3 | IE_IRQ2 | IE_IRQ1);
95} 95}
96 96
97static void loc_call(unsigned int irq, struct pt_regs *regs, unsigned int mask) 97static void loc_call(unsigned int irq, unsigned int mask)
98{ 98{
99 r4030_write_reg16(JAZZ_IO_IRQ_ENABLE, 99 r4030_write_reg16(JAZZ_IO_IRQ_ENABLE,
100 r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) & mask); 100 r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) & mask);
101 do_IRQ(irq, regs); 101 do_IRQ(irq);
102 r4030_write_reg16(JAZZ_IO_IRQ_ENABLE, 102 r4030_write_reg16(JAZZ_IO_IRQ_ENABLE,
103 r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) | mask); 103 r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) | mask);
104} 104}
105 105
106static void ll_local_dev(struct pt_regs *regs) 106static void ll_local_dev(void)
107{ 107{
108 switch (r4030_read_reg32(JAZZ_IO_IRQ_SOURCE)) { 108 switch (r4030_read_reg32(JAZZ_IO_IRQ_SOURCE)) {
109 case 0: 109 case 0:
110 panic("Unimplemented loc_no_irq handler"); 110 panic("Unimplemented loc_no_irq handler");
111 break; 111 break;
112 case 4: 112 case 4:
113 loc_call(JAZZ_PARALLEL_IRQ, regs, JAZZ_IE_PARALLEL); 113 loc_call(JAZZ_PARALLEL_IRQ, JAZZ_IE_PARALLEL);
114 break; 114 break;
115 case 8: 115 case 8:
116 loc_call(JAZZ_PARALLEL_IRQ, regs, JAZZ_IE_FLOPPY); 116 loc_call(JAZZ_PARALLEL_IRQ, JAZZ_IE_FLOPPY);
117 break; 117 break;
118 case 12: 118 case 12:
119 panic("Unimplemented loc_sound handler"); 119 panic("Unimplemented loc_sound handler");
@@ -122,27 +122,27 @@ static void ll_local_dev(struct pt_regs *regs)
122 panic("Unimplemented loc_video handler"); 122 panic("Unimplemented loc_video handler");
123 break; 123 break;
124 case 20: 124 case 20:
125 loc_call(JAZZ_ETHERNET_IRQ, regs, JAZZ_IE_ETHERNET); 125 loc_call(JAZZ_ETHERNET_IRQ, JAZZ_IE_ETHERNET);
126 break; 126 break;
127 case 24: 127 case 24:
128 loc_call(JAZZ_SCSI_IRQ, regs, JAZZ_IE_SCSI); 128 loc_call(JAZZ_SCSI_IRQ, JAZZ_IE_SCSI);
129 break; 129 break;
130 case 28: 130 case 28:
131 loc_call(JAZZ_KEYBOARD_IRQ, regs, JAZZ_IE_KEYBOARD); 131 loc_call(JAZZ_KEYBOARD_IRQ, JAZZ_IE_KEYBOARD);
132 break; 132 break;
133 case 32: 133 case 32:
134 loc_call(JAZZ_MOUSE_IRQ, regs, JAZZ_IE_MOUSE); 134 loc_call(JAZZ_MOUSE_IRQ, JAZZ_IE_MOUSE);
135 break; 135 break;
136 case 36: 136 case 36:
137 loc_call(JAZZ_SERIAL1_IRQ, regs, JAZZ_IE_SERIAL1); 137 loc_call(JAZZ_SERIAL1_IRQ, JAZZ_IE_SERIAL1);
138 break; 138 break;
139 case 40: 139 case 40:
140 loc_call(JAZZ_SERIAL2_IRQ, regs, JAZZ_IE_SERIAL2); 140 loc_call(JAZZ_SERIAL2_IRQ, JAZZ_IE_SERIAL2);
141 break; 141 break;
142 } 142 }
143} 143}
144 144
145asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 145asmlinkage void plat_irq_dispatch(void)
146{ 146{
147 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; 147 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
148 148
@@ -150,13 +150,13 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
150 write_c0_compare(0); 150 write_c0_compare(0);
151 else if (pending & IE_IRQ4) { 151 else if (pending & IE_IRQ4) {
152 r4030_read_reg32(JAZZ_TIMER_REGISTER); 152 r4030_read_reg32(JAZZ_TIMER_REGISTER);
153 do_IRQ(JAZZ_TIMER_IRQ, regs); 153 do_IRQ(JAZZ_TIMER_IRQ);
154 } else if (pending & IE_IRQ3) 154 } else if (pending & IE_IRQ3)
155 panic("Unimplemented ISA NMI handler"); 155 panic("Unimplemented ISA NMI handler");
156 else if (pending & IE_IRQ2) 156 else if (pending & IE_IRQ2)
157 do_IRQ(r4030_read_reg32(JAZZ_EISA_IRQ_ACK), regs); 157 do_IRQ(r4030_read_reg32(JAZZ_EISA_IRQ_ACK));
158 else if (pending & IE_IRQ1) { 158 else if (pending & IE_IRQ1) {
159 ll_local_dev(regs); 159 ll_local_dev();
160 } else if (unlikely(pending & IE_IRQ0)) 160 } else if (unlikely(pending & IE_IRQ0))
161 panic("Unimplemented local_dma handler"); 161 panic("Unimplemented local_dma handler");
162 else if (pending & IE_SW1) { 162 else if (pending & IE_SW1) {
diff --git a/arch/mips/jazz/setup.c b/arch/mips/jazz/setup.c
index 487a9ea1ef00..6dc4135d6e11 100644
--- a/arch/mips/jazz/setup.c
+++ b/arch/mips/jazz/setup.c
@@ -19,12 +19,12 @@
19#include <linux/fb.h> 19#include <linux/fb.h>
20#include <linux/ide.h> 20#include <linux/ide.h>
21#include <linux/pm.h> 21#include <linux/pm.h>
22#include <linux/screen_info.h>
22 23
23#include <asm/bootinfo.h> 24#include <asm/bootinfo.h>
24#include <asm/irq.h> 25#include <asm/irq.h>
25#include <asm/jazz.h> 26#include <asm/jazz.h>
26#include <asm/jazzdma.h> 27#include <asm/jazzdma.h>
27#include <asm/ptrace.h>
28#include <asm/reboot.h> 28#include <asm/reboot.h>
29#include <asm/io.h> 29#include <asm/io.h>
30#include <asm/pgtable.h> 30#include <asm/pgtable.h>
@@ -45,10 +45,27 @@ void __init plat_time_init(struct irqaction *irq)
45} 45}
46 46
47static struct resource jazz_io_resources[] = { 47static struct resource jazz_io_resources[] = {
48 { "dma1", 0x00, 0x1f, IORESOURCE_BUSY }, 48 {
49 { "timer", 0x40, 0x5f, IORESOURCE_BUSY }, 49 .start = 0x00,
50 { "dma page reg", 0x80, 0x8f, IORESOURCE_BUSY }, 50 .end = 0x1f,
51 { "dma2", 0xc0, 0xdf, IORESOURCE_BUSY }, 51 .name = "dma1",
52 .flags = IORESOURCE_BUSY
53 }, {
54 .start = 0x40,
55 .end = 0x5f,
56 .name = "timer",
57 .end = IORESOURCE_BUSY
58 }, {
59 .start = 0x80,
60 .end = 0x8f,
61 .name = "dma page reg",
62 .flags = IORESOURCE_BUSY
63 }, {
64 .start = 0xc0,
65 .end = 0xdf,
66 .name = "dma2",
67 .flags = IORESOURCE_BUSY
68 }
52}; 69};
53 70
54void __init plat_mem_setup(void) 71void __init plat_mem_setup(void)
@@ -81,8 +98,6 @@ void __init plat_mem_setup(void)
81 _machine_halt = jazz_machine_halt; 98 _machine_halt = jazz_machine_halt;
82 pm_power_off = jazz_machine_power_off; 99 pm_power_off = jazz_machine_power_off;
83 100
84#warning "Somebody should check if screen_info is ok for Jazz."
85
86 screen_info = (struct screen_info) { 101 screen_info = (struct screen_info) {
87 0, 0, /* orig-x, orig-y */ 102 0, 0, /* orig-x, orig-y */
88 0, /* unused */ 103 0, /* unused */
diff --git a/arch/mips/jmr3927/rbhma3100/irq.c b/arch/mips/jmr3927/rbhma3100/irq.c
index 722174481467..39a0243bed9a 100644
--- a/arch/mips/jmr3927/rbhma3100/irq.c
+++ b/arch/mips/jmr3927/rbhma3100/irq.c
@@ -46,6 +46,7 @@
46#include <linux/smp_lock.h> 46#include <linux/smp_lock.h>
47#include <linux/bitops.h> 47#include <linux/bitops.h>
48 48
49#include <asm/irq_regs.h>
49#include <asm/io.h> 50#include <asm/io.h>
50#include <asm/mipsregs.h> 51#include <asm/mipsregs.h>
51#include <asm/system.h> 52#include <asm/system.h>
@@ -239,45 +240,80 @@ struct tb_irq_space jmr3927_ioc_irqspace = {
239 .space_id = 0, 240 .space_id = 0,
240 can_share : 1 241 can_share : 1
241}; 242};
243
242struct tb_irq_space jmr3927_irc_irqspace = { 244struct tb_irq_space jmr3927_irc_irqspace = {
243 .next = NULL, 245 .next = NULL,
244 .start_irqno = JMR3927_IRQ_IRC, 246 .start_irqno = JMR3927_IRQ_IRC,
245 nr_irqs : JMR3927_NR_IRQ_IRC, 247 .nr_irqs = JMR3927_NR_IRQ_IRC,
246 .mask_func = mask_irq_irc, 248 .mask_func = mask_irq_irc,
247 .unmask_func = unmask_irq_irc, 249 .unmask_func = unmask_irq_irc,
248 .name = "on-chip", 250 .name = "on-chip",
249 .space_id = 0, 251 .space_id = 0,
250 can_share : 0 252 .can_share = 0
251}; 253};
252 254
253void jmr3927_spurious(struct pt_regs *regs) 255
256#ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND
257static int tx_branch_likely_bug_count = 0;
258static int have_tx_branch_likely_bug = 0;
259
260static void tx_branch_likely_bug_fixup(void)
261{
262 struct pt_regs *regs = get_irq_regs();
263
264 /* TX39/49-BUG: Under this condition, the insn in delay slot
265 of the branch likely insn is executed (not nullified) even
266 the branch condition is false. */
267 if (!have_tx_branch_likely_bug)
268 return;
269 if ((regs->cp0_epc & 0xfff) == 0xffc &&
270 KSEGX(regs->cp0_epc) != KSEG0 &&
271 KSEGX(regs->cp0_epc) != KSEG1) {
272 unsigned int insn = *(unsigned int*)(regs->cp0_epc - 4);
273 /* beql,bnel,blezl,bgtzl */
274 /* bltzl,bgezl,blezall,bgezall */
275 /* bczfl, bcztl */
276 if ((insn & 0xf0000000) == 0x50000000 ||
277 (insn & 0xfc0e0000) == 0x04020000 ||
278 (insn & 0xf3fe0000) == 0x41020000) {
279 regs->cp0_epc -= 4;
280 tx_branch_likely_bug_count++;
281 printk(KERN_INFO
282 "fix branch-likery bug in %s (insn %08x)\n",
283 current->comm, insn);
284 }
285 }
286}
287#endif
288
289static void jmr3927_spurious(void)
254{ 290{
255#ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND 291#ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND
256 tx_branch_likely_bug_fixup(regs); 292 tx_branch_likely_bug_fixup();
257#endif 293#endif
258 printk(KERN_WARNING "spurious interrupt (cause 0x%lx, pc 0x%lx, ra 0x%lx).\n", 294 printk(KERN_WARNING "spurious interrupt (cause 0x%lx, pc 0x%lx, ra 0x%lx).\n",
259 regs->cp0_cause, regs->cp0_epc, regs->regs[31]); 295 regs->cp0_cause, regs->cp0_epc, regs->regs[31]);
260} 296}
261 297
262asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 298asmlinkage void plat_irq_dispatch(void)
263{ 299{
264 int irq; 300 int irq;
265 301
266#ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND 302#ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND
267 tx_branch_likely_bug_fixup(regs); 303 tx_branch_likely_bug_fixup();
268#endif 304#endif
269 if ((regs->cp0_cause & CAUSEF_IP7) == 0) { 305 if ((regs->cp0_cause & CAUSEF_IP7) == 0) {
270#if 0 306#if 0
271 jmr3927_spurious(regs); 307 jmr3927_spurious();
272#endif 308#endif
273 return; 309 return;
274 } 310 }
275 irq = (regs->cp0_cause >> CAUSEB_IP2) & 0x0f; 311 irq = (regs->cp0_cause >> CAUSEB_IP2) & 0x0f;
276 312
277 do_IRQ(irq + JMR3927_IRQ_IRC, regs); 313 do_IRQ(irq + JMR3927_IRQ_IRC);
278} 314}
279 315
280static irqreturn_t jmr3927_ioc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 316static irqreturn_t jmr3927_ioc_interrupt(int irq, void *dev_id)
281{ 317{
282 unsigned char istat = jmr3927_ioc_reg_in(JMR3927_IOC_INTS2_ADDR); 318 unsigned char istat = jmr3927_ioc_reg_in(JMR3927_IOC_INTS2_ADDR);
283 int i; 319 int i;
@@ -285,7 +321,7 @@ static irqreturn_t jmr3927_ioc_interrupt(int irq, void *dev_id, struct pt_regs *
285 for (i = 0; i < JMR3927_NR_IRQ_IOC; i++) { 321 for (i = 0; i < JMR3927_NR_IRQ_IOC; i++) {
286 if (istat & (1 << i)) { 322 if (istat & (1 << i)) {
287 irq = JMR3927_IRQ_IOC + i; 323 irq = JMR3927_IRQ_IOC + i;
288 do_IRQ(irq, regs); 324 do_IRQ(irq);
289 } 325 }
290 } 326 }
291 return IRQ_HANDLED; 327 return IRQ_HANDLED;
@@ -295,7 +331,7 @@ static struct irqaction ioc_action = {
295 jmr3927_ioc_interrupt, 0, CPU_MASK_NONE, "IOC", NULL, NULL, 331 jmr3927_ioc_interrupt, 0, CPU_MASK_NONE, "IOC", NULL, NULL,
296}; 332};
297 333
298static irqreturn_t jmr3927_isac_interrupt(int irq, void *dev_id, struct pt_regs *regs) 334static irqreturn_t jmr3927_isac_interrupt(int irq, void *dev_id)
299{ 335{
300 unsigned char istat = jmr3927_isac_reg_in(JMR3927_ISAC_INTS2_ADDR); 336 unsigned char istat = jmr3927_isac_reg_in(JMR3927_ISAC_INTS2_ADDR);
301 int i; 337 int i;
@@ -303,7 +339,7 @@ static irqreturn_t jmr3927_isac_interrupt(int irq, void *dev_id, struct pt_regs
303 for (i = 0; i < JMR3927_NR_IRQ_ISAC; i++) { 339 for (i = 0; i < JMR3927_NR_IRQ_ISAC; i++) {
304 if (istat & (1 << i)) { 340 if (istat & (1 << i)) {
305 irq = JMR3927_IRQ_ISAC + i; 341 irq = JMR3927_IRQ_ISAC + i;
306 do_IRQ(irq, regs); 342 do_IRQ(irq);
307 } 343 }
308 } 344 }
309 return IRQ_HANDLED; 345 return IRQ_HANDLED;
@@ -314,7 +350,7 @@ static struct irqaction isac_action = {
314}; 350};
315 351
316 352
317static irqreturn_t jmr3927_isaerr_interrupt(int irq, void * dev_id, struct pt_regs * regs) 353static irqreturn_t jmr3927_isaerr_interrupt(int irq, void *dev_id)
318{ 354{
319 printk(KERN_WARNING "ISA error interrupt (irq 0x%x).\n", irq); 355 printk(KERN_WARNING "ISA error interrupt (irq 0x%x).\n", irq);
320 356
@@ -324,7 +360,7 @@ static struct irqaction isaerr_action = {
324 jmr3927_isaerr_interrupt, 0, CPU_MASK_NONE, "ISA error", NULL, NULL, 360 jmr3927_isaerr_interrupt, 0, CPU_MASK_NONE, "ISA error", NULL, NULL,
325}; 361};
326 362
327static irqreturn_t jmr3927_pcierr_interrupt(int irq, void * dev_id, struct pt_regs * regs) 363static irqreturn_t jmr3927_pcierr_interrupt(int irq, void *dev_id)
328{ 364{
329 printk(KERN_WARNING "PCI error interrupt (irq 0x%x).\n", irq); 365 printk(KERN_WARNING "PCI error interrupt (irq 0x%x).\n", irq);
330 printk(KERN_WARNING "pcistat:%02x, lbstat:%04lx\n", 366 printk(KERN_WARNING "pcistat:%02x, lbstat:%04lx\n",
@@ -439,33 +475,3 @@ void jmr3927_irq_init(u32 irq_base)
439 475
440 jmr3927_irq_base = irq_base; 476 jmr3927_irq_base = irq_base;
441} 477}
442
443#ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND
444static int tx_branch_likely_bug_count = 0;
445static int have_tx_branch_likely_bug = 0;
446void tx_branch_likely_bug_fixup(struct pt_regs *regs)
447{
448 /* TX39/49-BUG: Under this condition, the insn in delay slot
449 of the branch likely insn is executed (not nullified) even
450 the branch condition is false. */
451 if (!have_tx_branch_likely_bug)
452 return;
453 if ((regs->cp0_epc & 0xfff) == 0xffc &&
454 KSEGX(regs->cp0_epc) != KSEG0 &&
455 KSEGX(regs->cp0_epc) != KSEG1) {
456 unsigned int insn = *(unsigned int*)(regs->cp0_epc - 4);
457 /* beql,bnel,blezl,bgtzl */
458 /* bltzl,bgezl,blezall,bgezall */
459 /* bczfl, bcztl */
460 if ((insn & 0xf0000000) == 0x50000000 ||
461 (insn & 0xfc0e0000) == 0x04020000 ||
462 (insn & 0xf3fe0000) == 0x41020000) {
463 regs->cp0_epc -= 4;
464 tx_branch_likely_bug_count++;
465 printk(KERN_INFO
466 "fix branch-likery bug in %s (insn %08x)\n",
467 current->comm, insn);
468 }
469 }
470}
471#endif
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c
index ec28077d5ee2..e9ce5b3721af 100644
--- a/arch/mips/kernel/asm-offsets.c
+++ b/arch/mips/kernel/asm-offsets.c
@@ -93,11 +93,12 @@ void output_thread_info_defines(void)
93 offset("#define TI_TASK ", struct thread_info, task); 93 offset("#define TI_TASK ", struct thread_info, task);
94 offset("#define TI_EXEC_DOMAIN ", struct thread_info, exec_domain); 94 offset("#define TI_EXEC_DOMAIN ", struct thread_info, exec_domain);
95 offset("#define TI_FLAGS ", struct thread_info, flags); 95 offset("#define TI_FLAGS ", struct thread_info, flags);
96 offset("#define TI_TP_VALUE ", struct thread_info, tp_value);
96 offset("#define TI_CPU ", struct thread_info, cpu); 97 offset("#define TI_CPU ", struct thread_info, cpu);
97 offset("#define TI_PRE_COUNT ", struct thread_info, preempt_count); 98 offset("#define TI_PRE_COUNT ", struct thread_info, preempt_count);
98 offset("#define TI_ADDR_LIMIT ", struct thread_info, addr_limit); 99 offset("#define TI_ADDR_LIMIT ", struct thread_info, addr_limit);
99 offset("#define TI_RESTART_BLOCK ", struct thread_info, restart_block); 100 offset("#define TI_RESTART_BLOCK ", struct thread_info, restart_block);
100 offset("#define TI_TP_VALUE ", struct thread_info, tp_value); 101 offset("#define TI_REGS ", struct thread_info, regs);
101 constant("#define _THREAD_SIZE_ORDER ", THREAD_SIZE_ORDER); 102 constant("#define _THREAD_SIZE_ORDER ", THREAD_SIZE_ORDER);
102 constant("#define _THREAD_SIZE ", THREAD_SIZE); 103 constant("#define _THREAD_SIZE ", THREAD_SIZE);
103 constant("#define _THREAD_MASK ", THREAD_MASK); 104 constant("#define _THREAD_MASK ", THREAD_MASK);
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 9fbf8430c849..8485af340ee1 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -135,7 +135,6 @@ static inline void check_wait(void)
135 case CPU_R5000: 135 case CPU_R5000:
136 case CPU_NEVADA: 136 case CPU_NEVADA:
137 case CPU_RM7000: 137 case CPU_RM7000:
138 case CPU_RM9000:
139 case CPU_4KC: 138 case CPU_4KC:
140 case CPU_4KEC: 139 case CPU_4KEC:
141 case CPU_4KSC: 140 case CPU_4KSC:
@@ -164,6 +163,14 @@ static inline void check_wait(void)
164 } else 163 } else
165 printk(" unavailable.\n"); 164 printk(" unavailable.\n");
166 break; 165 break;
166 case CPU_RM9000:
167 if ((c->processor_id & 0x00ff) >= 0x40) {
168 cpu_wait = r4k_wait;
169 printk(" available.\n");
170 } else {
171 printk(" unavailable.\n");
172 }
173 break;
167 default: 174 default:
168 printk(" unavailable.\n"); 175 printk(" unavailable.\n");
169 break; 176 break;
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index 766655f35250..417c08ac76eb 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -20,10 +20,7 @@
20#include <asm/mipsmtregs.h> 20#include <asm/mipsmtregs.h>
21#endif 21#endif
22 22
23#ifdef CONFIG_PREEMPT 23#ifndef CONFIG_PREEMPT
24 .macro preempt_stop
25 .endm
26#else
27 .macro preempt_stop 24 .macro preempt_stop
28 local_irq_disable 25 local_irq_disable
29 .endm 26 .endm
@@ -32,9 +29,16 @@
32 29
33 .text 30 .text
34 .align 5 31 .align 5
32FEXPORT(ret_from_irq)
33 LONG_S s0, TI_REGS($28)
34#ifdef CONFIG_PREEMPT
35FEXPORT(ret_from_exception)
36#else
37 b _ret_from_irq
35FEXPORT(ret_from_exception) 38FEXPORT(ret_from_exception)
36 preempt_stop 39 preempt_stop
37FEXPORT(ret_from_irq) 40#endif
41FEXPORT(_ret_from_irq)
38 LONG_L t0, PT_STATUS(sp) # returning to kernel mode? 42 LONG_L t0, PT_STATUS(sp) # returning to kernel mode?
39 andi t0, t0, KU_USER 43 andi t0, t0, KU_USER
40 beqz t0, resume_kernel 44 beqz t0, resume_kernel
@@ -79,7 +83,6 @@ FEXPORT(syscall_exit)
79FEXPORT(restore_all) # restore full frame 83FEXPORT(restore_all) # restore full frame
80#ifdef CONFIG_MIPS_MT_SMTC 84#ifdef CONFIG_MIPS_MT_SMTC
81/* Detect and execute deferred IPI "interrupts" */ 85/* Detect and execute deferred IPI "interrupts" */
82 move a0,sp
83 jal deferred_smtc_ipi 86 jal deferred_smtc_ipi
84/* Re-arm any temporarily masked interrupts not explicitly "acked" */ 87/* Re-arm any temporarily masked interrupts not explicitly "acked" */
85 mfc0 v0, CP0_TCSTATUS 88 mfc0 v0, CP0_TCSTATUS
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S
index af6ef2fd8300..5baca16993d0 100644
--- a/arch/mips/kernel/genex.S
+++ b/arch/mips/kernel/genex.S
@@ -131,8 +131,9 @@ NESTED(handle_int, PT_SIZE, sp)
131 CLI 131 CLI
132 TRACE_IRQS_OFF 132 TRACE_IRQS_OFF
133 133
134 LONG_L s0, TI_REGS($28)
135 LONG_S sp, TI_REGS($28)
134 PTR_LA ra, ret_from_irq 136 PTR_LA ra, ret_from_irq
135 move a0, sp
136 j plat_irq_dispatch 137 j plat_irq_dispatch
137 END(handle_int) 138 END(handle_int)
138 139
@@ -219,7 +220,9 @@ NESTED(except_vec_vi_handler, 0, sp)
219#endif /* CONFIG_MIPS_MT_SMTC */ 220#endif /* CONFIG_MIPS_MT_SMTC */
220 CLI 221 CLI
221 TRACE_IRQS_OFF 222 TRACE_IRQS_OFF
222 move a0, sp 223
224 LONG_L s0, TI_REGS($28)
225 LONG_S sp, TI_REGS($28)
223 PTR_LA ra, ret_from_irq 226 PTR_LA ra, ret_from_irq
224 jr v0 227 jr v0
225 END(except_vec_vi_handler) 228 END(except_vec_vi_handler)
diff --git a/arch/mips/kernel/irq-msc01.c b/arch/mips/kernel/irq-msc01.c
index 63dfeb41796b..650a80ca3741 100644
--- a/arch/mips/kernel/irq-msc01.c
+++ b/arch/mips/kernel/irq-msc01.c
@@ -1,16 +1,17 @@
1/* 1/*
2 * Copyright (c) 2004 MIPS Inc
3 * Author: chris@mips.com
4 *
5 * This program is free software; you can redistribute it and/or modify it 2 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the 3 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your 4 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. 5 * option) any later version.
6 *
7 * Copyright (c) 2004 MIPS Inc
8 * Author: chris@mips.com
9 *
10 * Copyright (C) 2004, 06 Ralf Baechle <ralf@linux-mips.org>
9 */ 11 */
10#include <linux/module.h> 12#include <linux/module.h>
11#include <linux/interrupt.h> 13#include <linux/interrupt.h>
12#include <linux/kernel.h> 14#include <linux/kernel.h>
13#include <asm/ptrace.h>
14#include <linux/sched.h> 15#include <linux/sched.h>
15#include <linux/kernel_stat.h> 16#include <linux/kernel_stat.h>
16#include <asm/io.h> 17#include <asm/io.h>
@@ -115,14 +116,14 @@ static void end_msc_irq(unsigned int irq)
115/* 116/*
116 * Interrupt handler for interrupts coming from SOC-it. 117 * Interrupt handler for interrupts coming from SOC-it.
117 */ 118 */
118void ll_msc_irq(struct pt_regs *regs) 119void ll_msc_irq(void)
119{ 120{
120 unsigned int irq; 121 unsigned int irq;
121 122
122 /* read the interrupt vector register */ 123 /* read the interrupt vector register */
123 MSCIC_READ(MSC01_IC_VEC, irq); 124 MSCIC_READ(MSC01_IC_VEC, irq);
124 if (irq < 64) 125 if (irq < 64)
125 do_IRQ(irq + irq_base, regs); 126 do_IRQ(irq + irq_base);
126 else { 127 else {
127 /* Ignore spurious interrupt */ 128 /* Ignore spurious interrupt */
128 } 129 }
diff --git a/arch/mips/kernel/irq-mv6434x.c b/arch/mips/kernel/irq-mv6434x.c
index b117e64da64d..37d106202b83 100644
--- a/arch/mips/kernel/irq-mv6434x.c
+++ b/arch/mips/kernel/irq-mv6434x.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Copyright 2002 Momentum Computer 2 * Copyright 2002 Momentum Computer
3 * Author: mdharm@momenco.com 3 * Author: mdharm@momenco.com
4 * Copyright (C) 2004 Ralf Baechle <ralf@linux-mips.org> 4 * Copyright (C) 2004, 06 Ralf Baechle <ralf@linux-mips.org>
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify it 6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the 7 * under the terms of the GNU General Public License as published by the
@@ -15,7 +15,6 @@
15#include <linux/mv643xx.h> 15#include <linux/mv643xx.h>
16#include <linux/sched.h> 16#include <linux/sched.h>
17 17
18#include <asm/ptrace.h>
19#include <asm/io.h> 18#include <asm/io.h>
20#include <asm/irq.h> 19#include <asm/irq.h>
21#include <asm/marvell.h> 20#include <asm/marvell.h>
@@ -113,7 +112,7 @@ static void end_mv64340_irq(unsigned int irq)
113 * Interrupt handler for interrupts coming from the Marvell chip. 112 * Interrupt handler for interrupts coming from the Marvell chip.
114 * It could be built in ethernet ports etc... 113 * It could be built in ethernet ports etc...
115 */ 114 */
116void ll_mv64340_irq(struct pt_regs *regs) 115void ll_mv64340_irq(void)
117{ 116{
118 unsigned int irq_src_low, irq_src_high; 117 unsigned int irq_src_low, irq_src_high;
119 unsigned int irq_mask_low, irq_mask_high; 118 unsigned int irq_mask_low, irq_mask_high;
@@ -129,9 +128,9 @@ void ll_mv64340_irq(struct pt_regs *regs)
129 irq_src_high &= irq_mask_high; 128 irq_src_high &= irq_mask_high;
130 129
131 if (irq_src_low) 130 if (irq_src_low)
132 do_IRQ(ls1bit32(irq_src_low) + irq_base, regs); 131 do_IRQ(ls1bit32(irq_src_low) + irq_base);
133 else 132 else
134 do_IRQ(ls1bit32(irq_src_high) + irq_base + 32, regs); 133 do_IRQ(ls1bit32(irq_src_high) + irq_base + 32);
135} 134}
136 135
137#define shutdown_mv64340_irq disable_mv64340_irq 136#define shutdown_mv64340_irq disable_mv64340_irq
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
index d955aaefbb8e..dd24434392b6 100644
--- a/arch/mips/kernel/irq.c
+++ b/arch/mips/kernel/irq.c
@@ -53,12 +53,12 @@ unsigned long irq_hwmask[NR_IRQS];
53 * SMP cross-CPU interrupts have their own specific 53 * SMP cross-CPU interrupts have their own specific
54 * handlers). 54 * handlers).
55 */ 55 */
56asmlinkage unsigned int do_IRQ(unsigned int irq, struct pt_regs *regs) 56asmlinkage unsigned int do_IRQ(unsigned int irq)
57{ 57{
58 irq_enter(); 58 irq_enter();
59 59
60 __DO_IRQ_SMTC_HOOK(); 60 __DO_IRQ_SMTC_HOOK();
61 __do_IRQ(irq, regs); 61 __do_IRQ(irq);
62 62
63 irq_exit(); 63 irq_exit();
64 64
@@ -110,7 +110,7 @@ skip:
110 return 0; 110 return 0;
111} 111}
112 112
113asmlinkage void spurious_interrupt(struct pt_regs *regs) 113asmlinkage void spurious_interrupt(void)
114{ 114{
115 atomic_inc(&irq_err_count); 115 atomic_inc(&irq_err_count);
116} 116}
diff --git a/arch/mips/kernel/proc.c b/arch/mips/kernel/proc.c
index d8beef107902..4ed37ba19731 100644
--- a/arch/mips/kernel/proc.c
+++ b/arch/mips/kernel/proc.c
@@ -89,9 +89,9 @@ static const char *cpu_name[] = {
89 89
90static int show_cpuinfo(struct seq_file *m, void *v) 90static int show_cpuinfo(struct seq_file *m, void *v)
91{ 91{
92 unsigned int version = current_cpu_data.processor_id;
93 unsigned int fp_vers = current_cpu_data.fpu_id;
94 unsigned long n = (unsigned long) v - 1; 92 unsigned long n = (unsigned long) v - 1;
93 unsigned int version = cpu_data[n].processor_id;
94 unsigned int fp_vers = cpu_data[n].fpu_id;
95 char fmt [64]; 95 char fmt [64];
96 96
97#ifdef CONFIG_SMP 97#ifdef CONFIG_SMP
@@ -107,9 +107,9 @@ static int show_cpuinfo(struct seq_file *m, void *v)
107 107
108 seq_printf(m, "processor\t\t: %ld\n", n); 108 seq_printf(m, "processor\t\t: %ld\n", n);
109 sprintf(fmt, "cpu model\t\t: %%s V%%d.%%d%s\n", 109 sprintf(fmt, "cpu model\t\t: %%s V%%d.%%d%s\n",
110 cpu_has_fpu ? " FPU V%d.%d" : ""); 110 cpu_data[n].options & MIPS_CPU_FPU ? " FPU V%d.%d" : "");
111 seq_printf(m, fmt, cpu_name[current_cpu_data.cputype <= CPU_LAST ? 111 seq_printf(m, fmt, cpu_name[cpu_data[n].cputype <= CPU_LAST ?
112 current_cpu_data.cputype : CPU_UNKNOWN], 112 cpu_data[n].cputype : CPU_UNKNOWN],
113 (version >> 4) & 0x0f, version & 0x0f, 113 (version >> 4) & 0x0f, version & 0x0f,
114 (fp_vers >> 4) & 0x0f, fp_vers & 0x0f); 114 (fp_vers >> 4) & 0x0f, fp_vers & 0x0f);
115 seq_printf(m, "BogoMIPS\t\t: %lu.%02lu\n", 115 seq_printf(m, "BogoMIPS\t\t: %lu.%02lu\n",
@@ -118,7 +118,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
118 seq_printf(m, "wait instruction\t: %s\n", cpu_wait ? "yes" : "no"); 118 seq_printf(m, "wait instruction\t: %s\n", cpu_wait ? "yes" : "no");
119 seq_printf(m, "microsecond timers\t: %s\n", 119 seq_printf(m, "microsecond timers\t: %s\n",
120 cpu_has_counter ? "yes" : "no"); 120 cpu_has_counter ? "yes" : "no");
121 seq_printf(m, "tlb_entries\t\t: %d\n", current_cpu_data.tlbsize); 121 seq_printf(m, "tlb_entries\t\t: %d\n", cpu_data[n].tlbsize);
122 seq_printf(m, "extra interrupt vector\t: %s\n", 122 seq_printf(m, "extra interrupt vector\t: %s\n",
123 cpu_has_divec ? "yes" : "no"); 123 cpu_has_divec ? "yes" : "no");
124 seq_printf(m, "hardware watchpoint\t: %s\n", 124 seq_printf(m, "hardware watchpoint\t: %s\n",
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 045d987bc683..9f307eb1a31e 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -115,7 +115,7 @@ void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp)
115 status |= KU_USER; 115 status |= KU_USER;
116 regs->cp0_status = status; 116 regs->cp0_status = status;
117 clear_used_math(); 117 clear_used_math();
118 lose_fpu(); 118 clear_fpu_owner();
119 if (cpu_has_dsp) 119 if (cpu_has_dsp)
120 __init_dsp(); 120 __init_dsp();
121 regs->cp0_epc = pc; 121 regs->cp0_epc = pc;
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
index 362d1728e531..258d74fd0b63 100644
--- a/arch/mips/kernel/ptrace.c
+++ b/arch/mips/kernel/ptrace.c
@@ -106,6 +106,7 @@ int ptrace_setregs (struct task_struct *child, __s64 __user *data)
106int ptrace_getfpregs (struct task_struct *child, __u32 __user *data) 106int ptrace_getfpregs (struct task_struct *child, __u32 __user *data)
107{ 107{
108 int i; 108 int i;
109 unsigned int tmp;
109 110
110 if (!access_ok(VERIFY_WRITE, data, 33 * 8)) 111 if (!access_ok(VERIFY_WRITE, data, 33 * 8))
111 return -EIO; 112 return -EIO;
@@ -121,10 +122,10 @@ int ptrace_getfpregs (struct task_struct *child, __u32 __user *data)
121 122
122 __put_user (child->thread.fpu.fcr31, data + 64); 123 __put_user (child->thread.fpu.fcr31, data + 64);
123 124
125 preempt_disable();
124 if (cpu_has_fpu) { 126 if (cpu_has_fpu) {
125 unsigned int flags, tmp; 127 unsigned int flags;
126 128
127 preempt_disable();
128 if (cpu_has_mipsmt) { 129 if (cpu_has_mipsmt) {
129 unsigned int vpflags = dvpe(); 130 unsigned int vpflags = dvpe();
130 flags = read_c0_status(); 131 flags = read_c0_status();
@@ -138,11 +139,11 @@ int ptrace_getfpregs (struct task_struct *child, __u32 __user *data)
138 __asm__ __volatile__("cfc1\t%0,$0" : "=r" (tmp)); 139 __asm__ __volatile__("cfc1\t%0,$0" : "=r" (tmp));
139 write_c0_status(flags); 140 write_c0_status(flags);
140 } 141 }
141 preempt_enable();
142 __put_user (tmp, data + 65);
143 } else { 142 } else {
144 __put_user ((__u32) 0, data + 65); 143 tmp = 0;
145 } 144 }
145 preempt_enable();
146 __put_user (tmp, data + 65);
146 147
147 return 0; 148 return 0;
148} 149}
@@ -245,16 +246,17 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
245 unsigned int mtflags; 246 unsigned int mtflags;
246#endif /* CONFIG_MIPS_MT_SMTC */ 247#endif /* CONFIG_MIPS_MT_SMTC */
247 248
248 if (!cpu_has_fpu) 249 preempt_disable();
250 if (!cpu_has_fpu) {
251 preempt_enable();
249 break; 252 break;
253 }
250 254
251#ifdef CONFIG_MIPS_MT_SMTC 255#ifdef CONFIG_MIPS_MT_SMTC
252 /* Read-modify-write of Status must be atomic */ 256 /* Read-modify-write of Status must be atomic */
253 local_irq_save(irqflags); 257 local_irq_save(irqflags);
254 mtflags = dmt(); 258 mtflags = dmt();
255#endif /* CONFIG_MIPS_MT_SMTC */ 259#endif /* CONFIG_MIPS_MT_SMTC */
256
257 preempt_disable();
258 if (cpu_has_mipsmt) { 260 if (cpu_has_mipsmt) {
259 unsigned int vpflags = dvpe(); 261 unsigned int vpflags = dvpe();
260 flags = read_c0_status(); 262 flags = read_c0_status();
diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c
index f40ecd8be05f..d9a39c169450 100644
--- a/arch/mips/kernel/ptrace32.c
+++ b/arch/mips/kernel/ptrace32.c
@@ -175,7 +175,9 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
175 unsigned int mtflags; 175 unsigned int mtflags;
176#endif /* CONFIG_MIPS_MT_SMTC */ 176#endif /* CONFIG_MIPS_MT_SMTC */
177 177
178 preempt_disable();
178 if (!cpu_has_fpu) { 179 if (!cpu_has_fpu) {
180 preempt_enable();
179 tmp = 0; 181 tmp = 0;
180 break; 182 break;
181 } 183 }
@@ -186,7 +188,6 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
186 mtflags = dmt(); 188 mtflags = dmt();
187#endif /* CONFIG_MIPS_MT_SMTC */ 189#endif /* CONFIG_MIPS_MT_SMTC */
188 190
189 preempt_disable();
190 if (cpu_has_mipsmt) { 191 if (cpu_has_mipsmt) {
191 unsigned int vpflags = dvpe(); 192 unsigned int vpflags = dvpe();
192 flags = read_c0_status(); 193 flags = read_c0_status();
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c
index cdab1b2cd134..8c8c8324f775 100644
--- a/arch/mips/kernel/rtlx.c
+++ b/arch/mips/kernel/rtlx.c
@@ -61,16 +61,16 @@ static int sp_stopping = 0;
61 61
62extern void *vpe_get_shared(int index); 62extern void *vpe_get_shared(int index);
63 63
64static void rtlx_dispatch(struct pt_regs *regs) 64static void rtlx_dispatch(void)
65{ 65{
66 do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ, regs); 66 do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ);
67} 67}
68 68
69 69
70/* Interrupt handler may be called before rtlx_init has otherwise had 70/* Interrupt handler may be called before rtlx_init has otherwise had
71 a chance to run. 71 a chance to run.
72*/ 72*/
73static irqreturn_t rtlx_interrupt(int irq, void *dev_id, struct pt_regs *regs) 73static irqreturn_t rtlx_interrupt(int irq, void *dev_id)
74{ 74{
75 int i; 75 int i;
76 76
diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c
index 766253c44f3f..3b5f3b632622 100644
--- a/arch/mips/kernel/smp-mt.c
+++ b/arch/mips/kernel/smp-mt.c
@@ -106,22 +106,22 @@ void __init sanitize_tlb_entries(void)
106 clear_c0_mvpcontrol(MVPCONTROL_VPC); 106 clear_c0_mvpcontrol(MVPCONTROL_VPC);
107} 107}
108 108
109static void ipi_resched_dispatch (struct pt_regs *regs) 109static void ipi_resched_dispatch(void)
110{ 110{
111 do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ, regs); 111 do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ);
112} 112}
113 113
114static void ipi_call_dispatch (struct pt_regs *regs) 114static void ipi_call_dispatch(void)
115{ 115{
116 do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_CALL_IRQ, regs); 116 do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_CALL_IRQ);
117} 117}
118 118
119irqreturn_t ipi_resched_interrupt(int irq, void *dev_id, struct pt_regs *regs) 119static irqreturn_t ipi_resched_interrupt(int irq, void *dev_id)
120{ 120{
121 return IRQ_HANDLED; 121 return IRQ_HANDLED;
122} 122}
123 123
124irqreturn_t ipi_call_interrupt(int irq, void *dev_id, struct pt_regs *regs) 124static irqreturn_t ipi_call_interrupt(int irq, void *dev_id)
125{ 125{
126 smp_call_function_interrupt(); 126 smp_call_function_interrupt();
127 127
@@ -250,8 +250,8 @@ void __init plat_prepare_cpus(unsigned int max_cpus)
250{ 250{
251 /* set up ipi interrupts */ 251 /* set up ipi interrupts */
252 if (cpu_has_vint) { 252 if (cpu_has_vint) {
253 set_vi_handler (MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch); 253 set_vi_handler(MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch);
254 set_vi_handler (MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch); 254 set_vi_handler(MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch);
255 } 255 }
256 256
257 cpu_ipi_resched_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ; 257 cpu_ipi_resched_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ;
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 221895802dca..1af3612a1ce8 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -467,14 +467,18 @@ static DEFINE_PER_CPU(struct cpu, cpu_devices);
467 467
468static int __init topology_init(void) 468static int __init topology_init(void)
469{ 469{
470 int cpu; 470 int i, ret;
471 int ret;
472 471
473 for_each_present_cpu(cpu) { 472#ifdef CONFIG_NUMA
474 ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu); 473 for_each_online_node(i)
474 register_one_node(i);
475#endif /* CONFIG_NUMA */
476
477 for_each_present_cpu(i) {
478 ret = register_cpu(&per_cpu(cpu_devices, i), i);
475 if (ret) 479 if (ret)
476 printk(KERN_WARNING "topology_init: register_cpu %d " 480 printk(KERN_WARNING "topology_init: register_cpu %d "
477 "failed (%d)\n", cpu, ret); 481 "failed (%d)\n", i, ret);
478 } 482 }
479 483
480 return 0; 484 return 0;
diff --git a/arch/mips/kernel/smtc-asm.S b/arch/mips/kernel/smtc-asm.S
index 76cb31d57482..1cb9441f1474 100644
--- a/arch/mips/kernel/smtc-asm.S
+++ b/arch/mips/kernel/smtc-asm.S
@@ -97,15 +97,12 @@ FEXPORT(__smtc_ipi_vector)
97 SAVE_ALL 97 SAVE_ALL
98 CLI 98 CLI
99 TRACE_IRQS_OFF 99 TRACE_IRQS_OFF
100 move a0,sp
101 /* Function to be invoked passed stack pad slot 5 */ 100 /* Function to be invoked passed stack pad slot 5 */
102 lw t0,PT_PADSLOT5(sp) 101 lw t0,PT_PADSLOT5(sp)
103 /* Argument from sender passed in stack pad slot 4 */ 102 /* Argument from sender passed in stack pad slot 4 */
104 lw a1,PT_PADSLOT4(sp) 103 lw a0,PT_PADSLOT4(sp)
105 jalr t0 104 PTR_LA ra, _ret_from_irq
106 nop 105 jr t0
107 j ret_from_irq
108 nop
109 106
110/* 107/*
111 * Called from idle loop to provoke processing of queued IPIs 108 * Called from idle loop to provoke processing of queued IPIs
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c
index 604bcc5cb7c8..cc1f7474f7d7 100644
--- a/arch/mips/kernel/smtc.c
+++ b/arch/mips/kernel/smtc.c
@@ -82,7 +82,7 @@ struct smtc_ipi_q freeIPIq;
82 82
83/* Forward declarations */ 83/* Forward declarations */
84 84
85void ipi_decode(struct pt_regs *, struct smtc_ipi *); 85void ipi_decode(struct smtc_ipi *);
86void post_direct_ipi(int cpu, struct smtc_ipi *pipi); 86void post_direct_ipi(int cpu, struct smtc_ipi *pipi);
87void setup_cross_vpe_interrupts(void); 87void setup_cross_vpe_interrupts(void);
88void init_smtc_stats(void); 88void init_smtc_stats(void);
@@ -820,19 +820,19 @@ void post_direct_ipi(int cpu, struct smtc_ipi *pipi)
820 write_tc_c0_tcrestart(__smtc_ipi_vector); 820 write_tc_c0_tcrestart(__smtc_ipi_vector);
821} 821}
822 822
823void ipi_resched_interrupt(struct pt_regs *regs) 823static void ipi_resched_interrupt(void)
824{ 824{
825 /* Return from interrupt should be enough to cause scheduler check */ 825 /* Return from interrupt should be enough to cause scheduler check */
826} 826}
827 827
828 828
829void ipi_call_interrupt(struct pt_regs *regs) 829static void ipi_call_interrupt(void)
830{ 830{
831 /* Invoke generic function invocation code in smp.c */ 831 /* Invoke generic function invocation code in smp.c */
832 smp_call_function_interrupt(); 832 smp_call_function_interrupt();
833} 833}
834 834
835void ipi_decode(struct pt_regs *regs, struct smtc_ipi *pipi) 835void ipi_decode(struct smtc_ipi *pipi)
836{ 836{
837 void *arg_copy = pipi->arg; 837 void *arg_copy = pipi->arg;
838 int type_copy = pipi->type; 838 int type_copy = pipi->type;
@@ -846,15 +846,15 @@ void ipi_decode(struct pt_regs *regs, struct smtc_ipi *pipi)
846#ifdef SMTC_IDLE_HOOK_DEBUG 846#ifdef SMTC_IDLE_HOOK_DEBUG
847 clock_hang_reported[dest_copy] = 0; 847 clock_hang_reported[dest_copy] = 0;
848#endif /* SMTC_IDLE_HOOK_DEBUG */ 848#endif /* SMTC_IDLE_HOOK_DEBUG */
849 local_timer_interrupt(0, NULL, regs); 849 local_timer_interrupt(0, NULL);
850 break; 850 break;
851 case LINUX_SMP_IPI: 851 case LINUX_SMP_IPI:
852 switch ((int)arg_copy) { 852 switch ((int)arg_copy) {
853 case SMP_RESCHEDULE_YOURSELF: 853 case SMP_RESCHEDULE_YOURSELF:
854 ipi_resched_interrupt(regs); 854 ipi_resched_interrupt();
855 break; 855 break;
856 case SMP_CALL_FUNCTION: 856 case SMP_CALL_FUNCTION:
857 ipi_call_interrupt(regs); 857 ipi_call_interrupt();
858 break; 858 break;
859 default: 859 default:
860 printk("Impossible SMTC IPI Argument 0x%x\n", 860 printk("Impossible SMTC IPI Argument 0x%x\n",
@@ -868,7 +868,7 @@ void ipi_decode(struct pt_regs *regs, struct smtc_ipi *pipi)
868 } 868 }
869} 869}
870 870
871void deferred_smtc_ipi(struct pt_regs *regs) 871void deferred_smtc_ipi(void)
872{ 872{
873 struct smtc_ipi *pipi; 873 struct smtc_ipi *pipi;
874 unsigned long flags; 874 unsigned long flags;
@@ -883,7 +883,7 @@ void deferred_smtc_ipi(struct pt_regs *regs)
883 while((pipi = smtc_ipi_dq(&IPIQ[q])) != NULL) { 883 while((pipi = smtc_ipi_dq(&IPIQ[q])) != NULL) {
884 /* ipi_decode() should be called with interrupts off */ 884 /* ipi_decode() should be called with interrupts off */
885 local_irq_save(flags); 885 local_irq_save(flags);
886 ipi_decode(regs, pipi); 886 ipi_decode(pipi);
887 local_irq_restore(flags); 887 local_irq_restore(flags);
888 } 888 }
889 } 889 }
@@ -917,7 +917,7 @@ void smtc_timer_broadcast(int vpe)
917 917
918static int cpu_ipi_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_IRQ; 918static int cpu_ipi_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_IRQ;
919 919
920static irqreturn_t ipi_interrupt(int irq, void *dev_idm, struct pt_regs *regs) 920static irqreturn_t ipi_interrupt(int irq, void *dev_idm)
921{ 921{
922 int my_vpe = cpu_data[smp_processor_id()].vpe_id; 922 int my_vpe = cpu_data[smp_processor_id()].vpe_id;
923 int my_tc = cpu_data[smp_processor_id()].tc_id; 923 int my_tc = cpu_data[smp_processor_id()].tc_id;
@@ -978,7 +978,7 @@ static irqreturn_t ipi_interrupt(int irq, void *dev_idm, struct pt_regs *regs)
978 * with interrupts off 978 * with interrupts off
979 */ 979 */
980 local_irq_save(flags); 980 local_irq_save(flags);
981 ipi_decode(regs, pipi); 981 ipi_decode(pipi);
982 local_irq_restore(flags); 982 local_irq_restore(flags);
983 } 983 }
984 } 984 }
@@ -987,9 +987,9 @@ static irqreturn_t ipi_interrupt(int irq, void *dev_idm, struct pt_regs *regs)
987 return IRQ_HANDLED; 987 return IRQ_HANDLED;
988} 988}
989 989
990static void ipi_irq_dispatch(struct pt_regs *regs) 990static void ipi_irq_dispatch(void)
991{ 991{
992 do_IRQ(cpu_ipi_irq, regs); 992 do_IRQ(cpu_ipi_irq);
993} 993}
994 994
995static struct irqaction irq_ipi; 995static struct irqaction irq_ipi;
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index a8340802f2d7..debe86c2f691 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -322,18 +322,17 @@ static long last_rtc_update;
322 * a broadcasted inter-processor interrupt which itself is triggered 322 * a broadcasted inter-processor interrupt which itself is triggered
323 * by the global timer interrupt. 323 * by the global timer interrupt.
324 */ 324 */
325void local_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 325void local_timer_interrupt(int irq, void *dev_id)
326{ 326{
327 if (current->pid) 327 profile_tick(CPU_PROFILING);
328 profile_tick(CPU_PROFILING, regs); 328 update_process_times(user_mode(get_irq_regs()));
329 update_process_times(user_mode(regs));
330} 329}
331 330
332/* 331/*
333 * High-level timer interrupt service routines. This function 332 * High-level timer interrupt service routines. This function
334 * is set as irqaction->handler and is invoked through do_IRQ. 333 * is set as irqaction->handler and is invoked through do_IRQ.
335 */ 334 */
336irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 335irqreturn_t timer_interrupt(int irq, void *dev_id)
337{ 336{
338 unsigned long j; 337 unsigned long j;
339 unsigned int count; 338 unsigned int count;
@@ -419,22 +418,22 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
419 * In SMP mode, local_timer_interrupt() is invoked by appropriate 418 * In SMP mode, local_timer_interrupt() is invoked by appropriate
420 * low-level local timer interrupt handler. 419 * low-level local timer interrupt handler.
421 */ 420 */
422 local_timer_interrupt(irq, dev_id, regs); 421 local_timer_interrupt(irq, dev_id);
423 422
424 return IRQ_HANDLED; 423 return IRQ_HANDLED;
425} 424}
426 425
427int null_perf_irq(struct pt_regs *regs) 426int null_perf_irq(void)
428{ 427{
429 return 0; 428 return 0;
430} 429}
431 430
432int (*perf_irq)(struct pt_regs *regs) = null_perf_irq; 431int (*perf_irq)(void) = null_perf_irq;
433 432
434EXPORT_SYMBOL(null_perf_irq); 433EXPORT_SYMBOL(null_perf_irq);
435EXPORT_SYMBOL(perf_irq); 434EXPORT_SYMBOL(perf_irq);
436 435
437asmlinkage void ll_timer_interrupt(int irq, struct pt_regs *regs) 436asmlinkage void ll_timer_interrupt(int irq)
438{ 437{
439 int r2 = cpu_has_mips_r2; 438 int r2 = cpu_has_mips_r2;
440 439
@@ -448,25 +447,25 @@ asmlinkage void ll_timer_interrupt(int irq, struct pt_regs *regs)
448 * performance counter interrupt handler anyway. 447 * performance counter interrupt handler anyway.
449 */ 448 */
450 if (!r2 || (read_c0_cause() & (1 << 26))) 449 if (!r2 || (read_c0_cause() & (1 << 26)))
451 if (perf_irq(regs)) 450 if (perf_irq())
452 goto out; 451 goto out;
453 452
454 /* we keep interrupt disabled all the time */ 453 /* we keep interrupt disabled all the time */
455 if (!r2 || (read_c0_cause() & (1 << 30))) 454 if (!r2 || (read_c0_cause() & (1 << 30)))
456 timer_interrupt(irq, NULL, regs); 455 timer_interrupt(irq, NULL);
457 456
458out: 457out:
459 irq_exit(); 458 irq_exit();
460} 459}
461 460
462asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs) 461asmlinkage void ll_local_timer_interrupt(int irq)
463{ 462{
464 irq_enter(); 463 irq_enter();
465 if (smp_processor_id() != 0) 464 if (smp_processor_id() != 0)
466 kstat_this_cpu.irqs[irq]++; 465 kstat_this_cpu.irqs[irq]++;
467 466
468 /* we keep interrupt disabled all the time */ 467 /* we keep interrupt disabled all the time */
469 local_timer_interrupt(irq, NULL, regs); 468 local_timer_interrupt(irq, NULL);
470 469
471 irq_exit(); 470 irq_exit();
472} 471}
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index b7292a56d4cd..cce8313ec27d 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -66,7 +66,7 @@ extern asmlinkage void handle_mcheck(void);
66extern asmlinkage void handle_reserved(void); 66extern asmlinkage void handle_reserved(void);
67 67
68extern int fpu_emulator_cop1Handler(struct pt_regs *xcp, 68extern int fpu_emulator_cop1Handler(struct pt_regs *xcp,
69 struct mips_fpu_struct *ctx); 69 struct mips_fpu_struct *ctx, int has_fpu);
70 70
71void (*board_be_init)(void); 71void (*board_be_init)(void);
72int (*board_be_handler)(struct pt_regs *regs, int is_fixup); 72int (*board_be_handler)(struct pt_regs *regs, int is_fixup);
@@ -641,7 +641,7 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31)
641 preempt_enable(); 641 preempt_enable();
642 642
643 /* Run the emulator */ 643 /* Run the emulator */
644 sig = fpu_emulator_cop1Handler (regs, &current->thread.fpu); 644 sig = fpu_emulator_cop1Handler (regs, &current->thread.fpu, 1);
645 645
646 preempt_disable(); 646 preempt_disable();
647 647
@@ -791,11 +791,13 @@ asmlinkage void do_cpu(struct pt_regs *regs)
791 set_used_math(); 791 set_used_math();
792 } 792 }
793 793
794 preempt_enable(); 794 if (cpu_has_fpu) {
795 795 preempt_enable();
796 if (!cpu_has_fpu) { 796 } else {
797 int sig = fpu_emulator_cop1Handler(regs, 797 int sig;
798 &current->thread.fpu); 798 preempt_enable();
799 sig = fpu_emulator_cop1Handler(regs,
800 &current->thread.fpu, 0);
799 if (sig) 801 if (sig)
800 force_sig(sig, current); 802 force_sig(sig, current);
801#ifdef CONFIG_MIPS_MT_FPAFF 803#ifdef CONFIG_MIPS_MT_FPAFF
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c
index 456be8fc961a..a144a002dcc4 100644
--- a/arch/mips/lasat/interrupt.c
+++ b/arch/mips/lasat/interrupt.c
@@ -108,14 +108,14 @@ static unsigned long get_int_status_200(void)
108 return int_status; 108 return int_status;
109} 109}
110 110
111asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 111asmlinkage void plat_irq_dispatch(void)
112{ 112{
113 unsigned long int_status; 113 unsigned long int_status;
114 unsigned int cause = read_c0_cause(); 114 unsigned int cause = read_c0_cause();
115 int irq; 115 int irq;
116 116
117 if (cause & CAUSEF_IP7) { /* R4000 count / compare IRQ */ 117 if (cause & CAUSEF_IP7) { /* R4000 count / compare IRQ */
118 ll_timer_interrupt(7, regs); 118 ll_timer_interrupt(7);
119 return; 119 return;
120 } 120 }
121 121
@@ -125,7 +125,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
125 if (int_status) { 125 if (int_status) {
126 irq = ls1bit32(int_status); 126 irq = ls1bit32(int_status);
127 127
128 do_IRQ(irq, regs); 128 do_IRQ(irq);
129 } 129 }
130} 130}
131 131
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index 3f0d5d26d506..80531b35cd61 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -38,8 +38,6 @@
38 38
39#include <asm/inst.h> 39#include <asm/inst.h>
40#include <asm/bootinfo.h> 40#include <asm/bootinfo.h>
41#include <asm/cpu.h>
42#include <asm/cpu-features.h>
43#include <asm/processor.h> 41#include <asm/processor.h>
44#include <asm/ptrace.h> 42#include <asm/ptrace.h>
45#include <asm/signal.h> 43#include <asm/signal.h>
@@ -1233,7 +1231,8 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
1233 return 0; 1231 return 0;
1234} 1232}
1235 1233
1236int fpu_emulator_cop1Handler(struct pt_regs *xcp, struct mips_fpu_struct *ctx) 1234int fpu_emulator_cop1Handler(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
1235 int has_fpu)
1237{ 1236{
1238 unsigned long oldepc, prevepc; 1237 unsigned long oldepc, prevepc;
1239 mips_instruction insn; 1238 mips_instruction insn;
@@ -1263,7 +1262,7 @@ int fpu_emulator_cop1Handler(struct pt_regs *xcp, struct mips_fpu_struct *ctx)
1263 ieee754_csr.rm = mips_rm[ieee754_csr.rm]; 1262 ieee754_csr.rm = mips_rm[ieee754_csr.rm];
1264 } 1263 }
1265 1264
1266 if (cpu_has_fpu) 1265 if (has_fpu)
1267 break; 1266 break;
1268 if (sig) 1267 if (sig)
1269 break; 1268 break;
diff --git a/arch/mips/mips-boards/atlas/atlas_int.c b/arch/mips/mips-boards/atlas/atlas_int.c
index a020a3cb4f4b..be624b8c3b0e 100644
--- a/arch/mips/mips-boards/atlas/atlas_int.c
+++ b/arch/mips/mips-boards/atlas/atlas_int.c
@@ -101,7 +101,7 @@ static inline int ls1bit32(unsigned int x)
101 return b; 101 return b;
102} 102}
103 103
104static inline void atlas_hw0_irqdispatch(struct pt_regs *regs) 104static inline void atlas_hw0_irqdispatch(void)
105{ 105{
106 unsigned long int_status; 106 unsigned long int_status;
107 int irq; 107 int irq;
@@ -116,7 +116,7 @@ static inline void atlas_hw0_irqdispatch(struct pt_regs *regs)
116 116
117 DEBUG_INT("atlas_hw0_irqdispatch: irq=%d\n", irq); 117 DEBUG_INT("atlas_hw0_irqdispatch: irq=%d\n", irq);
118 118
119 do_IRQ(irq, regs); 119 do_IRQ(irq);
120} 120}
121 121
122static inline int clz(unsigned long x) 122static inline int clz(unsigned long x)
@@ -188,7 +188,7 @@ static inline unsigned int irq_ffs(unsigned int pending)
188 * then we just return, if multiple IRQs are pending then we will just take 188 * then we just return, if multiple IRQs are pending then we will just take
189 * another exception, big deal. 189 * another exception, big deal.
190 */ 190 */
191asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 191asmlinkage void plat_irq_dispatch(void)
192{ 192{
193 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; 193 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
194 int irq; 194 int irq;
@@ -196,11 +196,11 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
196 irq = irq_ffs(pending); 196 irq = irq_ffs(pending);
197 197
198 if (irq == MIPSCPU_INT_ATLAS) 198 if (irq == MIPSCPU_INT_ATLAS)
199 atlas_hw0_irqdispatch(regs); 199 atlas_hw0_irqdispatch();
200 else if (irq >= 0) 200 else if (irq >= 0)
201 do_IRQ(MIPSCPU_INT_BASE + irq, regs); 201 do_IRQ(MIPSCPU_INT_BASE + irq);
202 else 202 else
203 spurious_interrupt(regs); 203 spurious_interrupt();
204} 204}
205 205
206static inline void init_atlas_irqs (int base) 206static inline void init_atlas_irqs (int base)
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c
index 8d15861fce61..6f8a9fe7c1e3 100644
--- a/arch/mips/mips-boards/generic/time.c
+++ b/arch/mips/mips-boards/generic/time.c
@@ -30,7 +30,6 @@
30 30
31#include <asm/mipsregs.h> 31#include <asm/mipsregs.h>
32#include <asm/mipsmtregs.h> 32#include <asm/mipsmtregs.h>
33#include <asm/ptrace.h>
34#include <asm/hardirq.h> 33#include <asm/hardirq.h>
35#include <asm/irq.h> 34#include <asm/irq.h>
36#include <asm/div64.h> 35#include <asm/div64.h>
@@ -82,19 +81,19 @@ static inline void scroll_display_message(void)
82 } 81 }
83} 82}
84 83
85static void mips_timer_dispatch (struct pt_regs *regs) 84static void mips_timer_dispatch(void)
86{ 85{
87 do_IRQ (mips_cpu_timer_irq, regs); 86 do_IRQ(mips_cpu_timer_irq);
88} 87}
89 88
90/* 89/*
91 * Redeclare until I get around mopping the timer code insanity on MIPS. 90 * Redeclare until I get around mopping the timer code insanity on MIPS.
92 */ 91 */
93extern int null_perf_irq(struct pt_regs *regs); 92extern int null_perf_irq(void);
94 93
95extern int (*perf_irq)(struct pt_regs *regs); 94extern int (*perf_irq)(void);
96 95
97irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 96irqreturn_t mips_timer_interrupt(int irq, void *dev_id)
98{ 97{
99 int cpu = smp_processor_id(); 98 int cpu = smp_processor_id();
100 99
@@ -119,7 +118,7 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
119 * perf counter overflow, or both. 118 * perf counter overflow, or both.
120 */ 119 */
121 if (read_c0_cause() & (1 << 26)) 120 if (read_c0_cause() & (1 << 26))
122 perf_irq(regs); 121 perf_irq();
123 122
124 if (read_c0_cause() & (1 << 30)) { 123 if (read_c0_cause() & (1 << 30)) {
125 /* If timer interrupt, make it de-assert */ 124 /* If timer interrupt, make it de-assert */
@@ -139,13 +138,13 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
139 * the tick on VPE 0 to run the full timer_interrupt(). 138 * the tick on VPE 0 to run the full timer_interrupt().
140 */ 139 */
141 if (cpu_data[cpu].vpe_id == 0) { 140 if (cpu_data[cpu].vpe_id == 0) {
142 timer_interrupt(irq, NULL, regs); 141 timer_interrupt(irq, NULL);
143 smtc_timer_broadcast(cpu_data[cpu].vpe_id); 142 smtc_timer_broadcast(cpu_data[cpu].vpe_id);
144 scroll_display_message(); 143 scroll_display_message();
145 } else { 144 } else {
146 write_c0_compare(read_c0_count() + 145 write_c0_compare(read_c0_count() +
147 (mips_hpt_frequency/HZ)); 146 (mips_hpt_frequency/HZ));
148 local_timer_interrupt(irq, dev_id, regs); 147 local_timer_interrupt(irq, dev_id);
149 smtc_timer_broadcast(cpu_data[cpu].vpe_id); 148 smtc_timer_broadcast(cpu_data[cpu].vpe_id);
150 } 149 }
151 } 150 }
@@ -159,12 +158,12 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
159 * timer int. 158 * timer int.
160 */ 159 */
161 if (!r2 || (read_c0_cause() & (1 << 26))) 160 if (!r2 || (read_c0_cause() & (1 << 26)))
162 if (perf_irq(regs)) 161 if (perf_irq())
163 goto out; 162 goto out;
164 163
165 /* we keep interrupt disabled all the time */ 164 /* we keep interrupt disabled all the time */
166 if (!r2 || (read_c0_cause() & (1 << 30))) 165 if (!r2 || (read_c0_cause() & (1 << 30)))
167 timer_interrupt(irq, NULL, regs); 166 timer_interrupt(irq, NULL);
168 167
169 scroll_display_message(); 168 scroll_display_message();
170 } else { 169 } else {
@@ -180,7 +179,7 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
180 /* 179 /*
181 * Other CPUs should do profiling and process accounting 180 * Other CPUs should do profiling and process accounting
182 */ 181 */
183 local_timer_interrupt(irq, dev_id, regs); 182 local_timer_interrupt(irq, dev_id);
184 } 183 }
185out: 184out:
186#endif /* CONFIG_MIPS_MT_SMTC */ 185#endif /* CONFIG_MIPS_MT_SMTC */
diff --git a/arch/mips/mips-boards/malta/malta_int.c b/arch/mips/mips-boards/malta/malta_int.c
index 7cc0ba4f553a..6244d0e2c7de 100644
--- a/arch/mips/mips-boards/malta/malta_int.c
+++ b/arch/mips/mips-boards/malta/malta_int.c
@@ -114,7 +114,7 @@ static inline int get_int(void)
114 return irq; 114 return irq;
115} 115}
116 116
117static void malta_hw0_irqdispatch(struct pt_regs *regs) 117static void malta_hw0_irqdispatch(void)
118{ 118{
119 int irq; 119 int irq;
120 120
@@ -123,17 +123,21 @@ static void malta_hw0_irqdispatch(struct pt_regs *regs)
123 return; /* interrupt has already been cleared */ 123 return; /* interrupt has already been cleared */
124 } 124 }
125 125
126 do_IRQ(MALTA_INT_BASE+irq, regs); 126 do_IRQ(MALTA_INT_BASE + irq);
127} 127}
128 128
129void corehi_irqdispatch(struct pt_regs *regs) 129static void corehi_irqdispatch(void)
130{ 130{
131 unsigned int intedge, intsteer, pcicmd, pcibadaddr;
132 unsigned int pcimstat, intisr, inten, intpol;
131 unsigned int intrcause,datalo,datahi; 133 unsigned int intrcause,datalo,datahi;
132 unsigned int pcimstat, intisr, inten, intpol, intedge, intsteer, pcicmd, pcibadaddr; 134 struct pt_regs *regs;
133 135
134 printk("CoreHI interrupt, shouldn't happen, so we die here!!!\n"); 136 printk("CoreHI interrupt, shouldn't happen, so we die here!!!\n");
135 printk("epc : %08lx\nStatus: %08lx\nCause : %08lx\nbadVaddr : %08lx\n" 137 printk("epc : %08lx\nStatus: %08lx\n"
136, regs->cp0_epc, regs->cp0_status, regs->cp0_cause, regs->cp0_badvaddr); 138 "Cause : %08lx\nbadVaddr : %08lx\n",
139 regs->cp0_epc, regs->cp0_status,
140 regs->cp0_cause, regs->cp0_badvaddr);
137 141
138 /* Read all the registers and then print them as there is a 142 /* Read all the registers and then print them as there is a
139 problem with interspersed printk's upsetting the Bonito controller. 143 problem with interspersed printk's upsetting the Bonito controller.
@@ -146,7 +150,7 @@ void corehi_irqdispatch(struct pt_regs *regs)
146 case MIPS_REVISION_CORID_CORE_FPGA3: 150 case MIPS_REVISION_CORID_CORE_FPGA3:
147 case MIPS_REVISION_CORID_CORE_24K: 151 case MIPS_REVISION_CORID_CORE_24K:
148 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 152 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
149 ll_msc_irq(regs); 153 ll_msc_irq();
150 break; 154 break;
151 case MIPS_REVISION_CORID_QED_RM5261: 155 case MIPS_REVISION_CORID_QED_RM5261:
152 case MIPS_REVISION_CORID_CORE_LV: 156 case MIPS_REVISION_CORID_CORE_LV:
@@ -208,23 +212,23 @@ static inline unsigned int irq_ffs(unsigned int pending)
208 unsigned int a0 = 7; 212 unsigned int a0 = 7;
209 unsigned int t0; 213 unsigned int t0;
210 214
211 t0 = s0 & 0xf000; 215 t0 = pending & 0xf000;
212 t0 = t0 < 1; 216 t0 = t0 < 1;
213 t0 = t0 << 2; 217 t0 = t0 << 2;
214 a0 = a0 - t0; 218 a0 = a0 - t0;
215 s0 = s0 << t0; 219 pending = pending << t0;
216 220
217 t0 = s0 & 0xc000; 221 t0 = pending & 0xc000;
218 t0 = t0 < 1; 222 t0 = t0 < 1;
219 t0 = t0 << 1; 223 t0 = t0 << 1;
220 a0 = a0 - t0; 224 a0 = a0 - t0;
221 s0 = s0 << t0; 225 pending = pending << t0;
222 226
223 t0 = s0 & 0x8000; 227 t0 = pending & 0x8000;
224 t0 = t0 < 1; 228 t0 = t0 < 1;
225 //t0 = t0 << 2; 229 //t0 = t0 << 2;
226 a0 = a0 - t0; 230 a0 = a0 - t0;
227 //s0 = s0 << t0; 231 //pending = pending << t0;
228 232
229 return a0; 233 return a0;
230#endif 234#endif
@@ -255,7 +259,7 @@ static inline unsigned int irq_ffs(unsigned int pending)
255 * another exception, big deal. 259 * another exception, big deal.
256 */ 260 */
257 261
258asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 262asmlinkage void plat_irq_dispatch(void)
259{ 263{
260 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; 264 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
261 int irq; 265 int irq;
@@ -263,11 +267,11 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
263 irq = irq_ffs(pending); 267 irq = irq_ffs(pending);
264 268
265 if (irq == MIPSCPU_INT_I8259A) 269 if (irq == MIPSCPU_INT_I8259A)
266 malta_hw0_irqdispatch(regs); 270 malta_hw0_irqdispatch();
267 else if (irq > 0) 271 else if (irq > 0)
268 do_IRQ(MIPSCPU_INT_BASE + irq, regs); 272 do_IRQ(MIPSCPU_INT_BASE + irq);
269 else 273 else
270 spurious_interrupt(regs); 274 spurious_interrupt();
271} 275}
272 276
273static struct irqaction i8259irq = { 277static struct irqaction i8259irq = {
diff --git a/arch/mips/mips-boards/sead/sead_int.c b/arch/mips/mips-boards/sead/sead_int.c
index 9168d934c661..f445fcddfdfd 100644
--- a/arch/mips/mips-boards/sead/sead_int.c
+++ b/arch/mips/mips-boards/sead/sead_int.c
@@ -98,7 +98,7 @@ static inline unsigned int irq_ffs(unsigned int pending)
98 * then we just return, if multiple IRQs are pending then we will just take 98 * then we just return, if multiple IRQs are pending then we will just take
99 * another exception, big deal. 99 * another exception, big deal.
100 */ 100 */
101asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 101asmlinkage void plat_irq_dispatch(void)
102{ 102{
103 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; 103 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
104 int irq; 104 int irq;
@@ -106,7 +106,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
106 irq = irq_ffs(pending); 106 irq = irq_ffs(pending);
107 107
108 if (irq >= 0) 108 if (irq >= 0)
109 do_IRQ(MIPSCPU_INT_BASE + irq, regs); 109 do_IRQ(MIPSCPU_INT_BASE + irq);
110 else 110 else
111 spurious_interrupt(regs); 111 spurious_interrupt(regs);
112} 112}
diff --git a/arch/mips/mips-boards/sim/sim_int.c b/arch/mips/mips-boards/sim/sim_int.c
index 2c15c8efec4e..2ce449dce6f2 100644
--- a/arch/mips/mips-boards/sim/sim_int.c
+++ b/arch/mips/mips-boards/sim/sim_int.c
@@ -71,12 +71,7 @@ static inline unsigned int irq_ffs(unsigned int pending)
71#endif 71#endif
72} 72}
73 73
74static inline void sim_hw0_irqdispatch(struct pt_regs *regs) 74asmlinkage void plat_irq_dispatch(void)
75{
76 do_IRQ(2, regs);
77}
78
79asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
80{ 75{
81 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; 76 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
82 int irq; 77 int irq;
@@ -84,9 +79,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
84 irq = irq_ffs(pending); 79 irq = irq_ffs(pending);
85 80
86 if (irq > 0) 81 if (irq > 0)
87 do_IRQ(MIPSCPU_INT_BASE + irq, regs); 82 do_IRQ(MIPSCPU_INT_BASE + irq);
88 else 83 else
89 spurious_interrupt(regs); 84 spurious_interrupt();
90} 85}
91 86
92void __init arch_init_irq(void) 87void __init arch_init_irq(void)
diff --git a/arch/mips/mips-boards/sim/sim_time.c b/arch/mips/mips-boards/sim/sim_time.c
index 230929ecd57f..c566b9bd0427 100644
--- a/arch/mips/mips-boards/sim/sim_time.c
+++ b/arch/mips/mips-boards/sim/sim_time.c
@@ -15,7 +15,6 @@
15#include <linux/mc146818rtc.h> 15#include <linux/mc146818rtc.h>
16#include <linux/timex.h> 16#include <linux/timex.h>
17#include <asm/mipsregs.h> 17#include <asm/mipsregs.h>
18#include <asm/ptrace.h>
19#include <asm/hardirq.h> 18#include <asm/hardirq.h>
20#include <asm/irq.h> 19#include <asm/irq.h>
21#include <asm/div64.h> 20#include <asm/div64.h>
@@ -33,7 +32,7 @@
33 32
34unsigned long cpu_khz; 33unsigned long cpu_khz;
35 34
36irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 35irqreturn_t sim_timer_interrupt(int irq, void *dev_id)
37{ 36{
38#ifdef CONFIG_SMP 37#ifdef CONFIG_SMP
39 int cpu = smp_processor_id(); 38 int cpu = smp_processor_id();
@@ -44,7 +43,7 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
44 */ 43 */
45#ifndef CONFIG_MIPS_MT_SMTC 44#ifndef CONFIG_MIPS_MT_SMTC
46 if (cpu == 0) { 45 if (cpu == 0) {
47 timer_interrupt(irq, dev_id, regs); 46 timer_interrupt(irq, dev_id);
48 } 47 }
49 else { 48 else {
50 /* Everyone else needs to reset the timer int here as 49 /* Everyone else needs to reset the timer int here as
@@ -84,7 +83,7 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
84 irq_enable_hazard(); 83 irq_enable_hazard();
85 evpe(vpflags); 84 evpe(vpflags);
86 85
87 if(cpu_data[cpu].vpe_id == 0) timer_interrupt(irq, dev_id, regs); 86 if(cpu_data[cpu].vpe_id == 0) timer_interrupt(irq, dev_id);
88 else write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ)); 87 else write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ));
89 smtc_timer_broadcast(cpu_data[cpu].vpe_id); 88 smtc_timer_broadcast(cpu_data[cpu].vpe_id);
90 89
@@ -93,10 +92,10 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
93 /* 92 /*
94 * every CPU should do profiling and process accounting 93 * every CPU should do profiling and process accounting
95 */ 94 */
96 local_timer_interrupt (irq, dev_id, regs); 95 local_timer_interrupt (irq, dev_id);
97 return IRQ_HANDLED; 96 return IRQ_HANDLED;
98#else 97#else
99 return timer_interrupt (irq, dev_id, regs); 98 return timer_interrupt (irq, dev_id);
100#endif 99#endif
101} 100}
102 101
@@ -177,9 +176,9 @@ void __init sim_time_init(void)
177 176
178static int mips_cpu_timer_irq; 177static int mips_cpu_timer_irq;
179 178
180static void mips_timer_dispatch (struct pt_regs *regs) 179static void mips_timer_dispatch(void)
181{ 180{
182 do_IRQ (mips_cpu_timer_irq, regs); 181 do_IRQ(mips_cpu_timer_irq);
183} 182}
184 183
185 184
diff --git a/arch/mips/momentum/jaguar_atx/irq.c b/arch/mips/momentum/jaguar_atx/irq.c
index f9067469a656..2efb25aa1aed 100644
--- a/arch/mips/momentum/jaguar_atx/irq.c
+++ b/arch/mips/momentum/jaguar_atx/irq.c
@@ -40,33 +40,33 @@
40#include <asm/mipsregs.h> 40#include <asm/mipsregs.h>
41#include <asm/time.h> 41#include <asm/time.h>
42 42
43asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 43asmlinkage void plat_irq_dispatch(void)
44{ 44{
45 unsigned int pending = read_c0_cause() & read_c0_status(); 45 unsigned int pending = read_c0_cause() & read_c0_status();
46 46
47 if (pending & STATUSF_IP0) 47 if (pending & STATUSF_IP0)
48 do_IRQ(0, regs); 48 do_IRQ(0);
49 else if (pending & STATUSF_IP1) 49 else if (pending & STATUSF_IP1)
50 do_IRQ(1, regs); 50 do_IRQ(1);
51 else if (pending & STATUSF_IP2) 51 else if (pending & STATUSF_IP2)
52 do_IRQ(2, regs); 52 do_IRQ(2);
53 else if (pending & STATUSF_IP3) 53 else if (pending & STATUSF_IP3)
54 do_IRQ(3, regs); 54 do_IRQ(3);
55 else if (pending & STATUSF_IP4) 55 else if (pending & STATUSF_IP4)
56 do_IRQ(4, regs); 56 do_IRQ(4);
57 else if (pending & STATUSF_IP5) 57 else if (pending & STATUSF_IP5)
58 do_IRQ(5, regs); 58 do_IRQ(5);
59 else if (pending & STATUSF_IP6) 59 else if (pending & STATUSF_IP6)
60 do_IRQ(6, regs); 60 do_IRQ(6);
61 else if (pending & STATUSF_IP7) 61 else if (pending & STATUSF_IP7)
62 ll_timer_interrupt(7, regs); 62 ll_timer_interrupt(7);
63 else { 63 else {
64 /* 64 /*
65 * Now look at the extended interrupts 65 * Now look at the extended interrupts
66 */ 66 */
67 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; 67 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16;
68 if (pending & STATUSF_IP8) 68 if (pending & STATUSF_IP8)
69 ll_mv64340_irq(regs); 69 ll_mv64340_irq();
70 } 70 }
71} 71}
72 72
diff --git a/arch/mips/momentum/jaguar_atx/setup.c b/arch/mips/momentum/jaguar_atx/setup.c
index e6fe2992227d..5a510142b978 100644
--- a/arch/mips/momentum/jaguar_atx/setup.c
+++ b/arch/mips/momentum/jaguar_atx/setup.c
@@ -62,7 +62,6 @@
62#include <asm/io.h> 62#include <asm/io.h>
63#include <asm/irq.h> 63#include <asm/irq.h>
64#include <asm/processor.h> 64#include <asm/processor.h>
65#include <asm/ptrace.h>
66#include <asm/reboot.h> 65#include <asm/reboot.h>
67#include <asm/tlbflush.h> 66#include <asm/tlbflush.h>
68 67
diff --git a/arch/mips/momentum/ocelot_3/irq.c b/arch/mips/momentum/ocelot_3/irq.c
index 793782a9c195..cea0e5deb80e 100644
--- a/arch/mips/momentum/ocelot_3/irq.c
+++ b/arch/mips/momentum/ocelot_3/irq.c
@@ -75,26 +75,26 @@ void __init arch_init_irq(void)
75 75
76} 76}
77 77
78asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 78asmlinkage void plat_irq_dispatch(void)
79{ 79{
80 unsigned int pending = read_c0_cause() & read_c0_status(); 80 unsigned int pending = read_c0_cause() & read_c0_status();
81 81
82 if (pending & STATUSF_IP0) 82 if (pending & STATUSF_IP0)
83 do_IRQ(0, regs); 83 do_IRQ(0);
84 else if (pending & STATUSF_IP1) 84 else if (pending & STATUSF_IP1)
85 do_IRQ(1, regs); 85 do_IRQ(1);
86 else if (pending & STATUSF_IP2) 86 else if (pending & STATUSF_IP2)
87 do_IRQ(2, regs); 87 do_IRQ(2);
88 else if (pending & STATUSF_IP3) 88 else if (pending & STATUSF_IP3)
89 do_IRQ(3, regs); 89 do_IRQ(3);
90 else if (pending & STATUSF_IP4) 90 else if (pending & STATUSF_IP4)
91 do_IRQ(4, regs); 91 do_IRQ(4);
92 else if (pending & STATUSF_IP5) 92 else if (pending & STATUSF_IP5)
93 do_IRQ(5, regs); 93 do_IRQ(5);
94 else if (pending & STATUSF_IP6) 94 else if (pending & STATUSF_IP6)
95 do_IRQ(6, regs); 95 do_IRQ(6);
96 else if (pending & STATUSF_IP7) 96 else if (pending & STATUSF_IP7)
97 do_IRQ(7, regs); 97 do_IRQ(7);
98 else { 98 else {
99 /* 99 /*
100 * Now look at the extended interrupts 100 * Now look at the extended interrupts
@@ -102,8 +102,8 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
102 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; 102 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16;
103 103
104 if (pending & STATUSF_IP8) 104 if (pending & STATUSF_IP8)
105 ll_mv64340_irq(regs); 105 ll_mv64340_irq();
106 else 106 else
107 spurious_interrupt(regs); 107 spurious_interrupt();
108 } 108 }
109} 109}
diff --git a/arch/mips/momentum/ocelot_3/setup.c b/arch/mips/momentum/ocelot_3/setup.c
index 435d0787329e..7d74f8c54129 100644
--- a/arch/mips/momentum/ocelot_3/setup.c
+++ b/arch/mips/momentum/ocelot_3/setup.c
@@ -67,7 +67,6 @@
67#include <asm/irq.h> 67#include <asm/irq.h>
68#include <asm/pci.h> 68#include <asm/pci.h>
69#include <asm/processor.h> 69#include <asm/processor.h>
70#include <asm/ptrace.h>
71#include <asm/reboot.h> 70#include <asm/reboot.h>
72#include <asm/mc146818rtc.h> 71#include <asm/mc146818rtc.h>
73#include <asm/tlbflush.h> 72#include <asm/tlbflush.h>
diff --git a/arch/mips/momentum/ocelot_c/cpci-irq.c b/arch/mips/momentum/ocelot_c/cpci-irq.c
index a5dc230520df..47e3fa32b075 100644
--- a/arch/mips/momentum/ocelot_c/cpci-irq.c
+++ b/arch/mips/momentum/ocelot_c/cpci-irq.c
@@ -21,7 +21,6 @@
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22#include <linux/irq.h> 22#include <linux/irq.h>
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <asm/ptrace.h>
25#include <linux/sched.h> 24#include <linux/sched.h>
26#include <linux/kernel_stat.h> 25#include <linux/kernel_stat.h>
27#include <asm/io.h> 26#include <asm/io.h>
@@ -112,7 +111,7 @@ static void end_cpci_irq(unsigned int irq)
112 * Interrupt handler for interrupts coming from the FPGA chip. 111 * Interrupt handler for interrupts coming from the FPGA chip.
113 * It could be built in ethernet ports etc... 112 * It could be built in ethernet ports etc...
114 */ 113 */
115void ll_cpci_irq(struct pt_regs *regs) 114void ll_cpci_irq(void)
116{ 115{
117 unsigned int irq_src, irq_mask; 116 unsigned int irq_src, irq_mask;
118 117
@@ -123,7 +122,7 @@ void ll_cpci_irq(struct pt_regs *regs)
123 /* mask for just the interrupts we want */ 122 /* mask for just the interrupts we want */
124 irq_src &= ~irq_mask; 123 irq_src &= ~irq_mask;
125 124
126 do_IRQ(ls1bit8(irq_src) + CPCI_IRQ_BASE, regs); 125 do_IRQ(ls1bit8(irq_src) + CPCI_IRQ_BASE);
127} 126}
128 127
129#define shutdown_cpci_irq disable_cpci_irq 128#define shutdown_cpci_irq disable_cpci_irq
diff --git a/arch/mips/momentum/ocelot_c/irq.c b/arch/mips/momentum/ocelot_c/irq.c
index 9d44ae1e156b..ea65223a6d2c 100644
--- a/arch/mips/momentum/ocelot_c/irq.c
+++ b/arch/mips/momentum/ocelot_c/irq.c
@@ -59,31 +59,31 @@ static struct irqaction cascade_mv64340 = {
59 no_action, IRQF_DISABLED, CPU_MASK_NONE, "cascade via MV64340", NULL, NULL 59 no_action, IRQF_DISABLED, CPU_MASK_NONE, "cascade via MV64340", NULL, NULL
60}; 60};
61 61
62extern void ll_uart_irq(struct pt_regs *regs); 62extern void ll_uart_irq(void);
63extern void ll_cpci_irq(struct pt_regs *regs); 63extern void ll_cpci_irq(void);
64 64
65asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 65asmlinkage void plat_irq_dispatch(void)
66{ 66{
67 unsigned int pending = read_c0_cause() & read_c0_status(); 67 unsigned int pending = read_c0_cause() & read_c0_status();
68 68
69 if (pending & STATUSF_IP0) 69 if (pending & STATUSF_IP0)
70 do_IRQ(0, regs); 70 do_IRQ(0);
71 else if (pending & STATUSF_IP1) 71 else if (pending & STATUSF_IP1)
72 do_IRQ(1, regs); 72 do_IRQ(1);
73 else if (pending & STATUSF_IP2) 73 else if (pending & STATUSF_IP2)
74 do_IRQ(2, regs); 74 do_IRQ(2);
75 else if (pending & STATUSF_IP3) 75 else if (pending & STATUSF_IP3)
76 ll_uart_irq(regs); 76 ll_uart_irq();
77 else if (pending & STATUSF_IP4) 77 else if (pending & STATUSF_IP4)
78 do_IRQ(4, regs); 78 do_IRQ(4);
79 else if (pending & STATUSF_IP5) 79 else if (pending & STATUSF_IP5)
80 ll_cpci_irq(regs); 80 ll_cpci_irq();
81 else if (pending & STATUSF_IP6) 81 else if (pending & STATUSF_IP6)
82 ll_mv64340_irq(regs); 82 ll_mv64340_irq();
83 else if (pending & STATUSF_IP7) 83 else if (pending & STATUSF_IP7)
84 do_IRQ(7, regs); 84 do_IRQ(7);
85 else 85 else
86 spurious_interrupt(regs); 86 spurious_interrupt();
87} 87}
88 88
89void __init arch_init_irq(void) 89void __init arch_init_irq(void)
diff --git a/arch/mips/momentum/ocelot_c/setup.c b/arch/mips/momentum/ocelot_c/setup.c
index 36f570ecc6fb..9c0c462af650 100644
--- a/arch/mips/momentum/ocelot_c/setup.c
+++ b/arch/mips/momentum/ocelot_c/setup.c
@@ -62,7 +62,6 @@
62#include <asm/irq.h> 62#include <asm/irq.h>
63#include <asm/pci.h> 63#include <asm/pci.h>
64#include <asm/processor.h> 64#include <asm/processor.h>
65#include <asm/ptrace.h>
66#include <asm/reboot.h> 65#include <asm/reboot.h>
67#include <asm/marvell.h> 66#include <asm/marvell.h>
68#include <linux/bootmem.h> 67#include <linux/bootmem.h>
diff --git a/arch/mips/momentum/ocelot_c/uart-irq.c b/arch/mips/momentum/ocelot_c/uart-irq.c
index 9f33d8f1d826..510257dc205a 100644
--- a/arch/mips/momentum/ocelot_c/uart-irq.c
+++ b/arch/mips/momentum/ocelot_c/uart-irq.c
@@ -16,7 +16,6 @@
16#include <linux/interrupt.h> 16#include <linux/interrupt.h>
17#include <linux/irq.h> 17#include <linux/irq.h>
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <asm/ptrace.h>
20#include <linux/sched.h> 19#include <linux/sched.h>
21#include <linux/kernel_stat.h> 20#include <linux/kernel_stat.h>
22#include <asm/io.h> 21#include <asm/io.h>
@@ -105,7 +104,7 @@ static void end_uart_irq(unsigned int irq)
105/* 104/*
106 * Interrupt handler for interrupts coming from the FPGA chip. 105 * Interrupt handler for interrupts coming from the FPGA chip.
107 */ 106 */
108void ll_uart_irq(struct pt_regs *regs) 107void ll_uart_irq(void)
109{ 108{
110 unsigned int irq_src, irq_mask; 109 unsigned int irq_src, irq_mask;
111 110
@@ -116,7 +115,7 @@ void ll_uart_irq(struct pt_regs *regs)
116 /* mask for just the interrupts we want */ 115 /* mask for just the interrupts we want */
117 irq_src &= ~irq_mask; 116 irq_src &= ~irq_mask;
118 117
119 do_IRQ(ls1bit8(irq_src) + 74, regs); 118 do_IRQ(ls1bit8(irq_src) + 74);
120} 119}
121 120
122#define shutdown_uart_irq disable_uart_irq 121#define shutdown_uart_irq disable_uart_irq
diff --git a/arch/mips/momentum/ocelot_g/gt-irq.c b/arch/mips/momentum/ocelot_g/gt-irq.c
index 6cd87cf0195a..7b5cc6648f7e 100644
--- a/arch/mips/momentum/ocelot_g/gt-irq.c
+++ b/arch/mips/momentum/ocelot_g/gt-irq.c
@@ -14,7 +14,6 @@
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/interrupt.h> 15#include <linux/interrupt.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <asm/ptrace.h>
18#include <linux/sched.h> 17#include <linux/sched.h>
19#include <linux/kernel_stat.h> 18#include <linux/kernel_stat.h>
20#include <asm/gt64240.h> 19#include <asm/gt64240.h>
@@ -108,7 +107,7 @@ int disable_galileo_irq(int int_cause, int bit_num)
108 * we keep this particular structure in the function. 107 * we keep this particular structure in the function.
109 */ 108 */
110 109
111static irqreturn_t gt64240_p0int_irq(int irq, void *dev, struct pt_regs *regs) 110static irqreturn_t gt64240_p0int_irq(int irq, void *dev)
112{ 111{
113 uint32_t irq_src, irq_src_mask; 112 uint32_t irq_src, irq_src_mask;
114 int handled; 113 int handled;
@@ -135,7 +134,7 @@ static irqreturn_t gt64240_p0int_irq(int irq, void *dev, struct pt_regs *regs)
135 /* handle the timer call */ 134 /* handle the timer call */
136 do_timer(1); 135 do_timer(1);
137#ifndef CONFIG_SMP 136#ifndef CONFIG_SMP
138 update_process_times(user_mode(regs)); 137 update_process_times(user_mode(get_irq_regs()));
139#endif 138#endif
140 } 139 }
141 140
diff --git a/arch/mips/momentum/ocelot_g/irq.c b/arch/mips/momentum/ocelot_g/irq.c
index 7a4a419804f1..da46524e87cb 100644
--- a/arch/mips/momentum/ocelot_g/irq.c
+++ b/arch/mips/momentum/ocelot_g/irq.c
@@ -48,22 +48,22 @@
48#include <asm/mipsregs.h> 48#include <asm/mipsregs.h>
49#include <asm/system.h> 49#include <asm/system.h>
50 50
51asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 51asmlinkage void plat_irq_dispatch(void)
52{ 52{
53 unsigned int pending = read_c0_cause() & read_c0_status(); 53 unsigned int pending = read_c0_cause() & read_c0_status();
54 54
55 if (pending & STATUSF_IP2) 55 if (pending & STATUSF_IP2)
56 do_IRQ(2, regs); 56 do_IRQ(2);
57 else if (pending & STATUSF_IP3) 57 else if (pending & STATUSF_IP3)
58 do_IRQ(3, regs); 58 do_IRQ(3);
59 else if (pending & STATUSF_IP4) 59 else if (pending & STATUSF_IP4)
60 do_IRQ(4, regs); 60 do_IRQ(4);
61 else if (pending & STATUSF_IP5) 61 else if (pending & STATUSF_IP5)
62 do_IRQ(5, regs); 62 do_IRQ(5);
63 else if (pending & STATUSF_IP6) 63 else if (pending & STATUSF_IP6)
64 do_IRQ(6, regs); 64 do_IRQ(6);
65 else if (pending & STATUSF_IP7) 65 else if (pending & STATUSF_IP7)
66 do_IRQ(7, regs); 66 do_IRQ(7);
67 else { 67 else {
68 /* 68 /*
69 * Now look at the extended interrupts 69 * Now look at the extended interrupts
@@ -71,15 +71,15 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
71 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; 71 pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16;
72 72
73 if (pending & STATUSF_IP8) 73 if (pending & STATUSF_IP8)
74 do_IRQ(8, regs); 74 do_IRQ(8);
75 else if (pending & STATUSF_IP9) 75 else if (pending & STATUSF_IP9)
76 do_IRQ(9, regs); 76 do_IRQ(9);
77 else if (pending & STATUSF_IP10) 77 else if (pending & STATUSF_IP10)
78 do_IRQ(10, regs); 78 do_IRQ(10);
79 else if (pending & STATUSF_IP11) 79 else if (pending & STATUSF_IP11)
80 do_IRQ(11, regs); 80 do_IRQ(11);
81 else 81 else
82 spurious_interrupt(regs); 82 spurious_interrupt();
83 } 83 }
84} 84}
85 85
diff --git a/arch/mips/momentum/ocelot_g/setup.c b/arch/mips/momentum/ocelot_g/setup.c
index c580b1de33bc..56ec47039c16 100644
--- a/arch/mips/momentum/ocelot_g/setup.c
+++ b/arch/mips/momentum/ocelot_g/setup.c
@@ -58,7 +58,6 @@
58#include <asm/irq.h> 58#include <asm/irq.h>
59#include <asm/pci.h> 59#include <asm/pci.h>
60#include <asm/processor.h> 60#include <asm/processor.h>
61#include <asm/ptrace.h>
62#include <asm/reboot.h> 61#include <asm/reboot.h>
63#include <linux/bootmem.h> 62#include <linux/bootmem.h>
64 63
diff --git a/arch/mips/oprofile/op_impl.h b/arch/mips/oprofile/op_impl.h
index 5cfce7d87a4d..354e54496406 100644
--- a/arch/mips/oprofile/op_impl.h
+++ b/arch/mips/oprofile/op_impl.h
@@ -12,8 +12,8 @@
12 12
13struct pt_regs; 13struct pt_regs;
14 14
15extern int null_perf_irq(struct pt_regs *regs); 15extern int null_perf_irq(void);
16extern int (*perf_irq)(struct pt_regs *regs); 16extern int (*perf_irq)(void);
17 17
18/* Per-counter configuration as set via oprofilefs. */ 18/* Per-counter configuration as set via oprofilefs. */
19struct op_counter_config { 19struct op_counter_config {
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c
index a175d673540f..dd0aec9c3ce1 100644
--- a/arch/mips/oprofile/op_model_mipsxx.c
+++ b/arch/mips/oprofile/op_model_mipsxx.c
@@ -3,12 +3,13 @@
3 * License. See the file "COPYING" in the main directory of this archive 3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details. 4 * for more details.
5 * 5 *
6 * Copyright (C) 2004, 2005 by Ralf Baechle 6 * Copyright (C) 2004, 05, 06 by Ralf Baechle
7 * Copyright (C) 2005 by MIPS Technologies, Inc. 7 * Copyright (C) 2005 by MIPS Technologies, Inc.
8 */ 8 */
9#include <linux/oprofile.h> 9#include <linux/oprofile.h>
10#include <linux/interrupt.h> 10#include <linux/interrupt.h>
11#include <linux/smp.h> 11#include <linux/smp.h>
12#include <asm/irq_regs.h>
12 13
13#include "op_impl.h" 14#include "op_impl.h"
14 15
@@ -170,7 +171,7 @@ static void mipsxx_cpu_stop(void *args)
170 } 171 }
171} 172}
172 173
173static int mipsxx_perfcount_handler(struct pt_regs *regs) 174static int mipsxx_perfcount_handler(void)
174{ 175{
175 unsigned int counters = op_model_mipsxx_ops.num_counters; 176 unsigned int counters = op_model_mipsxx_ops.num_counters;
176 unsigned int control; 177 unsigned int control;
@@ -184,7 +185,7 @@ static int mipsxx_perfcount_handler(struct pt_regs *regs)
184 counter = r_c0_perfcntr ## n(); \ 185 counter = r_c0_perfcntr ## n(); \
185 if ((control & M_PERFCTL_INTERRUPT_ENABLE) && \ 186 if ((control & M_PERFCTL_INTERRUPT_ENABLE) && \
186 (counter & M_COUNTER_OVERFLOW)) { \ 187 (counter & M_COUNTER_OVERFLOW)) { \
187 oprofile_add_sample(regs, n); \ 188 oprofile_add_sample(get_irq_regs(), n); \
188 w_c0_perfcntr ## n(reg.counter[n]); \ 189 w_c0_perfcntr ## n(reg.counter[n]); \
189 handled = 1; \ 190 handled = 1; \
190 } 191 }
diff --git a/arch/mips/pci/pci-ip32.c b/arch/mips/pci/pci-ip32.c
index 17c7932cf0ae..618ea7dbc474 100644
--- a/arch/mips/pci/pci-ip32.c
+++ b/arch/mips/pci/pci-ip32.c
@@ -22,7 +22,7 @@
22 * registered on the bridge error irq. It's conceivable that some of these 22 * registered on the bridge error irq. It's conceivable that some of these
23 * conditions warrant a panic. Anybody care to say which ones? 23 * conditions warrant a panic. Anybody care to say which ones?
24 */ 24 */
25static irqreturn_t macepci_error(int irq, void *dev, struct pt_regs *regs) 25static irqreturn_t macepci_error(int irq, void *dev)
26{ 26{
27 char s; 27 char s;
28 unsigned int flags = mace->pci.error; 28 unsigned int flags = mace->pci.error;
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c
index 3c93512be1ec..710611615ca2 100644
--- a/arch/mips/philips/pnx8550/common/int.c
+++ b/arch/mips/philips/pnx8550/common/int.c
@@ -23,6 +23,7 @@
23 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 23 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
24 * 24 *
25 */ 25 */
26#include <linux/compiler.h>
26#include <linux/init.h> 27#include <linux/init.h>
27#include <linux/irq.h> 28#include <linux/irq.h>
28#include <linux/sched.h> 29#include <linux/sched.h>
@@ -52,7 +53,7 @@ static char gic_prio[PNX8550_INT_GIC_TOTINT] = {
52 1 // 70 53 1 // 70
53}; 54};
54 55
55static void hw0_irqdispatch(int irq, struct pt_regs *regs) 56static void hw0_irqdispatch(int irq)
56{ 57{
57 /* find out which interrupt */ 58 /* find out which interrupt */
58 irq = PNX8550_GIC_VECTOR_0 >> 3; 59 irq = PNX8550_GIC_VECTOR_0 >> 3;
@@ -61,42 +62,39 @@ static void hw0_irqdispatch(int irq, struct pt_regs *regs)
61 printk("hw0_irqdispatch: irq 0, spurious interrupt?\n"); 62 printk("hw0_irqdispatch: irq 0, spurious interrupt?\n");
62 return; 63 return;
63 } 64 }
64 do_IRQ(PNX8550_INT_GIC_MIN + irq, regs); 65 do_IRQ(PNX8550_INT_GIC_MIN + irq);
65} 66}
66 67
67 68
68static void timer_irqdispatch(int irq, struct pt_regs *regs) 69static void timer_irqdispatch(int irq)
69{ 70{
70 irq = (0x01c0 & read_c0_config7()) >> 6; 71 irq = (0x01c0 & read_c0_config7()) >> 6;
71 72
72 if (irq == 0) { 73 if (unlikely(irq == 0)) {
73 printk("timer_irqdispatch: irq 0, spurious interrupt?\n"); 74 printk("timer_irqdispatch: irq 0, spurious interrupt?\n");
74 return; 75 return;
75 } 76 }
76 77
77 if (irq & 0x1) { 78 if (irq & 0x1)
78 do_IRQ(PNX8550_INT_TIMER1, regs); 79 do_IRQ(PNX8550_INT_TIMER1);
79 } 80 if (irq & 0x2)
80 if (irq & 0x2) { 81 do_IRQ(PNX8550_INT_TIMER2);
81 do_IRQ(PNX8550_INT_TIMER2, regs); 82 if (irq & 0x4)
82 } 83 do_IRQ(PNX8550_INT_TIMER3);
83 if (irq & 0x4) {
84 do_IRQ(PNX8550_INT_TIMER3, regs);
85 }
86} 84}
87 85
88asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 86asmlinkage void plat_irq_dispatch(void)
89{ 87{
90 unsigned int pending = read_c0_status() & read_c0_cause(); 88 unsigned int pending = read_c0_status() & read_c0_cause();
91 89
92 if (pending & STATUSF_IP2) 90 if (pending & STATUSF_IP2)
93 hw0_irqdispatch(2, regs); 91 hw0_irqdispatch(2);
94 else if (pending & STATUSF_IP7) { 92 else if (pending & STATUSF_IP7) {
95 if (read_c0_config7() & 0x01c0) 93 if (read_c0_config7() & 0x01c0)
96 timer_irqdispatch(7, regs); 94 timer_irqdispatch(7);
97 } 95 }
98 96
99 spurious_interrupt(regs); 97 spurious_interrupt();
100} 98}
101 99
102static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) 100static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask)
diff --git a/arch/mips/pmc-sierra/yosemite/irq.c b/arch/mips/pmc-sierra/yosemite/irq.c
index b91d0aa3b7ed..adb048527e76 100644
--- a/arch/mips/pmc-sierra/yosemite/irq.c
+++ b/arch/mips/pmc-sierra/yosemite/irq.c
@@ -56,15 +56,13 @@
56#define HYPERTRANSPORT_INTC 0x7a /* INTC# */ 56#define HYPERTRANSPORT_INTC 0x7a /* INTC# */
57#define HYPERTRANSPORT_INTD 0x7b /* INTD# */ 57#define HYPERTRANSPORT_INTD 0x7b /* INTD# */
58 58
59extern void jaguar_mailbox_irq(struct pt_regs *);
60
61/* 59/*
62 * Handle hypertransport & SMP interrupts. The interrupt lines are scarce. 60 * Handle hypertransport & SMP interrupts. The interrupt lines are scarce.
63 * For interprocessor interrupts, the best thing to do is to use the INTMSG 61 * For interprocessor interrupts, the best thing to do is to use the INTMSG
64 * register. We use the same external interrupt line, i.e. INTB3 and monitor 62 * register. We use the same external interrupt line, i.e. INTB3 and monitor
65 * another status bit 63 * another status bit
66 */ 64 */
67asmlinkage void ll_ht_smp_irq_handler(int irq, struct pt_regs *regs) 65static void ll_ht_smp_irq_handler(int irq)
68{ 66{
69 u32 status = OCD_READ(RM9000x2_OCD_INTP0STATUS4); 67 u32 status = OCD_READ(RM9000x2_OCD_INTP0STATUS4);
70 68
@@ -107,50 +105,35 @@ asmlinkage void ll_ht_smp_irq_handler(int irq, struct pt_regs *regs)
107 } 105 }
108#endif /* CONFIG_HT_LEVEL_TRIGGER */ 106#endif /* CONFIG_HT_LEVEL_TRIGGER */
109 107
110 do_IRQ(irq, regs); 108 do_IRQ(irq);
111}
112
113asmlinkage void do_extended_irq(struct pt_regs *regs)
114{
115 unsigned int intcontrol = read_c0_intcontrol();
116 unsigned int cause = read_c0_cause();
117 unsigned int status = read_c0_status();
118 unsigned int pending_sr, pending_ic;
119
120 pending_sr = status & cause & 0xff00;
121 pending_ic = (cause >> 8) & intcontrol & 0xff00;
122
123 if (pending_ic & (1 << 13))
124 do_IRQ(13, regs);
125
126} 109}
127 110
128asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 111asmlinkage void plat_irq_dispatch(void)
129{ 112{
130 unsigned int cause = read_c0_cause(); 113 unsigned int cause = read_c0_cause();
131 unsigned int status = read_c0_status(); 114 unsigned int status = read_c0_status();
132 unsigned int pending = cause & status; 115 unsigned int pending = cause & status;
133 116
134 if (pending & STATUSF_IP7) { 117 if (pending & STATUSF_IP7) {
135 do_IRQ(7, regs); 118 do_IRQ(7);
136 } else if (pending & STATUSF_IP2) { 119 } else if (pending & STATUSF_IP2) {
137#ifdef CONFIG_HYPERTRANSPORT 120#ifdef CONFIG_HYPERTRANSPORT
138 ll_ht_smp_irq_handler(2, regs); 121 ll_ht_smp_irq_handler(2);
139#else 122#else
140 do_IRQ(2, regs); 123 do_IRQ(2);
141#endif 124#endif
142 } else if (pending & STATUSF_IP3) { 125 } else if (pending & STATUSF_IP3) {
143 do_IRQ(3, regs); 126 do_IRQ(3);
144 } else if (pending & STATUSF_IP4) { 127 } else if (pending & STATUSF_IP4) {
145 do_IRQ(4, regs); 128 do_IRQ(4);
146 } else if (pending & STATUSF_IP5) { 129 } else if (pending & STATUSF_IP5) {
147#ifdef CONFIG_SMP 130#ifdef CONFIG_SMP
148 titan_mailbox_irq(regs); 131 titan_mailbox_irq();
149#else 132#else
150 do_IRQ(5, regs); 133 do_IRQ(5);
151#endif 134#endif
152 } else if (pending & STATUSF_IP6) { 135 } else if (pending & STATUSF_IP6) {
153 do_IRQ(4, regs); 136 do_IRQ(4);
154 } 137 }
155} 138}
156 139
@@ -178,18 +161,3 @@ void __init arch_init_irq(void)
178 register_gdb_console(); 161 register_gdb_console();
179#endif 162#endif
180} 163}
181
182#ifdef CONFIG_KGDB
183/*
184 * The 16550 DUART has two ports, but is allocated one IRQ
185 * for the serial console. Hence, a generic framework for
186 * serial IRQ routing in place. Currently, just calls the
187 * do_IRQ fuction. But, going in the future, need to check
188 * DUART registers for channel A and B, then decide the
189 * appropriate action
190 */
191asmlinkage void yosemite_kgdb_irq(int irq, struct pt_regs *regs)
192{
193 do_IRQ(irq, regs);
194}
195#endif
diff --git a/arch/mips/pmc-sierra/yosemite/setup.c b/arch/mips/pmc-sierra/yosemite/setup.c
index 0a6ee8e5eec2..1b9b0d396d3e 100644
--- a/arch/mips/pmc-sierra/yosemite/setup.c
+++ b/arch/mips/pmc-sierra/yosemite/setup.c
@@ -46,7 +46,6 @@
46#include <asm/io.h> 46#include <asm/io.h>
47#include <asm/irq.h> 47#include <asm/irq.h>
48#include <asm/processor.h> 48#include <asm/processor.h>
49#include <asm/ptrace.h>
50#include <asm/reboot.h> 49#include <asm/reboot.h>
51#include <asm/serial.h> 50#include <asm/serial.h>
52#include <asm/titan_dep.h> 51#include <asm/titan_dep.h>
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c
index c197311e15d3..65fa3a23ea5e 100644
--- a/arch/mips/pmc-sierra/yosemite/smp.c
+++ b/arch/mips/pmc-sierra/yosemite/smp.c
@@ -110,7 +110,7 @@ void prom_smp_finish(void)
110{ 110{
111} 111}
112 112
113asmlinkage void titan_mailbox_irq(struct pt_regs *regs) 113asmlinkage void titan_mailbox_irq(void)
114{ 114{
115 int cpu = smp_processor_id(); 115 int cpu = smp_processor_id();
116 unsigned long status; 116 unsigned long status;
diff --git a/arch/mips/qemu/q-irq.c b/arch/mips/qemu/q-irq.c
index 3352374c4c7d..f5ea2fe10f14 100644
--- a/arch/mips/qemu/q-irq.c
+++ b/arch/mips/qemu/q-irq.c
@@ -9,19 +9,19 @@
9 9
10extern asmlinkage void qemu_handle_int(void); 10extern asmlinkage void qemu_handle_int(void);
11 11
12asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 12asmlinkage void plat_irq_dispatch(void)
13{ 13{
14 unsigned int pending = read_c0_status() & read_c0_cause(); 14 unsigned int pending = read_c0_status() & read_c0_cause();
15 15
16 if (pending & 0x8000) { 16 if (pending & 0x8000) {
17 ll_timer_interrupt(Q_COUNT_COMPARE_IRQ, regs); 17 ll_timer_interrupt(Q_COUNT_COMPARE_IRQ);
18 return; 18 return;
19 } 19 }
20 if (pending & 0x0400) { 20 if (pending & 0x0400) {
21 int irq = i8259_irq(); 21 int irq = i8259_irq();
22 22
23 if (likely(irq >= 0)) 23 if (likely(irq >= 0))
24 do_IRQ(irq, regs); 24 do_IRQ(irq);
25 25
26 return; 26 return;
27 } 27 }
diff --git a/arch/mips/sgi-ip22/ip22-berr.c b/arch/mips/sgi-ip22/ip22-berr.c
index a28dc7800072..de6a0cc32fea 100644
--- a/arch/mips/sgi-ip22/ip22-berr.c
+++ b/arch/mips/sgi-ip22/ip22-berr.c
@@ -12,6 +12,7 @@
12#include <asm/system.h> 12#include <asm/system.h>
13#include <asm/traps.h> 13#include <asm/traps.h>
14#include <asm/branch.h> 14#include <asm/branch.h>
15#include <asm/irq_regs.h>
15#include <asm/sgi/mc.h> 16#include <asm/sgi/mc.h>
16#include <asm/sgi/hpc3.h> 17#include <asm/sgi/hpc3.h>
17#include <asm/sgi/ioc.h> 18#include <asm/sgi/ioc.h>
@@ -85,9 +86,10 @@ static void print_buserr(void)
85 * and then clear the interrupt when this happens. 86 * and then clear the interrupt when this happens.
86 */ 87 */
87 88
88void ip22_be_interrupt(int irq, struct pt_regs *regs) 89void ip22_be_interrupt(int irq)
89{ 90{
90 const int field = 2 * sizeof(unsigned long); 91 const int field = 2 * sizeof(unsigned long);
92 const struct pt_regs *regs = get_irq_regs();
91 93
92 save_and_clear_buserr(); 94 save_and_clear_buserr();
93 print_buserr(); 95 print_buserr();
diff --git a/arch/mips/sgi-ip22/ip22-eisa.c b/arch/mips/sgi-ip22/ip22-eisa.c
index ee0514a29922..0d18ed47c47a 100644
--- a/arch/mips/sgi-ip22/ip22-eisa.c
+++ b/arch/mips/sgi-ip22/ip22-eisa.c
@@ -70,7 +70,7 @@ static char __init *decode_eisa_sig(unsigned long addr)
70 return sig_str; 70 return sig_str;
71} 71}
72 72
73static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) 73static irqreturn_t ip22_eisa_intr(int irq, void *dev_id)
74{ 74{
75 u8 eisa_irq; 75 u8 eisa_irq;
76 u8 dma1, dma2; 76 u8 dma1, dma2;
@@ -80,7 +80,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs)
80 dma2 = inb(EISA_DMA2_STATUS); 80 dma2 = inb(EISA_DMA2_STATUS);
81 81
82 if (eisa_irq < EISA_MAX_IRQ) { 82 if (eisa_irq < EISA_MAX_IRQ) {
83 do_IRQ(eisa_irq, regs); 83 do_IRQ(eisa_irq);
84 return IRQ_HANDLED; 84 return IRQ_HANDLED;
85 } 85 }
86 86
@@ -89,6 +89,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs)
89 89
90 outb(0x20, EISA_INT2_CTRL); 90 outb(0x20, EISA_INT2_CTRL);
91 outb(0x20, EISA_INT1_CTRL); 91 outb(0x20, EISA_INT1_CTRL);
92
92 return IRQ_NONE; 93 return IRQ_NONE;
93} 94}
94 95
diff --git a/arch/mips/sgi-ip22/ip22-int.c b/arch/mips/sgi-ip22/ip22-int.c
index f66026e5d64b..af518898eaa1 100644
--- a/arch/mips/sgi-ip22/ip22-int.c
+++ b/arch/mips/sgi-ip22/ip22-int.c
@@ -222,7 +222,7 @@ static struct irq_chip ip22_local3_irq_type = {
222 .end = end_local3_irq, 222 .end = end_local3_irq,
223}; 223};
224 224
225static void indy_local0_irqdispatch(struct pt_regs *regs) 225static void indy_local0_irqdispatch(void)
226{ 226{
227 u8 mask = sgint->istat0 & sgint->imask0; 227 u8 mask = sgint->istat0 & sgint->imask0;
228 u8 mask2; 228 u8 mask2;
@@ -236,11 +236,10 @@ static void indy_local0_irqdispatch(struct pt_regs *regs)
236 236
237 /* if irq == 0, then the interrupt has already been cleared */ 237 /* if irq == 0, then the interrupt has already been cleared */
238 if (irq) 238 if (irq)
239 do_IRQ(irq, regs); 239 do_IRQ(irq);
240 return;
241} 240}
242 241
243static void indy_local1_irqdispatch(struct pt_regs *regs) 242static void indy_local1_irqdispatch(void)
244{ 243{
245 u8 mask = sgint->istat1 & sgint->imask1; 244 u8 mask = sgint->istat1 & sgint->imask1;
246 u8 mask2; 245 u8 mask2;
@@ -254,19 +253,18 @@ static void indy_local1_irqdispatch(struct pt_regs *regs)
254 253
255 /* if irq == 0, then the interrupt has already been cleared */ 254 /* if irq == 0, then the interrupt has already been cleared */
256 if (irq) 255 if (irq)
257 do_IRQ(irq, regs); 256 do_IRQ(irq);
258 return;
259} 257}
260 258
261extern void ip22_be_interrupt(int irq, struct pt_regs *regs); 259extern void ip22_be_interrupt(int irq);
262 260
263static void indy_buserror_irq(struct pt_regs *regs) 261static void indy_buserror_irq(void)
264{ 262{
265 int irq = SGI_BUSERR_IRQ; 263 int irq = SGI_BUSERR_IRQ;
266 264
267 irq_enter(); 265 irq_enter();
268 kstat_this_cpu.irqs[irq]++; 266 kstat_this_cpu.irqs[irq]++;
269 ip22_be_interrupt(irq, regs); 267 ip22_be_interrupt(irq);
270 irq_exit(); 268 irq_exit();
271} 269}
272 270
@@ -305,8 +303,8 @@ static struct irqaction map1_cascade = {
305#define SGI_INTERRUPTS SGINT_LOCAL3 303#define SGI_INTERRUPTS SGINT_LOCAL3
306#endif 304#endif
307 305
308extern void indy_r4k_timer_interrupt(struct pt_regs *regs); 306extern void indy_r4k_timer_interrupt(void);
309extern void indy_8254timer_irq(struct pt_regs *regs); 307extern void indy_8254timer_irq(void);
310 308
311/* 309/*
312 * IRQs on the INDY look basically (barring software IRQs which we don't use 310 * IRQs on the INDY look basically (barring software IRQs which we don't use
@@ -336,7 +334,7 @@ extern void indy_8254timer_irq(struct pt_regs *regs);
336 * another exception, big deal. 334 * another exception, big deal.
337 */ 335 */
338 336
339asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 337asmlinkage void plat_irq_dispatch(void)
340{ 338{
341 unsigned int pending = read_c0_cause(); 339 unsigned int pending = read_c0_cause();
342 340
@@ -344,15 +342,15 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
344 * First we check for r4k counter/timer IRQ. 342 * First we check for r4k counter/timer IRQ.
345 */ 343 */
346 if (pending & CAUSEF_IP7) 344 if (pending & CAUSEF_IP7)
347 indy_r4k_timer_interrupt(regs); 345 indy_r4k_timer_interrupt();
348 else if (pending & CAUSEF_IP2) 346 else if (pending & CAUSEF_IP2)
349 indy_local0_irqdispatch(regs); 347 indy_local0_irqdispatch();
350 else if (pending & CAUSEF_IP3) 348 else if (pending & CAUSEF_IP3)
351 indy_local1_irqdispatch(regs); 349 indy_local1_irqdispatch();
352 else if (pending & CAUSEF_IP6) 350 else if (pending & CAUSEF_IP6)
353 indy_buserror_irq(regs); 351 indy_buserror_irq();
354 else if (pending & (CAUSEF_IP4 | CAUSEF_IP5)) 352 else if (pending & (CAUSEF_IP4 | CAUSEF_IP5))
355 indy_8254timer_irq(regs); 353 indy_8254timer_irq();
356} 354}
357 355
358extern void mips_cpu_irq_init(unsigned int irq_base); 356extern void mips_cpu_irq_init(unsigned int irq_base);
diff --git a/arch/mips/sgi-ip22/ip22-reset.c b/arch/mips/sgi-ip22/ip22-reset.c
index 7a941ecff3bb..66df5ac8f089 100644
--- a/arch/mips/sgi-ip22/ip22-reset.c
+++ b/arch/mips/sgi-ip22/ip22-reset.c
@@ -169,7 +169,7 @@ static inline void volume_down_button(unsigned long data)
169 } 169 }
170} 170}
171 171
172static irqreturn_t panel_int(int irq, void *dev_id, struct pt_regs *regs) 172static irqreturn_t panel_int(int irq, void *dev_id)
173{ 173{
174 unsigned int buttons; 174 unsigned int buttons;
175 175
diff --git a/arch/mips/sgi-ip22/ip22-time.c b/arch/mips/sgi-ip22/ip22-time.c
index 0e061890f797..205554734099 100644
--- a/arch/mips/sgi-ip22/ip22-time.c
+++ b/arch/mips/sgi-ip22/ip22-time.c
@@ -175,7 +175,7 @@ static __init void indy_time_init(void)
175} 175}
176 176
177/* Generic SGI handler for (spurious) 8254 interrupts */ 177/* Generic SGI handler for (spurious) 8254 interrupts */
178void indy_8254timer_irq(struct pt_regs *regs) 178void indy_8254timer_irq(void)
179{ 179{
180 int irq = SGI_8254_0_IRQ; 180 int irq = SGI_8254_0_IRQ;
181 ULONG cnt; 181 ULONG cnt;
@@ -189,13 +189,13 @@ void indy_8254timer_irq(struct pt_regs *regs)
189 irq_exit(); 189 irq_exit();
190} 190}
191 191
192void indy_r4k_timer_interrupt(struct pt_regs *regs) 192void indy_r4k_timer_interrupt(void)
193{ 193{
194 int irq = SGI_TIMER_IRQ; 194 int irq = SGI_TIMER_IRQ;
195 195
196 irq_enter(); 196 irq_enter();
197 kstat_this_cpu.irqs[irq]++; 197 kstat_this_cpu.irqs[irq]++;
198 timer_interrupt(irq, NULL, regs); 198 timer_interrupt(irq, NULL);
199 irq_exit(); 199 irq_exit();
200} 200}
201 201
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index 24a85372284f..f01ba1f90770 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -30,7 +30,6 @@
30#include <asm/mipsregs.h> 30#include <asm/mipsregs.h>
31#include <asm/system.h> 31#include <asm/system.h>
32 32
33#include <asm/ptrace.h>
34#include <asm/processor.h> 33#include <asm/processor.h>
35#include <asm/pci/bridge.h> 34#include <asm/pci/bridge.h>
36#include <asm/sn/addrs.h> 35#include <asm/sn/addrs.h>
@@ -129,7 +128,7 @@ static int ms1bit(unsigned long x)
129 * Kanoj 05.13.00 128 * Kanoj 05.13.00
130 */ 129 */
131 130
132static void ip27_do_irq_mask0(struct pt_regs *regs) 131static void ip27_do_irq_mask0(void)
133{ 132{
134 int irq, swlevel; 133 int irq, swlevel;
135 hubreg_t pend0, mask0; 134 hubreg_t pend0, mask0;
@@ -164,13 +163,13 @@ static void ip27_do_irq_mask0(struct pt_regs *regs)
164 struct slice_data *si = cpu_data[cpu].data; 163 struct slice_data *si = cpu_data[cpu].data;
165 164
166 irq = si->level_to_irq[swlevel]; 165 irq = si->level_to_irq[swlevel];
167 do_IRQ(irq, regs); 166 do_IRQ(irq);
168 } 167 }
169 168
170 LOCAL_HUB_L(PI_INT_PEND0); 169 LOCAL_HUB_L(PI_INT_PEND0);
171} 170}
172 171
173static void ip27_do_irq_mask1(struct pt_regs *regs) 172static void ip27_do_irq_mask1(void)
174{ 173{
175 int irq, swlevel; 174 int irq, swlevel;
176 hubreg_t pend1, mask1; 175 hubreg_t pend1, mask1;
@@ -190,17 +189,17 @@ static void ip27_do_irq_mask1(struct pt_regs *regs)
190 /* "map" swlevel to irq */ 189 /* "map" swlevel to irq */
191 irq = si->level_to_irq[swlevel]; 190 irq = si->level_to_irq[swlevel];
192 LOCAL_HUB_CLR_INTR(swlevel); 191 LOCAL_HUB_CLR_INTR(swlevel);
193 do_IRQ(irq, regs); 192 do_IRQ(irq);
194 193
195 LOCAL_HUB_L(PI_INT_PEND1); 194 LOCAL_HUB_L(PI_INT_PEND1);
196} 195}
197 196
198static void ip27_prof_timer(struct pt_regs *regs) 197static void ip27_prof_timer(void)
199{ 198{
200 panic("CPU %d got a profiling interrupt", smp_processor_id()); 199 panic("CPU %d got a profiling interrupt", smp_processor_id());
201} 200}
202 201
203static void ip27_hub_error(struct pt_regs *regs) 202static void ip27_hub_error(void)
204{ 203{
205 panic("CPU %d got a hub error interrupt", smp_processor_id()); 204 panic("CPU %d got a hub error interrupt", smp_processor_id());
206} 205}
@@ -418,22 +417,22 @@ int __devinit request_bridge_irq(struct bridge_controller *bc)
418 return irq; 417 return irq;
419} 418}
420 419
421extern void ip27_rt_timer_interrupt(struct pt_regs *regs); 420extern void ip27_rt_timer_interrupt(void);
422 421
423asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 422asmlinkage void plat_irq_dispatch(void)
424{ 423{
425 unsigned long pending = read_c0_cause() & read_c0_status(); 424 unsigned long pending = read_c0_cause() & read_c0_status();
426 425
427 if (pending & CAUSEF_IP4) 426 if (pending & CAUSEF_IP4)
428 ip27_rt_timer_interrupt(regs); 427 ip27_rt_timer_interrupt();
429 else if (pending & CAUSEF_IP2) /* PI_INT_PEND_0 or CC_PEND_{A|B} */ 428 else if (pending & CAUSEF_IP2) /* PI_INT_PEND_0 or CC_PEND_{A|B} */
430 ip27_do_irq_mask0(regs); 429 ip27_do_irq_mask0();
431 else if (pending & CAUSEF_IP3) /* PI_INT_PEND_1 */ 430 else if (pending & CAUSEF_IP3) /* PI_INT_PEND_1 */
432 ip27_do_irq_mask1(regs); 431 ip27_do_irq_mask1();
433 else if (pending & CAUSEF_IP5) 432 else if (pending & CAUSEF_IP5)
434 ip27_prof_timer(regs); 433 ip27_prof_timer();
435 else if (pending & CAUSEF_IP6) 434 else if (pending & CAUSEF_IP6)
436 ip27_hub_error(regs); 435 ip27_hub_error();
437} 436}
438 437
439void __init arch_init_irq(void) 438void __init arch_init_irq(void)
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index 257ce118e380..4e870fc4469b 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -89,7 +89,7 @@ static int set_rtc_mmss(unsigned long nowtime)
89 89
90static unsigned int rt_timer_irq; 90static unsigned int rt_timer_irq;
91 91
92void ip27_rt_timer_interrupt(struct pt_regs *regs) 92void ip27_rt_timer_interrupt(void)
93{ 93{
94 int cpu = smp_processor_id(); 94 int cpu = smp_processor_id();
95 int cpuA = cputoslice(cpu) == 0; 95 int cpuA = cputoslice(cpu) == 0;
@@ -111,7 +111,7 @@ again:
111 if (cpu == 0) 111 if (cpu == 0)
112 do_timer(1); 112 do_timer(1);
113 113
114 update_process_times(user_mode(regs)); 114 update_process_times(user_mode(get_irq_regs()));
115 115
116 /* 116 /*
117 * If we have an externally synchronized Linux clock, then update 117 * If we have an externally synchronized Linux clock, then update
diff --git a/arch/mips/sgi-ip32/crime.c b/arch/mips/sgi-ip32/crime.c
index 41b5eca1148c..bff508704d03 100644
--- a/arch/mips/sgi-ip32/crime.c
+++ b/arch/mips/sgi-ip32/crime.c
@@ -14,7 +14,6 @@
14#include <asm/bootinfo.h> 14#include <asm/bootinfo.h>
15#include <asm/io.h> 15#include <asm/io.h>
16#include <asm/mipsregs.h> 16#include <asm/mipsregs.h>
17#include <asm/ptrace.h>
18#include <asm/page.h> 17#include <asm/page.h>
19#include <asm/ip32/crime.h> 18#include <asm/ip32/crime.h>
20#include <asm/ip32/mace.h> 19#include <asm/ip32/mace.h>
@@ -40,8 +39,7 @@ void __init crime_init(void)
40 id, rev, field, (unsigned long) CRIME_BASE); 39 id, rev, field, (unsigned long) CRIME_BASE);
41} 40}
42 41
43irqreturn_t 42irqreturn_t crime_memerr_intr(unsigned int irq, void *dev_id)
44crime_memerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs)
45{ 43{
46 unsigned long stat, addr; 44 unsigned long stat, addr;
47 int fatal = 0; 45 int fatal = 0;
@@ -92,8 +90,7 @@ crime_memerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs)
92 return IRQ_HANDLED; 90 return IRQ_HANDLED;
93} 91}
94 92
95irqreturn_t 93irqreturn_t crime_cpuerr_intr(unsigned int irq, void *dev_id)
96crime_cpuerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs)
97{ 94{
98 unsigned long stat = crime->cpu_error_stat & CRIME_CPU_ERROR_MASK; 95 unsigned long stat = crime->cpu_error_stat & CRIME_CPU_ERROR_MASK;
99 unsigned long addr = crime->cpu_error_addr & CRIME_CPU_ERROR_ADDR_MASK; 96 unsigned long addr = crime->cpu_error_addr & CRIME_CPU_ERROR_ADDR_MASK;
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index c64a820373de..c9acadd0846b 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -120,10 +120,8 @@ static void inline flush_mace_bus(void)
120static DEFINE_SPINLOCK(ip32_irq_lock); 120static DEFINE_SPINLOCK(ip32_irq_lock);
121 121
122/* Some initial interrupts to set up */ 122/* Some initial interrupts to set up */
123extern irqreturn_t crime_memerr_intr (int irq, void *dev_id, 123extern irqreturn_t crime_memerr_intr(int irq, void *dev_id);
124 struct pt_regs *regs); 124extern irqreturn_t crime_cpuerr_intr(int irq, void *dev_id);
125extern irqreturn_t crime_cpuerr_intr (int irq, void *dev_id,
126 struct pt_regs *regs);
127 125
128struct irqaction memerr_irq = { crime_memerr_intr, IRQF_DISABLED, 126struct irqaction memerr_irq = { crime_memerr_intr, IRQF_DISABLED,
129 CPU_MASK_NONE, "CRIME memory error", NULL, NULL }; 127 CPU_MASK_NONE, "CRIME memory error", NULL, NULL };
@@ -479,7 +477,7 @@ static struct irq_chip ip32_mace_interrupt = {
479 .end = end_mace_irq, 477 .end = end_mace_irq,
480}; 478};
481 479
482static void ip32_unknown_interrupt(struct pt_regs *regs) 480static void ip32_unknown_interrupt(void)
483{ 481{
484 printk ("Unknown interrupt occurred!\n"); 482 printk ("Unknown interrupt occurred!\n");
485 printk ("cp0_status: %08x\n", read_c0_status()); 483 printk ("cp0_status: %08x\n", read_c0_status());
@@ -492,7 +490,7 @@ static void ip32_unknown_interrupt(struct pt_regs *regs)
492 printk ("MACE PCI control register: %08x\n", mace->pci.control); 490 printk ("MACE PCI control register: %08x\n", mace->pci.control);
493 491
494 printk("Register dump:\n"); 492 printk("Register dump:\n");
495 show_regs(regs); 493 show_regs(get_irq_regs());
496 494
497 printk("Please mail this report to linux-mips@linux-mips.org\n"); 495 printk("Please mail this report to linux-mips@linux-mips.org\n");
498 printk("Spinning..."); 496 printk("Spinning...");
@@ -501,7 +499,7 @@ static void ip32_unknown_interrupt(struct pt_regs *regs)
501 499
502/* CRIME 1.1 appears to deliver all interrupts to this one pin. */ 500/* CRIME 1.1 appears to deliver all interrupts to this one pin. */
503/* change this to loop over all edge-triggered irqs, exception masked out ones */ 501/* change this to loop over all edge-triggered irqs, exception masked out ones */
504static void ip32_irq0(struct pt_regs *regs) 502static void ip32_irq0(void)
505{ 503{
506 uint64_t crime_int; 504 uint64_t crime_int;
507 int irq = 0; 505 int irq = 0;
@@ -516,50 +514,50 @@ static void ip32_irq0(struct pt_regs *regs)
516 } 514 }
517 irq++; 515 irq++;
518 DBG("*irq %u*\n", irq); 516 DBG("*irq %u*\n", irq);
519 do_IRQ(irq, regs); 517 do_IRQ(irq);
520} 518}
521 519
522static void ip32_irq1(struct pt_regs *regs) 520static void ip32_irq1(void)
523{ 521{
524 ip32_unknown_interrupt(regs); 522 ip32_unknown_interrupt();
525} 523}
526 524
527static void ip32_irq2(struct pt_regs *regs) 525static void ip32_irq2(void)
528{ 526{
529 ip32_unknown_interrupt(regs); 527 ip32_unknown_interrupt();
530} 528}
531 529
532static void ip32_irq3(struct pt_regs *regs) 530static void ip32_irq3(void)
533{ 531{
534 ip32_unknown_interrupt(regs); 532 ip32_unknown_interrupt();
535} 533}
536 534
537static void ip32_irq4(struct pt_regs *regs) 535static void ip32_irq4(void)
538{ 536{
539 ip32_unknown_interrupt(regs); 537 ip32_unknown_interrupt();
540} 538}
541 539
542static void ip32_irq5(struct pt_regs *regs) 540static void ip32_irq5(void)
543{ 541{
544 ll_timer_interrupt(IP32_R4K_TIMER_IRQ, regs); 542 ll_timer_interrupt(IP32_R4K_TIMER_IRQ);
545} 543}
546 544
547asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 545asmlinkage void plat_irq_dispatch(void)
548{ 546{
549 unsigned int pending = read_c0_cause(); 547 unsigned int pending = read_c0_cause();
550 548
551 if (likely(pending & IE_IRQ0)) 549 if (likely(pending & IE_IRQ0))
552 ip32_irq0(regs); 550 ip32_irq0();
553 else if (unlikely(pending & IE_IRQ1)) 551 else if (unlikely(pending & IE_IRQ1))
554 ip32_irq1(regs); 552 ip32_irq1();
555 else if (unlikely(pending & IE_IRQ2)) 553 else if (unlikely(pending & IE_IRQ2))
556 ip32_irq2(regs); 554 ip32_irq2();
557 else if (unlikely(pending & IE_IRQ3)) 555 else if (unlikely(pending & IE_IRQ3))
558 ip32_irq3(regs); 556 ip32_irq3();
559 else if (unlikely(pending & IE_IRQ4)) 557 else if (unlikely(pending & IE_IRQ4))
560 ip32_irq4(regs); 558 ip32_irq4();
561 else if (likely(pending & IE_IRQ5)) 559 else if (likely(pending & IE_IRQ5))
562 ip32_irq5(regs); 560 ip32_irq5();
563} 561}
564 562
565void __init arch_init_irq(void) 563void __init arch_init_irq(void)
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
index a46b75b23ecb..8b1f41484923 100644
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -25,9 +25,9 @@
25#include <linux/kernel_stat.h> 25#include <linux/kernel_stat.h>
26 26
27#include <asm/errno.h> 27#include <asm/errno.h>
28#include <asm/irq_regs.h>
28#include <asm/signal.h> 29#include <asm/signal.h>
29#include <asm/system.h> 30#include <asm/system.h>
30#include <asm/ptrace.h>
31#include <asm/io.h> 31#include <asm/io.h>
32 32
33#include <asm/sibyte/bcm1480_regs.h> 33#include <asm/sibyte/bcm1480_regs.h>
@@ -284,8 +284,7 @@ void __init init_bcm1480_irqs(void)
284} 284}
285 285
286 286
287static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id, 287static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id)
288 struct pt_regs *regs)
289{ 288{
290 return IRQ_NONE; 289 return IRQ_NONE;
291} 290}
@@ -453,7 +452,7 @@ void __init arch_init_irq(void)
453#define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) 452#define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
454#define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) 453#define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
455 454
456void bcm1480_kgdb_interrupt(struct pt_regs *regs) 455static void bcm1480_kgdb_interrupt(void)
457{ 456{
458 /* 457 /*
459 * Clear break-change status (allow some time for the remote 458 * Clear break-change status (allow some time for the remote
@@ -464,16 +463,15 @@ void bcm1480_kgdb_interrupt(struct pt_regs *regs)
464 mdelay(500); 463 mdelay(500);
465 duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | 464 duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT |
466 M_DUART_RX_EN | M_DUART_TX_EN); 465 M_DUART_RX_EN | M_DUART_TX_EN);
467 set_async_breakpoint(&regs->cp0_epc); 466 set_async_breakpoint(&get_irq_regs()->cp0_epc);
468} 467}
469 468
470#endif /* CONFIG_KGDB */ 469#endif /* CONFIG_KGDB */
471 470
472extern void bcm1480_timer_interrupt(struct pt_regs *regs); 471extern void bcm1480_timer_interrupt(void);
473extern void bcm1480_mailbox_interrupt(struct pt_regs *regs); 472extern void bcm1480_mailbox_interrupt(void);
474extern void bcm1480_kgdb_interrupt(struct pt_regs *regs);
475 473
476asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 474asmlinkage void plat_irq_dispatch(void)
477{ 475{
478 unsigned int pending; 476 unsigned int pending;
479 477
@@ -486,21 +484,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
486 484
487#ifdef CONFIG_SIBYTE_BCM1480_PROF 485#ifdef CONFIG_SIBYTE_BCM1480_PROF
488 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ 486 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
489 sbprof_cpu_intr(exception_epc(regs)); 487 sbprof_cpu_intr();
490 else 488 else
491#endif 489#endif
492 490
493 if (pending & CAUSEF_IP4) 491 if (pending & CAUSEF_IP4)
494 bcm1480_timer_interrupt(regs); 492 bcm1480_timer_interrupt();
495 493
496#ifdef CONFIG_SMP 494#ifdef CONFIG_SMP
497 else if (pending & CAUSEF_IP3) 495 else if (pending & CAUSEF_IP3)
498 bcm1480_mailbox_interrupt(regs); 496 bcm1480_mailbox_interrupt();
499#endif 497#endif
500 498
501#ifdef CONFIG_KGDB 499#ifdef CONFIG_KGDB
502 else if (pending & CAUSEF_IP6) 500 else if (pending & CAUSEF_IP6)
503 bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ 501 bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */
504#endif 502#endif
505 503
506 else if (pending & CAUSEF_IP2) { 504 else if (pending & CAUSEF_IP2) {
@@ -521,9 +519,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
521 519
522 if (mask_h) { 520 if (mask_h) {
523 if (mask_h ^ 1) 521 if (mask_h ^ 1)
524 do_IRQ(fls64(mask_h) - 1, regs); 522 do_IRQ(fls64(mask_h) - 1);
525 else 523 else
526 do_IRQ(63 + fls64(mask_l), regs); 524 do_IRQ(63 + fls64(mask_l));
527 } 525 }
528 } 526 }
529} 527}
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c
index 584a4b33faac..6eac36d1b8c8 100644
--- a/arch/mips/sibyte/bcm1480/smp.c
+++ b/arch/mips/sibyte/bcm1480/smp.c
@@ -88,7 +88,7 @@ void core_send_ipi(int cpu, unsigned int action)
88 __raw_writeq((((u64)action)<< 48), mailbox_0_set_regs[cpu]); 88 __raw_writeq((((u64)action)<< 48), mailbox_0_set_regs[cpu]);
89} 89}
90 90
91void bcm1480_mailbox_interrupt(struct pt_regs *regs) 91void bcm1480_mailbox_interrupt(void)
92{ 92{
93 int cpu = smp_processor_id(); 93 int cpu = smp_processor_id();
94 unsigned int action; 94 unsigned int action;
diff --git a/arch/mips/sibyte/bcm1480/time.c b/arch/mips/sibyte/bcm1480/time.c
index 7e088f6c4a86..bf12af46132e 100644
--- a/arch/mips/sibyte/bcm1480/time.c
+++ b/arch/mips/sibyte/bcm1480/time.c
@@ -31,7 +31,6 @@
31#include <linux/kernel_stat.h> 31#include <linux/kernel_stat.h>
32 32
33#include <asm/irq.h> 33#include <asm/irq.h>
34#include <asm/ptrace.h>
35#include <asm/addrspace.h> 34#include <asm/addrspace.h>
36#include <asm/time.h> 35#include <asm/time.h>
37#include <asm/io.h> 36#include <asm/io.h>
@@ -100,10 +99,10 @@ void bcm1480_time_init(void)
100 99
101#include <asm/sibyte/sb1250.h> 100#include <asm/sibyte/sb1250.h>
102 101
103void bcm1480_timer_interrupt(struct pt_regs *regs) 102void bcm1480_timer_interrupt(void)
104{ 103{
105 int cpu = smp_processor_id(); 104 int cpu = smp_processor_id();
106 int irq = K_BCM1480_INT_TIMER_0+cpu; 105 int irq = K_BCM1480_INT_TIMER_0 + cpu;
107 106
108 /* Reset the timer */ 107 /* Reset the timer */
109 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, 108 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS,
@@ -113,13 +112,13 @@ void bcm1480_timer_interrupt(struct pt_regs *regs)
113 /* 112 /*
114 * CPU 0 handles the global timer interrupt job 113 * CPU 0 handles the global timer interrupt job
115 */ 114 */
116 ll_timer_interrupt(irq, regs); 115 ll_timer_interrupt(irq);
117 } 116 }
118 else { 117 else {
119 /* 118 /*
120 * other CPUs should just do profiling and process accounting 119 * other CPUs should just do profiling and process accounting
121 */ 120 */
122 ll_local_timer_interrupt(irq, regs); 121 ll_local_timer_interrupt(irq);
123 } 122 }
124} 123}
125 124
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c
index f9bd9f074517..d5d26770daf6 100644
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -28,7 +28,6 @@
28#include <asm/errno.h> 28#include <asm/errno.h>
29#include <asm/signal.h> 29#include <asm/signal.h>
30#include <asm/system.h> 30#include <asm/system.h>
31#include <asm/ptrace.h>
32#include <asm/io.h> 31#include <asm/io.h>
33 32
34#include <asm/sibyte/sb1250_regs.h> 33#include <asm/sibyte/sb1250_regs.h>
@@ -254,8 +253,7 @@ void __init init_sb1250_irqs(void)
254} 253}
255 254
256 255
257static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id, 256static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id)
258 struct pt_regs *regs)
259{ 257{
260 return IRQ_NONE; 258 return IRQ_NONE;
261} 259}
@@ -403,7 +401,7 @@ void __init arch_init_irq(void)
403#define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) 401#define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
404#define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) 402#define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
405 403
406static void sb1250_kgdb_interrupt(struct pt_regs *regs) 404static void sb1250_kgdb_interrupt(void)
407{ 405{
408 /* 406 /*
409 * Clear break-change status (allow some time for the remote 407 * Clear break-change status (allow some time for the remote
@@ -414,16 +412,15 @@ static void sb1250_kgdb_interrupt(struct pt_regs *regs)
414 mdelay(500); 412 mdelay(500);
415 duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | 413 duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT |
416 M_DUART_RX_EN | M_DUART_TX_EN); 414 M_DUART_RX_EN | M_DUART_TX_EN);
417 set_async_breakpoint(&regs->cp0_epc); 415 set_async_breakpoint(&get_irq_regs()->cp0_epc);
418} 416}
419 417
420#endif /* CONFIG_KGDB */ 418#endif /* CONFIG_KGDB */
421 419
422extern void sb1250_timer_interrupt(struct pt_regs *regs); 420extern void sb1250_timer_interrupt(void);
423extern void sb1250_mailbox_interrupt(struct pt_regs *regs); 421extern void sb1250_mailbox_interrupt(void);
424extern void sb1250_kgdb_interrupt(struct pt_regs *regs);
425 422
426asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 423asmlinkage void plat_irq_dispatch(void)
427{ 424{
428 unsigned int pending; 425 unsigned int pending;
429 426
@@ -446,21 +443,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
446 443
447#ifdef CONFIG_SIBYTE_SB1250_PROF 444#ifdef CONFIG_SIBYTE_SB1250_PROF
448 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ 445 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
449 sbprof_cpu_intr(exception_epc(regs)); 446 sbprof_cpu_intr();
450 else 447 else
451#endif 448#endif
452 449
453 if (pending & CAUSEF_IP4) 450 if (pending & CAUSEF_IP4)
454 sb1250_timer_interrupt(regs); 451 sb1250_timer_interrupt();
455 452
456#ifdef CONFIG_SMP 453#ifdef CONFIG_SMP
457 else if (pending & CAUSEF_IP3) 454 else if (pending & CAUSEF_IP3)
458 sb1250_mailbox_interrupt(regs); 455 sb1250_mailbox_interrupt();
459#endif 456#endif
460 457
461#ifdef CONFIG_KGDB 458#ifdef CONFIG_KGDB
462 else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ 459 else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */
463 sb1250_kgdb_interrupt(regs); 460 sb1250_kgdb_interrupt();
464#endif 461#endif
465 462
466 else if (pending & CAUSEF_IP2) { 463 else if (pending & CAUSEF_IP2) {
@@ -475,9 +472,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
475 mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), 472 mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(),
476 R_IMR_INTERRUPT_STATUS_BASE))); 473 R_IMR_INTERRUPT_STATUS_BASE)));
477 if (mask) 474 if (mask)
478 do_IRQ(fls64(mask) - 1, regs); 475 do_IRQ(fls64(mask) - 1);
479 else 476 else
480 spurious_interrupt(regs); 477 spurious_interrupt();
481 } else 478 } else
482 spurious_interrupt(regs); 479 spurious_interrupt();
483} 480}
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c
index f859db02d3c9..c38e1f34460d 100644
--- a/arch/mips/sibyte/sb1250/smp.c
+++ b/arch/mips/sibyte/sb1250/smp.c
@@ -76,7 +76,7 @@ void core_send_ipi(int cpu, unsigned int action)
76 __raw_writeq((((u64)action) << 48), mailbox_set_regs[cpu]); 76 __raw_writeq((((u64)action) << 48), mailbox_set_regs[cpu]);
77} 77}
78 78
79void sb1250_mailbox_interrupt(struct pt_regs *regs) 79void sb1250_mailbox_interrupt(void)
80{ 80{
81 int cpu = smp_processor_id(); 81 int cpu = smp_processor_id();
82 unsigned int action; 82 unsigned int action;
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c
index 4b669dc86ef4..0ccf1796dd78 100644
--- a/arch/mips/sibyte/sb1250/time.c
+++ b/arch/mips/sibyte/sb1250/time.c
@@ -31,7 +31,6 @@
31#include <linux/kernel_stat.h> 31#include <linux/kernel_stat.h>
32 32
33#include <asm/irq.h> 33#include <asm/irq.h>
34#include <asm/ptrace.h>
35#include <asm/addrspace.h> 34#include <asm/addrspace.h>
36#include <asm/time.h> 35#include <asm/time.h>
37#include <asm/io.h> 36#include <asm/io.h>
@@ -125,7 +124,7 @@ void sb1250_time_init(void)
125 */ 124 */
126} 125}
127 126
128void sb1250_timer_interrupt(struct pt_regs *regs) 127void sb1250_timer_interrupt(void)
129{ 128{
130 int cpu = smp_processor_id(); 129 int cpu = smp_processor_id();
131 int irq = K_INT_TIMER_0 + cpu; 130 int irq = K_INT_TIMER_0 + cpu;
@@ -138,13 +137,13 @@ void sb1250_timer_interrupt(struct pt_regs *regs)
138 /* 137 /*
139 * CPU 0 handles the global timer interrupt job 138 * CPU 0 handles the global timer interrupt job
140 */ 139 */
141 ll_timer_interrupt(irq, regs); 140 ll_timer_interrupt(irq);
142 } 141 }
143 else { 142 else {
144 /* 143 /*
145 * other CPUs should just do profiling and process accounting 144 * other CPUs should just do profiling and process accounting
146 */ 145 */
147 ll_local_timer_interrupt(irq, regs); 146 ll_local_timer_interrupt(irq);
148 } 147 }
149} 148}
150 149
diff --git a/arch/mips/sni/irq.c b/arch/mips/sni/irq.c
index cda165f42b6a..48fb74a7aaec 100644
--- a/arch/mips/sni/irq.c
+++ b/arch/mips/sni/irq.c
@@ -69,20 +69,20 @@ static struct irq_chip pciasic_irq_type = {
69 * hwint0 should deal with MP agent, ASIC PCI, EISA NMI and debug 69 * hwint0 should deal with MP agent, ASIC PCI, EISA NMI and debug
70 * button interrupts. Later ... 70 * button interrupts. Later ...
71 */ 71 */
72static void pciasic_hwint0(struct pt_regs *regs) 72static void pciasic_hwint0(void)
73{ 73{
74 panic("Received int0 but no handler yet ..."); 74 panic("Received int0 but no handler yet ...");
75} 75}
76 76
77/* This interrupt was used for the com1 console on the first prototypes. */ 77/* This interrupt was used for the com1 console on the first prototypes. */
78static void pciasic_hwint2(struct pt_regs *regs) 78static void pciasic_hwint2(void)
79{ 79{
80 /* I think this shouldn't happen on production machines. */ 80 /* I think this shouldn't happen on production machines. */
81 panic("hwint2 and no handler yet"); 81 panic("hwint2 and no handler yet");
82} 82}
83 83
84/* hwint5 is the r4k count / compare interrupt */ 84/* hwint5 is the r4k count / compare interrupt */
85static void pciasic_hwint5(struct pt_regs *regs) 85static void pciasic_hwint5(void)
86{ 86{
87 panic("hwint5 and no handler yet"); 87 panic("hwint5 and no handler yet");
88} 88}
@@ -103,7 +103,7 @@ static unsigned int ls1bit8(unsigned int x)
103 * 103 *
104 * The EISA_INT bit in CSITPEND is high active, all others are low active. 104 * The EISA_INT bit in CSITPEND is high active, all others are low active.
105 */ 105 */
106static void pciasic_hwint1(struct pt_regs *regs) 106static void pciasic_hwint1(void)
107{ 107{
108 u8 pend = *(volatile char *)PCIMT_CSITPEND; 108 u8 pend = *(volatile char *)PCIMT_CSITPEND;
109 unsigned long flags; 109 unsigned long flags;
@@ -119,13 +119,13 @@ static void pciasic_hwint1(struct pt_regs *regs)
119 if (unlikely(irq < 0)) 119 if (unlikely(irq < 0))
120 return; 120 return;
121 121
122 do_IRQ(irq, regs); 122 do_IRQ(irq);
123 } 123 }
124 124
125 if (!(pend & IT_SCSI)) { 125 if (!(pend & IT_SCSI)) {
126 flags = read_c0_status(); 126 flags = read_c0_status();
127 clear_c0_status(ST0_IM); 127 clear_c0_status(ST0_IM);
128 do_IRQ(PCIMT_IRQ_SCSI, regs); 128 do_IRQ(PCIMT_IRQ_SCSI);
129 write_c0_status(flags); 129 write_c0_status(flags);
130 } 130 }
131} 131}
@@ -133,7 +133,7 @@ static void pciasic_hwint1(struct pt_regs *regs)
133/* 133/*
134 * hwint 3 should deal with the PCI A - D interrupts, 134 * hwint 3 should deal with the PCI A - D interrupts,
135 */ 135 */
136static void pciasic_hwint3(struct pt_regs *regs) 136static void pciasic_hwint3(void)
137{ 137{
138 u8 pend = *(volatile char *)PCIMT_CSITPEND; 138 u8 pend = *(volatile char *)PCIMT_CSITPEND;
139 int irq; 139 int irq;
@@ -141,21 +141,21 @@ static void pciasic_hwint3(struct pt_regs *regs)
141 pend &= (IT_INTA | IT_INTB | IT_INTC | IT_INTD); 141 pend &= (IT_INTA | IT_INTB | IT_INTC | IT_INTD);
142 clear_c0_status(IE_IRQ3); 142 clear_c0_status(IE_IRQ3);
143 irq = PCIMT_IRQ_INT2 + ls1bit8(pend); 143 irq = PCIMT_IRQ_INT2 + ls1bit8(pend);
144 do_IRQ(irq, regs); 144 do_IRQ(irq);
145 set_c0_status(IE_IRQ3); 145 set_c0_status(IE_IRQ3);
146} 146}
147 147
148/* 148/*
149 * hwint 4 is used for only the onboard PCnet 32. 149 * hwint 4 is used for only the onboard PCnet 32.
150 */ 150 */
151static void pciasic_hwint4(struct pt_regs *regs) 151static void pciasic_hwint4(void)
152{ 152{
153 clear_c0_status(IE_IRQ4); 153 clear_c0_status(IE_IRQ4);
154 do_IRQ(PCIMT_IRQ_ETHERNET, regs); 154 do_IRQ(PCIMT_IRQ_ETHERNET);
155 set_c0_status(IE_IRQ4); 155 set_c0_status(IE_IRQ4);
156} 156}
157 157
158asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 158asmlinkage void plat_irq_dispatch(void)
159{ 159{
160 unsigned int pending = read_c0_status() & read_c0_cause(); 160 unsigned int pending = read_c0_status() & read_c0_cause();
161 static unsigned char led_cache; 161 static unsigned char led_cache;
@@ -163,17 +163,17 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
163 *(volatile unsigned char *) PCIMT_CSLED = ++led_cache; 163 *(volatile unsigned char *) PCIMT_CSLED = ++led_cache;
164 164
165 if (pending & 0x0800) 165 if (pending & 0x0800)
166 pciasic_hwint1(regs); 166 pciasic_hwint1();
167 else if (pending & 0x4000) 167 else if (pending & 0x4000)
168 pciasic_hwint4(regs); 168 pciasic_hwint4();
169 else if (pending & 0x2000) 169 else if (pending & 0x2000)
170 pciasic_hwint3(regs); 170 pciasic_hwint3();
171 else if (pending & 0x1000) 171 else if (pending & 0x1000)
172 pciasic_hwint2(regs); 172 pciasic_hwint2();
173 else if (pending & 0x8000) 173 else if (pending & 0x8000)
174 pciasic_hwint5(regs); 174 pciasic_hwint5();
175 else if (pending & 0x0400) 175 else if (pending & 0x0400)
176 pciasic_hwint0(regs); 176 pciasic_hwint0();
177} 177}
178 178
179void __init init_pciasic(void) 179void __init init_pciasic(void)
diff --git a/arch/mips/sni/setup.c b/arch/mips/sni/setup.c
index 4e98feb15410..afeb7f13e5b5 100644
--- a/arch/mips/sni/setup.c
+++ b/arch/mips/sni/setup.c
@@ -31,7 +31,6 @@
31#include <asm/irq.h> 31#include <asm/irq.h>
32#include <asm/mc146818-time.h> 32#include <asm/mc146818-time.h>
33#include <asm/processor.h> 33#include <asm/processor.h>
34#include <asm/ptrace.h>
35#include <asm/reboot.h> 34#include <asm/reboot.h>
36#include <asm/sni.h> 35#include <asm/sni.h>
37#include <asm/time.h> 36#include <asm/time.h>
diff --git a/arch/mips/tx4927/common/tx4927_irq.c b/arch/mips/tx4927/common/tx4927_irq.c
index cd176f6a06c8..8266a88a3f88 100644
--- a/arch/mips/tx4927/common/tx4927_irq.c
+++ b/arch/mips/tx4927/common/tx4927_irq.c
@@ -576,24 +576,24 @@ static int tx4927_irq_nested(void)
576 return (sw_irq); 576 return (sw_irq);
577} 577}
578 578
579asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 579asmlinkage void plat_irq_dispatch(void)
580{ 580{
581 unsigned int pending = read_c0_status() & read_c0_cause(); 581 unsigned int pending = read_c0_status() & read_c0_cause();
582 582
583 if (pending & STATUSF_IP7) /* cpu timer */ 583 if (pending & STATUSF_IP7) /* cpu timer */
584 do_IRQ(TX4927_IRQ_CPU_TIMER, regs); 584 do_IRQ(TX4927_IRQ_CPU_TIMER);
585 else if (pending & STATUSF_IP2) { /* tx4927 pic */ 585 else if (pending & STATUSF_IP2) { /* tx4927 pic */
586 unsigned int irq = tx4927_irq_nested(); 586 unsigned int irq = tx4927_irq_nested();
587 587
588 if (unlikely(irq == 0)) { 588 if (unlikely(irq == 0)) {
589 spurious_interrupt(regs); 589 spurious_interrupt();
590 return; 590 return;
591 } 591 }
592 do_IRQ(irq, regs); 592 do_IRQ(irq);
593 } else if (pending & STATUSF_IP0) /* user line 0 */ 593 } else if (pending & STATUSF_IP0) /* user line 0 */
594 do_IRQ(TX4927_IRQ_USER0, regs); 594 do_IRQ(TX4927_IRQ_USER0);
595 else if (pending & STATUSF_IP1) /* user line 1 */ 595 else if (pending & STATUSF_IP1) /* user line 1 */
596 do_IRQ(TX4927_IRQ_USER1, regs); 596 do_IRQ(TX4927_IRQ_USER1);
597 else 597 else
598 spurious_interrupt(regs); 598 spurious_interrupt();
599} 599}
diff --git a/arch/mips/tx4927/common/tx4927_setup.c b/arch/mips/tx4927/common/tx4927_setup.c
index 3ace4037343e..4658b2ae4833 100644
--- a/arch/mips/tx4927/common/tx4927_setup.c
+++ b/arch/mips/tx4927/common/tx4927_setup.c
@@ -53,19 +53,9 @@ void __init tx4927_time_init(void);
53void dump_cp0(char *key); 53void dump_cp0(char *key);
54 54
55 55
56void (*__wbflush) (void);
57
58static void tx4927_write_buffer_flush(void)
59{
60 __asm__ __volatile__
61 ("sync\n\t" "nop\n\t" "loop: bc0f loop\n\t" "nop\n\t");
62}
63
64
65void __init plat_mem_setup(void) 56void __init plat_mem_setup(void)
66{ 57{
67 board_time_init = tx4927_time_init; 58 board_time_init = tx4927_time_init;
68 __wbflush = tx4927_write_buffer_flush;
69 59
70#ifdef CONFIG_TOSHIBA_RBTX4927 60#ifdef CONFIG_TOSHIBA_RBTX4927
71 { 61 {
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
index b0f021f2a6c4..0c3c3f668230 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
@@ -127,9 +127,9 @@ JP7 is not bus master -- do NOT use -- only 4 pci bus master's allowed -- SouthB
127#include <asm/irq.h> 127#include <asm/irq.h>
128#include <asm/pci.h> 128#include <asm/pci.h>
129#include <asm/processor.h> 129#include <asm/processor.h>
130#include <asm/ptrace.h>
131#include <asm/reboot.h> 130#include <asm/reboot.h>
132#include <asm/time.h> 131#include <asm/time.h>
132#include <asm/wbflush.h>
133#include <linux/bootmem.h> 133#include <linux/bootmem.h>
134#include <linux/blkdev.h> 134#include <linux/blkdev.h>
135#ifdef CONFIG_RTC_DS1742 135#ifdef CONFIG_RTC_DS1742
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
index f0d70c476005..735cb8778f4c 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
@@ -58,8 +58,8 @@
58#include <asm/page.h> 58#include <asm/page.h>
59#include <asm/io.h> 59#include <asm/io.h>
60#include <asm/irq.h> 60#include <asm/irq.h>
61#include <asm/irq_regs.h>
61#include <asm/processor.h> 62#include <asm/processor.h>
62#include <asm/ptrace.h>
63#include <asm/reboot.h> 63#include <asm/reboot.h>
64#include <asm/time.h> 64#include <asm/time.h>
65#include <linux/bootmem.h> 65#include <linux/bootmem.h>
@@ -160,8 +160,7 @@ int tx4927_pci66 = 0; /* 0:auto */
160char *toshiba_name = ""; 160char *toshiba_name = "";
161 161
162#ifdef CONFIG_PCI 162#ifdef CONFIG_PCI
163static void tx4927_pcierr_interrupt(int irq, void *dev_id, 163static void tx4927_pcierr_interrupt(int irq, void *dev_id)
164 struct pt_regs *regs)
165{ 164{
166#ifdef CONFIG_BLK_DEV_IDEPCI 165#ifdef CONFIG_BLK_DEV_IDEPCI
167 /* ignore MasterAbort for ide probing... */ 166 /* ignore MasterAbort for ide probing... */
@@ -185,7 +184,7 @@ static void tx4927_pcierr_interrupt(int irq, void *dev_id,
185 (unsigned long) tx4927_ccfgptr->ccfg, 184 (unsigned long) tx4927_ccfgptr->ccfg,
186 (unsigned long) (tx4927_ccfgptr->tear >> 32), 185 (unsigned long) (tx4927_ccfgptr->tear >> 32),
187 (unsigned long) tx4927_ccfgptr->tear); 186 (unsigned long) tx4927_ccfgptr->tear);
188 show_regs(regs); 187 show_regs(get_irq_regs());
189} 188}
190 189
191void __init toshiba_rbtx4927_pci_irq_init(void) 190void __init toshiba_rbtx4927_pci_irq_init(void)
diff --git a/arch/mips/tx4938/common/irq.c b/arch/mips/tx4938/common/irq.c
index cbfb34221b59..77fe2454f5b9 100644
--- a/arch/mips/tx4938/common/irq.c
+++ b/arch/mips/tx4938/common/irq.c
@@ -30,6 +30,7 @@
30#include <asm/irq.h> 30#include <asm/irq.h>
31#include <asm/mipsregs.h> 31#include <asm/mipsregs.h>
32#include <asm/system.h> 32#include <asm/system.h>
33#include <asm/wbflush.h>
33#include <asm/tx4938/rbtx4938.h> 34#include <asm/tx4938/rbtx4938.h>
34 35
35/**********************************************************************************/ 36/**********************************************************************************/
@@ -104,8 +105,6 @@ tx4938_irq_cp0_init(void)
104 irq_desc[i].depth = 1; 105 irq_desc[i].depth = 1;
105 irq_desc[i].chip = &tx4938_irq_cp0_type; 106 irq_desc[i].chip = &tx4938_irq_cp0_type;
106 } 107 }
107
108 return;
109} 108}
110 109
111static unsigned int 110static unsigned int
@@ -113,7 +112,7 @@ tx4938_irq_cp0_startup(unsigned int irq)
113{ 112{
114 tx4938_irq_cp0_enable(irq); 113 tx4938_irq_cp0_enable(irq);
115 114
116 return (0); 115 return 0;
117} 116}
118 117
119static void 118static void
@@ -144,16 +143,12 @@ tx4938_irq_cp0_disable(unsigned int irq)
144 clear_c0_status(tx4938_irq_cp0_mask(irq)); 143 clear_c0_status(tx4938_irq_cp0_mask(irq));
145 144
146 spin_unlock_irqrestore(&tx4938_cp0_lock, flags); 145 spin_unlock_irqrestore(&tx4938_cp0_lock, flags);
147
148 return;
149} 146}
150 147
151static void 148static void
152tx4938_irq_cp0_mask_and_ack(unsigned int irq) 149tx4938_irq_cp0_mask_and_ack(unsigned int irq)
153{ 150{
154 tx4938_irq_cp0_disable(irq); 151 tx4938_irq_cp0_disable(irq);
155
156 return;
157} 152}
158 153
159static void 154static void
@@ -162,8 +157,6 @@ tx4938_irq_cp0_end(unsigned int irq)
162 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) { 157 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
163 tx4938_irq_cp0_enable(irq); 158 tx4938_irq_cp0_enable(irq);
164 } 159 }
165
166 return;
167} 160}
168 161
169/**********************************************************************************/ 162/**********************************************************************************/
@@ -227,7 +220,7 @@ tx4938_irq_pic_addr(int irq)
227 } 220 }
228 } 221 }
229 222
230 return (0); 223 return 0;
231} 224}
232 225
233u32 226u32
@@ -278,7 +271,7 @@ tx4938_irq_pic_mask(int irq)
278 return (0x00000007); 271 return (0x00000007);
279 } 272 }
280 } 273 }
281 return (0x00000000); 274 return 0x00000000;
282} 275}
283 276
284static void 277static void
@@ -292,8 +285,6 @@ tx4938_irq_pic_modify(unsigned pic_reg, unsigned clr_bits, unsigned set_bits)
292 TX4938_WR(pic_reg, val); 285 TX4938_WR(pic_reg, val);
293 mmiowb(); 286 mmiowb();
294 TX4938_RD(pic_reg); 287 TX4938_RD(pic_reg);
295
296 return;
297} 288}
298 289
299static void __init 290static void __init
@@ -317,8 +308,6 @@ tx4938_irq_pic_init(void)
317 TX4938_WR(0xff1ff600, TX4938_RD(0xff1ff600) | 0x1); /* irq enable */ 308 TX4938_WR(0xff1ff600, TX4938_RD(0xff1ff600) | 0x1); /* irq enable */
318 309
319 spin_unlock_irqrestore(&tx4938_pic_lock, flags); 310 spin_unlock_irqrestore(&tx4938_pic_lock, flags);
320
321 return;
322} 311}
323 312
324static unsigned int 313static unsigned int
@@ -326,15 +315,13 @@ tx4938_irq_pic_startup(unsigned int irq)
326{ 315{
327 tx4938_irq_pic_enable(irq); 316 tx4938_irq_pic_enable(irq);
328 317
329 return (0); 318 return 0;
330} 319}
331 320
332static void 321static void
333tx4938_irq_pic_shutdown(unsigned int irq) 322tx4938_irq_pic_shutdown(unsigned int irq)
334{ 323{
335 tx4938_irq_pic_disable(irq); 324 tx4938_irq_pic_disable(irq);
336
337 return;
338} 325}
339 326
340static void 327static void
@@ -348,8 +335,6 @@ tx4938_irq_pic_enable(unsigned int irq)
348 tx4938_irq_pic_mask(irq)); 335 tx4938_irq_pic_mask(irq));
349 336
350 spin_unlock_irqrestore(&tx4938_pic_lock, flags); 337 spin_unlock_irqrestore(&tx4938_pic_lock, flags);
351
352 return;
353} 338}
354 339
355static void 340static void
@@ -363,16 +348,12 @@ tx4938_irq_pic_disable(unsigned int irq)
363 tx4938_irq_pic_mask(irq), 0); 348 tx4938_irq_pic_mask(irq), 0);
364 349
365 spin_unlock_irqrestore(&tx4938_pic_lock, flags); 350 spin_unlock_irqrestore(&tx4938_pic_lock, flags);
366
367 return;
368} 351}
369 352
370static void 353static void
371tx4938_irq_pic_mask_and_ack(unsigned int irq) 354tx4938_irq_pic_mask_and_ack(unsigned int irq)
372{ 355{
373 tx4938_irq_pic_disable(irq); 356 tx4938_irq_pic_disable(irq);
374
375 return;
376} 357}
377 358
378static void 359static void
@@ -381,8 +362,6 @@ tx4938_irq_pic_end(unsigned int irq)
381 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) { 362 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
382 tx4938_irq_pic_enable(irq); 363 tx4938_irq_pic_enable(irq);
383 } 364 }
384
385 return;
386} 365}
387 366
388/**********************************************************************************/ 367/**********************************************************************************/
@@ -394,8 +373,6 @@ tx4938_irq_init(void)
394{ 373{
395 tx4938_irq_cp0_init(); 374 tx4938_irq_cp0_init();
396 tx4938_irq_pic_init(); 375 tx4938_irq_pic_init();
397
398 return;
399} 376}
400 377
401int 378int
@@ -417,23 +394,23 @@ tx4938_irq_nested(void)
417 } 394 }
418 395
419 wbflush(); 396 wbflush();
420 return (sw_irq); 397 return sw_irq;
421} 398}
422 399
423asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 400asmlinkage void plat_irq_dispatch(void)
424{ 401{
425 unsigned int pending = read_c0_cause() & read_c0_status(); 402 unsigned int pending = read_c0_cause() & read_c0_status();
426 403
427 if (pending & STATUSF_IP7) 404 if (pending & STATUSF_IP7)
428 do_IRQ(TX4938_IRQ_CPU_TIMER, regs); 405 do_IRQ(TX4938_IRQ_CPU_TIMER);
429 else if (pending & STATUSF_IP2) { 406 else if (pending & STATUSF_IP2) {
430 int irq = tx4938_irq_nested(); 407 int irq = tx4938_irq_nested();
431 if (irq) 408 if (irq)
432 do_IRQ(irq, regs); 409 do_IRQ(irq);
433 else 410 else
434 spurious_interrupt(regs); 411 spurious_interrupt();
435 } else if (pending & STATUSF_IP1) 412 } else if (pending & STATUSF_IP1)
436 do_IRQ(TX4938_IRQ_USER1, regs); 413 do_IRQ(TX4938_IRQ_USER1);
437 else if (pending & STATUSF_IP0) 414 else if (pending & STATUSF_IP0)
438 do_IRQ(TX4938_IRQ_USER0, regs); 415 do_IRQ(TX4938_IRQ_USER0);
439} 416}
diff --git a/arch/mips/tx4938/common/setup.c b/arch/mips/tx4938/common/setup.c
index 71859c4fee84..f415a1f18fba 100644
--- a/arch/mips/tx4938/common/setup.c
+++ b/arch/mips/tx4938/common/setup.c
@@ -41,29 +41,10 @@ void __init tx4938_setup(void);
41void __init tx4938_time_init(void); 41void __init tx4938_time_init(void);
42void dump_cp0(char *key); 42void dump_cp0(char *key);
43 43
44void (*__wbflush) (void);
45
46static void
47tx4938_write_buffer_flush(void)
48{
49 mmiowb();
50
51 __asm__ __volatile__(
52 ".set push\n\t"
53 ".set noreorder\n\t"
54 "lw $0,%0\n\t"
55 "nop\n\t"
56 ".set pop"
57 : /* no output */
58 : "m" (*(int *)KSEG1)
59 : "memory");
60}
61
62void __init 44void __init
63plat_mem_setup(void) 45plat_mem_setup(void)
64{ 46{
65 board_time_init = tx4938_time_init; 47 board_time_init = tx4938_time_init;
66 __wbflush = tx4938_write_buffer_flush;
67 toshiba_rbtx4938_setup(); 48 toshiba_rbtx4938_setup();
68} 49}
69 50
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/irq.c b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
index 83f2750825a4..102e473c10a2 100644
--- a/arch/mips/tx4938/toshiba_rbtx4938/irq.c
+++ b/arch/mips/tx4938/toshiba_rbtx4938/irq.c
@@ -81,9 +81,9 @@ IRQ Device
81#include <asm/io.h> 81#include <asm/io.h>
82#include <asm/irq.h> 82#include <asm/irq.h>
83#include <asm/processor.h> 83#include <asm/processor.h>
84#include <asm/ptrace.h>
85#include <asm/reboot.h> 84#include <asm/reboot.h>
86#include <asm/time.h> 85#include <asm/time.h>
86#include <asm/wbflush.h>
87#include <linux/bootmem.h> 87#include <linux/bootmem.h>
88#include <asm/tx4938/rbtx4938.h> 88#include <asm/tx4938/rbtx4938.h>
89 89
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c
index fae3136f462d..b926e6a75c29 100644
--- a/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c
+++ b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c
@@ -35,7 +35,8 @@ void __init txx9_spi_init(unsigned long base, int (*cs_func)(int chipid, int on)
35} 35}
36 36
37static DECLARE_WAIT_QUEUE_HEAD(txx9_spi_wait); 37static DECLARE_WAIT_QUEUE_HEAD(txx9_spi_wait);
38static void txx9_spi_interrupt(int irq, void *dev_id, struct pt_regs *regs) 38
39static void txx9_spi_interrupt(int irq, void *dev_id)
39{ 40{
40 /* disable rx intr */ 41 /* disable rx intr */
41 tx4938_spiptr->cr0 &= ~TXx9_SPCR0_RBSIE; 42 tx4938_spiptr->cr0 &= ~TXx9_SPCR0_RBSIE;
diff --git a/arch/mips/vr41xx/common/icu.c b/arch/mips/vr41xx/common/icu.c
index 7a5c31d58378..c215c0d39fae 100644
--- a/arch/mips/vr41xx/common/icu.c
+++ b/arch/mips/vr41xx/common/icu.c
@@ -635,7 +635,7 @@ int vr41xx_set_intassign(unsigned int irq, unsigned char intassign)
635 635
636EXPORT_SYMBOL(vr41xx_set_intassign); 636EXPORT_SYMBOL(vr41xx_set_intassign);
637 637
638static int icu_get_irq(unsigned int irq, struct pt_regs *regs) 638static int icu_get_irq(unsigned int irq)
639{ 639{
640 uint16_t pend1, pend2; 640 uint16_t pend1, pend2;
641 uint16_t mask1, mask2; 641 uint16_t mask1, mask2;
diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c
index 4733c5344467..397ba94cd7ec 100644
--- a/arch/mips/vr41xx/common/irq.c
+++ b/arch/mips/vr41xx/common/irq.c
@@ -25,7 +25,7 @@
25#include <asm/vr41xx/irq.h> 25#include <asm/vr41xx/irq.h>
26 26
27typedef struct irq_cascade { 27typedef struct irq_cascade {
28 int (*get_irq)(unsigned int, struct pt_regs *); 28 int (*get_irq)(unsigned int);
29} irq_cascade_t; 29} irq_cascade_t;
30 30
31static irq_cascade_t irq_cascade[NR_IRQS] __cacheline_aligned; 31static irq_cascade_t irq_cascade[NR_IRQS] __cacheline_aligned;
@@ -36,7 +36,7 @@ static struct irqaction cascade_irqaction = {
36 .name = "cascade", 36 .name = "cascade",
37}; 37};
38 38
39int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int, struct pt_regs *)) 39int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int))
40{ 40{
41 int retval = 0; 41 int retval = 0;
42 42
@@ -59,7 +59,7 @@ int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int, struct pt_regs *)
59 59
60EXPORT_SYMBOL_GPL(cascade_irq); 60EXPORT_SYMBOL_GPL(cascade_irq);
61 61
62static void irq_dispatch(unsigned int irq, struct pt_regs *regs) 62static void irq_dispatch(unsigned int irq)
63{ 63{
64 irq_cascade_t *cascade; 64 irq_cascade_t *cascade;
65 struct irq_desc *desc; 65 struct irq_desc *desc;
@@ -74,39 +74,39 @@ static void irq_dispatch(unsigned int irq, struct pt_regs *regs)
74 unsigned int source_irq = irq; 74 unsigned int source_irq = irq;
75 desc = irq_desc + source_irq; 75 desc = irq_desc + source_irq;
76 desc->chip->ack(source_irq); 76 desc->chip->ack(source_irq);
77 irq = cascade->get_irq(irq, regs); 77 irq = cascade->get_irq(irq);
78 if (irq < 0) 78 if (irq < 0)
79 atomic_inc(&irq_err_count); 79 atomic_inc(&irq_err_count);
80 else 80 else
81 irq_dispatch(irq, regs); 81 irq_dispatch(irq);
82 desc->chip->end(source_irq); 82 desc->chip->end(source_irq);
83 } else 83 } else
84 do_IRQ(irq, regs); 84 do_IRQ(irq);
85} 85}
86 86
87asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 87asmlinkage void plat_irq_dispatch(void)
88{ 88{
89 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; 89 unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
90 90
91 if (pending & CAUSEF_IP7) 91 if (pending & CAUSEF_IP7)
92 do_IRQ(7, regs); 92 do_IRQ(7);
93 else if (pending & 0x7800) { 93 else if (pending & 0x7800) {
94 if (pending & CAUSEF_IP3) 94 if (pending & CAUSEF_IP3)
95 irq_dispatch(3, regs); 95 irq_dispatch(3);
96 else if (pending & CAUSEF_IP4) 96 else if (pending & CAUSEF_IP4)
97 irq_dispatch(4, regs); 97 irq_dispatch(4);
98 else if (pending & CAUSEF_IP5) 98 else if (pending & CAUSEF_IP5)
99 irq_dispatch(5, regs); 99 irq_dispatch(5);
100 else if (pending & CAUSEF_IP6) 100 else if (pending & CAUSEF_IP6)
101 irq_dispatch(6, regs); 101 irq_dispatch(6);
102 } else if (pending & CAUSEF_IP2) 102 } else if (pending & CAUSEF_IP2)
103 irq_dispatch(2, regs); 103 irq_dispatch(2);
104 else if (pending & CAUSEF_IP0) 104 else if (pending & CAUSEF_IP0)
105 do_IRQ(0, regs); 105 do_IRQ(0);
106 else if (pending & CAUSEF_IP1) 106 else if (pending & CAUSEF_IP1)
107 do_IRQ(1, regs); 107 do_IRQ(1);
108 else 108 else
109 spurious_interrupt(regs); 109 spurious_interrupt();
110} 110}
111 111
112void __init arch_init_irq(void) 112void __init arch_init_irq(void)
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c
index 2b257e4f17df..d6c486e9501c 100644
--- a/arch/parisc/kernel/drivers.c
+++ b/arch/parisc/kernel/drivers.c
@@ -424,7 +424,7 @@ struct parisc_device * create_tree_node(char id, struct device *parent)
424 /* make the generic dma mask a pointer to the parisc one */ 424 /* make the generic dma mask a pointer to the parisc one */
425 dev->dev.dma_mask = &dev->dma_mask; 425 dev->dev.dma_mask = &dev->dma_mask;
426 dev->dev.coherent_dma_mask = dev->dma_mask; 426 dev->dev.coherent_dma_mask = dev->dma_mask;
427 if (!device_register(&dev->dev)) { 427 if (device_register(&dev->dev)) {
428 kfree(dev); 428 kfree(dev);
429 return NULL; 429 return NULL;
430 } 430 }
@@ -853,9 +853,9 @@ static void print_parisc_device(struct parisc_device *dev)
853 */ 853 */
854void init_parisc_bus(void) 854void init_parisc_bus(void)
855{ 855{
856 if (!bus_register(&parisc_bus_type)) 856 if (bus_register(&parisc_bus_type))
857 panic("Could not register PA-RISC bus type\n"); 857 panic("Could not register PA-RISC bus type\n");
858 if (!device_register(&root)) 858 if (device_register(&root))
859 panic("Could not register PA-RISC root device\n"); 859 panic("Could not register PA-RISC root device\n");
860 get_device(&root); 860 get_device(&root);
861} 861}
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index c2531ae032cf..9158b707c0dd 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -160,13 +160,14 @@ void __init set_firmware_width(void)
160{ 160{
161#ifdef __LP64__ 161#ifdef __LP64__
162 int retval; 162 int retval;
163 unsigned long flags;
163 164
164 spin_lock_irq(&pdc_lock); 165 spin_lock_irqsave(&pdc_lock, flags);
165 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0); 166 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0);
166 convert_to_wide(pdc_result); 167 convert_to_wide(pdc_result);
167 if(pdc_result[0] != NARROW_FIRMWARE) 168 if(pdc_result[0] != NARROW_FIRMWARE)
168 parisc_narrow_firmware = 0; 169 parisc_narrow_firmware = 0;
169 spin_unlock_irq(&pdc_lock); 170 spin_unlock_irqrestore(&pdc_lock, flags);
170#endif 171#endif
171} 172}
172 173
@@ -196,10 +197,11 @@ void pdc_emergency_unlock(void)
196int pdc_add_valid(unsigned long address) 197int pdc_add_valid(unsigned long address)
197{ 198{
198 int retval; 199 int retval;
200 unsigned long flags;
199 201
200 spin_lock_irq(&pdc_lock); 202 spin_lock_irqsave(&pdc_lock, flags);
201 retval = mem_pdc_call(PDC_ADD_VALID, PDC_ADD_VALID_VERIFY, address); 203 retval = mem_pdc_call(PDC_ADD_VALID, PDC_ADD_VALID_VERIFY, address);
202 spin_unlock_irq(&pdc_lock); 204 spin_unlock_irqrestore(&pdc_lock, flags);
203 205
204 return retval; 206 return retval;
205} 207}
@@ -216,15 +218,16 @@ EXPORT_SYMBOL(pdc_add_valid);
216int __init pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len) 218int __init pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len)
217{ 219{
218 int retval; 220 int retval;
221 unsigned long flags;
219 222
220 spin_lock_irq(&pdc_lock); 223 spin_lock_irqsave(&pdc_lock, flags);
221 memcpy(&pdc_result, chassis_info, sizeof(*chassis_info)); 224 memcpy(&pdc_result, chassis_info, sizeof(*chassis_info));
222 memcpy(&pdc_result2, led_info, len); 225 memcpy(&pdc_result2, led_info, len);
223 retval = mem_pdc_call(PDC_CHASSIS, PDC_RETURN_CHASSIS_INFO, 226 retval = mem_pdc_call(PDC_CHASSIS, PDC_RETURN_CHASSIS_INFO,
224 __pa(pdc_result), __pa(pdc_result2), len); 227 __pa(pdc_result), __pa(pdc_result2), len);
225 memcpy(chassis_info, pdc_result, sizeof(*chassis_info)); 228 memcpy(chassis_info, pdc_result, sizeof(*chassis_info));
226 memcpy(led_info, pdc_result2, len); 229 memcpy(led_info, pdc_result2, len);
227 spin_unlock_irq(&pdc_lock); 230 spin_unlock_irqrestore(&pdc_lock, flags);
228 231
229 return retval; 232 return retval;
230} 233}
@@ -239,13 +242,14 @@ int __init pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_inf
239int pdc_pat_chassis_send_log(unsigned long state, unsigned long data) 242int pdc_pat_chassis_send_log(unsigned long state, unsigned long data)
240{ 243{
241 int retval = 0; 244 int retval = 0;
245 unsigned long flags;
242 246
243 if (!is_pdc_pat()) 247 if (!is_pdc_pat())
244 return -1; 248 return -1;
245 249
246 spin_lock_irq(&pdc_lock); 250 spin_lock_irqsave(&pdc_lock, flags);
247 retval = mem_pdc_call(PDC_PAT_CHASSIS_LOG, PDC_PAT_CHASSIS_WRITE_LOG, __pa(&state), __pa(&data)); 251 retval = mem_pdc_call(PDC_PAT_CHASSIS_LOG, PDC_PAT_CHASSIS_WRITE_LOG, __pa(&state), __pa(&data));
248 spin_unlock_irq(&pdc_lock); 252 spin_unlock_irqrestore(&pdc_lock, flags);
249 253
250 return retval; 254 return retval;
251} 255}
@@ -258,10 +262,11 @@ int pdc_pat_chassis_send_log(unsigned long state, unsigned long data)
258int pdc_chassis_disp(unsigned long disp) 262int pdc_chassis_disp(unsigned long disp)
259{ 263{
260 int retval = 0; 264 int retval = 0;
265 unsigned long flags;
261 266
262 spin_lock_irq(&pdc_lock); 267 spin_lock_irqsave(&pdc_lock, flags);
263 retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_DISP, disp); 268 retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_DISP, disp);
264 spin_unlock_irq(&pdc_lock); 269 spin_unlock_irqrestore(&pdc_lock, flags);
265 270
266 return retval; 271 return retval;
267} 272}
@@ -273,11 +278,12 @@ int pdc_chassis_disp(unsigned long disp)
273int pdc_chassis_warn(unsigned long *warn) 278int pdc_chassis_warn(unsigned long *warn)
274{ 279{
275 int retval = 0; 280 int retval = 0;
281 unsigned long flags;
276 282
277 spin_lock_irq(&pdc_lock); 283 spin_lock_irqsave(&pdc_lock, flags);
278 retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_WARN, __pa(pdc_result)); 284 retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_WARN, __pa(pdc_result));
279 *warn = pdc_result[0]; 285 *warn = pdc_result[0];
280 spin_unlock_irq(&pdc_lock); 286 spin_unlock_irqrestore(&pdc_lock, flags);
281 287
282 return retval; 288 return retval;
283} 289}
@@ -292,15 +298,16 @@ int pdc_chassis_warn(unsigned long *warn)
292int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info) 298int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info)
293{ 299{
294 int retval; 300 int retval;
301 unsigned long flags;
295 302
296 spin_lock_irq(&pdc_lock); 303 spin_lock_irqsave(&pdc_lock, flags);
297 retval = mem_pdc_call(PDC_COPROC, PDC_COPROC_CFG, __pa(pdc_result)); 304 retval = mem_pdc_call(PDC_COPROC, PDC_COPROC_CFG, __pa(pdc_result));
298 convert_to_wide(pdc_result); 305 convert_to_wide(pdc_result);
299 pdc_coproc_info->ccr_functional = pdc_result[0]; 306 pdc_coproc_info->ccr_functional = pdc_result[0];
300 pdc_coproc_info->ccr_present = pdc_result[1]; 307 pdc_coproc_info->ccr_present = pdc_result[1];
301 pdc_coproc_info->revision = pdc_result[17]; 308 pdc_coproc_info->revision = pdc_result[17];
302 pdc_coproc_info->model = pdc_result[18]; 309 pdc_coproc_info->model = pdc_result[18];
303 spin_unlock_irq(&pdc_lock); 310 spin_unlock_irqrestore(&pdc_lock, flags);
304 311
305 return retval; 312 return retval;
306} 313}
@@ -320,14 +327,15 @@ int pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index,
320 void *iodc_data, unsigned int iodc_data_size) 327 void *iodc_data, unsigned int iodc_data_size)
321{ 328{
322 int retval; 329 int retval;
330 unsigned long flags;
323 331
324 spin_lock_irq(&pdc_lock); 332 spin_lock_irqsave(&pdc_lock, flags);
325 retval = mem_pdc_call(PDC_IODC, PDC_IODC_READ, __pa(pdc_result), hpa, 333 retval = mem_pdc_call(PDC_IODC, PDC_IODC_READ, __pa(pdc_result), hpa,
326 index, __pa(pdc_result2), iodc_data_size); 334 index, __pa(pdc_result2), iodc_data_size);
327 convert_to_wide(pdc_result); 335 convert_to_wide(pdc_result);
328 *actcnt = pdc_result[0]; 336 *actcnt = pdc_result[0];
329 memcpy(iodc_data, pdc_result2, iodc_data_size); 337 memcpy(iodc_data, pdc_result2, iodc_data_size);
330 spin_unlock_irq(&pdc_lock); 338 spin_unlock_irqrestore(&pdc_lock, flags);
331 339
332 return retval; 340 return retval;
333} 341}
@@ -346,14 +354,15 @@ int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info,
346 struct pdc_module_path *mod_path, long mod_index) 354 struct pdc_module_path *mod_path, long mod_index)
347{ 355{
348 int retval; 356 int retval;
357 unsigned long flags;
349 358
350 spin_lock_irq(&pdc_lock); 359 spin_lock_irqsave(&pdc_lock, flags);
351 retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_MODULE, __pa(pdc_result), 360 retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_MODULE, __pa(pdc_result),
352 __pa(pdc_result2), mod_index); 361 __pa(pdc_result2), mod_index);
353 convert_to_wide(pdc_result); 362 convert_to_wide(pdc_result);
354 memcpy(pdc_mod_info, pdc_result, sizeof(*pdc_mod_info)); 363 memcpy(pdc_mod_info, pdc_result, sizeof(*pdc_mod_info));
355 memcpy(mod_path, pdc_result2, sizeof(*mod_path)); 364 memcpy(mod_path, pdc_result2, sizeof(*mod_path));
356 spin_unlock_irq(&pdc_lock); 365 spin_unlock_irqrestore(&pdc_lock, flags);
357 366
358 pdc_mod_info->mod_addr = f_extend(pdc_mod_info->mod_addr); 367 pdc_mod_info->mod_addr = f_extend(pdc_mod_info->mod_addr);
359 return retval; 368 return retval;
@@ -372,13 +381,14 @@ int pdc_system_map_find_addrs(struct pdc_system_map_addr_info *pdc_addr_info,
372 long mod_index, long addr_index) 381 long mod_index, long addr_index)
373{ 382{
374 int retval; 383 int retval;
384 unsigned long flags;
375 385
376 spin_lock_irq(&pdc_lock); 386 spin_lock_irqsave(&pdc_lock, flags);
377 retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_ADDRESS, __pa(pdc_result), 387 retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_ADDRESS, __pa(pdc_result),
378 mod_index, addr_index); 388 mod_index, addr_index);
379 convert_to_wide(pdc_result); 389 convert_to_wide(pdc_result);
380 memcpy(pdc_addr_info, pdc_result, sizeof(*pdc_addr_info)); 390 memcpy(pdc_addr_info, pdc_result, sizeof(*pdc_addr_info));
381 spin_unlock_irq(&pdc_lock); 391 spin_unlock_irqrestore(&pdc_lock, flags);
382 392
383 pdc_addr_info->mod_addr = f_extend(pdc_addr_info->mod_addr); 393 pdc_addr_info->mod_addr = f_extend(pdc_addr_info->mod_addr);
384 return retval; 394 return retval;
@@ -393,12 +403,13 @@ int pdc_system_map_find_addrs(struct pdc_system_map_addr_info *pdc_addr_info,
393int pdc_model_info(struct pdc_model *model) 403int pdc_model_info(struct pdc_model *model)
394{ 404{
395 int retval; 405 int retval;
406 unsigned long flags;
396 407
397 spin_lock_irq(&pdc_lock); 408 spin_lock_irqsave(&pdc_lock, flags);
398 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_INFO, __pa(pdc_result), 0); 409 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_INFO, __pa(pdc_result), 0);
399 convert_to_wide(pdc_result); 410 convert_to_wide(pdc_result);
400 memcpy(model, pdc_result, sizeof(*model)); 411 memcpy(model, pdc_result, sizeof(*model));
401 spin_unlock_irq(&pdc_lock); 412 spin_unlock_irqrestore(&pdc_lock, flags);
402 413
403 return retval; 414 return retval;
404} 415}
@@ -414,8 +425,9 @@ int pdc_model_info(struct pdc_model *model)
414int pdc_model_sysmodel(char *name) 425int pdc_model_sysmodel(char *name)
415{ 426{
416 int retval; 427 int retval;
428 unsigned long flags;
417 429
418 spin_lock_irq(&pdc_lock); 430 spin_lock_irqsave(&pdc_lock, flags);
419 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_SYSMODEL, __pa(pdc_result), 431 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_SYSMODEL, __pa(pdc_result),
420 OS_ID_HPUX, __pa(name)); 432 OS_ID_HPUX, __pa(name));
421 convert_to_wide(pdc_result); 433 convert_to_wide(pdc_result);
@@ -425,7 +437,7 @@ int pdc_model_sysmodel(char *name)
425 } else { 437 } else {
426 name[0] = 0; 438 name[0] = 0;
427 } 439 }
428 spin_unlock_irq(&pdc_lock); 440 spin_unlock_irqrestore(&pdc_lock, flags);
429 441
430 return retval; 442 return retval;
431} 443}
@@ -443,12 +455,13 @@ int pdc_model_sysmodel(char *name)
443int pdc_model_versions(unsigned long *versions, int id) 455int pdc_model_versions(unsigned long *versions, int id)
444{ 456{
445 int retval; 457 int retval;
458 unsigned long flags;
446 459
447 spin_lock_irq(&pdc_lock); 460 spin_lock_irqsave(&pdc_lock, flags);
448 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_VERSIONS, __pa(pdc_result), id); 461 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_VERSIONS, __pa(pdc_result), id);
449 convert_to_wide(pdc_result); 462 convert_to_wide(pdc_result);
450 *versions = pdc_result[0]; 463 *versions = pdc_result[0];
451 spin_unlock_irq(&pdc_lock); 464 spin_unlock_irqrestore(&pdc_lock, flags);
452 465
453 return retval; 466 return retval;
454} 467}
@@ -463,13 +476,14 @@ int pdc_model_versions(unsigned long *versions, int id)
463int pdc_model_cpuid(unsigned long *cpu_id) 476int pdc_model_cpuid(unsigned long *cpu_id)
464{ 477{
465 int retval; 478 int retval;
479 unsigned long flags;
466 480
467 spin_lock_irq(&pdc_lock); 481 spin_lock_irqsave(&pdc_lock, flags);
468 pdc_result[0] = 0; /* preset zero (call may not be implemented!) */ 482 pdc_result[0] = 0; /* preset zero (call may not be implemented!) */
469 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CPU_ID, __pa(pdc_result), 0); 483 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CPU_ID, __pa(pdc_result), 0);
470 convert_to_wide(pdc_result); 484 convert_to_wide(pdc_result);
471 *cpu_id = pdc_result[0]; 485 *cpu_id = pdc_result[0];
472 spin_unlock_irq(&pdc_lock); 486 spin_unlock_irqrestore(&pdc_lock, flags);
473 487
474 return retval; 488 return retval;
475} 489}
@@ -484,13 +498,14 @@ int pdc_model_cpuid(unsigned long *cpu_id)
484int pdc_model_capabilities(unsigned long *capabilities) 498int pdc_model_capabilities(unsigned long *capabilities)
485{ 499{
486 int retval; 500 int retval;
501 unsigned long flags;
487 502
488 spin_lock_irq(&pdc_lock); 503 spin_lock_irqsave(&pdc_lock, flags);
489 pdc_result[0] = 0; /* preset zero (call may not be implemented!) */ 504 pdc_result[0] = 0; /* preset zero (call may not be implemented!) */
490 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0); 505 retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0);
491 convert_to_wide(pdc_result); 506 convert_to_wide(pdc_result);
492 *capabilities = pdc_result[0]; 507 *capabilities = pdc_result[0];
493 spin_unlock_irq(&pdc_lock); 508 spin_unlock_irqrestore(&pdc_lock, flags);
494 509
495 return retval; 510 return retval;
496} 511}
@@ -504,12 +519,13 @@ int pdc_model_capabilities(unsigned long *capabilities)
504int pdc_cache_info(struct pdc_cache_info *cache_info) 519int pdc_cache_info(struct pdc_cache_info *cache_info)
505{ 520{
506 int retval; 521 int retval;
522 unsigned long flags;
507 523
508 spin_lock_irq(&pdc_lock); 524 spin_lock_irqsave(&pdc_lock, flags);
509 retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_INFO, __pa(pdc_result), 0); 525 retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_INFO, __pa(pdc_result), 0);
510 convert_to_wide(pdc_result); 526 convert_to_wide(pdc_result);
511 memcpy(cache_info, pdc_result, sizeof(*cache_info)); 527 memcpy(cache_info, pdc_result, sizeof(*cache_info));
512 spin_unlock_irq(&pdc_lock); 528 spin_unlock_irqrestore(&pdc_lock, flags);
513 529
514 return retval; 530 return retval;
515} 531}
@@ -523,13 +539,14 @@ int pdc_cache_info(struct pdc_cache_info *cache_info)
523int pdc_spaceid_bits(unsigned long *space_bits) 539int pdc_spaceid_bits(unsigned long *space_bits)
524{ 540{
525 int retval; 541 int retval;
542 unsigned long flags;
526 543
527 spin_lock_irq(&pdc_lock); 544 spin_lock_irqsave(&pdc_lock, flags);
528 pdc_result[0] = 0; 545 pdc_result[0] = 0;
529 retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_RET_SPID, __pa(pdc_result), 0); 546 retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_RET_SPID, __pa(pdc_result), 0);
530 convert_to_wide(pdc_result); 547 convert_to_wide(pdc_result);
531 *space_bits = pdc_result[0]; 548 *space_bits = pdc_result[0];
532 spin_unlock_irq(&pdc_lock); 549 spin_unlock_irqrestore(&pdc_lock, flags);
533 550
534 return retval; 551 return retval;
535} 552}
@@ -544,11 +561,12 @@ int pdc_spaceid_bits(unsigned long *space_bits)
544int pdc_btlb_info(struct pdc_btlb_info *btlb) 561int pdc_btlb_info(struct pdc_btlb_info *btlb)
545{ 562{
546 int retval; 563 int retval;
564 unsigned long flags;
547 565
548 spin_lock_irq(&pdc_lock); 566 spin_lock_irqsave(&pdc_lock, flags);
549 retval = mem_pdc_call(PDC_BLOCK_TLB, PDC_BTLB_INFO, __pa(pdc_result), 0); 567 retval = mem_pdc_call(PDC_BLOCK_TLB, PDC_BTLB_INFO, __pa(pdc_result), 0);
550 memcpy(btlb, pdc_result, sizeof(*btlb)); 568 memcpy(btlb, pdc_result, sizeof(*btlb));
551 spin_unlock_irq(&pdc_lock); 569 spin_unlock_irqrestore(&pdc_lock, flags);
552 570
553 if(retval < 0) { 571 if(retval < 0) {
554 btlb->max_size = 0; 572 btlb->max_size = 0;
@@ -572,13 +590,14 @@ int pdc_mem_map_hpa(struct pdc_memory_map *address,
572 struct pdc_module_path *mod_path) 590 struct pdc_module_path *mod_path)
573{ 591{
574 int retval; 592 int retval;
593 unsigned long flags;
575 594
576 spin_lock_irq(&pdc_lock); 595 spin_lock_irqsave(&pdc_lock, flags);
577 memcpy(pdc_result2, mod_path, sizeof(*mod_path)); 596 memcpy(pdc_result2, mod_path, sizeof(*mod_path));
578 retval = mem_pdc_call(PDC_MEM_MAP, PDC_MEM_MAP_HPA, __pa(pdc_result), 597 retval = mem_pdc_call(PDC_MEM_MAP, PDC_MEM_MAP_HPA, __pa(pdc_result),
579 __pa(pdc_result2)); 598 __pa(pdc_result2));
580 memcpy(address, pdc_result, sizeof(*address)); 599 memcpy(address, pdc_result, sizeof(*address));
581 spin_unlock_irq(&pdc_lock); 600 spin_unlock_irqrestore(&pdc_lock, flags);
582 601
583 return retval; 602 return retval;
584} 603}
@@ -594,8 +613,9 @@ int pdc_mem_map_hpa(struct pdc_memory_map *address,
594int pdc_lan_station_id(char *lan_addr, unsigned long hpa) 613int pdc_lan_station_id(char *lan_addr, unsigned long hpa)
595{ 614{
596 int retval; 615 int retval;
616 unsigned long flags;
597 617
598 spin_lock_irq(&pdc_lock); 618 spin_lock_irqsave(&pdc_lock, flags);
599 retval = mem_pdc_call(PDC_LAN_STATION_ID, PDC_LAN_STATION_ID_READ, 619 retval = mem_pdc_call(PDC_LAN_STATION_ID, PDC_LAN_STATION_ID_READ,
600 __pa(pdc_result), hpa); 620 __pa(pdc_result), hpa);
601 if (retval < 0) { 621 if (retval < 0) {
@@ -604,7 +624,7 @@ int pdc_lan_station_id(char *lan_addr, unsigned long hpa)
604 } else { 624 } else {
605 memcpy(lan_addr, pdc_result, PDC_LAN_STATION_ID_SIZE); 625 memcpy(lan_addr, pdc_result, PDC_LAN_STATION_ID_SIZE);
606 } 626 }
607 spin_unlock_irq(&pdc_lock); 627 spin_unlock_irqrestore(&pdc_lock, flags);
608 628
609 return retval; 629 return retval;
610} 630}
@@ -623,13 +643,14 @@ EXPORT_SYMBOL(pdc_lan_station_id);
623int pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count) 643int pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count)
624{ 644{
625 int retval; 645 int retval;
646 unsigned long flags;
626 647
627 spin_lock_irq(&pdc_lock); 648 spin_lock_irqsave(&pdc_lock, flags);
628 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_READ, staddr, 649 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_READ, staddr,
629 __pa(pdc_result), count); 650 __pa(pdc_result), count);
630 convert_to_wide(pdc_result); 651 convert_to_wide(pdc_result);
631 memcpy(memaddr, pdc_result, count); 652 memcpy(memaddr, pdc_result, count);
632 spin_unlock_irq(&pdc_lock); 653 spin_unlock_irqrestore(&pdc_lock, flags);
633 654
634 return retval; 655 return retval;
635} 656}
@@ -648,13 +669,14 @@ EXPORT_SYMBOL(pdc_stable_read);
648int pdc_stable_write(unsigned long staddr, void *memaddr, unsigned long count) 669int pdc_stable_write(unsigned long staddr, void *memaddr, unsigned long count)
649{ 670{
650 int retval; 671 int retval;
672 unsigned long flags;
651 673
652 spin_lock_irq(&pdc_lock); 674 spin_lock_irqsave(&pdc_lock, flags);
653 memcpy(pdc_result, memaddr, count); 675 memcpy(pdc_result, memaddr, count);
654 convert_to_wide(pdc_result); 676 convert_to_wide(pdc_result);
655 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_WRITE, staddr, 677 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_WRITE, staddr,
656 __pa(pdc_result), count); 678 __pa(pdc_result), count);
657 spin_unlock_irq(&pdc_lock); 679 spin_unlock_irqrestore(&pdc_lock, flags);
658 680
659 return retval; 681 return retval;
660} 682}
@@ -672,11 +694,12 @@ EXPORT_SYMBOL(pdc_stable_write);
672int pdc_stable_get_size(unsigned long *size) 694int pdc_stable_get_size(unsigned long *size)
673{ 695{
674 int retval; 696 int retval;
697 unsigned long flags;
675 698
676 spin_lock_irq(&pdc_lock); 699 spin_lock_irqsave(&pdc_lock, flags);
677 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_RETURN_SIZE, __pa(pdc_result)); 700 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_RETURN_SIZE, __pa(pdc_result));
678 *size = pdc_result[0]; 701 *size = pdc_result[0];
679 spin_unlock_irq(&pdc_lock); 702 spin_unlock_irqrestore(&pdc_lock, flags);
680 703
681 return retval; 704 return retval;
682} 705}
@@ -691,10 +714,11 @@ EXPORT_SYMBOL(pdc_stable_get_size);
691int pdc_stable_verify_contents(void) 714int pdc_stable_verify_contents(void)
692{ 715{
693 int retval; 716 int retval;
717 unsigned long flags;
694 718
695 spin_lock_irq(&pdc_lock); 719 spin_lock_irqsave(&pdc_lock, flags);
696 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_VERIFY_CONTENTS); 720 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_VERIFY_CONTENTS);
697 spin_unlock_irq(&pdc_lock); 721 spin_unlock_irqrestore(&pdc_lock, flags);
698 722
699 return retval; 723 return retval;
700} 724}
@@ -709,10 +733,11 @@ EXPORT_SYMBOL(pdc_stable_verify_contents);
709int pdc_stable_initialize(void) 733int pdc_stable_initialize(void)
710{ 734{
711 int retval; 735 int retval;
736 unsigned long flags;
712 737
713 spin_lock_irq(&pdc_lock); 738 spin_lock_irqsave(&pdc_lock, flags);
714 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_INITIALIZE); 739 retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_INITIALIZE);
715 spin_unlock_irq(&pdc_lock); 740 spin_unlock_irqrestore(&pdc_lock, flags);
716 741
717 return retval; 742 return retval;
718} 743}
@@ -735,8 +760,9 @@ EXPORT_SYMBOL(pdc_stable_initialize);
735int pdc_get_initiator(struct hardware_path *hwpath, struct pdc_initiator *initiator) 760int pdc_get_initiator(struct hardware_path *hwpath, struct pdc_initiator *initiator)
736{ 761{
737 int retval; 762 int retval;
763 unsigned long flags;
738 764
739 spin_lock_irq(&pdc_lock); 765 spin_lock_irqsave(&pdc_lock, flags);
740 766
741/* BCJ-XXXX series boxes. E.G. "9000/785/C3000" */ 767/* BCJ-XXXX series boxes. E.G. "9000/785/C3000" */
742#define IS_SPROCKETS() (strlen(boot_cpu_data.pdc.sys_model_name) == 14 && \ 768#define IS_SPROCKETS() (strlen(boot_cpu_data.pdc.sys_model_name) == 14 && \
@@ -776,7 +802,8 @@ int pdc_get_initiator(struct hardware_path *hwpath, struct pdc_initiator *initia
776 } 802 }
777 803
778 out: 804 out:
779 spin_unlock_irq(&pdc_lock); 805 spin_unlock_irqrestore(&pdc_lock, flags);
806
780 return (retval >= PDC_OK); 807 return (retval >= PDC_OK);
781} 808}
782EXPORT_SYMBOL(pdc_get_initiator); 809EXPORT_SYMBOL(pdc_get_initiator);
@@ -794,13 +821,14 @@ EXPORT_SYMBOL(pdc_get_initiator);
794int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa) 821int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa)
795{ 822{
796 int retval; 823 int retval;
824 unsigned long flags;
797 825
798 spin_lock_irq(&pdc_lock); 826 spin_lock_irqsave(&pdc_lock, flags);
799 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL_SIZE, 827 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL_SIZE,
800 __pa(pdc_result), hpa); 828 __pa(pdc_result), hpa);
801 convert_to_wide(pdc_result); 829 convert_to_wide(pdc_result);
802 *num_entries = pdc_result[0]; 830 *num_entries = pdc_result[0];
803 spin_unlock_irq(&pdc_lock); 831 spin_unlock_irqrestore(&pdc_lock, flags);
804 832
805 return retval; 833 return retval;
806} 834}
@@ -817,14 +845,15 @@ int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa)
817int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl) 845int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl)
818{ 846{
819 int retval; 847 int retval;
848 unsigned long flags;
820 849
821 BUG_ON((unsigned long)tbl & 0x7); 850 BUG_ON((unsigned long)tbl & 0x7);
822 851
823 spin_lock_irq(&pdc_lock); 852 spin_lock_irqsave(&pdc_lock, flags);
824 pdc_result[0] = num_entries; 853 pdc_result[0] = num_entries;
825 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL, 854 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL,
826 __pa(pdc_result), hpa, __pa(tbl)); 855 __pa(pdc_result), hpa, __pa(tbl));
827 spin_unlock_irq(&pdc_lock); 856 spin_unlock_irqrestore(&pdc_lock, flags);
828 857
829 return retval; 858 return retval;
830} 859}
@@ -842,12 +871,15 @@ int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl)
842unsigned int pdc_pci_config_read(void *hpa, unsigned long cfg_addr) 871unsigned int pdc_pci_config_read(void *hpa, unsigned long cfg_addr)
843{ 872{
844 int retval; 873 int retval;
845 spin_lock_irq(&pdc_lock); 874 unsigned long flags;
875
876 spin_lock_irqsave(&pdc_lock, flags);
846 pdc_result[0] = 0; 877 pdc_result[0] = 0;
847 pdc_result[1] = 0; 878 pdc_result[1] = 0;
848 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_READ_CONFIG, 879 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_READ_CONFIG,
849 __pa(pdc_result), hpa, cfg_addr&~3UL, 4UL); 880 __pa(pdc_result), hpa, cfg_addr&~3UL, 4UL);
850 spin_unlock_irq(&pdc_lock); 881 spin_unlock_irqrestore(&pdc_lock, flags);
882
851 return retval ? ~0 : (unsigned int) pdc_result[0]; 883 return retval ? ~0 : (unsigned int) pdc_result[0];
852} 884}
853 885
@@ -863,12 +895,15 @@ unsigned int pdc_pci_config_read(void *hpa, unsigned long cfg_addr)
863void pdc_pci_config_write(void *hpa, unsigned long cfg_addr, unsigned int val) 895void pdc_pci_config_write(void *hpa, unsigned long cfg_addr, unsigned int val)
864{ 896{
865 int retval; 897 int retval;
866 spin_lock_irq(&pdc_lock); 898 unsigned long flags;
899
900 spin_lock_irqsave(&pdc_lock, flags);
867 pdc_result[0] = 0; 901 pdc_result[0] = 0;
868 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_WRITE_CONFIG, 902 retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_WRITE_CONFIG,
869 __pa(pdc_result), hpa, 903 __pa(pdc_result), hpa,
870 cfg_addr&~3UL, 4UL, (unsigned long) val); 904 cfg_addr&~3UL, 4UL, (unsigned long) val);
871 spin_unlock_irq(&pdc_lock); 905 spin_unlock_irqrestore(&pdc_lock, flags);
906
872 return retval; 907 return retval;
873} 908}
874#endif /* UNTESTED CODE */ 909#endif /* UNTESTED CODE */
@@ -882,12 +917,13 @@ void pdc_pci_config_write(void *hpa, unsigned long cfg_addr, unsigned int val)
882int pdc_tod_read(struct pdc_tod *tod) 917int pdc_tod_read(struct pdc_tod *tod)
883{ 918{
884 int retval; 919 int retval;
920 unsigned long flags;
885 921
886 spin_lock_irq(&pdc_lock); 922 spin_lock_irqsave(&pdc_lock, flags);
887 retval = mem_pdc_call(PDC_TOD, PDC_TOD_READ, __pa(pdc_result), 0); 923 retval = mem_pdc_call(PDC_TOD, PDC_TOD_READ, __pa(pdc_result), 0);
888 convert_to_wide(pdc_result); 924 convert_to_wide(pdc_result);
889 memcpy(tod, pdc_result, sizeof(*tod)); 925 memcpy(tod, pdc_result, sizeof(*tod));
890 spin_unlock_irq(&pdc_lock); 926 spin_unlock_irqrestore(&pdc_lock, flags);
891 927
892 return retval; 928 return retval;
893} 929}
@@ -903,10 +939,11 @@ EXPORT_SYMBOL(pdc_tod_read);
903int pdc_tod_set(unsigned long sec, unsigned long usec) 939int pdc_tod_set(unsigned long sec, unsigned long usec)
904{ 940{
905 int retval; 941 int retval;
942 unsigned long flags;
906 943
907 spin_lock_irq(&pdc_lock); 944 spin_lock_irqsave(&pdc_lock, flags);
908 retval = mem_pdc_call(PDC_TOD, PDC_TOD_WRITE, sec, usec); 945 retval = mem_pdc_call(PDC_TOD, PDC_TOD_WRITE, sec, usec);
909 spin_unlock_irq(&pdc_lock); 946 spin_unlock_irqrestore(&pdc_lock, flags);
910 947
911 return retval; 948 return retval;
912} 949}
@@ -917,13 +954,14 @@ int pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr,
917 struct pdc_memory_table *tbl, unsigned long entries) 954 struct pdc_memory_table *tbl, unsigned long entries)
918{ 955{
919 int retval; 956 int retval;
957 unsigned long flags;
920 958
921 spin_lock_irq(&pdc_lock); 959 spin_lock_irqsave(&pdc_lock, flags);
922 retval = mem_pdc_call(PDC_MEM, PDC_MEM_TABLE, __pa(pdc_result), __pa(pdc_result2), entries); 960 retval = mem_pdc_call(PDC_MEM, PDC_MEM_TABLE, __pa(pdc_result), __pa(pdc_result2), entries);
923 convert_to_wide(pdc_result); 961 convert_to_wide(pdc_result);
924 memcpy(r_addr, pdc_result, sizeof(*r_addr)); 962 memcpy(r_addr, pdc_result, sizeof(*r_addr));
925 memcpy(tbl, pdc_result2, entries * sizeof(*tbl)); 963 memcpy(tbl, pdc_result2, entries * sizeof(*tbl));
926 spin_unlock_irq(&pdc_lock); 964 spin_unlock_irqrestore(&pdc_lock, flags);
927 965
928 return retval; 966 return retval;
929} 967}
@@ -936,11 +974,12 @@ int pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr,
936int pdc_do_firm_test_reset(unsigned long ftc_bitmap) 974int pdc_do_firm_test_reset(unsigned long ftc_bitmap)
937{ 975{
938 int retval; 976 int retval;
977 unsigned long flags;
939 978
940 spin_lock_irq(&pdc_lock); 979 spin_lock_irqsave(&pdc_lock, flags);
941 retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_FIRM_TEST_RESET, 980 retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_FIRM_TEST_RESET,
942 PDC_FIRM_TEST_MAGIC, ftc_bitmap); 981 PDC_FIRM_TEST_MAGIC, ftc_bitmap);
943 spin_unlock_irq(&pdc_lock); 982 spin_unlock_irqrestore(&pdc_lock, flags);
944 983
945 return retval; 984 return retval;
946} 985}
@@ -953,10 +992,11 @@ int pdc_do_firm_test_reset(unsigned long ftc_bitmap)
953int pdc_do_reset(void) 992int pdc_do_reset(void)
954{ 993{
955 int retval; 994 int retval;
995 unsigned long flags;
956 996
957 spin_lock_irq(&pdc_lock); 997 spin_lock_irqsave(&pdc_lock, flags);
958 retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_RESET); 998 retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_RESET);
959 spin_unlock_irq(&pdc_lock); 999 spin_unlock_irqrestore(&pdc_lock, flags);
960 1000
961 return retval; 1001 return retval;
962} 1002}
@@ -970,16 +1010,17 @@ int pdc_do_reset(void)
970int __init pdc_soft_power_info(unsigned long *power_reg) 1010int __init pdc_soft_power_info(unsigned long *power_reg)
971{ 1011{
972 int retval; 1012 int retval;
1013 unsigned long flags;
973 1014
974 *power_reg = (unsigned long) (-1); 1015 *power_reg = (unsigned long) (-1);
975 1016
976 spin_lock_irq(&pdc_lock); 1017 spin_lock_irqsave(&pdc_lock, flags);
977 retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_INFO, __pa(pdc_result), 0); 1018 retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_INFO, __pa(pdc_result), 0);
978 if (retval == PDC_OK) { 1019 if (retval == PDC_OK) {
979 convert_to_wide(pdc_result); 1020 convert_to_wide(pdc_result);
980 *power_reg = f_extend(pdc_result[0]); 1021 *power_reg = f_extend(pdc_result[0]);
981 } 1022 }
982 spin_unlock_irq(&pdc_lock); 1023 spin_unlock_irqrestore(&pdc_lock, flags);
983 1024
984 return retval; 1025 return retval;
985} 1026}
@@ -998,9 +1039,12 @@ int __init pdc_soft_power_info(unsigned long *power_reg)
998int pdc_soft_power_button(int sw_control) 1039int pdc_soft_power_button(int sw_control)
999{ 1040{
1000 int retval; 1041 int retval;
1001 spin_lock_irq(&pdc_lock); 1042 unsigned long flags;
1043
1044 spin_lock_irqsave(&pdc_lock, flags);
1002 retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_ENABLE, __pa(pdc_result), sw_control); 1045 retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_ENABLE, __pa(pdc_result), sw_control);
1003 spin_unlock_irq(&pdc_lock); 1046 spin_unlock_irqrestore(&pdc_lock, flags);
1047
1004 return retval; 1048 return retval;
1005} 1049}
1006 1050
@@ -1011,9 +1055,11 @@ int pdc_soft_power_button(int sw_control)
1011 */ 1055 */
1012void pdc_io_reset(void) 1056void pdc_io_reset(void)
1013{ 1057{
1014 spin_lock_irq(&pdc_lock); 1058 unsigned long flags;
1059
1060 spin_lock_irqsave(&pdc_lock, flags);
1015 mem_pdc_call(PDC_IO, PDC_IO_RESET, 0); 1061 mem_pdc_call(PDC_IO, PDC_IO_RESET, 0);
1016 spin_unlock_irq(&pdc_lock); 1062 spin_unlock_irqrestore(&pdc_lock, flags);
1017} 1063}
1018 1064
1019/* 1065/*
@@ -1027,9 +1073,11 @@ void pdc_io_reset(void)
1027 */ 1073 */
1028void pdc_io_reset_devices(void) 1074void pdc_io_reset_devices(void)
1029{ 1075{
1030 spin_lock_irq(&pdc_lock); 1076 unsigned long flags;
1077
1078 spin_lock_irqsave(&pdc_lock, flags);
1031 mem_pdc_call(PDC_IO, PDC_IO_RESET_DEVICES, 0); 1079 mem_pdc_call(PDC_IO, PDC_IO_RESET_DEVICES, 0);
1032 spin_unlock_irq(&pdc_lock); 1080 spin_unlock_irqrestore(&pdc_lock, flags);
1033} 1081}
1034 1082
1035 1083
@@ -1146,10 +1194,11 @@ int pdc_sti_call(unsigned long func, unsigned long flags,
1146 unsigned long glob_cfg) 1194 unsigned long glob_cfg)
1147{ 1195{
1148 int retval; 1196 int retval;
1197 unsigned long irqflags;
1149 1198
1150 spin_lock_irq(&pdc_lock); 1199 spin_lock_irqsave(&pdc_lock, irqflags);
1151 retval = real32_call(func, flags, inptr, outputr, glob_cfg); 1200 retval = real32_call(func, flags, inptr, outputr, glob_cfg);
1152 spin_unlock_irq(&pdc_lock); 1201 spin_unlock_irqrestore(&pdc_lock, irqflags);
1153 1202
1154 return retval; 1203 return retval;
1155} 1204}
@@ -1166,11 +1215,12 @@ EXPORT_SYMBOL(pdc_sti_call);
1166int pdc_pat_cell_get_number(struct pdc_pat_cell_num *cell_info) 1215int pdc_pat_cell_get_number(struct pdc_pat_cell_num *cell_info)
1167{ 1216{
1168 int retval; 1217 int retval;
1218 unsigned long flags;
1169 1219
1170 spin_lock_irq(&pdc_lock); 1220 spin_lock_irqsave(&pdc_lock, flags);
1171 retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_GET_NUMBER, __pa(pdc_result)); 1221 retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_GET_NUMBER, __pa(pdc_result));
1172 memcpy(cell_info, pdc_result, sizeof(*cell_info)); 1222 memcpy(cell_info, pdc_result, sizeof(*cell_info));
1173 spin_unlock_irq(&pdc_lock); 1223 spin_unlock_irqrestore(&pdc_lock, flags);
1174 1224
1175 return retval; 1225 return retval;
1176} 1226}
@@ -1190,16 +1240,17 @@ int pdc_pat_cell_module(unsigned long *actcnt, unsigned long ploc, unsigned long
1190 unsigned long view_type, void *mem_addr) 1240 unsigned long view_type, void *mem_addr)
1191{ 1241{
1192 int retval; 1242 int retval;
1243 unsigned long flags;
1193 static struct pdc_pat_cell_mod_maddr_block result __attribute__ ((aligned (8))); 1244 static struct pdc_pat_cell_mod_maddr_block result __attribute__ ((aligned (8)));
1194 1245
1195 spin_lock_irq(&pdc_lock); 1246 spin_lock_irqsave(&pdc_lock, flags);
1196 retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_MODULE, __pa(pdc_result), 1247 retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_MODULE, __pa(pdc_result),
1197 ploc, mod, view_type, __pa(&result)); 1248 ploc, mod, view_type, __pa(&result));
1198 if(!retval) { 1249 if(!retval) {
1199 *actcnt = pdc_result[0]; 1250 *actcnt = pdc_result[0];
1200 memcpy(mem_addr, &result, *actcnt); 1251 memcpy(mem_addr, &result, *actcnt);
1201 } 1252 }
1202 spin_unlock_irq(&pdc_lock); 1253 spin_unlock_irqrestore(&pdc_lock, flags);
1203 1254
1204 return retval; 1255 return retval;
1205} 1256}
@@ -1214,12 +1265,13 @@ int pdc_pat_cell_module(unsigned long *actcnt, unsigned long ploc, unsigned long
1214int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa) 1265int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa)
1215{ 1266{
1216 int retval; 1267 int retval;
1268 unsigned long flags;
1217 1269
1218 spin_lock_irq(&pdc_lock); 1270 spin_lock_irqsave(&pdc_lock, flags);
1219 retval = mem_pdc_call(PDC_PAT_CPU, PDC_PAT_CPU_GET_NUMBER, 1271 retval = mem_pdc_call(PDC_PAT_CPU, PDC_PAT_CPU_GET_NUMBER,
1220 __pa(&pdc_result), hpa); 1272 __pa(&pdc_result), hpa);
1221 memcpy(cpu_info, pdc_result, sizeof(*cpu_info)); 1273 memcpy(cpu_info, pdc_result, sizeof(*cpu_info));
1222 spin_unlock_irq(&pdc_lock); 1274 spin_unlock_irqrestore(&pdc_lock, flags);
1223 1275
1224 return retval; 1276 return retval;
1225} 1277}
@@ -1235,12 +1287,13 @@ int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa)
1235int pdc_pat_get_irt_size(unsigned long *num_entries, unsigned long cell_num) 1287int pdc_pat_get_irt_size(unsigned long *num_entries, unsigned long cell_num)
1236{ 1288{
1237 int retval; 1289 int retval;
1290 unsigned long flags;
1238 1291
1239 spin_lock_irq(&pdc_lock); 1292 spin_lock_irqsave(&pdc_lock, flags);
1240 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE_SIZE, 1293 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE_SIZE,
1241 __pa(pdc_result), cell_num); 1294 __pa(pdc_result), cell_num);
1242 *num_entries = pdc_result[0]; 1295 *num_entries = pdc_result[0];
1243 spin_unlock_irq(&pdc_lock); 1296 spin_unlock_irqrestore(&pdc_lock, flags);
1244 1297
1245 return retval; 1298 return retval;
1246} 1299}
@@ -1255,11 +1308,12 @@ int pdc_pat_get_irt_size(unsigned long *num_entries, unsigned long cell_num)
1255int pdc_pat_get_irt(void *r_addr, unsigned long cell_num) 1308int pdc_pat_get_irt(void *r_addr, unsigned long cell_num)
1256{ 1309{
1257 int retval; 1310 int retval;
1311 unsigned long flags;
1258 1312
1259 spin_lock_irq(&pdc_lock); 1313 spin_lock_irqsave(&pdc_lock, flags);
1260 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE, 1314 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE,
1261 __pa(r_addr), cell_num); 1315 __pa(r_addr), cell_num);
1262 spin_unlock_irq(&pdc_lock); 1316 spin_unlock_irqrestore(&pdc_lock, flags);
1263 1317
1264 return retval; 1318 return retval;
1265} 1319}
@@ -1276,13 +1330,14 @@ int pdc_pat_pd_get_addr_map(unsigned long *actual_len, void *mem_addr,
1276 unsigned long count, unsigned long offset) 1330 unsigned long count, unsigned long offset)
1277{ 1331{
1278 int retval; 1332 int retval;
1333 unsigned long flags;
1279 1334
1280 spin_lock_irq(&pdc_lock); 1335 spin_lock_irqsave(&pdc_lock, flags);
1281 retval = mem_pdc_call(PDC_PAT_PD, PDC_PAT_PD_GET_ADDR_MAP, __pa(pdc_result), 1336 retval = mem_pdc_call(PDC_PAT_PD, PDC_PAT_PD_GET_ADDR_MAP, __pa(pdc_result),
1282 __pa(pdc_result2), count, offset); 1337 __pa(pdc_result2), count, offset);
1283 *actual_len = pdc_result[0]; 1338 *actual_len = pdc_result[0];
1284 memcpy(mem_addr, pdc_result2, *actual_len); 1339 memcpy(mem_addr, pdc_result2, *actual_len);
1285 spin_unlock_irq(&pdc_lock); 1340 spin_unlock_irqrestore(&pdc_lock, flags);
1286 1341
1287 return retval; 1342 return retval;
1288} 1343}
@@ -1297,7 +1352,9 @@ int pdc_pat_pd_get_addr_map(unsigned long *actual_len, void *mem_addr,
1297int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr) 1352int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr)
1298{ 1353{
1299 int retval; 1354 int retval;
1300 spin_lock_irq(&pdc_lock); 1355 unsigned long flags;
1356
1357 spin_lock_irqsave(&pdc_lock, flags);
1301 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_READ, 1358 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_READ,
1302 __pa(pdc_result), pci_addr, pci_size); 1359 __pa(pdc_result), pci_addr, pci_size);
1303 switch(pci_size) { 1360 switch(pci_size) {
@@ -1305,7 +1362,7 @@ int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr)
1305 case 2: *(u16 *)mem_addr = (u16) pdc_result[0]; 1362 case 2: *(u16 *)mem_addr = (u16) pdc_result[0];
1306 case 4: *(u32 *)mem_addr = (u32) pdc_result[0]; 1363 case 4: *(u32 *)mem_addr = (u32) pdc_result[0];
1307 } 1364 }
1308 spin_unlock_irq(&pdc_lock); 1365 spin_unlock_irqrestore(&pdc_lock, flags);
1309 1366
1310 return retval; 1367 return retval;
1311} 1368}
@@ -1321,11 +1378,12 @@ int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr)
1321int pdc_pat_io_pci_cfg_write(unsigned long pci_addr, int pci_size, u32 val) 1378int pdc_pat_io_pci_cfg_write(unsigned long pci_addr, int pci_size, u32 val)
1322{ 1379{
1323 int retval; 1380 int retval;
1381 unsigned long flags;
1324 1382
1325 spin_lock_irq(&pdc_lock); 1383 spin_lock_irqsave(&pdc_lock, flags);
1326 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_WRITE, 1384 retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_WRITE,
1327 pci_addr, pci_size, val); 1385 pci_addr, pci_size, val);
1328 spin_unlock_irq(&pdc_lock); 1386 spin_unlock_irqrestore(&pdc_lock, flags);
1329 1387
1330 return retval; 1388 return retval;
1331} 1389}
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index 9bdd0197ceb7..b39c5b9aff46 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -35,8 +35,8 @@
35 35
36#undef PARISC_IRQ_CR16_COUNTS 36#undef PARISC_IRQ_CR16_COUNTS
37 37
38extern irqreturn_t timer_interrupt(int, void *, struct pt_regs *); 38extern irqreturn_t timer_interrupt(int, void *);
39extern irqreturn_t ipi_interrupt(int, void *, struct pt_regs *); 39extern irqreturn_t ipi_interrupt(int, void *);
40 40
41#define EIEM_MASK(irq) (1UL<<(CPU_IRQ_MAX - irq)) 41#define EIEM_MASK(irq) (1UL<<(CPU_IRQ_MAX - irq))
42 42
@@ -347,12 +347,14 @@ static inline int eirr_to_irq(unsigned long eirr)
347/* ONLY called from entry.S:intr_extint() */ 347/* ONLY called from entry.S:intr_extint() */
348void do_cpu_irq_mask(struct pt_regs *regs) 348void do_cpu_irq_mask(struct pt_regs *regs)
349{ 349{
350 struct pt_regs *old_regs;
350 unsigned long eirr_val; 351 unsigned long eirr_val;
351 int irq, cpu = smp_processor_id(); 352 int irq, cpu = smp_processor_id();
352#ifdef CONFIG_SMP 353#ifdef CONFIG_SMP
353 cpumask_t dest; 354 cpumask_t dest;
354#endif 355#endif
355 356
357 old_regs = set_irq_regs(regs);
356 local_irq_disable(); 358 local_irq_disable();
357 irq_enter(); 359 irq_enter();
358 360
@@ -375,10 +377,11 @@ void do_cpu_irq_mask(struct pt_regs *regs)
375 goto set_out; 377 goto set_out;
376 } 378 }
377#endif 379#endif
378 __do_IRQ(irq, regs); 380 __do_IRQ(irq);
379 381
380 out: 382 out:
381 irq_exit(); 383 irq_exit();
384 set_irq_regs(old_regs);
382 return; 385 return;
383 386
384 set_out: 387 set_out:
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index faad338f310e..4a23a97b06cd 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -154,7 +154,7 @@ halt_processor(void)
154 154
155 155
156irqreturn_t 156irqreturn_t
157ipi_interrupt(int irq, void *dev_id, struct pt_regs *regs) 157ipi_interrupt(int irq, void *dev_id)
158{ 158{
159 int this_cpu = smp_processor_id(); 159 int this_cpu = smp_processor_id();
160 struct cpuinfo_parisc *p = &cpu_data[this_cpu]; 160 struct cpuinfo_parisc *p = &cpu_data[this_cpu];
@@ -414,19 +414,6 @@ smp_flush_tlb_all(void)
414 on_each_cpu(flush_tlb_all_local, NULL, 1, 1); 414 on_each_cpu(flush_tlb_all_local, NULL, 1, 1);
415} 415}
416 416
417
418void
419smp_do_timer(struct pt_regs *regs)
420{
421 int cpu = smp_processor_id();
422 struct cpuinfo_parisc *data = &cpu_data[cpu];
423
424 if (!--data->prof_counter) {
425 data->prof_counter = data->prof_multiplier;
426 update_process_times(user_mode(regs));
427 }
428}
429
430/* 417/*
431 * Called by secondaries to update state and initialize CPU registers. 418 * Called by secondaries to update state and initialize CPU registers.
432 */ 419 */
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 1d58ce0e37ad..bad7d1eb62b9 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -34,10 +34,6 @@
34 34
35static unsigned long clocktick __read_mostly; /* timer cycles per tick */ 35static unsigned long clocktick __read_mostly; /* timer cycles per tick */
36 36
37#ifdef CONFIG_SMP
38extern void smp_do_timer(struct pt_regs *regs);
39#endif
40
41/* 37/*
42 * We keep time on PA-RISC Linux by using the Interval Timer which is 38 * We keep time on PA-RISC Linux by using the Interval Timer which is
43 * a pair of registers; one is read-only and one is write-only; both 39 * a pair of registers; one is read-only and one is write-only; both
@@ -55,21 +51,22 @@ extern void smp_do_timer(struct pt_regs *regs);
55 * held off for an arbitrarily long period of time by interrupts being 51 * held off for an arbitrarily long period of time by interrupts being
56 * disabled, so we may miss one or more ticks. 52 * disabled, so we may miss one or more ticks.
57 */ 53 */
58irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 54irqreturn_t timer_interrupt(int irq, void *dev_id)
59{ 55{
60 unsigned long now; 56 unsigned long now;
61 unsigned long next_tick; 57 unsigned long next_tick;
62 unsigned long cycles_elapsed, ticks_elapsed; 58 unsigned long cycles_elapsed, ticks_elapsed;
63 unsigned long cycles_remainder; 59 unsigned long cycles_remainder;
64 unsigned int cpu = smp_processor_id(); 60 unsigned int cpu = smp_processor_id();
61 struct cpuinfo_parisc *cpuinfo = &cpu_data[cpu];
65 62
66 /* gcc can optimize for "read-only" case with a local clocktick */ 63 /* gcc can optimize for "read-only" case with a local clocktick */
67 unsigned long cpt = clocktick; 64 unsigned long cpt = clocktick;
68 65
69 profile_tick(CPU_PROFILING, regs); 66 profile_tick(CPU_PROFILING);
70 67
71 /* Initialize next_tick to the expected tick time. */ 68 /* Initialize next_tick to the expected tick time. */
72 next_tick = cpu_data[cpu].it_value; 69 next_tick = cpuinfo->it_value;
73 70
74 /* Get current interval timer. 71 /* Get current interval timer.
75 * CR16 reads as 64 bits in CPU wide mode. 72 * CR16 reads as 64 bits in CPU wide mode.
@@ -120,7 +117,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
120 */ 117 */
121 next_tick = now + cycles_remainder; 118 next_tick = now + cycles_remainder;
122 119
123 cpu_data[cpu].it_value = next_tick; 120 cpuinfo->it_value = next_tick;
124 121
125 /* Skip one clocktick on purpose if we are likely to miss next_tick. 122 /* Skip one clocktick on purpose if we are likely to miss next_tick.
126 * We want to avoid the new next_tick being less than CR16. 123 * We want to avoid the new next_tick being less than CR16.
@@ -131,18 +128,19 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
131 next_tick += cpt; 128 next_tick += cpt;
132 129
133 /* Program the IT when to deliver the next interrupt. */ 130 /* Program the IT when to deliver the next interrupt. */
134 /* Only bottom 32-bits of next_tick are written to cr16. */ 131 /* Only bottom 32-bits of next_tick are written to cr16. */
135 mtctl(next_tick, 16); 132 mtctl(next_tick, 16);
136 133
137 134
138 /* Done mucking with unreliable delivery of interrupts. 135 /* Done mucking with unreliable delivery of interrupts.
139 * Go do system house keeping. 136 * Go do system house keeping.
140 */ 137 */
141#ifdef CONFIG_SMP 138
142 smp_do_timer(regs); 139 if (!--cpuinfo->prof_counter) {
143#else 140 cpuinfo->prof_counter = cpuinfo->prof_multiplier;
144 update_process_times(user_mode(regs)); 141 update_process_times(user_mode(get_irq_regs()));
145#endif 142 }
143
146 if (cpu == 0) { 144 if (cpu == 0) {
147 write_seqlock(&xtime_lock); 145 write_seqlock(&xtime_lock);
148 do_timer(ticks_elapsed); 146 do_timer(ticks_elapsed);
@@ -319,13 +317,15 @@ void __init time_init(void)
319 317
320 start_cpu_itimer(); /* get CPU 0 started */ 318 start_cpu_itimer(); /* get CPU 0 started */
321 319
322 if(pdc_tod_read(&tod_data) == 0) { 320 if (pdc_tod_read(&tod_data) == 0) {
323 write_seqlock_irq(&xtime_lock); 321 unsigned long flags;
322
323 write_seqlock_irqsave(&xtime_lock, flags);
324 xtime.tv_sec = tod_data.tod_sec; 324 xtime.tv_sec = tod_data.tod_sec;
325 xtime.tv_nsec = tod_data.tod_usec * 1000; 325 xtime.tv_nsec = tod_data.tod_usec * 1000;
326 set_normalized_timespec(&wall_to_monotonic, 326 set_normalized_timespec(&wall_to_monotonic,
327 -xtime.tv_sec, -xtime.tv_nsec); 327 -xtime.tv_sec, -xtime.tv_nsec);
328 write_sequnlock_irq(&xtime_lock); 328 write_sequnlock_irqrestore(&xtime_lock, flags);
329 } else { 329 } else {
330 printk(KERN_ERR "Error reading tod clock\n"); 330 printk(KERN_ERR "Error reading tod clock\n");
331 xtime.tv_sec = 0; 331 xtime.tv_sec = 0;
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 003520b56303..37ddfcab0003 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -105,10 +105,10 @@ wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff)
105# Bits for building various flavours of zImage 105# Bits for building various flavours of zImage
106 106
107ifneq ($(CROSS32_COMPILE),) 107ifneq ($(CROSS32_COMPILE),)
108CROSSWRAP := -C $(CROSS32_COMPILE) 108CROSSWRAP := -C "$(CROSS32_COMPILE)"
109else 109else
110ifneq ($(CROSS_COMPILE),) 110ifneq ($(CROSS_COMPILE),)
111CROSSWRAP := -C $(CROSS_COMPILE) 111CROSSWRAP := -C "$(CROSS_COMPILE)"
112endif 112endif
113endif 113endif
114 114
@@ -151,12 +151,12 @@ $(obj)/zImage.initrd.miboot: vmlinux $(wrapperbits)
151$(obj)/uImage: vmlinux $(wrapperbits) 151$(obj)/uImage: vmlinux $(wrapperbits)
152 $(call cmd,wrap,uboot) 152 $(call cmd,wrap,uboot)
153 153
154image-$(CONFIG_PPC_PSERIES) += zImage.pseries 154image-$(CONFIG_PPC_PSERIES) += zImage.pseries
155image-$(CONFIG_PPC_MAPLE) += zImage.pseries 155image-$(CONFIG_PPC_MAPLE) += zImage.pseries
156image-$(CONFIG_PPC_CELL) += zImage.pseries 156image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
157image-$(CONFIG_PPC_CHRP) += zImage.chrp 157image-$(CONFIG_PPC_CHRP) += zImage.chrp
158image-$(CONFIG_PPC_PMAC) += zImage.pmac 158image-$(CONFIG_PPC_PMAC) += zImage.pmac
159image-$(CONFIG_DEFAULT_UIMAGE) += uImage 159image-$(CONFIG_DEFAULT_UIMAGE) += uImage
160 160
161# For 32-bit powermacs, build the COFF and miboot images 161# For 32-bit powermacs, build the COFF and miboot images
162# as well as the ELF images. 162# as well as the ELF images.
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
new file mode 100644
index 000000000000..27807fc45888
--- /dev/null
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -0,0 +1,246 @@
1/*
2 * MPC8349E-mITX Device Tree Source
3 *
4 * Copyright 2006 Freescale Semiconductor Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11/ {
12 model = "MPC8349EMITX";
13 compatible = "MPC834xMITX";
14 #address-cells = <1>;
15 #size-cells = <1>;
16
17 cpus {
18 #cpus = <1>;
19 #address-cells = <1>;
20 #size-cells = <0>;
21
22 PowerPC,8349@0 {
23 device_type = "cpu";
24 reg = <0>;
25 d-cache-line-size = <20>;
26 i-cache-line-size = <20>;
27 d-cache-size = <8000>;
28 i-cache-size = <8000>;
29 timebase-frequency = <0>; // from bootloader
30 bus-frequency = <0>; // from bootloader
31 clock-frequency = <0>; // from bootloader
32 32-bit;
33 };
34 };
35
36 memory {
37 device_type = "memory";
38 reg = <00000000 10000000>;
39 };
40
41 soc8349@e0000000 {
42 #address-cells = <1>;
43 #size-cells = <1>;
44 #interrupt-cells = <2>;
45 device_type = "soc";
46 ranges = <0 e0000000 00100000>;
47 reg = <e0000000 00000200>;
48 bus-frequency = <0>; // from bootloader
49
50 wdt@200 {
51 device_type = "watchdog";
52 compatible = "mpc83xx_wdt";
53 reg = <200 100>;
54 };
55
56 i2c@3000 {
57 device_type = "i2c";
58 compatible = "fsl-i2c";
59 reg = <3000 100>;
60 interrupts = <e 8>;
61 interrupt-parent = <700>;
62 dfsrr;
63 };
64
65 i2c@3100 {
66 device_type = "i2c";
67 compatible = "fsl-i2c";
68 reg = <3100 100>;
69 interrupts = <f 8>;
70 interrupt-parent = <700>;
71 dfsrr;
72 };
73
74 spi@7000 {
75 device_type = "spi";
76 compatible = "mpc83xx_spi";
77 reg = <7000 1000>;
78 interrupts = <10 8>;
79 interrupt-parent = <700>;
80 mode = <0>;
81 };
82
83 usb@22000 {
84 device_type = "usb";
85 compatible = "fsl-usb2-mph";
86 reg = <22000 1000>;
87 #address-cells = <1>;
88 #size-cells = <0>;
89 interrupt-parent = <700>;
90 interrupts = <27 2>;
91 phy_type = "ulpi";
92 port1;
93 };
94
95 usb@23000 {
96 device_type = "usb";
97 compatible = "fsl-usb2-dr";
98 reg = <23000 1000>;
99 #address-cells = <1>;
100 #size-cells = <0>;
101 interrupt-parent = <700>;
102 interrupts = <26 2>;
103 phy_type = "ulpi";
104 };
105
106 mdio@24520 {
107 device_type = "mdio";
108 compatible = "gianfar";
109 reg = <24520 20>;
110 #address-cells = <1>;
111 #size-cells = <0>;
112 linux,phandle = <24520>;
113
114 /* Vitesse 8201 */
115 ethernet-phy@1c {
116 linux,phandle = <245201c>;
117 interrupt-parent = <700>;
118 interrupts = <12 2>;
119 reg = <1c>;
120 device_type = "ethernet-phy";
121 };
122
123 /* Vitesse 7385 */
124 ethernet-phy@1f {
125 linux,phandle = <245201f>;
126 interrupt-parent = <700>;
127 interrupts = <12 2>;
128 reg = <1f>;
129 device_type = "ethernet-phy";
130 };
131 };
132
133 ethernet@24000 {
134 device_type = "network";
135 model = "TSEC";
136 compatible = "gianfar";
137 reg = <24000 1000>;
138 address = [ 00 00 00 00 00 00 ];
139 local-mac-address = [ 00 00 00 00 00 00 ];
140 interrupts = <20 8 21 8 22 8>;
141 interrupt-parent = <700>;
142 phy-handle = <245201c>;
143 };
144
145 ethernet@25000 {
146 #address-cells = <1>;
147 #size-cells = <0>;
148 device_type = "network";
149 model = "TSEC";
150 compatible = "gianfar";
151 reg = <25000 1000>;
152 address = [ 00 00 00 00 00 00 ];
153 local-mac-address = [ 00 00 00 00 00 00 ];
154 interrupts = <23 8 24 8 25 8>;
155 interrupt-parent = <700>;
156 phy-handle = <245201f>;
157 };
158
159 serial@4500 {
160 device_type = "serial";
161 compatible = "ns16550";
162 reg = <4500 100>;
163 clock-frequency = <0>; // from bootloader
164 interrupts = <9 8>;
165 interrupt-parent = <700>;
166 };
167
168 serial@4600 {
169 device_type = "serial";
170 compatible = "ns16550";
171 reg = <4600 100>;
172 clock-frequency = <0>; // from bootloader
173 interrupts = <a 8>;
174 interrupt-parent = <700>;
175 };
176
177 pci@8500 {
178 interrupt-map-mask = <f800 0 0 7>;
179 interrupt-map = <
180 /* IDSEL 0x10 - SATA */
181 8000 0 0 1 700 16 8 /* SATA_INTA */
182 >;
183 interrupt-parent = <700>;
184 interrupts = <42 8>;
185 bus-range = <0 0>;
186 ranges = <42000000 0 80000000 80000000 0 10000000
187 02000000 0 90000000 90000000 0 10000000
188 01000000 0 00000000 e2000000 0 01000000>;
189 clock-frequency = <3f940aa>;
190 #interrupt-cells = <1>;
191 #size-cells = <2>;
192 #address-cells = <3>;
193 reg = <8500 100>;
194 compatible = "83xx";
195 device_type = "pci";
196 };
197
198 pci@8600 {
199 interrupt-map-mask = <f800 0 0 7>;
200 interrupt-map = <
201 /* IDSEL 0x0E - MiniPCI Slot */
202 7000 0 0 1 700 15 8 /* PCI_INTA */
203
204 /* IDSEL 0x0F - PCI Slot */
205 7800 0 0 1 700 14 8 /* PCI_INTA */
206 7800 0 0 2 700 15 8 /* PCI_INTB */
207 >;
208 interrupt-parent = <700>;
209 interrupts = <43 8>;
210 bus-range = <1 1>;
211 ranges = <42000000 0 a0000000 a0000000 0 10000000
212 02000000 0 b0000000 b0000000 0 10000000
213 01000000 0 00000000 e3000000 0 01000000>;
214 clock-frequency = <3f940aa>;
215 #interrupt-cells = <1>;
216 #size-cells = <2>;
217 #address-cells = <3>;
218 reg = <8600 100>;
219 compatible = "83xx";
220 device_type = "pci";
221 };
222
223 crypto@30000 {
224 device_type = "crypto";
225 model = "SEC2";
226 compatible = "talitos";
227 reg = <30000 10000>;
228 interrupts = <b 8>;
229 interrupt-parent = <700>;
230 num-channels = <4>;
231 channel-fifo-len = <18>;
232 exec-units-mask = <0000007e>;
233 descriptor-types-mask = <01010ebf>;
234 };
235
236 pic@700 {
237 linux,phandle = <700>;
238 interrupt-controller;
239 #address-cells = <0>;
240 #interrupt-cells = <2>;
241 reg = <700 100>;
242 built-in;
243 device_type = "ipic";
244 };
245 };
246};
diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c
index fd99f789a37b..3a71845afc6c 100644
--- a/arch/powerpc/boot/of.c
+++ b/arch/powerpc/boot/of.c
@@ -176,12 +176,9 @@ static void *claim(unsigned long virt, unsigned long size, unsigned long align)
176static void *of_try_claim(u32 size) 176static void *of_try_claim(u32 size)
177{ 177{
178 unsigned long addr = 0; 178 unsigned long addr = 0;
179 static u8 first_time = 1;
180 179
181 if (first_time) { 180 if (claim_base == 0)
182 claim_base = _ALIGN_UP((unsigned long)_end, ONE_MB); 181 claim_base = _ALIGN_UP((unsigned long)_end, ONE_MB);
183 first_time = 0;
184 }
185 182
186 for(; claim_base < RAM_END; claim_base += ONE_MB) { 183 for(; claim_base < RAM_END; claim_base += ONE_MB) {
187#ifdef DEBUG 184#ifdef DEBUG
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig
index d58f82f836f8..b5005506c2f8 100644
--- a/arch/powerpc/configs/iseries_defconfig
+++ b/arch/powerpc/configs/iseries_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.19-rc1
4# Sun Sep 10 10:22:57 2006 4# Fri Oct 6 13:25:04 2006
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -22,6 +22,7 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
23# CONFIG_PPC_UDBG_16550 is not set 23# CONFIG_PPC_UDBG_16550 is not set
24# CONFIG_GENERIC_TBSYNC is not set 24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
25# CONFIG_DEFAULT_UIMAGE is not set 26# CONFIG_DEFAULT_UIMAGE is not set
26 27
27# 28#
@@ -52,10 +53,11 @@ CONFIG_LOCALVERSION=""
52CONFIG_LOCALVERSION_AUTO=y 53CONFIG_LOCALVERSION_AUTO=y
53CONFIG_SWAP=y 54CONFIG_SWAP=y
54CONFIG_SYSVIPC=y 55CONFIG_SYSVIPC=y
56# CONFIG_IPC_NS is not set
55CONFIG_POSIX_MQUEUE=y 57CONFIG_POSIX_MQUEUE=y
56# CONFIG_BSD_PROCESS_ACCT is not set 58# CONFIG_BSD_PROCESS_ACCT is not set
57# CONFIG_TASKSTATS is not set 59# CONFIG_TASKSTATS is not set
58CONFIG_SYSCTL=y 60# CONFIG_UTS_NS is not set
59CONFIG_AUDIT=y 61CONFIG_AUDIT=y
60CONFIG_AUDITSYSCALL=y 62CONFIG_AUDITSYSCALL=y
61CONFIG_IKCONFIG=y 63CONFIG_IKCONFIG=y
@@ -64,7 +66,9 @@ CONFIG_IKCONFIG_PROC=y
64# CONFIG_RELAY is not set 66# CONFIG_RELAY is not set
65CONFIG_INITRAMFS_SOURCE="" 67CONFIG_INITRAMFS_SOURCE=""
66CONFIG_CC_OPTIMIZE_FOR_SIZE=y 68CONFIG_CC_OPTIMIZE_FOR_SIZE=y
69CONFIG_SYSCTL=y
67# CONFIG_EMBEDDED is not set 70# CONFIG_EMBEDDED is not set
71# CONFIG_SYSCTL_SYSCALL is not set
68CONFIG_KALLSYMS=y 72CONFIG_KALLSYMS=y
69# CONFIG_KALLSYMS_ALL is not set 73# CONFIG_KALLSYMS_ALL is not set
70# CONFIG_KALLSYMS_EXTRA_PASS is not set 74# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -73,12 +77,12 @@ CONFIG_PRINTK=y
73CONFIG_BUG=y 77CONFIG_BUG=y
74CONFIG_ELF_CORE=y 78CONFIG_ELF_CORE=y
75CONFIG_BASE_FULL=y 79CONFIG_BASE_FULL=y
76CONFIG_RT_MUTEXES=y
77CONFIG_FUTEX=y 80CONFIG_FUTEX=y
78CONFIG_EPOLL=y 81CONFIG_EPOLL=y
79CONFIG_SHMEM=y 82CONFIG_SHMEM=y
80CONFIG_SLAB=y 83CONFIG_SLAB=y
81CONFIG_VM_EVENT_COUNTERS=y 84CONFIG_VM_EVENT_COUNTERS=y
85CONFIG_RT_MUTEXES=y
82# CONFIG_TINY_SHMEM is not set 86# CONFIG_TINY_SHMEM is not set
83CONFIG_BASE_SMALL=0 87CONFIG_BASE_SMALL=0
84# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
@@ -97,6 +101,7 @@ CONFIG_STOP_MACHINE=y
97# 101#
98# Block layer 102# Block layer
99# 103#
104CONFIG_BLOCK=y
100# CONFIG_BLK_DEV_IO_TRACE is not set 105# CONFIG_BLK_DEV_IO_TRACE is not set
101 106
102# 107#
@@ -115,13 +120,18 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
115# 120#
116# Platform support 121# Platform support
117# 122#
118# CONFIG_PPC_MULTIPLATFORM is not set 123CONFIG_PPC_MULTIPLATFORM=y
119CONFIG_PPC_ISERIES=y
120# CONFIG_EMBEDDED6xx is not set 124# CONFIG_EMBEDDED6xx is not set
121# CONFIG_APUS is not set 125# CONFIG_APUS is not set
126# CONFIG_PPC_PSERIES is not set
127CONFIG_PPC_ISERIES=y
128# CONFIG_PPC_PMAC is not set
129# CONFIG_PPC_MAPLE is not set
130# CONFIG_PPC_PASEMI is not set
122# CONFIG_PPC_CELL is not set 131# CONFIG_PPC_CELL is not set
123# CONFIG_PPC_CELL_NATIVE is not set 132# CONFIG_PPC_CELL_NATIVE is not set
124# CONFIG_UDBG_RTAS_CONSOLE is not set 133# CONFIG_PPC_IBM_CELL_BLADE is not set
134# CONFIG_U3_DART is not set
125# CONFIG_PPC_RTAS is not set 135# CONFIG_PPC_RTAS is not set
126# CONFIG_MMIO_NVRAM is not set 136# CONFIG_MMIO_NVRAM is not set
127CONFIG_IBMVIO=y 137CONFIG_IBMVIO=y
@@ -147,12 +157,15 @@ CONFIG_BINFMT_ELF=y
147CONFIG_FORCE_MAX_ZONEORDER=13 157CONFIG_FORCE_MAX_ZONEORDER=13
148CONFIG_IOMMU_VMERGE=y 158CONFIG_IOMMU_VMERGE=y
149CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 159CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
160# CONFIG_KEXEC is not set
161# CONFIG_CRASH_DUMP is not set
150CONFIG_IRQ_ALL_CPUS=y 162CONFIG_IRQ_ALL_CPUS=y
151CONFIG_LPARCFG=y 163CONFIG_LPARCFG=y
152# CONFIG_NUMA is not set 164# CONFIG_NUMA is not set
153CONFIG_ARCH_SELECT_MEMORY_MODEL=y 165CONFIG_ARCH_SELECT_MEMORY_MODEL=y
154CONFIG_ARCH_FLATMEM_ENABLE=y 166CONFIG_ARCH_FLATMEM_ENABLE=y
155CONFIG_ARCH_SPARSEMEM_ENABLE=y 167CONFIG_ARCH_SPARSEMEM_ENABLE=y
168CONFIG_ARCH_POPULATES_NODE_MAP=y
156CONFIG_SELECT_MEMORY_MODEL=y 169CONFIG_SELECT_MEMORY_MODEL=y
157CONFIG_FLATMEM_MANUAL=y 170CONFIG_FLATMEM_MANUAL=y
158# CONFIG_DISCONTIGMEM_MANUAL is not set 171# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -179,6 +192,7 @@ CONFIG_GENERIC_ISA_DMA=y
179CONFIG_PCI=y 192CONFIG_PCI=y
180CONFIG_PCI_DOMAINS=y 193CONFIG_PCI_DOMAINS=y
181# CONFIG_PCIEPORTBUS is not set 194# CONFIG_PCIEPORTBUS is not set
195# CONFIG_PCI_MULTITHREAD_PROBE is not set
182# CONFIG_PCI_DEBUG is not set 196# CONFIG_PCI_DEBUG is not set
183 197
184# 198#
@@ -206,6 +220,7 @@ CONFIG_PACKET=y
206CONFIG_UNIX=y 220CONFIG_UNIX=y
207CONFIG_XFRM=y 221CONFIG_XFRM=y
208CONFIG_XFRM_USER=m 222CONFIG_XFRM_USER=m
223CONFIG_XFRM_SUB_POLICY=y
209CONFIG_NET_KEY=m 224CONFIG_NET_KEY=m
210CONFIG_INET=y 225CONFIG_INET=y
211CONFIG_IP_MULTICAST=y 226CONFIG_IP_MULTICAST=y
@@ -224,10 +239,12 @@ CONFIG_INET_XFRM_TUNNEL=m
224CONFIG_INET_TUNNEL=y 239CONFIG_INET_TUNNEL=y
225CONFIG_INET_XFRM_MODE_TRANSPORT=y 240CONFIG_INET_XFRM_MODE_TRANSPORT=y
226CONFIG_INET_XFRM_MODE_TUNNEL=y 241CONFIG_INET_XFRM_MODE_TUNNEL=y
242CONFIG_INET_XFRM_MODE_BEET=m
227CONFIG_INET_DIAG=y 243CONFIG_INET_DIAG=y
228CONFIG_INET_TCP_DIAG=y 244CONFIG_INET_TCP_DIAG=y
229# CONFIG_TCP_CONG_ADVANCED is not set 245# CONFIG_TCP_CONG_ADVANCED is not set
230CONFIG_TCP_CONG_BIC=y 246CONFIG_TCP_CONG_CUBIC=y
247CONFIG_DEFAULT_TCP_CONG="cubic"
231 248
232# 249#
233# IP: Virtual Server Configuration 250# IP: Virtual Server Configuration
@@ -247,6 +264,7 @@ CONFIG_NETFILTER=y
247CONFIG_NETFILTER_XTABLES=m 264CONFIG_NETFILTER_XTABLES=m
248CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 265CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
249CONFIG_NETFILTER_XT_TARGET_CONNMARK=m 266CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
267CONFIG_NETFILTER_XT_TARGET_DSCP=m
250CONFIG_NETFILTER_XT_TARGET_MARK=m 268CONFIG_NETFILTER_XT_TARGET_MARK=m
251CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 269CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
252CONFIG_NETFILTER_XT_TARGET_NOTRACK=m 270CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
@@ -255,6 +273,7 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
255CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 273CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
256CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 274CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
257# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 275# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
276CONFIG_NETFILTER_XT_MATCH_DSCP=m
258# CONFIG_NETFILTER_XT_MATCH_ESP is not set 277# CONFIG_NETFILTER_XT_MATCH_ESP is not set
259CONFIG_NETFILTER_XT_MATCH_HELPER=m 278CONFIG_NETFILTER_XT_MATCH_HELPER=m
260CONFIG_NETFILTER_XT_MATCH_LENGTH=m 279CONFIG_NETFILTER_XT_MATCH_LENGTH=m
@@ -294,7 +313,6 @@ CONFIG_IP_NF_MATCH_IPRANGE=m
294CONFIG_IP_NF_MATCH_TOS=m 313CONFIG_IP_NF_MATCH_TOS=m
295CONFIG_IP_NF_MATCH_RECENT=m 314CONFIG_IP_NF_MATCH_RECENT=m
296CONFIG_IP_NF_MATCH_ECN=m 315CONFIG_IP_NF_MATCH_ECN=m
297CONFIG_IP_NF_MATCH_DSCP=m
298# CONFIG_IP_NF_MATCH_AH is not set 316# CONFIG_IP_NF_MATCH_AH is not set
299CONFIG_IP_NF_MATCH_TTL=m 317CONFIG_IP_NF_MATCH_TTL=m
300CONFIG_IP_NF_MATCH_OWNER=m 318CONFIG_IP_NF_MATCH_OWNER=m
@@ -319,7 +337,6 @@ CONFIG_IP_NF_NAT_AMANDA=m
319CONFIG_IP_NF_MANGLE=m 337CONFIG_IP_NF_MANGLE=m
320CONFIG_IP_NF_TARGET_TOS=m 338CONFIG_IP_NF_TARGET_TOS=m
321CONFIG_IP_NF_TARGET_ECN=m 339CONFIG_IP_NF_TARGET_ECN=m
322CONFIG_IP_NF_TARGET_DSCP=m
323CONFIG_IP_NF_TARGET_TTL=m 340CONFIG_IP_NF_TARGET_TTL=m
324CONFIG_IP_NF_TARGET_CLUSTERIP=m 341CONFIG_IP_NF_TARGET_CLUSTERIP=m
325CONFIG_IP_NF_RAW=m 342CONFIG_IP_NF_RAW=m
@@ -351,7 +368,6 @@ CONFIG_LLC=y
351# CONFIG_ATALK is not set 368# CONFIG_ATALK is not set
352# CONFIG_X25 is not set 369# CONFIG_X25 is not set
353# CONFIG_LAPB is not set 370# CONFIG_LAPB is not set
354# CONFIG_NET_DIVERT is not set
355# CONFIG_ECONET is not set 371# CONFIG_ECONET is not set
356# CONFIG_WAN_ROUTER is not set 372# CONFIG_WAN_ROUTER is not set
357 373
@@ -433,6 +449,7 @@ CONFIG_BLK_DEV_INITRD=y
433# 449#
434# CONFIG_RAID_ATTRS is not set 450# CONFIG_RAID_ATTRS is not set
435CONFIG_SCSI=y 451CONFIG_SCSI=y
452CONFIG_SCSI_NETLINK=y
436CONFIG_SCSI_PROC_FS=y 453CONFIG_SCSI_PROC_FS=y
437 454
438# 455#
@@ -454,12 +471,14 @@ CONFIG_SCSI_CONSTANTS=y
454# CONFIG_SCSI_LOGGING is not set 471# CONFIG_SCSI_LOGGING is not set
455 472
456# 473#
457# SCSI Transport Attributes 474# SCSI Transports
458# 475#
459CONFIG_SCSI_SPI_ATTRS=y 476CONFIG_SCSI_SPI_ATTRS=y
460CONFIG_SCSI_FC_ATTRS=y 477CONFIG_SCSI_FC_ATTRS=y
461# CONFIG_SCSI_ISCSI_ATTRS is not set 478# CONFIG_SCSI_ISCSI_ATTRS is not set
462# CONFIG_SCSI_SAS_ATTRS is not set 479CONFIG_SCSI_SAS_ATTRS=m
480CONFIG_SCSI_SAS_LIBSAS=m
481CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
463 482
464# 483#
465# SCSI low-level drivers 484# SCSI low-level drivers
@@ -472,10 +491,11 @@ CONFIG_SCSI_FC_ATTRS=y
472# CONFIG_SCSI_AIC7XXX is not set 491# CONFIG_SCSI_AIC7XXX is not set
473# CONFIG_SCSI_AIC7XXX_OLD is not set 492# CONFIG_SCSI_AIC7XXX_OLD is not set
474# CONFIG_SCSI_AIC79XX is not set 493# CONFIG_SCSI_AIC79XX is not set
494# CONFIG_SCSI_AIC94XX is not set
495# CONFIG_SCSI_ARCMSR is not set
475# CONFIG_MEGARAID_NEWGEN is not set 496# CONFIG_MEGARAID_NEWGEN is not set
476# CONFIG_MEGARAID_LEGACY is not set 497# CONFIG_MEGARAID_LEGACY is not set
477# CONFIG_MEGARAID_SAS is not set 498# CONFIG_MEGARAID_SAS is not set
478# CONFIG_ATA is not set
479# CONFIG_SCSI_HPTIOP is not set 499# CONFIG_SCSI_HPTIOP is not set
480# CONFIG_SCSI_BUSLOGIC is not set 500# CONFIG_SCSI_BUSLOGIC is not set
481# CONFIG_SCSI_DMX3191D is not set 501# CONFIG_SCSI_DMX3191D is not set
@@ -486,16 +506,22 @@ CONFIG_SCSI_FC_ATTRS=y
486CONFIG_SCSI_IBMVSCSI=m 506CONFIG_SCSI_IBMVSCSI=m
487# CONFIG_SCSI_INITIO is not set 507# CONFIG_SCSI_INITIO is not set
488# CONFIG_SCSI_INIA100 is not set 508# CONFIG_SCSI_INIA100 is not set
509# CONFIG_SCSI_STEX is not set
489# CONFIG_SCSI_SYM53C8XX_2 is not set 510# CONFIG_SCSI_SYM53C8XX_2 is not set
490# CONFIG_SCSI_IPR is not set
491# CONFIG_SCSI_QLOGIC_1280 is not set 511# CONFIG_SCSI_QLOGIC_1280 is not set
492# CONFIG_SCSI_QLA_FC is not set 512# CONFIG_SCSI_QLA_FC is not set
513# CONFIG_SCSI_QLA_ISCSI is not set
493# CONFIG_SCSI_LPFC is not set 514# CONFIG_SCSI_LPFC is not set
494# CONFIG_SCSI_DC395x is not set 515# CONFIG_SCSI_DC395x is not set
495# CONFIG_SCSI_DC390T is not set 516# CONFIG_SCSI_DC390T is not set
496# CONFIG_SCSI_DEBUG is not set 517# CONFIG_SCSI_DEBUG is not set
497 518
498# 519#
520# Serial ATA (prod) and Parallel ATA (experimental) drivers
521#
522# CONFIG_ATA is not set
523
524#
499# Multi-device support (RAID and LVM) 525# Multi-device support (RAID and LVM)
500# 526#
501CONFIG_MD=y 527CONFIG_MD=y
@@ -508,6 +534,7 @@ CONFIG_MD_RAID10=m
508CONFIG_MD_MULTIPATH=m 534CONFIG_MD_MULTIPATH=m
509CONFIG_MD_FAULTY=m 535CONFIG_MD_FAULTY=m
510CONFIG_BLK_DEV_DM=y 536CONFIG_BLK_DEV_DM=y
537# CONFIG_DM_DEBUG is not set
511CONFIG_DM_CRYPT=m 538CONFIG_DM_CRYPT=m
512CONFIG_DM_SNAPSHOT=m 539CONFIG_DM_SNAPSHOT=m
513CONFIG_DM_MIRROR=m 540CONFIG_DM_MIRROR=m
@@ -573,6 +600,7 @@ CONFIG_MII=y
573# CONFIG_HP100 is not set 600# CONFIG_HP100 is not set
574CONFIG_NET_PCI=y 601CONFIG_NET_PCI=y
575CONFIG_PCNET32=y 602CONFIG_PCNET32=y
603CONFIG_PCNET32_NAPI=y
576# CONFIG_AMD8111_ETH is not set 604# CONFIG_AMD8111_ETH is not set
577# CONFIG_ADAPTEC_STARFIRE is not set 605# CONFIG_ADAPTEC_STARFIRE is not set
578# CONFIG_B44 is not set 606# CONFIG_B44 is not set
@@ -610,6 +638,7 @@ CONFIG_E1000=m
610# CONFIG_VIA_VELOCITY is not set 638# CONFIG_VIA_VELOCITY is not set
611# CONFIG_TIGON3 is not set 639# CONFIG_TIGON3 is not set
612# CONFIG_BNX2 is not set 640# CONFIG_BNX2 is not set
641# CONFIG_QLA3XXX is not set
613 642
614# 643#
615# Ethernet (10000 Mbit) 644# Ethernet (10000 Mbit)
@@ -649,6 +678,7 @@ CONFIG_PPP_BSDCOMP=m
649# CONFIG_PPP_MPPE is not set 678# CONFIG_PPP_MPPE is not set
650CONFIG_PPPOE=m 679CONFIG_PPPOE=m
651# CONFIG_SLIP is not set 680# CONFIG_SLIP is not set
681CONFIG_SLHC=m
652# CONFIG_NET_FC is not set 682# CONFIG_NET_FC is not set
653# CONFIG_SHAPER is not set 683# CONFIG_SHAPER is not set
654CONFIG_NETCONSOLE=y 684CONFIG_NETCONSOLE=y
@@ -671,6 +701,7 @@ CONFIG_NET_POLL_CONTROLLER=y
671# Input device support 701# Input device support
672# 702#
673CONFIG_INPUT=y 703CONFIG_INPUT=y
704# CONFIG_INPUT_FF_MEMLESS is not set
674 705
675# 706#
676# Userland interfaces 707# Userland interfaces
@@ -774,12 +805,12 @@ CONFIG_MAX_RAW_DEVS=256
774# 805#
775# Misc devices 806# Misc devices
776# 807#
808# CONFIG_TIFM_CORE is not set
777 809
778# 810#
779# Multimedia devices 811# Multimedia devices
780# 812#
781# CONFIG_VIDEO_DEV is not set 813# CONFIG_VIDEO_DEV is not set
782CONFIG_VIDEO_V4L2=y
783 814
784# 815#
785# Digital Video Broadcasting Devices 816# Digital Video Broadcasting Devices
@@ -893,6 +924,9 @@ CONFIG_XFS_FS=m
893CONFIG_XFS_SECURITY=y 924CONFIG_XFS_SECURITY=y
894CONFIG_XFS_POSIX_ACL=y 925CONFIG_XFS_POSIX_ACL=y
895# CONFIG_XFS_RT is not set 926# CONFIG_XFS_RT is not set
927CONFIG_GFS2_FS=m
928CONFIG_GFS2_FS_LOCKING_NOLOCK=m
929CONFIG_GFS2_FS_LOCKING_DLM=m
896# CONFIG_OCFS2_FS is not set 930# CONFIG_OCFS2_FS is not set
897# CONFIG_MINIX_FS is not set 931# CONFIG_MINIX_FS is not set
898# CONFIG_ROMFS_FS is not set 932# CONFIG_ROMFS_FS is not set
@@ -929,12 +963,14 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
929# 963#
930CONFIG_PROC_FS=y 964CONFIG_PROC_FS=y
931CONFIG_PROC_KCORE=y 965CONFIG_PROC_KCORE=y
966CONFIG_PROC_SYSCTL=y
932CONFIG_SYSFS=y 967CONFIG_SYSFS=y
933CONFIG_TMPFS=y 968CONFIG_TMPFS=y
969CONFIG_TMPFS_POSIX_ACL=y
934# CONFIG_HUGETLBFS is not set 970# CONFIG_HUGETLBFS is not set
935# CONFIG_HUGETLB_PAGE is not set 971# CONFIG_HUGETLB_PAGE is not set
936CONFIG_RAMFS=y 972CONFIG_RAMFS=y
937# CONFIG_CONFIGFS_FS is not set 973CONFIG_CONFIGFS_FS=m
938 974
939# 975#
940# Miscellaneous filesystems 976# Miscellaneous filesystems
@@ -988,6 +1024,7 @@ CONFIG_CIFS_POSIX=y
988# CONFIG_CODA_FS is not set 1024# CONFIG_CODA_FS is not set
989# CONFIG_AFS_FS is not set 1025# CONFIG_AFS_FS is not set
990# CONFIG_9P_FS is not set 1026# CONFIG_9P_FS is not set
1027CONFIG_GENERIC_ACL=y
991 1028
992# 1029#
993# Partition Types 1030# Partition Types
@@ -1040,6 +1077,12 @@ CONFIG_NLS_ISO8859_1=y
1040# CONFIG_NLS_UTF8 is not set 1077# CONFIG_NLS_UTF8 is not set
1041 1078
1042# 1079#
1080# Distributed Lock Manager
1081#
1082CONFIG_DLM=m
1083# CONFIG_DLM_DEBUG is not set
1084
1085#
1043# iSeries device drivers 1086# iSeries device drivers
1044# 1087#
1045CONFIG_VIOCONS=y 1088CONFIG_VIOCONS=y
@@ -1073,6 +1116,7 @@ CONFIG_PLIST=y
1073# Kernel hacking 1116# Kernel hacking
1074# 1117#
1075# CONFIG_PRINTK_TIME is not set 1118# CONFIG_PRINTK_TIME is not set
1119CONFIG_ENABLE_MUST_CHECK=y
1076CONFIG_MAGIC_SYSRQ=y 1120CONFIG_MAGIC_SYSRQ=y
1077# CONFIG_UNUSED_SYMBOLS is not set 1121# CONFIG_UNUSED_SYMBOLS is not set
1078CONFIG_DEBUG_KERNEL=y 1122CONFIG_DEBUG_KERNEL=y
@@ -1091,6 +1135,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1091# CONFIG_DEBUG_INFO is not set 1135# CONFIG_DEBUG_INFO is not set
1092CONFIG_DEBUG_FS=y 1136CONFIG_DEBUG_FS=y
1093# CONFIG_DEBUG_VM is not set 1137# CONFIG_DEBUG_VM is not set
1138# CONFIG_DEBUG_LIST is not set
1094# CONFIG_FORCED_INLINING is not set 1139# CONFIG_FORCED_INLINING is not set
1095# CONFIG_RCU_TORTURE_TEST is not set 1140# CONFIG_RCU_TORTURE_TEST is not set
1096CONFIG_DEBUG_STACKOVERFLOW=y 1141CONFIG_DEBUG_STACKOVERFLOW=y
@@ -1109,6 +1154,10 @@ CONFIG_IRQSTACKS=y
1109# Cryptographic options 1154# Cryptographic options
1110# 1155#
1111CONFIG_CRYPTO=y 1156CONFIG_CRYPTO=y
1157CONFIG_CRYPTO_ALGAPI=y
1158CONFIG_CRYPTO_BLKCIPHER=m
1159CONFIG_CRYPTO_HASH=y
1160CONFIG_CRYPTO_MANAGER=m
1112CONFIG_CRYPTO_HMAC=y 1161CONFIG_CRYPTO_HMAC=y
1113CONFIG_CRYPTO_NULL=m 1162CONFIG_CRYPTO_NULL=m
1114CONFIG_CRYPTO_MD4=m 1163CONFIG_CRYPTO_MD4=m
@@ -1118,9 +1167,12 @@ CONFIG_CRYPTO_SHA256=m
1118CONFIG_CRYPTO_SHA512=m 1167CONFIG_CRYPTO_SHA512=m
1119CONFIG_CRYPTO_WP512=m 1168CONFIG_CRYPTO_WP512=m
1120CONFIG_CRYPTO_TGR192=m 1169CONFIG_CRYPTO_TGR192=m
1170CONFIG_CRYPTO_ECB=m
1171CONFIG_CRYPTO_CBC=m
1121CONFIG_CRYPTO_DES=y 1172CONFIG_CRYPTO_DES=y
1122CONFIG_CRYPTO_BLOWFISH=m 1173CONFIG_CRYPTO_BLOWFISH=m
1123CONFIG_CRYPTO_TWOFISH=m 1174CONFIG_CRYPTO_TWOFISH=m
1175CONFIG_CRYPTO_TWOFISH_COMMON=m
1124CONFIG_CRYPTO_SERPENT=m 1176CONFIG_CRYPTO_SERPENT=m
1125CONFIG_CRYPTO_AES=m 1177CONFIG_CRYPTO_AES=m
1126CONFIG_CRYPTO_CAST5=m 1178CONFIG_CRYPTO_CAST5=m
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig
index 62ba66091a13..ae96a5b2f00d 100644
--- a/arch/powerpc/configs/maple_defconfig
+++ b/arch/powerpc/configs/maple_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-rc6 3# Linux kernel version: 2.6.18
4# Sun Sep 10 10:24:55 2006 4# Mon Oct 9 11:59:34 2006
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -22,6 +22,7 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
23CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
24CONFIG_GENERIC_TBSYNC=y 24CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y
25# CONFIG_DEFAULT_UIMAGE is not set 26# CONFIG_DEFAULT_UIMAGE is not set
26 27
27# 28#
@@ -34,7 +35,7 @@ CONFIG_PPC_FPU=y
34CONFIG_PPC_STD_MMU=y 35CONFIG_PPC_STD_MMU=y
35CONFIG_VIRT_CPU_ACCOUNTING=y 36CONFIG_VIRT_CPU_ACCOUNTING=y
36CONFIG_SMP=y 37CONFIG_SMP=y
37CONFIG_NR_CPUS=2 38CONFIG_NR_CPUS=4
38CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 39CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
39 40
40# 41#
@@ -51,10 +52,11 @@ CONFIG_LOCALVERSION=""
51CONFIG_LOCALVERSION_AUTO=y 52CONFIG_LOCALVERSION_AUTO=y
52CONFIG_SWAP=y 53CONFIG_SWAP=y
53CONFIG_SYSVIPC=y 54CONFIG_SYSVIPC=y
55# CONFIG_IPC_NS is not set
54CONFIG_POSIX_MQUEUE=y 56CONFIG_POSIX_MQUEUE=y
55# CONFIG_BSD_PROCESS_ACCT is not set 57# CONFIG_BSD_PROCESS_ACCT is not set
56# CONFIG_TASKSTATS is not set 58# CONFIG_TASKSTATS is not set
57CONFIG_SYSCTL=y 59# CONFIG_UTS_NS is not set
58# CONFIG_AUDIT is not set 60# CONFIG_AUDIT is not set
59CONFIG_IKCONFIG=y 61CONFIG_IKCONFIG=y
60CONFIG_IKCONFIG_PROC=y 62CONFIG_IKCONFIG_PROC=y
@@ -62,7 +64,9 @@ CONFIG_IKCONFIG_PROC=y
62# CONFIG_RELAY is not set 64# CONFIG_RELAY is not set
63CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
64CONFIG_CC_OPTIMIZE_FOR_SIZE=y 66CONFIG_CC_OPTIMIZE_FOR_SIZE=y
67CONFIG_SYSCTL=y
65# CONFIG_EMBEDDED is not set 68# CONFIG_EMBEDDED is not set
69# CONFIG_SYSCTL_SYSCALL is not set
66CONFIG_KALLSYMS=y 70CONFIG_KALLSYMS=y
67CONFIG_KALLSYMS_ALL=y 71CONFIG_KALLSYMS_ALL=y
68# CONFIG_KALLSYMS_EXTRA_PASS is not set 72# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -71,12 +75,12 @@ CONFIG_PRINTK=y
71CONFIG_BUG=y 75CONFIG_BUG=y
72CONFIG_ELF_CORE=y 76CONFIG_ELF_CORE=y
73CONFIG_BASE_FULL=y 77CONFIG_BASE_FULL=y
74CONFIG_RT_MUTEXES=y
75CONFIG_FUTEX=y 78CONFIG_FUTEX=y
76CONFIG_EPOLL=y 79CONFIG_EPOLL=y
77CONFIG_SHMEM=y 80CONFIG_SHMEM=y
78CONFIG_SLAB=y 81CONFIG_SLAB=y
79CONFIG_VM_EVENT_COUNTERS=y 82CONFIG_VM_EVENT_COUNTERS=y
83CONFIG_RT_MUTEXES=y
80# CONFIG_TINY_SHMEM is not set 84# CONFIG_TINY_SHMEM is not set
81CONFIG_BASE_SMALL=0 85CONFIG_BASE_SMALL=0
82# CONFIG_SLOB is not set 86# CONFIG_SLOB is not set
@@ -95,6 +99,7 @@ CONFIG_STOP_MACHINE=y
95# 99#
96# Block layer 100# Block layer
97# 101#
102CONFIG_BLOCK=y
98# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
99 104
100# 105#
@@ -114,16 +119,16 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
114# Platform support 119# Platform support
115# 120#
116CONFIG_PPC_MULTIPLATFORM=y 121CONFIG_PPC_MULTIPLATFORM=y
117# CONFIG_PPC_ISERIES is not set
118# CONFIG_EMBEDDED6xx is not set 122# CONFIG_EMBEDDED6xx is not set
119# CONFIG_APUS is not set 123# CONFIG_APUS is not set
120# CONFIG_PPC_PSERIES is not set 124# CONFIG_PPC_PSERIES is not set
125# CONFIG_PPC_ISERIES is not set
121# CONFIG_PPC_PMAC is not set 126# CONFIG_PPC_PMAC is not set
122CONFIG_PPC_MAPLE=y 127CONFIG_PPC_MAPLE=y
128# CONFIG_PPC_PASEMI is not set
123# CONFIG_PPC_CELL is not set 129# CONFIG_PPC_CELL is not set
124# CONFIG_PPC_CELL_NATIVE is not set 130# CONFIG_PPC_CELL_NATIVE is not set
125# CONFIG_PPC_IBM_CELL_BLADE is not set 131# CONFIG_PPC_IBM_CELL_BLADE is not set
126# CONFIG_UDBG_RTAS_CONSOLE is not set
127CONFIG_U3_DART=y 132CONFIG_U3_DART=y
128# CONFIG_PPC_RTAS is not set 133# CONFIG_PPC_RTAS is not set
129# CONFIG_MMIO_NVRAM is not set 134# CONFIG_MMIO_NVRAM is not set
@@ -157,6 +162,7 @@ CONFIG_IRQ_ALL_CPUS=y
157CONFIG_ARCH_SELECT_MEMORY_MODEL=y 162CONFIG_ARCH_SELECT_MEMORY_MODEL=y
158CONFIG_ARCH_FLATMEM_ENABLE=y 163CONFIG_ARCH_FLATMEM_ENABLE=y
159CONFIG_ARCH_SPARSEMEM_ENABLE=y 164CONFIG_ARCH_SPARSEMEM_ENABLE=y
165CONFIG_ARCH_POPULATES_NODE_MAP=y
160CONFIG_SELECT_MEMORY_MODEL=y 166CONFIG_SELECT_MEMORY_MODEL=y
161CONFIG_FLATMEM_MANUAL=y 167CONFIG_FLATMEM_MANUAL=y
162# CONFIG_DISCONTIGMEM_MANUAL is not set 168# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -184,6 +190,7 @@ CONFIG_GENERIC_ISA_DMA=y
184CONFIG_PCI=y 190CONFIG_PCI=y
185CONFIG_PCI_DOMAINS=y 191CONFIG_PCI_DOMAINS=y
186# CONFIG_PCIEPORTBUS is not set 192# CONFIG_PCIEPORTBUS is not set
193# CONFIG_PCI_MULTITHREAD_PROBE is not set
187# CONFIG_PCI_DEBUG is not set 194# CONFIG_PCI_DEBUG is not set
188 195
189# 196#
@@ -211,6 +218,7 @@ CONFIG_PACKET_MMAP=y
211CONFIG_UNIX=y 218CONFIG_UNIX=y
212CONFIG_XFRM=y 219CONFIG_XFRM=y
213CONFIG_XFRM_USER=m 220CONFIG_XFRM_USER=m
221# CONFIG_XFRM_SUB_POLICY is not set
214# CONFIG_NET_KEY is not set 222# CONFIG_NET_KEY is not set
215CONFIG_INET=y 223CONFIG_INET=y
216CONFIG_IP_MULTICAST=y 224CONFIG_IP_MULTICAST=y
@@ -232,10 +240,12 @@ CONFIG_IP_PNP_DHCP=y
232# CONFIG_INET_TUNNEL is not set 240# CONFIG_INET_TUNNEL is not set
233CONFIG_INET_XFRM_MODE_TRANSPORT=y 241CONFIG_INET_XFRM_MODE_TRANSPORT=y
234CONFIG_INET_XFRM_MODE_TUNNEL=y 242CONFIG_INET_XFRM_MODE_TUNNEL=y
243CONFIG_INET_XFRM_MODE_BEET=y
235CONFIG_INET_DIAG=y 244CONFIG_INET_DIAG=y
236CONFIG_INET_TCP_DIAG=y 245CONFIG_INET_TCP_DIAG=y
237# CONFIG_TCP_CONG_ADVANCED is not set 246# CONFIG_TCP_CONG_ADVANCED is not set
238CONFIG_TCP_CONG_BIC=y 247CONFIG_TCP_CONG_CUBIC=y
248CONFIG_DEFAULT_TCP_CONG="cubic"
239# CONFIG_IPV6 is not set 249# CONFIG_IPV6 is not set
240# CONFIG_INET6_XFRM_TUNNEL is not set 250# CONFIG_INET6_XFRM_TUNNEL is not set
241# CONFIG_INET6_TUNNEL is not set 251# CONFIG_INET6_TUNNEL is not set
@@ -265,7 +275,6 @@ CONFIG_TCP_CONG_BIC=y
265# CONFIG_ATALK is not set 275# CONFIG_ATALK is not set
266# CONFIG_X25 is not set 276# CONFIG_X25 is not set
267# CONFIG_LAPB is not set 277# CONFIG_LAPB is not set
268# CONFIG_NET_DIVERT is not set
269# CONFIG_ECONET is not set 278# CONFIG_ECONET is not set
270# CONFIG_WAN_ROUTER is not set 279# CONFIG_WAN_ROUTER is not set
271 280
@@ -377,6 +386,7 @@ CONFIG_BLK_DEV_AMD74XX=y
377# CONFIG_BLK_DEV_CS5530 is not set 386# CONFIG_BLK_DEV_CS5530 is not set
378# CONFIG_BLK_DEV_HPT34X is not set 387# CONFIG_BLK_DEV_HPT34X is not set
379# CONFIG_BLK_DEV_HPT366 is not set 388# CONFIG_BLK_DEV_HPT366 is not set
389# CONFIG_BLK_DEV_JMICRON is not set
380# CONFIG_BLK_DEV_SC1200 is not set 390# CONFIG_BLK_DEV_SC1200 is not set
381# CONFIG_BLK_DEV_PIIX is not set 391# CONFIG_BLK_DEV_PIIX is not set
382# CONFIG_BLK_DEV_IT821X is not set 392# CONFIG_BLK_DEV_IT821X is not set
@@ -399,6 +409,12 @@ CONFIG_IDEDMA_AUTO=y
399# 409#
400# CONFIG_RAID_ATTRS is not set 410# CONFIG_RAID_ATTRS is not set
401# CONFIG_SCSI is not set 411# CONFIG_SCSI is not set
412# CONFIG_SCSI_NETLINK is not set
413
414#
415# Serial ATA (prod) and Parallel ATA (experimental) drivers
416#
417# CONFIG_ATA is not set
402 418
403# 419#
404# Multi-device support (RAID and LVM) 420# Multi-device support (RAID and LVM)
@@ -498,7 +514,7 @@ CONFIG_E1000=y
498# CONFIG_VIA_VELOCITY is not set 514# CONFIG_VIA_VELOCITY is not set
499CONFIG_TIGON3=y 515CONFIG_TIGON3=y
500# CONFIG_BNX2 is not set 516# CONFIG_BNX2 is not set
501# CONFIG_MV643XX_ETH is not set 517# CONFIG_QLA3XXX is not set
502 518
503# 519#
504# Ethernet (10000 Mbit) 520# Ethernet (10000 Mbit)
@@ -545,6 +561,7 @@ CONFIG_TIGON3=y
545# Input device support 561# Input device support
546# 562#
547CONFIG_INPUT=y 563CONFIG_INPUT=y
564# CONFIG_INPUT_FF_MEMLESS is not set
548 565
549# 566#
550# Userland interfaces 567# Userland interfaces
@@ -704,6 +721,7 @@ CONFIG_I2C_AMD8111=y
704# 721#
705# Misc devices 722# Misc devices
706# 723#
724# CONFIG_TIFM_CORE is not set
707 725
708# 726#
709# Multimedia devices 727# Multimedia devices
@@ -779,7 +797,6 @@ CONFIG_USB_UHCI_HCD=y
779# 797#
780# may also be needed; see USB_STORAGE Help for more information 798# may also be needed; see USB_STORAGE Help for more information
781# 799#
782# CONFIG_USB_STORAGE is not set
783# CONFIG_USB_LIBUSUAL is not set 800# CONFIG_USB_LIBUSUAL is not set
784 801
785# 802#
@@ -802,6 +819,7 @@ CONFIG_USB_HIDINPUT=y
802# CONFIG_USB_ATI_REMOTE2 is not set 819# CONFIG_USB_ATI_REMOTE2 is not set
803# CONFIG_USB_KEYSPAN_REMOTE is not set 820# CONFIG_USB_KEYSPAN_REMOTE is not set
804# CONFIG_USB_APPLETOUCH is not set 821# CONFIG_USB_APPLETOUCH is not set
822# CONFIG_USB_TRANCEVIBRATOR is not set
805 823
806# 824#
807# USB Imaging devices 825# USB Imaging devices
@@ -828,6 +846,7 @@ CONFIG_USB_MON=y
828CONFIG_USB_SERIAL=y 846CONFIG_USB_SERIAL=y
829# CONFIG_USB_SERIAL_CONSOLE is not set 847# CONFIG_USB_SERIAL_CONSOLE is not set
830CONFIG_USB_SERIAL_GENERIC=y 848CONFIG_USB_SERIAL_GENERIC=y
849# CONFIG_USB_SERIAL_AIRCABLE is not set
831# CONFIG_USB_SERIAL_AIRPRIME is not set 850# CONFIG_USB_SERIAL_AIRPRIME is not set
832# CONFIG_USB_SERIAL_ARK3116 is not set 851# CONFIG_USB_SERIAL_ARK3116 is not set
833# CONFIG_USB_SERIAL_BELKIN is not set 852# CONFIG_USB_SERIAL_BELKIN is not set
@@ -862,6 +881,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
862# CONFIG_USB_SERIAL_KLSI is not set 881# CONFIG_USB_SERIAL_KLSI is not set
863# CONFIG_USB_SERIAL_KOBIL_SCT is not set 882# CONFIG_USB_SERIAL_KOBIL_SCT is not set
864# CONFIG_USB_SERIAL_MCT_U232 is not set 883# CONFIG_USB_SERIAL_MCT_U232 is not set
884# CONFIG_USB_SERIAL_MOS7840 is not set
865# CONFIG_USB_SERIAL_NAVMAN is not set 885# CONFIG_USB_SERIAL_NAVMAN is not set
866# CONFIG_USB_SERIAL_PL2303 is not set 886# CONFIG_USB_SERIAL_PL2303 is not set
867# CONFIG_USB_SERIAL_HP4X is not set 887# CONFIG_USB_SERIAL_HP4X is not set
@@ -879,6 +899,7 @@ CONFIG_USB_EZUSB=y
879# 899#
880# CONFIG_USB_EMI62 is not set 900# CONFIG_USB_EMI62 is not set
881# CONFIG_USB_EMI26 is not set 901# CONFIG_USB_EMI26 is not set
902# CONFIG_USB_ADUTUX is not set
882# CONFIG_USB_AUERSWALD is not set 903# CONFIG_USB_AUERSWALD is not set
883# CONFIG_USB_RIO500 is not set 904# CONFIG_USB_RIO500 is not set
884# CONFIG_USB_LEGOTOWER is not set 905# CONFIG_USB_LEGOTOWER is not set
@@ -886,9 +907,9 @@ CONFIG_USB_EZUSB=y
886# CONFIG_USB_LED is not set 907# CONFIG_USB_LED is not set
887# CONFIG_USB_CYPRESS_CY7C63 is not set 908# CONFIG_USB_CYPRESS_CY7C63 is not set
888# CONFIG_USB_CYTHERM is not set 909# CONFIG_USB_CYTHERM is not set
889# CONFIG_USB_PHIDGETKIT is not set 910# CONFIG_USB_PHIDGET is not set
890# CONFIG_USB_PHIDGETSERVO is not set
891# CONFIG_USB_IDMOUSE is not set 911# CONFIG_USB_IDMOUSE is not set
912# CONFIG_USB_FTDI_ELAN is not set
892# CONFIG_USB_APPLEDISPLAY is not set 913# CONFIG_USB_APPLEDISPLAY is not set
893# CONFIG_USB_SISUSBVGA is not set 914# CONFIG_USB_SISUSBVGA is not set
894# CONFIG_USB_LD is not set 915# CONFIG_USB_LD is not set
@@ -995,8 +1016,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
995# 1016#
996CONFIG_PROC_FS=y 1017CONFIG_PROC_FS=y
997CONFIG_PROC_KCORE=y 1018CONFIG_PROC_KCORE=y
1019CONFIG_PROC_SYSCTL=y
998CONFIG_SYSFS=y 1020CONFIG_SYSFS=y
999CONFIG_TMPFS=y 1021CONFIG_TMPFS=y
1022# CONFIG_TMPFS_POSIX_ACL is not set
1000CONFIG_HUGETLBFS=y 1023CONFIG_HUGETLBFS=y
1001CONFIG_HUGETLB_PAGE=y 1024CONFIG_HUGETLB_PAGE=y
1002CONFIG_RAMFS=y 1025CONFIG_RAMFS=y
@@ -1129,6 +1152,7 @@ CONFIG_PLIST=y
1129# Kernel hacking 1152# Kernel hacking
1130# 1153#
1131# CONFIG_PRINTK_TIME is not set 1154# CONFIG_PRINTK_TIME is not set
1155CONFIG_ENABLE_MUST_CHECK=y
1132CONFIG_MAGIC_SYSRQ=y 1156CONFIG_MAGIC_SYSRQ=y
1133# CONFIG_UNUSED_SYMBOLS is not set 1157# CONFIG_UNUSED_SYMBOLS is not set
1134CONFIG_DEBUG_KERNEL=y 1158CONFIG_DEBUG_KERNEL=y
@@ -1148,6 +1172,7 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
1148# CONFIG_DEBUG_INFO is not set 1172# CONFIG_DEBUG_INFO is not set
1149CONFIG_DEBUG_FS=y 1173CONFIG_DEBUG_FS=y
1150# CONFIG_DEBUG_VM is not set 1174# CONFIG_DEBUG_VM is not set
1175# CONFIG_DEBUG_LIST is not set
1151# CONFIG_FORCED_INLINING is not set 1176# CONFIG_FORCED_INLINING is not set
1152# CONFIG_RCU_TORTURE_TEST is not set 1177# CONFIG_RCU_TORTURE_TEST is not set
1153CONFIG_DEBUG_STACKOVERFLOW=y 1178CONFIG_DEBUG_STACKOVERFLOW=y
@@ -1169,6 +1194,9 @@ CONFIG_BOOTX_TEXT=y
1169# Cryptographic options 1194# Cryptographic options
1170# 1195#
1171CONFIG_CRYPTO=y 1196CONFIG_CRYPTO=y
1197CONFIG_CRYPTO_ALGAPI=y
1198CONFIG_CRYPTO_BLKCIPHER=m
1199CONFIG_CRYPTO_MANAGER=m
1172# CONFIG_CRYPTO_HMAC is not set 1200# CONFIG_CRYPTO_HMAC is not set
1173# CONFIG_CRYPTO_NULL is not set 1201# CONFIG_CRYPTO_NULL is not set
1174# CONFIG_CRYPTO_MD4 is not set 1202# CONFIG_CRYPTO_MD4 is not set
@@ -1178,6 +1206,8 @@ CONFIG_CRYPTO_MD5=y
1178# CONFIG_CRYPTO_SHA512 is not set 1206# CONFIG_CRYPTO_SHA512 is not set
1179# CONFIG_CRYPTO_WP512 is not set 1207# CONFIG_CRYPTO_WP512 is not set
1180# CONFIG_CRYPTO_TGR192 is not set 1208# CONFIG_CRYPTO_TGR192 is not set
1209CONFIG_CRYPTO_ECB=m
1210CONFIG_CRYPTO_CBC=m
1181CONFIG_CRYPTO_DES=y 1211CONFIG_CRYPTO_DES=y
1182# CONFIG_CRYPTO_BLOWFISH is not set 1212# CONFIG_CRYPTO_BLOWFISH is not set
1183# CONFIG_CRYPTO_TWOFISH is not set 1213# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
index 44175fb7adec..9828663652e9 100644
--- a/arch/powerpc/configs/pseries_defconfig
+++ b/arch/powerpc/configs/pseries_defconfig
@@ -506,7 +506,7 @@ CONFIG_SCSI_SAS_ATTRS=m
506# CONFIG_MEGARAID_NEWGEN is not set 506# CONFIG_MEGARAID_NEWGEN is not set
507# CONFIG_MEGARAID_LEGACY is not set 507# CONFIG_MEGARAID_LEGACY is not set
508# CONFIG_MEGARAID_SAS is not set 508# CONFIG_MEGARAID_SAS is not set
509# CONFIG_ATA is not set 509CONFIG_ATA=y
510# CONFIG_SCSI_HPTIOP is not set 510# CONFIG_SCSI_HPTIOP is not set
511# CONFIG_SCSI_BUSLOGIC is not set 511# CONFIG_SCSI_BUSLOGIC is not set
512# CONFIG_SCSI_DMX3191D is not set 512# CONFIG_SCSI_DMX3191D is not set
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
index 124dbcba94a8..39db7a3affe1 100644
--- a/arch/powerpc/kernel/ibmebus.c
+++ b/arch/powerpc/kernel/ibmebus.c
@@ -319,7 +319,7 @@ EXPORT_SYMBOL(ibmebus_unregister_driver);
319 319
320int ibmebus_request_irq(struct ibmebus_dev *dev, 320int ibmebus_request_irq(struct ibmebus_dev *dev,
321 u32 ist, 321 u32 ist,
322 irqreturn_t (*handler)(int, void*, struct pt_regs *), 322 irq_handler_t handler,
323 unsigned long irq_flags, const char * devname, 323 unsigned long irq_flags, const char * devname,
324 void *dev_id) 324 void *dev_id)
325{ 325{
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index ba0694071728..f88a2a675d90 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -75,7 +75,7 @@ static unsigned long iommu_range_alloc(struct iommu_table *tbl,
75 /* This allocator was derived from x86_64's bit string search */ 75 /* This allocator was derived from x86_64's bit string search */
76 76
77 /* Sanity check */ 77 /* Sanity check */
78 if (unlikely(npages) == 0) { 78 if (unlikely(npages == 0)) {
79 if (printk_ratelimit()) 79 if (printk_ratelimit())
80 WARN_ON(1); 80 WARN_ON(1);
81 return DMA_ERROR_CODE; 81 return DMA_ERROR_CODE;
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index c3f58f2f9f52..5e37bf14ef2d 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -187,6 +187,7 @@ void fixup_irqs(cpumask_t map)
187 187
188void do_IRQ(struct pt_regs *regs) 188void do_IRQ(struct pt_regs *regs)
189{ 189{
190 struct pt_regs *old_regs = set_irq_regs(regs);
190 unsigned int irq; 191 unsigned int irq;
191#ifdef CONFIG_IRQSTACKS 192#ifdef CONFIG_IRQSTACKS
192 struct thread_info *curtp, *irqtp; 193 struct thread_info *curtp, *irqtp;
@@ -216,7 +217,7 @@ void do_IRQ(struct pt_regs *regs)
216 * The value -2 is for buggy hardware and means that this IRQ 217 * The value -2 is for buggy hardware and means that this IRQ
217 * has already been handled. -- Tom 218 * has already been handled. -- Tom
218 */ 219 */
219 irq = ppc_md.get_irq(regs); 220 irq = ppc_md.get_irq();
220 221
221 if (irq != NO_IRQ && irq != NO_IRQ_IGNORE) { 222 if (irq != NO_IRQ && irq != NO_IRQ_IGNORE) {
222#ifdef CONFIG_IRQSTACKS 223#ifdef CONFIG_IRQSTACKS
@@ -230,18 +231,19 @@ void do_IRQ(struct pt_regs *regs)
230 handler = &__do_IRQ; 231 handler = &__do_IRQ;
231 irqtp->task = curtp->task; 232 irqtp->task = curtp->task;
232 irqtp->flags = 0; 233 irqtp->flags = 0;
233 call_handle_irq(irq, desc, regs, irqtp, handler); 234 call_handle_irq(irq, desc, irqtp, handler);
234 irqtp->task = NULL; 235 irqtp->task = NULL;
235 if (irqtp->flags) 236 if (irqtp->flags)
236 set_bits(irqtp->flags, &curtp->flags); 237 set_bits(irqtp->flags, &curtp->flags);
237 } else 238 } else
238#endif 239#endif
239 generic_handle_irq(irq, regs); 240 generic_handle_irq(irq);
240 } else if (irq != NO_IRQ_IGNORE) 241 } else if (irq != NO_IRQ_IGNORE)
241 /* That's not SMP safe ... but who cares ? */ 242 /* That's not SMP safe ... but who cares ? */
242 ppc_spurious_interrupts++; 243 ppc_spurious_interrupts++;
243 244
244 irq_exit(); 245 irq_exit();
246 set_irq_regs(old_regs);
245 247
246#ifdef CONFIG_PPC_ISERIES 248#ifdef CONFIG_PPC_ISERIES
247 if (get_lppaca()->int_dword.fields.decr_int) { 249 if (get_lppaca()->int_dword.fields.decr_int) {
@@ -570,8 +572,8 @@ unsigned int irq_create_mapping(struct irq_host *host,
570} 572}
571EXPORT_SYMBOL_GPL(irq_create_mapping); 573EXPORT_SYMBOL_GPL(irq_create_mapping);
572 574
573extern unsigned int irq_create_of_mapping(struct device_node *controller, 575unsigned int irq_create_of_mapping(struct device_node *controller,
574 u32 *intspec, unsigned int intsize) 576 u32 *intspec, unsigned int intsize)
575{ 577{
576 struct irq_host *host; 578 struct irq_host *host;
577 irq_hw_number_t hwirq; 579 irq_hw_number_t hwirq;
diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index 41521b30c3cd..c70e20708a1f 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -52,12 +52,12 @@ _GLOBAL(call_do_softirq)
52 blr 52 blr
53 53
54_GLOBAL(call_handle_irq) 54_GLOBAL(call_handle_irq)
55 ld r8,0(r7) 55 ld r8,0(r6)
56 mflr r0 56 mflr r0
57 std r0,16(r1) 57 std r0,16(r1)
58 mtctr r8 58 mtctr r8
59 stdu r1,THREAD_SIZE-112(r6) 59 stdu r1,THREAD_SIZE-112(r5)
60 mr r1,r6 60 mr r1,r5
61 bctrl 61 bctrl
62 ld r1,0(r1) 62 ld r1,0(r1)
63 ld r0,16(r1) 63 ld r0,16(r1)
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index eb913f80bfb1..865b9648d0d5 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -724,7 +724,7 @@ static int __init early_init_dt_scan_chosen(unsigned long node,
724 strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE)); 724 strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE));
725 725
726#ifdef CONFIG_CMDLINE 726#ifdef CONFIG_CMDLINE
727 if (l == 0 || (l == 1 && (*p) == 0)) 727 if (p == NULL || l == 0 || (l == 1 && (*p) == 0))
728 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE); 728 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
729#endif /* CONFIG_CMDLINE */ 729#endif /* CONFIG_CMDLINE */
730 730
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 6a9bc9ce54e0..35c6309bdb76 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -115,7 +115,7 @@ void __devinit smp_generic_kick_cpu(int nr)
115} 115}
116#endif 116#endif
117 117
118void smp_message_recv(int msg, struct pt_regs *regs) 118void smp_message_recv(int msg)
119{ 119{
120 switch(msg) { 120 switch(msg) {
121 case PPC_MSG_CALL_FUNCTION: 121 case PPC_MSG_CALL_FUNCTION:
@@ -127,11 +127,11 @@ void smp_message_recv(int msg, struct pt_regs *regs)
127 break; 127 break;
128 case PPC_MSG_DEBUGGER_BREAK: 128 case PPC_MSG_DEBUGGER_BREAK:
129 if (crash_ipi_function_ptr) { 129 if (crash_ipi_function_ptr) {
130 crash_ipi_function_ptr(regs); 130 crash_ipi_function_ptr(get_irq_regs());
131 break; 131 break;
132 } 132 }
133#ifdef CONFIG_DEBUGGER 133#ifdef CONFIG_DEBUGGER
134 debugger_ipi(regs); 134 debugger_ipi(get_irq_regs());
135 break; 135 break;
136#endif /* CONFIG_DEBUGGER */ 136#endif /* CONFIG_DEBUGGER */
137 /* FALLTHROUGH */ 137 /* FALLTHROUGH */
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 85b9244a098c..5b59bc18dfe7 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -51,6 +51,7 @@
51#include <linux/rtc.h> 51#include <linux/rtc.h>
52#include <linux/jiffies.h> 52#include <linux/jiffies.h>
53#include <linux/posix-timers.h> 53#include <linux/posix-timers.h>
54#include <linux/irq.h>
54 55
55#include <asm/io.h> 56#include <asm/io.h>
56#include <asm/processor.h> 57#include <asm/processor.h>
@@ -643,6 +644,7 @@ static void iSeries_tb_recal(void)
643 */ 644 */
644void timer_interrupt(struct pt_regs * regs) 645void timer_interrupt(struct pt_regs * regs)
645{ 646{
647 struct pt_regs *old_regs;
646 int next_dec; 648 int next_dec;
647 int cpu = smp_processor_id(); 649 int cpu = smp_processor_id();
648 unsigned long ticks; 650 unsigned long ticks;
@@ -653,9 +655,10 @@ void timer_interrupt(struct pt_regs * regs)
653 do_IRQ(regs); 655 do_IRQ(regs);
654#endif 656#endif
655 657
658 old_regs = set_irq_regs(regs);
656 irq_enter(); 659 irq_enter();
657 660
658 profile_tick(CPU_PROFILING, regs); 661 profile_tick(CPU_PROFILING);
659 calculate_steal_time(); 662 calculate_steal_time();
660 663
661#ifdef CONFIG_PPC_ISERIES 664#ifdef CONFIG_PPC_ISERIES
@@ -703,7 +706,7 @@ void timer_interrupt(struct pt_regs * regs)
703 706
704#ifdef CONFIG_PPC_ISERIES 707#ifdef CONFIG_PPC_ISERIES
705 if (hvlpevent_is_pending()) 708 if (hvlpevent_is_pending())
706 process_hvlpevents(regs); 709 process_hvlpevents();
707#endif 710#endif
708 711
709#ifdef CONFIG_PPC64 712#ifdef CONFIG_PPC64
@@ -715,6 +718,7 @@ void timer_interrupt(struct pt_regs * regs)
715#endif 718#endif
716 719
717 irq_exit(); 720 irq_exit();
721 set_irq_regs(old_regs);
718} 722}
719 723
720void wakeup_decrementer(void) 724void wakeup_decrementer(void)
diff --git a/arch/powerpc/platforms/82xx/mpc82xx.c b/arch/powerpc/platforms/82xx/mpc82xx.c
index 89d702de4863..0f5b30dc60da 100644
--- a/arch/powerpc/platforms/82xx/mpc82xx.c
+++ b/arch/powerpc/platforms/82xx/mpc82xx.c
@@ -11,7 +11,6 @@
11 * option) any later version. 11 * option) any later version.
12 */ 12 */
13 13
14#include <linux/config.h>
15#include <linux/stddef.h> 14#include <linux/stddef.h>
16#include <linux/kernel.h> 15#include <linux/kernel.h>
17#include <linux/init.h> 16#include <linux/init.h>
diff --git a/arch/powerpc/platforms/82xx/mpc82xx_ads.c b/arch/powerpc/platforms/82xx/mpc82xx_ads.c
index 4276f087f26e..bb9acbb98176 100644
--- a/arch/powerpc/platforms/82xx/mpc82xx_ads.c
+++ b/arch/powerpc/platforms/82xx/mpc82xx_ads.c
@@ -12,8 +12,6 @@
12 * option) any later version. 12 * option) any later version.
13 */ 13 */
14 14
15
16#include <linux/config.h>
17#include <linux/stddef.h> 15#include <linux/stddef.h>
18#include <linux/kernel.h> 16#include <linux/kernel.h>
19#include <linux/init.h> 17#include <linux/init.h>
@@ -384,8 +382,7 @@ struct hw_interrupt_type m82xx_pci_ic = {
384}; 382};
385 383
386static void 384static void
387m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc, 385m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc)
388 struct pt_regs *regs)
389{ 386{
390 unsigned long stat, mask, pend; 387 unsigned long stat, mask, pend;
391 int bit; 388 int bit;
@@ -398,7 +395,7 @@ m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc,
398 break; 395 break;
399 for (bit = 0; pend != 0; ++bit, pend <<= 1) { 396 for (bit = 0; pend != 0; ++bit, pend <<= 1) {
400 if (pend & 0x80000000) 397 if (pend & 0x80000000)
401 __do_IRQ(pci_int_base + bit, regs); 398 __do_IRQ(pci_int_base + bit);
402 } 399 }
403 } 400 }
404} 401}
diff --git a/arch/powerpc/platforms/82xx/pq2ads.h b/arch/powerpc/platforms/82xx/pq2ads.h
index a7348213508f..fb2f92bcd770 100644
--- a/arch/powerpc/platforms/82xx/pq2ads.h
+++ b/arch/powerpc/platforms/82xx/pq2ads.h
@@ -22,8 +22,6 @@
22#ifndef __MACH_ADS8260_DEFS 22#ifndef __MACH_ADS8260_DEFS
23#define __MACH_ADS8260_DEFS 23#define __MACH_ADS8260_DEFS
24 24
25#include <linux/config.h>
26
27#include <asm/ppcboot.h> 25#include <asm/ppcboot.h>
28 26
29/* For our show_cpuinfo hooks. */ 27/* For our show_cpuinfo hooks. */
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
index 28070e7ae507..d3e669d69c73 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
@@ -66,13 +66,12 @@ mpc85xx_pcibios_fixup(void)
66 66
67#ifdef CONFIG_CPM2 67#ifdef CONFIG_CPM2
68 68
69static void cpm2_cascade(unsigned int irq, struct irq_desc *desc, 69static void cpm2_cascade(unsigned int irq, struct irq_desc *desc)
70 struct pt_regs *regs)
71{ 70{
72 int cascade_irq; 71 int cascade_irq;
73 72
74 while ((cascade_irq = cpm2_get_irq(regs)) >= 0) { 73 while ((cascade_irq = cpm2_get_irq()) >= 0) {
75 generic_handle_irq(cascade_irq, regs); 74 generic_handle_irq(cascade_irq);
76 } 75 }
77 desc->chip->eoi(irq); 76 desc->chip->eoi(irq);
78} 77}
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index 193a5d7921b5..953cd5dd3f54 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -132,13 +132,12 @@ mpc85xx_cds_pcibios_fixup(void)
132 132
133#ifdef CONFIG_PPC_I8259 133#ifdef CONFIG_PPC_I8259
134#warning The i8259 PIC support is currently broken 134#warning The i8259 PIC support is currently broken
135static void mpc85xx_8259_cascade(unsigned int irq, struct 135static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
136 irq_desc *desc, struct pt_regs *regs)
137{ 136{
138 unsigned int cascade_irq = i8259_irq(regs); 137 unsigned int cascade_irq = i8259_irq();
139 138
140 if (cascade_irq != NO_IRQ) 139 if (cascade_irq != NO_IRQ)
141 generic_handle_irq(cascade_irq, regs); 140 generic_handle_irq(cascade_irq);
142 141
143 desc->chip->eoi(irq); 142 desc->chip->eoi(irq);
144} 143}
@@ -150,8 +149,10 @@ void __init mpc85xx_cds_pic_init(void)
150 struct mpic *mpic; 149 struct mpic *mpic;
151 struct resource r; 150 struct resource r;
152 struct device_node *np = NULL; 151 struct device_node *np = NULL;
152#ifdef CONFIG_PPC_I8259
153 struct device_node *cascade_node = NULL; 153 struct device_node *cascade_node = NULL;
154 int cascade_irq; 154 int cascade_irq;
155#endif
155 156
156 np = of_find_node_by_type(np, "open-pic"); 157 np = of_find_node_by_type(np, "open-pic");
157 158
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
index b637e8157f7b..1a1c226ad4d9 100644
--- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
+++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
@@ -53,12 +53,11 @@ unsigned long pci_dram_offset = 0;
53 53
54 54
55#ifdef CONFIG_PCI 55#ifdef CONFIG_PCI
56static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc, 56static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
57 struct pt_regs *regs)
58{ 57{
59 unsigned int cascade_irq = i8259_irq(regs); 58 unsigned int cascade_irq = i8259_irq();
60 if (cascade_irq != NO_IRQ) 59 if (cascade_irq != NO_IRQ)
61 generic_handle_irq(cascade_irq, regs); 60 generic_handle_irq(cascade_irq);
62 desc->chip->eoi(irq); 61 desc->chip->eoi(irq);
63} 62}
64#endif /* CONFIG_PCI */ 63#endif /* CONFIG_PCI */
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 8533f13a5ed1..a914c12b4060 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -98,8 +98,7 @@ static void iic_ioexc_eoi(unsigned int irq)
98{ 98{
99} 99}
100 100
101static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc, 101static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc)
102 struct pt_regs *regs)
103{ 102{
104 struct cbe_iic_regs __iomem *node_iic = (void __iomem *)desc->handler_data; 103 struct cbe_iic_regs __iomem *node_iic = (void __iomem *)desc->handler_data;
105 unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC; 104 unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC;
@@ -121,7 +120,7 @@ static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc,
121 irq_linear_revmap(iic_host, 120 irq_linear_revmap(iic_host,
122 base | cascade); 121 base | cascade);
123 if (cirq != NO_IRQ) 122 if (cirq != NO_IRQ)
124 generic_handle_irq(cirq, regs); 123 generic_handle_irq(cirq);
125 } 124 }
126 /* post-ack level interrupts */ 125 /* post-ack level interrupts */
127 ack = bits & ~IIC_ISR_EDGE_MASK; 126 ack = bits & ~IIC_ISR_EDGE_MASK;
@@ -140,7 +139,7 @@ static struct irq_chip iic_ioexc_chip = {
140}; 139};
141 140
142/* Get an IRQ number from the pending state register of the IIC */ 141/* Get an IRQ number from the pending state register of the IIC */
143static unsigned int iic_get_irq(struct pt_regs *regs) 142static unsigned int iic_get_irq(void)
144{ 143{
145 struct cbe_iic_pending_bits pending; 144 struct cbe_iic_pending_bits pending;
146 struct iic *iic; 145 struct iic *iic;
@@ -190,11 +189,11 @@ struct irq_host *iic_get_irq_host(int node)
190EXPORT_SYMBOL_GPL(iic_get_irq_host); 189EXPORT_SYMBOL_GPL(iic_get_irq_host);
191 190
192 191
193static irqreturn_t iic_ipi_action(int irq, void *dev_id, struct pt_regs *regs) 192static irqreturn_t iic_ipi_action(int irq, void *dev_id)
194{ 193{
195 int ipi = (int)(long)dev_id; 194 int ipi = (int)(long)dev_id;
196 195
197 smp_message_recv(ipi, regs); 196 smp_message_recv(ipi);
198 197
199 return IRQ_HANDLED; 198 return IRQ_HANDLED;
200} 199}
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index b0e95d594c51..21a9ebd4978e 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -213,8 +213,7 @@ static struct irq_host_ops spider_host_ops = {
213 .xlate = spider_host_xlate, 213 .xlate = spider_host_xlate,
214}; 214};
215 215
216static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc, 216static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc)
217 struct pt_regs *regs)
218{ 217{
219 struct spider_pic *pic = desc->handler_data; 218 struct spider_pic *pic = desc->handler_data;
220 unsigned int cs, virq; 219 unsigned int cs, virq;
@@ -225,7 +224,7 @@ static void spider_irq_cascade(unsigned int irq, struct irq_desc *desc,
225 else 224 else
226 virq = irq_linear_revmap(pic->host, cs); 225 virq = irq_linear_revmap(pic->host, cs);
227 if (virq != NO_IRQ) 226 if (virq != NO_IRQ)
228 generic_handle_irq(virq, regs); 227 generic_handle_irq(virq);
229 desc->chip->eoi(irq); 228 desc->chip->eoi(irq);
230} 229}
231 230
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index ac5f12662dbb..ccfd0c4db874 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -147,7 +147,7 @@ static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr)
147} 147}
148 148
149static irqreturn_t 149static irqreturn_t
150spu_irq_class_0(int irq, void *data, struct pt_regs *regs) 150spu_irq_class_0(int irq, void *data)
151{ 151{
152 struct spu *spu; 152 struct spu *spu;
153 153
@@ -186,7 +186,7 @@ spu_irq_class_0_bottom(struct spu *spu)
186EXPORT_SYMBOL_GPL(spu_irq_class_0_bottom); 186EXPORT_SYMBOL_GPL(spu_irq_class_0_bottom);
187 187
188static irqreturn_t 188static irqreturn_t
189spu_irq_class_1(int irq, void *data, struct pt_regs *regs) 189spu_irq_class_1(int irq, void *data)
190{ 190{
191 struct spu *spu; 191 struct spu *spu;
192 unsigned long stat, mask, dar, dsisr; 192 unsigned long stat, mask, dar, dsisr;
@@ -224,7 +224,7 @@ spu_irq_class_1(int irq, void *data, struct pt_regs *regs)
224EXPORT_SYMBOL_GPL(spu_irq_class_1_bottom); 224EXPORT_SYMBOL_GPL(spu_irq_class_1_bottom);
225 225
226static irqreturn_t 226static irqreturn_t
227spu_irq_class_2(int irq, void *data, struct pt_regs *regs) 227spu_irq_class_2(int irq, void *data)
228{ 228{
229 struct spu *spu; 229 struct spu *spu;
230 unsigned long stat; 230 unsigned long stat;
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 488dbd9b51ae..cae3d13229b9 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -70,7 +70,7 @@ unsigned long event_scan_interval;
70 * has to include <linux/interrupt.h> (to get irqreturn_t), which 70 * has to include <linux/interrupt.h> (to get irqreturn_t), which
71 * causes all sorts of problems. -- paulus 71 * causes all sorts of problems. -- paulus
72 */ 72 */
73extern irqreturn_t xmon_irq(int, void *, struct pt_regs *); 73extern irqreturn_t xmon_irq(int, void *);
74 74
75extern unsigned long loops_per_jiffy; 75extern unsigned long loops_per_jiffy;
76 76
@@ -335,12 +335,11 @@ chrp_event_scan(unsigned long unused)
335 jiffies + event_scan_interval); 335 jiffies + event_scan_interval);
336} 336}
337 337
338static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc, 338static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc)
339 struct pt_regs *regs)
340{ 339{
341 unsigned int cascade_irq = i8259_irq(regs); 340 unsigned int cascade_irq = i8259_irq();
342 if (cascade_irq != NO_IRQ) 341 if (cascade_irq != NO_IRQ)
343 generic_handle_irq(cascade_irq, regs); 342 generic_handle_irq(cascade_irq);
344 desc->chip->eoi(irq); 343 desc->chip->eoi(irq);
345} 344}
346 345
diff --git a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
index cb6f084844f2..bdb475c65cba 100644
--- a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
+++ b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
@@ -61,8 +61,7 @@ pci_dram_offset = MPC7448_HPC2_PCI_MEM_OFFSET;
61extern int tsi108_setup_pci(struct device_node *dev); 61extern int tsi108_setup_pci(struct device_node *dev);
62extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); 62extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
63extern void tsi108_pci_int_init(void); 63extern void tsi108_pci_int_init(void);
64extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc, 64extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
65 struct pt_regs *regs);
66 65
67int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn) 66int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn)
68{ 67{
@@ -200,7 +199,7 @@ static void __init mpc7448_hpc2_init_IRQ(void)
200 tsi_pic = of_find_node_by_type(NULL, "open-pic"); 199 tsi_pic = of_find_node_by_type(NULL, "open-pic");
201 if (tsi_pic) { 200 if (tsi_pic) {
202 unsigned int size; 201 unsigned int size;
203 void *prop = get_property(tsi_pic, "reg", &size); 202 const void *prop = get_property(tsi_pic, "reg", &size);
204 mpic_paddr = of_translate_address(tsi_pic, prop); 203 mpic_paddr = of_translate_address(tsi_pic, prop);
205 } 204 }
206 205
diff --git a/arch/powerpc/platforms/iseries/irq.c b/arch/powerpc/platforms/iseries/irq.c
index e32446877e78..5225abfafd9b 100644
--- a/arch/powerpc/platforms/iseries/irq.c
+++ b/arch/powerpc/platforms/iseries/irq.c
@@ -43,10 +43,7 @@
43#include "irq.h" 43#include "irq.h"
44#include "pci.h" 44#include "pci.h"
45#include "call_pci.h" 45#include "call_pci.h"
46 46#include "smp.h"
47#if defined(CONFIG_SMP)
48extern void iSeries_smp_message_recv(struct pt_regs *);
49#endif
50 47
51#ifdef CONFIG_PCI 48#ifdef CONFIG_PCI
52 49
@@ -88,7 +85,7 @@ static DEFINE_SPINLOCK(pending_irqs_lock);
88static int num_pending_irqs; 85static int num_pending_irqs;
89static int pending_irqs[NR_IRQS]; 86static int pending_irqs[NR_IRQS];
90 87
91static void int_received(struct pci_event *event, struct pt_regs *regs) 88static void int_received(struct pci_event *event)
92{ 89{
93 int irq; 90 int irq;
94 91
@@ -146,11 +143,11 @@ static void int_received(struct pci_event *event, struct pt_regs *regs)
146 } 143 }
147} 144}
148 145
149static void pci_event_handler(struct HvLpEvent *event, struct pt_regs *regs) 146static void pci_event_handler(struct HvLpEvent *event)
150{ 147{
151 if (event && (event->xType == HvLpEvent_Type_PciIo)) { 148 if (event && (event->xType == HvLpEvent_Type_PciIo)) {
152 if (hvlpevent_is_int(event)) 149 if (hvlpevent_is_int(event))
153 int_received((struct pci_event *)event, regs); 150 int_received((struct pci_event *)event);
154 else 151 else
155 printk(KERN_ERR 152 printk(KERN_ERR
156 "pci_event_handler: unexpected ack received\n"); 153 "pci_event_handler: unexpected ack received\n");
@@ -308,18 +305,18 @@ int __init iSeries_allocate_IRQ(HvBusNumber bus,
308/* 305/*
309 * Get the next pending IRQ. 306 * Get the next pending IRQ.
310 */ 307 */
311unsigned int iSeries_get_irq(struct pt_regs *regs) 308unsigned int iSeries_get_irq(void)
312{ 309{
313 int irq = NO_IRQ_IGNORE; 310 int irq = NO_IRQ_IGNORE;
314 311
315#ifdef CONFIG_SMP 312#ifdef CONFIG_SMP
316 if (get_lppaca()->int_dword.fields.ipi_cnt) { 313 if (get_lppaca()->int_dword.fields.ipi_cnt) {
317 get_lppaca()->int_dword.fields.ipi_cnt = 0; 314 get_lppaca()->int_dword.fields.ipi_cnt = 0;
318 iSeries_smp_message_recv(regs); 315 iSeries_smp_message_recv();
319 } 316 }
320#endif /* CONFIG_SMP */ 317#endif /* CONFIG_SMP */
321 if (hvlpevent_is_pending()) 318 if (hvlpevent_is_pending())
322 process_hvlpevents(regs); 319 process_hvlpevents();
323 320
324#ifdef CONFIG_PCI 321#ifdef CONFIG_PCI
325 if (num_pending_irqs) { 322 if (num_pending_irqs) {
diff --git a/arch/powerpc/platforms/iseries/irq.h b/arch/powerpc/platforms/iseries/irq.h
index 1ee8985140e5..69f1b437fc7b 100644
--- a/arch/powerpc/platforms/iseries/irq.h
+++ b/arch/powerpc/platforms/iseries/irq.h
@@ -4,6 +4,6 @@
4extern void iSeries_init_IRQ(void); 4extern void iSeries_init_IRQ(void);
5extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, u32); 5extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, u32);
6extern void iSeries_activate_IRQs(void); 6extern void iSeries_activate_IRQs(void);
7extern unsigned int iSeries_get_irq(struct pt_regs *); 7extern unsigned int iSeries_get_irq(void);
8 8
9#endif /* _ISERIES_IRQ_H */ 9#endif /* _ISERIES_IRQ_H */
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c
index 98c1c2440aad..e3e929e1b460 100644
--- a/arch/powerpc/platforms/iseries/lpevents.c
+++ b/arch/powerpc/platforms/iseries/lpevents.c
@@ -116,7 +116,7 @@ static void hvlpevent_clear_valid(struct HvLpEvent * event)
116 hvlpevent_invalidate(event); 116 hvlpevent_invalidate(event);
117} 117}
118 118
119void process_hvlpevents(struct pt_regs *regs) 119void process_hvlpevents(void)
120{ 120{
121 struct HvLpEvent * event; 121 struct HvLpEvent * event;
122 122
@@ -144,7 +144,7 @@ void process_hvlpevents(struct pt_regs *regs)
144 __get_cpu_var(hvlpevent_counts)[event->xType]++; 144 __get_cpu_var(hvlpevent_counts)[event->xType]++;
145 if (event->xType < HvLpEvent_Type_NumTypes && 145 if (event->xType < HvLpEvent_Type_NumTypes &&
146 lpEventHandler[event->xType]) 146 lpEventHandler[event->xType])
147 lpEventHandler[event->xType](event, regs); 147 lpEventHandler[event->xType](event);
148 else 148 else
149 printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType ); 149 printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType );
150 150
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c
index 1983b640bac1..b5737d68d6c4 100644
--- a/arch/powerpc/platforms/iseries/mf.c
+++ b/arch/powerpc/platforms/iseries/mf.c
@@ -513,7 +513,7 @@ static void handle_ack(struct io_mf_lp_event *event)
513 * parse it enough to know if it is an interrupt or an 513 * parse it enough to know if it is an interrupt or an
514 * acknowledge. 514 * acknowledge.
515 */ 515 */
516static void hv_handler(struct HvLpEvent *event, struct pt_regs *regs) 516static void hv_handler(struct HvLpEvent *event)
517{ 517{
518 if ((event != NULL) && (event->xType == HvLpEvent_Type_MachineFac)) { 518 if ((event != NULL) && (event->xType == HvLpEvent_Type_MachineFac)) {
519 if (hvlpevent_is_ack(event)) 519 if (hvlpevent_is_ack(event))
@@ -847,7 +847,7 @@ static int mf_get_boot_rtc(struct rtc_time *tm)
847 /* We need to poll here as we are not yet taking interrupts */ 847 /* We need to poll here as we are not yet taking interrupts */
848 while (rtc_data.busy) { 848 while (rtc_data.busy) {
849 if (hvlpevent_is_pending()) 849 if (hvlpevent_is_pending())
850 process_hvlpevents(NULL); 850 process_hvlpevents();
851 } 851 }
852 return rtc_set_tm(rtc_data.rc, rtc_data.ce_msg.ce_msg, tm); 852 return rtc_set_tm(rtc_data.rc, rtc_data.ce_msg.ce_msg, tm);
853} 853}
diff --git a/arch/powerpc/platforms/iseries/smp.c b/arch/powerpc/platforms/iseries/smp.c
index 2eb095edb472..aee5908df700 100644
--- a/arch/powerpc/platforms/iseries/smp.c
+++ b/arch/powerpc/platforms/iseries/smp.c
@@ -43,9 +43,11 @@
43#include <asm/cputable.h> 43#include <asm/cputable.h>
44#include <asm/system.h> 44#include <asm/system.h>
45 45
46#include "smp.h"
47
46static unsigned long iSeries_smp_message[NR_CPUS]; 48static unsigned long iSeries_smp_message[NR_CPUS];
47 49
48void iSeries_smp_message_recv(struct pt_regs *regs) 50void iSeries_smp_message_recv(void)
49{ 51{
50 int cpu = smp_processor_id(); 52 int cpu = smp_processor_id();
51 int msg; 53 int msg;
@@ -55,7 +57,7 @@ void iSeries_smp_message_recv(struct pt_regs *regs)
55 57
56 for (msg = 0; msg < 4; msg++) 58 for (msg = 0; msg < 4; msg++)
57 if (test_and_clear_bit(msg, &iSeries_smp_message[cpu])) 59 if (test_and_clear_bit(msg, &iSeries_smp_message[cpu]))
58 smp_message_recv(msg, regs); 60 smp_message_recv(msg);
59} 61}
60 62
61static inline void smp_iSeries_do_message(int cpu, int msg) 63static inline void smp_iSeries_do_message(int cpu, int msg)
diff --git a/arch/powerpc/platforms/iseries/smp.h b/arch/powerpc/platforms/iseries/smp.h
new file mode 100644
index 000000000000..d501f7de01e7
--- /dev/null
+++ b/arch/powerpc/platforms/iseries/smp.h
@@ -0,0 +1,6 @@
1#ifndef _PLATFORMS_ISERIES_SMP_H
2#define _PLATFORMS_ISERIES_SMP_H
3
4extern void iSeries_smp_message_recv(void);
5
6#endif /* _PLATFORMS_ISERIES_SMP_H */
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c
index 9baa4ee82592..04e07e5da0c1 100644
--- a/arch/powerpc/platforms/iseries/viopath.c
+++ b/arch/powerpc/platforms/iseries/viopath.c
@@ -378,7 +378,7 @@ void vio_set_hostlp(void)
378} 378}
379EXPORT_SYMBOL(vio_set_hostlp); 379EXPORT_SYMBOL(vio_set_hostlp);
380 380
381static void vio_handleEvent(struct HvLpEvent *event, struct pt_regs *regs) 381static void vio_handleEvent(struct HvLpEvent *event)
382{ 382{
383 HvLpIndex remoteLp; 383 HvLpIndex remoteLp;
384 int subtype = (event->xSubtype & VIOMAJOR_SUBTYPE_MASK) 384 int subtype = (event->xSubtype & VIOMAJOR_SUBTYPE_MASK)
diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c
index 1b827618e05f..63b4d1bff359 100644
--- a/arch/powerpc/platforms/maple/pci.c
+++ b/arch/powerpc/platforms/maple/pci.c
@@ -8,7 +8,7 @@
8 * 2 of the License, or (at your option) any later version. 8 * 2 of the License, or (at your option) any later version.
9 */ 9 */
10 10
11#define DEBUG 11#undef DEBUG
12 12
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
@@ -16,6 +16,7 @@
16#include <linux/string.h> 16#include <linux/string.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/bootmem.h> 18#include <linux/bootmem.h>
19#include <linux/irq.h>
19 20
20#include <asm/sections.h> 21#include <asm/sections.h>
21#include <asm/io.h> 22#include <asm/io.h>
@@ -33,7 +34,7 @@
33#define DBG(x...) 34#define DBG(x...)
34#endif 35#endif
35 36
36static struct pci_controller *u3_agp, *u3_ht; 37static struct pci_controller *u3_agp, *u3_ht, *u4_pcie;
37 38
38static int __init fixup_one_level_bus_range(struct device_node *node, int higher) 39static int __init fixup_one_level_bus_range(struct device_node *node, int higher)
39{ 40{
@@ -287,6 +288,114 @@ static struct pci_ops u3_ht_pci_ops =
287 u3_ht_write_config 288 u3_ht_write_config
288}; 289};
289 290
291static unsigned int u4_pcie_cfa0(unsigned int devfn, unsigned int off)
292{
293 return (1 << PCI_SLOT(devfn)) |
294 (PCI_FUNC(devfn) << 8) |
295 ((off >> 8) << 28) |
296 (off & 0xfcu);
297}
298
299static unsigned int u4_pcie_cfa1(unsigned int bus, unsigned int devfn,
300 unsigned int off)
301{
302 return (bus << 16) |
303 (devfn << 8) |
304 ((off >> 8) << 28) |
305 (off & 0xfcu) | 1u;
306}
307
308static volatile void __iomem *u4_pcie_cfg_access(struct pci_controller* hose,
309 u8 bus, u8 dev_fn, int offset)
310{
311 unsigned int caddr;
312
313 if (bus == hose->first_busno)
314 caddr = u4_pcie_cfa0(dev_fn, offset);
315 else
316 caddr = u4_pcie_cfa1(bus, dev_fn, offset);
317
318 /* Uninorth will return garbage if we don't read back the value ! */
319 do {
320 out_le32(hose->cfg_addr, caddr);
321 } while (in_le32(hose->cfg_addr) != caddr);
322
323 offset &= 0x03;
324 return hose->cfg_data + offset;
325}
326
327static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn,
328 int offset, int len, u32 *val)
329{
330 struct pci_controller *hose;
331 volatile void __iomem *addr;
332
333 hose = pci_bus_to_host(bus);
334 if (hose == NULL)
335 return PCIBIOS_DEVICE_NOT_FOUND;
336 if (offset >= 0x1000)
337 return PCIBIOS_BAD_REGISTER_NUMBER;
338 addr = u4_pcie_cfg_access(hose, bus->number, devfn, offset);
339 if (!addr)
340 return PCIBIOS_DEVICE_NOT_FOUND;
341 /*
342 * Note: the caller has already checked that offset is
343 * suitably aligned and that len is 1, 2 or 4.
344 */
345 switch (len) {
346 case 1:
347 *val = in_8(addr);
348 break;
349 case 2:
350 *val = in_le16(addr);
351 break;
352 default:
353 *val = in_le32(addr);
354 break;
355 }
356 return PCIBIOS_SUCCESSFUL;
357}
358static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
359 int offset, int len, u32 val)
360{
361 struct pci_controller *hose;
362 volatile void __iomem *addr;
363
364 hose = pci_bus_to_host(bus);
365 if (hose == NULL)
366 return PCIBIOS_DEVICE_NOT_FOUND;
367 if (offset >= 0x1000)
368 return PCIBIOS_BAD_REGISTER_NUMBER;
369 addr = u4_pcie_cfg_access(hose, bus->number, devfn, offset);
370 if (!addr)
371 return PCIBIOS_DEVICE_NOT_FOUND;
372 /*
373 * Note: the caller has already checked that offset is
374 * suitably aligned and that len is 1, 2 or 4.
375 */
376 switch (len) {
377 case 1:
378 out_8(addr, val);
379 (void) in_8(addr);
380 break;
381 case 2:
382 out_le16(addr, val);
383 (void) in_le16(addr);
384 break;
385 default:
386 out_le32(addr, val);
387 (void) in_le32(addr);
388 break;
389 }
390 return PCIBIOS_SUCCESSFUL;
391}
392
393static struct pci_ops u4_pcie_pci_ops =
394{
395 u4_pcie_read_config,
396 u4_pcie_write_config
397};
398
290static void __init setup_u3_agp(struct pci_controller* hose) 399static void __init setup_u3_agp(struct pci_controller* hose)
291{ 400{
292 /* On G5, we move AGP up to high bus number so we don't need 401 /* On G5, we move AGP up to high bus number so we don't need
@@ -307,6 +416,26 @@ static void __init setup_u3_agp(struct pci_controller* hose)
307 u3_agp = hose; 416 u3_agp = hose;
308} 417}
309 418
419static void __init setup_u4_pcie(struct pci_controller* hose)
420{
421 /* We currently only implement the "non-atomic" config space, to
422 * be optimised later.
423 */
424 hose->ops = &u4_pcie_pci_ops;
425 hose->cfg_addr = ioremap(0xf0000000 + 0x800000, 0x1000);
426 hose->cfg_data = ioremap(0xf0000000 + 0xc00000, 0x1000);
427
428 /* The bus contains a bridge from root -> device, we need to
429 * make it visible on bus 0 so that we pick the right type
430 * of config cycles. If we didn't, we would have to force all
431 * config cycles to be type 1. So we override the "bus-range"
432 * property here
433 */
434 hose->first_busno = 0x00;
435 hose->last_busno = 0xff;
436 u4_pcie = hose;
437}
438
310static void __init setup_u3_ht(struct pci_controller* hose) 439static void __init setup_u3_ht(struct pci_controller* hose)
311{ 440{
312 hose->ops = &u3_ht_pci_ops; 441 hose->ops = &u3_ht_pci_ops;
@@ -354,6 +483,10 @@ static int __init add_bridge(struct device_node *dev)
354 setup_u3_ht(hose); 483 setup_u3_ht(hose);
355 disp_name = "U3-HT"; 484 disp_name = "U3-HT";
356 primary = 1; 485 primary = 1;
486 } else if (device_is_compatible(dev, "u4-pcie")) {
487 setup_u4_pcie(hose);
488 disp_name = "U4-PCIE";
489 primary = 0;
357 } 490 }
358 printk(KERN_INFO "Found %s PCI host bridge. Firmware bus number: %d->%d\n", 491 printk(KERN_INFO "Found %s PCI host bridge. Firmware bus number: %d->%d\n",
359 disp_name, hose->first_busno, hose->last_busno); 492 disp_name, hose->first_busno, hose->last_busno);
@@ -361,7 +494,6 @@ static int __init add_bridge(struct device_node *dev)
361 /* Interpret the "ranges" property */ 494 /* Interpret the "ranges" property */
362 /* This also maps the I/O region and sets isa_io/mem_base */ 495 /* This also maps the I/O region and sets isa_io/mem_base */
363 pci_process_bridge_OF_ranges(hose, dev, primary); 496 pci_process_bridge_OF_ranges(hose, dev, primary);
364 pci_setup_phb_io(hose, primary);
365 497
366 /* Fixup "bus-range" OF property */ 498 /* Fixup "bus-range" OF property */
367 fixup_bus_range(dev); 499 fixup_bus_range(dev);
@@ -376,8 +508,30 @@ void __init maple_pcibios_fixup(void)
376 508
377 DBG(" -> maple_pcibios_fixup\n"); 509 DBG(" -> maple_pcibios_fixup\n");
378 510
379 for_each_pci_dev(dev) 511 for_each_pci_dev(dev) {
512 /* Fixup IRQ for PCIe host */
513 if (u4_pcie != NULL && dev->bus->number == 0 &&
514 pci_bus_to_host(dev->bus) == u4_pcie) {
515 printk(KERN_DEBUG "Fixup U4 PCIe IRQ\n");
516 dev->irq = irq_create_mapping(NULL, 1);
517 if (dev->irq != NO_IRQ)
518 set_irq_type(dev->irq, IRQ_TYPE_LEVEL_LOW);
519 continue;
520 }
521
522 /* Hide AMD8111 IDE interrupt when in legacy mode so
523 * the driver calls pci_get_legacy_ide_irq()
524 */
525 if (dev->vendor == PCI_VENDOR_ID_AMD &&
526 dev->device == PCI_DEVICE_ID_AMD_8111_IDE &&
527 (dev->class & 5) != 5) {
528 dev->irq = NO_IRQ;
529 continue;
530 }
531
532 /* For all others, map the interrupt from the device-tree */
380 pci_read_irq_line(dev); 533 pci_read_irq_line(dev);
534 }
381 535
382 DBG(" <- maple_pcibios_fixup\n"); 536 DBG(" <- maple_pcibios_fixup\n");
383} 537}
@@ -388,8 +542,10 @@ static void __init maple_fixup_phb_resources(void)
388 542
389 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { 543 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
390 unsigned long offset = (unsigned long)hose->io_base_virt - pci_io_base; 544 unsigned long offset = (unsigned long)hose->io_base_virt - pci_io_base;
545
391 hose->io_resource.start += offset; 546 hose->io_resource.start += offset;
392 hose->io_resource.end += offset; 547 hose->io_resource.end += offset;
548
393 printk(KERN_INFO "PCI Host %d, io start: %llx; io end: %llx\n", 549 printk(KERN_INFO "PCI Host %d, io start: %llx; io end: %llx\n",
394 hose->global_number, 550 hose->global_number,
395 (unsigned long long)hose->io_resource.start, 551 (unsigned long long)hose->io_resource.start,
@@ -431,6 +587,19 @@ void __init maple_pci_init(void)
431 if (ht && add_bridge(ht) != 0) 587 if (ht && add_bridge(ht) != 0)
432 of_node_put(ht); 588 of_node_put(ht);
433 589
590 /*
591 * We need to call pci_setup_phb_io for the HT bridge first
592 * so it gets the I/O port numbers starting at 0, and we
593 * need to call it for the AGP bridge after that so it gets
594 * small positive I/O port numbers.
595 */
596 if (u3_ht)
597 pci_setup_phb_io(u3_ht, 1);
598 if (u3_agp)
599 pci_setup_phb_io(u3_agp, 0);
600 if (u4_pcie)
601 pci_setup_phb_io(u4_pcie, 0);
602
434 /* Fixup the IO resources on our host bridges as the common code 603 /* Fixup the IO resources on our host bridges as the common code
435 * does it only for childs of the host bridges 604 * does it only for childs of the host bridges
436 */ 605 */
@@ -465,8 +634,11 @@ int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel)
465 return defirq; 634 return defirq;
466 635
467 np = pci_device_to_OF_node(pdev); 636 np = pci_device_to_OF_node(pdev);
468 if (np == NULL) 637 if (np == NULL) {
638 printk("Failed to locate OF node for IDE %s\n",
639 pci_name(pdev));
469 return defirq; 640 return defirq;
641 }
470 irq = irq_of_parse_and_map(np, channel & 0x1); 642 irq = irq_of_parse_and_map(np, channel & 0x1);
471 if (irq == NO_IRQ) { 643 if (irq == NO_IRQ) {
472 printk("Failed to map onboard IDE interrupt for channel %d\n", 644 printk("Failed to map onboard IDE interrupt for channel %d\n",
@@ -479,6 +651,9 @@ int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel)
479/* XXX: To remove once all firmwares are ok */ 651/* XXX: To remove once all firmwares are ok */
480static void fixup_maple_ide(struct pci_dev* dev) 652static void fixup_maple_ide(struct pci_dev* dev)
481{ 653{
654 if (!machine_is(maple))
655 return;
656
482#if 0 /* Enable this to enable IDE port 0 */ 657#if 0 /* Enable this to enable IDE port 0 */
483 { 658 {
484 u8 v; 659 u8 v;
@@ -495,7 +670,7 @@ static void fixup_maple_ide(struct pci_dev* dev)
495 dev->resource[4].start = 0xcc00; 670 dev->resource[4].start = 0xcc00;
496 dev->resource[4].end = 0xcc10; 671 dev->resource[4].end = 0xcc10;
497#endif 672#endif
498#if 1 /* Enable this to fixup IDE sense/polarity of irqs in IO-APICs */ 673#if 0 /* Enable this to fixup IDE sense/polarity of irqs in IO-APICs */
499 { 674 {
500 struct pci_dev *apicdev; 675 struct pci_dev *apicdev;
501 u32 v; 676 u32 v;
diff --git a/arch/powerpc/platforms/pasemi/pci.c b/arch/powerpc/platforms/pasemi/pci.c
index 4679c5230413..39020c1fa13d 100644
--- a/arch/powerpc/platforms/pasemi/pci.c
+++ b/arch/powerpc/platforms/pasemi/pci.c
@@ -35,17 +35,17 @@
35 35
36#define CONFIG_OFFSET_VALID(off) ((off) < 4096) 36#define CONFIG_OFFSET_VALID(off) ((off) < 4096)
37 37
38static unsigned long pa_pxp_cfg_addr(struct pci_controller *hose, 38static void volatile __iomem *pa_pxp_cfg_addr(struct pci_controller *hose,
39 u8 bus, u8 devfn, int offset) 39 u8 bus, u8 devfn, int offset)
40{ 40{
41 return ((unsigned long)hose->cfg_data) + PA_PXP_CFA(bus, devfn, offset); 41 return hose->cfg_data + PA_PXP_CFA(bus, devfn, offset);
42} 42}
43 43
44static int pa_pxp_read_config(struct pci_bus *bus, unsigned int devfn, 44static int pa_pxp_read_config(struct pci_bus *bus, unsigned int devfn,
45 int offset, int len, u32 *val) 45 int offset, int len, u32 *val)
46{ 46{
47 struct pci_controller *hose; 47 struct pci_controller *hose;
48 unsigned long addr; 48 void volatile __iomem *addr;
49 49
50 hose = pci_bus_to_host(bus); 50 hose = pci_bus_to_host(bus);
51 if (!hose) 51 if (!hose)
@@ -62,13 +62,13 @@ static int pa_pxp_read_config(struct pci_bus *bus, unsigned int devfn,
62 */ 62 */
63 switch (len) { 63 switch (len) {
64 case 1: 64 case 1:
65 *val = in_8((u8 *)addr); 65 *val = in_8(addr);
66 break; 66 break;
67 case 2: 67 case 2:
68 *val = in_le16((u16 *)addr); 68 *val = in_le16(addr);
69 break; 69 break;
70 default: 70 default:
71 *val = in_le32((u32 *)addr); 71 *val = in_le32(addr);
72 break; 72 break;
73 } 73 }
74 74
@@ -79,7 +79,7 @@ static int pa_pxp_write_config(struct pci_bus *bus, unsigned int devfn,
79 int offset, int len, u32 val) 79 int offset, int len, u32 val)
80{ 80{
81 struct pci_controller *hose; 81 struct pci_controller *hose;
82 unsigned long addr; 82 void volatile __iomem *addr;
83 83
84 hose = pci_bus_to_host(bus); 84 hose = pci_bus_to_host(bus);
85 if (!hose) 85 if (!hose)
@@ -96,16 +96,16 @@ static int pa_pxp_write_config(struct pci_bus *bus, unsigned int devfn,
96 */ 96 */
97 switch (len) { 97 switch (len) {
98 case 1: 98 case 1:
99 out_8((u8 *)addr, val); 99 out_8(addr, val);
100 (void) in_8((u8 *)addr); 100 (void) in_8(addr);
101 break; 101 break;
102 case 2: 102 case 2:
103 out_le16((u16 *)addr, val); 103 out_le16(addr, val);
104 (void) in_le16((u16 *)addr); 104 (void) in_le16(addr);
105 break; 105 break;
106 default: 106 default:
107 out_le32((u32 *)addr, val); 107 out_le32(addr, val);
108 (void) in_le32((u32 *)addr); 108 (void) in_le32(addr);
109 break; 109 break;
110 } 110 }
111 return PCIBIOS_SUCCESSFUL; 111 return PCIBIOS_SUCCESSFUL;
diff --git a/arch/powerpc/platforms/powermac/low_i2c.c b/arch/powerpc/platforms/powermac/low_i2c.c
index c2c7cf75dd5f..bfc4829162f1 100644
--- a/arch/powerpc/platforms/powermac/low_i2c.c
+++ b/arch/powerpc/platforms/powermac/low_i2c.c
@@ -342,7 +342,7 @@ static void kw_i2c_handle_interrupt(struct pmac_i2c_host_kw *host, u8 isr)
342} 342}
343 343
344/* Interrupt handler */ 344/* Interrupt handler */
345static irqreturn_t kw_i2c_irq(int irq, void *dev_id, struct pt_regs *regs) 345static irqreturn_t kw_i2c_irq(int irq, void *dev_id)
346{ 346{
347 struct pmac_i2c_host_kw *host = dev_id; 347 struct pmac_i2c_host_kw *host = dev_id;
348 unsigned long flags; 348 unsigned long flags;
diff --git a/arch/powerpc/platforms/powermac/pfunc_base.c b/arch/powerpc/platforms/powermac/pfunc_base.c
index ee3b223ab17a..5c6c15c5f9a3 100644
--- a/arch/powerpc/platforms/powermac/pfunc_base.c
+++ b/arch/powerpc/platforms/powermac/pfunc_base.c
@@ -15,7 +15,7 @@
15#define DBG(fmt...) 15#define DBG(fmt...)
16#endif 16#endif
17 17
18static irqreturn_t macio_gpio_irq(int irq, void *data, struct pt_regs *regs) 18static irqreturn_t macio_gpio_irq(int irq, void *data)
19{ 19{
20 pmf_do_irq(data); 20 pmf_do_irq(data);
21 21
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index 39f7ddb554ea..39db12890214 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -42,7 +42,7 @@
42 * has to include <linux/interrupt.h> (to get irqreturn_t), which 42 * has to include <linux/interrupt.h> (to get irqreturn_t), which
43 * causes all sorts of problems. -- paulus 43 * causes all sorts of problems. -- paulus
44 */ 44 */
45extern irqreturn_t xmon_irq(int, void *, struct pt_regs *); 45extern irqreturn_t xmon_irq(int, void *);
46 46
47#ifdef CONFIG_PPC32 47#ifdef CONFIG_PPC32
48struct pmac_irq_hw { 48struct pmac_irq_hw {
@@ -210,7 +210,7 @@ static struct irq_chip pmac_pic = {
210 .retrigger = pmac_retrigger, 210 .retrigger = pmac_retrigger,
211}; 211};
212 212
213static irqreturn_t gatwick_action(int cpl, void *dev_id, struct pt_regs *regs) 213static irqreturn_t gatwick_action(int cpl, void *dev_id)
214{ 214{
215 unsigned long flags; 215 unsigned long flags;
216 int irq, bits; 216 int irq, bits;
@@ -227,7 +227,7 @@ static irqreturn_t gatwick_action(int cpl, void *dev_id, struct pt_regs *regs)
227 continue; 227 continue;
228 irq += __ilog2(bits); 228 irq += __ilog2(bits);
229 spin_unlock_irqrestore(&pmac_pic_lock, flags); 229 spin_unlock_irqrestore(&pmac_pic_lock, flags);
230 __do_IRQ(irq, regs); 230 __do_IRQ(irq);
231 spin_lock_irqsave(&pmac_pic_lock, flags); 231 spin_lock_irqsave(&pmac_pic_lock, flags);
232 rc = IRQ_HANDLED; 232 rc = IRQ_HANDLED;
233 } 233 }
@@ -235,18 +235,18 @@ static irqreturn_t gatwick_action(int cpl, void *dev_id, struct pt_regs *regs)
235 return rc; 235 return rc;
236} 236}
237 237
238static unsigned int pmac_pic_get_irq(struct pt_regs *regs) 238static unsigned int pmac_pic_get_irq(void)
239{ 239{
240 int irq; 240 int irq;
241 unsigned long bits = 0; 241 unsigned long bits = 0;
242 unsigned long flags; 242 unsigned long flags;
243 243
244#ifdef CONFIG_SMP 244#ifdef CONFIG_SMP
245 void psurge_smp_message_recv(struct pt_regs *); 245 void psurge_smp_message_recv(void);
246 246
247 /* IPI's are a hack on the powersurge -- Cort */ 247 /* IPI's are a hack on the powersurge -- Cort */
248 if ( smp_processor_id() != 0 ) { 248 if ( smp_processor_id() != 0 ) {
249 psurge_smp_message_recv(regs); 249 psurge_smp_message_recv();
250 return NO_IRQ_IGNORE; /* ignore, already handled */ 250 return NO_IRQ_IGNORE; /* ignore, already handled */
251 } 251 }
252#endif /* CONFIG_SMP */ 252#endif /* CONFIG_SMP */
@@ -440,14 +440,13 @@ static void __init pmac_pic_probe_oldstyle(void)
440} 440}
441#endif /* CONFIG_PPC32 */ 441#endif /* CONFIG_PPC32 */
442 442
443static void pmac_u3_cascade(unsigned int irq, struct irq_desc *desc, 443static void pmac_u3_cascade(unsigned int irq, struct irq_desc *desc)
444 struct pt_regs *regs)
445{ 444{
446 struct mpic *mpic = desc->handler_data; 445 struct mpic *mpic = desc->handler_data;
447 446
448 unsigned int cascade_irq = mpic_get_one_irq(mpic, regs); 447 unsigned int cascade_irq = mpic_get_one_irq(mpic);
449 if (cascade_irq != NO_IRQ) 448 if (cascade_irq != NO_IRQ)
450 generic_handle_irq(cascade_irq, regs); 449 generic_handle_irq(cascade_irq);
451 desc->chip->eoi(irq); 450 desc->chip->eoi(irq);
452} 451}
453 452
diff --git a/arch/powerpc/platforms/powermac/pic.h b/arch/powerpc/platforms/powermac/pic.h
index 664103dfeef9..c44c89f5e532 100644
--- a/arch/powerpc/platforms/powermac/pic.h
+++ b/arch/powerpc/platforms/powermac/pic.h
@@ -5,7 +5,7 @@
5 5
6extern struct hw_interrupt_type pmac_pic; 6extern struct hw_interrupt_type pmac_pic;
7 7
8void pmac_pic_init(void); 8extern void pmac_pic_init(void);
9int pmac_get_irq(struct pt_regs *regs); 9extern int pmac_get_irq(void);
10 10
11#endif /* __PPC_PLATFORMS_PMAC_PIC_H */ 11#endif /* __PPC_PLATFORMS_PMAC_PIC_H */
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 1949b657b092..eeb2ae5ffc58 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -160,7 +160,7 @@ static inline void psurge_clr_ipi(int cpu)
160 */ 160 */
161static unsigned long psurge_smp_message[NR_CPUS]; 161static unsigned long psurge_smp_message[NR_CPUS];
162 162
163void psurge_smp_message_recv(struct pt_regs *regs) 163void psurge_smp_message_recv(void)
164{ 164{
165 int cpu = smp_processor_id(); 165 int cpu = smp_processor_id();
166 int msg; 166 int msg;
@@ -174,12 +174,12 @@ void psurge_smp_message_recv(struct pt_regs *regs)
174 /* make sure there is a message there */ 174 /* make sure there is a message there */
175 for (msg = 0; msg < 4; msg++) 175 for (msg = 0; msg < 4; msg++)
176 if (test_and_clear_bit(msg, &psurge_smp_message[cpu])) 176 if (test_and_clear_bit(msg, &psurge_smp_message[cpu]))
177 smp_message_recv(msg, regs); 177 smp_message_recv(msg);
178} 178}
179 179
180irqreturn_t psurge_primary_intr(int irq, void *d, struct pt_regs *regs) 180irqreturn_t psurge_primary_intr(int irq, void *d)
181{ 181{
182 psurge_smp_message_recv(regs); 182 psurge_smp_message_recv();
183 return IRQ_HANDLED; 183 return IRQ_HANDLED;
184} 184}
185 185
@@ -328,6 +328,7 @@ static void __init smp_psurge_kick_cpu(int nr)
328{ 328{
329 unsigned long start = __pa(__secondary_start_pmac_0) + nr * 8; 329 unsigned long start = __pa(__secondary_start_pmac_0) + nr * 8;
330 unsigned long a; 330 unsigned long a;
331 int i;
331 332
332 /* may need to flush here if secondary bats aren't setup */ 333 /* may need to flush here if secondary bats aren't setup */
333 for (a = KERNELBASE; a < KERNELBASE + 0x800000; a += 32) 334 for (a = KERNELBASE; a < KERNELBASE + 0x800000; a += 32)
@@ -340,7 +341,11 @@ static void __init smp_psurge_kick_cpu(int nr)
340 mb(); 341 mb();
341 342
342 psurge_set_ipi(nr); 343 psurge_set_ipi(nr);
343 udelay(10); 344 /*
345 * We can't use udelay here because the timebase is now frozen.
346 */
347 for (i = 0; i < 2000; ++i)
348 barrier();
344 psurge_clr_ipi(nr); 349 psurge_clr_ipi(nr);
345 350
346 if (ppc_md.progress) ppc_md.progress("smp_psurge_kick_cpu - done", 0x354); 351 if (ppc_md.progress) ppc_md.progress("smp_psurge_kick_cpu - done", 0x354);
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index bbf2e34dc358..d24ba547e53f 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -267,7 +267,8 @@ static void iommu_table_setparms(struct pci_controller *phb,
267 struct iommu_table *tbl) 267 struct iommu_table *tbl)
268{ 268{
269 struct device_node *node; 269 struct device_node *node;
270 const unsigned long *basep, *sizep; 270 const unsigned long *basep;
271 const u32 *sizep;
271 272
272 node = (struct device_node *)phb->arch_data; 273 node = (struct device_node *)phb->arch_data;
273 274
diff --git a/arch/powerpc/platforms/pseries/ras.c b/arch/powerpc/platforms/pseries/ras.c
index 311ed1993fc0..b1d3d161249e 100644
--- a/arch/powerpc/platforms/pseries/ras.c
+++ b/arch/powerpc/platforms/pseries/ras.c
@@ -65,16 +65,14 @@ static int ras_check_exception_token;
65#define EPOW_SENSOR_INDEX 0 65#define EPOW_SENSOR_INDEX 0
66#define RAS_VECTOR_OFFSET 0x500 66#define RAS_VECTOR_OFFSET 0x500
67 67
68static irqreturn_t ras_epow_interrupt(int irq, void *dev_id, 68static irqreturn_t ras_epow_interrupt(int irq, void *dev_id);
69 struct pt_regs * regs); 69static irqreturn_t ras_error_interrupt(int irq, void *dev_id);
70static irqreturn_t ras_error_interrupt(int irq, void *dev_id,
71 struct pt_regs * regs);
72 70
73/* #define DEBUG */ 71/* #define DEBUG */
74 72
75 73
76static void request_ras_irqs(struct device_node *np, 74static void request_ras_irqs(struct device_node *np,
77 irqreturn_t (*handler)(int, void *, struct pt_regs *), 75 irq_handler_t handler,
78 const char *name) 76 const char *name)
79{ 77{
80 int i, index, count = 0; 78 int i, index, count = 0;
@@ -166,8 +164,7 @@ __initcall(init_ras_IRQ);
166 * to examine the type of power failure and take appropriate action where 164 * to examine the type of power failure and take appropriate action where
167 * the time horizon permits something useful to be done. 165 * the time horizon permits something useful to be done.
168 */ 166 */
169static irqreturn_t 167static irqreturn_t ras_epow_interrupt(int irq, void *dev_id)
170ras_epow_interrupt(int irq, void *dev_id, struct pt_regs * regs)
171{ 168{
172 int status = 0xdeadbeef; 169 int status = 0xdeadbeef;
173 int state = 0; 170 int state = 0;
@@ -210,8 +207,7 @@ ras_epow_interrupt(int irq, void *dev_id, struct pt_regs * regs)
210 * For nonrecoverable errors, an error is logged and we stop all processing 207 * For nonrecoverable errors, an error is logged and we stop all processing
211 * as quickly as possible in order to prevent propagation of the failure. 208 * as quickly as possible in order to prevent propagation of the failure.
212 */ 209 */
213static irqreturn_t 210static irqreturn_t ras_error_interrupt(int irq, void *dev_id)
214ras_error_interrupt(int irq, void *dev_id, struct pt_regs * regs)
215{ 211{
216 struct rtas_error_log *rtas_elog; 212 struct rtas_error_log *rtas_elog;
217 int status = 0xdeadbeef; 213 int status = 0xdeadbeef;
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index f82b13e531a3..89a8119f988d 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -121,12 +121,11 @@ static void __init fwnmi_init(void)
121 fwnmi_active = 1; 121 fwnmi_active = 1;
122} 122}
123 123
124void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc, 124void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc)
125 struct pt_regs *regs)
126{ 125{
127 unsigned int cascade_irq = i8259_irq(regs); 126 unsigned int cascade_irq = i8259_irq();
128 if (cascade_irq != NO_IRQ) 127 if (cascade_irq != NO_IRQ)
129 generic_handle_irq(cascade_irq, regs); 128 generic_handle_irq(cascade_irq);
130 desc->chip->eoi(irq); 129 desc->chip->eoi(irq);
131} 130}
132 131
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
index 253972e5479f..d071abe78ab1 100644
--- a/arch/powerpc/platforms/pseries/xics.c
+++ b/arch/powerpc/platforms/pseries/xics.c
@@ -308,14 +308,14 @@ static inline unsigned int xics_remap_irq(unsigned int vec)
308 return NO_IRQ; 308 return NO_IRQ;
309} 309}
310 310
311static unsigned int xics_get_irq_direct(struct pt_regs *regs) 311static unsigned int xics_get_irq_direct(void)
312{ 312{
313 unsigned int cpu = smp_processor_id(); 313 unsigned int cpu = smp_processor_id();
314 314
315 return xics_remap_irq(direct_xirr_info_get(cpu)); 315 return xics_remap_irq(direct_xirr_info_get(cpu));
316} 316}
317 317
318static unsigned int xics_get_irq_lpar(struct pt_regs *regs) 318static unsigned int xics_get_irq_lpar(void)
319{ 319{
320 unsigned int cpu = smp_processor_id(); 320 unsigned int cpu = smp_processor_id();
321 321
@@ -324,7 +324,7 @@ static unsigned int xics_get_irq_lpar(struct pt_regs *regs)
324 324
325#ifdef CONFIG_SMP 325#ifdef CONFIG_SMP
326 326
327static irqreturn_t xics_ipi_dispatch(int cpu, struct pt_regs *regs) 327static irqreturn_t xics_ipi_dispatch(int cpu)
328{ 328{
329 WARN_ON(cpu_is_offline(cpu)); 329 WARN_ON(cpu_is_offline(cpu));
330 330
@@ -332,47 +332,47 @@ static irqreturn_t xics_ipi_dispatch(int cpu, struct pt_regs *regs)
332 if (test_and_clear_bit(PPC_MSG_CALL_FUNCTION, 332 if (test_and_clear_bit(PPC_MSG_CALL_FUNCTION,
333 &xics_ipi_message[cpu].value)) { 333 &xics_ipi_message[cpu].value)) {
334 mb(); 334 mb();
335 smp_message_recv(PPC_MSG_CALL_FUNCTION, regs); 335 smp_message_recv(PPC_MSG_CALL_FUNCTION);
336 } 336 }
337 if (test_and_clear_bit(PPC_MSG_RESCHEDULE, 337 if (test_and_clear_bit(PPC_MSG_RESCHEDULE,
338 &xics_ipi_message[cpu].value)) { 338 &xics_ipi_message[cpu].value)) {
339 mb(); 339 mb();
340 smp_message_recv(PPC_MSG_RESCHEDULE, regs); 340 smp_message_recv(PPC_MSG_RESCHEDULE);
341 } 341 }
342#if 0 342#if 0
343 if (test_and_clear_bit(PPC_MSG_MIGRATE_TASK, 343 if (test_and_clear_bit(PPC_MSG_MIGRATE_TASK,
344 &xics_ipi_message[cpu].value)) { 344 &xics_ipi_message[cpu].value)) {
345 mb(); 345 mb();
346 smp_message_recv(PPC_MSG_MIGRATE_TASK, regs); 346 smp_message_recv(PPC_MSG_MIGRATE_TASK);
347 } 347 }
348#endif 348#endif
349#if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) 349#if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC)
350 if (test_and_clear_bit(PPC_MSG_DEBUGGER_BREAK, 350 if (test_and_clear_bit(PPC_MSG_DEBUGGER_BREAK,
351 &xics_ipi_message[cpu].value)) { 351 &xics_ipi_message[cpu].value)) {
352 mb(); 352 mb();
353 smp_message_recv(PPC_MSG_DEBUGGER_BREAK, regs); 353 smp_message_recv(PPC_MSG_DEBUGGER_BREAK);
354 } 354 }
355#endif 355#endif
356 } 356 }
357 return IRQ_HANDLED; 357 return IRQ_HANDLED;
358} 358}
359 359
360static irqreturn_t xics_ipi_action_direct(int irq, void *dev_id, struct pt_regs *regs) 360static irqreturn_t xics_ipi_action_direct(int irq, void *dev_id)
361{ 361{
362 int cpu = smp_processor_id(); 362 int cpu = smp_processor_id();
363 363
364 direct_qirr_info(cpu, 0xff); 364 direct_qirr_info(cpu, 0xff);
365 365
366 return xics_ipi_dispatch(cpu, regs); 366 return xics_ipi_dispatch(cpu);
367} 367}
368 368
369static irqreturn_t xics_ipi_action_lpar(int irq, void *dev_id, struct pt_regs *regs) 369static irqreturn_t xics_ipi_action_lpar(int irq, void *dev_id)
370{ 370{
371 int cpu = smp_processor_id(); 371 int cpu = smp_processor_id();
372 372
373 lpar_qirr_info(cpu, 0xff); 373 lpar_qirr_info(cpu, 0xff);
374 374
375 return xics_ipi_dispatch(cpu, regs); 375 return xics_ipi_dispatch(cpu);
376} 376}
377 377
378void xics_cause_IPI(int cpu) 378void xics_cause_IPI(int cpu)
diff --git a/arch/powerpc/platforms/pseries/xics.h b/arch/powerpc/platforms/pseries/xics.h
index 6ee1055b0ffb..db0ec3ba3ae2 100644
--- a/arch/powerpc/platforms/pseries/xics.h
+++ b/arch/powerpc/platforms/pseries/xics.h
@@ -31,7 +31,6 @@ struct xics_ipi_struct {
31extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned; 31extern struct xics_ipi_struct xics_ipi_message[NR_CPUS] __cacheline_aligned;
32 32
33struct irq_desc; 33struct irq_desc;
34extern void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc, 34extern void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc);
35 struct pt_regs *regs);
36 35
37#endif /* _POWERPC_KERNEL_XICS_H */ 36#endif /* _POWERPC_KERNEL_XICS_H */
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c
index 28b018994746..767ee6651adc 100644
--- a/arch/powerpc/sysdev/cpm2_pic.c
+++ b/arch/powerpc/sysdev/cpm2_pic.c
@@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = {
147 .end = cpm2_end_irq, 147 .end = cpm2_end_irq,
148}; 148};
149 149
150unsigned int cpm2_get_irq(struct pt_regs *regs) 150unsigned int cpm2_get_irq(void)
151{ 151{
152 int irq; 152 int irq;
153 unsigned long bits; 153 unsigned long bits;
diff --git a/arch/powerpc/sysdev/cpm2_pic.h b/arch/powerpc/sysdev/cpm2_pic.h
index 3c513e5a688e..2840616529e4 100644
--- a/arch/powerpc/sysdev/cpm2_pic.h
+++ b/arch/powerpc/sysdev/cpm2_pic.h
@@ -3,7 +3,7 @@
3 3
4extern intctl_cpm2_t *cpm2_intctl; 4extern intctl_cpm2_t *cpm2_intctl;
5 5
6extern unsigned int cpm2_get_irq(struct pt_regs *regs); 6extern unsigned int cpm2_get_irq(void);
7 7
8extern void cpm2_pic_init(struct device_node*); 8extern void cpm2_pic_init(struct device_node*);
9 9
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index 7d759f1c26b1..dbe92ae20333 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -567,7 +567,7 @@ static int __init fs_enet_of_init(void)
567 struct resource r[4]; 567 struct resource r[4];
568 struct device_node *phy, *mdio; 568 struct device_node *phy, *mdio;
569 struct fs_platform_info fs_enet_data; 569 struct fs_platform_info fs_enet_data;
570 const unsigned int *id, *phy_addr, phy_irq; 570 const unsigned int *id, *phy_addr, *phy_irq;
571 const void *mac_addr; 571 const void *mac_addr;
572 const phandle *ph; 572 const phandle *ph;
573 const char *model; 573 const char *model;
@@ -641,7 +641,7 @@ static int __init fs_enet_of_init(void)
641 641
642 if (strstr(model, "FCC")) { 642 if (strstr(model, "FCC")) {
643 int fcc_index = *id - 1; 643 int fcc_index = *id - 1;
644 unsigned char* mdio_bb_prop; 644 const unsigned char *mdio_bb_prop;
645 645
646 fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0); 646 fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0);
647 fs_enet_data.rx_ring = 32; 647 fs_enet_data.rx_ring = 32;
@@ -708,8 +708,9 @@ static int __init fs_enet_of_init(void)
708 ret = platform_device_add_data(fs_enet_dev, &fs_enet_data, 708 ret = platform_device_add_data(fs_enet_dev, &fs_enet_data,
709 sizeof(struct 709 sizeof(struct
710 fs_platform_info)); 710 fs_platform_info));
711 if (ret) 711 if (ret)
712 goto unreg; 712 goto unreg;
713 }
713 } 714 }
714 return 0; 715 return 0;
715 716
diff --git a/arch/powerpc/sysdev/i8259.c b/arch/powerpc/sysdev/i8259.c
index 26a6a3becd66..0450265d73bb 100644
--- a/arch/powerpc/sysdev/i8259.c
+++ b/arch/powerpc/sysdev/i8259.c
@@ -34,7 +34,7 @@ static struct irq_host *i8259_host;
34 * which is called. It should be noted that polling is broken on some 34 * which is called. It should be noted that polling is broken on some
35 * IBM and Motorola PReP boxes so we must use the int-ack feature on them. 35 * IBM and Motorola PReP boxes so we must use the int-ack feature on them.
36 */ 36 */
37unsigned int i8259_irq(struct pt_regs *regs) 37unsigned int i8259_irq(void)
38{ 38{
39 int irq; 39 int irq;
40 int lock = 0; 40 int lock = 0;
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c
index 6ebdae8e6f69..bc4d4a7f9657 100644
--- a/arch/powerpc/sysdev/ipic.c
+++ b/arch/powerpc/sysdev/ipic.c
@@ -709,7 +709,7 @@ void ipic_clear_mcp_status(u32 mask)
709} 709}
710 710
711/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ 711/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
712unsigned int ipic_get_irq(struct pt_regs *regs) 712unsigned int ipic_get_irq(void)
713{ 713{
714 int irq; 714 int irq;
715 715
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 3ee03a9a98fa..ba4833f57d47 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -489,9 +489,9 @@ static inline void mpic_eoi(struct mpic *mpic)
489} 489}
490 490
491#ifdef CONFIG_SMP 491#ifdef CONFIG_SMP
492static irqreturn_t mpic_ipi_action(int irq, void *dev_id, struct pt_regs *regs) 492static irqreturn_t mpic_ipi_action(int irq, void *dev_id)
493{ 493{
494 smp_message_recv(mpic_irq_to_hw(irq) - MPIC_VEC_IPI_0, regs); 494 smp_message_recv(mpic_irq_to_hw(irq) - MPIC_VEC_IPI_0);
495 return IRQ_HANDLED; 495 return IRQ_HANDLED;
496} 496}
497#endif /* CONFIG_SMP */ 497#endif /* CONFIG_SMP */
@@ -1217,7 +1217,7 @@ void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask)
1217 mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0])); 1217 mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0]));
1218} 1218}
1219 1219
1220unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs) 1220unsigned int mpic_get_one_irq(struct mpic *mpic)
1221{ 1221{
1222 u32 src; 1222 u32 src;
1223 1223
@@ -1230,13 +1230,13 @@ unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs)
1230 return irq_linear_revmap(mpic->irqhost, src); 1230 return irq_linear_revmap(mpic->irqhost, src);
1231} 1231}
1232 1232
1233unsigned int mpic_get_irq(struct pt_regs *regs) 1233unsigned int mpic_get_irq(void)
1234{ 1234{
1235 struct mpic *mpic = mpic_primary; 1235 struct mpic *mpic = mpic_primary;
1236 1236
1237 BUG_ON(mpic == NULL); 1237 BUG_ON(mpic == NULL);
1238 1238
1239 return mpic_get_one_irq(mpic, regs); 1239 return mpic_get_one_irq(mpic);
1240} 1240}
1241 1241
1242 1242
diff --git a/arch/powerpc/sysdev/qe_lib/qe_ic.c b/arch/powerpc/sysdev/qe_lib/qe_ic.c
index c229d07d4957..6995f51b9488 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_ic.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_ic.c
@@ -300,7 +300,7 @@ static struct irq_host_ops qe_ic_host_ops = {
300}; 300};
301 301
302/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ 302/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
303unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic, struct pt_regs *regs) 303unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
304{ 304{
305 int irq; 305 int irq;
306 306
@@ -316,7 +316,7 @@ unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic, struct pt_regs *regs)
316} 316}
317 317
318/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ 318/* Return an interrupt vector or NO_IRQ if no interrupt is pending. */
319unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic, struct pt_regs *regs) 319unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
320{ 320{
321 int irq; 321 int irq;
322 322
@@ -333,33 +333,31 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic, struct pt_regs *regs)
333 333
334/* FIXME: We mask all the QE Low interrupts while handling. We should 334/* FIXME: We mask all the QE Low interrupts while handling. We should
335 * let other interrupt come in, but BAD interrupts are generated */ 335 * let other interrupt come in, but BAD interrupts are generated */
336void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc, 336void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc)
337 struct pt_regs *regs)
338{ 337{
339 struct qe_ic *qe_ic = desc->handler_data; 338 struct qe_ic *qe_ic = desc->handler_data;
340 struct irq_chip *chip = irq_desc[irq].chip; 339 struct irq_chip *chip = irq_desc[irq].chip;
341 340
342 unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic, regs); 341 unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
343 342
344 chip->mask_ack(irq); 343 chip->mask_ack(irq);
345 if (cascade_irq != NO_IRQ) 344 if (cascade_irq != NO_IRQ)
346 generic_handle_irq(cascade_irq, regs); 345 generic_handle_irq(cascade_irq);
347 chip->unmask(irq); 346 chip->unmask(irq);
348} 347}
349 348
350/* FIXME: We mask all the QE High interrupts while handling. We should 349/* FIXME: We mask all the QE High interrupts while handling. We should
351 * let other interrupt come in, but BAD interrupts are generated */ 350 * let other interrupt come in, but BAD interrupts are generated */
352void fastcall qe_ic_cascade_high(unsigned int irq, struct irq_desc *desc, 351void fastcall qe_ic_cascade_high(unsigned int irq, struct irq_desc *desc)
353 struct pt_regs *regs)
354{ 352{
355 struct qe_ic *qe_ic = desc->handler_data; 353 struct qe_ic *qe_ic = desc->handler_data;
356 struct irq_chip *chip = irq_desc[irq].chip; 354 struct irq_chip *chip = irq_desc[irq].chip;
357 355
358 unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic, regs); 356 unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
359 357
360 chip->mask_ack(irq); 358 chip->mask_ack(irq);
361 if (cascade_irq != NO_IRQ) 359 if (cascade_irq != NO_IRQ)
362 generic_handle_irq(cascade_irq, regs); 360 generic_handle_irq(cascade_irq);
363 chip->unmask(irq); 361 chip->unmask(irq);
364} 362}
365 363
diff --git a/arch/powerpc/sysdev/qe_lib/qe_io.c b/arch/powerpc/sysdev/qe_lib/qe_io.c
index aea435970389..0afe6bfe3714 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_io.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_io.c
@@ -14,7 +14,6 @@
14 * option) any later version. 14 * option) any later version.
15 */ 15 */
16 16
17#include <linux/config.h>
18#include <linux/stddef.h> 17#include <linux/stddef.h>
19#include <linux/kernel.h> 18#include <linux/kernel.h>
20#include <linux/init.h> 19#include <linux/init.h>
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index c28f69bef8e2..322f86e93de5 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -405,11 +405,10 @@ void __init tsi108_pci_int_init(void)
405 init_pci_source(); 405 init_pci_source();
406} 406}
407 407
408void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc, 408void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc)
409 struct pt_regs *regs)
410{ 409{
411 unsigned int cascade_irq = get_pci_source(); 410 unsigned int cascade_irq = get_pci_source();
412 if (cascade_irq != NO_IRQ) 411 if (cascade_irq != NO_IRQ)
413 generic_handle_irq(cascade_irq, regs); 412 generic_handle_irq(cascade_irq);
414 desc->chip->eoi(irq); 413 desc->chip->eoi(irq);
415} 414}
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index 708236f34746..f56ffef4defa 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -21,6 +21,7 @@
21#include <linux/module.h> 21#include <linux/module.h>
22#include <linux/sysrq.h> 22#include <linux/sysrq.h>
23#include <linux/interrupt.h> 23#include <linux/interrupt.h>
24#include <linux/irq.h>
24 25
25#include <asm/ptrace.h> 26#include <asm/ptrace.h>
26#include <asm/string.h> 27#include <asm/string.h>
@@ -35,6 +36,7 @@
35#include <asm/rtas.h> 36#include <asm/rtas.h>
36#include <asm/sstep.h> 37#include <asm/sstep.h>
37#include <asm/bug.h> 38#include <asm/bug.h>
39#include <asm/irq_regs.h>
38 40
39#ifdef CONFIG_PPC64 41#ifdef CONFIG_PPC64
40#include <asm/hvcall.h> 42#include <asm/hvcall.h>
@@ -520,13 +522,12 @@ int xmon(struct pt_regs *excp)
520} 522}
521EXPORT_SYMBOL(xmon); 523EXPORT_SYMBOL(xmon);
522 524
523irqreturn_t 525irqreturn_t xmon_irq(int irq, void *d)
524xmon_irq(int irq, void *d, struct pt_regs *regs)
525{ 526{
526 unsigned long flags; 527 unsigned long flags;
527 local_irq_save(flags); 528 local_irq_save(flags);
528 printf("Keyboard interrupt\n"); 529 printf("Keyboard interrupt\n");
529 xmon(regs); 530 xmon(get_irq_regs());
530 local_irq_restore(flags); 531 local_irq_restore(flags);
531 return IRQ_HANDLED; 532 return IRQ_HANDLED;
532} 533}
@@ -2577,12 +2578,11 @@ void xmon_init(int enable)
2577} 2578}
2578 2579
2579#ifdef CONFIG_MAGIC_SYSRQ 2580#ifdef CONFIG_MAGIC_SYSRQ
2580static void sysrq_handle_xmon(int key, struct pt_regs *pt_regs, 2581static void sysrq_handle_xmon(int key, struct tty_struct *tty)
2581 struct tty_struct *tty)
2582{ 2582{
2583 /* ensure xmon is enabled */ 2583 /* ensure xmon is enabled */
2584 xmon_init(1); 2584 xmon_init(1);
2585 debugger(pt_regs); 2585 debugger(get_irq_regs());
2586} 2586}
2587 2587
2588static struct sysrq_key_op sysrq_xmon_op = 2588static struct sysrq_key_op sysrq_xmon_op =
diff --git a/arch/ppc/4xx_io/serial_sicc.c b/arch/ppc/4xx_io/serial_sicc.c
index 87fe9a89dba7..e35483961b90 100644
--- a/arch/ppc/4xx_io/serial_sicc.c
+++ b/arch/ppc/4xx_io/serial_sicc.c
@@ -414,7 +414,7 @@ static void siccuart_event(struct SICC_info *info, int event)
414} 414}
415 415
416static void 416static void
417siccuart_rx_chars(struct SICC_info *info, struct pt_regs *regs) 417siccuart_rx_chars(struct SICC_info *info)
418{ 418{
419 struct tty_struct *tty = info->tty; 419 struct tty_struct *tty = info->tty;
420 unsigned int status, ch, rsr, flg, ignored = 0; 420 unsigned int status, ch, rsr, flg, ignored = 0;
@@ -441,7 +441,7 @@ siccuart_rx_chars(struct SICC_info *info, struct pt_regs *regs)
441#ifdef SUPPORT_SYSRQ 441#ifdef SUPPORT_SYSRQ
442 if (info->sysrq) { 442 if (info->sysrq) {
443 if (ch && time_before(jiffies, info->sysrq)) { 443 if (ch && time_before(jiffies, info->sysrq)) {
444 handle_sysrq(ch, regs, NULL); 444 handle_sysrq(ch, NULL);
445 info->sysrq = 0; 445 info->sysrq = 0;
446 goto ignore_char; 446 goto ignore_char;
447 } 447 }
@@ -553,15 +553,15 @@ static void siccuart_tx_chars(struct SICC_info *info)
553} 553}
554 554
555 555
556static irqreturn_t siccuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) 556static irqreturn_t siccuart_int_rx(int irq, void *dev_id)
557{ 557{
558 struct SICC_info *info = dev_id; 558 struct SICC_info *info = dev_id;
559 siccuart_rx_chars(info, regs); 559 siccuart_rx_chars(info)
560 return IRQ_HANDLED; 560 return IRQ_HANDLED;
561} 561}
562 562
563 563
564static irqreturn_t siccuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) 564static irqreturn_t siccuart_int_tx(int irq, void *dev_id)
565{ 565{
566 struct SICC_info *info = dev_id; 566 struct SICC_info *info = dev_id;
567 siccuart_tx_chars(info); 567 siccuart_tx_chars(info);
diff --git a/arch/ppc/8260_io/enet.c b/arch/ppc/8260_io/enet.c
index ac6d55fe2235..a6056c29cf00 100644
--- a/arch/ppc/8260_io/enet.c
+++ b/arch/ppc/8260_io/enet.c
@@ -122,7 +122,7 @@ struct scc_enet_private {
122static int scc_enet_open(struct net_device *dev); 122static int scc_enet_open(struct net_device *dev);
123static int scc_enet_start_xmit(struct sk_buff *skb, struct net_device *dev); 123static int scc_enet_start_xmit(struct sk_buff *skb, struct net_device *dev);
124static int scc_enet_rx(struct net_device *dev); 124static int scc_enet_rx(struct net_device *dev);
125static irqreturn_t scc_enet_interrupt(int irq, void *dev_id, struct pt_regs *); 125static irqreturn_t scc_enet_interrupt(int irq, void *dev_id);
126static int scc_enet_close(struct net_device *dev); 126static int scc_enet_close(struct net_device *dev);
127static struct net_device_stats *scc_enet_get_stats(struct net_device *dev); 127static struct net_device_stats *scc_enet_get_stats(struct net_device *dev);
128static void set_multicast_list(struct net_device *dev); 128static void set_multicast_list(struct net_device *dev);
@@ -273,7 +273,7 @@ scc_enet_timeout(struct net_device *dev)
273 * This is called from the CPM handler, not the MPC core interrupt. 273 * This is called from the CPM handler, not the MPC core interrupt.
274 */ 274 */
275static irqreturn_t 275static irqreturn_t
276scc_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs) 276scc_enet_interrupt(int irq, void * dev_id)
277{ 277{
278 struct net_device *dev = dev_id; 278 struct net_device *dev = dev_id;
279 volatile struct scc_enet_private *cep; 279 volatile struct scc_enet_private *cep;
diff --git a/arch/ppc/8260_io/fcc_enet.c b/arch/ppc/8260_io/fcc_enet.c
index e347fe88316d..2e1943e27819 100644
--- a/arch/ppc/8260_io/fcc_enet.c
+++ b/arch/ppc/8260_io/fcc_enet.c
@@ -140,7 +140,7 @@ typedef struct {
140static int fcc_enet_open(struct net_device *dev); 140static int fcc_enet_open(struct net_device *dev);
141static int fcc_enet_start_xmit(struct sk_buff *skb, struct net_device *dev); 141static int fcc_enet_start_xmit(struct sk_buff *skb, struct net_device *dev);
142static int fcc_enet_rx(struct net_device *dev); 142static int fcc_enet_rx(struct net_device *dev);
143static irqreturn_t fcc_enet_interrupt(int irq, void *dev_id, struct pt_regs *); 143static irqreturn_t fcc_enet_interrupt(int irq, void *dev_id);
144static int fcc_enet_close(struct net_device *dev); 144static int fcc_enet_close(struct net_device *dev);
145static struct net_device_stats *fcc_enet_get_stats(struct net_device *dev); 145static struct net_device_stats *fcc_enet_get_stats(struct net_device *dev);
146/* static void set_multicast_list(struct net_device *dev); */ 146/* static void set_multicast_list(struct net_device *dev); */
@@ -524,7 +524,7 @@ fcc_enet_timeout(struct net_device *dev)
524 524
525/* The interrupt handler. */ 525/* The interrupt handler. */
526static irqreturn_t 526static irqreturn_t
527fcc_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs) 527fcc_enet_interrupt(int irq, void * dev_id)
528{ 528{
529 struct net_device *dev = dev_id; 529 struct net_device *dev = dev_id;
530 volatile struct fcc_enet_private *cep; 530 volatile struct fcc_enet_private *cep;
@@ -1563,7 +1563,7 @@ mii_discover_phy(uint mii_reg, struct net_device *dev)
1563#ifdef PHY_INTERRUPT 1563#ifdef PHY_INTERRUPT
1564/* This interrupt occurs when the PHY detects a link change. */ 1564/* This interrupt occurs when the PHY detects a link change. */
1565static irqreturn_t 1565static irqreturn_t
1566mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs) 1566mii_link_interrupt(int irq, void * dev_id)
1567{ 1567{
1568 struct net_device *dev = dev_id; 1568 struct net_device *dev = dev_id;
1569 struct fcc_enet_private *fep = dev->priv; 1569 struct fcc_enet_private *fep = dev->priv;
diff --git a/arch/ppc/8xx_io/commproc.c b/arch/ppc/8xx_io/commproc.c
index 9b3ace26280c..3b23bcb35b7a 100644
--- a/arch/ppc/8xx_io/commproc.c
+++ b/arch/ppc/8xx_io/commproc.c
@@ -47,12 +47,12 @@ cpm8xx_t *cpmp; /* Pointer to comm processor space */
47/* CPM interrupt vector functions. 47/* CPM interrupt vector functions.
48*/ 48*/
49struct cpm_action { 49struct cpm_action {
50 void (*handler)(void *, struct pt_regs * regs); 50 void (*handler)(void *);
51 void *dev_id; 51 void *dev_id;
52}; 52};
53static struct cpm_action cpm_vecs[CPMVEC_NR]; 53static struct cpm_action cpm_vecs[CPMVEC_NR];
54static irqreturn_t cpm_interrupt(int irq, void * dev, struct pt_regs * regs); 54static irqreturn_t cpm_interrupt(int irq, void * dev);
55static irqreturn_t cpm_error_interrupt(int irq, void *dev, struct pt_regs * regs); 55static irqreturn_t cpm_error_interrupt(int irq, void *dev);
56static void alloc_host_memory(void); 56static void alloc_host_memory(void);
57/* Define a table of names to identify CPM interrupt handlers in 57/* Define a table of names to identify CPM interrupt handlers in
58 * /proc/interrupts. 58 * /proc/interrupts.
@@ -205,7 +205,7 @@ cpm_interrupt_init(void)
205 * Get the CPM interrupt vector. 205 * Get the CPM interrupt vector.
206 */ 206 */
207int 207int
208cpm_get_irq(struct pt_regs *regs) 208cpm_get_irq(void)
209{ 209{
210 int cpm_vec; 210 int cpm_vec;
211 211
@@ -222,7 +222,7 @@ cpm_get_irq(struct pt_regs *regs)
222/* CPM interrupt controller cascade interrupt. 222/* CPM interrupt controller cascade interrupt.
223*/ 223*/
224static irqreturn_t 224static irqreturn_t
225cpm_interrupt(int irq, void * dev, struct pt_regs * regs) 225cpm_interrupt(int irq, void * dev)
226{ 226{
227 /* This interrupt handler never actually gets called. It is 227 /* This interrupt handler never actually gets called. It is
228 * installed only to unmask the CPM cascade interrupt in the SIU 228 * installed only to unmask the CPM cascade interrupt in the SIU
@@ -237,7 +237,7 @@ cpm_interrupt(int irq, void * dev, struct pt_regs * regs)
237 * tests in the interrupt handler. 237 * tests in the interrupt handler.
238 */ 238 */
239static irqreturn_t 239static irqreturn_t
240cpm_error_interrupt(int irq, void *dev, struct pt_regs *regs) 240cpm_error_interrupt(int irq, void *dev)
241{ 241{
242 return IRQ_HANDLED; 242 return IRQ_HANDLED;
243} 243}
@@ -246,11 +246,11 @@ cpm_error_interrupt(int irq, void *dev, struct pt_regs *regs)
246 * request_irq() to the handler prototype required by cpm_install_handler(). 246 * request_irq() to the handler prototype required by cpm_install_handler().
247 */ 247 */
248static irqreturn_t 248static irqreturn_t
249cpm_handler_helper(int irq, void *dev_id, struct pt_regs *regs) 249cpm_handler_helper(int irq, void *dev_id)
250{ 250{
251 int cpm_vec = irq - CPM_IRQ_OFFSET; 251 int cpm_vec = irq - CPM_IRQ_OFFSET;
252 252
253 (*cpm_vecs[cpm_vec].handler)(dev_id, regs); 253 (*cpm_vecs[cpm_vec].handler)(dev_id);
254 254
255 return IRQ_HANDLED; 255 return IRQ_HANDLED;
256} 256}
@@ -267,8 +267,7 @@ cpm_handler_helper(int irq, void *dev_id, struct pt_regs *regs)
267 * request_irq() or cpm_install_handler(). 267 * request_irq() or cpm_install_handler().
268 */ 268 */
269void 269void
270cpm_install_handler(int cpm_vec, void (*handler)(void *, struct pt_regs *regs), 270cpm_install_handler(int cpm_vec, void (*handler)(void *), void *dev_id)
271 void *dev_id)
272{ 271{
273 int err; 272 int err;
274 273
diff --git a/arch/ppc/8xx_io/cs4218_tdm.c b/arch/ppc/8xx_io/cs4218_tdm.c
index f5f300fc213d..959d31c26cbb 100644
--- a/arch/ppc/8xx_io/cs4218_tdm.c
+++ b/arch/ppc/8xx_io/cs4218_tdm.c
@@ -331,7 +331,7 @@ static int CS_SetFormat(int format);
331static int CS_SetVolume(int volume); 331static int CS_SetVolume(int volume);
332static void cs4218_tdm_tx_intr(void *devid); 332static void cs4218_tdm_tx_intr(void *devid);
333static void cs4218_tdm_rx_intr(void *devid); 333static void cs4218_tdm_rx_intr(void *devid);
334static void cs4218_intr(void *devid, struct pt_regs *regs); 334static void cs4218_intr(void *devid);
335static int cs_get_volume(uint reg); 335static int cs_get_volume(uint reg);
336static int cs_volume_setter(int volume, int mute); 336static int cs_volume_setter(int volume, int mute);
337static int cs_get_gain(uint reg); 337static int cs_get_gain(uint reg);
@@ -2646,7 +2646,7 @@ int __init tdm8xx_sound_init(void)
2646 * full duplex operation. 2646 * full duplex operation.
2647 */ 2647 */
2648static void 2648static void
2649cs4218_intr(void *dev_id, struct pt_regs *regs) 2649cs4218_intr(void *dev_id)
2650{ 2650{
2651 volatile smc_t *sp; 2651 volatile smc_t *sp;
2652 volatile cpm8xx_t *cp; 2652 volatile cpm8xx_t *cp;
diff --git a/arch/ppc/8xx_io/enet.c b/arch/ppc/8xx_io/enet.c
index a695375c3e4c..b23c45bc151a 100644
--- a/arch/ppc/8xx_io/enet.c
+++ b/arch/ppc/8xx_io/enet.c
@@ -149,7 +149,7 @@ struct scc_enet_private {
149static int scc_enet_open(struct net_device *dev); 149static int scc_enet_open(struct net_device *dev);
150static int scc_enet_start_xmit(struct sk_buff *skb, struct net_device *dev); 150static int scc_enet_start_xmit(struct sk_buff *skb, struct net_device *dev);
151static int scc_enet_rx(struct net_device *dev); 151static int scc_enet_rx(struct net_device *dev);
152static void scc_enet_interrupt(void *dev_id, struct pt_regs *regs); 152static void scc_enet_interrupt(void *dev_id);
153static int scc_enet_close(struct net_device *dev); 153static int scc_enet_close(struct net_device *dev);
154static struct net_device_stats *scc_enet_get_stats(struct net_device *dev); 154static struct net_device_stats *scc_enet_get_stats(struct net_device *dev);
155static void set_multicast_list(struct net_device *dev); 155static void set_multicast_list(struct net_device *dev);
@@ -305,7 +305,7 @@ scc_enet_timeout(struct net_device *dev)
305 * This is called from the CPM handler, not the MPC core interrupt. 305 * This is called from the CPM handler, not the MPC core interrupt.
306 */ 306 */
307static void 307static void
308scc_enet_interrupt(void *dev_id, struct pt_regs *regs) 308scc_enet_interrupt(void *dev_id)
309{ 309{
310 struct net_device *dev = dev_id; 310 struct net_device *dev = dev_id;
311 volatile struct scc_enet_private *cep; 311 volatile struct scc_enet_private *cep;
diff --git a/arch/ppc/8xx_io/fec.c b/arch/ppc/8xx_io/fec.c
index 8b6295bbb564..2f9fa9e3d331 100644
--- a/arch/ppc/8xx_io/fec.c
+++ b/arch/ppc/8xx_io/fec.c
@@ -198,8 +198,7 @@ static int fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev);
198#ifdef CONFIG_USE_MDIO 198#ifdef CONFIG_USE_MDIO
199static void fec_enet_mii(struct net_device *dev); 199static void fec_enet_mii(struct net_device *dev);
200#endif /* CONFIG_USE_MDIO */ 200#endif /* CONFIG_USE_MDIO */
201static irqreturn_t fec_enet_interrupt(int irq, void * dev_id, 201static irqreturn_t fec_enet_interrupt(int irq, void * dev_id);
202 struct pt_regs * regs);
203#ifdef CONFIG_FEC_PACKETHOOK 202#ifdef CONFIG_FEC_PACKETHOOK
204static void fec_enet_tx(struct net_device *dev, __u32 regval); 203static void fec_enet_tx(struct net_device *dev, __u32 regval);
205static void fec_enet_rx(struct net_device *dev, __u32 regval); 204static void fec_enet_rx(struct net_device *dev, __u32 regval);
@@ -472,7 +471,7 @@ fec_timeout(struct net_device *dev)
472 * This is called from the MPC core interrupt. 471 * This is called from the MPC core interrupt.
473 */ 472 */
474static irqreturn_t 473static irqreturn_t
475fec_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs) 474fec_enet_interrupt(int irq, void * dev_id)
476{ 475{
477 struct net_device *dev = dev_id; 476 struct net_device *dev = dev_id;
478 volatile fec_t *fecp; 477 volatile fec_t *fecp;
@@ -1408,7 +1407,7 @@ static
1408#ifdef CONFIG_RPXCLASSIC 1407#ifdef CONFIG_RPXCLASSIC
1409void mii_link_interrupt(void *dev_id) 1408void mii_link_interrupt(void *dev_id)
1410#else 1409#else
1411irqreturn_t mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs) 1410irqreturn_t mii_link_interrupt(int irq, void * dev_id)
1412#endif 1411#endif
1413{ 1412{
1414#ifdef CONFIG_USE_MDIO 1413#ifdef CONFIG_USE_MDIO
diff --git a/arch/ppc/kernel/smp.c b/arch/ppc/kernel/smp.c
index ca57e896a36c..96a55972b986 100644
--- a/arch/ppc/kernel/smp.c
+++ b/arch/ppc/kernel/smp.c
@@ -84,7 +84,7 @@ smp_message_pass(int target, int msg)
84/* 84/*
85 * Common functions 85 * Common functions
86 */ 86 */
87void smp_message_recv(int msg, struct pt_regs *regs) 87void smp_message_recv(int msg)
88{ 88{
89 atomic_inc(&ipi_recv); 89 atomic_inc(&ipi_recv);
90 90
@@ -100,7 +100,7 @@ void smp_message_recv(int msg, struct pt_regs *regs)
100 break; 100 break;
101#ifdef CONFIG_XMON 101#ifdef CONFIG_XMON
102 case PPC_MSG_XMON_BREAK: 102 case PPC_MSG_XMON_BREAK:
103 xmon(regs); 103 xmon(get_irq_regs());
104 break; 104 break;
105#endif /* CONFIG_XMON */ 105#endif /* CONFIG_XMON */
106 default: 106 default:
diff --git a/arch/ppc/kernel/time.c b/arch/ppc/kernel/time.c
index 187388625a76..d4b2cf74da6a 100644
--- a/arch/ppc/kernel/time.c
+++ b/arch/ppc/kernel/time.c
@@ -142,7 +142,7 @@ void timer_interrupt(struct pt_regs * regs)
142 while ((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) <= 0) { 142 while ((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) <= 0) {
143 jiffy_stamp += tb_ticks_per_jiffy; 143 jiffy_stamp += tb_ticks_per_jiffy;
144 144
145 profile_tick(CPU_PROFILING, regs); 145 profile_tick(CPU_PROFILING);
146 update_process_times(user_mode(regs)); 146 update_process_times(user_mode(regs));
147 147
148 if (smp_processor_id()) 148 if (smp_processor_id())
diff --git a/arch/ppc/platforms/85xx/mpc8560_ads.c b/arch/ppc/platforms/85xx/mpc8560_ads.c
index 94badafe4ef1..14ecec7bbed7 100644
--- a/arch/ppc/platforms/85xx/mpc8560_ads.c
+++ b/arch/ppc/platforms/85xx/mpc8560_ads.c
@@ -211,10 +211,10 @@ mpc8560ads_setup_arch(void)
211#endif 211#endif
212} 212}
213 213
214static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) 214static irqreturn_t cpm2_cascade(int irq, void *dev_id)
215{ 215{
216 while ((irq = cpm2_get_irq(regs)) >= 0) 216 while ((irq = cpm2_get_irq()) >= 0)
217 __do_IRQ(irq, regs); 217 __do_IRQ(irq);
218 return IRQ_HANDLED; 218 return IRQ_HANDLED;
219} 219}
220 220
diff --git a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c
index 75204588a3e7..5ce0f69c1db6 100644
--- a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c
+++ b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c
@@ -127,10 +127,10 @@ mpc85xx_cds_show_cpuinfo(struct seq_file *m)
127} 127}
128 128
129#ifdef CONFIG_CPM2 129#ifdef CONFIG_CPM2
130static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) 130static irqreturn_t cpm2_cascade(int irq, void *dev_id)
131{ 131{
132 while((irq = cpm2_get_irq(regs)) >= 0) 132 while((irq = cpm2_get_irq()) >= 0)
133 __do_IRQ(irq, regs); 133 __do_IRQ(irq);
134 return IRQ_HANDLED; 134 return IRQ_HANDLED;
135} 135}
136 136
diff --git a/arch/ppc/platforms/85xx/stx_gp3.c b/arch/ppc/platforms/85xx/stx_gp3.c
index 495aa79bb3a1..4bb18ab27672 100644
--- a/arch/ppc/platforms/85xx/stx_gp3.c
+++ b/arch/ppc/platforms/85xx/stx_gp3.c
@@ -156,10 +156,10 @@ gp3_setup_arch(void)
156 printk ("bi_immr_base = %8.8lx\n", binfo->bi_immr_base); 156 printk ("bi_immr_base = %8.8lx\n", binfo->bi_immr_base);
157} 157}
158 158
159static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) 159static irqreturn_t cpm2_cascade(int irq, void *dev_id)
160{ 160{
161 while ((irq = cpm2_get_irq(regs)) >= 0) 161 while ((irq = cpm2_get_irq()) >= 0)
162 __do_IRQ(irq, regs); 162 __do_IRQ(irq);
163 163
164 return IRQ_HANDLED; 164 return IRQ_HANDLED;
165} 165}
diff --git a/arch/ppc/platforms/85xx/tqm85xx.c b/arch/ppc/platforms/85xx/tqm85xx.c
index 189ed4175f9f..dd45f2e18449 100644
--- a/arch/ppc/platforms/85xx/tqm85xx.c
+++ b/arch/ppc/platforms/85xx/tqm85xx.c
@@ -181,10 +181,10 @@ tqm85xx_setup_arch(void)
181} 181}
182 182
183#ifdef CONFIG_MPC8560 183#ifdef CONFIG_MPC8560
184static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) 184static irqreturn_t cpm2_cascade(int irq, void *dev_id)
185{ 185{
186 while ((irq = cpm2_get_irq(regs)) >= 0) 186 while ((irq = cpm2_get_irq()) >= 0)
187 __do_IRQ(irq, regs); 187 __do_IRQ(irq);
188 return IRQ_HANDLED; 188 return IRQ_HANDLED;
189} 189}
190 190
diff --git a/arch/ppc/platforms/apus_setup.c b/arch/ppc/platforms/apus_setup.c
index 1d034ead2c9a..063274d2c503 100644
--- a/arch/ppc/platforms/apus_setup.c
+++ b/arch/ppc/platforms/apus_setup.c
@@ -492,7 +492,7 @@ apus_halt(void)
492 492
493static unsigned char last_ipl[8]; 493static unsigned char last_ipl[8];
494 494
495int apus_get_irq(struct pt_regs* regs) 495int apus_get_irq(void)
496{ 496{
497 unsigned char ipl_emu, mask; 497 unsigned char ipl_emu, mask;
498 unsigned int level; 498 unsigned int level;
diff --git a/arch/ppc/platforms/hdpu.c b/arch/ppc/platforms/hdpu.c
index e0f112a1fd0b..d809e17aa536 100644
--- a/arch/ppc/platforms/hdpu.c
+++ b/arch/ppc/platforms/hdpu.c
@@ -659,8 +659,7 @@ static void __init hdpu_map_io(void)
659char hdpu_smp0[] = "SMP Cpu #0"; 659char hdpu_smp0[] = "SMP Cpu #0";
660char hdpu_smp1[] = "SMP Cpu #1"; 660char hdpu_smp1[] = "SMP Cpu #1";
661 661
662static irqreturn_t hdpu_smp_cpu0_int_handler(int irq, void *dev_id, 662static irqreturn_t hdpu_smp_cpu0_int_handler(int irq, void *dev_id)
663 struct pt_regs *regs)
664{ 663{
665 volatile unsigned int doorbell; 664 volatile unsigned int doorbell;
666 665
@@ -670,22 +669,21 @@ static irqreturn_t hdpu_smp_cpu0_int_handler(int irq, void *dev_id,
670 mv64x60_write(&bh, MV64360_CPU0_DOORBELL_CLR, doorbell); 669 mv64x60_write(&bh, MV64360_CPU0_DOORBELL_CLR, doorbell);
671 670
672 if (doorbell & 1) { 671 if (doorbell & 1) {
673 smp_message_recv(0, regs); 672 smp_message_recv(0);
674 } 673 }
675 if (doorbell & 2) { 674 if (doorbell & 2) {
676 smp_message_recv(1, regs); 675 smp_message_recv(1);
677 } 676 }
678 if (doorbell & 4) { 677 if (doorbell & 4) {
679 smp_message_recv(2, regs); 678 smp_message_recv(2);
680 } 679 }
681 if (doorbell & 8) { 680 if (doorbell & 8) {
682 smp_message_recv(3, regs); 681 smp_message_recv(3);
683 } 682 }
684 return IRQ_HANDLED; 683 return IRQ_HANDLED;
685} 684}
686 685
687static irqreturn_t hdpu_smp_cpu1_int_handler(int irq, void *dev_id, 686static irqreturn_t hdpu_smp_cpu1_int_handler(int irq, void *dev_id)
688 struct pt_regs *regs)
689{ 687{
690 volatile unsigned int doorbell; 688 volatile unsigned int doorbell;
691 689
@@ -695,16 +693,16 @@ static irqreturn_t hdpu_smp_cpu1_int_handler(int irq, void *dev_id,
695 mv64x60_write(&bh, MV64360_CPU1_DOORBELL_CLR, doorbell); 693 mv64x60_write(&bh, MV64360_CPU1_DOORBELL_CLR, doorbell);
696 694
697 if (doorbell & 1) { 695 if (doorbell & 1) {
698 smp_message_recv(0, regs); 696 smp_message_recv(0);
699 } 697 }
700 if (doorbell & 2) { 698 if (doorbell & 2) {
701 smp_message_recv(1, regs); 699 smp_message_recv(1);
702 } 700 }
703 if (doorbell & 4) { 701 if (doorbell & 4) {
704 smp_message_recv(2, regs); 702 smp_message_recv(2);
705 } 703 }
706 if (doorbell & 8) { 704 if (doorbell & 8) {
707 smp_message_recv(3, regs); 705 smp_message_recv(3);
708 } 706 }
709 return IRQ_HANDLED; 707 return IRQ_HANDLED;
710} 708}
diff --git a/arch/ppc/platforms/radstone_ppc7d.c b/arch/ppc/platforms/radstone_ppc7d.c
index 3bb530af0297..13d70ab50bf1 100644
--- a/arch/ppc/platforms/radstone_ppc7d.c
+++ b/arch/ppc/platforms/radstone_ppc7d.c
@@ -451,11 +451,11 @@ static void __init ppc7d_calibrate_decr(void)
451 * Interrupt stuff 451 * Interrupt stuff
452 *****************************************************************************/ 452 *****************************************************************************/
453 453
454static irqreturn_t ppc7d_i8259_intr(int irq, void *dev_id, struct pt_regs *regs) 454static irqreturn_t ppc7d_i8259_intr(int irq, void *dev_id)
455{ 455{
456 u32 temp = mv64x60_read(&bh, MV64x60_GPP_INTR_CAUSE); 456 u32 temp = mv64x60_read(&bh, MV64x60_GPP_INTR_CAUSE);
457 if (temp & (1 << 28)) { 457 if (temp & (1 << 28)) {
458 i8259_irq(regs); 458 i8259_irq();
459 mv64x60_write(&bh, MV64x60_GPP_INTR_CAUSE, temp & (~(1 << 28))); 459 mv64x60_write(&bh, MV64x60_GPP_INTR_CAUSE, temp & (~(1 << 28)));
460 return IRQ_HANDLED; 460 return IRQ_HANDLED;
461 } 461 }
@@ -536,13 +536,13 @@ static u32 ppc7d_irq_canonicalize(u32 irq)
536 return irq; 536 return irq;
537} 537}
538 538
539static int ppc7d_get_irq(struct pt_regs *regs) 539static int ppc7d_get_irq(void)
540{ 540{
541 int irq; 541 int irq;
542 542
543 irq = mv64360_get_irq(regs); 543 irq = mv64360_get_irq();
544 if (irq == (mv64360_irq_base + MV64x60_IRQ_GPP28)) 544 if (irq == (mv64360_irq_base + MV64x60_IRQ_GPP28))
545 irq = i8259_irq(regs); 545 irq = i8259_irq();
546 return irq; 546 return irq;
547} 547}
548 548
diff --git a/arch/ppc/platforms/sbc82xx.c b/arch/ppc/platforms/sbc82xx.c
index 60b769c7f3fc..cc0935ccab7a 100644
--- a/arch/ppc/platforms/sbc82xx.c
+++ b/arch/ppc/platforms/sbc82xx.c
@@ -121,7 +121,7 @@ struct hw_interrupt_type sbc82xx_i8259_ic = {
121 .end = sbc82xx_i8259_end_irq, 121 .end = sbc82xx_i8259_end_irq,
122}; 122};
123 123
124static irqreturn_t sbc82xx_i8259_demux(int irq, void *dev_id, struct pt_regs *regs) 124static irqreturn_t sbc82xx_i8259_demux(int irq, void *dev_id)
125{ 125{
126 spin_lock(&sbc82xx_i8259_lock); 126 spin_lock(&sbc82xx_i8259_lock);
127 127
@@ -139,7 +139,7 @@ static irqreturn_t sbc82xx_i8259_demux(int irq, void *dev_id, struct pt_regs *re
139 return IRQ_HANDLED; 139 return IRQ_HANDLED;
140 } 140 }
141 } 141 }
142 __do_IRQ(NR_SIU_INTS + irq, regs); 142 __do_IRQ(NR_SIU_INTS + irq);
143 return IRQ_HANDLED; 143 return IRQ_HANDLED;
144} 144}
145 145
diff --git a/arch/ppc/syslib/cpc700.h b/arch/ppc/syslib/cpc700.h
index 0a8a5d84390f..987e9aa0dd45 100644
--- a/arch/ppc/syslib/cpc700.h
+++ b/arch/ppc/syslib/cpc700.h
@@ -91,6 +91,6 @@ extern struct hw_interrupt_type cpc700_pic;
91extern unsigned int cpc700_irq_assigns[32][2]; 91extern unsigned int cpc700_irq_assigns[32][2];
92 92
93extern void __init cpc700_init_IRQ(void); 93extern void __init cpc700_init_IRQ(void);
94extern int cpc700_get_irq(struct pt_regs *); 94extern int cpc700_get_irq(void);
95 95
96#endif /* __PPC_SYSLIB_CPC700_H__ */ 96#endif /* __PPC_SYSLIB_CPC700_H__ */
diff --git a/arch/ppc/syslib/cpc700_pic.c b/arch/ppc/syslib/cpc700_pic.c
index 172aa215fdb0..d48e8f45c050 100644
--- a/arch/ppc/syslib/cpc700_pic.c
+++ b/arch/ppc/syslib/cpc700_pic.c
@@ -158,7 +158,7 @@ cpc700_init_IRQ(void)
158 * Find the highest IRQ that generating an interrupt, if any. 158 * Find the highest IRQ that generating an interrupt, if any.
159 */ 159 */
160int 160int
161cpc700_get_irq(struct pt_regs *regs) 161cpc700_get_irq(void)
162{ 162{
163 int irq = 0; 163 int irq = 0;
164 u_int irq_status, irq_test = 1; 164 u_int irq_status, irq_test = 1;
diff --git a/arch/ppc/syslib/cpm2_pic.c b/arch/ppc/syslib/cpm2_pic.c
index c0fee0beb815..fb2d5842641a 100644
--- a/arch/ppc/syslib/cpm2_pic.c
+++ b/arch/ppc/syslib/cpm2_pic.c
@@ -123,7 +123,7 @@ static struct hw_interrupt_type cpm2_pic = {
123 .end = cpm2_end_irq, 123 .end = cpm2_end_irq,
124}; 124};
125 125
126int cpm2_get_irq(struct pt_regs *regs) 126int cpm2_get_irq(void)
127{ 127{
128 int irq; 128 int irq;
129 unsigned long bits; 129 unsigned long bits;
diff --git a/arch/ppc/syslib/cpm2_pic.h b/arch/ppc/syslib/cpm2_pic.h
index 97cab8f13a1a..467339337a78 100644
--- a/arch/ppc/syslib/cpm2_pic.h
+++ b/arch/ppc/syslib/cpm2_pic.h
@@ -1,7 +1,7 @@
1#ifndef _PPC_KERNEL_CPM2_H 1#ifndef _PPC_KERNEL_CPM2_H
2#define _PPC_KERNEL_CPM2_H 2#define _PPC_KERNEL_CPM2_H
3 3
4extern int cpm2_get_irq(struct pt_regs *regs); 4extern int cpm2_get_irq(void);
5 5
6extern void cpm2_init_IRQ(void); 6extern void cpm2_init_IRQ(void);
7 7
diff --git a/arch/ppc/syslib/gt64260_pic.c b/arch/ppc/syslib/gt64260_pic.c
index 7fd550a7d586..e84d432c0657 100644
--- a/arch/ppc/syslib/gt64260_pic.c
+++ b/arch/ppc/syslib/gt64260_pic.c
@@ -110,9 +110,6 @@ gt64260_init_irq(void)
110 * This function returns the lowest interrupt number of all interrupts that 110 * This function returns the lowest interrupt number of all interrupts that
111 * are currently asserted. 111 * are currently asserted.
112 * 112 *
113 * Input Variable(s):
114 * struct pt_regs* not used
115 *
116 * Output Variable(s): 113 * Output Variable(s):
117 * None. 114 * None.
118 * 115 *
@@ -120,7 +117,7 @@ gt64260_init_irq(void)
120 * int <interrupt number> or -2 (bogus interrupt) 117 * int <interrupt number> or -2 (bogus interrupt)
121 */ 118 */
122int 119int
123gt64260_get_irq(struct pt_regs *regs) 120gt64260_get_irq(void)
124{ 121{
125 int irq; 122 int irq;
126 int irq_gpp; 123 int irq_gpp;
@@ -229,7 +226,7 @@ gt64260_mask_irq(unsigned int irq)
229} 226}
230 227
231static irqreturn_t 228static irqreturn_t
232gt64260_cpu_error_int_handler(int irq, void *dev_id, struct pt_regs *regs) 229gt64260_cpu_error_int_handler(int irq, void *dev_id)
233{ 230{
234 printk(KERN_ERR "gt64260_cpu_error_int_handler: %s 0x%08x\n", 231 printk(KERN_ERR "gt64260_cpu_error_int_handler: %s 0x%08x\n",
235 "Error on CPU interface - Cause regiser", 232 "Error on CPU interface - Cause regiser",
@@ -250,7 +247,7 @@ gt64260_cpu_error_int_handler(int irq, void *dev_id, struct pt_regs *regs)
250} 247}
251 248
252static irqreturn_t 249static irqreturn_t
253gt64260_pci_error_int_handler(int irq, void *dev_id, struct pt_regs *regs) 250gt64260_pci_error_int_handler(int irq, void *dev_id)
254{ 251{
255 u32 val; 252 u32 val;
256 unsigned int pci_bus = (unsigned int)dev_id; 253 unsigned int pci_bus = (unsigned int)dev_id;
diff --git a/arch/ppc/syslib/i8259.c b/arch/ppc/syslib/i8259.c
index eb35353af837..a43dda5a8334 100644
--- a/arch/ppc/syslib/i8259.c
+++ b/arch/ppc/syslib/i8259.c
@@ -28,7 +28,7 @@ static int i8259_pic_irq_offset;
28 * which is called. It should be noted that polling is broken on some 28 * which is called. It should be noted that polling is broken on some
29 * IBM and Motorola PReP boxes so we must use the int-ack feature on them. 29 * IBM and Motorola PReP boxes so we must use the int-ack feature on them.
30 */ 30 */
31int i8259_irq(struct pt_regs *regs) 31int i8259_irq(void)
32{ 32{
33 int irq; 33 int irq;
34 34
diff --git a/arch/ppc/syslib/ibm440gx_common.c b/arch/ppc/syslib/ibm440gx_common.c
index 4b77e6c8c87f..6ad52f4a26e1 100644
--- a/arch/ppc/syslib/ibm440gx_common.c
+++ b/arch/ppc/syslib/ibm440gx_common.c
@@ -119,7 +119,7 @@ static inline u32 l2c_diag(u32 addr)
119 return mfdcr(DCRN_L2C0_DATA); 119 return mfdcr(DCRN_L2C0_DATA);
120} 120}
121 121
122static irqreturn_t l2c_error_handler(int irq, void* dev, struct pt_regs* regs) 122static irqreturn_t l2c_error_handler(int irq, void* dev)
123{ 123{
124 u32 sr = mfdcr(DCRN_L2C0_SR); 124 u32 sr = mfdcr(DCRN_L2C0_SR);
125 if (sr & L2C_SR_CPE){ 125 if (sr & L2C_SR_CPE){
diff --git a/arch/ppc/syslib/ipic.c b/arch/ppc/syslib/ipic.c
index 46801f5ec03f..10659c24b1be 100644
--- a/arch/ppc/syslib/ipic.c
+++ b/arch/ppc/syslib/ipic.c
@@ -601,7 +601,7 @@ void ipic_clear_mcp_status(u32 mask)
601} 601}
602 602
603/* Return an interrupt vector or -1 if no interrupt is pending. */ 603/* Return an interrupt vector or -1 if no interrupt is pending. */
604int ipic_get_irq(struct pt_regs *regs) 604int ipic_get_irq(void)
605{ 605{
606 int irq; 606 int irq;
607 607
diff --git a/arch/ppc/syslib/m82xx_pci.c b/arch/ppc/syslib/m82xx_pci.c
index d3fa264e179e..e3b586b1ede9 100644
--- a/arch/ppc/syslib/m82xx_pci.c
+++ b/arch/ppc/syslib/m82xx_pci.c
@@ -117,7 +117,7 @@ struct hw_interrupt_type pq2pci_ic = {
117}; 117};
118 118
119static irqreturn_t 119static irqreturn_t
120pq2pci_irq_demux(int irq, void *dev_id, struct pt_regs *regs) 120pq2pci_irq_demux(int irq, void *dev_id)
121{ 121{
122 unsigned long stat, mask, pend; 122 unsigned long stat, mask, pend;
123 int bit; 123 int bit;
@@ -130,7 +130,7 @@ pq2pci_irq_demux(int irq, void *dev_id, struct pt_regs *regs)
130 break; 130 break;
131 for (bit = 0; pend != 0; ++bit, pend <<= 1) { 131 for (bit = 0; pend != 0; ++bit, pend <<= 1) {
132 if (pend & 0x80000000) 132 if (pend & 0x80000000)
133 __do_IRQ(NR_CPM_INTS + bit, regs); 133 __do_IRQ(NR_CPM_INTS + bit);
134 } 134 }
135 } 135 }
136 136
diff --git a/arch/ppc/syslib/m8xx_setup.c b/arch/ppc/syslib/m8xx_setup.c
index 54303a7b4e69..d8d299bd1a12 100644
--- a/arch/ppc/syslib/m8xx_setup.c
+++ b/arch/ppc/syslib/m8xx_setup.c
@@ -169,7 +169,7 @@ abort(void)
169} 169}
170 170
171/* A place holder for time base interrupts, if they are ever enabled. */ 171/* A place holder for time base interrupts, if they are ever enabled. */
172irqreturn_t timebase_interrupt(int irq, void * dev, struct pt_regs * regs) 172irqreturn_t timebase_interrupt(int irq, void * dev)
173{ 173{
174 printk ("timebase_interrupt()\n"); 174 printk ("timebase_interrupt()\n");
175 175
diff --git a/arch/ppc/syslib/m8xx_wdt.c b/arch/ppc/syslib/m8xx_wdt.c
index ac11d7bab443..fffac8cbeb51 100644
--- a/arch/ppc/syslib/m8xx_wdt.c
+++ b/arch/ppc/syslib/m8xx_wdt.c
@@ -21,7 +21,7 @@
21static int wdt_timeout; 21static int wdt_timeout;
22int m8xx_has_internal_rtc = 0; 22int m8xx_has_internal_rtc = 0;
23 23
24static irqreturn_t m8xx_wdt_interrupt(int, void *, struct pt_regs *); 24static irqreturn_t m8xx_wdt_interrupt(int, void *);
25static struct irqaction m8xx_wdt_irqaction = { 25static struct irqaction m8xx_wdt_irqaction = {
26 .handler = m8xx_wdt_interrupt, 26 .handler = m8xx_wdt_interrupt,
27 .name = "watchdog", 27 .name = "watchdog",
@@ -35,7 +35,7 @@ void m8xx_wdt_reset(void)
35 out_be16(&imap->im_siu_conf.sc_swsr, 0xaa39); /* write magic2 */ 35 out_be16(&imap->im_siu_conf.sc_swsr, 0xaa39); /* write magic2 */
36} 36}
37 37
38static irqreturn_t m8xx_wdt_interrupt(int irq, void *dev, struct pt_regs *regs) 38static irqreturn_t m8xx_wdt_interrupt(int irq, void *dev)
39{ 39{
40 volatile immap_t *imap = (volatile immap_t *)IMAP_ADDR; 40 volatile immap_t *imap = (volatile immap_t *)IMAP_ADDR;
41 41
diff --git a/arch/ppc/syslib/mpc52xx_pic.c b/arch/ppc/syslib/mpc52xx_pic.c
index 6425b5cee7db..af35a316544a 100644
--- a/arch/ppc/syslib/mpc52xx_pic.c
+++ b/arch/ppc/syslib/mpc52xx_pic.c
@@ -220,7 +220,7 @@ mpc52xx_init_irq(void)
220} 220}
221 221
222int 222int
223mpc52xx_get_irq(struct pt_regs *regs) 223mpc52xx_get_irq(void)
224{ 224{
225 u32 status; 225 u32 status;
226 int irq = -1; 226 int irq = -1;
diff --git a/arch/ppc/syslib/mv64360_pic.c b/arch/ppc/syslib/mv64360_pic.c
index 3f6d162f87cf..4b7a3338e122 100644
--- a/arch/ppc/syslib/mv64360_pic.c
+++ b/arch/ppc/syslib/mv64360_pic.c
@@ -55,10 +55,9 @@
55 55
56static void mv64360_unmask_irq(unsigned int); 56static void mv64360_unmask_irq(unsigned int);
57static void mv64360_mask_irq(unsigned int); 57static void mv64360_mask_irq(unsigned int);
58static irqreturn_t mv64360_cpu_error_int_handler(int, void *, struct pt_regs *); 58static irqreturn_t mv64360_cpu_error_int_handler(int, void *);
59static irqreturn_t mv64360_sram_error_int_handler(int, void *, 59static irqreturn_t mv64360_sram_error_int_handler(int, void *);
60 struct pt_regs *); 60static irqreturn_t mv64360_pci_error_int_handler(int, void *);
61static irqreturn_t mv64360_pci_error_int_handler(int, void *, struct pt_regs *);
62 61
63/* ========================== local declarations =========================== */ 62/* ========================== local declarations =========================== */
64 63
@@ -131,9 +130,6 @@ mv64360_init_irq(void)
131 * This function returns the lowest interrupt number of all interrupts that 130 * This function returns the lowest interrupt number of all interrupts that
132 * are currently asserted. 131 * are currently asserted.
133 * 132 *
134 * Input Variable(s):
135 * struct pt_regs* not used
136 *
137 * Output Variable(s): 133 * Output Variable(s):
138 * None. 134 * None.
139 * 135 *
@@ -142,7 +138,7 @@ mv64360_init_irq(void)
142 * 138 *
143 */ 139 */
144int 140int
145mv64360_get_irq(struct pt_regs *regs) 141mv64360_get_irq(void)
146{ 142{
147 int irq; 143 int irq;
148 int irq_gpp; 144 int irq_gpp;
@@ -283,7 +279,7 @@ mv64360_mask_irq(unsigned int irq)
283} 279}
284 280
285static irqreturn_t 281static irqreturn_t
286mv64360_cpu_error_int_handler(int irq, void *dev_id, struct pt_regs *regs) 282mv64360_cpu_error_int_handler(int irq, void *dev_id)
287{ 283{
288 printk(KERN_ERR "mv64360_cpu_error_int_handler: %s 0x%08x\n", 284 printk(KERN_ERR "mv64360_cpu_error_int_handler: %s 0x%08x\n",
289 "Error on CPU interface - Cause regiser", 285 "Error on CPU interface - Cause regiser",
@@ -304,7 +300,7 @@ mv64360_cpu_error_int_handler(int irq, void *dev_id, struct pt_regs *regs)
304} 300}
305 301
306static irqreturn_t 302static irqreturn_t
307mv64360_sram_error_int_handler(int irq, void *dev_id, struct pt_regs *regs) 303mv64360_sram_error_int_handler(int irq, void *dev_id)
308{ 304{
309 printk(KERN_ERR "mv64360_sram_error_int_handler: %s 0x%08x\n", 305 printk(KERN_ERR "mv64360_sram_error_int_handler: %s 0x%08x\n",
310 "Error in internal SRAM - Cause register", 306 "Error in internal SRAM - Cause register",
@@ -325,7 +321,7 @@ mv64360_sram_error_int_handler(int irq, void *dev_id, struct pt_regs *regs)
325} 321}
326 322
327static irqreturn_t 323static irqreturn_t
328mv64360_pci_error_int_handler(int irq, void *dev_id, struct pt_regs *regs) 324mv64360_pci_error_int_handler(int irq, void *dev_id)
329{ 325{
330 u32 val; 326 u32 val;
331 unsigned int pci_bus = (unsigned int)dev_id; 327 unsigned int pci_bus = (unsigned int)dev_id;
@@ -380,7 +376,7 @@ mv64360_register_hdlrs(void)
380 /* Clear old errors and register CPU interface error intr handler */ 376 /* Clear old errors and register CPU interface error intr handler */
381 mv64x60_write(&bh, MV64x60_CPU_ERR_CAUSE, 0); 377 mv64x60_write(&bh, MV64x60_CPU_ERR_CAUSE, 0);
382 if ((rc = request_irq(MV64x60_IRQ_CPU_ERR + mv64360_irq_base, 378 if ((rc = request_irq(MV64x60_IRQ_CPU_ERR + mv64360_irq_base,
383 mv64360_cpu_error_int_handler, IRQF_DISABLED, CPU_INTR_STR, 0))) 379 mv64360_cpu_error_int_handler, IRQF_DISABLED, CPU_INTR_STR, NULL)))
384 printk(KERN_WARNING "Can't register cpu error handler: %d", rc); 380 printk(KERN_WARNING "Can't register cpu error handler: %d", rc);
385 381
386 mv64x60_write(&bh, MV64x60_CPU_ERR_MASK, 0); 382 mv64x60_write(&bh, MV64x60_CPU_ERR_MASK, 0);
@@ -389,7 +385,7 @@ mv64360_register_hdlrs(void)
389 /* Clear old errors and register internal SRAM error intr handler */ 385 /* Clear old errors and register internal SRAM error intr handler */
390 mv64x60_write(&bh, MV64360_SRAM_ERR_CAUSE, 0); 386 mv64x60_write(&bh, MV64360_SRAM_ERR_CAUSE, 0);
391 if ((rc = request_irq(MV64360_IRQ_SRAM_PAR_ERR + mv64360_irq_base, 387 if ((rc = request_irq(MV64360_IRQ_SRAM_PAR_ERR + mv64360_irq_base,
392 mv64360_sram_error_int_handler,IRQF_DISABLED,SRAM_INTR_STR, 0))) 388 mv64360_sram_error_int_handler,IRQF_DISABLED,SRAM_INTR_STR, NULL)))
393 printk(KERN_WARNING "Can't register SRAM error handler: %d",rc); 389 printk(KERN_WARNING "Can't register SRAM error handler: %d",rc);
394 390
395 /* Clear old errors and register PCI 0 error intr handler */ 391 /* Clear old errors and register PCI 0 error intr handler */
diff --git a/arch/ppc/syslib/open_pic.c b/arch/ppc/syslib/open_pic.c
index aa0b95788705..18ec94733293 100644
--- a/arch/ppc/syslib/open_pic.c
+++ b/arch/ppc/syslib/open_pic.c
@@ -45,7 +45,7 @@ static u_int NumSources;
45static int open_pic_irq_offset; 45static int open_pic_irq_offset;
46static volatile OpenPIC_Source __iomem *ISR[NR_IRQS]; 46static volatile OpenPIC_Source __iomem *ISR[NR_IRQS];
47static int openpic_cascade_irq = -1; 47static int openpic_cascade_irq = -1;
48static int (*openpic_cascade_fn)(struct pt_regs *); 48static int (*openpic_cascade_fn)(void);
49 49
50/* Global Operations */ 50/* Global Operations */
51static void openpic_disable_8259_pass_through(void); 51static void openpic_disable_8259_pass_through(void);
@@ -54,7 +54,7 @@ static void openpic_set_spurious(u_int vector);
54#ifdef CONFIG_SMP 54#ifdef CONFIG_SMP
55/* Interprocessor Interrupts */ 55/* Interprocessor Interrupts */
56static void openpic_initipi(u_int ipi, u_int pri, u_int vector); 56static void openpic_initipi(u_int ipi, u_int pri, u_int vector);
57static irqreturn_t openpic_ipi_action(int cpl, void *dev_id, struct pt_regs *); 57static irqreturn_t openpic_ipi_action(int cpl, void *dev_id);
58#endif 58#endif
59 59
60/* Timer Interrupts */ 60/* Timer Interrupts */
@@ -700,7 +700,7 @@ static struct irqaction openpic_cascade_irqaction = {
700 700
701void __init 701void __init
702openpic_hookup_cascade(u_int irq, char *name, 702openpic_hookup_cascade(u_int irq, char *name,
703 int (*cascade_fn)(struct pt_regs *)) 703 int (*cascade_fn)(void))
704{ 704{
705 openpic_cascade_irq = irq; 705 openpic_cascade_irq = irq;
706 openpic_cascade_fn = cascade_fn; 706 openpic_cascade_fn = cascade_fn;
@@ -857,16 +857,16 @@ static void openpic_end_ipi(unsigned int irq_nr)
857{ 857{
858} 858}
859 859
860static irqreturn_t openpic_ipi_action(int cpl, void *dev_id, struct pt_regs *regs) 860static irqreturn_t openpic_ipi_action(int cpl, void *dev_id)
861{ 861{
862 smp_message_recv(cpl-OPENPIC_VEC_IPI-open_pic_irq_offset, regs); 862 smp_message_recv(cpl-OPENPIC_VEC_IPI-open_pic_irq_offset);
863 return IRQ_HANDLED; 863 return IRQ_HANDLED;
864} 864}
865 865
866#endif /* CONFIG_SMP */ 866#endif /* CONFIG_SMP */
867 867
868int 868int
869openpic_get_irq(struct pt_regs *regs) 869openpic_get_irq(void)
870{ 870{
871 int irq = openpic_irq(); 871 int irq = openpic_irq();
872 872
@@ -876,7 +876,7 @@ openpic_get_irq(struct pt_regs *regs)
876 * This should move to irq.c eventually. -- paulus 876 * This should move to irq.c eventually. -- paulus
877 */ 877 */
878 if (irq == openpic_cascade_irq && openpic_cascade_fn != NULL) { 878 if (irq == openpic_cascade_irq && openpic_cascade_fn != NULL) {
879 int cirq = openpic_cascade_fn(regs); 879 int cirq = openpic_cascade_fn();
880 880
881 /* Allow for the cascade being shared with other devices */ 881 /* Allow for the cascade being shared with other devices */
882 if (cirq != -1) { 882 if (cirq != -1) {
diff --git a/arch/ppc/syslib/open_pic2.c b/arch/ppc/syslib/open_pic2.c
index e1ff971539ea..d585207f9f77 100644
--- a/arch/ppc/syslib/open_pic2.c
+++ b/arch/ppc/syslib/open_pic2.c
@@ -529,7 +529,7 @@ static void openpic2_end_irq(unsigned int irq_nr)
529} 529}
530 530
531int 531int
532openpic2_get_irq(struct pt_regs *regs) 532openpic2_get_irq(void)
533{ 533{
534 int irq = openpic2_irq(); 534 int irq = openpic2_irq();
535 535
diff --git a/arch/ppc/syslib/ppc403_pic.c b/arch/ppc/syslib/ppc403_pic.c
index 1584c8b1229f..607ebd111d44 100644
--- a/arch/ppc/syslib/ppc403_pic.c
+++ b/arch/ppc/syslib/ppc403_pic.c
@@ -42,7 +42,7 @@ static struct hw_interrupt_type ppc403_aic = {
42}; 42};
43 43
44int 44int
45ppc403_pic_get_irq(struct pt_regs *regs) 45ppc403_pic_get_irq(void)
46{ 46{
47 int irq; 47 int irq;
48 unsigned long bits; 48 unsigned long bits;
diff --git a/arch/ppc/syslib/ppc4xx_pic.c b/arch/ppc/syslib/ppc4xx_pic.c
index 745685df5984..ee0da4b4b993 100644
--- a/arch/ppc/syslib/ppc4xx_pic.c
+++ b/arch/ppc/syslib/ppc4xx_pic.c
@@ -96,7 +96,7 @@ UIC_HANDLERS(1);
96UIC_HANDLERS(2); 96UIC_HANDLERS(2);
97UIC_HANDLERS(3); 97UIC_HANDLERS(3);
98 98
99static int ppc4xx_pic_get_irq(struct pt_regs *regs) 99static int ppc4xx_pic_get_irq(void)
100{ 100{
101 u32 uic0 = mfdcr(DCRN_UIC_MSR(UIC0)); 101 u32 uic0 = mfdcr(DCRN_UIC_MSR(UIC0));
102 if (uic0 & UIC0_UIC1NC) 102 if (uic0 & UIC0_UIC1NC)
@@ -125,7 +125,7 @@ UIC_HANDLERS(0);
125UIC_HANDLERS(1); 125UIC_HANDLERS(1);
126UIC_HANDLERS(2); 126UIC_HANDLERS(2);
127 127
128static int ppc4xx_pic_get_irq(struct pt_regs *regs) 128static int ppc4xx_pic_get_irq(void)
129{ 129{
130 u32 uicb = mfdcr(DCRN_UIC_MSR(UICB)); 130 u32 uicb = mfdcr(DCRN_UIC_MSR(UICB));
131 if (uicb & UICB_UIC0NC) 131 if (uicb & UICB_UIC0NC)
@@ -158,7 +158,7 @@ static void __init ppc4xx_pic_impl_init(void)
158UIC_HANDLERS(0); 158UIC_HANDLERS(0);
159UIC_HANDLERS(1); 159UIC_HANDLERS(1);
160 160
161static int ppc4xx_pic_get_irq(struct pt_regs *regs) 161static int ppc4xx_pic_get_irq(void)
162{ 162{
163 u32 uic0 = mfdcr(DCRN_UIC_MSR(UIC0)); 163 u32 uic0 = mfdcr(DCRN_UIC_MSR(UIC0));
164 if (uic0 & UIC0_UIC1NC) 164 if (uic0 & UIC0_UIC1NC)
@@ -179,7 +179,7 @@ static void __init ppc4xx_pic_impl_init(void)
179#define ACK_UIC0_PARENT 179#define ACK_UIC0_PARENT
180UIC_HANDLERS(0); 180UIC_HANDLERS(0);
181 181
182static int ppc4xx_pic_get_irq(struct pt_regs *regs) 182static int ppc4xx_pic_get_irq(void)
183{ 183{
184 u32 uic0 = mfdcr(DCRN_UIC_MSR(UIC0)); 184 u32 uic0 = mfdcr(DCRN_UIC_MSR(UIC0));
185 return uic0 ? 32 - ffs(uic0) : -1; 185 return uic0 ? 32 - ffs(uic0) : -1;
diff --git a/arch/ppc/syslib/ppc85xx_rio.c b/arch/ppc/syslib/ppc85xx_rio.c
index d9b471b4d695..05b0e9415085 100644
--- a/arch/ppc/syslib/ppc85xx_rio.c
+++ b/arch/ppc/syslib/ppc85xx_rio.c
@@ -349,13 +349,12 @@ EXPORT_SYMBOL_GPL(rio_hw_add_outb_message);
349 * mpc85xx_rio_tx_handler - MPC85xx outbound message interrupt handler 349 * mpc85xx_rio_tx_handler - MPC85xx outbound message interrupt handler
350 * @irq: Linux interrupt number 350 * @irq: Linux interrupt number
351 * @dev_instance: Pointer to interrupt-specific data 351 * @dev_instance: Pointer to interrupt-specific data
352 * @regs: Register context
353 * 352 *
354 * Handles outbound message interrupts. Executes a register outbound 353 * Handles outbound message interrupts. Executes a register outbound
355 * mailbox event handler and acks the interrupt occurence. 354 * mailbox event handler and acks the interrupt occurence.
356 */ 355 */
357static irqreturn_t 356static irqreturn_t
358mpc85xx_rio_tx_handler(int irq, void *dev_instance, struct pt_regs *regs) 357mpc85xx_rio_tx_handler(int irq, void *dev_instance)
359{ 358{
360 int osr; 359 int osr;
361 struct rio_mport *port = (struct rio_mport *)dev_instance; 360 struct rio_mport *port = (struct rio_mport *)dev_instance;
@@ -517,13 +516,12 @@ void rio_close_outb_mbox(struct rio_mport *mport, int mbox)
517 * mpc85xx_rio_rx_handler - MPC85xx inbound message interrupt handler 516 * mpc85xx_rio_rx_handler - MPC85xx inbound message interrupt handler
518 * @irq: Linux interrupt number 517 * @irq: Linux interrupt number
519 * @dev_instance: Pointer to interrupt-specific data 518 * @dev_instance: Pointer to interrupt-specific data
520 * @regs: Register context
521 * 519 *
522 * Handles inbound message interrupts. Executes a registered inbound 520 * Handles inbound message interrupts. Executes a registered inbound
523 * mailbox event handler and acks the interrupt occurence. 521 * mailbox event handler and acks the interrupt occurence.
524 */ 522 */
525static irqreturn_t 523static irqreturn_t
526mpc85xx_rio_rx_handler(int irq, void *dev_instance, struct pt_regs *regs) 524mpc85xx_rio_rx_handler(int irq, void *dev_instance)
527{ 525{
528 int isr; 526 int isr;
529 struct rio_mport *port = (struct rio_mport *)dev_instance; 527 struct rio_mport *port = (struct rio_mport *)dev_instance;
@@ -736,13 +734,12 @@ EXPORT_SYMBOL_GPL(rio_hw_get_inb_message);
736 * mpc85xx_rio_dbell_handler - MPC85xx doorbell interrupt handler 734 * mpc85xx_rio_dbell_handler - MPC85xx doorbell interrupt handler
737 * @irq: Linux interrupt number 735 * @irq: Linux interrupt number
738 * @dev_instance: Pointer to interrupt-specific data 736 * @dev_instance: Pointer to interrupt-specific data
739 * @regs: Register context
740 * 737 *
741 * Handles doorbell interrupts. Parses a list of registered 738 * Handles doorbell interrupts. Parses a list of registered
742 * doorbell event handlers and executes a matching event handler. 739 * doorbell event handlers and executes a matching event handler.
743 */ 740 */
744static irqreturn_t 741static irqreturn_t
745mpc85xx_rio_dbell_handler(int irq, void *dev_instance, struct pt_regs *regs) 742mpc85xx_rio_dbell_handler(int irq, void *dev_instance)
746{ 743{
747 int dsr; 744 int dsr;
748 struct rio_mport *port = (struct rio_mport *)dev_instance; 745 struct rio_mport *port = (struct rio_mport *)dev_instance;
diff --git a/arch/ppc/syslib/ppc8xx_pic.c b/arch/ppc/syslib/ppc8xx_pic.c
index d6c25fe25011..e8619c750732 100644
--- a/arch/ppc/syslib/ppc8xx_pic.c
+++ b/arch/ppc/syslib/ppc8xx_pic.c
@@ -10,7 +10,7 @@
10#include <asm/mpc8xx.h> 10#include <asm/mpc8xx.h>
11#include "ppc8xx_pic.h" 11#include "ppc8xx_pic.h"
12 12
13extern int cpm_get_irq(struct pt_regs *regs); 13extern int cpm_get_irq(void);
14 14
15/* The 8xx internal interrupt controller. It is usually 15/* The 8xx internal interrupt controller. It is usually
16 * the only interrupt controller. Some boards, like the MBX and 16 * the only interrupt controller. Some boards, like the MBX and
@@ -96,7 +96,7 @@ m8xx_get_irq(struct pt_regs *regs)
96 * get back SIU_LEVEL7. In this case, return -1 96 * get back SIU_LEVEL7. In this case, return -1
97 */ 97 */
98 if (irq == CPM_INTERRUPT) 98 if (irq == CPM_INTERRUPT)
99 irq = CPM_IRQ_OFFSET + cpm_get_irq(regs); 99 irq = CPM_IRQ_OFFSET + cpm_get_irq();
100#if defined(CONFIG_PCI) 100#if defined(CONFIG_PCI)
101 else if (irq == ISA_BRIDGE_INT) { 101 else if (irq == ISA_BRIDGE_INT) {
102 int isa_irq; 102 int isa_irq;
diff --git a/arch/ppc/syslib/xilinx_pic.c b/arch/ppc/syslib/xilinx_pic.c
index 39a93dc6375b..6fd4cdbada72 100644
--- a/arch/ppc/syslib/xilinx_pic.c
+++ b/arch/ppc/syslib/xilinx_pic.c
@@ -86,7 +86,7 @@ static struct hw_interrupt_type xilinx_intc = {
86}; 86};
87 87
88int 88int
89xilinx_pic_get_irq(struct pt_regs *regs) 89xilinx_pic_get_irq(void)
90{ 90{
91 int irq; 91 int irq;
92 92
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 51c2dfe89c62..608193cfe43f 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -30,6 +30,9 @@ config GENERIC_CALIBRATE_DELAY
30 bool 30 bool
31 default y 31 default y
32 32
33config GENERIC_TIME
34 def_bool y
35
33config GENERIC_BUST_SPINLOCK 36config GENERIC_BUST_SPINLOCK
34 bool 37 bool
35 38
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index b6cad75fd1f4..a3257398ea8d 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/defconfig
@@ -9,6 +9,7 @@ CONFIG_STACKTRACE_SUPPORT=y
9CONFIG_RWSEM_XCHGADD_ALGORITHM=y 9CONFIG_RWSEM_XCHGADD_ALGORITHM=y
10CONFIG_GENERIC_HWEIGHT=y 10CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_CALIBRATE_DELAY=y 11CONFIG_GENERIC_CALIBRATE_DELAY=y
12CONFIG_GENERIC_TIME=y
12CONFIG_S390=y 13CONFIG_S390=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 14CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 15
diff --git a/arch/s390/kernel/s390_ext.c b/arch/s390/kernel/s390_ext.c
index c1b383537fec..c49ab8c784d2 100644
--- a/arch/s390/kernel/s390_ext.c
+++ b/arch/s390/kernel/s390_ext.c
@@ -16,6 +16,7 @@
16 16
17#include <asm/lowcore.h> 17#include <asm/lowcore.h>
18#include <asm/s390_ext.h> 18#include <asm/s390_ext.h>
19#include <asm/irq_regs.h>
19#include <asm/irq.h> 20#include <asm/irq.h>
20 21
21/* 22/*
@@ -114,26 +115,28 @@ void do_extint(struct pt_regs *regs, unsigned short code)
114{ 115{
115 ext_int_info_t *p; 116 ext_int_info_t *p;
116 int index; 117 int index;
118 struct pt_regs *old_regs;
117 119
118 irq_enter(); 120 irq_enter();
121 old_regs = set_irq_regs(regs);
119 asm volatile ("mc 0,0"); 122 asm volatile ("mc 0,0");
120 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) 123 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer)
121 /** 124 /**
122 * Make sure that the i/o interrupt did not "overtake" 125 * Make sure that the i/o interrupt did not "overtake"
123 * the last HZ timer interrupt. 126 * the last HZ timer interrupt.
124 */ 127 */
125 account_ticks(regs); 128 account_ticks();
126 kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; 129 kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++;
127 index = ext_hash(code); 130 index = ext_hash(code);
128 for (p = ext_int_hash[index]; p; p = p->next) { 131 for (p = ext_int_hash[index]; p; p = p->next) {
129 if (likely(p->code == code)) { 132 if (likely(p->code == code)) {
130 if (likely(p->handler)) 133 if (likely(p->handler))
131 p->handler(regs, code); 134 p->handler(code);
132 } 135 }
133 } 136 }
137 set_irq_regs(old_regs);
134 irq_exit(); 138 irq_exit();
135} 139}
136 140
137EXPORT_SYMBOL(register_external_interrupt); 141EXPORT_SYMBOL(register_external_interrupt);
138EXPORT_SYMBOL(unregister_external_interrupt); 142EXPORT_SYMBOL(unregister_external_interrupt);
139
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index a8e6199755d4..62822245f9be 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -339,7 +339,7 @@ void machine_power_off_smp(void)
339 * cpus are handled. 339 * cpus are handled.
340 */ 340 */
341 341
342void do_ext_call_interrupt(struct pt_regs *regs, __u16 code) 342void do_ext_call_interrupt(__u16 code)
343{ 343{
344 unsigned long bits; 344 unsigned long bits;
345 345
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index 4bf66cc4a267..6cceed4df73e 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -28,12 +28,14 @@
28#include <linux/profile.h> 28#include <linux/profile.h>
29#include <linux/timex.h> 29#include <linux/timex.h>
30#include <linux/notifier.h> 30#include <linux/notifier.h>
31#include <linux/clocksource.h>
31 32
32#include <asm/uaccess.h> 33#include <asm/uaccess.h>
33#include <asm/delay.h> 34#include <asm/delay.h>
34#include <asm/s390_ext.h> 35#include <asm/s390_ext.h>
35#include <asm/div64.h> 36#include <asm/div64.h>
36#include <asm/irq.h> 37#include <asm/irq.h>
38#include <asm/irq_regs.h>
37#include <asm/timer.h> 39#include <asm/timer.h>
38 40
39/* change this if you have some constant time drift */ 41/* change this if you have some constant time drift */
@@ -81,78 +83,10 @@ void tod_to_timeval(__u64 todval, struct timespec *xtime)
81 xtime->tv_nsec = ((todval * 1000) >> 12); 83 xtime->tv_nsec = ((todval * 1000) >> 12);
82} 84}
83 85
84static inline unsigned long do_gettimeoffset(void)
85{
86 __u64 now;
87
88 now = (get_clock() - jiffies_timer_cc) >> 12;
89 now -= (__u64) jiffies * USECS_PER_JIFFY;
90 return (unsigned long) now;
91}
92
93/*
94 * This version of gettimeofday has microsecond resolution.
95 */
96void do_gettimeofday(struct timeval *tv)
97{
98 unsigned long flags;
99 unsigned long seq;
100 unsigned long usec, sec;
101
102 do {
103 seq = read_seqbegin_irqsave(&xtime_lock, flags);
104
105 sec = xtime.tv_sec;
106 usec = xtime.tv_nsec / 1000 + do_gettimeoffset();
107 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
108
109 while (usec >= 1000000) {
110 usec -= 1000000;
111 sec++;
112 }
113
114 tv->tv_sec = sec;
115 tv->tv_usec = usec;
116}
117
118EXPORT_SYMBOL(do_gettimeofday);
119
120int do_settimeofday(struct timespec *tv)
121{
122 time_t wtm_sec, sec = tv->tv_sec;
123 long wtm_nsec, nsec = tv->tv_nsec;
124
125 if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
126 return -EINVAL;
127
128 write_seqlock_irq(&xtime_lock);
129 /* This is revolting. We need to set the xtime.tv_nsec
130 * correctly. However, the value in this location is
131 * is value at the last tick.
132 * Discover what correction gettimeofday
133 * would have done, and then undo it!
134 */
135 nsec -= do_gettimeoffset() * 1000;
136
137 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
138 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
139
140 set_normalized_timespec(&xtime, sec, nsec);
141 set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec);
142
143 ntp_clear();
144 write_sequnlock_irq(&xtime_lock);
145 clock_was_set();
146 return 0;
147}
148
149EXPORT_SYMBOL(do_settimeofday);
150
151
152#ifdef CONFIG_PROFILING 86#ifdef CONFIG_PROFILING
153#define s390_do_profile(regs) profile_tick(CPU_PROFILING, regs) 87#define s390_do_profile() profile_tick(CPU_PROFILING)
154#else 88#else
155#define s390_do_profile(regs) do { ; } while(0) 89#define s390_do_profile() do { ; } while(0)
156#endif /* CONFIG_PROFILING */ 90#endif /* CONFIG_PROFILING */
157 91
158 92
@@ -160,7 +94,7 @@ EXPORT_SYMBOL(do_settimeofday);
160 * timer_interrupt() needs to keep up the real-time clock, 94 * timer_interrupt() needs to keep up the real-time clock,
161 * as well as call the "do_timer()" routine every clocktick 95 * as well as call the "do_timer()" routine every clocktick
162 */ 96 */
163void account_ticks(struct pt_regs *regs) 97void account_ticks(void)
164{ 98{
165 __u64 tmp; 99 __u64 tmp;
166 __u32 ticks; 100 __u32 ticks;
@@ -221,10 +155,10 @@ void account_ticks(struct pt_regs *regs)
221 account_tick_vtime(current); 155 account_tick_vtime(current);
222#else 156#else
223 while (ticks--) 157 while (ticks--)
224 update_process_times(user_mode(regs)); 158 update_process_times(user_mode(get_irq_regs()));
225#endif 159#endif
226 160
227 s390_do_profile(regs); 161 s390_do_profile();
228} 162}
229 163
230#ifdef CONFIG_NO_IDLE_HZ 164#ifdef CONFIG_NO_IDLE_HZ
@@ -285,9 +219,11 @@ static inline void stop_hz_timer(void)
285 */ 219 */
286static inline void start_hz_timer(void) 220static inline void start_hz_timer(void)
287{ 221{
222 BUG_ON(!in_interrupt());
223
288 if (!cpu_isset(smp_processor_id(), nohz_cpu_mask)) 224 if (!cpu_isset(smp_processor_id(), nohz_cpu_mask))
289 return; 225 return;
290 account_ticks(task_pt_regs(current)); 226 account_ticks();
291 cpu_clear(smp_processor_id(), nohz_cpu_mask); 227 cpu_clear(smp_processor_id(), nohz_cpu_mask);
292} 228}
293 229
@@ -337,6 +273,22 @@ void init_cpu_timer(void)
337 273
338extern void vtime_init(void); 274extern void vtime_init(void);
339 275
276static cycle_t read_tod_clock(void)
277{
278 return get_clock();
279}
280
281static struct clocksource clocksource_tod = {
282 .name = "tod",
283 .rating = 100,
284 .read = read_tod_clock,
285 .mask = -1ULL,
286 .mult = 1000,
287 .shift = 12,
288 .is_continuous = 1,
289};
290
291
340/* 292/*
341 * Initialize the TOD clock and the CPU timer of 293 * Initialize the TOD clock and the CPU timer of
342 * the boot cpu. 294 * the boot cpu.
@@ -381,6 +333,9 @@ void __init time_init(void)
381 &ext_int_info_cc) != 0) 333 &ext_int_info_cc) != 0)
382 panic("Couldn't request external interrupt 0x1004"); 334 panic("Couldn't request external interrupt 0x1004");
383 335
336 if (clocksource_register(&clocksource_tod) != 0)
337 panic("Could not register TOD clock source");
338
384 init_cpu_timer(); 339 init_cpu_timer();
385 340
386#ifdef CONFIG_NO_IDLE_HZ 341#ifdef CONFIG_NO_IDLE_HZ
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 3eb4fab048b8..66375a5e3d12 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -61,7 +61,7 @@ extern pgm_check_handler_t do_dat_exception;
61#ifdef CONFIG_PFAULT 61#ifdef CONFIG_PFAULT
62extern int pfault_init(void); 62extern int pfault_init(void);
63extern void pfault_fini(void); 63extern void pfault_fini(void);
64extern void pfault_interrupt(struct pt_regs *regs, __u16 error_code); 64extern void pfault_interrupt(__u16 error_code);
65static ext_int_info_t ext_int_pfault; 65static ext_int_info_t ext_int_pfault;
66#endif 66#endif
67extern pgm_check_handler_t do_monitor_call; 67extern pgm_check_handler_t do_monitor_call;
@@ -474,7 +474,7 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code)
474 signal = math_emu_b3(opcode, regs); 474 signal = math_emu_b3(opcode, regs);
475 } else if (opcode[0] == 0xed) { 475 } else if (opcode[0] == 0xed) {
476 get_user(*((__u32 *) (opcode+2)), 476 get_user(*((__u32 *) (opcode+2)),
477 (__u32 *)(location+1)); 477 (__u32 __user *)(location+1));
478 signal = math_emu_ed(opcode, regs); 478 signal = math_emu_ed(opcode, regs);
479 } else if (*((__u16 *) opcode) == 0xb299) { 479 } else if (*((__u16 *) opcode) == 0xb299) {
480 get_user(*((__u16 *) (opcode+2)), location+1); 480 get_user(*((__u16 *) (opcode+2)), location+1);
@@ -499,7 +499,7 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code)
499 info.si_signo = signal; 499 info.si_signo = signal;
500 info.si_errno = 0; 500 info.si_errno = 0;
501 info.si_code = SEGV_MAPERR; 501 info.si_code = SEGV_MAPERR;
502 info.si_addr = (void *) location; 502 info.si_addr = (void __user *) location;
503 do_trap(interruption_code, signal, 503 do_trap(interruption_code, signal,
504 "user address fault", regs, &info); 504 "user address fault", regs, &info);
505 } else 505 } else
@@ -520,10 +520,10 @@ asmlinkage void
520specification_exception(struct pt_regs * regs, long interruption_code) 520specification_exception(struct pt_regs * regs, long interruption_code)
521{ 521{
522 __u8 opcode[6]; 522 __u8 opcode[6];
523 __u16 *location = NULL; 523 __u16 __user *location = NULL;
524 int signal = 0; 524 int signal = 0;
525 525
526 location = (__u16 *) get_check_address(regs); 526 location = (__u16 __user *) get_check_address(regs);
527 527
528 /* 528 /*
529 * We got all needed information from the lowcore and can 529 * We got all needed information from the lowcore and can
@@ -632,7 +632,7 @@ asmlinkage void data_exception(struct pt_regs * regs, long interruption_code)
632 break; 632 break;
633 case 0xed: 633 case 0xed:
634 get_user(*((__u32 *) (opcode+2)), 634 get_user(*((__u32 *) (opcode+2)),
635 (__u32 *)(location+1)); 635 (__u32 __user *)(location+1));
636 signal = math_emu_ed(opcode, regs); 636 signal = math_emu_ed(opcode, regs);
637 break; 637 break;
638 case 0xb2: 638 case 0xb2:
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 2306cd83fca1..1d7d3938b2b1 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -22,6 +22,7 @@
22 22
23#include <asm/s390_ext.h> 23#include <asm/s390_ext.h>
24#include <asm/timer.h> 24#include <asm/timer.h>
25#include <asm/irq_regs.h>
25 26
26static ext_int_info_t ext_int_info_timer; 27static ext_int_info_t ext_int_info_timer;
27DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer); 28DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer);
@@ -241,7 +242,7 @@ static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs)
241/* 242/*
242 * Handler for the virtual CPU timer. 243 * Handler for the virtual CPU timer.
243 */ 244 */
244static void do_cpu_timer_interrupt(struct pt_regs *regs, __u16 error_code) 245static void do_cpu_timer_interrupt(__u16 error_code)
245{ 246{
246 int cpu; 247 int cpu;
247 __u64 next, delta; 248 __u64 next, delta;
@@ -274,7 +275,7 @@ static void do_cpu_timer_interrupt(struct pt_regs *regs, __u16 error_code)
274 list_move_tail(&event->entry, &cb_list); 275 list_move_tail(&event->entry, &cb_list);
275 } 276 }
276 spin_unlock(&vt_list->lock); 277 spin_unlock(&vt_list->lock);
277 do_callbacks(&cb_list, regs); 278 do_callbacks(&cb_list, get_irq_regs());
278 279
279 /* next event is first in list */ 280 /* next event is first in list */
280 spin_lock(&vt_list->lock); 281 spin_lock(&vt_list->lock);
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 9c3c19fe62fc..1c323bbfda91 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -451,7 +451,7 @@ void pfault_fini(void)
451} 451}
452 452
453asmlinkage void 453asmlinkage void
454pfault_interrupt(struct pt_regs *regs, __u16 error_code) 454pfault_interrupt(__u16 error_code)
455{ 455{
456 struct task_struct *tsk; 456 struct task_struct *tsk;
457 __u16 subcode; 457 __u16 subcode;
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c
index 72f0201051a0..b3b6680a2a30 100644
--- a/arch/sparc/kernel/irq.c
+++ b/arch/sparc/kernel/irq.c
@@ -46,6 +46,7 @@
46#include <asm/pgtable.h> 46#include <asm/pgtable.h>
47#include <asm/pcic.h> 47#include <asm/pcic.h>
48#include <asm/cacheflush.h> 48#include <asm/cacheflush.h>
49#include <asm/irq_regs.h>
49 50
50#ifdef CONFIG_SMP 51#ifdef CONFIG_SMP
51#define SMP_NOP2 "nop; nop;\n\t" 52#define SMP_NOP2 "nop; nop;\n\t"
@@ -133,8 +134,8 @@ static void irq_panic(void)
133 prom_halt(); 134 prom_halt();
134} 135}
135 136
136void (*sparc_init_timers)(irqreturn_t (*)(int, void *,struct pt_regs *)) = 137void (*sparc_init_timers)(irq_handler_t ) =
137 (void (*)(irqreturn_t (*)(int, void *,struct pt_regs *))) irq_panic; 138 (void (*)(irq_handler_t )) irq_panic;
138 139
139/* 140/*
140 * Dave Redman (djhr@tadpole.co.uk) 141 * Dave Redman (djhr@tadpole.co.uk)
@@ -319,12 +320,14 @@ void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs)
319 320
320void handler_irq(int irq, struct pt_regs * regs) 321void handler_irq(int irq, struct pt_regs * regs)
321{ 322{
323 struct pt_regs *old_regs;
322 struct irqaction * action; 324 struct irqaction * action;
323 int cpu = smp_processor_id(); 325 int cpu = smp_processor_id();
324#ifdef CONFIG_SMP 326#ifdef CONFIG_SMP
325 extern void smp4m_irq_rotate(int cpu); 327 extern void smp4m_irq_rotate(int cpu);
326#endif 328#endif
327 329
330 old_regs = set_irq_regs(regs);
328 irq_enter(); 331 irq_enter();
329 disable_pil_irq(irq); 332 disable_pil_irq(irq);
330#ifdef CONFIG_SMP 333#ifdef CONFIG_SMP
@@ -338,27 +341,31 @@ void handler_irq(int irq, struct pt_regs * regs)
338 do { 341 do {
339 if (!action || !action->handler) 342 if (!action || !action->handler)
340 unexpected_irq(irq, NULL, regs); 343 unexpected_irq(irq, NULL, regs);
341 action->handler(irq, action->dev_id, regs); 344 action->handler(irq, action->dev_id);
342 action = action->next; 345 action = action->next;
343 } while (action); 346 } while (action);
344 sparc_irq[irq].flags &= ~SPARC_IRQ_INPROGRESS; 347 sparc_irq[irq].flags &= ~SPARC_IRQ_INPROGRESS;
345 enable_pil_irq(irq); 348 enable_pil_irq(irq);
346 irq_exit(); 349 irq_exit();
350 set_irq_regs(old_regs);
347} 351}
348 352
349#ifdef CONFIG_BLK_DEV_FD 353#ifdef CONFIG_BLK_DEV_FD
350extern void floppy_interrupt(int irq, void *dev_id, struct pt_regs *regs); 354extern void floppy_interrupt(int irq, void *dev_id)
351 355
352void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs) 356void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs)
353{ 357{
358 struct pt_regs *old_regs;
354 int cpu = smp_processor_id(); 359 int cpu = smp_processor_id();
355 360
361 old_regs = set_irq_regs(regs);
356 disable_pil_irq(irq); 362 disable_pil_irq(irq);
357 irq_enter(); 363 irq_enter();
358 kstat_cpu(cpu).irqs[irq]++; 364 kstat_cpu(cpu).irqs[irq]++;
359 floppy_interrupt(irq, dev_id, regs); 365 floppy_interrupt(irq, dev_id);
360 irq_exit(); 366 irq_exit();
361 enable_pil_irq(irq); 367 enable_pil_irq(irq);
368 set_irq_regs(old_regs);
362 // XXX Eek, it's totally changed with preempt_count() and such 369 // XXX Eek, it's totally changed with preempt_count() and such
363 // if (softirq_pending(cpu)) 370 // if (softirq_pending(cpu))
364 // do_softirq(); 371 // do_softirq();
@@ -369,7 +376,7 @@ void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs)
369 * thus no sharing possible. 376 * thus no sharing possible.
370 */ 377 */
371int request_fast_irq(unsigned int irq, 378int request_fast_irq(unsigned int irq,
372 irqreturn_t (*handler)(int, void *, struct pt_regs *), 379 irq_handler_t handler,
373 unsigned long irqflags, const char *devname) 380 unsigned long irqflags, const char *devname)
374{ 381{
375 struct irqaction *action; 382 struct irqaction *action;
@@ -468,7 +475,7 @@ out:
468} 475}
469 476
470int request_irq(unsigned int irq, 477int request_irq(unsigned int irq,
471 irqreturn_t (*handler)(int, void *, struct pt_regs *), 478 irq_handler_t handler,
472 unsigned long irqflags, const char * devname, void *dev_id) 479 unsigned long irqflags, const char * devname, void *dev_id)
473{ 480{
474 struct irqaction * action, **actionp; 481 struct irqaction * action, **actionp;
@@ -478,7 +485,7 @@ int request_irq(unsigned int irq,
478 485
479 if (sparc_cpu_model == sun4d) { 486 if (sparc_cpu_model == sun4d) {
480 extern int sun4d_request_irq(unsigned int, 487 extern int sun4d_request_irq(unsigned int,
481 irqreturn_t (*)(int, void *, struct pt_regs *), 488 irq_handler_t ,
482 unsigned long, const char *, void *); 489 unsigned long, const char *, void *);
483 return sun4d_request_irq(irq, handler, irqflags, devname, dev_id); 490 return sun4d_request_irq(irq, handler, irqflags, devname, dev_id);
484 } 491 }
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index edb6cc665f56..b4e50ae323bf 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -708,13 +708,13 @@ static void pcic_clear_clock_irq(void)
708 pcic_timer_dummy = readl(pcic0.pcic_regs+PCI_SYS_LIMIT); 708 pcic_timer_dummy = readl(pcic0.pcic_regs+PCI_SYS_LIMIT);
709} 709}
710 710
711static irqreturn_t pcic_timer_handler (int irq, void *h, struct pt_regs *regs) 711static irqreturn_t pcic_timer_handler (int irq, void *h)
712{ 712{
713 write_seqlock(&xtime_lock); /* Dummy, to show that we remember */ 713 write_seqlock(&xtime_lock); /* Dummy, to show that we remember */
714 pcic_clear_clock_irq(); 714 pcic_clear_clock_irq();
715 do_timer(1); 715 do_timer(1);
716#ifndef CONFIG_SMP 716#ifndef CONFIG_SMP
717 update_process_times(user_mode(regs)); 717 update_process_times(user_mode(get_irq_regs()));
718#endif 718#endif
719 write_sequnlock(&xtime_lock); 719 write_sequnlock(&xtime_lock);
720 return IRQ_HANDLED; 720 return IRQ_HANDLED;
diff --git a/arch/sparc/kernel/prom.c b/arch/sparc/kernel/prom.c
index 4ca9e5fc97f4..2cc302b6bec0 100644
--- a/arch/sparc/kernel/prom.c
+++ b/arch/sparc/kernel/prom.c
@@ -243,7 +243,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
243 void *old_val = prop->value; 243 void *old_val = prop->value;
244 int ret; 244 int ret;
245 245
246 ret = prom_setprop(dp->node, name, val, len); 246 ret = prom_setprop(dp->node, (char *) name, val, len);
247 err = -EINVAL; 247 err = -EINVAL;
248 if (ret >= 0) { 248 if (ret >= 0) {
249 prop->value = new_val; 249 prop->value = new_val;
@@ -477,7 +477,10 @@ static struct property * __init build_one_prop(phandle node, char *prev, char *s
477 p->length = 0; 477 p->length = 0;
478 } else { 478 } else {
479 p->value = prom_early_alloc(p->length + 1); 479 p->value = prom_early_alloc(p->length + 1);
480 prom_getproperty(node, p->name, p->value, p->length); 480 len = prom_getproperty(node, p->name, p->value,
481 p->length);
482 if (len <= 0)
483 p->length = 0;
481 ((unsigned char *)p->value)[p->length] = '\0'; 484 ((unsigned char *)p->value)[p->length] = '\0';
482 } 485 }
483 } 486 }
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c
index 4d441a554d35..33dadd9f2871 100644
--- a/arch/sparc/kernel/sparc_ksyms.c
+++ b/arch/sparc/kernel/sparc_ksyms.c
@@ -87,6 +87,7 @@ extern void ___set_bit(void);
87extern void ___clear_bit(void); 87extern void ___clear_bit(void);
88extern void ___change_bit(void); 88extern void ___change_bit(void);
89extern void ___rw_read_enter(void); 89extern void ___rw_read_enter(void);
90extern void ___rw_read_try(void);
90extern void ___rw_read_exit(void); 91extern void ___rw_read_exit(void);
91extern void ___rw_write_enter(void); 92extern void ___rw_write_enter(void);
92 93
@@ -104,8 +105,9 @@ extern unsigned _Urem(unsigned, unsigned);
104EXPORT_SYMBOL(sparc_cpu_model); 105EXPORT_SYMBOL(sparc_cpu_model);
105EXPORT_SYMBOL(kernel_thread); 106EXPORT_SYMBOL(kernel_thread);
106#ifdef CONFIG_SMP 107#ifdef CONFIG_SMP
107// XXX find what uses (or used) these. 108// XXX find what uses (or used) these. AV: see asm/spinlock.h
108EXPORT_SYMBOL(___rw_read_enter); 109EXPORT_SYMBOL(___rw_read_enter);
110EXPORT_SYMBOL(___rw_read_try);
109EXPORT_SYMBOL(___rw_read_exit); 111EXPORT_SYMBOL(___rw_read_exit);
110EXPORT_SYMBOL(___rw_write_enter); 112EXPORT_SYMBOL(___rw_write_enter);
111#endif 113#endif
diff --git a/arch/sparc/kernel/sun4c_irq.c b/arch/sparc/kernel/sun4c_irq.c
index 4be2c86ea540..009e891a4329 100644
--- a/arch/sparc/kernel/sun4c_irq.c
+++ b/arch/sparc/kernel/sun4c_irq.c
@@ -154,7 +154,7 @@ static void sun4c_load_profile_irq(int cpu, unsigned int limit)
154 /* Errm.. not sure how to do this.. */ 154 /* Errm.. not sure how to do this.. */
155} 155}
156 156
157static void __init sun4c_init_timers(irqreturn_t (*counter_fn)(int, void *, struct pt_regs *)) 157static void __init sun4c_init_timers(irq_handler_t counter_fn)
158{ 158{
159 int irq; 159 int irq;
160 160
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c
index 74eed9775ac0..d4f9da8170c5 100644
--- a/arch/sparc/kernel/sun4d_irq.c
+++ b/arch/sparc/kernel/sun4d_irq.c
@@ -38,6 +38,7 @@
38#include <asm/sbus.h> 38#include <asm/sbus.h>
39#include <asm/sbi.h> 39#include <asm/sbi.h>
40#include <asm/cacheflush.h> 40#include <asm/cacheflush.h>
41#include <asm/irq_regs.h>
41 42
42/* If you trust current SCSI layer to handle different SCSI IRQs, enable this. I don't trust it... -jj */ 43/* If you trust current SCSI layer to handle different SCSI IRQs, enable this. I don't trust it... -jj */
43/* #define DISTRIBUTE_IRQS */ 44/* #define DISTRIBUTE_IRQS */
@@ -198,6 +199,7 @@ extern void unexpected_irq(int, void *, struct pt_regs *);
198 199
199void sun4d_handler_irq(int irq, struct pt_regs * regs) 200void sun4d_handler_irq(int irq, struct pt_regs * regs)
200{ 201{
202 struct pt_regs *old_regs;
201 struct irqaction * action; 203 struct irqaction * action;
202 int cpu = smp_processor_id(); 204 int cpu = smp_processor_id();
203 /* SBUS IRQ level (1 - 7) */ 205 /* SBUS IRQ level (1 - 7) */
@@ -208,6 +210,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs)
208 210
209 cc_set_iclr(1 << irq); 211 cc_set_iclr(1 << irq);
210 212
213 old_regs = set_irq_regs(regs);
211 irq_enter(); 214 irq_enter();
212 kstat_cpu(cpu).irqs[irq]++; 215 kstat_cpu(cpu).irqs[irq]++;
213 if (!sbusl) { 216 if (!sbusl) {
@@ -215,7 +218,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs)
215 if (!action) 218 if (!action)
216 unexpected_irq(irq, NULL, regs); 219 unexpected_irq(irq, NULL, regs);
217 do { 220 do {
218 action->handler(irq, action->dev_id, regs); 221 action->handler(irq, action->dev_id);
219 action = action->next; 222 action = action->next;
220 } while (action); 223 } while (action);
221 } else { 224 } else {
@@ -242,7 +245,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs)
242 if (!action) 245 if (!action)
243 unexpected_irq(irq, NULL, regs); 246 unexpected_irq(irq, NULL, regs);
244 do { 247 do {
245 action->handler(irq, action->dev_id, regs); 248 action->handler(irq, action->dev_id);
246 action = action->next; 249 action = action->next;
247 } while (action); 250 } while (action);
248 release_sbi(SBI2DEVID(sbino), slot); 251 release_sbi(SBI2DEVID(sbino), slot);
@@ -250,6 +253,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs)
250 } 253 }
251 } 254 }
252 irq_exit(); 255 irq_exit();
256 set_irq_regs(old_regs);
253} 257}
254 258
255unsigned int sun4d_build_irq(struct sbus_dev *sdev, int irq) 259unsigned int sun4d_build_irq(struct sbus_dev *sdev, int irq)
@@ -272,7 +276,7 @@ unsigned int sun4d_sbint_to_irq(struct sbus_dev *sdev, unsigned int sbint)
272} 276}
273 277
274int sun4d_request_irq(unsigned int irq, 278int sun4d_request_irq(unsigned int irq,
275 irqreturn_t (*handler)(int, void *, struct pt_regs *), 279 irq_handler_t handler,
276 unsigned long irqflags, const char * devname, void *dev_id) 280 unsigned long irqflags, const char * devname, void *dev_id)
277{ 281{
278 struct irqaction *action, *tmp = NULL, **actionp; 282 struct irqaction *action, *tmp = NULL, **actionp;
@@ -466,7 +470,7 @@ static void sun4d_load_profile_irq(int cpu, unsigned int limit)
466 bw_set_prof_limit(cpu, limit); 470 bw_set_prof_limit(cpu, limit);
467} 471}
468 472
469static void __init sun4d_init_timers(irqreturn_t (*counter_fn)(int, void *, struct pt_regs *)) 473static void __init sun4d_init_timers(irq_handler_t counter_fn)
470{ 474{
471 int irq; 475 int irq;
472 int cpu; 476 int cpu;
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index 3ff4edd32815..c80ea61e8ba0 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -23,6 +23,7 @@
23 23
24#include <asm/ptrace.h> 24#include <asm/ptrace.h>
25#include <asm/atomic.h> 25#include <asm/atomic.h>
26#include <asm/irq_regs.h>
26 27
27#include <asm/delay.h> 28#include <asm/delay.h>
28#include <asm/irq.h> 29#include <asm/irq.h>
@@ -369,10 +370,12 @@ void smp4d_message_pass(int target, int msg, unsigned long data, int wait)
369 370
370void smp4d_percpu_timer_interrupt(struct pt_regs *regs) 371void smp4d_percpu_timer_interrupt(struct pt_regs *regs)
371{ 372{
373 struct pt_regs *old_regs;
372 int cpu = hard_smp4d_processor_id(); 374 int cpu = hard_smp4d_processor_id();
373 static int cpu_tick[NR_CPUS]; 375 static int cpu_tick[NR_CPUS];
374 static char led_mask[] = { 0xe, 0xd, 0xb, 0x7, 0xb, 0xd }; 376 static char led_mask[] = { 0xe, 0xd, 0xb, 0x7, 0xb, 0xd };
375 377
378 old_regs = set_irq_regs(regs);
376 bw_get_prof_limit(cpu); 379 bw_get_prof_limit(cpu);
377 bw_clear_intr_mask(0, 1); /* INTR_TABLE[0] & 1 is Profile IRQ */ 380 bw_clear_intr_mask(0, 1); /* INTR_TABLE[0] & 1 is Profile IRQ */
378 381
@@ -384,7 +387,7 @@ void smp4d_percpu_timer_interrupt(struct pt_regs *regs)
384 show_leds(cpu); 387 show_leds(cpu);
385 } 388 }
386 389
387 profile_tick(CPU_PROFILING, regs); 390 profile_tick(CPU_PROFILING);
388 391
389 if(!--prof_counter(cpu)) { 392 if(!--prof_counter(cpu)) {
390 int user = user_mode(regs); 393 int user = user_mode(regs);
@@ -395,6 +398,7 @@ void smp4d_percpu_timer_interrupt(struct pt_regs *regs)
395 398
396 prof_counter(cpu) = prof_multiplier(cpu); 399 prof_counter(cpu) = prof_multiplier(cpu);
397 } 400 }
401 set_irq_regs(old_regs);
398} 402}
399 403
400extern unsigned int lvl14_resolution; 404extern unsigned int lvl14_resolution;
diff --git a/arch/sparc/kernel/sun4m_irq.c b/arch/sparc/kernel/sun4m_irq.c
index 7cefa301efea..a654c16f4027 100644
--- a/arch/sparc/kernel/sun4m_irq.c
+++ b/arch/sparc/kernel/sun4m_irq.c
@@ -228,7 +228,7 @@ static void sun4m_load_profile_irq(int cpu, unsigned int limit)
228 sun4m_timers->cpu_timers[cpu].l14_timer_limit = limit; 228 sun4m_timers->cpu_timers[cpu].l14_timer_limit = limit;
229} 229}
230 230
231static void __init sun4m_init_timers(irqreturn_t (*counter_fn)(int, void *, struct pt_regs *)) 231static void __init sun4m_init_timers(irq_handler_t counter_fn)
232{ 232{
233 int reg_count, irq, cpu; 233 int reg_count, irq, cpu;
234 struct linux_prom_registers cnt_regs[PROMREG_MAX]; 234 struct linux_prom_registers cnt_regs[PROMREG_MAX];
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 7d4a649138f6..e2d9c018bd56 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -19,6 +19,7 @@
19#include <linux/profile.h> 19#include <linux/profile.h>
20#include <asm/cacheflush.h> 20#include <asm/cacheflush.h>
21#include <asm/tlbflush.h> 21#include <asm/tlbflush.h>
22#include <asm/irq_regs.h>
22 23
23#include <asm/ptrace.h> 24#include <asm/ptrace.h>
24#include <asm/atomic.h> 25#include <asm/atomic.h>
@@ -353,11 +354,14 @@ void smp4m_cross_call_irq(void)
353 354
354void smp4m_percpu_timer_interrupt(struct pt_regs *regs) 355void smp4m_percpu_timer_interrupt(struct pt_regs *regs)
355{ 356{
357 struct pt_regs *old_regs;
356 int cpu = smp_processor_id(); 358 int cpu = smp_processor_id();
357 359
360 old_regs = set_irq_regs(regs);
361
358 clear_profile_irq(cpu); 362 clear_profile_irq(cpu);
359 363
360 profile_tick(CPU_PROFILING, regs); 364 profile_tick(CPU_PROFILING);
361 365
362 if(!--prof_counter(cpu)) { 366 if(!--prof_counter(cpu)) {
363 int user = user_mode(regs); 367 int user = user_mode(regs);
@@ -368,6 +372,7 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs)
368 372
369 prof_counter(cpu) = prof_multiplier(cpu); 373 prof_counter(cpu) = prof_multiplier(cpu);
370 } 374 }
375 set_irq_regs(old_regs);
371} 376}
372 377
373extern unsigned int lvl14_resolution; 378extern unsigned int lvl14_resolution;
diff --git a/arch/sparc/kernel/tick14.c b/arch/sparc/kernel/tick14.c
index d3b4daac705f..f1a7bd19e04f 100644
--- a/arch/sparc/kernel/tick14.c
+++ b/arch/sparc/kernel/tick14.c
@@ -55,7 +55,7 @@ void install_obp_ticker(void)
55 linux_lvl14[3] = obp_lvl14[3]; 55 linux_lvl14[3] = obp_lvl14[3];
56} 56}
57 57
58void claim_ticker14(irqreturn_t (*handler)(int, void *, struct pt_regs *), 58void claim_ticker14(irq_handler_t handler,
59 int irq_nr, unsigned int timeout ) 59 int irq_nr, unsigned int timeout )
60{ 60{
61 int cpu = smp_processor_id(); 61 int cpu = smp_processor_id();
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c
index e10dc831944d..7dcd1a16c6e4 100644
--- a/arch/sparc/kernel/time.c
+++ b/arch/sparc/kernel/time.c
@@ -42,6 +42,7 @@
42#include <asm/page.h> 42#include <asm/page.h>
43#include <asm/pcic.h> 43#include <asm/pcic.h>
44#include <asm/of_device.h> 44#include <asm/of_device.h>
45#include <asm/irq_regs.h>
45 46
46DEFINE_SPINLOCK(rtc_lock); 47DEFINE_SPINLOCK(rtc_lock);
47enum sparc_clock_type sp_clock_typ; 48enum sparc_clock_type sp_clock_typ;
@@ -104,13 +105,13 @@ __volatile__ unsigned int *master_l10_limit;
104 105
105#define TICK_SIZE (tick_nsec / 1000) 106#define TICK_SIZE (tick_nsec / 1000)
106 107
107irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) 108irqreturn_t timer_interrupt(int irq, void *dev_id)
108{ 109{
109 /* last time the cmos clock got updated */ 110 /* last time the cmos clock got updated */
110 static long last_rtc_update; 111 static long last_rtc_update;
111 112
112#ifndef CONFIG_SMP 113#ifndef CONFIG_SMP
113 profile_tick(CPU_PROFILING, regs); 114 profile_tick(CPU_PROFILING);
114#endif 115#endif
115 116
116 /* Protect counter clear so that do_gettimeoffset works */ 117 /* Protect counter clear so that do_gettimeoffset works */
@@ -128,7 +129,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
128 129
129 do_timer(1); 130 do_timer(1);
130#ifndef CONFIG_SMP 131#ifndef CONFIG_SMP
131 update_process_times(user_mode(regs)); 132 update_process_times(user_mode(get_irq_regs()));
132#endif 133#endif
133 134
134 135
diff --git a/arch/sparc/lib/locks.S b/arch/sparc/lib/locks.S
index 95fa48424967..b1df55cb2215 100644
--- a/arch/sparc/lib/locks.S
+++ b/arch/sparc/lib/locks.S
@@ -25,6 +25,15 @@ ___rw_read_enter_spin_on_wlock:
25 ldstub [%g1 + 3], %g2 25 ldstub [%g1 + 3], %g2
26 b ___rw_read_enter_spin_on_wlock 26 b ___rw_read_enter_spin_on_wlock
27 ldub [%g1 + 3], %g2 27 ldub [%g1 + 3], %g2
28___rw_read_try_spin_on_wlock:
29 andcc %g2, 0xff, %g0
30 be,a ___rw_read_try
31 ldstub [%g1 + 3], %g2
32 xnorcc %g2, 0x0, %o0 /* if g2 is ~0, set o0 to 0 and bugger off */
33 bne,a ___rw_read_enter_spin_on_wlock
34 ld [%g1], %g2
35 retl
36 mov %g4, %o7
28___rw_read_exit_spin_on_wlock: 37___rw_read_exit_spin_on_wlock:
29 orcc %g2, 0x0, %g0 38 orcc %g2, 0x0, %g0
30 be,a ___rw_read_exit 39 be,a ___rw_read_exit
@@ -60,6 +69,17 @@ ___rw_read_exit:
60 retl 69 retl
61 mov %g4, %o7 70 mov %g4, %o7
62 71
72 .globl ___rw_read_try
73___rw_read_try:
74 orcc %g2, 0x0, %g0
75 bne ___rw_read_try_spin_on_wlock
76 ld [%g1], %g2
77 add %g2, 1, %g2
78 st %g2, [%g1]
79 set 1, %o1
80 retl
81 mov %g4, %o7
82
63 .globl ___rw_write_enter 83 .globl ___rw_write_enter
64___rw_write_enter: 84___rw_write_enter:
65 orcc %g2, 0x0, %g0 85 orcc %g2, 0x0, %g0
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index f54ab375464b..dcae559879ae 100644
--- a/arch/sparc64/defconfig
+++ b/arch/sparc64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.19-rc1
4# Mon Oct 2 14:24:40 2006 4# Thu Oct 5 02:08:41 2006
5# 5#
6CONFIG_SPARC=y 6CONFIG_SPARC=y
7CONFIG_SPARC64=y 7CONFIG_SPARC64=y
@@ -197,6 +197,7 @@ CONFIG_INET_XFRM_TUNNEL=y
197CONFIG_INET_TUNNEL=y 197CONFIG_INET_TUNNEL=y
198CONFIG_INET_XFRM_MODE_TRANSPORT=y 198CONFIG_INET_XFRM_MODE_TRANSPORT=y
199CONFIG_INET_XFRM_MODE_TUNNEL=y 199CONFIG_INET_XFRM_MODE_TUNNEL=y
200CONFIG_INET_XFRM_MODE_BEET=y
200CONFIG_INET_DIAG=y 201CONFIG_INET_DIAG=y
201CONFIG_INET_TCP_DIAG=y 202CONFIG_INET_TCP_DIAG=y
202# CONFIG_TCP_CONG_ADVANCED is not set 203# CONFIG_TCP_CONG_ADVANCED is not set
@@ -214,6 +215,7 @@ CONFIG_INET6_XFRM_TUNNEL=m
214CONFIG_INET6_TUNNEL=m 215CONFIG_INET6_TUNNEL=m
215CONFIG_INET6_XFRM_MODE_TRANSPORT=m 216CONFIG_INET6_XFRM_MODE_TRANSPORT=m
216CONFIG_INET6_XFRM_MODE_TUNNEL=m 217CONFIG_INET6_XFRM_MODE_TUNNEL=m
218CONFIG_INET6_XFRM_MODE_BEET=m
217# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 219# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
218CONFIG_IPV6_TUNNEL=m 220CONFIG_IPV6_TUNNEL=m
219# CONFIG_IPV6_SUBTREES is not set 221# CONFIG_IPV6_SUBTREES is not set
@@ -373,6 +375,7 @@ CONFIG_BLK_DEV_ALI15X3=y
373# CONFIG_BLK_DEV_CS5530 is not set 375# CONFIG_BLK_DEV_CS5530 is not set
374# CONFIG_BLK_DEV_HPT34X is not set 376# CONFIG_BLK_DEV_HPT34X is not set
375# CONFIG_BLK_DEV_HPT366 is not set 377# CONFIG_BLK_DEV_HPT366 is not set
378# CONFIG_BLK_DEV_JMICRON is not set
376# CONFIG_BLK_DEV_SC1200 is not set 379# CONFIG_BLK_DEV_SC1200 is not set
377# CONFIG_BLK_DEV_PIIX is not set 380# CONFIG_BLK_DEV_PIIX is not set
378# CONFIG_BLK_DEV_IT821X is not set 381# CONFIG_BLK_DEV_IT821X is not set
@@ -449,10 +452,10 @@ CONFIG_ISCSI_TCP=m
449# CONFIG_SCSI_INIA100 is not set 452# CONFIG_SCSI_INIA100 is not set
450# CONFIG_SCSI_STEX is not set 453# CONFIG_SCSI_STEX is not set
451# CONFIG_SCSI_SYM53C8XX_2 is not set 454# CONFIG_SCSI_SYM53C8XX_2 is not set
452# CONFIG_SCSI_IPR is not set
453# CONFIG_SCSI_QLOGIC_1280 is not set 455# CONFIG_SCSI_QLOGIC_1280 is not set
454# CONFIG_SCSI_QLOGICPTI is not set 456# CONFIG_SCSI_QLOGICPTI is not set
455# CONFIG_SCSI_QLA_FC is not set 457# CONFIG_SCSI_QLA_FC is not set
458# CONFIG_SCSI_QLA_ISCSI is not set
456# CONFIG_SCSI_LPFC is not set 459# CONFIG_SCSI_LPFC is not set
457# CONFIG_SCSI_DC395x is not set 460# CONFIG_SCSI_DC395x is not set
458# CONFIG_SCSI_DC390T is not set 461# CONFIG_SCSI_DC390T is not set
@@ -478,6 +481,7 @@ CONFIG_MD_RAID456=m
478CONFIG_MD_MULTIPATH=m 481CONFIG_MD_MULTIPATH=m
479# CONFIG_MD_FAULTY is not set 482# CONFIG_MD_FAULTY is not set
480CONFIG_BLK_DEV_DM=m 483CONFIG_BLK_DEV_DM=m
484# CONFIG_DM_DEBUG is not set
481CONFIG_DM_CRYPT=m 485CONFIG_DM_CRYPT=m
482CONFIG_DM_SNAPSHOT=m 486CONFIG_DM_SNAPSHOT=m
483CONFIG_DM_MIRROR=m 487CONFIG_DM_MIRROR=m
@@ -840,12 +844,12 @@ CONFIG_HWMON=y
840# 844#
841# Misc devices 845# Misc devices
842# 846#
847# CONFIG_TIFM_CORE is not set
843 848
844# 849#
845# Multimedia devices 850# Multimedia devices
846# 851#
847# CONFIG_VIDEO_DEV is not set 852# CONFIG_VIDEO_DEV is not set
848CONFIG_VIDEO_V4L2=y
849 853
850# 854#
851# Digital Video Broadcasting Devices 855# Digital Video Broadcasting Devices
@@ -858,6 +862,7 @@ CONFIG_VIDEO_V4L2=y
858# 862#
859# CONFIG_FIRMWARE_EDID is not set 863# CONFIG_FIRMWARE_EDID is not set
860CONFIG_FB=y 864CONFIG_FB=y
865CONFIG_FB_DDC=y
861CONFIG_FB_CFB_FILLRECT=y 866CONFIG_FB_CFB_FILLRECT=y
862CONFIG_FB_CFB_COPYAREA=y 867CONFIG_FB_CFB_COPYAREA=y
863CONFIG_FB_CFB_IMAGEBLIT=y 868CONFIG_FB_CFB_IMAGEBLIT=y
@@ -1236,6 +1241,7 @@ CONFIG_FS_MBCACHE=y
1236# CONFIG_JFS_FS is not set 1241# CONFIG_JFS_FS is not set
1237CONFIG_FS_POSIX_ACL=y 1242CONFIG_FS_POSIX_ACL=y
1238# CONFIG_XFS_FS is not set 1243# CONFIG_XFS_FS is not set
1244# CONFIG_GFS2_FS is not set
1239# CONFIG_OCFS2_FS is not set 1245# CONFIG_OCFS2_FS is not set
1240# CONFIG_MINIX_FS is not set 1246# CONFIG_MINIX_FS is not set
1241# CONFIG_ROMFS_FS is not set 1247# CONFIG_ROMFS_FS is not set
@@ -1279,6 +1285,7 @@ CONFIG_RAMFS=y
1279# 1285#
1280# CONFIG_ADFS_FS is not set 1286# CONFIG_ADFS_FS is not set
1281# CONFIG_AFFS_FS is not set 1287# CONFIG_AFFS_FS is not set
1288# CONFIG_ECRYPT_FS is not set
1282# CONFIG_HFS_FS is not set 1289# CONFIG_HFS_FS is not set
1283# CONFIG_HFSPLUS_FS is not set 1290# CONFIG_HFSPLUS_FS is not set
1284# CONFIG_BEFS_FS is not set 1291# CONFIG_BEFS_FS is not set
@@ -1355,6 +1362,10 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1355# CONFIG_NLS_UTF8 is not set 1362# CONFIG_NLS_UTF8 is not set
1356 1363
1357# 1364#
1365# Distributed Lock Manager
1366#
1367
1368#
1358# Instrumentation Support 1369# Instrumentation Support
1359# 1370#
1360CONFIG_PROFILING=y 1371CONFIG_PROFILING=y
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c
index 8a9b470e1b65..2df25c2b4071 100644
--- a/arch/sparc64/kernel/ebus.c
+++ b/arch/sparc64/kernel/ebus.c
@@ -79,7 +79,7 @@ static void __ebus_dma_reset(struct ebus_dma_info *p, int no_drain)
79 } 79 }
80} 80}
81 81
82static irqreturn_t ebus_dma_irq(int irq, void *dev_id, struct pt_regs *regs) 82static irqreturn_t ebus_dma_irq(int irq, void *dev_id)
83{ 83{
84 struct ebus_dma_info *p = dev_id; 84 struct ebus_dma_info *p = dev_id;
85 unsigned long flags; 85 unsigned long flags;
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c
index 4e64724cb9ae..d64b1ea848de 100644
--- a/arch/sparc64/kernel/irq.c
+++ b/arch/sparc64/kernel/irq.c
@@ -522,12 +522,13 @@ void ack_bad_irq(unsigned int virt_irq)
522} 522}
523 523
524#ifndef CONFIG_SMP 524#ifndef CONFIG_SMP
525extern irqreturn_t timer_interrupt(int, void *, struct pt_regs *); 525extern irqreturn_t timer_interrupt(int, void *);
526 526
527void timer_irq(int irq, struct pt_regs *regs) 527void timer_irq(int irq, struct pt_regs *regs)
528{ 528{
529 unsigned long clr_mask = 1 << irq; 529 unsigned long clr_mask = 1 << irq;
530 unsigned long tick_mask = tick_ops->softint_mask; 530 unsigned long tick_mask = tick_ops->softint_mask;
531 struct pt_regs *old_regs;
531 532
532 if (get_softint() & tick_mask) { 533 if (get_softint() & tick_mask) {
533 irq = 0; 534 irq = 0;
@@ -535,21 +536,25 @@ void timer_irq(int irq, struct pt_regs *regs)
535 } 536 }
536 clear_softint(clr_mask); 537 clear_softint(clr_mask);
537 538
539 old_regs = set_irq_regs(regs);
538 irq_enter(); 540 irq_enter();
539 541
540 kstat_this_cpu.irqs[0]++; 542 kstat_this_cpu.irqs[0]++;
541 timer_interrupt(irq, NULL, regs); 543 timer_interrupt(irq, NULL);
542 544
543 irq_exit(); 545 irq_exit();
546 set_irq_regs(old_regs);
544} 547}
545#endif 548#endif
546 549
547void handler_irq(int irq, struct pt_regs *regs) 550void handler_irq(int irq, struct pt_regs *regs)
548{ 551{
549 struct ino_bucket *bucket; 552 struct ino_bucket *bucket;
553 struct pt_regs *old_regs;
550 554
551 clear_softint(1 << irq); 555 clear_softint(1 << irq);
552 556
557 old_regs = set_irq_regs(regs);
553 irq_enter(); 558 irq_enter();
554 559
555 /* Sliiiick... */ 560 /* Sliiiick... */
@@ -558,12 +563,13 @@ void handler_irq(int irq, struct pt_regs *regs)
558 struct ino_bucket *next = __bucket(bucket->irq_chain); 563 struct ino_bucket *next = __bucket(bucket->irq_chain);
559 564
560 bucket->irq_chain = 0; 565 bucket->irq_chain = 0;
561 __do_IRQ(bucket->virt_irq, regs); 566 __do_IRQ(bucket->virt_irq);
562 567
563 bucket = next; 568 bucket = next;
564 } 569 }
565 570
566 irq_exit(); 571 irq_exit();
572 set_irq_regs(old_regs);
567} 573}
568 574
569struct sun5_timer { 575struct sun5_timer {
diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c
index 7f9204535770..d822c7c18e1f 100644
--- a/arch/sparc64/kernel/of_device.c
+++ b/arch/sparc64/kernel/of_device.c
@@ -841,7 +841,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
841 if (!parent) 841 if (!parent)
842 strcpy(op->dev.bus_id, "root"); 842 strcpy(op->dev.bus_id, "root");
843 else 843 else
844 strcpy(op->dev.bus_id, dp->path_component_name); 844 sprintf(op->dev.bus_id, "%s@%08x", dp->name, dp->node);
845 845
846 if (of_device_register(op)) { 846 if (of_device_register(op)) {
847 printk("%s: Could not register of device.\n", 847 printk("%s: Could not register of device.\n",
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index 1ec0aab68c08..fda5db223d96 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -533,7 +533,7 @@ static void psycho_check_iommu_error(struct pci_controller_info *p,
533#define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ 533#define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */
534#define PSYCHO_UE_AFAR 0x0038UL 534#define PSYCHO_UE_AFAR 0x0038UL
535 535
536static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs) 536static irqreturn_t psycho_ue_intr(int irq, void *dev_id)
537{ 537{
538 struct pci_controller_info *p = dev_id; 538 struct pci_controller_info *p = dev_id;
539 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR; 539 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR;
@@ -610,7 +610,7 @@ static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs)
610#define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ 610#define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */
611#define PSYCHO_CE_AFAR 0x0040UL 611#define PSYCHO_CE_AFAR 0x0040UL
612 612
613static irqreturn_t psycho_ce_intr(int irq, void *dev_id, struct pt_regs *regs) 613static irqreturn_t psycho_ce_intr(int irq, void *dev_id)
614{ 614{
615 struct pci_controller_info *p = dev_id; 615 struct pci_controller_info *p = dev_id;
616 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR; 616 unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR;
@@ -735,7 +735,7 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm, int is_pbm
735 return ret; 735 return ret;
736} 736}
737 737
738static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) 738static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id)
739{ 739{
740 struct pci_pbm_info *pbm = dev_id; 740 struct pci_pbm_info *pbm = dev_id;
741 struct pci_controller_info *p = pbm->parent; 741 struct pci_controller_info *p = pbm->parent;
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c
index 45891850b90d..6ec569828c29 100644
--- a/arch/sparc64/kernel/pci_sabre.c
+++ b/arch/sparc64/kernel/pci_sabre.c
@@ -574,7 +574,7 @@ static void sabre_check_iommu_error(struct pci_controller_info *p,
574 spin_unlock_irqrestore(&iommu->lock, flags); 574 spin_unlock_irqrestore(&iommu->lock, flags);
575} 575}
576 576
577static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs) 577static irqreturn_t sabre_ue_intr(int irq, void *dev_id)
578{ 578{
579 struct pci_controller_info *p = dev_id; 579 struct pci_controller_info *p = dev_id;
580 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR; 580 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR;
@@ -634,7 +634,7 @@ static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs)
634 return IRQ_HANDLED; 634 return IRQ_HANDLED;
635} 635}
636 636
637static irqreturn_t sabre_ce_intr(int irq, void *dev_id, struct pt_regs *regs) 637static irqreturn_t sabre_ce_intr(int irq, void *dev_id)
638{ 638{
639 struct pci_controller_info *p = dev_id; 639 struct pci_controller_info *p = dev_id;
640 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR; 640 unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR;
@@ -726,7 +726,7 @@ static irqreturn_t sabre_pcierr_intr_other(struct pci_controller_info *p)
726 return ret; 726 return ret;
727} 727}
728 728
729static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) 729static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id)
730{ 730{
731 struct pci_controller_info *p = dev_id; 731 struct pci_controller_info *p = dev_id;
732 unsigned long afsr_reg, afar_reg; 732 unsigned long afsr_reg, afar_reg;
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c
index 75ade83ecc65..66911b126aed 100644
--- a/arch/sparc64/kernel/pci_schizo.c
+++ b/arch/sparc64/kernel/pci_schizo.c
@@ -515,7 +515,7 @@ static void schizo_check_iommu_error(struct pci_controller_info *p,
515#define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */ 515#define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */
516#define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */ 516#define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */
517 517
518static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) 518static irqreturn_t schizo_ue_intr(int irq, void *dev_id)
519{ 519{
520 struct pci_controller_info *p = dev_id; 520 struct pci_controller_info *p = dev_id;
521 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR; 521 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR;
@@ -603,7 +603,7 @@ static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs)
603#define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL 603#define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL
604#define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL 604#define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL
605 605
606static irqreturn_t schizo_ce_intr(int irq, void *dev_id, struct pt_regs *regs) 606static irqreturn_t schizo_ce_intr(int irq, void *dev_id)
607{ 607{
608 struct pci_controller_info *p = dev_id; 608 struct pci_controller_info *p = dev_id;
609 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR; 609 unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR;
@@ -778,7 +778,7 @@ static irqreturn_t schizo_pcierr_intr_other(struct pci_pbm_info *pbm)
778 return ret; 778 return ret;
779} 779}
780 780
781static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) 781static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id)
782{ 782{
783 struct pci_pbm_info *pbm = dev_id; 783 struct pci_pbm_info *pbm = dev_id;
784 struct pci_controller_info *p = pbm->parent; 784 struct pci_controller_info *p = pbm->parent;
@@ -933,7 +933,7 @@ static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *reg
933/* We only expect UNMAP errors here. The rest of the Safari errors 933/* We only expect UNMAP errors here. The rest of the Safari errors
934 * are marked fatal and thus cause a system reset. 934 * are marked fatal and thus cause a system reset.
935 */ 935 */
936static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs *regs) 936static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id)
937{ 937{
938 struct pci_controller_info *p = dev_id; 938 struct pci_controller_info *p = dev_id;
939 u64 errlog; 939 u64 errlog;
diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c
index 0b9c70627ce4..699b24b890df 100644
--- a/arch/sparc64/kernel/power.c
+++ b/arch/sparc64/kernel/power.c
@@ -35,7 +35,7 @@ static void __iomem *power_reg;
35static DECLARE_WAIT_QUEUE_HEAD(powerd_wait); 35static DECLARE_WAIT_QUEUE_HEAD(powerd_wait);
36static int button_pressed; 36static int button_pressed;
37 37
38static irqreturn_t power_handler(int irq, void *dev_id, struct pt_regs *regs) 38static irqreturn_t power_handler(int irq, void *dev_id)
39{ 39{
40 if (button_pressed == 0) { 40 if (button_pressed == 0) {
41 button_pressed = 1; 41 button_pressed = 1;
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c
index c49a57795743..01d6d869ea2b 100644
--- a/arch/sparc64/kernel/sbus.c
+++ b/arch/sparc64/kernel/sbus.c
@@ -839,7 +839,7 @@ unsigned int sbus_build_irq(void *buscookie, unsigned int ino)
839#define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ 839#define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */
840#define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ 840#define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */
841#define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ 841#define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */
842static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs) 842static irqreturn_t sysio_ue_handler(int irq, void *dev_id)
843{ 843{
844 struct sbus_bus *sbus = dev_id; 844 struct sbus_bus *sbus = dev_id;
845 struct sbus_iommu *iommu = sbus->iommu; 845 struct sbus_iommu *iommu = sbus->iommu;
@@ -911,7 +911,7 @@ static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs)
911#define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ 911#define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */
912#define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ 912#define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */
913#define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ 913#define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */
914static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs) 914static irqreturn_t sysio_ce_handler(int irq, void *dev_id)
915{ 915{
916 struct sbus_bus *sbus = dev_id; 916 struct sbus_bus *sbus = dev_id;
917 struct sbus_iommu *iommu = sbus->iommu; 917 struct sbus_iommu *iommu = sbus->iommu;
@@ -988,7 +988,7 @@ static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs)
988#define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */ 988#define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */
989#define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */ 989#define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */
990#define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */ 990#define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */
991static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id, struct pt_regs *regs) 991static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id)
992{ 992{
993 struct sbus_bus *sbus = dev_id; 993 struct sbus_bus *sbus = dev_id;
994 struct sbus_iommu *iommu = sbus->iommu; 994 struct sbus_iommu *iommu = sbus->iommu;
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index f62bf3a2de1a..cc09d8266414 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -31,6 +31,7 @@
31#include <asm/cpudata.h> 31#include <asm/cpudata.h>
32 32
33#include <asm/irq.h> 33#include <asm/irq.h>
34#include <asm/irq_regs.h>
34#include <asm/page.h> 35#include <asm/page.h>
35#include <asm/pgtable.h> 36#include <asm/pgtable.h>
36#include <asm/oplib.h> 37#include <asm/oplib.h>
@@ -1187,6 +1188,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)
1187 unsigned long compare, tick, pstate; 1188 unsigned long compare, tick, pstate;
1188 int cpu = smp_processor_id(); 1189 int cpu = smp_processor_id();
1189 int user = user_mode(regs); 1190 int user = user_mode(regs);
1191 struct pt_regs *old_regs;
1190 1192
1191 /* 1193 /*
1192 * Check for level 14 softint. 1194 * Check for level 14 softint.
@@ -1203,8 +1205,9 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)
1203 clear_softint(tick_mask); 1205 clear_softint(tick_mask);
1204 } 1206 }
1205 1207
1208 old_regs = set_irq_regs(regs);
1206 do { 1209 do {
1207 profile_tick(CPU_PROFILING, regs); 1210 profile_tick(CPU_PROFILING);
1208 if (!--prof_counter(cpu)) { 1211 if (!--prof_counter(cpu)) {
1209 irq_enter(); 1212 irq_enter();
1210 1213
@@ -1236,6 +1239,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs)
1236 : /* no outputs */ 1239 : /* no outputs */
1237 : "r" (pstate)); 1240 : "r" (pstate));
1238 } while (time_after_eq(tick, compare)); 1241 } while (time_after_eq(tick, compare));
1242 set_irq_regs(old_regs);
1239} 1243}
1240 1244
1241static void __init smp_setup_percpu_timer(void) 1245static void __init smp_setup_percpu_timer(void)
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c
index 00f6fc4aaaff..061e1b1fa583 100644
--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -45,6 +45,7 @@
45#include <asm/cpudata.h> 45#include <asm/cpudata.h>
46#include <asm/uaccess.h> 46#include <asm/uaccess.h>
47#include <asm/prom.h> 47#include <asm/prom.h>
48#include <asm/irq_regs.h>
48 49
49DEFINE_SPINLOCK(mostek_lock); 50DEFINE_SPINLOCK(mostek_lock);
50DEFINE_SPINLOCK(rtc_lock); 51DEFINE_SPINLOCK(rtc_lock);
@@ -452,7 +453,7 @@ static inline void timer_check_rtc(void)
452 } 453 }
453} 454}
454 455
455irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) 456irqreturn_t timer_interrupt(int irq, void *dev_id)
456{ 457{
457 unsigned long ticks, compare, pstate; 458 unsigned long ticks, compare, pstate;
458 459
@@ -460,8 +461,8 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
460 461
461 do { 462 do {
462#ifndef CONFIG_SMP 463#ifndef CONFIG_SMP
463 profile_tick(CPU_PROFILING, regs); 464 profile_tick(CPU_PROFILING);
464 update_process_times(user_mode(regs)); 465 update_process_times(user_mode(get_irq_regs()));
465#endif 466#endif
466 do_timer(1); 467 do_timer(1);
467 468
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index cfd9f01fd464..426633e5d6e3 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -20,7 +20,7 @@
20 20
21#define LINE_BUFSIZE 4096 21#define LINE_BUFSIZE 4096
22 22
23static irqreturn_t line_interrupt(int irq, void *data, struct pt_regs *unused) 23static irqreturn_t line_interrupt(int irq, void *data)
24{ 24{
25 struct chan *chan = data; 25 struct chan *chan = data;
26 struct line *line = chan->line; 26 struct line *line = chan->line;
@@ -364,8 +364,7 @@ void line_unthrottle(struct tty_struct *tty)
364 reactivate_chan(&line->chan_list, line->driver->read_irq); 364 reactivate_chan(&line->chan_list, line->driver->read_irq);
365} 365}
366 366
367static irqreturn_t line_write_interrupt(int irq, void *data, 367static irqreturn_t line_write_interrupt(int irq, void *data)
368 struct pt_regs *unused)
369{ 368{
370 struct chan *chan = data; 369 struct chan *chan = data;
371 struct line *line = chan->line; 370 struct line *line = chan->line;
@@ -712,7 +711,7 @@ struct winch {
712 struct tty_struct *tty; 711 struct tty_struct *tty;
713}; 712};
714 713
715static irqreturn_t winch_interrupt(int irq, void *data, struct pt_regs *unused) 714static irqreturn_t winch_interrupt(int irq, void *data)
716{ 715{
717 struct winch *winch = data; 716 struct winch *winch = data;
718 struct tty_struct *tty; 717 struct tty_struct *tty;
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
index a67dcbd78de4..d08bd036ccb8 100644
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -74,8 +74,7 @@ static void mc_work_proc(void *unused)
74 74
75static DECLARE_WORK(mconsole_work, mc_work_proc, NULL); 75static DECLARE_WORK(mconsole_work, mc_work_proc, NULL);
76 76
77static irqreturn_t mconsole_interrupt(int irq, void *dev_id, 77static irqreturn_t mconsole_interrupt(int irq, void *dev_id)
78 struct pt_regs *regs)
79{ 78{
80 /* long to avoid size mismatch warnings from gcc */ 79 /* long to avoid size mismatch warnings from gcc */
81 long fd; 80 long fd;
@@ -674,8 +673,9 @@ static void with_console(struct mc_request *req, void (*proc)(void *),
674static void sysrq_proc(void *arg) 673static void sysrq_proc(void *arg)
675{ 674{
676 char *op = arg; 675 char *op = arg;
677 676 struct pt_regs *old_regs = set_irq_regs(&current->thread.regs);
678 handle_sysrq(*op, &current->thread.regs, NULL); 677 handle_sysrq(*op, NULL);
678 set_irq_regs(old_regs);
679} 679}
680 680
681void mconsole_sysrq(struct mc_request *req) 681void mconsole_sysrq(struct mc_request *req)
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index c1c5604752fb..ec9eb8bd9432 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -77,7 +77,7 @@ static void uml_dev_close(void* dev)
77 dev_close( (struct net_device *) dev); 77 dev_close( (struct net_device *) dev);
78} 78}
79 79
80irqreturn_t uml_net_interrupt(int irq, void *dev_id, struct pt_regs *regs) 80irqreturn_t uml_net_interrupt(int irq, void *dev_id)
81{ 81{
82 struct net_device *dev = dev_id; 82 struct net_device *dev = dev_id;
83 struct uml_net_private *lp = dev->priv; 83 struct uml_net_private *lp = dev->priv;
diff --git a/arch/um/drivers/pcap_user.h b/arch/um/drivers/pcap_user.h
index 58f9f6a1420f..96b80b565eeb 100644
--- a/arch/um/drivers/pcap_user.h
+++ b/arch/um/drivers/pcap_user.h
@@ -15,7 +15,7 @@ struct pcap_data {
15 void *dev; 15 void *dev;
16}; 16};
17 17
18extern struct net_user_info pcap_user_info; 18extern const struct net_user_info pcap_user_info;
19 19
20extern int pcap_user_read(int fd, void *buf, int len, struct pcap_data *pri); 20extern int pcap_user_read(int fd, void *buf, int len, struct pcap_data *pri);
21 21
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c
index 73755f37a8a8..ce9f3733f73e 100644
--- a/arch/um/drivers/port_kern.c
+++ b/arch/um/drivers/port_kern.c
@@ -47,7 +47,7 @@ struct connection {
47 struct port_list *port; 47 struct port_list *port;
48}; 48};
49 49
50static irqreturn_t pipe_interrupt(int irq, void *data, struct pt_regs *regs) 50static irqreturn_t pipe_interrupt(int irq, void *data)
51{ 51{
52 struct connection *conn = data; 52 struct connection *conn = data;
53 int fd; 53 int fd;
@@ -152,7 +152,7 @@ void port_work_proc(void *unused)
152 152
153DECLARE_WORK(port_work, port_work_proc, NULL); 153DECLARE_WORK(port_work, port_work_proc, NULL);
154 154
155static irqreturn_t port_interrupt(int irq, void *data, struct pt_regs *regs) 155static irqreturn_t port_interrupt(int irq, void *data)
156{ 156{
157 struct port_list *port = data; 157 struct port_list *port = data;
158 158
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index f0b0668458b7..bc458f57921b 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -524,7 +524,7 @@ static void ubd_handler(void)
524 do_ubd_request(ubd_queue); 524 do_ubd_request(ubd_queue);
525} 525}
526 526
527static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused) 527static irqreturn_t ubd_intr(int irq, void *dev)
528{ 528{
529 ubd_handler(); 529 ubd_handler();
530 return(IRQ_HANDLED); 530 return(IRQ_HANDLED);
diff --git a/arch/um/drivers/xterm_kern.c b/arch/um/drivers/xterm_kern.c
index 6036ec85895a..a4ce7058e10e 100644
--- a/arch/um/drivers/xterm_kern.c
+++ b/arch/um/drivers/xterm_kern.c
@@ -21,7 +21,7 @@ struct xterm_wait {
21 int new_fd; 21 int new_fd;
22}; 22};
23 23
24static irqreturn_t xterm_interrupt(int irq, void *data, struct pt_regs *regs) 24static irqreturn_t xterm_interrupt(int irq, void *data)
25{ 25{
26 struct xterm_wait *xterm = data; 26 struct xterm_wait *xterm = data;
27 int fd; 27 int fd;
diff --git a/arch/um/include/irq_kern.h b/arch/um/include/irq_kern.h
index c222d56b1494..4f775597fd5f 100644
--- a/arch/um/include/irq_kern.h
+++ b/arch/um/include/irq_kern.h
@@ -10,12 +10,11 @@
10#include "asm/ptrace.h" 10#include "asm/ptrace.h"
11 11
12extern int um_request_irq(unsigned int irq, int fd, int type, 12extern int um_request_irq(unsigned int irq, int fd, int type,
13 irqreturn_t (*handler)(int, void *, 13 irq_handler_t handler,
14 struct pt_regs *),
15 unsigned long irqflags, const char * devname, 14 unsigned long irqflags, const char * devname,
16 void *dev_id); 15 void *dev_id);
17extern int init_aio_irq(int irq, char *name, 16extern int init_aio_irq(int irq, char *name,
18 irqreturn_t (*handler)(int, void *, struct pt_regs *)); 17 irq_handler_t handler);
19 18
20#endif 19#endif
21 20
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index eee97bb81ba5..ef259569fd8c 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -355,14 +355,16 @@ void forward_interrupts(int pid)
355 */ 355 */
356unsigned int do_IRQ(int irq, union uml_pt_regs *regs) 356unsigned int do_IRQ(int irq, union uml_pt_regs *regs)
357{ 357{
358 irq_enter(); 358 struct pt_regs *old_regs = set_irq_regs((struct pt_regs *)regs);
359 __do_IRQ(irq, (struct pt_regs *)regs); 359 irq_enter();
360 irq_exit(); 360 __do_IRQ(irq);
361 return 1; 361 irq_exit();
362 set_irq_regs(old_regs);
363 return 1;
362} 364}
363 365
364int um_request_irq(unsigned int irq, int fd, int type, 366int um_request_irq(unsigned int irq, int fd, int type,
365 irqreturn_t (*handler)(int, void *, struct pt_regs *), 367 irq_handler_t handler,
366 unsigned long irqflags, const char * devname, 368 unsigned long irqflags, const char * devname,
367 void *dev_id) 369 void *dev_id)
368{ 370{
@@ -423,8 +425,7 @@ void __init init_IRQ(void)
423 } 425 }
424} 426}
425 427
426int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *, 428int init_aio_irq(int irq, char *name, irq_handler_t handler)
427 struct pt_regs *))
428{ 429{
429 int fds[2], err; 430 int fds[2], err;
430 431
diff --git a/arch/um/kernel/sigio.c b/arch/um/kernel/sigio.c
index 0ad755ceb212..2b0ab438301c 100644
--- a/arch/um/kernel/sigio.c
+++ b/arch/um/kernel/sigio.c
@@ -17,7 +17,7 @@
17/* Protected by sigio_lock() called from write_sigio_workaround */ 17/* Protected by sigio_lock() called from write_sigio_workaround */
18static int sigio_irq_fd = -1; 18static int sigio_irq_fd = -1;
19 19
20static irqreturn_t sigio_interrupt(int irq, void *data, struct pt_regs *unused) 20static irqreturn_t sigio_interrupt(int irq, void *data)
21{ 21{
22 char c; 22 char c;
23 23
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index a92965f8f9cd..2e354b3ca060 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -86,7 +86,7 @@ static inline unsigned long long get_time(void)
86 return nsecs; 86 return nsecs;
87} 87}
88 88
89irqreturn_t um_timer(int irq, void *dev, struct pt_regs *regs) 89irqreturn_t um_timer(int irq, void *dev)
90{ 90{
91 unsigned long long nsecs; 91 unsigned long long nsecs;
92 unsigned long flags; 92 unsigned long flags;
diff --git a/arch/x86_64/defconfig b/arch/x86_64/defconfig
index 4844b543bed0..47bfba6e9dc4 100644
--- a/arch/x86_64/defconfig
+++ b/arch/x86_64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18-git7 3# Linux kernel version: 2.6.19-rc1
4# Wed Sep 27 21:53:10 2006 4# Thu Oct 5 13:04:43 2006
5# 5#
6CONFIG_X86_64=y 6CONFIG_X86_64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -19,6 +19,7 @@ CONFIG_EARLY_PRINTK=y
19CONFIG_GENERIC_ISA_DMA=y 19CONFIG_GENERIC_ISA_DMA=y
20CONFIG_GENERIC_IOMAP=y 20CONFIG_GENERIC_IOMAP=y
21CONFIG_ARCH_MAY_HAVE_PC_FDC=y 21CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_ARCH_POPULATES_NODE_MAP=y
22CONFIG_DMI=y 23CONFIG_DMI=y
23CONFIG_AUDIT_ARCH=y 24CONFIG_AUDIT_ARCH=y
24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -37,9 +38,11 @@ CONFIG_LOCALVERSION=""
37CONFIG_LOCALVERSION_AUTO=y 38CONFIG_LOCALVERSION_AUTO=y
38CONFIG_SWAP=y 39CONFIG_SWAP=y
39CONFIG_SYSVIPC=y 40CONFIG_SYSVIPC=y
41# CONFIG_IPC_NS is not set
40CONFIG_POSIX_MQUEUE=y 42CONFIG_POSIX_MQUEUE=y
41# CONFIG_BSD_PROCESS_ACCT is not set 43# CONFIG_BSD_PROCESS_ACCT is not set
42# CONFIG_TASKSTATS is not set 44# CONFIG_TASKSTATS is not set
45# CONFIG_UTS_NS is not set
43# CONFIG_AUDIT is not set 46# CONFIG_AUDIT is not set
44CONFIG_IKCONFIG=y 47CONFIG_IKCONFIG=y
45CONFIG_IKCONFIG_PROC=y 48CONFIG_IKCONFIG_PROC=y
@@ -47,9 +50,10 @@ CONFIG_IKCONFIG_PROC=y
47# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
48CONFIG_INITRAMFS_SOURCE="" 51CONFIG_INITRAMFS_SOURCE=""
49CONFIG_CC_OPTIMIZE_FOR_SIZE=y 52CONFIG_CC_OPTIMIZE_FOR_SIZE=y
53CONFIG_SYSCTL=y
50# CONFIG_EMBEDDED is not set 54# CONFIG_EMBEDDED is not set
51CONFIG_UID16=y 55CONFIG_UID16=y
52CONFIG_SYSCTL=y 56# CONFIG_SYSCTL_SYSCALL is not set
53CONFIG_KALLSYMS=y 57CONFIG_KALLSYMS=y
54CONFIG_KALLSYMS_ALL=y 58CONFIG_KALLSYMS_ALL=y
55# CONFIG_KALLSYMS_EXTRA_PASS is not set 59# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -82,6 +86,7 @@ CONFIG_STOP_MACHINE=y
82# 86#
83# Block layer 87# Block layer
84# 88#
89CONFIG_BLOCK=y
85CONFIG_LBD=y 90CONFIG_LBD=y
86# CONFIG_BLK_DEV_IO_TRACE is not set 91# CONFIG_BLK_DEV_IO_TRACE is not set
87# CONFIG_LSF is not set 92# CONFIG_LSF is not set
@@ -252,9 +257,11 @@ CONFIG_PCI=y
252CONFIG_PCI_DIRECT=y 257CONFIG_PCI_DIRECT=y
253CONFIG_PCI_MMCONFIG=y 258CONFIG_PCI_MMCONFIG=y
254CONFIG_PCIEPORTBUS=y 259CONFIG_PCIEPORTBUS=y
260CONFIG_PCIEAER=y
255CONFIG_PCI_MSI=y 261CONFIG_PCI_MSI=y
256# CONFIG_PCI_MULTITHREAD_PROBE is not set 262# CONFIG_PCI_MULTITHREAD_PROBE is not set
257# CONFIG_PCI_DEBUG is not set 263# CONFIG_PCI_DEBUG is not set
264# CONFIG_HT_IRQ is not set
258 265
259# 266#
260# PCCARD (PCMCIA/CardBus) support 267# PCCARD (PCMCIA/CardBus) support
@@ -309,6 +316,7 @@ CONFIG_IP_PNP_DHCP=y
309# CONFIG_INET_TUNNEL is not set 316# CONFIG_INET_TUNNEL is not set
310# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 317# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
311# CONFIG_INET_XFRM_MODE_TUNNEL is not set 318# CONFIG_INET_XFRM_MODE_TUNNEL is not set
319# CONFIG_INET_XFRM_MODE_BEET is not set
312CONFIG_INET_DIAG=y 320CONFIG_INET_DIAG=y
313CONFIG_INET_TCP_DIAG=y 321CONFIG_INET_TCP_DIAG=y
314# CONFIG_TCP_CONG_ADVANCED is not set 322# CONFIG_TCP_CONG_ADVANCED is not set
@@ -325,6 +333,7 @@ CONFIG_IPV6=y
325# CONFIG_INET6_TUNNEL is not set 333# CONFIG_INET6_TUNNEL is not set
326# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set 334# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
327# CONFIG_INET6_XFRM_MODE_TUNNEL is not set 335# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
336# CONFIG_INET6_XFRM_MODE_BEET is not set
328# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set 337# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
329# CONFIG_IPV6_TUNNEL is not set 338# CONFIG_IPV6_TUNNEL is not set
330# CONFIG_IPV6_SUBTREES is not set 339# CONFIG_IPV6_SUBTREES is not set
@@ -473,6 +482,7 @@ CONFIG_BLK_DEV_ATIIXP=y
473# CONFIG_BLK_DEV_CS5530 is not set 482# CONFIG_BLK_DEV_CS5530 is not set
474# CONFIG_BLK_DEV_HPT34X is not set 483# CONFIG_BLK_DEV_HPT34X is not set
475# CONFIG_BLK_DEV_HPT366 is not set 484# CONFIG_BLK_DEV_HPT366 is not set
485# CONFIG_BLK_DEV_JMICRON is not set
476# CONFIG_BLK_DEV_SC1200 is not set 486# CONFIG_BLK_DEV_SC1200 is not set
477CONFIG_BLK_DEV_PIIX=y 487CONFIG_BLK_DEV_PIIX=y
478# CONFIG_BLK_DEV_IT821X is not set 488# CONFIG_BLK_DEV_IT821X is not set
@@ -564,6 +574,7 @@ CONFIG_MEGARAID_SAS=y
564# CONFIG_SCSI_IPR is not set 574# CONFIG_SCSI_IPR is not set
565# CONFIG_SCSI_QLOGIC_1280 is not set 575# CONFIG_SCSI_QLOGIC_1280 is not set
566# CONFIG_SCSI_QLA_FC is not set 576# CONFIG_SCSI_QLA_FC is not set
577# CONFIG_SCSI_QLA_ISCSI is not set
567# CONFIG_SCSI_LPFC is not set 578# CONFIG_SCSI_LPFC is not set
568# CONFIG_SCSI_DC395x is not set 579# CONFIG_SCSI_DC395x is not set
569# CONFIG_SCSI_DC390T is not set 580# CONFIG_SCSI_DC390T is not set
@@ -605,7 +616,6 @@ CONFIG_SATA_INTEL_COMBINED=y
605# CONFIG_PATA_HPT3X3 is not set 616# CONFIG_PATA_HPT3X3 is not set
606# CONFIG_PATA_IT821X is not set 617# CONFIG_PATA_IT821X is not set
607# CONFIG_PATA_JMICRON is not set 618# CONFIG_PATA_JMICRON is not set
608# CONFIG_PATA_LEGACY is not set
609# CONFIG_PATA_TRIFLEX is not set 619# CONFIG_PATA_TRIFLEX is not set
610# CONFIG_PATA_MPIIX is not set 620# CONFIG_PATA_MPIIX is not set
611# CONFIG_PATA_OLDPIIX is not set 621# CONFIG_PATA_OLDPIIX is not set
@@ -614,7 +624,6 @@ CONFIG_SATA_INTEL_COMBINED=y
614# CONFIG_PATA_OPTI is not set 624# CONFIG_PATA_OPTI is not set
615# CONFIG_PATA_OPTIDMA is not set 625# CONFIG_PATA_OPTIDMA is not set
616# CONFIG_PATA_PDC_OLD is not set 626# CONFIG_PATA_PDC_OLD is not set
617# CONFIG_PATA_QDI is not set
618# CONFIG_PATA_RADISYS is not set 627# CONFIG_PATA_RADISYS is not set
619# CONFIG_PATA_RZ1000 is not set 628# CONFIG_PATA_RZ1000 is not set
620# CONFIG_PATA_SC1200 is not set 629# CONFIG_PATA_SC1200 is not set
@@ -631,6 +640,7 @@ CONFIG_SATA_INTEL_COMBINED=y
631CONFIG_MD=y 640CONFIG_MD=y
632# CONFIG_BLK_DEV_MD is not set 641# CONFIG_BLK_DEV_MD is not set
633CONFIG_BLK_DEV_DM=y 642CONFIG_BLK_DEV_DM=y
643# CONFIG_DM_DEBUG is not set
634# CONFIG_DM_CRYPT is not set 644# CONFIG_DM_CRYPT is not set
635# CONFIG_DM_SNAPSHOT is not set 645# CONFIG_DM_SNAPSHOT is not set
636# CONFIG_DM_MIRROR is not set 646# CONFIG_DM_MIRROR is not set
@@ -819,6 +829,7 @@ CONFIG_NET_POLL_CONTROLLER=y
819# Input device support 829# Input device support
820# 830#
821CONFIG_INPUT=y 831CONFIG_INPUT=y
832# CONFIG_INPUT_FF_MEMLESS is not set
822 833
823# 834#
824# Userland interfaces 835# Userland interfaces
@@ -841,6 +852,7 @@ CONFIG_KEYBOARD_ATKBD=y
841# CONFIG_KEYBOARD_LKKBD is not set 852# CONFIG_KEYBOARD_LKKBD is not set
842# CONFIG_KEYBOARD_XTKBD is not set 853# CONFIG_KEYBOARD_XTKBD is not set
843# CONFIG_KEYBOARD_NEWTON is not set 854# CONFIG_KEYBOARD_NEWTON is not set
855# CONFIG_KEYBOARD_STOWAWAY is not set
844CONFIG_INPUT_MOUSE=y 856CONFIG_INPUT_MOUSE=y
845CONFIG_MOUSE_PS2=y 857CONFIG_MOUSE_PS2=y
846# CONFIG_MOUSE_SERIAL is not set 858# CONFIG_MOUSE_SERIAL is not set
@@ -1008,6 +1020,7 @@ CONFIG_HWMON=y
1008# CONFIG_SENSORS_ADM1026 is not set 1020# CONFIG_SENSORS_ADM1026 is not set
1009# CONFIG_SENSORS_ADM1031 is not set 1021# CONFIG_SENSORS_ADM1031 is not set
1010# CONFIG_SENSORS_ADM9240 is not set 1022# CONFIG_SENSORS_ADM9240 is not set
1023# CONFIG_SENSORS_K8TEMP is not set
1011# CONFIG_SENSORS_ASB100 is not set 1024# CONFIG_SENSORS_ASB100 is not set
1012# CONFIG_SENSORS_ATXP1 is not set 1025# CONFIG_SENSORS_ATXP1 is not set
1013# CONFIG_SENSORS_DS1621 is not set 1026# CONFIG_SENSORS_DS1621 is not set
@@ -1034,6 +1047,7 @@ CONFIG_HWMON=y
1034# CONFIG_SENSORS_SMSC47M192 is not set 1047# CONFIG_SENSORS_SMSC47M192 is not set
1035CONFIG_SENSORS_SMSC47B397=m 1048CONFIG_SENSORS_SMSC47B397=m
1036# CONFIG_SENSORS_VIA686A is not set 1049# CONFIG_SENSORS_VIA686A is not set
1050# CONFIG_SENSORS_VT1211 is not set
1037# CONFIG_SENSORS_VT8231 is not set 1051# CONFIG_SENSORS_VT8231 is not set
1038# CONFIG_SENSORS_W83781D is not set 1052# CONFIG_SENSORS_W83781D is not set
1039# CONFIG_SENSORS_W83791D is not set 1053# CONFIG_SENSORS_W83791D is not set
@@ -1048,12 +1062,12 @@ CONFIG_SENSORS_SMSC47B397=m
1048# Misc devices 1062# Misc devices
1049# 1063#
1050# CONFIG_IBM_ASM is not set 1064# CONFIG_IBM_ASM is not set
1065# CONFIG_TIFM_CORE is not set
1051 1066
1052# 1067#
1053# Multimedia devices 1068# Multimedia devices
1054# 1069#
1055# CONFIG_VIDEO_DEV is not set 1070# CONFIG_VIDEO_DEV is not set
1056CONFIG_VIDEO_V4L2=y
1057 1071
1058# 1072#
1059# Digital Video Broadcasting Devices 1073# Digital Video Broadcasting Devices
@@ -1159,6 +1173,7 @@ CONFIG_USB_STORAGE=y
1159# CONFIG_USB_STORAGE_SDDR55 is not set 1173# CONFIG_USB_STORAGE_SDDR55 is not set
1160# CONFIG_USB_STORAGE_JUMPSHOT is not set 1174# CONFIG_USB_STORAGE_JUMPSHOT is not set
1161# CONFIG_USB_STORAGE_ALAUDA is not set 1175# CONFIG_USB_STORAGE_ALAUDA is not set
1176# CONFIG_USB_STORAGE_KARMA is not set
1162# CONFIG_USB_LIBUSUAL is not set 1177# CONFIG_USB_LIBUSUAL is not set
1163 1178
1164# 1179#
@@ -1181,6 +1196,7 @@ CONFIG_USB_HIDINPUT=y
1181# CONFIG_USB_ATI_REMOTE2 is not set 1196# CONFIG_USB_ATI_REMOTE2 is not set
1182# CONFIG_USB_KEYSPAN_REMOTE is not set 1197# CONFIG_USB_KEYSPAN_REMOTE is not set
1183# CONFIG_USB_APPLETOUCH is not set 1198# CONFIG_USB_APPLETOUCH is not set
1199# CONFIG_USB_TRANCEVIBRATOR is not set
1184 1200
1185# 1201#
1186# USB Imaging devices 1202# USB Imaging devices
@@ -1212,6 +1228,7 @@ CONFIG_USB_MON=y
1212# 1228#
1213# CONFIG_USB_EMI62 is not set 1229# CONFIG_USB_EMI62 is not set
1214# CONFIG_USB_EMI26 is not set 1230# CONFIG_USB_EMI26 is not set
1231# CONFIG_USB_ADUTUX is not set
1215# CONFIG_USB_AUERSWALD is not set 1232# CONFIG_USB_AUERSWALD is not set
1216# CONFIG_USB_RIO500 is not set 1233# CONFIG_USB_RIO500 is not set
1217# CONFIG_USB_LEGOTOWER is not set 1234# CONFIG_USB_LEGOTOWER is not set
@@ -1219,9 +1236,9 @@ CONFIG_USB_MON=y
1219# CONFIG_USB_LED is not set 1236# CONFIG_USB_LED is not set
1220# CONFIG_USB_CYPRESS_CY7C63 is not set 1237# CONFIG_USB_CYPRESS_CY7C63 is not set
1221# CONFIG_USB_CYTHERM is not set 1238# CONFIG_USB_CYTHERM is not set
1222# CONFIG_USB_PHIDGETKIT is not set 1239# CONFIG_USB_PHIDGET is not set
1223# CONFIG_USB_PHIDGETSERVO is not set
1224# CONFIG_USB_IDMOUSE is not set 1240# CONFIG_USB_IDMOUSE is not set
1241# CONFIG_USB_FTDI_ELAN is not set
1225# CONFIG_USB_APPLEDISPLAY is not set 1242# CONFIG_USB_APPLEDISPLAY is not set
1226# CONFIG_USB_SISUSBVGA is not set 1243# CONFIG_USB_SISUSBVGA is not set
1227# CONFIG_USB_LD is not set 1244# CONFIG_USB_LD is not set
@@ -1313,6 +1330,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
1313# CONFIG_JFS_FS is not set 1330# CONFIG_JFS_FS is not set
1314CONFIG_FS_POSIX_ACL=y 1331CONFIG_FS_POSIX_ACL=y
1315# CONFIG_XFS_FS is not set 1332# CONFIG_XFS_FS is not set
1333# CONFIG_GFS2_FS is not set
1316# CONFIG_OCFS2_FS is not set 1334# CONFIG_OCFS2_FS is not set
1317# CONFIG_MINIX_FS is not set 1335# CONFIG_MINIX_FS is not set
1318# CONFIG_ROMFS_FS is not set 1336# CONFIG_ROMFS_FS is not set
@@ -1347,8 +1365,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1347# 1365#
1348CONFIG_PROC_FS=y 1366CONFIG_PROC_FS=y
1349CONFIG_PROC_KCORE=y 1367CONFIG_PROC_KCORE=y
1368CONFIG_PROC_SYSCTL=y
1350CONFIG_SYSFS=y 1369CONFIG_SYSFS=y
1351CONFIG_TMPFS=y 1370CONFIG_TMPFS=y
1371CONFIG_TMPFS_POSIX_ACL=y
1352CONFIG_HUGETLBFS=y 1372CONFIG_HUGETLBFS=y
1353CONFIG_HUGETLB_PAGE=y 1373CONFIG_HUGETLB_PAGE=y
1354CONFIG_RAMFS=y 1374CONFIG_RAMFS=y
@@ -1398,6 +1418,7 @@ CONFIG_SUNRPC=y
1398# CONFIG_CODA_FS is not set 1418# CONFIG_CODA_FS is not set
1399# CONFIG_AFS_FS is not set 1419# CONFIG_AFS_FS is not set
1400# CONFIG_9P_FS is not set 1420# CONFIG_9P_FS is not set
1421CONFIG_GENERIC_ACL=y
1401 1422
1402# 1423#
1403# Partition Types 1424# Partition Types
@@ -1450,6 +1471,10 @@ CONFIG_NLS_ISO8859_15=y
1450CONFIG_NLS_UTF8=y 1471CONFIG_NLS_UTF8=y
1451 1472
1452# 1473#
1474# Distributed Lock Manager
1475#
1476
1477#
1453# Instrumentation Support 1478# Instrumentation Support
1454# 1479#
1455CONFIG_PROFILING=y 1480CONFIG_PROFILING=y
@@ -1482,11 +1507,13 @@ CONFIG_DETECT_SOFTLOCKUP=y
1482# CONFIG_DEBUG_INFO is not set 1507# CONFIG_DEBUG_INFO is not set
1483CONFIG_DEBUG_FS=y 1508CONFIG_DEBUG_FS=y
1484# CONFIG_DEBUG_VM is not set 1509# CONFIG_DEBUG_VM is not set
1510# CONFIG_DEBUG_LIST is not set
1485# CONFIG_FRAME_POINTER is not set 1511# CONFIG_FRAME_POINTER is not set
1486CONFIG_UNWIND_INFO=y 1512CONFIG_UNWIND_INFO=y
1487CONFIG_STACK_UNWIND=y 1513CONFIG_STACK_UNWIND=y
1488# CONFIG_FORCED_INLINING is not set 1514# CONFIG_FORCED_INLINING is not set
1489# CONFIG_RCU_TORTURE_TEST is not set 1515# CONFIG_RCU_TORTURE_TEST is not set
1516# CONFIG_LKDTM is not set
1490# CONFIG_DEBUG_RODATA is not set 1517# CONFIG_DEBUG_RODATA is not set
1491# CONFIG_IOMMU_DEBUG is not set 1518# CONFIG_IOMMU_DEBUG is not set
1492CONFIG_DEBUG_STACKOVERFLOW=y 1519CONFIG_DEBUG_STACKOVERFLOW=y
diff --git a/arch/x86_64/ia32/ptrace32.c b/arch/x86_64/ia32/ptrace32.c
index d18198ed636b..3a7561d4703e 100644
--- a/arch/x86_64/ia32/ptrace32.c
+++ b/arch/x86_64/ia32/ptrace32.c
@@ -205,9 +205,9 @@ static int getreg32(struct task_struct *child, unsigned regno, u32 *val)
205static long ptrace32_siginfo(unsigned request, u32 pid, u32 addr, u32 data) 205static long ptrace32_siginfo(unsigned request, u32 pid, u32 addr, u32 data)
206{ 206{
207 int ret; 207 int ret;
208 compat_siginfo_t *si32 = (compat_siginfo_t *)compat_ptr(data); 208 compat_siginfo_t __user *si32 = compat_ptr(data);
209 siginfo_t ssi; 209 siginfo_t ssi;
210 siginfo_t *si = compat_alloc_user_space(sizeof(siginfo_t)); 210 siginfo_t __user *si = compat_alloc_user_space(sizeof(siginfo_t));
211 if (request == PTRACE_SETSIGINFO) { 211 if (request == PTRACE_SETSIGINFO) {
212 memset(&ssi, 0, sizeof(siginfo_t)); 212 memset(&ssi, 0, sizeof(siginfo_t));
213 ret = copy_siginfo_from_user32(&ssi, si32); 213 ret = copy_siginfo_from_user32(&ssi, si32);
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index 6472e321cad7..4d9d5ed942b2 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -885,14 +885,14 @@ void setup_APIC_extened_lvt(unsigned char lvt_off, unsigned char vector,
885 * value into /proc/profile. 885 * value into /proc/profile.
886 */ 886 */
887 887
888void smp_local_timer_interrupt(struct pt_regs *regs) 888void smp_local_timer_interrupt(void)
889{ 889{
890 profile_tick(CPU_PROFILING, regs); 890 profile_tick(CPU_PROFILING);
891#ifdef CONFIG_SMP 891#ifdef CONFIG_SMP
892 update_process_times(user_mode(regs)); 892 update_process_times(user_mode(get_irq_regs()));
893#endif 893#endif
894 if (apic_runs_main_timer > 1 && smp_processor_id() == boot_cpu_id) 894 if (apic_runs_main_timer > 1 && smp_processor_id() == boot_cpu_id)
895 main_timer_handler(regs); 895 main_timer_handler();
896 /* 896 /*
897 * We take the 'long' return path, and there every subsystem 897 * We take the 'long' return path, and there every subsystem
898 * grabs the appropriate locks (kernel lock/ irq lock). 898 * grabs the appropriate locks (kernel lock/ irq lock).
@@ -915,6 +915,8 @@ void smp_local_timer_interrupt(struct pt_regs *regs)
915 */ 915 */
916void smp_apic_timer_interrupt(struct pt_regs *regs) 916void smp_apic_timer_interrupt(struct pt_regs *regs)
917{ 917{
918 struct pt_regs *old_regs = set_irq_regs(regs);
919
918 /* 920 /*
919 * the NMI deadlock-detector uses this. 921 * the NMI deadlock-detector uses this.
920 */ 922 */
@@ -932,8 +934,9 @@ void smp_apic_timer_interrupt(struct pt_regs *regs)
932 */ 934 */
933 exit_idle(); 935 exit_idle();
934 irq_enter(); 936 irq_enter();
935 smp_local_timer_interrupt(regs); 937 smp_local_timer_interrupt();
936 irq_exit(); 938 irq_exit();
939 set_irq_regs(old_regs);
937} 940}
938 941
939/* 942/*
diff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S
index b8285cf1a9c3..38a7b2d528e2 100644
--- a/arch/x86_64/kernel/entry.S
+++ b/arch/x86_64/kernel/entry.S
@@ -535,6 +535,8 @@ END(stub_rt_sigreturn)
5351: incl %gs:pda_irqcount 5351: incl %gs:pda_irqcount
536 cmoveq %gs:pda_irqstackptr,%rsp 536 cmoveq %gs:pda_irqstackptr,%rsp
537 push %rbp # backlink for old unwinder 537 push %rbp # backlink for old unwinder
538 CFI_ADJUST_CFA_OFFSET 8
539 CFI_REL_OFFSET rbp,0
538 /* 540 /*
539 * We entered an interrupt context - irqs are off: 541 * We entered an interrupt context - irqs are off:
540 */ 542 */
@@ -978,6 +980,11 @@ ENTRY(kernel_thread)
978 call do_fork 980 call do_fork
979 movq %rax,RAX(%rsp) 981 movq %rax,RAX(%rsp)
980 xorl %edi,%edi 982 xorl %edi,%edi
983 test %rax,%rax
984 jnz 1f
985 /* terminate stack in child */
986 movq %rdi,RIP(%rsp)
9871:
981 988
982 /* 989 /*
983 * It isn't worth to check for reschedule here, 990 * It isn't worth to check for reschedule here,
@@ -1169,6 +1176,7 @@ ENTRY(call_softirq)
1169 incl %gs:pda_irqcount 1176 incl %gs:pda_irqcount
1170 cmove %gs:pda_irqstackptr,%rsp 1177 cmove %gs:pda_irqstackptr,%rsp
1171 push %rbp # backlink for old unwinder 1178 push %rbp # backlink for old unwinder
1179 CFI_ADJUST_CFA_OFFSET 8
1172 call __do_softirq 1180 call __do_softirq
1173 leaveq 1181 leaveq
1174 CFI_DEF_CFA_REGISTER rsp 1182 CFI_DEF_CFA_REGISTER rsp
diff --git a/arch/x86_64/kernel/genapic_cluster.c b/arch/x86_64/kernel/genapic_cluster.c
index cdb90e671b88..73d76308b955 100644
--- a/arch/x86_64/kernel/genapic_cluster.c
+++ b/arch/x86_64/kernel/genapic_cluster.c
@@ -63,6 +63,13 @@ static cpumask_t cluster_target_cpus(void)
63 return cpumask_of_cpu(0); 63 return cpumask_of_cpu(0);
64} 64}
65 65
66static cpumask_t cluster_vector_allocation_domain(int cpu)
67{
68 cpumask_t domain = CPU_MASK_NONE;
69 cpu_set(cpu, domain);
70 return domain;
71}
72
66static void cluster_send_IPI_mask(cpumask_t mask, int vector) 73static void cluster_send_IPI_mask(cpumask_t mask, int vector)
67{ 74{
68 send_IPI_mask_sequence(mask, vector); 75 send_IPI_mask_sequence(mask, vector);
@@ -119,6 +126,7 @@ struct genapic apic_cluster = {
119 .int_delivery_mode = dest_Fixed, 126 .int_delivery_mode = dest_Fixed,
120 .int_dest_mode = (APIC_DEST_PHYSICAL != 0), 127 .int_dest_mode = (APIC_DEST_PHYSICAL != 0),
121 .target_cpus = cluster_target_cpus, 128 .target_cpus = cluster_target_cpus,
129 .vector_allocation_domain = cluster_vector_allocation_domain,
122 .apic_id_registered = cluster_apic_id_registered, 130 .apic_id_registered = cluster_apic_id_registered,
123 .init_apic_ldr = cluster_init_apic_ldr, 131 .init_apic_ldr = cluster_init_apic_ldr,
124 .send_IPI_all = cluster_send_IPI_all, 132 .send_IPI_all = cluster_send_IPI_all,
diff --git a/arch/x86_64/kernel/genapic_flat.c b/arch/x86_64/kernel/genapic_flat.c
index 50ad153eaac4..0dfc223c1839 100644
--- a/arch/x86_64/kernel/genapic_flat.c
+++ b/arch/x86_64/kernel/genapic_flat.c
@@ -22,6 +22,20 @@ static cpumask_t flat_target_cpus(void)
22 return cpu_online_map; 22 return cpu_online_map;
23} 23}
24 24
25static cpumask_t flat_vector_allocation_domain(int cpu)
26{
27 /* Careful. Some cpus do not strictly honor the set of cpus
28 * specified in the interrupt destination when using lowest
29 * priority interrupt delivery mode.
30 *
31 * In particular there was a hyperthreading cpu observed to
32 * deliver interrupts to the wrong hyperthread when only one
33 * hyperthread was specified in the interrupt desitination.
34 */
35 cpumask_t domain = { { [0] = APIC_ALL_CPUS, } };
36 return domain;
37}
38
25/* 39/*
26 * Set up the logical destination ID. 40 * Set up the logical destination ID.
27 * 41 *
@@ -121,6 +135,7 @@ struct genapic apic_flat = {
121 .int_delivery_mode = dest_LowestPrio, 135 .int_delivery_mode = dest_LowestPrio,
122 .int_dest_mode = (APIC_DEST_LOGICAL != 0), 136 .int_dest_mode = (APIC_DEST_LOGICAL != 0),
123 .target_cpus = flat_target_cpus, 137 .target_cpus = flat_target_cpus,
138 .vector_allocation_domain = flat_vector_allocation_domain,
124 .apic_id_registered = flat_apic_id_registered, 139 .apic_id_registered = flat_apic_id_registered,
125 .init_apic_ldr = flat_init_apic_ldr, 140 .init_apic_ldr = flat_init_apic_ldr,
126 .send_IPI_all = flat_send_IPI_all, 141 .send_IPI_all = flat_send_IPI_all,
@@ -141,6 +156,14 @@ static cpumask_t physflat_target_cpus(void)
141 return cpumask_of_cpu(0); 156 return cpumask_of_cpu(0);
142} 157}
143 158
159static cpumask_t physflat_vector_allocation_domain(int cpu)
160{
161 cpumask_t domain = CPU_MASK_NONE;
162 cpu_set(cpu, domain);
163 return domain;
164}
165
166
144static void physflat_send_IPI_mask(cpumask_t cpumask, int vector) 167static void physflat_send_IPI_mask(cpumask_t cpumask, int vector)
145{ 168{
146 send_IPI_mask_sequence(cpumask, vector); 169 send_IPI_mask_sequence(cpumask, vector);
@@ -179,6 +202,7 @@ struct genapic apic_physflat = {
179 .int_delivery_mode = dest_Fixed, 202 .int_delivery_mode = dest_Fixed,
180 .int_dest_mode = (APIC_DEST_PHYSICAL != 0), 203 .int_dest_mode = (APIC_DEST_PHYSICAL != 0),
181 .target_cpus = physflat_target_cpus, 204 .target_cpus = physflat_target_cpus,
205 .vector_allocation_domain = physflat_vector_allocation_domain,
182 .apic_id_registered = flat_apic_id_registered, 206 .apic_id_registered = flat_apic_id_registered,
183 .init_apic_ldr = flat_init_apic_ldr,/*not needed, but shouldn't hurt*/ 207 .init_apic_ldr = flat_init_apic_ldr,/*not needed, but shouldn't hurt*/
184 .send_IPI_all = physflat_send_IPI_all, 208 .send_IPI_all = physflat_send_IPI_all,
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
index 91728d9d3472..771bcf77daf2 100644
--- a/arch/x86_64/kernel/io_apic.c
+++ b/arch/x86_64/kernel/io_apic.c
@@ -47,7 +47,7 @@
47#include <asm/msidef.h> 47#include <asm/msidef.h>
48#include <asm/hypertransport.h> 48#include <asm/hypertransport.h>
49 49
50static int assign_irq_vector(int irq, cpumask_t mask); 50static int assign_irq_vector(int irq, cpumask_t mask, cpumask_t *result);
51 51
52#define __apicdebuginit __init 52#define __apicdebuginit __init
53 53
@@ -174,12 +174,10 @@ static void set_ioapic_affinity_irq(unsigned int irq, cpumask_t mask)
174 174
175 cpus_and(mask, tmp, CPU_MASK_ALL); 175 cpus_and(mask, tmp, CPU_MASK_ALL);
176 176
177 vector = assign_irq_vector(irq, mask); 177 vector = assign_irq_vector(irq, mask, &tmp);
178 if (vector < 0) 178 if (vector < 0)
179 return; 179 return;
180 180
181 cpus_clear(tmp);
182 cpu_set(vector >> 8, tmp);
183 dest = cpu_mask_to_apicid(tmp); 181 dest = cpu_mask_to_apicid(tmp);
184 182
185 /* 183 /*
@@ -188,7 +186,7 @@ static void set_ioapic_affinity_irq(unsigned int irq, cpumask_t mask)
188 dest = SET_APIC_LOGICAL_ID(dest); 186 dest = SET_APIC_LOGICAL_ID(dest);
189 187
190 spin_lock_irqsave(&ioapic_lock, flags); 188 spin_lock_irqsave(&ioapic_lock, flags);
191 __target_IO_APIC_irq(irq, dest, vector & 0xff); 189 __target_IO_APIC_irq(irq, dest, vector);
192 set_native_irq_info(irq, mask); 190 set_native_irq_info(irq, mask);
193 spin_unlock_irqrestore(&ioapic_lock, flags); 191 spin_unlock_irqrestore(&ioapic_lock, flags);
194} 192}
@@ -563,9 +561,45 @@ static inline int IO_APIC_irq_trigger(int irq)
563} 561}
564 562
565/* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */ 563/* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */
566unsigned int irq_vector[NR_IRQ_VECTORS] __read_mostly = { FIRST_EXTERNAL_VECTOR, 0 }; 564static u8 irq_vector[NR_IRQ_VECTORS] __read_mostly = {
565 [0] = FIRST_EXTERNAL_VECTOR + 0,
566 [1] = FIRST_EXTERNAL_VECTOR + 1,
567 [2] = FIRST_EXTERNAL_VECTOR + 2,
568 [3] = FIRST_EXTERNAL_VECTOR + 3,
569 [4] = FIRST_EXTERNAL_VECTOR + 4,
570 [5] = FIRST_EXTERNAL_VECTOR + 5,
571 [6] = FIRST_EXTERNAL_VECTOR + 6,
572 [7] = FIRST_EXTERNAL_VECTOR + 7,
573 [8] = FIRST_EXTERNAL_VECTOR + 8,
574 [9] = FIRST_EXTERNAL_VECTOR + 9,
575 [10] = FIRST_EXTERNAL_VECTOR + 10,
576 [11] = FIRST_EXTERNAL_VECTOR + 11,
577 [12] = FIRST_EXTERNAL_VECTOR + 12,
578 [13] = FIRST_EXTERNAL_VECTOR + 13,
579 [14] = FIRST_EXTERNAL_VECTOR + 14,
580 [15] = FIRST_EXTERNAL_VECTOR + 15,
581};
582
583static cpumask_t irq_domain[NR_IRQ_VECTORS] __read_mostly = {
584 [0] = CPU_MASK_ALL,
585 [1] = CPU_MASK_ALL,
586 [2] = CPU_MASK_ALL,
587 [3] = CPU_MASK_ALL,
588 [4] = CPU_MASK_ALL,
589 [5] = CPU_MASK_ALL,
590 [6] = CPU_MASK_ALL,
591 [7] = CPU_MASK_ALL,
592 [8] = CPU_MASK_ALL,
593 [9] = CPU_MASK_ALL,
594 [10] = CPU_MASK_ALL,
595 [11] = CPU_MASK_ALL,
596 [12] = CPU_MASK_ALL,
597 [13] = CPU_MASK_ALL,
598 [14] = CPU_MASK_ALL,
599 [15] = CPU_MASK_ALL,
600};
567 601
568static int __assign_irq_vector(int irq, cpumask_t mask) 602static int __assign_irq_vector(int irq, cpumask_t mask, cpumask_t *result)
569{ 603{
570 /* 604 /*
571 * NOTE! The local APIC isn't very good at handling 605 * NOTE! The local APIC isn't very good at handling
@@ -587,16 +621,24 @@ static int __assign_irq_vector(int irq, cpumask_t mask)
587 621
588 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); 622 BUG_ON((unsigned)irq >= NR_IRQ_VECTORS);
589 623
590 if (IO_APIC_VECTOR(irq) > 0) 624 if (irq_vector[irq] > 0)
591 old_vector = IO_APIC_VECTOR(irq); 625 old_vector = irq_vector[irq];
592 if ((old_vector > 0) && cpu_isset(old_vector >> 8, mask)) { 626 if (old_vector > 0) {
593 return old_vector; 627 cpus_and(*result, irq_domain[irq], mask);
628 if (!cpus_empty(*result))
629 return old_vector;
594 } 630 }
595 631
596 for_each_cpu_mask(cpu, mask) { 632 for_each_cpu_mask(cpu, mask) {
633 cpumask_t domain;
634 int first, new_cpu;
597 int vector, offset; 635 int vector, offset;
598 vector = pos[cpu].vector; 636
599 offset = pos[cpu].offset; 637 domain = vector_allocation_domain(cpu);
638 first = first_cpu(domain);
639
640 vector = pos[first].vector;
641 offset = pos[first].offset;
600next: 642next:
601 vector += 8; 643 vector += 8;
602 if (vector >= FIRST_SYSTEM_VECTOR) { 644 if (vector >= FIRST_SYSTEM_VECTOR) {
@@ -604,35 +646,40 @@ next:
604 offset = (offset + 1) % 8; 646 offset = (offset + 1) % 8;
605 vector = FIRST_DEVICE_VECTOR + offset; 647 vector = FIRST_DEVICE_VECTOR + offset;
606 } 648 }
607 if (unlikely(pos[cpu].vector == vector)) 649 if (unlikely(pos[first].vector == vector))
608 continue; 650 continue;
609 if (vector == IA32_SYSCALL_VECTOR) 651 if (vector == IA32_SYSCALL_VECTOR)
610 goto next; 652 goto next;
611 if (per_cpu(vector_irq, cpu)[vector] != -1) 653 for_each_cpu_mask(new_cpu, domain)
612 goto next; 654 if (per_cpu(vector_irq, cpu)[vector] != -1)
655 goto next;
613 /* Found one! */ 656 /* Found one! */
614 pos[cpu].vector = vector; 657 for_each_cpu_mask(new_cpu, domain) {
615 pos[cpu].offset = offset; 658 pos[cpu].vector = vector;
659 pos[cpu].offset = offset;
660 }
616 if (old_vector >= 0) { 661 if (old_vector >= 0) {
617 int old_cpu = old_vector >> 8; 662 int old_cpu;
618 old_vector &= 0xff; 663 for_each_cpu_mask(old_cpu, domain)
619 per_cpu(vector_irq, old_cpu)[old_vector] = -1; 664 per_cpu(vector_irq, old_cpu)[old_vector] = -1;
620 } 665 }
621 per_cpu(vector_irq, cpu)[vector] = irq; 666 for_each_cpu_mask(new_cpu, domain)
622 vector |= cpu << 8; 667 per_cpu(vector_irq, new_cpu)[vector] = irq;
623 IO_APIC_VECTOR(irq) = vector; 668 irq_vector[irq] = vector;
669 irq_domain[irq] = domain;
670 cpus_and(*result, domain, mask);
624 return vector; 671 return vector;
625 } 672 }
626 return -ENOSPC; 673 return -ENOSPC;
627} 674}
628 675
629static int assign_irq_vector(int irq, cpumask_t mask) 676static int assign_irq_vector(int irq, cpumask_t mask, cpumask_t *result)
630{ 677{
631 int vector; 678 int vector;
632 unsigned long flags; 679 unsigned long flags;
633 680
634 spin_lock_irqsave(&vector_lock, flags); 681 spin_lock_irqsave(&vector_lock, flags);
635 vector = __assign_irq_vector(irq, mask); 682 vector = __assign_irq_vector(irq, mask, result);
636 spin_unlock_irqrestore(&vector_lock, flags); 683 spin_unlock_irqrestore(&vector_lock, flags);
637 return vector; 684 return vector;
638} 685}
@@ -704,14 +751,12 @@ static void __init setup_IO_APIC_irqs(void)
704 751
705 if (IO_APIC_IRQ(irq)) { 752 if (IO_APIC_IRQ(irq)) {
706 cpumask_t mask; 753 cpumask_t mask;
707 vector = assign_irq_vector(irq, TARGET_CPUS); 754 vector = assign_irq_vector(irq, TARGET_CPUS, &mask);
708 if (vector < 0) 755 if (vector < 0)
709 continue; 756 continue;
710 757
711 cpus_clear(mask);
712 cpu_set(vector >> 8, mask);
713 entry.dest.logical.logical_dest = cpu_mask_to_apicid(mask); 758 entry.dest.logical.logical_dest = cpu_mask_to_apicid(mask);
714 entry.vector = vector & 0xff; 759 entry.vector = vector;
715 760
716 ioapic_register_intr(irq, vector, IOAPIC_AUTO); 761 ioapic_register_intr(irq, vector, IOAPIC_AUTO);
717 if (!apic && (irq < 16)) 762 if (!apic && (irq < 16))
@@ -1289,7 +1334,7 @@ static inline void init_IO_APIC_traps(void)
1289 */ 1334 */
1290 for (irq = 0; irq < NR_IRQS ; irq++) { 1335 for (irq = 0; irq < NR_IRQS ; irq++) {
1291 int tmp = irq; 1336 int tmp = irq;
1292 if (IO_APIC_IRQ(tmp) && !IO_APIC_VECTOR(tmp)) { 1337 if (IO_APIC_IRQ(tmp) && !irq_vector[tmp]) {
1293 /* 1338 /*
1294 * Hmm.. We don't have an entry for this, 1339 * Hmm.. We don't have an entry for this,
1295 * so default to an old-fashioned 8259 1340 * so default to an old-fashioned 8259
@@ -1430,12 +1475,13 @@ static inline void check_timer(void)
1430{ 1475{
1431 int apic1, pin1, apic2, pin2; 1476 int apic1, pin1, apic2, pin2;
1432 int vector; 1477 int vector;
1478 cpumask_t mask;
1433 1479
1434 /* 1480 /*
1435 * get/set the timer IRQ vector: 1481 * get/set the timer IRQ vector:
1436 */ 1482 */
1437 disable_8259A_irq(0); 1483 disable_8259A_irq(0);
1438 vector = assign_irq_vector(0, TARGET_CPUS); 1484 vector = assign_irq_vector(0, TARGET_CPUS, &mask);
1439 1485
1440 /* 1486 /*
1441 * Subtle, code in do_timer_interrupt() expects an AEOI 1487 * Subtle, code in do_timer_interrupt() expects an AEOI
@@ -1667,6 +1713,7 @@ int create_irq(void)
1667 int new; 1713 int new;
1668 int vector = 0; 1714 int vector = 0;
1669 unsigned long flags; 1715 unsigned long flags;
1716 cpumask_t mask;
1670 1717
1671 irq = -ENOSPC; 1718 irq = -ENOSPC;
1672 spin_lock_irqsave(&vector_lock, flags); 1719 spin_lock_irqsave(&vector_lock, flags);
@@ -1675,7 +1722,7 @@ int create_irq(void)
1675 continue; 1722 continue;
1676 if (irq_vector[new] != 0) 1723 if (irq_vector[new] != 0)
1677 continue; 1724 continue;
1678 vector = __assign_irq_vector(new, TARGET_CPUS); 1725 vector = __assign_irq_vector(new, TARGET_CPUS, &mask);
1679 if (likely(vector > 0)) 1726 if (likely(vector > 0))
1680 irq = new; 1727 irq = new;
1681 break; 1728 break;
@@ -1707,13 +1754,10 @@ static int msi_compose_msg(struct pci_dev *pdev, unsigned int irq, struct msi_ms
1707{ 1754{
1708 int vector; 1755 int vector;
1709 unsigned dest; 1756 unsigned dest;
1757 cpumask_t tmp;
1710 1758
1711 vector = assign_irq_vector(irq, TARGET_CPUS); 1759 vector = assign_irq_vector(irq, TARGET_CPUS, &tmp);
1712 if (vector >= 0) { 1760 if (vector >= 0) {
1713 cpumask_t tmp;
1714
1715 cpus_clear(tmp);
1716 cpu_set(vector >> 8, tmp);
1717 dest = cpu_mask_to_apicid(tmp); 1761 dest = cpu_mask_to_apicid(tmp);
1718 1762
1719 msg->address_hi = MSI_ADDR_BASE_HI; 1763 msg->address_hi = MSI_ADDR_BASE_HI;
@@ -1752,12 +1796,10 @@ static void set_msi_irq_affinity(unsigned int irq, cpumask_t mask)
1752 1796
1753 cpus_and(mask, tmp, CPU_MASK_ALL); 1797 cpus_and(mask, tmp, CPU_MASK_ALL);
1754 1798
1755 vector = assign_irq_vector(irq, mask); 1799 vector = assign_irq_vector(irq, mask, &tmp);
1756 if (vector < 0) 1800 if (vector < 0)
1757 return; 1801 return;
1758 1802
1759 cpus_clear(tmp);
1760 cpu_set(vector >> 8, tmp);
1761 dest = cpu_mask_to_apicid(tmp); 1803 dest = cpu_mask_to_apicid(tmp);
1762 1804
1763 read_msi_msg(irq, &msg); 1805 read_msi_msg(irq, &msg);
@@ -1844,12 +1886,10 @@ static void set_ht_irq_affinity(unsigned int irq, cpumask_t mask)
1844 1886
1845 cpus_and(mask, tmp, CPU_MASK_ALL); 1887 cpus_and(mask, tmp, CPU_MASK_ALL);
1846 1888
1847 vector = assign_irq_vector(irq, mask); 1889 vector = assign_irq_vector(irq, mask, &tmp);
1848 if (vector < 0) 1890 if (vector < 0)
1849 return; 1891 return;
1850 1892
1851 cpus_clear(tmp);
1852 cpu_set(vector >> 8, tmp);
1853 dest = cpu_mask_to_apicid(tmp); 1893 dest = cpu_mask_to_apicid(tmp);
1854 1894
1855 target_ht_irq(irq, dest, vector & 0xff); 1895 target_ht_irq(irq, dest, vector & 0xff);
@@ -1871,15 +1911,13 @@ static struct hw_interrupt_type ht_irq_chip = {
1871int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev) 1911int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev)
1872{ 1912{
1873 int vector; 1913 int vector;
1914 cpumask_t tmp;
1874 1915
1875 vector = assign_irq_vector(irq, TARGET_CPUS); 1916 vector = assign_irq_vector(irq, TARGET_CPUS, &tmp);
1876 if (vector >= 0) { 1917 if (vector >= 0) {
1877 u32 low, high; 1918 u32 low, high;
1878 unsigned dest; 1919 unsigned dest;
1879 cpumask_t tmp;
1880 1920
1881 cpus_clear(tmp);
1882 cpu_set(vector >> 8, tmp);
1883 dest = cpu_mask_to_apicid(tmp); 1921 dest = cpu_mask_to_apicid(tmp);
1884 1922
1885 high = HT_IRQ_HIGH_DEST_ID(dest); 1923 high = HT_IRQ_HIGH_DEST_ID(dest);
@@ -1945,13 +1983,10 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int p
1945 add_pin_to_irq(irq, ioapic, pin); 1983 add_pin_to_irq(irq, ioapic, pin);
1946 1984
1947 1985
1948 vector = assign_irq_vector(irq, TARGET_CPUS); 1986 vector = assign_irq_vector(irq, TARGET_CPUS, &mask);
1949 if (vector < 0) 1987 if (vector < 0)
1950 return vector; 1988 return vector;
1951 1989
1952 cpus_clear(mask);
1953 cpu_set(vector >> 8, mask);
1954
1955 /* 1990 /*
1956 * Generate a PCI IRQ routing entry and program the IOAPIC accordingly. 1991 * Generate a PCI IRQ routing entry and program the IOAPIC accordingly.
1957 * Note that we mask (disable) IRQs now -- these get enabled when the 1992 * Note that we mask (disable) IRQs now -- these get enabled when the
diff --git a/arch/x86_64/kernel/irq.c b/arch/x86_64/kernel/irq.c
index 506f27c85ca5..dff68eb2b787 100644
--- a/arch/x86_64/kernel/irq.c
+++ b/arch/x86_64/kernel/irq.c
@@ -103,7 +103,9 @@ skip:
103 * handlers). 103 * handlers).
104 */ 104 */
105asmlinkage unsigned int do_IRQ(struct pt_regs *regs) 105asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
106{ 106{
107 struct pt_regs *old_regs = set_irq_regs(regs);
108
107 /* high bit used in ret_from_ code */ 109 /* high bit used in ret_from_ code */
108 unsigned vector = ~regs->orig_rax; 110 unsigned vector = ~regs->orig_rax;
109 unsigned irq; 111 unsigned irq;
@@ -112,18 +114,19 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
112 irq_enter(); 114 irq_enter();
113 irq = __get_cpu_var(vector_irq)[vector]; 115 irq = __get_cpu_var(vector_irq)[vector];
114 116
115 if (unlikely(irq >= NR_IRQS)) {
116 printk(KERN_EMERG "%s: cannot handle IRQ %d\n",
117 __FUNCTION__, irq);
118 BUG();
119 }
120
121#ifdef CONFIG_DEBUG_STACKOVERFLOW 117#ifdef CONFIG_DEBUG_STACKOVERFLOW
122 stack_overflow_check(regs); 118 stack_overflow_check(regs);
123#endif 119#endif
124 generic_handle_irq(irq, regs); 120
121 if (likely(irq < NR_IRQS))
122 generic_handle_irq(irq);
123 else
124 printk(KERN_EMERG "%s: %d.%d No irq handler for vector\n",
125 __func__, smp_processor_id(), vector);
126
125 irq_exit(); 127 irq_exit();
126 128
129 set_irq_regs(old_regs);
127 return 1; 130 return 1;
128} 131}
129 132
diff --git a/arch/x86_64/kernel/pci-calgary.c b/arch/x86_64/kernel/pci-calgary.c
index f760045d6d35..b3296cc2f2f2 100644
--- a/arch/x86_64/kernel/pci-calgary.c
+++ b/arch/x86_64/kernel/pci-calgary.c
@@ -2,8 +2,9 @@
2 * Derived from arch/powerpc/kernel/iommu.c 2 * Derived from arch/powerpc/kernel/iommu.c
3 * 3 *
4 * Copyright (C) IBM Corporation, 2006 4 * Copyright (C) IBM Corporation, 2006
5 * Copyright (C) 2006 Jon Mason <jdmason@kudzu.us>
5 * 6 *
6 * Author: Jon Mason <jdmason@us.ibm.com> 7 * Author: Jon Mason <jdmason@kudzu.us>
7 * Author: Muli Ben-Yehuda <muli@il.ibm.com> 8 * Author: Muli Ben-Yehuda <muli@il.ibm.com>
8 9
9 * This program is free software; you can redistribute it and/or modify 10 * This program is free software; you can redistribute it and/or modify
@@ -714,7 +715,7 @@ static void calgary_watchdog(unsigned long data)
714 715
715 /* If no error, the agent ID in the CSR is not valid */ 716 /* If no error, the agent ID in the CSR is not valid */
716 if (val32 & CSR_AGENT_MASK) { 717 if (val32 & CSR_AGENT_MASK) {
717 printk(KERN_EMERG "calgary_watchdog: DMA error on bus %d, " 718 printk(KERN_EMERG "calgary_watchdog: DMA error on PHB %#x, "
718 "CSR = %#x\n", dev->bus->number, val32); 719 "CSR = %#x\n", dev->bus->number, val32);
719 writel(0, target); 720 writel(0, target);
720 721
@@ -748,7 +749,7 @@ static void __init calgary_enable_translation(struct pci_dev *dev)
748 val32 = be32_to_cpu(readl(target)); 749 val32 = be32_to_cpu(readl(target));
749 val32 |= PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE; 750 val32 |= PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE;
750 751
751 printk(KERN_INFO "Calgary: enabling translation on PHB %d\n", busnum); 752 printk(KERN_INFO "Calgary: enabling translation on PHB %#x\n", busnum);
752 printk(KERN_INFO "Calgary: errant DMAs will now be prevented on this " 753 printk(KERN_INFO "Calgary: errant DMAs will now be prevented on this "
753 "bus.\n"); 754 "bus.\n");
754 755
@@ -778,7 +779,7 @@ static void __init calgary_disable_translation(struct pci_dev *dev)
778 val32 = be32_to_cpu(readl(target)); 779 val32 = be32_to_cpu(readl(target));
779 val32 &= ~(PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE); 780 val32 &= ~(PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE);
780 781
781 printk(KERN_INFO "Calgary: disabling translation on PHB %d!\n", busnum); 782 printk(KERN_INFO "Calgary: disabling translation on PHB %#x!\n", busnum);
782 writel(cpu_to_be32(val32), target); 783 writel(cpu_to_be32(val32), target);
783 readl(target); /* flush */ 784 readl(target); /* flush */
784 785
@@ -790,7 +791,16 @@ static inline unsigned int __init locate_register_space(struct pci_dev *dev)
790 int rionodeid; 791 int rionodeid;
791 u32 address; 792 u32 address;
792 793
793 rionodeid = (dev->bus->number % 15 > 4) ? 3 : 2; 794 /*
795 * Each Calgary has four busses. The first four busses (first Calgary)
796 * have RIO node ID 2, then the next four (second Calgary) have RIO
797 * node ID 3, the next four (third Calgary) have node ID 2 again, etc.
798 * We use a gross hack - relying on the dev->bus->number ordering,
799 * modulo 14 - to decide which Calgary a given bus is on. Busses 0, 1,
800 * 2 and 4 are on the first Calgary (id 2), 6, 8, a and c are on the
801 * second (id 3), and then it repeats modulo 14.
802 */
803 rionodeid = (dev->bus->number % 14 > 4) ? 3 : 2;
794 /* 804 /*
795 * register space address calculation as follows: 805 * register space address calculation as follows:
796 * FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase) 806 * FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase)
@@ -798,7 +808,7 @@ static inline unsigned int __init locate_register_space(struct pci_dev *dev)
798 * RioNodeId is 2 for first Calgary, 3 for second Calgary 808 * RioNodeId is 2 for first Calgary, 3 for second Calgary
799 */ 809 */
800 address = START_ADDRESS - 810 address = START_ADDRESS -
801 (0x800000 * (ONE_BASED_CHASSIS_NUM + dev->bus->number / 15)) + 811 (0x800000 * (ONE_BASED_CHASSIS_NUM + dev->bus->number / 14)) +
802 (0x100000) * (rionodeid - CHASSIS_BASE); 812 (0x100000) * (rionodeid - CHASSIS_BASE);
803 return address; 813 return address;
804} 814}
@@ -816,6 +826,8 @@ static int __init calgary_init_one(struct pci_dev *dev)
816 void __iomem *bbar; 826 void __iomem *bbar;
817 int ret; 827 int ret;
818 828
829 BUG_ON(dev->bus->number >= MAX_PHB_BUS_NUM);
830
819 address = locate_register_space(dev); 831 address = locate_register_space(dev);
820 /* map entire 1MB of Calgary config space */ 832 /* map entire 1MB of Calgary config space */
821 bbar = ioremap_nocache(address, 1024 * 1024); 833 bbar = ioremap_nocache(address, 1024 * 1024);
@@ -842,10 +854,10 @@ done:
842 854
843static int __init calgary_init(void) 855static int __init calgary_init(void)
844{ 856{
845 int i, ret = -ENODEV; 857 int ret = -ENODEV;
846 struct pci_dev *dev = NULL; 858 struct pci_dev *dev = NULL;
847 859
848 for (i = 0; i < MAX_PHB_BUS_NUM; i++) { 860 do {
849 dev = pci_get_device(PCI_VENDOR_ID_IBM, 861 dev = pci_get_device(PCI_VENDOR_ID_IBM,
850 PCI_DEVICE_ID_IBM_CALGARY, 862 PCI_DEVICE_ID_IBM_CALGARY,
851 dev); 863 dev);
@@ -861,12 +873,12 @@ static int __init calgary_init(void)
861 ret = calgary_init_one(dev); 873 ret = calgary_init_one(dev);
862 if (ret) 874 if (ret)
863 goto error; 875 goto error;
864 } 876 } while (1);
865 877
866 return ret; 878 return ret;
867 879
868error: 880error:
869 for (i--; i >= 0; i--) { 881 do {
870 dev = pci_find_device_reverse(PCI_VENDOR_ID_IBM, 882 dev = pci_find_device_reverse(PCI_VENDOR_ID_IBM,
871 PCI_DEVICE_ID_IBM_CALGARY, 883 PCI_DEVICE_ID_IBM_CALGARY,
872 dev); 884 dev);
@@ -882,7 +894,7 @@ error:
882 calgary_disable_translation(dev); 894 calgary_disable_translation(dev);
883 calgary_free_bus(dev); 895 calgary_free_bus(dev);
884 pci_dev_put(dev); /* Undo calgary_init_one()'s pci_dev_get() */ 896 pci_dev_put(dev); /* Undo calgary_init_one()'s pci_dev_get() */
885 } 897 } while (1);
886 898
887 return ret; 899 return ret;
888} 900}
@@ -1052,7 +1064,7 @@ static int __init calgary_parse_options(char *p)
1052 1064
1053 if (bridge < MAX_PHB_BUS_NUM) { 1065 if (bridge < MAX_PHB_BUS_NUM) {
1054 printk(KERN_INFO "Calgary: disabling " 1066 printk(KERN_INFO "Calgary: disabling "
1055 "translation for PHB 0x%x\n", bridge); 1067 "translation for PHB %#x\n", bridge);
1056 bus_info[bridge].translation_disabled = 1; 1068 bus_info[bridge].translation_disabled = 1;
1057 } 1069 }
1058 } 1070 }
diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c
index de10cb8a2c97..5e95b257ee26 100644
--- a/arch/x86_64/kernel/process.c
+++ b/arch/x86_64/kernel/process.c
@@ -615,6 +615,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
615 prev->gsindex = gsindex; 615 prev->gsindex = gsindex;
616 } 616 }
617 617
618 /* Must be after DS reload */
619 unlazy_fpu(prev_p);
620
618 /* 621 /*
619 * Switch the PDA and FPU contexts. 622 * Switch the PDA and FPU contexts.
620 */ 623 */
@@ -622,10 +625,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
622 write_pda(oldrsp, next->userrsp); 625 write_pda(oldrsp, next->userrsp);
623 write_pda(pcurrent, next_p); 626 write_pda(pcurrent, next_p);
624 627
625 /* This must be here to ensure both math_state_restore() and
626 kernel_fpu_begin() work consistently.
627 And the AMD workaround requires it to be after DS reload. */
628 unlazy_fpu(prev_p);
629 write_pda(kernelstack, 628 write_pda(kernelstack,
630 (unsigned long)task_stack_page(next_p) + THREAD_SIZE - PDA_STACKOFFSET); 629 (unsigned long)task_stack_page(next_p) + THREAD_SIZE - PDA_STACKOFFSET);
631#ifdef CONFIG_CC_STACKPROTECTOR 630#ifdef CONFIG_CC_STACKPROTECTOR
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
index 557e92af7bea..1ba5a442ac32 100644
--- a/arch/x86_64/kernel/time.c
+++ b/arch/x86_64/kernel/time.c
@@ -302,20 +302,20 @@ unsigned long long monotonic_clock(void)
302} 302}
303EXPORT_SYMBOL(monotonic_clock); 303EXPORT_SYMBOL(monotonic_clock);
304 304
305static noinline void handle_lost_ticks(int lost, struct pt_regs *regs) 305static noinline void handle_lost_ticks(int lost)
306{ 306{
307 static long lost_count; 307 static long lost_count;
308 static int warned; 308 static int warned;
309 if (report_lost_ticks) { 309 if (report_lost_ticks) {
310 printk(KERN_WARNING "time.c: Lost %d timer tick(s)! ", lost); 310 printk(KERN_WARNING "time.c: Lost %d timer tick(s)! ", lost);
311 print_symbol("rip %s)\n", regs->rip); 311 print_symbol("rip %s)\n", get_irq_regs()->rip);
312 } 312 }
313 313
314 if (lost_count == 1000 && !warned) { 314 if (lost_count == 1000 && !warned) {
315 printk(KERN_WARNING "warning: many lost ticks.\n" 315 printk(KERN_WARNING "warning: many lost ticks.\n"
316 KERN_WARNING "Your time source seems to be instable or " 316 KERN_WARNING "Your time source seems to be instable or "
317 "some driver is hogging interupts\n"); 317 "some driver is hogging interupts\n");
318 print_symbol("rip %s\n", regs->rip); 318 print_symbol("rip %s\n", get_irq_regs()->rip);
319 if (vxtime.mode == VXTIME_TSC && vxtime.hpet_address) { 319 if (vxtime.mode == VXTIME_TSC && vxtime.hpet_address) {
320 printk(KERN_WARNING "Falling back to HPET\n"); 320 printk(KERN_WARNING "Falling back to HPET\n");
321 if (hpet_use_timer) 321 if (hpet_use_timer)
@@ -339,7 +339,7 @@ static noinline void handle_lost_ticks(int lost, struct pt_regs *regs)
339#endif 339#endif
340} 340}
341 341
342void main_timer_handler(struct pt_regs *regs) 342void main_timer_handler(void)
343{ 343{
344 static unsigned long rtc_update = 0; 344 static unsigned long rtc_update = 0;
345 unsigned long tsc; 345 unsigned long tsc;
@@ -411,7 +411,7 @@ void main_timer_handler(struct pt_regs *regs)
411 } 411 }
412 412
413 if (lost > 0) 413 if (lost > 0)
414 handle_lost_ticks(lost, regs); 414 handle_lost_ticks(lost);
415 else 415 else
416 lost = 0; 416 lost = 0;
417 417
@@ -421,7 +421,7 @@ void main_timer_handler(struct pt_regs *regs)
421 421
422 do_timer(lost + 1); 422 do_timer(lost + 1);
423#ifndef CONFIG_SMP 423#ifndef CONFIG_SMP
424 update_process_times(user_mode(regs)); 424 update_process_times(user_mode(get_irq_regs()));
425#endif 425#endif
426 426
427/* 427/*
@@ -431,7 +431,7 @@ void main_timer_handler(struct pt_regs *regs)
431 */ 431 */
432 432
433 if (!using_apic_timer) 433 if (!using_apic_timer)
434 smp_local_timer_interrupt(regs); 434 smp_local_timer_interrupt();
435 435
436/* 436/*
437 * If we have an externally synchronized Linux clock, then update CMOS clock 437 * If we have an externally synchronized Linux clock, then update CMOS clock
@@ -450,11 +450,11 @@ void main_timer_handler(struct pt_regs *regs)
450 write_sequnlock(&xtime_lock); 450 write_sequnlock(&xtime_lock);
451} 451}
452 452
453static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 453static irqreturn_t timer_interrupt(int irq, void *dev_id)
454{ 454{
455 if (apic_runs_main_timer > 1) 455 if (apic_runs_main_timer > 1)
456 return IRQ_HANDLED; 456 return IRQ_HANDLED;
457 main_timer_handler(regs); 457 main_timer_handler();
458 if (using_apic_timer) 458 if (using_apic_timer)
459 smp_send_timer_broadcast_ipi(); 459 smp_send_timer_broadcast_ipi();
460 return IRQ_HANDLED; 460 return IRQ_HANDLED;
@@ -1337,7 +1337,7 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1337 } 1337 }
1338 if (call_rtc_interrupt) { 1338 if (call_rtc_interrupt) {
1339 rtc_int_flag |= (RTC_IRQF | (RTC_NUM_INTS << 8)); 1339 rtc_int_flag |= (RTC_IRQF | (RTC_NUM_INTS << 8));
1340 rtc_interrupt(rtc_int_flag, dev_id, regs); 1340 rtc_interrupt(rtc_int_flag, dev_id);
1341 } 1341 }
1342 return IRQ_HANDLED; 1342 return IRQ_HANDLED;
1343} 1343}
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
index 01f2a8d254c2..7819022a8db5 100644
--- a/arch/x86_64/kernel/traps.c
+++ b/arch/x86_64/kernel/traps.c
@@ -23,6 +23,7 @@
23#include <linux/delay.h> 23#include <linux/delay.h>
24#include <linux/spinlock.h> 24#include <linux/spinlock.h>
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
26#include <linux/kallsyms.h>
26#include <linux/module.h> 27#include <linux/module.h>
27#include <linux/moduleparam.h> 28#include <linux/moduleparam.h>
28#include <linux/nmi.h> 29#include <linux/nmi.h>
@@ -115,7 +116,6 @@ static int call_trace = 1;
115#endif 116#endif
116 117
117#ifdef CONFIG_KALLSYMS 118#ifdef CONFIG_KALLSYMS
118# include <linux/kallsyms.h>
119void printk_address(unsigned long address) 119void printk_address(unsigned long address)
120{ 120{
121 unsigned long offset = 0, symsize; 121 unsigned long offset = 0, symsize;
diff --git a/crypto/serpent.c b/crypto/serpent.c
index 465d091cd3ec..2b0a19a44ec5 100644
--- a/crypto/serpent.c
+++ b/crypto/serpent.c
@@ -364,10 +364,10 @@ static void serpent_encrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
364{ 364{
365 struct serpent_ctx *ctx = crypto_tfm_ctx(tfm); 365 struct serpent_ctx *ctx = crypto_tfm_ctx(tfm);
366 const u32 366 const u32
367 *k = ctx->expkey, 367 *k = ctx->expkey;
368 *s = (const u32 *)src; 368 const __le32 *s = (const __le32 *)src;
369 u32 *d = (u32 *)dst, 369 __le32 *d = (__le32 *)dst;
370 r0, r1, r2, r3, r4; 370 u32 r0, r1, r2, r3, r4;
371 371
372/* 372/*
373 * Note: The conversions between u8* and u32* might cause trouble 373 * Note: The conversions between u8* and u32* might cause trouble
@@ -423,10 +423,10 @@ static void serpent_decrypt(struct crypto_tfm *tfm, u8 *dst, const u8 *src)
423{ 423{
424 struct serpent_ctx *ctx = crypto_tfm_ctx(tfm); 424 struct serpent_ctx *ctx = crypto_tfm_ctx(tfm);
425 const u32 425 const u32
426 *k = ((struct serpent_ctx *)ctx)->expkey, 426 *k = ((struct serpent_ctx *)ctx)->expkey;
427 *s = (const u32 *)src; 427 const __le32 *s = (const __le32 *)src;
428 u32 *d = (u32 *)dst, 428 __le32 *d = (__le32 *)dst;
429 r0, r1, r2, r3, r4; 429 u32 r0, r1, r2, r3, r4;
430 430
431 r0 = le32_to_cpu(s[0]); 431 r0 = le32_to_cpu(s[0]);
432 r1 = le32_to_cpu(s[1]); 432 r1 = le32_to_cpu(s[1]);
diff --git a/drivers/acorn/block/mfmhd.c b/drivers/acorn/block/mfmhd.c
index 1bace29f4b6a..7fde8f4daebf 100644
--- a/drivers/acorn/block/mfmhd.c
+++ b/drivers/acorn/block/mfmhd.c
@@ -938,7 +938,7 @@ static void do_mfm_request(request_queue_t *q)
938 mfm_request(); 938 mfm_request();
939} 939}
940 940
941static void mfm_interrupt_handler(int unused, void *dev_id, struct pt_regs *regs) 941static void mfm_interrupt_handler(int unused, void *dev_id)
942{ 942{
943 void (*handler) (void) = do_mfm; 943 void (*handler) (void) = do_mfm;
944 944
diff --git a/drivers/acpi/cm_sbs.c b/drivers/acpi/cm_sbs.c
index a01ce6700bfe..4a9b7bf6f44e 100644
--- a/drivers/acpi/cm_sbs.c
+++ b/drivers/acpi/cm_sbs.c
@@ -67,7 +67,7 @@ void acpi_unlock_ac_dir(struct proc_dir_entry *acpi_ac_dir_param)
67 lock_ac_dir_cnt--; 67 lock_ac_dir_cnt--;
68 if (lock_ac_dir_cnt == 0 && acpi_ac_dir_param && acpi_ac_dir) { 68 if (lock_ac_dir_cnt == 0 && acpi_ac_dir_param && acpi_ac_dir) {
69 remove_proc_entry(ACPI_AC_CLASS, acpi_root_dir); 69 remove_proc_entry(ACPI_AC_CLASS, acpi_root_dir);
70 acpi_ac_dir = 0; 70 acpi_ac_dir = NULL;
71 } 71 }
72 mutex_unlock(&cm_sbs_mutex); 72 mutex_unlock(&cm_sbs_mutex);
73} 73}
@@ -99,7 +99,7 @@ void acpi_unlock_battery_dir(struct proc_dir_entry *acpi_battery_dir_param)
99 if (lock_battery_dir_cnt == 0 && acpi_battery_dir_param 99 if (lock_battery_dir_cnt == 0 && acpi_battery_dir_param
100 && acpi_battery_dir) { 100 && acpi_battery_dir) {
101 remove_proc_entry(ACPI_BATTERY_CLASS, acpi_root_dir); 101 remove_proc_entry(ACPI_BATTERY_CLASS, acpi_root_dir);
102 acpi_battery_dir = 0; 102 acpi_battery_dir = NULL;
103 } 103 }
104 mutex_unlock(&cm_sbs_mutex); 104 mutex_unlock(&cm_sbs_mutex);
105 return; 105 return;
diff --git a/drivers/acpi/hardware/hwregs.c b/drivers/acpi/hardware/hwregs.c
index 3143f36fcec9..fa58c1edce1e 100644
--- a/drivers/acpi/hardware/hwregs.c
+++ b/drivers/acpi/hardware/hwregs.c
@@ -665,8 +665,6 @@ acpi_status acpi_hw_register_write(u8 use_lock, u32 register_id, u32 value)
665 665
666 /* 666 /*
667 * Perform a read first to preserve certain bits (per ACPI spec) 667 * Perform a read first to preserve certain bits (per ACPI spec)
668 *
669 * Note: This includes SCI_EN, we never want to change this bit
670 */ 668 */
671 status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 669 status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK,
672 ACPI_REGISTER_PM1_CONTROL, 670 ACPI_REGISTER_PM1_CONTROL,
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 20beea778ea2..068fe4f100b0 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -237,7 +237,7 @@ acpi_os_table_override(struct acpi_table_header * existing_table,
237 return AE_OK; 237 return AE_OK;
238} 238}
239 239
240static irqreturn_t acpi_irq(int irq, void *dev_id, struct pt_regs *regs) 240static irqreturn_t acpi_irq(int irq, void *dev_id)
241{ 241{
242 return (*acpi_irq_handler) (acpi_irq_context) ? IRQ_HANDLED : IRQ_NONE; 242 return (*acpi_irq_handler) (acpi_irq_context) ? IRQ_HANDLED : IRQ_NONE;
243} 243}
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 54e1f38ce301..25929123ffff 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -204,7 +204,7 @@ static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg);
204static void ahci_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); 204static void ahci_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
205static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); 205static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
206static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); 206static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc);
207static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs *regs); 207static irqreturn_t ahci_interrupt (int irq, void *dev_instance);
208static void ahci_irq_clear(struct ata_port *ap); 208static void ahci_irq_clear(struct ata_port *ap);
209static int ahci_port_start(struct ata_port *ap); 209static int ahci_port_start(struct ata_port *ap);
210static void ahci_port_stop(struct ata_port *ap); 210static void ahci_port_stop(struct ata_port *ap);
@@ -1059,7 +1059,7 @@ static void ahci_irq_clear(struct ata_port *ap)
1059 /* TODO */ 1059 /* TODO */
1060} 1060}
1061 1061
1062static irqreturn_t ahci_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 1062static irqreturn_t ahci_interrupt(int irq, void *dev_instance)
1063{ 1063{
1064 struct ata_host *host = dev_instance; 1064 struct ata_host *host = dev_instance;
1065 struct ahci_host_priv *hpriv; 1065 struct ahci_host_priv *hpriv;
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index dce65651d858..77138a39eb04 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4857,7 +4857,6 @@ idle_irq:
4857 * ata_interrupt - Default ATA host interrupt handler 4857 * ata_interrupt - Default ATA host interrupt handler
4858 * @irq: irq line (unused) 4858 * @irq: irq line (unused)
4859 * @dev_instance: pointer to our ata_host information structure 4859 * @dev_instance: pointer to our ata_host information structure
4860 * @regs: unused
4861 * 4860 *
4862 * Default interrupt handler for PCI IDE devices. Calls 4861 * Default interrupt handler for PCI IDE devices. Calls
4863 * ata_host_intr() for each port that is not disabled. 4862 * ata_host_intr() for each port that is not disabled.
@@ -4869,7 +4868,7 @@ idle_irq:
4869 * IRQ_NONE or IRQ_HANDLED. 4868 * IRQ_NONE or IRQ_HANDLED.
4870 */ 4869 */
4871 4870
4872irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs) 4871irqreturn_t ata_interrupt (int irq, void *dev_instance)
4873{ 4872{
4874 struct ata_host *host = dev_instance; 4873 struct ata_host *host = dev_instance;
4875 unsigned int i; 4874 unsigned int i;
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c
index 81f3d219e70e..9021e34d2096 100644
--- a/drivers/ata/pdc_adma.c
+++ b/drivers/ata/pdc_adma.c
@@ -124,8 +124,7 @@ struct adma_port_priv {
124 124
125static int adma_ata_init_one (struct pci_dev *pdev, 125static int adma_ata_init_one (struct pci_dev *pdev,
126 const struct pci_device_id *ent); 126 const struct pci_device_id *ent);
127static irqreturn_t adma_intr (int irq, void *dev_instance, 127static irqreturn_t adma_intr (int irq, void *dev_instance);
128 struct pt_regs *regs);
129static int adma_port_start(struct ata_port *ap); 128static int adma_port_start(struct ata_port *ap);
130static void adma_host_stop(struct ata_host *host); 129static void adma_host_stop(struct ata_host *host);
131static void adma_port_stop(struct ata_port *ap); 130static void adma_port_stop(struct ata_port *ap);
@@ -508,7 +507,7 @@ static inline unsigned int adma_intr_mmio(struct ata_host *host)
508 return handled; 507 return handled;
509} 508}
510 509
511static irqreturn_t adma_intr(int irq, void *dev_instance, struct pt_regs *regs) 510static irqreturn_t adma_intr(int irq, void *dev_instance)
512{ 511{
513 struct ata_host *host = dev_instance; 512 struct ata_host *host = dev_instance;
514 unsigned int handled = 0; 513 unsigned int handled = 0;
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index e6aa1a86d5cf..1b8e0eb9e032 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -348,8 +348,7 @@ static void mv_port_stop(struct ata_port *ap);
348static void mv_qc_prep(struct ata_queued_cmd *qc); 348static void mv_qc_prep(struct ata_queued_cmd *qc);
349static void mv_qc_prep_iie(struct ata_queued_cmd *qc); 349static void mv_qc_prep_iie(struct ata_queued_cmd *qc);
350static unsigned int mv_qc_issue(struct ata_queued_cmd *qc); 350static unsigned int mv_qc_issue(struct ata_queued_cmd *qc);
351static irqreturn_t mv_interrupt(int irq, void *dev_instance, 351static irqreturn_t mv_interrupt(int irq, void *dev_instance);
352 struct pt_regs *regs);
353static void mv_eng_timeout(struct ata_port *ap); 352static void mv_eng_timeout(struct ata_port *ap);
354static int mv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); 353static int mv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
355 354
@@ -1448,8 +1447,7 @@ static void mv_host_intr(struct ata_host *host, u32 relevant, unsigned int hc)
1448 * This routine holds the host lock while processing pending 1447 * This routine holds the host lock while processing pending
1449 * interrupts. 1448 * interrupts.
1450 */ 1449 */
1451static irqreturn_t mv_interrupt(int irq, void *dev_instance, 1450static irqreturn_t mv_interrupt(int irq, void *dev_instance)
1452 struct pt_regs *regs)
1453{ 1451{
1454 struct ata_host *host = dev_instance; 1452 struct ata_host *host = dev_instance;
1455 unsigned int hc, handled = 0, n_hcs; 1453 unsigned int hc, handled = 0, n_hcs;
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index d09d20a17790..323b60710806 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -82,12 +82,9 @@ enum {
82 82
83static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); 83static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
84static void nv_ck804_host_stop(struct ata_host *host); 84static void nv_ck804_host_stop(struct ata_host *host);
85static irqreturn_t nv_generic_interrupt(int irq, void *dev_instance, 85static irqreturn_t nv_generic_interrupt(int irq, void *dev_instance);
86 struct pt_regs *regs); 86static irqreturn_t nv_nf2_interrupt(int irq, void *dev_instance);
87static irqreturn_t nv_nf2_interrupt(int irq, void *dev_instance, 87static irqreturn_t nv_ck804_interrupt(int irq, void *dev_instance);
88 struct pt_regs *regs);
89static irqreturn_t nv_ck804_interrupt(int irq, void *dev_instance,
90 struct pt_regs *regs);
91static u32 nv_scr_read (struct ata_port *ap, unsigned int sc_reg); 88static u32 nv_scr_read (struct ata_port *ap, unsigned int sc_reg);
92static void nv_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); 89static void nv_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
93 90
@@ -276,8 +273,7 @@ MODULE_LICENSE("GPL");
276MODULE_DEVICE_TABLE(pci, nv_pci_tbl); 273MODULE_DEVICE_TABLE(pci, nv_pci_tbl);
277MODULE_VERSION(DRV_VERSION); 274MODULE_VERSION(DRV_VERSION);
278 275
279static irqreturn_t nv_generic_interrupt(int irq, void *dev_instance, 276static irqreturn_t nv_generic_interrupt(int irq, void *dev_instance)
280 struct pt_regs *regs)
281{ 277{
282 struct ata_host *host = dev_instance; 278 struct ata_host *host = dev_instance;
283 unsigned int i; 279 unsigned int i;
@@ -357,8 +353,7 @@ static irqreturn_t nv_do_interrupt(struct ata_host *host, u8 irq_stat)
357 return IRQ_RETVAL(handled); 353 return IRQ_RETVAL(handled);
358} 354}
359 355
360static irqreturn_t nv_nf2_interrupt(int irq, void *dev_instance, 356static irqreturn_t nv_nf2_interrupt(int irq, void *dev_instance)
361 struct pt_regs *regs)
362{ 357{
363 struct ata_host *host = dev_instance; 358 struct ata_host *host = dev_instance;
364 u8 irq_stat; 359 u8 irq_stat;
@@ -372,8 +367,7 @@ static irqreturn_t nv_nf2_interrupt(int irq, void *dev_instance,
372 return ret; 367 return ret;
373} 368}
374 369
375static irqreturn_t nv_ck804_interrupt(int irq, void *dev_instance, 370static irqreturn_t nv_ck804_interrupt(int irq, void *dev_instance)
376 struct pt_regs *regs)
377{ 371{
378 struct ata_host *host = dev_instance; 372 struct ata_host *host = dev_instance;
379 u8 irq_stat; 373 u8 irq_stat;
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index 15c9437710fc..8bcdfa64667c 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -93,7 +93,7 @@ struct pdc_host_priv {
93static u32 pdc_sata_scr_read (struct ata_port *ap, unsigned int sc_reg); 93static u32 pdc_sata_scr_read (struct ata_port *ap, unsigned int sc_reg);
94static void pdc_sata_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); 94static void pdc_sata_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
95static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); 95static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
96static irqreturn_t pdc_interrupt (int irq, void *dev_instance, struct pt_regs *regs); 96static irqreturn_t pdc_interrupt (int irq, void *dev_instance);
97static void pdc_eng_timeout(struct ata_port *ap); 97static void pdc_eng_timeout(struct ata_port *ap);
98static int pdc_port_start(struct ata_port *ap); 98static int pdc_port_start(struct ata_port *ap);
99static void pdc_port_stop(struct ata_port *ap); 99static void pdc_port_stop(struct ata_port *ap);
@@ -360,7 +360,7 @@ static void pdc_sata_phy_reset(struct ata_port *ap)
360static void pdc_pata_cbl_detect(struct ata_port *ap) 360static void pdc_pata_cbl_detect(struct ata_port *ap)
361{ 361{
362 u8 tmp; 362 u8 tmp;
363 void __iomem *mmio = (void *) ap->ioaddr.cmd_addr + PDC_CTLSTAT + 0x03; 363 void __iomem *mmio = (void __iomem *) ap->ioaddr.cmd_addr + PDC_CTLSTAT + 0x03;
364 364
365 tmp = readb(mmio); 365 tmp = readb(mmio);
366 366
@@ -498,7 +498,7 @@ static void pdc_irq_clear(struct ata_port *ap)
498 readl(mmio + PDC_INT_SEQMASK); 498 readl(mmio + PDC_INT_SEQMASK);
499} 499}
500 500
501static irqreturn_t pdc_interrupt (int irq, void *dev_instance, struct pt_regs *regs) 501static irqreturn_t pdc_interrupt (int irq, void *dev_instance)
502{ 502{
503 struct ata_host *host = dev_instance; 503 struct ata_host *host = dev_instance;
504 struct ata_port *ap; 504 struct ata_port *ap;
diff --git a/drivers/ata/sata_qstor.c b/drivers/ata/sata_qstor.c
index 7f6cc3c07de5..710909df4eaf 100644
--- a/drivers/ata/sata_qstor.c
+++ b/drivers/ata/sata_qstor.c
@@ -114,7 +114,7 @@ struct qs_port_priv {
114static u32 qs_scr_read (struct ata_port *ap, unsigned int sc_reg); 114static u32 qs_scr_read (struct ata_port *ap, unsigned int sc_reg);
115static void qs_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); 115static void qs_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
116static int qs_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); 116static int qs_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
117static irqreturn_t qs_intr (int irq, void *dev_instance, struct pt_regs *regs); 117static irqreturn_t qs_intr (int irq, void *dev_instance);
118static int qs_port_start(struct ata_port *ap); 118static int qs_port_start(struct ata_port *ap);
119static void qs_host_stop(struct ata_host *host); 119static void qs_host_stop(struct ata_host *host);
120static void qs_port_stop(struct ata_port *ap); 120static void qs_port_stop(struct ata_port *ap);
@@ -454,7 +454,7 @@ static inline unsigned int qs_intr_mmio(struct ata_host *host)
454 return handled; 454 return handled;
455} 455}
456 456
457static irqreturn_t qs_intr(int irq, void *dev_instance, struct pt_regs *regs) 457static irqreturn_t qs_intr(int irq, void *dev_instance)
458{ 458{
459 struct ata_host *host = dev_instance; 459 struct ata_host *host = dev_instance;
460 unsigned int handled = 0; 460 unsigned int handled = 0;
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c
index 3d9fa1cc834d..ca8d99312472 100644
--- a/drivers/ata/sata_sil.c
+++ b/drivers/ata/sata_sil.c
@@ -116,8 +116,7 @@ static void sil_dev_config(struct ata_port *ap, struct ata_device *dev);
116static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg); 116static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg);
117static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); 117static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
118static void sil_post_set_mode (struct ata_port *ap); 118static void sil_post_set_mode (struct ata_port *ap);
119static irqreturn_t sil_interrupt(int irq, void *dev_instance, 119static irqreturn_t sil_interrupt(int irq, void *dev_instance);
120 struct pt_regs *regs);
121static void sil_freeze(struct ata_port *ap); 120static void sil_freeze(struct ata_port *ap);
122static void sil_thaw(struct ata_port *ap); 121static void sil_thaw(struct ata_port *ap);
123 122
@@ -350,7 +349,7 @@ static u32 sil_scr_read (struct ata_port *ap, unsigned int sc_reg)
350 349
351static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val) 350static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val)
352{ 351{
353 void *mmio = (void __iomem *) sil_scr_addr(ap, sc_reg); 352 void __iomem *mmio = (void __iomem *) sil_scr_addr(ap, sc_reg);
354 if (mmio) 353 if (mmio)
355 writel(val, mmio); 354 writel(val, mmio);
356} 355}
@@ -437,8 +436,7 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2)
437 ata_port_freeze(ap); 436 ata_port_freeze(ap);
438} 437}
439 438
440static irqreturn_t sil_interrupt(int irq, void *dev_instance, 439static irqreturn_t sil_interrupt(int irq, void *dev_instance)
441 struct pt_regs *regs)
442{ 440{
443 struct ata_host *host = dev_instance; 441 struct ata_host *host = dev_instance;
444 void __iomem *mmio_base = host->mmio_base; 442 void __iomem *mmio_base = host->mmio_base;
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index a951f40c2f21..169e200a6a71 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -330,7 +330,7 @@ static void sil24_tf_read(struct ata_port *ap, struct ata_taskfile *tf);
330static void sil24_qc_prep(struct ata_queued_cmd *qc); 330static void sil24_qc_prep(struct ata_queued_cmd *qc);
331static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc); 331static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc);
332static void sil24_irq_clear(struct ata_port *ap); 332static void sil24_irq_clear(struct ata_port *ap);
333static irqreturn_t sil24_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 333static irqreturn_t sil24_interrupt(int irq, void *dev_instance);
334static void sil24_freeze(struct ata_port *ap); 334static void sil24_freeze(struct ata_port *ap);
335static void sil24_thaw(struct ata_port *ap); 335static void sil24_thaw(struct ata_port *ap);
336static void sil24_error_handler(struct ata_port *ap); 336static void sil24_error_handler(struct ata_port *ap);
@@ -870,7 +870,7 @@ static inline void sil24_host_intr(struct ata_port *ap)
870 slot_stat, ap->active_tag, ap->sactive); 870 slot_stat, ap->active_tag, ap->sactive);
871} 871}
872 872
873static irqreturn_t sil24_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 873static irqreturn_t sil24_interrupt(int irq, void *dev_instance)
874{ 874{
875 struct ata_host *host = dev_instance; 875 struct ata_host *host = dev_instance;
876 struct sil24_host_priv *hpriv = host->private_data; 876 struct sil24_host_priv *hpriv = host->private_data;
diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata_svw.c
index 84025a2fd5be..db32d15b7fa1 100644
--- a/drivers/ata/sata_svw.c
+++ b/drivers/ata/sata_svw.c
@@ -177,7 +177,7 @@ static void k2_bmdma_setup_mmio (struct ata_queued_cmd *qc)
177 struct ata_port *ap = qc->ap; 177 struct ata_port *ap = qc->ap;
178 unsigned int rw = (qc->tf.flags & ATA_TFLAG_WRITE); 178 unsigned int rw = (qc->tf.flags & ATA_TFLAG_WRITE);
179 u8 dmactl; 179 u8 dmactl;
180 void *mmio = (void *) ap->ioaddr.bmdma_addr; 180 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
181 /* load PRD table addr. */ 181 /* load PRD table addr. */
182 mb(); /* make sure PRD table writes are visible to controller */ 182 mb(); /* make sure PRD table writes are visible to controller */
183 writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS); 183 writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS);
@@ -205,7 +205,7 @@ static void k2_bmdma_setup_mmio (struct ata_queued_cmd *qc)
205static void k2_bmdma_start_mmio (struct ata_queued_cmd *qc) 205static void k2_bmdma_start_mmio (struct ata_queued_cmd *qc)
206{ 206{
207 struct ata_port *ap = qc->ap; 207 struct ata_port *ap = qc->ap;
208 void *mmio = (void *) ap->ioaddr.bmdma_addr; 208 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
209 u8 dmactl; 209 u8 dmactl;
210 210
211 /* start host DMA transaction */ 211 /* start host DMA transaction */
diff --git a/drivers/ata/sata_sx4.c b/drivers/ata/sata_sx4.c
index 8c74f2ff4344..ae7992de4b08 100644
--- a/drivers/ata/sata_sx4.c
+++ b/drivers/ata/sata_sx4.c
@@ -152,7 +152,7 @@ struct pdc_host_priv {
152 152
153 153
154static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); 154static int pdc_sata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
155static irqreturn_t pdc20621_interrupt (int irq, void *dev_instance, struct pt_regs *regs); 155static irqreturn_t pdc20621_interrupt (int irq, void *dev_instance);
156static void pdc_eng_timeout(struct ata_port *ap); 156static void pdc_eng_timeout(struct ata_port *ap);
157static void pdc_20621_phy_reset (struct ata_port *ap); 157static void pdc_20621_phy_reset (struct ata_port *ap);
158static int pdc_port_start(struct ata_port *ap); 158static int pdc_port_start(struct ata_port *ap);
@@ -788,7 +788,7 @@ static void pdc20621_irq_clear(struct ata_port *ap)
788 readl(mmio + PDC_20621_SEQMASK); 788 readl(mmio + PDC_20621_SEQMASK);
789} 789}
790 790
791static irqreturn_t pdc20621_interrupt (int irq, void *dev_instance, struct pt_regs *regs) 791static irqreturn_t pdc20621_interrupt (int irq, void *dev_instance)
792{ 792{
793 struct ata_host *host = dev_instance; 793 struct ata_host *host = dev_instance;
794 struct ata_port *ap; 794 struct ata_port *ap;
diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c
index 273d88fcf980..e654b990b905 100644
--- a/drivers/ata/sata_vsc.c
+++ b/drivers/ata/sata_vsc.c
@@ -203,8 +203,7 @@ static void vsc_sata_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
203 * 203 *
204 * Read the interrupt register and process for the devices that have them pending. 204 * Read the interrupt register and process for the devices that have them pending.
205 */ 205 */
206static irqreturn_t vsc_sata_interrupt (int irq, void *dev_instance, 206static irqreturn_t vsc_sata_interrupt (int irq, void *dev_instance)
207 struct pt_regs *regs)
208{ 207{
209 struct ata_host *host = dev_instance; 208 struct ata_host *host = dev_instance;
210 unsigned int i; 209 unsigned int i;
diff --git a/drivers/atm/ambassador.c b/drivers/atm/ambassador.c
index da599e6e9d34..323592de047b 100644
--- a/drivers/atm/ambassador.c
+++ b/drivers/atm/ambassador.c
@@ -861,18 +861,11 @@ static inline void interrupts_off (amb_dev * dev) {
861 861
862/********** interrupt handling **********/ 862/********** interrupt handling **********/
863 863
864static irqreturn_t interrupt_handler(int irq, void *dev_id, 864static irqreturn_t interrupt_handler(int irq, void *dev_id) {
865 struct pt_regs *pt_regs) { 865 amb_dev * dev = dev_id;
866 amb_dev * dev = (amb_dev *) dev_id;
867 (void) pt_regs;
868 866
869 PRINTD (DBG_IRQ|DBG_FLOW, "interrupt_handler: %p", dev_id); 867 PRINTD (DBG_IRQ|DBG_FLOW, "interrupt_handler: %p", dev_id);
870 868
871 if (!dev_id) {
872 PRINTD (DBG_IRQ|DBG_ERR, "irq with NULL dev_id: %d", irq);
873 return IRQ_NONE;
874 }
875
876 { 869 {
877 u32 interrupt = rd_plain (dev, offsetof(amb_mem, interrupt)); 870 u32 interrupt = rd_plain (dev, offsetof(amb_mem, interrupt));
878 871
diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c
index df359a6c14f6..bc1b13c8f5d7 100644
--- a/drivers/atm/eni.c
+++ b/drivers/atm/eni.c
@@ -1488,7 +1488,7 @@ static void bug_int(struct atm_dev *dev,unsigned long reason)
1488} 1488}
1489 1489
1490 1490
1491static irqreturn_t eni_int(int irq,void *dev_id,struct pt_regs *regs) 1491static irqreturn_t eni_int(int irq,void *dev_id)
1492{ 1492{
1493 struct atm_dev *dev; 1493 struct atm_dev *dev;
1494 struct eni_dev *eni_dev; 1494 struct eni_dev *eni_dev;
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
index 5f25e5efefcd..40ab9b65fae9 100644
--- a/drivers/atm/firestream.c
+++ b/drivers/atm/firestream.c
@@ -1546,7 +1546,7 @@ static void __devexit free_freepool (struct fs_dev *dev, struct freepool *fp)
1546 1546
1547 1547
1548 1548
1549static irqreturn_t fs_irq (int irq, void *dev_id, struct pt_regs * pt_regs) 1549static irqreturn_t fs_irq (int irq, void *dev_id)
1550{ 1550{
1551 int i; 1551 int i;
1552 u32 status; 1552 u32 status;
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
index 98622130de5b..3a7b21ff30a5 100644
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -1328,7 +1328,7 @@ fore200e_irq(struct fore200e* fore200e)
1328 1328
1329 1329
1330static irqreturn_t 1330static irqreturn_t
1331fore200e_interrupt(int irq, void* dev, struct pt_regs* regs) 1331fore200e_interrupt(int irq, void* dev)
1332{ 1332{
1333 struct fore200e* fore200e = FORE200E_DEV((struct atm_dev*)dev); 1333 struct fore200e* fore200e = FORE200E_DEV((struct atm_dev*)dev);
1334 1334
diff --git a/drivers/atm/he.c b/drivers/atm/he.c
index b22a9142b240..c7314a79da0f 100644
--- a/drivers/atm/he.c
+++ b/drivers/atm/he.c
@@ -109,7 +109,7 @@ static int he_open(struct atm_vcc *vcc);
109static void he_close(struct atm_vcc *vcc); 109static void he_close(struct atm_vcc *vcc);
110static int he_send(struct atm_vcc *vcc, struct sk_buff *skb); 110static int he_send(struct atm_vcc *vcc, struct sk_buff *skb);
111static int he_ioctl(struct atm_dev *dev, unsigned int cmd, void __user *arg); 111static int he_ioctl(struct atm_dev *dev, unsigned int cmd, void __user *arg);
112static irqreturn_t he_irq_handler(int irq, void *dev_id, struct pt_regs *regs); 112static irqreturn_t he_irq_handler(int irq, void *dev_id);
113static void he_tasklet(unsigned long data); 113static void he_tasklet(unsigned long data);
114static int he_proc_read(struct atm_dev *dev,loff_t *pos,char *page); 114static int he_proc_read(struct atm_dev *dev,loff_t *pos,char *page);
115static int he_start(struct atm_dev *dev); 115static int he_start(struct atm_dev *dev);
@@ -2216,7 +2216,7 @@ he_tasklet(unsigned long data)
2216} 2216}
2217 2217
2218static irqreturn_t 2218static irqreturn_t
2219he_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 2219he_irq_handler(int irq, void *dev_id)
2220{ 2220{
2221 unsigned long flags; 2221 unsigned long flags;
2222 struct he_dev *he_dev = (struct he_dev * )dev_id; 2222 struct he_dev *he_dev = (struct he_dev * )dev_id;
diff --git a/drivers/atm/horizon.c b/drivers/atm/horizon.c
index 209dba1c70da..f59349206dd2 100644
--- a/drivers/atm/horizon.c
+++ b/drivers/atm/horizon.c
@@ -1382,24 +1382,13 @@ static inline void rx_data_av_handler (hrz_dev * dev) {
1382 1382
1383/********** interrupt handler **********/ 1383/********** interrupt handler **********/
1384 1384
1385static irqreturn_t interrupt_handler(int irq, void *dev_id, 1385static irqreturn_t interrupt_handler(int irq, void *dev_id) {
1386 struct pt_regs *pt_regs) {
1387 hrz_dev * dev = (hrz_dev *) dev_id; 1386 hrz_dev * dev = (hrz_dev *) dev_id;
1388 u32 int_source; 1387 u32 int_source;
1389 unsigned int irq_ok; 1388 unsigned int irq_ok;
1390 (void) pt_regs;
1391 1389
1392 PRINTD (DBG_FLOW, "interrupt_handler: %p", dev_id); 1390 PRINTD (DBG_FLOW, "interrupt_handler: %p", dev_id);
1393 1391
1394 if (!dev_id) {
1395 PRINTD (DBG_IRQ|DBG_ERR, "irq with NULL dev_id: %d", irq);
1396 return IRQ_NONE;
1397 }
1398 if (irq != dev->irq) {
1399 PRINTD (DBG_IRQ|DBG_ERR, "irq mismatch: %d", irq);
1400 return IRQ_NONE;
1401 }
1402
1403 // definitely for us 1392 // definitely for us
1404 irq_ok = 0; 1393 irq_ok = 0;
1405 while ((int_source = rd_regl (dev, INT_SOURCE_REG_OFF) 1394 while ((int_source = rd_regl (dev, INT_SOURCE_REG_OFF)
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index 7487f0ad68e9..87b17c33b3f9 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -2774,7 +2774,7 @@ idt77252_collect_stat(struct idt77252_dev *card)
2774} 2774}
2775 2775
2776static irqreturn_t 2776static irqreturn_t
2777idt77252_interrupt(int irq, void *dev_id, struct pt_regs *ptregs) 2777idt77252_interrupt(int irq, void *dev_id)
2778{ 2778{
2779 struct idt77252_dev *card = dev_id; 2779 struct idt77252_dev *card = dev_id;
2780 u32 stat; 2780 u32 stat;
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
index f20b0b2c06c6..9ed1c60048f0 100644
--- a/drivers/atm/iphase.c
+++ b/drivers/atm/iphase.c
@@ -2195,7 +2195,7 @@ err_out:
2195 return -ENOMEM; 2195 return -ENOMEM;
2196} 2196}
2197 2197
2198static irqreturn_t ia_int(int irq, void *dev_id, struct pt_regs *regs) 2198static irqreturn_t ia_int(int irq, void *dev_id)
2199{ 2199{
2200 struct atm_dev *dev; 2200 struct atm_dev *dev;
2201 IADEV *iadev; 2201 IADEV *iadev;
diff --git a/drivers/atm/lanai.c b/drivers/atm/lanai.c
index b9568e10965a..267825501dfe 100644
--- a/drivers/atm/lanai.c
+++ b/drivers/atm/lanai.c
@@ -1890,13 +1890,11 @@ static inline void lanai_int_1(struct lanai_dev *lanai, u32 reason)
1890 reg_write(lanai, ack, IntAck_Reg); 1890 reg_write(lanai, ack, IntAck_Reg);
1891} 1891}
1892 1892
1893static irqreturn_t lanai_int(int irq, void *devid, struct pt_regs *regs) 1893static irqreturn_t lanai_int(int irq, void *devid)
1894{ 1894{
1895 struct lanai_dev *lanai = (struct lanai_dev *) devid; 1895 struct lanai_dev *lanai = devid;
1896 u32 reason; 1896 u32 reason;
1897 1897
1898 (void) irq; (void) regs; /* unused variables */
1899
1900#ifdef USE_POWERDOWN 1898#ifdef USE_POWERDOWN
1901 /* 1899 /*
1902 * If we're powered down we shouldn't be generating any interrupts - 1900 * If we're powered down we shouldn't be generating any interrupts -
diff --git a/drivers/atm/nicstar.c b/drivers/atm/nicstar.c
index b8036899e56f..632ede552761 100644
--- a/drivers/atm/nicstar.c
+++ b/drivers/atm/nicstar.c
@@ -214,7 +214,7 @@ static void __devinit ns_init_card_error(ns_dev *card, int error);
214static scq_info *get_scq(int size, u32 scd); 214static scq_info *get_scq(int size, u32 scd);
215static void free_scq(scq_info *scq, struct atm_vcc *vcc); 215static void free_scq(scq_info *scq, struct atm_vcc *vcc);
216static void push_rxbufs(ns_dev *, struct sk_buff *); 216static void push_rxbufs(ns_dev *, struct sk_buff *);
217static irqreturn_t ns_irq_handler(int irq, void *dev_id, struct pt_regs *regs); 217static irqreturn_t ns_irq_handler(int irq, void *dev_id);
218static int ns_open(struct atm_vcc *vcc); 218static int ns_open(struct atm_vcc *vcc);
219static void ns_close(struct atm_vcc *vcc); 219static void ns_close(struct atm_vcc *vcc);
220static void fill_tst(ns_dev *card, int n, vc_map *vc); 220static void fill_tst(ns_dev *card, int n, vc_map *vc);
@@ -1194,7 +1194,7 @@ static void push_rxbufs(ns_dev *card, struct sk_buff *skb)
1194 1194
1195 1195
1196 1196
1197static irqreturn_t ns_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 1197static irqreturn_t ns_irq_handler(int irq, void *dev_id)
1198{ 1198{
1199 u32 stat_r; 1199 u32 stat_r;
1200 ns_dev *card; 1200 ns_dev *card;
diff --git a/drivers/atm/zatm.c b/drivers/atm/zatm.c
index 083c5d3f2e18..7df0f373188e 100644
--- a/drivers/atm/zatm.c
+++ b/drivers/atm/zatm.c
@@ -1012,7 +1012,7 @@ static int start_tx(struct atm_dev *dev)
1012/*------------------------------- interrupts --------------------------------*/ 1012/*------------------------------- interrupts --------------------------------*/
1013 1013
1014 1014
1015static irqreturn_t zatm_int(int irq,void *dev_id,struct pt_regs *regs) 1015static irqreturn_t zatm_int(int irq,void *dev_id)
1016{ 1016{
1017 struct atm_dev *dev; 1017 struct atm_dev *dev;
1018 struct zatm_dev *zatm_dev; 1018 struct zatm_dev *zatm_dev;
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
index b3f639fbf220..742d07403101 100644
--- a/drivers/block/DAC960.c
+++ b/drivers/block/DAC960.c
@@ -2698,8 +2698,7 @@ DAC960_DetectController(struct pci_dev *PCI_Device,
2698{ 2698{
2699 struct DAC960_privdata *privdata = 2699 struct DAC960_privdata *privdata =
2700 (struct DAC960_privdata *)entry->driver_data; 2700 (struct DAC960_privdata *)entry->driver_data;
2701 irqreturn_t (*InterruptHandler)(int, void *, struct pt_regs *) = 2701 irq_handler_t InterruptHandler = privdata->InterruptHandler;
2702 privdata->InterruptHandler;
2703 unsigned int MemoryWindowSize = privdata->MemoryWindowSize; 2702 unsigned int MemoryWindowSize = privdata->MemoryWindowSize;
2704 DAC960_Controller_T *Controller = NULL; 2703 DAC960_Controller_T *Controller = NULL;
2705 unsigned char DeviceFunction = PCI_Device->devfn; 2704 unsigned char DeviceFunction = PCI_Device->devfn;
@@ -5253,10 +5252,9 @@ static void DAC960_V2_ProcessCompletedCommand(DAC960_Command_T *Command)
5253*/ 5252*/
5254 5253
5255static irqreturn_t DAC960_GEM_InterruptHandler(int IRQ_Channel, 5254static irqreturn_t DAC960_GEM_InterruptHandler(int IRQ_Channel,
5256 void *DeviceIdentifier, 5255 void *DeviceIdentifier)
5257 struct pt_regs *InterruptRegisters)
5258{ 5256{
5259 DAC960_Controller_T *Controller = (DAC960_Controller_T *) DeviceIdentifier; 5257 DAC960_Controller_T *Controller = DeviceIdentifier;
5260 void __iomem *ControllerBaseAddress = Controller->BaseAddress; 5258 void __iomem *ControllerBaseAddress = Controller->BaseAddress;
5261 DAC960_V2_StatusMailbox_T *NextStatusMailbox; 5259 DAC960_V2_StatusMailbox_T *NextStatusMailbox;
5262 unsigned long flags; 5260 unsigned long flags;
@@ -5295,10 +5293,9 @@ static irqreturn_t DAC960_GEM_InterruptHandler(int IRQ_Channel,
5295*/ 5293*/
5296 5294
5297static irqreturn_t DAC960_BA_InterruptHandler(int IRQ_Channel, 5295static irqreturn_t DAC960_BA_InterruptHandler(int IRQ_Channel,
5298 void *DeviceIdentifier, 5296 void *DeviceIdentifier)
5299 struct pt_regs *InterruptRegisters)
5300{ 5297{
5301 DAC960_Controller_T *Controller = (DAC960_Controller_T *) DeviceIdentifier; 5298 DAC960_Controller_T *Controller = DeviceIdentifier;
5302 void __iomem *ControllerBaseAddress = Controller->BaseAddress; 5299 void __iomem *ControllerBaseAddress = Controller->BaseAddress;
5303 DAC960_V2_StatusMailbox_T *NextStatusMailbox; 5300 DAC960_V2_StatusMailbox_T *NextStatusMailbox;
5304 unsigned long flags; 5301 unsigned long flags;
@@ -5338,10 +5335,9 @@ static irqreturn_t DAC960_BA_InterruptHandler(int IRQ_Channel,
5338*/ 5335*/
5339 5336
5340static irqreturn_t DAC960_LP_InterruptHandler(int IRQ_Channel, 5337static irqreturn_t DAC960_LP_InterruptHandler(int IRQ_Channel,
5341 void *DeviceIdentifier, 5338 void *DeviceIdentifier)
5342 struct pt_regs *InterruptRegisters)
5343{ 5339{
5344 DAC960_Controller_T *Controller = (DAC960_Controller_T *) DeviceIdentifier; 5340 DAC960_Controller_T *Controller = DeviceIdentifier;
5345 void __iomem *ControllerBaseAddress = Controller->BaseAddress; 5341 void __iomem *ControllerBaseAddress = Controller->BaseAddress;
5346 DAC960_V2_StatusMailbox_T *NextStatusMailbox; 5342 DAC960_V2_StatusMailbox_T *NextStatusMailbox;
5347 unsigned long flags; 5343 unsigned long flags;
@@ -5381,10 +5377,9 @@ static irqreturn_t DAC960_LP_InterruptHandler(int IRQ_Channel,
5381*/ 5377*/
5382 5378
5383static irqreturn_t DAC960_LA_InterruptHandler(int IRQ_Channel, 5379static irqreturn_t DAC960_LA_InterruptHandler(int IRQ_Channel,
5384 void *DeviceIdentifier, 5380 void *DeviceIdentifier)
5385 struct pt_regs *InterruptRegisters)
5386{ 5381{
5387 DAC960_Controller_T *Controller = (DAC960_Controller_T *) DeviceIdentifier; 5382 DAC960_Controller_T *Controller = DeviceIdentifier;
5388 void __iomem *ControllerBaseAddress = Controller->BaseAddress; 5383 void __iomem *ControllerBaseAddress = Controller->BaseAddress;
5389 DAC960_V1_StatusMailbox_T *NextStatusMailbox; 5384 DAC960_V1_StatusMailbox_T *NextStatusMailbox;
5390 unsigned long flags; 5385 unsigned long flags;
@@ -5420,10 +5415,9 @@ static irqreturn_t DAC960_LA_InterruptHandler(int IRQ_Channel,
5420*/ 5415*/
5421 5416
5422static irqreturn_t DAC960_PG_InterruptHandler(int IRQ_Channel, 5417static irqreturn_t DAC960_PG_InterruptHandler(int IRQ_Channel,
5423 void *DeviceIdentifier, 5418 void *DeviceIdentifier)
5424 struct pt_regs *InterruptRegisters)
5425{ 5419{
5426 DAC960_Controller_T *Controller = (DAC960_Controller_T *) DeviceIdentifier; 5420 DAC960_Controller_T *Controller = DeviceIdentifier;
5427 void __iomem *ControllerBaseAddress = Controller->BaseAddress; 5421 void __iomem *ControllerBaseAddress = Controller->BaseAddress;
5428 DAC960_V1_StatusMailbox_T *NextStatusMailbox; 5422 DAC960_V1_StatusMailbox_T *NextStatusMailbox;
5429 unsigned long flags; 5423 unsigned long flags;
@@ -5459,10 +5453,9 @@ static irqreturn_t DAC960_PG_InterruptHandler(int IRQ_Channel,
5459*/ 5453*/
5460 5454
5461static irqreturn_t DAC960_PD_InterruptHandler(int IRQ_Channel, 5455static irqreturn_t DAC960_PD_InterruptHandler(int IRQ_Channel,
5462 void *DeviceIdentifier, 5456 void *DeviceIdentifier)
5463 struct pt_regs *InterruptRegisters)
5464{ 5457{
5465 DAC960_Controller_T *Controller = (DAC960_Controller_T *) DeviceIdentifier; 5458 DAC960_Controller_T *Controller = DeviceIdentifier;
5466 void __iomem *ControllerBaseAddress = Controller->BaseAddress; 5459 void __iomem *ControllerBaseAddress = Controller->BaseAddress;
5467 unsigned long flags; 5460 unsigned long flags;
5468 5461
@@ -5498,10 +5491,9 @@ static irqreturn_t DAC960_PD_InterruptHandler(int IRQ_Channel,
5498*/ 5491*/
5499 5492
5500static irqreturn_t DAC960_P_InterruptHandler(int IRQ_Channel, 5493static irqreturn_t DAC960_P_InterruptHandler(int IRQ_Channel,
5501 void *DeviceIdentifier, 5494 void *DeviceIdentifier)
5502 struct pt_regs *InterruptRegisters)
5503{ 5495{
5504 DAC960_Controller_T *Controller = (DAC960_Controller_T *) DeviceIdentifier; 5496 DAC960_Controller_T *Controller = DeviceIdentifier;
5505 void __iomem *ControllerBaseAddress = Controller->BaseAddress; 5497 void __iomem *ControllerBaseAddress = Controller->BaseAddress;
5506 unsigned long flags; 5498 unsigned long flags;
5507 5499
diff --git a/drivers/block/DAC960.h b/drivers/block/DAC960.h
index f9217c34bc2b..cec539e601fe 100644
--- a/drivers/block/DAC960.h
+++ b/drivers/block/DAC960.h
@@ -2175,7 +2175,7 @@ static char
2175struct DAC960_privdata { 2175struct DAC960_privdata {
2176 DAC960_HardwareType_T HardwareType; 2176 DAC960_HardwareType_T HardwareType;
2177 DAC960_FirmwareType_T FirmwareType; 2177 DAC960_FirmwareType_T FirmwareType;
2178 irqreturn_t (*InterruptHandler)(int, void *, struct pt_regs *); 2178 irq_handler_t InterruptHandler;
2179 unsigned int MemoryWindowSize; 2179 unsigned int MemoryWindowSize;
2180}; 2180};
2181 2181
@@ -4412,12 +4412,12 @@ static void DAC960_FinalizeController(DAC960_Controller_T *);
4412static void DAC960_V1_QueueReadWriteCommand(DAC960_Command_T *); 4412static void DAC960_V1_QueueReadWriteCommand(DAC960_Command_T *);
4413static void DAC960_V2_QueueReadWriteCommand(DAC960_Command_T *); 4413static void DAC960_V2_QueueReadWriteCommand(DAC960_Command_T *);
4414static void DAC960_RequestFunction(struct request_queue *); 4414static void DAC960_RequestFunction(struct request_queue *);
4415static irqreturn_t DAC960_BA_InterruptHandler(int, void *, struct pt_regs *); 4415static irqreturn_t DAC960_BA_InterruptHandler(int, void *);
4416static irqreturn_t DAC960_LP_InterruptHandler(int, void *, struct pt_regs *); 4416static irqreturn_t DAC960_LP_InterruptHandler(int, void *);
4417static irqreturn_t DAC960_LA_InterruptHandler(int, void *, struct pt_regs *); 4417static irqreturn_t DAC960_LA_InterruptHandler(int, void *);
4418static irqreturn_t DAC960_PG_InterruptHandler(int, void *, struct pt_regs *); 4418static irqreturn_t DAC960_PG_InterruptHandler(int, void *);
4419static irqreturn_t DAC960_PD_InterruptHandler(int, void *, struct pt_regs *); 4419static irqreturn_t DAC960_PD_InterruptHandler(int, void *);
4420static irqreturn_t DAC960_P_InterruptHandler(int, void *, struct pt_regs *); 4420static irqreturn_t DAC960_P_InterruptHandler(int, void *);
4421static void DAC960_V1_QueueMonitoringCommand(DAC960_Command_T *); 4421static void DAC960_V1_QueueMonitoringCommand(DAC960_Command_T *);
4422static void DAC960_V2_QueueMonitoringCommand(DAC960_Command_T *); 4422static void DAC960_V2_QueueMonitoringCommand(DAC960_Command_T *);
4423static void DAC960_MonitoringTimerFunction(unsigned long); 4423static void DAC960_MonitoringTimerFunction(unsigned long);
diff --git a/drivers/block/acsi.c b/drivers/block/acsi.c
index 0b80fbb8dbfd..706cdc6a69ec 100644
--- a/drivers/block/acsi.c
+++ b/drivers/block/acsi.c
@@ -346,7 +346,7 @@ static int acsicmd_dma( const char *cmd, char *buffer, int blocks, int
346 rwflag, int enable); 346 rwflag, int enable);
347static int acsi_reqsense( char *buffer, int targ, int lun); 347static int acsi_reqsense( char *buffer, int targ, int lun);
348static void acsi_print_error(const unsigned char *errblk, struct acsi_info_struct *aip); 348static void acsi_print_error(const unsigned char *errblk, struct acsi_info_struct *aip);
349static irqreturn_t acsi_interrupt (int irq, void *data, struct pt_regs *fp); 349static irqreturn_t acsi_interrupt (int irq, void *data);
350static void unexpected_acsi_interrupt( void ); 350static void unexpected_acsi_interrupt( void );
351static void bad_rw_intr( void ); 351static void bad_rw_intr( void );
352static void read_intr( void ); 352static void read_intr( void );
@@ -726,7 +726,7 @@ static void acsi_print_error(const unsigned char *errblk, struct acsi_info_struc
726 * 726 *
727 *******************************************************************/ 727 *******************************************************************/
728 728
729static irqreturn_t acsi_interrupt(int irq, void *data, struct pt_regs *fp ) 729static irqreturn_t acsi_interrupt(int irq, void *data )
730 730
731{ void (*acsi_irq_handler)(void) = do_acsi; 731{ void (*acsi_irq_handler)(void) = do_acsi;
732 732
diff --git a/drivers/block/acsi_slm.c b/drivers/block/acsi_slm.c
index 4030a8fd1187..8e41c87b026e 100644
--- a/drivers/block/acsi_slm.c
+++ b/drivers/block/acsi_slm.c
@@ -246,7 +246,7 @@ static int slm_getstats( char *buffer, int device );
246static ssize_t slm_read( struct file* file, char *buf, size_t count, loff_t 246static ssize_t slm_read( struct file* file, char *buf, size_t count, loff_t
247 *ppos ); 247 *ppos );
248static void start_print( int device ); 248static void start_print( int device );
249static irqreturn_t slm_interrupt(int irc, void *data, struct pt_regs *fp); 249static irqreturn_t slm_interrupt(int irc, void *data);
250static void slm_test_ready( unsigned long dummy ); 250static void slm_test_ready( unsigned long dummy );
251static void set_dma_addr( unsigned long paddr ); 251static void set_dma_addr( unsigned long paddr );
252static unsigned long get_dma_addr( void ); 252static unsigned long get_dma_addr( void );
@@ -452,7 +452,7 @@ static void start_print( int device )
452 452
453/* Only called when an error happened or at the end of a page */ 453/* Only called when an error happened or at the end of a page */
454 454
455static irqreturn_t slm_interrupt(int irc, void *data, struct pt_regs *fp) 455static irqreturn_t slm_interrupt(int irc, void *data)
456 456
457{ unsigned long addr; 457{ unsigned long addr;
458 int stat; 458 int stat;
diff --git a/drivers/block/amiflop.c b/drivers/block/amiflop.c
index 2641597c6549..5d254b714509 100644
--- a/drivers/block/amiflop.c
+++ b/drivers/block/amiflop.c
@@ -209,7 +209,7 @@ static int fd_device[4] = { 0, 0, 0, 0 };
209 209
210/* Milliseconds timer */ 210/* Milliseconds timer */
211 211
212static irqreturn_t ms_isr(int irq, void *dummy, struct pt_regs *fp) 212static irqreturn_t ms_isr(int irq, void *dummy)
213{ 213{
214 ms_busy = -1; 214 ms_busy = -1;
215 wake_up(&ms_wait); 215 wake_up(&ms_wait);
@@ -560,7 +560,7 @@ static unsigned long fd_get_drive_id(int drive)
560 return (id); 560 return (id);
561} 561}
562 562
563static irqreturn_t fd_block_done(int irq, void *dummy, struct pt_regs *fp) 563static irqreturn_t fd_block_done(int irq, void *dummy)
564{ 564{
565 if (block_flag) 565 if (block_flag)
566 custom.dsklen = 0x4000; 566 custom.dsklen = 0x4000;
diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c
index c39650920bdf..14d6b9492750 100644
--- a/drivers/block/ataflop.c
+++ b/drivers/block/ataflop.c
@@ -342,7 +342,7 @@ static void fd_select_drive( int drive );
342static void fd_deselect( void ); 342static void fd_deselect( void );
343static void fd_motor_off_timer( unsigned long dummy ); 343static void fd_motor_off_timer( unsigned long dummy );
344static void check_change( unsigned long dummy ); 344static void check_change( unsigned long dummy );
345static irqreturn_t floppy_irq (int irq, void *dummy, struct pt_regs *fp); 345static irqreturn_t floppy_irq (int irq, void *dummy);
346static void fd_error( void ); 346static void fd_error( void );
347static int do_format(int drive, int type, struct atari_format_descr *desc); 347static int do_format(int drive, int type, struct atari_format_descr *desc);
348static void do_fd_action( int drive ); 348static void do_fd_action( int drive );
@@ -573,7 +573,7 @@ static inline void copy_buffer(void *from, void *to)
573 573
574static void (*FloppyIRQHandler)( int status ) = NULL; 574static void (*FloppyIRQHandler)( int status ) = NULL;
575 575
576static irqreturn_t floppy_irq (int irq, void *dummy, struct pt_regs *fp) 576static irqreturn_t floppy_irq (int irq, void *dummy)
577{ 577{
578 unsigned char status; 578 unsigned char status;
579 void (*handler)( int ); 579 void (*handler)( int );
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 36b88f6c5f82..dcccaf2782f3 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -130,7 +130,7 @@ static struct board_type products[] = {
130static ctlr_info_t *hba[MAX_CTLR]; 130static ctlr_info_t *hba[MAX_CTLR];
131 131
132static void do_cciss_request(request_queue_t *q); 132static void do_cciss_request(request_queue_t *q);
133static irqreturn_t do_cciss_intr(int irq, void *dev_id, struct pt_regs *regs); 133static irqreturn_t do_cciss_intr(int irq, void *dev_id);
134static int cciss_open(struct inode *inode, struct file *filep); 134static int cciss_open(struct inode *inode, struct file *filep);
135static int cciss_release(struct inode *inode, struct file *filep); 135static int cciss_release(struct inode *inode, struct file *filep);
136static int cciss_ioctl(struct inode *inode, struct file *filep, 136static int cciss_ioctl(struct inode *inode, struct file *filep,
@@ -2300,7 +2300,7 @@ static int sendcmd(__u8 cmd, int ctlr, void *buff, size_t size, unsigned int use
2300#ifdef CONFIG_CISS_SCSI_TAPE 2300#ifdef CONFIG_CISS_SCSI_TAPE
2301 /* if we saved some commands for later, process them now. */ 2301 /* if we saved some commands for later, process them now. */
2302 if (info_p->scsi_rejects.ncompletions > 0) 2302 if (info_p->scsi_rejects.ncompletions > 0)
2303 do_cciss_intr(0, info_p, NULL); 2303 do_cciss_intr(0, info_p);
2304#endif 2304#endif
2305 cmd_free(info_p, c, 1); 2305 cmd_free(info_p, c, 1);
2306 return status; 2306 return status;
@@ -2652,7 +2652,7 @@ static inline long interrupt_not_for_us(ctlr_info_t *h)
2652#endif 2652#endif
2653} 2653}
2654 2654
2655static irqreturn_t do_cciss_intr(int irq, void *dev_id, struct pt_regs *regs) 2655static irqreturn_t do_cciss_intr(int irq, void *dev_id)
2656{ 2656{
2657 ctlr_info_t *h = dev_id; 2657 ctlr_info_t *h = dev_id;
2658 CommandList_struct *c; 2658 CommandList_struct *c;
diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
index ada68e65b5ff..570d2f049323 100644
--- a/drivers/block/cpqarray.c
+++ b/drivers/block/cpqarray.c
@@ -169,7 +169,7 @@ static inline cmdlist_t *removeQ(cmdlist_t **Qptr, cmdlist_t *c);
169static inline void complete_buffers(struct bio *bio, int ok); 169static inline void complete_buffers(struct bio *bio, int ok);
170static inline void complete_command(cmdlist_t *cmd, int timeout); 170static inline void complete_command(cmdlist_t *cmd, int timeout);
171 171
172static irqreturn_t do_ida_intr(int irq, void *dev_id, struct pt_regs * regs); 172static irqreturn_t do_ida_intr(int irq, void *dev_id);
173static void ida_timer(unsigned long tdata); 173static void ida_timer(unsigned long tdata);
174static int ida_revalidate(struct gendisk *disk); 174static int ida_revalidate(struct gendisk *disk);
175static int revalidate_allvol(ctlr_info_t *host); 175static int revalidate_allvol(ctlr_info_t *host);
@@ -1042,7 +1042,7 @@ static inline void complete_command(cmdlist_t *cmd, int timeout)
1042 * Find the command on the completion queue, remove it, tell the OS and 1042 * Find the command on the completion queue, remove it, tell the OS and
1043 * try to queue up more IO 1043 * try to queue up more IO
1044 */ 1044 */
1045static irqreturn_t do_ida_intr(int irq, void *dev_id, struct pt_regs *regs) 1045static irqreturn_t do_ida_intr(int irq, void *dev_id)
1046{ 1046{
1047 ctlr_info_t *h = dev_id; 1047 ctlr_info_t *h = dev_id;
1048 cmdlist_t *c; 1048 cmdlist_t *c;
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 629c5769d994..9e6d3a87cbe3 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -221,7 +221,7 @@ static DEFINE_SPINLOCK(floppy_lock);
221static struct completion device_release; 221static struct completion device_release;
222 222
223static unsigned short virtual_dma_port = 0x3f0; 223static unsigned short virtual_dma_port = 0x3f0;
224irqreturn_t floppy_interrupt(int irq, void *dev_id, struct pt_regs *regs); 224irqreturn_t floppy_interrupt(int irq, void *dev_id);
225static int set_dor(int fdc, char mask, char data); 225static int set_dor(int fdc, char mask, char data);
226 226
227#define K_64 0x10000 /* 64KB */ 227#define K_64 0x10000 /* 64KB */
@@ -1726,7 +1726,7 @@ static void print_result(char *message, int inr)
1726} 1726}
1727 1727
1728/* interrupt handler. Note that this can be called externally on the Sparc */ 1728/* interrupt handler. Note that this can be called externally on the Sparc */
1729irqreturn_t floppy_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1729irqreturn_t floppy_interrupt(int irq, void *dev_id)
1730{ 1730{
1731 void (*handler) (void) = do_floppy; 1731 void (*handler) (void) = do_floppy;
1732 int do_print; 1732 int do_print;
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index d6bb8da955a2..beab6d2643cb 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -295,7 +295,7 @@ fail:
295 * and do_lo_send_write(). 295 * and do_lo_send_write().
296 */ 296 */
297static int __do_lo_send_write(struct file *file, 297static int __do_lo_send_write(struct file *file,
298 u8 __user *buf, const int len, loff_t pos) 298 u8 *buf, const int len, loff_t pos)
299{ 299{
300 ssize_t bw; 300 ssize_t bw;
301 mm_segment_t old_fs = get_fs(); 301 mm_segment_t old_fs = get_fs();
@@ -324,7 +324,7 @@ static int do_lo_send_direct_write(struct loop_device *lo,
324 struct bio_vec *bvec, int bsize, loff_t pos, struct page *page) 324 struct bio_vec *bvec, int bsize, loff_t pos, struct page *page)
325{ 325{
326 ssize_t bw = __do_lo_send_write(lo->lo_backing_file, 326 ssize_t bw = __do_lo_send_write(lo->lo_backing_file,
327 (u8 __user *)kmap(bvec->bv_page) + bvec->bv_offset, 327 kmap(bvec->bv_page) + bvec->bv_offset,
328 bvec->bv_len, pos); 328 bvec->bv_len, pos);
329 kunmap(bvec->bv_page); 329 kunmap(bvec->bv_page);
330 cond_resched(); 330 cond_resched();
@@ -351,7 +351,7 @@ static int do_lo_send_write(struct loop_device *lo, struct bio_vec *bvec,
351 bvec->bv_offset, bvec->bv_len, pos >> 9); 351 bvec->bv_offset, bvec->bv_len, pos >> 9);
352 if (likely(!ret)) 352 if (likely(!ret))
353 return __do_lo_send_write(lo->lo_backing_file, 353 return __do_lo_send_write(lo->lo_backing_file,
354 (u8 __user *)page_address(page), bvec->bv_len, 354 page_address(page), bvec->bv_len,
355 pos); 355 pos);
356 printk(KERN_ERR "loop: Transfer error at byte offset %llu, " 356 printk(KERN_ERR "loop: Transfer error at byte offset %llu, "
357 "length %i.\n", (unsigned long long)pos, bvec->bv_len); 357 "length %i.\n", (unsigned long long)pos, bvec->bv_len);
@@ -1187,7 +1187,7 @@ struct compat_loop_info {
1187 * - noinlined to reduce stack space usage in main part of driver 1187 * - noinlined to reduce stack space usage in main part of driver
1188 */ 1188 */
1189static noinline int 1189static noinline int
1190loop_info64_from_compat(const struct compat_loop_info *arg, 1190loop_info64_from_compat(const struct compat_loop_info __user *arg,
1191 struct loop_info64 *info64) 1191 struct loop_info64 *info64)
1192{ 1192{
1193 struct compat_loop_info info; 1193 struct compat_loop_info info;
diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c
index 5537974fb242..688a4fb0dc99 100644
--- a/drivers/block/ps2esdi.c
+++ b/drivers/block/ps2esdi.c
@@ -75,8 +75,7 @@ static int ps2esdi_out_cmd_blk(u_short * cmd_blk);
75 75
76static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode); 76static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode);
77 77
78static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id, 78static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id);
79 struct pt_regs *regs);
80static void (*current_int_handler) (u_int) = NULL; 79static void (*current_int_handler) (u_int) = NULL;
81static void ps2esdi_normal_interrupt_handler(u_int); 80static void ps2esdi_normal_interrupt_handler(u_int);
82static void ps2esdi_initial_reset_int_handler(u_int); 81static void ps2esdi_initial_reset_int_handler(u_int);
@@ -687,8 +686,7 @@ static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode)
687 686
688 687
689 688
690static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id, 689static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id)
691 struct pt_regs *regs)
692{ 690{
693 u_int int_ret_code; 691 u_int int_ret_code;
694 692
diff --git a/drivers/block/swim3.c b/drivers/block/swim3.c
index fdc8f892eb86..1a65979f1f0f 100644
--- a/drivers/block/swim3.c
+++ b/drivers/block/swim3.c
@@ -238,8 +238,8 @@ static void scan_timeout(unsigned long data);
238static void seek_timeout(unsigned long data); 238static void seek_timeout(unsigned long data);
239static void settle_timeout(unsigned long data); 239static void settle_timeout(unsigned long data);
240static void xfer_timeout(unsigned long data); 240static void xfer_timeout(unsigned long data);
241static irqreturn_t swim3_interrupt(int irq, void *dev_id, struct pt_regs *regs); 241static irqreturn_t swim3_interrupt(int irq, void *dev_id);
242/*static void fd_dma_interrupt(int irq, void *dev_id, struct pt_regs *regs);*/ 242/*static void fd_dma_interrupt(int irq, void *dev_id);*/
243static int grab_drive(struct floppy_state *fs, enum swim_state state, 243static int grab_drive(struct floppy_state *fs, enum swim_state state,
244 int interruptible); 244 int interruptible);
245static void release_drive(struct floppy_state *fs); 245static void release_drive(struct floppy_state *fs);
@@ -624,7 +624,7 @@ static void xfer_timeout(unsigned long data)
624 start_request(fs); 624 start_request(fs);
625} 625}
626 626
627static irqreturn_t swim3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 627static irqreturn_t swim3_interrupt(int irq, void *dev_id)
628{ 628{
629 struct floppy_state *fs = (struct floppy_state *) dev_id; 629 struct floppy_state *fs = (struct floppy_state *) dev_id;
630 struct swim3 __iomem *sw = fs->swim3; 630 struct swim3 __iomem *sw = fs->swim3;
@@ -777,7 +777,7 @@ static irqreturn_t swim3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
777} 777}
778 778
779/* 779/*
780static void fd_dma_interrupt(int irq, void *dev_id, struct pt_regs *regs) 780static void fd_dma_interrupt(int irq, void *dev_id)
781{ 781{
782} 782}
783*/ 783*/
diff --git a/drivers/block/swim_iop.c b/drivers/block/swim_iop.c
index dfda796eba56..ed7b06cf3e68 100644
--- a/drivers/block/swim_iop.c
+++ b/drivers/block/swim_iop.c
@@ -94,7 +94,7 @@ static char *drive_names[7] = {
94int swimiop_init(void); 94int swimiop_init(void);
95static void swimiop_init_request(struct swim_iop_req *); 95static void swimiop_init_request(struct swim_iop_req *);
96static int swimiop_send_request(struct swim_iop_req *); 96static int swimiop_send_request(struct swim_iop_req *);
97static void swimiop_receive(struct iop_msg *, struct pt_regs *); 97static void swimiop_receive(struct iop_msg *);
98static void swimiop_status_update(int, struct swim_drvstatus *); 98static void swimiop_status_update(int, struct swim_drvstatus *);
99static int swimiop_eject(struct floppy_state *fs); 99static int swimiop_eject(struct floppy_state *fs);
100 100
@@ -257,7 +257,7 @@ static int swimiop_send_request(struct swim_iop_req *req)
257 * 2. An unsolicited message was received from the IOP. 257 * 2. An unsolicited message was received from the IOP.
258 */ 258 */
259 259
260void swimiop_receive(struct iop_msg *msg, struct pt_regs *regs) 260void swimiop_receive(struct iop_msg *msg)
261{ 261{
262 struct swim_iop_req *req; 262 struct swim_iop_req *req;
263 struct swimmsg_status *sm; 263 struct swimmsg_status *sm;
diff --git a/drivers/block/sx8.c b/drivers/block/sx8.c
index c6beee18a07c..47d6975268ff 100644
--- a/drivers/block/sx8.c
+++ b/drivers/block/sx8.c
@@ -1200,7 +1200,7 @@ static inline void carm_handle_responses(struct carm_host *host)
1200 host->resp_idx += work; 1200 host->resp_idx += work;
1201} 1201}
1202 1202
1203static irqreturn_t carm_interrupt(int irq, void *__host, struct pt_regs *regs) 1203static irqreturn_t carm_interrupt(int irq, void *__host)
1204{ 1204{
1205 struct carm_host *host = __host; 1205 struct carm_host *host = __host;
1206 void __iomem *mmio; 1206 void __iomem *mmio;
diff --git a/drivers/block/ub.c b/drivers/block/ub.c
index 45a8f402b07b..0d5c73f07265 100644
--- a/drivers/block/ub.c
+++ b/drivers/block/ub.c
@@ -362,7 +362,7 @@ static void ub_end_rq(struct request *rq, unsigned int status);
362static int ub_rw_cmd_retry(struct ub_dev *sc, struct ub_lun *lun, 362static int ub_rw_cmd_retry(struct ub_dev *sc, struct ub_lun *lun,
363 struct ub_request *urq, struct ub_scsi_cmd *cmd); 363 struct ub_request *urq, struct ub_scsi_cmd *cmd);
364static int ub_submit_scsi(struct ub_dev *sc, struct ub_scsi_cmd *cmd); 364static int ub_submit_scsi(struct ub_dev *sc, struct ub_scsi_cmd *cmd);
365static void ub_urb_complete(struct urb *urb, struct pt_regs *pt); 365static void ub_urb_complete(struct urb *urb);
366static void ub_scsi_action(unsigned long _dev); 366static void ub_scsi_action(unsigned long _dev);
367static void ub_scsi_dispatch(struct ub_dev *sc); 367static void ub_scsi_dispatch(struct ub_dev *sc);
368static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd); 368static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd);
@@ -959,7 +959,7 @@ static void ub_urb_timeout(unsigned long arg)
959 * the sc->lock taken) and from an interrupt (while we do NOT have 959 * the sc->lock taken) and from an interrupt (while we do NOT have
960 * the sc->lock taken). Therefore, bounce this off to a tasklet. 960 * the sc->lock taken). Therefore, bounce this off to a tasklet.
961 */ 961 */
962static void ub_urb_complete(struct urb *urb, struct pt_regs *pt) 962static void ub_urb_complete(struct urb *urb)
963{ 963{
964 struct ub_dev *sc = urb->context; 964 struct ub_dev *sc = urb->context;
965 965
@@ -1923,7 +1923,7 @@ err_alloc:
1923 1923
1924/* 1924/*
1925 */ 1925 */
1926static void ub_probe_urb_complete(struct urb *urb, struct pt_regs *pt) 1926static void ub_probe_urb_complete(struct urb *urb)
1927{ 1927{
1928 struct completion *cop = urb->context; 1928 struct completion *cop = urb->context;
1929 complete(cop); 1929 complete(cop);
diff --git a/drivers/block/umem.c b/drivers/block/umem.c
index cbb9d0f21acc..30f16bd83650 100644
--- a/drivers/block/umem.c
+++ b/drivers/block/umem.c
@@ -571,7 +571,7 @@ static int mm_make_request(request_queue_t *q, struct bio *bio)
571-- mm_interrupt 571-- mm_interrupt
572----------------------------------------------------------------------------------- 572-----------------------------------------------------------------------------------
573*/ 573*/
574static irqreturn_t mm_interrupt(int irq, void *__card, struct pt_regs *regs) 574static irqreturn_t mm_interrupt(int irq, void *__card)
575{ 575{
576 struct cardinfo *card = (struct cardinfo *) __card; 576 struct cardinfo *card = (struct cardinfo *) __card;
577 unsigned int dma_status; 577 unsigned int dma_status;
diff --git a/drivers/block/xd.c b/drivers/block/xd.c
index ebf3025721d1..10cc38783bdf 100644
--- a/drivers/block/xd.c
+++ b/drivers/block/xd.c
@@ -462,8 +462,7 @@ static void xd_recalibrate (u_char drive)
462} 462}
463 463
464/* xd_interrupt_handler: interrupt service routine */ 464/* xd_interrupt_handler: interrupt service routine */
465static irqreturn_t xd_interrupt_handler(int irq, void *dev_id, 465static irqreturn_t xd_interrupt_handler(int irq, void *dev_id)
466 struct pt_regs *regs)
467{ 466{
468 if (inb(XD_STATUS) & STAT_INTERRUPT) { /* check if it was our device */ 467 if (inb(XD_STATUS) & STAT_INTERRUPT) { /* check if it was our device */
469#ifdef DEBUG_OTHER 468#ifdef DEBUG_OTHER
diff --git a/drivers/block/xd.h b/drivers/block/xd.h
index 71ac2e3dffc8..82e090fea957 100644
--- a/drivers/block/xd.h
+++ b/drivers/block/xd.h
@@ -109,8 +109,7 @@ static int xd_ioctl (struct inode *inode,struct file *file,unsigned int cmd,unsi
109static int xd_readwrite (u_char operation,XD_INFO *disk,char *buffer,u_int block,u_int count); 109static int xd_readwrite (u_char operation,XD_INFO *disk,char *buffer,u_int block,u_int count);
110static void xd_recalibrate (u_char drive); 110static void xd_recalibrate (u_char drive);
111 111
112static irqreturn_t xd_interrupt_handler(int irq, void *dev_id, 112static irqreturn_t xd_interrupt_handler(int irq, void *dev_id);
113 struct pt_regs *regs);
114static u_char xd_setup_dma (u_char opcode,u_char *buffer,u_int count); 113static u_char xd_setup_dma (u_char opcode,u_char *buffer,u_int count);
115static u_char *xd_build (u_char *cmdblk,u_char command,u_char drive,u_char head,u_short cylinder,u_char sector,u_char count,u_char control); 114static u_char *xd_build (u_char *cmdblk,u_char command,u_char drive,u_char head,u_short cylinder,u_char sector,u_char count,u_char control);
116static void xd_watchdog (unsigned long unused); 115static void xd_watchdog (unsigned long unused);
diff --git a/drivers/bluetooth/bcm203x.c b/drivers/bluetooth/bcm203x.c
index 13ba729cdd57..67cdda43f229 100644
--- a/drivers/bluetooth/bcm203x.c
+++ b/drivers/bluetooth/bcm203x.c
@@ -82,7 +82,7 @@ struct bcm203x_data {
82 unsigned int fw_sent; 82 unsigned int fw_sent;
83}; 83};
84 84
85static void bcm203x_complete(struct urb *urb, struct pt_regs *regs) 85static void bcm203x_complete(struct urb *urb)
86{ 86{
87 struct bcm203x_data *data = urb->context; 87 struct bcm203x_data *data = urb->context;
88 struct usb_device *udev = urb->dev; 88 struct usb_device *udev = urb->dev;
diff --git a/drivers/bluetooth/bfusb.c b/drivers/bluetooth/bfusb.c
index efcc28ec9d9a..31ade991aa91 100644
--- a/drivers/bluetooth/bfusb.c
+++ b/drivers/bluetooth/bfusb.c
@@ -95,8 +95,8 @@ struct bfusb_data_scb {
95 struct urb *urb; 95 struct urb *urb;
96}; 96};
97 97
98static void bfusb_tx_complete(struct urb *urb, struct pt_regs *regs); 98static void bfusb_tx_complete(struct urb *urb);
99static void bfusb_rx_complete(struct urb *urb, struct pt_regs *regs); 99static void bfusb_rx_complete(struct urb *urb);
100 100
101static struct urb *bfusb_get_completed(struct bfusb_data *data) 101static struct urb *bfusb_get_completed(struct bfusb_data *data)
102{ 102{
@@ -190,7 +190,7 @@ static void bfusb_tx_wakeup(struct bfusb_data *data)
190 clear_bit(BFUSB_TX_PROCESS, &data->state); 190 clear_bit(BFUSB_TX_PROCESS, &data->state);
191} 191}
192 192
193static void bfusb_tx_complete(struct urb *urb, struct pt_regs *regs) 193static void bfusb_tx_complete(struct urb *urb)
194{ 194{
195 struct sk_buff *skb = (struct sk_buff *) urb->context; 195 struct sk_buff *skb = (struct sk_buff *) urb->context;
196 struct bfusb_data *data = (struct bfusb_data *) skb->dev; 196 struct bfusb_data *data = (struct bfusb_data *) skb->dev;
@@ -349,7 +349,7 @@ static inline int bfusb_recv_block(struct bfusb_data *data, int hdr, unsigned ch
349 return 0; 349 return 0;
350} 350}
351 351
352static void bfusb_rx_complete(struct urb *urb, struct pt_regs *regs) 352static void bfusb_rx_complete(struct urb *urb)
353{ 353{
354 struct sk_buff *skb = (struct sk_buff *) urb->context; 354 struct sk_buff *skb = (struct sk_buff *) urb->context;
355 struct bfusb_data *data = (struct bfusb_data *) skb->dev; 355 struct bfusb_data *data = (struct bfusb_data *) skb->dev;
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c
index 8eebf9ca3786..845b8680032a 100644
--- a/drivers/bluetooth/bluecard_cs.c
+++ b/drivers/bluetooth/bluecard_cs.c
@@ -497,7 +497,7 @@ static void bluecard_receive(bluecard_info_t *info, unsigned int offset)
497} 497}
498 498
499 499
500static irqreturn_t bluecard_interrupt(int irq, void *dev_inst, struct pt_regs *regs) 500static irqreturn_t bluecard_interrupt(int irq, void *dev_inst)
501{ 501{
502 bluecard_info_t *info = dev_inst; 502 bluecard_info_t *info = dev_inst;
503 unsigned int iobase; 503 unsigned int iobase;
diff --git a/drivers/bluetooth/bpa10x.c b/drivers/bluetooth/bpa10x.c
index e0231dc2cb1a..9fca6513562d 100644
--- a/drivers/bluetooth/bpa10x.c
+++ b/drivers/bluetooth/bpa10x.c
@@ -263,7 +263,7 @@ static void bpa10x_wakeup(struct bpa10x_data *data)
263 } 263 }
264} 264}
265 265
266static void bpa10x_complete(struct urb *urb, struct pt_regs *regs) 266static void bpa10x_complete(struct urb *urb)
267{ 267{
268 struct bpa10x_data *data = urb->context; 268 struct bpa10x_data *data = urb->context;
269 unsigned char *buf = urb->transfer_buffer; 269 unsigned char *buf = urb->transfer_buffer;
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c
index df7bb016df49..3a96a0babc6a 100644
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
@@ -338,7 +338,7 @@ static void bt3c_receive(bt3c_info_t *info)
338} 338}
339 339
340 340
341static irqreturn_t bt3c_interrupt(int irq, void *dev_inst, struct pt_regs *regs) 341static irqreturn_t bt3c_interrupt(int irq, void *dev_inst)
342{ 342{
343 bt3c_info_t *info = dev_inst; 343 bt3c_info_t *info = dev_inst;
344 unsigned int iobase; 344 unsigned int iobase;
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c
index 746ccca97f6f..3b29086b7c3f 100644
--- a/drivers/bluetooth/btuart_cs.c
+++ b/drivers/bluetooth/btuart_cs.c
@@ -288,7 +288,7 @@ static void btuart_receive(btuart_info_t *info)
288} 288}
289 289
290 290
291static irqreturn_t btuart_interrupt(int irq, void *dev_inst, struct pt_regs *regs) 291static irqreturn_t btuart_interrupt(int irq, void *dev_inst)
292{ 292{
293 btuart_info_t *info = dev_inst; 293 btuart_info_t *info = dev_inst;
294 unsigned int iobase; 294 unsigned int iobase;
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c
index 0e99def8a1e3..e7c800f4c3ad 100644
--- a/drivers/bluetooth/dtl1_cs.c
+++ b/drivers/bluetooth/dtl1_cs.c
@@ -291,7 +291,7 @@ static void dtl1_receive(dtl1_info_t *info)
291} 291}
292 292
293 293
294static irqreturn_t dtl1_interrupt(int irq, void *dev_inst, struct pt_regs *regs) 294static irqreturn_t dtl1_interrupt(int irq, void *dev_inst)
295{ 295{
296 dtl1_info_t *info = dev_inst; 296 dtl1_info_t *info = dev_inst;
297 unsigned int iobase; 297 unsigned int iobase;
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c
index 0801af4ad2b9..7565642a007a 100644
--- a/drivers/bluetooth/hci_usb.c
+++ b/drivers/bluetooth/hci_usb.c
@@ -176,8 +176,8 @@ static struct _urb *_urb_dequeue(struct _urb_queue *q)
176 return _urb; 176 return _urb;
177} 177}
178 178
179static void hci_usb_rx_complete(struct urb *urb, struct pt_regs *regs); 179static void hci_usb_rx_complete(struct urb *urb);
180static void hci_usb_tx_complete(struct urb *urb, struct pt_regs *regs); 180static void hci_usb_tx_complete(struct urb *urb);
181 181
182#define __pending_tx(husb, type) (&husb->pending_tx[type-1]) 182#define __pending_tx(husb, type) (&husb->pending_tx[type-1])
183#define __pending_q(husb, type) (&husb->pending_q[type-1]) 183#define __pending_q(husb, type) (&husb->pending_q[type-1])
@@ -732,7 +732,7 @@ static inline int __recv_frame(struct hci_usb *husb, int type, void *data, int c
732 return 0; 732 return 0;
733} 733}
734 734
735static void hci_usb_rx_complete(struct urb *urb, struct pt_regs *regs) 735static void hci_usb_rx_complete(struct urb *urb)
736{ 736{
737 struct _urb *_urb = container_of(urb, struct _urb, urb); 737 struct _urb *_urb = container_of(urb, struct _urb, urb);
738 struct hci_usb *husb = (void *) urb->context; 738 struct hci_usb *husb = (void *) urb->context;
@@ -786,7 +786,7 @@ unlock:
786 read_unlock(&husb->completion_lock); 786 read_unlock(&husb->completion_lock);
787} 787}
788 788
789static void hci_usb_tx_complete(struct urb *urb, struct pt_regs *regs) 789static void hci_usb_tx_complete(struct urb *urb)
790{ 790{
791 struct _urb *_urb = container_of(urb, struct _urb, urb); 791 struct _urb *_urb = container_of(urb, struct _urb, urb);
792 struct hci_usb *husb = (void *) urb->context; 792 struct hci_usb *husb = (void *) urb->context;
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
index 2a0c50d84fc5..7ea0f48f8fa6 100644
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -703,7 +703,7 @@ static int cdrom_has_defect_mgt(struct cdrom_device_info *cdi)
703{ 703{
704 struct packet_command cgc; 704 struct packet_command cgc;
705 char buffer[16]; 705 char buffer[16];
706 __u16 *feature_code; 706 __be16 *feature_code;
707 int ret; 707 int ret;
708 708
709 init_cdrom_command(&cgc, buffer, sizeof(buffer), CGC_DATA_READ); 709 init_cdrom_command(&cgc, buffer, sizeof(buffer), CGC_DATA_READ);
@@ -716,7 +716,7 @@ static int cdrom_has_defect_mgt(struct cdrom_device_info *cdi)
716 if ((ret = cdi->ops->generic_packet(cdi, &cgc))) 716 if ((ret = cdi->ops->generic_packet(cdi, &cgc)))
717 return ret; 717 return ret;
718 718
719 feature_code = (__u16 *) &buffer[sizeof(struct feature_header)]; 719 feature_code = (__be16 *) &buffer[sizeof(struct feature_header)];
720 if (be16_to_cpu(*feature_code) == CDF_HWDM) 720 if (be16_to_cpu(*feature_code) == CDF_HWDM)
721 return 0; 721 return 0;
722 722
@@ -2963,7 +2963,7 @@ static int mmc_ioctl(struct cdrom_device_info *cdi, unsigned int cmd,
2963 how much data is available for transfer. buffer[1] is 2963 how much data is available for transfer. buffer[1] is
2964 unfortunately ambigious and the only reliable way seem 2964 unfortunately ambigious and the only reliable way seem
2965 to be to simply skip over the block descriptor... */ 2965 to be to simply skip over the block descriptor... */
2966 offset = 8 + be16_to_cpu(*(unsigned short *)(buffer+6)); 2966 offset = 8 + be16_to_cpu(*(__be16 *)(buffer+6));
2967 2967
2968 if (offset + 16 > sizeof(buffer)) 2968 if (offset + 16 > sizeof(buffer))
2969 return -E2BIG; 2969 return -E2BIG;
diff --git a/drivers/cdrom/cdu31a.c b/drivers/cdrom/cdu31a.c
index ccd91c1a84bd..2157c58755e0 100644
--- a/drivers/cdrom/cdu31a.c
+++ b/drivers/cdrom/cdu31a.c
@@ -513,7 +513,7 @@ static inline void write_cmd(unsigned char cmd)
513 outb(cmd, sony_cd_cmd_reg); 513 outb(cmd, sony_cd_cmd_reg);
514} 514}
515 515
516static irqreturn_t cdu31a_interrupt(int irq, void *dev_id, struct pt_regs *regs) 516static irqreturn_t cdu31a_interrupt(int irq, void *dev_id)
517{ 517{
518 unsigned char val; 518 unsigned char val;
519 519
diff --git a/drivers/cdrom/cm206.c b/drivers/cdrom/cm206.c
index 9b05ddd23141..e6d8e9ededea 100644
--- a/drivers/cdrom/cm206.c
+++ b/drivers/cdrom/cm206.c
@@ -359,7 +359,7 @@ static struct tasklet_struct cm206_tasklet;
359 as there seems so reason for this to happen. 359 as there seems so reason for this to happen.
360*/ 360*/
361 361
362static irqreturn_t cm206_interrupt(int sig, void *dev_id, struct pt_regs *regs) 362static irqreturn_t cm206_interrupt(int sig, void *dev_id)
363{ 363{
364 volatile ush fool; 364 volatile ush fool;
365 cd->intr_ds = inw(r_data_status); /* resets data_ready, data_error, 365 cd->intr_ds = inw(r_data_status); /* resets data_ready, data_error,
diff --git a/drivers/cdrom/mcdx.c b/drivers/cdrom/mcdx.c
index dcd1ab684f3e..f574962f4288 100644
--- a/drivers/cdrom/mcdx.c
+++ b/drivers/cdrom/mcdx.c
@@ -845,15 +845,11 @@ static void mcdx_delay(struct s_drive_stuff *stuff, long jifs)
845 } 845 }
846} 846}
847 847
848static irqreturn_t mcdx_intr(int irq, void *dev_id, struct pt_regs *regs) 848static irqreturn_t mcdx_intr(int irq, void *dev_id)
849{ 849{
850 struct s_drive_stuff *stuffp = dev_id; 850 struct s_drive_stuff *stuffp = dev_id;
851 unsigned char b; 851 unsigned char b;
852 852
853 if (stuffp == NULL) {
854 xwarn("mcdx: no device for intr %d\n", irq);
855 return IRQ_NONE;
856 }
857#ifdef AK2 853#ifdef AK2
858 if (!stuffp->busy && stuffp->pending) 854 if (!stuffp->busy && stuffp->pending)
859 stuffp->int_err = 1; 855 stuffp->int_err = 1;
diff --git a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c
index 30ab56258a92..f77ada933ea0 100644
--- a/drivers/cdrom/sonycd535.c
+++ b/drivers/cdrom/sonycd535.c
@@ -322,7 +322,7 @@ disable_interrupts(void)
322} 322}
323 323
324static irqreturn_t 324static irqreturn_t
325cdu535_interrupt(int irq, void *dev_id, struct pt_regs *regs) 325cdu535_interrupt(int irq, void *dev_id)
326{ 326{
327 disable_interrupts(); 327 disable_interrupts();
328 if (waitqueue_active(&cdu535_irq_wait)) { 328 if (waitqueue_active(&cdu535_irq_wait)) {
diff --git a/drivers/char/amiserial.c b/drivers/char/amiserial.c
index 486f97c3f4e5..66086fa2d59a 100644
--- a/drivers/char/amiserial.c
+++ b/drivers/char/amiserial.c
@@ -447,7 +447,7 @@ static void check_modem_status(struct async_struct *info)
447 } 447 }
448} 448}
449 449
450static irqreturn_t ser_vbl_int( int irq, void *data, struct pt_regs *regs) 450static irqreturn_t ser_vbl_int( int irq, void *data)
451{ 451{
452 /* vbl is just a periodic interrupt we tie into to update modem status */ 452 /* vbl is just a periodic interrupt we tie into to update modem status */
453 struct async_struct * info = IRQ_ports; 453 struct async_struct * info = IRQ_ports;
@@ -460,7 +460,7 @@ static irqreturn_t ser_vbl_int( int irq, void *data, struct pt_regs *regs)
460 return IRQ_HANDLED; 460 return IRQ_HANDLED;
461} 461}
462 462
463static irqreturn_t ser_rx_int(int irq, void *dev_id, struct pt_regs * regs) 463static irqreturn_t ser_rx_int(int irq, void *dev_id)
464{ 464{
465 struct async_struct * info; 465 struct async_struct * info;
466 466
@@ -480,7 +480,7 @@ static irqreturn_t ser_rx_int(int irq, void *dev_id, struct pt_regs * regs)
480 return IRQ_HANDLED; 480 return IRQ_HANDLED;
481} 481}
482 482
483static irqreturn_t ser_tx_int(int irq, void *dev_id, struct pt_regs * regs) 483static irqreturn_t ser_tx_int(int irq, void *dev_id)
484{ 484{
485 struct async_struct * info; 485 struct async_struct * info;
486 486
diff --git a/drivers/char/applicom.c b/drivers/char/applicom.c
index 10a389dafd60..1f0b752e5de1 100644
--- a/drivers/char/applicom.c
+++ b/drivers/char/applicom.c
@@ -110,7 +110,7 @@ static ssize_t ac_read (struct file *, char __user *, size_t, loff_t *);
110static ssize_t ac_write (struct file *, const char __user *, size_t, loff_t *); 110static ssize_t ac_write (struct file *, const char __user *, size_t, loff_t *);
111static int ac_ioctl(struct inode *, struct file *, unsigned int, 111static int ac_ioctl(struct inode *, struct file *, unsigned int,
112 unsigned long); 112 unsigned long);
113static irqreturn_t ac_interrupt(int, void *, struct pt_regs *); 113static irqreturn_t ac_interrupt(int, void *);
114 114
115static const struct file_operations ac_fops = { 115static const struct file_operations ac_fops = {
116 .owner = THIS_MODULE, 116 .owner = THIS_MODULE,
@@ -617,7 +617,7 @@ static ssize_t ac_read (struct file *filp, char __user *buf, size_t count, loff_
617 } 617 }
618} 618}
619 619
620static irqreturn_t ac_interrupt(int vec, void *dev_instance, struct pt_regs *regs) 620static irqreturn_t ac_interrupt(int vec, void *dev_instance)
621{ 621{
622 unsigned int i; 622 unsigned int i;
623 unsigned int FlagInt; 623 unsigned int FlagInt;
diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c
index 87b2fb510871..e608dadece2f 100644
--- a/drivers/char/cyclades.c
+++ b/drivers/char/cyclades.c
@@ -1057,7 +1057,7 @@ detect_isa_irq(void __iomem *address)
1057 received, out buffer empty, modem change, etc. 1057 received, out buffer empty, modem change, etc.
1058 */ 1058 */
1059static irqreturn_t 1059static irqreturn_t
1060cyy_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1060cyy_interrupt(int irq, void *dev_id)
1061{ 1061{
1062 struct tty_struct *tty; 1062 struct tty_struct *tty;
1063 int status; 1063 int status;
@@ -1802,7 +1802,7 @@ cyz_handle_cmd(struct cyclades_card *cinfo)
1802 1802
1803#ifdef CONFIG_CYZ_INTR 1803#ifdef CONFIG_CYZ_INTR
1804static irqreturn_t 1804static irqreturn_t
1805cyz_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1805cyz_interrupt(int irq, void *dev_id)
1806{ 1806{
1807 struct cyclades_card *cinfo; 1807 struct cyclades_card *cinfo;
1808 1808
diff --git a/drivers/char/drm/drm_os_linux.h b/drivers/char/drm/drm_os_linux.h
index 695115d70382..2908b72daa6e 100644
--- a/drivers/char/drm/drm_os_linux.h
+++ b/drivers/char/drm/drm_os_linux.h
@@ -38,7 +38,7 @@
38 drm_device_t *dev = priv->head->dev 38 drm_device_t *dev = priv->head->dev
39 39
40/** IRQ handler arguments and return type and values */ 40/** IRQ handler arguments and return type and values */
41#define DRM_IRQ_ARGS int irq, void *arg, struct pt_regs *regs 41#define DRM_IRQ_ARGS int irq, void *arg
42 42
43/** AGP types */ 43/** AGP types */
44#if __OS_HAS_AGP 44#if __OS_HAS_AGP
diff --git a/drivers/char/ec3104_keyb.c b/drivers/char/ec3104_keyb.c
index abac18b1871c..77f58ed6d59a 100644
--- a/drivers/char/ec3104_keyb.c
+++ b/drivers/char/ec3104_keyb.c
@@ -370,7 +370,7 @@ static void e5_receive(struct e5_struct *k)
370 } 370 }
371} 371}
372 372
373static void ec3104_keyb_interrupt(int irq, void *data, struct pt_regs *regs) 373static void ec3104_keyb_interrupt(int irq, void *data)
374{ 374{
375 struct e5_struct *k = &ec3104_keyb; 375 struct e5_struct *k = &ec3104_keyb;
376 u8 msr, lsr; 376 u8 msr, lsr;
diff --git a/drivers/char/esp.c b/drivers/char/esp.c
index 05788c75d7fc..15a4ea896328 100644
--- a/drivers/char/esp.c
+++ b/drivers/char/esp.c
@@ -615,8 +615,7 @@ static inline void check_modem_status(struct esp_struct *info)
615/* 615/*
616 * This is the serial driver's interrupt routine 616 * This is the serial driver's interrupt routine
617 */ 617 */
618static irqreturn_t rs_interrupt_single(int irq, void *dev_id, 618static irqreturn_t rs_interrupt_single(int irq, void *dev_id)
619 struct pt_regs *regs)
620{ 619{
621 struct esp_struct * info; 620 struct esp_struct * info;
622 unsigned err_status; 621 unsigned err_status;
diff --git a/drivers/char/ftape/lowlevel/fdc-io.c b/drivers/char/ftape/lowlevel/fdc-io.c
index 216532445652..bbcf918f056f 100644
--- a/drivers/char/ftape/lowlevel/fdc-io.c
+++ b/drivers/char/ftape/lowlevel/fdc-io.c
@@ -1243,7 +1243,7 @@ static int fdc_config(void)
1243 TRACE_EXIT 0; 1243 TRACE_EXIT 0;
1244} 1244}
1245 1245
1246static irqreturn_t ftape_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1246static irqreturn_t ftape_interrupt(int irq, void *dev_id)
1247{ 1247{
1248 void (*handler) (void) = *fdc.hook; 1248 void (*handler) (void) = *fdc.hook;
1249 int handled = 0; 1249 int handled = 0;
diff --git a/drivers/char/hangcheck-timer.c b/drivers/char/hangcheck-timer.c
index d69f2ad9a67d..1aa93a752a9c 100644
--- a/drivers/char/hangcheck-timer.c
+++ b/drivers/char/hangcheck-timer.c
@@ -159,7 +159,7 @@ static void hangcheck_fire(unsigned long data)
159 if (hangcheck_dump_tasks) { 159 if (hangcheck_dump_tasks) {
160 printk(KERN_CRIT "Hangcheck: Task state:\n"); 160 printk(KERN_CRIT "Hangcheck: Task state:\n");
161#ifdef CONFIG_MAGIC_SYSRQ 161#ifdef CONFIG_MAGIC_SYSRQ
162 handle_sysrq('t', NULL, NULL); 162 handle_sysrq('t', NULL);
163#endif /* CONFIG_MAGIC_SYSRQ */ 163#endif /* CONFIG_MAGIC_SYSRQ */
164 } 164 }
165 if (hangcheck_reboot) { 165 if (hangcheck_reboot) {
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index 58b0eb581114..091a11cd878c 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -116,7 +116,7 @@ static inline void writeq(unsigned long long v, void __iomem *addr)
116} 116}
117#endif 117#endif
118 118
119static irqreturn_t hpet_interrupt(int irq, void *data, struct pt_regs *regs) 119static irqreturn_t hpet_interrupt(int irq, void *data)
120{ 120{
121 struct hpet_dev *devp; 121 struct hpet_dev *devp;
122 unsigned long isr; 122 unsigned long isr;
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c
index 4053d1cd393f..9902ffad3b12 100644
--- a/drivers/char/hvc_console.c
+++ b/drivers/char/hvc_console.c
@@ -294,7 +294,7 @@ static int hvc_poll(struct hvc_struct *hp);
294 * NOTE: This API isn't used if the console adapter doesn't support interrupts. 294 * NOTE: This API isn't used if the console adapter doesn't support interrupts.
295 * In this case the console is poll driven. 295 * In this case the console is poll driven.
296 */ 296 */
297static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 297static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance)
298{ 298{
299 /* if hvc_poll request a repoll, then kick the hvcd thread */ 299 /* if hvc_poll request a repoll, then kick the hvcd thread */
300 if (hvc_poll(dev_instance)) 300 if (hvc_poll(dev_instance))
@@ -621,7 +621,7 @@ static int hvc_poll(struct hvc_struct *hp)
621 sysrq_pressed = 1; 621 sysrq_pressed = 1;
622 continue; 622 continue;
623 } else if (sysrq_pressed) { 623 } else if (sysrq_pressed) {
624 handle_sysrq(buf[i], NULL, tty); 624 handle_sysrq(buf[i], tty);
625 sysrq_pressed = 0; 625 sysrq_pressed = 0;
626 continue; 626 continue;
627 } 627 }
diff --git a/drivers/char/hvcs.c b/drivers/char/hvcs.c
index 0b89bcde8c52..8728255c9463 100644
--- a/drivers/char/hvcs.c
+++ b/drivers/char/hvcs.c
@@ -313,8 +313,7 @@ static DEFINE_SPINLOCK(hvcs_structs_lock);
313 313
314static void hvcs_unthrottle(struct tty_struct *tty); 314static void hvcs_unthrottle(struct tty_struct *tty);
315static void hvcs_throttle(struct tty_struct *tty); 315static void hvcs_throttle(struct tty_struct *tty);
316static irqreturn_t hvcs_handle_interrupt(int irq, void *dev_instance, 316static irqreturn_t hvcs_handle_interrupt(int irq, void *dev_instance);
317 struct pt_regs *regs);
318 317
319static int hvcs_write(struct tty_struct *tty, 318static int hvcs_write(struct tty_struct *tty,
320 const unsigned char *buf, int count); 319 const unsigned char *buf, int count);
@@ -387,8 +386,7 @@ static void hvcs_throttle(struct tty_struct *tty)
387 * handler taking any further interrupts because they are disabled which means 386 * handler taking any further interrupts because they are disabled which means
388 * the hvcs_struct will always be valid in this handler. 387 * the hvcs_struct will always be valid in this handler.
389 */ 388 */
390static irqreturn_t hvcs_handle_interrupt(int irq, void *dev_instance, 389static irqreturn_t hvcs_handle_interrupt(int irq, void *dev_instance)
391 struct pt_regs *regs)
392{ 390{
393 struct hvcs_struct *hvcsd = dev_instance; 391 struct hvcs_struct *hvcsd = dev_instance;
394 392
diff --git a/drivers/char/hvsi.c b/drivers/char/hvsi.c
index c07dc58d5c1d..2cf63e7305a3 100644
--- a/drivers/char/hvsi.c
+++ b/drivers/char/hvsi.c
@@ -406,7 +406,7 @@ static void hvsi_insert_chars(struct hvsi_struct *hp, const char *buf, int len)
406 hp->sysrq = 1; 406 hp->sysrq = 1;
407 continue; 407 continue;
408 } else if (hp->sysrq) { 408 } else if (hp->sysrq) {
409 handle_sysrq(c, NULL, hp->tty); 409 handle_sysrq(c, hp->tty);
410 hp->sysrq = 0; 410 hp->sysrq = 0;
411 continue; 411 continue;
412 } 412 }
@@ -555,7 +555,7 @@ static void hvsi_send_overflow(struct hvsi_struct *hp)
555 * must get all pending data because we only get an irq on empty->non-empty 555 * must get all pending data because we only get an irq on empty->non-empty
556 * transition 556 * transition
557 */ 557 */
558static irqreturn_t hvsi_interrupt(int irq, void *arg, struct pt_regs *regs) 558static irqreturn_t hvsi_interrupt(int irq, void *arg)
559{ 559{
560 struct hvsi_struct *hp = (struct hvsi_struct *)arg; 560 struct hvsi_struct *hp = (struct hvsi_struct *)arg;
561 struct tty_struct *flip; 561 struct tty_struct *flip;
@@ -616,7 +616,7 @@ static int __init poll_for_state(struct hvsi_struct *hp, int state)
616 unsigned long end_jiffies = jiffies + HVSI_TIMEOUT; 616 unsigned long end_jiffies = jiffies + HVSI_TIMEOUT;
617 617
618 for (;;) { 618 for (;;) {
619 hvsi_interrupt(hp->virq, (void *)hp, NULL); /* get pending data */ 619 hvsi_interrupt(hp->virq, (void *)hp); /* get pending data */
620 620
621 if (hp->state == state) 621 if (hp->state == state)
622 return 0; 622 return 0;
diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c
index 62ef511d143b..858ba5432c99 100644
--- a/drivers/char/ip2/ip2main.c
+++ b/drivers/char/ip2/ip2main.c
@@ -190,7 +190,7 @@ static int ip2_tiocmset(struct tty_struct *tty, struct file *file,
190 190
191static void set_irq(int, int); 191static void set_irq(int, int);
192static void ip2_interrupt_bh(i2eBordStrPtr pB); 192static void ip2_interrupt_bh(i2eBordStrPtr pB);
193static irqreturn_t ip2_interrupt(int irq, void *dev_id, struct pt_regs * regs); 193static irqreturn_t ip2_interrupt(int irq, void *dev_id);
194static void ip2_poll(unsigned long arg); 194static void ip2_poll(unsigned long arg);
195static inline void service_all_boards(void); 195static inline void service_all_boards(void);
196static void do_input(void *p); 196static void do_input(void *p);
@@ -1154,10 +1154,9 @@ ip2_interrupt_bh(i2eBordStrPtr pB)
1154 1154
1155 1155
1156/******************************************************************************/ 1156/******************************************************************************/
1157/* Function: ip2_interrupt(int irq, void *dev_id, struct pt_regs * regs) */ 1157/* Function: ip2_interrupt(int irq, void *dev_id) */
1158/* Parameters: irq - interrupt number */ 1158/* Parameters: irq - interrupt number */
1159/* pointer to optional device ID structure */ 1159/* pointer to optional device ID structure */
1160/* pointer to register structure */
1161/* Returns: Nothing */ 1160/* Returns: Nothing */
1162/* */ 1161/* */
1163/* Description: */ 1162/* Description: */
@@ -1173,7 +1172,7 @@ ip2_interrupt_bh(i2eBordStrPtr pB)
1173/* */ 1172/* */
1174/******************************************************************************/ 1173/******************************************************************************/
1175static irqreturn_t 1174static irqreturn_t
1176ip2_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1175ip2_interrupt(int irq, void *dev_id)
1177{ 1176{
1178 int i; 1177 int i;
1179 i2eBordStrPtr pB; 1178 i2eBordStrPtr pB;
@@ -1237,7 +1236,7 @@ ip2_poll(unsigned long arg)
1237 // Just polled boards, IRQ = 0 will hit all non-interrupt boards. 1236 // Just polled boards, IRQ = 0 will hit all non-interrupt boards.
1238 // It will NOT poll boards handled by hard interrupts. 1237 // It will NOT poll boards handled by hard interrupts.
1239 // The issue of queued BH interrups is handled in ip2_interrupt(). 1238 // The issue of queued BH interrups is handled in ip2_interrupt().
1240 ip2_interrupt(0, NULL, NULL); 1239 ip2_interrupt(0, NULL);
1241 1240
1242 PollTimer.expires = POLL_TIMEOUT; 1241 PollTimer.expires = POLL_TIMEOUT;
1243 add_timer( &PollTimer ); 1242 add_timer( &PollTimer );
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index b106c45abfc9..24825bdca8f4 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -872,7 +872,7 @@ static void smi_timeout(unsigned long data)
872 add_timer(&(smi_info->si_timer)); 872 add_timer(&(smi_info->si_timer));
873} 873}
874 874
875static irqreturn_t si_irq_handler(int irq, void *data, struct pt_regs *regs) 875static irqreturn_t si_irq_handler(int irq, void *data)
876{ 876{
877 struct smi_info *smi_info = data; 877 struct smi_info *smi_info = data;
878 unsigned long flags; 878 unsigned long flags;
@@ -899,14 +899,14 @@ static irqreturn_t si_irq_handler(int irq, void *data, struct pt_regs *regs)
899 return IRQ_HANDLED; 899 return IRQ_HANDLED;
900} 900}
901 901
902static irqreturn_t si_bt_irq_handler(int irq, void *data, struct pt_regs *regs) 902static irqreturn_t si_bt_irq_handler(int irq, void *data)
903{ 903{
904 struct smi_info *smi_info = data; 904 struct smi_info *smi_info = data;
905 /* We need to clear the IRQ flag for the BT interface. */ 905 /* We need to clear the IRQ flag for the BT interface. */
906 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG, 906 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG,
907 IPMI_BT_INTMASK_CLEAR_IRQ_BIT 907 IPMI_BT_INTMASK_CLEAR_IRQ_BIT
908 | IPMI_BT_INTMASK_ENABLE_IRQ_BIT); 908 | IPMI_BT_INTMASK_ENABLE_IRQ_BIT);
909 return si_irq_handler(irq, data, regs); 909 return si_irq_handler(irq, data);
910} 910}
911 911
912static int smi_start_processing(void *send_info, 912static int smi_start_processing(void *send_info,
diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c
index accaaf1a6b69..73f759eaa5a6 100644
--- a/drivers/char/ipmi/ipmi_watchdog.c
+++ b/drivers/char/ipmi/ipmi_watchdog.c
@@ -903,7 +903,7 @@ static void ipmi_register_watchdog(int ipmi_intf)
903 903
904#ifdef HAVE_NMI_HANDLER 904#ifdef HAVE_NMI_HANDLER
905static int 905static int
906ipmi_nmi(void *dev_id, struct pt_regs *regs, int cpu, int handled) 906ipmi_nmi(void *dev_id, int cpu, int handled)
907{ 907{
908 /* If we are not expecting a timeout, ignore it. */ 908 /* If we are not expecting a timeout, ignore it. */
909 if (ipmi_watchdog_state == WDOG_TIMEOUT_NONE) 909 if (ipmi_watchdog_state == WDOG_TIMEOUT_NONE)
diff --git a/drivers/char/isicom.c b/drivers/char/isicom.c
index ea2bbf80ad33..e9e9bf31c369 100644
--- a/drivers/char/isicom.c
+++ b/drivers/char/isicom.c
@@ -546,7 +546,7 @@ static void isicom_bottomhalf(void *data)
546 * Main interrupt handler routine 546 * Main interrupt handler routine
547 */ 547 */
548 548
549static irqreturn_t isicom_interrupt(int irq, void *dev_id, struct pt_regs *regs) 549static irqreturn_t isicom_interrupt(int irq, void *dev_id)
550{ 550{
551 struct isi_board *card = dev_id; 551 struct isi_board *card = dev_id;
552 struct isi_port *port; 552 struct isi_port *port;
diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c
index d6e031542c6b..ffdf9df1a67a 100644
--- a/drivers/char/istallion.c
+++ b/drivers/char/istallion.c
@@ -686,37 +686,37 @@ static stlibrd_t *stli_allocbrd(void);
686static void stli_ecpinit(stlibrd_t *brdp); 686static void stli_ecpinit(stlibrd_t *brdp);
687static void stli_ecpenable(stlibrd_t *brdp); 687static void stli_ecpenable(stlibrd_t *brdp);
688static void stli_ecpdisable(stlibrd_t *brdp); 688static void stli_ecpdisable(stlibrd_t *brdp);
689static char *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 689static void __iomem *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
690static void stli_ecpreset(stlibrd_t *brdp); 690static void stli_ecpreset(stlibrd_t *brdp);
691static void stli_ecpintr(stlibrd_t *brdp); 691static void stli_ecpintr(stlibrd_t *brdp);
692static void stli_ecpeiinit(stlibrd_t *brdp); 692static void stli_ecpeiinit(stlibrd_t *brdp);
693static void stli_ecpeienable(stlibrd_t *brdp); 693static void stli_ecpeienable(stlibrd_t *brdp);
694static void stli_ecpeidisable(stlibrd_t *brdp); 694static void stli_ecpeidisable(stlibrd_t *brdp);
695static char *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 695static void __iomem *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
696static void stli_ecpeireset(stlibrd_t *brdp); 696static void stli_ecpeireset(stlibrd_t *brdp);
697static void stli_ecpmcenable(stlibrd_t *brdp); 697static void stli_ecpmcenable(stlibrd_t *brdp);
698static void stli_ecpmcdisable(stlibrd_t *brdp); 698static void stli_ecpmcdisable(stlibrd_t *brdp);
699static char *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 699static void __iomem *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
700static void stli_ecpmcreset(stlibrd_t *brdp); 700static void stli_ecpmcreset(stlibrd_t *brdp);
701static void stli_ecppciinit(stlibrd_t *brdp); 701static void stli_ecppciinit(stlibrd_t *brdp);
702static char *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 702static void __iomem *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
703static void stli_ecppcireset(stlibrd_t *brdp); 703static void stli_ecppcireset(stlibrd_t *brdp);
704 704
705static void stli_onbinit(stlibrd_t *brdp); 705static void stli_onbinit(stlibrd_t *brdp);
706static void stli_onbenable(stlibrd_t *brdp); 706static void stli_onbenable(stlibrd_t *brdp);
707static void stli_onbdisable(stlibrd_t *brdp); 707static void stli_onbdisable(stlibrd_t *brdp);
708static char *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 708static void __iomem *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
709static void stli_onbreset(stlibrd_t *brdp); 709static void stli_onbreset(stlibrd_t *brdp);
710static void stli_onbeinit(stlibrd_t *brdp); 710static void stli_onbeinit(stlibrd_t *brdp);
711static void stli_onbeenable(stlibrd_t *brdp); 711static void stli_onbeenable(stlibrd_t *brdp);
712static void stli_onbedisable(stlibrd_t *brdp); 712static void stli_onbedisable(stlibrd_t *brdp);
713static char *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 713static void __iomem *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
714static void stli_onbereset(stlibrd_t *brdp); 714static void stli_onbereset(stlibrd_t *brdp);
715static void stli_bbyinit(stlibrd_t *brdp); 715static void stli_bbyinit(stlibrd_t *brdp);
716static char *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 716static void __iomem *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
717static void stli_bbyreset(stlibrd_t *brdp); 717static void stli_bbyreset(stlibrd_t *brdp);
718static void stli_stalinit(stlibrd_t *brdp); 718static void stli_stalinit(stlibrd_t *brdp);
719static char *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line); 719static void __iomem *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
720static void stli_stalreset(stlibrd_t *brdp); 720static void stli_stalreset(stlibrd_t *brdp);
721 721
722static stliport_t *stli_getport(int brdnr, int panelnr, int portnr); 722static stliport_t *stli_getport(int brdnr, int panelnr, int portnr);
@@ -1566,7 +1566,7 @@ static void stli_flushchars(struct tty_struct *tty)
1566 1566
1567 len = MIN(len, cooksize); 1567 len = MIN(len, cooksize);
1568 count = 0; 1568 count = 0;
1569 shbuf = (char *) EBRDGETMEMPTR(brdp, portp->txoffset); 1569 shbuf = EBRDGETMEMPTR(brdp, portp->txoffset);
1570 buf = stli_txcookbuf; 1570 buf = stli_txcookbuf;
1571 1571
1572 while (len > 0) { 1572 while (len > 0) {
@@ -2948,9 +2948,9 @@ static void stli_ecpdisable(stlibrd_t *brdp)
2948 2948
2949/*****************************************************************************/ 2949/*****************************************************************************/
2950 2950
2951static char *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 2951static void __iomem *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
2952{ 2952{
2953 void *ptr; 2953 void __iomem *ptr;
2954 unsigned char val; 2954 unsigned char val;
2955 2955
2956 if (offset > brdp->memsize) { 2956 if (offset > brdp->memsize) {
@@ -3022,9 +3022,9 @@ static void stli_ecpeidisable(stlibrd_t *brdp)
3022 3022
3023/*****************************************************************************/ 3023/*****************************************************************************/
3024 3024
3025static char *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 3025static void __iomem *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
3026{ 3026{
3027 void *ptr; 3027 void __iomem *ptr;
3028 unsigned char val; 3028 unsigned char val;
3029 3029
3030 if (offset > brdp->memsize) { 3030 if (offset > brdp->memsize) {
@@ -3074,9 +3074,9 @@ static void stli_ecpmcdisable(stlibrd_t *brdp)
3074 3074
3075/*****************************************************************************/ 3075/*****************************************************************************/
3076 3076
3077static char *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 3077static void __iomem *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
3078{ 3078{
3079 void *ptr; 3079 void __iomem *ptr;
3080 unsigned char val; 3080 unsigned char val;
3081 3081
3082 if (offset > brdp->memsize) { 3082 if (offset > brdp->memsize) {
@@ -3119,9 +3119,9 @@ static void stli_ecppciinit(stlibrd_t *brdp)
3119 3119
3120/*****************************************************************************/ 3120/*****************************************************************************/
3121 3121
3122static char *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 3122static void __iomem *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
3123{ 3123{
3124 void *ptr; 3124 void __iomem *ptr;
3125 unsigned char val; 3125 unsigned char val;
3126 3126
3127 if (offset > brdp->memsize) { 3127 if (offset > brdp->memsize) {
@@ -3185,9 +3185,9 @@ static void stli_onbdisable(stlibrd_t *brdp)
3185 3185
3186/*****************************************************************************/ 3186/*****************************************************************************/
3187 3187
3188static char *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 3188static void __iomem *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
3189{ 3189{
3190 void *ptr; 3190 void __iomem *ptr;
3191 3191
3192 if (offset > brdp->memsize) { 3192 if (offset > brdp->memsize) {
3193 printk(KERN_ERR "STALLION: shared memory pointer=%x out of " 3193 printk(KERN_ERR "STALLION: shared memory pointer=%x out of "
@@ -3250,9 +3250,9 @@ static void stli_onbedisable(stlibrd_t *brdp)
3250 3250
3251/*****************************************************************************/ 3251/*****************************************************************************/
3252 3252
3253static char *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 3253static void __iomem *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
3254{ 3254{
3255 void *ptr; 3255 void __iomem *ptr;
3256 unsigned char val; 3256 unsigned char val;
3257 3257
3258 if (offset > brdp->memsize) { 3258 if (offset > brdp->memsize) {
@@ -3300,9 +3300,9 @@ static void stli_bbyinit(stlibrd_t *brdp)
3300 3300
3301/*****************************************************************************/ 3301/*****************************************************************************/
3302 3302
3303static char *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 3303static void __iomem *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
3304{ 3304{
3305 void *ptr; 3305 void __iomem *ptr;
3306 unsigned char val; 3306 unsigned char val;
3307 3307
3308 BUG_ON(offset > brdp->memsize); 3308 BUG_ON(offset > brdp->memsize);
@@ -3337,7 +3337,7 @@ static void stli_stalinit(stlibrd_t *brdp)
3337 3337
3338/*****************************************************************************/ 3338/*****************************************************************************/
3339 3339
3340static char *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line) 3340static void __iomem *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
3341{ 3341{
3342 BUG_ON(offset > brdp->memsize); 3342 BUG_ON(offset > brdp->memsize);
3343 return brdp->membase + (offset % STAL_PAGESIZE); 3343 return brdp->membase + (offset % STAL_PAGESIZE);
@@ -3876,7 +3876,7 @@ static int stli_eisamemprobe(stlibrd_t *brdp)
3876 continue; 3876 continue;
3877 3877
3878 if (brdp->brdtype == BRD_ECPE) { 3878 if (brdp->brdtype == BRD_ECPE) {
3879 ecpsigp = (cdkecpsig_t __iomem *) stli_ecpeigetmemptr(brdp, 3879 ecpsigp = stli_ecpeigetmemptr(brdp,
3880 CDK_SIGADDR, __LINE__); 3880 CDK_SIGADDR, __LINE__);
3881 memcpy_fromio(&ecpsig, ecpsigp, sizeof(cdkecpsig_t)); 3881 memcpy_fromio(&ecpsig, ecpsigp, sizeof(cdkecpsig_t));
3882 if (ecpsig.magic == cpu_to_le32(ECP_MAGIC)) 3882 if (ecpsig.magic == cpu_to_le32(ECP_MAGIC))
@@ -4184,7 +4184,7 @@ static int stli_initbrds(void)
4184static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, loff_t *offp) 4184static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, loff_t *offp)
4185{ 4185{
4186 unsigned long flags; 4186 unsigned long flags;
4187 void *memptr; 4187 void __iomem *memptr;
4188 stlibrd_t *brdp; 4188 stlibrd_t *brdp;
4189 int brdnr, size, n; 4189 int brdnr, size, n;
4190 void *p; 4190 void *p;
@@ -4214,7 +4214,7 @@ static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, lof
4214 while (size > 0) { 4214 while (size > 0) {
4215 spin_lock_irqsave(&brd_lock, flags); 4215 spin_lock_irqsave(&brd_lock, flags);
4216 EBRDENABLE(brdp); 4216 EBRDENABLE(brdp);
4217 memptr = (void *) EBRDGETMEMPTR(brdp, off); 4217 memptr = EBRDGETMEMPTR(brdp, off);
4218 n = MIN(size, (brdp->pagesize - (((unsigned long) off) % brdp->pagesize))); 4218 n = MIN(size, (brdp->pagesize - (((unsigned long) off) % brdp->pagesize)));
4219 n = MIN(n, PAGE_SIZE); 4219 n = MIN(n, PAGE_SIZE);
4220 memcpy_fromio(p, memptr, n); 4220 memcpy_fromio(p, memptr, n);
@@ -4247,7 +4247,7 @@ out:
4247static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t count, loff_t *offp) 4247static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t count, loff_t *offp)
4248{ 4248{
4249 unsigned long flags; 4249 unsigned long flags;
4250 void *memptr; 4250 void __iomem *memptr;
4251 stlibrd_t *brdp; 4251 stlibrd_t *brdp;
4252 char __user *chbuf; 4252 char __user *chbuf;
4253 int brdnr, size, n; 4253 int brdnr, size, n;
@@ -4287,7 +4287,7 @@ static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t cou
4287 } 4287 }
4288 spin_lock_irqsave(&brd_lock, flags); 4288 spin_lock_irqsave(&brd_lock, flags);
4289 EBRDENABLE(brdp); 4289 EBRDENABLE(brdp);
4290 memptr = (void *) EBRDGETMEMPTR(brdp, off); 4290 memptr = EBRDGETMEMPTR(brdp, off);
4291 memcpy_toio(memptr, p, n); 4291 memcpy_toio(memptr, p, n);
4292 EBRDDISABLE(brdp); 4292 EBRDDISABLE(brdp);
4293 spin_unlock_irqrestore(&brd_lock, flags); 4293 spin_unlock_irqrestore(&brd_lock, flags);
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index e2011669c7bb..20b6c8b30248 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -32,6 +32,7 @@
32#include <linux/string.h> 32#include <linux/string.h>
33#include <linux/init.h> 33#include <linux/init.h>
34#include <linux/slab.h> 34#include <linux/slab.h>
35#include <linux/irq.h>
35 36
36#include <linux/kbd_kern.h> 37#include <linux/kbd_kern.h>
37#include <linux/kbd_diacr.h> 38#include <linux/kbd_diacr.h>
@@ -77,7 +78,7 @@ void compute_shiftstate(void);
77 k_slock, k_dead2, k_brl, k_ignore 78 k_slock, k_dead2, k_brl, k_ignore
78 79
79typedef void (k_handler_fn)(struct vc_data *vc, unsigned char value, 80typedef void (k_handler_fn)(struct vc_data *vc, unsigned char value,
80 char up_flag, struct pt_regs *regs); 81 char up_flag);
81static k_handler_fn K_HANDLERS; 82static k_handler_fn K_HANDLERS;
82static k_handler_fn *k_handler[16] = { K_HANDLERS }; 83static k_handler_fn *k_handler[16] = { K_HANDLERS };
83 84
@@ -88,7 +89,7 @@ static k_handler_fn *k_handler[16] = { K_HANDLERS };
88 fn_boot_it, fn_caps_on, fn_compose, fn_SAK,\ 89 fn_boot_it, fn_caps_on, fn_compose, fn_SAK,\
89 fn_dec_console, fn_inc_console, fn_spawn_con, fn_bare_num 90 fn_dec_console, fn_inc_console, fn_spawn_con, fn_bare_num
90 91
91typedef void (fn_handler_fn)(struct vc_data *vc, struct pt_regs *regs); 92typedef void (fn_handler_fn)(struct vc_data *vc);
92static fn_handler_fn FN_HANDLERS; 93static fn_handler_fn FN_HANDLERS;
93static fn_handler_fn *fn_handler[] = { FN_HANDLERS }; 94static fn_handler_fn *fn_handler[] = { FN_HANDLERS };
94 95
@@ -428,7 +429,7 @@ static unsigned int handle_diacr(struct vc_data *vc, unsigned int ch)
428/* 429/*
429 * Special function handlers 430 * Special function handlers
430 */ 431 */
431static void fn_enter(struct vc_data *vc, struct pt_regs *regs) 432static void fn_enter(struct vc_data *vc)
432{ 433{
433 if (diacr) { 434 if (diacr) {
434 if (kbd->kbdmode == VC_UNICODE) 435 if (kbd->kbdmode == VC_UNICODE)
@@ -442,27 +443,28 @@ static void fn_enter(struct vc_data *vc, struct pt_regs *regs)
442 put_queue(vc, 10); 443 put_queue(vc, 10);
443} 444}
444 445
445static void fn_caps_toggle(struct vc_data *vc, struct pt_regs *regs) 446static void fn_caps_toggle(struct vc_data *vc)
446{ 447{
447 if (rep) 448 if (rep)
448 return; 449 return;
449 chg_vc_kbd_led(kbd, VC_CAPSLOCK); 450 chg_vc_kbd_led(kbd, VC_CAPSLOCK);
450} 451}
451 452
452static void fn_caps_on(struct vc_data *vc, struct pt_regs *regs) 453static void fn_caps_on(struct vc_data *vc)
453{ 454{
454 if (rep) 455 if (rep)
455 return; 456 return;
456 set_vc_kbd_led(kbd, VC_CAPSLOCK); 457 set_vc_kbd_led(kbd, VC_CAPSLOCK);
457} 458}
458 459
459static void fn_show_ptregs(struct vc_data *vc, struct pt_regs *regs) 460static void fn_show_ptregs(struct vc_data *vc)
460{ 461{
462 struct pt_regs *regs = get_irq_regs();
461 if (regs) 463 if (regs)
462 show_regs(regs); 464 show_regs(regs);
463} 465}
464 466
465static void fn_hold(struct vc_data *vc, struct pt_regs *regs) 467static void fn_hold(struct vc_data *vc)
466{ 468{
467 struct tty_struct *tty = vc->vc_tty; 469 struct tty_struct *tty = vc->vc_tty;
468 470
@@ -480,12 +482,12 @@ static void fn_hold(struct vc_data *vc, struct pt_regs *regs)
480 stop_tty(tty); 482 stop_tty(tty);
481} 483}
482 484
483static void fn_num(struct vc_data *vc, struct pt_regs *regs) 485static void fn_num(struct vc_data *vc)
484{ 486{
485 if (vc_kbd_mode(kbd,VC_APPLIC)) 487 if (vc_kbd_mode(kbd,VC_APPLIC))
486 applkey(vc, 'P', 1); 488 applkey(vc, 'P', 1);
487 else 489 else
488 fn_bare_num(vc, regs); 490 fn_bare_num(vc);
489} 491}
490 492
491/* 493/*
@@ -494,19 +496,19 @@ static void fn_num(struct vc_data *vc, struct pt_regs *regs)
494 * Bind this to NumLock if you prefer that the NumLock key always 496 * Bind this to NumLock if you prefer that the NumLock key always
495 * changes the NumLock flag. 497 * changes the NumLock flag.
496 */ 498 */
497static void fn_bare_num(struct vc_data *vc, struct pt_regs *regs) 499static void fn_bare_num(struct vc_data *vc)
498{ 500{
499 if (!rep) 501 if (!rep)
500 chg_vc_kbd_led(kbd, VC_NUMLOCK); 502 chg_vc_kbd_led(kbd, VC_NUMLOCK);
501} 503}
502 504
503static void fn_lastcons(struct vc_data *vc, struct pt_regs *regs) 505static void fn_lastcons(struct vc_data *vc)
504{ 506{
505 /* switch to the last used console, ChN */ 507 /* switch to the last used console, ChN */
506 set_console(last_console); 508 set_console(last_console);
507} 509}
508 510
509static void fn_dec_console(struct vc_data *vc, struct pt_regs *regs) 511static void fn_dec_console(struct vc_data *vc)
510{ 512{
511 int i, cur = fg_console; 513 int i, cur = fg_console;
512 514
@@ -523,7 +525,7 @@ static void fn_dec_console(struct vc_data *vc, struct pt_regs *regs)
523 set_console(i); 525 set_console(i);
524} 526}
525 527
526static void fn_inc_console(struct vc_data *vc, struct pt_regs *regs) 528static void fn_inc_console(struct vc_data *vc)
527{ 529{
528 int i, cur = fg_console; 530 int i, cur = fg_console;
529 531
@@ -540,7 +542,7 @@ static void fn_inc_console(struct vc_data *vc, struct pt_regs *regs)
540 set_console(i); 542 set_console(i);
541} 543}
542 544
543static void fn_send_intr(struct vc_data *vc, struct pt_regs *regs) 545static void fn_send_intr(struct vc_data *vc)
544{ 546{
545 struct tty_struct *tty = vc->vc_tty; 547 struct tty_struct *tty = vc->vc_tty;
546 548
@@ -550,37 +552,37 @@ static void fn_send_intr(struct vc_data *vc, struct pt_regs *regs)
550 con_schedule_flip(tty); 552 con_schedule_flip(tty);
551} 553}
552 554
553static void fn_scroll_forw(struct vc_data *vc, struct pt_regs *regs) 555static void fn_scroll_forw(struct vc_data *vc)
554{ 556{
555 scrollfront(vc, 0); 557 scrollfront(vc, 0);
556} 558}
557 559
558static void fn_scroll_back(struct vc_data *vc, struct pt_regs *regs) 560static void fn_scroll_back(struct vc_data *vc)
559{ 561{
560 scrollback(vc, 0); 562 scrollback(vc, 0);
561} 563}
562 564
563static void fn_show_mem(struct vc_data *vc, struct pt_regs *regs) 565static void fn_show_mem(struct vc_data *vc)
564{ 566{
565 show_mem(); 567 show_mem();
566} 568}
567 569
568static void fn_show_state(struct vc_data *vc, struct pt_regs *regs) 570static void fn_show_state(struct vc_data *vc)
569{ 571{
570 show_state(); 572 show_state();
571} 573}
572 574
573static void fn_boot_it(struct vc_data *vc, struct pt_regs *regs) 575static void fn_boot_it(struct vc_data *vc)
574{ 576{
575 ctrl_alt_del(); 577 ctrl_alt_del();
576} 578}
577 579
578static void fn_compose(struct vc_data *vc, struct pt_regs *regs) 580static void fn_compose(struct vc_data *vc)
579{ 581{
580 dead_key_next = 1; 582 dead_key_next = 1;
581} 583}
582 584
583static void fn_spawn_con(struct vc_data *vc, struct pt_regs *regs) 585static void fn_spawn_con(struct vc_data *vc)
584{ 586{
585 spin_lock(&vt_spawn_con.lock); 587 spin_lock(&vt_spawn_con.lock);
586 if (vt_spawn_con.pid) 588 if (vt_spawn_con.pid)
@@ -591,7 +593,7 @@ static void fn_spawn_con(struct vc_data *vc, struct pt_regs *regs)
591 spin_unlock(&vt_spawn_con.lock); 593 spin_unlock(&vt_spawn_con.lock);
592} 594}
593 595
594static void fn_SAK(struct vc_data *vc, struct pt_regs *regs) 596static void fn_SAK(struct vc_data *vc)
595{ 597{
596 struct tty_struct *tty = vc->vc_tty; 598 struct tty_struct *tty = vc->vc_tty;
597 599
@@ -604,7 +606,7 @@ static void fn_SAK(struct vc_data *vc, struct pt_regs *regs)
604 reset_vc(vc); 606 reset_vc(vc);
605} 607}
606 608
607static void fn_null(struct vc_data *vc, struct pt_regs *regs) 609static void fn_null(struct vc_data *vc)
608{ 610{
609 compute_shiftstate(); 611 compute_shiftstate();
610} 612}
@@ -612,11 +614,11 @@ static void fn_null(struct vc_data *vc, struct pt_regs *regs)
612/* 614/*
613 * Special key handlers 615 * Special key handlers
614 */ 616 */
615static void k_ignore(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 617static void k_ignore(struct vc_data *vc, unsigned char value, char up_flag)
616{ 618{
617} 619}
618 620
619static void k_spec(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 621static void k_spec(struct vc_data *vc, unsigned char value, char up_flag)
620{ 622{
621 if (up_flag) 623 if (up_flag)
622 return; 624 return;
@@ -626,15 +628,15 @@ static void k_spec(struct vc_data *vc, unsigned char value, char up_flag, struct
626 kbd->kbdmode == VC_MEDIUMRAW) && 628 kbd->kbdmode == VC_MEDIUMRAW) &&
627 value != KVAL(K_SAK)) 629 value != KVAL(K_SAK))
628 return; /* SAK is allowed even in raw mode */ 630 return; /* SAK is allowed even in raw mode */
629 fn_handler[value](vc, regs); 631 fn_handler[value](vc);
630} 632}
631 633
632static void k_lowercase(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 634static void k_lowercase(struct vc_data *vc, unsigned char value, char up_flag)
633{ 635{
634 printk(KERN_ERR "keyboard.c: k_lowercase was called - impossible\n"); 636 printk(KERN_ERR "keyboard.c: k_lowercase was called - impossible\n");
635} 637}
636 638
637static void k_unicode(struct vc_data *vc, unsigned int value, char up_flag, struct pt_regs *regs) 639static void k_unicode(struct vc_data *vc, unsigned int value, char up_flag)
638{ 640{
639 if (up_flag) 641 if (up_flag)
640 return; /* no action, if this is a key release */ 642 return; /* no action, if this is a key release */
@@ -658,41 +660,41 @@ static void k_unicode(struct vc_data *vc, unsigned int value, char up_flag, stru
658 * dead keys modifying the same character. Very useful 660 * dead keys modifying the same character. Very useful
659 * for Vietnamese. 661 * for Vietnamese.
660 */ 662 */
661static void k_deadunicode(struct vc_data *vc, unsigned int value, char up_flag, struct pt_regs *regs) 663static void k_deadunicode(struct vc_data *vc, unsigned int value, char up_flag)
662{ 664{
663 if (up_flag) 665 if (up_flag)
664 return; 666 return;
665 diacr = (diacr ? handle_diacr(vc, value) : value); 667 diacr = (diacr ? handle_diacr(vc, value) : value);
666} 668}
667 669
668static void k_self(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 670static void k_self(struct vc_data *vc, unsigned char value, char up_flag)
669{ 671{
670 k_unicode(vc, value, up_flag, regs); 672 k_unicode(vc, value, up_flag);
671} 673}
672 674
673static void k_dead2(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 675static void k_dead2(struct vc_data *vc, unsigned char value, char up_flag)
674{ 676{
675 k_deadunicode(vc, value, up_flag, regs); 677 k_deadunicode(vc, value, up_flag);
676} 678}
677 679
678/* 680/*
679 * Obsolete - for backwards compatibility only 681 * Obsolete - for backwards compatibility only
680 */ 682 */
681static void k_dead(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 683static void k_dead(struct vc_data *vc, unsigned char value, char up_flag)
682{ 684{
683 static const unsigned char ret_diacr[NR_DEAD] = {'`', '\'', '^', '~', '"', ',' }; 685 static const unsigned char ret_diacr[NR_DEAD] = {'`', '\'', '^', '~', '"', ',' };
684 value = ret_diacr[value]; 686 value = ret_diacr[value];
685 k_deadunicode(vc, value, up_flag, regs); 687 k_deadunicode(vc, value, up_flag);
686} 688}
687 689
688static void k_cons(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 690static void k_cons(struct vc_data *vc, unsigned char value, char up_flag)
689{ 691{
690 if (up_flag) 692 if (up_flag)
691 return; 693 return;
692 set_console(value); 694 set_console(value);
693} 695}
694 696
695static void k_fn(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 697static void k_fn(struct vc_data *vc, unsigned char value, char up_flag)
696{ 698{
697 unsigned v; 699 unsigned v;
698 700
@@ -706,7 +708,7 @@ static void k_fn(struct vc_data *vc, unsigned char value, char up_flag, struct p
706 printk(KERN_ERR "k_fn called with value=%d\n", value); 708 printk(KERN_ERR "k_fn called with value=%d\n", value);
707} 709}
708 710
709static void k_cur(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 711static void k_cur(struct vc_data *vc, unsigned char value, char up_flag)
710{ 712{
711 static const char *cur_chars = "BDCA"; 713 static const char *cur_chars = "BDCA";
712 714
@@ -715,7 +717,7 @@ static void k_cur(struct vc_data *vc, unsigned char value, char up_flag, struct
715 applkey(vc, cur_chars[value], vc_kbd_mode(kbd, VC_CKMODE)); 717 applkey(vc, cur_chars[value], vc_kbd_mode(kbd, VC_CKMODE));
716} 718}
717 719
718static void k_pad(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 720static void k_pad(struct vc_data *vc, unsigned char value, char up_flag)
719{ 721{
720 static const char pad_chars[] = "0123456789+-*/\015,.?()#"; 722 static const char pad_chars[] = "0123456789+-*/\015,.?()#";
721 static const char app_map[] = "pqrstuvwxylSRQMnnmPQS"; 723 static const char app_map[] = "pqrstuvwxylSRQMnnmPQS";
@@ -733,34 +735,34 @@ static void k_pad(struct vc_data *vc, unsigned char value, char up_flag, struct
733 switch (value) { 735 switch (value) {
734 case KVAL(K_PCOMMA): 736 case KVAL(K_PCOMMA):
735 case KVAL(K_PDOT): 737 case KVAL(K_PDOT):
736 k_fn(vc, KVAL(K_REMOVE), 0, regs); 738 k_fn(vc, KVAL(K_REMOVE), 0);
737 return; 739 return;
738 case KVAL(K_P0): 740 case KVAL(K_P0):
739 k_fn(vc, KVAL(K_INSERT), 0, regs); 741 k_fn(vc, KVAL(K_INSERT), 0);
740 return; 742 return;
741 case KVAL(K_P1): 743 case KVAL(K_P1):
742 k_fn(vc, KVAL(K_SELECT), 0, regs); 744 k_fn(vc, KVAL(K_SELECT), 0);
743 return; 745 return;
744 case KVAL(K_P2): 746 case KVAL(K_P2):
745 k_cur(vc, KVAL(K_DOWN), 0, regs); 747 k_cur(vc, KVAL(K_DOWN), 0);
746 return; 748 return;
747 case KVAL(K_P3): 749 case KVAL(K_P3):
748 k_fn(vc, KVAL(K_PGDN), 0, regs); 750 k_fn(vc, KVAL(K_PGDN), 0);
749 return; 751 return;
750 case KVAL(K_P4): 752 case KVAL(K_P4):
751 k_cur(vc, KVAL(K_LEFT), 0, regs); 753 k_cur(vc, KVAL(K_LEFT), 0);
752 return; 754 return;
753 case KVAL(K_P6): 755 case KVAL(K_P6):
754 k_cur(vc, KVAL(K_RIGHT), 0, regs); 756 k_cur(vc, KVAL(K_RIGHT), 0);
755 return; 757 return;
756 case KVAL(K_P7): 758 case KVAL(K_P7):
757 k_fn(vc, KVAL(K_FIND), 0, regs); 759 k_fn(vc, KVAL(K_FIND), 0);
758 return; 760 return;
759 case KVAL(K_P8): 761 case KVAL(K_P8):
760 k_cur(vc, KVAL(K_UP), 0, regs); 762 k_cur(vc, KVAL(K_UP), 0);
761 return; 763 return;
762 case KVAL(K_P9): 764 case KVAL(K_P9):
763 k_fn(vc, KVAL(K_PGUP), 0, regs); 765 k_fn(vc, KVAL(K_PGUP), 0);
764 return; 766 return;
765 case KVAL(K_P5): 767 case KVAL(K_P5):
766 applkey(vc, 'G', vc_kbd_mode(kbd, VC_APPLIC)); 768 applkey(vc, 'G', vc_kbd_mode(kbd, VC_APPLIC));
@@ -772,7 +774,7 @@ static void k_pad(struct vc_data *vc, unsigned char value, char up_flag, struct
772 put_queue(vc, 10); 774 put_queue(vc, 10);
773} 775}
774 776
775static void k_shift(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 777static void k_shift(struct vc_data *vc, unsigned char value, char up_flag)
776{ 778{
777 int old_state = shift_state; 779 int old_state = shift_state;
778 780
@@ -813,7 +815,7 @@ static void k_shift(struct vc_data *vc, unsigned char value, char up_flag, struc
813 } 815 }
814} 816}
815 817
816static void k_meta(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 818static void k_meta(struct vc_data *vc, unsigned char value, char up_flag)
817{ 819{
818 if (up_flag) 820 if (up_flag)
819 return; 821 return;
@@ -825,7 +827,7 @@ static void k_meta(struct vc_data *vc, unsigned char value, char up_flag, struct
825 put_queue(vc, value | 0x80); 827 put_queue(vc, value | 0x80);
826} 828}
827 829
828static void k_ascii(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 830static void k_ascii(struct vc_data *vc, unsigned char value, char up_flag)
829{ 831{
830 int base; 832 int base;
831 833
@@ -847,16 +849,16 @@ static void k_ascii(struct vc_data *vc, unsigned char value, char up_flag, struc
847 npadch = npadch * base + value; 849 npadch = npadch * base + value;
848} 850}
849 851
850static void k_lock(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 852static void k_lock(struct vc_data *vc, unsigned char value, char up_flag)
851{ 853{
852 if (up_flag || rep) 854 if (up_flag || rep)
853 return; 855 return;
854 chg_vc_kbd_lock(kbd, value); 856 chg_vc_kbd_lock(kbd, value);
855} 857}
856 858
857static void k_slock(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 859static void k_slock(struct vc_data *vc, unsigned char value, char up_flag)
858{ 860{
859 k_shift(vc, value, up_flag, regs); 861 k_shift(vc, value, up_flag);
860 if (up_flag || rep) 862 if (up_flag || rep)
861 return; 863 return;
862 chg_vc_kbd_slock(kbd, value); 864 chg_vc_kbd_slock(kbd, value);
@@ -876,25 +878,25 @@ static unsigned brl_nbchords = 1;
876MODULE_PARM_DESC(brl_nbchords, "Number of chords that produce a braille pattern (0 for dead chords)"); 878MODULE_PARM_DESC(brl_nbchords, "Number of chords that produce a braille pattern (0 for dead chords)");
877module_param(brl_nbchords, uint, 0644); 879module_param(brl_nbchords, uint, 0644);
878 880
879static void k_brlcommit(struct vc_data *vc, unsigned int pattern, char up_flag, struct pt_regs *regs) 881static void k_brlcommit(struct vc_data *vc, unsigned int pattern, char up_flag)
880{ 882{
881 static unsigned long chords; 883 static unsigned long chords;
882 static unsigned committed; 884 static unsigned committed;
883 885
884 if (!brl_nbchords) 886 if (!brl_nbchords)
885 k_deadunicode(vc, BRL_UC_ROW | pattern, up_flag, regs); 887 k_deadunicode(vc, BRL_UC_ROW | pattern, up_flag);
886 else { 888 else {
887 committed |= pattern; 889 committed |= pattern;
888 chords++; 890 chords++;
889 if (chords == brl_nbchords) { 891 if (chords == brl_nbchords) {
890 k_unicode(vc, BRL_UC_ROW | committed, up_flag, regs); 892 k_unicode(vc, BRL_UC_ROW | committed, up_flag);
891 chords = 0; 893 chords = 0;
892 committed = 0; 894 committed = 0;
893 } 895 }
894 } 896 }
895} 897}
896 898
897static void k_brl(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 899static void k_brl(struct vc_data *vc, unsigned char value, char up_flag)
898{ 900{
899 static unsigned pressed,committing; 901 static unsigned pressed,committing;
900 static unsigned long releasestart; 902 static unsigned long releasestart;
@@ -906,7 +908,7 @@ static void k_brl(struct vc_data *vc, unsigned char value, char up_flag, struct
906 } 908 }
907 909
908 if (!value) { 910 if (!value) {
909 k_unicode(vc, BRL_UC_ROW, up_flag, regs); 911 k_unicode(vc, BRL_UC_ROW, up_flag);
910 return; 912 return;
911 } 913 }
912 914
@@ -923,13 +925,13 @@ static void k_brl(struct vc_data *vc, unsigned char value, char up_flag, struct
923 pressed &= ~(1 << (value - 1)); 925 pressed &= ~(1 << (value - 1));
924 if (!pressed) { 926 if (!pressed) {
925 if (committing) { 927 if (committing) {
926 k_brlcommit(vc, committing, 0, regs); 928 k_brlcommit(vc, committing, 0);
927 committing = 0; 929 committing = 0;
928 } 930 }
929 } 931 }
930 } else { 932 } else {
931 if (committing) { 933 if (committing) {
932 k_brlcommit(vc, committing, 0, regs); 934 k_brlcommit(vc, committing, 0);
933 committing = 0; 935 committing = 0;
934 } 936 }
935 pressed &= ~(1 << (value - 1)); 937 pressed &= ~(1 << (value - 1));
@@ -1133,8 +1135,7 @@ static void kbd_rawcode(unsigned char data)
1133 put_queue(vc, data); 1135 put_queue(vc, data);
1134} 1136}
1135 1137
1136static void kbd_keycode(unsigned int keycode, int down, 1138static void kbd_keycode(unsigned int keycode, int down, int hw_raw)
1137 int hw_raw, struct pt_regs *regs)
1138{ 1139{
1139 struct vc_data *vc = vc_cons[fg_console].d; 1140 struct vc_data *vc = vc_cons[fg_console].d;
1140 unsigned short keysym, *key_map; 1141 unsigned short keysym, *key_map;
@@ -1181,7 +1182,7 @@ static void kbd_keycode(unsigned int keycode, int down,
1181 if (sysrq_down && !down && keycode == sysrq_alt_use) 1182 if (sysrq_down && !down && keycode == sysrq_alt_use)
1182 sysrq_down = 0; 1183 sysrq_down = 0;
1183 if (sysrq_down && down && !rep) { 1184 if (sysrq_down && down && !rep) {
1184 handle_sysrq(kbd_sysrq_xlate[keycode], regs, tty); 1185 handle_sysrq(kbd_sysrq_xlate[keycode], tty);
1185 return; 1186 return;
1186 } 1187 }
1187#endif 1188#endif
@@ -1267,7 +1268,7 @@ static void kbd_keycode(unsigned int keycode, int down,
1267 } 1268 }
1268 } 1269 }
1269 1270
1270 (*k_handler[type])(vc, keysym & 0xff, !down, regs); 1271 (*k_handler[type])(vc, keysym & 0xff, !down);
1271 1272
1272 if (type != KT_SLOCK) 1273 if (type != KT_SLOCK)
1273 kbd->slockstate = 0; 1274 kbd->slockstate = 0;
@@ -1279,7 +1280,7 @@ static void kbd_event(struct input_handle *handle, unsigned int event_type,
1279 if (event_type == EV_MSC && event_code == MSC_RAW && HW_RAW(handle->dev)) 1280 if (event_type == EV_MSC && event_code == MSC_RAW && HW_RAW(handle->dev))
1280 kbd_rawcode(value); 1281 kbd_rawcode(value);
1281 if (event_type == EV_KEY) 1282 if (event_type == EV_KEY)
1282 kbd_keycode(event_code, value, HW_RAW(handle->dev), handle->dev->regs); 1283 kbd_keycode(event_code, value, HW_RAW(handle->dev));
1283 tasklet_schedule(&keyboard_tasklet); 1284 tasklet_schedule(&keyboard_tasklet);
1284 do_poke_blanked_console = 1; 1285 do_poke_blanked_console = 1;
1285 schedule_console_callback(); 1286 schedule_console_callback();
diff --git a/drivers/char/mbcs.c b/drivers/char/mbcs.c
index 636354722658..0afb7ba999cf 100644
--- a/drivers/char/mbcs.c
+++ b/drivers/char/mbcs.c
@@ -516,11 +516,10 @@ int mbcs_gscr_mmap(struct file *fp, struct vm_area_struct *vma)
516 * mbcs_completion_intr_handler - Primary completion handler. 516 * mbcs_completion_intr_handler - Primary completion handler.
517 * @irq: irq 517 * @irq: irq
518 * @arg: soft struct for device 518 * @arg: soft struct for device
519 * @ep: regs
520 * 519 *
521 */ 520 */
522static irqreturn_t 521static irqreturn_t
523mbcs_completion_intr_handler(int irq, void *arg, struct pt_regs *ep) 522mbcs_completion_intr_handler(int irq, void *arg)
524{ 523{
525 struct mbcs_soft *soft = (struct mbcs_soft *)arg; 524 struct mbcs_soft *soft = (struct mbcs_soft *)arg;
526 void *mmr_base; 525 void *mmr_base;
diff --git a/drivers/char/mmtimer.c b/drivers/char/mmtimer.c
index 1f0f2b6dae26..22b9905c1e52 100644
--- a/drivers/char/mmtimer.c
+++ b/drivers/char/mmtimer.c
@@ -422,7 +422,6 @@ static int inline reschedule_periodic_timer(mmtimer_t *x)
422 * mmtimer_interrupt - timer interrupt handler 422 * mmtimer_interrupt - timer interrupt handler
423 * @irq: irq received 423 * @irq: irq received
424 * @dev_id: device the irq came from 424 * @dev_id: device the irq came from
425 * @regs: register state upon receipt of the interrupt
426 * 425 *
427 * Called when one of the comarators matches the counter, This 426 * Called when one of the comarators matches the counter, This
428 * routine will send signals to processes that have requested 427 * routine will send signals to processes that have requested
@@ -433,7 +432,7 @@ static int inline reschedule_periodic_timer(mmtimer_t *x)
433 * registers. 432 * registers.
434 */ 433 */
435static irqreturn_t 434static irqreturn_t
436mmtimer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 435mmtimer_interrupt(int irq, void *dev_id)
437{ 436{
438 int i; 437 int i;
439 unsigned long expires = 0; 438 unsigned long expires = 0;
diff --git a/drivers/char/mwave/tp3780i.c b/drivers/char/mwave/tp3780i.c
index cc3e54dd7234..f282976daaac 100644
--- a/drivers/char/mwave/tp3780i.c
+++ b/drivers/char/mwave/tp3780i.c
@@ -95,14 +95,14 @@ static void EnableSRAM(THINKPAD_BD_DATA * pBDData)
95} 95}
96 96
97 97
98static irqreturn_t UartInterrupt(int irq, void *dev_id, struct pt_regs *regs) 98static irqreturn_t UartInterrupt(int irq, void *dev_id)
99{ 99{
100 PRINTK_3(TRACE_TP3780I, 100 PRINTK_3(TRACE_TP3780I,
101 "tp3780i::UartInterrupt entry irq %x dev_id %p\n", irq, dev_id); 101 "tp3780i::UartInterrupt entry irq %x dev_id %p\n", irq, dev_id);
102 return IRQ_HANDLED; 102 return IRQ_HANDLED;
103} 103}
104 104
105static irqreturn_t DspInterrupt(int irq, void *dev_id, struct pt_regs *regs) 105static irqreturn_t DspInterrupt(int irq, void *dev_id)
106{ 106{
107 pMWAVE_DEVICE_DATA pDrvData = &mwave_s_mdd; 107 pMWAVE_DEVICE_DATA pDrvData = &mwave_s_mdd;
108 DSP_3780I_CONFIG_SETTINGS *pSettings = &pDrvData->rBDData.rDspSettings; 108 DSP_3780I_CONFIG_SETTINGS *pSettings = &pDrvData->rBDData.rDspSettings;
diff --git a/drivers/char/mxser.c b/drivers/char/mxser.c
index 8253fca8efd5..048d91142c17 100644
--- a/drivers/char/mxser.c
+++ b/drivers/char/mxser.c
@@ -407,7 +407,7 @@ static void mxser_stop(struct tty_struct *);
407static void mxser_start(struct tty_struct *); 407static void mxser_start(struct tty_struct *);
408static void mxser_hangup(struct tty_struct *); 408static void mxser_hangup(struct tty_struct *);
409static void mxser_rs_break(struct tty_struct *, int); 409static void mxser_rs_break(struct tty_struct *, int);
410static irqreturn_t mxser_interrupt(int, void *, struct pt_regs *); 410static irqreturn_t mxser_interrupt(int, void *);
411static void mxser_receive_chars(struct mxser_struct *, int *); 411static void mxser_receive_chars(struct mxser_struct *, int *);
412static void mxser_transmit_chars(struct mxser_struct *); 412static void mxser_transmit_chars(struct mxser_struct *);
413static void mxser_check_modem_status(struct mxser_struct *, int); 413static void mxser_check_modem_status(struct mxser_struct *, int);
@@ -1916,7 +1916,7 @@ static void mxser_rs_break(struct tty_struct *tty, int break_state)
1916/* 1916/*
1917 * This is the serial driver's generic interrupt routine 1917 * This is the serial driver's generic interrupt routine
1918 */ 1918 */
1919static irqreturn_t mxser_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1919static irqreturn_t mxser_interrupt(int irq, void *dev_id)
1920{ 1920{
1921 int status, iir, i; 1921 int status, iir, i;
1922 struct mxser_struct *info; 1922 struct mxser_struct *info;
diff --git a/drivers/char/nwbutton.c b/drivers/char/nwbutton.c
index ea1aa7764f8e..2d264971d839 100644
--- a/drivers/char/nwbutton.c
+++ b/drivers/char/nwbutton.c
@@ -144,7 +144,7 @@ static void button_sequence_finished (unsigned long parameters)
144 * increments the counter. 144 * increments the counter.
145 */ 145 */
146 146
147static irqreturn_t button_handler (int irq, void *dev_id, struct pt_regs *regs) 147static irqreturn_t button_handler (int irq, void *dev_id)
148{ 148{
149 if (button_press_count) { 149 if (button_press_count) {
150 del_timer (&button_timer); 150 del_timer (&button_timer);
diff --git a/drivers/char/nwbutton.h b/drivers/char/nwbutton.h
index ddb7b928dcbb..c3ebc16ce8a7 100644
--- a/drivers/char/nwbutton.h
+++ b/drivers/char/nwbutton.h
@@ -25,7 +25,7 @@ struct button_callback {
25/* Function prototypes: */ 25/* Function prototypes: */
26 26
27static void button_sequence_finished (unsigned long parameters); 27static void button_sequence_finished (unsigned long parameters);
28static irqreturn_t button_handler (int irq, void *dev_id, struct pt_regs *regs); 28static irqreturn_t button_handler (int irq, void *dev_id);
29int button_init (void); 29int button_init (void);
30int button_add_callback (void (*callback) (void), int count); 30int button_add_callback (void (*callback) (void), int count);
31int button_del_callback (void (*callback) (void)); 31int button_del_callback (void (*callback) (void));
diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c
index 73e324209913..1a0bc30b79d1 100644
--- a/drivers/char/pcmcia/synclink_cs.c
+++ b/drivers/char/pcmcia/synclink_cs.c
@@ -416,7 +416,7 @@ static void rx_reset_buffers(MGSLPC_INFO *info);
416static int rx_alloc_buffers(MGSLPC_INFO *info); 416static int rx_alloc_buffers(MGSLPC_INFO *info);
417static void rx_free_buffers(MGSLPC_INFO *info); 417static void rx_free_buffers(MGSLPC_INFO *info);
418 418
419static irqreturn_t mgslpc_isr(int irq, void *dev_id, struct pt_regs * regs); 419static irqreturn_t mgslpc_isr(int irq, void *dev_id);
420 420
421/* 421/*
422 * Bottom half interrupt handlers 422 * Bottom half interrupt handlers
@@ -1234,9 +1234,8 @@ static void ri_change(MGSLPC_INFO *info)
1234 * 1234 *
1235 * irq interrupt number that caused interrupt 1235 * irq interrupt number that caused interrupt
1236 * dev_id device ID supplied during interrupt registration 1236 * dev_id device ID supplied during interrupt registration
1237 * regs interrupted processor context
1238 */ 1237 */
1239static irqreturn_t mgslpc_isr(int irq, void *dev_id, struct pt_regs * regs) 1238static irqreturn_t mgslpc_isr(int irq, void *dev_id)
1240{ 1239{
1241 MGSLPC_INFO * info = (MGSLPC_INFO *)dev_id; 1240 MGSLPC_INFO * info = (MGSLPC_INFO *)dev_id;
1242 unsigned short isr; 1241 unsigned short isr;
diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c
index 520d2cf82bc0..efc485edad1c 100644
--- a/drivers/char/ppdev.c
+++ b/drivers/char/ppdev.c
@@ -269,7 +269,7 @@ static ssize_t pp_write (struct file * file, const char __user * buf,
269 return bytes_written; 269 return bytes_written;
270} 270}
271 271
272static void pp_irq (int irq, void * private, struct pt_regs * unused) 272static void pp_irq (int irq, void * private)
273{ 273{
274 struct pp_struct * pp = (struct pp_struct *) private; 274 struct pp_struct * pp = (struct pp_struct *) private;
275 275
diff --git a/drivers/char/qtronix.c b/drivers/char/qtronix.c
deleted file mode 100644
index 9d134e98d2a0..000000000000
--- a/drivers/char/qtronix.c
+++ /dev/null
@@ -1,605 +0,0 @@
1/*
2 *
3 * BRIEF MODULE DESCRIPTION
4 * Qtronix 990P infrared keyboard driver.
5 *
6 *
7 * Copyright 2001 MontaVista Software Inc.
8 * Author: MontaVista Software, Inc.
9 * ppopov@mvista.com or source@mvista.com
10 *
11 *
12 * The bottom portion of this driver was take from
13 * pc_keyb.c Please see that file for copyrights.
14 *
15 * This program is free software; you can redistribute it and/or modify it
16 * under the terms of the GNU General Public License as published by the
17 * Free Software Foundation; either version 2 of the License, or (at your
18 * option) any later version.
19 *
20 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
21 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
23 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
27 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 *
31 * You should have received a copy of the GNU General Public License along
32 * with this program; if not, write to the Free Software Foundation, Inc.,
33 * 675 Mass Ave, Cambridge, MA 02139, USA.
34 */
35
36
37/*
38 * NOTE:
39 *
40 * This driver has only been tested with the Consumer IR
41 * port of the ITE 8172 system controller.
42 *
43 * You do not need this driver if you are using the ps/2 or
44 * USB adapter that the keyboard ships with. You only need
45 * this driver if your board has a IR port and the keyboard
46 * data is being sent directly to the IR. In that case,
47 * you also need some low-level IR support. See it8172_cir.c.
48 *
49 */
50
51#ifdef CONFIG_QTRONIX_KEYBOARD
52
53#include <linux/module.h>
54#include <linux/types.h>
55#include <linux/pci.h>
56#include <linux/kernel.h>
57
58#include <asm/it8172/it8172.h>
59#include <asm/it8172/it8172_int.h>
60#include <asm/it8172/it8172_cir.h>
61
62#include <linux/spinlock.h>
63#include <linux/sched.h>
64#include <linux/interrupt.h>
65#include <linux/tty.h>
66#include <linux/mm.h>
67#include <linux/signal.h>
68#include <linux/init.h>
69#include <linux/kbd_ll.h>
70#include <linux/delay.h>
71#include <linux/poll.h>
72#include <linux/miscdevice.h>
73#include <linux/slab.h>
74#include <linux/kbd_kern.h>
75#include <linux/smp_lock.h>
76#include <asm/io.h>
77#include <linux/pc_keyb.h>
78
79#include <asm/keyboard.h>
80#include <linux/bitops.h>
81#include <asm/uaccess.h>
82#include <asm/irq.h>
83#include <asm/system.h>
84
85#define leading1 0
86#define leading2 0xF
87
88#define KBD_CIR_PORT 0
89#define AUX_RECONNECT 170 /* scancode when ps2 device is plugged (back) in */
90
91static int data_index;
92struct cir_port *cir;
93static unsigned char kbdbytes[5];
94static unsigned char cir_data[32]; /* we only need 16 chars */
95
96static void kbd_int_handler(int irq, void *dev_id, struct pt_regs *regs);
97static int handle_data(unsigned char *p_data);
98static inline void handle_mouse_event(unsigned char scancode);
99static inline void handle_keyboard_event(unsigned char scancode, int down);
100static int __init psaux_init(void);
101
102static struct aux_queue *queue; /* Mouse data buffer. */
103static int aux_count = 0;
104
105/*
106 * Keys accessed through the 'Fn' key
107 * The Fn key does not produce a key-up sequence. So, the first
108 * time the user presses it, it will be key-down event. The key
109 * stays down until the user presses it again.
110 */
111#define NUM_FN_KEYS 56
112static unsigned char fn_keys[NUM_FN_KEYS] = {
113 0,0,0,0,0,0,0,0, /* 0 7 */
114 8,9,10,93,0,0,0,0, /* 8 15 */
115 0,0,0,0,0,0,0,5, /* 16 23 */
116 6,7,91,0,0,0,0,0, /* 24 31 */
117 0,0,0,0,0,2,3,4, /* 32 39 */
118 92,0,0,0,0,0,0,0, /* 40 47 */
119 0,0,0,0,11,0,94,95 /* 48 55 */
120
121};
122
123void __init init_qtronix_990P_kbd(void)
124{
125 int retval;
126
127 cir = (struct cir_port *)kmalloc(sizeof(struct cir_port), GFP_KERNEL);
128 if (!cir) {
129 printk("Unable to initialize Qtronix keyboard\n");
130 return;
131 }
132
133 /*
134 * revisit
135 * this should be programmable, somehow by the, by the user.
136 */
137 cir->port = KBD_CIR_PORT;
138 cir->baud_rate = 0x1d;
139 cir->rdwos = 0;
140 cir->rxdcr = 0x3;
141 cir->hcfs = 0;
142 cir->fifo_tl = 0;
143 cir->cfq = 0x1d;
144 cir_port_init(cir);
145
146 retval = request_irq(IT8172_CIR0_IRQ, kbd_int_handler,
147 (unsigned long )(IRQF_DISABLED|IRQF_SHARED),
148 (const char *)"Qtronix IR Keyboard", (void *)cir);
149
150 if (retval) {
151 printk("unable to allocate cir %d irq %d\n",
152 cir->port, IT8172_CIR0_IRQ);
153 }
154#ifdef CONFIG_PSMOUSE
155 psaux_init();
156#endif
157}
158
159static inline unsigned char BitReverse(unsigned short key)
160{
161 unsigned char rkey = 0;
162 rkey |= (key & 0x1) << 7;
163 rkey |= (key & 0x2) << 5;
164 rkey |= (key & 0x4) << 3;
165 rkey |= (key & 0x8) << 1;
166 rkey |= (key & 0x10) >> 1;
167 rkey |= (key & 0x20) >> 3;
168 rkey |= (key & 0x40) >> 5;
169 rkey |= (key & 0x80) >> 7;
170 return rkey;
171
172}
173
174
175static inline u_int8_t UpperByte(u_int8_t data)
176{
177 return (data >> 4);
178}
179
180
181static inline u_int8_t LowerByte(u_int8_t data)
182{
183 return (data & 0xF);
184}
185
186
187int CheckSumOk(u_int8_t byte1, u_int8_t byte2,
188 u_int8_t byte3, u_int8_t byte4, u_int8_t byte5)
189{
190 u_int8_t CheckSum;
191
192 CheckSum = (byte1 & 0x0F) + byte2 + byte3 + byte4 + byte5;
193 if ( LowerByte(UpperByte(CheckSum) + LowerByte(CheckSum)) != UpperByte(byte1) )
194 return 0;
195 else
196 return 1;
197}
198
199
200static void kbd_int_handler(int irq, void *dev_id, struct pt_regs *regs)
201{
202 struct cir_port *cir;
203 int j;
204 unsigned char int_status;
205
206 cir = (struct cir_port *)dev_id;
207 int_status = get_int_status(cir);
208 if (int_status & 0x4) {
209 clear_fifo(cir);
210 return;
211 }
212
213 while (cir_get_rx_count(cir)) {
214
215 cir_data[data_index] = cir_read_data(cir);
216
217 if (data_index == 0) {/* expecting first byte */
218 if (cir_data[data_index] != leading1) {
219 //printk("!leading byte %x\n", cir_data[data_index]);
220 set_rx_active(cir);
221 clear_fifo(cir);
222 continue;
223 }
224 }
225 if (data_index == 1) {
226 if ((cir_data[data_index] & 0xf) != leading2) {
227 set_rx_active(cir);
228 data_index = 0; /* start over */
229 clear_fifo(cir);
230 continue;
231 }
232 }
233
234 if ( (cir_data[data_index] == 0xff)) { /* last byte */
235 //printk("data_index %d\n", data_index);
236 set_rx_active(cir);
237#if 0
238 for (j=0; j<=data_index; j++) {
239 printk("rx_data %d: %x\n", j, cir_data[j]);
240 }
241#endif
242 data_index = 0;
243 handle_data(cir_data);
244 return;
245 }
246 else if (data_index>16) {
247 set_rx_active(cir);
248#if 0
249 printk("warning: data_index %d\n", data_index);
250 for (j=0; j<=data_index; j++) {
251 printk("rx_data %d: %x\n", j, cir_data[j]);
252 }
253#endif
254 data_index = 0;
255 clear_fifo(cir);
256 return;
257 }
258 data_index++;
259 }
260}
261
262
263#define NUM_KBD_BYTES 5
264static int handle_data(unsigned char *p_data)
265{
266 u_int32_t bit_bucket;
267 u_int32_t i, j;
268 u_int32_t got_bits, next_byte;
269 int down = 0;
270
271 /* Reorganize the bit stream */
272 for (i=0; i<16; i++)
273 p_data[i] = BitReverse(~p_data[i]);
274
275 /*
276 * We've already previously checked that p_data[0]
277 * is equal to leading1 and that (p_data[1] & 0xf)
278 * is equal to leading2. These twelve bits are the
279 * leader code. We can now throw them away (the 12
280 * bits) and continue parsing the stream.
281 */
282 bit_bucket = p_data[1] << 12;
283 got_bits = 4;
284 next_byte = 2;
285
286 /*
287 * Process four bits at a time
288 */
289 for (i=0; i<NUM_KBD_BYTES; i++) {
290
291 kbdbytes[i]=0;
292
293 for (j=0; j<8; j++) /* 8 bits per byte */
294 {
295 if (got_bits < 4) {
296 bit_bucket |= (p_data[next_byte++] << (8 - got_bits));
297 got_bits += 8;
298 }
299
300 if ((bit_bucket & 0xF000) == 0x8000) {
301 /* Convert 1000b to 1 */
302 kbdbytes[i] = 0x80 | (kbdbytes[i] >> 1);
303 got_bits -= 4;
304 bit_bucket = bit_bucket << 4;
305 }
306 else if ((bit_bucket & 0xC000) == 0x8000) {
307 /* Convert 10b to 0 */
308 kbdbytes[i] = kbdbytes[i] >> 1;
309 got_bits -= 2;
310 bit_bucket = bit_bucket << 2;
311 }
312 else {
313 /* bad serial stream */
314 return 1;
315 }
316
317 if (next_byte > 16) {
318 //printk("error: too many bytes\n");
319 return 1;
320 }
321 }
322 }
323
324
325 if (!CheckSumOk(kbdbytes[0], kbdbytes[1],
326 kbdbytes[2], kbdbytes[3], kbdbytes[4])) {
327 //printk("checksum failed\n");
328 return 1;
329 }
330
331 if (kbdbytes[1] & 0x08) {
332 //printk("m: %x %x %x\n", kbdbytes[1], kbdbytes[2], kbdbytes[3]);
333 handle_mouse_event(kbdbytes[1]);
334 handle_mouse_event(kbdbytes[2]);
335 handle_mouse_event(kbdbytes[3]);
336 }
337 else {
338 if (kbdbytes[2] == 0) down = 1;
339#if 0
340 if (down)
341 printk("down %d\n", kbdbytes[3]);
342 else
343 printk("up %d\n", kbdbytes[3]);
344#endif
345 handle_keyboard_event(kbdbytes[3], down);
346 }
347 return 0;
348}
349
350
351DEFINE_SPINLOCK(kbd_controller_lock);
352static unsigned char handle_kbd_event(void);
353
354
355int kbd_setkeycode(unsigned int scancode, unsigned int keycode)
356{
357 printk("kbd_setkeycode scancode %x keycode %x\n", scancode, keycode);
358 return 0;
359}
360
361int kbd_getkeycode(unsigned int scancode)
362{
363 return scancode;
364}
365
366
367int kbd_translate(unsigned char scancode, unsigned char *keycode,
368 char raw_mode)
369{
370 static int prev_scancode = 0;
371
372 if (scancode == 0x00 || scancode == 0xff) {
373 prev_scancode = 0;
374 return 0;
375 }
376
377 /* todo */
378 if (!prev_scancode && scancode == 160) { /* Fn key down */
379 //printk("Fn key down\n");
380 prev_scancode = 160;
381 return 0;
382 }
383 else if (prev_scancode && scancode == 160) { /* Fn key up */
384 //printk("Fn key up\n");
385 prev_scancode = 0;
386 return 0;
387 }
388
389 /* todo */
390 if (prev_scancode == 160) {
391 if (scancode <= NUM_FN_KEYS) {
392 *keycode = fn_keys[scancode];
393 //printk("fn keycode %d\n", *keycode);
394 }
395 else
396 return 0;
397 }
398 else if (scancode <= 127) {
399 *keycode = scancode;
400 }
401 else
402 return 0;
403
404
405 return 1;
406}
407
408char kbd_unexpected_up(unsigned char keycode)
409{
410 //printk("kbd_unexpected_up\n");
411 return 0;
412}
413
414static unsigned char kbd_exists = 1;
415
416static inline void handle_keyboard_event(unsigned char scancode, int down)
417{
418 kbd_exists = 1;
419 handle_scancode(scancode, down);
420 tasklet_schedule(&keyboard_tasklet);
421}
422
423
424void kbd_leds(unsigned char leds)
425{
426}
427
428/* dummy */
429void kbd_init_hw(void)
430{
431}
432
433
434
435static inline void handle_mouse_event(unsigned char scancode)
436{
437 if(scancode == AUX_RECONNECT){
438 queue->head = queue->tail = 0; /* Flush input queue */
439 // __aux_write_ack(AUX_ENABLE_DEV); /* ping the mouse :) */
440 return;
441 }
442
443 if (aux_count) {
444 int head = queue->head;
445
446 queue->buf[head] = scancode;
447 head = (head + 1) & (AUX_BUF_SIZE-1);
448 if (head != queue->tail) {
449 queue->head = head;
450 kill_fasync(&queue->fasync, SIGIO, POLL_IN);
451 wake_up_interruptible(&queue->proc_list);
452 }
453 }
454}
455
456static unsigned char get_from_queue(void)
457{
458 unsigned char result;
459 unsigned long flags;
460
461 spin_lock_irqsave(&kbd_controller_lock, flags);
462 result = queue->buf[queue->tail];
463 queue->tail = (queue->tail + 1) & (AUX_BUF_SIZE-1);
464 spin_unlock_irqrestore(&kbd_controller_lock, flags);
465 return result;
466}
467
468
469static inline int queue_empty(void)
470{
471 return queue->head == queue->tail;
472}
473
474static int fasync_aux(int fd, struct file *filp, int on)
475{
476 int retval;
477
478 //printk("fasync_aux\n");
479 retval = fasync_helper(fd, filp, on, &queue->fasync);
480 if (retval < 0)
481 return retval;
482 return 0;
483}
484
485
486/*
487 * Random magic cookie for the aux device
488 */
489#define AUX_DEV ((void *)queue)
490
491static int release_aux(struct inode * inode, struct file * file)
492{
493 fasync_aux(-1, file, 0);
494 aux_count--;
495 return 0;
496}
497
498static int open_aux(struct inode * inode, struct file * file)
499{
500 if (aux_count++) {
501 return 0;
502 }
503 queue->head = queue->tail = 0; /* Flush input queue */
504 return 0;
505}
506
507/*
508 * Put bytes from input queue to buffer.
509 */
510
511static ssize_t read_aux(struct file * file, char * buffer,
512 size_t count, loff_t *ppos)
513{
514 DECLARE_WAITQUEUE(wait, current);
515 ssize_t i = count;
516 unsigned char c;
517
518 if (queue_empty()) {
519 if (file->f_flags & O_NONBLOCK)
520 return -EAGAIN;
521 add_wait_queue(&queue->proc_list, &wait);
522repeat:
523 set_current_state(TASK_INTERRUPTIBLE);
524 if (queue_empty() && !signal_pending(current)) {
525 schedule();
526 goto repeat;
527 }
528 current->state = TASK_RUNNING;
529 remove_wait_queue(&queue->proc_list, &wait);
530 }
531 while (i > 0 && !queue_empty()) {
532 c = get_from_queue();
533 put_user(c, buffer++);
534 i--;
535 }
536 if (count-i) {
537 struct inode *inode = file->f_dentry->d_inode;
538 inode->i_atime = current_fs_time(inode->i_sb);
539 return count-i;
540 }
541 if (signal_pending(current))
542 return -ERESTARTSYS;
543 return 0;
544}
545
546/*
547 * Write to the aux device.
548 */
549
550static ssize_t write_aux(struct file * file, const char * buffer,
551 size_t count, loff_t *ppos)
552{
553 /*
554 * The ITE boards this was tested on did not have the
555 * transmit wires connected.
556 */
557 return count;
558}
559
560static unsigned int aux_poll(struct file *file, poll_table * wait)
561{
562 poll_wait(file, &queue->proc_list, wait);
563 if (!queue_empty())
564 return POLLIN | POLLRDNORM;
565 return 0;
566}
567
568struct file_operations psaux_fops = {
569 .read = read_aux,
570 .write = write_aux,
571 .poll = aux_poll,
572 .open = open_aux,
573 .release = release_aux,
574 .fasync = fasync_aux,
575};
576
577/*
578 * Initialize driver.
579 */
580static struct miscdevice psaux_mouse = {
581 PSMOUSE_MINOR, "psaux", &psaux_fops
582};
583
584static int __init psaux_init(void)
585{
586 int retval;
587
588 retval = misc_register(&psaux_mouse);
589 if(retval < 0)
590 return retval;
591
592 queue = (struct aux_queue *) kmalloc(sizeof(*queue), GFP_KERNEL);
593 if (!queue) {
594 misc_deregister(&psaux_mouse);
595 return -ENOMEM;
596 }
597
598 memset(queue, 0, sizeof(*queue));
599 queue->head = queue->tail = 0;
600 init_waitqueue_head(&queue->proc_list);
601
602 return 0;
603}
604module_init(init_qtronix_990P_kbd);
605#endif
diff --git a/drivers/char/rio/func.h b/drivers/char/rio/func.h
index 6b039186856d..9e7283bd81a0 100644
--- a/drivers/char/rio/func.h
+++ b/drivers/char/rio/func.h
@@ -88,7 +88,7 @@ void RIOHostReset(unsigned int, struct DpRam __iomem *, unsigned int);
88 88
89/* riointr.c */ 89/* riointr.c */
90void RIOTxEnable(char *); 90void RIOTxEnable(char *);
91void RIOServiceHost(struct rio_info *, struct Host *, int); 91void RIOServiceHost(struct rio_info *, struct Host *);
92int riotproc(struct rio_info *, struct ttystatics *, int, int); 92int riotproc(struct rio_info *, struct ttystatics *, int, int);
93 93
94/* rioparam.c */ 94/* rioparam.c */
diff --git a/drivers/char/rio/rio_linux.c b/drivers/char/rio/rio_linux.c
index 202a3b0945b7..c382df0f82f6 100644
--- a/drivers/char/rio/rio_linux.c
+++ b/drivers/char/rio/rio_linux.c
@@ -363,12 +363,12 @@ static void rio_reset_interrupt(struct Host *HostP)
363} 363}
364 364
365 365
366static irqreturn_t rio_interrupt(int irq, void *ptr, struct pt_regs *regs) 366static irqreturn_t rio_interrupt(int irq, void *ptr)
367{ 367{
368 struct Host *HostP; 368 struct Host *HostP;
369 func_enter(); 369 func_enter();
370 370
371 HostP = (struct Host *) ptr; /* &p->RIOHosts[(long)ptr]; */ 371 HostP = ptr; /* &p->RIOHosts[(long)ptr]; */
372 rio_dprintk(RIO_DEBUG_IFLOW, "rio: enter rio_interrupt (%d/%d)\n", irq, HostP->Ivec); 372 rio_dprintk(RIO_DEBUG_IFLOW, "rio: enter rio_interrupt (%d/%d)\n", irq, HostP->Ivec);
373 373
374 /* AAargh! The order in which to do these things is essential and 374 /* AAargh! The order in which to do these things is essential and
@@ -402,7 +402,7 @@ static irqreturn_t rio_interrupt(int irq, void *ptr, struct pt_regs *regs)
402 return IRQ_HANDLED; 402 return IRQ_HANDLED;
403 } 403 }
404 404
405 RIOServiceHost(p, HostP, irq); 405 RIOServiceHost(p, HostP);
406 406
407 rio_dprintk(RIO_DEBUG_IFLOW, "riointr() doing host %p type %d\n", ptr, HostP->Type); 407 rio_dprintk(RIO_DEBUG_IFLOW, "riointr() doing host %p type %d\n", ptr, HostP->Type);
408 408
@@ -417,7 +417,7 @@ static void rio_pollfunc(unsigned long data)
417{ 417{
418 func_enter(); 418 func_enter();
419 419
420 rio_interrupt(0, &p->RIOHosts[data], NULL); 420 rio_interrupt(0, &p->RIOHosts[data]);
421 p->RIOHosts[data].timer.expires = jiffies + rio_poll; 421 p->RIOHosts[data].timer.expires = jiffies + rio_poll;
422 add_timer(&p->RIOHosts[data].timer); 422 add_timer(&p->RIOHosts[data].timer);
423 423
diff --git a/drivers/char/rio/riointr.c b/drivers/char/rio/riointr.c
index 0bd09040a5c0..eeda40c5e189 100644
--- a/drivers/char/rio/riointr.c
+++ b/drivers/char/rio/riointr.c
@@ -181,7 +181,7 @@ static int RupIntr;
181static int RxIntr; 181static int RxIntr;
182static int TxIntr; 182static int TxIntr;
183 183
184void RIOServiceHost(struct rio_info *p, struct Host *HostP, int From) 184void RIOServiceHost(struct rio_info *p, struct Host *HostP)
185{ 185{
186 rio_spin_lock(&HostP->HostLock); 186 rio_spin_lock(&HostP->HostLock);
187 if ((HostP->Flags & RUN_STATE) != RC_RUNNING) { 187 if ((HostP->Flags & RUN_STATE) != RC_RUNNING) {
diff --git a/drivers/char/riscom8.c b/drivers/char/riscom8.c
index b0ab3f28cc6a..5ab32b38f45a 100644
--- a/drivers/char/riscom8.c
+++ b/drivers/char/riscom8.c
@@ -550,7 +550,7 @@ static inline void rc_check_modem(struct riscom_board const * bp)
550} 550}
551 551
552/* The main interrupt processing routine */ 552/* The main interrupt processing routine */
553static irqreturn_t rc_interrupt(int irq, void * dev_id, struct pt_regs * regs) 553static irqreturn_t rc_interrupt(int irq, void * dev_id)
554{ 554{
555 unsigned char status; 555 unsigned char status;
556 unsigned char ack; 556 unsigned char ack;
@@ -559,11 +559,10 @@ static irqreturn_t rc_interrupt(int irq, void * dev_id, struct pt_regs * regs)
559 int handled = 0; 559 int handled = 0;
560 560
561 bp = IRQ_to_board[irq]; 561 bp = IRQ_to_board[irq];
562 562
563 if (!bp || !(bp->flags & RC_BOARD_ACTIVE)) { 563 if (!(bp->flags & RC_BOARD_ACTIVE))
564 return IRQ_NONE; 564 return IRQ_NONE;
565 } 565
566
567 while ((++loop < 16) && ((status = ~(rc_in(bp, RC_BSR))) & 566 while ((++loop < 16) && ((status = ~(rc_in(bp, RC_BSR))) &
568 (RC_BSR_TOUT | RC_BSR_TINT | 567 (RC_BSR_TOUT | RC_BSR_TINT |
569 RC_BSR_MINT | RC_BSR_RINT))) { 568 RC_BSR_MINT | RC_BSR_RINT))) {
diff --git a/drivers/char/rtc.c b/drivers/char/rtc.c
index 656f8c0ca52e..66a7385bc34a 100644
--- a/drivers/char/rtc.c
+++ b/drivers/char/rtc.c
@@ -35,13 +35,13 @@
35 * 1.09a Pete Zaitcev: Sun SPARC 35 * 1.09a Pete Zaitcev: Sun SPARC
36 * 1.09b Jeff Garzik: Modularize, init cleanup 36 * 1.09b Jeff Garzik: Modularize, init cleanup
37 * 1.09c Jeff Garzik: SMP cleanup 37 * 1.09c Jeff Garzik: SMP cleanup
38 * 1.10 Paul Barton-Davis: add support for async I/O 38 * 1.10 Paul Barton-Davis: add support for async I/O
39 * 1.10a Andrea Arcangeli: Alpha updates 39 * 1.10a Andrea Arcangeli: Alpha updates
40 * 1.10b Andrew Morton: SMP lock fix 40 * 1.10b Andrew Morton: SMP lock fix
41 * 1.10c Cesar Barros: SMP locking fixes and cleanup 41 * 1.10c Cesar Barros: SMP locking fixes and cleanup
42 * 1.10d Paul Gortmaker: delete paranoia check in rtc_exit 42 * 1.10d Paul Gortmaker: delete paranoia check in rtc_exit
43 * 1.10e Maciej W. Rozycki: Handle DECstation's year weirdness. 43 * 1.10e Maciej W. Rozycki: Handle DECstation's year weirdness.
44 * 1.11 Takashi Iwai: Kernel access functions 44 * 1.11 Takashi Iwai: Kernel access functions
45 * rtc_register/rtc_unregister/rtc_control 45 * rtc_register/rtc_unregister/rtc_control
46 * 1.11a Daniele Bellucci: Audit create_proc_read_entry in rtc_init 46 * 1.11a Daniele Bellucci: Audit create_proc_read_entry in rtc_init
47 * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer 47 * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer
@@ -113,9 +113,9 @@ static int rtc_has_irq = 1;
113#define hpet_set_rtc_irq_bit(arg) 0 113#define hpet_set_rtc_irq_bit(arg) 0
114#define hpet_rtc_timer_init() do { } while (0) 114#define hpet_rtc_timer_init() do { } while (0)
115#define hpet_rtc_dropped_irq() 0 115#define hpet_rtc_dropped_irq() 0
116static inline irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) {return 0;} 116static inline irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id) {return 0;}
117#else 117#else
118extern irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs); 118extern irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id);
119#endif 119#endif
120 120
121/* 121/*
@@ -229,7 +229,7 @@ static inline unsigned char rtc_is_updating(void)
229 * (See ./arch/XXXX/kernel/time.c for the set_rtc_mmss() function.) 229 * (See ./arch/XXXX/kernel/time.c for the set_rtc_mmss() function.)
230 */ 230 */
231 231
232irqreturn_t rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 232irqreturn_t rtc_interrupt(int irq, void *dev_id)
233{ 233{
234 /* 234 /*
235 * Can be an alarm interrupt, update complete interrupt, 235 * Can be an alarm interrupt, update complete interrupt,
@@ -915,7 +915,7 @@ static const struct file_operations rtc_proc_fops = {
915}; 915};
916 916
917#if defined(RTC_IRQ) && !defined(__sparc__) 917#if defined(RTC_IRQ) && !defined(__sparc__)
918static irqreturn_t (*rtc_int_handler_ptr)(int irq, void *dev_id, struct pt_regs *regs); 918static irq_handler_t rtc_int_handler_ptr;
919#endif 919#endif
920 920
921static int __init rtc_init(void) 921static int __init rtc_init(void)
diff --git a/drivers/char/ser_a2232.c b/drivers/char/ser_a2232.c
index 65c751d0d643..4217d38caef9 100644
--- a/drivers/char/ser_a2232.c
+++ b/drivers/char/ser_a2232.c
@@ -111,7 +111,7 @@
111 111
112/***************************** Prototypes ***************************/ 112/***************************** Prototypes ***************************/
113/* The interrupt service routine */ 113/* The interrupt service routine */
114static irqreturn_t a2232_vbl_inter(int irq, void *data, struct pt_regs *fp); 114static irqreturn_t a2232_vbl_inter(int irq, void *data);
115/* Initialize the port structures */ 115/* Initialize the port structures */
116static void a2232_init_portstructs(void); 116static void a2232_init_portstructs(void);
117/* Initialize and register TTY drivers. */ 117/* Initialize and register TTY drivers. */
@@ -504,7 +504,7 @@ static int a2232_open(struct tty_struct * tty, struct file * filp)
504} 504}
505/*** END OF FUNCTIONS EXPECTED BY TTY DRIVER STRUCTS ***/ 505/*** END OF FUNCTIONS EXPECTED BY TTY DRIVER STRUCTS ***/
506 506
507static irqreturn_t a2232_vbl_inter(int irq, void *data, struct pt_regs *fp) 507static irqreturn_t a2232_vbl_inter(int irq, void *data)
508{ 508{
509#if A2232_IOBUFLEN != 256 509#if A2232_IOBUFLEN != 256
510#error "Re-Implement a2232_vbl_inter()!" 510#error "Re-Implement a2232_vbl_inter()!"
diff --git a/drivers/char/serial167.c b/drivers/char/serial167.c
index f4809c8183cc..461bfe0234c9 100644
--- a/drivers/char/serial167.c
+++ b/drivers/char/serial167.c
@@ -62,6 +62,7 @@
62#include <linux/console.h> 62#include <linux/console.h>
63#include <linux/module.h> 63#include <linux/module.h>
64#include <linux/bitops.h> 64#include <linux/bitops.h>
65#include <linux/tty_flip.h>
65 66
66#include <asm/system.h> 67#include <asm/system.h>
67#include <asm/io.h> 68#include <asm/io.h>
@@ -370,7 +371,7 @@ cy_sched_event(struct cyclades_port *info, int event)
370 received, out buffer empty, modem change, etc. 371 received, out buffer empty, modem change, etc.
371 */ 372 */
372static irqreturn_t 373static irqreturn_t
373cd2401_rxerr_interrupt(int irq, void *dev_id, struct pt_regs *fp) 374cd2401_rxerr_interrupt(int irq, void *dev_id)
374{ 375{
375 struct tty_struct *tty; 376 struct tty_struct *tty;
376 struct cyclades_port *info; 377 struct cyclades_port *info;
@@ -427,8 +428,9 @@ cd2401_rxerr_interrupt(int irq, void *dev_id, struct pt_regs *fp)
427 overflowing, we still loose 428 overflowing, we still loose
428 the next incoming character. 429 the next incoming character.
429 */ 430 */
430 tty_insert_flip_char(tty, data, TTY_NORMAL); 431 if (tty_buffer_request_room(tty, 1) != 0){
431 } 432 tty_insert_flip_char(tty, data, TTY_FRAME);
433 }
432 /* These two conditions may imply */ 434 /* These two conditions may imply */
433 /* a normal read should be done. */ 435 /* a normal read should be done. */
434 /* else if(data & CyTIMEOUT) */ 436 /* else if(data & CyTIMEOUT) */
@@ -437,21 +439,21 @@ cd2401_rxerr_interrupt(int irq, void *dev_id, struct pt_regs *fp)
437 tty_insert_flip_char(tty, 0, TTY_NORMAL); 439 tty_insert_flip_char(tty, 0, TTY_NORMAL);
438 } 440 }
439 }else{ 441 }else{
440 tty_insert_flip_char(tty, data, TTY_NORMAL); 442 tty_insert_flip_char(tty, data, TTY_NORMAL);
441 } 443 }
442 }else{ 444 }else{
443 /* there was a software buffer overrun 445 /* there was a software buffer overrun
444 and nothing could be done about it!!! */ 446 and nothing could be done about it!!! */
445 } 447 }
446 } 448 }
447 schedule_delayed_work(&tty->flip.work, 1); 449 tty_schedule_flip(tty);
448 /* end of service */ 450 /* end of service */
449 base_addr[CyREOIR] = rfoc ? 0 : CyNOTRANS; 451 base_addr[CyREOIR] = rfoc ? 0 : CyNOTRANS;
450 return IRQ_HANDLED; 452 return IRQ_HANDLED;
451} /* cy_rxerr_interrupt */ 453} /* cy_rxerr_interrupt */
452 454
453static irqreturn_t 455static irqreturn_t
454cd2401_modem_interrupt(int irq, void *dev_id, struct pt_regs *fp) 456cd2401_modem_interrupt(int irq, void *dev_id)
455{ 457{
456 struct cyclades_port *info; 458 struct cyclades_port *info;
457 volatile unsigned char *base_addr = (unsigned char *)BASE_ADDR; 459 volatile unsigned char *base_addr = (unsigned char *)BASE_ADDR;
@@ -506,7 +508,7 @@ cd2401_modem_interrupt(int irq, void *dev_id, struct pt_regs *fp)
506} /* cy_modem_interrupt */ 508} /* cy_modem_interrupt */
507 509
508static irqreturn_t 510static irqreturn_t
509cd2401_tx_interrupt(int irq, void *dev_id, struct pt_regs *fp) 511cd2401_tx_interrupt(int irq, void *dev_id)
510{ 512{
511 struct cyclades_port *info; 513 struct cyclades_port *info;
512 volatile unsigned char *base_addr = (unsigned char *)BASE_ADDR; 514 volatile unsigned char *base_addr = (unsigned char *)BASE_ADDR;
@@ -626,7 +628,7 @@ cd2401_tx_interrupt(int irq, void *dev_id, struct pt_regs *fp)
626} /* cy_tx_interrupt */ 628} /* cy_tx_interrupt */
627 629
628static irqreturn_t 630static irqreturn_t
629cd2401_rx_interrupt(int irq, void *dev_id, struct pt_regs *fp) 631cd2401_rx_interrupt(int irq, void *dev_id)
630{ 632{
631 struct tty_struct *tty; 633 struct tty_struct *tty;
632 struct cyclades_port *info; 634 struct cyclades_port *info;
@@ -635,6 +637,7 @@ cd2401_rx_interrupt(int irq, void *dev_id, struct pt_regs *fp)
635 char data; 637 char data;
636 int char_count; 638 int char_count;
637 int save_cnt; 639 int save_cnt;
640 int len;
638 641
639 /* determine the channel and change to that context */ 642 /* determine the channel and change to that context */
640 channel = (u_short ) (base_addr[CyLICR] >> 2); 643 channel = (u_short ) (base_addr[CyLICR] >> 2);
@@ -667,14 +670,15 @@ cd2401_rx_interrupt(int irq, void *dev_id, struct pt_regs *fp)
667 info->mon.char_max = char_count; 670 info->mon.char_max = char_count;
668 info->mon.char_last = char_count; 671 info->mon.char_last = char_count;
669#endif 672#endif
670 while(char_count--){ 673 len = tty_buffer_request_room(tty, char_count);
674 while(len--){
671 data = base_addr[CyRDR]; 675 data = base_addr[CyRDR];
672 tty_insert_flip_char(tty, data, TTY_NORMAL); 676 tty_insert_flip_char(tty, data, TTY_NORMAL);
673#ifdef CYCLOM_16Y_HACK 677#ifdef CYCLOM_16Y_HACK
674 udelay(10L); 678 udelay(10L);
675#endif 679#endif
676 } 680 }
677 schedule_delayed_work(&tty->flip.work, 1); 681 tty_schedule_flip(tty);
678 } 682 }
679 /* end of service */ 683 /* end of service */
680 base_addr[CyREOIR] = save_cnt ? 0 : CyNOTRANS; 684 base_addr[CyREOIR] = save_cnt ? 0 : CyNOTRANS;
@@ -1422,7 +1426,6 @@ cy_tiocmget(struct tty_struct *tty, struct file *file)
1422 volatile unsigned char *base_addr = (u_char *)BASE_ADDR; 1426 volatile unsigned char *base_addr = (u_char *)BASE_ADDR;
1423 unsigned long flags; 1427 unsigned long flags;
1424 unsigned char status; 1428 unsigned char status;
1425 unsigned int result;
1426 1429
1427 channel = info->line; 1430 channel = info->line;
1428 1431
@@ -1446,7 +1449,6 @@ cy_tiocmset(struct tty_struct *tty, struct file *file,
1446 int channel; 1449 int channel;
1447 volatile unsigned char *base_addr = (u_char *)BASE_ADDR; 1450 volatile unsigned char *base_addr = (u_char *)BASE_ADDR;
1448 unsigned long flags; 1451 unsigned long flags;
1449 unsigned int arg;
1450 1452
1451 channel = info->line; 1453 channel = info->line;
1452 1454
diff --git a/drivers/char/snsc.c b/drivers/char/snsc.c
index 07e0b75f2338..52753e723eaa 100644
--- a/drivers/char/snsc.c
+++ b/drivers/char/snsc.c
@@ -34,7 +34,7 @@
34#define SCDRV_TIMEOUT 1000 34#define SCDRV_TIMEOUT 1000
35 35
36static irqreturn_t 36static irqreturn_t
37scdrv_interrupt(int irq, void *subch_data, struct pt_regs *regs) 37scdrv_interrupt(int irq, void *subch_data)
38{ 38{
39 struct subch_data_s *sd = subch_data; 39 struct subch_data_s *sd = subch_data;
40 unsigned long flags; 40 unsigned long flags;
diff --git a/drivers/char/snsc_event.c b/drivers/char/snsc_event.c
index 864854c58866..2f56e8c54897 100644
--- a/drivers/char/snsc_event.c
+++ b/drivers/char/snsc_event.c
@@ -36,7 +36,7 @@ DECLARE_TASKLET(sn_sysctl_event, scdrv_event, 0);
36 * destination. 36 * destination.
37 */ 37 */
38static irqreturn_t 38static irqreturn_t
39scdrv_event_interrupt(int irq, void *subch_data, struct pt_regs *regs) 39scdrv_event_interrupt(int irq, void *subch_data)
40{ 40{
41 struct subch_data_s *sd = subch_data; 41 struct subch_data_s *sd = subch_data;
42 unsigned long flags; 42 unsigned long flags;
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c
index d4e434d694b7..c084149153de 100644
--- a/drivers/char/sonypi.c
+++ b/drivers/char/sonypi.c
@@ -826,7 +826,7 @@ static void sonypi_report_input_event(u8 event)
826} 826}
827 827
828/* Interrupt handler: some event is available */ 828/* Interrupt handler: some event is available */
829static irqreturn_t sonypi_irq(int irq, void *dev_id, struct pt_regs *regs) 829static irqreturn_t sonypi_irq(int irq, void *dev_id)
830{ 830{
831 u8 v1, v2, event = 0; 831 u8 v1, v2, event = 0;
832 int i, j; 832 int i, j;
diff --git a/drivers/char/specialix.c b/drivers/char/specialix.c
index 902c48dca3bc..d0b88d0e87fd 100644
--- a/drivers/char/specialix.c
+++ b/drivers/char/specialix.c
@@ -200,7 +200,7 @@ static struct specialix_port sx_port[SX_NBOARD * SX_NPORT];
200 200
201#ifdef SPECIALIX_TIMER 201#ifdef SPECIALIX_TIMER
202static struct timer_list missed_irq_timer; 202static struct timer_list missed_irq_timer;
203static irqreturn_t sx_interrupt(int irq, void * dev_id, struct pt_regs * regs); 203static irqreturn_t sx_interrupt(int irq, void * dev_id);
204#endif 204#endif
205 205
206 206
@@ -897,7 +897,7 @@ static inline void sx_check_modem(struct specialix_board * bp)
897 897
898 898
899/* The main interrupt processing routine */ 899/* The main interrupt processing routine */
900static irqreturn_t sx_interrupt(int irq, void *dev_id, struct pt_regs *regs) 900static irqreturn_t sx_interrupt(int irq, void *dev_id)
901{ 901{
902 unsigned char status; 902 unsigned char status;
903 unsigned char ack; 903 unsigned char ack;
@@ -912,7 +912,7 @@ static irqreturn_t sx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
912 spin_lock_irqsave(&bp->lock, flags); 912 spin_lock_irqsave(&bp->lock, flags);
913 913
914 dprintk (SX_DEBUG_FLOW, "enter %s port %d room: %ld\n", __FUNCTION__, port_No(sx_get_port(bp, "INT")), SERIAL_XMIT_SIZE - sx_get_port(bp, "ITN")->xmit_cnt - 1); 914 dprintk (SX_DEBUG_FLOW, "enter %s port %d room: %ld\n", __FUNCTION__, port_No(sx_get_port(bp, "INT")), SERIAL_XMIT_SIZE - sx_get_port(bp, "ITN")->xmit_cnt - 1);
915 if (!bp || !(bp->flags & SX_BOARD_ACTIVE)) { 915 if (!(bp->flags & SX_BOARD_ACTIVE)) {
916 dprintk (SX_DEBUG_IRQ, "sx: False interrupt. irq %d.\n", irq); 916 dprintk (SX_DEBUG_IRQ, "sx: False interrupt. irq %d.\n", irq);
917 spin_unlock_irqrestore(&bp->lock, flags); 917 spin_unlock_irqrestore(&bp->lock, flags);
918 func_exit(); 918 func_exit();
diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c
index bd711537ec4e..522e88e395cc 100644
--- a/drivers/char/stallion.c
+++ b/drivers/char/stallion.c
@@ -1927,13 +1927,12 @@ stl_readdone:
1927 * calls off to the approrpriate board interrupt handlers. 1927 * calls off to the approrpriate board interrupt handlers.
1928 */ 1928 */
1929 1929
1930static irqreturn_t stl_intr(int irq, void *dev_id, struct pt_regs *regs) 1930static irqreturn_t stl_intr(int irq, void *dev_id)
1931{ 1931{
1932 stlbrd_t *brdp = (stlbrd_t *) dev_id; 1932 stlbrd_t *brdp = (stlbrd_t *) dev_id;
1933 1933
1934#ifdef DEBUG 1934#ifdef DEBUG
1935 printk("stl_intr(brdp=%x,irq=%d,regs=%x)\n", (int) brdp, irq, 1935 printk("stl_intr(brdp=%x,irq=%d)\n", (int) brdp, irq);
1936 (int) regs);
1937#endif 1936#endif
1938 1937
1939 return IRQ_RETVAL((* brdp->isr)(brdp)); 1938 return IRQ_RETVAL((* brdp->isr)(brdp));
diff --git a/drivers/char/sx.c b/drivers/char/sx.c
index 8fd71a5fc619..5fec626598cd 100644
--- a/drivers/char/sx.c
+++ b/drivers/char/sx.c
@@ -1192,7 +1192,7 @@ static inline void sx_check_modem_signals (struct sx_port *port)
1192 * Small, elegant, clear. 1192 * Small, elegant, clear.
1193 */ 1193 */
1194 1194
1195static irqreturn_t sx_interrupt (int irq, void *ptr, struct pt_regs *regs) 1195static irqreturn_t sx_interrupt (int irq, void *ptr)
1196{ 1196{
1197 struct sx_board *board = ptr; 1197 struct sx_board *board = ptr;
1198 struct sx_port *port; 1198 struct sx_port *port;
@@ -1300,7 +1300,7 @@ static void sx_pollfunc (unsigned long data)
1300 1300
1301 func_enter (); 1301 func_enter ();
1302 1302
1303 sx_interrupt (0, board, NULL); 1303 sx_interrupt (0, board);
1304 1304
1305 init_timer(&board->timer); 1305 init_timer(&board->timer);
1306 1306
diff --git a/drivers/char/synclink.c b/drivers/char/synclink.c
index a4150c4519c4..f2864cc64240 100644
--- a/drivers/char/synclink.c
+++ b/drivers/char/synclink.c
@@ -1698,11 +1698,10 @@ static void mgsl_isr_transmit_dma( struct mgsl_struct *info )
1698 * 1698 *
1699 * irq interrupt number that caused interrupt 1699 * irq interrupt number that caused interrupt
1700 * dev_id device ID supplied during interrupt registration 1700 * dev_id device ID supplied during interrupt registration
1701 * regs interrupted processor context
1702 * 1701 *
1703 * Return Value: None 1702 * Return Value: None
1704 */ 1703 */
1705static irqreturn_t mgsl_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1704static irqreturn_t mgsl_interrupt(int irq, void *dev_id)
1706{ 1705{
1707 struct mgsl_struct * info; 1706 struct mgsl_struct * info;
1708 u16 UscVector; 1707 u16 UscVector;
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c
index bdc7cb248b8f..d4334c79f8d4 100644
--- a/drivers/char/synclink_gt.c
+++ b/drivers/char/synclink_gt.c
@@ -491,7 +491,7 @@ static void isr_serial(struct slgt_info *info);
491static void isr_rdma(struct slgt_info *info); 491static void isr_rdma(struct slgt_info *info);
492static void isr_txeom(struct slgt_info *info, unsigned short status); 492static void isr_txeom(struct slgt_info *info, unsigned short status);
493static void isr_tdma(struct slgt_info *info); 493static void isr_tdma(struct slgt_info *info);
494static irqreturn_t slgt_interrupt(int irq, void *dev_id, struct pt_regs * regs); 494static irqreturn_t slgt_interrupt(int irq, void *dev_id);
495 495
496static int alloc_dma_bufs(struct slgt_info *info); 496static int alloc_dma_bufs(struct slgt_info *info);
497static void free_dma_bufs(struct slgt_info *info); 497static void free_dma_bufs(struct slgt_info *info);
@@ -2217,9 +2217,8 @@ static void isr_gpio(struct slgt_info *info, unsigned int changed, unsigned int
2217 * 2217 *
2218 * irq interrupt number 2218 * irq interrupt number
2219 * dev_id device ID supplied during interrupt registration 2219 * dev_id device ID supplied during interrupt registration
2220 * regs interrupted processor context
2221 */ 2220 */
2222static irqreturn_t slgt_interrupt(int irq, void *dev_id, struct pt_regs * regs) 2221static irqreturn_t slgt_interrupt(int irq, void *dev_id)
2223{ 2222{
2224 struct slgt_info *info; 2223 struct slgt_info *info;
2225 unsigned int gsr; 2224 unsigned int gsr;
diff --git a/drivers/char/synclinkmp.c b/drivers/char/synclinkmp.c
index 6eb75dcd7961..3e932b681371 100644
--- a/drivers/char/synclinkmp.c
+++ b/drivers/char/synclinkmp.c
@@ -2596,8 +2596,7 @@ void isr_io_pin( SLMP_INFO *info, u16 status )
2596 * dev_id device ID supplied during interrupt registration 2596 * dev_id device ID supplied during interrupt registration
2597 * regs interrupted processor context 2597 * regs interrupted processor context
2598 */ 2598 */
2599static irqreturn_t synclinkmp_interrupt(int irq, void *dev_id, 2599static irqreturn_t synclinkmp_interrupt(int irq, void *dev_id)
2600 struct pt_regs *regs)
2601{ 2600{
2602 SLMP_INFO * info; 2601 SLMP_INFO * info;
2603 unsigned char status, status0, status1=0; 2602 unsigned char status, status0, status1=0;
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
index 6b4d4d1e343d..5f49280779fb 100644
--- a/drivers/char/sysrq.c
+++ b/drivers/char/sysrq.c
@@ -35,14 +35,15 @@
35#include <linux/vt_kern.h> 35#include <linux/vt_kern.h>
36#include <linux/workqueue.h> 36#include <linux/workqueue.h>
37#include <linux/kexec.h> 37#include <linux/kexec.h>
38#include <linux/irq.h>
38 39
39#include <asm/ptrace.h> 40#include <asm/ptrace.h>
41#include <asm/irq_regs.h>
40 42
41/* Whether we react on sysrq keys or just ignore them */ 43/* Whether we react on sysrq keys or just ignore them */
42int sysrq_enabled = 1; 44int sysrq_enabled = 1;
43 45
44static void sysrq_handle_loglevel(int key, struct pt_regs *pt_regs, 46static void sysrq_handle_loglevel(int key, struct tty_struct *tty)
45 struct tty_struct *tty)
46{ 47{
47 int i; 48 int i;
48 i = key - '0'; 49 i = key - '0';
@@ -58,8 +59,7 @@ static struct sysrq_key_op sysrq_loglevel_op = {
58}; 59};
59 60
60#ifdef CONFIG_VT 61#ifdef CONFIG_VT
61static void sysrq_handle_SAK(int key, struct pt_regs *pt_regs, 62static void sysrq_handle_SAK(int key, struct tty_struct *tty)
62 struct tty_struct *tty)
63{ 63{
64 if (tty) 64 if (tty)
65 do_SAK(tty); 65 do_SAK(tty);
@@ -76,8 +76,7 @@ static struct sysrq_key_op sysrq_SAK_op = {
76#endif 76#endif
77 77
78#ifdef CONFIG_VT 78#ifdef CONFIG_VT
79static void sysrq_handle_unraw(int key, struct pt_regs *pt_regs, 79static void sysrq_handle_unraw(int key, struct tty_struct *tty)
80 struct tty_struct *tty)
81{ 80{
82 struct kbd_struct *kbd = &kbd_table[fg_console]; 81 struct kbd_struct *kbd = &kbd_table[fg_console];
83 82
@@ -95,10 +94,9 @@ static struct sysrq_key_op sysrq_unraw_op = {
95#endif /* CONFIG_VT */ 94#endif /* CONFIG_VT */
96 95
97#ifdef CONFIG_KEXEC 96#ifdef CONFIG_KEXEC
98static void sysrq_handle_crashdump(int key, struct pt_regs *pt_regs, 97static void sysrq_handle_crashdump(int key, struct tty_struct *tty)
99 struct tty_struct *tty)
100{ 98{
101 crash_kexec(pt_regs); 99 crash_kexec(get_irq_regs());
102} 100}
103static struct sysrq_key_op sysrq_crashdump_op = { 101static struct sysrq_key_op sysrq_crashdump_op = {
104 .handler = sysrq_handle_crashdump, 102 .handler = sysrq_handle_crashdump,
@@ -110,8 +108,7 @@ static struct sysrq_key_op sysrq_crashdump_op = {
110#define sysrq_crashdump_op (*(struct sysrq_key_op *)0) 108#define sysrq_crashdump_op (*(struct sysrq_key_op *)0)
111#endif 109#endif
112 110
113static void sysrq_handle_reboot(int key, struct pt_regs *pt_regs, 111static void sysrq_handle_reboot(int key, struct tty_struct *tty)
114 struct tty_struct *tty)
115{ 112{
116 lockdep_off(); 113 lockdep_off();
117 local_irq_enable(); 114 local_irq_enable();
@@ -124,8 +121,7 @@ static struct sysrq_key_op sysrq_reboot_op = {
124 .enable_mask = SYSRQ_ENABLE_BOOT, 121 .enable_mask = SYSRQ_ENABLE_BOOT,
125}; 122};
126 123
127static void sysrq_handle_sync(int key, struct pt_regs *pt_regs, 124static void sysrq_handle_sync(int key, struct tty_struct *tty)
128 struct tty_struct *tty)
129{ 125{
130 emergency_sync(); 126 emergency_sync();
131} 127}
@@ -136,8 +132,7 @@ static struct sysrq_key_op sysrq_sync_op = {
136 .enable_mask = SYSRQ_ENABLE_SYNC, 132 .enable_mask = SYSRQ_ENABLE_SYNC,
137}; 133};
138 134
139static void sysrq_handle_mountro(int key, struct pt_regs *pt_regs, 135static void sysrq_handle_mountro(int key, struct tty_struct *tty)
140 struct tty_struct *tty)
141{ 136{
142 emergency_remount(); 137 emergency_remount();
143} 138}
@@ -149,8 +144,7 @@ static struct sysrq_key_op sysrq_mountro_op = {
149}; 144};
150 145
151#ifdef CONFIG_LOCKDEP 146#ifdef CONFIG_LOCKDEP
152static void sysrq_handle_showlocks(int key, struct pt_regs *pt_regs, 147static void sysrq_handle_showlocks(int key, struct tty_struct *tty)
153 struct tty_struct *tty)
154{ 148{
155 debug_show_all_locks(); 149 debug_show_all_locks();
156} 150}
@@ -164,11 +158,11 @@ static struct sysrq_key_op sysrq_showlocks_op = {
164#define sysrq_showlocks_op (*(struct sysrq_key_op *)0) 158#define sysrq_showlocks_op (*(struct sysrq_key_op *)0)
165#endif 159#endif
166 160
167static void sysrq_handle_showregs(int key, struct pt_regs *pt_regs, 161static void sysrq_handle_showregs(int key, struct tty_struct *tty)
168 struct tty_struct *tty)
169{ 162{
170 if (pt_regs) 163 struct pt_regs *regs = get_irq_regs();
171 show_regs(pt_regs); 164 if (regs)
165 show_regs(regs);
172} 166}
173static struct sysrq_key_op sysrq_showregs_op = { 167static struct sysrq_key_op sysrq_showregs_op = {
174 .handler = sysrq_handle_showregs, 168 .handler = sysrq_handle_showregs,
@@ -177,8 +171,7 @@ static struct sysrq_key_op sysrq_showregs_op = {
177 .enable_mask = SYSRQ_ENABLE_DUMP, 171 .enable_mask = SYSRQ_ENABLE_DUMP,
178}; 172};
179 173
180static void sysrq_handle_showstate(int key, struct pt_regs *pt_regs, 174static void sysrq_handle_showstate(int key, struct tty_struct *tty)
181 struct tty_struct *tty)
182{ 175{
183 show_state(); 176 show_state();
184} 177}
@@ -189,8 +182,7 @@ static struct sysrq_key_op sysrq_showstate_op = {
189 .enable_mask = SYSRQ_ENABLE_DUMP, 182 .enable_mask = SYSRQ_ENABLE_DUMP,
190}; 183};
191 184
192static void sysrq_handle_showmem(int key, struct pt_regs *pt_regs, 185static void sysrq_handle_showmem(int key, struct tty_struct *tty)
193 struct tty_struct *tty)
194{ 186{
195 show_mem(); 187 show_mem();
196} 188}
@@ -215,8 +207,7 @@ static void send_sig_all(int sig)
215 } 207 }
216} 208}
217 209
218static void sysrq_handle_term(int key, struct pt_regs *pt_regs, 210static void sysrq_handle_term(int key, struct tty_struct *tty)
219 struct tty_struct *tty)
220{ 211{
221 send_sig_all(SIGTERM); 212 send_sig_all(SIGTERM);
222 console_loglevel = 8; 213 console_loglevel = 8;
@@ -236,8 +227,7 @@ static void moom_callback(void *ignored)
236 227
237static DECLARE_WORK(moom_work, moom_callback, NULL); 228static DECLARE_WORK(moom_work, moom_callback, NULL);
238 229
239static void sysrq_handle_moom(int key, struct pt_regs *pt_regs, 230static void sysrq_handle_moom(int key, struct tty_struct *tty)
240 struct tty_struct *tty)
241{ 231{
242 schedule_work(&moom_work); 232 schedule_work(&moom_work);
243} 233}
@@ -247,8 +237,7 @@ static struct sysrq_key_op sysrq_moom_op = {
247 .action_msg = "Manual OOM execution", 237 .action_msg = "Manual OOM execution",
248}; 238};
249 239
250static void sysrq_handle_kill(int key, struct pt_regs *pt_regs, 240static void sysrq_handle_kill(int key, struct tty_struct *tty)
251 struct tty_struct *tty)
252{ 241{
253 send_sig_all(SIGKILL); 242 send_sig_all(SIGKILL);
254 console_loglevel = 8; 243 console_loglevel = 8;
@@ -260,8 +249,7 @@ static struct sysrq_key_op sysrq_kill_op = {
260 .enable_mask = SYSRQ_ENABLE_SIGNAL, 249 .enable_mask = SYSRQ_ENABLE_SIGNAL,
261}; 250};
262 251
263static void sysrq_handle_unrt(int key, struct pt_regs *pt_regs, 252static void sysrq_handle_unrt(int key, struct tty_struct *tty)
264 struct tty_struct *tty)
265{ 253{
266 normalize_rt_tasks(); 254 normalize_rt_tasks();
267} 255}
@@ -361,8 +349,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
361 * This is the non-locking version of handle_sysrq. It must/can only be called 349 * This is the non-locking version of handle_sysrq. It must/can only be called
362 * by sysrq key handlers, as they are inside of the lock 350 * by sysrq key handlers, as they are inside of the lock
363 */ 351 */
364void __handle_sysrq(int key, struct pt_regs *pt_regs, struct tty_struct *tty, 352void __handle_sysrq(int key, struct tty_struct *tty, int check_mask)
365 int check_mask)
366{ 353{
367 struct sysrq_key_op *op_p; 354 struct sysrq_key_op *op_p;
368 int orig_log_level; 355 int orig_log_level;
@@ -384,7 +371,7 @@ void __handle_sysrq(int key, struct pt_regs *pt_regs, struct tty_struct *tty,
384 (sysrq_enabled & op_p->enable_mask)) { 371 (sysrq_enabled & op_p->enable_mask)) {
385 printk("%s\n", op_p->action_msg); 372 printk("%s\n", op_p->action_msg);
386 console_loglevel = orig_log_level; 373 console_loglevel = orig_log_level;
387 op_p->handler(key, pt_regs, tty); 374 op_p->handler(key, tty);
388 } else { 375 } else {
389 printk("This sysrq operation is disabled.\n"); 376 printk("This sysrq operation is disabled.\n");
390 } 377 }
@@ -413,11 +400,11 @@ void __handle_sysrq(int key, struct pt_regs *pt_regs, struct tty_struct *tty,
413 * This function is called by the keyboard handler when SysRq is pressed 400 * This function is called by the keyboard handler when SysRq is pressed
414 * and any other keycode arrives. 401 * and any other keycode arrives.
415 */ 402 */
416void handle_sysrq(int key, struct pt_regs *pt_regs, struct tty_struct *tty) 403void handle_sysrq(int key, struct tty_struct *tty)
417{ 404{
418 if (!sysrq_enabled) 405 if (!sysrq_enabled)
419 return; 406 return;
420 __handle_sysrq(key, pt_regs, tty, 1); 407 __handle_sysrq(key, tty, 1);
421} 408}
422EXPORT_SYMBOL(handle_sysrq); 409EXPORT_SYMBOL(handle_sysrq);
423 410
diff --git a/drivers/char/tlclk.c b/drivers/char/tlclk.c
index d2c5ba4e83b8..2444a0e24b31 100644
--- a/drivers/char/tlclk.c
+++ b/drivers/char/tlclk.c
@@ -193,7 +193,7 @@ static DEFINE_SPINLOCK(event_lock);
193 193
194static int tlclk_major = TLCLK_MAJOR; 194static int tlclk_major = TLCLK_MAJOR;
195 195
196static irqreturn_t tlclk_interrupt(int irq, void *dev_id, struct pt_regs *regs); 196static irqreturn_t tlclk_interrupt(int irq, void *dev_id);
197 197
198static DECLARE_WAIT_QUEUE_HEAD(wq); 198static DECLARE_WAIT_QUEUE_HEAD(wq);
199 199
@@ -856,7 +856,7 @@ static void switchover_timeout(unsigned long data)
856 wake_up(&wq); 856 wake_up(&wq);
857} 857}
858 858
859static irqreturn_t tlclk_interrupt(int irq, void *dev_id, struct pt_regs *regs) 859static irqreturn_t tlclk_interrupt(int irq, void *dev_id)
860{ 860{
861 unsigned long flags; 861 unsigned long flags;
862 862
diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
index ee7ac6f43c65..483f3f60013c 100644
--- a/drivers/char/tpm/tpm_tis.c
+++ b/drivers/char/tpm/tpm_tis.c
@@ -377,7 +377,7 @@ static struct tpm_vendor_specific tpm_tis = {
377 .fops = &tis_ops,}, 377 .fops = &tis_ops,},
378}; 378};
379 379
380static irqreturn_t tis_int_probe(int irq, void *dev_id, struct pt_regs *regs) 380static irqreturn_t tis_int_probe(int irq, void *dev_id)
381{ 381{
382 struct tpm_chip *chip = (struct tpm_chip *) dev_id; 382 struct tpm_chip *chip = (struct tpm_chip *) dev_id;
383 u32 interrupt; 383 u32 interrupt;
@@ -397,7 +397,7 @@ static irqreturn_t tis_int_probe(int irq, void *dev_id, struct pt_regs *regs)
397 return IRQ_HANDLED; 397 return IRQ_HANDLED;
398} 398}
399 399
400static irqreturn_t tis_int_handler(int irq, void *dev_id, struct pt_regs *regs) 400static irqreturn_t tis_int_handler(int irq, void *dev_id)
401{ 401{
402 struct tpm_chip *chip = (struct tpm_chip *) dev_id; 402 struct tpm_chip *chip = (struct tpm_chip *) dev_id;
403 u32 interrupt; 403 u32 interrupt;
diff --git a/drivers/char/viocons.c b/drivers/char/viocons.c
index a362ee9c92dd..6d2e314860df 100644
--- a/drivers/char/viocons.c
+++ b/drivers/char/viocons.c
@@ -947,7 +947,7 @@ static void vioHandleData(struct HvLpEvent *event)
947 */ 947 */
948 continue; 948 continue;
949 } else if (vio_sysrq_pressed) { 949 } else if (vio_sysrq_pressed) {
950 handle_sysrq(cevent->data[index], NULL, tty); 950 handle_sysrq(cevent->data[index], tty);
951 vio_sysrq_pressed = 0; 951 vio_sysrq_pressed = 0;
952 /* 952 /*
953 * continue because we don't want to add 953 * continue because we don't want to add
diff --git a/drivers/char/vme_scc.c b/drivers/char/vme_scc.c
index c2ca31eb850b..d0b94dd1af6d 100644
--- a/drivers/char/vme_scc.c
+++ b/drivers/char/vme_scc.c
@@ -81,10 +81,10 @@ static int scc_ioctl(struct tty_struct * tty, struct file * filp,
81 unsigned int cmd, unsigned long arg); 81 unsigned int cmd, unsigned long arg);
82static void scc_throttle(struct tty_struct *tty); 82static void scc_throttle(struct tty_struct *tty);
83static void scc_unthrottle(struct tty_struct *tty); 83static void scc_unthrottle(struct tty_struct *tty);
84static irqreturn_t scc_tx_int(int irq, void *data, struct pt_regs *fp); 84static irqreturn_t scc_tx_int(int irq, void *data);
85static irqreturn_t scc_rx_int(int irq, void *data, struct pt_regs *fp); 85static irqreturn_t scc_rx_int(int irq, void *data);
86static irqreturn_t scc_stat_int(int irq, void *data, struct pt_regs *fp); 86static irqreturn_t scc_stat_int(int irq, void *data);
87static irqreturn_t scc_spcond_int(int irq, void *data, struct pt_regs *fp); 87static irqreturn_t scc_spcond_int(int irq, void *data);
88static void scc_setsignals(struct scc_port *port, int dtr, int rts); 88static void scc_setsignals(struct scc_port *port, int dtr, int rts);
89static void scc_break_ctl(struct tty_struct *tty, int break_state); 89static void scc_break_ctl(struct tty_struct *tty, int break_state);
90 90
@@ -419,7 +419,7 @@ module_init(vme_scc_init);
419 * Interrupt handlers 419 * Interrupt handlers
420 *--------------------------------------------------------------------------*/ 420 *--------------------------------------------------------------------------*/
421 421
422static irqreturn_t scc_rx_int(int irq, void *data, struct pt_regs *fp) 422static irqreturn_t scc_rx_int(int irq, void *data)
423{ 423{
424 unsigned char ch; 424 unsigned char ch;
425 struct scc_port *port = data; 425 struct scc_port *port = data;
@@ -440,7 +440,7 @@ static irqreturn_t scc_rx_int(int irq, void *data, struct pt_regs *fp)
440 */ 440 */
441 if (SCCread(INT_PENDING_REG) & 441 if (SCCread(INT_PENDING_REG) &
442 (port->channel == CHANNEL_A ? IPR_A_RX : IPR_B_RX)) { 442 (port->channel == CHANNEL_A ? IPR_A_RX : IPR_B_RX)) {
443 scc_spcond_int (irq, data, fp); 443 scc_spcond_int (irq, data);
444 return IRQ_HANDLED; 444 return IRQ_HANDLED;
445 } 445 }
446 446
@@ -451,7 +451,7 @@ static irqreturn_t scc_rx_int(int irq, void *data, struct pt_regs *fp)
451} 451}
452 452
453 453
454static irqreturn_t scc_spcond_int(int irq, void *data, struct pt_regs *fp) 454static irqreturn_t scc_spcond_int(int irq, void *data)
455{ 455{
456 struct scc_port *port = data; 456 struct scc_port *port = data;
457 struct tty_struct *tty = port->gs.tty; 457 struct tty_struct *tty = port->gs.tty;
@@ -496,7 +496,7 @@ static irqreturn_t scc_spcond_int(int irq, void *data, struct pt_regs *fp)
496} 496}
497 497
498 498
499static irqreturn_t scc_tx_int(int irq, void *data, struct pt_regs *fp) 499static irqreturn_t scc_tx_int(int irq, void *data)
500{ 500{
501 struct scc_port *port = data; 501 struct scc_port *port = data;
502 SCC_ACCESS_INIT(port); 502 SCC_ACCESS_INIT(port);
@@ -538,7 +538,7 @@ static irqreturn_t scc_tx_int(int irq, void *data, struct pt_regs *fp)
538} 538}
539 539
540 540
541static irqreturn_t scc_stat_int(int irq, void *data, struct pt_regs *fp) 541static irqreturn_t scc_stat_int(int irq, void *data)
542{ 542{
543 struct scc_port *port = data; 543 struct scc_port *port = data;
544 unsigned channel = port->channel; 544 unsigned channel = port->channel;
@@ -593,7 +593,7 @@ static void scc_enable_tx_interrupts(void *ptr)
593 local_irq_save(flags); 593 local_irq_save(flags);
594 SCCmod(INT_AND_DMA_REG, 0xff, IDR_TX_INT_ENAB); 594 SCCmod(INT_AND_DMA_REG, 0xff, IDR_TX_INT_ENAB);
595 /* restart the transmitter */ 595 /* restart the transmitter */
596 scc_tx_int (0, port, 0); 596 scc_tx_int (0, port);
597 local_irq_restore(flags); 597 local_irq_restore(flags);
598} 598}
599 599
diff --git a/drivers/char/vr41xx_giu.c b/drivers/char/vr41xx_giu.c
index 8116a47b80f4..8e7949305171 100644
--- a/drivers/char/vr41xx_giu.c
+++ b/drivers/char/vr41xx_giu.c
@@ -221,7 +221,7 @@ static struct hw_interrupt_type giuint_high_irq_type = {
221 .end = end_giuint_high_irq, 221 .end = end_giuint_high_irq,
222}; 222};
223 223
224static int giu_get_irq(unsigned int irq, struct pt_regs *regs) 224static int giu_get_irq(unsigned int irq)
225{ 225{
226 uint16_t pendl, pendh, maskl, maskh; 226 uint16_t pendl, pendh, maskl, maskh;
227 int i; 227 int i;
diff --git a/drivers/char/watchdog/eurotechwdt.c b/drivers/char/watchdog/eurotechwdt.c
index 4f4269754c46..e228d6e173ce 100644
--- a/drivers/char/watchdog/eurotechwdt.c
+++ b/drivers/char/watchdog/eurotechwdt.c
@@ -153,7 +153,7 @@ static void eurwdt_activate_timer(void)
153 * Kernel methods. 153 * Kernel methods.
154 */ 154 */
155 155
156static irqreturn_t eurwdt_interrupt(int irq, void *dev_id, struct pt_regs *regs) 156static irqreturn_t eurwdt_interrupt(int irq, void *dev_id)
157{ 157{
158 printk(KERN_CRIT "timeout WDT timeout\n"); 158 printk(KERN_CRIT "timeout WDT timeout\n");
159 159
diff --git a/drivers/char/watchdog/mpcore_wdt.c b/drivers/char/watchdog/mpcore_wdt.c
index 02d336ace504..3404a9c67f08 100644
--- a/drivers/char/watchdog/mpcore_wdt.c
+++ b/drivers/char/watchdog/mpcore_wdt.c
@@ -64,7 +64,7 @@ MODULE_PARM_DESC(mpcore_noboot, "MPcore watchdog action, set to 1 to ignore rebo
64 * This is the interrupt handler. Note that we only use this 64 * This is the interrupt handler. Note that we only use this
65 * in testing mode, so don't actually do a reboot here. 65 * in testing mode, so don't actually do a reboot here.
66 */ 66 */
67static irqreturn_t mpcore_wdt_fire(int irq, void *arg, struct pt_regs *regs) 67static irqreturn_t mpcore_wdt_fire(int irq, void *arg)
68{ 68{
69 struct mpcore_wdt *wdt = arg; 69 struct mpcore_wdt *wdt = arg;
70 70
diff --git a/drivers/char/watchdog/pcwd_usb.c b/drivers/char/watchdog/pcwd_usb.c
index 77662cb0ac46..bda45334d802 100644
--- a/drivers/char/watchdog/pcwd_usb.c
+++ b/drivers/char/watchdog/pcwd_usb.c
@@ -158,7 +158,7 @@ static struct usb_driver usb_pcwd_driver = {
158}; 158};
159 159
160 160
161static void usb_pcwd_intr_done(struct urb *urb, struct pt_regs *regs) 161static void usb_pcwd_intr_done(struct urb *urb)
162{ 162{
163 struct usb_pcwd_private *usb_pcwd = (struct usb_pcwd_private *)urb->context; 163 struct usb_pcwd_private *usb_pcwd = (struct usb_pcwd_private *)urb->context;
164 unsigned char *data = usb_pcwd->intr_buffer; 164 unsigned char *data = usb_pcwd->intr_buffer;
diff --git a/drivers/char/watchdog/s3c2410_wdt.c b/drivers/char/watchdog/s3c2410_wdt.c
index b36a04ae9ab8..68b1ca976d53 100644
--- a/drivers/char/watchdog/s3c2410_wdt.c
+++ b/drivers/char/watchdog/s3c2410_wdt.c
@@ -336,8 +336,7 @@ static struct miscdevice s3c2410wdt_miscdev = {
336 336
337/* interrupt handler code */ 337/* interrupt handler code */
338 338
339static irqreturn_t s3c2410wdt_irq(int irqno, void *param, 339static irqreturn_t s3c2410wdt_irq(int irqno, void *param)
340 struct pt_regs *regs)
341{ 340{
342 printk(KERN_INFO PFX "Watchdog timer expired!\n"); 341 printk(KERN_INFO PFX "Watchdog timer expired!\n");
343 342
diff --git a/drivers/char/watchdog/wdt.c b/drivers/char/watchdog/wdt.c
index 13f23f4a2233..517fbd8643f8 100644
--- a/drivers/char/watchdog/wdt.c
+++ b/drivers/char/watchdog/wdt.c
@@ -225,14 +225,13 @@ static int wdt_get_temperature(int *temperature)
225 * wdt_interrupt: 225 * wdt_interrupt:
226 * @irq: Interrupt number 226 * @irq: Interrupt number
227 * @dev_id: Unused as we don't allow multiple devices. 227 * @dev_id: Unused as we don't allow multiple devices.
228 * @regs: Unused.
229 * 228 *
230 * Handle an interrupt from the board. These are raised when the status 229 * Handle an interrupt from the board. These are raised when the status
231 * map changes in what the board considers an interesting way. That means 230 * map changes in what the board considers an interesting way. That means
232 * a failure condition occurring. 231 * a failure condition occurring.
233 */ 232 */
234 233
235static irqreturn_t wdt_interrupt(int irq, void *dev_id, struct pt_regs *regs) 234static irqreturn_t wdt_interrupt(int irq, void *dev_id)
236{ 235{
237 /* 236 /*
238 * Read the status register see what is up and 237 * Read the status register see what is up and
diff --git a/drivers/char/watchdog/wdt285.c b/drivers/char/watchdog/wdt285.c
index 89a249e23fde..e4cf661dc890 100644
--- a/drivers/char/watchdog/wdt285.c
+++ b/drivers/char/watchdog/wdt285.c
@@ -46,7 +46,7 @@ static unsigned long timer_alive;
46/* 46/*
47 * If the timer expires.. 47 * If the timer expires..
48 */ 48 */
49static void watchdog_fire(int irq, void *dev_id, struct pt_regs *regs) 49static void watchdog_fire(int irq, void *dev_id)
50{ 50{
51 printk(KERN_CRIT "Watchdog: Would Reboot.\n"); 51 printk(KERN_CRIT "Watchdog: Would Reboot.\n");
52 *CSR_TIMER4_CNTL = 0; 52 *CSR_TIMER4_CNTL = 0;
diff --git a/drivers/char/watchdog/wdt_pci.c b/drivers/char/watchdog/wdt_pci.c
index 74d8cf836e13..ce1261c5cbce 100644
--- a/drivers/char/watchdog/wdt_pci.c
+++ b/drivers/char/watchdog/wdt_pci.c
@@ -270,14 +270,13 @@ static int wdtpci_get_temperature(int *temperature)
270 * wdtpci_interrupt: 270 * wdtpci_interrupt:
271 * @irq: Interrupt number 271 * @irq: Interrupt number
272 * @dev_id: Unused as we don't allow multiple devices. 272 * @dev_id: Unused as we don't allow multiple devices.
273 * @regs: Unused.
274 * 273 *
275 * Handle an interrupt from the board. These are raised when the status 274 * Handle an interrupt from the board. These are raised when the status
276 * map changes in what the board considers an interesting way. That means 275 * map changes in what the board considers an interesting way. That means
277 * a failure condition occurring. 276 * a failure condition occurring.
278 */ 277 */
279 278
280static irqreturn_t wdtpci_interrupt(int irq, void *dev_id, struct pt_regs *regs) 279static irqreturn_t wdtpci_interrupt(int irq, void *dev_id)
281{ 280{
282 /* 281 /*
283 * Read the status register see what is up and 282 * Read the status register see what is up and
diff --git a/drivers/dma/ioatdma.c b/drivers/dma/ioatdma.c
index dbd4d6c3698e..0358419a0e48 100644
--- a/drivers/dma/ioatdma.c
+++ b/drivers/dma/ioatdma.c
@@ -80,7 +80,7 @@ static int enumerate_dma_channels(struct ioat_device *device)
80 80
81static struct ioat_desc_sw *ioat_dma_alloc_descriptor( 81static struct ioat_desc_sw *ioat_dma_alloc_descriptor(
82 struct ioat_dma_chan *ioat_chan, 82 struct ioat_dma_chan *ioat_chan,
83 int flags) 83 gfp_t flags)
84{ 84{
85 struct ioat_dma_descriptor *desc; 85 struct ioat_dma_descriptor *desc;
86 struct ioat_desc_sw *desc_sw; 86 struct ioat_desc_sw *desc_sw;
@@ -563,7 +563,7 @@ static struct pci_driver ioat_pci_drv = {
563 .remove = __devexit_p(ioat_remove), 563 .remove = __devexit_p(ioat_remove),
564}; 564};
565 565
566static irqreturn_t ioat_do_interrupt(int irq, void *data, struct pt_regs *regs) 566static irqreturn_t ioat_do_interrupt(int irq, void *data)
567{ 567{
568 struct ioat_device *instance = data; 568 struct ioat_device *instance = data;
569 unsigned long attnstatus; 569 unsigned long attnstatus;
@@ -686,7 +686,7 @@ static int __devinit ioat_probe(struct pci_dev *pdev,
686{ 686{
687 int err; 687 int err;
688 unsigned long mmio_start, mmio_len; 688 unsigned long mmio_start, mmio_len;
689 void *reg_base; 689 void __iomem *reg_base;
690 struct ioat_device *device; 690 struct ioat_device *device;
691 691
692 err = pci_enable_device(pdev); 692 err = pci_enable_device(pdev);
diff --git a/drivers/dma/ioatdma.h b/drivers/dma/ioatdma.h
index a5d3b3644160..62b26a9be4c9 100644
--- a/drivers/dma/ioatdma.h
+++ b/drivers/dma/ioatdma.h
@@ -44,7 +44,7 @@ extern struct list_head dma_client_list;
44 44
45struct ioat_device { 45struct ioat_device {
46 struct pci_dev *pdev; 46 struct pci_dev *pdev;
47 void *reg_base; 47 void __iomem *reg_base;
48 struct pci_pool *dma_pool; 48 struct pci_pool *dma_pool;
49 struct pci_pool *completion_pool; 49 struct pci_pool *completion_pool;
50 50
@@ -73,7 +73,7 @@ struct ioat_device {
73 73
74struct ioat_dma_chan { 74struct ioat_dma_chan {
75 75
76 void *reg_base; 76 void __iomem *reg_base;
77 77
78 dma_cookie_t completed_cookie; 78 dma_cookie_t completed_cookie;
79 unsigned long last_completion; 79 unsigned long last_completion;
diff --git a/drivers/fc4/soc.c b/drivers/fc4/soc.c
index 3b07e0ca81cd..b09dfc78e5a2 100644
--- a/drivers/fc4/soc.c
+++ b/drivers/fc4/soc.c
@@ -334,7 +334,7 @@ update_out:
334 } 334 }
335} 335}
336 336
337static irqreturn_t soc_intr(int irq, void *dev_id, struct pt_regs *regs) 337static irqreturn_t soc_intr(int irq, void *dev_id)
338{ 338{
339 u32 cmd; 339 u32 cmd;
340 unsigned long flags; 340 unsigned long flags;
diff --git a/drivers/fc4/socal.c b/drivers/fc4/socal.c
index 2b75edc5859d..a6b1ae256e16 100644
--- a/drivers/fc4/socal.c
+++ b/drivers/fc4/socal.c
@@ -404,7 +404,7 @@ update_out:
404 } 404 }
405} 405}
406 406
407static irqreturn_t socal_intr(int irq, void *dev_id, struct pt_regs *regs) 407static irqreturn_t socal_intr(int irq, void *dev_id)
408{ 408{
409 u32 cmd; 409 u32 cmd;
410 unsigned long flags; 410 unsigned long flags;
diff --git a/drivers/firmware/dcdbas.c b/drivers/firmware/dcdbas.c
index 339f405ff708..8bcb58cd4ac0 100644
--- a/drivers/firmware/dcdbas.c
+++ b/drivers/firmware/dcdbas.c
@@ -559,7 +559,7 @@ static int __devinit dcdbas_probe(struct platform_device *dev)
559 while (--i >= 0) 559 while (--i >= 0)
560 sysfs_remove_bin_file(&dev->dev.kobj, 560 sysfs_remove_bin_file(&dev->dev.kobj,
561 dcdbas_bin_attrs[i]); 561 dcdbas_bin_attrs[i]);
562 sysfs_create_group(&dev->dev.kobj, &dcdbas_attr_group); 562 sysfs_remove_group(&dev->dev.kobj, &dcdbas_attr_group);
563 return error; 563 return error;
564 } 564 }
565 } 565 }
diff --git a/drivers/i2c/busses/i2c-elektor.c b/drivers/i2c/busses/i2c-elektor.c
index caa8e5c8bfbb..a591fe685f06 100644
--- a/drivers/i2c/busses/i2c-elektor.c
+++ b/drivers/i2c/busses/i2c-elektor.c
@@ -131,7 +131,7 @@ static void pcf_isa_waitforpin(void) {
131} 131}
132 132
133 133
134static irqreturn_t pcf_isa_handler(int this_irq, void *dev_id, struct pt_regs *regs) { 134static irqreturn_t pcf_isa_handler(int this_irq, void *dev_id) {
135 spin_lock(&lock); 135 spin_lock(&lock);
136 pcf_pending = 1; 136 pcf_pending = 1;
137 spin_unlock(&lock); 137 spin_unlock(&lock);
diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c
index 80d4ba1bdfec..781a99c1647a 100644
--- a/drivers/i2c/busses/i2c-ibm_iic.c
+++ b/drivers/i2c/busses/i2c-ibm_iic.c
@@ -320,7 +320,7 @@ err:
320/* 320/*
321 * IIC interrupt handler 321 * IIC interrupt handler
322 */ 322 */
323static irqreturn_t iic_handler(int irq, void *dev_id, struct pt_regs *regs) 323static irqreturn_t iic_handler(int irq, void *dev_id)
324{ 324{
325 struct ibm_iic_private* dev = (struct ibm_iic_private*)dev_id; 325 struct ibm_iic_private* dev = (struct ibm_iic_private*)dev_id;
326 volatile struct iic_regs __iomem *iic = dev->vaddr; 326 volatile struct iic_regs __iomem *iic = dev->vaddr;
diff --git a/drivers/i2c/busses/i2c-iop3xx.c b/drivers/i2c/busses/i2c-iop3xx.c
index 4436c89be58e..d108ab4974cc 100644
--- a/drivers/i2c/busses/i2c-iop3xx.c
+++ b/drivers/i2c/busses/i2c-iop3xx.c
@@ -120,7 +120,7 @@ iop3xx_i2c_transaction_cleanup(struct i2c_algo_iop3xx_data *iop3xx_adap)
120 * Then it passes the SR flags of interest to BH via adap data 120 * Then it passes the SR flags of interest to BH via adap data
121 */ 121 */
122static irqreturn_t 122static irqreturn_t
123iop3xx_i2c_irq_handler(int this_irq, void *dev_id, struct pt_regs *regs) 123iop3xx_i2c_irq_handler(int this_irq, void *dev_id)
124{ 124{
125 struct i2c_algo_iop3xx_data *iop3xx_adap = dev_id; 125 struct i2c_algo_iop3xx_data *iop3xx_adap = dev_id;
126 u32 sr = __raw_readl(iop3xx_adap->ioaddr + SR_OFFSET); 126 u32 sr = __raw_readl(iop3xx_adap->ioaddr + SR_OFFSET);
diff --git a/drivers/i2c/busses/i2c-ite.c b/drivers/i2c/busses/i2c-ite.c
index 559a62b04ee9..f7d71869b3b9 100644
--- a/drivers/i2c/busses/i2c-ite.c
+++ b/drivers/i2c/busses/i2c-ite.c
@@ -140,8 +140,7 @@ static void iic_ite_waitforpin(void) {
140} 140}
141 141
142 142
143static irqreturn_t iic_ite_handler(int this_irq, void *dev_id, 143static irqreturn_t iic_ite_handler(int this_irq, void *dev_id)
144 struct pt_regs *regs)
145{ 144{
146 spin_lock(&lock); 145 spin_lock(&lock);
147 iic_pending = 1; 146 iic_pending = 1;
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index 155a986de516..ee65aa1be13a 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -63,7 +63,7 @@ static __inline__ void writeccr(struct mpc_i2c *i2c, u32 x)
63 writeb(x, i2c->base + MPC_I2C_CR); 63 writeb(x, i2c->base + MPC_I2C_CR);
64} 64}
65 65
66static irqreturn_t mpc_i2c_isr(int irq, void *dev_id, struct pt_regs *regs) 66static irqreturn_t mpc_i2c_isr(int irq, void *dev_id)
67{ 67{
68 struct mpc_i2c *i2c = dev_id; 68 struct mpc_i2c *i2c = dev_id;
69 if (readb(i2c->base + MPC_I2C_SR) & CSR_MIF) { 69 if (readb(i2c->base + MPC_I2C_SR) & CSR_MIF) {
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
index eacbaf745b64..bbc8e3a7ff55 100644
--- a/drivers/i2c/busses/i2c-mv64xxx.c
+++ b/drivers/i2c/busses/i2c-mv64xxx.c
@@ -278,7 +278,7 @@ mv64xxx_i2c_do_action(struct mv64xxx_i2c_data *drv_data)
278} 278}
279 279
280static int 280static int
281mv64xxx_i2c_intr(int irq, void *dev_id, struct pt_regs *regs) 281mv64xxx_i2c_intr(int irq, void *dev_id)
282{ 282{
283 struct mv64xxx_i2c_data *drv_data = dev_id; 283 struct mv64xxx_i2c_data *drv_data = dev_id;
284 unsigned long flags; 284 unsigned long flags;
diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
index 3e276e958ef7..f28a76d1c0af 100644
--- a/drivers/i2c/busses/i2c-ocores.c
+++ b/drivers/i2c/busses/i2c-ocores.c
@@ -143,7 +143,7 @@ static void ocores_process(struct ocores_i2c *i2c)
143 } 143 }
144} 144}
145 145
146static irqreturn_t ocores_isr(int irq, void *dev_id, struct pt_regs *regs) 146static irqreturn_t ocores_isr(int irq, void *dev_id)
147{ 147{
148 struct ocores_i2c *i2c = dev_id; 148 struct ocores_i2c *i2c = dev_id;
149 149
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 81d87d2c2a2d..dec04da0455c 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -400,7 +400,7 @@ omap_i2c_ack_stat(struct omap_i2c_dev *dev, u16 stat)
400} 400}
401 401
402static irqreturn_t 402static irqreturn_t
403omap_i2c_rev1_isr(int this_irq, void *dev_id, struct pt_regs *regs) 403omap_i2c_rev1_isr(int this_irq, void *dev_id)
404{ 404{
405 struct omap_i2c_dev *dev = dev_id; 405 struct omap_i2c_dev *dev = dev_id;
406 u16 iv, w; 406 u16 iv, w;
@@ -452,7 +452,7 @@ omap_i2c_rev1_isr(int this_irq, void *dev_id, struct pt_regs *regs)
452} 452}
453 453
454static irqreturn_t 454static irqreturn_t
455omap_i2c_isr(int this_irq, void *dev_id, struct pt_regs *regs) 455omap_i2c_isr(int this_irq, void *dev_id)
456{ 456{
457 struct omap_i2c_dev *dev = dev_id; 457 struct omap_i2c_dev *dev = dev_id;
458 u16 bits; 458 u16 bits;
diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c
index d9b4ddbad7e0..407840b6a260 100644
--- a/drivers/i2c/busses/i2c-pca-isa.c
+++ b/drivers/i2c/busses/i2c-pca-isa.c
@@ -99,7 +99,7 @@ static int pca_isa_waitforinterrupt(struct i2c_algo_pca_data *adap)
99 return ret; 99 return ret;
100} 100}
101 101
102static irqreturn_t pca_handler(int this_irq, void *dev_id, struct pt_regs *regs) { 102static irqreturn_t pca_handler(int this_irq, void *dev_id) {
103 wake_up_interruptible(&pca_wait); 103 wake_up_interruptible(&pca_wait);
104 return IRQ_HANDLED; 104 return IRQ_HANDLED;
105} 105}
diff --git a/drivers/i2c/busses/i2c-powermac.c b/drivers/i2c/busses/i2c-powermac.c
index a508cb962d24..648d55533d87 100644
--- a/drivers/i2c/busses/i2c-powermac.c
+++ b/drivers/i2c/busses/i2c-powermac.c
@@ -182,9 +182,9 @@ static const struct i2c_algorithm i2c_powermac_algorithm = {
182}; 182};
183 183
184 184
185static int i2c_powermac_remove(struct device *dev) 185static int i2c_powermac_remove(struct platform_device *dev)
186{ 186{
187 struct i2c_adapter *adapter = dev_get_drvdata(dev); 187 struct i2c_adapter *adapter = platform_get_drvdata(dev);
188 struct pmac_i2c_bus *bus = i2c_get_adapdata(adapter); 188 struct pmac_i2c_bus *bus = i2c_get_adapdata(adapter);
189 int rc; 189 int rc;
190 190
@@ -195,16 +195,16 @@ static int i2c_powermac_remove(struct device *dev)
195 if (rc) 195 if (rc)
196 printk("i2c-powermac.c: Failed to remove bus %s !\n", 196 printk("i2c-powermac.c: Failed to remove bus %s !\n",
197 adapter->name); 197 adapter->name);
198 dev_set_drvdata(dev, NULL); 198 platform_set_drvdata(dev, NULL);
199 kfree(adapter); 199 kfree(adapter);
200 200
201 return 0; 201 return 0;
202} 202}
203 203
204 204
205static int i2c_powermac_probe(struct device *dev) 205static int __devexit i2c_powermac_probe(struct platform_device *dev)
206{ 206{
207 struct pmac_i2c_bus *bus = dev->platform_data; 207 struct pmac_i2c_bus *bus = dev->dev.platform_data;
208 struct device_node *parent = NULL; 208 struct device_node *parent = NULL;
209 struct i2c_adapter *adapter; 209 struct i2c_adapter *adapter;
210 char name[32]; 210 char name[32];
@@ -246,11 +246,11 @@ static int i2c_powermac_probe(struct device *dev)
246 printk(KERN_ERR "i2c-powermac: can't allocate inteface !\n"); 246 printk(KERN_ERR "i2c-powermac: can't allocate inteface !\n");
247 return -ENOMEM; 247 return -ENOMEM;
248 } 248 }
249 dev_set_drvdata(dev, adapter); 249 platform_set_drvdata(dev, adapter);
250 strcpy(adapter->name, name); 250 strcpy(adapter->name, name);
251 adapter->algo = &i2c_powermac_algorithm; 251 adapter->algo = &i2c_powermac_algorithm;
252 i2c_set_adapdata(adapter, bus); 252 i2c_set_adapdata(adapter, bus);
253 adapter->dev.parent = dev; 253 adapter->dev.parent = &dev->dev;
254 pmac_i2c_attach_adapter(bus, adapter); 254 pmac_i2c_attach_adapter(bus, adapter);
255 rc = i2c_add_adapter(adapter); 255 rc = i2c_add_adapter(adapter);
256 if (rc) { 256 if (rc) {
@@ -265,23 +265,25 @@ static int i2c_powermac_probe(struct device *dev)
265} 265}
266 266
267 267
268static struct device_driver i2c_powermac_driver = { 268static struct platform_driver i2c_powermac_driver = {
269 .name = "i2c-powermac",
270 .bus = &platform_bus_type,
271 .probe = i2c_powermac_probe, 269 .probe = i2c_powermac_probe,
272 .remove = i2c_powermac_remove, 270 .remove = __devexit_p(i2c_powermac_remove),
271 .driver = {
272 .name = "i2c-powermac",
273 .bus = &platform_bus_type,
274 },
273}; 275};
274 276
275static int __init i2c_powermac_init(void) 277static int __init i2c_powermac_init(void)
276{ 278{
277 driver_register(&i2c_powermac_driver); 279 platform_driver_register(&i2c_powermac_driver);
278 return 0; 280 return 0;
279} 281}
280 282
281 283
282static void __exit i2c_powermac_cleanup(void) 284static void __exit i2c_powermac_cleanup(void)
283{ 285{
284 driver_unregister(&i2c_powermac_driver); 286 platform_driver_unregister(&i2c_powermac_driver);
285} 287}
286 288
287module_init(i2c_powermac_init); 289module_init(i2c_powermac_init);
diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index cd4ad98ad517..81050d3c9b21 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -850,7 +850,7 @@ static void i2c_pxa_irq_rxfull(struct pxa_i2c *i2c, u32 isr)
850 ICR = icr; 850 ICR = icr;
851} 851}
852 852
853static irqreturn_t i2c_pxa_handler(int this_irq, void *dev_id, struct pt_regs *regs) 853static irqreturn_t i2c_pxa_handler(int this_irq, void *dev_id)
854{ 854{
855 struct pxa_i2c *i2c = dev_id; 855 struct pxa_i2c *i2c = dev_id;
856 u32 isr = ISR; 856 u32 isr = ISR;
diff --git a/drivers/i2c/busses/i2c-rpx.c b/drivers/i2c/busses/i2c-rpx.c
index 0ebec3c1a54e..8764df06f51d 100644
--- a/drivers/i2c/busses/i2c-rpx.c
+++ b/drivers/i2c/busses/i2c-rpx.c
@@ -55,10 +55,10 @@ rpx_iic_init(struct i2c_algo_8xx_data *data)
55 data->i2c = (i2c8xx_t *)&(((immap_t *)IMAP_ADDR)->im_i2c); 55 data->i2c = (i2c8xx_t *)&(((immap_t *)IMAP_ADDR)->im_i2c);
56} 56}
57 57
58static int rpx_install_isr(int irq, void (*func)(void *, void *), void *data) 58static int rpx_install_isr(int irq, void (*func)(void *), void *data)
59{ 59{
60 /* install interrupt handler */ 60 /* install interrupt handler */
61 cpm_install_handler(irq, (void (*)(void *, struct pt_regs *)) func, data); 61 cpm_install_handler(irq, func, data);
62 62
63 return 0; 63 return 0;
64} 64}
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 9ebe429a0a0f..4ca6de209b8b 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -423,8 +423,7 @@ static int i2s_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)
423 * top level IRQ servicing routine 423 * top level IRQ servicing routine
424*/ 424*/
425 425
426static irqreturn_t s3c24xx_i2c_irq(int irqno, void *dev_id, 426static irqreturn_t s3c24xx_i2c_irq(int irqno, void *dev_id)
427 struct pt_regs *regs)
428{ 427{
429 struct s3c24xx_i2c *i2c = dev_id; 428 struct s3c24xx_i2c *i2c = dev_id;
430 unsigned long status; 429 unsigned long status;
diff --git a/drivers/i2c/chips/isp1301_omap.c b/drivers/i2c/chips/isp1301_omap.c
index 182f04953466..ccdf3e90862b 100644
--- a/drivers/i2c/chips/isp1301_omap.c
+++ b/drivers/i2c/chips/isp1301_omap.c
@@ -669,7 +669,7 @@ pulldown:
669 dump_regs(isp, "otg->isp1301"); 669 dump_regs(isp, "otg->isp1301");
670} 670}
671 671
672static irqreturn_t omap_otg_irq(int irq, void *_isp, struct pt_regs *regs) 672static irqreturn_t omap_otg_irq(int irq, void *_isp)
673{ 673{
674 u16 otg_irq = OTG_IRQ_SRC_REG; 674 u16 otg_irq = OTG_IRQ_SRC_REG;
675 u32 otg_ctrl; 675 u32 otg_ctrl;
@@ -1181,7 +1181,7 @@ isp1301_work(void *data)
1181 isp->working = 0; 1181 isp->working = 0;
1182} 1182}
1183 1183
1184static irqreturn_t isp1301_irq(int irq, void *isp, struct pt_regs *regs) 1184static irqreturn_t isp1301_irq(int irq, void *isp)
1185{ 1185{
1186 isp1301_defer_work(isp, WORK_UPDATE_OTG); 1186 isp1301_defer_work(isp, WORK_UPDATE_OTG);
1187 return IRQ_HANDLED; 1187 return IRQ_HANDLED;
diff --git a/drivers/i2c/chips/tps65010.c b/drivers/i2c/chips/tps65010.c
index 6a7578217177..60bef94cd25f 100644
--- a/drivers/i2c/chips/tps65010.c
+++ b/drivers/i2c/chips/tps65010.c
@@ -446,7 +446,7 @@ static void tps65010_work(void *_tps)
446 mutex_unlock(&tps->lock); 446 mutex_unlock(&tps->lock);
447} 447}
448 448
449static irqreturn_t tps65010_irq(int irq, void *_tps, struct pt_regs *regs) 449static irqreturn_t tps65010_irq(int irq, void *_tps)
450{ 450{
451 struct tps65010 *tps = _tps; 451 struct tps65010 *tps = _tps;
452 452
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index ba6039b55b41..2614f41b5074 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -1562,7 +1562,7 @@ static void unexpected_intr (int irq, ide_hwgroup_t *hwgroup)
1562 * on the hwgroup and the process begins again. 1562 * on the hwgroup and the process begins again.
1563 */ 1563 */
1564 1564
1565irqreturn_t ide_intr (int irq, void *dev_id, struct pt_regs *regs) 1565irqreturn_t ide_intr (int irq, void *dev_id)
1566{ 1566{
1567 unsigned long flags; 1567 unsigned long flags;
1568 ide_hwgroup_t *hwgroup = (ide_hwgroup_t *)dev_id; 1568 ide_hwgroup_t *hwgroup = (ide_hwgroup_t *)dev_id;
diff --git a/drivers/ide/legacy/hd.c b/drivers/ide/legacy/hd.c
index 4ab931145673..b1d5291531b7 100644
--- a/drivers/ide/legacy/hd.c
+++ b/drivers/ide/legacy/hd.c
@@ -673,7 +673,7 @@ static int hd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
673 * be forgotten about... 673 * be forgotten about...
674 */ 674 */
675 675
676static irqreturn_t hd_interrupt(int irq, void *dev_id, struct pt_regs *regs) 676static irqreturn_t hd_interrupt(int irq, void *dev_id)
677{ 677{
678 void (*handler)(void) = do_hd; 678 void (*handler)(void) = do_hd;
679 679
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c
index d655da749144..b1730d7e414c 100644
--- a/drivers/ide/legacy/macide.c
+++ b/drivers/ide/legacy/macide.c
@@ -78,7 +78,7 @@ int macide_ack_intr(ide_hwif_t* hwif)
78} 78}
79 79
80#ifdef CONFIG_BLK_DEV_MAC_MEDIABAY 80#ifdef CONFIG_BLK_DEV_MAC_MEDIABAY
81static void macide_mediabay_interrupt(int irq, void *dev_id, struct pt_regs *regs) 81static void macide_mediabay_interrupt(int irq, void *dev_id)
82{ 82{
83 int state = baboon->mb_status & 0x04; 83 int state = baboon->mb_status & 0x04;
84 84
diff --git a/drivers/ide/mips/swarm.c b/drivers/ide/mips/swarm.c
index 66f6064f4640..09c9e7936b0d 100644
--- a/drivers/ide/mips/swarm.c
+++ b/drivers/ide/mips/swarm.c
@@ -4,6 +4,7 @@
4 * Author: Manish Lachwani, mlachwani@mvista.com 4 * Author: Manish Lachwani, mlachwani@mvista.com
5 * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved. 5 * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved.
6 * Author: Maciej W. Rozycki <macro@mips.com> 6 * Author: Maciej W. Rozycki <macro@mips.com>
7 * Copyright (c) 2006 Maciej W. Rozycki
7 * 8 *
8 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 10 * modify it under the terms of the GNU General Public License
@@ -127,6 +128,7 @@ static int __devinit swarm_ide_probe(struct device *dev)
127 memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports)); 128 memcpy(hwif->io_ports, hwif->hw.io_ports, sizeof(hwif->io_ports));
128 hwif->irq = hwif->hw.irq; 129 hwif->irq = hwif->hw.irq;
129 130
131 probe_hwif_init(hwif);
130 dev_set_drvdata(dev, hwif); 132 dev_set_drvdata(dev, hwif);
131 133
132 return 0; 134 return 0;
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c
index 3e7974c57443..8e7b83f84485 100644
--- a/drivers/ieee1394/nodemgr.c
+++ b/drivers/ieee1394/nodemgr.c
@@ -1614,7 +1614,7 @@ static int nodemgr_host_thread(void *__hi)
1614{ 1614{
1615 struct host_info *hi = (struct host_info *)__hi; 1615 struct host_info *hi = (struct host_info *)__hi;
1616 struct hpsb_host *host = hi->host; 1616 struct hpsb_host *host = hi->host;
1617 unsigned int g, generation = get_hpsb_generation(host) - 1; 1617 unsigned int g, generation = 0;
1618 int i, reset_cycles = 0; 1618 int i, reset_cycles = 0;
1619 1619
1620 /* Setup our device-model entries */ 1620 /* Setup our device-model entries */
diff --git a/drivers/ieee1394/ohci1394.c b/drivers/ieee1394/ohci1394.c
index 8fd0030475ba..dea13525df88 100644
--- a/drivers/ieee1394/ohci1394.c
+++ b/drivers/ieee1394/ohci1394.c
@@ -2301,8 +2301,7 @@ static void ohci_schedule_iso_tasklets(struct ti_ohci *ohci,
2301 spin_unlock_irqrestore(&ohci->iso_tasklet_list_lock, flags); 2301 spin_unlock_irqrestore(&ohci->iso_tasklet_list_lock, flags);
2302} 2302}
2303 2303
2304static irqreturn_t ohci_irq_handler(int irq, void *dev_id, 2304static irqreturn_t ohci_irq_handler(int irq, void *dev_id)
2305 struct pt_regs *regs_are_unused)
2306{ 2305{
2307 quadlet_t event, node_id; 2306 quadlet_t event, node_id;
2308 struct ti_ohci *ohci = (struct ti_ohci *)dev_id; 2307 struct ti_ohci *ohci = (struct ti_ohci *)dev_id;
diff --git a/drivers/ieee1394/pcilynx.c b/drivers/ieee1394/pcilynx.c
index b4f146f2c951..0a7412e27eb4 100644
--- a/drivers/ieee1394/pcilynx.c
+++ b/drivers/ieee1394/pcilynx.c
@@ -839,8 +839,7 @@ static int lynx_devctl(struct hpsb_host *host, enum devctl_cmd cmd, int arg)
839 ********************************************************/ 839 ********************************************************/
840 840
841 841
842static irqreturn_t lynx_irq_handler(int irq, void *dev_id, 842static irqreturn_t lynx_irq_handler(int irq, void *dev_id)
843 struct pt_regs *regs_are_unused)
844{ 843{
845 struct ti_lynx *lynx = (struct ti_lynx *)dev_id; 844 struct ti_lynx *lynx = (struct ti_lynx *)dev_id;
846 struct hpsb_host *host = lynx->host; 845 struct hpsb_host *host = lynx->host;
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index f35fcc4c0638..25b1018a476c 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -75,6 +75,7 @@ static struct ib_cm {
75 struct rb_root remote_sidr_table; 75 struct rb_root remote_sidr_table;
76 struct idr local_id_table; 76 struct idr local_id_table;
77 __be32 random_id_operand; 77 __be32 random_id_operand;
78 struct list_head timewait_list;
78 struct workqueue_struct *wq; 79 struct workqueue_struct *wq;
79} cm; 80} cm;
80 81
@@ -112,6 +113,7 @@ struct cm_work {
112 113
113struct cm_timewait_info { 114struct cm_timewait_info {
114 struct cm_work work; /* Must be first. */ 115 struct cm_work work; /* Must be first. */
116 struct list_head list;
115 struct rb_node remote_qp_node; 117 struct rb_node remote_qp_node;
116 struct rb_node remote_id_node; 118 struct rb_node remote_id_node;
117 __be64 remote_ca_guid; 119 __be64 remote_ca_guid;
@@ -647,13 +649,6 @@ static inline int cm_convert_to_ms(int iba_time)
647 649
648static void cm_cleanup_timewait(struct cm_timewait_info *timewait_info) 650static void cm_cleanup_timewait(struct cm_timewait_info *timewait_info)
649{ 651{
650 unsigned long flags;
651
652 if (!timewait_info->inserted_remote_id &&
653 !timewait_info->inserted_remote_qp)
654 return;
655
656 spin_lock_irqsave(&cm.lock, flags);
657 if (timewait_info->inserted_remote_id) { 652 if (timewait_info->inserted_remote_id) {
658 rb_erase(&timewait_info->remote_id_node, &cm.remote_id_table); 653 rb_erase(&timewait_info->remote_id_node, &cm.remote_id_table);
659 timewait_info->inserted_remote_id = 0; 654 timewait_info->inserted_remote_id = 0;
@@ -663,7 +658,6 @@ static void cm_cleanup_timewait(struct cm_timewait_info *timewait_info)
663 rb_erase(&timewait_info->remote_qp_node, &cm.remote_qp_table); 658 rb_erase(&timewait_info->remote_qp_node, &cm.remote_qp_table);
664 timewait_info->inserted_remote_qp = 0; 659 timewait_info->inserted_remote_qp = 0;
665 } 660 }
666 spin_unlock_irqrestore(&cm.lock, flags);
667} 661}
668 662
669static struct cm_timewait_info * cm_create_timewait_info(__be32 local_id) 663static struct cm_timewait_info * cm_create_timewait_info(__be32 local_id)
@@ -684,8 +678,12 @@ static struct cm_timewait_info * cm_create_timewait_info(__be32 local_id)
684static void cm_enter_timewait(struct cm_id_private *cm_id_priv) 678static void cm_enter_timewait(struct cm_id_private *cm_id_priv)
685{ 679{
686 int wait_time; 680 int wait_time;
681 unsigned long flags;
687 682
683 spin_lock_irqsave(&cm.lock, flags);
688 cm_cleanup_timewait(cm_id_priv->timewait_info); 684 cm_cleanup_timewait(cm_id_priv->timewait_info);
685 list_add_tail(&cm_id_priv->timewait_info->list, &cm.timewait_list);
686 spin_unlock_irqrestore(&cm.lock, flags);
689 687
690 /* 688 /*
691 * The cm_id could be destroyed by the user before we exit timewait. 689 * The cm_id could be destroyed by the user before we exit timewait.
@@ -701,9 +699,13 @@ static void cm_enter_timewait(struct cm_id_private *cm_id_priv)
701 699
702static void cm_reset_to_idle(struct cm_id_private *cm_id_priv) 700static void cm_reset_to_idle(struct cm_id_private *cm_id_priv)
703{ 701{
702 unsigned long flags;
703
704 cm_id_priv->id.state = IB_CM_IDLE; 704 cm_id_priv->id.state = IB_CM_IDLE;
705 if (cm_id_priv->timewait_info) { 705 if (cm_id_priv->timewait_info) {
706 spin_lock_irqsave(&cm.lock, flags);
706 cm_cleanup_timewait(cm_id_priv->timewait_info); 707 cm_cleanup_timewait(cm_id_priv->timewait_info);
708 spin_unlock_irqrestore(&cm.lock, flags);
707 kfree(cm_id_priv->timewait_info); 709 kfree(cm_id_priv->timewait_info);
708 cm_id_priv->timewait_info = NULL; 710 cm_id_priv->timewait_info = NULL;
709 } 711 }
@@ -1307,6 +1309,7 @@ static struct cm_id_private * cm_match_req(struct cm_work *work,
1307 if (timewait_info) { 1309 if (timewait_info) {
1308 cur_cm_id_priv = cm_get_id(timewait_info->work.local_id, 1310 cur_cm_id_priv = cm_get_id(timewait_info->work.local_id,
1309 timewait_info->work.remote_id); 1311 timewait_info->work.remote_id);
1312 cm_cleanup_timewait(cm_id_priv->timewait_info);
1310 spin_unlock_irqrestore(&cm.lock, flags); 1313 spin_unlock_irqrestore(&cm.lock, flags);
1311 if (cur_cm_id_priv) { 1314 if (cur_cm_id_priv) {
1312 cm_dup_req_handler(work, cur_cm_id_priv); 1315 cm_dup_req_handler(work, cur_cm_id_priv);
@@ -1315,7 +1318,8 @@ static struct cm_id_private * cm_match_req(struct cm_work *work,
1315 cm_issue_rej(work->port, work->mad_recv_wc, 1318 cm_issue_rej(work->port, work->mad_recv_wc,
1316 IB_CM_REJ_STALE_CONN, CM_MSG_RESPONSE_REQ, 1319 IB_CM_REJ_STALE_CONN, CM_MSG_RESPONSE_REQ,
1317 NULL, 0); 1320 NULL, 0);
1318 goto error; 1321 listen_cm_id_priv = NULL;
1322 goto out;
1319 } 1323 }
1320 1324
1321 /* Find matching listen request. */ 1325 /* Find matching listen request. */
@@ -1323,21 +1327,20 @@ static struct cm_id_private * cm_match_req(struct cm_work *work,
1323 req_msg->service_id, 1327 req_msg->service_id,
1324 req_msg->private_data); 1328 req_msg->private_data);
1325 if (!listen_cm_id_priv) { 1329 if (!listen_cm_id_priv) {
1330 cm_cleanup_timewait(cm_id_priv->timewait_info);
1326 spin_unlock_irqrestore(&cm.lock, flags); 1331 spin_unlock_irqrestore(&cm.lock, flags);
1327 cm_issue_rej(work->port, work->mad_recv_wc, 1332 cm_issue_rej(work->port, work->mad_recv_wc,
1328 IB_CM_REJ_INVALID_SERVICE_ID, CM_MSG_RESPONSE_REQ, 1333 IB_CM_REJ_INVALID_SERVICE_ID, CM_MSG_RESPONSE_REQ,
1329 NULL, 0); 1334 NULL, 0);
1330 goto error; 1335 goto out;
1331 } 1336 }
1332 atomic_inc(&listen_cm_id_priv->refcount); 1337 atomic_inc(&listen_cm_id_priv->refcount);
1333 atomic_inc(&cm_id_priv->refcount); 1338 atomic_inc(&cm_id_priv->refcount);
1334 cm_id_priv->id.state = IB_CM_REQ_RCVD; 1339 cm_id_priv->id.state = IB_CM_REQ_RCVD;
1335 atomic_inc(&cm_id_priv->work_count); 1340 atomic_inc(&cm_id_priv->work_count);
1336 spin_unlock_irqrestore(&cm.lock, flags); 1341 spin_unlock_irqrestore(&cm.lock, flags);
1342out:
1337 return listen_cm_id_priv; 1343 return listen_cm_id_priv;
1338
1339error: cm_cleanup_timewait(cm_id_priv->timewait_info);
1340 return NULL;
1341} 1344}
1342 1345
1343static int cm_req_handler(struct cm_work *work) 1346static int cm_req_handler(struct cm_work *work)
@@ -1899,6 +1902,32 @@ out: spin_unlock_irqrestore(&cm_id_priv->lock, flags);
1899} 1902}
1900EXPORT_SYMBOL(ib_send_cm_drep); 1903EXPORT_SYMBOL(ib_send_cm_drep);
1901 1904
1905static int cm_issue_drep(struct cm_port *port,
1906 struct ib_mad_recv_wc *mad_recv_wc)
1907{
1908 struct ib_mad_send_buf *msg = NULL;
1909 struct cm_dreq_msg *dreq_msg;
1910 struct cm_drep_msg *drep_msg;
1911 int ret;
1912
1913 ret = cm_alloc_response_msg(port, mad_recv_wc, &msg);
1914 if (ret)
1915 return ret;
1916
1917 dreq_msg = (struct cm_dreq_msg *) mad_recv_wc->recv_buf.mad;
1918 drep_msg = (struct cm_drep_msg *) msg->mad;
1919
1920 cm_format_mad_hdr(&drep_msg->hdr, CM_DREP_ATTR_ID, dreq_msg->hdr.tid);
1921 drep_msg->remote_comm_id = dreq_msg->local_comm_id;
1922 drep_msg->local_comm_id = dreq_msg->remote_comm_id;
1923
1924 ret = ib_post_send_mad(msg, NULL);
1925 if (ret)
1926 cm_free_msg(msg);
1927
1928 return ret;
1929}
1930
1902static int cm_dreq_handler(struct cm_work *work) 1931static int cm_dreq_handler(struct cm_work *work)
1903{ 1932{
1904 struct cm_id_private *cm_id_priv; 1933 struct cm_id_private *cm_id_priv;
@@ -1910,8 +1939,10 @@ static int cm_dreq_handler(struct cm_work *work)
1910 dreq_msg = (struct cm_dreq_msg *)work->mad_recv_wc->recv_buf.mad; 1939 dreq_msg = (struct cm_dreq_msg *)work->mad_recv_wc->recv_buf.mad;
1911 cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id, 1940 cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id,
1912 dreq_msg->local_comm_id); 1941 dreq_msg->local_comm_id);
1913 if (!cm_id_priv) 1942 if (!cm_id_priv) {
1943 cm_issue_drep(work->port, work->mad_recv_wc);
1914 return -EINVAL; 1944 return -EINVAL;
1945 }
1915 1946
1916 work->cm_event.private_data = &dreq_msg->private_data; 1947 work->cm_event.private_data = &dreq_msg->private_data;
1917 1948
@@ -2601,28 +2632,29 @@ static int cm_timewait_handler(struct cm_work *work)
2601{ 2632{
2602 struct cm_timewait_info *timewait_info; 2633 struct cm_timewait_info *timewait_info;
2603 struct cm_id_private *cm_id_priv; 2634 struct cm_id_private *cm_id_priv;
2604 unsigned long flags;
2605 int ret; 2635 int ret;
2606 2636
2607 timewait_info = (struct cm_timewait_info *)work; 2637 timewait_info = (struct cm_timewait_info *)work;
2608 cm_cleanup_timewait(timewait_info); 2638 spin_lock_irq(&cm.lock);
2639 list_del(&timewait_info->list);
2640 spin_unlock_irq(&cm.lock);
2609 2641
2610 cm_id_priv = cm_acquire_id(timewait_info->work.local_id, 2642 cm_id_priv = cm_acquire_id(timewait_info->work.local_id,
2611 timewait_info->work.remote_id); 2643 timewait_info->work.remote_id);
2612 if (!cm_id_priv) 2644 if (!cm_id_priv)
2613 return -EINVAL; 2645 return -EINVAL;
2614 2646
2615 spin_lock_irqsave(&cm_id_priv->lock, flags); 2647 spin_lock_irq(&cm_id_priv->lock);
2616 if (cm_id_priv->id.state != IB_CM_TIMEWAIT || 2648 if (cm_id_priv->id.state != IB_CM_TIMEWAIT ||
2617 cm_id_priv->remote_qpn != timewait_info->remote_qpn) { 2649 cm_id_priv->remote_qpn != timewait_info->remote_qpn) {
2618 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 2650 spin_unlock_irq(&cm_id_priv->lock);
2619 goto out; 2651 goto out;
2620 } 2652 }
2621 cm_id_priv->id.state = IB_CM_IDLE; 2653 cm_id_priv->id.state = IB_CM_IDLE;
2622 ret = atomic_inc_and_test(&cm_id_priv->work_count); 2654 ret = atomic_inc_and_test(&cm_id_priv->work_count);
2623 if (!ret) 2655 if (!ret)
2624 list_add_tail(&work->list, &cm_id_priv->work_list); 2656 list_add_tail(&work->list, &cm_id_priv->work_list);
2625 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 2657 spin_unlock_irq(&cm_id_priv->lock);
2626 2658
2627 if (ret) 2659 if (ret)
2628 cm_process_work(cm_id_priv, work); 2660 cm_process_work(cm_id_priv, work);
@@ -3374,6 +3406,7 @@ static int __init ib_cm_init(void)
3374 idr_init(&cm.local_id_table); 3406 idr_init(&cm.local_id_table);
3375 get_random_bytes(&cm.random_id_operand, sizeof cm.random_id_operand); 3407 get_random_bytes(&cm.random_id_operand, sizeof cm.random_id_operand);
3376 idr_pre_get(&cm.local_id_table, GFP_KERNEL); 3408 idr_pre_get(&cm.local_id_table, GFP_KERNEL);
3409 INIT_LIST_HEAD(&cm.timewait_list);
3377 3410
3378 cm.wq = create_workqueue("ib_cm"); 3411 cm.wq = create_workqueue("ib_cm");
3379 if (!cm.wq) 3412 if (!cm.wq)
@@ -3391,7 +3424,20 @@ error:
3391 3424
3392static void __exit ib_cm_cleanup(void) 3425static void __exit ib_cm_cleanup(void)
3393{ 3426{
3427 struct cm_timewait_info *timewait_info, *tmp;
3428
3429 spin_lock_irq(&cm.lock);
3430 list_for_each_entry(timewait_info, &cm.timewait_list, list)
3431 cancel_delayed_work(&timewait_info->work.work);
3432 spin_unlock_irq(&cm.lock);
3433
3394 destroy_workqueue(cm.wq); 3434 destroy_workqueue(cm.wq);
3435
3436 list_for_each_entry_safe(timewait_info, tmp, &cm.timewait_list, list) {
3437 list_del(&timewait_info->list);
3438 kfree(timewait_info);
3439 }
3440
3395 ib_unregister_client(&cm_client); 3441 ib_unregister_client(&cm_client);
3396 idr_destroy(&cm.local_id_table); 3442 idr_destroy(&cm.local_id_table);
3397} 3443}
diff --git a/drivers/infiniband/hw/amso1100/c2.c b/drivers/infiniband/hw/amso1100/c2.c
index 9e9120f36019..dc1ebeac35c7 100644
--- a/drivers/infiniband/hw/amso1100/c2.c
+++ b/drivers/infiniband/hw/amso1100/c2.c
@@ -72,7 +72,7 @@ static int c2_down(struct net_device *netdev);
72static int c2_xmit_frame(struct sk_buff *skb, struct net_device *netdev); 72static int c2_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
73static void c2_tx_interrupt(struct net_device *netdev); 73static void c2_tx_interrupt(struct net_device *netdev);
74static void c2_rx_interrupt(struct net_device *netdev); 74static void c2_rx_interrupt(struct net_device *netdev);
75static irqreturn_t c2_interrupt(int irq, void *dev_id, struct pt_regs *regs); 75static irqreturn_t c2_interrupt(int irq, void *dev_id);
76static void c2_tx_timeout(struct net_device *netdev); 76static void c2_tx_timeout(struct net_device *netdev);
77static int c2_change_mtu(struct net_device *netdev, int new_mtu); 77static int c2_change_mtu(struct net_device *netdev, int new_mtu);
78static void c2_reset(struct c2_port *c2_port); 78static void c2_reset(struct c2_port *c2_port);
@@ -544,7 +544,7 @@ static void c2_rx_interrupt(struct net_device *netdev)
544/* 544/*
545 * Handle netisr0 TX & RX interrupts. 545 * Handle netisr0 TX & RX interrupts.
546 */ 546 */
547static irqreturn_t c2_interrupt(int irq, void *dev_id, struct pt_regs *regs) 547static irqreturn_t c2_interrupt(int irq, void *dev_id)
548{ 548{
549 unsigned int netisr0, dmaisr; 549 unsigned int netisr0, dmaisr;
550 int handled = 0; 550 int handled = 0;
diff --git a/drivers/infiniband/hw/amso1100/c2_ae.c b/drivers/infiniband/hw/amso1100/c2_ae.c
index 3aae4978e1cb..a31439bd3b67 100644
--- a/drivers/infiniband/hw/amso1100/c2_ae.c
+++ b/drivers/infiniband/hw/amso1100/c2_ae.c
@@ -66,7 +66,6 @@ static int c2_convert_cm_status(u32 c2_status)
66 } 66 }
67} 67}
68 68
69#ifdef DEBUG
70static const char* to_event_str(int event) 69static const char* to_event_str(int event)
71{ 70{
72 static const char* event_str[] = { 71 static const char* event_str[] = {
@@ -144,7 +143,6 @@ static const char *to_qp_state_str(int state)
144 return "<invalid QP state>"; 143 return "<invalid QP state>";
145 }; 144 };
146} 145}
147#endif
148 146
149void c2_ae_event(struct c2_dev *c2dev, u32 mq_index) 147void c2_ae_event(struct c2_dev *c2dev, u32 mq_index)
150{ 148{
diff --git a/drivers/infiniband/hw/amso1100/c2_qp.c b/drivers/infiniband/hw/amso1100/c2_qp.c
index 12261132b077..5bcf697aa335 100644
--- a/drivers/infiniband/hw/amso1100/c2_qp.c
+++ b/drivers/infiniband/hw/amso1100/c2_qp.c
@@ -35,6 +35,8 @@
35 * 35 *
36 */ 36 */
37 37
38#include <linux/delay.h>
39
38#include "c2.h" 40#include "c2.h"
39#include "c2_vq.h" 41#include "c2_vq.h"
40#include "c2_status.h" 42#include "c2_status.h"
@@ -705,10 +707,8 @@ static inline void c2_activity(struct c2_dev *c2dev, u32 mq_index, u16 shared)
705 * cannot get on the bus and the card and system hang in a 707 * cannot get on the bus and the card and system hang in a
706 * deadlock -- thus the need for this code. [TOT] 708 * deadlock -- thus the need for this code. [TOT]
707 */ 709 */
708 while (readl(c2dev->regs + PCI_BAR0_ADAPTER_HINT) & 0x80000000) { 710 while (readl(c2dev->regs + PCI_BAR0_ADAPTER_HINT) & 0x80000000)
709 set_current_state(TASK_UNINTERRUPTIBLE); 711 udelay(10);
710 schedule_timeout(0);
711 }
712 712
713 __raw_writel(C2_HINT_MAKE(mq_index, shared), 713 __raw_writel(C2_HINT_MAKE(mq_index, shared),
714 c2dev->regs + PCI_BAR0_ADAPTER_HINT); 714 c2dev->regs + PCI_BAR0_ADAPTER_HINT);
@@ -766,6 +766,7 @@ int c2_post_send(struct ib_qp *ibqp, struct ib_send_wr *ib_wr,
766 struct c2_dev *c2dev = to_c2dev(ibqp->device); 766 struct c2_dev *c2dev = to_c2dev(ibqp->device);
767 struct c2_qp *qp = to_c2qp(ibqp); 767 struct c2_qp *qp = to_c2qp(ibqp);
768 union c2wr wr; 768 union c2wr wr;
769 unsigned long lock_flags;
769 int err = 0; 770 int err = 0;
770 771
771 u32 flags; 772 u32 flags;
@@ -881,8 +882,10 @@ int c2_post_send(struct ib_qp *ibqp, struct ib_send_wr *ib_wr,
881 /* 882 /*
882 * Post the puppy! 883 * Post the puppy!
883 */ 884 */
885 spin_lock_irqsave(&qp->lock, lock_flags);
884 err = qp_wr_post(&qp->sq_mq, &wr, qp, msg_size); 886 err = qp_wr_post(&qp->sq_mq, &wr, qp, msg_size);
885 if (err) { 887 if (err) {
888 spin_unlock_irqrestore(&qp->lock, lock_flags);
886 break; 889 break;
887 } 890 }
888 891
@@ -890,6 +893,7 @@ int c2_post_send(struct ib_qp *ibqp, struct ib_send_wr *ib_wr,
890 * Enqueue mq index to activity FIFO. 893 * Enqueue mq index to activity FIFO.
891 */ 894 */
892 c2_activity(c2dev, qp->sq_mq.index, qp->sq_mq.hint_count); 895 c2_activity(c2dev, qp->sq_mq.index, qp->sq_mq.hint_count);
896 spin_unlock_irqrestore(&qp->lock, lock_flags);
893 897
894 ib_wr = ib_wr->next; 898 ib_wr = ib_wr->next;
895 } 899 }
@@ -905,6 +909,7 @@ int c2_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *ib_wr,
905 struct c2_dev *c2dev = to_c2dev(ibqp->device); 909 struct c2_dev *c2dev = to_c2dev(ibqp->device);
906 struct c2_qp *qp = to_c2qp(ibqp); 910 struct c2_qp *qp = to_c2qp(ibqp);
907 union c2wr wr; 911 union c2wr wr;
912 unsigned long lock_flags;
908 int err = 0; 913 int err = 0;
909 914
910 if (qp->state > IB_QPS_RTS) 915 if (qp->state > IB_QPS_RTS)
@@ -945,8 +950,10 @@ int c2_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *ib_wr,
945 break; 950 break;
946 } 951 }
947 952
953 spin_lock_irqsave(&qp->lock, lock_flags);
948 err = qp_wr_post(&qp->rq_mq, &wr, qp, qp->rq_mq.msg_size); 954 err = qp_wr_post(&qp->rq_mq, &wr, qp, qp->rq_mq.msg_size);
949 if (err) { 955 if (err) {
956 spin_unlock_irqrestore(&qp->lock, lock_flags);
950 break; 957 break;
951 } 958 }
952 959
@@ -954,6 +961,7 @@ int c2_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *ib_wr,
954 * Enqueue mq index to activity FIFO 961 * Enqueue mq index to activity FIFO
955 */ 962 */
956 c2_activity(c2dev, qp->rq_mq.index, qp->rq_mq.hint_count); 963 c2_activity(c2dev, qp->rq_mq.index, qp->rq_mq.hint_count);
964 spin_unlock_irqrestore(&qp->lock, lock_flags);
957 965
958 ib_wr = ib_wr->next; 966 ib_wr = ib_wr->next;
959 } 967 }
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c
index 2a65b5be1979..048cc443d1e7 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.c
+++ b/drivers/infiniband/hw/ehca/ehca_irq.c
@@ -360,7 +360,7 @@ static inline void reset_eq_pending(struct ehca_cq *cq)
360 return; 360 return;
361} 361}
362 362
363irqreturn_t ehca_interrupt_neq(int irq, void *dev_id, struct pt_regs *regs) 363irqreturn_t ehca_interrupt_neq(int irq, void *dev_id)
364{ 364{
365 struct ehca_shca *shca = (struct ehca_shca*)dev_id; 365 struct ehca_shca *shca = (struct ehca_shca*)dev_id;
366 366
@@ -393,7 +393,7 @@ void ehca_tasklet_neq(unsigned long data)
393 return; 393 return;
394} 394}
395 395
396irqreturn_t ehca_interrupt_eq(int irq, void *dev_id, struct pt_regs *regs) 396irqreturn_t ehca_interrupt_eq(int irq, void *dev_id)
397{ 397{
398 struct ehca_shca *shca = (struct ehca_shca*)dev_id; 398 struct ehca_shca *shca = (struct ehca_shca*)dev_id;
399 399
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.h b/drivers/infiniband/hw/ehca/ehca_irq.h
index 85bf1fe16fe4..be579cc0adf6 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.h
+++ b/drivers/infiniband/hw/ehca/ehca_irq.h
@@ -51,10 +51,10 @@ struct ehca_shca;
51 51
52int ehca_error_data(struct ehca_shca *shca, void *data, u64 resource); 52int ehca_error_data(struct ehca_shca *shca, void *data, u64 resource);
53 53
54irqreturn_t ehca_interrupt_neq(int irq, void *dev_id, struct pt_regs *regs); 54irqreturn_t ehca_interrupt_neq(int irq, void *dev_id);
55void ehca_tasklet_neq(unsigned long data); 55void ehca_tasklet_neq(unsigned long data);
56 56
57irqreturn_t ehca_interrupt_eq(int irq, void *dev_id, struct pt_regs *regs); 57irqreturn_t ehca_interrupt_eq(int irq, void *dev_id);
58void ehca_tasklet_eq(unsigned long data); 58void ehca_tasklet_eq(unsigned long data);
59 59
60struct ehca_cpu_comp_task { 60struct ehca_cpu_comp_task {
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index 6bee53ce5f33..d9079ee12030 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -839,7 +839,7 @@ static void handle_urcv(struct ipath_devdata *dd, u32 istat)
839 } 839 }
840} 840}
841 841
842irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) 842irqreturn_t ipath_intr(int irq, void *data)
843{ 843{
844 struct ipath_devdata *dd = data; 844 struct ipath_devdata *dd = data;
845 u32 istat, chk0rcv = 0; 845 u32 istat, chk0rcv = 0;
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h
index d7540b71b451..7c436697d0e4 100644
--- a/drivers/infiniband/hw/ipath/ipath_kernel.h
+++ b/drivers/infiniband/hw/ipath/ipath_kernel.h
@@ -606,7 +606,7 @@ struct sk_buff *ipath_alloc_skb(struct ipath_devdata *dd, gfp_t);
606 606
607extern int ipath_diag_inuse; 607extern int ipath_diag_inuse;
608 608
609irqreturn_t ipath_intr(int irq, void *devid, struct pt_regs *regs); 609irqreturn_t ipath_intr(int irq, void *devid);
610void ipath_decode_err(char *buf, size_t blen, ipath_err_t err); 610void ipath_decode_err(char *buf, size_t blen, ipath_err_t err);
611#if __IPATH_INFO || __IPATH_DBG 611#if __IPATH_INFO || __IPATH_DBG
612extern const char *ipath_ibcstatus_str[]; 612extern const char *ipath_ibcstatus_str[];
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c b/drivers/infiniband/hw/mthca/mthca_eq.c
index a29b1b6d82b1..e284e0613a94 100644
--- a/drivers/infiniband/hw/mthca/mthca_eq.c
+++ b/drivers/infiniband/hw/mthca/mthca_eq.c
@@ -405,7 +405,7 @@ static int mthca_eq_int(struct mthca_dev *dev, struct mthca_eq *eq)
405 return eqes_found; 405 return eqes_found;
406} 406}
407 407
408static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs *regs) 408static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr)
409{ 409{
410 struct mthca_dev *dev = dev_ptr; 410 struct mthca_dev *dev = dev_ptr;
411 u32 ecr; 411 u32 ecr;
@@ -432,8 +432,7 @@ static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs
432 return IRQ_HANDLED; 432 return IRQ_HANDLED;
433} 433}
434 434
435static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr, 435static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr)
436 struct pt_regs *regs)
437{ 436{
438 struct mthca_eq *eq = eq_ptr; 437 struct mthca_eq *eq = eq_ptr;
439 struct mthca_dev *dev = eq->dev; 438 struct mthca_dev *dev = eq->dev;
@@ -446,7 +445,7 @@ static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr,
446 return IRQ_HANDLED; 445 return IRQ_HANDLED;
447} 446}
448 447
449static irqreturn_t mthca_arbel_interrupt(int irq, void *dev_ptr, struct pt_regs *regs) 448static irqreturn_t mthca_arbel_interrupt(int irq, void *dev_ptr)
450{ 449{
451 struct mthca_dev *dev = dev_ptr; 450 struct mthca_dev *dev = dev_ptr;
452 int work = 0; 451 int work = 0;
@@ -467,8 +466,7 @@ static irqreturn_t mthca_arbel_interrupt(int irq, void *dev_ptr, struct pt_regs
467 return IRQ_RETVAL(work); 466 return IRQ_RETVAL(work);
468} 467}
469 468
470static irqreturn_t mthca_arbel_msi_x_interrupt(int irq, void *eq_ptr, 469static irqreturn_t mthca_arbel_msi_x_interrupt(int irq, void *eq_ptr)
471 struct pt_regs *regs)
472{ 470{
473 struct mthca_eq *eq = eq_ptr; 471 struct mthca_eq *eq = eq_ptr;
474 struct mthca_dev *dev = eq->dev; 472 struct mthca_dev *dev = eq->dev;
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
index 981fe2eebdfa..fc67f780581b 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -179,6 +179,8 @@ static int mthca_query_port(struct ib_device *ibdev,
179 props->max_mtu = out_mad->data[41] & 0xf; 179 props->max_mtu = out_mad->data[41] & 0xf;
180 props->active_mtu = out_mad->data[36] >> 4; 180 props->active_mtu = out_mad->data[36] >> 4;
181 props->subnet_timeout = out_mad->data[51] & 0x1f; 181 props->subnet_timeout = out_mad->data[51] & 0x1f;
182 props->max_vl_num = out_mad->data[37] >> 4;
183 props->init_type_reply = out_mad->data[41] >> 4;
182 184
183 out: 185 out:
184 kfree(in_mad); 186 kfree(in_mad);
diff --git a/drivers/infiniband/hw/mthca/mthca_srq.c b/drivers/infiniband/hw/mthca/mthca_srq.c
index 0f316c87bf64..92a72f521528 100644
--- a/drivers/infiniband/hw/mthca/mthca_srq.c
+++ b/drivers/infiniband/hw/mthca/mthca_srq.c
@@ -201,6 +201,8 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd,
201 201
202 if (mthca_is_memfree(dev)) 202 if (mthca_is_memfree(dev))
203 srq->max = roundup_pow_of_two(srq->max + 1); 203 srq->max = roundup_pow_of_two(srq->max + 1);
204 else
205 srq->max = srq->max + 1;
204 206
205 ds = max(64UL, 207 ds = max(64UL,
206 roundup_pow_of_two(sizeof (struct mthca_next_seg) + 208 roundup_pow_of_two(sizeof (struct mthca_next_seg) +
@@ -277,7 +279,7 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd,
277 srq->first_free = 0; 279 srq->first_free = 0;
278 srq->last_free = srq->max - 1; 280 srq->last_free = srq->max - 1;
279 281
280 attr->max_wr = (mthca_is_memfree(dev)) ? srq->max - 1 : srq->max; 282 attr->max_wr = srq->max - 1;
281 attr->max_sge = srq->max_gs; 283 attr->max_sge = srq->max_gs;
282 284
283 return 0; 285 return 0;
@@ -413,7 +415,7 @@ int mthca_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr)
413 srq_attr->srq_limit = be16_to_cpu(tavor_ctx->limit_watermark); 415 srq_attr->srq_limit = be16_to_cpu(tavor_ctx->limit_watermark);
414 } 416 }
415 417
416 srq_attr->max_wr = (mthca_is_memfree(dev)) ? srq->max - 1 : srq->max; 418 srq_attr->max_wr = srq->max - 1;
417 srq_attr->max_sge = srq->max_gs; 419 srq_attr->max_sge = srq->max_gs;
418 420
419out: 421out:
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index f426a69d9a43..8bf5e9ec7c95 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -355,6 +355,11 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,
355 tx_req->skb = skb; 355 tx_req->skb = skb;
356 addr = dma_map_single(priv->ca->dma_device, skb->data, skb->len, 356 addr = dma_map_single(priv->ca->dma_device, skb->data, skb->len,
357 DMA_TO_DEVICE); 357 DMA_TO_DEVICE);
358 if (unlikely(dma_mapping_error(addr))) {
359 ++priv->stats.tx_errors;
360 dev_kfree_skb_any(skb);
361 return;
362 }
358 pci_unmap_addr_set(tx_req, mapping, addr); 363 pci_unmap_addr_set(tx_req, mapping, addr);
359 364
360 if (unlikely(post_send(priv, priv->tx_head & (ipoib_sendq_size - 1), 365 if (unlikely(post_send(priv, priv->tx_head & (ipoib_sendq_size - 1),
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index 44b9e5be6687..4b09147f438f 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -343,29 +343,32 @@ static int srp_send_req(struct srp_target_port *target)
343 */ 343 */
344 if (target->io_class == SRP_REV10_IB_IO_CLASS) { 344 if (target->io_class == SRP_REV10_IB_IO_CLASS) {
345 memcpy(req->priv.initiator_port_id, 345 memcpy(req->priv.initiator_port_id,
346 target->srp_host->initiator_port_id + 8, 8); 346 &target->path.sgid.global.interface_id, 8);
347 memcpy(req->priv.initiator_port_id + 8, 347 memcpy(req->priv.initiator_port_id + 8,
348 target->srp_host->initiator_port_id, 8); 348 &target->initiator_ext, 8);
349 memcpy(req->priv.target_port_id, &target->ioc_guid, 8); 349 memcpy(req->priv.target_port_id, &target->ioc_guid, 8);
350 memcpy(req->priv.target_port_id + 8, &target->id_ext, 8); 350 memcpy(req->priv.target_port_id + 8, &target->id_ext, 8);
351 } else { 351 } else {
352 memcpy(req->priv.initiator_port_id, 352 memcpy(req->priv.initiator_port_id,
353 target->srp_host->initiator_port_id, 16); 353 &target->initiator_ext, 8);
354 memcpy(req->priv.initiator_port_id + 8,
355 &target->path.sgid.global.interface_id, 8);
354 memcpy(req->priv.target_port_id, &target->id_ext, 8); 356 memcpy(req->priv.target_port_id, &target->id_ext, 8);
355 memcpy(req->priv.target_port_id + 8, &target->ioc_guid, 8); 357 memcpy(req->priv.target_port_id + 8, &target->ioc_guid, 8);
356 } 358 }
357 359
358 /* 360 /*
359 * Topspin/Cisco SRP targets will reject our login unless we 361 * Topspin/Cisco SRP targets will reject our login unless we
360 * zero out the first 8 bytes of our initiator port ID. The 362 * zero out the first 8 bytes of our initiator port ID and set
361 * second 8 bytes must be our local node GUID, but we always 363 * the second 8 bytes to the local node GUID.
362 * use that anyway.
363 */ 364 */
364 if (topspin_workarounds && !memcmp(&target->ioc_guid, topspin_oui, 3)) { 365 if (topspin_workarounds && !memcmp(&target->ioc_guid, topspin_oui, 3)) {
365 printk(KERN_DEBUG PFX "Topspin/Cisco initiator port ID workaround " 366 printk(KERN_DEBUG PFX "Topspin/Cisco initiator port ID workaround "
366 "activated for target GUID %016llx\n", 367 "activated for target GUID %016llx\n",
367 (unsigned long long) be64_to_cpu(target->ioc_guid)); 368 (unsigned long long) be64_to_cpu(target->ioc_guid));
368 memset(req->priv.initiator_port_id, 0, 8); 369 memset(req->priv.initiator_port_id, 0, 8);
370 memcpy(req->priv.initiator_port_id + 8,
371 &target->srp_host->dev->dev->node_guid, 8);
369 } 372 }
370 373
371 status = ib_send_cm_req(target->cm_id, &req->param); 374 status = ib_send_cm_req(target->cm_id, &req->param);
@@ -1553,6 +1556,7 @@ enum {
1553 SRP_OPT_MAX_SECT = 1 << 5, 1556 SRP_OPT_MAX_SECT = 1 << 5,
1554 SRP_OPT_MAX_CMD_PER_LUN = 1 << 6, 1557 SRP_OPT_MAX_CMD_PER_LUN = 1 << 6,
1555 SRP_OPT_IO_CLASS = 1 << 7, 1558 SRP_OPT_IO_CLASS = 1 << 7,
1559 SRP_OPT_INITIATOR_EXT = 1 << 8,
1556 SRP_OPT_ALL = (SRP_OPT_ID_EXT | 1560 SRP_OPT_ALL = (SRP_OPT_ID_EXT |
1557 SRP_OPT_IOC_GUID | 1561 SRP_OPT_IOC_GUID |
1558 SRP_OPT_DGID | 1562 SRP_OPT_DGID |
@@ -1569,6 +1573,7 @@ static match_table_t srp_opt_tokens = {
1569 { SRP_OPT_MAX_SECT, "max_sect=%d" }, 1573 { SRP_OPT_MAX_SECT, "max_sect=%d" },
1570 { SRP_OPT_MAX_CMD_PER_LUN, "max_cmd_per_lun=%d" }, 1574 { SRP_OPT_MAX_CMD_PER_LUN, "max_cmd_per_lun=%d" },
1571 { SRP_OPT_IO_CLASS, "io_class=%x" }, 1575 { SRP_OPT_IO_CLASS, "io_class=%x" },
1576 { SRP_OPT_INITIATOR_EXT, "initiator_ext=%s" },
1572 { SRP_OPT_ERR, NULL } 1577 { SRP_OPT_ERR, NULL }
1573}; 1578};
1574 1579
@@ -1668,6 +1673,12 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
1668 target->io_class = token; 1673 target->io_class = token;
1669 break; 1674 break;
1670 1675
1676 case SRP_OPT_INITIATOR_EXT:
1677 p = match_strdup(args);
1678 target->initiator_ext = cpu_to_be64(simple_strtoull(p, NULL, 16));
1679 kfree(p);
1680 break;
1681
1671 default: 1682 default:
1672 printk(KERN_WARNING PFX "unknown parameter or missing value " 1683 printk(KERN_WARNING PFX "unknown parameter or missing value "
1673 "'%s' in target creation request\n", p); 1684 "'%s' in target creation request\n", p);
@@ -1708,7 +1719,6 @@ static ssize_t srp_create_target(struct class_device *class_dev,
1708 target_host->max_lun = SRP_MAX_LUN; 1719 target_host->max_lun = SRP_MAX_LUN;
1709 1720
1710 target = host_to_target(target_host); 1721 target = host_to_target(target_host);
1711 memset(target, 0, sizeof *target);
1712 1722
1713 target->io_class = SRP_REV16A_IB_IO_CLASS; 1723 target->io_class = SRP_REV16A_IB_IO_CLASS;
1714 target->scsi_host = target_host; 1724 target->scsi_host = target_host;
@@ -1815,9 +1825,6 @@ static struct srp_host *srp_add_port(struct srp_device *device, u8 port)
1815 host->dev = device; 1825 host->dev = device;
1816 host->port = port; 1826 host->port = port;
1817 1827
1818 host->initiator_port_id[7] = port;
1819 memcpy(host->initiator_port_id + 8, &device->dev->node_guid, 8);
1820
1821 host->class_dev.class = &srp_class; 1828 host->class_dev.class = &srp_class;
1822 host->class_dev.dev = device->dev->dma_device; 1829 host->class_dev.dev = device->dev->dma_device;
1823 snprintf(host->class_dev.class_id, BUS_ID_SIZE, "srp-%s-%d", 1830 snprintf(host->class_dev.class_id, BUS_ID_SIZE, "srp-%s-%d",
diff --git a/drivers/infiniband/ulp/srp/ib_srp.h b/drivers/infiniband/ulp/srp/ib_srp.h
index 5b581fb8eb0d..d4e35ef51374 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.h
+++ b/drivers/infiniband/ulp/srp/ib_srp.h
@@ -91,7 +91,6 @@ struct srp_device {
91}; 91};
92 92
93struct srp_host { 93struct srp_host {
94 u8 initiator_port_id[16];
95 struct srp_device *dev; 94 struct srp_device *dev;
96 u8 port; 95 u8 port;
97 struct class_device class_dev; 96 struct class_device class_dev;
@@ -122,6 +121,7 @@ struct srp_target_port {
122 __be64 id_ext; 121 __be64 id_ext;
123 __be64 ioc_guid; 122 __be64 ioc_guid;
124 __be64 service_id; 123 __be64 service_id;
124 __be64 initiator_ext;
125 u16 io_class; 125 u16 io_class;
126 struct srp_host *srp_host; 126 struct srp_host *srp_host;
127 struct Scsi_Host *scsi_host; 127 struct Scsi_Host *scsi_host;
diff --git a/drivers/input/joystick/amijoy.c b/drivers/input/joystick/amijoy.c
index 7249d324297b..650acf3a30b7 100644
--- a/drivers/input/joystick/amijoy.c
+++ b/drivers/input/joystick/amijoy.c
@@ -57,7 +57,7 @@ static DEFINE_MUTEX(amijoy_mutex);
57static struct input_dev *amijoy_dev[2]; 57static struct input_dev *amijoy_dev[2];
58static char *amijoy_phys[2] = { "amijoy/input0", "amijoy/input1" }; 58static char *amijoy_phys[2] = { "amijoy/input0", "amijoy/input1" };
59 59
60static irqreturn_t amijoy_interrupt(int irq, void *dummy, struct pt_regs *fp) 60static irqreturn_t amijoy_interrupt(int irq, void *dummy)
61{ 61{
62 int i, data = 0, button = 0; 62 int i, data = 0, button = 0;
63 63
@@ -69,8 +69,6 @@ static irqreturn_t amijoy_interrupt(int irq, void *dummy, struct pt_regs *fp)
69 case 1: data = ~amiga_custom.joy1dat; button = (~ciaa.pra >> 7) & 1; break; 69 case 1: data = ~amiga_custom.joy1dat; button = (~ciaa.pra >> 7) & 1; break;
70 } 70 }
71 71
72 input_regs(amijoy_dev[i], fp);
73
74 input_report_key(amijoy_dev[i], BTN_TRIGGER, button); 72 input_report_key(amijoy_dev[i], BTN_TRIGGER, button);
75 73
76 input_report_abs(amijoy_dev[i], ABS_X, ((data >> 1) & 1) - ((data >> 9) & 1)); 74 input_report_abs(amijoy_dev[i], ABS_X, ((data >> 1) & 1) - ((data >> 9) & 1));
diff --git a/drivers/input/joystick/iforce/iforce-packets.c b/drivers/input/joystick/iforce/iforce-packets.c
index 8632d47a7fbe..808f05932a6f 100644
--- a/drivers/input/joystick/iforce/iforce-packets.c
+++ b/drivers/input/joystick/iforce/iforce-packets.c
@@ -155,7 +155,7 @@ static int mark_core_as_ready(struct iforce *iforce, unsigned short addr)
155 return -1; 155 return -1;
156} 156}
157 157
158void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data, struct pt_regs *regs) 158void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data)
159{ 159{
160 struct input_dev *dev = iforce->dev; 160 struct input_dev *dev = iforce->dev;
161 int i; 161 int i;
@@ -183,9 +183,6 @@ void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data,
183 183
184 case 0x01: /* joystick position data */ 184 case 0x01: /* joystick position data */
185 case 0x03: /* wheel position data */ 185 case 0x03: /* wheel position data */
186
187 input_regs(dev, regs);
188
189 if (HI(cmd) == 1) { 186 if (HI(cmd) == 1) {
190 input_report_abs(dev, ABS_X, (__s16) (((__s16)data[1] << 8) | data[0])); 187 input_report_abs(dev, ABS_X, (__s16) (((__s16)data[1] << 8) | data[0]));
191 input_report_abs(dev, ABS_Y, (__s16) (((__s16)data[3] << 8) | data[2])); 188 input_report_abs(dev, ABS_Y, (__s16) (((__s16)data[3] << 8) | data[2]));
@@ -224,7 +221,6 @@ void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data,
224 break; 221 break;
225 222
226 case 0x02: /* status report */ 223 case 0x02: /* status report */
227 input_regs(dev, regs);
228 input_report_key(dev, BTN_DEAD, data[0] & 0x02); 224 input_report_key(dev, BTN_DEAD, data[0] & 0x02);
229 input_sync(dev); 225 input_sync(dev);
230 226
diff --git a/drivers/input/joystick/iforce/iforce-serio.c b/drivers/input/joystick/iforce/iforce-serio.c
index 64a78c515484..ca08f45c2040 100644
--- a/drivers/input/joystick/iforce/iforce-serio.c
+++ b/drivers/input/joystick/iforce/iforce-serio.c
@@ -81,7 +81,7 @@ static void iforce_serio_write_wakeup(struct serio *serio)
81} 81}
82 82
83static irqreturn_t iforce_serio_irq(struct serio *serio, 83static irqreturn_t iforce_serio_irq(struct serio *serio,
84 unsigned char data, unsigned int flags, struct pt_regs *regs) 84 unsigned char data, unsigned int flags)
85{ 85{
86 struct iforce *iforce = serio_get_drvdata(serio); 86 struct iforce *iforce = serio_get_drvdata(serio);
87 87
@@ -115,7 +115,7 @@ static irqreturn_t iforce_serio_irq(struct serio *serio,
115 } 115 }
116 116
117 if (iforce->idx == iforce->len) { 117 if (iforce->idx == iforce->len) {
118 iforce_process_packet(iforce, (iforce->id << 8) | iforce->idx, iforce->data, regs); 118 iforce_process_packet(iforce, (iforce->id << 8) | iforce->idx, iforce->data);
119 iforce->pkt = 0; 119 iforce->pkt = 0;
120 iforce->id = 0; 120 iforce->id = 0;
121 iforce->len = 0; 121 iforce->len = 0;
diff --git a/drivers/input/joystick/iforce/iforce-usb.c b/drivers/input/joystick/iforce/iforce-usb.c
index fe79d158456d..105112fb7b57 100644
--- a/drivers/input/joystick/iforce/iforce-usb.c
+++ b/drivers/input/joystick/iforce/iforce-usb.c
@@ -74,7 +74,7 @@ void iforce_usb_xmit(struct iforce *iforce)
74 spin_unlock_irqrestore(&iforce->xmit_lock, flags); 74 spin_unlock_irqrestore(&iforce->xmit_lock, flags);
75} 75}
76 76
77static void iforce_usb_irq(struct urb *urb, struct pt_regs *regs) 77static void iforce_usb_irq(struct urb *urb)
78{ 78{
79 struct iforce *iforce = urb->context; 79 struct iforce *iforce = urb->context;
80 int status; 80 int status;
@@ -96,7 +96,7 @@ static void iforce_usb_irq(struct urb *urb, struct pt_regs *regs)
96 } 96 }
97 97
98 iforce_process_packet(iforce, 98 iforce_process_packet(iforce,
99 (iforce->data[0] << 8) | (urb->actual_length - 1), iforce->data + 1, regs); 99 (iforce->data[0] << 8) | (urb->actual_length - 1), iforce->data + 1);
100 100
101exit: 101exit:
102 status = usb_submit_urb (urb, GFP_ATOMIC); 102 status = usb_submit_urb (urb, GFP_ATOMIC);
@@ -105,7 +105,7 @@ exit:
105 __FUNCTION__, status); 105 __FUNCTION__, status);
106} 106}
107 107
108static void iforce_usb_out(struct urb *urb, struct pt_regs *regs) 108static void iforce_usb_out(struct urb *urb)
109{ 109{
110 struct iforce *iforce = urb->context; 110 struct iforce *iforce = urb->context;
111 111
@@ -119,7 +119,7 @@ static void iforce_usb_out(struct urb *urb, struct pt_regs *regs)
119 wake_up(&iforce->wait); 119 wake_up(&iforce->wait);
120} 120}
121 121
122static void iforce_usb_ctrl(struct urb *urb, struct pt_regs *regs) 122static void iforce_usb_ctrl(struct urb *urb)
123{ 123{
124 struct iforce *iforce = urb->context; 124 struct iforce *iforce = urb->context;
125 if (urb->status) return; 125 if (urb->status) return;
diff --git a/drivers/input/joystick/iforce/iforce.h b/drivers/input/joystick/iforce/iforce.h
index 947df2739843..ffaeaefa1a42 100644
--- a/drivers/input/joystick/iforce/iforce.h
+++ b/drivers/input/joystick/iforce/iforce.h
@@ -160,7 +160,7 @@ void iforce_delete_device(struct iforce *iforce);
160 160
161/* iforce-packets.c */ 161/* iforce-packets.c */
162int iforce_control_playback(struct iforce*, u16 id, unsigned int); 162int iforce_control_playback(struct iforce*, u16 id, unsigned int);
163void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data, struct pt_regs *regs); 163void iforce_process_packet(struct iforce *iforce, u16 cmd, unsigned char *data);
164int iforce_send_packet(struct iforce *iforce, u16 cmd, unsigned char* data); 164int iforce_send_packet(struct iforce *iforce, u16 cmd, unsigned char* data);
165void iforce_dump_packet(char *msg, u16 cmd, unsigned char *data) ; 165void iforce_dump_packet(char *msg, u16 cmd, unsigned char *data) ;
166int iforce_get_id_packet(struct iforce *iforce, char *packet); 166int iforce_get_id_packet(struct iforce *iforce, char *packet);
diff --git a/drivers/input/joystick/magellan.c b/drivers/input/joystick/magellan.c
index 168b1061a03b..e3d19444ba2e 100644
--- a/drivers/input/joystick/magellan.c
+++ b/drivers/input/joystick/magellan.c
@@ -82,7 +82,7 @@ static int magellan_crunch_nibbles(unsigned char *data, int count)
82 return 0; 82 return 0;
83} 83}
84 84
85static void magellan_process_packet(struct magellan* magellan, struct pt_regs *regs) 85static void magellan_process_packet(struct magellan* magellan)
86{ 86{
87 struct input_dev *dev = magellan->dev; 87 struct input_dev *dev = magellan->dev;
88 unsigned char *data = magellan->data; 88 unsigned char *data = magellan->data;
@@ -90,8 +90,6 @@ static void magellan_process_packet(struct magellan* magellan, struct pt_regs *r
90 90
91 if (!magellan->idx) return; 91 if (!magellan->idx) return;
92 92
93 input_regs(dev, regs);
94
95 switch (magellan->data[0]) { 93 switch (magellan->data[0]) {
96 94
97 case 'd': /* Axis data */ 95 case 'd': /* Axis data */
@@ -115,12 +113,12 @@ static void magellan_process_packet(struct magellan* magellan, struct pt_regs *r
115} 113}
116 114
117static irqreturn_t magellan_interrupt(struct serio *serio, 115static irqreturn_t magellan_interrupt(struct serio *serio,
118 unsigned char data, unsigned int flags, struct pt_regs *regs) 116 unsigned char data, unsigned int flags)
119{ 117{
120 struct magellan* magellan = serio_get_drvdata(serio); 118 struct magellan* magellan = serio_get_drvdata(serio);
121 119
122 if (data == '\r') { 120 if (data == '\r') {
123 magellan_process_packet(magellan, regs); 121 magellan_process_packet(magellan);
124 magellan->idx = 0; 122 magellan->idx = 0;
125 } else { 123 } else {
126 if (magellan->idx < MAGELLAN_MAX_LENGTH) 124 if (magellan->idx < MAGELLAN_MAX_LENGTH)
diff --git a/drivers/input/joystick/spaceball.c b/drivers/input/joystick/spaceball.c
index 7a19ee052972..2a9808cf826f 100644
--- a/drivers/input/joystick/spaceball.c
+++ b/drivers/input/joystick/spaceball.c
@@ -82,7 +82,7 @@ struct spaceball {
82 * SpaceBall. 82 * SpaceBall.
83 */ 83 */
84 84
85static void spaceball_process_packet(struct spaceball* spaceball, struct pt_regs *regs) 85static void spaceball_process_packet(struct spaceball* spaceball)
86{ 86{
87 struct input_dev *dev = spaceball->dev; 87 struct input_dev *dev = spaceball->dev;
88 unsigned char *data = spaceball->data; 88 unsigned char *data = spaceball->data;
@@ -90,8 +90,6 @@ static void spaceball_process_packet(struct spaceball* spaceball, struct pt_regs
90 90
91 if (spaceball->idx < 2) return; 91 if (spaceball->idx < 2) return;
92 92
93 input_regs(dev, regs);
94
95 switch (spaceball->data[0]) { 93 switch (spaceball->data[0]) {
96 94
97 case 'D': /* Ball data */ 95 case 'D': /* Ball data */
@@ -151,13 +149,13 @@ static void spaceball_process_packet(struct spaceball* spaceball, struct pt_regs
151 */ 149 */
152 150
153static irqreturn_t spaceball_interrupt(struct serio *serio, 151static irqreturn_t spaceball_interrupt(struct serio *serio,
154 unsigned char data, unsigned int flags, struct pt_regs *regs) 152 unsigned char data, unsigned int flags)
155{ 153{
156 struct spaceball *spaceball = serio_get_drvdata(serio); 154 struct spaceball *spaceball = serio_get_drvdata(serio);
157 155
158 switch (data) { 156 switch (data) {
159 case 0xd: 157 case 0xd:
160 spaceball_process_packet(spaceball, regs); 158 spaceball_process_packet(spaceball);
161 spaceball->idx = 0; 159 spaceball->idx = 0;
162 spaceball->escape = 0; 160 spaceball->escape = 0;
163 break; 161 break;
diff --git a/drivers/input/joystick/spaceorb.c b/drivers/input/joystick/spaceorb.c
index 3e2782e79834..c4db0247c5fb 100644
--- a/drivers/input/joystick/spaceorb.c
+++ b/drivers/input/joystick/spaceorb.c
@@ -74,7 +74,7 @@ static unsigned char *spaceorb_errors[] = { "EEPROM storing 0 failed", "Receive
74 * SpaceOrb. 74 * SpaceOrb.
75 */ 75 */
76 76
77static void spaceorb_process_packet(struct spaceorb *spaceorb, struct pt_regs *regs) 77static void spaceorb_process_packet(struct spaceorb *spaceorb)
78{ 78{
79 struct input_dev *dev = spaceorb->dev; 79 struct input_dev *dev = spaceorb->dev;
80 unsigned char *data = spaceorb->data; 80 unsigned char *data = spaceorb->data;
@@ -86,8 +86,6 @@ static void spaceorb_process_packet(struct spaceorb *spaceorb, struct pt_regs *r
86 for (i = 0; i < spaceorb->idx; i++) c ^= data[i]; 86 for (i = 0; i < spaceorb->idx; i++) c ^= data[i];
87 if (c) return; 87 if (c) return;
88 88
89 input_regs(dev, regs);
90
91 switch (data[0]) { 89 switch (data[0]) {
92 90
93 case 'R': /* Reset packet */ 91 case 'R': /* Reset packet */
@@ -131,12 +129,12 @@ static void spaceorb_process_packet(struct spaceorb *spaceorb, struct pt_regs *r
131} 129}
132 130
133static irqreturn_t spaceorb_interrupt(struct serio *serio, 131static irqreturn_t spaceorb_interrupt(struct serio *serio,
134 unsigned char data, unsigned int flags, struct pt_regs *regs) 132 unsigned char data, unsigned int flags)
135{ 133{
136 struct spaceorb* spaceorb = serio_get_drvdata(serio); 134 struct spaceorb* spaceorb = serio_get_drvdata(serio);
137 135
138 if (~data & 0x80) { 136 if (~data & 0x80) {
139 if (spaceorb->idx) spaceorb_process_packet(spaceorb, regs); 137 if (spaceorb->idx) spaceorb_process_packet(spaceorb);
140 spaceorb->idx = 0; 138 spaceorb->idx = 0;
141 } 139 }
142 if (spaceorb->idx < SPACEORB_MAX_LENGTH) 140 if (spaceorb->idx < SPACEORB_MAX_LENGTH)
diff --git a/drivers/input/joystick/stinger.c b/drivers/input/joystick/stinger.c
index 011ec4858e15..1ffb03223311 100644
--- a/drivers/input/joystick/stinger.c
+++ b/drivers/input/joystick/stinger.c
@@ -64,15 +64,13 @@ struct stinger {
64 * Stinger. It updates the data accordingly. 64 * Stinger. It updates the data accordingly.
65 */ 65 */
66 66
67static void stinger_process_packet(struct stinger *stinger, struct pt_regs *regs) 67static void stinger_process_packet(struct stinger *stinger)
68{ 68{
69 struct input_dev *dev = stinger->dev; 69 struct input_dev *dev = stinger->dev;
70 unsigned char *data = stinger->data; 70 unsigned char *data = stinger->data;
71 71
72 if (!stinger->idx) return; 72 if (!stinger->idx) return;
73 73
74 input_regs(dev, regs);
75
76 input_report_key(dev, BTN_A, ((data[0] & 0x20) >> 5)); 74 input_report_key(dev, BTN_A, ((data[0] & 0x20) >> 5));
77 input_report_key(dev, BTN_B, ((data[0] & 0x10) >> 4)); 75 input_report_key(dev, BTN_B, ((data[0] & 0x10) >> 4));
78 input_report_key(dev, BTN_C, ((data[0] & 0x08) >> 3)); 76 input_report_key(dev, BTN_C, ((data[0] & 0x08) >> 3));
@@ -99,7 +97,7 @@ static void stinger_process_packet(struct stinger *stinger, struct pt_regs *regs
99 */ 97 */
100 98
101static irqreturn_t stinger_interrupt(struct serio *serio, 99static irqreturn_t stinger_interrupt(struct serio *serio,
102 unsigned char data, unsigned int flags, struct pt_regs *regs) 100 unsigned char data, unsigned int flags)
103{ 101{
104 struct stinger *stinger = serio_get_drvdata(serio); 102 struct stinger *stinger = serio_get_drvdata(serio);
105 103
@@ -109,7 +107,7 @@ static irqreturn_t stinger_interrupt(struct serio *serio,
109 stinger->data[stinger->idx++] = data; 107 stinger->data[stinger->idx++] = data;
110 108
111 if (stinger->idx == 4) { 109 if (stinger->idx == 4) {
112 stinger_process_packet(stinger, regs); 110 stinger_process_packet(stinger);
113 stinger->idx = 0; 111 stinger->idx = 0;
114 } 112 }
115 113
diff --git a/drivers/input/joystick/twidjoy.c b/drivers/input/joystick/twidjoy.c
index 076f237d9654..49085df2d631 100644
--- a/drivers/input/joystick/twidjoy.c
+++ b/drivers/input/joystick/twidjoy.c
@@ -104,7 +104,7 @@ struct twidjoy {
104 * Twiddler. It updates the data accordingly. 104 * Twiddler. It updates the data accordingly.
105 */ 105 */
106 106
107static void twidjoy_process_packet(struct twidjoy *twidjoy, struct pt_regs *regs) 107static void twidjoy_process_packet(struct twidjoy *twidjoy)
108{ 108{
109 struct input_dev *dev = twidjoy->dev; 109 struct input_dev *dev = twidjoy->dev;
110 unsigned char *data = twidjoy->data; 110 unsigned char *data = twidjoy->data;
@@ -113,8 +113,6 @@ static void twidjoy_process_packet(struct twidjoy *twidjoy, struct pt_regs *regs
113 113
114 button_bits = ((data[1] & 0x7f) << 7) | (data[0] & 0x7f); 114 button_bits = ((data[1] & 0x7f) << 7) | (data[0] & 0x7f);
115 115
116 input_regs(dev, regs);
117
118 for (bp = twidjoy_buttons; bp->bitmask; bp++) { 116 for (bp = twidjoy_buttons; bp->bitmask; bp++) {
119 int value = (button_bits & (bp->bitmask << bp->bitshift)) >> bp->bitshift; 117 int value = (button_bits & (bp->bitmask << bp->bitshift)) >> bp->bitshift;
120 int i; 118 int i;
@@ -141,7 +139,7 @@ static void twidjoy_process_packet(struct twidjoy *twidjoy, struct pt_regs *regs
141 * packet processing routine. 139 * packet processing routine.
142 */ 140 */
143 141
144static irqreturn_t twidjoy_interrupt(struct serio *serio, unsigned char data, unsigned int flags, struct pt_regs *regs) 142static irqreturn_t twidjoy_interrupt(struct serio *serio, unsigned char data, unsigned int flags)
145{ 143{
146 struct twidjoy *twidjoy = serio_get_drvdata(serio); 144 struct twidjoy *twidjoy = serio_get_drvdata(serio);
147 145
@@ -158,7 +156,7 @@ static irqreturn_t twidjoy_interrupt(struct serio *serio, unsigned char data, un
158 twidjoy->data[twidjoy->idx++] = data; 156 twidjoy->data[twidjoy->idx++] = data;
159 157
160 if (twidjoy->idx == TWIDJOY_MAX_LENGTH) { 158 if (twidjoy->idx == TWIDJOY_MAX_LENGTH) {
161 twidjoy_process_packet(twidjoy, regs); 159 twidjoy_process_packet(twidjoy);
162 twidjoy->idx = 0; 160 twidjoy->idx = 0;
163 } 161 }
164 162
diff --git a/drivers/input/joystick/warrior.c b/drivers/input/joystick/warrior.c
index f9c1a03214eb..35edea1ab955 100644
--- a/drivers/input/joystick/warrior.c
+++ b/drivers/input/joystick/warrior.c
@@ -64,15 +64,13 @@ struct warrior {
64 * Warrior. It updates the data accordingly. 64 * Warrior. It updates the data accordingly.
65 */ 65 */
66 66
67static void warrior_process_packet(struct warrior *warrior, struct pt_regs *regs) 67static void warrior_process_packet(struct warrior *warrior)
68{ 68{
69 struct input_dev *dev = warrior->dev; 69 struct input_dev *dev = warrior->dev;
70 unsigned char *data = warrior->data; 70 unsigned char *data = warrior->data;
71 71
72 if (!warrior->idx) return; 72 if (!warrior->idx) return;
73 73
74 input_regs(dev, regs);
75
76 switch ((data[0] >> 4) & 7) { 74 switch ((data[0] >> 4) & 7) {
77 case 1: /* Button data */ 75 case 1: /* Button data */
78 input_report_key(dev, BTN_TRIGGER, data[3] & 1); 76 input_report_key(dev, BTN_TRIGGER, data[3] & 1);
@@ -101,12 +99,12 @@ static void warrior_process_packet(struct warrior *warrior, struct pt_regs *regs
101 */ 99 */
102 100
103static irqreturn_t warrior_interrupt(struct serio *serio, 101static irqreturn_t warrior_interrupt(struct serio *serio,
104 unsigned char data, unsigned int flags, struct pt_regs *regs) 102 unsigned char data, unsigned int flags)
105{ 103{
106 struct warrior *warrior = serio_get_drvdata(serio); 104 struct warrior *warrior = serio_get_drvdata(serio);
107 105
108 if (data & 0x80) { 106 if (data & 0x80) {
109 if (warrior->idx) warrior_process_packet(warrior, regs); 107 if (warrior->idx) warrior_process_packet(warrior);
110 warrior->idx = 0; 108 warrior->idx = 0;
111 warrior->len = warrior_lengths[(data >> 4) & 7]; 109 warrior->len = warrior_lengths[(data >> 4) & 7];
112 } 110 }
@@ -115,7 +113,7 @@ static irqreturn_t warrior_interrupt(struct serio *serio,
115 warrior->data[warrior->idx++] = data; 113 warrior->data[warrior->idx++] = data;
116 114
117 if (warrior->idx == warrior->len) { 115 if (warrior->idx == warrior->len) {
118 if (warrior->idx) warrior_process_packet(warrior, regs); 116 if (warrior->idx) warrior_process_packet(warrior);
119 warrior->idx = 0; 117 warrior->idx = 0;
120 warrior->len = 0; 118 warrior->len = 0;
121 } 119 }
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
index 679bde34d247..81a333f73010 100644
--- a/drivers/input/keyboard/Kconfig
+++ b/drivers/input/keyboard/Kconfig
@@ -166,7 +166,7 @@ config KEYBOARD_AMIGA
166 166
167config KEYBOARD_HIL_OLD 167config KEYBOARD_HIL_OLD
168 tristate "HP HIL keyboard support (simple driver)" 168 tristate "HP HIL keyboard support (simple driver)"
169 depends on GSC 169 depends on GSC || HP300
170 default y 170 default y
171 help 171 help
172 The "Human Interface Loop" is a older, 8-channel USB-like 172 The "Human Interface Loop" is a older, 8-channel USB-like
@@ -183,7 +183,7 @@ config KEYBOARD_HIL_OLD
183 183
184config KEYBOARD_HIL 184config KEYBOARD_HIL
185 tristate "HP HIL keyboard support" 185 tristate "HP HIL keyboard support"
186 depends on GSC 186 depends on GSC || HP300
187 default y 187 default y
188 select HP_SDC 188 select HP_SDC
189 select HIL_MLC 189 select HIL_MLC
diff --git a/drivers/input/keyboard/amikbd.c b/drivers/input/keyboard/amikbd.c
index f1f9db9d282c..8abdbd0ee8f9 100644
--- a/drivers/input/keyboard/amikbd.c
+++ b/drivers/input/keyboard/amikbd.c
@@ -158,7 +158,7 @@ static const char *amikbd_messages[8] = {
158 158
159static struct input_dev *amikbd_dev; 159static struct input_dev *amikbd_dev;
160 160
161static irqreturn_t amikbd_interrupt(int irq, void *dummy, struct pt_regs *fp) 161static irqreturn_t amikbd_interrupt(int irq, void *dummy)
162{ 162{
163 unsigned char scancode, down; 163 unsigned char scancode, down;
164 164
@@ -171,8 +171,6 @@ static irqreturn_t amikbd_interrupt(int irq, void *dummy, struct pt_regs *fp)
171 scancode >>= 1; 171 scancode >>= 1;
172 172
173 if (scancode < 0x78) { /* scancodes < 0x78 are keys */ 173 if (scancode < 0x78) { /* scancodes < 0x78 are keys */
174 input_regs(amikbd_dev, fp);
175
176 if (scancode == 98) { /* CapsLock is a toggle switch key on Amiga */ 174 if (scancode == 98) { /* CapsLock is a toggle switch key on Amiga */
177 input_report_key(amikbd_dev, scancode, 1); 175 input_report_key(amikbd_dev, scancode, 1);
178 input_report_key(amikbd_dev, scancode, 0); 176 input_report_key(amikbd_dev, scancode, 0);
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 40244d4ce0f1..b6ef9eaad1dc 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -318,7 +318,7 @@ static unsigned int atkbd_compat_scancode(struct atkbd *atkbd, unsigned int code
318 */ 318 */
319 319
320static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data, 320static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
321 unsigned int flags, struct pt_regs *regs) 321 unsigned int flags)
322{ 322{
323 struct atkbd *atkbd = serio_get_drvdata(serio); 323 struct atkbd *atkbd = serio_get_drvdata(serio);
324 struct input_dev *dev = atkbd->dev; 324 struct input_dev *dev = atkbd->dev;
@@ -458,7 +458,6 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
458 atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]) / 2; 458 atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]) / 2;
459 } 459 }
460 460
461 input_regs(dev, regs);
462 input_event(dev, EV_KEY, keycode, value); 461 input_event(dev, EV_KEY, keycode, value);
463 input_sync(dev); 462 input_sync(dev);
464 463
@@ -469,7 +468,6 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
469 } 468 }
470 469
471 if (atkbd->scroll) { 470 if (atkbd->scroll) {
472 input_regs(dev, regs);
473 if (click != -1) 471 if (click != -1)
474 input_report_key(dev, BTN_MIDDLE, click); 472 input_report_key(dev, BTN_MIDDLE, click);
475 input_report_rel(dev, REL_WHEEL, scroll); 473 input_report_rel(dev, REL_WHEEL, scroll);
diff --git a/drivers/input/keyboard/corgikbd.c b/drivers/input/keyboard/corgikbd.c
index 1e03153b9bca..cb70970625b5 100644
--- a/drivers/input/keyboard/corgikbd.c
+++ b/drivers/input/keyboard/corgikbd.c
@@ -129,7 +129,7 @@ static inline void corgikbd_reset_col(int col)
129 */ 129 */
130 130
131/* Scan the hardware keyboard and push any changes up through the input layer */ 131/* Scan the hardware keyboard and push any changes up through the input layer */
132static void corgikbd_scankeyboard(struct corgikbd *corgikbd_data, struct pt_regs *regs) 132static void corgikbd_scankeyboard(struct corgikbd *corgikbd_data)
133{ 133{
134 unsigned int row, col, rowd; 134 unsigned int row, col, rowd;
135 unsigned long flags; 135 unsigned long flags;
@@ -140,9 +140,6 @@ static void corgikbd_scankeyboard(struct corgikbd *corgikbd_data, struct pt_regs
140 140
141 spin_lock_irqsave(&corgikbd_data->lock, flags); 141 spin_lock_irqsave(&corgikbd_data->lock, flags);
142 142
143 if (regs)
144 input_regs(corgikbd_data->input, regs);
145
146 num_pressed = 0; 143 num_pressed = 0;
147 for (col = 0; col < KB_COLS; col++) { 144 for (col = 0; col < KB_COLS; col++) {
148 /* 145 /*
@@ -191,14 +188,14 @@ static void corgikbd_scankeyboard(struct corgikbd *corgikbd_data, struct pt_regs
191/* 188/*
192 * corgi keyboard interrupt handler. 189 * corgi keyboard interrupt handler.
193 */ 190 */
194static irqreturn_t corgikbd_interrupt(int irq, void *dev_id, struct pt_regs *regs) 191static irqreturn_t corgikbd_interrupt(int irq, void *dev_id)
195{ 192{
196 struct corgikbd *corgikbd_data = dev_id; 193 struct corgikbd *corgikbd_data = dev_id;
197 194
198 if (!timer_pending(&corgikbd_data->timer)) { 195 if (!timer_pending(&corgikbd_data->timer)) {
199 /** wait chattering delay **/ 196 /** wait chattering delay **/
200 udelay(20); 197 udelay(20);
201 corgikbd_scankeyboard(corgikbd_data, regs); 198 corgikbd_scankeyboard(corgikbd_data);
202 } 199 }
203 200
204 return IRQ_HANDLED; 201 return IRQ_HANDLED;
diff --git a/drivers/input/keyboard/hil_kbd.c b/drivers/input/keyboard/hil_kbd.c
index 2e4abdc26367..e774dd31e99b 100644
--- a/drivers/input/keyboard/hil_kbd.c
+++ b/drivers/input/keyboard/hil_kbd.c
@@ -198,7 +198,7 @@ static void hil_kbd_process_err(struct hil_kbd *kbd) {
198} 198}
199 199
200static irqreturn_t hil_kbd_interrupt(struct serio *serio, 200static irqreturn_t hil_kbd_interrupt(struct serio *serio,
201 unsigned char data, unsigned int flags, struct pt_regs *regs) 201 unsigned char data, unsigned int flags)
202{ 202{
203 struct hil_kbd *kbd; 203 struct hil_kbd *kbd;
204 hil_packet packet; 204 hil_packet packet;
@@ -328,7 +328,7 @@ static int hil_kbd_connect(struct serio *serio, struct serio_driver *drv)
328 kbd->dev->id.vendor = PCI_VENDOR_ID_HP; 328 kbd->dev->id.vendor = PCI_VENDOR_ID_HP;
329 kbd->dev->id.product = 0x0001; /* TODO: get from kbd->rsc */ 329 kbd->dev->id.product = 0x0001; /* TODO: get from kbd->rsc */
330 kbd->dev->id.version = 0x0100; /* TODO: get from kbd->rsc */ 330 kbd->dev->id.version = 0x0100; /* TODO: get from kbd->rsc */
331 kbd->dev->dev = &serio->dev; 331 kbd->dev->cdev.dev = &serio->dev;
332 332
333 for (i = 0; i < 128; i++) { 333 for (i = 0; i < 128; i++) {
334 set_bit(hil_kbd_set1[i], kbd->dev->keybit); 334 set_bit(hil_kbd_set1[i], kbd->dev->keybit);
diff --git a/drivers/input/keyboard/hilkbd.c b/drivers/input/keyboard/hilkbd.c
index d22c7c624296..54bc569db4b0 100644
--- a/drivers/input/keyboard/hilkbd.c
+++ b/drivers/input/keyboard/hilkbd.c
@@ -150,7 +150,7 @@ static inline void handle_data(unsigned char s, unsigned char c)
150/* 150/*
151 * Handle HIL interrupts. 151 * Handle HIL interrupts.
152 */ 152 */
153static irqreturn_t hil_interrupt(int irq, void *handle, struct pt_regs *regs) 153static irqreturn_t hil_interrupt(int irq, void *handle)
154{ 154{
155 unsigned char s, c; 155 unsigned char s, c;
156 156
diff --git a/drivers/input/keyboard/lkkbd.c b/drivers/input/keyboard/lkkbd.c
index 5174224cadb4..708d5a1bc3d2 100644
--- a/drivers/input/keyboard/lkkbd.c
+++ b/drivers/input/keyboard/lkkbd.c
@@ -453,8 +453,7 @@ lkkbd_detection_done (struct lkkbd *lk)
453 * is received. 453 * is received.
454 */ 454 */
455static irqreturn_t 455static irqreturn_t
456lkkbd_interrupt (struct serio *serio, unsigned char data, unsigned int flags, 456lkkbd_interrupt (struct serio *serio, unsigned char data, unsigned int flags)
457 struct pt_regs *regs)
458{ 457{
459 struct lkkbd *lk = serio_get_drvdata (serio); 458 struct lkkbd *lk = serio_get_drvdata (serio);
460 int i; 459 int i;
@@ -473,7 +472,6 @@ lkkbd_interrupt (struct serio *serio, unsigned char data, unsigned int flags,
473 472
474 switch (data) { 473 switch (data) {
475 case LK_ALL_KEYS_UP: 474 case LK_ALL_KEYS_UP:
476 input_regs (lk->dev, regs);
477 for (i = 0; i < ARRAY_SIZE (lkkbd_keycode); i++) 475 for (i = 0; i < ARRAY_SIZE (lkkbd_keycode); i++)
478 if (lk->keycode[i] != KEY_RESERVED) 476 if (lk->keycode[i] != KEY_RESERVED)
479 input_report_key (lk->dev, lk->keycode[i], 0); 477 input_report_key (lk->dev, lk->keycode[i], 0);
@@ -501,7 +499,6 @@ lkkbd_interrupt (struct serio *serio, unsigned char data, unsigned int flags,
501 499
502 default: 500 default:
503 if (lk->keycode[data] != KEY_RESERVED) { 501 if (lk->keycode[data] != KEY_RESERVED) {
504 input_regs (lk->dev, regs);
505 if (!test_bit (lk->keycode[data], lk->dev->key)) 502 if (!test_bit (lk->keycode[data], lk->dev->key))
506 input_report_key (lk->dev, lk->keycode[data], 1); 503 input_report_key (lk->dev, lk->keycode[data], 1);
507 else 504 else
diff --git a/drivers/input/keyboard/locomokbd.c b/drivers/input/keyboard/locomokbd.c
index 83906f80ba21..fd33c9cc3272 100644
--- a/drivers/input/keyboard/locomokbd.c
+++ b/drivers/input/keyboard/locomokbd.c
@@ -126,7 +126,7 @@ static inline void locomokbd_reset_col(unsigned long membase, int col)
126 */ 126 */
127 127
128/* Scan the hardware keyboard and push any changes up through the input layer */ 128/* Scan the hardware keyboard and push any changes up through the input layer */
129static void locomokbd_scankeyboard(struct locomokbd *locomokbd, struct pt_regs *regs) 129static void locomokbd_scankeyboard(struct locomokbd *locomokbd)
130{ 130{
131 unsigned int row, col, rowd, scancode; 131 unsigned int row, col, rowd, scancode;
132 unsigned long flags; 132 unsigned long flags;
@@ -135,8 +135,6 @@ static void locomokbd_scankeyboard(struct locomokbd *locomokbd, struct pt_regs *
135 135
136 spin_lock_irqsave(&locomokbd->lock, flags); 136 spin_lock_irqsave(&locomokbd->lock, flags);
137 137
138 input_regs(locomokbd->input, regs);
139
140 locomokbd_charge_all(membase); 138 locomokbd_charge_all(membase);
141 139
142 num_pressed = 0; 140 num_pressed = 0;
@@ -171,13 +169,13 @@ static void locomokbd_scankeyboard(struct locomokbd *locomokbd, struct pt_regs *
171/* 169/*
172 * LoCoMo keyboard interrupt handler. 170 * LoCoMo keyboard interrupt handler.
173 */ 171 */
174static irqreturn_t locomokbd_interrupt(int irq, void *dev_id, struct pt_regs *regs) 172static irqreturn_t locomokbd_interrupt(int irq, void *dev_id)
175{ 173{
176 struct locomokbd *locomokbd = dev_id; 174 struct locomokbd *locomokbd = dev_id;
177 /** wait chattering delay **/ 175 /** wait chattering delay **/
178 udelay(100); 176 udelay(100);
179 177
180 locomokbd_scankeyboard(locomokbd, regs); 178 locomokbd_scankeyboard(locomokbd);
181 179
182 return IRQ_HANDLED; 180 return IRQ_HANDLED;
183} 181}
diff --git a/drivers/input/keyboard/newtonkbd.c b/drivers/input/keyboard/newtonkbd.c
index 40a3f551247e..9282e4e082bd 100644
--- a/drivers/input/keyboard/newtonkbd.c
+++ b/drivers/input/keyboard/newtonkbd.c
@@ -65,13 +65,12 @@ struct nkbd {
65}; 65};
66 66
67static irqreturn_t nkbd_interrupt(struct serio *serio, 67static irqreturn_t nkbd_interrupt(struct serio *serio,
68 unsigned char data, unsigned int flags, struct pt_regs *regs) 68 unsigned char data, unsigned int flags)
69{ 69{
70 struct nkbd *nkbd = serio_get_drvdata(serio); 70 struct nkbd *nkbd = serio_get_drvdata(serio);
71 71
72 /* invalid scan codes are probably the init sequence, so we ignore them */ 72 /* invalid scan codes are probably the init sequence, so we ignore them */
73 if (nkbd->keycode[data & NKBD_KEY]) { 73 if (nkbd->keycode[data & NKBD_KEY]) {
74 input_regs(nkbd->dev, regs);
75 input_report_key(nkbd->dev, nkbd->keycode[data & NKBD_KEY], data & NKBD_PRESS); 74 input_report_key(nkbd->dev, nkbd->keycode[data & NKBD_KEY], data & NKBD_PRESS);
76 input_sync(nkbd->dev); 75 input_sync(nkbd->dev);
77 } 76 }
diff --git a/drivers/input/keyboard/omap-keypad.c b/drivers/input/keyboard/omap-keypad.c
index d436287d1d2e..5680a6d95b2b 100644
--- a/drivers/input/keyboard/omap-keypad.c
+++ b/drivers/input/keyboard/omap-keypad.c
@@ -97,8 +97,7 @@ static u8 get_row_gpio_val(struct omap_kp *omap_kp)
97#define get_row_gpio_val(x) 0 97#define get_row_gpio_val(x) 0
98#endif 98#endif
99 99
100static irqreturn_t omap_kp_interrupt(int irq, void *dev_id, 100static irqreturn_t omap_kp_interrupt(int irq, void *dev_id)
101 struct pt_regs *regs)
102{ 101{
103 struct omap_kp *omap_kp = dev_id; 102 struct omap_kp *omap_kp = dev_id;
104 103
diff --git a/drivers/input/keyboard/spitzkbd.c b/drivers/input/keyboard/spitzkbd.c
index e385710233f4..8b18c009e3e0 100644
--- a/drivers/input/keyboard/spitzkbd.c
+++ b/drivers/input/keyboard/spitzkbd.c
@@ -176,7 +176,7 @@ static inline int spitzkbd_get_row_status(int col)
176 */ 176 */
177 177
178/* Scan the hardware keyboard and push any changes up through the input layer */ 178/* Scan the hardware keyboard and push any changes up through the input layer */
179static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data, struct pt_regs *regs) 179static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data)
180{ 180{
181 unsigned int row, col, rowd; 181 unsigned int row, col, rowd;
182 unsigned long flags; 182 unsigned long flags;
@@ -187,8 +187,6 @@ static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data, struct pt_regs
187 187
188 spin_lock_irqsave(&spitzkbd_data->lock, flags); 188 spin_lock_irqsave(&spitzkbd_data->lock, flags);
189 189
190 input_regs(spitzkbd_data->input, regs);
191
192 num_pressed = 0; 190 num_pressed = 0;
193 for (col = 0; col < KB_COLS; col++) { 191 for (col = 0; col < KB_COLS; col++) {
194 /* 192 /*
@@ -239,14 +237,14 @@ static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data, struct pt_regs
239/* 237/*
240 * spitz keyboard interrupt handler. 238 * spitz keyboard interrupt handler.
241 */ 239 */
242static irqreturn_t spitzkbd_interrupt(int irq, void *dev_id, struct pt_regs *regs) 240static irqreturn_t spitzkbd_interrupt(int irq, void *dev_id)
243{ 241{
244 struct spitzkbd *spitzkbd_data = dev_id; 242 struct spitzkbd *spitzkbd_data = dev_id;
245 243
246 if (!timer_pending(&spitzkbd_data->timer)) { 244 if (!timer_pending(&spitzkbd_data->timer)) {
247 /** wait chattering delay **/ 245 /** wait chattering delay **/
248 udelay(20); 246 udelay(20);
249 spitzkbd_scankeyboard(spitzkbd_data, regs); 247 spitzkbd_scankeyboard(spitzkbd_data);
250 } 248 }
251 249
252 return IRQ_HANDLED; 250 return IRQ_HANDLED;
@@ -267,7 +265,7 @@ static void spitzkbd_timer_callback(unsigned long data)
267 * We debounce the switches and pass them to the input system. 265 * We debounce the switches and pass them to the input system.
268 */ 266 */
269 267
270static irqreturn_t spitzkbd_hinge_isr(int irq, void *dev_id, struct pt_regs *regs) 268static irqreturn_t spitzkbd_hinge_isr(int irq, void *dev_id)
271{ 269{
272 struct spitzkbd *spitzkbd_data = dev_id; 270 struct spitzkbd *spitzkbd_data = dev_id;
273 271
diff --git a/drivers/input/keyboard/stowaway.c b/drivers/input/keyboard/stowaway.c
index 04c54c57f25c..e60937d17b1c 100644
--- a/drivers/input/keyboard/stowaway.c
+++ b/drivers/input/keyboard/stowaway.c
@@ -71,13 +71,12 @@ struct skbd {
71}; 71};
72 72
73static irqreturn_t skbd_interrupt(struct serio *serio, unsigned char data, 73static irqreturn_t skbd_interrupt(struct serio *serio, unsigned char data,
74 unsigned int flags, struct pt_regs *regs) 74 unsigned int flags)
75{ 75{
76 struct skbd *skbd = serio_get_drvdata(serio); 76 struct skbd *skbd = serio_get_drvdata(serio);
77 struct input_dev *dev = skbd->dev; 77 struct input_dev *dev = skbd->dev;
78 78
79 if (skbd->keycode[data & SKBD_KEY_MASK]) { 79 if (skbd->keycode[data & SKBD_KEY_MASK]) {
80 input_regs(dev, regs);
81 input_report_key(dev, skbd->keycode[data & SKBD_KEY_MASK], 80 input_report_key(dev, skbd->keycode[data & SKBD_KEY_MASK],
82 !(data & SKBD_RELEASE)); 81 !(data & SKBD_RELEASE));
83 input_sync(dev); 82 input_sync(dev);
diff --git a/drivers/input/keyboard/sunkbd.c b/drivers/input/keyboard/sunkbd.c
index 9dbd7b85686d..cac4781103c3 100644
--- a/drivers/input/keyboard/sunkbd.c
+++ b/drivers/input/keyboard/sunkbd.c
@@ -94,7 +94,7 @@ struct sunkbd {
94 */ 94 */
95 95
96static irqreturn_t sunkbd_interrupt(struct serio *serio, 96static irqreturn_t sunkbd_interrupt(struct serio *serio,
97 unsigned char data, unsigned int flags, struct pt_regs *regs) 97 unsigned char data, unsigned int flags)
98{ 98{
99 struct sunkbd* sunkbd = serio_get_drvdata(serio); 99 struct sunkbd* sunkbd = serio_get_drvdata(serio);
100 100
@@ -129,7 +129,6 @@ static irqreturn_t sunkbd_interrupt(struct serio *serio,
129 break; 129 break;
130 130
131 if (sunkbd->keycode[data & SUNKBD_KEY]) { 131 if (sunkbd->keycode[data & SUNKBD_KEY]) {
132 input_regs(sunkbd->dev, regs);
133 input_report_key(sunkbd->dev, sunkbd->keycode[data & SUNKBD_KEY], !(data & SUNKBD_RELEASE)); 132 input_report_key(sunkbd->dev, sunkbd->keycode[data & SUNKBD_KEY], !(data & SUNKBD_RELEASE));
134 input_sync(sunkbd->dev); 133 input_sync(sunkbd->dev);
135 } else { 134 } else {
diff --git a/drivers/input/keyboard/xtkbd.c b/drivers/input/keyboard/xtkbd.c
index 0821d53cf0c1..8c11dc935454 100644
--- a/drivers/input/keyboard/xtkbd.c
+++ b/drivers/input/keyboard/xtkbd.c
@@ -64,7 +64,7 @@ struct xtkbd {
64}; 64};
65 65
66static irqreturn_t xtkbd_interrupt(struct serio *serio, 66static irqreturn_t xtkbd_interrupt(struct serio *serio,
67 unsigned char data, unsigned int flags, struct pt_regs *regs) 67 unsigned char data, unsigned int flags)
68{ 68{
69 struct xtkbd *xtkbd = serio_get_drvdata(serio); 69 struct xtkbd *xtkbd = serio_get_drvdata(serio);
70 70
@@ -75,7 +75,6 @@ static irqreturn_t xtkbd_interrupt(struct serio *serio,
75 default: 75 default:
76 76
77 if (xtkbd->keycode[data & XTKBD_KEY]) { 77 if (xtkbd->keycode[data & XTKBD_KEY]) {
78 input_regs(xtkbd->dev, regs);
79 input_report_key(xtkbd->dev, xtkbd->keycode[data & XTKBD_KEY], !(data & XTKBD_RELEASE)); 78 input_report_key(xtkbd->dev, xtkbd->keycode[data & XTKBD_KEY], !(data & XTKBD_RELEASE));
80 input_sync(xtkbd->dev); 79 input_sync(xtkbd->dev);
81 } else { 80 } else {
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index a6dfc7455733..ba0e88c64e1e 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -73,7 +73,7 @@ config INPUT_UINPUT
73 73
74config HP_SDC_RTC 74config HP_SDC_RTC
75 tristate "HP SDC Real Time Clock" 75 tristate "HP SDC Real Time Clock"
76 depends on GSC 76 depends on GSC || HP300
77 select HP_SDC 77 select HP_SDC
78 help 78 help
79 Say Y here if you want to support the built-in real time clock 79 Say Y here if you want to support the built-in real time clock
diff --git a/drivers/input/misc/ixp4xx-beeper.c b/drivers/input/misc/ixp4xx-beeper.c
index 805b636e73d9..105c6fc27823 100644
--- a/drivers/input/misc/ixp4xx-beeper.c
+++ b/drivers/input/misc/ixp4xx-beeper.c
@@ -79,7 +79,7 @@ static int ixp4xx_spkr_event(struct input_dev *dev, unsigned int type, unsigned
79 return 0; 79 return 0;
80} 80}
81 81
82static irqreturn_t ixp4xx_spkr_interrupt(int irq, void *dev_id, struct pt_regs *regs) 82static irqreturn_t ixp4xx_spkr_interrupt(int irq, void *dev_id)
83{ 83{
84 /* clear interrupt */ 84 /* clear interrupt */
85 *IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND; 85 *IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND;
diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig
index f15ccf781688..35d998c3e578 100644
--- a/drivers/input/mouse/Kconfig
+++ b/drivers/input/mouse/Kconfig
@@ -119,7 +119,7 @@ config MOUSE_VSXXXAA
119 119
120config MOUSE_HIL 120config MOUSE_HIL
121 tristate "HIL pointers (mice etc)." 121 tristate "HIL pointers (mice etc)."
122 depends on GSC 122 depends on GSC || HP300
123 select HP_SDC 123 select HP_SDC
124 select HIL_MLC 124 select HIL_MLC
125 help 125 help
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 450b68a619fd..4e71a66fc7fc 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -76,7 +76,7 @@ static const struct alps_model_info alps_model_data[] = {
76 * on a dualpoint, etc. 76 * on a dualpoint, etc.
77 */ 77 */
78 78
79static void alps_process_packet(struct psmouse *psmouse, struct pt_regs *regs) 79static void alps_process_packet(struct psmouse *psmouse)
80{ 80{
81 struct alps_data *priv = psmouse->private; 81 struct alps_data *priv = psmouse->private;
82 unsigned char *packet = psmouse->packet; 82 unsigned char *packet = psmouse->packet;
@@ -85,8 +85,6 @@ static void alps_process_packet(struct psmouse *psmouse, struct pt_regs *regs)
85 int x, y, z, ges, fin, left, right, middle; 85 int x, y, z, ges, fin, left, right, middle;
86 int back = 0, forward = 0; 86 int back = 0, forward = 0;
87 87
88 input_regs(dev, regs);
89
90 if ((packet[0] & 0xc8) == 0x08) { /* 3-byte PS/2 packet */ 88 if ((packet[0] & 0xc8) == 0x08) { /* 3-byte PS/2 packet */
91 input_report_key(dev2, BTN_LEFT, packet[0] & 1); 89 input_report_key(dev2, BTN_LEFT, packet[0] & 1);
92 input_report_key(dev2, BTN_RIGHT, packet[0] & 2); 90 input_report_key(dev2, BTN_RIGHT, packet[0] & 2);
@@ -181,13 +179,13 @@ static void alps_process_packet(struct psmouse *psmouse, struct pt_regs *regs)
181 input_sync(dev); 179 input_sync(dev);
182} 180}
183 181
184static psmouse_ret_t alps_process_byte(struct psmouse *psmouse, struct pt_regs *regs) 182static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
185{ 183{
186 struct alps_data *priv = psmouse->private; 184 struct alps_data *priv = psmouse->private;
187 185
188 if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */ 186 if ((psmouse->packet[0] & 0xc8) == 0x08) { /* PS/2 packet */
189 if (psmouse->pktcnt == 3) { 187 if (psmouse->pktcnt == 3) {
190 alps_process_packet(psmouse, regs); 188 alps_process_packet(psmouse);
191 return PSMOUSE_FULL_PACKET; 189 return PSMOUSE_FULL_PACKET;
192 } 190 }
193 return PSMOUSE_GOOD_DATA; 191 return PSMOUSE_GOOD_DATA;
@@ -202,7 +200,7 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse, struct pt_regs *
202 return PSMOUSE_BAD_DATA; 200 return PSMOUSE_BAD_DATA;
203 201
204 if (psmouse->pktcnt == 6) { 202 if (psmouse->pktcnt == 6) {
205 alps_process_packet(psmouse, regs); 203 alps_process_packet(psmouse);
206 return PSMOUSE_FULL_PACKET; 204 return PSMOUSE_FULL_PACKET;
207 } 205 }
208 206
diff --git a/drivers/input/mouse/amimouse.c b/drivers/input/mouse/amimouse.c
index c8b2cc9f184c..599a7b2dc519 100644
--- a/drivers/input/mouse/amimouse.c
+++ b/drivers/input/mouse/amimouse.c
@@ -36,7 +36,7 @@ MODULE_LICENSE("GPL");
36static int amimouse_lastx, amimouse_lasty; 36static int amimouse_lastx, amimouse_lasty;
37static struct input_dev *amimouse_dev; 37static struct input_dev *amimouse_dev;
38 38
39static irqreturn_t amimouse_interrupt(int irq, void *dummy, struct pt_regs *fp) 39static irqreturn_t amimouse_interrupt(int irq, void *dummy)
40{ 40{
41 unsigned short joy0dat, potgor; 41 unsigned short joy0dat, potgor;
42 int nx, ny, dx, dy; 42 int nx, ny, dx, dy;
@@ -59,8 +59,6 @@ static irqreturn_t amimouse_interrupt(int irq, void *dummy, struct pt_regs *fp)
59 59
60 potgor = amiga_custom.potgor; 60 potgor = amiga_custom.potgor;
61 61
62 input_regs(amimouse_dev, fp);
63
64 input_report_rel(amimouse_dev, REL_X, dx); 62 input_report_rel(amimouse_dev, REL_X, dx);
65 input_report_rel(amimouse_dev, REL_Y, dy); 63 input_report_rel(amimouse_dev, REL_Y, dy);
66 64
diff --git a/drivers/input/mouse/hil_ptr.c b/drivers/input/mouse/hil_ptr.c
index 69f02178c528..4f2b503c1ac7 100644
--- a/drivers/input/mouse/hil_ptr.c
+++ b/drivers/input/mouse/hil_ptr.c
@@ -190,7 +190,7 @@ static void hil_ptr_process_err(struct hil_ptr *ptr) {
190} 190}
191 191
192static irqreturn_t hil_ptr_interrupt(struct serio *serio, 192static irqreturn_t hil_ptr_interrupt(struct serio *serio,
193 unsigned char data, unsigned int flags, struct pt_regs *regs) 193 unsigned char data, unsigned int flags)
194{ 194{
195 struct hil_ptr *ptr; 195 struct hil_ptr *ptr;
196 hil_packet packet; 196 hil_packet packet;
@@ -375,7 +375,7 @@ static int hil_ptr_connect(struct serio *serio, struct serio_driver *driver)
375 ptr->dev->id.vendor = PCI_VENDOR_ID_HP; 375 ptr->dev->id.vendor = PCI_VENDOR_ID_HP;
376 ptr->dev->id.product = 0x0001; /* TODO: get from ptr->rsc */ 376 ptr->dev->id.product = 0x0001; /* TODO: get from ptr->rsc */
377 ptr->dev->id.version = 0x0100; /* TODO: get from ptr->rsc */ 377 ptr->dev->id.version = 0x0100; /* TODO: get from ptr->rsc */
378 ptr->dev->dev = &serio->dev; 378 ptr->dev->cdev.dev = &serio->dev;
379 379
380 input_register_device(ptr->dev); 380 input_register_device(ptr->dev);
381 printk(KERN_INFO "input: %s (%s), ID: %d\n", 381 printk(KERN_INFO "input: %s (%s), ID: %d\n",
diff --git a/drivers/input/mouse/inport.c b/drivers/input/mouse/inport.c
index 50f1fed10be4..e1252fa9a107 100644
--- a/drivers/input/mouse/inport.c
+++ b/drivers/input/mouse/inport.c
@@ -88,15 +88,13 @@ __obsolete_setup("inport_irq=");
88 88
89static struct input_dev *inport_dev; 89static struct input_dev *inport_dev;
90 90
91static irqreturn_t inport_interrupt(int irq, void *dev_id, struct pt_regs *regs) 91static irqreturn_t inport_interrupt(int irq, void *dev_id)
92{ 92{
93 unsigned char buttons; 93 unsigned char buttons;
94 94
95 outb(INPORT_REG_MODE, INPORT_CONTROL_PORT); 95 outb(INPORT_REG_MODE, INPORT_CONTROL_PORT);
96 outb(INPORT_MODE_HOLD | INPORT_MODE_IRQ | INPORT_MODE_BASE, INPORT_DATA_PORT); 96 outb(INPORT_MODE_HOLD | INPORT_MODE_IRQ | INPORT_MODE_BASE, INPORT_DATA_PORT);
97 97
98 input_regs(inport_dev, regs);
99
100 outb(INPORT_REG_X, INPORT_CONTROL_PORT); 98 outb(INPORT_REG_X, INPORT_CONTROL_PORT);
101 input_report_rel(inport_dev, REL_X, inb(INPORT_DATA_PORT)); 99 input_report_rel(inport_dev, REL_X, inb(INPORT_DATA_PORT));
102 100
diff --git a/drivers/input/mouse/lifebook.c b/drivers/input/mouse/lifebook.c
index 5e9d25067513..c57e8853b949 100644
--- a/drivers/input/mouse/lifebook.c
+++ b/drivers/input/mouse/lifebook.c
@@ -62,7 +62,7 @@ static struct dmi_system_id lifebook_dmi_table[] = {
62}; 62};
63 63
64 64
65static psmouse_ret_t lifebook_process_byte(struct psmouse *psmouse, struct pt_regs *regs) 65static psmouse_ret_t lifebook_process_byte(struct psmouse *psmouse)
66{ 66{
67 unsigned char *packet = psmouse->packet; 67 unsigned char *packet = psmouse->packet;
68 struct input_dev *dev = psmouse->dev; 68 struct input_dev *dev = psmouse->dev;
@@ -70,8 +70,6 @@ static psmouse_ret_t lifebook_process_byte(struct psmouse *psmouse, struct pt_re
70 if (psmouse->pktcnt != 3) 70 if (psmouse->pktcnt != 3)
71 return PSMOUSE_GOOD_DATA; 71 return PSMOUSE_GOOD_DATA;
72 72
73 input_regs(dev, regs);
74
75 /* calculate X and Y */ 73 /* calculate X and Y */
76 if ((packet[0] & 0x08) == 0x00) { 74 if ((packet[0] & 0x08) == 0x00) {
77 input_report_abs(dev, ABS_X, 75 input_report_abs(dev, ABS_X,
diff --git a/drivers/input/mouse/logibm.c b/drivers/input/mouse/logibm.c
index 9c7ce38806d7..8e9c2f3d69a8 100644
--- a/drivers/input/mouse/logibm.c
+++ b/drivers/input/mouse/logibm.c
@@ -79,7 +79,7 @@ __obsolete_setup("logibm_irq=");
79 79
80static struct input_dev *logibm_dev; 80static struct input_dev *logibm_dev;
81 81
82static irqreturn_t logibm_interrupt(int irq, void *dev_id, struct pt_regs *regs) 82static irqreturn_t logibm_interrupt(int irq, void *dev_id)
83{ 83{
84 char dx, dy; 84 char dx, dy;
85 unsigned char buttons; 85 unsigned char buttons;
@@ -95,7 +95,6 @@ static irqreturn_t logibm_interrupt(int irq, void *dev_id, struct pt_regs *regs)
95 dy |= (buttons & 0xf) << 4; 95 dy |= (buttons & 0xf) << 4;
96 buttons = ~buttons >> 5; 96 buttons = ~buttons >> 5;
97 97
98 input_regs(logibm_dev, regs);
99 input_report_rel(logibm_dev, REL_X, dx); 98 input_report_rel(logibm_dev, REL_X, dx);
100 input_report_rel(logibm_dev, REL_Y, dy); 99 input_report_rel(logibm_dev, REL_Y, dy);
101 input_report_key(logibm_dev, BTN_RIGHT, buttons & 1); 100 input_report_key(logibm_dev, BTN_RIGHT, buttons & 1);
diff --git a/drivers/input/mouse/logips2pp.c b/drivers/input/mouse/logips2pp.c
index 7972eecbcfe4..8a4f862709e7 100644
--- a/drivers/input/mouse/logips2pp.c
+++ b/drivers/input/mouse/logips2pp.c
@@ -39,7 +39,7 @@ struct ps2pp_info {
39 * Process a PS2++ or PS2T++ packet. 39 * Process a PS2++ or PS2T++ packet.
40 */ 40 */
41 41
42static psmouse_ret_t ps2pp_process_byte(struct psmouse *psmouse, struct pt_regs *regs) 42static psmouse_ret_t ps2pp_process_byte(struct psmouse *psmouse)
43{ 43{
44 struct input_dev *dev = psmouse->dev; 44 struct input_dev *dev = psmouse->dev;
45 unsigned char *packet = psmouse->packet; 45 unsigned char *packet = psmouse->packet;
@@ -51,8 +51,6 @@ static psmouse_ret_t ps2pp_process_byte(struct psmouse *psmouse, struct pt_regs
51 * Full packet accumulated, process it 51 * Full packet accumulated, process it
52 */ 52 */
53 53
54 input_regs(dev, regs);
55
56 if ((packet[0] & 0x48) == 0x48 && (packet[1] & 0x02) == 0x02) { 54 if ((packet[0] & 0x48) == 0x48 && (packet[1] & 0x02) == 0x02) {
57 55
58 /* Logitech extended packet */ 56 /* Logitech extended packet */
diff --git a/drivers/input/mouse/pc110pad.c b/drivers/input/mouse/pc110pad.c
index d284ea712151..8c075aa7223b 100644
--- a/drivers/input/mouse/pc110pad.c
+++ b/drivers/input/mouse/pc110pad.c
@@ -57,7 +57,7 @@ static struct input_dev *pc110pad_dev;
57static int pc110pad_data[3]; 57static int pc110pad_data[3];
58static int pc110pad_count; 58static int pc110pad_count;
59 59
60static irqreturn_t pc110pad_interrupt(int irq, void *ptr, struct pt_regs *regs) 60static irqreturn_t pc110pad_interrupt(int irq, void *ptr)
61{ 61{
62 int value = inb_p(pc110pad_io); 62 int value = inb_p(pc110pad_io);
63 int handshake = inb_p(pc110pad_io + 2); 63 int handshake = inb_p(pc110pad_io + 2);
@@ -71,7 +71,6 @@ static irqreturn_t pc110pad_interrupt(int irq, void *ptr, struct pt_regs *regs)
71 if (pc110pad_count < 3) 71 if (pc110pad_count < 3)
72 return IRQ_HANDLED; 72 return IRQ_HANDLED;
73 73
74 input_regs(pc110pad_dev, regs);
75 input_report_key(pc110pad_dev, BTN_TOUCH, 74 input_report_key(pc110pad_dev, BTN_TOUCH,
76 pc110pad_data[0] & 0x01); 75 pc110pad_data[0] & 0x01);
77 input_report_abs(pc110pad_dev, ABS_X, 76 input_report_abs(pc110pad_dev, ABS_X,
@@ -91,9 +90,9 @@ static void pc110pad_close(struct input_dev *dev)
91 90
92static int pc110pad_open(struct input_dev *dev) 91static int pc110pad_open(struct input_dev *dev)
93{ 92{
94 pc110pad_interrupt(0, NULL, NULL); 93 pc110pad_interrupt(0, NULL);
95 pc110pad_interrupt(0, NULL, NULL); 94 pc110pad_interrupt(0, NULL);
96 pc110pad_interrupt(0, NULL, NULL); 95 pc110pad_interrupt(0, NULL);
97 outb(PC110PAD_ON, pc110pad_io + 2); 96 outb(PC110PAD_ON, pc110pad_io + 2);
98 pc110pad_count = 0; 97 pc110pad_count = 0;
99 98
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
index 9fb7eb6b0f71..6f9b2c7cc9c2 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -124,7 +124,7 @@ struct psmouse_protocol {
124 * relevant events to the input module once full packet has arrived. 124 * relevant events to the input module once full packet has arrived.
125 */ 125 */
126 126
127static psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse, struct pt_regs *regs) 127static psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse)
128{ 128{
129 struct input_dev *dev = psmouse->dev; 129 struct input_dev *dev = psmouse->dev;
130 unsigned char *packet = psmouse->packet; 130 unsigned char *packet = psmouse->packet;
@@ -136,8 +136,6 @@ static psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse, struct pt_reg
136 * Full packet accumulated, process it 136 * Full packet accumulated, process it
137 */ 137 */
138 138
139 input_regs(dev, regs);
140
141/* 139/*
142 * Scroll wheel on IntelliMice, scroll buttons on NetMice 140 * Scroll wheel on IntelliMice, scroll buttons on NetMice
143 */ 141 */
@@ -231,9 +229,9 @@ static void psmouse_set_state(struct psmouse *psmouse, enum psmouse_state new_st
231 * by calling corresponding protocol handler. 229 * by calling corresponding protocol handler.
232 */ 230 */
233 231
234static int psmouse_handle_byte(struct psmouse *psmouse, struct pt_regs *regs) 232static int psmouse_handle_byte(struct psmouse *psmouse)
235{ 233{
236 psmouse_ret_t rc = psmouse->protocol_handler(psmouse, regs); 234 psmouse_ret_t rc = psmouse->protocol_handler(psmouse);
237 235
238 switch (rc) { 236 switch (rc) {
239 case PSMOUSE_BAD_DATA: 237 case PSMOUSE_BAD_DATA:
@@ -271,7 +269,7 @@ static int psmouse_handle_byte(struct psmouse *psmouse, struct pt_regs *regs)
271 */ 269 */
272 270
273static irqreturn_t psmouse_interrupt(struct serio *serio, 271static irqreturn_t psmouse_interrupt(struct serio *serio,
274 unsigned char data, unsigned int flags, struct pt_regs *regs) 272 unsigned char data, unsigned int flags)
275{ 273{
276 struct psmouse *psmouse = serio_get_drvdata(serio); 274 struct psmouse *psmouse = serio_get_drvdata(serio);
277 275
@@ -327,7 +325,7 @@ static irqreturn_t psmouse_interrupt(struct serio *serio,
327 * Not a new device, try processing first byte normally 325 * Not a new device, try processing first byte normally
328 */ 326 */
329 psmouse->pktcnt = 1; 327 psmouse->pktcnt = 1;
330 if (psmouse_handle_byte(psmouse, regs)) 328 if (psmouse_handle_byte(psmouse))
331 goto out; 329 goto out;
332 330
333 psmouse->packet[psmouse->pktcnt++] = data; 331 psmouse->packet[psmouse->pktcnt++] = data;
@@ -346,7 +344,7 @@ static irqreturn_t psmouse_interrupt(struct serio *serio,
346 } 344 }
347 345
348 psmouse->last = jiffies; 346 psmouse->last = jiffies;
349 psmouse_handle_byte(psmouse, regs); 347 psmouse_handle_byte(psmouse);
350 348
351 out: 349 out:
352 return IRQ_HANDLED; 350 return IRQ_HANDLED;
@@ -940,7 +938,7 @@ static void psmouse_resync(void *p)
940 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); 938 psmouse_set_state(psmouse, PSMOUSE_CMD_MODE);
941 for (i = 0; i < psmouse->pktsize; i++) { 939 for (i = 0; i < psmouse->pktsize; i++) {
942 psmouse->pktcnt++; 940 psmouse->pktcnt++;
943 rc = psmouse->protocol_handler(psmouse, NULL); 941 rc = psmouse->protocol_handler(psmouse);
944 if (rc != PSMOUSE_GOOD_DATA) 942 if (rc != PSMOUSE_GOOD_DATA)
945 break; 943 break;
946 } 944 }
diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
index 4d9107fba6a1..1b74cae8a556 100644
--- a/drivers/input/mouse/psmouse.h
+++ b/drivers/input/mouse/psmouse.h
@@ -62,7 +62,7 @@ struct psmouse {
62 unsigned int resync_time; 62 unsigned int resync_time;
63 unsigned int smartscroll; /* Logitech only */ 63 unsigned int smartscroll; /* Logitech only */
64 64
65 psmouse_ret_t (*protocol_handler)(struct psmouse *psmouse, struct pt_regs *regs); 65 psmouse_ret_t (*protocol_handler)(struct psmouse *psmouse);
66 void (*set_rate)(struct psmouse *psmouse, unsigned int rate); 66 void (*set_rate)(struct psmouse *psmouse, unsigned int rate);
67 void (*set_resolution)(struct psmouse *psmouse, unsigned int resolution); 67 void (*set_resolution)(struct psmouse *psmouse, unsigned int resolution);
68 68
diff --git a/drivers/input/mouse/rpcmouse.c b/drivers/input/mouse/rpcmouse.c
index 872b30bf7aad..ea0468569610 100644
--- a/drivers/input/mouse/rpcmouse.c
+++ b/drivers/input/mouse/rpcmouse.c
@@ -36,7 +36,7 @@ MODULE_LICENSE("GPL");
36static short rpcmouse_lastx, rpcmouse_lasty; 36static short rpcmouse_lastx, rpcmouse_lasty;
37static struct input_dev *rpcmouse_dev; 37static struct input_dev *rpcmouse_dev;
38 38
39static irqreturn_t rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs) 39static irqreturn_t rpcmouse_irq(int irq, void *dev_id)
40{ 40{
41 struct input_dev *dev = dev_id; 41 struct input_dev *dev = dev_id;
42 short x, y, dx, dy, b; 42 short x, y, dx, dy, b;
@@ -51,8 +51,6 @@ static irqreturn_t rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs)
51 rpcmouse_lastx = x; 51 rpcmouse_lastx = x;
52 rpcmouse_lasty = y; 52 rpcmouse_lasty = y;
53 53
54 input_regs(dev, regs);
55
56 input_report_rel(dev, REL_X, dx); 54 input_report_rel(dev, REL_X, dx);
57 input_report_rel(dev, REL_Y, -dy); 55 input_report_rel(dev, REL_Y, -dy);
58 56
diff --git a/drivers/input/mouse/sermouse.c b/drivers/input/mouse/sermouse.c
index 680b32353884..2a272c5daf08 100644
--- a/drivers/input/mouse/sermouse.c
+++ b/drivers/input/mouse/sermouse.c
@@ -61,13 +61,11 @@ struct sermouse {
61 * second, which is as good as a PS/2 or USB mouse. 61 * second, which is as good as a PS/2 or USB mouse.
62 */ 62 */
63 63
64static void sermouse_process_msc(struct sermouse *sermouse, signed char data, struct pt_regs *regs) 64static void sermouse_process_msc(struct sermouse *sermouse, signed char data)
65{ 65{
66 struct input_dev *dev = sermouse->dev; 66 struct input_dev *dev = sermouse->dev;
67 signed char *buf = sermouse->buf; 67 signed char *buf = sermouse->buf;
68 68
69 input_regs(dev, regs);
70
71 switch (sermouse->count) { 69 switch (sermouse->count) {
72 70
73 case 0: 71 case 0:
@@ -104,15 +102,13 @@ static void sermouse_process_msc(struct sermouse *sermouse, signed char data, st
104 * standard 3-byte packets and 1200 bps. 102 * standard 3-byte packets and 1200 bps.
105 */ 103 */
106 104
107static void sermouse_process_ms(struct sermouse *sermouse, signed char data, struct pt_regs *regs) 105static void sermouse_process_ms(struct sermouse *sermouse, signed char data)
108{ 106{
109 struct input_dev *dev = sermouse->dev; 107 struct input_dev *dev = sermouse->dev;
110 signed char *buf = sermouse->buf; 108 signed char *buf = sermouse->buf;
111 109
112 if (data & 0x40) sermouse->count = 0; 110 if (data & 0x40) sermouse->count = 0;
113 111
114 input_regs(dev, regs);
115
116 switch (sermouse->count) { 112 switch (sermouse->count) {
117 113
118 case 0: 114 case 0:
@@ -206,7 +202,7 @@ static void sermouse_process_ms(struct sermouse *sermouse, signed char data, str
206 */ 202 */
207 203
208static irqreturn_t sermouse_interrupt(struct serio *serio, 204static irqreturn_t sermouse_interrupt(struct serio *serio,
209 unsigned char data, unsigned int flags, struct pt_regs *regs) 205 unsigned char data, unsigned int flags)
210{ 206{
211 struct sermouse *sermouse = serio_get_drvdata(serio); 207 struct sermouse *sermouse = serio_get_drvdata(serio);
212 208
@@ -214,9 +210,9 @@ static irqreturn_t sermouse_interrupt(struct serio *serio,
214 sermouse->last = jiffies; 210 sermouse->last = jiffies;
215 211
216 if (sermouse->type > SERIO_SUN) 212 if (sermouse->type > SERIO_SUN)
217 sermouse_process_ms(sermouse, data, regs); 213 sermouse_process_ms(sermouse, data);
218 else 214 else
219 sermouse_process_msc(sermouse, data, regs); 215 sermouse_process_msc(sermouse, data);
220 return IRQ_HANDLED; 216 return IRQ_HANDLED;
221} 217}
222 218
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 392108c436ba..49ac696d6cff 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -216,13 +216,13 @@ static void synaptics_pass_pt_packet(struct serio *ptport, unsigned char *packet
216 struct psmouse *child = serio_get_drvdata(ptport); 216 struct psmouse *child = serio_get_drvdata(ptport);
217 217
218 if (child && child->state == PSMOUSE_ACTIVATED) { 218 if (child && child->state == PSMOUSE_ACTIVATED) {
219 serio_interrupt(ptport, packet[1], 0, NULL); 219 serio_interrupt(ptport, packet[1], 0);
220 serio_interrupt(ptport, packet[4], 0, NULL); 220 serio_interrupt(ptport, packet[4], 0);
221 serio_interrupt(ptport, packet[5], 0, NULL); 221 serio_interrupt(ptport, packet[5], 0);
222 if (child->pktsize == 4) 222 if (child->pktsize == 4)
223 serio_interrupt(ptport, packet[2], 0, NULL); 223 serio_interrupt(ptport, packet[2], 0);
224 } else 224 } else
225 serio_interrupt(ptport, packet[1], 0, NULL); 225 serio_interrupt(ptport, packet[1], 0);
226} 226}
227 227
228static void synaptics_pt_activate(struct psmouse *psmouse) 228static void synaptics_pt_activate(struct psmouse *psmouse)
@@ -469,13 +469,10 @@ static unsigned char synaptics_detect_pkt_type(struct psmouse *psmouse)
469 return SYN_NEWABS_STRICT; 469 return SYN_NEWABS_STRICT;
470} 470}
471 471
472static psmouse_ret_t synaptics_process_byte(struct psmouse *psmouse, struct pt_regs *regs) 472static psmouse_ret_t synaptics_process_byte(struct psmouse *psmouse)
473{ 473{
474 struct input_dev *dev = psmouse->dev;
475 struct synaptics_data *priv = psmouse->private; 474 struct synaptics_data *priv = psmouse->private;
476 475
477 input_regs(dev, regs);
478
479 if (psmouse->pktcnt >= 6) { /* Full packet received */ 476 if (psmouse->pktcnt >= 6) { /* Full packet received */
480 if (unlikely(priv->pkt_type == SYN_NEWABS)) 477 if (unlikely(priv->pkt_type == SYN_NEWABS))
481 priv->pkt_type = synaptics_detect_pkt_type(psmouse); 478 priv->pkt_type = synaptics_detect_pkt_type(psmouse);
diff --git a/drivers/input/mouse/vsxxxaa.c b/drivers/input/mouse/vsxxxaa.c
index 47edcfd022ba..ffdb50eee93d 100644
--- a/drivers/input/mouse/vsxxxaa.c
+++ b/drivers/input/mouse/vsxxxaa.c
@@ -211,7 +211,7 @@ vsxxxaa_smells_like_packet (struct vsxxxaa *mouse, unsigned char type, size_t le
211} 211}
212 212
213static void 213static void
214vsxxxaa_handle_REL_packet (struct vsxxxaa *mouse, struct pt_regs *regs) 214vsxxxaa_handle_REL_packet (struct vsxxxaa *mouse)
215{ 215{
216 struct input_dev *dev = mouse->dev; 216 struct input_dev *dev = mouse->dev;
217 unsigned char *buf = mouse->buf; 217 unsigned char *buf = mouse->buf;
@@ -258,7 +258,6 @@ vsxxxaa_handle_REL_packet (struct vsxxxaa *mouse, struct pt_regs *regs)
258 /* 258 /*
259 * Report what we've found so far... 259 * Report what we've found so far...
260 */ 260 */
261 input_regs (dev, regs);
262 input_report_key (dev, BTN_LEFT, left); 261 input_report_key (dev, BTN_LEFT, left);
263 input_report_key (dev, BTN_MIDDLE, middle); 262 input_report_key (dev, BTN_MIDDLE, middle);
264 input_report_key (dev, BTN_RIGHT, right); 263 input_report_key (dev, BTN_RIGHT, right);
@@ -269,7 +268,7 @@ vsxxxaa_handle_REL_packet (struct vsxxxaa *mouse, struct pt_regs *regs)
269} 268}
270 269
271static void 270static void
272vsxxxaa_handle_ABS_packet (struct vsxxxaa *mouse, struct pt_regs *regs) 271vsxxxaa_handle_ABS_packet (struct vsxxxaa *mouse)
273{ 272{
274 struct input_dev *dev = mouse->dev; 273 struct input_dev *dev = mouse->dev;
275 unsigned char *buf = mouse->buf; 274 unsigned char *buf = mouse->buf;
@@ -312,7 +311,6 @@ vsxxxaa_handle_ABS_packet (struct vsxxxaa *mouse, struct pt_regs *regs)
312 /* 311 /*
313 * Report what we've found so far... 312 * Report what we've found so far...
314 */ 313 */
315 input_regs (dev, regs);
316 input_report_key (dev, BTN_LEFT, left); 314 input_report_key (dev, BTN_LEFT, left);
317 input_report_key (dev, BTN_MIDDLE, middle); 315 input_report_key (dev, BTN_MIDDLE, middle);
318 input_report_key (dev, BTN_RIGHT, right); 316 input_report_key (dev, BTN_RIGHT, right);
@@ -323,7 +321,7 @@ vsxxxaa_handle_ABS_packet (struct vsxxxaa *mouse, struct pt_regs *regs)
323} 321}
324 322
325static void 323static void
326vsxxxaa_handle_POR_packet (struct vsxxxaa *mouse, struct pt_regs *regs) 324vsxxxaa_handle_POR_packet (struct vsxxxaa *mouse)
327{ 325{
328 struct input_dev *dev = mouse->dev; 326 struct input_dev *dev = mouse->dev;
329 unsigned char *buf = mouse->buf; 327 unsigned char *buf = mouse->buf;
@@ -367,7 +365,6 @@ vsxxxaa_handle_POR_packet (struct vsxxxaa *mouse, struct pt_regs *regs)
367 365
368 if (error <= 0x1f) { 366 if (error <= 0x1f) {
369 /* No (serious) error. Report buttons */ 367 /* No (serious) error. Report buttons */
370 input_regs (dev, regs);
371 input_report_key (dev, BTN_LEFT, left); 368 input_report_key (dev, BTN_LEFT, left);
372 input_report_key (dev, BTN_MIDDLE, middle); 369 input_report_key (dev, BTN_MIDDLE, middle);
373 input_report_key (dev, BTN_RIGHT, right); 370 input_report_key (dev, BTN_RIGHT, right);
@@ -395,7 +392,7 @@ vsxxxaa_handle_POR_packet (struct vsxxxaa *mouse, struct pt_regs *regs)
395} 392}
396 393
397static void 394static void
398vsxxxaa_parse_buffer (struct vsxxxaa *mouse, struct pt_regs *regs) 395vsxxxaa_parse_buffer (struct vsxxxaa *mouse)
399{ 396{
400 unsigned char *buf = mouse->buf; 397 unsigned char *buf = mouse->buf;
401 int stray_bytes; 398 int stray_bytes;
@@ -432,7 +429,7 @@ vsxxxaa_parse_buffer (struct vsxxxaa *mouse, struct pt_regs *regs)
432 continue; 429 continue;
433 } 430 }
434 431
435 vsxxxaa_handle_REL_packet (mouse, regs); 432 vsxxxaa_handle_REL_packet (mouse);
436 continue; /* More to parse? */ 433 continue; /* More to parse? */
437 } 434 }
438 435
@@ -446,7 +443,7 @@ vsxxxaa_parse_buffer (struct vsxxxaa *mouse, struct pt_regs *regs)
446 continue; 443 continue;
447 } 444 }
448 445
449 vsxxxaa_handle_ABS_packet (mouse, regs); 446 vsxxxaa_handle_ABS_packet (mouse);
450 continue; /* More to parse? */ 447 continue; /* More to parse? */
451 } 448 }
452 449
@@ -460,7 +457,7 @@ vsxxxaa_parse_buffer (struct vsxxxaa *mouse, struct pt_regs *regs)
460 continue; 457 continue;
461 } 458 }
462 459
463 vsxxxaa_handle_POR_packet (mouse, regs); 460 vsxxxaa_handle_POR_packet (mouse);
464 continue; /* More to parse? */ 461 continue; /* More to parse? */
465 } 462 }
466 463
@@ -469,13 +466,12 @@ vsxxxaa_parse_buffer (struct vsxxxaa *mouse, struct pt_regs *regs)
469} 466}
470 467
471static irqreturn_t 468static irqreturn_t
472vsxxxaa_interrupt (struct serio *serio, unsigned char data, unsigned int flags, 469vsxxxaa_interrupt (struct serio *serio, unsigned char data, unsigned int flags)
473 struct pt_regs *regs)
474{ 470{
475 struct vsxxxaa *mouse = serio_get_drvdata (serio); 471 struct vsxxxaa *mouse = serio_get_drvdata (serio);
476 472
477 vsxxxaa_queue_byte (mouse, data); 473 vsxxxaa_queue_byte (mouse, data);
478 vsxxxaa_parse_buffer (mouse, regs); 474 vsxxxaa_parse_buffer (mouse);
479 475
480 return IRQ_HANDLED; 476 return IRQ_HANDLED;
481} 477}
diff --git a/drivers/input/serio/Kconfig b/drivers/input/serio/Kconfig
index 8cdbfeca5903..adef447f23ea 100644
--- a/drivers/input/serio/Kconfig
+++ b/drivers/input/serio/Kconfig
@@ -112,7 +112,7 @@ config SERIO_GSCPS2
112 112
113config HP_SDC 113config HP_SDC
114 tristate "HP System Device Controller i8042 Support" 114 tristate "HP System Device Controller i8042 Support"
115 depends on GSC && SERIO 115 depends on (GSC || HP300) && SERIO
116 default y 116 default y
117 ---help--- 117 ---help---
118 This option enables support for the "System Device 118 This option enables support for the "System Device
diff --git a/drivers/input/serio/ambakmi.c b/drivers/input/serio/ambakmi.c
index 3df5eedf8f31..5a7b49c35539 100644
--- a/drivers/input/serio/ambakmi.c
+++ b/drivers/input/serio/ambakmi.c
@@ -37,14 +37,14 @@ struct amba_kmi_port {
37 unsigned int open; 37 unsigned int open;
38}; 38};
39 39
40static irqreturn_t amba_kmi_int(int irq, void *dev_id, struct pt_regs *regs) 40static irqreturn_t amba_kmi_int(int irq, void *dev_id)
41{ 41{
42 struct amba_kmi_port *kmi = dev_id; 42 struct amba_kmi_port *kmi = dev_id;
43 unsigned int status = readb(KMIIR); 43 unsigned int status = readb(KMIIR);
44 int handled = IRQ_NONE; 44 int handled = IRQ_NONE;
45 45
46 while (status & KMIIR_RXINTR) { 46 while (status & KMIIR_RXINTR) {
47 serio_interrupt(kmi->io, readb(KMIDATA), 0, regs); 47 serio_interrupt(kmi->io, readb(KMIDATA), 0);
48 status = readb(KMIIR); 48 status = readb(KMIIR);
49 handled = IRQ_HANDLED; 49 handled = IRQ_HANDLED;
50 } 50 }
diff --git a/drivers/input/serio/ct82c710.c b/drivers/input/serio/ct82c710.c
index bc6e87add093..0d35018c23a9 100644
--- a/drivers/input/serio/ct82c710.c
+++ b/drivers/input/serio/ct82c710.c
@@ -71,9 +71,9 @@ static struct resource ct82c710_iores;
71 * is waiting in the 82C710. 71 * is waiting in the 82C710.
72 */ 72 */
73 73
74static irqreturn_t ct82c710_interrupt(int cpl, void *dev_id, struct pt_regs * regs) 74static irqreturn_t ct82c710_interrupt(int cpl, void *dev_id)
75{ 75{
76 return serio_interrupt(ct82c710_port, inb(CT82C710_DATA), 0, regs); 76 return serio_interrupt(ct82c710_port, inb(CT82C710_DATA), 0);
77} 77}
78 78
79/* 79/*
diff --git a/drivers/input/serio/gscps2.c b/drivers/input/serio/gscps2.c
index cde036a92168..74f14e097789 100644
--- a/drivers/input/serio/gscps2.c
+++ b/drivers/input/serio/gscps2.c
@@ -82,7 +82,7 @@ MODULE_DEVICE_TABLE(parisc, gscps2_device_tbl);
82#define GSC_ID_MOUSE 1 82#define GSC_ID_MOUSE 1
83 83
84 84
85static irqreturn_t gscps2_interrupt(int irq, void *dev, struct pt_regs *regs); 85static irqreturn_t gscps2_interrupt(int irq, void *dev);
86 86
87#define BUFFER_SIZE 0x0f 87#define BUFFER_SIZE 0x0f
88 88
@@ -166,7 +166,7 @@ static inline int gscps2_writeb_output(struct gscps2port *ps2port, u8 data)
166 166
167 /* make sure any received data is returned as fast as possible */ 167 /* make sure any received data is returned as fast as possible */
168 /* this is important e.g. when we set the LEDs on the keyboard */ 168 /* this is important e.g. when we set the LEDs on the keyboard */
169 gscps2_interrupt(0, NULL, NULL); 169 gscps2_interrupt(0, NULL);
170 170
171 return 1; 171 return 1;
172} 172}
@@ -226,7 +226,7 @@ static LIST_HEAD(ps2port_list);
226 * later. 226 * later.
227 */ 227 */
228 228
229static irqreturn_t gscps2_interrupt(int irq, void *dev, struct pt_regs *regs) 229static irqreturn_t gscps2_interrupt(int irq, void *dev)
230{ 230{
231 struct gscps2port *ps2port; 231 struct gscps2port *ps2port;
232 232
@@ -267,7 +267,7 @@ static irqreturn_t gscps2_interrupt(int irq, void *dev, struct pt_regs *regs)
267 rxflags = ((status & GSC_STAT_TERR) ? SERIO_TIMEOUT : 0 ) | 267 rxflags = ((status & GSC_STAT_TERR) ? SERIO_TIMEOUT : 0 ) |
268 ((status & GSC_STAT_PERR) ? SERIO_PARITY : 0 ); 268 ((status & GSC_STAT_PERR) ? SERIO_PARITY : 0 );
269 269
270 serio_interrupt(ps2port->port, data, rxflags, regs); 270 serio_interrupt(ps2port->port, data, rxflags);
271 271
272 } /* while() */ 272 } /* while() */
273 273
@@ -306,7 +306,7 @@ static int gscps2_open(struct serio *port)
306 /* enable it */ 306 /* enable it */
307 gscps2_enable(ps2port, ENABLE); 307 gscps2_enable(ps2port, ENABLE);
308 308
309 gscps2_interrupt(0, NULL, NULL); 309 gscps2_interrupt(0, NULL);
310 310
311 return 0; 311 return 0;
312} 312}
diff --git a/drivers/input/serio/hil_mlc.c b/drivers/input/serio/hil_mlc.c
index bbbe15e21904..bdfde046b741 100644
--- a/drivers/input/serio/hil_mlc.c
+++ b/drivers/input/serio/hil_mlc.c
@@ -162,10 +162,10 @@ static void hil_mlc_send_polls(hil_mlc *mlc) {
162 if (did != (p & HIL_PKT_ADDR_MASK) >> 8) { 162 if (did != (p & HIL_PKT_ADDR_MASK) >> 8) {
163 if (drv == NULL || drv->interrupt == NULL) goto skip; 163 if (drv == NULL || drv->interrupt == NULL) goto skip;
164 164
165 drv->interrupt(serio, 0, 0, NULL); 165 drv->interrupt(serio, 0, 0);
166 drv->interrupt(serio, HIL_ERR_INT >> 16, 0, NULL); 166 drv->interrupt(serio, HIL_ERR_INT >> 16, 0);
167 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0, NULL); 167 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0);
168 drv->interrupt(serio, HIL_CMD_POL + cnt, 0, NULL); 168 drv->interrupt(serio, HIL_CMD_POL + cnt, 0);
169 skip: 169 skip:
170 did = (p & HIL_PKT_ADDR_MASK) >> 8; 170 did = (p & HIL_PKT_ADDR_MASK) >> 8;
171 serio = did ? mlc->serio[mlc->di_map[did-1]] : NULL; 171 serio = did ? mlc->serio[mlc->di_map[did-1]] : NULL;
@@ -174,10 +174,10 @@ static void hil_mlc_send_polls(hil_mlc *mlc) {
174 } 174 }
175 cnt++; i++; 175 cnt++; i++;
176 if (drv == NULL || drv->interrupt == NULL) continue; 176 if (drv == NULL || drv->interrupt == NULL) continue;
177 drv->interrupt(serio, (p >> 24), 0, NULL); 177 drv->interrupt(serio, (p >> 24), 0);
178 drv->interrupt(serio, (p >> 16) & 0xff, 0, NULL); 178 drv->interrupt(serio, (p >> 16) & 0xff, 0);
179 drv->interrupt(serio, (p >> 8) & ~HIL_PKT_ADDR_MASK, 0, NULL); 179 drv->interrupt(serio, (p >> 8) & ~HIL_PKT_ADDR_MASK, 0);
180 drv->interrupt(serio, p & 0xff, 0, NULL); 180 drv->interrupt(serio, p & 0xff, 0);
181 } 181 }
182} 182}
183 183
@@ -780,16 +780,16 @@ static int hil_mlc_serio_write(struct serio *serio, unsigned char c) {
780 while ((last != idx) && (*last == 0)) last--; 780 while ((last != idx) && (*last == 0)) last--;
781 781
782 while (idx != last) { 782 while (idx != last) {
783 drv->interrupt(serio, 0, 0, NULL); 783 drv->interrupt(serio, 0, 0);
784 drv->interrupt(serio, HIL_ERR_INT >> 16, 0, NULL); 784 drv->interrupt(serio, HIL_ERR_INT >> 16, 0);
785 drv->interrupt(serio, 0, 0, NULL); 785 drv->interrupt(serio, 0, 0);
786 drv->interrupt(serio, *idx, 0, NULL); 786 drv->interrupt(serio, *idx, 0);
787 idx++; 787 idx++;
788 } 788 }
789 drv->interrupt(serio, 0, 0, NULL); 789 drv->interrupt(serio, 0, 0);
790 drv->interrupt(serio, HIL_ERR_INT >> 16, 0, NULL); 790 drv->interrupt(serio, HIL_ERR_INT >> 16, 0);
791 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0, NULL); 791 drv->interrupt(serio, HIL_PKT_CMD >> 8, 0);
792 drv->interrupt(serio, *idx, 0, NULL); 792 drv->interrupt(serio, *idx, 0);
793 793
794 mlc->serio_oidx[map->didx] = 0; 794 mlc->serio_oidx[map->didx] = 0;
795 mlc->serio_opacket[map->didx] = 0; 795 mlc->serio_opacket[map->didx] = 0;
diff --git a/drivers/input/serio/hp_sdc.c b/drivers/input/serio/hp_sdc.c
index a10348bb25e9..ba7b920347e3 100644
--- a/drivers/input/serio/hp_sdc.c
+++ b/drivers/input/serio/hp_sdc.c
@@ -202,7 +202,7 @@ static void hp_sdc_take (int irq, void *dev_id, uint8_t status, uint8_t data) {
202 } 202 }
203} 203}
204 204
205static irqreturn_t hp_sdc_isr(int irq, void *dev_id, struct pt_regs * regs) { 205static irqreturn_t hp_sdc_isr(int irq, void *dev_id) {
206 uint8_t status, data; 206 uint8_t status, data;
207 207
208 status = hp_sdc_status_in8(); 208 status = hp_sdc_status_in8();
@@ -253,7 +253,7 @@ static irqreturn_t hp_sdc_isr(int irq, void *dev_id, struct pt_regs * regs) {
253} 253}
254 254
255 255
256static irqreturn_t hp_sdc_nmisr(int irq, void *dev_id, struct pt_regs * regs) { 256static irqreturn_t hp_sdc_nmisr(int irq, void *dev_id) {
257 int status; 257 int status;
258 258
259 status = hp_sdc_status_in8(); 259 status = hp_sdc_status_in8();
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 1bb0c76a9259..09b06e605b50 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -108,7 +108,7 @@ static unsigned char i8042_kbd_irq_registered;
108static unsigned char i8042_aux_irq_registered; 108static unsigned char i8042_aux_irq_registered;
109static struct platform_device *i8042_platform_device; 109static struct platform_device *i8042_platform_device;
110 110
111static irqreturn_t i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs); 111static irqreturn_t i8042_interrupt(int irq, void *dev_id);
112 112
113/* 113/*
114 * The i8042_wait_read() and i8042_wait_write functions wait for the i8042 to 114 * The i8042_wait_read() and i8042_wait_write functions wait for the i8042 to
@@ -271,7 +271,7 @@ static int i8042_aux_write(struct serio *serio, unsigned char c)
271 * characters later. 271 * characters later.
272 */ 272 */
273 273
274 i8042_interrupt(0, NULL, NULL); 274 i8042_interrupt(0, NULL);
275 return retval; 275 return retval;
276} 276}
277 277
@@ -309,7 +309,7 @@ static void i8042_stop(struct serio *serio)
309 * to the upper layers. 309 * to the upper layers.
310 */ 310 */
311 311
312static irqreturn_t i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs) 312static irqreturn_t i8042_interrupt(int irq, void *dev_id)
313{ 313{
314 struct i8042_port *port; 314 struct i8042_port *port;
315 unsigned long flags; 315 unsigned long flags;
@@ -379,7 +379,7 @@ static irqreturn_t i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs)
379 dfl & SERIO_TIMEOUT ? ", timeout" : ""); 379 dfl & SERIO_TIMEOUT ? ", timeout" : "");
380 380
381 if (likely(port->exists)) 381 if (likely(port->exists))
382 serio_interrupt(port->serio, data, dfl, regs); 382 serio_interrupt(port->serio, data, dfl);
383 383
384 ret = 1; 384 ret = 1;
385 out: 385 out:
@@ -519,7 +519,7 @@ static int __devinit i8042_check_mux(void)
519static struct completion i8042_aux_irq_delivered __devinitdata; 519static struct completion i8042_aux_irq_delivered __devinitdata;
520static int i8042_irq_being_tested __devinitdata; 520static int i8042_irq_being_tested __devinitdata;
521 521
522static irqreturn_t __devinit i8042_aux_test_irq(int irq, void *dev_id, struct pt_regs *regs) 522static irqreturn_t __devinit i8042_aux_test_irq(int irq, void *dev_id)
523{ 523{
524 unsigned long flags; 524 unsigned long flags;
525 unsigned char str, data; 525 unsigned char str, data;
@@ -905,7 +905,7 @@ static int i8042_resume(struct platform_device *dev)
905 if (i8042_ports[I8042_KBD_PORT_NO].serio) 905 if (i8042_ports[I8042_KBD_PORT_NO].serio)
906 i8042_enable_kbd_port(); 906 i8042_enable_kbd_port();
907 907
908 i8042_interrupt(0, NULL, NULL); 908 i8042_interrupt(0, NULL);
909 909
910 return 0; 910 return 0;
911} 911}
diff --git a/drivers/input/serio/maceps2.c b/drivers/input/serio/maceps2.c
index f08a5d0cd5fa..558200e96d0f 100644
--- a/drivers/input/serio/maceps2.c
+++ b/drivers/input/serio/maceps2.c
@@ -72,8 +72,7 @@ static int maceps2_write(struct serio *dev, unsigned char val)
72 return -1; 72 return -1;
73} 73}
74 74
75static irqreturn_t maceps2_interrupt(int irq, void *dev_id, 75static irqreturn_t maceps2_interrupt(int irq, void *dev_id)
76 struct pt_regs *regs)
77{ 76{
78 struct serio *dev = dev_id; 77 struct serio *dev = dev_id;
79 struct mace_ps2port *port = ((struct maceps2_data *)dev->port_data)->port; 78 struct mace_ps2port *port = ((struct maceps2_data *)dev->port_data)->port;
@@ -81,7 +80,7 @@ static irqreturn_t maceps2_interrupt(int irq, void *dev_id,
81 80
82 if (port->status & PS2_STATUS_RX_FULL) { 81 if (port->status & PS2_STATUS_RX_FULL) {
83 byte = port->rx; 82 byte = port->rx;
84 serio_interrupt(dev, byte & 0xff, 0, regs); 83 serio_interrupt(dev, byte & 0xff, 0);
85 } 84 }
86 85
87 return IRQ_HANDLED; 86 return IRQ_HANDLED;
diff --git a/drivers/input/serio/parkbd.c b/drivers/input/serio/parkbd.c
index a5c1fb3a4a51..688610e86a3e 100644
--- a/drivers/input/serio/parkbd.c
+++ b/drivers/input/serio/parkbd.c
@@ -102,7 +102,7 @@ static int parkbd_write(struct serio *port, unsigned char c)
102 return 0; 102 return 0;
103} 103}
104 104
105static void parkbd_interrupt(int irq, void *dev_id, struct pt_regs *regs) 105static void parkbd_interrupt(int irq, void *dev_id)
106{ 106{
107 107
108 if (parkbd_writing) { 108 if (parkbd_writing) {
@@ -134,7 +134,7 @@ static void parkbd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
134 parkbd_buffer |= (parkbd_readlines() >> 1) << parkbd_counter++; 134 parkbd_buffer |= (parkbd_readlines() >> 1) << parkbd_counter++;
135 135
136 if (parkbd_counter == parkbd_mode + 10) 136 if (parkbd_counter == parkbd_mode + 10)
137 serio_interrupt(parkbd_port, (parkbd_buffer >> (2 - parkbd_mode)) & 0xff, 0, regs); 137 serio_interrupt(parkbd_port, (parkbd_buffer >> (2 - parkbd_mode)) & 0xff, 0);
138 } 138 }
139 139
140 parkbd_last = jiffies; 140 parkbd_last = jiffies;
diff --git a/drivers/input/serio/pcips2.c b/drivers/input/serio/pcips2.c
index fb727c665253..ea5e3c6ddb62 100644
--- a/drivers/input/serio/pcips2.c
+++ b/drivers/input/serio/pcips2.c
@@ -58,7 +58,7 @@ static int pcips2_write(struct serio *io, unsigned char val)
58 return 0; 58 return 0;
59} 59}
60 60
61static irqreturn_t pcips2_interrupt(int irq, void *devid, struct pt_regs *regs) 61static irqreturn_t pcips2_interrupt(int irq, void *devid)
62{ 62{
63 struct pcips2_data *ps2if = devid; 63 struct pcips2_data *ps2if = devid;
64 unsigned char status, scancode; 64 unsigned char status, scancode;
@@ -80,7 +80,7 @@ static irqreturn_t pcips2_interrupt(int irq, void *devid, struct pt_regs *regs)
80 if (hweight8(scancode) & 1) 80 if (hweight8(scancode) & 1)
81 flag ^= SERIO_PARITY; 81 flag ^= SERIO_PARITY;
82 82
83 serio_interrupt(ps2if->io, scancode, flag, regs); 83 serio_interrupt(ps2if->io, scancode, flag);
84 } while (1); 84 } while (1);
85 return IRQ_RETVAL(handled); 85 return IRQ_RETVAL(handled);
86} 86}
diff --git a/drivers/input/serio/q40kbd.c b/drivers/input/serio/q40kbd.c
index d3827c5fe119..cb89aff2e160 100644
--- a/drivers/input/serio/q40kbd.c
+++ b/drivers/input/serio/q40kbd.c
@@ -53,14 +53,14 @@ DEFINE_SPINLOCK(q40kbd_lock);
53static struct serio *q40kbd_port; 53static struct serio *q40kbd_port;
54static struct platform_device *q40kbd_device; 54static struct platform_device *q40kbd_device;
55 55
56static irqreturn_t q40kbd_interrupt(int irq, void *dev_id, struct pt_regs *regs) 56static irqreturn_t q40kbd_interrupt(int irq, void *dev_id)
57{ 57{
58 unsigned long flags; 58 unsigned long flags;
59 59
60 spin_lock_irqsave(&q40kbd_lock, flags); 60 spin_lock_irqsave(&q40kbd_lock, flags);
61 61
62 if (Q40_IRQ_KEYB_MASK & master_inb(INTERRUPT_REG)) 62 if (Q40_IRQ_KEYB_MASK & master_inb(INTERRUPT_REG))
63 serio_interrupt(q40kbd_port, master_inb(KEYCODE_REG), 0, regs); 63 serio_interrupt(q40kbd_port, master_inb(KEYCODE_REG), 0);
64 64
65 master_outb(-1, KEYBOARD_UNLOCK_REG); 65 master_outb(-1, KEYBOARD_UNLOCK_REG);
66 66
diff --git a/drivers/input/serio/rpckbd.c b/drivers/input/serio/rpckbd.c
index 513d37fc1acf..49f84315cb32 100644
--- a/drivers/input/serio/rpckbd.c
+++ b/drivers/input/serio/rpckbd.c
@@ -56,7 +56,7 @@ static int rpckbd_write(struct serio *port, unsigned char val)
56 return 0; 56 return 0;
57} 57}
58 58
59static irqreturn_t rpckbd_rx(int irq, void *dev_id, struct pt_regs *regs) 59static irqreturn_t rpckbd_rx(int irq, void *dev_id)
60{ 60{
61 struct serio *port = dev_id; 61 struct serio *port = dev_id;
62 unsigned int byte; 62 unsigned int byte;
@@ -65,13 +65,13 @@ static irqreturn_t rpckbd_rx(int irq, void *dev_id, struct pt_regs *regs)
65 while (iomd_readb(IOMD_KCTRL) & (1 << 5)) { 65 while (iomd_readb(IOMD_KCTRL) & (1 << 5)) {
66 byte = iomd_readb(IOMD_KARTRX); 66 byte = iomd_readb(IOMD_KARTRX);
67 67
68 serio_interrupt(port, byte, 0, regs); 68 serio_interrupt(port, byte, 0);
69 handled = IRQ_HANDLED; 69 handled = IRQ_HANDLED;
70 } 70 }
71 return handled; 71 return handled;
72} 72}
73 73
74static irqreturn_t rpckbd_tx(int irq, void *dev_id, struct pt_regs *regs) 74static irqreturn_t rpckbd_tx(int irq, void *dev_id)
75{ 75{
76 return IRQ_HANDLED; 76 return IRQ_HANDLED;
77} 77}
diff --git a/drivers/input/serio/sa1111ps2.c b/drivers/input/serio/sa1111ps2.c
index ebd9976fc811..559508795af1 100644
--- a/drivers/input/serio/sa1111ps2.c
+++ b/drivers/input/serio/sa1111ps2.c
@@ -40,7 +40,7 @@ struct ps2if {
40 * at the most one, but we loop for safety. If there was a 40 * at the most one, but we loop for safety. If there was a
41 * framing error, we have to manually clear the status. 41 * framing error, we have to manually clear the status.
42 */ 42 */
43static irqreturn_t ps2_rxint(int irq, void *dev_id, struct pt_regs *regs) 43static irqreturn_t ps2_rxint(int irq, void *dev_id)
44{ 44{
45 struct ps2if *ps2if = dev_id; 45 struct ps2if *ps2if = dev_id;
46 unsigned int scancode, flag, status; 46 unsigned int scancode, flag, status;
@@ -58,7 +58,7 @@ static irqreturn_t ps2_rxint(int irq, void *dev_id, struct pt_regs *regs)
58 if (hweight8(scancode) & 1) 58 if (hweight8(scancode) & 1)
59 flag ^= SERIO_PARITY; 59 flag ^= SERIO_PARITY;
60 60
61 serio_interrupt(ps2if->io, scancode, flag, regs); 61 serio_interrupt(ps2if->io, scancode, flag);
62 62
63 status = sa1111_readl(ps2if->base + SA1111_PS2STAT); 63 status = sa1111_readl(ps2if->base + SA1111_PS2STAT);
64 } 64 }
@@ -69,7 +69,7 @@ static irqreturn_t ps2_rxint(int irq, void *dev_id, struct pt_regs *regs)
69/* 69/*
70 * Completion of ps2 write 70 * Completion of ps2 write
71 */ 71 */
72static irqreturn_t ps2_txint(int irq, void *dev_id, struct pt_regs *regs) 72static irqreturn_t ps2_txint(int irq, void *dev_id)
73{ 73{
74 struct ps2if *ps2if = dev_id; 74 struct ps2if *ps2if = dev_id;
75 unsigned int status; 75 unsigned int status;
diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
index 3e76ad71c9a0..960fae3c3cea 100644
--- a/drivers/input/serio/serio.c
+++ b/drivers/input/serio/serio.c
@@ -911,7 +911,7 @@ void serio_close(struct serio *serio)
911} 911}
912 912
913irqreturn_t serio_interrupt(struct serio *serio, 913irqreturn_t serio_interrupt(struct serio *serio,
914 unsigned char data, unsigned int dfl, struct pt_regs *regs) 914 unsigned char data, unsigned int dfl)
915{ 915{
916 unsigned long flags; 916 unsigned long flags;
917 irqreturn_t ret = IRQ_NONE; 917 irqreturn_t ret = IRQ_NONE;
@@ -919,7 +919,7 @@ irqreturn_t serio_interrupt(struct serio *serio,
919 spin_lock_irqsave(&serio->lock, flags); 919 spin_lock_irqsave(&serio->lock, flags);
920 920
921 if (likely(serio->drv)) { 921 if (likely(serio->drv)) {
922 ret = serio->drv->interrupt(serio, data, dfl, regs); 922 ret = serio->drv->interrupt(serio, data, dfl);
923 } else if (!dfl && serio->registered) { 923 } else if (!dfl && serio->registered) {
924 serio_rescan(serio); 924 serio_rescan(serio);
925 ret = IRQ_HANDLED; 925 ret = IRQ_HANDLED;
diff --git a/drivers/input/serio/serio_raw.c b/drivers/input/serio/serio_raw.c
index 71a8eea816cb..ba2a2035d648 100644
--- a/drivers/input/serio/serio_raw.c
+++ b/drivers/input/serio/serio_raw.c
@@ -250,7 +250,7 @@ static struct file_operations serio_raw_fops = {
250 *********************************************************************/ 250 *********************************************************************/
251 251
252static irqreturn_t serio_raw_interrupt(struct serio *serio, unsigned char data, 252static irqreturn_t serio_raw_interrupt(struct serio *serio, unsigned char data,
253 unsigned int dfl, struct pt_regs *regs) 253 unsigned int dfl)
254{ 254{
255 struct serio_raw *serio_raw = serio_get_drvdata(serio); 255 struct serio_raw *serio_raw = serio_get_drvdata(serio);
256 struct serio_raw_list *list; 256 struct serio_raw_list *list;
diff --git a/drivers/input/serio/serport.c b/drivers/input/serio/serport.c
index 54a680cc704d..e1a3a79ab3f9 100644
--- a/drivers/input/serio/serport.c
+++ b/drivers/input/serio/serport.c
@@ -117,9 +117,6 @@ static void serport_ldisc_close(struct tty_struct *tty)
117 * serport_ldisc_receive() is called by the low level tty driver when characters 117 * serport_ldisc_receive() is called by the low level tty driver when characters
118 * are ready for us. We forward the characters, one by one to the 'interrupt' 118 * are ready for us. We forward the characters, one by one to the 'interrupt'
119 * routine. 119 * routine.
120 *
121 * FIXME: We should get pt_regs from the tty layer and forward them to
122 * serio_interrupt here.
123 */ 120 */
124 121
125static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *cp, char *fp, int count) 122static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *cp, char *fp, int count)
@@ -134,7 +131,7 @@ static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *c
134 goto out; 131 goto out;
135 132
136 for (i = 0; i < count; i++) 133 for (i = 0; i < count; i++)
137 serio_interrupt(serport->serio, cp[i], 0, NULL); 134 serio_interrupt(serport->serio, cp[i], 0);
138 135
139out: 136out:
140 spin_unlock_irqrestore(&serport->lock, flags); 137 spin_unlock_irqrestore(&serport->lock, flags);
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 66e411badf70..f56d6a0f0624 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -487,7 +487,7 @@ static void ads7846_timer(unsigned long handle)
487 spin_unlock_irq(&ts->lock); 487 spin_unlock_irq(&ts->lock);
488} 488}
489 489
490static irqreturn_t ads7846_irq(int irq, void *handle, struct pt_regs *regs) 490static irqreturn_t ads7846_irq(int irq, void *handle)
491{ 491{
492 struct ads7846 *ts = handle; 492 struct ads7846 *ts = handle;
493 unsigned long flags; 493 unsigned long flags;
diff --git a/drivers/input/touchscreen/corgi_ts.c b/drivers/input/touchscreen/corgi_ts.c
index 9b66271d3ba8..ca79b2246195 100644
--- a/drivers/input/touchscreen/corgi_ts.c
+++ b/drivers/input/touchscreen/corgi_ts.c
@@ -173,7 +173,7 @@ static int read_xydata(struct corgi_ts *corgi_ts)
173 return 1; 173 return 1;
174} 174}
175 175
176static void new_data(struct corgi_ts *corgi_ts, struct pt_regs *regs) 176static void new_data(struct corgi_ts *corgi_ts)
177{ 177{
178 if (corgi_ts->power_mode != PWR_MODE_ACTIVE) 178 if (corgi_ts->power_mode != PWR_MODE_ACTIVE)
179 return; 179 return;
@@ -181,7 +181,6 @@ static void new_data(struct corgi_ts *corgi_ts, struct pt_regs *regs)
181 if (!corgi_ts->tc.pressure && corgi_ts->pendown == 0) 181 if (!corgi_ts->tc.pressure && corgi_ts->pendown == 0)
182 return; 182 return;
183 183
184 input_regs(corgi_ts->input, regs);
185 input_report_abs(corgi_ts->input, ABS_X, corgi_ts->tc.x); 184 input_report_abs(corgi_ts->input, ABS_X, corgi_ts->tc.x);
186 input_report_abs(corgi_ts->input, ABS_Y, corgi_ts->tc.y); 185 input_report_abs(corgi_ts->input, ABS_Y, corgi_ts->tc.y);
187 input_report_abs(corgi_ts->input, ABS_PRESSURE, corgi_ts->tc.pressure); 186 input_report_abs(corgi_ts->input, ABS_PRESSURE, corgi_ts->tc.pressure);
@@ -189,14 +188,14 @@ static void new_data(struct corgi_ts *corgi_ts, struct pt_regs *regs)
189 input_sync(corgi_ts->input); 188 input_sync(corgi_ts->input);
190} 189}
191 190
192static void ts_interrupt_main(struct corgi_ts *corgi_ts, int isTimer, struct pt_regs *regs) 191static void ts_interrupt_main(struct corgi_ts *corgi_ts, int isTimer)
193{ 192{
194 if ((GPLR(IRQ_TO_GPIO(corgi_ts->irq_gpio)) & GPIO_bit(IRQ_TO_GPIO(corgi_ts->irq_gpio))) == 0) { 193 if ((GPLR(IRQ_TO_GPIO(corgi_ts->irq_gpio)) & GPIO_bit(IRQ_TO_GPIO(corgi_ts->irq_gpio))) == 0) {
195 /* Disable Interrupt */ 194 /* Disable Interrupt */
196 set_irq_type(corgi_ts->irq_gpio, IRQT_NOEDGE); 195 set_irq_type(corgi_ts->irq_gpio, IRQT_NOEDGE);
197 if (read_xydata(corgi_ts)) { 196 if (read_xydata(corgi_ts)) {
198 corgi_ts->pendown = 1; 197 corgi_ts->pendown = 1;
199 new_data(corgi_ts, regs); 198 new_data(corgi_ts);
200 } 199 }
201 mod_timer(&corgi_ts->timer, jiffies + HZ / 100); 200 mod_timer(&corgi_ts->timer, jiffies + HZ / 100);
202 } else { 201 } else {
@@ -208,7 +207,7 @@ static void ts_interrupt_main(struct corgi_ts *corgi_ts, int isTimer, struct pt_
208 207
209 if (corgi_ts->pendown) { 208 if (corgi_ts->pendown) {
210 corgi_ts->tc.pressure = 0; 209 corgi_ts->tc.pressure = 0;
211 new_data(corgi_ts, regs); 210 new_data(corgi_ts);
212 } 211 }
213 212
214 /* Enable Falling Edge */ 213 /* Enable Falling Edge */
@@ -223,10 +222,10 @@ static void corgi_ts_timer(unsigned long data)
223 ts_interrupt_main(corgits_data, 1, NULL); 222 ts_interrupt_main(corgits_data, 1, NULL);
224} 223}
225 224
226static irqreturn_t ts_interrupt(int irq, void *dev_id, struct pt_regs *regs) 225static irqreturn_t ts_interrupt(int irq, void *dev_id)
227{ 226{
228 struct corgi_ts *corgits_data = dev_id; 227 struct corgi_ts *corgits_data = dev_id;
229 ts_interrupt_main(corgits_data, 0, regs); 228 ts_interrupt_main(corgits_data, 0);
230 return IRQ_HANDLED; 229 return IRQ_HANDLED;
231} 230}
232 231
diff --git a/drivers/input/touchscreen/elo.c b/drivers/input/touchscreen/elo.c
index ab565335ee44..913e1b73bb0e 100644
--- a/drivers/input/touchscreen/elo.c
+++ b/drivers/input/touchscreen/elo.c
@@ -67,7 +67,7 @@ struct elo {
67 char phys[32]; 67 char phys[32];
68}; 68};
69 69
70static void elo_process_data_10(struct elo *elo, unsigned char data, struct pt_regs *regs) 70static void elo_process_data_10(struct elo *elo, unsigned char data)
71{ 71{
72 struct input_dev *dev = elo->dev; 72 struct input_dev *dev = elo->dev;
73 73
@@ -95,7 +95,6 @@ static void elo_process_data_10(struct elo *elo, unsigned char data, struct pt_r
95 break; 95 break;
96 } 96 }
97 if (likely(elo->data[1] == ELO10_TOUCH_PACKET)) { 97 if (likely(elo->data[1] == ELO10_TOUCH_PACKET)) {
98 input_regs(dev, regs);
99 input_report_abs(dev, ABS_X, (elo->data[4] << 8) | elo->data[3]); 98 input_report_abs(dev, ABS_X, (elo->data[4] << 8) | elo->data[3]);
100 input_report_abs(dev, ABS_Y, (elo->data[6] << 8) | elo->data[5]); 99 input_report_abs(dev, ABS_Y, (elo->data[6] << 8) | elo->data[5]);
101 if (elo->data[2] & ELO10_PRESSURE) 100 if (elo->data[2] & ELO10_PRESSURE)
@@ -116,7 +115,7 @@ static void elo_process_data_10(struct elo *elo, unsigned char data, struct pt_r
116 elo->csum += data; 115 elo->csum += data;
117} 116}
118 117
119static void elo_process_data_6(struct elo *elo, unsigned char data, struct pt_regs *regs) 118static void elo_process_data_6(struct elo *elo, unsigned char data)
120{ 119{
121 struct input_dev *dev = elo->dev; 120 struct input_dev *dev = elo->dev;
122 121
@@ -134,7 +133,6 @@ static void elo_process_data_6(struct elo *elo, unsigned char data, struct pt_re
134 break; 133 break;
135 } 134 }
136 135
137 input_regs(dev, regs);
138 input_report_abs(dev, ABS_X, ((elo->data[0] & 0x3f) << 6) | (elo->data[1] & 0x3f)); 136 input_report_abs(dev, ABS_X, ((elo->data[0] & 0x3f) << 6) | (elo->data[1] & 0x3f));
139 input_report_abs(dev, ABS_Y, ((elo->data[2] & 0x3f) << 6) | (elo->data[3] & 0x3f)); 137 input_report_abs(dev, ABS_Y, ((elo->data[2] & 0x3f) << 6) | (elo->data[3] & 0x3f));
140 138
@@ -164,7 +162,7 @@ static void elo_process_data_6(struct elo *elo, unsigned char data, struct pt_re
164 } 162 }
165} 163}
166 164
167static void elo_process_data_3(struct elo *elo, unsigned char data, struct pt_regs *regs) 165static void elo_process_data_3(struct elo *elo, unsigned char data)
168{ 166{
169 struct input_dev *dev = elo->dev; 167 struct input_dev *dev = elo->dev;
170 168
@@ -177,7 +175,6 @@ static void elo_process_data_3(struct elo *elo, unsigned char data, struct pt_re
177 elo->idx = 0; 175 elo->idx = 0;
178 break; 176 break;
179 case 2: 177 case 2:
180 input_regs(dev, regs);
181 input_report_key(dev, BTN_TOUCH, !(elo->data[1] & 0x80)); 178 input_report_key(dev, BTN_TOUCH, !(elo->data[1] & 0x80));
182 input_report_abs(dev, ABS_X, elo->data[1]); 179 input_report_abs(dev, ABS_X, elo->data[1]);
183 input_report_abs(dev, ABS_Y, elo->data[2]); 180 input_report_abs(dev, ABS_Y, elo->data[2]);
@@ -188,22 +185,22 @@ static void elo_process_data_3(struct elo *elo, unsigned char data, struct pt_re
188} 185}
189 186
190static irqreturn_t elo_interrupt(struct serio *serio, 187static irqreturn_t elo_interrupt(struct serio *serio,
191 unsigned char data, unsigned int flags, struct pt_regs *regs) 188 unsigned char data, unsigned int flags)
192{ 189{
193 struct elo *elo = serio_get_drvdata(serio); 190 struct elo *elo = serio_get_drvdata(serio);
194 191
195 switch(elo->id) { 192 switch(elo->id) {
196 case 0: 193 case 0:
197 elo_process_data_10(elo, data, regs); 194 elo_process_data_10(elo, data);
198 break; 195 break;
199 196
200 case 1: 197 case 1:
201 case 2: 198 case 2:
202 elo_process_data_6(elo, data, regs); 199 elo_process_data_6(elo, data);
203 break; 200 break;
204 201
205 case 3: 202 case 3:
206 elo_process_data_3(elo, data, regs); 203 elo_process_data_3(elo, data);
207 break; 204 break;
208 } 205 }
209 206
diff --git a/drivers/input/touchscreen/gunze.c b/drivers/input/touchscreen/gunze.c
index b769b21973b7..817c2198933d 100644
--- a/drivers/input/touchscreen/gunze.c
+++ b/drivers/input/touchscreen/gunze.c
@@ -60,7 +60,7 @@ struct gunze {
60 char phys[32]; 60 char phys[32];
61}; 61};
62 62
63static void gunze_process_packet(struct gunze* gunze, struct pt_regs *regs) 63static void gunze_process_packet(struct gunze* gunze)
64{ 64{
65 struct input_dev *dev = gunze->dev; 65 struct input_dev *dev = gunze->dev;
66 66
@@ -70,7 +70,6 @@ static void gunze_process_packet(struct gunze* gunze, struct pt_regs *regs)
70 return; 70 return;
71 } 71 }
72 72
73 input_regs(dev, regs);
74 input_report_abs(dev, ABS_X, simple_strtoul(gunze->data + 1, NULL, 10)); 73 input_report_abs(dev, ABS_X, simple_strtoul(gunze->data + 1, NULL, 10));
75 input_report_abs(dev, ABS_Y, 1024 - simple_strtoul(gunze->data + 6, NULL, 10)); 74 input_report_abs(dev, ABS_Y, 1024 - simple_strtoul(gunze->data + 6, NULL, 10));
76 input_report_key(dev, BTN_TOUCH, gunze->data[0] == 'T'); 75 input_report_key(dev, BTN_TOUCH, gunze->data[0] == 'T');
@@ -78,12 +77,12 @@ static void gunze_process_packet(struct gunze* gunze, struct pt_regs *regs)
78} 77}
79 78
80static irqreturn_t gunze_interrupt(struct serio *serio, 79static irqreturn_t gunze_interrupt(struct serio *serio,
81 unsigned char data, unsigned int flags, struct pt_regs *regs) 80 unsigned char data, unsigned int flags)
82{ 81{
83 struct gunze* gunze = serio_get_drvdata(serio); 82 struct gunze* gunze = serio_get_drvdata(serio);
84 83
85 if (data == '\r') { 84 if (data == '\r') {
86 gunze_process_packet(gunze, regs); 85 gunze_process_packet(gunze);
87 gunze->idx = 0; 86 gunze->idx = 0;
88 } else { 87 } else {
89 if (gunze->idx < GUNZE_MAX_LENGTH) 88 if (gunze->idx < GUNZE_MAX_LENGTH)
diff --git a/drivers/input/touchscreen/h3600_ts_input.c b/drivers/input/touchscreen/h3600_ts_input.c
index e2b910018773..d9e61ee05ea9 100644
--- a/drivers/input/touchscreen/h3600_ts_input.c
+++ b/drivers/input/touchscreen/h3600_ts_input.c
@@ -106,19 +106,18 @@ struct h3600_dev {
106 char phys[32]; 106 char phys[32];
107}; 107};
108 108
109static irqreturn_t action_button_handler(int irq, void *dev_id, struct pt_regs *regs) 109static irqreturn_t action_button_handler(int irq, void *dev_id)
110{ 110{
111 int down = (GPLR & GPIO_BITSY_ACTION_BUTTON) ? 0 : 1; 111 int down = (GPLR & GPIO_BITSY_ACTION_BUTTON) ? 0 : 1;
112 struct input_dev *dev = (struct input_dev *) dev_id; 112 struct input_dev *dev = (struct input_dev *) dev_id;
113 113
114 input_regs(dev, regs);
115 input_report_key(dev, KEY_ENTER, down); 114 input_report_key(dev, KEY_ENTER, down);
116 input_sync(dev); 115 input_sync(dev);
117 116
118 return IRQ_HANDLED; 117 return IRQ_HANDLED;
119} 118}
120 119
121static irqreturn_t npower_button_handler(int irq, void *dev_id, struct pt_regs *regs) 120static irqreturn_t npower_button_handler(int irq, void *dev_id)
122{ 121{
123 int down = (GPLR & GPIO_BITSY_NPOWER_BUTTON) ? 0 : 1; 122 int down = (GPLR & GPIO_BITSY_NPOWER_BUTTON) ? 0 : 1;
124 struct input_dev *dev = (struct input_dev *) dev_id; 123 struct input_dev *dev = (struct input_dev *) dev_id;
@@ -127,7 +126,6 @@ static irqreturn_t npower_button_handler(int irq, void *dev_id, struct pt_regs *
127 * This interrupt is only called when we release the key. So we have 126 * This interrupt is only called when we release the key. So we have
128 * to fake a key press. 127 * to fake a key press.
129 */ 128 */
130 input_regs(dev, regs);
131 input_report_key(dev, KEY_SUSPEND, 1); 129 input_report_key(dev, KEY_SUSPEND, 1);
132 input_report_key(dev, KEY_SUSPEND, down); 130 input_report_key(dev, KEY_SUSPEND, down);
133 input_sync(dev); 131 input_sync(dev);
@@ -165,14 +163,12 @@ unsigned int h3600_flite_power(struct input_dev *dev, enum flite_pwr pwr)
165 * packets. Some packets coming from serial are not touchscreen related. In 163 * packets. Some packets coming from serial are not touchscreen related. In
166 * this case we send them off to be processed elsewhere. 164 * this case we send them off to be processed elsewhere.
167 */ 165 */
168static void h3600ts_process_packet(struct h3600_dev *ts, struct pt_regs *regs) 166static void h3600ts_process_packet(struct h3600_dev *ts)
169{ 167{
170 struct input_dev *dev = ts->dev; 168 struct input_dev *dev = ts->dev;
171 static int touched = 0; 169 static int touched = 0;
172 int key, down = 0; 170 int key, down = 0;
173 171
174 input_regs(dev, regs);
175
176 switch (ts->event) { 172 switch (ts->event) {
177 /* 173 /*
178 Buttons - returned as a single byte 174 Buttons - returned as a single byte
@@ -301,7 +297,7 @@ static int state;
301#define STATE_EOF 3 /* state where we decode checksum or EOF */ 297#define STATE_EOF 3 /* state where we decode checksum or EOF */
302 298
303static irqreturn_t h3600ts_interrupt(struct serio *serio, unsigned char data, 299static irqreturn_t h3600ts_interrupt(struct serio *serio, unsigned char data,
304 unsigned int flags, struct pt_regs *regs) 300 unsigned int flags)
305{ 301{
306 struct h3600_dev *ts = serio_get_drvdata(serio); 302 struct h3600_dev *ts = serio_get_drvdata(serio);
307 303
@@ -333,7 +329,7 @@ static irqreturn_t h3600ts_interrupt(struct serio *serio, unsigned char data,
333 case STATE_EOF: 329 case STATE_EOF:
334 state = STATE_SOF; 330 state = STATE_SOF;
335 if (data == CHAR_EOF || data == ts->chksum) 331 if (data == CHAR_EOF || data == ts->chksum)
336 h3600ts_process_packet(ts, regs); 332 h3600ts_process_packet(ts);
337 break; 333 break;
338 default: 334 default:
339 printk("Error3\n"); 335 printk("Error3\n");
diff --git a/drivers/input/touchscreen/hp680_ts_input.c b/drivers/input/touchscreen/hp680_ts_input.c
index ee6c2f40cdf6..e31c6c55b2e2 100644
--- a/drivers/input/touchscreen/hp680_ts_input.c
+++ b/drivers/input/touchscreen/hp680_ts_input.c
@@ -66,7 +66,7 @@ static void do_softint(void *data)
66 enable_irq(HP680_TS_IRQ); 66 enable_irq(HP680_TS_IRQ);
67} 67}
68 68
69static irqreturn_t hp680_ts_interrupt(int irq, void *dev, struct pt_regs *regs) 69static irqreturn_t hp680_ts_interrupt(int irq, void *dev)
70{ 70{
71 disable_irq_nosync(irq); 71 disable_irq_nosync(irq);
72 schedule_delayed_work(&work, HZ / 20); 72 schedule_delayed_work(&work, HZ / 20);
diff --git a/drivers/input/touchscreen/mk712.c b/drivers/input/touchscreen/mk712.c
index 3226830eea08..4cbcaa6a71e5 100644
--- a/drivers/input/touchscreen/mk712.c
+++ b/drivers/input/touchscreen/mk712.c
@@ -80,7 +80,7 @@ MODULE_PARM_DESC(irq, "IRQ of MK712 touchscreen controller");
80static struct input_dev *mk712_dev; 80static struct input_dev *mk712_dev;
81static DEFINE_SPINLOCK(mk712_lock); 81static DEFINE_SPINLOCK(mk712_lock);
82 82
83static irqreturn_t mk712_interrupt(int irq, void *dev_id, struct pt_regs *regs) 83static irqreturn_t mk712_interrupt(int irq, void *dev_id)
84{ 84{
85 unsigned char status; 85 unsigned char status;
86 static int debounce = 1; 86 static int debounce = 1;
@@ -88,7 +88,6 @@ static irqreturn_t mk712_interrupt(int irq, void *dev_id, struct pt_regs *regs)
88 static unsigned short last_y; 88 static unsigned short last_y;
89 89
90 spin_lock(&mk712_lock); 90 spin_lock(&mk712_lock);
91 input_regs(mk712_dev, regs);
92 91
93 status = inb(mk712_io + MK712_STATUS); 92 status = inb(mk712_io + MK712_STATUS);
94 93
diff --git a/drivers/input/touchscreen/mtouch.c b/drivers/input/touchscreen/mtouch.c
index 8647a905df80..3b4c61664b63 100644
--- a/drivers/input/touchscreen/mtouch.c
+++ b/drivers/input/touchscreen/mtouch.c
@@ -63,12 +63,11 @@ struct mtouch {
63 char phys[32]; 63 char phys[32];
64}; 64};
65 65
66static void mtouch_process_format_tablet(struct mtouch *mtouch, struct pt_regs *regs) 66static void mtouch_process_format_tablet(struct mtouch *mtouch)
67{ 67{
68 struct input_dev *dev = mtouch->dev; 68 struct input_dev *dev = mtouch->dev;
69 69
70 if (MTOUCH_FORMAT_TABLET_LENGTH == ++mtouch->idx) { 70 if (MTOUCH_FORMAT_TABLET_LENGTH == ++mtouch->idx) {
71 input_regs(dev, regs);
72 input_report_abs(dev, ABS_X, MTOUCH_GET_XC(mtouch->data)); 71 input_report_abs(dev, ABS_X, MTOUCH_GET_XC(mtouch->data));
73 input_report_abs(dev, ABS_Y, MTOUCH_MAX_YC - MTOUCH_GET_YC(mtouch->data)); 72 input_report_abs(dev, ABS_Y, MTOUCH_MAX_YC - MTOUCH_GET_YC(mtouch->data));
74 input_report_key(dev, BTN_TOUCH, MTOUCH_GET_TOUCHED(mtouch->data)); 73 input_report_key(dev, BTN_TOUCH, MTOUCH_GET_TOUCHED(mtouch->data));
@@ -78,7 +77,7 @@ static void mtouch_process_format_tablet(struct mtouch *mtouch, struct pt_regs *
78 } 77 }
79} 78}
80 79
81static void mtouch_process_response(struct mtouch *mtouch, struct pt_regs *regs) 80static void mtouch_process_response(struct mtouch *mtouch)
82{ 81{
83 if (MTOUCH_RESPONSE_END_BYTE == mtouch->data[mtouch->idx++]) { 82 if (MTOUCH_RESPONSE_END_BYTE == mtouch->data[mtouch->idx++]) {
84 /* FIXME - process response */ 83 /* FIXME - process response */
@@ -90,16 +89,16 @@ static void mtouch_process_response(struct mtouch *mtouch, struct pt_regs *regs)
90} 89}
91 90
92static irqreturn_t mtouch_interrupt(struct serio *serio, 91static irqreturn_t mtouch_interrupt(struct serio *serio,
93 unsigned char data, unsigned int flags, struct pt_regs *regs) 92 unsigned char data, unsigned int flags)
94{ 93{
95 struct mtouch* mtouch = serio_get_drvdata(serio); 94 struct mtouch* mtouch = serio_get_drvdata(serio);
96 95
97 mtouch->data[mtouch->idx] = data; 96 mtouch->data[mtouch->idx] = data;
98 97
99 if (MTOUCH_FORMAT_TABLET_STATUS_BIT & mtouch->data[0]) 98 if (MTOUCH_FORMAT_TABLET_STATUS_BIT & mtouch->data[0])
100 mtouch_process_format_tablet(mtouch, regs); 99 mtouch_process_format_tablet(mtouch);
101 else if (MTOUCH_RESPONSE_BEGIN_BYTE == mtouch->data[0]) 100 else if (MTOUCH_RESPONSE_BEGIN_BYTE == mtouch->data[0])
102 mtouch_process_response(mtouch, regs); 101 mtouch_process_response(mtouch);
103 else 102 else
104 printk(KERN_DEBUG "mtouch.c: unknown/unsynchronized data from device, byte %x\n",mtouch->data[0]); 103 printk(KERN_DEBUG "mtouch.c: unknown/unsynchronized data from device, byte %x\n",mtouch->data[0]);
105 104
diff --git a/drivers/input/touchscreen/penmount.c b/drivers/input/touchscreen/penmount.c
index f7370109d43e..6c7d0c2c76cc 100644
--- a/drivers/input/touchscreen/penmount.c
+++ b/drivers/input/touchscreen/penmount.c
@@ -46,7 +46,7 @@ struct pm {
46}; 46};
47 47
48static irqreturn_t pm_interrupt(struct serio *serio, 48static irqreturn_t pm_interrupt(struct serio *serio,
49 unsigned char data, unsigned int flags, struct pt_regs *regs) 49 unsigned char data, unsigned int flags)
50{ 50{
51 struct pm *pm = serio_get_drvdata(serio); 51 struct pm *pm = serio_get_drvdata(serio);
52 struct input_dev *dev = pm->dev; 52 struct input_dev *dev = pm->dev;
@@ -55,7 +55,6 @@ static irqreturn_t pm_interrupt(struct serio *serio,
55 55
56 if (pm->data[0] & 0x80) { 56 if (pm->data[0] & 0x80) {
57 if (PM_MAX_LENGTH == ++pm->idx) { 57 if (PM_MAX_LENGTH == ++pm->idx) {
58 input_regs(dev, regs);
59 input_report_abs(dev, ABS_X, pm->data[2] * 128 + pm->data[1]); 58 input_report_abs(dev, ABS_X, pm->data[2] * 128 + pm->data[1]);
60 input_report_abs(dev, ABS_Y, pm->data[4] * 128 + pm->data[3]); 59 input_report_abs(dev, ABS_Y, pm->data[4] * 128 + pm->data[3]);
61 input_report_key(dev, BTN_TOUCH, !!(pm->data[0] & 0x40)); 60 input_report_key(dev, BTN_TOUCH, !!(pm->data[0] & 0x40));
diff --git a/drivers/input/touchscreen/touchright.c b/drivers/input/touchscreen/touchright.c
index 1c89fa538651..c74f74e57af0 100644
--- a/drivers/input/touchscreen/touchright.c
+++ b/drivers/input/touchscreen/touchright.c
@@ -56,7 +56,7 @@ struct tr {
56}; 56};
57 57
58static irqreturn_t tr_interrupt(struct serio *serio, 58static irqreturn_t tr_interrupt(struct serio *serio,
59 unsigned char data, unsigned int flags, struct pt_regs *regs) 59 unsigned char data, unsigned int flags)
60{ 60{
61 struct tr *tr = serio_get_drvdata(serio); 61 struct tr *tr = serio_get_drvdata(serio);
62 struct input_dev *dev = tr->dev; 62 struct input_dev *dev = tr->dev;
@@ -65,7 +65,6 @@ static irqreturn_t tr_interrupt(struct serio *serio,
65 65
66 if ((tr->data[0] & TR_FORMAT_STATUS_MASK) == TR_FORMAT_STATUS_BYTE) { 66 if ((tr->data[0] & TR_FORMAT_STATUS_MASK) == TR_FORMAT_STATUS_BYTE) {
67 if (++tr->idx == TR_LENGTH) { 67 if (++tr->idx == TR_LENGTH) {
68 input_regs(dev, regs);
69 input_report_abs(dev, ABS_X, 68 input_report_abs(dev, ABS_X,
70 (tr->data[1] << 5) | (tr->data[2] >> 1)); 69 (tr->data[1] << 5) | (tr->data[2] >> 1));
71 input_report_abs(dev, ABS_Y, 70 input_report_abs(dev, ABS_Y,
diff --git a/drivers/input/touchscreen/touchwin.c b/drivers/input/touchscreen/touchwin.c
index a7b4c755958e..9911820fa2fe 100644
--- a/drivers/input/touchscreen/touchwin.c
+++ b/drivers/input/touchscreen/touchwin.c
@@ -60,7 +60,7 @@ struct tw {
60}; 60};
61 61
62static irqreturn_t tw_interrupt(struct serio *serio, 62static irqreturn_t tw_interrupt(struct serio *serio,
63 unsigned char data, unsigned int flags, struct pt_regs *regs) 63 unsigned char data, unsigned int flags)
64{ 64{
65 struct tw *tw = serio_get_drvdata(serio); 65 struct tw *tw = serio_get_drvdata(serio);
66 struct input_dev *dev = tw->dev; 66 struct input_dev *dev = tw->dev;
@@ -70,7 +70,6 @@ static irqreturn_t tw_interrupt(struct serio *serio,
70 tw->data[tw->idx++] = data; 70 tw->data[tw->idx++] = data;
71 /* verify length and that the two Y's are the same */ 71 /* verify length and that the two Y's are the same */
72 if (tw->idx == TW_LENGTH && tw->data[1] == tw->data[2]) { 72 if (tw->idx == TW_LENGTH && tw->data[1] == tw->data[2]) {
73 input_regs(dev, regs);
74 input_report_abs(dev, ABS_X, tw->data[0]); 73 input_report_abs(dev, ABS_X, tw->data[0]);
75 input_report_abs(dev, ABS_Y, tw->data[1]); 74 input_report_abs(dev, ABS_Y, tw->data[1]);
76 input_report_key(dev, BTN_TOUCH, 1); 75 input_report_key(dev, BTN_TOUCH, 1);
diff --git a/drivers/isdn/act2000/act2000_isa.c b/drivers/isdn/act2000/act2000_isa.c
index bc98d77c5ecd..3cac23739344 100644
--- a/drivers/isdn/act2000/act2000_isa.c
+++ b/drivers/isdn/act2000/act2000_isa.c
@@ -16,8 +16,6 @@
16#include "act2000_isa.h" 16#include "act2000_isa.h"
17#include "capi.h" 17#include "capi.h"
18 18
19static act2000_card *irq2card_map[16];
20
21/* 19/*
22 * Reset Controller, then try to read the Card's signature. 20 * Reset Controller, then try to read the Card's signature.
23 + Return: 21 + Return:
@@ -63,16 +61,11 @@ act2000_isa_detect(unsigned short portbase)
63} 61}
64 62
65static irqreturn_t 63static irqreturn_t
66act2000_isa_interrupt(int irq, void *dev_id, struct pt_regs *regs) 64act2000_isa_interrupt(int irq, void *dev_id)
67{ 65{
68 act2000_card *card = irq2card_map[irq]; 66 act2000_card *card = dev_id;
69 u_char istatus; 67 u_char istatus;
70 68
71 if (!card) {
72 printk(KERN_WARNING
73 "act2000: Spurious interrupt!\n");
74 return IRQ_NONE;
75 }
76 istatus = (inb(ISA_PORT_ISR) & 0x07); 69 istatus = (inb(ISA_PORT_ISR) & 0x07);
77 if (istatus & ISA_ISR_OUT) { 70 if (istatus & ISA_ISR_OUT) {
78 /* RX fifo has data */ 71 /* RX fifo has data */
@@ -139,17 +132,15 @@ int
139act2000_isa_config_irq(act2000_card * card, short irq) 132act2000_isa_config_irq(act2000_card * card, short irq)
140{ 133{
141 if (card->flags & ACT2000_FLAGS_IVALID) { 134 if (card->flags & ACT2000_FLAGS_IVALID) {
142 free_irq(card->irq, NULL); 135 free_irq(card->irq, card);
143 irq2card_map[card->irq] = NULL;
144 } 136 }
145 card->flags &= ~ACT2000_FLAGS_IVALID; 137 card->flags &= ~ACT2000_FLAGS_IVALID;
146 outb(ISA_COR_IRQOFF, ISA_PORT_COR); 138 outb(ISA_COR_IRQOFF, ISA_PORT_COR);
147 if (!irq) 139 if (!irq)
148 return 0; 140 return 0;
149 141
150 if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, NULL)) { 142 if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
151 card->irq = irq; 143 card->irq = irq;
152 irq2card_map[card->irq] = card;
153 card->flags |= ACT2000_FLAGS_IVALID; 144 card->flags |= ACT2000_FLAGS_IVALID;
154 printk(KERN_WARNING 145 printk(KERN_WARNING
155 "act2000: Could not request irq %d\n",irq); 146 "act2000: Could not request irq %d\n",irq);
@@ -188,10 +179,9 @@ act2000_isa_release(act2000_card * card)
188 unsigned long flags; 179 unsigned long flags;
189 180
190 spin_lock_irqsave(&card->lock, flags); 181 spin_lock_irqsave(&card->lock, flags);
191 if (card->flags & ACT2000_FLAGS_IVALID) { 182 if (card->flags & ACT2000_FLAGS_IVALID)
192 free_irq(card->irq, NULL); 183 free_irq(card->irq, card);
193 irq2card_map[card->irq] = NULL; 184
194 }
195 card->flags &= ~ACT2000_FLAGS_IVALID; 185 card->flags &= ~ACT2000_FLAGS_IVALID;
196 if (card->flags & ACT2000_FLAGS_PVALID) 186 if (card->flags & ACT2000_FLAGS_PVALID)
197 release_region(card->port, ISA_REGION); 187 release_region(card->port, ISA_REGION);
diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
index 5cfbe6a38010..0c937325a1b3 100644
--- a/drivers/isdn/gigaset/bas-gigaset.c
+++ b/drivers/isdn/gigaset/bas-gigaset.c
@@ -454,7 +454,7 @@ inline static int update_basstate(struct bas_cardstate *ucs,
454 * urb USB request block 454 * urb USB request block
455 * urb->context = inbuf structure for controller state 455 * urb->context = inbuf structure for controller state
456 */ 456 */
457static void read_ctrl_callback(struct urb *urb, struct pt_regs *regs) 457static void read_ctrl_callback(struct urb *urb)
458{ 458{
459 struct inbuf_t *inbuf = urb->context; 459 struct inbuf_t *inbuf = urb->context;
460 struct cardstate *cs = inbuf->cs; 460 struct cardstate *cs = inbuf->cs;
@@ -596,7 +596,7 @@ static int atread_submit(struct cardstate *cs, int timeout)
596 * urb USB request block 596 * urb USB request block
597 * urb->context = controller state structure 597 * urb->context = controller state structure
598 */ 598 */
599static void read_int_callback(struct urb *urb, struct pt_regs *regs) 599static void read_int_callback(struct urb *urb)
600{ 600{
601 struct cardstate *cs = urb->context; 601 struct cardstate *cs = urb->context;
602 struct bas_cardstate *ucs = cs->hw.bas; 602 struct bas_cardstate *ucs = cs->hw.bas;
@@ -762,7 +762,7 @@ resubmit:
762 * urb USB request block of completed request 762 * urb USB request block of completed request
763 * urb->context = bc_state structure 763 * urb->context = bc_state structure
764 */ 764 */
765static void read_iso_callback(struct urb *urb, struct pt_regs *regs) 765static void read_iso_callback(struct urb *urb)
766{ 766{
767 struct bc_state *bcs; 767 struct bc_state *bcs;
768 struct bas_bc_state *ubc; 768 struct bas_bc_state *ubc;
@@ -827,7 +827,7 @@ static void read_iso_callback(struct urb *urb, struct pt_regs *regs)
827 * urb USB request block of completed request 827 * urb USB request block of completed request
828 * urb->context = isow_urbctx_t structure 828 * urb->context = isow_urbctx_t structure
829 */ 829 */
830static void write_iso_callback(struct urb *urb, struct pt_regs *regs) 830static void write_iso_callback(struct urb *urb)
831{ 831{
832 struct isow_urbctx_t *ucx; 832 struct isow_urbctx_t *ucx;
833 struct bas_bc_state *ubc; 833 struct bas_bc_state *ubc;
@@ -1415,7 +1415,7 @@ static void req_timeout(unsigned long data)
1415 * urb USB request block of completed request 1415 * urb USB request block of completed request
1416 * urb->context = hardware specific controller state structure 1416 * urb->context = hardware specific controller state structure
1417 */ 1417 */
1418static void write_ctrl_callback(struct urb *urb, struct pt_regs *regs) 1418static void write_ctrl_callback(struct urb *urb)
1419{ 1419{
1420 struct bas_cardstate *ucs = urb->context; 1420 struct bas_cardstate *ucs = urb->context;
1421 int rc; 1421 int rc;
@@ -1661,7 +1661,7 @@ static void complete_cb(struct cardstate *cs)
1661 * urb USB request block of completed request 1661 * urb USB request block of completed request
1662 * urb->context = controller state structure 1662 * urb->context = controller state structure
1663 */ 1663 */
1664static void write_command_callback(struct urb *urb, struct pt_regs *regs) 1664static void write_command_callback(struct urb *urb)
1665{ 1665{
1666 struct cardstate *cs = urb->context; 1666 struct cardstate *cs = urb->context;
1667 struct bas_cardstate *ucs = cs->hw.bas; 1667 struct bas_cardstate *ucs = cs->hw.bas;
diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c
index 6e05d9d4a51a..4ffa9eb1c28e 100644
--- a/drivers/isdn/gigaset/usb-gigaset.c
+++ b/drivers/isdn/gigaset/usb-gigaset.c
@@ -362,7 +362,7 @@ static void gigaset_modem_fill(unsigned long data)
362 * 362 *
363 * It is called if the data was received from the device. 363 * It is called if the data was received from the device.
364 */ 364 */
365static void gigaset_read_int_callback(struct urb *urb, struct pt_regs *regs) 365static void gigaset_read_int_callback(struct urb *urb)
366{ 366{
367 struct inbuf_t *inbuf = urb->context; 367 struct inbuf_t *inbuf = urb->context;
368 struct cardstate *cs = inbuf->cs; 368 struct cardstate *cs = inbuf->cs;
@@ -420,7 +420,7 @@ static void gigaset_read_int_callback(struct urb *urb, struct pt_regs *regs)
420 420
421 421
422/* This callback routine is called when data was transmitted to the device. */ 422/* This callback routine is called when data was transmitted to the device. */
423static void gigaset_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 423static void gigaset_write_bulk_callback(struct urb *urb)
424{ 424{
425 struct cardstate *cs = urb->context; 425 struct cardstate *cs = urb->context;
426 unsigned long flags; 426 unsigned long flags;
diff --git a/drivers/isdn/hardware/avm/avmcard.h b/drivers/isdn/hardware/avm/avmcard.h
index 3b431723c7cb..d964f07e4a56 100644
--- a/drivers/isdn/hardware/avm/avmcard.h
+++ b/drivers/isdn/hardware/avm/avmcard.h
@@ -554,7 +554,7 @@ void b1_register_appl(struct capi_ctr *ctrl, u16 appl,
554void b1_release_appl(struct capi_ctr *ctrl, u16 appl); 554void b1_release_appl(struct capi_ctr *ctrl, u16 appl);
555u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff *skb); 555u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff *skb);
556void b1_parse_version(avmctrl_info *card); 556void b1_parse_version(avmctrl_info *card);
557irqreturn_t b1_interrupt(int interrupt, void *devptr, struct pt_regs *regs); 557irqreturn_t b1_interrupt(int interrupt, void *devptr);
558 558
559int b1ctl_read_proc(char *page, char **start, off_t off, 559int b1ctl_read_proc(char *page, char **start, off_t off,
560 int count, int *eof, struct capi_ctr *ctrl); 560 int count, int *eof, struct capi_ctr *ctrl);
@@ -567,7 +567,7 @@ void avmcard_dma_free(avmcard_dmainfo *);
567int b1pciv4_detect(avmcard *card); 567int b1pciv4_detect(avmcard *card);
568int t1pci_detect(avmcard *card); 568int t1pci_detect(avmcard *card);
569void b1dma_reset(avmcard *card); 569void b1dma_reset(avmcard *card);
570irqreturn_t b1dma_interrupt(int interrupt, void *devptr, struct pt_regs *regs); 570irqreturn_t b1dma_interrupt(int interrupt, void *devptr);
571 571
572int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data); 572int b1dma_load_firmware(struct capi_ctr *ctrl, capiloaddata *data);
573void b1dma_reset_ctr(struct capi_ctr *ctrl); 573void b1dma_reset_ctr(struct capi_ctr *ctrl);
diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
index 0c7061d55027..da2729247713 100644
--- a/drivers/isdn/hardware/avm/b1.c
+++ b/drivers/isdn/hardware/avm/b1.c
@@ -485,7 +485,7 @@ void b1_parse_version(avmctrl_info *cinfo)
485 485
486/* ------------------------------------------------------------- */ 486/* ------------------------------------------------------------- */
487 487
488irqreturn_t b1_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 488irqreturn_t b1_interrupt(int interrupt, void *devptr)
489{ 489{
490 avmcard *card = devptr; 490 avmcard *card = devptr;
491 avmctrl_info *cinfo = &card->ctrlinfo[0]; 491 avmctrl_info *cinfo = &card->ctrlinfo[0];
diff --git a/drivers/isdn/hardware/avm/b1dma.c b/drivers/isdn/hardware/avm/b1dma.c
index a4beeb46c859..ddd47cdfdb1f 100644
--- a/drivers/isdn/hardware/avm/b1dma.c
+++ b/drivers/isdn/hardware/avm/b1dma.c
@@ -628,7 +628,7 @@ static void b1dma_handle_interrupt(avmcard *card)
628 spin_unlock(&card->lock); 628 spin_unlock(&card->lock);
629} 629}
630 630
631irqreturn_t b1dma_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 631irqreturn_t b1dma_interrupt(int interrupt, void *devptr)
632{ 632{
633 avmcard *card = devptr; 633 avmcard *card = devptr;
634 634
diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
index 6c3d5f5f1f4b..2a3eb38f0ebb 100644
--- a/drivers/isdn/hardware/avm/c4.c
+++ b/drivers/isdn/hardware/avm/c4.c
@@ -713,7 +713,7 @@ static irqreturn_t c4_handle_interrupt(avmcard *card)
713 return IRQ_HANDLED; 713 return IRQ_HANDLED;
714} 714}
715 715
716static irqreturn_t c4_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 716static irqreturn_t c4_interrupt(int interrupt, void *devptr)
717{ 717{
718 avmcard *card = devptr; 718 avmcard *card = devptr;
719 719
diff --git a/drivers/isdn/hardware/avm/t1isa.c b/drivers/isdn/hardware/avm/t1isa.c
index 5a2f854d55b5..e47c60b0a8ec 100644
--- a/drivers/isdn/hardware/avm/t1isa.c
+++ b/drivers/isdn/hardware/avm/t1isa.c
@@ -131,7 +131,7 @@ static int t1_detectandinit(unsigned int base, unsigned irq, int cardnr)
131 return 0; 131 return 0;
132} 132}
133 133
134static irqreturn_t t1isa_interrupt(int interrupt, void *devptr, struct pt_regs *regs) 134static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
135{ 135{
136 avmcard *card = devptr; 136 avmcard *card = devptr;
137 avmctrl_info *cinfo = &card->ctrlinfo[0]; 137 avmctrl_info *cinfo = &card->ctrlinfo[0];
diff --git a/drivers/isdn/hardware/eicon/diva.c b/drivers/isdn/hardware/eicon/diva.c
index 8ab8027f33c0..ffa2afa77c2f 100644
--- a/drivers/isdn/hardware/eicon/diva.c
+++ b/drivers/isdn/hardware/eicon/diva.c
@@ -71,8 +71,6 @@ DivaIdiReqFunc(29)
71DivaIdiReqFunc(30) 71DivaIdiReqFunc(30)
72DivaIdiReqFunc(31) 72DivaIdiReqFunc(31)
73 73
74struct pt_regs;
75
76/* 74/*
77** LOCALS 75** LOCALS
78*/ 76*/
@@ -515,7 +513,7 @@ diva_xdi_read(void *adapter, void *os_handle, void __user *dst,
515} 513}
516 514
517 515
518irqreturn_t diva_os_irq_wrapper(int irq, void *context, struct pt_regs *regs) 516irqreturn_t diva_os_irq_wrapper(int irq, void *context)
519{ 517{
520 diva_os_xdi_adapter_t *a = (diva_os_xdi_adapter_t *) context; 518 diva_os_xdi_adapter_t *a = (diva_os_xdi_adapter_t *) context;
521 diva_xdi_clear_interrupts_proc_t clear_int_proc; 519 diva_xdi_clear_interrupts_proc_t clear_int_proc;
diff --git a/drivers/isdn/hardware/eicon/divasmain.c b/drivers/isdn/hardware/eicon/divasmain.c
index b7dadba13e82..dae2e83dd5e8 100644
--- a/drivers/isdn/hardware/eicon/divasmain.c
+++ b/drivers/isdn/hardware/eicon/divasmain.c
@@ -58,8 +58,7 @@ static char *DRIVERLNAME = "divas";
58static char *DEVNAME = "Divas"; 58static char *DEVNAME = "Divas";
59char *DRIVERRELEASE_DIVAS = "2.0"; 59char *DRIVERRELEASE_DIVAS = "2.0";
60 60
61extern irqreturn_t diva_os_irq_wrapper(int irq, void *context, 61extern irqreturn_t diva_os_irq_wrapper(int irq, void *context);
62 struct pt_regs *regs);
63extern int create_divas_proc(void); 62extern int create_divas_proc(void);
64extern void remove_divas_proc(void); 63extern void remove_divas_proc(void);
65extern void diva_get_vserial_number(PISDN_ADAPTER IoAdapter, char *buf); 64extern void diva_get_vserial_number(PISDN_ADAPTER IoAdapter, char *buf);
diff --git a/drivers/isdn/hisax/amd7930_fn.c b/drivers/isdn/hisax/amd7930_fn.c
index 8ae08c41c853..bec59010bc66 100644
--- a/drivers/isdn/hisax/amd7930_fn.c
+++ b/drivers/isdn/hisax/amd7930_fn.c
@@ -733,7 +733,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
733 wByteAMD(cs, 0x21, 0x82); 733 wByteAMD(cs, 0x21, 0x82);
734 wByteAMD(cs, 0x21, 0x02); 734 wByteAMD(cs, 0x21, 0x02);
735 spin_unlock_irqrestore(&cs->lock, flags); 735 spin_unlock_irqrestore(&cs->lock, flags);
736 cs->irq_func(cs->irq, cs, NULL); 736 cs->irq_func(cs->irq, cs);
737 737
738 if (cs->debug & L1_DEB_ISAC) 738 if (cs->debug & L1_DEB_ISAC)
739 debugl1(cs, "Amd7930: dbusy_timer_handler: Transmitter reset"); 739 debugl1(cs, "Amd7930: dbusy_timer_handler: Transmitter reset");
diff --git a/drivers/isdn/hisax/asuscom.c b/drivers/isdn/hisax/asuscom.c
index 93ff941c48f1..61e69e9c4aa9 100644
--- a/drivers/isdn/hisax/asuscom.c
+++ b/drivers/isdn/hisax/asuscom.c
@@ -156,7 +156,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
156#include "hscx_irq.c" 156#include "hscx_irq.c"
157 157
158static irqreturn_t 158static irqreturn_t
159asuscom_interrupt(int intno, void *dev_id, struct pt_regs *regs) 159asuscom_interrupt(int intno, void *dev_id)
160{ 160{
161 struct IsdnCardState *cs = dev_id; 161 struct IsdnCardState *cs = dev_id;
162 u_char val; 162 u_char val;
@@ -194,7 +194,7 @@ asuscom_interrupt(int intno, void *dev_id, struct pt_regs *regs)
194} 194}
195 195
196static irqreturn_t 196static irqreturn_t
197asuscom_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 197asuscom_interrupt_ipac(int intno, void *dev_id)
198{ 198{
199 struct IsdnCardState *cs = dev_id; 199 struct IsdnCardState *cs = dev_id;
200 u_char ista, val, icnt = 5; 200 u_char ista, val, icnt = 5;
diff --git a/drivers/isdn/hisax/avm_a1.c b/drivers/isdn/hisax/avm_a1.c
index 729e906bdc61..d9028e9b9b8f 100644
--- a/drivers/isdn/hisax/avm_a1.c
+++ b/drivers/isdn/hisax/avm_a1.c
@@ -101,7 +101,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
101#include "hscx_irq.c" 101#include "hscx_irq.c"
102 102
103static irqreturn_t 103static irqreturn_t
104avm_a1_interrupt(int intno, void *dev_id, struct pt_regs *regs) 104avm_a1_interrupt(int intno, void *dev_id)
105{ 105{
106 struct IsdnCardState *cs = dev_id; 106 struct IsdnCardState *cs = dev_id;
107 u_char val, sval; 107 u_char val, sval;
diff --git a/drivers/isdn/hisax/avm_a1p.c b/drivers/isdn/hisax/avm_a1p.c
index 574e252dfa43..c87fa3f9b298 100644
--- a/drivers/isdn/hisax/avm_a1p.c
+++ b/drivers/isdn/hisax/avm_a1p.c
@@ -140,7 +140,7 @@ WriteHSCXfifo(struct IsdnCardState *cs, int hscx, u_char * data, int size)
140#include "hscx_irq.c" 140#include "hscx_irq.c"
141 141
142static irqreturn_t 142static irqreturn_t
143avm_a1p_interrupt(int intno, void *dev_id, struct pt_regs *regs) 143avm_a1p_interrupt(int intno, void *dev_id)
144{ 144{
145 struct IsdnCardState *cs = dev_id; 145 struct IsdnCardState *cs = dev_id;
146 u_char val, sval; 146 u_char val, sval;
diff --git a/drivers/isdn/hisax/avm_pci.c b/drivers/isdn/hisax/avm_pci.c
index 369afd3a3a4b..b04a178e5021 100644
--- a/drivers/isdn/hisax/avm_pci.c
+++ b/drivers/isdn/hisax/avm_pci.c
@@ -651,7 +651,7 @@ inithdlc(struct IsdnCardState *cs)
651} 651}
652 652
653static irqreturn_t 653static irqreturn_t
654avm_pcipnp_interrupt(int intno, void *dev_id, struct pt_regs *regs) 654avm_pcipnp_interrupt(int intno, void *dev_id)
655{ 655{
656 struct IsdnCardState *cs = dev_id; 656 struct IsdnCardState *cs = dev_id;
657 u_long flags; 657 u_long flags;
diff --git a/drivers/isdn/hisax/bkm_a4t.c b/drivers/isdn/hisax/bkm_a4t.c
index 87a630128a6c..871310d56a6e 100644
--- a/drivers/isdn/hisax/bkm_a4t.c
+++ b/drivers/isdn/hisax/bkm_a4t.c
@@ -125,7 +125,7 @@ WriteJADE(struct IsdnCardState *cs, int jade, u_char offset, u_char value)
125#include "jade_irq.c" 125#include "jade_irq.c"
126 126
127static irqreturn_t 127static irqreturn_t
128bkm_interrupt(int intno, void *dev_id, struct pt_regs *regs) 128bkm_interrupt(int intno, void *dev_id)
129{ 129{
130 struct IsdnCardState *cs = dev_id; 130 struct IsdnCardState *cs = dev_id;
131 u_char val = 0; 131 u_char val = 0;
diff --git a/drivers/isdn/hisax/bkm_a8.c b/drivers/isdn/hisax/bkm_a8.c
index dae090a9a489..340310645346 100644
--- a/drivers/isdn/hisax/bkm_a8.c
+++ b/drivers/isdn/hisax/bkm_a8.c
@@ -140,7 +140,7 @@ set_ipac_active(struct IsdnCardState *cs, u_int active)
140#include "hscx_irq.c" 140#include "hscx_irq.c"
141 141
142static irqreturn_t 142static irqreturn_t
143bkm_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 143bkm_interrupt_ipac(int intno, void *dev_id)
144{ 144{
145 struct IsdnCardState *cs = dev_id; 145 struct IsdnCardState *cs = dev_id;
146 u_char ista, val, icnt = 5; 146 u_char ista, val, icnt = 5;
diff --git a/drivers/isdn/hisax/diva.c b/drivers/isdn/hisax/diva.c
index e294fa3918f3..7e95f04f13da 100644
--- a/drivers/isdn/hisax/diva.c
+++ b/drivers/isdn/hisax/diva.c
@@ -289,7 +289,7 @@ MemWriteHSCX_IPACX(struct IsdnCardState *cs, int hscx, u_char offset, u_char val
289#include "hscx_irq.c" 289#include "hscx_irq.c"
290 290
291static irqreturn_t 291static irqreturn_t
292diva_interrupt(int intno, void *dev_id, struct pt_regs *regs) 292diva_interrupt(int intno, void *dev_id)
293{ 293{
294 struct IsdnCardState *cs = dev_id; 294 struct IsdnCardState *cs = dev_id;
295 u_char val, sval; 295 u_char val, sval;
@@ -319,7 +319,7 @@ diva_interrupt(int intno, void *dev_id, struct pt_regs *regs)
319} 319}
320 320
321static irqreturn_t 321static irqreturn_t
322diva_irq_ipac_isa(int intno, void *dev_id, struct pt_regs *regs) 322diva_irq_ipac_isa(int intno, void *dev_id)
323{ 323{
324 struct IsdnCardState *cs = dev_id; 324 struct IsdnCardState *cs = dev_id;
325 u_char ista,val; 325 u_char ista,val;
@@ -630,7 +630,7 @@ Memhscx_int_main(struct IsdnCardState *cs, u_char val)
630} 630}
631 631
632static irqreturn_t 632static irqreturn_t
633diva_irq_ipac_pci(int intno, void *dev_id, struct pt_regs *regs) 633diva_irq_ipac_pci(int intno, void *dev_id)
634{ 634{
635 struct IsdnCardState *cs = dev_id; 635 struct IsdnCardState *cs = dev_id;
636 u_char ista,val; 636 u_char ista,val;
@@ -685,7 +685,7 @@ Start_IPACPCI:
685} 685}
686 686
687static irqreturn_t 687static irqreturn_t
688diva_irq_ipacx_pci(int intno, void *dev_id, struct pt_regs *regs) 688diva_irq_ipacx_pci(int intno, void *dev_id)
689{ 689{
690 struct IsdnCardState *cs = dev_id; 690 struct IsdnCardState *cs = dev_id;
691 u_char val; 691 u_char val;
diff --git a/drivers/isdn/hisax/elsa.c b/drivers/isdn/hisax/elsa.c
index 3b3e318f6076..fab3e4ea0595 100644
--- a/drivers/isdn/hisax/elsa.c
+++ b/drivers/isdn/hisax/elsa.c
@@ -282,7 +282,7 @@ TimerRun(struct IsdnCardState *cs)
282#include "hscx_irq.c" 282#include "hscx_irq.c"
283 283
284static irqreturn_t 284static irqreturn_t
285elsa_interrupt(int intno, void *dev_id, struct pt_regs *regs) 285elsa_interrupt(int intno, void *dev_id)
286{ 286{
287 struct IsdnCardState *cs = dev_id; 287 struct IsdnCardState *cs = dev_id;
288 u_long flags; 288 u_long flags;
@@ -361,7 +361,7 @@ elsa_interrupt(int intno, void *dev_id, struct pt_regs *regs)
361} 361}
362 362
363static irqreturn_t 363static irqreturn_t
364elsa_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 364elsa_interrupt_ipac(int intno, void *dev_id)
365{ 365{
366 struct IsdnCardState *cs = dev_id; 366 struct IsdnCardState *cs = dev_id;
367 u_long flags; 367 u_long flags;
diff --git a/drivers/isdn/hisax/enternow_pci.c b/drivers/isdn/hisax/enternow_pci.c
index 76c7d29d1b2f..b45de9d408d1 100644
--- a/drivers/isdn/hisax/enternow_pci.c
+++ b/drivers/isdn/hisax/enternow_pci.c
@@ -240,7 +240,7 @@ enpci_card_msg(struct IsdnCardState *cs, int mt, void *arg)
240} 240}
241 241
242static irqreturn_t 242static irqreturn_t
243enpci_interrupt(int intno, void *dev_id, struct pt_regs *regs) 243enpci_interrupt(int intno, void *dev_id)
244{ 244{
245 struct IsdnCardState *cs = dev_id; 245 struct IsdnCardState *cs = dev_id;
246 unsigned char s0val, s1val, ir; 246 unsigned char s0val, s1val, ir;
diff --git a/drivers/isdn/hisax/gazel.c b/drivers/isdn/hisax/gazel.c
index fe2937267777..3efa719b6d29 100644
--- a/drivers/isdn/hisax/gazel.c
+++ b/drivers/isdn/hisax/gazel.c
@@ -243,7 +243,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
243#include "hscx_irq.c" 243#include "hscx_irq.c"
244 244
245static irqreturn_t 245static irqreturn_t
246gazel_interrupt(int intno, void *dev_id, struct pt_regs *regs) 246gazel_interrupt(int intno, void *dev_id)
247{ 247{
248#define MAXCOUNT 5 248#define MAXCOUNT 5
249 struct IsdnCardState *cs = dev_id; 249 struct IsdnCardState *cs = dev_id;
@@ -274,7 +274,7 @@ gazel_interrupt(int intno, void *dev_id, struct pt_regs *regs)
274 274
275 275
276static irqreturn_t 276static irqreturn_t
277gazel_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 277gazel_interrupt_ipac(int intno, void *dev_id)
278{ 278{
279 struct IsdnCardState *cs = dev_id; 279 struct IsdnCardState *cs = dev_id;
280 u_char ista, val; 280 u_char ista, val;
diff --git a/drivers/isdn/hisax/hfc4s8s_l1.c b/drivers/isdn/hisax/hfc4s8s_l1.c
index 0ca5e66d2f5a..d852c9d998b2 100644
--- a/drivers/isdn/hisax/hfc4s8s_l1.c
+++ b/drivers/isdn/hisax/hfc4s8s_l1.c
@@ -1268,7 +1268,7 @@ hfc4s8s_bh(hfc4s8s_hw * hw)
1268/* interrupt handler */ 1268/* interrupt handler */
1269/*********************/ 1269/*********************/
1270static irqreturn_t 1270static irqreturn_t
1271hfc4s8s_interrupt(int intno, void *dev_id, struct pt_regs *regs) 1271hfc4s8s_interrupt(int intno, void *dev_id)
1272{ 1272{
1273 hfc4s8s_hw *hw = dev_id; 1273 hfc4s8s_hw *hw = dev_id;
1274 u_char b, ovr; 1274 u_char b, ovr;
diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
index 1df60ca9481f..93f60b563515 100644
--- a/drivers/isdn/hisax/hfc_pci.c
+++ b/drivers/isdn/hisax/hfc_pci.c
@@ -931,7 +931,7 @@ receive_emsg(struct IsdnCardState *cs)
931/* Interrupt handler */ 931/* Interrupt handler */
932/*********************/ 932/*********************/
933static irqreturn_t 933static irqreturn_t
934hfcpci_interrupt(int intno, void *dev_id, struct pt_regs *regs) 934hfcpci_interrupt(int intno, void *dev_id)
935{ 935{
936 u_long flags; 936 u_long flags;
937 struct IsdnCardState *cs = dev_id; 937 struct IsdnCardState *cs = dev_id;
diff --git a/drivers/isdn/hisax/hfc_sx.c b/drivers/isdn/hisax/hfc_sx.c
index b7e8e23be337..954d1536db1f 100644
--- a/drivers/isdn/hisax/hfc_sx.c
+++ b/drivers/isdn/hisax/hfc_sx.c
@@ -691,7 +691,7 @@ receive_emsg(struct IsdnCardState *cs)
691/* Interrupt handler */ 691/* Interrupt handler */
692/*********************/ 692/*********************/
693static irqreturn_t 693static irqreturn_t
694hfcsx_interrupt(int intno, void *dev_id, struct pt_regs *regs) 694hfcsx_interrupt(int intno, void *dev_id)
695{ 695{
696 struct IsdnCardState *cs = dev_id; 696 struct IsdnCardState *cs = dev_id;
697 u_char exval; 697 u_char exval;
diff --git a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
index 6b88ecb5047d..7105b043add8 100644
--- a/drivers/isdn/hisax/hfc_usb.c
+++ b/drivers/isdn/hisax/hfc_usb.c
@@ -276,7 +276,7 @@ control_action_handler(hfcusb_data * hfc, int reg, int val, int action)
276/* control completion routine handling background control cmds */ 276/* control completion routine handling background control cmds */
277/***************************************************************/ 277/***************************************************************/
278static void 278static void
279ctrl_complete(struct urb *urb, struct pt_regs *regs) 279ctrl_complete(struct urb *urb)
280{ 280{
281 hfcusb_data *hfc = (hfcusb_data *) urb->context; 281 hfcusb_data *hfc = (hfcusb_data *) urb->context;
282 ctrl_buft *buf; 282 ctrl_buft *buf;
@@ -603,7 +603,7 @@ static int iso_packets[8] =
603/* transmit completion routine for all ISO tx fifos */ 603/* transmit completion routine for all ISO tx fifos */
604/*****************************************************/ 604/*****************************************************/
605static void 605static void
606tx_iso_complete(struct urb *urb, struct pt_regs *regs) 606tx_iso_complete(struct urb *urb)
607{ 607{
608 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context; 608 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context;
609 usb_fifo *fifo = context_iso_urb->owner_fifo; 609 usb_fifo *fifo = context_iso_urb->owner_fifo;
@@ -726,7 +726,7 @@ tx_iso_complete(struct urb *urb, struct pt_regs *regs)
726/* receive completion routine for all ISO tx fifos */ 726/* receive completion routine for all ISO tx fifos */
727/*****************************************************/ 727/*****************************************************/
728static void 728static void
729rx_iso_complete(struct urb *urb, struct pt_regs *regs) 729rx_iso_complete(struct urb *urb)
730{ 730{
731 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context; 731 iso_urb_struct *context_iso_urb = (iso_urb_struct *) urb->context;
732 usb_fifo *fifo = context_iso_urb->owner_fifo; 732 usb_fifo *fifo = context_iso_urb->owner_fifo;
@@ -919,7 +919,7 @@ collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish)
919/* receive completion routine for all rx fifos */ 919/* receive completion routine for all rx fifos */
920/***********************************************/ 920/***********************************************/
921static void 921static void
922rx_complete(struct urb *urb, struct pt_regs *regs) 922rx_complete(struct urb *urb)
923{ 923{
924 int len; 924 int len;
925 int status; 925 int status;
diff --git a/drivers/isdn/hisax/hfcscard.c b/drivers/isdn/hisax/hfcscard.c
index 4e7f472877e9..57670dc5034d 100644
--- a/drivers/isdn/hisax/hfcscard.c
+++ b/drivers/isdn/hisax/hfcscard.c
@@ -21,7 +21,7 @@ extern const char *CardType[];
21static const char *hfcs_revision = "$Revision: 1.10.2.4 $"; 21static const char *hfcs_revision = "$Revision: 1.10.2.4 $";
22 22
23static irqreturn_t 23static irqreturn_t
24hfcs_interrupt(int intno, void *dev_id, struct pt_regs *regs) 24hfcs_interrupt(int intno, void *dev_id)
25{ 25{
26 struct IsdnCardState *cs = dev_id; 26 struct IsdnCardState *cs = dev_id;
27 u_char val, stat; 27 u_char val, stat;
diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
index 2f9d5118ceaf..159c5896061e 100644
--- a/drivers/isdn/hisax/hisax.h
+++ b/drivers/isdn/hisax/hisax.h
@@ -941,7 +941,7 @@ struct IsdnCardState {
941 int (*cardmsg) (struct IsdnCardState *, int, void *); 941 int (*cardmsg) (struct IsdnCardState *, int, void *);
942 void (*setstack_d) (struct PStack *, struct IsdnCardState *); 942 void (*setstack_d) (struct PStack *, struct IsdnCardState *);
943 void (*DC_Close) (struct IsdnCardState *); 943 void (*DC_Close) (struct IsdnCardState *);
944 int (*irq_func) (int, void *, struct pt_regs *); 944 int (*irq_func) (int, void *);
945 int (*auxcmd) (struct IsdnCardState *, isdn_ctrl *); 945 int (*auxcmd) (struct IsdnCardState *, isdn_ctrl *);
946 struct Channel channel[2+MAX_WAITING_CALLS]; 946 struct Channel channel[2+MAX_WAITING_CALLS];
947 struct BCState bcs[2+MAX_WAITING_CALLS]; 947 struct BCState bcs[2+MAX_WAITING_CALLS];
diff --git a/drivers/isdn/hisax/hisax_fcpcipnp.c b/drivers/isdn/hisax/hisax_fcpcipnp.c
index 881a4165cfb4..f6db55a752c4 100644
--- a/drivers/isdn/hisax/hisax_fcpcipnp.c
+++ b/drivers/isdn/hisax/hisax_fcpcipnp.c
@@ -651,7 +651,7 @@ static void fritz_b_l2l1(struct hisax_if *ifc, int pr, void *arg)
651// ---------------------------------------------------------------------- 651// ----------------------------------------------------------------------
652 652
653static irqreturn_t 653static irqreturn_t
654fcpci2_irq(int intno, void *dev, struct pt_regs *regs) 654fcpci2_irq(int intno, void *dev)
655{ 655{
656 struct fritz_adapter *adapter = dev; 656 struct fritz_adapter *adapter = dev;
657 unsigned char val; 657 unsigned char val;
@@ -671,7 +671,7 @@ fcpci2_irq(int intno, void *dev, struct pt_regs *regs)
671} 671}
672 672
673static irqreturn_t 673static irqreturn_t
674fcpci_irq(int intno, void *dev, struct pt_regs *regs) 674fcpci_irq(int intno, void *dev)
675{ 675{
676 struct fritz_adapter *adapter = dev; 676 struct fritz_adapter *adapter = dev;
677 unsigned char sval; 677 unsigned char sval;
diff --git a/drivers/isdn/hisax/icc.c b/drivers/isdn/hisax/icc.c
index 2cf7b665609e..da706925d54d 100644
--- a/drivers/isdn/hisax/icc.c
+++ b/drivers/isdn/hisax/icc.c
@@ -608,7 +608,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
608 debugl1(cs, "D-Channel Busy no skb"); 608 debugl1(cs, "D-Channel Busy no skb");
609 } 609 }
610 cs->writeisac(cs, ICC_CMDR, 0x01); /* Transmitter reset */ 610 cs->writeisac(cs, ICC_CMDR, 0x01); /* Transmitter reset */
611 cs->irq_func(cs->irq, cs, NULL); 611 cs->irq_func(cs->irq, cs);
612 } 612 }
613 } 613 }
614} 614}
diff --git a/drivers/isdn/hisax/isac.c b/drivers/isdn/hisax/isac.c
index 565b7892c267..282f349408bc 100644
--- a/drivers/isdn/hisax/isac.c
+++ b/drivers/isdn/hisax/isac.c
@@ -609,7 +609,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
609 debugl1(cs, "D-Channel Busy no skb"); 609 debugl1(cs, "D-Channel Busy no skb");
610 } 610 }
611 cs->writeisac(cs, ISAC_CMDR, 0x01); /* Transmitter reset */ 611 cs->writeisac(cs, ISAC_CMDR, 0x01); /* Transmitter reset */
612 cs->irq_func(cs->irq, cs, NULL); 612 cs->irq_func(cs->irq, cs);
613 } 613 }
614 } 614 }
615} 615}
diff --git a/drivers/isdn/hisax/isurf.c b/drivers/isdn/hisax/isurf.c
index 715a1a8cd694..55de06953540 100644
--- a/drivers/isdn/hisax/isurf.c
+++ b/drivers/isdn/hisax/isurf.c
@@ -83,7 +83,7 @@ WriteISAR(struct IsdnCardState *cs, int mode, u_char offset, u_char value)
83} 83}
84 84
85static irqreturn_t 85static irqreturn_t
86isurf_interrupt(int intno, void *dev_id, struct pt_regs *regs) 86isurf_interrupt(int intno, void *dev_id)
87{ 87{
88 struct IsdnCardState *cs = dev_id; 88 struct IsdnCardState *cs = dev_id;
89 u_char val; 89 u_char val;
diff --git a/drivers/isdn/hisax/ix1_micro.c b/drivers/isdn/hisax/ix1_micro.c
index 39717506c678..252d79de5e5e 100644
--- a/drivers/isdn/hisax/ix1_micro.c
+++ b/drivers/isdn/hisax/ix1_micro.c
@@ -125,7 +125,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
125#include "hscx_irq.c" 125#include "hscx_irq.c"
126 126
127static irqreturn_t 127static irqreturn_t
128ix1micro_interrupt(int intno, void *dev_id, struct pt_regs *regs) 128ix1micro_interrupt(int intno, void *dev_id)
129{ 129{
130 struct IsdnCardState *cs = dev_id; 130 struct IsdnCardState *cs = dev_id;
131 u_char val; 131 u_char val;
diff --git a/drivers/isdn/hisax/mic.c b/drivers/isdn/hisax/mic.c
index 8c82519593a8..a81d175d9f64 100644
--- a/drivers/isdn/hisax/mic.c
+++ b/drivers/isdn/hisax/mic.c
@@ -120,7 +120,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
120#include "hscx_irq.c" 120#include "hscx_irq.c"
121 121
122static irqreturn_t 122static irqreturn_t
123mic_interrupt(int intno, void *dev_id, struct pt_regs *regs) 123mic_interrupt(int intno, void *dev_id)
124{ 124{
125 struct IsdnCardState *cs = dev_id; 125 struct IsdnCardState *cs = dev_id;
126 u_char val; 126 u_char val;
diff --git a/drivers/isdn/hisax/netjet.h b/drivers/isdn/hisax/netjet.h
index 1080508f3c6a..4d89d3ea4173 100644
--- a/drivers/isdn/hisax/netjet.h
+++ b/drivers/isdn/hisax/netjet.h
@@ -66,7 +66,7 @@ void read_tiger(struct IsdnCardState *cs);
66void write_tiger(struct IsdnCardState *cs); 66void write_tiger(struct IsdnCardState *cs);
67 67
68void netjet_fill_dma(struct BCState *bcs); 68void netjet_fill_dma(struct BCState *bcs);
69void netjet_interrupt(int intno, void *dev_id, struct pt_regs *regs); 69void netjet_interrupt(int intno, void *dev_id);
70void inittiger(struct IsdnCardState *cs); 70void inittiger(struct IsdnCardState *cs);
71void release_io_netjet(struct IsdnCardState *cs); 71void release_io_netjet(struct IsdnCardState *cs);
72 72
diff --git a/drivers/isdn/hisax/niccy.c b/drivers/isdn/hisax/niccy.c
index 0945336c28da..e5918c6fe73d 100644
--- a/drivers/isdn/hisax/niccy.c
+++ b/drivers/isdn/hisax/niccy.c
@@ -122,8 +122,7 @@ static void WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset,
122 122
123#include "hscx_irq.c" 123#include "hscx_irq.c"
124 124
125static irqreturn_t niccy_interrupt(int intno, void *dev_id, 125static irqreturn_t niccy_interrupt(int intno, void *dev_id)
126 struct pt_regs *regs)
127{ 126{
128 struct IsdnCardState *cs = dev_id; 127 struct IsdnCardState *cs = dev_id;
129 u_char val; 128 u_char val;
diff --git a/drivers/isdn/hisax/nj_s.c b/drivers/isdn/hisax/nj_s.c
index 80025fd890f4..c09ffb135330 100644
--- a/drivers/isdn/hisax/nj_s.c
+++ b/drivers/isdn/hisax/nj_s.c
@@ -26,7 +26,7 @@ static void dummywr(struct IsdnCardState *cs, int chan, u_char off, u_char value
26} 26}
27 27
28static irqreturn_t 28static irqreturn_t
29netjet_s_interrupt(int intno, void *dev_id, struct pt_regs *regs) 29netjet_s_interrupt(int intno, void *dev_id)
30{ 30{
31 struct IsdnCardState *cs = dev_id; 31 struct IsdnCardState *cs = dev_id;
32 u_char val, s1val, s0val; 32 u_char val, s1val, s0val;
diff --git a/drivers/isdn/hisax/nj_u.c b/drivers/isdn/hisax/nj_u.c
index 37497162d539..8202cf34ecae 100644
--- a/drivers/isdn/hisax/nj_u.c
+++ b/drivers/isdn/hisax/nj_u.c
@@ -26,7 +26,7 @@ static void dummywr(struct IsdnCardState *cs, int chan, u_char off, u_char value
26} 26}
27 27
28static irqreturn_t 28static irqreturn_t
29netjet_u_interrupt(int intno, void *dev_id, struct pt_regs *regs) 29netjet_u_interrupt(int intno, void *dev_id)
30{ 30{
31 struct IsdnCardState *cs = dev_id; 31 struct IsdnCardState *cs = dev_id;
32 u_char val, sval; 32 u_char val, sval;
diff --git a/drivers/isdn/hisax/s0box.c b/drivers/isdn/hisax/s0box.c
index e76042d323ea..150ef68b4ae2 100644
--- a/drivers/isdn/hisax/s0box.c
+++ b/drivers/isdn/hisax/s0box.c
@@ -141,7 +141,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
141#include "hscx_irq.c" 141#include "hscx_irq.c"
142 142
143static irqreturn_t 143static irqreturn_t
144s0box_interrupt(int intno, void *dev_id, struct pt_regs *regs) 144s0box_interrupt(int intno, void *dev_id)
145{ 145{
146#define MAXCOUNT 5 146#define MAXCOUNT 5
147 struct IsdnCardState *cs = dev_id; 147 struct IsdnCardState *cs = dev_id;
diff --git a/drivers/isdn/hisax/saphir.c b/drivers/isdn/hisax/saphir.c
index d943d365890b..c99b16690fb3 100644
--- a/drivers/isdn/hisax/saphir.c
+++ b/drivers/isdn/hisax/saphir.c
@@ -117,7 +117,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
117#include "hscx_irq.c" 117#include "hscx_irq.c"
118 118
119static irqreturn_t 119static irqreturn_t
120saphir_interrupt(int intno, void *dev_id, struct pt_regs *regs) 120saphir_interrupt(int intno, void *dev_id)
121{ 121{
122 struct IsdnCardState *cs = dev_id; 122 struct IsdnCardState *cs = dev_id;
123 u_char val; 123 u_char val;
diff --git a/drivers/isdn/hisax/sedlbauer.c b/drivers/isdn/hisax/sedlbauer.c
index 8d8e8a299892..9522141f4351 100644
--- a/drivers/isdn/hisax/sedlbauer.c
+++ b/drivers/isdn/hisax/sedlbauer.c
@@ -260,7 +260,7 @@ WriteISAR(struct IsdnCardState *cs, int mode, u_char offset, u_char value)
260#include "hscx_irq.c" 260#include "hscx_irq.c"
261 261
262static irqreturn_t 262static irqreturn_t
263sedlbauer_interrupt(int intno, void *dev_id, struct pt_regs *regs) 263sedlbauer_interrupt(int intno, void *dev_id)
264{ 264{
265 struct IsdnCardState *cs = dev_id; 265 struct IsdnCardState *cs = dev_id;
266 u_char val; 266 u_char val;
@@ -306,7 +306,7 @@ sedlbauer_interrupt(int intno, void *dev_id, struct pt_regs *regs)
306} 306}
307 307
308static irqreturn_t 308static irqreturn_t
309sedlbauer_interrupt_ipac(int intno, void *dev_id, struct pt_regs *regs) 309sedlbauer_interrupt_ipac(int intno, void *dev_id)
310{ 310{
311 struct IsdnCardState *cs = dev_id; 311 struct IsdnCardState *cs = dev_id;
312 u_char ista, val, icnt = 5; 312 u_char ista, val, icnt = 5;
@@ -353,7 +353,7 @@ Start_IPAC:
353} 353}
354 354
355static irqreturn_t 355static irqreturn_t
356sedlbauer_interrupt_isar(int intno, void *dev_id, struct pt_regs *regs) 356sedlbauer_interrupt_isar(int intno, void *dev_id)
357{ 357{
358 struct IsdnCardState *cs = dev_id; 358 struct IsdnCardState *cs = dev_id;
359 u_char val; 359 u_char val;
diff --git a/drivers/isdn/hisax/sportster.c b/drivers/isdn/hisax/sportster.c
index a49b694eb730..02209500b3b7 100644
--- a/drivers/isdn/hisax/sportster.c
+++ b/drivers/isdn/hisax/sportster.c
@@ -99,7 +99,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
99#include "hscx_irq.c" 99#include "hscx_irq.c"
100 100
101static irqreturn_t 101static irqreturn_t
102sportster_interrupt(int intno, void *dev_id, struct pt_regs *regs) 102sportster_interrupt(int intno, void *dev_id)
103{ 103{
104 struct IsdnCardState *cs = dev_id; 104 struct IsdnCardState *cs = dev_id;
105 u_char val; 105 u_char val;
diff --git a/drivers/isdn/hisax/st5481_b.c b/drivers/isdn/hisax/st5481_b.c
index aca2a3954b14..75d0f248e4ee 100644
--- a/drivers/isdn/hisax/st5481_b.c
+++ b/drivers/isdn/hisax/st5481_b.c
@@ -161,7 +161,7 @@ static void led_blink(struct st5481_adapter *adapter)
161 st5481_usb_device_ctrl_msg(adapter, GPIO_OUT, leds, NULL, NULL); 161 st5481_usb_device_ctrl_msg(adapter, GPIO_OUT, leds, NULL, NULL);
162} 162}
163 163
164static void usb_b_out_complete(struct urb *urb, struct pt_regs *regs) 164static void usb_b_out_complete(struct urb *urb)
165{ 165{
166 struct st5481_bcs *bcs = urb->context; 166 struct st5481_bcs *bcs = urb->context;
167 struct st5481_b_out *b_out = &bcs->b_out; 167 struct st5481_b_out *b_out = &bcs->b_out;
diff --git a/drivers/isdn/hisax/st5481_d.c b/drivers/isdn/hisax/st5481_d.c
index 98adec440590..1d8c2618366c 100644
--- a/drivers/isdn/hisax/st5481_d.c
+++ b/drivers/isdn/hisax/st5481_d.c
@@ -370,7 +370,7 @@ static void fifo_reseted(void *context)
370 FsmEvent(&adapter->d_out.fsm, EV_DOUT_RESETED, NULL); 370 FsmEvent(&adapter->d_out.fsm, EV_DOUT_RESETED, NULL);
371} 371}
372 372
373static void usb_d_out_complete(struct urb *urb, struct pt_regs *regs) 373static void usb_d_out_complete(struct urb *urb)
374{ 374{
375 struct st5481_adapter *adapter = urb->context; 375 struct st5481_adapter *adapter = urb->context;
376 struct st5481_d_out *d_out = &adapter->d_out; 376 struct st5481_d_out *d_out = &adapter->d_out;
diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c
index b096b64b0253..ff1595122048 100644
--- a/drivers/isdn/hisax/st5481_usb.c
+++ b/drivers/isdn/hisax/st5481_usb.c
@@ -125,7 +125,7 @@ void st5481_ph_command(struct st5481_adapter *adapter, unsigned int command)
125 * Call the user provided completion routine and try 125 * Call the user provided completion routine and try
126 * to send the next request. 126 * to send the next request.
127 */ 127 */
128static void usb_ctrl_complete(struct urb *urb, struct pt_regs *regs) 128static void usb_ctrl_complete(struct urb *urb)
129{ 129{
130 struct st5481_adapter *adapter = urb->context; 130 struct st5481_adapter *adapter = urb->context;
131 struct st5481_ctrl *ctrl = &adapter->ctrl; 131 struct st5481_ctrl *ctrl = &adapter->ctrl;
@@ -179,7 +179,7 @@ static void usb_ctrl_complete(struct urb *urb, struct pt_regs *regs)
179 * Decode the register values and schedule a private event. 179 * Decode the register values and schedule a private event.
180 * Called at interrupt. 180 * Called at interrupt.
181 */ 181 */
182static void usb_int_complete(struct urb *urb, struct pt_regs *regs) 182static void usb_int_complete(struct urb *urb)
183{ 183{
184 u8 *data = urb->transfer_buffer; 184 u8 *data = urb->transfer_buffer;
185 u8 irqbyte; 185 u8 irqbyte;
@@ -483,7 +483,7 @@ void st5481_release_isocpipes(struct urb* urb[2])
483 * called 50 times per second with 20 ISOC descriptors. 483 * called 50 times per second with 20 ISOC descriptors.
484 * Called at interrupt. 484 * Called at interrupt.
485 */ 485 */
486static void usb_in_complete(struct urb *urb, struct pt_regs *regs) 486static void usb_in_complete(struct urb *urb)
487{ 487{
488 struct st5481_in *in = urb->context; 488 struct st5481_in *in = urb->context;
489 unsigned char *ptr; 489 unsigned char *ptr;
diff --git a/drivers/isdn/hisax/teleint.c b/drivers/isdn/hisax/teleint.c
index e94dc6f5bd62..0909662b7458 100644
--- a/drivers/isdn/hisax/teleint.c
+++ b/drivers/isdn/hisax/teleint.c
@@ -157,7 +157,7 @@ WriteHFC(struct IsdnCardState *cs, int data, u_char reg, u_char value)
157} 157}
158 158
159static irqreturn_t 159static irqreturn_t
160TeleInt_interrupt(int intno, void *dev_id, struct pt_regs *regs) 160TeleInt_interrupt(int intno, void *dev_id)
161{ 161{
162 struct IsdnCardState *cs = dev_id; 162 struct IsdnCardState *cs = dev_id;
163 u_char val; 163 u_char val;
diff --git a/drivers/isdn/hisax/teles0.c b/drivers/isdn/hisax/teles0.c
index f94af0930a17..48581335f43c 100644
--- a/drivers/isdn/hisax/teles0.c
+++ b/drivers/isdn/hisax/teles0.c
@@ -144,7 +144,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
144#include "hscx_irq.c" 144#include "hscx_irq.c"
145 145
146static irqreturn_t 146static irqreturn_t
147teles0_interrupt(int intno, void *dev_id, struct pt_regs *regs) 147teles0_interrupt(int intno, void *dev_id)
148{ 148{
149 struct IsdnCardState *cs = dev_id; 149 struct IsdnCardState *cs = dev_id;
150 u_char val; 150 u_char val;
diff --git a/drivers/isdn/hisax/teles3.c b/drivers/isdn/hisax/teles3.c
index 5cb712437da4..6a5e379e0774 100644
--- a/drivers/isdn/hisax/teles3.c
+++ b/drivers/isdn/hisax/teles3.c
@@ -101,7 +101,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
101#include "hscx_irq.c" 101#include "hscx_irq.c"
102 102
103static irqreturn_t 103static irqreturn_t
104teles3_interrupt(int intno, void *dev_id, struct pt_regs *regs) 104teles3_interrupt(int intno, void *dev_id)
105{ 105{
106#define MAXCOUNT 5 106#define MAXCOUNT 5
107 struct IsdnCardState *cs = dev_id; 107 struct IsdnCardState *cs = dev_id;
diff --git a/drivers/isdn/hisax/telespci.c b/drivers/isdn/hisax/telespci.c
index dca446865f24..d09f6d033f15 100644
--- a/drivers/isdn/hisax/telespci.c
+++ b/drivers/isdn/hisax/telespci.c
@@ -226,7 +226,7 @@ WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value)
226#include "hscx_irq.c" 226#include "hscx_irq.c"
227 227
228static irqreturn_t 228static irqreturn_t
229telespci_interrupt(int intno, void *dev_id, struct pt_regs *regs) 229telespci_interrupt(int intno, void *dev_id)
230{ 230{
231 struct IsdnCardState *cs = dev_id; 231 struct IsdnCardState *cs = dev_id;
232 u_char hval, ival; 232 u_char hval, ival;
diff --git a/drivers/isdn/hisax/w6692.c b/drivers/isdn/hisax/w6692.c
index 0595293b8659..1655341797a9 100644
--- a/drivers/isdn/hisax/w6692.c
+++ b/drivers/isdn/hisax/w6692.c
@@ -400,7 +400,7 @@ W6692B_interrupt(struct IsdnCardState *cs, u_char bchan)
400} 400}
401 401
402static irqreturn_t 402static irqreturn_t
403W6692_interrupt(int intno, void *dev_id, struct pt_regs *regs) 403W6692_interrupt(int intno, void *dev_id)
404{ 404{
405 struct IsdnCardState *cs = dev_id; 405 struct IsdnCardState *cs = dev_id;
406 u_char val, exval, v1; 406 u_char val, exval, v1;
@@ -715,7 +715,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
715 } 715 }
716 cs->writeW6692(cs, W_D_CMDR, W_D_CMDR_XRST); /* Transmitter reset */ 716 cs->writeW6692(cs, W_D_CMDR, W_D_CMDR_XRST); /* Transmitter reset */
717 spin_unlock_irqrestore(&cs->lock, flags); 717 spin_unlock_irqrestore(&cs->lock, flags);
718 cs->irq_func(cs->irq, cs, NULL); 718 cs->irq_func(cs->irq, cs);
719 return; 719 return;
720 } 720 }
721 } 721 }
diff --git a/drivers/isdn/hysdn/boardergo.c b/drivers/isdn/hysdn/boardergo.c
index 73afebdf80bd..160f22fa5941 100644
--- a/drivers/isdn/hysdn/boardergo.c
+++ b/drivers/isdn/hysdn/boardergo.c
@@ -33,7 +33,7 @@
33/* The cards interrupt handler. Called from system */ 33/* The cards interrupt handler. Called from system */
34/***************************************************/ 34/***************************************************/
35static irqreturn_t 35static irqreturn_t
36ergo_interrupt(int intno, void *dev_id, struct pt_regs *regs) 36ergo_interrupt(int intno, void *dev_id)
37{ 37{
38 hysdn_card *card = dev_id; /* parameter from irq */ 38 hysdn_card *card = dev_id; /* parameter from irq */
39 tErgDpram *dpr; 39 tErgDpram *dpr;
diff --git a/drivers/isdn/pcbit/layer2.c b/drivers/isdn/pcbit/layer2.c
index ba766930f088..13e7d219d1c7 100644
--- a/drivers/isdn/pcbit/layer2.c
+++ b/drivers/isdn/pcbit/layer2.c
@@ -512,7 +512,7 @@ pcbit_firmware_bug(struct pcbit_dev *dev)
512} 512}
513 513
514irqreturn_t 514irqreturn_t
515pcbit_irq_handler(int interrupt, void *devptr, struct pt_regs *regs) 515pcbit_irq_handler(int interrupt, void *devptr)
516{ 516{
517 struct pcbit_dev *dev; 517 struct pcbit_dev *dev;
518 u_char info, 518 u_char info,
diff --git a/drivers/isdn/pcbit/layer2.h b/drivers/isdn/pcbit/layer2.h
index 0d99da3a3e2b..2ac295e1a6e5 100644
--- a/drivers/isdn/pcbit/layer2.h
+++ b/drivers/isdn/pcbit/layer2.h
@@ -124,7 +124,7 @@ struct frame_buf {
124extern int pcbit_l2_write(struct pcbit_dev * dev, ulong msg, ushort refnum, 124extern int pcbit_l2_write(struct pcbit_dev * dev, ulong msg, ushort refnum,
125 struct sk_buff *skb, unsigned short hdr_len); 125 struct sk_buff *skb, unsigned short hdr_len);
126 126
127extern irqreturn_t pcbit_irq_handler(int interrupt, void *, struct pt_regs *regs); 127extern irqreturn_t pcbit_irq_handler(int interrupt, void *);
128 128
129extern struct pcbit_dev * dev_pcbit[MAX_PCBIT_CARDS]; 129extern struct pcbit_dev * dev_pcbit[MAX_PCBIT_CARDS];
130 130
diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
index a627e68023f6..222ca7c08baa 100644
--- a/drivers/isdn/sc/init.c
+++ b/drivers/isdn/sc/init.c
@@ -35,7 +35,7 @@ module_param_array(irq, int, NULL, 0);
35module_param_array(ram, int, NULL, 0); 35module_param_array(ram, int, NULL, 0);
36module_param(do_reset, bool, 0); 36module_param(do_reset, bool, 0);
37 37
38extern irqreturn_t interrupt_handler(int, void *, struct pt_regs *); 38extern irqreturn_t interrupt_handler(int, void *);
39extern int sndpkt(int, int, int, struct sk_buff *); 39extern int sndpkt(int, int, int, struct sk_buff *);
40extern int command(isdn_ctrl *); 40extern int command(isdn_ctrl *);
41extern int indicate_status(int, int, ulong, char*); 41extern int indicate_status(int, int, ulong, char*);
diff --git a/drivers/isdn/sc/interrupt.c b/drivers/isdn/sc/interrupt.c
index ae6263125ac2..cd17de18cb76 100644
--- a/drivers/isdn/sc/interrupt.c
+++ b/drivers/isdn/sc/interrupt.c
@@ -45,7 +45,7 @@ static int get_card_from_irq(int irq)
45/* 45/*
46 * 46 *
47 */ 47 */
48irqreturn_t interrupt_handler(int interrupt, void *cardptr, struct pt_regs *regs) 48irqreturn_t interrupt_handler(int interrupt, void *cardptr)
49{ 49{
50 50
51 RspMessage rcvmsg; 51 RspMessage rcvmsg;
diff --git a/drivers/macintosh/adb-iop.c b/drivers/macintosh/adb-iop.c
index d56d400b6aaa..17ef5d3c01b4 100644
--- a/drivers/macintosh/adb-iop.c
+++ b/drivers/macintosh/adb-iop.c
@@ -30,7 +30,7 @@
30 30
31/*#define DEBUG_ADB_IOP*/ 31/*#define DEBUG_ADB_IOP*/
32 32
33extern void iop_ism_irq(int, void *, struct pt_regs *); 33extern void iop_ism_irq(int, void *);
34 34
35static struct adb_request *current_req; 35static struct adb_request *current_req;
36static struct adb_request *last_req; 36static struct adb_request *last_req;
@@ -78,7 +78,7 @@ static void adb_iop_end_req(struct adb_request *req, int state)
78 * This will be called when a packet has been successfully sent. 78 * This will be called when a packet has been successfully sent.
79 */ 79 */
80 80
81static void adb_iop_complete(struct iop_msg *msg, struct pt_regs *regs) 81static void adb_iop_complete(struct iop_msg *msg)
82{ 82{
83 struct adb_request *req; 83 struct adb_request *req;
84 uint flags; 84 uint flags;
@@ -100,7 +100,7 @@ static void adb_iop_complete(struct iop_msg *msg, struct pt_regs *regs)
100 * commands or autopoll packets) are received. 100 * commands or autopoll packets) are received.
101 */ 101 */
102 102
103static void adb_iop_listen(struct iop_msg *msg, struct pt_regs *regs) 103static void adb_iop_listen(struct iop_msg *msg)
104{ 104{
105 struct adb_iopmsg *amsg = (struct adb_iopmsg *) msg->message; 105 struct adb_iopmsg *amsg = (struct adb_iopmsg *) msg->message;
106 struct adb_request *req; 106 struct adb_request *req;
@@ -143,7 +143,7 @@ static void adb_iop_listen(struct iop_msg *msg, struct pt_regs *regs)
143 req->reply_len = amsg->count + 1; 143 req->reply_len = amsg->count + 1;
144 memcpy(req->reply, &amsg->cmd, req->reply_len); 144 memcpy(req->reply, &amsg->cmd, req->reply_len);
145 } else { 145 } else {
146 adb_input(&amsg->cmd, amsg->count + 1, regs, 146 adb_input(&amsg->cmd, amsg->count + 1,
147 amsg->flags & ADB_IOP_AUTOPOLL); 147 amsg->flags & ADB_IOP_AUTOPOLL);
148 } 148 }
149 memcpy(msg->reply, msg->message, IOP_MSG_LEN); 149 memcpy(msg->reply, msg->message, IOP_MSG_LEN);
@@ -266,7 +266,7 @@ int adb_iop_autopoll(int devs)
266void adb_iop_poll(void) 266void adb_iop_poll(void)
267{ 267{
268 if (adb_iop_state == idle) adb_iop_start(); 268 if (adb_iop_state == idle) adb_iop_start();
269 iop_ism_irq(0, (void *) ADB_IOP, NULL); 269 iop_ism_irq(0, (void *) ADB_IOP);
270} 270}
271 271
272int adb_iop_reset_bus(void) 272int adb_iop_reset_bus(void)
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
index 360f93f6fcdb..be0bd34ff6f9 100644
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -103,7 +103,7 @@ static void adbdev_init(void);
103static int try_handler_change(int, int); 103static int try_handler_change(int, int);
104 104
105static struct adb_handler { 105static struct adb_handler {
106 void (*handler)(unsigned char *, int, struct pt_regs *, int); 106 void (*handler)(unsigned char *, int, int);
107 int original_address; 107 int original_address;
108 int handler_id; 108 int handler_id;
109 int busy; 109 int busy;
@@ -522,7 +522,7 @@ bail:
522 the handler_id id it doesn't match. */ 522 the handler_id id it doesn't match. */
523int 523int
524adb_register(int default_id, int handler_id, struct adb_ids *ids, 524adb_register(int default_id, int handler_id, struct adb_ids *ids,
525 void (*handler)(unsigned char *, int, struct pt_regs *, int)) 525 void (*handler)(unsigned char *, int, int))
526{ 526{
527 int i; 527 int i;
528 528
@@ -570,13 +570,13 @@ adb_unregister(int index)
570} 570}
571 571
572void 572void
573adb_input(unsigned char *buf, int nb, struct pt_regs *regs, int autopoll) 573adb_input(unsigned char *buf, int nb, int autopoll)
574{ 574{
575 int i, id; 575 int i, id;
576 static int dump_adb_input = 0; 576 static int dump_adb_input = 0;
577 unsigned long flags; 577 unsigned long flags;
578 578
579 void (*handler)(unsigned char *, int, struct pt_regs *, int); 579 void (*handler)(unsigned char *, int, int);
580 580
581 /* We skip keystrokes and mouse moves when the sleep process 581 /* We skip keystrokes and mouse moves when the sleep process
582 * has been started. We stop autopoll, but this is another security 582 * has been started. We stop autopoll, but this is another security
@@ -597,7 +597,7 @@ adb_input(unsigned char *buf, int nb, struct pt_regs *regs, int autopoll)
597 adb_handler[id].busy = 1; 597 adb_handler[id].busy = 1;
598 write_unlock_irqrestore(&adb_handler_lock, flags); 598 write_unlock_irqrestore(&adb_handler_lock, flags);
599 if (handler != NULL) { 599 if (handler != NULL) {
600 (*handler)(buf, nb, regs, autopoll); 600 (*handler)(buf, nb, autopoll);
601 wmb(); 601 wmb();
602 adb_handler[id].busy = 0; 602 adb_handler[id].busy = 0;
603 } 603 }
diff --git a/drivers/macintosh/adbhid.c b/drivers/macintosh/adbhid.c
index b7fb367808d8..5066e7a8ea9c 100644
--- a/drivers/macintosh/adbhid.c
+++ b/drivers/macintosh/adbhid.c
@@ -222,7 +222,7 @@ static struct adbhid *adbhid[16];
222 222
223static void adbhid_probe(void); 223static void adbhid_probe(void);
224 224
225static void adbhid_input_keycode(int, int, int, struct pt_regs *); 225static void adbhid_input_keycode(int, int, int);
226 226
227static void init_trackpad(int id); 227static void init_trackpad(int id);
228static void init_trackball(int id); 228static void init_trackball(int id);
@@ -253,7 +253,7 @@ static struct adb_ids buttons_ids;
253#define ADBMOUSE_MACALLY2 9 /* MacAlly 2-button mouse */ 253#define ADBMOUSE_MACALLY2 9 /* MacAlly 2-button mouse */
254 254
255static void 255static void
256adbhid_keyboard_input(unsigned char *data, int nb, struct pt_regs *regs, int apoll) 256adbhid_keyboard_input(unsigned char *data, int nb, int apoll)
257{ 257{
258 int id = (data[0] >> 4) & 0x0f; 258 int id = (data[0] >> 4) & 0x0f;
259 259
@@ -266,13 +266,13 @@ adbhid_keyboard_input(unsigned char *data, int nb, struct pt_regs *regs, int apo
266 /* first check this is from register 0 */ 266 /* first check this is from register 0 */
267 if (nb != 3 || (data[0] & 3) != KEYB_KEYREG) 267 if (nb != 3 || (data[0] & 3) != KEYB_KEYREG)
268 return; /* ignore it */ 268 return; /* ignore it */
269 adbhid_input_keycode(id, data[1], 0, regs); 269 adbhid_input_keycode(id, data[1], 0);
270 if (!(data[2] == 0xff || (data[2] == 0x7f && data[1] == 0x7f))) 270 if (!(data[2] == 0xff || (data[2] == 0x7f && data[1] == 0x7f)))
271 adbhid_input_keycode(id, data[2], 0, regs); 271 adbhid_input_keycode(id, data[2], 0);
272} 272}
273 273
274static void 274static void
275adbhid_input_keycode(int id, int keycode, int repeat, struct pt_regs *regs) 275adbhid_input_keycode(int id, int keycode, int repeat)
276{ 276{
277 struct adbhid *ahid = adbhid[id]; 277 struct adbhid *ahid = adbhid[id];
278 int up_flag; 278 int up_flag;
@@ -282,7 +282,6 @@ adbhid_input_keycode(int id, int keycode, int repeat, struct pt_regs *regs)
282 282
283 switch (keycode) { 283 switch (keycode) {
284 case ADB_KEY_CAPSLOCK: /* Generate down/up events for CapsLock everytime. */ 284 case ADB_KEY_CAPSLOCK: /* Generate down/up events for CapsLock everytime. */
285 input_regs(ahid->input, regs);
286 input_report_key(ahid->input, KEY_CAPSLOCK, 1); 285 input_report_key(ahid->input, KEY_CAPSLOCK, 1);
287 input_report_key(ahid->input, KEY_CAPSLOCK, 0); 286 input_report_key(ahid->input, KEY_CAPSLOCK, 0);
288 input_sync(ahid->input); 287 input_sync(ahid->input);
@@ -338,7 +337,6 @@ adbhid_input_keycode(int id, int keycode, int repeat, struct pt_regs *regs)
338 } 337 }
339 338
340 if (adbhid[id]->keycode[keycode]) { 339 if (adbhid[id]->keycode[keycode]) {
341 input_regs(adbhid[id]->input, regs);
342 input_report_key(adbhid[id]->input, 340 input_report_key(adbhid[id]->input,
343 adbhid[id]->keycode[keycode], !up_flag); 341 adbhid[id]->keycode[keycode], !up_flag);
344 input_sync(adbhid[id]->input); 342 input_sync(adbhid[id]->input);
@@ -349,7 +347,7 @@ adbhid_input_keycode(int id, int keycode, int repeat, struct pt_regs *regs)
349} 347}
350 348
351static void 349static void
352adbhid_mouse_input(unsigned char *data, int nb, struct pt_regs *regs, int autopoll) 350adbhid_mouse_input(unsigned char *data, int nb, int autopoll)
353{ 351{
354 int id = (data[0] >> 4) & 0x0f; 352 int id = (data[0] >> 4) & 0x0f;
355 353
@@ -432,8 +430,6 @@ adbhid_mouse_input(unsigned char *data, int nb, struct pt_regs *regs, int autopo
432 break; 430 break;
433 } 431 }
434 432
435 input_regs(adbhid[id]->input, regs);
436
437 input_report_key(adbhid[id]->input, BTN_LEFT, !((data[1] >> 7) & 1)); 433 input_report_key(adbhid[id]->input, BTN_LEFT, !((data[1] >> 7) & 1));
438 input_report_key(adbhid[id]->input, BTN_MIDDLE, !((data[2] >> 7) & 1)); 434 input_report_key(adbhid[id]->input, BTN_MIDDLE, !((data[2] >> 7) & 1));
439 435
@@ -449,7 +445,7 @@ adbhid_mouse_input(unsigned char *data, int nb, struct pt_regs *regs, int autopo
449} 445}
450 446
451static void 447static void
452adbhid_buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int autopoll) 448adbhid_buttons_input(unsigned char *data, int nb, int autopoll)
453{ 449{
454 int id = (data[0] >> 4) & 0x0f; 450 int id = (data[0] >> 4) & 0x0f;
455 451
@@ -458,8 +454,6 @@ adbhid_buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int auto
458 return; 454 return;
459 } 455 }
460 456
461 input_regs(adbhid[id]->input, regs);
462
463 switch (adbhid[id]->original_handler_id) { 457 switch (adbhid[id]->original_handler_id) {
464 default: 458 default:
465 case 0x02: /* Adjustable keyboard button device */ 459 case 0x02: /* Adjustable keyboard button device */
diff --git a/drivers/macintosh/macio-adb.c b/drivers/macintosh/macio-adb.c
index 4b08852c35ee..797cef72258f 100644
--- a/drivers/macintosh/macio-adb.c
+++ b/drivers/macintosh/macio-adb.c
@@ -64,7 +64,7 @@ static DEFINE_SPINLOCK(macio_lock);
64 64
65static int macio_probe(void); 65static int macio_probe(void);
66static int macio_init(void); 66static int macio_init(void);
67static irqreturn_t macio_adb_interrupt(int irq, void *arg, struct pt_regs *regs); 67static irqreturn_t macio_adb_interrupt(int irq, void *arg);
68static int macio_send_request(struct adb_request *req, int sync); 68static int macio_send_request(struct adb_request *req, int sync);
69static int macio_adb_autopoll(int devs); 69static int macio_adb_autopoll(int devs);
70static void macio_adb_poll(void); 70static void macio_adb_poll(void);
@@ -189,8 +189,7 @@ static int macio_send_request(struct adb_request *req, int sync)
189 return 0; 189 return 0;
190} 190}
191 191
192static irqreturn_t macio_adb_interrupt(int irq, void *arg, 192static irqreturn_t macio_adb_interrupt(int irq, void *arg)
193 struct pt_regs *regs)
194{ 193{
195 int i, n, err; 194 int i, n, err;
196 struct adb_request *req = NULL; 195 struct adb_request *req = NULL;
@@ -260,7 +259,7 @@ static irqreturn_t macio_adb_interrupt(int irq, void *arg,
260 (*done)(req); 259 (*done)(req);
261 } 260 }
262 if (ibuf_len) 261 if (ibuf_len)
263 adb_input(ibuf, ibuf_len, regs, autopoll); 262 adb_input(ibuf, ibuf_len, autopoll);
264 263
265 return IRQ_RETVAL(handled); 264 return IRQ_RETVAL(handled);
266} 265}
@@ -271,6 +270,6 @@ static void macio_adb_poll(void)
271 270
272 local_irq_save(flags); 271 local_irq_save(flags);
273 if (in_8(&adb->intr.r) != 0) 272 if (in_8(&adb->intr.r) != 0)
274 macio_adb_interrupt(0, NULL, NULL); 273 macio_adb_interrupt(0, NULL);
275 local_irq_restore(flags); 274 local_irq_restore(flags);
276} 275}
diff --git a/drivers/macintosh/smu.c b/drivers/macintosh/smu.c
index c0f9d82e4662..ade25b3fbb35 100644
--- a/drivers/macintosh/smu.c
+++ b/drivers/macintosh/smu.c
@@ -145,7 +145,7 @@ static void smu_start_cmd(void)
145} 145}
146 146
147 147
148static irqreturn_t smu_db_intr(int irq, void *arg, struct pt_regs *regs) 148static irqreturn_t smu_db_intr(int irq, void *arg)
149{ 149{
150 unsigned long flags; 150 unsigned long flags;
151 struct smu_cmd *cmd; 151 struct smu_cmd *cmd;
@@ -224,7 +224,7 @@ static irqreturn_t smu_db_intr(int irq, void *arg, struct pt_regs *regs)
224} 224}
225 225
226 226
227static irqreturn_t smu_msg_intr(int irq, void *arg, struct pt_regs *regs) 227static irqreturn_t smu_msg_intr(int irq, void *arg)
228{ 228{
229 /* I don't quite know what to do with this one, we seem to never 229 /* I don't quite know what to do with this one, we seem to never
230 * receive it, so I suspect we have to arm it someway in the SMU 230 * receive it, so I suspect we have to arm it someway in the SMU
@@ -309,7 +309,7 @@ void smu_poll(void)
309 309
310 gpio = pmac_do_feature_call(PMAC_FTR_READ_GPIO, NULL, smu->doorbell); 310 gpio = pmac_do_feature_call(PMAC_FTR_READ_GPIO, NULL, smu->doorbell);
311 if ((gpio & 7) == 7) 311 if ((gpio & 7) == 7)
312 smu_db_intr(smu->db_irq, smu, NULL); 312 smu_db_intr(smu->db_irq, smu);
313} 313}
314EXPORT_SYMBOL(smu_poll); 314EXPORT_SYMBOL(smu_poll);
315 315
diff --git a/drivers/macintosh/via-cuda.c b/drivers/macintosh/via-cuda.c
index 7512d1c15207..df66291b1322 100644
--- a/drivers/macintosh/via-cuda.c
+++ b/drivers/macintosh/via-cuda.c
@@ -98,8 +98,8 @@ static int cuda_reset_adb_bus(void);
98 98
99static int cuda_init_via(void); 99static int cuda_init_via(void);
100static void cuda_start(void); 100static void cuda_start(void);
101static irqreturn_t cuda_interrupt(int irq, void *arg, struct pt_regs *regs); 101static irqreturn_t cuda_interrupt(int irq, void *arg);
102static void cuda_input(unsigned char *buf, int nb, struct pt_regs *regs); 102static void cuda_input(unsigned char *buf, int nb);
103void cuda_poll(void); 103void cuda_poll(void);
104static int cuda_write(struct adb_request *req); 104static int cuda_write(struct adb_request *req);
105 105
@@ -437,12 +437,12 @@ cuda_poll(void)
437 * disable_irq(), would that work on m68k ? --BenH 437 * disable_irq(), would that work on m68k ? --BenH
438 */ 438 */
439 local_irq_save(flags); 439 local_irq_save(flags);
440 cuda_interrupt(0, NULL, NULL); 440 cuda_interrupt(0, NULL);
441 local_irq_restore(flags); 441 local_irq_restore(flags);
442} 442}
443 443
444static irqreturn_t 444static irqreturn_t
445cuda_interrupt(int irq, void *arg, struct pt_regs *regs) 445cuda_interrupt(int irq, void *arg)
446{ 446{
447 int status; 447 int status;
448 struct adb_request *req = NULL; 448 struct adb_request *req = NULL;
@@ -594,12 +594,12 @@ cuda_interrupt(int irq, void *arg, struct pt_regs *regs)
594 (*done)(req); 594 (*done)(req);
595 } 595 }
596 if (ibuf_len) 596 if (ibuf_len)
597 cuda_input(ibuf, ibuf_len, regs); 597 cuda_input(ibuf, ibuf_len);
598 return IRQ_HANDLED; 598 return IRQ_HANDLED;
599} 599}
600 600
601static void 601static void
602cuda_input(unsigned char *buf, int nb, struct pt_regs *regs) 602cuda_input(unsigned char *buf, int nb)
603{ 603{
604 int i; 604 int i;
605 605
@@ -615,7 +615,7 @@ cuda_input(unsigned char *buf, int nb, struct pt_regs *regs)
615 } 615 }
616#endif /* CONFIG_XMON */ 616#endif /* CONFIG_XMON */
617#ifdef CONFIG_ADB 617#ifdef CONFIG_ADB
618 adb_input(buf+2, nb-2, regs, buf[1] & 0x40); 618 adb_input(buf+2, nb-2, buf[1] & 0x40);
619#endif /* CONFIG_ADB */ 619#endif /* CONFIG_ADB */
620 break; 620 break;
621 621
diff --git a/drivers/macintosh/via-macii.c b/drivers/macintosh/via-macii.c
index 2a2ffe060169..5d88d5b0ad99 100644
--- a/drivers/macintosh/via-macii.c
+++ b/drivers/macintosh/via-macii.c
@@ -77,7 +77,7 @@ static volatile unsigned char *via;
77 77
78static int macii_init_via(void); 78static int macii_init_via(void);
79static void macii_start(void); 79static void macii_start(void);
80static irqreturn_t macii_interrupt(int irq, void *arg, struct pt_regs *regs); 80static irqreturn_t macii_interrupt(int irq, void *arg);
81static void macii_retransmit(int); 81static void macii_retransmit(int);
82static void macii_queue_poll(void); 82static void macii_queue_poll(void);
83 83
@@ -295,7 +295,7 @@ static void macii_poll(void)
295 unsigned long flags; 295 unsigned long flags;
296 296
297 local_irq_save(flags); 297 local_irq_save(flags);
298 if (via[IFR] & SR_INT) macii_interrupt(0, NULL, NULL); 298 if (via[IFR] & SR_INT) macii_interrupt(0, NULL);
299 local_irq_restore(flags); 299 local_irq_restore(flags);
300} 300}
301 301
@@ -410,7 +410,7 @@ static void macii_start(void)
410 * Note: As of 21/10/97, the MacII ADB part works including timeout detection 410 * Note: As of 21/10/97, the MacII ADB part works including timeout detection
411 * and retransmit (Talk to the last active device). 411 * and retransmit (Talk to the last active device).
412 */ 412 */
413static irqreturn_t macii_interrupt(int irq, void *arg, struct pt_regs *regs) 413static irqreturn_t macii_interrupt(int irq, void *arg)
414{ 414{
415 int x, adbdir; 415 int x, adbdir;
416 unsigned long flags; 416 unsigned long flags;
@@ -602,8 +602,7 @@ static irqreturn_t macii_interrupt(int irq, void *arg, struct pt_regs *regs)
602 current_req = req->next; 602 current_req = req->next;
603 if (req->done) (*req->done)(req); 603 if (req->done) (*req->done)(req);
604 } else { 604 } else {
605 adb_input(reply_buf, reply_ptr - reply_buf, 605 adb_input(reply_buf, reply_ptr - reply_buf, 0);
606 regs, 0);
607 } 606 }
608 607
609 /* 608 /*
diff --git a/drivers/macintosh/via-maciisi.c b/drivers/macintosh/via-maciisi.c
index 0129fcc3b183..1f0aa5dc9aa5 100644
--- a/drivers/macintosh/via-maciisi.c
+++ b/drivers/macintosh/via-maciisi.c
@@ -84,8 +84,8 @@ static int maciisi_init(void);
84static int maciisi_send_request(struct adb_request* req, int sync); 84static int maciisi_send_request(struct adb_request* req, int sync);
85static void maciisi_sync(struct adb_request *req); 85static void maciisi_sync(struct adb_request *req);
86static int maciisi_write(struct adb_request* req); 86static int maciisi_write(struct adb_request* req);
87static irqreturn_t maciisi_interrupt(int irq, void* arg, struct pt_regs* regs); 87static irqreturn_t maciisi_interrupt(int irq, void* arg);
88static void maciisi_input(unsigned char *buf, int nb, struct pt_regs *regs); 88static void maciisi_input(unsigned char *buf, int nb);
89static int maciisi_init_via(void); 89static int maciisi_init_via(void);
90static void maciisi_poll(void); 90static void maciisi_poll(void);
91static int maciisi_start(void); 91static int maciisi_start(void);
@@ -421,7 +421,7 @@ maciisi_poll(void)
421 421
422 local_irq_save(flags); 422 local_irq_save(flags);
423 if (via[IFR] & SR_INT) { 423 if (via[IFR] & SR_INT) {
424 maciisi_interrupt(0, NULL, NULL); 424 maciisi_interrupt(0, NULL);
425 } 425 }
426 else /* avoid calling this function too quickly in a loop */ 426 else /* avoid calling this function too quickly in a loop */
427 udelay(ADB_DELAY); 427 udelay(ADB_DELAY);
@@ -433,7 +433,7 @@ maciisi_poll(void)
433 register is either full or empty. In practice, I have no idea what 433 register is either full or empty. In practice, I have no idea what
434 it means :( */ 434 it means :( */
435static irqreturn_t 435static irqreturn_t
436maciisi_interrupt(int irq, void* arg, struct pt_regs* regs) 436maciisi_interrupt(int irq, void* arg)
437{ 437{
438 int status; 438 int status;
439 struct adb_request *req; 439 struct adb_request *req;
@@ -612,7 +612,7 @@ maciisi_interrupt(int irq, void* arg, struct pt_regs* regs)
612 /* Obviously, we got it */ 612 /* Obviously, we got it */
613 reading_reply = 0; 613 reading_reply = 0;
614 } else { 614 } else {
615 maciisi_input(maciisi_rbuf, reply_ptr - maciisi_rbuf, regs); 615 maciisi_input(maciisi_rbuf, reply_ptr - maciisi_rbuf);
616 } 616 }
617 maciisi_state = idle; 617 maciisi_state = idle;
618 status = via[B] & (TIP|TREQ); 618 status = via[B] & (TIP|TREQ);
@@ -657,7 +657,7 @@ maciisi_interrupt(int irq, void* arg, struct pt_regs* regs)
657} 657}
658 658
659static void 659static void
660maciisi_input(unsigned char *buf, int nb, struct pt_regs *regs) 660maciisi_input(unsigned char *buf, int nb)
661{ 661{
662#ifdef DEBUG_MACIISI_ADB 662#ifdef DEBUG_MACIISI_ADB
663 int i; 663 int i;
@@ -665,7 +665,7 @@ maciisi_input(unsigned char *buf, int nb, struct pt_regs *regs)
665 665
666 switch (buf[0]) { 666 switch (buf[0]) {
667 case ADB_PACKET: 667 case ADB_PACKET:
668 adb_input(buf+2, nb-2, regs, buf[1] & 0x40); 668 adb_input(buf+2, nb-2, buf[1] & 0x40);
669 break; 669 break;
670 default: 670 default:
671#ifdef DEBUG_MACIISI_ADB 671#ifdef DEBUG_MACIISI_ADB
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index 4f04fd0956a0..e63ea1c1f3c1 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -191,8 +191,8 @@ static int pmu_adb_reset_bus(void);
191 191
192static int init_pmu(void); 192static int init_pmu(void);
193static void pmu_start(void); 193static void pmu_start(void);
194static irqreturn_t via_pmu_interrupt(int irq, void *arg, struct pt_regs *regs); 194static irqreturn_t via_pmu_interrupt(int irq, void *arg);
195static irqreturn_t gpio1_interrupt(int irq, void *arg, struct pt_regs *regs); 195static irqreturn_t gpio1_interrupt(int irq, void *arg);
196static int proc_get_info(char *page, char **start, off_t off, 196static int proc_get_info(char *page, char **start, off_t off,
197 int count, int *eof, void *data); 197 int count, int *eof, void *data);
198static int proc_get_irqstats(char *page, char **start, off_t off, 198static int proc_get_irqstats(char *page, char **start, off_t off,
@@ -555,7 +555,7 @@ init_pmu(void)
555 } 555 }
556 if (pmu_state == idle) 556 if (pmu_state == idle)
557 adb_int_pending = 1; 557 adb_int_pending = 1;
558 via_pmu_interrupt(0, NULL, NULL); 558 via_pmu_interrupt(0, NULL);
559 udelay(10); 559 udelay(10);
560 } 560 }
561 561
@@ -1215,7 +1215,7 @@ pmu_poll(void)
1215 return; 1215 return;
1216 if (disable_poll) 1216 if (disable_poll)
1217 return; 1217 return;
1218 via_pmu_interrupt(0, NULL, NULL); 1218 via_pmu_interrupt(0, NULL);
1219} 1219}
1220 1220
1221void 1221void
@@ -1228,7 +1228,7 @@ pmu_poll_adb(void)
1228 /* Kicks ADB read when PMU is suspended */ 1228 /* Kicks ADB read when PMU is suspended */
1229 adb_int_pending = 1; 1229 adb_int_pending = 1;
1230 do { 1230 do {
1231 via_pmu_interrupt(0, NULL, NULL); 1231 via_pmu_interrupt(0, NULL);
1232 } while (pmu_suspended && (adb_int_pending || pmu_state != idle 1232 } while (pmu_suspended && (adb_int_pending || pmu_state != idle
1233 || req_awaiting_reply)); 1233 || req_awaiting_reply));
1234} 1234}
@@ -1239,7 +1239,7 @@ pmu_wait_complete(struct adb_request *req)
1239 if (!via) 1239 if (!via)
1240 return; 1240 return;
1241 while((pmu_state != idle && pmu_state != locked) || !req->complete) 1241 while((pmu_state != idle && pmu_state != locked) || !req->complete)
1242 via_pmu_interrupt(0, NULL, NULL); 1242 via_pmu_interrupt(0, NULL);
1243} 1243}
1244 1244
1245/* This function loops until the PMU is idle and prevents it from 1245/* This function loops until the PMU is idle and prevents it from
@@ -1268,7 +1268,7 @@ pmu_suspend(void)
1268 spin_unlock_irqrestore(&pmu_lock, flags); 1268 spin_unlock_irqrestore(&pmu_lock, flags);
1269 if (req_awaiting_reply) 1269 if (req_awaiting_reply)
1270 adb_int_pending = 1; 1270 adb_int_pending = 1;
1271 via_pmu_interrupt(0, NULL, NULL); 1271 via_pmu_interrupt(0, NULL);
1272 spin_lock_irqsave(&pmu_lock, flags); 1272 spin_lock_irqsave(&pmu_lock, flags);
1273 if (!adb_int_pending && pmu_state == idle && !req_awaiting_reply) { 1273 if (!adb_int_pending && pmu_state == idle && !req_awaiting_reply) {
1274#ifdef SUSPEND_USES_PMU 1274#ifdef SUSPEND_USES_PMU
@@ -1318,7 +1318,7 @@ pmu_resume(void)
1318 1318
1319/* Interrupt data could be the result data from an ADB cmd */ 1319/* Interrupt data could be the result data from an ADB cmd */
1320static void 1320static void
1321pmu_handle_data(unsigned char *data, int len, struct pt_regs *regs) 1321pmu_handle_data(unsigned char *data, int len)
1322{ 1322{
1323 unsigned char ints, pirq; 1323 unsigned char ints, pirq;
1324 int i = 0; 1324 int i = 0;
@@ -1393,7 +1393,7 @@ next:
1393 if (!(pmu_kind == PMU_OHARE_BASED && len == 4 1393 if (!(pmu_kind == PMU_OHARE_BASED && len == 4
1394 && data[1] == 0x2c && data[3] == 0xff 1394 && data[1] == 0x2c && data[3] == 0xff
1395 && (data[2] & ~1) == 0xf4)) 1395 && (data[2] & ~1) == 0xf4))
1396 adb_input(data+1, len-1, regs, 1); 1396 adb_input(data+1, len-1, 1);
1397#endif /* CONFIG_ADB */ 1397#endif /* CONFIG_ADB */
1398 } 1398 }
1399 } 1399 }
@@ -1431,7 +1431,7 @@ next:
1431} 1431}
1432 1432
1433static struct adb_request* 1433static struct adb_request*
1434pmu_sr_intr(struct pt_regs *regs) 1434pmu_sr_intr(void)
1435{ 1435{
1436 struct adb_request *req; 1436 struct adb_request *req;
1437 int bite = 0; 1437 int bite = 0;
@@ -1537,7 +1537,7 @@ pmu_sr_intr(struct pt_regs *regs)
1537} 1537}
1538 1538
1539static irqreturn_t 1539static irqreturn_t
1540via_pmu_interrupt(int irq, void *arg, struct pt_regs *regs) 1540via_pmu_interrupt(int irq, void *arg)
1541{ 1541{
1542 unsigned long flags; 1542 unsigned long flags;
1543 int intr; 1543 int intr;
@@ -1567,7 +1567,7 @@ via_pmu_interrupt(int irq, void *arg, struct pt_regs *regs)
1567 pmu_irq_stats[0]++; 1567 pmu_irq_stats[0]++;
1568 } 1568 }
1569 if (intr & SR_INT) { 1569 if (intr & SR_INT) {
1570 req = pmu_sr_intr(regs); 1570 req = pmu_sr_intr();
1571 if (req) 1571 if (req)
1572 break; 1572 break;
1573 } 1573 }
@@ -1613,7 +1613,7 @@ no_free_slot:
1613 1613
1614 /* Deal with interrupt datas outside of the lock */ 1614 /* Deal with interrupt datas outside of the lock */
1615 if (int_data >= 0) { 1615 if (int_data >= 0) {
1616 pmu_handle_data(interrupt_data[int_data], interrupt_data_len[int_data], regs); 1616 pmu_handle_data(interrupt_data[int_data], interrupt_data_len[int_data]);
1617 spin_lock_irqsave(&pmu_lock, flags); 1617 spin_lock_irqsave(&pmu_lock, flags);
1618 ++disable_poll; 1618 ++disable_poll;
1619 int_data_state[int_data] = int_data_empty; 1619 int_data_state[int_data] = int_data_empty;
@@ -1638,7 +1638,7 @@ pmu_unlock(void)
1638 1638
1639 1639
1640static irqreturn_t 1640static irqreturn_t
1641gpio1_interrupt(int irq, void *arg, struct pt_regs *regs) 1641gpio1_interrupt(int irq, void *arg)
1642{ 1642{
1643 unsigned long flags; 1643 unsigned long flags;
1644 1644
@@ -1651,7 +1651,7 @@ gpio1_interrupt(int irq, void *arg, struct pt_regs *regs)
1651 pmu_irq_stats[1]++; 1651 pmu_irq_stats[1]++;
1652 adb_int_pending = 1; 1652 adb_int_pending = 1;
1653 spin_unlock_irqrestore(&pmu_lock, flags); 1653 spin_unlock_irqrestore(&pmu_lock, flags);
1654 via_pmu_interrupt(0, NULL, NULL); 1654 via_pmu_interrupt(0, NULL);
1655 return IRQ_HANDLED; 1655 return IRQ_HANDLED;
1656 } 1656 }
1657 return IRQ_NONE; 1657 return IRQ_NONE;
@@ -2116,7 +2116,7 @@ pmac_wakeup_devices(void)
2116 2116
2117 /* Force a poll of ADB interrupts */ 2117 /* Force a poll of ADB interrupts */
2118 adb_int_pending = 1; 2118 adb_int_pending = 1;
2119 via_pmu_interrupt(0, NULL, NULL); 2119 via_pmu_interrupt(0, NULL);
2120 2120
2121 /* Restart jiffies & scheduling */ 2121 /* Restart jiffies & scheduling */
2122 wakeup_decrementer(); 2122 wakeup_decrementer();
diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c
index 9f4eff1d1a0f..d9986f3a3fbf 100644
--- a/drivers/macintosh/via-pmu68k.c
+++ b/drivers/macintosh/via-pmu68k.c
@@ -107,7 +107,7 @@ BLOCKING_NOTIFIER_HEAD(sleep_notifier_list);
107static int pmu_probe(void); 107static int pmu_probe(void);
108static int pmu_init(void); 108static int pmu_init(void);
109static void pmu_start(void); 109static void pmu_start(void);
110static irqreturn_t pmu_interrupt(int irq, void *arg, struct pt_regs *regs); 110static irqreturn_t pmu_interrupt(int irq, void *arg);
111static int pmu_send_request(struct adb_request *req, int sync); 111static int pmu_send_request(struct adb_request *req, int sync);
112static int pmu_autopoll(int devs); 112static int pmu_autopoll(int devs);
113void pmu_poll(void); 113void pmu_poll(void);
@@ -118,8 +118,7 @@ static void pmu_start(void);
118static void send_byte(int x); 118static void send_byte(int x);
119static void recv_byte(void); 119static void recv_byte(void);
120static void pmu_done(struct adb_request *req); 120static void pmu_done(struct adb_request *req);
121static void pmu_handle_data(unsigned char *data, int len, 121static void pmu_handle_data(unsigned char *data, int len);
122 struct pt_regs *regs);
123static void set_volume(int level); 122static void set_volume(int level);
124static void pmu_enable_backlight(int on); 123static void pmu_enable_backlight(int on);
125static void pmu_set_brightness(int level); 124static void pmu_set_brightness(int level);
@@ -222,7 +221,7 @@ pmu_init(void)
222 } 221 }
223 if (pmu_state == idle) { 222 if (pmu_state == idle) {
224 adb_int_pending = 1; 223 adb_int_pending = 1;
225 pmu_interrupt(0, NULL, NULL); 224 pmu_interrupt(0, NULL);
226 } 225 }
227 pmu_poll(); 226 pmu_poll();
228 udelay(10); 227 udelay(10);
@@ -563,17 +562,17 @@ pmu_poll(void)
563 local_irq_save(flags); 562 local_irq_save(flags);
564 if (via1[IFR] & SR_INT) { 563 if (via1[IFR] & SR_INT) {
565 via1[IFR] = SR_INT; 564 via1[IFR] = SR_INT;
566 pmu_interrupt(IRQ_MAC_ADB_SR, NULL, NULL); 565 pmu_interrupt(IRQ_MAC_ADB_SR, NULL);
567 } 566 }
568 if (via1[IFR] & CB1_INT) { 567 if (via1[IFR] & CB1_INT) {
569 via1[IFR] = CB1_INT; 568 via1[IFR] = CB1_INT;
570 pmu_interrupt(IRQ_MAC_ADB_CL, NULL, NULL); 569 pmu_interrupt(IRQ_MAC_ADB_CL, NULL);
571 } 570 }
572 local_irq_restore(flags); 571 local_irq_restore(flags);
573} 572}
574 573
575static irqreturn_t 574static irqreturn_t
576pmu_interrupt(int irq, void *dev_id, struct pt_regs *regs) 575pmu_interrupt(int irq, void *dev_id)
577{ 576{
578 struct adb_request *req; 577 struct adb_request *req;
579 int timeout, bite = 0; /* to prevent compiler warning */ 578 int timeout, bite = 0; /* to prevent compiler warning */
@@ -657,7 +656,7 @@ pmu_interrupt(int irq, void *dev_id, struct pt_regs *regs)
657 } 656 }
658 657
659 if (pmu_state == reading_intr) { 658 if (pmu_state == reading_intr) {
660 pmu_handle_data(interrupt_data, data_index, regs); 659 pmu_handle_data(interrupt_data, data_index);
661 } else { 660 } else {
662 req = current_req; 661 req = current_req;
663 current_req = req->next; 662 current_req = req->next;
@@ -701,7 +700,7 @@ pmu_done(struct adb_request *req)
701 700
702/* Interrupt data could be the result data from an ADB cmd */ 701/* Interrupt data could be the result data from an ADB cmd */
703static void 702static void
704pmu_handle_data(unsigned char *data, int len, struct pt_regs *regs) 703pmu_handle_data(unsigned char *data, int len)
705{ 704{
706 static int show_pmu_ints = 1; 705 static int show_pmu_ints = 1;
707 706
@@ -726,7 +725,7 @@ pmu_handle_data(unsigned char *data, int len, struct pt_regs *regs)
726 } 725 }
727 pmu_done(req); 726 pmu_done(req);
728 } else { 727 } else {
729 adb_input(data+1, len-1, regs, 1); 728 adb_input(data+1, len-1, 1);
730 } 729 }
731 } else { 730 } else {
732 if (data[0] == 0x08 && len == 3) { 731 if (data[0] == 0x08 && len == 3) {
diff --git a/drivers/macintosh/windfarm_pm112.c b/drivers/macintosh/windfarm_pm112.c
index ef66bf2778ec..fa4b13f89369 100644
--- a/drivers/macintosh/windfarm_pm112.c
+++ b/drivers/macintosh/windfarm_pm112.c
@@ -650,24 +650,26 @@ static struct notifier_block pm112_events = {
650 .notifier_call = pm112_wf_notify, 650 .notifier_call = pm112_wf_notify,
651}; 651};
652 652
653static int wf_pm112_probe(struct device *dev) 653static int wf_pm112_probe(struct platform_device *dev)
654{ 654{
655 wf_register_client(&pm112_events); 655 wf_register_client(&pm112_events);
656 return 0; 656 return 0;
657} 657}
658 658
659static int wf_pm112_remove(struct device *dev) 659static int __devexit wf_pm112_remove(struct platform_device *dev)
660{ 660{
661 wf_unregister_client(&pm112_events); 661 wf_unregister_client(&pm112_events);
662 /* should release all sensors and controls */ 662 /* should release all sensors and controls */
663 return 0; 663 return 0;
664} 664}
665 665
666static struct device_driver wf_pm112_driver = { 666static struct platform_driver wf_pm112_driver = {
667 .name = "windfarm",
668 .bus = &platform_bus_type,
669 .probe = wf_pm112_probe, 667 .probe = wf_pm112_probe,
670 .remove = wf_pm112_remove, 668 .remove = __devexit_p(wf_pm112_remove),
669 .driver = {
670 .name = "windfarm",
671 .bus = &platform_bus_type,
672 },
671}; 673};
672 674
673static int __init wf_pm112_init(void) 675static int __init wf_pm112_init(void)
@@ -683,13 +685,13 @@ static int __init wf_pm112_init(void)
683 ++nr_cores; 685 ++nr_cores;
684 686
685 printk(KERN_INFO "windfarm: initializing for dual-core desktop G5\n"); 687 printk(KERN_INFO "windfarm: initializing for dual-core desktop G5\n");
686 driver_register(&wf_pm112_driver); 688 platform_driver_register(&wf_pm112_driver);
687 return 0; 689 return 0;
688} 690}
689 691
690static void __exit wf_pm112_exit(void) 692static void __exit wf_pm112_exit(void)
691{ 693{
692 driver_unregister(&wf_pm112_driver); 694 platform_driver_unregister(&wf_pm112_driver);
693} 695}
694 696
695module_init(wf_pm112_init); 697module_init(wf_pm112_init);
diff --git a/drivers/macintosh/windfarm_pm81.c b/drivers/macintosh/windfarm_pm81.c
index 2ff546e4c92f..2a944851b8e1 100644
--- a/drivers/macintosh/windfarm_pm81.c
+++ b/drivers/macintosh/windfarm_pm81.c
@@ -131,8 +131,6 @@
131 131
132static int wf_smu_mach_model; /* machine model id */ 132static int wf_smu_mach_model; /* machine model id */
133 133
134static struct device *wf_smu_dev;
135
136/* Controls & sensors */ 134/* Controls & sensors */
137static struct wf_sensor *sensor_cpu_power; 135static struct wf_sensor *sensor_cpu_power;
138static struct wf_sensor *sensor_cpu_temp; 136static struct wf_sensor *sensor_cpu_temp;
@@ -717,16 +715,14 @@ static int wf_init_pm(void)
717 return 0; 715 return 0;
718} 716}
719 717
720static int wf_smu_probe(struct device *ddev) 718static int wf_smu_probe(struct platform_device *ddev)
721{ 719{
722 wf_smu_dev = ddev;
723
724 wf_register_client(&wf_smu_events); 720 wf_register_client(&wf_smu_events);
725 721
726 return 0; 722 return 0;
727} 723}
728 724
729static int wf_smu_remove(struct device *ddev) 725static int __devexit wf_smu_remove(struct platform_device *ddev)
730{ 726{
731 wf_unregister_client(&wf_smu_events); 727 wf_unregister_client(&wf_smu_events);
732 728
@@ -766,16 +762,16 @@ static int wf_smu_remove(struct device *ddev)
766 if (wf_smu_cpu_fans) 762 if (wf_smu_cpu_fans)
767 kfree(wf_smu_cpu_fans); 763 kfree(wf_smu_cpu_fans);
768 764
769 wf_smu_dev = NULL;
770
771 return 0; 765 return 0;
772} 766}
773 767
774static struct device_driver wf_smu_driver = { 768static struct platform_driver wf_smu_driver = {
775 .name = "windfarm",
776 .bus = &platform_bus_type,
777 .probe = wf_smu_probe, 769 .probe = wf_smu_probe,
778 .remove = wf_smu_remove, 770 .remove = __devexit_p(wf_smu_remove),
771 .driver = {
772 .name = "windfarm",
773 .bus = &platform_bus_type,
774 },
779}; 775};
780 776
781 777
@@ -794,7 +790,7 @@ static int __init wf_smu_init(void)
794 request_module("windfarm_lm75_sensor"); 790 request_module("windfarm_lm75_sensor");
795 791
796#endif /* MODULE */ 792#endif /* MODULE */
797 driver_register(&wf_smu_driver); 793 platform_driver_register(&wf_smu_driver);
798 } 794 }
799 795
800 return rc; 796 return rc;
@@ -803,7 +799,7 @@ static int __init wf_smu_init(void)
803static void __exit wf_smu_exit(void) 799static void __exit wf_smu_exit(void)
804{ 800{
805 801
806 driver_unregister(&wf_smu_driver); 802 platform_driver_unregister(&wf_smu_driver);
807} 803}
808 804
809 805
diff --git a/drivers/macintosh/windfarm_pm91.c b/drivers/macintosh/windfarm_pm91.c
index 59e9ffe37c39..9961a67b4f85 100644
--- a/drivers/macintosh/windfarm_pm91.c
+++ b/drivers/macintosh/windfarm_pm91.c
@@ -63,8 +63,6 @@
63 */ 63 */
64#undef HACKED_OVERTEMP 64#undef HACKED_OVERTEMP
65 65
66static struct device *wf_smu_dev;
67
68/* Controls & sensors */ 66/* Controls & sensors */
69static struct wf_sensor *sensor_cpu_power; 67static struct wf_sensor *sensor_cpu_power;
70static struct wf_sensor *sensor_cpu_temp; 68static struct wf_sensor *sensor_cpu_temp;
@@ -641,16 +639,14 @@ static int wf_init_pm(void)
641 return 0; 639 return 0;
642} 640}
643 641
644static int wf_smu_probe(struct device *ddev) 642static int wf_smu_probe(struct platform_device *ddev)
645{ 643{
646 wf_smu_dev = ddev;
647
648 wf_register_client(&wf_smu_events); 644 wf_register_client(&wf_smu_events);
649 645
650 return 0; 646 return 0;
651} 647}
652 648
653static int wf_smu_remove(struct device *ddev) 649static int __devexit wf_smu_remove(struct platform_device *ddev)
654{ 650{
655 wf_unregister_client(&wf_smu_events); 651 wf_unregister_client(&wf_smu_events);
656 652
@@ -698,16 +694,16 @@ static int wf_smu_remove(struct device *ddev)
698 if (wf_smu_cpu_fans) 694 if (wf_smu_cpu_fans)
699 kfree(wf_smu_cpu_fans); 695 kfree(wf_smu_cpu_fans);
700 696
701 wf_smu_dev = NULL;
702
703 return 0; 697 return 0;
704} 698}
705 699
706static struct device_driver wf_smu_driver = { 700static struct platform_driver wf_smu_driver = {
707 .name = "windfarm",
708 .bus = &platform_bus_type,
709 .probe = wf_smu_probe, 701 .probe = wf_smu_probe,
710 .remove = wf_smu_remove, 702 .remove = __devexit_p(wf_smu_remove),
703 .driver = {
704 .name = "windfarm",
705 .bus = &platform_bus_type,
706 },
711}; 707};
712 708
713 709
@@ -725,7 +721,7 @@ static int __init wf_smu_init(void)
725 request_module("windfarm_lm75_sensor"); 721 request_module("windfarm_lm75_sensor");
726 722
727#endif /* MODULE */ 723#endif /* MODULE */
728 driver_register(&wf_smu_driver); 724 platform_driver_register(&wf_smu_driver);
729 } 725 }
730 726
731 return rc; 727 return rc;
@@ -734,7 +730,7 @@ static int __init wf_smu_init(void)
734static void __exit wf_smu_exit(void) 730static void __exit wf_smu_exit(void)
735{ 731{
736 732
737 driver_unregister(&wf_smu_driver); 733 platform_driver_unregister(&wf_smu_driver);
738} 734}
739 735
740 736
diff --git a/drivers/md/md.c b/drivers/md/md.c
index cb8281605be8..57fa64f93e5f 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -3849,6 +3849,7 @@ static int hot_add_disk(mddev_t * mddev, dev_t dev)
3849 } 3849 }
3850 clear_bit(In_sync, &rdev->flags); 3850 clear_bit(In_sync, &rdev->flags);
3851 rdev->desc_nr = -1; 3851 rdev->desc_nr = -1;
3852 rdev->saved_raid_disk = -1;
3852 err = bind_rdev_to_array(rdev, mddev); 3853 err = bind_rdev_to_array(rdev, mddev);
3853 if (err) 3854 if (err)
3854 goto abort_export; 3855 goto abort_export;
diff --git a/drivers/media/common/saa7146_core.c b/drivers/media/common/saa7146_core.c
index b88451e33c09..86cbdbcf9d7d 100644
--- a/drivers/media/common/saa7146_core.c
+++ b/drivers/media/common/saa7146_core.c
@@ -230,7 +230,7 @@ int saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt
230 230
231/********************************************************************************/ 231/********************************************************************************/
232/* interrupt handler */ 232/* interrupt handler */
233static irqreturn_t interrupt_hw(int irq, void *dev_id, struct pt_regs *regs) 233static irqreturn_t interrupt_hw(int irq, void *dev_id)
234{ 234{
235 struct saa7146_dev *dev = dev_id; 235 struct saa7146_dev *dev = dev_id;
236 u32 isr = 0; 236 u32 isr = 0;
diff --git a/drivers/media/dvb/b2c2/flexcop-pci.c b/drivers/media/dvb/b2c2/flexcop-pci.c
index eb2e6432c8c2..06893243f3d4 100644
--- a/drivers/media/dvb/b2c2/flexcop-pci.c
+++ b/drivers/media/dvb/b2c2/flexcop-pci.c
@@ -122,7 +122,7 @@ static void flexcop_pci_irq_check_work(void *data)
122/* When PID filtering is turned on, we use the timer IRQ, because small amounts 122/* When PID filtering is turned on, we use the timer IRQ, because small amounts
123 * of data need to be passed to the user space instantly as well. When PID 123 * of data need to be passed to the user space instantly as well. When PID
124 * filtering is turned off, we use the page-change-IRQ */ 124 * filtering is turned off, we use the page-change-IRQ */
125static irqreturn_t flexcop_pci_isr(int irq, void *dev_id, struct pt_regs *regs) 125static irqreturn_t flexcop_pci_isr(int irq, void *dev_id)
126{ 126{
127 struct flexcop_pci *fc_pci = dev_id; 127 struct flexcop_pci *fc_pci = dev_id;
128 struct flexcop_device *fc = fc_pci->fc_dev; 128 struct flexcop_device *fc = fc_pci->fc_dev;
diff --git a/drivers/media/dvb/b2c2/flexcop-usb.c b/drivers/media/dvb/b2c2/flexcop-usb.c
index 515954f96c9a..2853ea1bdaf1 100644
--- a/drivers/media/dvb/b2c2/flexcop-usb.c
+++ b/drivers/media/dvb/b2c2/flexcop-usb.c
@@ -328,7 +328,7 @@ static void flexcop_usb_process_frame(struct flexcop_usb *fc_usb, u8 *buffer, in
328 fc_usb->tmp_buffer_length = l; 328 fc_usb->tmp_buffer_length = l;
329} 329}
330 330
331static void flexcop_usb_urb_complete(struct urb *urb, struct pt_regs *ptregs) 331static void flexcop_usb_urb_complete(struct urb *urb)
332{ 332{
333 struct flexcop_usb *fc_usb = urb->context; 333 struct flexcop_usb *fc_usb = urb->context;
334 int i; 334 int i;
diff --git a/drivers/media/dvb/bt8xx/bt878.c b/drivers/media/dvb/bt8xx/bt878.c
index 755822ee6e9b..329a51c18562 100644
--- a/drivers/media/dvb/bt8xx/bt878.c
+++ b/drivers/media/dvb/bt8xx/bt878.c
@@ -266,7 +266,7 @@ EXPORT_SYMBOL(bt878_stop);
266/* Interrupt service routine */ 266/* Interrupt service routine */
267/*****************************/ 267/*****************************/
268 268
269static irqreturn_t bt878_irq(int irq, void *dev_id, struct pt_regs *regs) 269static irqreturn_t bt878_irq(int irq, void *dev_id)
270{ 270{
271 u32 stat, astat, mask; 271 u32 stat, astat, mask;
272 int count; 272 int count;
diff --git a/drivers/media/dvb/cinergyT2/cinergyT2.c b/drivers/media/dvb/cinergyT2/cinergyT2.c
index 410fa6d620ff..ff7d4f56ced3 100644
--- a/drivers/media/dvb/cinergyT2/cinergyT2.c
+++ b/drivers/media/dvb/cinergyT2/cinergyT2.c
@@ -238,7 +238,7 @@ static void cinergyt2_sleep (struct cinergyt2 *cinergyt2, int sleep)
238 cinergyt2->sleeping = sleep; 238 cinergyt2->sleeping = sleep;
239} 239}
240 240
241static void cinergyt2_stream_irq (struct urb *urb, struct pt_regs *regs); 241static void cinergyt2_stream_irq (struct urb *urb);
242 242
243static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb *urb) 243static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb *urb)
244{ 244{
@@ -258,7 +258,7 @@ static int cinergyt2_submit_stream_urb (struct cinergyt2 *cinergyt2, struct urb
258 return err; 258 return err;
259} 259}
260 260
261static void cinergyt2_stream_irq (struct urb *urb, struct pt_regs *regs) 261static void cinergyt2_stream_irq (struct urb *urb)
262{ 262{
263 struct cinergyt2 *cinergyt2 = urb->context; 263 struct cinergyt2 *cinergyt2 = urb->context;
264 264
diff --git a/drivers/media/dvb/dvb-usb/usb-urb.c b/drivers/media/dvb/dvb-usb/usb-urb.c
index 572b2d9aa66a..78035ee824ca 100644
--- a/drivers/media/dvb/dvb-usb/usb-urb.c
+++ b/drivers/media/dvb/dvb-usb/usb-urb.c
@@ -11,7 +11,7 @@
11#include "dvb-usb-common.h" 11#include "dvb-usb-common.h"
12 12
13/* URB stuff for streaming */ 13/* URB stuff for streaming */
14static void usb_urb_complete(struct urb *urb, struct pt_regs *ptregs) 14static void usb_urb_complete(struct urb *urb)
15{ 15{
16 struct usb_data_stream *stream = urb->context; 16 struct usb_data_stream *stream = urb->context;
17 int ptype = usb_pipetype(urb->pipe); 17 int ptype = usb_pipetype(urb->pipe);
diff --git a/drivers/media/dvb/pluto2/pluto2.c b/drivers/media/dvb/pluto2/pluto2.c
index 2310b2bfed4e..8e4ce101eb22 100644
--- a/drivers/media/dvb/pluto2/pluto2.c
+++ b/drivers/media/dvb/pluto2/pluto2.c
@@ -306,7 +306,7 @@ static void pluto_dma_end(struct pluto *pluto, unsigned int nbpackets)
306 TS_DMA_BYTES, PCI_DMA_FROMDEVICE); 306 TS_DMA_BYTES, PCI_DMA_FROMDEVICE);
307} 307}
308 308
309static irqreturn_t pluto_irq(int irq, void *dev_id, struct pt_regs *regs) 309static irqreturn_t pluto_irq(int irq, void *dev_id)
310{ 310{
311 struct pluto *pluto = dev_id; 311 struct pluto *pluto = dev_id;
312 u32 tscr; 312 u32 tscr;
diff --git a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
index 234199875f53..60820deb900b 100644
--- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
@@ -732,7 +732,7 @@ static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
732 } 732 }
733} 733}
734 734
735static void ttusb_iso_irq(struct urb *urb, struct pt_regs *ptregs) 735static void ttusb_iso_irq(struct urb *urb)
736{ 736{
737 struct ttusb *ttusb = urb->context; 737 struct ttusb *ttusb = urb->context;
738 738
diff --git a/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
index de077a757192..a1c9fa9919ea 100644
--- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c
+++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
@@ -203,7 +203,7 @@ static u16 rc_keys[] = {
203static void ttusb_dec_set_model(struct ttusb_dec *dec, 203static void ttusb_dec_set_model(struct ttusb_dec *dec,
204 enum ttusb_dec_model model); 204 enum ttusb_dec_model model);
205 205
206static void ttusb_dec_handle_irq( struct urb *urb, struct pt_regs *regs) 206static void ttusb_dec_handle_irq( struct urb *urb)
207{ 207{
208 struct ttusb_dec * dec = urb->context; 208 struct ttusb_dec * dec = urb->context;
209 char *buffer = dec->irq_buffer; 209 char *buffer = dec->irq_buffer;
@@ -755,7 +755,7 @@ static void ttusb_dec_process_urb_frame_list(unsigned long data)
755 } 755 }
756} 756}
757 757
758static void ttusb_dec_process_urb(struct urb *urb, struct pt_regs *ptregs) 758static void ttusb_dec_process_urb(struct urb *urb)
759{ 759{
760 struct ttusb_dec *dec = urb->context; 760 struct ttusb_dec *dec = urb->context;
761 761
diff --git a/drivers/media/video/arv.c b/drivers/media/video/arv.c
index 5c5e682a3004..4861799eb430 100644
--- a/drivers/media/video/arv.c
+++ b/drivers/media/video/arv.c
@@ -549,7 +549,7 @@ static int ar_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
549/* 549/*
550 * Interrupt handler 550 * Interrupt handler
551 */ 551 */
552static void ar_interrupt(int irq, void *dev, struct pt_regs *regs) 552static void ar_interrupt(int irq, void *dev)
553{ 553{
554 struct ar_device *ar = dev; 554 struct ar_device *ar = dev;
555 unsigned int line_count; 555 unsigned int line_count;
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 50dde82844ec..6e1ddad9f0c1 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -3753,7 +3753,7 @@ bttv_irq_switch_vbi(struct bttv *btv)
3753 spin_unlock(&btv->s_lock); 3753 spin_unlock(&btv->s_lock);
3754} 3754}
3755 3755
3756static irqreturn_t bttv_irq(int irq, void *dev_id, struct pt_regs * regs) 3756static irqreturn_t bttv_irq(int irq, void *dev_id)
3757{ 3757{
3758 u32 stat,astat; 3758 u32 stat,astat;
3759 u32 dstat; 3759 u32 dstat;
diff --git a/drivers/media/video/cpia2/cpia2_usb.c b/drivers/media/video/cpia2/cpia2_usb.c
index f4da02941493..28dc6a1a1e43 100644
--- a/drivers/media/video/cpia2/cpia2_usb.c
+++ b/drivers/media/video/cpia2/cpia2_usb.c
@@ -49,7 +49,7 @@ static int frame_sizes[] = {
49#define FRAME_SIZE_PER_DESC frame_sizes[cam->cur_alt] 49#define FRAME_SIZE_PER_DESC frame_sizes[cam->cur_alt]
50 50
51static void process_frame(struct camera_data *cam); 51static void process_frame(struct camera_data *cam);
52static void cpia2_usb_complete(struct urb *urb, struct pt_regs *); 52static void cpia2_usb_complete(struct urb *urb);
53static int cpia2_usb_probe(struct usb_interface *intf, 53static int cpia2_usb_probe(struct usb_interface *intf,
54 const struct usb_device_id *id); 54 const struct usb_device_id *id);
55static void cpia2_usb_disconnect(struct usb_interface *intf); 55static void cpia2_usb_disconnect(struct usb_interface *intf);
@@ -199,7 +199,7 @@ static void add_COM(struct camera_data *cam)
199 * 199 *
200 * callback when incoming packet is received 200 * callback when incoming packet is received
201 *****************************************************************************/ 201 *****************************************************************************/
202static void cpia2_usb_complete(struct urb *urb, struct pt_regs *regs) 202static void cpia2_usb_complete(struct urb *urb)
203{ 203{
204 int i; 204 int i;
205 unsigned char *cdata; 205 unsigned char *cdata;
diff --git a/drivers/media/video/cpia_usb.c b/drivers/media/video/cpia_usb.c
index 2ee34a3b9280..9da4726eb9b9 100644
--- a/drivers/media/video/cpia_usb.c
+++ b/drivers/media/video/cpia_usb.c
@@ -109,7 +109,7 @@ static struct cpia_camera_ops cpia_usb_ops = {
109static LIST_HEAD(cam_list); 109static LIST_HEAD(cam_list);
110static spinlock_t cam_list_lock_usb; 110static spinlock_t cam_list_lock_usb;
111 111
112static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs) 112static void cpia_usb_complete(struct urb *urb)
113{ 113{
114 int i; 114 int i;
115 char *cdata; 115 char *cdata;
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
index f0340662e078..e4355fdc3b6d 100644
--- a/drivers/media/video/cx88/cx88-alsa.c
+++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -262,7 +262,7 @@ static void cx8801_aud_irq(snd_cx88_card_t *chip)
262/* 262/*
263 * BOARD Specific: Handles IRQ calls 263 * BOARD Specific: Handles IRQ calls
264 */ 264 */
265static irqreturn_t cx8801_irq(int irq, void *dev_id, struct pt_regs *regs) 265static irqreturn_t cx8801_irq(int irq, void *dev_id)
266{ 266{
267 snd_cx88_card_t *chip = dev_id; 267 snd_cx88_card_t *chip = dev_id;
268 struct cx88_core *core = chip->core; 268 struct cx88_core *core = chip->core;
diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c
index d6d980774c21..6b23a4e6f66d 100644
--- a/drivers/media/video/cx88/cx88-mpeg.c
+++ b/drivers/media/video/cx88/cx88-mpeg.c
@@ -376,7 +376,7 @@ static void cx8802_mpeg_irq(struct cx8802_dev *dev)
376 376
377#define MAX_IRQ_LOOP 10 377#define MAX_IRQ_LOOP 10
378 378
379static irqreturn_t cx8802_irq(int irq, void *dev_id, struct pt_regs *regs) 379static irqreturn_t cx8802_irq(int irq, void *dev_id)
380{ 380{
381 struct cx8802_dev *dev = dev_id; 381 struct cx8802_dev *dev = dev_id;
382 struct cx88_core *core = dev->core; 382 struct cx88_core *core = dev->core;
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
index cb0c0eea20f9..90e298d074d1 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -1744,7 +1744,7 @@ static void cx8800_vid_irq(struct cx8800_dev *dev)
1744 } 1744 }
1745} 1745}
1746 1746
1747static irqreturn_t cx8800_irq(int irq, void *dev_id, struct pt_regs *regs) 1747static irqreturn_t cx8800_irq(int irq, void *dev_id)
1748{ 1748{
1749 struct cx8800_dev *dev = dev_id; 1749 struct cx8800_dev *dev = dev_id;
1750 struct cx88_core *core = dev->core; 1750 struct cx88_core *core = dev->core;
diff --git a/drivers/media/video/dabusb.c b/drivers/media/video/dabusb.c
index b9ba95f5e026..b1012e92ee04 100644
--- a/drivers/media/video/dabusb.c
+++ b/drivers/media/video/dabusb.c
@@ -166,7 +166,7 @@ static int dabusb_free_buffers (pdabusb_t s)
166 return 0; 166 return 0;
167} 167}
168/*-------------------------------------------------------------------*/ 168/*-------------------------------------------------------------------*/
169static void dabusb_iso_complete (struct urb *purb, struct pt_regs *regs) 169static void dabusb_iso_complete (struct urb *purb)
170{ 170{
171 pbuff_t b = purb->context; 171 pbuff_t b = purb->context;
172 pdabusb_t s = b->s; 172 pdabusb_t s = b->s;
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c
index 4350cc75b025..255a47dfb84f 100644
--- a/drivers/media/video/em28xx/em28xx-core.c
+++ b/drivers/media/video/em28xx/em28xx-core.c
@@ -382,7 +382,7 @@ int em28xx_resolution_set(struct em28xx *dev)
382/******************* isoc transfer handling ****************************/ 382/******************* isoc transfer handling ****************************/
383 383
384#ifdef ENABLE_DEBUG_ISOC_FRAMES 384#ifdef ENABLE_DEBUG_ISOC_FRAMES
385static void em28xx_isoc_dump(struct urb *urb, struct pt_regs *regs) 385static void em28xx_isoc_dump(struct urb *urb)
386{ 386{
387 int len = 0; 387 int len = 0;
388 int ntrans = 0; 388 int ntrans = 0;
@@ -534,7 +534,7 @@ static inline void em28xx_isoc_video_copy(struct em28xx *dev,
534 * em28xx_isoIrq() 534 * em28xx_isoIrq()
535 * handles the incoming isoc urbs and fills the frames from our inqueue 535 * handles the incoming isoc urbs and fills the frames from our inqueue
536 */ 536 */
537static void em28xx_isocIrq(struct urb *urb, struct pt_regs *regs) 537static void em28xx_isocIrq(struct urb *urb)
538{ 538{
539 struct em28xx *dev = urb->context; 539 struct em28xx *dev = urb->context;
540 int i, status; 540 int i, status;
@@ -545,7 +545,7 @@ static void em28xx_isocIrq(struct urb *urb, struct pt_regs *regs)
545 return; 545 return;
546#ifdef ENABLE_DEBUG_ISOC_FRAMES 546#ifdef ENABLE_DEBUG_ISOC_FRAMES
547 if (isoc_debug>1) 547 if (isoc_debug>1)
548 em28xx_isoc_dump(urb, regs); 548 em28xx_isoc_dump(urb);
549#endif 549#endif
550 550
551 if (urb->status == -ENOENT) 551 if (urb->status == -ENOENT)
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 20df657b70c8..2a461dde480c 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -174,7 +174,7 @@ static void em28xx_config_i2c(struct em28xx *dev)
174 174
175 route.input = INPUT(dev->ctl_input)->vmux; 175 route.input = INPUT(dev->ctl_input)->vmux;
176 route.output = 0; 176 route.output = 0;
177 em28xx_i2c_call_clients(dev, VIDIOC_INT_RESET, 0); 177 em28xx_i2c_call_clients(dev, VIDIOC_INT_RESET, NULL);
178 em28xx_i2c_call_clients(dev, VIDIOC_INT_S_VIDEO_ROUTING, &route); 178 em28xx_i2c_call_clients(dev, VIDIOC_INT_S_VIDEO_ROUTING, &route);
179 em28xx_i2c_call_clients(dev, VIDIOC_STREAMON, NULL); 179 em28xx_i2c_call_clients(dev, VIDIOC_STREAMON, NULL);
180 180
diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c
index 8992b6e62b9f..bc544cc7ccb8 100644
--- a/drivers/media/video/et61x251/et61x251_core.c
+++ b/drivers/media/video/et61x251/et61x251_core.c
@@ -398,7 +398,7 @@ int et61x251_i2c_write(struct et61x251_device* cam, u8 address, u8 value)
398 398
399/*****************************************************************************/ 399/*****************************************************************************/
400 400
401static void et61x251_urb_complete(struct urb *urb, struct pt_regs* regs) 401static void et61x251_urb_complete(struct urb *urb)
402{ 402{
403 struct et61x251_device* cam = urb->context; 403 struct et61x251_device* cam = urb->context;
404 struct et61x251_frame_t** f; 404 struct et61x251_frame_t** f;
diff --git a/drivers/media/video/meye.c b/drivers/media/video/meye.c
index e278753f8f25..b083338823df 100644
--- a/drivers/media/video/meye.c
+++ b/drivers/media/video/meye.c
@@ -786,7 +786,7 @@ static void mchip_cont_compression_start(void)
786/* Interrupt handling */ 786/* Interrupt handling */
787/****************************************************************************/ 787/****************************************************************************/
788 788
789static irqreturn_t meye_irq(int irq, void *dev_id, struct pt_regs *regs) 789static irqreturn_t meye_irq(int irq, void *dev_id)
790{ 790{
791 u32 v; 791 u32 v;
792 int reqnr; 792 int reqnr;
diff --git a/drivers/media/video/ov511.c b/drivers/media/video/ov511.c
index 5d8cd283fcd8..ce4886f1528d 100644
--- a/drivers/media/video/ov511.c
+++ b/drivers/media/video/ov511.c
@@ -3503,7 +3503,7 @@ check_middle:
3503} 3503}
3504 3504
3505static void 3505static void
3506ov51x_isoc_irq(struct urb *urb, struct pt_regs *regs) 3506ov51x_isoc_irq(struct urb *urb)
3507{ 3507{
3508 int i; 3508 int i;
3509 struct usb_ov511 *ov; 3509 struct usb_ov511 *ov;
diff --git a/drivers/media/video/planb.c b/drivers/media/video/planb.c
index 3484e36b6801..368d6e219fa4 100644
--- a/drivers/media/video/planb.c
+++ b/drivers/media/video/planb.c
@@ -91,7 +91,7 @@ static void planb_close(struct video_device *);
91static int planb_ioctl(struct video_device *, unsigned int, void *); 91static int planb_ioctl(struct video_device *, unsigned int, void *);
92static int planb_init_done(struct video_device *); 92static int planb_init_done(struct video_device *);
93static int planb_mmap(struct video_device *, const char *, unsigned long); 93static int planb_mmap(struct video_device *, const char *, unsigned long);
94static void planb_irq(int, void *, struct pt_regs *); 94static void planb_irq(int, void *);
95static void release_planb(void); 95static void release_planb(void);
96int init_planbs(struct video_init *); 96int init_planbs(struct video_init *);
97 97
@@ -1316,7 +1316,7 @@ cmd_tab_data_end:
1316 return c1; 1316 return c1;
1317} 1317}
1318 1318
1319static void planb_irq(int irq, void *dev_id, struct pt_regs * regs) 1319static void planb_irq(int irq, void *dev_id)
1320{ 1320{
1321 unsigned int stat, astat; 1321 unsigned int stat, astat;
1322 struct planb *pb = (struct planb *)dev_id; 1322 struct planb *pb = (struct planb *)dev_id;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 3d8cd0daf6a9..f920e0ccacd3 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -2552,7 +2552,7 @@ void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw,int v)
2552} 2552}
2553 2553
2554 2554
2555static void pvr2_ctl_write_complete(struct urb *urb, struct pt_regs *regs) 2555static void pvr2_ctl_write_complete(struct urb *urb)
2556{ 2556{
2557 struct pvr2_hdw *hdw = urb->context; 2557 struct pvr2_hdw *hdw = urb->context;
2558 hdw->ctl_write_pend_flag = 0; 2558 hdw->ctl_write_pend_flag = 0;
@@ -2561,7 +2561,7 @@ static void pvr2_ctl_write_complete(struct urb *urb, struct pt_regs *regs)
2561} 2561}
2562 2562
2563 2563
2564static void pvr2_ctl_read_complete(struct urb *urb, struct pt_regs *regs) 2564static void pvr2_ctl_read_complete(struct urb *urb)
2565{ 2565{
2566 struct pvr2_hdw *hdw = urb->context; 2566 struct pvr2_hdw *hdw = urb->context;
2567 hdw->ctl_read_pend_flag = 0; 2567 hdw->ctl_read_pend_flag = 0;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-io.c b/drivers/media/video/pvrusb2/pvrusb2-io.c
index 1e393762546c..70aa63eba0cb 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-io.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-io.c
@@ -429,7 +429,7 @@ static void pvr2_stream_done(struct pvr2_stream *sp)
429 } while (0); mutex_unlock(&sp->mutex); 429 } while (0); mutex_unlock(&sp->mutex);
430} 430}
431 431
432static void buffer_complete(struct urb *urb, struct pt_regs *regs) 432static void buffer_complete(struct urb *urb)
433{ 433{
434 struct pvr2_buffer *bp = urb->context; 434 struct pvr2_buffer *bp = urb->context;
435 struct pvr2_stream *sp; 435 struct pvr2_stream *sp;
diff --git a/drivers/media/video/pwc/pwc-if.c b/drivers/media/video/pwc/pwc-if.c
index 53c4b5790d5c..c77b85cf3d80 100644
--- a/drivers/media/video/pwc/pwc-if.c
+++ b/drivers/media/video/pwc/pwc-if.c
@@ -682,7 +682,7 @@ static int pwc_rcv_short_packet(struct pwc_device *pdev, const struct pwc_frame_
682/* This gets called for the Isochronous pipe (video). This is done in 682/* This gets called for the Isochronous pipe (video). This is done in
683 * interrupt time, so it has to be fast, not crash, and not stall. Neat. 683 * interrupt time, so it has to be fast, not crash, and not stall. Neat.
684 */ 684 */
685static void pwc_isoc_handler(struct urb *urb, struct pt_regs *regs) 685static void pwc_isoc_handler(struct urb *urb)
686{ 686{
687 struct pwc_device *pdev; 687 struct pwc_device *pdev;
688 int i, fst, flen; 688 int i, fst, flen;
diff --git a/drivers/media/video/saa7134/saa7134-alsa.c b/drivers/media/video/saa7134/saa7134-alsa.c
index a39e0136ce3b..4abf5c03a740 100644
--- a/drivers/media/video/saa7134/saa7134-alsa.c
+++ b/drivers/media/video/saa7134/saa7134-alsa.c
@@ -212,7 +212,7 @@ static void saa7134_irq_alsa_done(struct saa7134_dev *dev,
212 * 212 *
213 */ 213 */
214 214
215static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id, struct pt_regs *regs) 215static irqreturn_t saa7134_alsa_irq(int irq, void *dev_id)
216{ 216{
217 struct saa7134_dmasound *dmasound = dev_id; 217 struct saa7134_dmasound *dmasound = dev_id;
218 struct saa7134_dev *dev = dmasound->priv_data; 218 struct saa7134_dev *dev = dmasound->priv_data;
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index 09aa62f61af7..5c9e63dfbea6 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -495,7 +495,7 @@ static void print_irqstatus(struct saa7134_dev *dev, int loop,
495 printk("\n"); 495 printk("\n");
496} 496}
497 497
498static irqreturn_t saa7134_irq(int irq, void *dev_id, struct pt_regs *regs) 498static irqreturn_t saa7134_irq(int irq, void *dev_id)
499{ 499{
500 struct saa7134_dev *dev = (struct saa7134_dev*) dev_id; 500 struct saa7134_dev *dev = (struct saa7134_dev*) dev_id;
501 unsigned long report,status; 501 unsigned long report,status;
diff --git a/drivers/media/video/saa7134/saa7134-oss.c b/drivers/media/video/saa7134/saa7134-oss.c
index 2e3ba5f31453..bfcb860d14cc 100644
--- a/drivers/media/video/saa7134/saa7134-oss.c
+++ b/drivers/media/video/saa7134/saa7134-oss.c
@@ -814,7 +814,7 @@ struct file_operations saa7134_mixer_fops = {
814 814
815/* ------------------------------------------------------------------ */ 815/* ------------------------------------------------------------------ */
816 816
817static irqreturn_t saa7134_oss_irq(int irq, void *dev_id, struct pt_regs *regs) 817static irqreturn_t saa7134_oss_irq(int irq, void *dev_id)
818{ 818{
819 struct saa7134_dmasound *dmasound = dev_id; 819 struct saa7134_dmasound *dmasound = dev_id;
820 struct saa7134_dev *dev = dmasound->priv_data; 820 struct saa7134_dev *dev = dmasound->priv_data;
diff --git a/drivers/media/video/se401.c b/drivers/media/video/se401.c
index 67987baee77a..7aeec574d7ce 100644
--- a/drivers/media/video/se401.c
+++ b/drivers/media/video/se401.c
@@ -282,7 +282,7 @@ static void se401_auto_resetlevel(struct usb_se401 *se401)
282} 282}
283 283
284/* irq handler for snapshot button */ 284/* irq handler for snapshot button */
285static void se401_button_irq(struct urb *urb, struct pt_regs *regs) 285static void se401_button_irq(struct urb *urb)
286{ 286{
287 struct usb_se401 *se401 = urb->context; 287 struct usb_se401 *se401 = urb->context;
288 int status; 288 int status;
@@ -318,7 +318,7 @@ exit:
318 __FUNCTION__, status); 318 __FUNCTION__, status);
319} 319}
320 320
321static void se401_video_irq(struct urb *urb, struct pt_regs *regs) 321static void se401_video_irq(struct urb *urb)
322{ 322{
323 struct usb_se401 *se401 = urb->context; 323 struct usb_se401 *se401 = urb->context;
324 int length = urb->actual_length; 324 int length = urb->actual_length;
diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c
index 48d138a7c723..3e0ff8a78468 100644
--- a/drivers/media/video/sn9c102/sn9c102_core.c
+++ b/drivers/media/video/sn9c102/sn9c102_core.c
@@ -518,7 +518,7 @@ sn9c102_find_eof_header(struct sn9c102_device* cam, void* mem, size_t len)
518} 518}
519 519
520 520
521static void sn9c102_urb_complete(struct urb *urb, struct pt_regs* regs) 521static void sn9c102_urb_complete(struct urb *urb)
522{ 522{
523 struct sn9c102_device* cam = urb->context; 523 struct sn9c102_device* cam = urb->context;
524 struct sn9c102_frame_t** f; 524 struct sn9c102_frame_t** f;
diff --git a/drivers/media/video/stradis.c b/drivers/media/video/stradis.c
index 5686547ba76a..525d81288d55 100644
--- a/drivers/media/video/stradis.c
+++ b/drivers/media/video/stradis.c
@@ -406,7 +406,7 @@ static void send_osd_data(struct saa7146 *saa)
406 } 406 }
407} 407}
408 408
409static irqreturn_t saa7146_irq(int irq, void *dev_id, struct pt_regs *regs) 409static irqreturn_t saa7146_irq(int irq, void *dev_id)
410{ 410{
411 struct saa7146 *saa = dev_id; 411 struct saa7146 *saa = dev_id;
412 u32 stat, astat; 412 u32 stat, astat;
diff --git a/drivers/media/video/stv680.c b/drivers/media/video/stv680.c
index 2ba2991a214f..87e11300181d 100644
--- a/drivers/media/video/stv680.c
+++ b/drivers/media/video/stv680.c
@@ -582,7 +582,7 @@ static int stv680_set_pict (struct usb_stv *stv680, struct video_picture *p)
582 return 0; 582 return 0;
583} 583}
584 584
585static void stv680_video_irq (struct urb *urb, struct pt_regs *regs) 585static void stv680_video_irq (struct urb *urb)
586{ 586{
587 struct usb_stv *stv680 = urb->context; 587 struct usb_stv *stv680 = urb->context;
588 int length = urb->actual_length; 588 int length = urb->actual_length;
diff --git a/drivers/media/video/usbvideo/konicawc.c b/drivers/media/video/usbvideo/konicawc.c
index 4eee8be88314..abe214619092 100644
--- a/drivers/media/video/usbvideo/konicawc.c
+++ b/drivers/media/video/usbvideo/konicawc.c
@@ -387,7 +387,7 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb)
387} 387}
388 388
389 389
390static void konicawc_isoc_irq(struct urb *urb, struct pt_regs *regs) 390static void konicawc_isoc_irq(struct urb *urb)
391{ 391{
392 struct uvd *uvd = urb->context; 392 struct uvd *uvd = urb->context;
393 struct konicawc *cam = (struct konicawc *)uvd->user_data; 393 struct konicawc *cam = (struct konicawc *)uvd->user_data;
diff --git a/drivers/media/video/usbvideo/quickcam_messenger.c b/drivers/media/video/usbvideo/quickcam_messenger.c
index 56e01b622417..9a26b9484aae 100644
--- a/drivers/media/video/usbvideo/quickcam_messenger.c
+++ b/drivers/media/video/usbvideo/quickcam_messenger.c
@@ -125,7 +125,7 @@ static void qcm_report_buttonstat(struct qcm *cam)
125 } 125 }
126} 126}
127 127
128static void qcm_int_irq(struct urb *urb, struct pt_regs *regs) 128static void qcm_int_irq(struct urb *urb)
129{ 129{
130 int ret; 130 int ret;
131 struct uvd *uvd = urb->context; 131 struct uvd *uvd = urb->context;
@@ -606,7 +606,7 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb)
606 err("usb_submit_urb error (%d)", ret); 606 err("usb_submit_urb error (%d)", ret);
607} 607}
608 608
609static void qcm_isoc_irq(struct urb *urb, struct pt_regs *regs) 609static void qcm_isoc_irq(struct urb *urb)
610{ 610{
611 int len; 611 int len;
612 struct uvd *uvd = urb->context; 612 struct uvd *uvd = urb->context;
diff --git a/drivers/media/video/usbvideo/usbvideo.c b/drivers/media/video/usbvideo/usbvideo.c
index 13b37c8c0d56..d8b88024bc2f 100644
--- a/drivers/media/video/usbvideo/usbvideo.c
+++ b/drivers/media/video/usbvideo/usbvideo.c
@@ -1680,7 +1680,7 @@ static int usbvideo_CompressIsochronous(struct uvd *uvd, struct urb *urb)
1680 return totlen; 1680 return totlen;
1681} 1681}
1682 1682
1683static void usbvideo_IsocIrq(struct urb *urb, struct pt_regs *regs) 1683static void usbvideo_IsocIrq(struct urb *urb)
1684{ 1684{
1685 int i, ret, len; 1685 int i, ret, len;
1686 struct uvd *uvd = urb->context; 1686 struct uvd *uvd = urb->context;
diff --git a/drivers/media/video/vino.c b/drivers/media/video/vino.c
index d1e04f7c530b..6b6dff4d236a 100644
--- a/drivers/media/video/vino.c
+++ b/drivers/media/video/vino.c
@@ -2325,7 +2325,7 @@ static void vino_capture_tasklet(unsigned long channel) {
2325 } 2325 }
2326} 2326}
2327 2327
2328static irqreturn_t vino_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2328static irqreturn_t vino_interrupt(int irq, void *dev_id)
2329{ 2329{
2330 u32 ctrl, intr; 2330 u32 ctrl, intr;
2331 unsigned int fc_a, fc_b; 2331 unsigned int fc_a, fc_b;
diff --git a/drivers/media/video/w9968cf.c b/drivers/media/video/w9968cf.c
index 2912326a5aef..ddce2fb83424 100644
--- a/drivers/media/video/w9968cf.c
+++ b/drivers/media/video/w9968cf.c
@@ -417,7 +417,7 @@ static int w9968cf_write_fsb(struct w9968cf_device*, u16* data);
417static int w9968cf_write_sb(struct w9968cf_device*, u16 value); 417static int w9968cf_write_sb(struct w9968cf_device*, u16 value);
418static int w9968cf_read_sb(struct w9968cf_device*); 418static int w9968cf_read_sb(struct w9968cf_device*);
419static int w9968cf_upload_quantizationtables(struct w9968cf_device*); 419static int w9968cf_upload_quantizationtables(struct w9968cf_device*);
420static void w9968cf_urb_complete(struct urb *urb, struct pt_regs *regs); 420static void w9968cf_urb_complete(struct urb *urb);
421 421
422/* Low-level I2C (SMBus) I/O */ 422/* Low-level I2C (SMBus) I/O */
423static int w9968cf_smbus_start(struct w9968cf_device*); 423static int w9968cf_smbus_start(struct w9968cf_device*);
@@ -781,7 +781,7 @@ static int w9968cf_allocate_memory(struct w9968cf_device* cam)
781 If there are no requested frames in the FIFO list, packets are collected into 781 If there are no requested frames in the FIFO list, packets are collected into
782 a temporary buffer. 782 a temporary buffer.
783 --------------------------------------------------------------------------*/ 783 --------------------------------------------------------------------------*/
784static void w9968cf_urb_complete(struct urb *urb, struct pt_regs *regs) 784static void w9968cf_urb_complete(struct urb *urb)
785{ 785{
786 struct w9968cf_device* cam = (struct w9968cf_device*)urb->context; 786 struct w9968cf_device* cam = (struct w9968cf_device*)urb->context;
787 struct w9968cf_frame_t** f; 787 struct w9968cf_frame_t** f;
diff --git a/drivers/media/video/zc0301/zc0301_core.c b/drivers/media/video/zc0301/zc0301_core.c
index 1b2be2d2a3ec..5b5563424422 100644
--- a/drivers/media/video/zc0301/zc0301_core.c
+++ b/drivers/media/video/zc0301/zc0301_core.c
@@ -303,7 +303,7 @@ int zc0301_i2c_write(struct zc0301_device* cam, u16 address, u16 value)
303 303
304/*****************************************************************************/ 304/*****************************************************************************/
305 305
306static void zc0301_urb_complete(struct urb *urb, struct pt_regs* regs) 306static void zc0301_urb_complete(struct urb *urb)
307{ 307{
308 struct zc0301_device* cam = urb->context; 308 struct zc0301_device* cam = urb->context;
309 struct zc0301_frame_t** f; 309 struct zc0301_frame_t** f;
diff --git a/drivers/media/video/zoran_device.c b/drivers/media/video/zoran_device.c
index 3cbac2e8aed3..168e431d7c71 100644
--- a/drivers/media/video/zoran_device.c
+++ b/drivers/media/video/zoran_device.c
@@ -1408,15 +1408,14 @@ error_handler (struct zoran *zr,
1408 1408
1409irqreturn_t 1409irqreturn_t
1410zoran_irq (int irq, 1410zoran_irq (int irq,
1411 void *dev_id, 1411 void *dev_id)
1412 struct pt_regs *regs)
1413{ 1412{
1414 u32 stat, astat; 1413 u32 stat, astat;
1415 int count; 1414 int count;
1416 struct zoran *zr; 1415 struct zoran *zr;
1417 unsigned long flags; 1416 unsigned long flags;
1418 1417
1419 zr = (struct zoran *) dev_id; 1418 zr = dev_id;
1420 count = 0; 1419 count = 0;
1421 1420
1422 if (zr->testing) { 1421 if (zr->testing) {
diff --git a/drivers/media/video/zoran_device.h b/drivers/media/video/zoran_device.h
index f19705cbdb39..37fa86a34083 100644
--- a/drivers/media/video/zoran_device.h
+++ b/drivers/media/video/zoran_device.h
@@ -64,9 +64,7 @@ extern int wait_grab_pending(struct zoran *zr);
64/* interrupts */ 64/* interrupts */
65extern void print_interrupts(struct zoran *zr); 65extern void print_interrupts(struct zoran *zr);
66extern void clear_interrupt_counters(struct zoran *zr); 66extern void clear_interrupt_counters(struct zoran *zr);
67extern irqreturn_t zoran_irq(int irq, 67extern irqreturn_t zoran_irq(int irq, void *dev_id);
68 void *dev_id,
69 struct pt_regs *regs);
70 68
71/* JPEG codec access */ 69/* JPEG codec access */
72extern void jpeg_start(struct zoran *zr); 70extern void jpeg_start(struct zoran *zr);
diff --git a/drivers/media/video/zr36120.c b/drivers/media/video/zr36120.c
index b5ffe53c40d8..0cbf564388a6 100644
--- a/drivers/media/video/zr36120.c
+++ b/drivers/media/video/zr36120.c
@@ -335,13 +335,13 @@ DEBUG(printk(CARD_DEBUG "turning off\n",CARD));
335} 335}
336 336
337static 337static
338void zoran_irq(int irq, void *dev_id, struct pt_regs * regs) 338void zoran_irq(int irq, void *dev_id)
339{ 339{
340 u32 stat,estat; 340 u32 stat,estat;
341 int count = 0; 341 int count = 0;
342 struct zoran *ztv = dev_id; 342 struct zoran *ztv = dev_id;
343 343
344 UNUSED(irq); UNUSED(regs); 344 UNUSED(irq);
345 for (;;) { 345 for (;;) {
346 /* get/clear interrupt status bits */ 346 /* get/clear interrupt status bits */
347 stat=zrread(ZORAN_ISR); 347 stat=zrread(ZORAN_ISR);
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 29d0635cce1d..e5c72719debc 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -122,7 +122,7 @@ static DECLARE_WAIT_QUEUE_HEAD(mpt_waitq);
122/* 122/*
123 * Forward protos... 123 * Forward protos...
124 */ 124 */
125static irqreturn_t mpt_interrupt(int irq, void *bus_id, struct pt_regs *r); 125static irqreturn_t mpt_interrupt(int irq, void *bus_id);
126static int mpt_base_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply); 126static int mpt_base_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply);
127static int mpt_handshake_req_reply_wait(MPT_ADAPTER *ioc, int reqBytes, 127static int mpt_handshake_req_reply_wait(MPT_ADAPTER *ioc, int reqBytes,
128 u32 *req, int replyBytes, u16 *u16reply, int maxwait, 128 u32 *req, int replyBytes, u16 *u16reply, int maxwait,
@@ -351,7 +351,6 @@ mpt_reply(MPT_ADAPTER *ioc, u32 pa)
351 * mpt_interrupt - MPT adapter (IOC) specific interrupt handler. 351 * mpt_interrupt - MPT adapter (IOC) specific interrupt handler.
352 * @irq: irq number (not used) 352 * @irq: irq number (not used)
353 * @bus_id: bus identifier cookie == pointer to MPT_ADAPTER structure 353 * @bus_id: bus identifier cookie == pointer to MPT_ADAPTER structure
354 * @r: pt_regs pointer (not used)
355 * 354 *
356 * This routine is registered via the request_irq() kernel API call, 355 * This routine is registered via the request_irq() kernel API call,
357 * and handles all interrupts generated from a specific MPT adapter 356 * and handles all interrupts generated from a specific MPT adapter
@@ -365,7 +364,7 @@ mpt_reply(MPT_ADAPTER *ioc, u32 pa)
365 * the protocol-specific details of the MPT request completion. 364 * the protocol-specific details of the MPT request completion.
366 */ 365 */
367static irqreturn_t 366static irqreturn_t
368mpt_interrupt(int irq, void *bus_id, struct pt_regs *r) 367mpt_interrupt(int irq, void *bus_id)
369{ 368{
370 MPT_ADAPTER *ioc = bus_id; 369 MPT_ADAPTER *ioc = bus_id;
371 u32 pa = CHIPREG_READ32_dmasync(&ioc->chip->ReplyFifo); 370 u32 pa = CHIPREG_READ32_dmasync(&ioc->chip->ReplyFifo);
diff --git a/drivers/message/i2o/pci.c b/drivers/message/i2o/pci.c
index dec41cc89937..62f1ac08332c 100644
--- a/drivers/message/i2o/pci.c
+++ b/drivers/message/i2o/pci.c
@@ -224,12 +224,11 @@ static int __devinit i2o_pci_alloc(struct i2o_controller *c)
224 * i2o_pci_interrupt - Interrupt handler for I2O controller 224 * i2o_pci_interrupt - Interrupt handler for I2O controller
225 * @irq: interrupt line 225 * @irq: interrupt line
226 * @dev_id: pointer to the I2O controller 226 * @dev_id: pointer to the I2O controller
227 * @r: pointer to registers
228 * 227 *
229 * Handle an interrupt from a PCI based I2O controller. This turns out 228 * Handle an interrupt from a PCI based I2O controller. This turns out
230 * to be rather simple. We keep the controller pointer in the cookie. 229 * to be rather simple. We keep the controller pointer in the cookie.
231 */ 230 */
232static irqreturn_t i2o_pci_interrupt(int irq, void *dev_id, struct pt_regs *r) 231static irqreturn_t i2o_pci_interrupt(int irq, void *dev_id)
233{ 232{
234 struct i2o_controller *c = dev_id; 233 struct i2o_controller *c = dev_id;
235 u32 m; 234 u32 m;
diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c
index 2bf32721eb53..149810a084f5 100644
--- a/drivers/mfd/ucb1x00-core.c
+++ b/drivers/mfd/ucb1x00-core.c
@@ -203,7 +203,7 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb)
203 * SIBCLK to talk to the chip. We leave the clock running until 203 * SIBCLK to talk to the chip. We leave the clock running until
204 * we have finished processing all interrupts from the chip. 204 * we have finished processing all interrupts from the chip.
205 */ 205 */
206static irqreturn_t ucb1x00_irq(int irqnr, void *devid, struct pt_regs *regs) 206static irqreturn_t ucb1x00_irq(int irqnr, void *devid)
207{ 207{
208 struct ucb1x00 *ucb = devid; 208 struct ucb1x00 *ucb = devid;
209 struct ucb1x00_irq *irq; 209 struct ucb1x00_irq *irq;
diff --git a/drivers/misc/ibmasm/ibmasm.h b/drivers/misc/ibmasm/ibmasm.h
index 634d538ccd14..48d5abebfc30 100644
--- a/drivers/misc/ibmasm/ibmasm.h
+++ b/drivers/misc/ibmasm/ibmasm.h
@@ -196,10 +196,10 @@ extern int ibmasm_send_os_state(struct service_processor *sp, int os_state);
196 196
197/* low level message processing */ 197/* low level message processing */
198extern int ibmasm_send_i2o_message(struct service_processor *sp); 198extern int ibmasm_send_i2o_message(struct service_processor *sp);
199extern irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id, struct pt_regs *regs); 199extern irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id);
200 200
201/* remote console */ 201/* remote console */
202extern void ibmasm_handle_mouse_interrupt(struct service_processor *sp, struct pt_regs *regs); 202extern void ibmasm_handle_mouse_interrupt(struct service_processor *sp);
203extern int ibmasm_init_remote_input_dev(struct service_processor *sp); 203extern int ibmasm_init_remote_input_dev(struct service_processor *sp);
204extern void ibmasm_free_remote_input_dev(struct service_processor *sp); 204extern void ibmasm_free_remote_input_dev(struct service_processor *sp);
205 205
diff --git a/drivers/misc/ibmasm/lowlevel.c b/drivers/misc/ibmasm/lowlevel.c
index 47949a2c7e94..a3c589b7cbfa 100644
--- a/drivers/misc/ibmasm/lowlevel.c
+++ b/drivers/misc/ibmasm/lowlevel.c
@@ -54,7 +54,7 @@ int ibmasm_send_i2o_message(struct service_processor *sp)
54 return 0; 54 return 0;
55} 55}
56 56
57irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id, struct pt_regs *regs) 57irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id)
58{ 58{
59 u32 mfa; 59 u32 mfa;
60 struct service_processor *sp = (struct service_processor *)dev_id; 60 struct service_processor *sp = (struct service_processor *)dev_id;
@@ -67,7 +67,7 @@ irqreturn_t ibmasm_interrupt_handler(int irq, void * dev_id, struct pt_regs *reg
67 dbg("respond to interrupt at %s\n", get_timestamp(tsbuf)); 67 dbg("respond to interrupt at %s\n", get_timestamp(tsbuf));
68 68
69 if (mouse_interrupt_pending(sp)) { 69 if (mouse_interrupt_pending(sp)) {
70 ibmasm_handle_mouse_interrupt(sp, regs); 70 ibmasm_handle_mouse_interrupt(sp);
71 clear_mouse_interrupt(sp); 71 clear_mouse_interrupt(sp);
72 } 72 }
73 73
diff --git a/drivers/misc/ibmasm/remote.c b/drivers/misc/ibmasm/remote.c
index 0f9e3aa34d07..a40fda6c402c 100644
--- a/drivers/misc/ibmasm/remote.c
+++ b/drivers/misc/ibmasm/remote.c
@@ -158,12 +158,10 @@ static void print_input(struct remote_input *input)
158 } 158 }
159} 159}
160 160
161static void send_mouse_event(struct input_dev *dev, struct pt_regs *regs, 161static void send_mouse_event(struct input_dev *dev, struct remote_input *input)
162 struct remote_input *input)
163{ 162{
164 unsigned char buttons = input->mouse_buttons; 163 unsigned char buttons = input->mouse_buttons;
165 164
166 input_regs(dev, regs);
167 input_report_abs(dev, ABS_X, input->data.mouse.x); 165 input_report_abs(dev, ABS_X, input->data.mouse.x);
168 input_report_abs(dev, ABS_Y, input->data.mouse.y); 166 input_report_abs(dev, ABS_Y, input->data.mouse.y);
169 input_report_key(dev, BTN_LEFT, buttons & REMOTE_BUTTON_LEFT); 167 input_report_key(dev, BTN_LEFT, buttons & REMOTE_BUTTON_LEFT);
@@ -172,7 +170,7 @@ static void send_mouse_event(struct input_dev *dev, struct pt_regs *regs,
172 input_sync(dev); 170 input_sync(dev);
173} 171}
174 172
175static void send_keyboard_event(struct input_dev *dev, struct pt_regs *regs, 173static void send_keyboard_event(struct input_dev *dev,
176 struct remote_input *input) 174 struct remote_input *input)
177{ 175{
178 unsigned int key; 176 unsigned int key;
@@ -182,13 +180,11 @@ static void send_keyboard_event(struct input_dev *dev, struct pt_regs *regs,
182 key = xlate_high[code & 0xff]; 180 key = xlate_high[code & 0xff];
183 else 181 else
184 key = xlate[code]; 182 key = xlate[code];
185 input_regs(dev, regs);
186 input_report_key(dev, key, (input->data.keyboard.key_down) ? 1 : 0); 183 input_report_key(dev, key, (input->data.keyboard.key_down) ? 1 : 0);
187 input_sync(dev); 184 input_sync(dev);
188} 185}
189 186
190void ibmasm_handle_mouse_interrupt(struct service_processor *sp, 187void ibmasm_handle_mouse_interrupt(struct service_processor *sp)
191 struct pt_regs *regs)
192{ 188{
193 unsigned long reader; 189 unsigned long reader;
194 unsigned long writer; 190 unsigned long writer;
@@ -203,9 +199,9 @@ void ibmasm_handle_mouse_interrupt(struct service_processor *sp,
203 199
204 print_input(&input); 200 print_input(&input);
205 if (input.type == INPUT_TYPE_MOUSE) { 201 if (input.type == INPUT_TYPE_MOUSE) {
206 send_mouse_event(sp->remote.mouse_dev, regs, &input); 202 send_mouse_event(sp->remote.mouse_dev, &input);
207 } else if (input.type == INPUT_TYPE_KEYBOARD) { 203 } else if (input.type == INPUT_TYPE_KEYBOARD) {
208 send_keyboard_event(sp->remote.keybd_dev, regs, &input); 204 send_keyboard_event(sp->remote.keybd_dev, &input);
209 } else 205 } else
210 break; 206 break;
211 207
diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c
index e689ee94ac3d..bbdba7b37e11 100644
--- a/drivers/misc/lkdtm.c
+++ b/drivers/misc/lkdtm.c
@@ -127,15 +127,14 @@ module_param(cpoint_count, int, 06444);
127MODULE_PARM_DESC(cpoint_count, "Crash Point Count, number of times the \ 127MODULE_PARM_DESC(cpoint_count, "Crash Point Count, number of times the \
128 crash point is to be hit to trigger action"); 128 crash point is to be hit to trigger action");
129 129
130unsigned int jp_do_irq(unsigned int irq, struct pt_regs *regs) 130unsigned int jp_do_irq(unsigned int irq)
131{ 131{
132 lkdtm_handler(); 132 lkdtm_handler();
133 jprobe_return(); 133 jprobe_return();
134 return 0; 134 return 0;
135} 135}
136 136
137irqreturn_t jp_handle_irq_event(unsigned int irq, struct pt_regs *regs, 137irqreturn_t jp_handle_irq_event(unsigned int irq, struct irqaction *action)
138 struct irqaction *action)
139{ 138{
140 lkdtm_handler(); 139 lkdtm_handler();
141 jprobe_return(); 140 jprobe_return();
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c
index a7ed30446185..1ba8754e9383 100644
--- a/drivers/misc/tifm_7xx1.c
+++ b/drivers/misc/tifm_7xx1.c
@@ -48,7 +48,7 @@ static void tifm_7xx1_remove_media(void *adapter)
48 printk(KERN_INFO DRIVER_NAME 48 printk(KERN_INFO DRIVER_NAME
49 ": demand removing card from socket %d\n", cnt); 49 ": demand removing card from socket %d\n", cnt);
50 sock = fm->sockets[cnt]; 50 sock = fm->sockets[cnt];
51 fm->sockets[cnt] = 0; 51 fm->sockets[cnt] = NULL;
52 fm->remove_mask &= ~(1 << cnt); 52 fm->remove_mask &= ~(1 << cnt);
53 53
54 writel(0x0e00, sock->addr + SOCK_CONTROL); 54 writel(0x0e00, sock->addr + SOCK_CONTROL);
@@ -67,7 +67,7 @@ static void tifm_7xx1_remove_media(void *adapter)
67 class_device_put(&fm->cdev); 67 class_device_put(&fm->cdev);
68} 68}
69 69
70static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id, struct pt_regs *regs) 70static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id)
71{ 71{
72 struct tifm_adapter *fm = dev_id; 72 struct tifm_adapter *fm = dev_id;
73 unsigned int irq_status; 73 unsigned int irq_status;
@@ -118,7 +118,7 @@ static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id, struct pt_regs *regs)
118 return IRQ_HANDLED; 118 return IRQ_HANDLED;
119} 119}
120 120
121static tifm_media_id tifm_7xx1_toggle_sock_power(char *sock_addr, int is_x2) 121static tifm_media_id tifm_7xx1_toggle_sock_power(char __iomem *sock_addr, int is_x2)
122{ 122{
123 unsigned int s_state; 123 unsigned int s_state;
124 int cnt; 124 int cnt;
@@ -163,7 +163,8 @@ static tifm_media_id tifm_7xx1_toggle_sock_power(char *sock_addr, int is_x2)
163 return (readl(sock_addr + SOCK_PRESENT_STATE) >> 4) & 7; 163 return (readl(sock_addr + SOCK_PRESENT_STATE) >> 4) & 7;
164} 164}
165 165
166inline static char *tifm_7xx1_sock_addr(char *base_addr, unsigned int sock_num) 166inline static char __iomem *
167tifm_7xx1_sock_addr(char __iomem *base_addr, unsigned int sock_num)
167{ 168{
168 return base_addr + ((sock_num + 1) << 10); 169 return base_addr + ((sock_num + 1) << 10);
169} 170}
@@ -176,7 +177,7 @@ static void tifm_7xx1_insert_media(void *adapter)
176 char *card_name = "xx"; 177 char *card_name = "xx";
177 int cnt, ok_to_register; 178 int cnt, ok_to_register;
178 unsigned int insert_mask; 179 unsigned int insert_mask;
179 struct tifm_dev *new_sock = 0; 180 struct tifm_dev *new_sock = NULL;
180 181
181 if (!class_device_get(&fm->cdev)) 182 if (!class_device_get(&fm->cdev))
182 return; 183 return;
@@ -230,7 +231,7 @@ static void tifm_7xx1_insert_media(void *adapter)
230 if (!ok_to_register || 231 if (!ok_to_register ||
231 device_register(&new_sock->dev)) { 232 device_register(&new_sock->dev)) {
232 spin_lock_irqsave(&fm->lock, flags); 233 spin_lock_irqsave(&fm->lock, flags);
233 fm->sockets[cnt] = 0; 234 fm->sockets[cnt] = NULL;
234 spin_unlock_irqrestore(&fm->lock, 235 spin_unlock_irqrestore(&fm->lock,
235 flags); 236 flags);
236 tifm_free_device(&new_sock->dev); 237 tifm_free_device(&new_sock->dev);
@@ -390,7 +391,7 @@ static void tifm_7xx1_remove(struct pci_dev *dev)
390 391
391 tifm_remove_adapter(fm); 392 tifm_remove_adapter(fm);
392 393
393 pci_set_drvdata(dev, 0); 394 pci_set_drvdata(dev, NULL);
394 395
395 iounmap(fm->addr); 396 iounmap(fm->addr);
396 pci_intx(dev, 0); 397 pci_intx(dev, 0);
diff --git a/drivers/misc/tifm_core.c b/drivers/misc/tifm_core.c
index cca5f8522469..ee326136d03b 100644
--- a/drivers/misc/tifm_core.c
+++ b/drivers/misc/tifm_core.c
@@ -157,7 +157,7 @@ struct tifm_dev *tifm_alloc_device(struct tifm_adapter *fm, unsigned int id)
157 dev->wq = create_singlethread_workqueue(dev->wq_name); 157 dev->wq = create_singlethread_workqueue(dev->wq_name);
158 if (!dev->wq) { 158 if (!dev->wq) {
159 kfree(dev); 159 kfree(dev);
160 return 0; 160 return NULL;
161 } 161 }
162 dev->dev.parent = fm->dev; 162 dev->dev.parent = fm->dev;
163 dev->dev.bus = &tifm_bus_type; 163 dev->dev.bus = &tifm_bus_type;
diff --git a/drivers/mmc/at91_mci.c b/drivers/mmc/at91_mci.c
index cb142a66098c..494b23fb0a01 100644
--- a/drivers/mmc/at91_mci.c
+++ b/drivers/mmc/at91_mci.c
@@ -661,7 +661,7 @@ static void at91_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
661/* 661/*
662 * Handle an interrupt 662 * Handle an interrupt
663 */ 663 */
664static irqreturn_t at91_mci_irq(int irq, void *devid, struct pt_regs *regs) 664static irqreturn_t at91_mci_irq(int irq, void *devid)
665{ 665{
666 struct at91mci_host *host = devid; 666 struct at91mci_host *host = devid;
667 int completed = 0; 667 int completed = 0;
@@ -754,7 +754,7 @@ static irqreturn_t at91_mci_irq(int irq, void *devid, struct pt_regs *regs)
754 return IRQ_HANDLED; 754 return IRQ_HANDLED;
755} 755}
756 756
757static irqreturn_t at91_mmc_det_irq(int irq, void *_host, struct pt_regs *regs) 757static irqreturn_t at91_mmc_det_irq(int irq, void *_host)
758{ 758{
759 struct at91mci_host *host = _host; 759 struct at91mci_host *host = _host;
760 int present = !at91_get_gpio_value(irq); 760 int present = !at91_get_gpio_value(irq);
diff --git a/drivers/mmc/au1xmmc.c b/drivers/mmc/au1xmmc.c
index 61268da13957..53ffcbb14a97 100644
--- a/drivers/mmc/au1xmmc.c
+++ b/drivers/mmc/au1xmmc.c
@@ -750,7 +750,7 @@ static void au1xmmc_dma_callback(int irq, void *dev_id)
750#define STATUS_DATA_IN (SD_STATUS_NE) 750#define STATUS_DATA_IN (SD_STATUS_NE)
751#define STATUS_DATA_OUT (SD_STATUS_TH) 751#define STATUS_DATA_OUT (SD_STATUS_TH)
752 752
753static irqreturn_t au1xmmc_irq(int irq, void *dev_id, struct pt_regs *regs) 753static irqreturn_t au1xmmc_irq(int irq, void *dev_id)
754{ 754{
755 755
756 u32 status; 756 u32 status;
diff --git a/drivers/mmc/imxmmc.c b/drivers/mmc/imxmmc.c
index 1b79dd271aae..659d4a822cc5 100644
--- a/drivers/mmc/imxmmc.c
+++ b/drivers/mmc/imxmmc.c
@@ -635,7 +635,7 @@ static int imxmci_cpu_driven_data(struct imxmci_host *host, unsigned int *pstat)
635 return trans_done; 635 return trans_done;
636} 636}
637 637
638static void imxmci_dma_irq(int dma, void *devid, struct pt_regs *regs) 638static void imxmci_dma_irq(int dma, void *devid)
639{ 639{
640 struct imxmci_host *host = devid; 640 struct imxmci_host *host = devid;
641 uint32_t stat = MMC_STATUS; 641 uint32_t stat = MMC_STATUS;
@@ -646,7 +646,7 @@ static void imxmci_dma_irq(int dma, void *devid, struct pt_regs *regs)
646 tasklet_schedule(&host->tasklet); 646 tasklet_schedule(&host->tasklet);
647} 647}
648 648
649static irqreturn_t imxmci_irq(int irq, void *devid, struct pt_regs *regs) 649static irqreturn_t imxmci_irq(int irq, void *devid)
650{ 650{
651 struct imxmci_host *host = devid; 651 struct imxmci_host *host = devid;
652 uint32_t stat = MMC_STATUS; 652 uint32_t stat = MMC_STATUS;
diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c
index c1293f1bda87..f9027c8db792 100644
--- a/drivers/mmc/mmc_block.c
+++ b/drivers/mmc/mmc_block.c
@@ -28,6 +28,7 @@
28#include <linux/kdev_t.h> 28#include <linux/kdev_t.h>
29#include <linux/blkdev.h> 29#include <linux/blkdev.h>
30#include <linux/mutex.h> 30#include <linux/mutex.h>
31#include <linux/scatterlist.h>
31 32
32#include <linux/mmc/card.h> 33#include <linux/mmc/card.h>
33#include <linux/mmc/host.h> 34#include <linux/mmc/host.h>
@@ -154,6 +155,71 @@ static int mmc_blk_prep_rq(struct mmc_queue *mq, struct request *req)
154 return stat; 155 return stat;
155} 156}
156 157
158static u32 mmc_sd_num_wr_blocks(struct mmc_card *card)
159{
160 int err;
161 u32 blocks;
162
163 struct mmc_request mrq;
164 struct mmc_command cmd;
165 struct mmc_data data;
166 unsigned int timeout_us;
167
168 struct scatterlist sg;
169
170 memset(&cmd, 0, sizeof(struct mmc_command));
171
172 cmd.opcode = MMC_APP_CMD;
173 cmd.arg = card->rca << 16;
174 cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
175
176 err = mmc_wait_for_cmd(card->host, &cmd, 0);
177 if ((err != MMC_ERR_NONE) || !(cmd.resp[0] & R1_APP_CMD))
178 return (u32)-1;
179
180 memset(&cmd, 0, sizeof(struct mmc_command));
181
182 cmd.opcode = SD_APP_SEND_NUM_WR_BLKS;
183 cmd.arg = 0;
184 cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC;
185
186 memset(&data, 0, sizeof(struct mmc_data));
187
188 data.timeout_ns = card->csd.tacc_ns * 100;
189 data.timeout_clks = card->csd.tacc_clks * 100;
190
191 timeout_us = data.timeout_ns / 1000;
192 timeout_us += data.timeout_clks * 1000 /
193 (card->host->ios.clock / 1000);
194
195 if (timeout_us > 100000) {
196 data.timeout_ns = 100000000;
197 data.timeout_clks = 0;
198 }
199
200 data.blksz = 4;
201 data.blocks = 1;
202 data.flags = MMC_DATA_READ;
203 data.sg = &sg;
204 data.sg_len = 1;
205
206 memset(&mrq, 0, sizeof(struct mmc_request));
207
208 mrq.cmd = &cmd;
209 mrq.data = &data;
210
211 sg_init_one(&sg, &blocks, 4);
212
213 mmc_wait_for_req(card->host, &mrq);
214
215 if (cmd.error != MMC_ERR_NONE || data.error != MMC_ERR_NONE)
216 return (u32)-1;
217
218 blocks = ntohl(blocks);
219
220 return blocks;
221}
222
157static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) 223static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
158{ 224{
159 struct mmc_blk_data *md = mq->data; 225 struct mmc_blk_data *md = mq->data;
@@ -184,10 +250,13 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
184 250
185 /* 251 /*
186 * If the host doesn't support multiple block writes, force 252 * If the host doesn't support multiple block writes, force
187 * block writes to single block. 253 * block writes to single block. SD cards are excepted from
254 * this rule as they support querying the number of
255 * successfully written sectors.
188 */ 256 */
189 if (rq_data_dir(req) != READ && 257 if (rq_data_dir(req) != READ &&
190 !(card->host->caps & MMC_CAP_MULTIWRITE)) 258 !(card->host->caps & MMC_CAP_MULTIWRITE) &&
259 !mmc_card_sd(card))
191 brq.data.blocks = 1; 260 brq.data.blocks = 1;
192 261
193 if (brq.data.blocks > 1) { 262 if (brq.data.blocks > 1) {
@@ -276,24 +345,41 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
276 return 1; 345 return 1;
277 346
278 cmd_err: 347 cmd_err:
279 mmc_card_release_host(card);
280
281 ret = 1; 348 ret = 1;
282 349
283 /* 350 /*
284 * For writes and where the host claims to support proper 351 * If this is an SD card and we're writing, we can first
285 * error reporting, we first ok the successful blocks. 352 * mark the known good sectors as ok.
353 *
354 * If the card is not SD, we can still ok written sectors
355 * if the controller can do proper error reporting.
286 * 356 *
287 * For reads we just fail the entire chunk as that should 357 * For reads we just fail the entire chunk as that should
288 * be safe in all cases. 358 * be safe in all cases.
289 */ 359 */
290 if (rq_data_dir(req) != READ && 360 if (rq_data_dir(req) != READ && mmc_card_sd(card)) {
291 (card->host->caps & MMC_CAP_MULTIWRITE)) { 361 u32 blocks;
362 unsigned int bytes;
363
364 blocks = mmc_sd_num_wr_blocks(card);
365 if (blocks != (u32)-1) {
366 if (card->csd.write_partial)
367 bytes = blocks << md->block_bits;
368 else
369 bytes = blocks << 9;
370 spin_lock_irq(&md->lock);
371 ret = end_that_request_chunk(req, 1, bytes);
372 spin_unlock_irq(&md->lock);
373 }
374 } else if (rq_data_dir(req) != READ &&
375 (card->host->caps & MMC_CAP_MULTIWRITE)) {
292 spin_lock_irq(&md->lock); 376 spin_lock_irq(&md->lock);
293 ret = end_that_request_chunk(req, 1, brq.data.bytes_xfered); 377 ret = end_that_request_chunk(req, 1, brq.data.bytes_xfered);
294 spin_unlock_irq(&md->lock); 378 spin_unlock_irq(&md->lock);
295 } 379 }
296 380
381 mmc_card_release_host(card);
382
297 spin_lock_irq(&md->lock); 383 spin_lock_irq(&md->lock);
298 while (ret) { 384 while (ret) {
299 ret = end_that_request_chunk(req, 0, 385 ret = end_that_request_chunk(req, 0,
diff --git a/drivers/mmc/mmci.c b/drivers/mmc/mmci.c
index 2b5a0cc9ea56..828503c4ee62 100644
--- a/drivers/mmc/mmci.c
+++ b/drivers/mmc/mmci.c
@@ -261,7 +261,7 @@ static int mmci_pio_write(struct mmci_host *host, char *buffer, unsigned int rem
261/* 261/*
262 * PIO data transfer IRQ handler. 262 * PIO data transfer IRQ handler.
263 */ 263 */
264static irqreturn_t mmci_pio_irq(int irq, void *dev_id, struct pt_regs *regs) 264static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
265{ 265{
266 struct mmci_host *host = dev_id; 266 struct mmci_host *host = dev_id;
267 void __iomem *base = host->base; 267 void __iomem *base = host->base;
@@ -347,7 +347,7 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id, struct pt_regs *regs)
347/* 347/*
348 * Handle completion of command and data transfers. 348 * Handle completion of command and data transfers.
349 */ 349 */
350static irqreturn_t mmci_irq(int irq, void *dev_id, struct pt_regs *regs) 350static irqreturn_t mmci_irq(int irq, void *dev_id)
351{ 351{
352 struct mmci_host *host = dev_id; 352 struct mmci_host *host = dev_id;
353 u32 status; 353 u32 status;
diff --git a/drivers/mmc/omap.c b/drivers/mmc/omap.c
index 52c9e52e6b78..762fa2895891 100644
--- a/drivers/mmc/omap.c
+++ b/drivers/mmc/omap.c
@@ -377,7 +377,7 @@ static inline void mmc_omap_report_irq(u16 status)
377 } 377 }
378} 378}
379 379
380static irqreturn_t mmc_omap_irq(int irq, void *dev_id, struct pt_regs *regs) 380static irqreturn_t mmc_omap_irq(int irq, void *dev_id)
381{ 381{
382 struct mmc_omap_host * host = (struct mmc_omap_host *)dev_id; 382 struct mmc_omap_host * host = (struct mmc_omap_host *)dev_id;
383 u16 status; 383 u16 status;
@@ -514,7 +514,7 @@ static irqreturn_t mmc_omap_irq(int irq, void *dev_id, struct pt_regs *regs)
514 return IRQ_HANDLED; 514 return IRQ_HANDLED;
515} 515}
516 516
517static irqreturn_t mmc_omap_switch_irq(int irq, void *dev_id, struct pt_regs *regs) 517static irqreturn_t mmc_omap_switch_irq(int irq, void *dev_id)
518{ 518{
519 struct mmc_omap_host *host = (struct mmc_omap_host *) dev_id; 519 struct mmc_omap_host *host = (struct mmc_omap_host *) dev_id;
520 520
diff --git a/drivers/mmc/pxamci.c b/drivers/mmc/pxamci.c
index ef350908478c..a526698b8c91 100644
--- a/drivers/mmc/pxamci.c
+++ b/drivers/mmc/pxamci.c
@@ -299,7 +299,7 @@ static int pxamci_data_done(struct pxamci_host *host, unsigned int stat)
299 return 1; 299 return 1;
300} 300}
301 301
302static irqreturn_t pxamci_irq(int irq, void *devid, struct pt_regs *regs) 302static irqreturn_t pxamci_irq(int irq, void *devid)
303{ 303{
304 struct pxamci_host *host = devid; 304 struct pxamci_host *host = devid;
305 unsigned int ireg; 305 unsigned int ireg;
@@ -399,13 +399,13 @@ static struct mmc_host_ops pxamci_ops = {
399 .set_ios = pxamci_set_ios, 399 .set_ios = pxamci_set_ios,
400}; 400};
401 401
402static void pxamci_dma_irq(int dma, void *devid, struct pt_regs *regs) 402static void pxamci_dma_irq(int dma, void *devid)
403{ 403{
404 printk(KERN_ERR "DMA%d: IRQ???\n", dma); 404 printk(KERN_ERR "DMA%d: IRQ???\n", dma);
405 DCSR(dma) = DCSR_STARTINTR|DCSR_ENDINTR|DCSR_BUSERR; 405 DCSR(dma) = DCSR_STARTINTR|DCSR_ENDINTR|DCSR_BUSERR;
406} 406}
407 407
408static irqreturn_t pxamci_detect_irq(int irq, void *devid, struct pt_regs *regs) 408static irqreturn_t pxamci_detect_irq(int irq, void *devid)
409{ 409{
410 struct pxamci_host *host = mmc_priv(devid); 410 struct pxamci_host *host = mmc_priv(devid);
411 411
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index 20711acb0120..9a7d39b7cdbf 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -985,7 +985,7 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
985 } 985 }
986} 986}
987 987
988static irqreturn_t sdhci_irq(int irq, void *dev_id, struct pt_regs *regs) 988static irqreturn_t sdhci_irq(int irq, void *dev_id)
989{ 989{
990 irqreturn_t result; 990 irqreturn_t result;
991 struct sdhci_host* host = dev_id; 991 struct sdhci_host* host = dev_id;
@@ -1329,7 +1329,7 @@ static int __devinit sdhci_probe_slot(struct pci_dev *pdev, int slot)
1329 tasklet_init(&host->finish_tasklet, 1329 tasklet_init(&host->finish_tasklet,
1330 sdhci_tasklet_finish, (unsigned long)host); 1330 sdhci_tasklet_finish, (unsigned long)host);
1331 1331
1332 setup_timer(&host->timer, sdhci_timeout_timer, (long)host); 1332 setup_timer(&host->timer, sdhci_timeout_timer, (unsigned long)host);
1333 1333
1334 ret = request_irq(host->irq, sdhci_irq, IRQF_SHARED, 1334 ret = request_irq(host->irq, sdhci_irq, IRQF_SHARED,
1335 host->slot_descr, host); 1335 host->slot_descr, host);
diff --git a/drivers/mmc/tifm_sd.c b/drivers/mmc/tifm_sd.c
index 6d23dc08d169..2bacff60913d 100644
--- a/drivers/mmc/tifm_sd.c
+++ b/drivers/mmc/tifm_sd.c
@@ -501,13 +501,13 @@ static void tifm_sd_end_cmd(void *data)
501 struct tifm_dev *sock = host->dev; 501 struct tifm_dev *sock = host->dev;
502 struct mmc_host *mmc = tifm_get_drvdata(sock); 502 struct mmc_host *mmc = tifm_get_drvdata(sock);
503 struct mmc_request *mrq; 503 struct mmc_request *mrq;
504 struct mmc_data *r_data = 0; 504 struct mmc_data *r_data = NULL;
505 unsigned long flags; 505 unsigned long flags;
506 506
507 spin_lock_irqsave(&sock->lock, flags); 507 spin_lock_irqsave(&sock->lock, flags);
508 508
509 mrq = host->req; 509 mrq = host->req;
510 host->req = 0; 510 host->req = NULL;
511 host->state = IDLE; 511 host->state = IDLE;
512 512
513 if (!mrq) { 513 if (!mrq) {
@@ -546,7 +546,7 @@ static void tifm_sd_request_nodma(struct mmc_host *mmc, struct mmc_request *mrq)
546 struct tifm_dev *sock = host->dev; 546 struct tifm_dev *sock = host->dev;
547 unsigned long flags; 547 unsigned long flags;
548 struct mmc_data *r_data = mrq->cmd->data; 548 struct mmc_data *r_data = mrq->cmd->data;
549 char *t_buffer = 0; 549 char *t_buffer = NULL;
550 550
551 if (r_data) { 551 if (r_data) {
552 t_buffer = kmap(r_data->sg->page); 552 t_buffer = kmap(r_data->sg->page);
@@ -613,13 +613,13 @@ static void tifm_sd_end_cmd_nodma(void *data)
613 struct tifm_dev *sock = host->dev; 613 struct tifm_dev *sock = host->dev;
614 struct mmc_host *mmc = tifm_get_drvdata(sock); 614 struct mmc_host *mmc = tifm_get_drvdata(sock);
615 struct mmc_request *mrq; 615 struct mmc_request *mrq;
616 struct mmc_data *r_data = 0; 616 struct mmc_data *r_data = NULL;
617 unsigned long flags; 617 unsigned long flags;
618 618
619 spin_lock_irqsave(&sock->lock, flags); 619 spin_lock_irqsave(&sock->lock, flags);
620 620
621 mrq = host->req; 621 mrq = host->req;
622 host->req = 0; 622 host->req = NULL;
623 host->state = IDLE; 623 host->state = IDLE;
624 624
625 if (!mrq) { 625 if (!mrq) {
@@ -644,7 +644,7 @@ static void tifm_sd_end_cmd_nodma(void *data)
644 r_data->bytes_xfered += r_data->blksz - 644 r_data->bytes_xfered += r_data->blksz -
645 readl(sock->addr + SOCK_MMCSD_BLOCK_LEN) + 1; 645 readl(sock->addr + SOCK_MMCSD_BLOCK_LEN) + 1;
646 } 646 }
647 host->buffer = 0; 647 host->buffer = NULL;
648 host->buffer_pos = 0; 648 host->buffer_pos = 0;
649 host->buffer_size = 0; 649 host->buffer_size = 0;
650 } 650 }
@@ -895,7 +895,7 @@ static void tifm_sd_remove(struct tifm_dev *sock)
895 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); 895 sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR);
896 writel(0, sock->addr + SOCK_DMA_FIFO_INT_ENABLE_SET); 896 writel(0, sock->addr + SOCK_DMA_FIFO_INT_ENABLE_SET);
897 897
898 tifm_set_drvdata(sock, 0); 898 tifm_set_drvdata(sock, NULL);
899 mmc_free_host(mmc); 899 mmc_free_host(mmc);
900} 900}
901 901
diff --git a/drivers/mmc/wbsd.c b/drivers/mmc/wbsd.c
index 88c6f0b129f5..ced309b37a8f 100644
--- a/drivers/mmc/wbsd.c
+++ b/drivers/mmc/wbsd.c
@@ -1256,7 +1256,7 @@ end:
1256 * Interrupt handling 1256 * Interrupt handling
1257 */ 1257 */
1258 1258
1259static irqreturn_t wbsd_irq(int irq, void *dev_id, struct pt_regs *regs) 1259static irqreturn_t wbsd_irq(int irq, void *dev_id)
1260{ 1260{
1261 struct wbsd_host *host = dev_id; 1261 struct wbsd_host *host = dev_id;
1262 int isr; 1262 int isr;
diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
index bc7cc71788bc..d1717763f719 100644
--- a/drivers/mtd/maps/physmap.c
+++ b/drivers/mtd/maps/physmap.c
@@ -62,7 +62,7 @@ static int physmap_flash_remove(struct platform_device *dev)
62 } 62 }
63 63
64 if (info->map.virt != NULL) 64 if (info->map.virt != NULL)
65 iounmap((void *)info->map.virt); 65 iounmap(info->map.virt);
66 66
67 if (info->res != NULL) { 67 if (info->res != NULL) {
68 release_resource(info->res); 68 release_resource(info->res);
diff --git a/drivers/mtd/nand/cs553x_nand.c b/drivers/mtd/nand/cs553x_nand.c
index e0a1d386e581..94924d52a9b9 100644
--- a/drivers/mtd/nand/cs553x_nand.c
+++ b/drivers/mtd/nand/cs553x_nand.c
@@ -249,7 +249,7 @@ static int __init cs553x_init_one(int cs, int mmio, unsigned long adr)
249 goto out; 249 goto out;
250 250
251out_ior: 251out_ior:
252 iounmap((void *)this->IO_ADDR_R); 252 iounmap(this->IO_ADDR_R);
253out_mtd: 253out_mtd:
254 kfree(new_mtd); 254 kfree(new_mtd);
255out: 255out:
diff --git a/drivers/net/3c501.c b/drivers/net/3c501.c
index 1b82bccd8c71..11d170afa9c3 100644
--- a/drivers/net/3c501.c
+++ b/drivers/net/3c501.c
@@ -496,7 +496,6 @@ static int el_start_xmit(struct sk_buff *skb, struct net_device *dev)
496 * el_interrupt: 496 * el_interrupt:
497 * @irq: Interrupt number 497 * @irq: Interrupt number
498 * @dev_id: The 3c501 that burped 498 * @dev_id: The 3c501 that burped
499 * @regs: Register data (surplus to our requirements)
500 * 499 *
501 * Handle the ether interface interrupts. The 3c501 needs a lot more 500 * Handle the ether interface interrupts. The 3c501 needs a lot more
502 * hand holding than most cards. In particular we get a transmit interrupt 501 * hand holding than most cards. In particular we get a transmit interrupt
@@ -515,7 +514,7 @@ static int el_start_xmit(struct sk_buff *skb, struct net_device *dev)
515 * TCP window. 514 * TCP window.
516 */ 515 */
517 516
518static irqreturn_t el_interrupt(int irq, void *dev_id, struct pt_regs *regs) 517static irqreturn_t el_interrupt(int irq, void *dev_id)
519{ 518{
520 struct net_device *dev = dev_id; 519 struct net_device *dev = dev_id;
521 struct net_local *lp; 520 struct net_local *lp;
diff --git a/drivers/net/3c501.h b/drivers/net/3c501.h
index 39d332474750..c56a2c62f7de 100644
--- a/drivers/net/3c501.h
+++ b/drivers/net/3c501.h
@@ -7,7 +7,7 @@ static int el1_probe1(struct net_device *dev, int ioaddr);
7static int el_open(struct net_device *dev); 7static int el_open(struct net_device *dev);
8static void el_timeout(struct net_device *dev); 8static void el_timeout(struct net_device *dev);
9static int el_start_xmit(struct sk_buff *skb, struct net_device *dev); 9static int el_start_xmit(struct sk_buff *skb, struct net_device *dev);
10static irqreturn_t el_interrupt(int irq, void *dev_id, struct pt_regs *regs); 10static irqreturn_t el_interrupt(int irq, void *dev_id);
11static void el_receive(struct net_device *dev); 11static void el_receive(struct net_device *dev);
12static void el_reset(struct net_device *dev); 12static void el_reset(struct net_device *dev);
13static int el1_close(struct net_device *dev); 13static int el1_close(struct net_device *dev);
diff --git a/drivers/net/3c505.c b/drivers/net/3c505.c
index ab8230a68bea..458cb9cbe915 100644
--- a/drivers/net/3c505.c
+++ b/drivers/net/3c505.c
@@ -649,7 +649,7 @@ static void receive_packet(struct net_device *dev, int len)
649 * 649 *
650 ******************************************************/ 650 ******************************************************/
651 651
652static irqreturn_t elp_interrupt(int irq, void *dev_id, struct pt_regs *reg_ptr) 652static irqreturn_t elp_interrupt(int irq, void *dev_id)
653{ 653{
654 int len; 654 int len;
655 int dlen; 655 int dlen;
diff --git a/drivers/net/3c507.c b/drivers/net/3c507.c
index 8205a535c5b7..aa43563610ae 100644
--- a/drivers/net/3c507.c
+++ b/drivers/net/3c507.c
@@ -286,7 +286,7 @@ static unsigned short init_words[] = {
286static int el16_probe1(struct net_device *dev, int ioaddr); 286static int el16_probe1(struct net_device *dev, int ioaddr);
287static int el16_open(struct net_device *dev); 287static int el16_open(struct net_device *dev);
288static int el16_send_packet(struct sk_buff *skb, struct net_device *dev); 288static int el16_send_packet(struct sk_buff *skb, struct net_device *dev);
289static irqreturn_t el16_interrupt(int irq, void *dev_id, struct pt_regs *regs); 289static irqreturn_t el16_interrupt(int irq, void *dev_id);
290static void el16_rx(struct net_device *dev); 290static void el16_rx(struct net_device *dev);
291static int el16_close(struct net_device *dev); 291static int el16_close(struct net_device *dev);
292static struct net_device_stats *el16_get_stats(struct net_device *dev); 292static struct net_device_stats *el16_get_stats(struct net_device *dev);
@@ -543,7 +543,7 @@ static int el16_send_packet (struct sk_buff *skb, struct net_device *dev)
543 543
544/* The typical workload of the driver: 544/* The typical workload of the driver:
545 Handle the network interface interrupts. */ 545 Handle the network interface interrupts. */
546static irqreturn_t el16_interrupt(int irq, void *dev_id, struct pt_regs *regs) 546static irqreturn_t el16_interrupt(int irq, void *dev_id)
547{ 547{
548 struct net_device *dev = dev_id; 548 struct net_device *dev = dev_id;
549 struct net_local *lp; 549 struct net_local *lp;
diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c
index b936373ab2a5..f791bf026e51 100644
--- a/drivers/net/3c509.c
+++ b/drivers/net/3c509.c
@@ -191,7 +191,7 @@ static ushort id_read_eeprom(int index);
191static ushort read_eeprom(int ioaddr, int index); 191static ushort read_eeprom(int ioaddr, int index);
192static int el3_open(struct net_device *dev); 192static int el3_open(struct net_device *dev);
193static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev); 193static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev);
194static irqreturn_t el3_interrupt(int irq, void *dev_id, struct pt_regs *regs); 194static irqreturn_t el3_interrupt(int irq, void *dev_id);
195static void update_stats(struct net_device *dev); 195static void update_stats(struct net_device *dev);
196static struct net_device_stats *el3_get_stats(struct net_device *dev); 196static struct net_device_stats *el3_get_stats(struct net_device *dev);
197static int el3_rx(struct net_device *dev); 197static int el3_rx(struct net_device *dev);
@@ -910,18 +910,13 @@ el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
910 910
911/* The EL3 interrupt handler. */ 911/* The EL3 interrupt handler. */
912static irqreturn_t 912static irqreturn_t
913el3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 913el3_interrupt(int irq, void *dev_id)
914{ 914{
915 struct net_device *dev = (struct net_device *)dev_id; 915 struct net_device *dev = dev_id;
916 struct el3_private *lp; 916 struct el3_private *lp;
917 int ioaddr, status; 917 int ioaddr, status;
918 int i = max_interrupt_work; 918 int i = max_interrupt_work;
919 919
920 if (dev == NULL) {
921 printk ("el3_interrupt(): irq %d for unknown device.\n", irq);
922 return IRQ_NONE;
923 }
924
925 lp = netdev_priv(dev); 920 lp = netdev_priv(dev);
926 spin_lock(&lp->lock); 921 spin_lock(&lp->lock);
927 922
@@ -1006,7 +1001,7 @@ el3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1006static void el3_poll_controller(struct net_device *dev) 1001static void el3_poll_controller(struct net_device *dev)
1007{ 1002{
1008 disable_irq(dev->irq); 1003 disable_irq(dev->irq);
1009 el3_interrupt(dev->irq, dev, NULL); 1004 el3_interrupt(dev->irq, dev);
1010 enable_irq(dev->irq); 1005 enable_irq(dev->irq);
1011} 1006}
1012#endif 1007#endif
diff --git a/drivers/net/3c515.c b/drivers/net/3c515.c
index 91f2232e6050..c307ce66145c 100644
--- a/drivers/net/3c515.c
+++ b/drivers/net/3c515.c
@@ -373,8 +373,7 @@ static int corkscrew_start_xmit(struct sk_buff *skb,
373static int corkscrew_rx(struct net_device *dev); 373static int corkscrew_rx(struct net_device *dev);
374static void corkscrew_timeout(struct net_device *dev); 374static void corkscrew_timeout(struct net_device *dev);
375static int boomerang_rx(struct net_device *dev); 375static int boomerang_rx(struct net_device *dev);
376static irqreturn_t corkscrew_interrupt(int irq, void *dev_id, 376static irqreturn_t corkscrew_interrupt(int irq, void *dev_id);
377 struct pt_regs *regs);
378static int corkscrew_close(struct net_device *dev); 377static int corkscrew_close(struct net_device *dev);
379static void update_stats(int addr, struct net_device *dev); 378static void update_stats(int addr, struct net_device *dev);
380static struct net_device_stats *corkscrew_get_stats(struct net_device *dev); 379static struct net_device_stats *corkscrew_get_stats(struct net_device *dev);
@@ -1116,8 +1115,7 @@ static int corkscrew_start_xmit(struct sk_buff *skb,
1116/* The interrupt handler does all of the Rx thread work and cleans up 1115/* The interrupt handler does all of the Rx thread work and cleans up
1117 after the Tx thread. */ 1116 after the Tx thread. */
1118 1117
1119static irqreturn_t corkscrew_interrupt(int irq, void *dev_id, 1118static irqreturn_t corkscrew_interrupt(int irq, void *dev_id)
1120 struct pt_regs *regs)
1121{ 1119{
1122 /* Use the now-standard shared IRQ implementation. */ 1120 /* Use the now-standard shared IRQ implementation. */
1123 struct net_device *dev = dev_id; 1121 struct net_device *dev = dev_id;
diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c
index cf8a0bc3bf34..91849469b4f4 100644
--- a/drivers/net/3c523.c
+++ b/drivers/net/3c523.c
@@ -180,7 +180,7 @@ sizeof(nop_cmd) = 8;
180 dev->name,__LINE__); \ 180 dev->name,__LINE__); \
181 elmc_id_reset586(); } } } 181 elmc_id_reset586(); } } }
182 182
183static irqreturn_t elmc_interrupt(int irq, void *dev_id, struct pt_regs *reg_ptr); 183static irqreturn_t elmc_interrupt(int irq, void *dev_id);
184static int elmc_open(struct net_device *dev); 184static int elmc_open(struct net_device *dev);
185static int elmc_close(struct net_device *dev); 185static int elmc_close(struct net_device *dev);
186static int elmc_send_packet(struct sk_buff *, struct net_device *); 186static int elmc_send_packet(struct sk_buff *, struct net_device *);
@@ -900,16 +900,13 @@ static void *alloc_rfa(struct net_device *dev, void *ptr)
900 */ 900 */
901 901
902static irqreturn_t 902static irqreturn_t
903elmc_interrupt(int irq, void *dev_id, struct pt_regs *reg_ptr) 903elmc_interrupt(int irq, void *dev_id)
904{ 904{
905 struct net_device *dev = (struct net_device *) dev_id; 905 struct net_device *dev = dev_id;
906 unsigned short stat; 906 unsigned short stat;
907 struct priv *p; 907 struct priv *p;
908 908
909 if (dev == NULL) { 909 if (!netif_running(dev)) {
910 printk(KERN_ERR "elmc-interrupt: irq %d for unknown device.\n", (int) -(((struct pt_regs *) reg_ptr)->orig_eax + 2));
911 return IRQ_NONE;
912 } else if (!netif_running(dev)) {
913 /* The 3c523 has this habit of generating interrupts during the 910 /* The 3c523 has this habit of generating interrupts during the
914 reset. I'm not sure if the ni52 has this same problem, but it's 911 reset. I'm not sure if the ni52 has this same problem, but it's
915 really annoying if we haven't finished initializing it. I was 912 really annoying if we haven't finished initializing it. I was
diff --git a/drivers/net/3c527.c b/drivers/net/3c527.c
index 625e57dc3b4a..f4aca5386add 100644
--- a/drivers/net/3c527.c
+++ b/drivers/net/3c527.c
@@ -217,7 +217,7 @@ static int mc32_command(struct net_device *dev, u16 cmd, void *data, int le
217static int mc32_open(struct net_device *dev); 217static int mc32_open(struct net_device *dev);
218static void mc32_timeout(struct net_device *dev); 218static void mc32_timeout(struct net_device *dev);
219static int mc32_send_packet(struct sk_buff *skb, struct net_device *dev); 219static int mc32_send_packet(struct sk_buff *skb, struct net_device *dev);
220static irqreturn_t mc32_interrupt(int irq, void *dev_id, struct pt_regs *regs); 220static irqreturn_t mc32_interrupt(int irq, void *dev_id);
221static int mc32_close(struct net_device *dev); 221static int mc32_close(struct net_device *dev);
222static struct net_device_stats *mc32_get_stats(struct net_device *dev); 222static struct net_device_stats *mc32_get_stats(struct net_device *dev);
223static void mc32_set_multicast_list(struct net_device *dev); 223static void mc32_set_multicast_list(struct net_device *dev);
@@ -1316,7 +1316,7 @@ static void mc32_tx_ring(struct net_device *dev)
1316 * 1316 *
1317 */ 1317 */
1318 1318
1319static irqreturn_t mc32_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1319static irqreturn_t mc32_interrupt(int irq, void *dev_id)
1320{ 1320{
1321 struct net_device *dev = dev_id; 1321 struct net_device *dev = dev_id;
1322 struct mc32_local *lp; 1322 struct mc32_local *lp;
@@ -1324,11 +1324,6 @@ static irqreturn_t mc32_interrupt(int irq, void *dev_id, struct pt_regs * regs)
1324 int rx_event = 0; 1324 int rx_event = 0;
1325 int tx_event = 0; 1325 int tx_event = 0;
1326 1326
1327 if (dev == NULL) {
1328 printk(KERN_WARNING "%s: irq %d for unknown device.\n", cardname, irq);
1329 return IRQ_NONE;
1330 }
1331
1332 ioaddr = dev->base_addr; 1327 ioaddr = dev->base_addr;
1333 lp = netdev_priv(dev); 1328 lp = netdev_priv(dev);
1334 1329
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index df42e28cc80f..80bdcf846234 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -717,8 +717,8 @@ static int vortex_start_xmit(struct sk_buff *skb, struct net_device *dev);
717static int boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev); 717static int boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev);
718static int vortex_rx(struct net_device *dev); 718static int vortex_rx(struct net_device *dev);
719static int boomerang_rx(struct net_device *dev); 719static int boomerang_rx(struct net_device *dev);
720static irqreturn_t vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs); 720static irqreturn_t vortex_interrupt(int irq, void *dev_id);
721static irqreturn_t boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs); 721static irqreturn_t boomerang_interrupt(int irq, void *dev_id);
722static int vortex_close(struct net_device *dev); 722static int vortex_close(struct net_device *dev);
723static void dump_tx_ring(struct net_device *dev); 723static void dump_tx_ring(struct net_device *dev);
724static void update_stats(void __iomem *ioaddr, struct net_device *dev); 724static void update_stats(void __iomem *ioaddr, struct net_device *dev);
@@ -794,7 +794,7 @@ static void poll_vortex(struct net_device *dev)
794 unsigned long flags; 794 unsigned long flags;
795 local_save_flags(flags); 795 local_save_flags(flags);
796 local_irq_disable(); 796 local_irq_disable();
797 (vp->full_bus_master_rx ? boomerang_interrupt:vortex_interrupt)(dev->irq,dev,NULL); 797 (vp->full_bus_master_rx ? boomerang_interrupt:vortex_interrupt)(dev->irq,dev);
798 local_irq_restore(flags); 798 local_irq_restore(flags);
799} 799}
800#endif 800#endif
@@ -1849,9 +1849,9 @@ static void vortex_tx_timeout(struct net_device *dev)
1849 unsigned long flags; 1849 unsigned long flags;
1850 local_irq_save(flags); 1850 local_irq_save(flags);
1851 if (vp->full_bus_master_tx) 1851 if (vp->full_bus_master_tx)
1852 boomerang_interrupt(dev->irq, dev, NULL); 1852 boomerang_interrupt(dev->irq, dev);
1853 else 1853 else
1854 vortex_interrupt(dev->irq, dev, NULL); 1854 vortex_interrupt(dev->irq, dev);
1855 local_irq_restore(flags); 1855 local_irq_restore(flags);
1856 } 1856 }
1857 } 1857 }
@@ -2149,7 +2149,7 @@ boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev)
2149 */ 2149 */
2150 2150
2151static irqreturn_t 2151static irqreturn_t
2152vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2152vortex_interrupt(int irq, void *dev_id)
2153{ 2153{
2154 struct net_device *dev = dev_id; 2154 struct net_device *dev = dev_id;
2155 struct vortex_private *vp = netdev_priv(dev); 2155 struct vortex_private *vp = netdev_priv(dev);
@@ -2254,7 +2254,7 @@ handler_exit:
2254 */ 2254 */
2255 2255
2256static irqreturn_t 2256static irqreturn_t
2257boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2257boomerang_interrupt(int irq, void *dev_id)
2258{ 2258{
2259 struct net_device *dev = dev_id; 2259 struct net_device *dev = dev_id;
2260 struct vortex_private *vp = netdev_priv(dev); 2260 struct vortex_private *vp = netdev_priv(dev);
diff --git a/drivers/net/7990.c b/drivers/net/7990.c
index db7b19a5cd59..7733697f7776 100644
--- a/drivers/net/7990.c
+++ b/drivers/net/7990.c
@@ -438,7 +438,7 @@ static int lance_tx (struct net_device *dev)
438} 438}
439 439
440static irqreturn_t 440static irqreturn_t
441lance_interrupt (int irq, void *dev_id, struct pt_regs *regs) 441lance_interrupt (int irq, void *dev_id)
442{ 442{
443 struct net_device *dev = (struct net_device *)dev_id; 443 struct net_device *dev = (struct net_device *)dev_id;
444 struct lance_private *lp = netdev_priv(dev); 444 struct lance_private *lp = netdev_priv(dev);
@@ -674,7 +674,7 @@ void lance_poll(struct net_device *dev)
674 WRITERAP(lp, LE_CSR0); 674 WRITERAP(lp, LE_CSR0);
675 WRITERDP(lp, LE_C0_STRT); 675 WRITERDP(lp, LE_C0_STRT);
676 spin_unlock (&lp->devlock); 676 spin_unlock (&lp->devlock);
677 lance_interrupt(dev->irq, dev, NULL); 677 lance_interrupt(dev->irq, dev);
678} 678}
679#endif 679#endif
680 680
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index 5a4990ae3730..458dd9f830c4 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -631,8 +631,7 @@ rx_next:
631 return 1; /* not done */ 631 return 1; /* not done */
632} 632}
633 633
634static irqreturn_t 634static irqreturn_t cp_interrupt (int irq, void *dev_instance)
635cp_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
636{ 635{
637 struct net_device *dev = dev_instance; 636 struct net_device *dev = dev_instance;
638 struct cp_private *cp; 637 struct cp_private *cp;
@@ -696,7 +695,7 @@ cp_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
696static void cp_poll_controller(struct net_device *dev) 695static void cp_poll_controller(struct net_device *dev)
697{ 696{
698 disable_irq(dev->irq); 697 disable_irq(dev->irq);
699 cp_interrupt(dev->irq, dev, NULL); 698 cp_interrupt(dev->irq, dev);
700 enable_irq(dev->irq); 699 enable_irq(dev->irq);
701} 700}
702#endif 701#endif
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index dbc5c0b1b96c..d02ed51abfcc 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -629,8 +629,7 @@ static int rtl8139_poll(struct net_device *dev, int *budget);
629#ifdef CONFIG_NET_POLL_CONTROLLER 629#ifdef CONFIG_NET_POLL_CONTROLLER
630static void rtl8139_poll_controller(struct net_device *dev); 630static void rtl8139_poll_controller(struct net_device *dev);
631#endif 631#endif
632static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance, 632static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance);
633 struct pt_regs *regs);
634static int rtl8139_close (struct net_device *dev); 633static int rtl8139_close (struct net_device *dev);
635static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd); 634static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd);
636static struct net_device_stats *rtl8139_get_stats (struct net_device *dev); 635static struct net_device_stats *rtl8139_get_stats (struct net_device *dev);
@@ -2146,8 +2145,7 @@ static int rtl8139_poll(struct net_device *dev, int *budget)
2146 2145
2147/* The interrupt handler does all of the Rx thread work and cleans up 2146/* The interrupt handler does all of the Rx thread work and cleans up
2148 after the Tx thread. */ 2147 after the Tx thread. */
2149static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance, 2148static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance)
2150 struct pt_regs *regs)
2151{ 2149{
2152 struct net_device *dev = (struct net_device *) dev_instance; 2150 struct net_device *dev = (struct net_device *) dev_instance;
2153 struct rtl8139_private *tp = netdev_priv(dev); 2151 struct rtl8139_private *tp = netdev_priv(dev);
@@ -2219,7 +2217,7 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance,
2219static void rtl8139_poll_controller(struct net_device *dev) 2217static void rtl8139_poll_controller(struct net_device *dev)
2220{ 2218{
2221 disable_irq(dev->irq); 2219 disable_irq(dev->irq);
2222 rtl8139_interrupt(dev->irq, dev, NULL); 2220 rtl8139_interrupt(dev->irq, dev);
2223 enable_irq(dev->irq); 2221 enable_irq(dev->irq);
2224} 2222}
2225#endif 2223#endif
diff --git a/drivers/net/82596.c b/drivers/net/82596.c
index c9e4dca9d410..8236f26ffd46 100644
--- a/drivers/net/82596.c
+++ b/drivers/net/82596.c
@@ -357,7 +357,7 @@ static char init_setup[] =
357 357
358static int i596_open(struct net_device *dev); 358static int i596_open(struct net_device *dev);
359static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev); 359static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev);
360static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs); 360static irqreturn_t i596_interrupt(int irq, void *dev_id);
361static int i596_close(struct net_device *dev); 361static int i596_close(struct net_device *dev);
362static struct net_device_stats *i596_get_stats(struct net_device *dev); 362static struct net_device_stats *i596_get_stats(struct net_device *dev);
363static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd); 363static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd);
@@ -501,7 +501,7 @@ static void i596_display_data(struct net_device *dev)
501 501
502 502
503#if defined(ENABLE_MVME16x_NET) || defined(ENABLE_BVME6000_NET) 503#if defined(ENABLE_MVME16x_NET) || defined(ENABLE_BVME6000_NET)
504static irqreturn_t i596_error(int irq, void *dev_id, struct pt_regs *regs) 504static irqreturn_t i596_error(int irq, void *dev_id)
505{ 505{
506 struct net_device *dev = dev_id; 506 struct net_device *dev = dev_id;
507#ifdef ENABLE_MVME16x_NET 507#ifdef ENABLE_MVME16x_NET
@@ -1283,7 +1283,7 @@ out:
1283 return ERR_PTR(err); 1283 return ERR_PTR(err);
1284} 1284}
1285 1285
1286static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1286static irqreturn_t i596_interrupt(int irq, void *dev_id)
1287{ 1287{
1288 struct net_device *dev = dev_id; 1288 struct net_device *dev = dev_id;
1289 struct i596_private *lp; 1289 struct i596_private *lp;
@@ -1294,7 +1294,7 @@ static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1294#ifdef ENABLE_BVME6000_NET 1294#ifdef ENABLE_BVME6000_NET
1295 if (MACH_IS_BVME6000) { 1295 if (MACH_IS_BVME6000) {
1296 if (*(char *) BVME_LOCAL_IRQ_STAT & BVME_ETHERR) { 1296 if (*(char *) BVME_LOCAL_IRQ_STAT & BVME_ETHERR) {
1297 i596_error(irq, dev_id, regs); 1297 i596_error(irq, dev_id);
1298 return IRQ_HANDLED; 1298 return IRQ_HANDLED;
1299 } 1299 }
1300 } 1300 }
diff --git a/drivers/net/8390.c b/drivers/net/8390.c
index 9d34056147ad..3d1c599ac3cb 100644
--- a/drivers/net/8390.c
+++ b/drivers/net/8390.c
@@ -391,7 +391,6 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
391 * ei_interrupt - handle the interrupts from an 8390 391 * ei_interrupt - handle the interrupts from an 8390
392 * @irq: interrupt number 392 * @irq: interrupt number
393 * @dev_id: a pointer to the net_device 393 * @dev_id: a pointer to the net_device
394 * @regs: unused
395 * 394 *
396 * Handle the ether interface interrupts. We pull packets from 395 * Handle the ether interface interrupts. We pull packets from
397 * the 8390 via the card specific functions and fire them at the networking 396 * the 8390 via the card specific functions and fire them at the networking
@@ -400,21 +399,15 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
400 * needed. 399 * needed.
401 */ 400 */
402 401
403irqreturn_t ei_interrupt(int irq, void *dev_id, struct pt_regs * regs) 402irqreturn_t ei_interrupt(int irq, void *dev_id)
404{ 403{
405 struct net_device *dev = dev_id; 404 struct net_device *dev = dev_id;
406 long e8390_base; 405 long e8390_base;
407 int interrupts, nr_serviced = 0; 406 int interrupts, nr_serviced = 0;
408 struct ei_device *ei_local; 407 struct ei_device *ei_local;
409 408
410 if (dev == NULL)
411 {
412 printk ("net_interrupt(): irq %d for unknown device.\n", irq);
413 return IRQ_NONE;
414 }
415
416 e8390_base = dev->base_addr; 409 e8390_base = dev->base_addr;
417 ei_local = (struct ei_device *) netdev_priv(dev); 410 ei_local = netdev_priv(dev);
418 411
419 /* 412 /*
420 * Protect the irq test too. 413 * Protect the irq test too.
@@ -506,7 +499,7 @@ irqreturn_t ei_interrupt(int irq, void *dev_id, struct pt_regs * regs)
506void ei_poll(struct net_device *dev) 499void ei_poll(struct net_device *dev)
507{ 500{
508 disable_irq_lockdep(dev->irq); 501 disable_irq_lockdep(dev->irq);
509 ei_interrupt(dev->irq, dev, NULL); 502 ei_interrupt(dev->irq, dev);
510 enable_irq_lockdep(dev->irq); 503 enable_irq_lockdep(dev->irq);
511} 504}
512#endif 505#endif
diff --git a/drivers/net/8390.h b/drivers/net/8390.h
index ca4eb0ccf8cf..f44f1220b3a5 100644
--- a/drivers/net/8390.h
+++ b/drivers/net/8390.h
@@ -35,7 +35,7 @@ extern void ei_poll(struct net_device *dev);
35extern void NS8390_init(struct net_device *dev, int startp); 35extern void NS8390_init(struct net_device *dev, int startp);
36extern int ei_open(struct net_device *dev); 36extern int ei_open(struct net_device *dev);
37extern int ei_close(struct net_device *dev); 37extern int ei_close(struct net_device *dev);
38extern irqreturn_t ei_interrupt(int irq, void *dev_id, struct pt_regs *regs); 38extern irqreturn_t ei_interrupt(int irq, void *dev_id);
39extern struct net_device *__alloc_ei_netdev(int size); 39extern struct net_device *__alloc_ei_netdev(int size);
40static inline struct net_device *alloc_ei_netdev(void) 40static inline struct net_device *alloc_ei_netdev(void)
41{ 41{
diff --git a/drivers/net/a2065.c b/drivers/net/a2065.c
index 5f7258fea19d..d76548e75350 100644
--- a/drivers/net/a2065.c
+++ b/drivers/net/a2065.c
@@ -425,8 +425,7 @@ static int lance_tx (struct net_device *dev)
425 return 0; 425 return 0;
426} 426}
427 427
428static irqreturn_t 428static irqreturn_t lance_interrupt (int irq, void *dev_id)
429lance_interrupt (int irq, void *dev_id, struct pt_regs *regs)
430{ 429{
431 struct net_device *dev; 430 struct net_device *dev;
432 struct lance_private *lp; 431 struct lance_private *lp;
diff --git a/drivers/net/acenic.c b/drivers/net/acenic.c
index 71a4f60f7325..33c6645455ae 100644
--- a/drivers/net/acenic.c
+++ b/drivers/net/acenic.c
@@ -2144,7 +2144,7 @@ static inline void ace_tx_int(struct net_device *dev,
2144} 2144}
2145 2145
2146 2146
2147static irqreturn_t ace_interrupt(int irq, void *dev_id, struct pt_regs *ptregs) 2147static irqreturn_t ace_interrupt(int irq, void *dev_id)
2148{ 2148{
2149 struct net_device *dev = (struct net_device *)dev_id; 2149 struct net_device *dev = (struct net_device *)dev_id;
2150 struct ace_private *ap = netdev_priv(dev); 2150 struct ace_private *ap = netdev_priv(dev);
diff --git a/drivers/net/acenic.h b/drivers/net/acenic.h
index efb14b9f4d90..8ca8534d70bf 100644
--- a/drivers/net/acenic.h
+++ b/drivers/net/acenic.h
@@ -769,7 +769,7 @@ static int ace_init(struct net_device *dev);
769static void ace_load_std_rx_ring(struct ace_private *ap, int nr_bufs); 769static void ace_load_std_rx_ring(struct ace_private *ap, int nr_bufs);
770static void ace_load_mini_rx_ring(struct ace_private *ap, int nr_bufs); 770static void ace_load_mini_rx_ring(struct ace_private *ap, int nr_bufs);
771static void ace_load_jumbo_rx_ring(struct ace_private *ap, int nr_bufs); 771static void ace_load_jumbo_rx_ring(struct ace_private *ap, int nr_bufs);
772static irqreturn_t ace_interrupt(int irq, void *dev_id, struct pt_regs *regs); 772static irqreturn_t ace_interrupt(int irq, void *dev_id);
773static int ace_load_firmware(struct net_device *dev); 773static int ace_load_firmware(struct net_device *dev);
774static int ace_open(struct net_device *dev); 774static int ace_open(struct net_device *dev);
775static int ace_start_xmit(struct sk_buff *skb, struct net_device *dev); 775static int ace_start_xmit(struct sk_buff *skb, struct net_device *dev);
diff --git a/drivers/net/amd8111e.c b/drivers/net/amd8111e.c
index 28855a01ed7b..ef65e5917c8f 100644
--- a/drivers/net/amd8111e.c
+++ b/drivers/net/amd8111e.c
@@ -1257,7 +1257,7 @@ static int amd8111e_calc_coalesce(struct net_device *dev)
1257/* 1257/*
1258This is device interrupt function. It handles transmit, receive,link change and hardware timer interrupts. 1258This is device interrupt function. It handles transmit, receive,link change and hardware timer interrupts.
1259*/ 1259*/
1260static irqreturn_t amd8111e_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1260static irqreturn_t amd8111e_interrupt(int irq, void *dev_id)
1261{ 1261{
1262 1262
1263 struct net_device * dev = (struct net_device *) dev_id; 1263 struct net_device * dev = (struct net_device *) dev_id;
@@ -1336,7 +1336,7 @@ static void amd8111e_poll(struct net_device *dev)
1336 unsigned long flags; 1336 unsigned long flags;
1337 local_save_flags(flags); 1337 local_save_flags(flags);
1338 local_irq_disable(); 1338 local_irq_disable();
1339 amd8111e_interrupt(0, dev, NULL); 1339 amd8111e_interrupt(0, dev);
1340 local_irq_restore(flags); 1340 local_irq_restore(flags);
1341} 1341}
1342#endif 1342#endif
diff --git a/drivers/net/apne.c b/drivers/net/apne.c
index 643b08cc7403..9164d8cd670e 100644
--- a/drivers/net/apne.c
+++ b/drivers/net/apne.c
@@ -88,7 +88,7 @@ static void apne_block_input(struct net_device *dev, int count,
88 struct sk_buff *skb, int ring_offset); 88 struct sk_buff *skb, int ring_offset);
89static void apne_block_output(struct net_device *dev, const int count, 89static void apne_block_output(struct net_device *dev, const int count,
90 const unsigned char *buf, const int start_page); 90 const unsigned char *buf, const int start_page);
91static irqreturn_t apne_interrupt(int irq, void *dev_id, struct pt_regs *regs); 91static irqreturn_t apne_interrupt(int irq, void *dev_id);
92 92
93static int init_pcmcia(void); 93static int init_pcmcia(void);
94 94
@@ -543,7 +543,7 @@ apne_block_output(struct net_device *dev, int count,
543 return; 543 return;
544} 544}
545 545
546static irqreturn_t apne_interrupt(int irq, void *dev_id, struct pt_regs *regs) 546static irqreturn_t apne_interrupt(int irq, void *dev_id)
547{ 547{
548 unsigned char pcmcia_intreq; 548 unsigned char pcmcia_intreq;
549 549
@@ -559,7 +559,7 @@ static irqreturn_t apne_interrupt(int irq, void *dev_id, struct pt_regs *regs)
559 if (ei_debug > 3) 559 if (ei_debug > 3)
560 printk("pcmcia intreq = %x\n", pcmcia_intreq); 560 printk("pcmcia intreq = %x\n", pcmcia_intreq);
561 pcmcia_disable_irq(); /* to get rid of the sti() within ei_interrupt */ 561 pcmcia_disable_irq(); /* to get rid of the sti() within ei_interrupt */
562 ei_interrupt(irq, dev_id, regs); 562 ei_interrupt(irq, dev_id);
563 pcmcia_ack_int(pcmcia_get_intreq()); 563 pcmcia_ack_int(pcmcia_get_intreq());
564 pcmcia_enable_irq(); 564 pcmcia_enable_irq();
565 return IRQ_HANDLED; 565 return IRQ_HANDLED;
diff --git a/drivers/net/appletalk/cops.c b/drivers/net/appletalk/cops.c
index ae7f828344d9..cc1a27ed197f 100644
--- a/drivers/net/appletalk/cops.c
+++ b/drivers/net/appletalk/cops.c
@@ -188,7 +188,7 @@ static void cops_reset (struct net_device *dev, int sleep);
188static void cops_load (struct net_device *dev); 188static void cops_load (struct net_device *dev);
189static int cops_nodeid (struct net_device *dev, int nodeid); 189static int cops_nodeid (struct net_device *dev, int nodeid);
190 190
191static irqreturn_t cops_interrupt (int irq, void *dev_id, struct pt_regs *regs); 191static irqreturn_t cops_interrupt (int irq, void *dev_id);
192static void cops_poll (unsigned long ltdev); 192static void cops_poll (unsigned long ltdev);
193static void cops_timeout(struct net_device *dev); 193static void cops_timeout(struct net_device *dev);
194static void cops_rx (struct net_device *dev); 194static void cops_rx (struct net_device *dev);
@@ -721,7 +721,7 @@ static void cops_poll(unsigned long ltdev)
721 * The typical workload of the driver: 721 * The typical workload of the driver:
722 * Handle the network interface interrupts. 722 * Handle the network interface interrupts.
723 */ 723 */
724static irqreturn_t cops_interrupt(int irq, void *dev_id, struct pt_regs * regs) 724static irqreturn_t cops_interrupt(int irq, void *dev_id)
725{ 725{
726 struct net_device *dev = dev_id; 726 struct net_device *dev = dev_id;
727 struct cops_local *lp; 727 struct cops_local *lp;
diff --git a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c
index d5666c37cb0d..2ea44ce49810 100644
--- a/drivers/net/appletalk/ltpc.c
+++ b/drivers/net/appletalk/ltpc.c
@@ -790,7 +790,7 @@ static int sendup_buffer (struct net_device *dev)
790/* the handler for the board interrupt */ 790/* the handler for the board interrupt */
791 791
792static irqreturn_t 792static irqreturn_t
793ltpc_interrupt(int irq, void *dev_id, struct pt_regs *reg_ptr) 793ltpc_interrupt(int irq, void *dev_id)
794{ 794{
795 struct net_device *dev = dev_id; 795 struct net_device *dev = dev_id;
796 796
diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c
index 5a95005253fa..4e91dab1f17f 100644
--- a/drivers/net/arcnet/arcnet.c
+++ b/drivers/net/arcnet/arcnet.c
@@ -752,7 +752,7 @@ static void arcnet_timeout(struct net_device *dev)
752 * interrupts. Establish which device needs attention, and call the correct 752 * interrupts. Establish which device needs attention, and call the correct
753 * chipset interrupt handler. 753 * chipset interrupt handler.
754 */ 754 */
755irqreturn_t arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs) 755irqreturn_t arcnet_interrupt(int irq, void *dev_id)
756{ 756{
757 struct net_device *dev = dev_id; 757 struct net_device *dev = dev_id;
758 struct arcnet_local *lp; 758 struct arcnet_local *lp;
diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c
index 3aef3c10d56f..9dfc09b181c1 100644
--- a/drivers/net/ariadne.c
+++ b/drivers/net/ariadne.c
@@ -120,7 +120,7 @@ static int ariadne_start_xmit(struct sk_buff *skb, struct net_device *dev);
120static void ariadne_tx_timeout(struct net_device *dev); 120static void ariadne_tx_timeout(struct net_device *dev);
121static int ariadne_rx(struct net_device *dev); 121static int ariadne_rx(struct net_device *dev);
122static void ariadne_reset(struct net_device *dev); 122static void ariadne_reset(struct net_device *dev);
123static irqreturn_t ariadne_interrupt(int irq, void *data, struct pt_regs *fp); 123static irqreturn_t ariadne_interrupt(int irq, void *data);
124static int ariadne_close(struct net_device *dev); 124static int ariadne_close(struct net_device *dev);
125static struct net_device_stats *ariadne_get_stats(struct net_device *dev); 125static struct net_device_stats *ariadne_get_stats(struct net_device *dev);
126#ifdef HAVE_MULTICAST 126#ifdef HAVE_MULTICAST
@@ -416,7 +416,7 @@ static inline void ariadne_reset(struct net_device *dev)
416} 416}
417 417
418 418
419static irqreturn_t ariadne_interrupt(int irq, void *data, struct pt_regs *fp) 419static irqreturn_t ariadne_interrupt(int irq, void *data)
420{ 420{
421 struct net_device *dev = (struct net_device *)data; 421 struct net_device *dev = (struct net_device *)data;
422 volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr; 422 volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;
diff --git a/drivers/net/arm/am79c961a.c b/drivers/net/arm/am79c961a.c
index 09d5c3f26985..ddd12d44ff22 100644
--- a/drivers/net/arm/am79c961a.c
+++ b/drivers/net/arm/am79c961a.c
@@ -38,7 +38,7 @@
38#include "am79c961a.h" 38#include "am79c961a.h"
39 39
40static irqreturn_t 40static irqreturn_t
41am79c961_interrupt (int irq, void *dev_id, struct pt_regs *regs); 41am79c961_interrupt (int irq, void *dev_id);
42 42
43static unsigned int net_debug = NET_DEBUG; 43static unsigned int net_debug = NET_DEBUG;
44 44
@@ -596,7 +596,7 @@ am79c961_tx(struct net_device *dev, struct dev_priv *priv)
596} 596}
597 597
598static irqreturn_t 598static irqreturn_t
599am79c961_interrupt(int irq, void *dev_id, struct pt_regs *regs) 599am79c961_interrupt(int irq, void *dev_id)
600{ 600{
601 struct net_device *dev = (struct net_device *)dev_id; 601 struct net_device *dev = (struct net_device *)dev_id;
602 struct dev_priv *priv = netdev_priv(dev); 602 struct dev_priv *priv = netdev_priv(dev);
diff --git a/drivers/net/arm/at91_ether.c b/drivers/net/arm/at91_ether.c
index 3ecf2cc53a7c..b54b857e357e 100644
--- a/drivers/net/arm/at91_ether.c
+++ b/drivers/net/arm/at91_ether.c
@@ -196,7 +196,7 @@ static void update_linkspeed(struct net_device *dev, int silent)
196/* 196/*
197 * Handle interrupts from the PHY 197 * Handle interrupts from the PHY
198 */ 198 */
199static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id, struct pt_regs *regs) 199static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id)
200{ 200{
201 struct net_device *dev = (struct net_device *) dev_id; 201 struct net_device *dev = (struct net_device *) dev_id;
202 struct at91_private *lp = (struct at91_private *) dev->priv; 202 struct at91_private *lp = (struct at91_private *) dev->priv;
@@ -888,7 +888,7 @@ static void at91ether_rx(struct net_device *dev)
888/* 888/*
889 * MAC interrupt handler 889 * MAC interrupt handler
890 */ 890 */
891static irqreturn_t at91ether_interrupt(int irq, void *dev_id, struct pt_regs *regs) 891static irqreturn_t at91ether_interrupt(int irq, void *dev_id)
892{ 892{
893 struct net_device *dev = (struct net_device *) dev_id; 893 struct net_device *dev = (struct net_device *) dev_id;
894 struct at91_private *lp = (struct at91_private *) dev->priv; 894 struct at91_private *lp = (struct at91_private *) dev->priv;
diff --git a/drivers/net/arm/ep93xx_eth.c b/drivers/net/arm/ep93xx_eth.c
index d231efa624d4..127561c782fd 100644
--- a/drivers/net/arm/ep93xx_eth.c
+++ b/drivers/net/arm/ep93xx_eth.c
@@ -435,7 +435,7 @@ static void ep93xx_tx_complete(struct net_device *dev)
435 netif_wake_queue(dev); 435 netif_wake_queue(dev);
436} 436}
437 437
438static irqreturn_t ep93xx_irq(int irq, void *dev_id, struct pt_regs *regs) 438static irqreturn_t ep93xx_irq(int irq, void *dev_id)
439{ 439{
440 struct net_device *dev = dev_id; 440 struct net_device *dev = dev_id;
441 struct ep93xx_priv *ep = netdev_priv(dev); 441 struct ep93xx_priv *ep = netdev_priv(dev);
diff --git a/drivers/net/arm/ether1.c b/drivers/net/arm/ether1.c
index 312955d07b28..f3478a30e778 100644
--- a/drivers/net/arm/ether1.c
+++ b/drivers/net/arm/ether1.c
@@ -68,7 +68,7 @@ static unsigned int net_debug = NET_DEBUG;
68 68
69static int ether1_open(struct net_device *dev); 69static int ether1_open(struct net_device *dev);
70static int ether1_sendpacket(struct sk_buff *skb, struct net_device *dev); 70static int ether1_sendpacket(struct sk_buff *skb, struct net_device *dev);
71static irqreturn_t ether1_interrupt(int irq, void *dev_id, struct pt_regs *regs); 71static irqreturn_t ether1_interrupt(int irq, void *dev_id);
72static int ether1_close(struct net_device *dev); 72static int ether1_close(struct net_device *dev);
73static struct net_device_stats *ether1_getstats(struct net_device *dev); 73static struct net_device_stats *ether1_getstats(struct net_device *dev);
74static void ether1_setmulticastlist(struct net_device *dev); 74static void ether1_setmulticastlist(struct net_device *dev);
@@ -908,7 +908,7 @@ ether1_recv_done (struct net_device *dev)
908} 908}
909 909
910static irqreturn_t 910static irqreturn_t
911ether1_interrupt (int irq, void *dev_id, struct pt_regs *regs) 911ether1_interrupt (int irq, void *dev_id)
912{ 912{
913 struct net_device *dev = (struct net_device *)dev_id; 913 struct net_device *dev = (struct net_device *)dev_id;
914 int status; 914 int status;
diff --git a/drivers/net/arm/ether3.c b/drivers/net/arm/ether3.c
index 081074180e62..84686c8a5bc2 100644
--- a/drivers/net/arm/ether3.c
+++ b/drivers/net/arm/ether3.c
@@ -81,7 +81,7 @@ static int ether3_rx(struct net_device *dev, unsigned int maxcnt);
81static void ether3_tx(struct net_device *dev); 81static void ether3_tx(struct net_device *dev);
82static int ether3_open (struct net_device *dev); 82static int ether3_open (struct net_device *dev);
83static int ether3_sendpacket (struct sk_buff *skb, struct net_device *dev); 83static int ether3_sendpacket (struct sk_buff *skb, struct net_device *dev);
84static irqreturn_t ether3_interrupt (int irq, void *dev_id, struct pt_regs *regs); 84static irqreturn_t ether3_interrupt (int irq, void *dev_id);
85static int ether3_close (struct net_device *dev); 85static int ether3_close (struct net_device *dev);
86static struct net_device_stats *ether3_getstats (struct net_device *dev); 86static struct net_device_stats *ether3_getstats (struct net_device *dev);
87static void ether3_setmulticastlist (struct net_device *dev); 87static void ether3_setmulticastlist (struct net_device *dev);
@@ -568,7 +568,7 @@ ether3_sendpacket(struct sk_buff *skb, struct net_device *dev)
568} 568}
569 569
570static irqreturn_t 570static irqreturn_t
571ether3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 571ether3_interrupt(int irq, void *dev_id)
572{ 572{
573 struct net_device *dev = (struct net_device *)dev_id; 573 struct net_device *dev = (struct net_device *)dev_id;
574 unsigned int status, handled = IRQ_NONE; 574 unsigned int status, handled = IRQ_NONE;
diff --git a/drivers/net/at1700.c b/drivers/net/at1700.c
index 4aeca11f3ee2..8620a5b470f5 100644
--- a/drivers/net/at1700.c
+++ b/drivers/net/at1700.c
@@ -161,7 +161,7 @@ static int at1700_probe1(struct net_device *dev, int ioaddr);
161static int read_eeprom(long ioaddr, int location); 161static int read_eeprom(long ioaddr, int location);
162static int net_open(struct net_device *dev); 162static int net_open(struct net_device *dev);
163static int net_send_packet(struct sk_buff *skb, struct net_device *dev); 163static int net_send_packet(struct sk_buff *skb, struct net_device *dev);
164static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs *regs); 164static irqreturn_t net_interrupt(int irq, void *dev_id);
165static void net_rx(struct net_device *dev); 165static void net_rx(struct net_device *dev);
166static int net_close(struct net_device *dev); 166static int net_close(struct net_device *dev);
167static struct net_device_stats *net_get_stats(struct net_device *dev); 167static struct net_device_stats *net_get_stats(struct net_device *dev);
@@ -648,8 +648,7 @@ static int net_send_packet (struct sk_buff *skb, struct net_device *dev)
648 648
649/* The typical workload of the driver: 649/* The typical workload of the driver:
650 Handle the network interface interrupts. */ 650 Handle the network interface interrupts. */
651static irqreturn_t 651static irqreturn_t net_interrupt(int irq, void *dev_id)
652net_interrupt(int irq, void *dev_id, struct pt_regs *regs)
653{ 652{
654 struct net_device *dev = dev_id; 653 struct net_device *dev = dev_id;
655 struct net_local *lp; 654 struct net_local *lp;
diff --git a/drivers/net/atari_bionet.c b/drivers/net/atari_bionet.c
index 92b52138acad..4e3bf6a1f22c 100644
--- a/drivers/net/atari_bionet.c
+++ b/drivers/net/atari_bionet.c
@@ -220,7 +220,7 @@ gsend:
220} 220}
221 221
222static irqreturn_t 222static irqreturn_t
223bionet_intr(int irq, void *data, struct pt_regs *fp) { 223bionet_intr(int irq, void *data) {
224 return IRQ_HANDLED; 224 return IRQ_HANDLED;
225} 225}
226 226
diff --git a/drivers/net/atari_pamsnet.c b/drivers/net/atari_pamsnet.c
index a1026251b933..3b5436149286 100644
--- a/drivers/net/atari_pamsnet.c
+++ b/drivers/net/atari_pamsnet.c
@@ -163,7 +163,7 @@ static int pamsnet_close(struct net_device *dev);
163static struct net_device_stats *net_get_stats(struct net_device *dev); 163static struct net_device_stats *net_get_stats(struct net_device *dev);
164static void pamsnet_tick(unsigned long); 164static void pamsnet_tick(unsigned long);
165 165
166static irqreturn_t pamsnet_intr(int irq, void *data, struct pt_regs *fp); 166static irqreturn_t pamsnet_intr(int irq, void *data);
167 167
168static DEFINE_TIMER(pamsnet_timer, pamsnet_tick, 0, 0); 168static DEFINE_TIMER(pamsnet_timer, pamsnet_tick, 0, 0);
169 169
@@ -494,7 +494,6 @@ static irqreturn_t
494pamsnet_intr(irq, data, fp) 494pamsnet_intr(irq, data, fp)
495 int irq; 495 int irq;
496 void *data; 496 void *data;
497 struct pt_regs *fp;
498{ 497{
499 return IRQ_HANDLED; 498 return IRQ_HANDLED;
500} 499}
diff --git a/drivers/net/atarilance.c b/drivers/net/atarilance.c
index b6570ca6ada7..d79489e46249 100644
--- a/drivers/net/atarilance.c
+++ b/drivers/net/atarilance.c
@@ -344,7 +344,7 @@ static unsigned long lance_probe1( struct net_device *dev, struct lance_addr
344static int lance_open( struct net_device *dev ); 344static int lance_open( struct net_device *dev );
345static void lance_init_ring( struct net_device *dev ); 345static void lance_init_ring( struct net_device *dev );
346static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev ); 346static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev );
347static irqreturn_t lance_interrupt( int irq, void *dev_id, struct pt_regs *fp ); 347static irqreturn_t lance_interrupt( int irq, void *dev_id );
348static int lance_rx( struct net_device *dev ); 348static int lance_rx( struct net_device *dev );
349static int lance_close( struct net_device *dev ); 349static int lance_close( struct net_device *dev );
350static struct net_device_stats *lance_get_stats( struct net_device *dev ); 350static struct net_device_stats *lance_get_stats( struct net_device *dev );
@@ -866,7 +866,7 @@ static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
866 866
867/* The LANCE interrupt handler. */ 867/* The LANCE interrupt handler. */
868 868
869static irqreturn_t lance_interrupt( int irq, void *dev_id, struct pt_regs *fp) 869static irqreturn_t lance_interrupt( int irq, void *dev_id )
870{ 870{
871 struct net_device *dev = dev_id; 871 struct net_device *dev = dev_id;
872 struct lance_private *lp; 872 struct lance_private *lp;
diff --git a/drivers/net/atp.c b/drivers/net/atp.c
index f2c8e0d5497b..2d306fcb7f36 100644
--- a/drivers/net/atp.c
+++ b/drivers/net/atp.c
@@ -203,7 +203,7 @@ static void hardware_init(struct net_device *dev);
203static void write_packet(long ioaddr, int length, unsigned char *packet, int pad, int mode); 203static void write_packet(long ioaddr, int length, unsigned char *packet, int pad, int mode);
204static void trigger_send(long ioaddr, int length); 204static void trigger_send(long ioaddr, int length);
205static int atp_send_packet(struct sk_buff *skb, struct net_device *dev); 205static int atp_send_packet(struct sk_buff *skb, struct net_device *dev);
206static irqreturn_t atp_interrupt(int irq, void *dev_id, struct pt_regs *regs); 206static irqreturn_t atp_interrupt(int irq, void *dev_id);
207static void net_rx(struct net_device *dev); 207static void net_rx(struct net_device *dev);
208static void read_block(long ioaddr, int length, unsigned char *buffer, int data_mode); 208static void read_block(long ioaddr, int length, unsigned char *buffer, int data_mode);
209static int net_close(struct net_device *dev); 209static int net_close(struct net_device *dev);
@@ -596,20 +596,15 @@ static int atp_send_packet(struct sk_buff *skb, struct net_device *dev)
596 596
597/* The typical workload of the driver: 597/* The typical workload of the driver:
598 Handle the network interface interrupts. */ 598 Handle the network interface interrupts. */
599static irqreturn_t 599static irqreturn_t atp_interrupt(int irq, void *dev_instance)
600atp_interrupt(int irq, void *dev_instance, struct pt_regs * regs)
601{ 600{
602 struct net_device *dev = (struct net_device *)dev_instance; 601 struct net_device *dev = dev_instance;
603 struct net_local *lp; 602 struct net_local *lp;
604 long ioaddr; 603 long ioaddr;
605 static int num_tx_since_rx; 604 static int num_tx_since_rx;
606 int boguscount = max_interrupt_work; 605 int boguscount = max_interrupt_work;
607 int handled = 0; 606 int handled = 0;
608 607
609 if (dev == NULL) {
610 printk(KERN_ERR "ATP_interrupt(): irq %d for unknown device.\n", irq);
611 return IRQ_NONE;
612 }
613 ioaddr = dev->base_addr; 608 ioaddr = dev->base_addr;
614 lp = netdev_priv(dev); 609 lp = netdev_priv(dev);
615 610
diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
index ac33b1b9cf4a..4873dc610d22 100644
--- a/drivers/net/au1000_eth.c
+++ b/drivers/net/au1000_eth.c
@@ -89,7 +89,7 @@ static int au1000_open(struct net_device *);
89static int au1000_close(struct net_device *); 89static int au1000_close(struct net_device *);
90static int au1000_tx(struct sk_buff *, struct net_device *); 90static int au1000_tx(struct sk_buff *, struct net_device *);
91static int au1000_rx(struct net_device *); 91static int au1000_rx(struct net_device *);
92static irqreturn_t au1000_interrupt(int, void *, struct pt_regs *); 92static irqreturn_t au1000_interrupt(int, void *);
93static void au1000_tx_timeout(struct net_device *); 93static void au1000_tx_timeout(struct net_device *);
94static void set_rx_mode(struct net_device *); 94static void set_rx_mode(struct net_device *);
95static struct net_device_stats *au1000_get_stats(struct net_device *); 95static struct net_device_stats *au1000_get_stats(struct net_device *);
@@ -1253,7 +1253,7 @@ static int au1000_rx(struct net_device *dev)
1253/* 1253/*
1254 * Au1000 interrupt service routine. 1254 * Au1000 interrupt service routine.
1255 */ 1255 */
1256static irqreturn_t au1000_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1256static irqreturn_t au1000_interrupt(int irq, void *dev_id)
1257{ 1257{
1258 struct net_device *dev = (struct net_device *) dev_id; 1258 struct net_device *dev = (struct net_device *) dev_id;
1259 1259
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index 973b8eb37dc2..ebb726e655ac 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -896,7 +896,7 @@ static int b44_poll(struct net_device *netdev, int *budget)
896 return (done ? 0 : 1); 896 return (done ? 0 : 1);
897} 897}
898 898
899static irqreturn_t b44_interrupt(int irq, void *dev_id, struct pt_regs *regs) 899static irqreturn_t b44_interrupt(int irq, void *dev_id)
900{ 900{
901 struct net_device *dev = dev_id; 901 struct net_device *dev = dev_id;
902 struct b44 *bp = netdev_priv(dev); 902 struct b44 *bp = netdev_priv(dev);
@@ -1461,7 +1461,7 @@ out:
1461static void b44_poll_controller(struct net_device *dev) 1461static void b44_poll_controller(struct net_device *dev)
1462{ 1462{
1463 disable_irq(dev->irq); 1463 disable_irq(dev->irq);
1464 b44_interrupt(dev->irq, dev, NULL); 1464 b44_interrupt(dev->irq, dev);
1465 enable_irq(dev->irq); 1465 enable_irq(dev->irq);
1466} 1466}
1467#endif 1467#endif
diff --git a/drivers/net/bmac.c b/drivers/net/bmac.c
index 4adfe7b77031..4528ce9c4e43 100644
--- a/drivers/net/bmac.c
+++ b/drivers/net/bmac.c
@@ -152,9 +152,9 @@ static void bmac_init_chip(struct net_device *dev);
152static void bmac_init_registers(struct net_device *dev); 152static void bmac_init_registers(struct net_device *dev);
153static void bmac_enable_and_reset_chip(struct net_device *dev); 153static void bmac_enable_and_reset_chip(struct net_device *dev);
154static int bmac_set_address(struct net_device *dev, void *addr); 154static int bmac_set_address(struct net_device *dev, void *addr);
155static irqreturn_t bmac_misc_intr(int irq, void *dev_id, struct pt_regs *regs); 155static irqreturn_t bmac_misc_intr(int irq, void *dev_id);
156static irqreturn_t bmac_txdma_intr(int irq, void *dev_id, struct pt_regs *regs); 156static irqreturn_t bmac_txdma_intr(int irq, void *dev_id);
157static irqreturn_t bmac_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs); 157static irqreturn_t bmac_rxdma_intr(int irq, void *dev_id);
158static void bmac_set_timeout(struct net_device *dev); 158static void bmac_set_timeout(struct net_device *dev);
159static void bmac_tx_timeout(unsigned long data); 159static void bmac_tx_timeout(unsigned long data);
160static int bmac_output(struct sk_buff *skb, struct net_device *dev); 160static int bmac_output(struct sk_buff *skb, struct net_device *dev);
@@ -688,7 +688,7 @@ static int bmac_transmit_packet(struct sk_buff *skb, struct net_device *dev)
688 688
689static int rxintcount; 689static int rxintcount;
690 690
691static irqreturn_t bmac_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs) 691static irqreturn_t bmac_rxdma_intr(int irq, void *dev_id)
692{ 692{
693 struct net_device *dev = (struct net_device *) dev_id; 693 struct net_device *dev = (struct net_device *) dev_id;
694 struct bmac_data *bp = netdev_priv(dev); 694 struct bmac_data *bp = netdev_priv(dev);
@@ -765,7 +765,7 @@ static irqreturn_t bmac_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs)
765 765
766static int txintcount; 766static int txintcount;
767 767
768static irqreturn_t bmac_txdma_intr(int irq, void *dev_id, struct pt_regs *regs) 768static irqreturn_t bmac_txdma_intr(int irq, void *dev_id)
769{ 769{
770 struct net_device *dev = (struct net_device *) dev_id; 770 struct net_device *dev = (struct net_device *) dev_id;
771 struct bmac_data *bp = netdev_priv(dev); 771 struct bmac_data *bp = netdev_priv(dev);
@@ -1082,7 +1082,7 @@ static void bmac_set_multicast(struct net_device *dev)
1082 1082
1083static int miscintcount; 1083static int miscintcount;
1084 1084
1085static irqreturn_t bmac_misc_intr(int irq, void *dev_id, struct pt_regs *regs) 1085static irqreturn_t bmac_misc_intr(int irq, void *dev_id)
1086{ 1086{
1087 struct net_device *dev = (struct net_device *) dev_id; 1087 struct net_device *dev = (struct net_device *) dev_id;
1088 struct bmac_data *bp = netdev_priv(dev); 1088 struct bmac_data *bp = netdev_priv(dev);
@@ -1091,7 +1091,7 @@ static irqreturn_t bmac_misc_intr(int irq, void *dev_id, struct pt_regs *regs)
1091 XXDEBUG(("bmac_misc_intr\n")); 1091 XXDEBUG(("bmac_misc_intr\n"));
1092 } 1092 }
1093 /* XXDEBUG(("bmac_misc_intr, status=%#08x\n", status)); */ 1093 /* XXDEBUG(("bmac_misc_intr, status=%#08x\n", status)); */
1094 /* bmac_txdma_intr_inner(irq, dev_id, regs); */ 1094 /* bmac_txdma_intr_inner(irq, dev_id); */
1095 /* if (status & FrameReceived) bp->stats.rx_dropped++; */ 1095 /* if (status & FrameReceived) bp->stats.rx_dropped++; */
1096 if (status & RxErrorMask) bp->stats.rx_errors++; 1096 if (status & RxErrorMask) bp->stats.rx_errors++;
1097 if (status & RxCRCCntExp) bp->stats.rx_crc_errors++; 1097 if (status & RxCRCCntExp) bp->stats.rx_crc_errors++;
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 6b4edb63c4c4..01b76d3aa42f 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -1888,7 +1888,7 @@ next_rx:
1888 * is that the MSI interrupt is always serviced. 1888 * is that the MSI interrupt is always serviced.
1889 */ 1889 */
1890static irqreturn_t 1890static irqreturn_t
1891bnx2_msi(int irq, void *dev_instance, struct pt_regs *regs) 1891bnx2_msi(int irq, void *dev_instance)
1892{ 1892{
1893 struct net_device *dev = dev_instance; 1893 struct net_device *dev = dev_instance;
1894 struct bnx2 *bp = netdev_priv(dev); 1894 struct bnx2 *bp = netdev_priv(dev);
@@ -1908,7 +1908,7 @@ bnx2_msi(int irq, void *dev_instance, struct pt_regs *regs)
1908} 1908}
1909 1909
1910static irqreturn_t 1910static irqreturn_t
1911bnx2_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 1911bnx2_interrupt(int irq, void *dev_instance)
1912{ 1912{
1913 struct net_device *dev = dev_instance; 1913 struct net_device *dev = dev_instance;
1914 struct bnx2 *bp = netdev_priv(dev); 1914 struct bnx2 *bp = netdev_priv(dev);
@@ -5554,7 +5554,7 @@ poll_bnx2(struct net_device *dev)
5554 struct bnx2 *bp = netdev_priv(dev); 5554 struct bnx2 *bp = netdev_priv(dev);
5555 5555
5556 disable_irq(bp->pdev->irq); 5556 disable_irq(bp->pdev->irq);
5557 bnx2_interrupt(bp->pdev->irq, dev, NULL); 5557 bnx2_interrupt(bp->pdev->irq, dev);
5558 enable_irq(bp->pdev->irq); 5558 enable_irq(bp->pdev->irq);
5559} 5559}
5560#endif 5560#endif
diff --git a/drivers/net/cassini.c b/drivers/net/cassini.c
index 7694365092f8..521c5b71023c 100644
--- a/drivers/net/cassini.c
+++ b/drivers/net/cassini.c
@@ -2469,7 +2469,7 @@ static inline void cas_handle_irqN(struct net_device *dev,
2469 cas_post_rxcs_ringN(dev, cp, ring); 2469 cas_post_rxcs_ringN(dev, cp, ring);
2470} 2470}
2471 2471
2472static irqreturn_t cas_interruptN(int irq, void *dev_id, struct pt_regs *regs) 2472static irqreturn_t cas_interruptN(int irq, void *dev_id)
2473{ 2473{
2474 struct net_device *dev = dev_id; 2474 struct net_device *dev = dev_id;
2475 struct cas *cp = netdev_priv(dev); 2475 struct cas *cp = netdev_priv(dev);
@@ -2522,7 +2522,7 @@ static inline void cas_handle_irq1(struct cas *cp, const u32 status)
2522} 2522}
2523 2523
2524/* ring 2 handles a few more events than 3 and 4 */ 2524/* ring 2 handles a few more events than 3 and 4 */
2525static irqreturn_t cas_interrupt1(int irq, void *dev_id, struct pt_regs *regs) 2525static irqreturn_t cas_interrupt1(int irq, void *dev_id)
2526{ 2526{
2527 struct net_device *dev = dev_id; 2527 struct net_device *dev = dev_id;
2528 struct cas *cp = netdev_priv(dev); 2528 struct cas *cp = netdev_priv(dev);
@@ -2574,7 +2574,7 @@ static inline void cas_handle_irq(struct net_device *dev,
2574 cas_post_rxcs_ringN(dev, cp, 0); 2574 cas_post_rxcs_ringN(dev, cp, 0);
2575} 2575}
2576 2576
2577static irqreturn_t cas_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2577static irqreturn_t cas_interrupt(int irq, void *dev_id)
2578{ 2578{
2579 struct net_device *dev = dev_id; 2579 struct net_device *dev = dev_id;
2580 struct cas *cp = netdev_priv(dev); 2580 struct cas *cp = netdev_priv(dev);
@@ -2689,7 +2689,7 @@ static void cas_netpoll(struct net_device *dev)
2689 struct cas *cp = netdev_priv(dev); 2689 struct cas *cp = netdev_priv(dev);
2690 2690
2691 cas_disable_irq(cp, 0); 2691 cas_disable_irq(cp, 0);
2692 cas_interrupt(cp->pdev->irq, dev, NULL); 2692 cas_interrupt(cp->pdev->irq, dev);
2693 cas_enable_irq(cp, 0); 2693 cas_enable_irq(cp, 0);
2694 2694
2695#ifdef USE_PCI_INTB 2695#ifdef USE_PCI_INTB
diff --git a/drivers/net/chelsio/cpl5_cmd.h b/drivers/net/chelsio/cpl5_cmd.h
index 27925e487bcf..5b357d9e88d6 100644
--- a/drivers/net/chelsio/cpl5_cmd.h
+++ b/drivers/net/chelsio/cpl5_cmd.h
@@ -108,7 +108,7 @@ struct cpl_tx_pkt_lso {
108 u8 iff:4; 108 u8 iff:4;
109#endif 109#endif
110 u16 vlan; 110 u16 vlan;
111 u32 len; 111 __be32 len;
112 112
113 u32 rsvd2; 113 u32 rsvd2;
114 u8 rsvd3; 114 u8 rsvd3;
@@ -119,7 +119,7 @@ struct cpl_tx_pkt_lso {
119 u8 ip_hdr_words:4; 119 u8 ip_hdr_words:4;
120 u8 tcp_hdr_words:4; 120 u8 tcp_hdr_words:4;
121#endif 121#endif
122 u16 eth_type_mss; 122 __be16 eth_type_mss;
123}; 123};
124 124
125struct cpl_rx_pkt { 125struct cpl_rx_pkt {
@@ -138,7 +138,7 @@ struct cpl_rx_pkt {
138 u8 iff:4; 138 u8 iff:4;
139#endif 139#endif
140 u16 csum; 140 u16 csum;
141 u16 vlan; 141 __be16 vlan;
142 u16 len; 142 u16 len;
143}; 143};
144 144
diff --git a/drivers/net/chelsio/cxgb2.c b/drivers/net/chelsio/cxgb2.c
index 5f1b06753462..ad7ff9641a7e 100644
--- a/drivers/net/chelsio/cxgb2.c
+++ b/drivers/net/chelsio/cxgb2.c
@@ -918,7 +918,7 @@ static void t1_netpoll(struct net_device *dev)
918 struct adapter *adapter = dev->priv; 918 struct adapter *adapter = dev->priv;
919 919
920 local_irq_save(flags); 920 local_irq_save(flags);
921 t1_select_intr_handler(adapter)(adapter->pdev->irq, adapter, NULL); 921 t1_select_intr_handler(adapter)(adapter->pdev->irq, adapter);
922 local_irq_restore(flags); 922 local_irq_restore(flags);
923} 923}
924#endif 924#endif
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c
index ddd0bdb498f4..9799c12380fc 100644
--- a/drivers/net/chelsio/sge.c
+++ b/drivers/net/chelsio/sge.c
@@ -1217,7 +1217,7 @@ static inline int napi_is_scheduled(struct net_device *dev)
1217/* 1217/*
1218 * NAPI version of the main interrupt handler. 1218 * NAPI version of the main interrupt handler.
1219 */ 1219 */
1220static irqreturn_t t1_interrupt_napi(int irq, void *data, struct pt_regs *regs) 1220static irqreturn_t t1_interrupt_napi(int irq, void *data)
1221{ 1221{
1222 int handled; 1222 int handled;
1223 struct adapter *adapter = data; 1223 struct adapter *adapter = data;
@@ -1279,7 +1279,7 @@ static irqreturn_t t1_interrupt_napi(int irq, void *data, struct pt_regs *regs)
1279 * 5. If we took an interrupt, but no valid respQ descriptors was found we 1279 * 5. If we took an interrupt, but no valid respQ descriptors was found we
1280 * let the slow_intr_handler run and do error handling. 1280 * let the slow_intr_handler run and do error handling.
1281 */ 1281 */
1282static irqreturn_t t1_interrupt(int irq, void *cookie, struct pt_regs *regs) 1282static irqreturn_t t1_interrupt(int irq, void *cookie)
1283{ 1283{
1284 int work_done; 1284 int work_done;
1285 struct respQ_e *e; 1285 struct respQ_e *e;
@@ -1312,7 +1312,7 @@ static irqreturn_t t1_interrupt(int irq, void *cookie, struct pt_regs *regs)
1312 return IRQ_RETVAL(work_done != 0); 1312 return IRQ_RETVAL(work_done != 0);
1313} 1313}
1314 1314
1315intr_handler_t t1_select_intr_handler(adapter_t *adapter) 1315irq_handler_t t1_select_intr_handler(adapter_t *adapter)
1316{ 1316{
1317 return adapter->params.sge.polling ? t1_interrupt_napi : t1_interrupt; 1317 return adapter->params.sge.polling ? t1_interrupt_napi : t1_interrupt;
1318} 1318}
diff --git a/drivers/net/chelsio/sge.h b/drivers/net/chelsio/sge.h
index 6d0d24a6364f..91af47bab7be 100644
--- a/drivers/net/chelsio/sge.h
+++ b/drivers/net/chelsio/sge.h
@@ -43,13 +43,6 @@
43#include <linux/interrupt.h> 43#include <linux/interrupt.h>
44#include <asm/byteorder.h> 44#include <asm/byteorder.h>
45 45
46#ifndef IRQ_RETVAL
47#define IRQ_RETVAL(x)
48typedef void irqreturn_t;
49#endif
50
51typedef irqreturn_t (*intr_handler_t)(int, void *, struct pt_regs *);
52
53struct sge_intr_counts { 46struct sge_intr_counts {
54 unsigned int respQ_empty; /* # times respQ empty */ 47 unsigned int respQ_empty; /* # times respQ empty */
55 unsigned int respQ_overflow; /* # respQ overflow (fatal) */ 48 unsigned int respQ_overflow; /* # respQ overflow (fatal) */
@@ -88,7 +81,7 @@ struct sge *t1_sge_create(struct adapter *, struct sge_params *);
88int t1_sge_configure(struct sge *, struct sge_params *); 81int t1_sge_configure(struct sge *, struct sge_params *);
89int t1_sge_set_coalesce_params(struct sge *, struct sge_params *); 82int t1_sge_set_coalesce_params(struct sge *, struct sge_params *);
90void t1_sge_destroy(struct sge *); 83void t1_sge_destroy(struct sge *);
91intr_handler_t t1_select_intr_handler(adapter_t *adapter); 84irq_handler_t t1_select_intr_handler(adapter_t *adapter);
92int t1_start_xmit(struct sk_buff *skb, struct net_device *dev); 85int t1_start_xmit(struct sk_buff *skb, struct net_device *dev);
93void t1_set_vlan_accel(struct adapter *adapter, int on_off); 86void t1_set_vlan_accel(struct adapter *adapter, int on_off);
94void t1_sge_start(struct sge *); 87void t1_sge_start(struct sge *);
diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index f1501b6f247e..966b563e42bb 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -403,8 +403,8 @@ static int etrax_ethernet_init(void);
403static int e100_open(struct net_device *dev); 403static int e100_open(struct net_device *dev);
404static int e100_set_mac_address(struct net_device *dev, void *addr); 404static int e100_set_mac_address(struct net_device *dev, void *addr);
405static int e100_send_packet(struct sk_buff *skb, struct net_device *dev); 405static int e100_send_packet(struct sk_buff *skb, struct net_device *dev);
406static irqreturn_t e100rxtx_interrupt(int irq, void *dev_id, struct pt_regs *regs); 406static irqreturn_t e100rxtx_interrupt(int irq, void *dev_id);
407static irqreturn_t e100nw_interrupt(int irq, void *dev_id, struct pt_regs *regs); 407static irqreturn_t e100nw_interrupt(int irq, void *dev_id);
408static void e100_rx(struct net_device *dev); 408static void e100_rx(struct net_device *dev);
409static int e100_close(struct net_device *dev); 409static int e100_close(struct net_device *dev);
410static int e100_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); 410static int e100_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
@@ -1197,7 +1197,7 @@ e100_send_packet(struct sk_buff *skb, struct net_device *dev)
1197 */ 1197 */
1198 1198
1199static irqreturn_t 1199static irqreturn_t
1200e100rxtx_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1200e100rxtx_interrupt(int irq, void *dev_id)
1201{ 1201{
1202 struct net_device *dev = (struct net_device *)dev_id; 1202 struct net_device *dev = (struct net_device *)dev_id;
1203 struct net_local *np = (struct net_local *)dev->priv; 1203 struct net_local *np = (struct net_local *)dev->priv;
@@ -1264,7 +1264,7 @@ e100rxtx_interrupt(int irq, void *dev_id, struct pt_regs * regs)
1264} 1264}
1265 1265
1266static irqreturn_t 1266static irqreturn_t
1267e100nw_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1267e100nw_interrupt(int irq, void *dev_id)
1268{ 1268{
1269 struct net_device *dev = (struct net_device *)dev_id; 1269 struct net_device *dev = (struct net_device *)dev_id;
1270 struct net_local *np = (struct net_local *)dev->priv; 1270 struct net_local *np = (struct net_local *)dev->priv;
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
index e4d50f0de930..4ffc9b44a8e1 100644
--- a/drivers/net/cs89x0.c
+++ b/drivers/net/cs89x0.c
@@ -249,7 +249,7 @@ struct net_local {
249static int cs89x0_probe1(struct net_device *dev, int ioaddr, int modular); 249static int cs89x0_probe1(struct net_device *dev, int ioaddr, int modular);
250static int net_open(struct net_device *dev); 250static int net_open(struct net_device *dev);
251static int net_send_packet(struct sk_buff *skb, struct net_device *dev); 251static int net_send_packet(struct sk_buff *skb, struct net_device *dev);
252static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs *regs); 252static irqreturn_t net_interrupt(int irq, void *dev_id);
253static void set_multicast_list(struct net_device *dev); 253static void set_multicast_list(struct net_device *dev);
254static void net_timeout(struct net_device *dev); 254static void net_timeout(struct net_device *dev);
255static void net_rx(struct net_device *dev); 255static void net_rx(struct net_device *dev);
@@ -495,7 +495,7 @@ get_eeprom_cksum(int off, int len, int *buffer)
495static void net_poll_controller(struct net_device *dev) 495static void net_poll_controller(struct net_device *dev)
496{ 496{
497 disable_irq(dev->irq); 497 disable_irq(dev->irq);
498 net_interrupt(dev->irq, dev, NULL); 498 net_interrupt(dev->irq, dev);
499 enable_irq(dev->irq); 499 enable_irq(dev->irq);
500} 500}
501#endif 501#endif
@@ -1573,7 +1573,7 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev)
1573/* The typical workload of the driver: 1573/* The typical workload of the driver:
1574 Handle the network interface interrupts. */ 1574 Handle the network interface interrupts. */
1575 1575
1576static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1576static irqreturn_t net_interrupt(int irq, void *dev_id)
1577{ 1577{
1578 struct net_device *dev = dev_id; 1578 struct net_device *dev = dev_id;
1579 struct net_local *lp; 1579 struct net_local *lp;
diff --git a/drivers/net/de600.c b/drivers/net/de600.c
index 0b930da5d47d..690bb40b353d 100644
--- a/drivers/net/de600.c
+++ b/drivers/net/de600.c
@@ -258,19 +258,13 @@ static int de600_start_xmit(struct sk_buff *skb, struct net_device *dev)
258 * Handle the network interface interrupts. 258 * Handle the network interface interrupts.
259 */ 259 */
260 260
261static irqreturn_t de600_interrupt(int irq, void *dev_id, struct pt_regs * regs) 261static irqreturn_t de600_interrupt(int irq, void *dev_id)
262{ 262{
263 struct net_device *dev = dev_id; 263 struct net_device *dev = dev_id;
264 u8 irq_status; 264 u8 irq_status;
265 int retrig = 0; 265 int retrig = 0;
266 int boguscount = 0; 266 int boguscount = 0;
267 267
268 /* This might just as well be deleted now, no crummy drivers present :-) */
269 if ((dev == NULL) || (DE600_IRQ != irq)) {
270 printk(KERN_ERR "%s: bogus interrupt %d\n", dev?dev->name:"DE-600", irq);
271 return IRQ_NONE;
272 }
273
274 spin_lock(&de600_lock); 268 spin_lock(&de600_lock);
275 269
276 select_nic(); 270 select_nic();
diff --git a/drivers/net/de600.h b/drivers/net/de600.h
index e4073015dcd8..1288e48ba704 100644
--- a/drivers/net/de600.h
+++ b/drivers/net/de600.h
@@ -125,7 +125,7 @@ static struct net_device_stats *get_stats(struct net_device *dev);
125static int de600_start_xmit(struct sk_buff *skb, struct net_device *dev); 125static int de600_start_xmit(struct sk_buff *skb, struct net_device *dev);
126 126
127/* Dispatch from interrupts. */ 127/* Dispatch from interrupts. */
128static irqreturn_t de600_interrupt(int irq, void *dev_id, struct pt_regs *regs); 128static irqreturn_t de600_interrupt(int irq, void *dev_id);
129static int de600_tx_intr(struct net_device *dev, int irq_status); 129static int de600_tx_intr(struct net_device *dev, int irq_status);
130static void de600_rx_intr(struct net_device *dev); 130static void de600_rx_intr(struct net_device *dev);
131 131
diff --git a/drivers/net/de620.c b/drivers/net/de620.c
index a18d4d14b665..b6ad0cb50552 100644
--- a/drivers/net/de620.c
+++ b/drivers/net/de620.c
@@ -221,7 +221,7 @@ static void de620_set_multicast_list(struct net_device *);
221static int de620_start_xmit(struct sk_buff *, struct net_device *); 221static int de620_start_xmit(struct sk_buff *, struct net_device *);
222 222
223/* Dispatch from interrupts. */ 223/* Dispatch from interrupts. */
224static irqreturn_t de620_interrupt(int, void *, struct pt_regs *); 224static irqreturn_t de620_interrupt(int, void *);
225static int de620_rx_intr(struct net_device *); 225static int de620_rx_intr(struct net_device *);
226 226
227/* Initialization */ 227/* Initialization */
@@ -591,7 +591,7 @@ static int de620_start_xmit(struct sk_buff *skb, struct net_device *dev)
591 * 591 *
592 */ 592 */
593static irqreturn_t 593static irqreturn_t
594de620_interrupt(int irq_in, void *dev_id, struct pt_regs *regs) 594de620_interrupt(int irq_in, void *dev_id)
595{ 595{
596 struct net_device *dev = dev_id; 596 struct net_device *dev = dev_id;
597 byte irq_status; 597 byte irq_status;
diff --git a/drivers/net/declance.c b/drivers/net/declance.c
index bbccd741cdbf..00e2a8a134d7 100644
--- a/drivers/net/declance.c
+++ b/drivers/net/declance.c
@@ -694,19 +694,17 @@ out:
694 spin_unlock(&lp->lock); 694 spin_unlock(&lp->lock);
695} 695}
696 696
697static irqreturn_t lance_dma_merr_int(const int irq, void *dev_id, 697static irqreturn_t lance_dma_merr_int(const int irq, void *dev_id)
698 struct pt_regs *regs)
699{ 698{
700 struct net_device *dev = (struct net_device *) dev_id; 699 struct net_device *dev = dev_id;
701 700
702 printk("%s: DMA error\n", dev->name); 701 printk("%s: DMA error\n", dev->name);
703 return IRQ_HANDLED; 702 return IRQ_HANDLED;
704} 703}
705 704
706static irqreturn_t lance_interrupt(const int irq, void *dev_id, 705static irqreturn_t lance_interrupt(const int irq, void *dev_id)
707 struct pt_regs *regs)
708{ 706{
709 struct net_device *dev = (struct net_device *) dev_id; 707 struct net_device *dev = dev_id;
710 struct lance_private *lp = netdev_priv(dev); 708 struct lance_private *lp = netdev_priv(dev);
711 volatile struct lance_regs *ll = lp->ll; 709 volatile struct lance_regs *ll = lp->ll;
712 int csr0; 710 int csr0;
diff --git a/drivers/net/defxx.c b/drivers/net/defxx.c
index ae9680552b82..8f514cc0debd 100644
--- a/drivers/net/defxx.c
+++ b/drivers/net/defxx.c
@@ -248,8 +248,7 @@ static int dfx_close(struct net_device *dev);
248static void dfx_int_pr_halt_id(DFX_board_t *bp); 248static void dfx_int_pr_halt_id(DFX_board_t *bp);
249static void dfx_int_type_0_process(DFX_board_t *bp); 249static void dfx_int_type_0_process(DFX_board_t *bp);
250static void dfx_int_common(struct net_device *dev); 250static void dfx_int_common(struct net_device *dev);
251static irqreturn_t dfx_interrupt(int irq, void *dev_id, 251static irqreturn_t dfx_interrupt(int irq, void *dev_id);
252 struct pt_regs *regs);
253 252
254static struct net_device_stats *dfx_ctl_get_stats(struct net_device *dev); 253static struct net_device_stats *dfx_ctl_get_stats(struct net_device *dev);
255static void dfx_ctl_set_multicast_list(struct net_device *dev); 254static void dfx_ctl_set_multicast_list(struct net_device *dev);
@@ -1693,7 +1692,6 @@ static void dfx_int_common(struct net_device *dev)
1693 * Arguments: 1692 * Arguments:
1694 * irq - interrupt vector 1693 * irq - interrupt vector
1695 * dev_id - pointer to device information 1694 * dev_id - pointer to device information
1696 * regs - pointer to registers structure
1697 * 1695 *
1698 * Functional Description: 1696 * Functional Description:
1699 * This routine calls the interrupt processing routine for this adapter. It 1697 * This routine calls the interrupt processing routine for this adapter. It
@@ -1716,7 +1714,7 @@ static void dfx_int_common(struct net_device *dev)
1716 * Interrupts are disabled, then reenabled at the adapter. 1714 * Interrupts are disabled, then reenabled at the adapter.
1717 */ 1715 */
1718 1716
1719static irqreturn_t dfx_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1717static irqreturn_t dfx_interrupt(int irq, void *dev_id)
1720{ 1718{
1721 struct net_device *dev = dev_id; 1719 struct net_device *dev = dev_id;
1722 DFX_board_t *bp; /* private board structure pointer */ 1720 DFX_board_t *bp; /* private board structure pointer */
diff --git a/drivers/net/depca.c b/drivers/net/depca.c
index af594664df51..f87f6e3dc721 100644
--- a/drivers/net/depca.c
+++ b/drivers/net/depca.c
@@ -518,7 +518,7 @@ struct depca_private {
518*/ 518*/
519static int depca_open(struct net_device *dev); 519static int depca_open(struct net_device *dev);
520static int depca_start_xmit(struct sk_buff *skb, struct net_device *dev); 520static int depca_start_xmit(struct sk_buff *skb, struct net_device *dev);
521static irqreturn_t depca_interrupt(int irq, void *dev_id, struct pt_regs *regs); 521static irqreturn_t depca_interrupt(int irq, void *dev_id);
522static int depca_close(struct net_device *dev); 522static int depca_close(struct net_device *dev);
523static int depca_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 523static int depca_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
524static void depca_tx_timeout(struct net_device *dev); 524static void depca_tx_timeout(struct net_device *dev);
@@ -965,7 +965,7 @@ static int depca_start_xmit(struct sk_buff *skb, struct net_device *dev)
965/* 965/*
966** The DEPCA interrupt handler. 966** The DEPCA interrupt handler.
967*/ 967*/
968static irqreturn_t depca_interrupt(int irq, void *dev_id, struct pt_regs *regs) 968static irqreturn_t depca_interrupt(int irq, void *dev_id)
969{ 969{
970 struct net_device *dev = dev_id; 970 struct net_device *dev = dev_id;
971 struct depca_private *lp; 971 struct depca_private *lp;
diff --git a/drivers/net/dgrs.c b/drivers/net/dgrs.c
index d0842527b369..a79520295fd0 100644
--- a/drivers/net/dgrs.c
+++ b/drivers/net/dgrs.c
@@ -895,10 +895,10 @@ static int dgrs_ioctl(struct net_device *devN, struct ifreq *ifr, int cmd)
895 * dev, priv will always refer to the 0th device in Multi-NIC mode. 895 * dev, priv will always refer to the 0th device in Multi-NIC mode.
896 */ 896 */
897 897
898static irqreturn_t dgrs_intr(int irq, void *dev_id, struct pt_regs *regs) 898static irqreturn_t dgrs_intr(int irq, void *dev_id)
899{ 899{
900 struct net_device *dev0 = (struct net_device *) dev_id; 900 struct net_device *dev0 = dev_id;
901 DGRS_PRIV *priv0 = (DGRS_PRIV *) dev0->priv; 901 DGRS_PRIV *priv0 = dev0->priv;
902 I596_CB *cbp; 902 I596_CB *cbp;
903 int cmd; 903 int cmd;
904 int i; 904 int i;
diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c
index 7e95cf1a4872..9d446a0fe0bf 100644
--- a/drivers/net/dl2k.c
+++ b/drivers/net/dl2k.c
@@ -60,7 +60,7 @@ static void rio_timer (unsigned long data);
60static void rio_tx_timeout (struct net_device *dev); 60static void rio_tx_timeout (struct net_device *dev);
61static void alloc_list (struct net_device *dev); 61static void alloc_list (struct net_device *dev);
62static int start_xmit (struct sk_buff *skb, struct net_device *dev); 62static int start_xmit (struct sk_buff *skb, struct net_device *dev);
63static irqreturn_t rio_interrupt (int irq, void *dev_instance, struct pt_regs *regs); 63static irqreturn_t rio_interrupt (int irq, void *dev_instance);
64static void rio_free_tx (struct net_device *dev, int irq); 64static void rio_free_tx (struct net_device *dev, int irq);
65static void tx_error (struct net_device *dev, int tx_status); 65static void tx_error (struct net_device *dev, int tx_status);
66static int receive_packet (struct net_device *dev); 66static int receive_packet (struct net_device *dev);
@@ -665,7 +665,7 @@ start_xmit (struct sk_buff *skb, struct net_device *dev)
665} 665}
666 666
667static irqreturn_t 667static irqreturn_t
668rio_interrupt (int irq, void *dev_instance, struct pt_regs *rgs) 668rio_interrupt (int irq, void *dev_instance)
669{ 669{
670 struct net_device *dev = dev_instance; 670 struct net_device *dev = dev_instance;
671 struct netdev_private *np; 671 struct netdev_private *np;
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index a860ebbbf815..615d2b14efa7 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -159,7 +159,7 @@ static void dm9000_init_dm9000(struct net_device *);
159 159
160static struct net_device_stats *dm9000_get_stats(struct net_device *); 160static struct net_device_stats *dm9000_get_stats(struct net_device *);
161 161
162static irqreturn_t dm9000_interrupt(int, void *, struct pt_regs *); 162static irqreturn_t dm9000_interrupt(int, void *);
163 163
164static int dm9000_phy_read(struct net_device *dev, int phyaddr_unsused, int reg); 164static int dm9000_phy_read(struct net_device *dev, int phyaddr_unsused, int reg);
165static void dm9000_phy_write(struct net_device *dev, int phyaddr_unused, int reg, 165static void dm9000_phy_write(struct net_device *dev, int phyaddr_unused, int reg,
@@ -346,7 +346,7 @@ static void dm9000_timeout(struct net_device *dev)
346static void dm9000_poll_controller(struct net_device *dev) 346static void dm9000_poll_controller(struct net_device *dev)
347{ 347{
348 disable_irq(dev->irq); 348 disable_irq(dev->irq);
349 dm9000_interrupt(dev->irq,dev,NULL); 349 dm9000_interrupt(dev->irq,dev);
350 enable_irq(dev->irq); 350 enable_irq(dev->irq);
351} 351}
352#endif 352#endif
@@ -804,7 +804,7 @@ dm9000_tx_done(struct net_device *dev, board_info_t * db)
804} 804}
805 805
806static irqreturn_t 806static irqreturn_t
807dm9000_interrupt(int irq, void *dev_id, struct pt_regs *regs) 807dm9000_interrupt(int irq, void *dev_id)
808{ 808{
809 struct net_device *dev = dev_id; 809 struct net_device *dev = dev_id;
810 board_info_t *db; 810 board_info_t *db;
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 26073c345213..27d5d2f02533 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1949,7 +1949,7 @@ static int e100_rx_alloc_list(struct nic *nic)
1949 return 0; 1949 return 0;
1950} 1950}
1951 1951
1952static irqreturn_t e100_intr(int irq, void *dev_id, struct pt_regs *regs) 1952static irqreturn_t e100_intr(int irq, void *dev_id)
1953{ 1953{
1954 struct net_device *netdev = dev_id; 1954 struct net_device *netdev = dev_id;
1955 struct nic *nic = netdev_priv(netdev); 1955 struct nic *nic = netdev_priv(netdev);
@@ -2005,7 +2005,7 @@ static void e100_netpoll(struct net_device *netdev)
2005 struct nic *nic = netdev_priv(netdev); 2005 struct nic *nic = netdev_priv(netdev);
2006 2006
2007 e100_disable_irq(nic); 2007 e100_disable_irq(nic);
2008 e100_intr(nic->pdev->irq, netdev, NULL); 2008 e100_intr(nic->pdev->irq, netdev);
2009 e100_tx_clean(nic); 2009 e100_tx_clean(nic);
2010 e100_enable_irq(nic); 2010 e100_enable_irq(nic);
2011} 2011}
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
index 778ede3c0216..773821e4cf57 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -883,8 +883,7 @@ e1000_eeprom_test(struct e1000_adapter *adapter, uint64_t *data)
883 883
884static irqreturn_t 884static irqreturn_t
885e1000_test_intr(int irq, 885e1000_test_intr(int irq,
886 void *data, 886 void *data)
887 struct pt_regs *regs)
888{ 887{
889 struct net_device *netdev = (struct net_device *) data; 888 struct net_device *netdev = (struct net_device *) data;
890 struct e1000_adapter *adapter = netdev_priv(netdev); 889 struct e1000_adapter *adapter = netdev_priv(netdev);
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 7dca38fba6a1..ce0d35fe3947 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -153,7 +153,7 @@ static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
153static struct net_device_stats * e1000_get_stats(struct net_device *netdev); 153static struct net_device_stats * e1000_get_stats(struct net_device *netdev);
154static int e1000_change_mtu(struct net_device *netdev, int new_mtu); 154static int e1000_change_mtu(struct net_device *netdev, int new_mtu);
155static int e1000_set_mac(struct net_device *netdev, void *p); 155static int e1000_set_mac(struct net_device *netdev, void *p);
156static irqreturn_t e1000_intr(int irq, void *data, struct pt_regs *regs); 156static irqreturn_t e1000_intr(int irq, void *data);
157static boolean_t e1000_clean_tx_irq(struct e1000_adapter *adapter, 157static boolean_t e1000_clean_tx_irq(struct e1000_adapter *adapter,
158 struct e1000_tx_ring *tx_ring); 158 struct e1000_tx_ring *tx_ring);
159#ifdef CONFIG_E1000_NAPI 159#ifdef CONFIG_E1000_NAPI
@@ -3436,11 +3436,10 @@ e1000_update_stats(struct e1000_adapter *adapter)
3436 * e1000_intr - Interrupt Handler 3436 * e1000_intr - Interrupt Handler
3437 * @irq: interrupt number 3437 * @irq: interrupt number
3438 * @data: pointer to a network interface device structure 3438 * @data: pointer to a network interface device structure
3439 * @pt_regs: CPU registers structure
3440 **/ 3439 **/
3441 3440
3442static irqreturn_t 3441static irqreturn_t
3443e1000_intr(int irq, void *data, struct pt_regs *regs) 3442e1000_intr(int irq, void *data)
3444{ 3443{
3445 struct net_device *netdev = data; 3444 struct net_device *netdev = data;
3446 struct e1000_adapter *adapter = netdev_priv(netdev); 3445 struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -4862,7 +4861,7 @@ e1000_netpoll(struct net_device *netdev)
4862 struct e1000_adapter *adapter = netdev_priv(netdev); 4861 struct e1000_adapter *adapter = netdev_priv(netdev);
4863 4862
4864 disable_irq(adapter->pdev->irq); 4863 disable_irq(adapter->pdev->irq);
4865 e1000_intr(adapter->pdev->irq, netdev, NULL); 4864 e1000_intr(adapter->pdev->irq, netdev);
4866 e1000_clean_tx_irq(adapter, adapter->tx_ring); 4865 e1000_clean_tx_irq(adapter, adapter->tx_ring);
4867#ifndef CONFIG_E1000_NAPI 4866#ifndef CONFIG_E1000_NAPI
4868 adapter->clean_rx(adapter, adapter->rx_ring); 4867 adapter->clean_rx(adapter, adapter->rx_ring);
diff --git a/drivers/net/eepro.c b/drivers/net/eepro.c
index 09ff9b9418f4..a4eb0dc99ecf 100644
--- a/drivers/net/eepro.c
+++ b/drivers/net/eepro.c
@@ -311,7 +311,7 @@ struct eepro_local {
311static int eepro_probe1(struct net_device *dev, int autoprobe); 311static int eepro_probe1(struct net_device *dev, int autoprobe);
312static int eepro_open(struct net_device *dev); 312static int eepro_open(struct net_device *dev);
313static int eepro_send_packet(struct sk_buff *skb, struct net_device *dev); 313static int eepro_send_packet(struct sk_buff *skb, struct net_device *dev);
314static irqreturn_t eepro_interrupt(int irq, void *dev_id, struct pt_regs *regs); 314static irqreturn_t eepro_interrupt(int irq, void *dev_id);
315static void eepro_rx(struct net_device *dev); 315static void eepro_rx(struct net_device *dev);
316static void eepro_transmit_interrupt(struct net_device *dev); 316static void eepro_transmit_interrupt(struct net_device *dev);
317static int eepro_close(struct net_device *dev); 317static int eepro_close(struct net_device *dev);
@@ -994,16 +994,6 @@ static int eepro_open(struct net_device *dev)
994 return -EAGAIN; 994 return -EAGAIN;
995 } 995 }
996 996
997#ifdef irq2dev_map
998 if (((irq2dev_map[dev->irq] != 0)
999 || (irq2dev_map[dev->irq] = dev) == 0) &&
1000 (irq2dev_map[dev->irq]!=dev)) {
1001 /* printk("%s: IRQ map wrong\n", dev->name); */
1002 free_irq(dev->irq, dev);
1003 return -EAGAIN;
1004 }
1005#endif
1006
1007 /* Initialize the 82595. */ 997 /* Initialize the 82595. */
1008 998
1009 eepro_sw2bank2(ioaddr); /* be CAREFUL, BANK 2 now */ 999 eepro_sw2bank2(ioaddr); /* be CAREFUL, BANK 2 now */
@@ -1196,19 +1186,13 @@ static int eepro_send_packet(struct sk_buff *skb, struct net_device *dev)
1196 Handle the network interface interrupts. */ 1186 Handle the network interface interrupts. */
1197 1187
1198static irqreturn_t 1188static irqreturn_t
1199eepro_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1189eepro_interrupt(int irq, void *dev_id)
1200{ 1190{
1201 struct net_device *dev = (struct net_device *)dev_id; 1191 struct net_device *dev = dev_id;
1202 /* (struct net_device *)(irq2dev_map[irq]);*/
1203 struct eepro_local *lp; 1192 struct eepro_local *lp;
1204 int ioaddr, status, boguscount = 20; 1193 int ioaddr, status, boguscount = 20;
1205 int handled = 0; 1194 int handled = 0;
1206 1195
1207 if (dev == NULL) {
1208 printk (KERN_ERR "eepro_interrupt(): irq %d for unknown device.\\n", irq);
1209 return IRQ_NONE;
1210 }
1211
1212 lp = netdev_priv(dev); 1196 lp = netdev_priv(dev);
1213 1197
1214 spin_lock(&lp->lock); 1198 spin_lock(&lp->lock);
@@ -1288,10 +1272,6 @@ static int eepro_close(struct net_device *dev)
1288 /* release the interrupt */ 1272 /* release the interrupt */
1289 free_irq(dev->irq, dev); 1273 free_irq(dev->irq, dev);
1290 1274
1291#ifdef irq2dev_map
1292 irq2dev_map[dev->irq] = 0;
1293#endif
1294
1295 /* Update the statistics here. What statistics? */ 1275 /* Update the statistics here. What statistics? */
1296 1276
1297 return 0; 1277 return 0;
diff --git a/drivers/net/eepro100.c b/drivers/net/eepro100.c
index 499e93b31f54..e28bb1e38f8d 100644
--- a/drivers/net/eepro100.c
+++ b/drivers/net/eepro100.c
@@ -488,7 +488,7 @@ static int speedo_start_xmit(struct sk_buff *skb, struct net_device *dev);
488static void speedo_refill_rx_buffers(struct net_device *dev, int force); 488static void speedo_refill_rx_buffers(struct net_device *dev, int force);
489static int speedo_rx(struct net_device *dev); 489static int speedo_rx(struct net_device *dev);
490static void speedo_tx_buffer_gc(struct net_device *dev); 490static void speedo_tx_buffer_gc(struct net_device *dev);
491static irqreturn_t speedo_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 491static irqreturn_t speedo_interrupt(int irq, void *dev_instance);
492static int speedo_close(struct net_device *dev); 492static int speedo_close(struct net_device *dev);
493static struct net_device_stats *speedo_get_stats(struct net_device *dev); 493static struct net_device_stats *speedo_get_stats(struct net_device *dev);
494static int speedo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 494static int speedo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
@@ -606,7 +606,7 @@ static void poll_speedo (struct net_device *dev)
606 /* disable_irq is not very nice, but with the funny lockless design 606 /* disable_irq is not very nice, but with the funny lockless design
607 we have no other choice. */ 607 we have no other choice. */
608 disable_irq(dev->irq); 608 disable_irq(dev->irq);
609 speedo_interrupt (dev->irq, dev, NULL); 609 speedo_interrupt (dev->irq, dev);
610 enable_irq(dev->irq); 610 enable_irq(dev->irq);
611} 611}
612#endif 612#endif
@@ -1541,7 +1541,7 @@ static void speedo_tx_buffer_gc(struct net_device *dev)
1541 1541
1542/* The interrupt handler does all of the Rx thread work and cleans up 1542/* The interrupt handler does all of the Rx thread work and cleans up
1543 after the Tx thread. */ 1543 after the Tx thread. */
1544static irqreturn_t speedo_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 1544static irqreturn_t speedo_interrupt(int irq, void *dev_instance)
1545{ 1545{
1546 struct net_device *dev = (struct net_device *)dev_instance; 1546 struct net_device *dev = (struct net_device *)dev_instance;
1547 struct speedo_private *sp; 1547 struct speedo_private *sp;
diff --git a/drivers/net/eexpress.c b/drivers/net/eexpress.c
index 9cb05d99ee1b..e14be020e562 100644
--- a/drivers/net/eexpress.c
+++ b/drivers/net/eexpress.c
@@ -249,7 +249,7 @@ static void eexp_timeout(struct net_device *dev);
249static struct net_device_stats *eexp_stats(struct net_device *dev); 249static struct net_device_stats *eexp_stats(struct net_device *dev);
250static int eexp_xmit(struct sk_buff *buf, struct net_device *dev); 250static int eexp_xmit(struct sk_buff *buf, struct net_device *dev);
251 251
252static irqreturn_t eexp_irq(int irq, void *dev_addr, struct pt_regs *regs); 252static irqreturn_t eexp_irq(int irq, void *dev_addr);
253static void eexp_set_multicast(struct net_device *dev); 253static void eexp_set_multicast(struct net_device *dev);
254 254
255/* 255/*
@@ -789,20 +789,13 @@ static void eexp_cmd_clear(struct net_device *dev)
789 } 789 }
790} 790}
791 791
792static irqreturn_t eexp_irq(int irq, void *dev_info, struct pt_regs *regs) 792static irqreturn_t eexp_irq(int irq, void *dev_info)
793{ 793{
794 struct net_device *dev = dev_info; 794 struct net_device *dev = dev_info;
795 struct net_local *lp; 795 struct net_local *lp;
796 unsigned short ioaddr,status,ack_cmd; 796 unsigned short ioaddr,status,ack_cmd;
797 unsigned short old_read_ptr, old_write_ptr; 797 unsigned short old_read_ptr, old_write_ptr;
798 798
799 if (dev==NULL)
800 {
801 printk(KERN_WARNING "eexpress: irq %d for unknown device\n",
802 irq);
803 return IRQ_NONE;
804 }
805
806 lp = netdev_priv(dev); 799 lp = netdev_priv(dev);
807 ioaddr = dev->base_addr; 800 ioaddr = dev->base_addr;
808 801
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 263d1c5b3f23..c6b31775e26b 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -536,16 +536,14 @@ void ehea_send_irq_tasklet(unsigned long data)
536 tasklet_hi_schedule(&pr->send_comp_task); 536 tasklet_hi_schedule(&pr->send_comp_task);
537} 537}
538 538
539static irqreturn_t ehea_send_irq_handler(int irq, void *param, 539static irqreturn_t ehea_send_irq_handler(int irq, void *param)
540 struct pt_regs *regs)
541{ 540{
542 struct ehea_port_res *pr = param; 541 struct ehea_port_res *pr = param;
543 tasklet_hi_schedule(&pr->send_comp_task); 542 tasklet_hi_schedule(&pr->send_comp_task);
544 return IRQ_HANDLED; 543 return IRQ_HANDLED;
545} 544}
546 545
547static irqreturn_t ehea_recv_irq_handler(int irq, void *param, 546static irqreturn_t ehea_recv_irq_handler(int irq, void *param)
548 struct pt_regs *regs)
549{ 547{
550 struct ehea_port_res *pr = param; 548 struct ehea_port_res *pr = param;
551 struct ehea_port *port = pr->port; 549 struct ehea_port *port = pr->port;
@@ -553,8 +551,7 @@ static irqreturn_t ehea_recv_irq_handler(int irq, void *param,
553 return IRQ_HANDLED; 551 return IRQ_HANDLED;
554} 552}
555 553
556static irqreturn_t ehea_qp_aff_irq_handler(int irq, void *param, 554static irqreturn_t ehea_qp_aff_irq_handler(int irq, void *param)
557 struct pt_regs *regs)
558{ 555{
559 struct ehea_port *port = param; 556 struct ehea_port *port = param;
560 struct ehea_eqe *eqe; 557 struct ehea_eqe *eqe;
@@ -850,8 +847,7 @@ static void ehea_neq_tasklet(unsigned long data)
850 adapter->neq->fw_handle, event_mask); 847 adapter->neq->fw_handle, event_mask);
851} 848}
852 849
853static irqreturn_t ehea_interrupt_neq(int irq, void *param, 850static irqreturn_t ehea_interrupt_neq(int irq, void *param)
854 struct pt_regs *regs)
855{ 851{
856 struct ehea_adapter *adapter = param; 852 struct ehea_adapter *adapter = param;
857 tasklet_hi_schedule(&adapter->neq_tasklet); 853 tasklet_hi_schedule(&adapter->neq_tasklet);
diff --git a/drivers/net/epic100.c b/drivers/net/epic100.c
index ba2565ee0439..3a6a83d3ee1c 100644
--- a/drivers/net/epic100.c
+++ b/drivers/net/epic100.c
@@ -297,7 +297,7 @@ static void epic_init_ring(struct net_device *dev);
297static int epic_start_xmit(struct sk_buff *skb, struct net_device *dev); 297static int epic_start_xmit(struct sk_buff *skb, struct net_device *dev);
298static int epic_rx(struct net_device *dev, int budget); 298static int epic_rx(struct net_device *dev, int budget);
299static int epic_poll(struct net_device *dev, int *budget); 299static int epic_poll(struct net_device *dev, int *budget);
300static irqreturn_t epic_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 300static irqreturn_t epic_interrupt(int irq, void *dev_instance);
301static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 301static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
302static const struct ethtool_ops netdev_ethtool_ops; 302static const struct ethtool_ops netdev_ethtool_ops;
303static int epic_close(struct net_device *dev); 303static int epic_close(struct net_device *dev);
@@ -1081,7 +1081,7 @@ static void epic_tx(struct net_device *dev, struct epic_private *ep)
1081 1081
1082/* The interrupt handler does all of the Rx thread work and cleans up 1082/* The interrupt handler does all of the Rx thread work and cleans up
1083 after the Tx thread. */ 1083 after the Tx thread. */
1084static irqreturn_t epic_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 1084static irqreturn_t epic_interrupt(int irq, void *dev_instance)
1085{ 1085{
1086 struct net_device *dev = dev_instance; 1086 struct net_device *dev = dev_instance;
1087 struct epic_private *ep = dev->priv; 1087 struct epic_private *ep = dev->priv;
diff --git a/drivers/net/eth16i.c b/drivers/net/eth16i.c
index f16b6a5aaa34..8cc3c331aca8 100644
--- a/drivers/net/eth16i.c
+++ b/drivers/net/eth16i.c
@@ -410,7 +410,7 @@ static int eth16i_close(struct net_device *dev);
410static int eth16i_tx(struct sk_buff *skb, struct net_device *dev); 410static int eth16i_tx(struct sk_buff *skb, struct net_device *dev);
411static void eth16i_rx(struct net_device *dev); 411static void eth16i_rx(struct net_device *dev);
412static void eth16i_timeout(struct net_device *dev); 412static void eth16i_timeout(struct net_device *dev);
413static irqreturn_t eth16i_interrupt(int irq, void *dev_id, struct pt_regs *regs); 413static irqreturn_t eth16i_interrupt(int irq, void *dev_id);
414static void eth16i_reset(struct net_device *dev); 414static void eth16i_reset(struct net_device *dev);
415static void eth16i_timeout(struct net_device *dev); 415static void eth16i_timeout(struct net_device *dev);
416static void eth16i_skip_packet(struct net_device *dev); 416static void eth16i_skip_packet(struct net_device *dev);
@@ -1226,7 +1226,7 @@ static void eth16i_rx(struct net_device *dev)
1226 } /* while */ 1226 } /* while */
1227} 1227}
1228 1228
1229static irqreturn_t eth16i_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1229static irqreturn_t eth16i_interrupt(int irq, void *dev_id)
1230{ 1230{
1231 struct net_device *dev = dev_id; 1231 struct net_device *dev = dev_id;
1232 struct eth16i_local *lp; 1232 struct eth16i_local *lp;
diff --git a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c
index 75a43f7c70cf..c8c41f0a47d6 100644
--- a/drivers/net/ewrk3.c
+++ b/drivers/net/ewrk3.c
@@ -300,7 +300,7 @@ struct ewrk3_private {
300 */ 300 */
301static int ewrk3_open(struct net_device *dev); 301static int ewrk3_open(struct net_device *dev);
302static int ewrk3_queue_pkt(struct sk_buff *skb, struct net_device *dev); 302static int ewrk3_queue_pkt(struct sk_buff *skb, struct net_device *dev);
303static irqreturn_t ewrk3_interrupt(int irq, void *dev_id, struct pt_regs *regs); 303static irqreturn_t ewrk3_interrupt(int irq, void *dev_id);
304static int ewrk3_close(struct net_device *dev); 304static int ewrk3_close(struct net_device *dev);
305static struct net_device_stats *ewrk3_get_stats(struct net_device *dev); 305static struct net_device_stats *ewrk3_get_stats(struct net_device *dev);
306static void set_multicast_list(struct net_device *dev); 306static void set_multicast_list(struct net_device *dev);
@@ -884,7 +884,7 @@ err_out:
884/* 884/*
885 ** The EWRK3 interrupt handler. 885 ** The EWRK3 interrupt handler.
886 */ 886 */
887static irqreturn_t ewrk3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 887static irqreturn_t ewrk3_interrupt(int irq, void *dev_id)
888{ 888{
889 struct net_device *dev = dev_id; 889 struct net_device *dev = dev_id;
890 struct ewrk3_private *lp; 890 struct ewrk3_private *lp;
diff --git a/drivers/net/fealnx.c b/drivers/net/fealnx.c
index 191bd429076a..38a13f440530 100644
--- a/drivers/net/fealnx.c
+++ b/drivers/net/fealnx.c
@@ -434,7 +434,7 @@ static void reset_timer(unsigned long data);
434static void tx_timeout(struct net_device *dev); 434static void tx_timeout(struct net_device *dev);
435static void init_ring(struct net_device *dev); 435static void init_ring(struct net_device *dev);
436static int start_tx(struct sk_buff *skb, struct net_device *dev); 436static int start_tx(struct sk_buff *skb, struct net_device *dev);
437static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *regs); 437static irqreturn_t intr_handler(int irq, void *dev_instance);
438static int netdev_rx(struct net_device *dev); 438static int netdev_rx(struct net_device *dev);
439static void set_rx_mode(struct net_device *dev); 439static void set_rx_mode(struct net_device *dev);
440static void __set_rx_mode(struct net_device *dev); 440static void __set_rx_mode(struct net_device *dev);
@@ -1453,7 +1453,7 @@ static void reset_rx_descriptors(struct net_device *dev)
1453 1453
1454/* The interrupt handler does all of the Rx thread work and cleans up 1454/* The interrupt handler does all of the Rx thread work and cleans up
1455 after the Tx thread. */ 1455 after the Tx thread. */
1456static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) 1456static irqreturn_t intr_handler(int irq, void *dev_instance)
1457{ 1457{
1458 struct net_device *dev = (struct net_device *) dev_instance; 1458 struct net_device *dev = (struct net_device *) dev_instance;
1459 struct netdev_private *np = netdev_priv(dev); 1459 struct netdev_private *np = netdev_priv(dev);
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index 55d86bc4c104..6764281b4531 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -229,7 +229,7 @@ struct fec_enet_private {
229static int fec_enet_open(struct net_device *dev); 229static int fec_enet_open(struct net_device *dev);
230static int fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev); 230static int fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev);
231static void fec_enet_mii(struct net_device *dev); 231static void fec_enet_mii(struct net_device *dev);
232static irqreturn_t fec_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs); 232static irqreturn_t fec_enet_interrupt(int irq, void * dev_id);
233static void fec_enet_tx(struct net_device *dev); 233static void fec_enet_tx(struct net_device *dev);
234static void fec_enet_rx(struct net_device *dev); 234static void fec_enet_rx(struct net_device *dev);
235static int fec_enet_close(struct net_device *dev); 235static int fec_enet_close(struct net_device *dev);
@@ -450,7 +450,7 @@ fec_timeout(struct net_device *dev)
450 * This is called from the MPC core interrupt. 450 * This is called from the MPC core interrupt.
451 */ 451 */
452static irqreturn_t 452static irqreturn_t
453fec_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs) 453fec_enet_interrupt(int irq, void * dev_id)
454{ 454{
455 struct net_device *dev = dev_id; 455 struct net_device *dev = dev_id;
456 volatile fec_t *fecp; 456 volatile fec_t *fecp;
@@ -1236,7 +1236,7 @@ static void
1236mii_link_interrupt(void *dev_id); 1236mii_link_interrupt(void *dev_id);
1237#else 1237#else
1238static irqreturn_t 1238static irqreturn_t
1239mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs); 1239mii_link_interrupt(int irq, void * dev_id);
1240#endif 1240#endif
1241#endif 1241#endif
1242 1242
@@ -1251,7 +1251,7 @@ static void __inline__ fec_request_intrs(struct net_device *dev)
1251 static const struct idesc { 1251 static const struct idesc {
1252 char *name; 1252 char *name;
1253 unsigned short irq; 1253 unsigned short irq;
1254 irqreturn_t (*handler)(int, void *, struct pt_regs *); 1254 irq_handler_t handler;
1255 } *idp, id[] = { 1255 } *idp, id[] = {
1256 { "fec(RX)", 86, fec_enet_interrupt }, 1256 { "fec(RX)", 86, fec_enet_interrupt },
1257 { "fec(TX)", 87, fec_enet_interrupt }, 1257 { "fec(TX)", 87, fec_enet_interrupt },
@@ -2117,7 +2117,7 @@ static void
2117mii_link_interrupt(void *dev_id) 2117mii_link_interrupt(void *dev_id)
2118#else 2118#else
2119static irqreturn_t 2119static irqreturn_t
2120mii_link_interrupt(int irq, void * dev_id, struct pt_regs * regs) 2120mii_link_interrupt(int irq, void * dev_id)
2121#endif 2121#endif
2122{ 2122{
2123 struct net_device *dev = dev_id; 2123 struct net_device *dev = dev_id;
diff --git a/drivers/net/fec_8xx/fec_main.c b/drivers/net/fec_8xx/fec_main.c
index e17a1449ee10..8e7a56fadfd2 100644
--- a/drivers/net/fec_8xx/fec_main.c
+++ b/drivers/net/fec_8xx/fec_main.c
@@ -708,7 +708,7 @@ static void fec_enet_tx(struct net_device *dev)
708 * This is called from the MPC core interrupt. 708 * This is called from the MPC core interrupt.
709 */ 709 */
710static irqreturn_t 710static irqreturn_t
711fec_enet_interrupt(int irq, void *dev_id, struct pt_regs *regs) 711fec_enet_interrupt(int irq, void *dev_id)
712{ 712{
713 struct net_device *dev = dev_id; 713 struct net_device *dev = dev_id;
714 struct fec_enet_private *fep; 714 struct fec_enet_private *fep;
@@ -768,7 +768,7 @@ fec_enet_interrupt(int irq, void *dev_id, struct pt_regs *regs)
768 768
769/* This interrupt occurs when the PHY detects a link change. */ 769/* This interrupt occurs when the PHY detects a link change. */
770static irqreturn_t 770static irqreturn_t
771fec_mii_link_interrupt(int irq, void *dev_id, struct pt_regs *regs) 771fec_mii_link_interrupt(int irq, void *dev_id)
772{ 772{
773 struct net_device *dev = dev_id; 773 struct net_device *dev = dev_id;
774 struct fec_enet_private *fep; 774 struct fec_enet_private *fep;
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 35467e0ac538..c5ed635bce36 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -2397,7 +2397,7 @@ static void nv_link_irq(struct net_device *dev)
2397 dprintk(KERN_DEBUG "%s: link change notification done.\n", dev->name); 2397 dprintk(KERN_DEBUG "%s: link change notification done.\n", dev->name);
2398} 2398}
2399 2399
2400static irqreturn_t nv_nic_irq(int foo, void *data, struct pt_regs *regs) 2400static irqreturn_t nv_nic_irq(int foo, void *data)
2401{ 2401{
2402 struct net_device *dev = (struct net_device *) data; 2402 struct net_device *dev = (struct net_device *) data;
2403 struct fe_priv *np = netdev_priv(dev); 2403 struct fe_priv *np = netdev_priv(dev);
@@ -2490,7 +2490,7 @@ static irqreturn_t nv_nic_irq(int foo, void *data, struct pt_regs *regs)
2490 return IRQ_RETVAL(i); 2490 return IRQ_RETVAL(i);
2491} 2491}
2492 2492
2493static irqreturn_t nv_nic_irq_tx(int foo, void *data, struct pt_regs *regs) 2493static irqreturn_t nv_nic_irq_tx(int foo, void *data)
2494{ 2494{
2495 struct net_device *dev = (struct net_device *) data; 2495 struct net_device *dev = (struct net_device *) data;
2496 struct fe_priv *np = netdev_priv(dev); 2496 struct fe_priv *np = netdev_priv(dev);
@@ -2577,7 +2577,7 @@ static int nv_napi_poll(struct net_device *dev, int *budget)
2577#endif 2577#endif
2578 2578
2579#ifdef CONFIG_FORCEDETH_NAPI 2579#ifdef CONFIG_FORCEDETH_NAPI
2580static irqreturn_t nv_nic_irq_rx(int foo, void *data, struct pt_regs *regs) 2580static irqreturn_t nv_nic_irq_rx(int foo, void *data)
2581{ 2581{
2582 struct net_device *dev = (struct net_device *) data; 2582 struct net_device *dev = (struct net_device *) data;
2583 u8 __iomem *base = get_hwbase(dev); 2583 u8 __iomem *base = get_hwbase(dev);
@@ -2595,7 +2595,7 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data, struct pt_regs *regs)
2595 return IRQ_HANDLED; 2595 return IRQ_HANDLED;
2596} 2596}
2597#else 2597#else
2598static irqreturn_t nv_nic_irq_rx(int foo, void *data, struct pt_regs *regs) 2598static irqreturn_t nv_nic_irq_rx(int foo, void *data)
2599{ 2599{
2600 struct net_device *dev = (struct net_device *) data; 2600 struct net_device *dev = (struct net_device *) data;
2601 struct fe_priv *np = netdev_priv(dev); 2601 struct fe_priv *np = netdev_priv(dev);
@@ -2643,7 +2643,7 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data, struct pt_regs *regs)
2643} 2643}
2644#endif 2644#endif
2645 2645
2646static irqreturn_t nv_nic_irq_other(int foo, void *data, struct pt_regs *regs) 2646static irqreturn_t nv_nic_irq_other(int foo, void *data)
2647{ 2647{
2648 struct net_device *dev = (struct net_device *) data; 2648 struct net_device *dev = (struct net_device *) data;
2649 struct fe_priv *np = netdev_priv(dev); 2649 struct fe_priv *np = netdev_priv(dev);
@@ -2698,7 +2698,7 @@ static irqreturn_t nv_nic_irq_other(int foo, void *data, struct pt_regs *regs)
2698 return IRQ_RETVAL(i); 2698 return IRQ_RETVAL(i);
2699} 2699}
2700 2700
2701static irqreturn_t nv_nic_irq_test(int foo, void *data, struct pt_regs *regs) 2701static irqreturn_t nv_nic_irq_test(int foo, void *data)
2702{ 2702{
2703 struct net_device *dev = (struct net_device *) data; 2703 struct net_device *dev = (struct net_device *) data;
2704 struct fe_priv *np = netdev_priv(dev); 2704 struct fe_priv *np = netdev_priv(dev);
@@ -2908,22 +2908,22 @@ static void nv_do_nic_poll(unsigned long data)
2908 pci_push(base); 2908 pci_push(base);
2909 2909
2910 if (!using_multi_irqs(dev)) { 2910 if (!using_multi_irqs(dev)) {
2911 nv_nic_irq(0, dev, NULL); 2911 nv_nic_irq(0, dev);
2912 if (np->msi_flags & NV_MSI_X_ENABLED) 2912 if (np->msi_flags & NV_MSI_X_ENABLED)
2913 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); 2913 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector);
2914 else 2914 else
2915 enable_irq_lockdep(dev->irq); 2915 enable_irq_lockdep(dev->irq);
2916 } else { 2916 } else {
2917 if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) { 2917 if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) {
2918 nv_nic_irq_rx(0, dev, NULL); 2918 nv_nic_irq_rx(0, dev);
2919 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); 2919 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector);
2920 } 2920 }
2921 if (np->nic_poll_irq & NVREG_IRQ_TX_ALL) { 2921 if (np->nic_poll_irq & NVREG_IRQ_TX_ALL) {
2922 nv_nic_irq_tx(0, dev, NULL); 2922 nv_nic_irq_tx(0, dev);
2923 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector); 2923 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector);
2924 } 2924 }
2925 if (np->nic_poll_irq & NVREG_IRQ_OTHER) { 2925 if (np->nic_poll_irq & NVREG_IRQ_OTHER) {
2926 nv_nic_irq_other(0, dev, NULL); 2926 nv_nic_irq_other(0, dev);
2927 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector); 2927 enable_irq_lockdep(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector);
2928 } 2928 }
2929 } 2929 }
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c
index d01870619a4a..cb3958704a87 100644
--- a/drivers/net/fs_enet/fs_enet-main.c
+++ b/drivers/net/fs_enet/fs_enet-main.c
@@ -441,7 +441,7 @@ static void fs_enet_tx(struct net_device *dev)
441 * This is called from the MPC core interrupt. 441 * This is called from the MPC core interrupt.
442 */ 442 */
443static irqreturn_t 443static irqreturn_t
444fs_enet_interrupt(int irq, void *dev_id, struct pt_regs *regs) 444fs_enet_interrupt(int irq, void *dev_id)
445{ 445{
446 struct net_device *dev = dev_id; 446 struct net_device *dev = dev_id;
447 struct fs_enet_private *fep; 447 struct fs_enet_private *fep;
@@ -667,7 +667,7 @@ static int fs_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
667} 667}
668 668
669static int fs_request_irq(struct net_device *dev, int irq, const char *name, 669static int fs_request_irq(struct net_device *dev, int irq, const char *name,
670 irqreturn_t (*irqf)(int irq, void *dev_id, struct pt_regs *regs)) 670 irq_handler_t irqf)
671{ 671{
672 struct fs_enet_private *fep = netdev_priv(dev); 672 struct fs_enet_private *fep = netdev_priv(dev);
673 673
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 280b114e253f..a06d8d1aaceb 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -119,9 +119,9 @@ struct sk_buff *gfar_new_skb(struct net_device *dev, struct rxbd8 *bdp);
119static struct net_device_stats *gfar_get_stats(struct net_device *dev); 119static struct net_device_stats *gfar_get_stats(struct net_device *dev);
120static int gfar_set_mac_address(struct net_device *dev); 120static int gfar_set_mac_address(struct net_device *dev);
121static int gfar_change_mtu(struct net_device *dev, int new_mtu); 121static int gfar_change_mtu(struct net_device *dev, int new_mtu);
122static irqreturn_t gfar_error(int irq, void *dev_id, struct pt_regs *regs); 122static irqreturn_t gfar_error(int irq, void *dev_id);
123static irqreturn_t gfar_transmit(int irq, void *dev_id, struct pt_regs *regs); 123static irqreturn_t gfar_transmit(int irq, void *dev_id);
124static irqreturn_t gfar_interrupt(int irq, void *dev_id, struct pt_regs *regs); 124static irqreturn_t gfar_interrupt(int irq, void *dev_id);
125static void adjust_link(struct net_device *dev); 125static void adjust_link(struct net_device *dev);
126static void init_registers(struct net_device *dev); 126static void init_registers(struct net_device *dev);
127static int init_phy(struct net_device *dev); 127static int init_phy(struct net_device *dev);
@@ -1173,7 +1173,7 @@ static void gfar_timeout(struct net_device *dev)
1173} 1173}
1174 1174
1175/* Interrupt Handler for Transmit complete */ 1175/* Interrupt Handler for Transmit complete */
1176static irqreturn_t gfar_transmit(int irq, void *dev_id, struct pt_regs *regs) 1176static irqreturn_t gfar_transmit(int irq, void *dev_id)
1177{ 1177{
1178 struct net_device *dev = (struct net_device *) dev_id; 1178 struct net_device *dev = (struct net_device *) dev_id;
1179 struct gfar_private *priv = netdev_priv(dev); 1179 struct gfar_private *priv = netdev_priv(dev);
@@ -1305,7 +1305,7 @@ static inline void count_errors(unsigned short status, struct gfar_private *priv
1305 } 1305 }
1306} 1306}
1307 1307
1308irqreturn_t gfar_receive(int irq, void *dev_id, struct pt_regs *regs) 1308irqreturn_t gfar_receive(int irq, void *dev_id)
1309{ 1309{
1310 struct net_device *dev = (struct net_device *) dev_id; 1310 struct net_device *dev = (struct net_device *) dev_id;
1311 struct gfar_private *priv = netdev_priv(dev); 1311 struct gfar_private *priv = netdev_priv(dev);
@@ -1537,7 +1537,7 @@ static int gfar_poll(struct net_device *dev, int *budget)
1537#endif 1537#endif
1538 1538
1539/* The interrupt handler for devices with one interrupt */ 1539/* The interrupt handler for devices with one interrupt */
1540static irqreturn_t gfar_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1540static irqreturn_t gfar_interrupt(int irq, void *dev_id)
1541{ 1541{
1542 struct net_device *dev = dev_id; 1542 struct net_device *dev = dev_id;
1543 struct gfar_private *priv = netdev_priv(dev); 1543 struct gfar_private *priv = netdev_priv(dev);
@@ -1550,11 +1550,11 @@ static irqreturn_t gfar_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1550 1550
1551 /* Check for reception */ 1551 /* Check for reception */
1552 if ((events & IEVENT_RXF0) || (events & IEVENT_RXB0)) 1552 if ((events & IEVENT_RXF0) || (events & IEVENT_RXB0))
1553 gfar_receive(irq, dev_id, regs); 1553 gfar_receive(irq, dev_id);
1554 1554
1555 /* Check for transmit completion */ 1555 /* Check for transmit completion */
1556 if ((events & IEVENT_TXF) || (events & IEVENT_TXB)) 1556 if ((events & IEVENT_TXF) || (events & IEVENT_TXB))
1557 gfar_transmit(irq, dev_id, regs); 1557 gfar_transmit(irq, dev_id);
1558 1558
1559 /* Update error statistics */ 1559 /* Update error statistics */
1560 if (events & IEVENT_TXE) { 1560 if (events & IEVENT_TXE) {
@@ -1578,7 +1578,7 @@ static irqreturn_t gfar_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1578 priv->stats.rx_errors++; 1578 priv->stats.rx_errors++;
1579 priv->extra_stats.rx_bsy++; 1579 priv->extra_stats.rx_bsy++;
1580 1580
1581 gfar_receive(irq, dev_id, regs); 1581 gfar_receive(irq, dev_id);
1582 1582
1583#ifndef CONFIG_GFAR_NAPI 1583#ifndef CONFIG_GFAR_NAPI
1584 /* Clear the halt bit in RSTAT */ 1584 /* Clear the halt bit in RSTAT */
@@ -1857,7 +1857,7 @@ static void gfar_set_mac_for_addr(struct net_device *dev, int num, u8 *addr)
1857} 1857}
1858 1858
1859/* GFAR error interrupt handler */ 1859/* GFAR error interrupt handler */
1860static irqreturn_t gfar_error(int irq, void *dev_id, struct pt_regs *regs) 1860static irqreturn_t gfar_error(int irq, void *dev_id)
1861{ 1861{
1862 struct net_device *dev = dev_id; 1862 struct net_device *dev = dev_id;
1863 struct gfar_private *priv = netdev_priv(dev); 1863 struct gfar_private *priv = netdev_priv(dev);
@@ -1898,7 +1898,7 @@ static irqreturn_t gfar_error(int irq, void *dev_id, struct pt_regs *regs)
1898 priv->stats.rx_errors++; 1898 priv->stats.rx_errors++;
1899 priv->extra_stats.rx_bsy++; 1899 priv->extra_stats.rx_bsy++;
1900 1900
1901 gfar_receive(irq, dev_id, regs); 1901 gfar_receive(irq, dev_id);
1902 1902
1903#ifndef CONFIG_GFAR_NAPI 1903#ifndef CONFIG_GFAR_NAPI
1904 /* Clear the halt bit in RSTAT */ 1904 /* Clear the halt bit in RSTAT */
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
index c35d47c40c39..9e81a50cf2be 100644
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -754,7 +754,7 @@ static inline void gfar_write(volatile unsigned __iomem *addr, u32 val)
754 out_be32(addr, val); 754 out_be32(addr, val);
755} 755}
756 756
757extern irqreturn_t gfar_receive(int irq, void *dev_id, struct pt_regs *regs); 757extern irqreturn_t gfar_receive(int irq, void *dev_id);
758extern int startup_gfar(struct net_device *dev); 758extern int startup_gfar(struct net_device *dev);
759extern void stop_gfar(struct net_device *dev); 759extern void stop_gfar(struct net_device *dev);
760extern void gfar_halt(struct net_device *dev); 760extern void gfar_halt(struct net_device *dev);
diff --git a/drivers/net/hamachi.c b/drivers/net/hamachi.c
index 5c89ae78a519..c3c0d67fc383 100644
--- a/drivers/net/hamachi.c
+++ b/drivers/net/hamachi.c
@@ -556,7 +556,7 @@ static void hamachi_timer(unsigned long data);
556static void hamachi_tx_timeout(struct net_device *dev); 556static void hamachi_tx_timeout(struct net_device *dev);
557static void hamachi_init_ring(struct net_device *dev); 557static void hamachi_init_ring(struct net_device *dev);
558static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev); 558static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev);
559static irqreturn_t hamachi_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 559static irqreturn_t hamachi_interrupt(int irq, void *dev_instance);
560static int hamachi_rx(struct net_device *dev); 560static int hamachi_rx(struct net_device *dev);
561static inline int hamachi_tx(struct net_device *dev); 561static inline int hamachi_tx(struct net_device *dev);
562static void hamachi_error(struct net_device *dev, int intr_status); 562static void hamachi_error(struct net_device *dev, int intr_status);
@@ -1376,7 +1376,7 @@ static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev)
1376 1376
1377/* The interrupt handler does all of the Rx thread work and cleans up 1377/* The interrupt handler does all of the Rx thread work and cleans up
1378 after the Tx thread. */ 1378 after the Tx thread. */
1379static irqreturn_t hamachi_interrupt(int irq, void *dev_instance, struct pt_regs *rgs) 1379static irqreturn_t hamachi_interrupt(int irq, void *dev_instance)
1380{ 1380{
1381 struct net_device *dev = dev_instance; 1381 struct net_device *dev = dev_instance;
1382 struct hamachi_private *hmp = netdev_priv(dev); 1382 struct hamachi_private *hmp = netdev_priv(dev);
diff --git a/drivers/net/hamradio/baycom_epp.c b/drivers/net/hamradio/baycom_epp.c
index 9220de9f4fe7..1ed9cccd3c11 100644
--- a/drivers/net/hamradio/baycom_epp.c
+++ b/drivers/net/hamradio/baycom_epp.c
@@ -323,7 +323,7 @@ static int eppconfig(struct baycom_state *bc)
323 323
324/* ---------------------------------------------------------------------- */ 324/* ---------------------------------------------------------------------- */
325 325
326static void epp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 326static void epp_interrupt(int irq, void *dev_id)
327{ 327{
328} 328}
329 329
diff --git a/drivers/net/hamradio/baycom_par.c b/drivers/net/hamradio/baycom_par.c
index 77411a00d1ee..5930aeb35015 100644
--- a/drivers/net/hamradio/baycom_par.c
+++ b/drivers/net/hamradio/baycom_par.c
@@ -270,7 +270,7 @@ static __inline__ void par96_rx(struct net_device *dev, struct baycom_state *bc)
270 270
271/* --------------------------------------------------------------------- */ 271/* --------------------------------------------------------------------- */
272 272
273static void par96_interrupt(int irq, void *dev_id, struct pt_regs *regs) 273static void par96_interrupt(int irq, void *dev_id)
274{ 274{
275 struct net_device *dev = (struct net_device *)dev_id; 275 struct net_device *dev = (struct net_device *)dev_id;
276 struct baycom_state *bc = netdev_priv(dev); 276 struct baycom_state *bc = netdev_priv(dev);
diff --git a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c
index 55906c7b4bb1..59214e74b9cf 100644
--- a/drivers/net/hamradio/baycom_ser_fdx.c
+++ b/drivers/net/hamradio/baycom_ser_fdx.c
@@ -279,7 +279,7 @@ static __inline__ void ser12_rx(struct net_device *dev, struct baycom_state *bc,
279 279
280/* --------------------------------------------------------------------- */ 280/* --------------------------------------------------------------------- */
281 281
282static irqreturn_t ser12_interrupt(int irq, void *dev_id, struct pt_regs *regs) 282static irqreturn_t ser12_interrupt(int irq, void *dev_id)
283{ 283{
284 struct net_device *dev = (struct net_device *)dev_id; 284 struct net_device *dev = (struct net_device *)dev_id;
285 struct baycom_state *bc = netdev_priv(dev); 285 struct baycom_state *bc = netdev_priv(dev);
diff --git a/drivers/net/hamradio/baycom_ser_hdx.c b/drivers/net/hamradio/baycom_ser_hdx.c
index de95de8983da..3bcc57acbe6d 100644
--- a/drivers/net/hamradio/baycom_ser_hdx.c
+++ b/drivers/net/hamradio/baycom_ser_hdx.c
@@ -373,7 +373,7 @@ static inline void ser12_rx(struct net_device *dev, struct baycom_state *bc)
373 373
374/* --------------------------------------------------------------------- */ 374/* --------------------------------------------------------------------- */
375 375
376static irqreturn_t ser12_interrupt(int irq, void *dev_id, struct pt_regs *regs) 376static irqreturn_t ser12_interrupt(int irq, void *dev_id)
377{ 377{
378 struct net_device *dev = (struct net_device *)dev_id; 378 struct net_device *dev = (struct net_device *)dev_id;
379 struct baycom_state *bc = netdev_priv(dev); 379 struct baycom_state *bc = netdev_priv(dev);
diff --git a/drivers/net/hamradio/dmascc.c b/drivers/net/hamradio/dmascc.c
index c9a46b89942a..0f8b9afd55b4 100644
--- a/drivers/net/hamradio/dmascc.c
+++ b/drivers/net/hamradio/dmascc.c
@@ -249,7 +249,7 @@ static void start_timer(struct scc_priv *priv, int t, int r15);
249static inline unsigned char random(void); 249static inline unsigned char random(void);
250 250
251static inline void z8530_isr(struct scc_info *info); 251static inline void z8530_isr(struct scc_info *info);
252static irqreturn_t scc_isr(int irq, void *dev_id, struct pt_regs *regs); 252static irqreturn_t scc_isr(int irq, void *dev_id);
253static void rx_isr(struct scc_priv *priv); 253static void rx_isr(struct scc_priv *priv);
254static void special_condition(struct scc_priv *priv, int rc); 254static void special_condition(struct scc_priv *priv, int rc);
255static void rx_bh(void *arg); 255static void rx_bh(void *arg);
@@ -1142,7 +1142,7 @@ static inline void z8530_isr(struct scc_info *info)
1142} 1142}
1143 1143
1144 1144
1145static irqreturn_t scc_isr(int irq, void *dev_id, struct pt_regs *regs) 1145static irqreturn_t scc_isr(int irq, void *dev_id)
1146{ 1146{
1147 struct scc_info *info = dev_id; 1147 struct scc_info *info = dev_id;
1148 1148
diff --git a/drivers/net/hamradio/scc.c b/drivers/net/hamradio/scc.c
index df4b68142ac7..ec9b6d9b6f05 100644
--- a/drivers/net/hamradio/scc.c
+++ b/drivers/net/hamradio/scc.c
@@ -200,7 +200,7 @@ static void z8530_init(void);
200 200
201static void init_channel(struct scc_channel *scc); 201static void init_channel(struct scc_channel *scc);
202static void scc_key_trx (struct scc_channel *scc, char tx); 202static void scc_key_trx (struct scc_channel *scc, char tx);
203static irqreturn_t scc_isr(int irq, void *dev_id, struct pt_regs *regs); 203static irqreturn_t scc_isr(int irq, void *dev_id);
204static void scc_init_timer(struct scc_channel *scc); 204static void scc_init_timer(struct scc_channel *scc);
205 205
206static int scc_net_alloc(const char *name, struct scc_channel *scc); 206static int scc_net_alloc(const char *name, struct scc_channel *scc);
@@ -626,7 +626,7 @@ static void scc_isr_dispatch(struct scc_channel *scc, int vector)
626 626
627#define SCC_IRQTIMEOUT 30000 627#define SCC_IRQTIMEOUT 30000
628 628
629static irqreturn_t scc_isr(int irq, void *dev_id, struct pt_regs *regs) 629static irqreturn_t scc_isr(int irq, void *dev_id)
630{ 630{
631 unsigned char vector; 631 unsigned char vector;
632 struct scc_channel *scc; 632 struct scc_channel *scc;
diff --git a/drivers/net/hamradio/yam.c b/drivers/net/hamradio/yam.c
index f98f5777dfbb..3c4455bd466d 100644
--- a/drivers/net/hamradio/yam.c
+++ b/drivers/net/hamradio/yam.c
@@ -702,7 +702,7 @@ static void yam_tx_byte(struct net_device *dev, struct yam_port *yp)
702* ISR routine 702* ISR routine
703************************************************************************************/ 703************************************************************************************/
704 704
705static irqreturn_t yam_interrupt(int irq, void *dev_id, struct pt_regs *regs) 705static irqreturn_t yam_interrupt(int irq, void *dev_id)
706{ 706{
707 struct net_device *dev; 707 struct net_device *dev;
708 struct yam_port *yp; 708 struct yam_port *yp;
diff --git a/drivers/net/hp100.c b/drivers/net/hp100.c
index ae8ad4f763bf..844c136e9920 100644
--- a/drivers/net/hp100.c
+++ b/drivers/net/hp100.c
@@ -249,7 +249,7 @@ static void hp100_misc_interrupt(struct net_device *dev);
249static void hp100_update_stats(struct net_device *dev); 249static void hp100_update_stats(struct net_device *dev);
250static void hp100_clear_stats(struct hp100_private *lp, int ioaddr); 250static void hp100_clear_stats(struct hp100_private *lp, int ioaddr);
251static void hp100_set_multicast_list(struct net_device *dev); 251static void hp100_set_multicast_list(struct net_device *dev);
252static irqreturn_t hp100_interrupt(int irq, void *dev_id, struct pt_regs *regs); 252static irqreturn_t hp100_interrupt(int irq, void *dev_id);
253static void hp100_start_interface(struct net_device *dev); 253static void hp100_start_interface(struct net_device *dev);
254static void hp100_stop_interface(struct net_device *dev); 254static void hp100_stop_interface(struct net_device *dev);
255static void hp100_load_eeprom(struct net_device *dev, u_short ioaddr); 255static void hp100_load_eeprom(struct net_device *dev, u_short ioaddr);
@@ -2187,7 +2187,7 @@ static void hp100_set_multicast_list(struct net_device *dev)
2187 * hardware interrupt handling 2187 * hardware interrupt handling
2188 */ 2188 */
2189 2189
2190static irqreturn_t hp100_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2190static irqreturn_t hp100_interrupt(int irq, void *dev_id)
2191{ 2191{
2192 struct net_device *dev = (struct net_device *) dev_id; 2192 struct net_device *dev = (struct net_device *) dev_id;
2193 struct hp100_private *lp = netdev_priv(dev); 2193 struct hp100_private *lp = netdev_priv(dev);
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c
index d52e3bd01301..ffeafb28f782 100644
--- a/drivers/net/ibm_emac/ibm_emac_core.c
+++ b/drivers/net/ibm_emac/ibm_emac_core.c
@@ -184,7 +184,7 @@ static const char emac_stats_keys[EMAC_ETHTOOL_STATS_COUNT][ETH_GSTRING_LEN] = {
184 "tx_errors" 184 "tx_errors"
185}; 185};
186 186
187static irqreturn_t emac_irq(int irq, void *dev_instance, struct pt_regs *regs); 187static irqreturn_t emac_irq(int irq, void *dev_instance);
188static void emac_clean_tx_ring(struct ocp_enet_private *dev); 188static void emac_clean_tx_ring(struct ocp_enet_private *dev);
189 189
190static inline int emac_phy_supports_gige(int phy_mode) 190static inline int emac_phy_supports_gige(int phy_mode)
@@ -1515,7 +1515,7 @@ static void emac_rxde(void *param)
1515} 1515}
1516 1516
1517/* Hard IRQ */ 1517/* Hard IRQ */
1518static irqreturn_t emac_irq(int irq, void *dev_instance, struct pt_regs *regs) 1518static irqreturn_t emac_irq(int irq, void *dev_instance)
1519{ 1519{
1520 struct ocp_enet_private *dev = dev_instance; 1520 struct ocp_enet_private *dev = dev_instance;
1521 struct emac_regs __iomem *p = dev->emacp; 1521 struct emac_regs __iomem *p = dev->emacp;
diff --git a/drivers/net/ibm_emac/ibm_emac_debug.c b/drivers/net/ibm_emac/ibm_emac_debug.c
index c3645908034d..92f970d402df 100644
--- a/drivers/net/ibm_emac/ibm_emac_debug.c
+++ b/drivers/net/ibm_emac/ibm_emac_debug.c
@@ -179,8 +179,7 @@ void emac_dbg_dump_all(void)
179} 179}
180 180
181#if defined(CONFIG_MAGIC_SYSRQ) 181#if defined(CONFIG_MAGIC_SYSRQ)
182static void emac_sysrq_handler(int key, struct pt_regs *pt_regs, 182static void emac_sysrq_handler(int key, struct tty_struct *tty)
183 struct tty_struct *tty)
184{ 183{
185 emac_dbg_dump_all(); 184 emac_dbg_dump_all();
186} 185}
diff --git a/drivers/net/ibm_emac/ibm_emac_mal.c b/drivers/net/ibm_emac/ibm_emac_mal.c
index af50e7b2e0d7..6c0f071e4052 100644
--- a/drivers/net/ibm_emac/ibm_emac_mal.c
+++ b/drivers/net/ibm_emac/ibm_emac_mal.c
@@ -168,7 +168,7 @@ static inline void mal_disable_eob_irq(struct ibm_ocp_mal *mal)
168 MAL_DBG2("%d: disable_irq" NL, mal->def->index); 168 MAL_DBG2("%d: disable_irq" NL, mal->def->index);
169} 169}
170 170
171static irqreturn_t mal_serr(int irq, void *dev_instance, struct pt_regs *regs) 171static irqreturn_t mal_serr(int irq, void *dev_instance)
172{ 172{
173 struct ibm_ocp_mal *mal = dev_instance; 173 struct ibm_ocp_mal *mal = dev_instance;
174 u32 esr = get_mal_dcrn(mal, MAL_ESR); 174 u32 esr = get_mal_dcrn(mal, MAL_ESR);
@@ -216,7 +216,7 @@ static inline void mal_schedule_poll(struct ibm_ocp_mal *mal)
216 MAL_DBG2("%d: already in poll" NL, mal->def->index); 216 MAL_DBG2("%d: already in poll" NL, mal->def->index);
217} 217}
218 218
219static irqreturn_t mal_txeob(int irq, void *dev_instance, struct pt_regs *regs) 219static irqreturn_t mal_txeob(int irq, void *dev_instance)
220{ 220{
221 struct ibm_ocp_mal *mal = dev_instance; 221 struct ibm_ocp_mal *mal = dev_instance;
222 u32 r = get_mal_dcrn(mal, MAL_TXEOBISR); 222 u32 r = get_mal_dcrn(mal, MAL_TXEOBISR);
@@ -226,7 +226,7 @@ static irqreturn_t mal_txeob(int irq, void *dev_instance, struct pt_regs *regs)
226 return IRQ_HANDLED; 226 return IRQ_HANDLED;
227} 227}
228 228
229static irqreturn_t mal_rxeob(int irq, void *dev_instance, struct pt_regs *regs) 229static irqreturn_t mal_rxeob(int irq, void *dev_instance)
230{ 230{
231 struct ibm_ocp_mal *mal = dev_instance; 231 struct ibm_ocp_mal *mal = dev_instance;
232 u32 r = get_mal_dcrn(mal, MAL_RXEOBISR); 232 u32 r = get_mal_dcrn(mal, MAL_RXEOBISR);
@@ -236,7 +236,7 @@ static irqreturn_t mal_rxeob(int irq, void *dev_instance, struct pt_regs *regs)
236 return IRQ_HANDLED; 236 return IRQ_HANDLED;
237} 237}
238 238
239static irqreturn_t mal_txde(int irq, void *dev_instance, struct pt_regs *regs) 239static irqreturn_t mal_txde(int irq, void *dev_instance)
240{ 240{
241 struct ibm_ocp_mal *mal = dev_instance; 241 struct ibm_ocp_mal *mal = dev_instance;
242 u32 deir = get_mal_dcrn(mal, MAL_TXDEIR); 242 u32 deir = get_mal_dcrn(mal, MAL_TXDEIR);
@@ -252,7 +252,7 @@ static irqreturn_t mal_txde(int irq, void *dev_instance, struct pt_regs *regs)
252 return IRQ_HANDLED; 252 return IRQ_HANDLED;
253} 253}
254 254
255static irqreturn_t mal_rxde(int irq, void *dev_instance, struct pt_regs *regs) 255static irqreturn_t mal_rxde(int irq, void *dev_instance)
256{ 256{
257 struct ibm_ocp_mal *mal = dev_instance; 257 struct ibm_ocp_mal *mal = dev_instance;
258 struct list_head *l; 258 struct list_head *l;
diff --git a/drivers/net/ibmlana.c b/drivers/net/ibmlana.c
index 2a95d72fa593..3f946c811511 100644
--- a/drivers/net/ibmlana.c
+++ b/drivers/net/ibmlana.c
@@ -705,7 +705,7 @@ static void irqtxerr_handler(struct net_device *dev)
705 705
706/* general interrupt entry */ 706/* general interrupt entry */
707 707
708static irqreturn_t irq_handler(int irq, void *device, struct pt_regs *regs) 708static irqreturn_t irq_handler(int irq, void *device)
709{ 709{
710 struct net_device *dev = (struct net_device *) device; 710 struct net_device *dev = (struct net_device *) device;
711 u16 ival; 711 u16 ival;
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
index 16f3faa7ea5b..bf414a93facb 100644
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -93,7 +93,7 @@ static void ibmveth_proc_register_driver(void);
93static void ibmveth_proc_unregister_driver(void); 93static void ibmveth_proc_unregister_driver(void);
94static void ibmveth_proc_register_adapter(struct ibmveth_adapter *adapter); 94static void ibmveth_proc_register_adapter(struct ibmveth_adapter *adapter);
95static void ibmveth_proc_unregister_adapter(struct ibmveth_adapter *adapter); 95static void ibmveth_proc_unregister_adapter(struct ibmveth_adapter *adapter);
96static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 96static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance);
97static inline void ibmveth_rxq_harvest_buffer(struct ibmveth_adapter *adapter); 97static inline void ibmveth_rxq_harvest_buffer(struct ibmveth_adapter *adapter);
98static struct kobj_type ktype_veth_pool; 98static struct kobj_type ktype_veth_pool;
99 99
@@ -570,7 +570,7 @@ static int ibmveth_open(struct net_device *netdev)
570 } 570 }
571 571
572 ibmveth_debug_printk("initial replenish cycle\n"); 572 ibmveth_debug_printk("initial replenish cycle\n");
573 ibmveth_interrupt(netdev->irq, netdev, NULL); 573 ibmveth_interrupt(netdev->irq, netdev);
574 574
575 netif_start_queue(netdev); 575 netif_start_queue(netdev);
576 576
@@ -843,7 +843,7 @@ static int ibmveth_poll(struct net_device *netdev, int *budget)
843 return 0; 843 return 0;
844} 844}
845 845
846static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 846static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance)
847{ 847{
848 struct net_device *netdev = dev_instance; 848 struct net_device *netdev = dev_instance;
849 struct ibmveth_adapter *adapter = netdev->priv; 849 struct ibmveth_adapter *adapter = netdev->priv;
@@ -1303,7 +1303,7 @@ const char * buf, size_t count)
1303 } 1303 }
1304 1304
1305 /* kick the interrupt handler to allocate/deallocate pools */ 1305 /* kick the interrupt handler to allocate/deallocate pools */
1306 ibmveth_interrupt(netdev->irq, netdev, NULL); 1306 ibmveth_interrupt(netdev->irq, netdev);
1307 return count; 1307 return count;
1308} 1308}
1309 1309
diff --git a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c
index 87650237dc5c..e963dbf816be 100644
--- a/drivers/net/ioc3-eth.c
+++ b/drivers/net/ioc3-eth.c
@@ -750,7 +750,7 @@ static void ioc3_error(struct ioc3_private *ip, u32 eisr)
750 750
751/* The interrupt handler does all of the Rx thread work and cleans up 751/* The interrupt handler does all of the Rx thread work and cleans up
752 after the Tx thread. */ 752 after the Tx thread. */
753static irqreturn_t ioc3_interrupt(int irq, void *_dev, struct pt_regs *regs) 753static irqreturn_t ioc3_interrupt(int irq, void *_dev)
754{ 754{
755 struct net_device *dev = (struct net_device *)_dev; 755 struct net_device *dev = (struct net_device *)_dev;
756 struct ioc3_private *ip = netdev_priv(dev); 756 struct ioc3_private *ip = netdev_priv(dev);
diff --git a/drivers/net/irda/ali-ircc.c b/drivers/net/irda/ali-ircc.c
index 68d4c418cb98..cebf8c374bc5 100644
--- a/drivers/net/irda/ali-ircc.c
+++ b/drivers/net/irda/ali-ircc.c
@@ -660,22 +660,15 @@ static int ali_ircc_read_dongle_id (int i, chipio_t *info)
660 * An interrupt from the chip has arrived. Time to do some work 660 * An interrupt from the chip has arrived. Time to do some work
661 * 661 *
662 */ 662 */
663static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id, 663static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id)
664 struct pt_regs *regs)
665{ 664{
666 struct net_device *dev = (struct net_device *) dev_id; 665 struct net_device *dev = dev_id;
667 struct ali_ircc_cb *self; 666 struct ali_ircc_cb *self;
668 int ret; 667 int ret;
669 668
670 IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); 669 IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
671 670
672 if (!dev) { 671 self = dev->priv;
673 IRDA_WARNING("%s: irq %d for unknown device.\n",
674 ALI_IRCC_DRIVER_NAME, irq);
675 return IRQ_NONE;
676 }
677
678 self = (struct ali_ircc_cb *) dev->priv;
679 672
680 spin_lock(&self->lock); 673 spin_lock(&self->lock);
681 674
diff --git a/drivers/net/irda/au1k_ir.c b/drivers/net/irda/au1k_ir.c
index 7b2b4135bb23..37914dc5b90e 100644
--- a/drivers/net/irda/au1k_ir.c
+++ b/drivers/net/irda/au1k_ir.c
@@ -51,7 +51,7 @@ static int au1k_irda_start(struct net_device *);
51static int au1k_irda_stop(struct net_device *dev); 51static int au1k_irda_stop(struct net_device *dev);
52static int au1k_irda_hard_xmit(struct sk_buff *, struct net_device *); 52static int au1k_irda_hard_xmit(struct sk_buff *, struct net_device *);
53static int au1k_irda_rx(struct net_device *); 53static int au1k_irda_rx(struct net_device *);
54static void au1k_irda_interrupt(int, void *, struct pt_regs *); 54static void au1k_irda_interrupt(int, void *);
55static void au1k_tx_timeout(struct net_device *); 55static void au1k_tx_timeout(struct net_device *);
56static struct net_device_stats *au1k_irda_stats(struct net_device *); 56static struct net_device_stats *au1k_irda_stats(struct net_device *);
57static int au1k_irda_ioctl(struct net_device *, struct ifreq *, int); 57static int au1k_irda_ioctl(struct net_device *, struct ifreq *, int);
@@ -627,7 +627,7 @@ static int au1k_irda_rx(struct net_device *dev)
627} 627}
628 628
629 629
630void au1k_irda_interrupt(int irq, void *dev_id, struct pt_regs *regs) 630void au1k_irda_interrupt(int irq, void *dev_id)
631{ 631{
632 struct net_device *dev = (struct net_device *) dev_id; 632 struct net_device *dev = (struct net_device *) dev_id;
633 633
diff --git a/drivers/net/irda/donauboe.c b/drivers/net/irda/donauboe.c
index 33c07d5275da..16620bd97fbf 100644
--- a/drivers/net/irda/donauboe.c
+++ b/drivers/net/irda/donauboe.c
@@ -657,12 +657,6 @@ toshoboe_makemttpacket (struct toshoboe_cb *self, void *buf, int mtt)
657 return xbofs; 657 return xbofs;
658} 658}
659 659
660static int toshoboe_invalid_dev(int irq)
661{
662 printk (KERN_WARNING DRIVER_NAME ": irq %d for unknown device.\n", irq);
663 return 1;
664}
665
666#ifdef USE_PROBE 660#ifdef USE_PROBE
667/***********************************************************************/ 661/***********************************************************************/
668/* Probe code */ 662/* Probe code */
@@ -709,14 +703,11 @@ stuff_byte (__u8 byte, __u8 * buf)
709} 703}
710 704
711static irqreturn_t 705static irqreturn_t
712toshoboe_probeinterrupt (int irq, void *dev_id, struct pt_regs *regs) 706toshoboe_probeinterrupt (int irq, void *dev_id)
713{ 707{
714 struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id; 708 struct toshoboe_cb *self = dev_id;
715 __u8 irqstat; 709 __u8 irqstat;
716 710
717 if (self == NULL && toshoboe_invalid_dev(irq))
718 return IRQ_NONE;
719
720 irqstat = INB (OBOE_ISR); 711 irqstat = INB (OBOE_ISR);
721 712
722/* was it us */ 713/* was it us */
@@ -1161,15 +1152,12 @@ dumpbufs(skb->data,skb->len,'>');
1161 1152
1162/*interrupt handler */ 1153/*interrupt handler */
1163static irqreturn_t 1154static irqreturn_t
1164toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs) 1155toshoboe_interrupt (int irq, void *dev_id)
1165{ 1156{
1166 struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id; 1157 struct toshoboe_cb *self = dev_id;
1167 __u8 irqstat; 1158 __u8 irqstat;
1168 struct sk_buff *skb = NULL; 1159 struct sk_buff *skb = NULL;
1169 1160
1170 if (self == NULL && toshoboe_invalid_dev(irq))
1171 return IRQ_NONE;
1172
1173 irqstat = INB (OBOE_ISR); 1161 irqstat = INB (OBOE_ISR);
1174 1162
1175/* was it us */ 1163/* was it us */
@@ -1357,13 +1345,11 @@ toshoboe_net_open (struct net_device *dev)
1357{ 1345{
1358 struct toshoboe_cb *self; 1346 struct toshoboe_cb *self;
1359 unsigned long flags; 1347 unsigned long flags;
1348 int rc;
1360 1349
1361 IRDA_DEBUG (4, "%s()\n", __FUNCTION__); 1350 IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
1362 1351
1363 IRDA_ASSERT (dev != NULL, return -1; ); 1352 self = netdev_priv(dev);
1364 self = (struct toshoboe_cb *) dev->priv;
1365
1366 IRDA_ASSERT (self != NULL, return 0; );
1367 1353
1368 if (self->async) 1354 if (self->async)
1369 return -EBUSY; 1355 return -EBUSY;
@@ -1371,11 +1357,10 @@ toshoboe_net_open (struct net_device *dev)
1371 if (self->stopped) 1357 if (self->stopped)
1372 return 0; 1358 return 0;
1373 1359
1374 if (request_irq (self->io.irq, toshoboe_interrupt, 1360 rc = request_irq (self->io.irq, toshoboe_interrupt,
1375 IRQF_SHARED | IRQF_DISABLED, dev->name, (void *) self)) 1361 IRQF_SHARED | IRQF_DISABLED, dev->name, self);
1376 { 1362 if (rc)
1377 return -EAGAIN; 1363 return rc;
1378 }
1379 1364
1380 spin_lock_irqsave(&self->spinlock, flags); 1365 spin_lock_irqsave(&self->spinlock, flags);
1381 toshoboe_startchip (self); 1366 toshoboe_startchip (self);
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index 383cef1f5999..14bda765c2fa 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -114,9 +114,9 @@ static void irda_usb_change_speed_xbofs(struct irda_usb_cb *self);
114static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *dev); 114static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *dev);
115static int irda_usb_open(struct irda_usb_cb *self); 115static int irda_usb_open(struct irda_usb_cb *self);
116static void irda_usb_close(struct irda_usb_cb *self); 116static void irda_usb_close(struct irda_usb_cb *self);
117static void speed_bulk_callback(struct urb *urb, struct pt_regs *regs); 117static void speed_bulk_callback(struct urb *urb);
118static void write_bulk_callback(struct urb *urb, struct pt_regs *regs); 118static void write_bulk_callback(struct urb *urb);
119static void irda_usb_receive(struct urb *urb, struct pt_regs *regs); 119static void irda_usb_receive(struct urb *urb);
120static void irda_usb_rx_defer_expired(unsigned long data); 120static void irda_usb_rx_defer_expired(unsigned long data);
121static int irda_usb_net_open(struct net_device *dev); 121static int irda_usb_net_open(struct net_device *dev);
122static int irda_usb_net_close(struct net_device *dev); 122static int irda_usb_net_close(struct net_device *dev);
@@ -343,7 +343,7 @@ static void irda_usb_change_speed_xbofs(struct irda_usb_cb *self)
343 * Speed URB callback 343 * Speed URB callback
344 * Now, we can only get called for the speed URB. 344 * Now, we can only get called for the speed URB.
345 */ 345 */
346static void speed_bulk_callback(struct urb *urb, struct pt_regs *regs) 346static void speed_bulk_callback(struct urb *urb)
347{ 347{
348 struct irda_usb_cb *self = urb->context; 348 struct irda_usb_cb *self = urb->context;
349 349
@@ -562,7 +562,7 @@ drop:
562/* 562/*
563 * Note : this function will be called only for tx_urb... 563 * Note : this function will be called only for tx_urb...
564 */ 564 */
565static void write_bulk_callback(struct urb *urb, struct pt_regs *regs) 565static void write_bulk_callback(struct urb *urb)
566{ 566{
567 unsigned long flags; 567 unsigned long flags;
568 struct sk_buff *skb = urb->context; 568 struct sk_buff *skb = urb->context;
@@ -809,7 +809,7 @@ static void irda_usb_submit(struct irda_usb_cb *self, struct sk_buff *skb, struc
809 * Called by the USB subsystem when a frame has been received 809 * Called by the USB subsystem when a frame has been received
810 * 810 *
811 */ 811 */
812static void irda_usb_receive(struct urb *urb, struct pt_regs *regs) 812static void irda_usb_receive(struct urb *urb)
813{ 813{
814 struct sk_buff *skb = (struct sk_buff *) urb->context; 814 struct sk_buff *skb = (struct sk_buff *) urb->context;
815 struct irda_usb_cb *self; 815 struct irda_usb_cb *self;
diff --git a/drivers/net/irda/irport.c b/drivers/net/irda/irport.c
index ba4f3eb988b3..654a68b490ae 100644
--- a/drivers/net/irda/irport.c
+++ b/drivers/net/irda/irport.c
@@ -87,8 +87,7 @@ static struct net_device_stats *irport_net_get_stats(struct net_device *dev);
87static int irport_change_speed_complete(struct irda_task *task); 87static int irport_change_speed_complete(struct irda_task *task);
88static void irport_timeout(struct net_device *dev); 88static void irport_timeout(struct net_device *dev);
89 89
90static irqreturn_t irport_interrupt(int irq, void *dev_id, 90static irqreturn_t irport_interrupt(int irq, void *dev_id);
91 struct pt_regs *regs);
92static int irport_hard_xmit(struct sk_buff *skb, struct net_device *dev); 91static int irport_hard_xmit(struct sk_buff *skb, struct net_device *dev);
93static void irport_change_speed(void *priv, __u32 speed); 92static void irport_change_speed(void *priv, __u32 speed);
94static int irport_net_open(struct net_device *dev); 93static int irport_net_open(struct net_device *dev);
@@ -761,25 +760,20 @@ static inline void irport_receive(struct irport_cb *self)
761} 760}
762 761
763/* 762/*
764 * Function irport_interrupt (irq, dev_id, regs) 763 * Function irport_interrupt (irq, dev_id)
765 * 764 *
766 * Interrupt handler 765 * Interrupt handler
767 */ 766 */
768static irqreturn_t irport_interrupt(int irq, void *dev_id, 767static irqreturn_t irport_interrupt(int irq, void *dev_id)
769 struct pt_regs *regs)
770{ 768{
771 struct net_device *dev = (struct net_device *) dev_id; 769 struct net_device *dev = dev_id;
772 struct irport_cb *self; 770 struct irport_cb *self;
773 int boguscount = 0; 771 int boguscount = 0;
774 int iobase; 772 int iobase;
775 int iir, lsr; 773 int iir, lsr;
776 int handled = 0; 774 int handled = 0;
777 775
778 if (!dev) { 776 self = dev->priv;
779 IRDA_WARNING("%s() irq %d for unknown device.\n", __FUNCTION__, irq);
780 return IRQ_NONE;
781 }
782 self = (struct irport_cb *) dev->priv;
783 777
784 spin_lock(&self->lock); 778 spin_lock(&self->lock);
785 779
diff --git a/drivers/net/irda/irport.h b/drivers/net/irda/irport.h
index fc89c8c3dd7f..3f46b84c6c85 100644
--- a/drivers/net/irda/irport.h
+++ b/drivers/net/irda/irport.h
@@ -74,7 +74,7 @@ struct irport_cb {
74 /* For piggyback drivers */ 74 /* For piggyback drivers */
75 void *priv; 75 void *priv;
76 void (*change_speed)(void *priv, __u32 speed); 76 void (*change_speed)(void *priv, __u32 speed);
77 int (*interrupt)(int irq, void *dev_id, struct pt_regs *regs); 77 irqreturn_t (*interrupt)(int irq, void *dev_id);
78}; 78};
79 79
80#endif /* IRPORT_H */ 80#endif /* IRPORT_H */
diff --git a/drivers/net/irda/mcs7780.c b/drivers/net/irda/mcs7780.c
index 415ba8dc94ce..b32c52ed19d7 100644
--- a/drivers/net/irda/mcs7780.c
+++ b/drivers/net/irda/mcs7780.c
@@ -764,7 +764,7 @@ static struct net_device_stats *mcs_net_get_stats(struct net_device *netdev)
764} 764}
765 765
766/* Receive callback function. */ 766/* Receive callback function. */
767static void mcs_receive_irq(struct urb *urb, struct pt_regs *regs) 767static void mcs_receive_irq(struct urb *urb)
768{ 768{
769 __u8 *bytes; 769 __u8 *bytes;
770 struct mcs_cb *mcs = urb->context; 770 struct mcs_cb *mcs = urb->context;
@@ -813,7 +813,7 @@ static void mcs_receive_irq(struct urb *urb, struct pt_regs *regs)
813} 813}
814 814
815/* Transmit callback funtion. */ 815/* Transmit callback funtion. */
816static void mcs_send_irq(struct urb *urb, struct pt_regs *regs) 816static void mcs_send_irq(struct urb *urb)
817{ 817{
818 struct mcs_cb *mcs = urb->context; 818 struct mcs_cb *mcs = urb->context;
819 struct net_device *ndev = mcs->netdev; 819 struct net_device *ndev = mcs->netdev;
diff --git a/drivers/net/irda/mcs7780.h b/drivers/net/irda/mcs7780.h
index 1a723d725c2a..b18148cee638 100644
--- a/drivers/net/irda/mcs7780.h
+++ b/drivers/net/irda/mcs7780.h
@@ -156,8 +156,8 @@ static int mcs_net_close(struct net_device *netdev);
156static int mcs_net_open(struct net_device *netdev); 156static int mcs_net_open(struct net_device *netdev);
157static struct net_device_stats *mcs_net_get_stats(struct net_device *netdev); 157static struct net_device_stats *mcs_net_get_stats(struct net_device *netdev);
158 158
159static void mcs_receive_irq(struct urb *urb, struct pt_regs *regs); 159static void mcs_receive_irq(struct urb *urb);
160static void mcs_send_irq(struct urb *urb, struct pt_regs *regs); 160static void mcs_send_irq(struct urb *urb);
161static int mcs_hard_xmit(struct sk_buff *skb, struct net_device *netdev); 161static int mcs_hard_xmit(struct sk_buff *skb, struct net_device *netdev);
162 162
163static int mcs_probe(struct usb_interface *intf, 163static int mcs_probe(struct usb_interface *intf,
diff --git a/drivers/net/irda/nsc-ircc.c b/drivers/net/irda/nsc-ircc.c
index 7185a4ee3c1e..29b5ccd29d0b 100644
--- a/drivers/net/irda/nsc-ircc.c
+++ b/drivers/net/irda/nsc-ircc.c
@@ -2066,20 +2066,14 @@ static void nsc_ircc_fir_interrupt(struct nsc_ircc_cb *self, int iobase,
2066 * An interrupt from the chip has arrived. Time to do some work 2066 * An interrupt from the chip has arrived. Time to do some work
2067 * 2067 *
2068 */ 2068 */
2069static irqreturn_t nsc_ircc_interrupt(int irq, void *dev_id, 2069static irqreturn_t nsc_ircc_interrupt(int irq, void *dev_id)
2070 struct pt_regs *regs)
2071{ 2070{
2072 struct net_device *dev = (struct net_device *) dev_id; 2071 struct net_device *dev = dev_id;
2073 struct nsc_ircc_cb *self; 2072 struct nsc_ircc_cb *self;
2074 __u8 bsr, eir; 2073 __u8 bsr, eir;
2075 int iobase; 2074 int iobase;
2076 2075
2077 if (!dev) { 2076 self = dev->priv;
2078 IRDA_WARNING("%s: irq %d for unknown device.\n",
2079 driver_name, irq);
2080 return IRQ_NONE;
2081 }
2082 self = (struct nsc_ircc_cb *) dev->priv;
2083 2077
2084 spin_lock(&self->lock); 2078 spin_lock(&self->lock);
2085 2079
diff --git a/drivers/net/irda/pxaficp_ir.c b/drivers/net/irda/pxaficp_ir.c
index afb19e8d95c8..f9a1c88a4283 100644
--- a/drivers/net/irda/pxaficp_ir.c
+++ b/drivers/net/irda/pxaficp_ir.c
@@ -199,7 +199,7 @@ static int pxa_irda_set_speed(struct pxa_irda *si, int speed)
199} 199}
200 200
201/* SIR interrupt service routine. */ 201/* SIR interrupt service routine. */
202static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id, struct pt_regs *regs) 202static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id)
203{ 203{
204 struct net_device *dev = dev_id; 204 struct net_device *dev = dev_id;
205 struct pxa_irda *si = netdev_priv(dev); 205 struct pxa_irda *si = netdev_priv(dev);
@@ -281,7 +281,7 @@ static irqreturn_t pxa_irda_sir_irq(int irq, void *dev_id, struct pt_regs *regs)
281} 281}
282 282
283/* FIR Receive DMA interrupt handler */ 283/* FIR Receive DMA interrupt handler */
284static void pxa_irda_fir_dma_rx_irq(int channel, void *data, struct pt_regs *regs) 284static void pxa_irda_fir_dma_rx_irq(int channel, void *data)
285{ 285{
286 int dcsr = DCSR(channel); 286 int dcsr = DCSR(channel);
287 287
@@ -291,7 +291,7 @@ static void pxa_irda_fir_dma_rx_irq(int channel, void *data, struct pt_regs *reg
291} 291}
292 292
293/* FIR Transmit DMA interrupt handler */ 293/* FIR Transmit DMA interrupt handler */
294static void pxa_irda_fir_dma_tx_irq(int channel, void *data, struct pt_regs *regs) 294static void pxa_irda_fir_dma_tx_irq(int channel, void *data)
295{ 295{
296 struct net_device *dev = data; 296 struct net_device *dev = data;
297 struct pxa_irda *si = netdev_priv(dev); 297 struct pxa_irda *si = netdev_priv(dev);
@@ -388,7 +388,7 @@ static void pxa_irda_fir_irq_eif(struct pxa_irda *si, struct net_device *dev)
388} 388}
389 389
390/* FIR interrupt handler */ 390/* FIR interrupt handler */
391static irqreturn_t pxa_irda_fir_irq(int irq, void *dev_id, struct pt_regs *regs) 391static irqreturn_t pxa_irda_fir_irq(int irq, void *dev_id)
392{ 392{
393 struct net_device *dev = dev_id; 393 struct net_device *dev = dev_id;
394 struct pxa_irda *si = netdev_priv(dev); 394 struct pxa_irda *si = netdev_priv(dev);
diff --git a/drivers/net/irda/sa1100_ir.c b/drivers/net/irda/sa1100_ir.c
index 8d5a288d7976..937372d00398 100644
--- a/drivers/net/irda/sa1100_ir.c
+++ b/drivers/net/irda/sa1100_ir.c
@@ -579,7 +579,7 @@ static void sa1100_irda_fir_irq(struct net_device *dev)
579 sa1100_irda_rx_dma_start(si); 579 sa1100_irda_rx_dma_start(si);
580} 580}
581 581
582static irqreturn_t sa1100_irda_irq(int irq, void *dev_id, struct pt_regs *regs) 582static irqreturn_t sa1100_irda_irq(int irq, void *dev_id)
583{ 583{
584 struct net_device *dev = dev_id; 584 struct net_device *dev = dev_id;
585 if (IS_FIR(((struct sa1100_irda *)dev->priv))) 585 if (IS_FIR(((struct sa1100_irda *)dev->priv)))
diff --git a/drivers/net/irda/smsc-ircc2.c b/drivers/net/irda/smsc-ircc2.c
index 22358ff68c4c..31c623381ea8 100644
--- a/drivers/net/irda/smsc-ircc2.c
+++ b/drivers/net/irda/smsc-ircc2.c
@@ -196,7 +196,7 @@ static void smsc_ircc_dma_xmit(struct smsc_ircc_cb *self, int bofs);
196static void smsc_ircc_dma_xmit_complete(struct smsc_ircc_cb *self); 196static void smsc_ircc_dma_xmit_complete(struct smsc_ircc_cb *self);
197static void smsc_ircc_change_speed(struct smsc_ircc_cb *self, u32 speed); 197static void smsc_ircc_change_speed(struct smsc_ircc_cb *self, u32 speed);
198static void smsc_ircc_set_sir_speed(struct smsc_ircc_cb *self, u32 speed); 198static void smsc_ircc_set_sir_speed(struct smsc_ircc_cb *self, u32 speed);
199static irqreturn_t smsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs); 199static irqreturn_t smsc_ircc_interrupt(int irq, void *dev_id);
200static irqreturn_t smsc_ircc_interrupt_sir(struct net_device *dev); 200static irqreturn_t smsc_ircc_interrupt_sir(struct net_device *dev);
201static void smsc_ircc_sir_start(struct smsc_ircc_cb *self); 201static void smsc_ircc_sir_start(struct smsc_ircc_cb *self);
202#if SMSC_IRCC2_C_SIR_STOP 202#if SMSC_IRCC2_C_SIR_STOP
@@ -1455,7 +1455,7 @@ static void smsc_ircc_sir_receive(struct smsc_ircc_cb *self)
1455 * An interrupt from the chip has arrived. Time to do some work 1455 * An interrupt from the chip has arrived. Time to do some work
1456 * 1456 *
1457 */ 1457 */
1458static irqreturn_t smsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1458static irqreturn_t smsc_ircc_interrupt(int irq, void *dev_id)
1459{ 1459{
1460 struct net_device *dev = (struct net_device *) dev_id; 1460 struct net_device *dev = (struct net_device *) dev_id;
1461 struct smsc_ircc_cb *self; 1461 struct smsc_ircc_cb *self;
@@ -1520,7 +1520,7 @@ static irqreturn_t smsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *re
1520} 1520}
1521 1521
1522/* 1522/*
1523 * Function irport_interrupt_sir (irq, dev_id, regs) 1523 * Function irport_interrupt_sir (irq, dev_id)
1524 * 1524 *
1525 * Interrupt handler for SIR modes 1525 * Interrupt handler for SIR modes
1526 */ 1526 */
diff --git a/drivers/net/irda/stir4200.c b/drivers/net/irda/stir4200.c
index 12103c93f7ef..be8a66e702b0 100644
--- a/drivers/net/irda/stir4200.c
+++ b/drivers/net/irda/stir4200.c
@@ -804,7 +804,7 @@ static int stir_transmit_thread(void *arg)
804 * Wakes up every ms (usb round trip) with wrapped 804 * Wakes up every ms (usb round trip) with wrapped
805 * data. 805 * data.
806 */ 806 */
807static void stir_rcv_irq(struct urb *urb, struct pt_regs *regs) 807static void stir_rcv_irq(struct urb *urb)
808{ 808{
809 struct stir_cb *stir = urb->context; 809 struct stir_cb *stir = urb->context;
810 int err; 810 int err;
diff --git a/drivers/net/irda/via-ircc.c b/drivers/net/irda/via-ircc.c
index d916e1257c47..c3ed9b3067e5 100644
--- a/drivers/net/irda/via-ircc.c
+++ b/drivers/net/irda/via-ircc.c
@@ -93,8 +93,7 @@ static int via_ircc_hard_xmit_fir(struct sk_buff *skb,
93 struct net_device *dev); 93 struct net_device *dev);
94static void via_hw_init(struct via_ircc_cb *self); 94static void via_hw_init(struct via_ircc_cb *self);
95static void via_ircc_change_speed(struct via_ircc_cb *self, __u32 baud); 95static void via_ircc_change_speed(struct via_ircc_cb *self, __u32 baud);
96static irqreturn_t via_ircc_interrupt(int irq, void *dev_id, 96static irqreturn_t via_ircc_interrupt(int irq, void *dev_id);
97 struct pt_regs *regs);
98static int via_ircc_is_receiving(struct via_ircc_cb *self); 97static int via_ircc_is_receiving(struct via_ircc_cb *self);
99static int via_ircc_read_dongle_id(int iobase); 98static int via_ircc_read_dongle_id(int iobase);
100 99
@@ -1345,13 +1344,12 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
1345 1344
1346 1345
1347/* 1346/*
1348 * Function via_ircc_interrupt (irq, dev_id, regs) 1347 * Function via_ircc_interrupt (irq, dev_id)
1349 * 1348 *
1350 * An interrupt from the chip has arrived. Time to do some work 1349 * An interrupt from the chip has arrived. Time to do some work
1351 * 1350 *
1352 */ 1351 */
1353static irqreturn_t via_ircc_interrupt(int irq, void *dev_id, 1352static irqreturn_t via_ircc_interrupt(int irq, void *dev_id)
1354 struct pt_regs *regs)
1355{ 1353{
1356 struct net_device *dev = (struct net_device *) dev_id; 1354 struct net_device *dev = (struct net_device *) dev_id;
1357 struct via_ircc_cb *self; 1355 struct via_ircc_cb *self;
diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c
index 92d646cc9edc..18c68193bf14 100644
--- a/drivers/net/irda/vlsi_ir.c
+++ b/drivers/net/irda/vlsi_ir.c
@@ -1455,8 +1455,7 @@ static int vlsi_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
1455 1455
1456/********************************************************/ 1456/********************************************************/
1457 1457
1458static irqreturn_t vlsi_interrupt(int irq, void *dev_instance, 1458static irqreturn_t vlsi_interrupt(int irq, void *dev_instance)
1459 struct pt_regs *regs)
1460{ 1459{
1461 struct net_device *ndev = dev_instance; 1460 struct net_device *ndev = dev_instance;
1462 vlsi_irda_dev_t *idev = ndev->priv; 1461 vlsi_irda_dev_t *idev = ndev->priv;
diff --git a/drivers/net/irda/w83977af_ir.c b/drivers/net/irda/w83977af_ir.c
index 7de1afdeec3d..4212657fa4f9 100644
--- a/drivers/net/irda/w83977af_ir.c
+++ b/drivers/net/irda/w83977af_ir.c
@@ -1111,20 +1111,14 @@ static __u8 w83977af_fir_interrupt(struct w83977af_ir *self, int isr)
1111 * An interrupt from the chip has arrived. Time to do some work 1111 * An interrupt from the chip has arrived. Time to do some work
1112 * 1112 *
1113 */ 1113 */
1114static irqreturn_t w83977af_interrupt(int irq, void *dev_id, 1114static irqreturn_t w83977af_interrupt(int irq, void *dev_id)
1115 struct pt_regs *regs)
1116{ 1115{
1117 struct net_device *dev = (struct net_device *) dev_id; 1116 struct net_device *dev = dev_id;
1118 struct w83977af_ir *self; 1117 struct w83977af_ir *self;
1119 __u8 set, icr, isr; 1118 __u8 set, icr, isr;
1120 int iobase; 1119 int iobase;
1121 1120
1122 if (!dev) { 1121 self = dev->priv;
1123 printk(KERN_WARNING "%s: irq %d for unknown device.\n",
1124 driver_name, irq);
1125 return IRQ_NONE;
1126 }
1127 self = (struct w83977af_ir *) dev->priv;
1128 1122
1129 iobase = self->io.fir_base; 1123 iobase = self->io.fir_base;
1130 1124
diff --git a/drivers/net/isa-skeleton.c b/drivers/net/isa-skeleton.c
index 984c31d1b3fb..0343f12d2ffb 100644
--- a/drivers/net/isa-skeleton.c
+++ b/drivers/net/isa-skeleton.c
@@ -107,7 +107,7 @@ struct net_local {
107static int netcard_probe1(struct net_device *dev, int ioaddr); 107static int netcard_probe1(struct net_device *dev, int ioaddr);
108static int net_open(struct net_device *dev); 108static int net_open(struct net_device *dev);
109static int net_send_packet(struct sk_buff *skb, struct net_device *dev); 109static int net_send_packet(struct sk_buff *skb, struct net_device *dev);
110static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs *regs); 110static irqreturn_t net_interrupt(int irq, void *dev_id);
111static void net_rx(struct net_device *dev); 111static void net_rx(struct net_device *dev);
112static int net_close(struct net_device *dev); 112static int net_close(struct net_device *dev);
113static struct net_device_stats *net_get_stats(struct net_device *dev); 113static struct net_device_stats *net_get_stats(struct net_device *dev);
@@ -504,7 +504,7 @@ void net_tx(struct net_device *dev)
504 * The typical workload of the driver: 504 * The typical workload of the driver:
505 * Handle the network interface interrupts. 505 * Handle the network interface interrupts.
506 */ 506 */
507static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs * regs) 507static irqreturn_t net_interrupt(int irq, void *dev_id)
508{ 508{
509 struct net_device *dev = dev_id; 509 struct net_device *dev = dev_id;
510 struct net_local *np; 510 struct net_local *np;
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c
index 41b1d08fd57b..2284e2ce1692 100644
--- a/drivers/net/iseries_veth.c
+++ b/drivers/net/iseries_veth.c
@@ -586,7 +586,7 @@ static void veth_handle_int(struct veth_lpevent *event)
586 }; 586 };
587} 587}
588 588
589static void veth_handle_event(struct HvLpEvent *event, struct pt_regs *regs) 589static void veth_handle_event(struct HvLpEvent *event)
590{ 590{
591 struct veth_lpevent *veth_event = (struct veth_lpevent *)event; 591 struct veth_lpevent *veth_event = (struct veth_lpevent *)event;
592 592
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index cfde7c2569bb..e09f575a3a38 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -93,7 +93,7 @@ static int ixgb_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
93static struct net_device_stats *ixgb_get_stats(struct net_device *netdev); 93static struct net_device_stats *ixgb_get_stats(struct net_device *netdev);
94static int ixgb_change_mtu(struct net_device *netdev, int new_mtu); 94static int ixgb_change_mtu(struct net_device *netdev, int new_mtu);
95static int ixgb_set_mac(struct net_device *netdev, void *p); 95static int ixgb_set_mac(struct net_device *netdev, void *p);
96static irqreturn_t ixgb_intr(int irq, void *data, struct pt_regs *regs); 96static irqreturn_t ixgb_intr(int irq, void *data);
97static boolean_t ixgb_clean_tx_irq(struct ixgb_adapter *adapter); 97static boolean_t ixgb_clean_tx_irq(struct ixgb_adapter *adapter);
98 98
99#ifdef CONFIG_IXGB_NAPI 99#ifdef CONFIG_IXGB_NAPI
@@ -1687,11 +1687,10 @@ ixgb_update_stats(struct ixgb_adapter *adapter)
1687 * ixgb_intr - Interrupt Handler 1687 * ixgb_intr - Interrupt Handler
1688 * @irq: interrupt number 1688 * @irq: interrupt number
1689 * @data: pointer to a network interface device structure 1689 * @data: pointer to a network interface device structure
1690 * @pt_regs: CPU registers structure
1691 **/ 1690 **/
1692 1691
1693static irqreturn_t 1692static irqreturn_t
1694ixgb_intr(int irq, void *data, struct pt_regs *regs) 1693ixgb_intr(int irq, void *data)
1695{ 1694{
1696 struct net_device *netdev = data; 1695 struct net_device *netdev = data;
1697 struct ixgb_adapter *adapter = netdev_priv(netdev); 1696 struct ixgb_adapter *adapter = netdev_priv(netdev);
@@ -2213,7 +2212,7 @@ static void ixgb_netpoll(struct net_device *dev)
2213 struct ixgb_adapter *adapter = netdev_priv(dev); 2212 struct ixgb_adapter *adapter = netdev_priv(dev);
2214 2213
2215 disable_irq(adapter->pdev->irq); 2214 disable_irq(adapter->pdev->irq);
2216 ixgb_intr(adapter->pdev->irq, dev, NULL); 2215 ixgb_intr(adapter->pdev->irq, dev);
2217 enable_irq(adapter->pdev->irq); 2216 enable_irq(adapter->pdev->irq);
2218} 2217}
2219#endif 2218#endif
diff --git a/drivers/net/ixp2000/ixpdev.c b/drivers/net/ixp2000/ixpdev.c
index 6eeb965b4d72..a4eccb11d677 100644
--- a/drivers/net/ixp2000/ixpdev.c
+++ b/drivers/net/ixp2000/ixpdev.c
@@ -188,7 +188,7 @@ static void ixpdev_tx_complete(void)
188 } 188 }
189} 189}
190 190
191static irqreturn_t ixpdev_interrupt(int irq, void *dev_id, struct pt_regs *regs) 191static irqreturn_t ixpdev_interrupt(int irq, void *dev_id)
192{ 192{
193 u32 status; 193 u32 status;
194 194
diff --git a/drivers/net/lance.c b/drivers/net/lance.c
index f349e88e0ddf..6efbd499d752 100644
--- a/drivers/net/lance.c
+++ b/drivers/net/lance.c
@@ -301,7 +301,7 @@ static int lance_open(struct net_device *dev);
301static void lance_init_ring(struct net_device *dev, gfp_t mode); 301static void lance_init_ring(struct net_device *dev, gfp_t mode);
302static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev); 302static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev);
303static int lance_rx(struct net_device *dev); 303static int lance_rx(struct net_device *dev);
304static irqreturn_t lance_interrupt(int irq, void *dev_id, struct pt_regs *regs); 304static irqreturn_t lance_interrupt(int irq, void *dev_id);
305static int lance_close(struct net_device *dev); 305static int lance_close(struct net_device *dev);
306static struct net_device_stats *lance_get_stats(struct net_device *dev); 306static struct net_device_stats *lance_get_stats(struct net_device *dev);
307static void set_multicast_list(struct net_device *dev); 307static void set_multicast_list(struct net_device *dev);
@@ -1012,19 +1012,13 @@ out:
1012} 1012}
1013 1013
1014/* The LANCE interrupt handler. */ 1014/* The LANCE interrupt handler. */
1015static irqreturn_t 1015static irqreturn_t lance_interrupt(int irq, void *dev_id)
1016lance_interrupt(int irq, void *dev_id, struct pt_regs * regs)
1017{ 1016{
1018 struct net_device *dev = dev_id; 1017 struct net_device *dev = dev_id;
1019 struct lance_private *lp; 1018 struct lance_private *lp;
1020 int csr0, ioaddr, boguscnt=10; 1019 int csr0, ioaddr, boguscnt=10;
1021 int must_restart; 1020 int must_restart;
1022 1021
1023 if (dev == NULL) {
1024 printk ("lance_interrupt(): irq %d for unknown device.\n", irq);
1025 return IRQ_NONE;
1026 }
1027
1028 ioaddr = dev->base_addr; 1022 ioaddr = dev->base_addr;
1029 lp = dev->priv; 1023 lp = dev->priv;
1030 1024
diff --git a/drivers/net/lasi_82596.c b/drivers/net/lasi_82596.c
index da1eedef0b55..f4d815bca643 100644
--- a/drivers/net/lasi_82596.c
+++ b/drivers/net/lasi_82596.c
@@ -403,7 +403,7 @@ static char init_setup[] =
403 403
404static int i596_open(struct net_device *dev); 404static int i596_open(struct net_device *dev);
405static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev); 405static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev);
406static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs); 406static irqreturn_t i596_interrupt(int irq, void *dev_id);
407static int i596_close(struct net_device *dev); 407static int i596_close(struct net_device *dev);
408static struct net_device_stats *i596_get_stats(struct net_device *dev); 408static struct net_device_stats *i596_get_stats(struct net_device *dev);
409static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd); 409static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd);
@@ -527,7 +527,7 @@ static void i596_display_data(struct net_device *dev)
527 527
528 528
529#if defined(ENABLE_MVME16x_NET) || defined(ENABLE_BVME6000_NET) 529#if defined(ENABLE_MVME16x_NET) || defined(ENABLE_BVME6000_NET)
530static void i596_error(int irq, void *dev_id, struct pt_regs *regs) 530static void i596_error(int irq, void *dev_id)
531{ 531{
532 struct net_device *dev = dev_id; 532 struct net_device *dev = dev_id;
533 volatile unsigned char *pcc2 = (unsigned char *) 0xfff42000; 533 volatile unsigned char *pcc2 = (unsigned char *) 0xfff42000;
@@ -1252,12 +1252,12 @@ static int __devinit i82596_probe(struct net_device *dev,
1252static void i596_poll_controller(struct net_device *dev) 1252static void i596_poll_controller(struct net_device *dev)
1253{ 1253{
1254 disable_irq(dev->irq); 1254 disable_irq(dev->irq);
1255 i596_interrupt(dev->irq, dev, NULL); 1255 i596_interrupt(dev->irq, dev);
1256 enable_irq(dev->irq); 1256 enable_irq(dev->irq);
1257} 1257}
1258#endif 1258#endif
1259 1259
1260static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1260static irqreturn_t i596_interrupt(int irq, void *dev_id)
1261{ 1261{
1262 struct net_device *dev = dev_id; 1262 struct net_device *dev = dev_id;
1263 struct i596_private *lp; 1263 struct i596_private *lp;
diff --git a/drivers/net/lp486e.c b/drivers/net/lp486e.c
index 0258aaca9ed3..b833016f1825 100644
--- a/drivers/net/lp486e.c
+++ b/drivers/net/lp486e.c
@@ -379,7 +379,7 @@ static char init_setup[14] = {
379 379
380static int i596_open(struct net_device *dev); 380static int i596_open(struct net_device *dev);
381static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev); 381static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev);
382static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs); 382static irqreturn_t i596_interrupt(int irq, void *dev_id);
383static int i596_close(struct net_device *dev); 383static int i596_close(struct net_device *dev);
384static struct net_device_stats *i596_get_stats(struct net_device *dev); 384static struct net_device_stats *i596_get_stats(struct net_device *dev);
385static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd); 385static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd);
@@ -1151,7 +1151,7 @@ i596_handle_CU_completion(struct net_device *dev,
1151} 1151}
1152 1152
1153static irqreturn_t 1153static irqreturn_t
1154i596_interrupt (int irq, void *dev_instance, struct pt_regs *regs) { 1154i596_interrupt (int irq, void *dev_instance) {
1155 struct net_device *dev = (struct net_device *) dev_instance; 1155 struct net_device *dev = (struct net_device *) dev_instance;
1156 struct i596_private *lp; 1156 struct i596_private *lp;
1157 unsigned short status, ack_cmd = 0; 1157 unsigned short status, ack_cmd = 0;
diff --git a/drivers/net/mac89x0.c b/drivers/net/mac89x0.c
index 8472b71641da..e960138011c0 100644
--- a/drivers/net/mac89x0.c
+++ b/drivers/net/mac89x0.c
@@ -129,7 +129,7 @@ extern void reset_chip(struct net_device *dev);
129#endif 129#endif
130static int net_open(struct net_device *dev); 130static int net_open(struct net_device *dev);
131static int net_send_packet(struct sk_buff *skb, struct net_device *dev); 131static int net_send_packet(struct sk_buff *skb, struct net_device *dev);
132static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs *regs); 132static irqreturn_t net_interrupt(int irq, void *dev_id);
133static void set_multicast_list(struct net_device *dev); 133static void set_multicast_list(struct net_device *dev);
134static void net_rx(struct net_device *dev); 134static void net_rx(struct net_device *dev);
135static int net_close(struct net_device *dev); 135static int net_close(struct net_device *dev);
@@ -431,7 +431,7 @@ net_send_packet(struct sk_buff *skb, struct net_device *dev)
431 431
432/* The typical workload of the driver: 432/* The typical workload of the driver:
433 Handle the network interface interrupts. */ 433 Handle the network interface interrupts. */
434static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs * regs) 434static irqreturn_t net_interrupt(int irq, void *dev_id)
435{ 435{
436 struct net_device *dev = dev_id; 436 struct net_device *dev = dev_id;
437 struct net_local *lp; 437 struct net_local *lp;
diff --git a/drivers/net/mace.c b/drivers/net/mace.c
index 27c24eaa2414..2907cfb12ada 100644
--- a/drivers/net/mace.c
+++ b/drivers/net/mace.c
@@ -82,9 +82,9 @@ static struct net_device_stats *mace_stats(struct net_device *dev);
82static void mace_set_multicast(struct net_device *dev); 82static void mace_set_multicast(struct net_device *dev);
83static void mace_reset(struct net_device *dev); 83static void mace_reset(struct net_device *dev);
84static int mace_set_address(struct net_device *dev, void *addr); 84static int mace_set_address(struct net_device *dev, void *addr);
85static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs); 85static irqreturn_t mace_interrupt(int irq, void *dev_id);
86static irqreturn_t mace_txdma_intr(int irq, void *dev_id, struct pt_regs *regs); 86static irqreturn_t mace_txdma_intr(int irq, void *dev_id);
87static irqreturn_t mace_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs); 87static irqreturn_t mace_rxdma_intr(int irq, void *dev_id);
88static void mace_set_timeout(struct net_device *dev); 88static void mace_set_timeout(struct net_device *dev);
89static void mace_tx_timeout(unsigned long data); 89static void mace_tx_timeout(unsigned long data);
90static inline void dbdma_reset(volatile struct dbdma_regs __iomem *dma); 90static inline void dbdma_reset(volatile struct dbdma_regs __iomem *dma);
@@ -678,7 +678,7 @@ static void mace_handle_misc_intrs(struct mace_data *mp, int intr)
678 printk(KERN_DEBUG "mace: jabbering transceiver\n"); 678 printk(KERN_DEBUG "mace: jabbering transceiver\n");
679} 679}
680 680
681static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs) 681static irqreturn_t mace_interrupt(int irq, void *dev_id)
682{ 682{
683 struct net_device *dev = (struct net_device *) dev_id; 683 struct net_device *dev = (struct net_device *) dev_id;
684 struct mace_data *mp = (struct mace_data *) dev->priv; 684 struct mace_data *mp = (struct mace_data *) dev->priv;
@@ -890,12 +890,12 @@ out:
890 spin_unlock_irqrestore(&mp->lock, flags); 890 spin_unlock_irqrestore(&mp->lock, flags);
891} 891}
892 892
893static irqreturn_t mace_txdma_intr(int irq, void *dev_id, struct pt_regs *regs) 893static irqreturn_t mace_txdma_intr(int irq, void *dev_id)
894{ 894{
895 return IRQ_HANDLED; 895 return IRQ_HANDLED;
896} 896}
897 897
898static irqreturn_t mace_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs) 898static irqreturn_t mace_rxdma_intr(int irq, void *dev_id)
899{ 899{
900 struct net_device *dev = (struct net_device *) dev_id; 900 struct net_device *dev = (struct net_device *) dev_id;
901 struct mace_data *mp = (struct mace_data *) dev->priv; 901 struct mace_data *mp = (struct mace_data *) dev->priv;
diff --git a/drivers/net/macmace.c b/drivers/net/macmace.c
index 696d5513e558..464e4a6f3d5f 100644
--- a/drivers/net/macmace.c
+++ b/drivers/net/macmace.c
@@ -77,8 +77,8 @@ static int mace_xmit_start(struct sk_buff *skb, struct net_device *dev);
77static struct net_device_stats *mace_stats(struct net_device *dev); 77static struct net_device_stats *mace_stats(struct net_device *dev);
78static void mace_set_multicast(struct net_device *dev); 78static void mace_set_multicast(struct net_device *dev);
79static int mace_set_address(struct net_device *dev, void *addr); 79static int mace_set_address(struct net_device *dev, void *addr);
80static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs); 80static irqreturn_t mace_interrupt(int irq, void *dev_id);
81static irqreturn_t mace_dma_intr(int irq, void *dev_id, struct pt_regs *regs); 81static irqreturn_t mace_dma_intr(int irq, void *dev_id);
82static void mace_tx_timeout(struct net_device *dev); 82static void mace_tx_timeout(struct net_device *dev);
83 83
84/* Bit-reverse one byte of an ethernet hardware address. */ 84/* Bit-reverse one byte of an ethernet hardware address. */
@@ -573,7 +573,7 @@ static void mace_recv_interrupt(struct net_device *dev)
573 * Process the chip interrupt 573 * Process the chip interrupt
574 */ 574 */
575 575
576static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs) 576static irqreturn_t mace_interrupt(int irq, void *dev_id)
577{ 577{
578 struct net_device *dev = (struct net_device *) dev_id; 578 struct net_device *dev = (struct net_device *) dev_id;
579 struct mace_data *mp = (struct mace_data *) dev->priv; 579 struct mace_data *mp = (struct mace_data *) dev->priv;
@@ -645,7 +645,7 @@ static void mace_dma_rx_frame(struct net_device *dev, struct mace_frame *mf)
645 * The PSC has passed us a DMA interrupt event. 645 * The PSC has passed us a DMA interrupt event.
646 */ 646 */
647 647
648static irqreturn_t mace_dma_intr(int irq, void *dev_id, struct pt_regs *regs) 648static irqreturn_t mace_dma_intr(int irq, void *dev_id)
649{ 649{
650 struct net_device *dev = (struct net_device *) dev_id; 650 struct net_device *dev = (struct net_device *) dev_id;
651 struct mace_data *mp = (struct mace_data *) dev->priv; 651 struct mace_data *mp = (struct mace_data *) dev->priv;
diff --git a/drivers/net/meth.c b/drivers/net/meth.c
index 55b1495a70d6..c1aa60b9a982 100644
--- a/drivers/net/meth.c
+++ b/drivers/net/meth.c
@@ -92,7 +92,7 @@ struct meth_private {
92}; 92};
93 93
94static void meth_tx_timeout(struct net_device *dev); 94static void meth_tx_timeout(struct net_device *dev);
95static irqreturn_t meth_interrupt(int irq, void *dev_id, struct pt_regs *pregs); 95static irqreturn_t meth_interrupt(int irq, void *dev_id);
96 96
97/* global, initialized in ip32-setup.c */ 97/* global, initialized in ip32-setup.c */
98char o2meth_eaddr[8]={0,0,0,0,0,0,0,0}; 98char o2meth_eaddr[8]={0,0,0,0,0,0,0,0};
@@ -569,7 +569,7 @@ static void meth_error(struct net_device* dev, unsigned status)
569/* 569/*
570 * The typical interrupt entry point 570 * The typical interrupt entry point
571 */ 571 */
572static irqreturn_t meth_interrupt(int irq, void *dev_id, struct pt_regs *pregs) 572static irqreturn_t meth_interrupt(int irq, void *dev_id)
573{ 573{
574 struct net_device *dev = (struct net_device *)dev_id; 574 struct net_device *dev = (struct net_device *)dev_id;
575 struct meth_private *priv = (struct meth_private *) dev->priv; 575 struct meth_private *priv = (struct meth_private *) dev->priv;
diff --git a/drivers/net/mipsnet.c b/drivers/net/mipsnet.c
index 07e58f4a2916..c9469985bd71 100644
--- a/drivers/net/mipsnet.c
+++ b/drivers/net/mipsnet.c
@@ -116,8 +116,7 @@ static inline ssize_t mipsnet_get_fromdev(struct net_device *dev, size_t count)
116 return count; 116 return count;
117} 117}
118 118
119static irqreturn_t 119static irqreturn_t mipsnet_interrupt(int irq, void *dev_id)
120mipsnet_interrupt(int irq, void *dev_id, struct pt_regs *regs)
121{ 120{
122 struct net_device *dev = dev_id; 121 struct net_device *dev = dev_id;
123 122
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index eccedf3e627d..9997081c6dae 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -507,8 +507,7 @@ static void mv643xx_eth_update_pscr(struct net_device *dev,
507 * Output : N/A 507 * Output : N/A
508 */ 508 */
509 509
510static irqreturn_t mv643xx_eth_int_handler(int irq, void *dev_id, 510static irqreturn_t mv643xx_eth_int_handler(int irq, void *dev_id)
511 struct pt_regs *regs)
512{ 511{
513 struct net_device *dev = (struct net_device *)dev_id; 512 struct net_device *dev = (struct net_device *)dev_id;
514 struct mv643xx_private *mp = netdev_priv(dev); 513 struct mv643xx_private *mp = netdev_priv(dev);
@@ -1252,7 +1251,7 @@ static void mv643xx_netpoll(struct net_device *netdev)
1252 /* wait for previous write to complete */ 1251 /* wait for previous write to complete */
1253 mv_read(MV643XX_ETH_INTERRUPT_MASK_REG(port_num)); 1252 mv_read(MV643XX_ETH_INTERRUPT_MASK_REG(port_num));
1254 1253
1255 mv643xx_eth_int_handler(netdev->irq, netdev, NULL); 1254 mv643xx_eth_int_handler(netdev->irq, netdev);
1256 1255
1257 mv_write(MV643XX_ETH_INTERRUPT_MASK_REG(port_num), ETH_INT_UNMASK_ALL); 1256 mv_write(MV643XX_ETH_INTERRUPT_MASK_REG(port_num), ETH_INT_UNMASK_ALL);
1258} 1257}
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 4330197994df..fdbb0d7213b0 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -1148,7 +1148,7 @@ static int myri10ge_poll(struct net_device *netdev, int *budget)
1148 return 1; 1148 return 1;
1149} 1149}
1150 1150
1151static irqreturn_t myri10ge_intr(int irq, void *arg, struct pt_regs *regs) 1151static irqreturn_t myri10ge_intr(int irq, void *arg)
1152{ 1152{
1153 struct myri10ge_priv *mgp = arg; 1153 struct myri10ge_priv *mgp = arg;
1154 struct mcp_irq_data *stats = mgp->fw_stats; 1154 struct mcp_irq_data *stats = mgp->fw_stats;
diff --git a/drivers/net/myri_sbus.c b/drivers/net/myri_sbus.c
index a925bc9db4ac..466b484c9fa4 100644
--- a/drivers/net/myri_sbus.c
+++ b/drivers/net/myri_sbus.c
@@ -536,7 +536,7 @@ static void myri_rx(struct myri_eth *mp, struct net_device *dev)
536 } 536 }
537} 537}
538 538
539static irqreturn_t myri_interrupt(int irq, void *dev_id, struct pt_regs *regs) 539static irqreturn_t myri_interrupt(int irq, void *dev_id)
540{ 540{
541 struct net_device *dev = (struct net_device *) dev_id; 541 struct net_device *dev = (struct net_device *) dev_id;
542 struct myri_eth *mp = (struct myri_eth *) dev->priv; 542 struct myri_eth *mp = (struct myri_eth *) dev->priv;
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c
index d7b241f7d7bc..ffa0afd2eddc 100644
--- a/drivers/net/natsemi.c
+++ b/drivers/net/natsemi.c
@@ -623,7 +623,7 @@ static void free_ring(struct net_device *dev);
623static void reinit_ring(struct net_device *dev); 623static void reinit_ring(struct net_device *dev);
624static void init_registers(struct net_device *dev); 624static void init_registers(struct net_device *dev);
625static int start_tx(struct sk_buff *skb, struct net_device *dev); 625static int start_tx(struct sk_buff *skb, struct net_device *dev);
626static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *regs); 626static irqreturn_t intr_handler(int irq, void *dev_instance);
627static void netdev_error(struct net_device *dev, int intr_status); 627static void netdev_error(struct net_device *dev, int intr_status);
628static int natsemi_poll(struct net_device *dev, int *budget); 628static int natsemi_poll(struct net_device *dev, int *budget);
629static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do); 629static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do);
@@ -2088,7 +2088,7 @@ static void netdev_tx_done(struct net_device *dev)
2088 2088
2089/* The interrupt handler doesn't actually handle interrupts itself, it 2089/* The interrupt handler doesn't actually handle interrupts itself, it
2090 * schedules a NAPI poll if there is anything to do. */ 2090 * schedules a NAPI poll if there is anything to do. */
2091static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) 2091static irqreturn_t intr_handler(int irq, void *dev_instance)
2092{ 2092{
2093 struct net_device *dev = dev_instance; 2093 struct net_device *dev = dev_instance;
2094 struct netdev_private *np = netdev_priv(dev); 2094 struct netdev_private *np = netdev_priv(dev);
@@ -2373,7 +2373,7 @@ static struct net_device_stats *get_stats(struct net_device *dev)
2373static void natsemi_poll_controller(struct net_device *dev) 2373static void natsemi_poll_controller(struct net_device *dev)
2374{ 2374{
2375 disable_irq(dev->irq); 2375 disable_irq(dev->irq);
2376 intr_handler(dev->irq, dev, NULL); 2376 intr_handler(dev->irq, dev);
2377 enable_irq(dev->irq); 2377 enable_irq(dev->irq);
2378} 2378}
2379#endif 2379#endif
diff --git a/drivers/net/netx-eth.c b/drivers/net/netx-eth.c
index 30ed9a5a40e0..a53644f6a29b 100644
--- a/drivers/net/netx-eth.c
+++ b/drivers/net/netx-eth.c
@@ -176,7 +176,7 @@ static void netx_eth_receive(struct net_device *ndev)
176} 176}
177 177
178static irqreturn_t 178static irqreturn_t
179netx_eth_interrupt(int irq, void *dev_id, struct pt_regs *regs) 179netx_eth_interrupt(int irq, void *dev_id)
180{ 180{
181 struct net_device *ndev = dev_id; 181 struct net_device *ndev = dev_id;
182 struct netx_eth_priv *priv = netdev_priv(ndev); 182 struct netx_eth_priv *priv = netdev_priv(ndev);
diff --git a/drivers/net/ni5010.c b/drivers/net/ni5010.c
index 383c690eefec..8be0d030d6f4 100644
--- a/drivers/net/ni5010.c
+++ b/drivers/net/ni5010.c
@@ -99,7 +99,7 @@ struct ni5010_local {
99static int ni5010_probe1(struct net_device *dev, int ioaddr); 99static int ni5010_probe1(struct net_device *dev, int ioaddr);
100static int ni5010_open(struct net_device *dev); 100static int ni5010_open(struct net_device *dev);
101static int ni5010_send_packet(struct sk_buff *skb, struct net_device *dev); 101static int ni5010_send_packet(struct sk_buff *skb, struct net_device *dev);
102static irqreturn_t ni5010_interrupt(int irq, void *dev_id, struct pt_regs *regs); 102static irqreturn_t ni5010_interrupt(int irq, void *dev_id);
103static void ni5010_rx(struct net_device *dev); 103static void ni5010_rx(struct net_device *dev);
104static void ni5010_timeout(struct net_device *dev); 104static void ni5010_timeout(struct net_device *dev);
105static int ni5010_close(struct net_device *dev); 105static int ni5010_close(struct net_device *dev);
@@ -468,7 +468,7 @@ static int ni5010_send_packet(struct sk_buff *skb, struct net_device *dev)
468 * The typical workload of the driver: 468 * The typical workload of the driver:
469 * Handle the network interface interrupts. 469 * Handle the network interface interrupts.
470 */ 470 */
471static irqreturn_t ni5010_interrupt(int irq, void *dev_id, struct pt_regs *regs) 471static irqreturn_t ni5010_interrupt(int irq, void *dev_id)
472{ 472{
473 struct net_device *dev = dev_id; 473 struct net_device *dev = dev_id;
474 struct ni5010_local *lp; 474 struct ni5010_local *lp;
diff --git a/drivers/net/ni52.c b/drivers/net/ni52.c
index e8889235996e..26e42f6e9fb1 100644
--- a/drivers/net/ni52.c
+++ b/drivers/net/ni52.c
@@ -195,7 +195,7 @@ sizeof(nop_cmd) = 8;
195#define NI52_ADDR2 0x01 195#define NI52_ADDR2 0x01
196 196
197static int ni52_probe1(struct net_device *dev,int ioaddr); 197static int ni52_probe1(struct net_device *dev,int ioaddr);
198static irqreturn_t ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr); 198static irqreturn_t ni52_interrupt(int irq,void *dev_id);
199static int ni52_open(struct net_device *dev); 199static int ni52_open(struct net_device *dev);
200static int ni52_close(struct net_device *dev); 200static int ni52_close(struct net_device *dev);
201static int ni52_send_packet(struct sk_buff *,struct net_device *); 201static int ni52_send_packet(struct sk_buff *,struct net_device *);
@@ -837,7 +837,7 @@ static void *alloc_rfa(struct net_device *dev,void *ptr)
837 * Interrupt Handler ... 837 * Interrupt Handler ...
838 */ 838 */
839 839
840static irqreturn_t ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr) 840static irqreturn_t ni52_interrupt(int irq,void *dev_id)
841{ 841{
842 struct net_device *dev = dev_id; 842 struct net_device *dev = dev_id;
843 unsigned short stat; 843 unsigned short stat;
diff --git a/drivers/net/ni65.c b/drivers/net/ni65.c
index fab3c8593ac1..340ad0d5388a 100644
--- a/drivers/net/ni65.c
+++ b/drivers/net/ni65.c
@@ -248,7 +248,7 @@ struct priv
248}; 248};
249 249
250static int ni65_probe1(struct net_device *dev,int); 250static int ni65_probe1(struct net_device *dev,int);
251static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs *regs); 251static irqreturn_t ni65_interrupt(int irq, void * dev_id);
252static void ni65_recv_intr(struct net_device *dev,int); 252static void ni65_recv_intr(struct net_device *dev,int);
253static void ni65_xmit_intr(struct net_device *dev,int); 253static void ni65_xmit_intr(struct net_device *dev,int);
254static int ni65_open(struct net_device *dev); 254static int ni65_open(struct net_device *dev);
@@ -871,7 +871,7 @@ static int ni65_lance_reinit(struct net_device *dev)
871/* 871/*
872 * interrupt handler 872 * interrupt handler
873 */ 873 */
874static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs) 874static irqreturn_t ni65_interrupt(int irq, void * dev_id)
875{ 875{
876 int csr0 = 0; 876 int csr0 = 0;
877 struct net_device *dev = dev_id; 877 struct net_device *dev = dev_id;
diff --git a/drivers/net/ns83820.c b/drivers/net/ns83820.c
index e10da1aa3d30..b0127c71a5b6 100644
--- a/drivers/net/ns83820.c
+++ b/drivers/net/ns83820.c
@@ -1288,7 +1288,7 @@ static void ns83820_mib_isr(struct ns83820 *dev)
1288} 1288}
1289 1289
1290static void ns83820_do_isr(struct net_device *ndev, u32 isr); 1290static void ns83820_do_isr(struct net_device *ndev, u32 isr);
1291static irqreturn_t ns83820_irq(int foo, void *data, struct pt_regs *regs) 1291static irqreturn_t ns83820_irq(int foo, void *data)
1292{ 1292{
1293 struct net_device *ndev = data; 1293 struct net_device *ndev = data;
1294 struct ns83820 *dev = PRIV(ndev); 1294 struct ns83820 *dev = PRIV(ndev);
diff --git a/drivers/net/pci-skeleton.c b/drivers/net/pci-skeleton.c
index 2687e747657d..00ca0fdb837b 100644
--- a/drivers/net/pci-skeleton.c
+++ b/drivers/net/pci-skeleton.c
@@ -502,8 +502,7 @@ static void netdrv_tx_timeout (struct net_device *dev);
502static void netdrv_init_ring (struct net_device *dev); 502static void netdrv_init_ring (struct net_device *dev);
503static int netdrv_start_xmit (struct sk_buff *skb, 503static int netdrv_start_xmit (struct sk_buff *skb,
504 struct net_device *dev); 504 struct net_device *dev);
505static irqreturn_t netdrv_interrupt (int irq, void *dev_instance, 505static irqreturn_t netdrv_interrupt (int irq, void *dev_instance);
506 struct pt_regs *regs);
507static int netdrv_close (struct net_device *dev); 506static int netdrv_close (struct net_device *dev);
508static int netdrv_ioctl (struct net_device *dev, struct ifreq *rq, int cmd); 507static int netdrv_ioctl (struct net_device *dev, struct ifreq *rq, int cmd);
509static struct net_device_stats *netdrv_get_stats (struct net_device *dev); 508static struct net_device_stats *netdrv_get_stats (struct net_device *dev);
@@ -1654,8 +1653,7 @@ static void netdrv_weird_interrupt (struct net_device *dev,
1654 1653
1655/* The interrupt handler does all of the Rx thread work and cleans up 1654/* The interrupt handler does all of the Rx thread work and cleans up
1656 after the Tx thread. */ 1655 after the Tx thread. */
1657static irqreturn_t netdrv_interrupt (int irq, void *dev_instance, 1656static irqreturn_t netdrv_interrupt (int irq, void *dev_instance)
1658 struct pt_regs *regs)
1659{ 1657{
1660 struct net_device *dev = (struct net_device *) dev_instance; 1658 struct net_device *dev = (struct net_device *) dev_instance;
1661 struct netdrv_private *tp = dev->priv; 1659 struct netdrv_private *tp = dev->priv;
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c
index 2418cdb9d317..046009928526 100644
--- a/drivers/net/pcmcia/3c574_cs.c
+++ b/drivers/net/pcmcia/3c574_cs.c
@@ -238,7 +238,7 @@ static void tc574_reset(struct net_device *dev);
238static void media_check(unsigned long arg); 238static void media_check(unsigned long arg);
239static int el3_open(struct net_device *dev); 239static int el3_open(struct net_device *dev);
240static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev); 240static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev);
241static irqreturn_t el3_interrupt(int irq, void *dev_id, struct pt_regs *regs); 241static irqreturn_t el3_interrupt(int irq, void *dev_id);
242static void update_stats(struct net_device *dev); 242static void update_stats(struct net_device *dev);
243static struct net_device_stats *el3_get_stats(struct net_device *dev); 243static struct net_device_stats *el3_get_stats(struct net_device *dev);
244static int el3_rx(struct net_device *dev, int worklimit); 244static int el3_rx(struct net_device *dev, int worklimit);
@@ -817,7 +817,7 @@ static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
817} 817}
818 818
819/* The EL3 interrupt handler. */ 819/* The EL3 interrupt handler. */
820static irqreturn_t el3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 820static irqreturn_t el3_interrupt(int irq, void *dev_id)
821{ 821{
822 struct net_device *dev = (struct net_device *) dev_id; 822 struct net_device *dev = (struct net_device *) dev_id;
823 struct el3_private *lp = netdev_priv(dev); 823 struct el3_private *lp = netdev_priv(dev);
@@ -927,7 +927,7 @@ static void media_check(unsigned long arg)
927 if ((inw(ioaddr + EL3_STATUS) & IntLatch) && (inb(ioaddr + Timer) == 0xff)) { 927 if ((inw(ioaddr + EL3_STATUS) & IntLatch) && (inb(ioaddr + Timer) == 0xff)) {
928 if (!lp->fast_poll) 928 if (!lp->fast_poll)
929 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name); 929 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name);
930 el3_interrupt(dev->irq, lp, NULL); 930 el3_interrupt(dev->irq, lp);
931 lp->fast_poll = HZ; 931 lp->fast_poll = HZ;
932 } 932 }
933 if (lp->fast_poll) { 933 if (lp->fast_poll) {
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c
index a0e2b01c027c..231fa2c9ec6c 100644
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@ -151,7 +151,7 @@ static void media_check(unsigned long arg);
151static int el3_config(struct net_device *dev, struct ifmap *map); 151static int el3_config(struct net_device *dev, struct ifmap *map);
152static int el3_open(struct net_device *dev); 152static int el3_open(struct net_device *dev);
153static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev); 153static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev);
154static irqreturn_t el3_interrupt(int irq, void *dev_id, struct pt_regs *regs); 154static irqreturn_t el3_interrupt(int irq, void *dev_id);
155static void update_stats(struct net_device *dev); 155static void update_stats(struct net_device *dev);
156static struct net_device_stats *el3_get_stats(struct net_device *dev); 156static struct net_device_stats *el3_get_stats(struct net_device *dev);
157static int el3_rx(struct net_device *dev); 157static int el3_rx(struct net_device *dev);
@@ -645,7 +645,7 @@ static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
645} 645}
646 646
647/* The EL3 interrupt handler. */ 647/* The EL3 interrupt handler. */
648static irqreturn_t el3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 648static irqreturn_t el3_interrupt(int irq, void *dev_id)
649{ 649{
650 struct net_device *dev = (struct net_device *) dev_id; 650 struct net_device *dev = (struct net_device *) dev_id;
651 struct el3_private *lp = netdev_priv(dev); 651 struct el3_private *lp = netdev_priv(dev);
@@ -748,7 +748,7 @@ static void media_check(unsigned long arg)
748 (inb(ioaddr + EL3_TIMER) == 0xff)) { 748 (inb(ioaddr + EL3_TIMER) == 0xff)) {
749 if (!lp->fast_poll) 749 if (!lp->fast_poll)
750 printk(KERN_WARNING "%s: interrupt(s) dropped!\n", dev->name); 750 printk(KERN_WARNING "%s: interrupt(s) dropped!\n", dev->name);
751 el3_interrupt(dev->irq, lp, NULL); 751 el3_interrupt(dev->irq, lp);
752 lp->fast_poll = HZ; 752 lp->fast_poll = HZ;
753 } 753 }
754 if (lp->fast_poll) { 754 if (lp->fast_poll) {
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index a8891a9000ac..5ddd5742f779 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -92,7 +92,7 @@ static int axnet_open(struct net_device *dev);
92static int axnet_close(struct net_device *dev); 92static int axnet_close(struct net_device *dev);
93static int axnet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 93static int axnet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
94static const struct ethtool_ops netdev_ethtool_ops; 94static const struct ethtool_ops netdev_ethtool_ops;
95static irqreturn_t ei_irq_wrapper(int irq, void *dev_id, struct pt_regs *regs); 95static irqreturn_t ei_irq_wrapper(int irq, void *dev_id);
96static void ei_watchdog(u_long arg); 96static void ei_watchdog(u_long arg);
97static void axnet_reset_8390(struct net_device *dev); 97static void axnet_reset_8390(struct net_device *dev);
98 98
@@ -112,7 +112,7 @@ static void axdev_setup(struct net_device *dev);
112static void AX88190_init(struct net_device *dev, int startp); 112static void AX88190_init(struct net_device *dev, int startp);
113static int ax_open(struct net_device *dev); 113static int ax_open(struct net_device *dev);
114static int ax_close(struct net_device *dev); 114static int ax_close(struct net_device *dev);
115static irqreturn_t ax_interrupt(int irq, void *dev_id, struct pt_regs *regs); 115static irqreturn_t ax_interrupt(int irq, void *dev_id);
116 116
117/*====================================================================*/ 117/*====================================================================*/
118 118
@@ -599,11 +599,11 @@ static void axnet_reset_8390(struct net_device *dev)
599 599
600/*====================================================================*/ 600/*====================================================================*/
601 601
602static irqreturn_t ei_irq_wrapper(int irq, void *dev_id, struct pt_regs *regs) 602static irqreturn_t ei_irq_wrapper(int irq, void *dev_id)
603{ 603{
604 struct net_device *dev = dev_id; 604 struct net_device *dev = dev_id;
605 PRIV(dev)->stale = 0; 605 PRIV(dev)->stale = 0;
606 return ax_interrupt(irq, dev_id, regs); 606 return ax_interrupt(irq, dev_id);
607} 607}
608 608
609static void ei_watchdog(u_long arg) 609static void ei_watchdog(u_long arg)
@@ -621,7 +621,7 @@ static void ei_watchdog(u_long arg)
621 if (info->stale++ && (inb_p(nic_base + EN0_ISR) & ENISR_ALL)) { 621 if (info->stale++ && (inb_p(nic_base + EN0_ISR) & ENISR_ALL)) {
622 if (!info->fast_poll) 622 if (!info->fast_poll)
623 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name); 623 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name);
624 ei_irq_wrapper(dev->irq, dev, NULL); 624 ei_irq_wrapper(dev->irq, dev);
625 info->fast_poll = HZ; 625 info->fast_poll = HZ;
626 } 626 }
627 if (info->fast_poll) { 627 if (info->fast_poll) {
@@ -1193,7 +1193,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
1193 * needed. 1193 * needed.
1194 */ 1194 */
1195 1195
1196static irqreturn_t ax_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1196static irqreturn_t ax_interrupt(int irq, void *dev_id)
1197{ 1197{
1198 struct net_device *dev = dev_id; 1198 struct net_device *dev = dev_id;
1199 long e8390_base; 1199 long e8390_base;
@@ -1201,14 +1201,8 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id, struct pt_regs * regs)
1201 struct ei_device *ei_local; 1201 struct ei_device *ei_local;
1202 int handled = 0; 1202 int handled = 0;
1203 1203
1204 if (dev == NULL)
1205 {
1206 printk ("net_interrupt(): irq %d for unknown device.\n", irq);
1207 return IRQ_NONE;
1208 }
1209
1210 e8390_base = dev->base_addr; 1204 e8390_base = dev->base_addr;
1211 ei_local = (struct ei_device *) netdev_priv(dev); 1205 ei_local = netdev_priv(dev);
1212 1206
1213 /* 1207 /*
1214 * Protect the irq test too. 1208 * Protect the irq test too.
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c
index d682f30dea6e..65f6fdf43725 100644
--- a/drivers/net/pcmcia/fmvj18x_cs.c
+++ b/drivers/net/pcmcia/fmvj18x_cs.c
@@ -97,7 +97,7 @@ static int fjn_config(struct net_device *dev, struct ifmap *map);
97static int fjn_open(struct net_device *dev); 97static int fjn_open(struct net_device *dev);
98static int fjn_close(struct net_device *dev); 98static int fjn_close(struct net_device *dev);
99static int fjn_start_xmit(struct sk_buff *skb, struct net_device *dev); 99static int fjn_start_xmit(struct sk_buff *skb, struct net_device *dev);
100static irqreturn_t fjn_interrupt(int irq, void *dev_id, struct pt_regs *regs); 100static irqreturn_t fjn_interrupt(int irq, void *dev_id);
101static void fjn_rx(struct net_device *dev); 101static void fjn_rx(struct net_device *dev);
102static void fjn_reset(struct net_device *dev); 102static void fjn_reset(struct net_device *dev);
103static struct net_device_stats *fjn_get_stats(struct net_device *dev); 103static struct net_device_stats *fjn_get_stats(struct net_device *dev);
@@ -733,7 +733,7 @@ module_exit(exit_fmvj18x_cs);
733 733
734/*====================================================================*/ 734/*====================================================================*/
735 735
736static irqreturn_t fjn_interrupt(int irq, void *dev_id, struct pt_regs *regs) 736static irqreturn_t fjn_interrupt(int irq, void *dev_id)
737{ 737{
738 struct net_device *dev = dev_id; 738 struct net_device *dev = dev_id;
739 local_info_t *lp = netdev_priv(dev); 739 local_info_t *lp = netdev_priv(dev);
diff --git a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c
index 7d5687e94607..e77110e4c288 100644
--- a/drivers/net/pcmcia/nmclan_cs.c
+++ b/drivers/net/pcmcia/nmclan_cs.c
@@ -426,7 +426,7 @@ static int mace_open(struct net_device *dev);
426static int mace_close(struct net_device *dev); 426static int mace_close(struct net_device *dev);
427static int mace_start_xmit(struct sk_buff *skb, struct net_device *dev); 427static int mace_start_xmit(struct sk_buff *skb, struct net_device *dev);
428static void mace_tx_timeout(struct net_device *dev); 428static void mace_tx_timeout(struct net_device *dev);
429static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs); 429static irqreturn_t mace_interrupt(int irq, void *dev_id);
430static struct net_device_stats *mace_get_stats(struct net_device *dev); 430static struct net_device_stats *mace_get_stats(struct net_device *dev);
431static int mace_rx(struct net_device *dev, unsigned char RxCnt); 431static int mace_rx(struct net_device *dev, unsigned char RxCnt);
432static void restore_multicast_list(struct net_device *dev); 432static void restore_multicast_list(struct net_device *dev);
@@ -1002,7 +1002,7 @@ static int mace_start_xmit(struct sk_buff *skb, struct net_device *dev)
1002mace_interrupt 1002mace_interrupt
1003 The interrupt handler. 1003 The interrupt handler.
1004---------------------------------------------------------------------------- */ 1004---------------------------------------------------------------------------- */
1005static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1005static irqreturn_t mace_interrupt(int irq, void *dev_id)
1006{ 1006{
1007 struct net_device *dev = (struct net_device *) dev_id; 1007 struct net_device *dev = (struct net_device *) dev_id;
1008 mace_private *lp = netdev_priv(dev); 1008 mace_private *lp = netdev_priv(dev);
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index a09c22840f63..0c00d182e7fd 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -109,7 +109,7 @@ static int pcnet_open(struct net_device *dev);
109static int pcnet_close(struct net_device *dev); 109static int pcnet_close(struct net_device *dev);
110static int ei_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 110static int ei_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
111static const struct ethtool_ops netdev_ethtool_ops; 111static const struct ethtool_ops netdev_ethtool_ops;
112static irqreturn_t ei_irq_wrapper(int irq, void *dev_id, struct pt_regs *regs); 112static irqreturn_t ei_irq_wrapper(int irq, void *dev_id);
113static void ei_watchdog(u_long arg); 113static void ei_watchdog(u_long arg);
114static void pcnet_reset_8390(struct net_device *dev); 114static void pcnet_reset_8390(struct net_device *dev);
115static int set_config(struct net_device *dev, struct ifmap *map); 115static int set_config(struct net_device *dev, struct ifmap *map);
@@ -1071,11 +1071,11 @@ static int set_config(struct net_device *dev, struct ifmap *map)
1071 1071
1072/*====================================================================*/ 1072/*====================================================================*/
1073 1073
1074static irqreturn_t ei_irq_wrapper(int irq, void *dev_id, struct pt_regs *regs) 1074static irqreturn_t ei_irq_wrapper(int irq, void *dev_id)
1075{ 1075{
1076 struct net_device *dev = dev_id; 1076 struct net_device *dev = dev_id;
1077 pcnet_dev_t *info; 1077 pcnet_dev_t *info;
1078 irqreturn_t ret = ei_interrupt(irq, dev_id, regs); 1078 irqreturn_t ret = ei_interrupt(irq, dev_id);
1079 1079
1080 if (ret == IRQ_HANDLED) { 1080 if (ret == IRQ_HANDLED) {
1081 info = PRIV(dev); 1081 info = PRIV(dev);
@@ -1100,7 +1100,7 @@ static void ei_watchdog(u_long arg)
1100 if (info->stale++ && (inb_p(nic_base + EN0_ISR) & ENISR_ALL)) { 1100 if (info->stale++ && (inb_p(nic_base + EN0_ISR) & ENISR_ALL)) {
1101 if (!info->fast_poll) 1101 if (!info->fast_poll)
1102 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name); 1102 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name);
1103 ei_irq_wrapper(dev->irq, dev, NULL); 1103 ei_irq_wrapper(dev->irq, dev);
1104 info->fast_poll = HZ; 1104 info->fast_poll = HZ;
1105 } 1105 }
1106 if (info->fast_poll) { 1106 if (info->fast_poll) {
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c
index a2f3a0e2a005..20fcc3576202 100644
--- a/drivers/net/pcmcia/smc91c92_cs.c
+++ b/drivers/net/pcmcia/smc91c92_cs.c
@@ -287,7 +287,7 @@ static int smc_close(struct net_device *dev);
287static int smc_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 287static int smc_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
288static void smc_tx_timeout(struct net_device *dev); 288static void smc_tx_timeout(struct net_device *dev);
289static int smc_start_xmit(struct sk_buff *skb, struct net_device *dev); 289static int smc_start_xmit(struct sk_buff *skb, struct net_device *dev);
290static irqreturn_t smc_interrupt(int irq, void *dev_id, struct pt_regs *regs); 290static irqreturn_t smc_interrupt(int irq, void *dev_id);
291static void smc_rx(struct net_device *dev); 291static void smc_rx(struct net_device *dev);
292static struct net_device_stats *smc_get_stats(struct net_device *dev); 292static struct net_device_stats *smc_get_stats(struct net_device *dev);
293static void set_rx_mode(struct net_device *dev); 293static void set_rx_mode(struct net_device *dev);
@@ -1545,7 +1545,7 @@ static void smc_eph_irq(struct net_device *dev)
1545 1545
1546/*====================================================================*/ 1546/*====================================================================*/
1547 1547
1548static irqreturn_t smc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1548static irqreturn_t smc_interrupt(int irq, void *dev_id)
1549{ 1549{
1550 struct net_device *dev = dev_id; 1550 struct net_device *dev = dev_id;
1551 struct smc_private *smc = netdev_priv(dev); 1551 struct smc_private *smc = netdev_priv(dev);
@@ -1966,7 +1966,7 @@ static void media_check(u_long arg)
1966 if (smc->watchdog++ && ((i>>8) & i)) { 1966 if (smc->watchdog++ && ((i>>8) & i)) {
1967 if (!smc->fast_poll) 1967 if (!smc->fast_poll)
1968 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name); 1968 printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name);
1969 smc_interrupt(dev->irq, smc, NULL); 1969 smc_interrupt(dev->irq, smc);
1970 smc->fast_poll = HZ; 1970 smc->fast_poll = HZ;
1971 } 1971 }
1972 if (smc->fast_poll) { 1972 if (smc->fast_poll) {
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c
index 62664c01eb45..f3914f58d67f 100644
--- a/drivers/net/pcmcia/xirc2ps_cs.c
+++ b/drivers/net/pcmcia/xirc2ps_cs.c
@@ -308,7 +308,7 @@ static void xirc2ps_detach(struct pcmcia_device *p_dev);
308 * less on other parts of the kernel. 308 * less on other parts of the kernel.
309 */ 309 */
310 310
311static irqreturn_t xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs); 311static irqreturn_t xirc2ps_interrupt(int irq, void *dev_id);
312 312
313/**************** 313/****************
314 * A linked list of "instances" of the device. Each actual 314 * A linked list of "instances" of the device. Each actual
@@ -1121,7 +1121,7 @@ static int xirc2ps_resume(struct pcmcia_device *link)
1121 * This is the Interrupt service route. 1121 * This is the Interrupt service route.
1122 */ 1122 */
1123static irqreturn_t 1123static irqreturn_t
1124xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1124xirc2ps_interrupt(int irq, void *dev_id)
1125{ 1125{
1126 struct net_device *dev = (struct net_device *)dev_id; 1126 struct net_device *dev = (struct net_device *)dev_id;
1127 local_info_t *lp = netdev_priv(dev); 1127 local_info_t *lp = netdev_priv(dev);
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
index a43e24245b7e..36f9d988278f 100644
--- a/drivers/net/pcnet32.c
+++ b/drivers/net/pcnet32.c
@@ -304,7 +304,7 @@ static int pcnet32_open(struct net_device *);
304static int pcnet32_init_ring(struct net_device *); 304static int pcnet32_init_ring(struct net_device *);
305static int pcnet32_start_xmit(struct sk_buff *, struct net_device *); 305static int pcnet32_start_xmit(struct sk_buff *, struct net_device *);
306static void pcnet32_tx_timeout(struct net_device *dev); 306static void pcnet32_tx_timeout(struct net_device *dev);
307static irqreturn_t pcnet32_interrupt(int, void *, struct pt_regs *); 307static irqreturn_t pcnet32_interrupt(int, void *);
308static int pcnet32_close(struct net_device *); 308static int pcnet32_close(struct net_device *);
309static struct net_device_stats *pcnet32_get_stats(struct net_device *); 309static struct net_device_stats *pcnet32_get_stats(struct net_device *);
310static void pcnet32_load_multicast(struct net_device *dev); 310static void pcnet32_load_multicast(struct net_device *dev);
@@ -674,7 +674,7 @@ static void pcnet32_purge_rx_ring(struct net_device *dev)
674static void pcnet32_poll_controller(struct net_device *dev) 674static void pcnet32_poll_controller(struct net_device *dev)
675{ 675{
676 disable_irq(dev->irq); 676 disable_irq(dev->irq);
677 pcnet32_interrupt(0, dev, NULL); 677 pcnet32_interrupt(0, dev);
678 enable_irq(dev->irq); 678 enable_irq(dev->irq);
679} 679}
680#endif 680#endif
@@ -2561,7 +2561,7 @@ static int pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev)
2561 2561
2562/* The PCNET32 interrupt handler. */ 2562/* The PCNET32 interrupt handler. */
2563static irqreturn_t 2563static irqreturn_t
2564pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2564pcnet32_interrupt(int irq, void *dev_id)
2565{ 2565{
2566 struct net_device *dev = dev_id; 2566 struct net_device *dev = dev_id;
2567 struct pcnet32_private *lp; 2567 struct pcnet32_private *lp;
@@ -2569,13 +2569,6 @@ pcnet32_interrupt(int irq, void *dev_id, struct pt_regs *regs)
2569 u16 csr0; 2569 u16 csr0;
2570 int boguscnt = max_interrupt_work; 2570 int boguscnt = max_interrupt_work;
2571 2571
2572 if (!dev) {
2573 if (pcnet32_debug & NETIF_MSG_INTR)
2574 printk(KERN_DEBUG "%s(): irq %d for unknown device\n",
2575 __FUNCTION__, irq);
2576 return IRQ_NONE;
2577 }
2578
2579 ioaddr = dev->base_addr; 2572 ioaddr = dev->base_addr;
2580 lp = dev->priv; 2573 lp = dev->priv;
2581 2574
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index f5aad77288f9..3af9fcf76c81 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -480,7 +480,7 @@ void phy_error(struct phy_device *phydev)
480 * description: When a PHY interrupt occurs, the handler disables 480 * description: When a PHY interrupt occurs, the handler disables
481 * interrupts, and schedules a work task to clear the interrupt. 481 * interrupts, and schedules a work task to clear the interrupt.
482 */ 482 */
483static irqreturn_t phy_interrupt(int irq, void *phy_dat, struct pt_regs *regs) 483static irqreturn_t phy_interrupt(int irq, void *phy_dat)
484{ 484{
485 struct phy_device *phydev = phy_dat; 485 struct phy_device *phydev = phy_dat;
486 486
diff --git a/drivers/net/plip.c b/drivers/net/plip.c
index d4f54e9798cd..71afb274498f 100644
--- a/drivers/net/plip.c
+++ b/drivers/net/plip.c
@@ -143,7 +143,7 @@ static void plip_bh(struct net_device *dev);
143static void plip_timer_bh(struct net_device *dev); 143static void plip_timer_bh(struct net_device *dev);
144 144
145/* Interrupt handler */ 145/* Interrupt handler */
146static void plip_interrupt(int irq, void *dev_id, struct pt_regs *regs); 146static void plip_interrupt(int irq, void *dev_id);
147 147
148/* Functions for DEV methods */ 148/* Functions for DEV methods */
149static int plip_tx_packet(struct sk_buff *skb, struct net_device *dev); 149static int plip_tx_packet(struct sk_buff *skb, struct net_device *dev);
@@ -385,7 +385,7 @@ plip_timer_bh(struct net_device *dev)
385 struct net_local *nl = netdev_priv(dev); 385 struct net_local *nl = netdev_priv(dev);
386 386
387 if (!(atomic_read (&nl->kill_timer))) { 387 if (!(atomic_read (&nl->kill_timer))) {
388 plip_interrupt (-1, dev, NULL); 388 plip_interrupt (-1, dev);
389 389
390 schedule_delayed_work(&nl->timer, 1); 390 schedule_delayed_work(&nl->timer, 1);
391 } 391 }
@@ -902,18 +902,13 @@ plip_error(struct net_device *dev, struct net_local *nl,
902 902
903/* Handle the parallel port interrupts. */ 903/* Handle the parallel port interrupts. */
904static void 904static void
905plip_interrupt(int irq, void *dev_id, struct pt_regs * regs) 905plip_interrupt(int irq, void *dev_id)
906{ 906{
907 struct net_device *dev = dev_id; 907 struct net_device *dev = dev_id;
908 struct net_local *nl; 908 struct net_local *nl;
909 struct plip_local *rcv; 909 struct plip_local *rcv;
910 unsigned char c0; 910 unsigned char c0;
911 911
912 if (dev == NULL) {
913 printk(KERN_DEBUG "plip_interrupt: irq %d for unknown device.\n", irq);
914 return;
915 }
916
917 nl = netdev_priv(dev); 912 nl = netdev_priv(dev);
918 rcv = &nl->rcv_data; 913 rcv = &nl->rcv_data;
919 914
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index 157471846349..ec640f6229ae 100644
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -1965,7 +1965,7 @@ quit_polling:
1965 return 1; 1965 return 1;
1966} 1966}
1967 1967
1968static irqreturn_t ql3xxx_isr(int irq, void *dev_id, struct pt_regs *regs) 1968static irqreturn_t ql3xxx_isr(int irq, void *dev_id)
1969{ 1969{
1970 1970
1971 struct net_device *ndev = dev_id; 1971 struct net_device *ndev = dev_id;
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 4c47c5b10ba0..f1c75751cab7 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -473,8 +473,7 @@ MODULE_VERSION(RTL8169_VERSION);
473 473
474static int rtl8169_open(struct net_device *dev); 474static int rtl8169_open(struct net_device *dev);
475static int rtl8169_start_xmit(struct sk_buff *skb, struct net_device *dev); 475static int rtl8169_start_xmit(struct sk_buff *skb, struct net_device *dev);
476static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance, 476static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance);
477 struct pt_regs *regs);
478static int rtl8169_init_ring(struct net_device *dev); 477static int rtl8169_init_ring(struct net_device *dev);
479static void rtl8169_hw_start(struct net_device *dev); 478static void rtl8169_hw_start(struct net_device *dev);
480static int rtl8169_close(struct net_device *dev); 479static int rtl8169_close(struct net_device *dev);
@@ -1392,7 +1391,7 @@ static void rtl8169_netpoll(struct net_device *dev)
1392 struct pci_dev *pdev = tp->pci_dev; 1391 struct pci_dev *pdev = tp->pci_dev;
1393 1392
1394 disable_irq(pdev->irq); 1393 disable_irq(pdev->irq);
1395 rtl8169_interrupt(pdev->irq, dev, NULL); 1394 rtl8169_interrupt(pdev->irq, dev);
1396 enable_irq(pdev->irq); 1395 enable_irq(pdev->irq);
1397} 1396}
1398#endif 1397#endif
@@ -2592,7 +2591,7 @@ rtl8169_rx_interrupt(struct net_device *dev, struct rtl8169_private *tp,
2592 2591
2593/* The interrupt handler does all of the Rx thread work and cleans up after the Tx thread. */ 2592/* The interrupt handler does all of the Rx thread work and cleans up after the Tx thread. */
2594static irqreturn_t 2593static irqreturn_t
2595rtl8169_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 2594rtl8169_interrupt(int irq, void *dev_instance)
2596{ 2595{
2597 struct net_device *dev = (struct net_device *) dev_instance; 2596 struct net_device *dev = (struct net_device *) dev_instance;
2598 struct rtl8169_private *tp = netdev_priv(dev); 2597 struct rtl8169_private *tp = netdev_priv(dev);
diff --git a/drivers/net/rrunner.c b/drivers/net/rrunner.c
index 6108bac8d56a..d81536f90df6 100644
--- a/drivers/net/rrunner.c
+++ b/drivers/net/rrunner.c
@@ -1053,7 +1053,7 @@ static void rx_int(struct net_device *dev, u32 rxlimit, u32 index)
1053} 1053}
1054 1054
1055 1055
1056static irqreturn_t rr_interrupt(int irq, void *dev_id, struct pt_regs *ptregs) 1056static irqreturn_t rr_interrupt(int irq, void *dev_id)
1057{ 1057{
1058 struct rr_private *rrpriv; 1058 struct rr_private *rrpriv;
1059 struct rr_regs __iomem *regs; 1059 struct rr_regs __iomem *regs;
diff --git a/drivers/net/rrunner.h b/drivers/net/rrunner.h
index 99451b523399..9f3e050c4dc6 100644
--- a/drivers/net/rrunner.h
+++ b/drivers/net/rrunner.h
@@ -829,7 +829,7 @@ struct rr_private
829 */ 829 */
830static int rr_init(struct net_device *dev); 830static int rr_init(struct net_device *dev);
831static int rr_init1(struct net_device *dev); 831static int rr_init1(struct net_device *dev);
832static irqreturn_t rr_interrupt(int irq, void *dev_id, struct pt_regs *regs); 832static irqreturn_t rr_interrupt(int irq, void *dev_id);
833 833
834static int rr_open(struct net_device *dev); 834static int rr_open(struct net_device *dev);
835static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev); 835static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev);
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 1bf23e41f580..a231ab7d28dd 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -4029,8 +4029,7 @@ static int s2io_chk_rx_buffers(nic_t *sp, int rng_n)
4029 return 0; 4029 return 0;
4030} 4030}
4031 4031
4032static irqreturn_t 4032static irqreturn_t s2io_msi_handle(int irq, void *dev_id)
4033s2io_msi_handle(int irq, void *dev_id, struct pt_regs *regs)
4034{ 4033{
4035 struct net_device *dev = (struct net_device *) dev_id; 4034 struct net_device *dev = (struct net_device *) dev_id;
4036 nic_t *sp = dev->priv; 4035 nic_t *sp = dev->priv;
@@ -4063,8 +4062,7 @@ s2io_msi_handle(int irq, void *dev_id, struct pt_regs *regs)
4063 return IRQ_HANDLED; 4062 return IRQ_HANDLED;
4064} 4063}
4065 4064
4066static irqreturn_t 4065static irqreturn_t s2io_msix_ring_handle(int irq, void *dev_id)
4067s2io_msix_ring_handle(int irq, void *dev_id, struct pt_regs *regs)
4068{ 4066{
4069 ring_info_t *ring = (ring_info_t *)dev_id; 4067 ring_info_t *ring = (ring_info_t *)dev_id;
4070 nic_t *sp = ring->nic; 4068 nic_t *sp = ring->nic;
@@ -4078,8 +4076,7 @@ s2io_msix_ring_handle(int irq, void *dev_id, struct pt_regs *regs)
4078 return IRQ_HANDLED; 4076 return IRQ_HANDLED;
4079} 4077}
4080 4078
4081static irqreturn_t 4079static irqreturn_t s2io_msix_fifo_handle(int irq, void *dev_id)
4082s2io_msix_fifo_handle(int irq, void *dev_id, struct pt_regs *regs)
4083{ 4080{
4084 fifo_info_t *fifo = (fifo_info_t *)dev_id; 4081 fifo_info_t *fifo = (fifo_info_t *)dev_id;
4085 nic_t *sp = fifo->nic; 4082 nic_t *sp = fifo->nic;
@@ -4155,7 +4152,6 @@ static void s2io_txpic_intr_handle(nic_t *sp)
4155 * s2io_isr - ISR handler of the device . 4152 * s2io_isr - ISR handler of the device .
4156 * @irq: the irq of the device. 4153 * @irq: the irq of the device.
4157 * @dev_id: a void pointer to the dev structure of the NIC. 4154 * @dev_id: a void pointer to the dev structure of the NIC.
4158 * @pt_regs: pointer to the registers pushed on the stack.
4159 * Description: This function is the ISR handler of the device. It 4155 * Description: This function is the ISR handler of the device. It
4160 * identifies the reason for the interrupt and calls the relevant 4156 * identifies the reason for the interrupt and calls the relevant
4161 * service routines. As a contongency measure, this ISR allocates the 4157 * service routines. As a contongency measure, this ISR allocates the
@@ -4165,7 +4161,7 @@ static void s2io_txpic_intr_handle(nic_t *sp)
4165 * IRQ_HANDLED: will be returned if IRQ was handled by this routine 4161 * IRQ_HANDLED: will be returned if IRQ was handled by this routine
4166 * IRQ_NONE: will be returned if interrupt is not from our device 4162 * IRQ_NONE: will be returned if interrupt is not from our device
4167 */ 4163 */
4168static irqreturn_t s2io_isr(int irq, void *dev_id, struct pt_regs *regs) 4164static irqreturn_t s2io_isr(int irq, void *dev_id)
4169{ 4165{
4170 struct net_device *dev = (struct net_device *) dev_id; 4166 struct net_device *dev = (struct net_device *) dev_id;
4171 nic_t *sp = dev->priv; 4167 nic_t *sp = dev->priv;
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h
index 3afd9126a591..12b719f4d00f 100644
--- a/drivers/net/s2io.h
+++ b/drivers/net/s2io.h
@@ -116,179 +116,179 @@ typedef struct {
116/* The statistics block of Xena */ 116/* The statistics block of Xena */
117typedef struct stat_block { 117typedef struct stat_block {
118/* Tx MAC statistics counters. */ 118/* Tx MAC statistics counters. */
119 u32 tmac_data_octets; 119 __le32 tmac_data_octets;
120 u32 tmac_frms; 120 __le32 tmac_frms;
121 u64 tmac_drop_frms; 121 __le64 tmac_drop_frms;
122 u32 tmac_bcst_frms; 122 __le32 tmac_bcst_frms;
123 u32 tmac_mcst_frms; 123 __le32 tmac_mcst_frms;
124 u64 tmac_pause_ctrl_frms; 124 __le64 tmac_pause_ctrl_frms;
125 u32 tmac_ucst_frms; 125 __le32 tmac_ucst_frms;
126 u32 tmac_ttl_octets; 126 __le32 tmac_ttl_octets;
127 u32 tmac_any_err_frms; 127 __le32 tmac_any_err_frms;
128 u32 tmac_nucst_frms; 128 __le32 tmac_nucst_frms;
129 u64 tmac_ttl_less_fb_octets; 129 __le64 tmac_ttl_less_fb_octets;
130 u64 tmac_vld_ip_octets; 130 __le64 tmac_vld_ip_octets;
131 u32 tmac_drop_ip; 131 __le32 tmac_drop_ip;
132 u32 tmac_vld_ip; 132 __le32 tmac_vld_ip;
133 u32 tmac_rst_tcp; 133 __le32 tmac_rst_tcp;
134 u32 tmac_icmp; 134 __le32 tmac_icmp;
135 u64 tmac_tcp; 135 __le64 tmac_tcp;
136 u32 reserved_0; 136 __le32 reserved_0;
137 u32 tmac_udp; 137 __le32 tmac_udp;
138 138
139/* Rx MAC Statistics counters. */ 139/* Rx MAC Statistics counters. */
140 u32 rmac_data_octets; 140 __le32 rmac_data_octets;
141 u32 rmac_vld_frms; 141 __le32 rmac_vld_frms;
142 u64 rmac_fcs_err_frms; 142 __le64 rmac_fcs_err_frms;
143 u64 rmac_drop_frms; 143 __le64 rmac_drop_frms;
144 u32 rmac_vld_bcst_frms; 144 __le32 rmac_vld_bcst_frms;
145 u32 rmac_vld_mcst_frms; 145 __le32 rmac_vld_mcst_frms;
146 u32 rmac_out_rng_len_err_frms; 146 __le32 rmac_out_rng_len_err_frms;
147 u32 rmac_in_rng_len_err_frms; 147 __le32 rmac_in_rng_len_err_frms;
148 u64 rmac_long_frms; 148 __le64 rmac_long_frms;
149 u64 rmac_pause_ctrl_frms; 149 __le64 rmac_pause_ctrl_frms;
150 u64 rmac_unsup_ctrl_frms; 150 __le64 rmac_unsup_ctrl_frms;
151 u32 rmac_accepted_ucst_frms; 151 __le32 rmac_accepted_ucst_frms;
152 u32 rmac_ttl_octets; 152 __le32 rmac_ttl_octets;
153 u32 rmac_discarded_frms; 153 __le32 rmac_discarded_frms;
154 u32 rmac_accepted_nucst_frms; 154 __le32 rmac_accepted_nucst_frms;
155 u32 reserved_1; 155 __le32 reserved_1;
156 u32 rmac_drop_events; 156 __le32 rmac_drop_events;
157 u64 rmac_ttl_less_fb_octets; 157 __le64 rmac_ttl_less_fb_octets;
158 u64 rmac_ttl_frms; 158 __le64 rmac_ttl_frms;
159 u64 reserved_2; 159 __le64 reserved_2;
160 u32 rmac_usized_frms; 160 __le32 rmac_usized_frms;
161 u32 reserved_3; 161 __le32 reserved_3;
162 u32 rmac_frag_frms; 162 __le32 rmac_frag_frms;
163 u32 rmac_osized_frms; 163 __le32 rmac_osized_frms;
164 u32 reserved_4; 164 __le32 reserved_4;
165 u32 rmac_jabber_frms; 165 __le32 rmac_jabber_frms;
166 u64 rmac_ttl_64_frms; 166 __le64 rmac_ttl_64_frms;
167 u64 rmac_ttl_65_127_frms; 167 __le64 rmac_ttl_65_127_frms;
168 u64 reserved_5; 168 __le64 reserved_5;
169 u64 rmac_ttl_128_255_frms; 169 __le64 rmac_ttl_128_255_frms;
170 u64 rmac_ttl_256_511_frms; 170 __le64 rmac_ttl_256_511_frms;
171 u64 reserved_6; 171 __le64 reserved_6;
172 u64 rmac_ttl_512_1023_frms; 172 __le64 rmac_ttl_512_1023_frms;
173 u64 rmac_ttl_1024_1518_frms; 173 __le64 rmac_ttl_1024_1518_frms;
174 u32 rmac_ip; 174 __le32 rmac_ip;
175 u32 reserved_7; 175 __le32 reserved_7;
176 u64 rmac_ip_octets; 176 __le64 rmac_ip_octets;
177 u32 rmac_drop_ip; 177 __le32 rmac_drop_ip;
178 u32 rmac_hdr_err_ip; 178 __le32 rmac_hdr_err_ip;
179 u32 reserved_8; 179 __le32 reserved_8;
180 u32 rmac_icmp; 180 __le32 rmac_icmp;
181 u64 rmac_tcp; 181 __le64 rmac_tcp;
182 u32 rmac_err_drp_udp; 182 __le32 rmac_err_drp_udp;
183 u32 rmac_udp; 183 __le32 rmac_udp;
184 u64 rmac_xgmii_err_sym; 184 __le64 rmac_xgmii_err_sym;
185 u64 rmac_frms_q0; 185 __le64 rmac_frms_q0;
186 u64 rmac_frms_q1; 186 __le64 rmac_frms_q1;
187 u64 rmac_frms_q2; 187 __le64 rmac_frms_q2;
188 u64 rmac_frms_q3; 188 __le64 rmac_frms_q3;
189 u64 rmac_frms_q4; 189 __le64 rmac_frms_q4;
190 u64 rmac_frms_q5; 190 __le64 rmac_frms_q5;
191 u64 rmac_frms_q6; 191 __le64 rmac_frms_q6;
192 u64 rmac_frms_q7; 192 __le64 rmac_frms_q7;
193 u16 rmac_full_q3; 193 __le16 rmac_full_q3;
194 u16 rmac_full_q2; 194 __le16 rmac_full_q2;
195 u16 rmac_full_q1; 195 __le16 rmac_full_q1;
196 u16 rmac_full_q0; 196 __le16 rmac_full_q0;
197 u16 rmac_full_q7; 197 __le16 rmac_full_q7;
198 u16 rmac_full_q6; 198 __le16 rmac_full_q6;
199 u16 rmac_full_q5; 199 __le16 rmac_full_q5;
200 u16 rmac_full_q4; 200 __le16 rmac_full_q4;
201 u32 reserved_9; 201 __le32 reserved_9;
202 u32 rmac_pause_cnt; 202 __le32 rmac_pause_cnt;
203 u64 rmac_xgmii_data_err_cnt; 203 __le64 rmac_xgmii_data_err_cnt;
204 u64 rmac_xgmii_ctrl_err_cnt; 204 __le64 rmac_xgmii_ctrl_err_cnt;
205 u32 rmac_err_tcp; 205 __le32 rmac_err_tcp;
206 u32 rmac_accepted_ip; 206 __le32 rmac_accepted_ip;
207 207
208/* PCI/PCI-X Read transaction statistics. */ 208/* PCI/PCI-X Read transaction statistics. */
209 u32 new_rd_req_cnt; 209 __le32 new_rd_req_cnt;
210 u32 rd_req_cnt; 210 __le32 rd_req_cnt;
211 u32 rd_rtry_cnt; 211 __le32 rd_rtry_cnt;
212 u32 new_rd_req_rtry_cnt; 212 __le32 new_rd_req_rtry_cnt;
213 213
214/* PCI/PCI-X Write/Read transaction statistics. */ 214/* PCI/PCI-X Write/Read transaction statistics. */
215 u32 wr_req_cnt; 215 __le32 wr_req_cnt;
216 u32 wr_rtry_rd_ack_cnt; 216 __le32 wr_rtry_rd_ack_cnt;
217 u32 new_wr_req_rtry_cnt; 217 __le32 new_wr_req_rtry_cnt;
218 u32 new_wr_req_cnt; 218 __le32 new_wr_req_cnt;
219 u32 wr_disc_cnt; 219 __le32 wr_disc_cnt;
220 u32 wr_rtry_cnt; 220 __le32 wr_rtry_cnt;
221 221
222/* PCI/PCI-X Write / DMA Transaction statistics. */ 222/* PCI/PCI-X Write / DMA Transaction statistics. */
223 u32 txp_wr_cnt; 223 __le32 txp_wr_cnt;
224 u32 rd_rtry_wr_ack_cnt; 224 __le32 rd_rtry_wr_ack_cnt;
225 u32 txd_wr_cnt; 225 __le32 txd_wr_cnt;
226 u32 txd_rd_cnt; 226 __le32 txd_rd_cnt;
227 u32 rxd_wr_cnt; 227 __le32 rxd_wr_cnt;
228 u32 rxd_rd_cnt; 228 __le32 rxd_rd_cnt;
229 u32 rxf_wr_cnt; 229 __le32 rxf_wr_cnt;
230 u32 txf_rd_cnt; 230 __le32 txf_rd_cnt;
231 231
232/* Tx MAC statistics overflow counters. */ 232/* Tx MAC statistics overflow counters. */
233 u32 tmac_data_octets_oflow; 233 __le32 tmac_data_octets_oflow;
234 u32 tmac_frms_oflow; 234 __le32 tmac_frms_oflow;
235 u32 tmac_bcst_frms_oflow; 235 __le32 tmac_bcst_frms_oflow;
236 u32 tmac_mcst_frms_oflow; 236 __le32 tmac_mcst_frms_oflow;
237 u32 tmac_ucst_frms_oflow; 237 __le32 tmac_ucst_frms_oflow;
238 u32 tmac_ttl_octets_oflow; 238 __le32 tmac_ttl_octets_oflow;
239 u32 tmac_any_err_frms_oflow; 239 __le32 tmac_any_err_frms_oflow;
240 u32 tmac_nucst_frms_oflow; 240 __le32 tmac_nucst_frms_oflow;
241 u64 tmac_vlan_frms; 241 __le64 tmac_vlan_frms;
242 u32 tmac_drop_ip_oflow; 242 __le32 tmac_drop_ip_oflow;
243 u32 tmac_vld_ip_oflow; 243 __le32 tmac_vld_ip_oflow;
244 u32 tmac_rst_tcp_oflow; 244 __le32 tmac_rst_tcp_oflow;
245 u32 tmac_icmp_oflow; 245 __le32 tmac_icmp_oflow;
246 u32 tpa_unknown_protocol; 246 __le32 tpa_unknown_protocol;
247 u32 tmac_udp_oflow; 247 __le32 tmac_udp_oflow;
248 u32 reserved_10; 248 __le32 reserved_10;
249 u32 tpa_parse_failure; 249 __le32 tpa_parse_failure;
250 250
251/* Rx MAC Statistics overflow counters. */ 251/* Rx MAC Statistics overflow counters. */
252 u32 rmac_data_octets_oflow; 252 __le32 rmac_data_octets_oflow;
253 u32 rmac_vld_frms_oflow; 253 __le32 rmac_vld_frms_oflow;
254 u32 rmac_vld_bcst_frms_oflow; 254 __le32 rmac_vld_bcst_frms_oflow;
255 u32 rmac_vld_mcst_frms_oflow; 255 __le32 rmac_vld_mcst_frms_oflow;
256 u32 rmac_accepted_ucst_frms_oflow; 256 __le32 rmac_accepted_ucst_frms_oflow;
257 u32 rmac_ttl_octets_oflow; 257 __le32 rmac_ttl_octets_oflow;
258 u32 rmac_discarded_frms_oflow; 258 __le32 rmac_discarded_frms_oflow;
259 u32 rmac_accepted_nucst_frms_oflow; 259 __le32 rmac_accepted_nucst_frms_oflow;
260 u32 rmac_usized_frms_oflow; 260 __le32 rmac_usized_frms_oflow;
261 u32 rmac_drop_events_oflow; 261 __le32 rmac_drop_events_oflow;
262 u32 rmac_frag_frms_oflow; 262 __le32 rmac_frag_frms_oflow;
263 u32 rmac_osized_frms_oflow; 263 __le32 rmac_osized_frms_oflow;
264 u32 rmac_ip_oflow; 264 __le32 rmac_ip_oflow;
265 u32 rmac_jabber_frms_oflow; 265 __le32 rmac_jabber_frms_oflow;
266 u32 rmac_icmp_oflow; 266 __le32 rmac_icmp_oflow;
267 u32 rmac_drop_ip_oflow; 267 __le32 rmac_drop_ip_oflow;
268 u32 rmac_err_drp_udp_oflow; 268 __le32 rmac_err_drp_udp_oflow;
269 u32 rmac_udp_oflow; 269 __le32 rmac_udp_oflow;
270 u32 reserved_11; 270 __le32 reserved_11;
271 u32 rmac_pause_cnt_oflow; 271 __le32 rmac_pause_cnt_oflow;
272 u64 rmac_ttl_1519_4095_frms; 272 __le64 rmac_ttl_1519_4095_frms;
273 u64 rmac_ttl_4096_8191_frms; 273 __le64 rmac_ttl_4096_8191_frms;
274 u64 rmac_ttl_8192_max_frms; 274 __le64 rmac_ttl_8192_max_frms;
275 u64 rmac_ttl_gt_max_frms; 275 __le64 rmac_ttl_gt_max_frms;
276 u64 rmac_osized_alt_frms; 276 __le64 rmac_osized_alt_frms;
277 u64 rmac_jabber_alt_frms; 277 __le64 rmac_jabber_alt_frms;
278 u64 rmac_gt_max_alt_frms; 278 __le64 rmac_gt_max_alt_frms;
279 u64 rmac_vlan_frms; 279 __le64 rmac_vlan_frms;
280 u32 rmac_len_discard; 280 __le32 rmac_len_discard;
281 u32 rmac_fcs_discard; 281 __le32 rmac_fcs_discard;
282 u32 rmac_pf_discard; 282 __le32 rmac_pf_discard;
283 u32 rmac_da_discard; 283 __le32 rmac_da_discard;
284 u32 rmac_red_discard; 284 __le32 rmac_red_discard;
285 u32 rmac_rts_discard; 285 __le32 rmac_rts_discard;
286 u32 reserved_12; 286 __le32 reserved_12;
287 u32 rmac_ingm_full_discard; 287 __le32 rmac_ingm_full_discard;
288 u32 reserved_13; 288 __le32 reserved_13;
289 u32 rmac_accepted_ip_oflow; 289 __le32 rmac_accepted_ip_oflow;
290 u32 reserved_14; 290 __le32 reserved_14;
291 u32 link_fault_cnt; 291 __le32 link_fault_cnt;
292 u8 buffer[20]; 292 u8 buffer[20];
293 swStat_t sw_stat; 293 swStat_t sw_stat;
294 xpakStat_t xpak_stat; 294 xpakStat_t xpak_stat;
@@ -992,12 +992,12 @@ static void s2io_init_pci(nic_t * sp);
992static int s2io_set_mac_addr(struct net_device *dev, u8 * addr); 992static int s2io_set_mac_addr(struct net_device *dev, u8 * addr);
993static void s2io_alarm_handle(unsigned long data); 993static void s2io_alarm_handle(unsigned long data);
994static int s2io_enable_msi(nic_t *nic); 994static int s2io_enable_msi(nic_t *nic);
995static irqreturn_t s2io_msi_handle(int irq, void *dev_id, struct pt_regs *regs); 995static irqreturn_t s2io_msi_handle(int irq, void *dev_id);
996static irqreturn_t 996static irqreturn_t
997s2io_msix_ring_handle(int irq, void *dev_id, struct pt_regs *regs); 997s2io_msix_ring_handle(int irq, void *dev_id);
998static irqreturn_t 998static irqreturn_t
999s2io_msix_fifo_handle(int irq, void *dev_id, struct pt_regs *regs); 999s2io_msix_fifo_handle(int irq, void *dev_id);
1000static irqreturn_t s2io_isr(int irq, void *dev_id, struct pt_regs *regs); 1000static irqreturn_t s2io_isr(int irq, void *dev_id);
1001static int verify_xena_quiescence(nic_t *sp, u64 val64, int flag); 1001static int verify_xena_quiescence(nic_t *sp, u64 val64, int flag);
1002static const struct ethtool_ops netdev_ethtool_ops; 1002static const struct ethtool_ops netdev_ethtool_ops;
1003static void s2io_set_link(unsigned long data); 1003static void s2io_set_link(unsigned long data);
diff --git a/drivers/net/saa9730.c b/drivers/net/saa9730.c
index c479b07be788..b269513cde45 100644
--- a/drivers/net/saa9730.c
+++ b/drivers/net/saa9730.c
@@ -745,10 +745,9 @@ static int lan_saa9730_rx(struct net_device *dev)
745 return 0; 745 return 0;
746} 746}
747 747
748static irqreturn_t lan_saa9730_interrupt(const int irq, void *dev_id, 748static irqreturn_t lan_saa9730_interrupt(const int irq, void *dev_id)
749 struct pt_regs *regs)
750{ 749{
751 struct net_device *dev = (struct net_device *) dev_id; 750 struct net_device *dev = dev_id;
752 struct lan_saa9730_private *lp = netdev_priv(dev); 751 struct lan_saa9730_private *lp = netdev_priv(dev);
753 752
754 if (lan_saa9730_debug > 5) 753 if (lan_saa9730_debug > 5)
diff --git a/drivers/net/sb1000.c b/drivers/net/sb1000.c
index a1789ae59278..b9fa4fbb1398 100644
--- a/drivers/net/sb1000.c
+++ b/drivers/net/sb1000.c
@@ -84,7 +84,7 @@ extern int sb1000_probe(struct net_device *dev);
84static int sb1000_open(struct net_device *dev); 84static int sb1000_open(struct net_device *dev);
85static int sb1000_dev_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd); 85static int sb1000_dev_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd);
86static int sb1000_start_xmit(struct sk_buff *skb, struct net_device *dev); 86static int sb1000_start_xmit(struct sk_buff *skb, struct net_device *dev);
87static irqreturn_t sb1000_interrupt(int irq, void *dev_id, struct pt_regs *regs); 87static irqreturn_t sb1000_interrupt(int irq, void *dev_id);
88static struct net_device_stats *sb1000_stats(struct net_device *dev); 88static struct net_device_stats *sb1000_stats(struct net_device *dev);
89static int sb1000_close(struct net_device *dev); 89static int sb1000_close(struct net_device *dev);
90 90
@@ -1079,24 +1079,18 @@ sb1000_start_xmit(struct sk_buff *skb, struct net_device *dev)
1079} 1079}
1080 1080
1081/* SB1000 interrupt handler. */ 1081/* SB1000 interrupt handler. */
1082static irqreturn_t sb1000_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1082static irqreturn_t sb1000_interrupt(int irq, void *dev_id)
1083{ 1083{
1084 char *name; 1084 char *name;
1085 unsigned char st; 1085 unsigned char st;
1086 int ioaddr[2]; 1086 int ioaddr[2];
1087 struct net_device *dev = (struct net_device *) dev_id; 1087 struct net_device *dev = dev_id;
1088 struct sb1000_private *lp = netdev_priv(dev); 1088 struct sb1000_private *lp = netdev_priv(dev);
1089 1089
1090 const unsigned char Command0[6] = {0x80, 0x2c, 0x00, 0x00, 0x00, 0x00}; 1090 const unsigned char Command0[6] = {0x80, 0x2c, 0x00, 0x00, 0x00, 0x00};
1091 const unsigned char Command1[6] = {0x80, 0x2e, 0x00, 0x00, 0x00, 0x00}; 1091 const unsigned char Command1[6] = {0x80, 0x2e, 0x00, 0x00, 0x00, 0x00};
1092 const int MaxRxErrorCount = 6; 1092 const int MaxRxErrorCount = 6;
1093 1093
1094 if (dev == NULL) {
1095 printk(KERN_ERR "sb1000_interrupt(): irq %d for unknown device.\n",
1096 irq);
1097 return IRQ_NONE;
1098 }
1099
1100 ioaddr[0] = dev->base_addr; 1094 ioaddr[0] = dev->base_addr;
1101 /* mem_start holds the second I/O address */ 1095 /* mem_start holds the second I/O address */
1102 ioaddr[1] = dev->mem_start; 1096 ioaddr[1] = dev->mem_start;
diff --git a/drivers/net/sb1250-mac.c b/drivers/net/sb1250-mac.c
index e4c8896b76cb..db2324939b69 100644
--- a/drivers/net/sb1250-mac.c
+++ b/drivers/net/sb1250-mac.c
@@ -294,7 +294,7 @@ static void sbmac_channel_stop(struct sbmac_softc *s);
294static sbmac_state_t sbmac_set_channel_state(struct sbmac_softc *,sbmac_state_t); 294static sbmac_state_t sbmac_set_channel_state(struct sbmac_softc *,sbmac_state_t);
295static void sbmac_promiscuous_mode(struct sbmac_softc *sc,int onoff); 295static void sbmac_promiscuous_mode(struct sbmac_softc *sc,int onoff);
296static uint64_t sbmac_addr2reg(unsigned char *ptr); 296static uint64_t sbmac_addr2reg(unsigned char *ptr);
297static irqreturn_t sbmac_intr(int irq,void *dev_instance,struct pt_regs *rgs); 297static irqreturn_t sbmac_intr(int irq,void *dev_instance);
298static int sbmac_start_tx(struct sk_buff *skb, struct net_device *dev); 298static int sbmac_start_tx(struct sk_buff *skb, struct net_device *dev);
299static void sbmac_setmulti(struct sbmac_softc *sc); 299static void sbmac_setmulti(struct sbmac_softc *sc);
300static int sbmac_init(struct net_device *dev, int idx); 300static int sbmac_init(struct net_device *dev, int idx);
@@ -2049,7 +2049,7 @@ static int sbmac_set_duplex(struct sbmac_softc *s,sbmac_duplex_t duplex,sbmac_fc
2049 * Return value: 2049 * Return value:
2050 * nothing 2050 * nothing
2051 ********************************************************************* */ 2051 ********************************************************************* */
2052static irqreturn_t sbmac_intr(int irq,void *dev_instance,struct pt_regs *rgs) 2052static irqreturn_t sbmac_intr(int irq,void *dev_instance)
2053{ 2053{
2054 struct net_device *dev = (struct net_device *) dev_instance; 2054 struct net_device *dev = (struct net_device *) dev_instance;
2055 struct sbmac_softc *sc = netdev_priv(dev); 2055 struct sbmac_softc *sc = netdev_priv(dev);
diff --git a/drivers/net/seeq8005.c b/drivers/net/seeq8005.c
index 20afdc7f2b97..d9d0a3a3c558 100644
--- a/drivers/net/seeq8005.c
+++ b/drivers/net/seeq8005.c
@@ -83,7 +83,7 @@ static int seeq8005_probe1(struct net_device *dev, int ioaddr);
83static int seeq8005_open(struct net_device *dev); 83static int seeq8005_open(struct net_device *dev);
84static void seeq8005_timeout(struct net_device *dev); 84static void seeq8005_timeout(struct net_device *dev);
85static int seeq8005_send_packet(struct sk_buff *skb, struct net_device *dev); 85static int seeq8005_send_packet(struct sk_buff *skb, struct net_device *dev);
86static irqreturn_t seeq8005_interrupt(int irq, void *dev_id, struct pt_regs *regs); 86static irqreturn_t seeq8005_interrupt(int irq, void *dev_id);
87static void seeq8005_rx(struct net_device *dev); 87static void seeq8005_rx(struct net_device *dev);
88static int seeq8005_close(struct net_device *dev); 88static int seeq8005_close(struct net_device *dev);
89static struct net_device_stats *seeq8005_get_stats(struct net_device *dev); 89static struct net_device_stats *seeq8005_get_stats(struct net_device *dev);
@@ -437,7 +437,7 @@ inline void wait_for_buffer(struct net_device * dev)
437 437
438/* The typical workload of the driver: 438/* The typical workload of the driver:
439 Handle the network interface interrupts. */ 439 Handle the network interface interrupts. */
440static irqreturn_t seeq8005_interrupt(int irq, void *dev_id, struct pt_regs * regs) 440static irqreturn_t seeq8005_interrupt(int irq, void *dev_id)
441{ 441{
442 struct net_device *dev = dev_id; 442 struct net_device *dev = dev_id;
443 struct net_local *lp; 443 struct net_local *lp;
diff --git a/drivers/net/sgiseeq.c b/drivers/net/sgiseeq.c
index f95a5b0223fb..a833e7f9757f 100644
--- a/drivers/net/sgiseeq.c
+++ b/drivers/net/sgiseeq.c
@@ -432,7 +432,7 @@ static inline void sgiseeq_tx(struct net_device *dev, struct sgiseeq_private *sp
432 } 432 }
433} 433}
434 434
435static irqreturn_t sgiseeq_interrupt(int irq, void *dev_id, struct pt_regs *regs) 435static irqreturn_t sgiseeq_interrupt(int irq, void *dev_id)
436{ 436{
437 struct net_device *dev = (struct net_device *) dev_id; 437 struct net_device *dev = (struct net_device *) dev_id;
438 struct sgiseeq_private *sp = netdev_priv(dev); 438 struct sgiseeq_private *sp = netdev_priv(dev);
diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c
index e8f26b79bbaf..aaba458584fb 100644
--- a/drivers/net/sis190.c
+++ b/drivers/net/sis190.c
@@ -713,7 +713,7 @@ static void sis190_tx_interrupt(struct net_device *dev,
713 * The interrupt handler does all of the Rx thread work and cleans up after 713 * The interrupt handler does all of the Rx thread work and cleans up after
714 * the Tx thread. 714 * the Tx thread.
715 */ 715 */
716static irqreturn_t sis190_interrupt(int irq, void *__dev, struct pt_regs *regs) 716static irqreturn_t sis190_interrupt(int irq, void *__dev)
717{ 717{
718 struct net_device *dev = __dev; 718 struct net_device *dev = __dev;
719 struct sis190_private *tp = netdev_priv(dev); 719 struct sis190_private *tp = netdev_priv(dev);
@@ -758,7 +758,7 @@ static void sis190_netpoll(struct net_device *dev)
758 struct pci_dev *pdev = tp->pci_dev; 758 struct pci_dev *pdev = tp->pci_dev;
759 759
760 disable_irq(pdev->irq); 760 disable_irq(pdev->irq);
761 sis190_interrupt(pdev->irq, dev, NULL); 761 sis190_interrupt(pdev->irq, dev);
762 enable_irq(pdev->irq); 762 enable_irq(pdev->irq);
763} 763}
764#endif 764#endif
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
index 28606e20df1c..fb2b53051635 100644
--- a/drivers/net/sis900.c
+++ b/drivers/net/sis900.c
@@ -218,7 +218,7 @@ static void sis900_init_rx_ring(struct net_device *net_dev);
218static int sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev); 218static int sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev);
219static int sis900_rx(struct net_device *net_dev); 219static int sis900_rx(struct net_device *net_dev);
220static void sis900_finish_xmit (struct net_device *net_dev); 220static void sis900_finish_xmit (struct net_device *net_dev);
221static irqreturn_t sis900_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 221static irqreturn_t sis900_interrupt(int irq, void *dev_instance);
222static int sis900_close(struct net_device *net_dev); 222static int sis900_close(struct net_device *net_dev);
223static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd); 223static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd);
224static struct net_device_stats *sis900_get_stats(struct net_device *net_dev); 224static struct net_device_stats *sis900_get_stats(struct net_device *net_dev);
@@ -988,7 +988,7 @@ static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr)
988static void sis900_poll(struct net_device *dev) 988static void sis900_poll(struct net_device *dev)
989{ 989{
990 disable_irq(dev->irq); 990 disable_irq(dev->irq);
991 sis900_interrupt(dev->irq, dev, NULL); 991 sis900_interrupt(dev->irq, dev);
992 enable_irq(dev->irq); 992 enable_irq(dev->irq);
993} 993}
994#endif 994#endif
@@ -1642,7 +1642,7 @@ sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev)
1642 * and cleans up after the Tx thread 1642 * and cleans up after the Tx thread
1643 */ 1643 */
1644 1644
1645static irqreturn_t sis900_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 1645static irqreturn_t sis900_interrupt(int irq, void *dev_instance)
1646{ 1646{
1647 struct net_device *net_dev = dev_instance; 1647 struct net_device *net_dev = dev_instance;
1648 struct sis900_private *sis_priv = net_dev->priv; 1648 struct sis900_private *sis_priv = net_dev->priv;
diff --git a/drivers/net/sk98lin/skge.c b/drivers/net/sk98lin/skge.c
index 99e92627642c..d4913c3de2a1 100644
--- a/drivers/net/sk98lin/skge.c
+++ b/drivers/net/sk98lin/skge.c
@@ -196,8 +196,8 @@ static SK_BOOL BoardAllocMem(SK_AC *pAC);
196static void BoardFreeMem(SK_AC *pAC); 196static void BoardFreeMem(SK_AC *pAC);
197static void BoardInitMem(SK_AC *pAC); 197static void BoardInitMem(SK_AC *pAC);
198static void SetupRing(SK_AC*, void*, uintptr_t, RXD**, RXD**, RXD**, int*, SK_BOOL); 198static void SetupRing(SK_AC*, void*, uintptr_t, RXD**, RXD**, RXD**, int*, SK_BOOL);
199static SkIsrRetVar SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs); 199static SkIsrRetVar SkGeIsr(int irq, void *dev_id);
200static SkIsrRetVar SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs); 200static SkIsrRetVar SkGeIsrOnePort(int irq, void *dev_id);
201static int SkGeOpen(struct SK_NET_DEVICE *dev); 201static int SkGeOpen(struct SK_NET_DEVICE *dev);
202static int SkGeClose(struct SK_NET_DEVICE *dev); 202static int SkGeClose(struct SK_NET_DEVICE *dev);
203static int SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev); 203static int SkGeXmit(struct sk_buff *skb, struct SK_NET_DEVICE *dev);
@@ -880,7 +880,7 @@ int PortIndex) /* index of the port for which to re-init */
880 * Returns: N/A 880 * Returns: N/A
881 * 881 *
882 */ 882 */
883static SkIsrRetVar SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs) 883static SkIsrRetVar SkGeIsr(int irq, void *dev_id)
884{ 884{
885struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id; 885struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id;
886DEV_NET *pNet; 886DEV_NET *pNet;
@@ -1029,7 +1029,7 @@ SK_U32 IntSrc; /* interrupts source register contents */
1029 * Returns: N/A 1029 * Returns: N/A
1030 * 1030 *
1031 */ 1031 */
1032static SkIsrRetVar SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs) 1032static SkIsrRetVar SkGeIsrOnePort(int irq, void *dev_id)
1033{ 1033{
1034struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id; 1034struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id;
1035DEV_NET *pNet; 1035DEV_NET *pNet;
@@ -1140,7 +1140,7 @@ SK_U32 IntSrc; /* interrupts source register contents */
1140static void SkGePollController(struct net_device *dev) 1140static void SkGePollController(struct net_device *dev)
1141{ 1141{
1142 disable_irq(dev->irq); 1142 disable_irq(dev->irq);
1143 SkGeIsr(dev->irq, dev, NULL); 1143 SkGeIsr(dev->irq, dev);
1144 enable_irq(dev->irq); 1144 enable_irq(dev->irq);
1145} 1145}
1146#endif 1146#endif
diff --git a/drivers/net/sk_mca.c b/drivers/net/sk_mca.c
index 37b88da1abe5..96e06c51b75d 100644
--- a/drivers/net/sk_mca.c
+++ b/drivers/net/sk_mca.c
@@ -732,7 +732,7 @@ static u16 irqtx_handler(struct net_device *dev, u16 oldcsr0)
732 732
733/* general interrupt entry */ 733/* general interrupt entry */
734 734
735static irqreturn_t irq_handler(int irq, void *device, struct pt_regs *regs) 735static irqreturn_t irq_handler(int irq, void *device)
736{ 736{
737 struct net_device *dev = (struct net_device *) device; 737 struct net_device *dev = (struct net_device *) device;
738 u16 csr0val; 738 u16 csr0val;
diff --git a/drivers/net/skfp/skfddi.c b/drivers/net/skfp/skfddi.c
index 8e4d18440a56..9733a11c6146 100644
--- a/drivers/net/skfp/skfddi.c
+++ b/drivers/net/skfp/skfddi.c
@@ -101,7 +101,7 @@ static const char * const boot_msg =
101static int skfp_driver_init(struct net_device *dev); 101static int skfp_driver_init(struct net_device *dev);
102static int skfp_open(struct net_device *dev); 102static int skfp_open(struct net_device *dev);
103static int skfp_close(struct net_device *dev); 103static int skfp_close(struct net_device *dev);
104static irqreturn_t skfp_interrupt(int irq, void *dev_id, struct pt_regs *regs); 104static irqreturn_t skfp_interrupt(int irq, void *dev_id);
105static struct net_device_stats *skfp_ctl_get_stats(struct net_device *dev); 105static struct net_device_stats *skfp_ctl_get_stats(struct net_device *dev);
106static void skfp_ctl_set_multicast_list(struct net_device *dev); 106static void skfp_ctl_set_multicast_list(struct net_device *dev);
107static void skfp_ctl_set_multicast_list_wo_lock(struct net_device *dev); 107static void skfp_ctl_set_multicast_list_wo_lock(struct net_device *dev);
@@ -593,7 +593,6 @@ static int skfp_close(struct net_device *dev)
593 * Arguments: 593 * Arguments:
594 * irq - interrupt vector 594 * irq - interrupt vector
595 * dev_id - pointer to device information 595 * dev_id - pointer to device information
596 * regs - pointer to registers structure
597 * 596 *
598 * Functional Description: 597 * Functional Description:
599 * This routine calls the interrupt processing routine for this adapter. It 598 * This routine calls the interrupt processing routine for this adapter. It
@@ -615,17 +614,12 @@ static int skfp_close(struct net_device *dev)
615 * Interrupts are disabled, then reenabled at the adapter. 614 * Interrupts are disabled, then reenabled at the adapter.
616 */ 615 */
617 616
618irqreturn_t skfp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 617irqreturn_t skfp_interrupt(int irq, void *dev_id)
619{ 618{
620 struct net_device *dev = (struct net_device *) dev_id; 619 struct net_device *dev = dev_id;
621 struct s_smc *smc; /* private board structure pointer */ 620 struct s_smc *smc; /* private board structure pointer */
622 skfddi_priv *bp; 621 skfddi_priv *bp;
623 622
624 if (dev == NULL) {
625 printk("%s: irq %d for unknown device\n", dev->name, irq);
626 return IRQ_NONE;
627 }
628
629 smc = netdev_priv(dev); 623 smc = netdev_priv(dev);
630 bp = &smc->os; 624 bp = &smc->os;
631 625
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 705e9a8fa30f..a4a58e4e93a1 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -3051,7 +3051,7 @@ static void skge_extirq(void *arg)
3051 spin_unlock_irq(&hw->hw_lock); 3051 spin_unlock_irq(&hw->hw_lock);
3052} 3052}
3053 3053
3054static irqreturn_t skge_intr(int irq, void *dev_id, struct pt_regs *regs) 3054static irqreturn_t skge_intr(int irq, void *dev_id)
3055{ 3055{
3056 struct skge_hw *hw = dev_id; 3056 struct skge_hw *hw = dev_id;
3057 u32 status; 3057 u32 status;
@@ -3125,7 +3125,7 @@ static void skge_netpoll(struct net_device *dev)
3125 struct skge_port *skge = netdev_priv(dev); 3125 struct skge_port *skge = netdev_priv(dev);
3126 3126
3127 disable_irq(dev->irq); 3127 disable_irq(dev->irq);
3128 skge_intr(dev->irq, skge->hw, NULL); 3128 skge_intr(dev->irq, skge->hw);
3129 enable_irq(dev->irq); 3129 enable_irq(dev->irq);
3130} 3130}
3131#endif 3131#endif
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 68515150ff3b..5a5289b7a885 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -2364,7 +2364,7 @@ static int sky2_poll(struct net_device *dev0, int *budget)
2364 } 2364 }
2365} 2365}
2366 2366
2367static irqreturn_t sky2_intr(int irq, void *dev_id, struct pt_regs *regs) 2367static irqreturn_t sky2_intr(int irq, void *dev_id)
2368{ 2368{
2369 struct sky2_hw *hw = dev_id; 2369 struct sky2_hw *hw = dev_id;
2370 struct net_device *dev0 = hw->dev[0]; 2370 struct net_device *dev0 = hw->dev[0];
@@ -3298,8 +3298,7 @@ static void __devinit sky2_show_addr(struct net_device *dev)
3298} 3298}
3299 3299
3300/* Handle software interrupt used during MSI test */ 3300/* Handle software interrupt used during MSI test */
3301static irqreturn_t __devinit sky2_test_intr(int irq, void *dev_id, 3301static irqreturn_t __devinit sky2_test_intr(int irq, void *dev_id)
3302 struct pt_regs *regs)
3303{ 3302{
3304 struct sky2_hw *hw = dev_id; 3303 struct sky2_hw *hw = dev_id;
3305 u32 status = sky2_read32(hw, B0_Y2_SP_ISRC2); 3304 u32 status = sky2_read32(hw, B0_Y2_SP_ISRC2);
diff --git a/drivers/net/smc-ultra.c b/drivers/net/smc-ultra.c
index 7986514883ac..889ef0d7c374 100644
--- a/drivers/net/smc-ultra.c
+++ b/drivers/net/smc-ultra.c
@@ -127,7 +127,7 @@ MODULE_DEVICE_TABLE(isapnp, ultra_device_ids);
127static void ultra_poll(struct net_device *dev) 127static void ultra_poll(struct net_device *dev)
128{ 128{
129 disable_irq(dev->irq); 129 disable_irq(dev->irq);
130 ei_interrupt(dev->irq, dev, NULL); 130 ei_interrupt(dev->irq, dev);
131 enable_irq(dev->irq); 131 enable_irq(dev->irq);
132} 132}
133#endif 133#endif
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index a621b17456e5..2c4343395a4d 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -1074,7 +1074,7 @@ static void smc911x_phy_interrupt(struct net_device *dev)
1074 * This is the main routine of the driver, to handle the device when 1074 * This is the main routine of the driver, to handle the device when
1075 * it needs some attention. 1075 * it needs some attention.
1076 */ 1076 */
1077static irqreturn_t smc911x_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1077static irqreturn_t smc911x_interrupt(int irq, void *dev_id)
1078{ 1078{
1079 struct net_device *dev = dev_id; 1079 struct net_device *dev = dev_id;
1080 unsigned long ioaddr = dev->base_addr; 1080 unsigned long ioaddr = dev->base_addr;
@@ -1251,7 +1251,7 @@ static irqreturn_t smc911x_interrupt(int irq, void *dev_id, struct pt_regs *regs
1251 1251
1252#ifdef SMC_USE_DMA 1252#ifdef SMC_USE_DMA
1253static void 1253static void
1254smc911x_tx_dma_irq(int dma, void *data, struct pt_regs *regs) 1254smc911x_tx_dma_irq(int dma, void *data)
1255{ 1255{
1256 struct net_device *dev = (struct net_device *)data; 1256 struct net_device *dev = (struct net_device *)data;
1257 struct smc911x_local *lp = netdev_priv(dev); 1257 struct smc911x_local *lp = netdev_priv(dev);
@@ -1285,7 +1285,7 @@ smc911x_tx_dma_irq(int dma, void *data, struct pt_regs *regs)
1285 "%s: TX DMA irq completed\n", dev->name); 1285 "%s: TX DMA irq completed\n", dev->name);
1286} 1286}
1287static void 1287static void
1288smc911x_rx_dma_irq(int dma, void *data, struct pt_regs *regs) 1288smc911x_rx_dma_irq(int dma, void *data)
1289{ 1289{
1290 struct net_device *dev = (struct net_device *)data; 1290 struct net_device *dev = (struct net_device *)data;
1291 unsigned long ioaddr = dev->base_addr; 1291 unsigned long ioaddr = dev->base_addr;
diff --git a/drivers/net/smc9194.c b/drivers/net/smc9194.c
index 5506a0d3efe2..c0d13d650913 100644
--- a/drivers/net/smc9194.c
+++ b/drivers/net/smc9194.c
@@ -270,7 +270,7 @@ static void smc_set_multicast_list(struct net_device *dev);
270/* 270/*
271 . Handles the actual interrupt 271 . Handles the actual interrupt
272*/ 272*/
273static irqreturn_t smc_interrupt(int irq, void *, struct pt_regs *regs); 273static irqreturn_t smc_interrupt(int irq, void *);
274/* 274/*
275 . This is a separate procedure to handle the receipt of a packet, to 275 . This is a separate procedure to handle the receipt of a packet, to
276 . leave the interrupt code looking slightly cleaner 276 . leave the interrupt code looking slightly cleaner
@@ -1391,7 +1391,7 @@ static void smc_tx( struct net_device * dev )
1391 . 1391 .
1392 ---------------------------------------------------------------------*/ 1392 ---------------------------------------------------------------------*/
1393 1393
1394static irqreturn_t smc_interrupt(int irq, void * dev_id, struct pt_regs * regs) 1394static irqreturn_t smc_interrupt(int irq, void * dev_id)
1395{ 1395{
1396 struct net_device *dev = dev_id; 1396 struct net_device *dev = dev_id;
1397 int ioaddr = dev->base_addr; 1397 int ioaddr = dev->base_addr;
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index d7e56438b5d6..95b6478f55c6 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -1284,7 +1284,7 @@ static void smc_eph_interrupt(struct net_device *dev)
1284 * This is the main routine of the driver, to handle the device when 1284 * This is the main routine of the driver, to handle the device when
1285 * it needs some attention. 1285 * it needs some attention.
1286 */ 1286 */
1287static irqreturn_t smc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1287static irqreturn_t smc_interrupt(int irq, void *dev_id)
1288{ 1288{
1289 struct net_device *dev = dev_id; 1289 struct net_device *dev = dev_id;
1290 struct smc_local *lp = netdev_priv(dev); 1290 struct smc_local *lp = netdev_priv(dev);
@@ -1400,7 +1400,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1400static void smc_poll_controller(struct net_device *dev) 1400static void smc_poll_controller(struct net_device *dev)
1401{ 1401{
1402 disable_irq(dev->irq); 1402 disable_irq(dev->irq);
1403 smc_interrupt(dev->irq, dev, NULL); 1403 smc_interrupt(dev->irq, dev);
1404 enable_irq(dev->irq); 1404 enable_irq(dev->irq);
1405} 1405}
1406#endif 1406#endif
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h
index fedd1a37bc3e..636dbfcdf8cb 100644
--- a/drivers/net/smc91x.h
+++ b/drivers/net/smc91x.h
@@ -507,7 +507,7 @@ smc_pxa_dma_insw(void __iomem *ioaddr, u_long physaddr, int reg, int dma,
507#endif 507#endif
508 508
509static void 509static void
510smc_pxa_dma_irq(int dma, void *dummy, struct pt_regs *regs) 510smc_pxa_dma_irq(int dma, void *dummy)
511{ 511{
512 DCSR(dma) = 0; 512 DCSR(dma) = 0;
513} 513}
diff --git a/drivers/net/sonic.c b/drivers/net/sonic.c
index 870cf6b07389..ed7aa0a5acca 100644
--- a/drivers/net/sonic.c
+++ b/drivers/net/sonic.c
@@ -293,17 +293,12 @@ static int sonic_send_packet(struct sk_buff *skb, struct net_device *dev)
293 * The typical workload of the driver: 293 * The typical workload of the driver:
294 * Handle the network interface interrupts. 294 * Handle the network interface interrupts.
295 */ 295 */
296static irqreturn_t sonic_interrupt(int irq, void *dev_id, struct pt_regs *regs) 296static irqreturn_t sonic_interrupt(int irq, void *dev_id)
297{ 297{
298 struct net_device *dev = (struct net_device *) dev_id; 298 struct net_device *dev = dev_id;
299 struct sonic_local *lp = netdev_priv(dev); 299 struct sonic_local *lp = netdev_priv(dev);
300 int status; 300 int status;
301 301
302 if (dev == NULL) {
303 printk(KERN_ERR "sonic_interrupt: irq %d for unknown device.\n", irq);
304 return IRQ_NONE;
305 }
306
307 if (!(status = SONIC_READ(SONIC_ISR) & SONIC_IMR_DEFAULT)) 302 if (!(status = SONIC_READ(SONIC_ISR) & SONIC_IMR_DEFAULT))
308 return IRQ_NONE; 303 return IRQ_NONE;
309 304
diff --git a/drivers/net/sonic.h b/drivers/net/sonic.h
index 7f886e8ae28f..7db13e4a7ea5 100644
--- a/drivers/net/sonic.h
+++ b/drivers/net/sonic.h
@@ -328,7 +328,7 @@ struct sonic_local {
328 328
329static int sonic_open(struct net_device *dev); 329static int sonic_open(struct net_device *dev);
330static int sonic_send_packet(struct sk_buff *skb, struct net_device *dev); 330static int sonic_send_packet(struct sk_buff *skb, struct net_device *dev);
331static irqreturn_t sonic_interrupt(int irq, void *dev_id, struct pt_regs *regs); 331static irqreturn_t sonic_interrupt(int irq, void *dev_id);
332static void sonic_rx(struct net_device *dev); 332static void sonic_rx(struct net_device *dev);
333static int sonic_close(struct net_device *dev); 333static int sonic_close(struct net_device *dev);
334static struct net_device_stats *sonic_get_stats(struct net_device *dev); 334static struct net_device_stats *sonic_get_stats(struct net_device *dev);
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c
index 1397fc55cf68..46a009085f7c 100644
--- a/drivers/net/spider_net.c
+++ b/drivers/net/spider_net.c
@@ -1445,7 +1445,7 @@ spider_net_handle_error_irq(struct spider_net_card *card, u32 status_reg)
1445 * interrupts for this device and makes the stack poll the driver 1445 * interrupts for this device and makes the stack poll the driver
1446 */ 1446 */
1447static irqreturn_t 1447static irqreturn_t
1448spider_net_interrupt(int irq, void *ptr, struct pt_regs *regs) 1448spider_net_interrupt(int irq, void *ptr)
1449{ 1449{
1450 struct net_device *netdev = ptr; 1450 struct net_device *netdev = ptr;
1451 struct spider_net_card *card = netdev_priv(netdev); 1451 struct spider_net_card *card = netdev_priv(netdev);
@@ -1481,7 +1481,7 @@ static void
1481spider_net_poll_controller(struct net_device *netdev) 1481spider_net_poll_controller(struct net_device *netdev)
1482{ 1482{
1483 disable_irq(netdev->irq); 1483 disable_irq(netdev->irq);
1484 spider_net_interrupt(netdev->irq, netdev, NULL); 1484 spider_net_interrupt(netdev->irq, netdev);
1485 enable_irq(netdev->irq); 1485 enable_irq(netdev->irq);
1486} 1486}
1487#endif /* CONFIG_NET_POLL_CONTROLLER */ 1487#endif /* CONFIG_NET_POLL_CONTROLLER */
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c
index 3d617e8f54b5..7a0aee6c869d 100644
--- a/drivers/net/starfire.c
+++ b/drivers/net/starfire.c
@@ -632,7 +632,7 @@ static void check_duplex(struct net_device *dev);
632static void tx_timeout(struct net_device *dev); 632static void tx_timeout(struct net_device *dev);
633static void init_ring(struct net_device *dev); 633static void init_ring(struct net_device *dev);
634static int start_tx(struct sk_buff *skb, struct net_device *dev); 634static int start_tx(struct sk_buff *skb, struct net_device *dev);
635static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *regs); 635static irqreturn_t intr_handler(int irq, void *dev_instance);
636static void netdev_error(struct net_device *dev, int intr_status); 636static void netdev_error(struct net_device *dev, int intr_status);
637static int __netdev_rx(struct net_device *dev, int *quota); 637static int __netdev_rx(struct net_device *dev, int *quota);
638static void refill_rx_ring(struct net_device *dev); 638static void refill_rx_ring(struct net_device *dev);
@@ -1307,7 +1307,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)
1307 1307
1308/* The interrupt handler does all of the Rx thread work and cleans up 1308/* The interrupt handler does all of the Rx thread work and cleans up
1309 after the Tx thread. */ 1309 after the Tx thread. */
1310static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) 1310static irqreturn_t intr_handler(int irq, void *dev_instance)
1311{ 1311{
1312 struct net_device *dev = dev_instance; 1312 struct net_device *dev = dev_instance;
1313 struct netdev_private *np = netdev_priv(dev); 1313 struct netdev_private *np = netdev_priv(dev);
diff --git a/drivers/net/sun3_82586.c b/drivers/net/sun3_82586.c
index 0605461bc56d..d1d1885b0295 100644
--- a/drivers/net/sun3_82586.c
+++ b/drivers/net/sun3_82586.c
@@ -122,7 +122,7 @@ sizeof(nop_cmd) = 8;
122 DELAY_16(); DELAY_16(); } } 122 DELAY_16(); DELAY_16(); } }
123 123
124static int sun3_82586_probe1(struct net_device *dev,int ioaddr); 124static int sun3_82586_probe1(struct net_device *dev,int ioaddr);
125static irqreturn_t sun3_82586_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr); 125static irqreturn_t sun3_82586_interrupt(int irq,void *dev_id);
126static int sun3_82586_open(struct net_device *dev); 126static int sun3_82586_open(struct net_device *dev);
127static int sun3_82586_close(struct net_device *dev); 127static int sun3_82586_close(struct net_device *dev);
128static int sun3_82586_send_packet(struct sk_buff *,struct net_device *); 128static int sun3_82586_send_packet(struct sk_buff *,struct net_device *);
@@ -678,7 +678,7 @@ static void *alloc_rfa(struct net_device *dev,void *ptr)
678 * Interrupt Handler ... 678 * Interrupt Handler ...
679 */ 679 */
680 680
681static irqreturn_t sun3_82586_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr) 681static irqreturn_t sun3_82586_interrupt(int irq,void *dev_id)
682{ 682{
683 struct net_device *dev = dev_id; 683 struct net_device *dev = dev_id;
684 unsigned short stat; 684 unsigned short stat;
diff --git a/drivers/net/sun3lance.c b/drivers/net/sun3lance.c
index 61a832ce7ccf..91c76544e4dd 100644
--- a/drivers/net/sun3lance.c
+++ b/drivers/net/sun3lance.c
@@ -237,7 +237,7 @@ static int lance_probe( struct net_device *dev);
237static int lance_open( struct net_device *dev ); 237static int lance_open( struct net_device *dev );
238static void lance_init_ring( struct net_device *dev ); 238static void lance_init_ring( struct net_device *dev );
239static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev ); 239static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev );
240static irqreturn_t lance_interrupt( int irq, void *dev_id, struct pt_regs *fp ); 240static irqreturn_t lance_interrupt( int irq, void *dev_id);
241static int lance_rx( struct net_device *dev ); 241static int lance_rx( struct net_device *dev );
242static int lance_close( struct net_device *dev ); 242static int lance_close( struct net_device *dev );
243static struct net_device_stats *lance_get_stats( struct net_device *dev ); 243static struct net_device_stats *lance_get_stats( struct net_device *dev );
@@ -642,7 +642,7 @@ static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
642 642
643/* The LANCE interrupt handler. */ 643/* The LANCE interrupt handler. */
644 644
645static irqreturn_t lance_interrupt( int irq, void *dev_id, struct pt_regs *fp) 645static irqreturn_t lance_interrupt( int irq, void *dev_id)
646{ 646{
647 struct net_device *dev = dev_id; 647 struct net_device *dev = dev_id;
648 struct lance_private *lp = netdev_priv(dev); 648 struct lance_private *lp = netdev_priv(dev);
diff --git a/drivers/net/sunbmac.c b/drivers/net/sunbmac.c
index 9e4be86495a0..6439b0cef1e4 100644
--- a/drivers/net/sunbmac.c
+++ b/drivers/net/sunbmac.c
@@ -888,7 +888,7 @@ static void bigmac_rx(struct bigmac *bp)
888 printk(KERN_NOTICE "%s: Memory squeeze, deferring packet.\n", bp->dev->name); 888 printk(KERN_NOTICE "%s: Memory squeeze, deferring packet.\n", bp->dev->name);
889} 889}
890 890
891static irqreturn_t bigmac_interrupt(int irq, void *dev_id, struct pt_regs *regs) 891static irqreturn_t bigmac_interrupt(int irq, void *dev_id)
892{ 892{
893 struct bigmac *bp = (struct bigmac *) dev_id; 893 struct bigmac *bp = (struct bigmac *) dev_id;
894 u32 qec_status, bmac_status; 894 u32 qec_status, bmac_status;
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
index 6b8f4baf87fd..41c503d8bac4 100644
--- a/drivers/net/sundance.c
+++ b/drivers/net/sundance.c
@@ -420,7 +420,7 @@ static void tx_timeout(struct net_device *dev);
420static void init_ring(struct net_device *dev); 420static void init_ring(struct net_device *dev);
421static int start_tx(struct sk_buff *skb, struct net_device *dev); 421static int start_tx(struct sk_buff *skb, struct net_device *dev);
422static int reset_tx (struct net_device *dev); 422static int reset_tx (struct net_device *dev);
423static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *regs); 423static irqreturn_t intr_handler(int irq, void *dev_instance);
424static void rx_poll(unsigned long data); 424static void rx_poll(unsigned long data);
425static void tx_poll(unsigned long data); 425static void tx_poll(unsigned long data);
426static void refill_rx (struct net_device *dev); 426static void refill_rx (struct net_device *dev);
@@ -1102,7 +1102,7 @@ reset_tx (struct net_device *dev)
1102 1102
1103/* The interrupt handler cleans up after the Tx thread, 1103/* The interrupt handler cleans up after the Tx thread,
1104 and schedule a Rx thread work */ 1104 and schedule a Rx thread work */
1105static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) 1105static irqreturn_t intr_handler(int irq, void *dev_instance)
1106{ 1106{
1107 struct net_device *dev = (struct net_device *)dev_instance; 1107 struct net_device *dev = (struct net_device *)dev_instance;
1108 struct netdev_private *np = netdev_priv(dev); 1108 struct netdev_private *np = netdev_priv(dev);
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c
index 0975695ae31b..253e96e7ad20 100644
--- a/drivers/net/sungem.c
+++ b/drivers/net/sungem.c
@@ -932,7 +932,7 @@ static int gem_poll(struct net_device *dev, int *budget)
932 return 0; 932 return 0;
933} 933}
934 934
935static irqreturn_t gem_interrupt(int irq, void *dev_id, struct pt_regs *regs) 935static irqreturn_t gem_interrupt(int irq, void *dev_id)
936{ 936{
937 struct net_device *dev = dev_id; 937 struct net_device *dev = dev_id;
938 struct gem *gp = dev->priv; 938 struct gem *gp = dev->priv;
@@ -975,7 +975,7 @@ static void gem_poll_controller(struct net_device *dev)
975 /* gem_interrupt is safe to reentrance so no need 975 /* gem_interrupt is safe to reentrance so no need
976 * to disable_irq here. 976 * to disable_irq here.
977 */ 977 */
978 gem_interrupt(dev->irq, dev, NULL); 978 gem_interrupt(dev->irq, dev);
979} 979}
980#endif 980#endif
981 981
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c
index f05eea53623b..9d7cd130c19d 100644
--- a/drivers/net/sunhme.c
+++ b/drivers/net/sunhme.c
@@ -2093,10 +2093,10 @@ static void happy_meal_rx(struct happy_meal *hp, struct net_device *dev)
2093 RXD((">")); 2093 RXD((">"));
2094} 2094}
2095 2095
2096static irqreturn_t happy_meal_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2096static irqreturn_t happy_meal_interrupt(int irq, void *dev_id)
2097{ 2097{
2098 struct net_device *dev = (struct net_device *) dev_id; 2098 struct net_device *dev = dev_id;
2099 struct happy_meal *hp = dev->priv; 2099 struct happy_meal *hp = netdev_priv(dev);
2100 u32 happy_status = hme_read32(hp, hp->gregs + GREG_STAT); 2100 u32 happy_status = hme_read32(hp, hp->gregs + GREG_STAT);
2101 2101
2102 HMD(("happy_meal_interrupt: status=%08x ", happy_status)); 2102 HMD(("happy_meal_interrupt: status=%08x ", happy_status));
@@ -2132,7 +2132,7 @@ out:
2132} 2132}
2133 2133
2134#ifdef CONFIG_SBUS 2134#ifdef CONFIG_SBUS
2135static irqreturn_t quattro_sbus_interrupt(int irq, void *cookie, struct pt_regs *ptregs) 2135static irqreturn_t quattro_sbus_interrupt(int irq, void *cookie)
2136{ 2136{
2137 struct quattro *qp = (struct quattro *) cookie; 2137 struct quattro *qp = (struct quattro *) cookie;
2138 int i; 2138 int i;
diff --git a/drivers/net/sunlance.c b/drivers/net/sunlance.c
index feb42db10ee1..5b00d79b5573 100644
--- a/drivers/net/sunlance.c
+++ b/drivers/net/sunlance.c
@@ -820,9 +820,9 @@ out:
820 spin_unlock(&lp->lock); 820 spin_unlock(&lp->lock);
821} 821}
822 822
823static irqreturn_t lance_interrupt(int irq, void *dev_id, struct pt_regs *regs) 823static irqreturn_t lance_interrupt(int irq, void *dev_id)
824{ 824{
825 struct net_device *dev = (struct net_device *)dev_id; 825 struct net_device *dev = dev_id;
826 struct lance_private *lp = netdev_priv(dev); 826 struct lance_private *lp = netdev_priv(dev);
827 int csr0; 827 int csr0;
828 828
diff --git a/drivers/net/sunqe.c b/drivers/net/sunqe.c
index 9202a1c369dd..7874eb1ef043 100644
--- a/drivers/net/sunqe.c
+++ b/drivers/net/sunqe.c
@@ -466,9 +466,9 @@ static void qe_tx_reclaim(struct sunqe *qep);
466 * so we just run through each qe and check to see who is signaling 466 * so we just run through each qe and check to see who is signaling
467 * and thus needs to be serviced. 467 * and thus needs to be serviced.
468 */ 468 */
469static irqreturn_t qec_interrupt(int irq, void *dev_id, struct pt_regs *regs) 469static irqreturn_t qec_interrupt(int irq, void *dev_id)
470{ 470{
471 struct sunqec *qecp = (struct sunqec *) dev_id; 471 struct sunqec *qecp = dev_id;
472 u32 qec_status; 472 u32 qec_status;
473 int channel = 0; 473 int channel = 0;
474 474
diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c
index 60f026509487..81ed82f0b520 100644
--- a/drivers/net/tc35815.c
+++ b/drivers/net/tc35815.c
@@ -453,7 +453,7 @@ static int __devinit tc35815_probe1(struct pci_dev *pdev, unsigned int base_addr
453static int tc35815_open(struct net_device *dev); 453static int tc35815_open(struct net_device *dev);
454static int tc35815_send_packet(struct sk_buff *skb, struct net_device *dev); 454static int tc35815_send_packet(struct sk_buff *skb, struct net_device *dev);
455static void tc35815_tx_timeout(struct net_device *dev); 455static void tc35815_tx_timeout(struct net_device *dev);
456static irqreturn_t tc35815_interrupt(int irq, void *dev_id, struct pt_regs *regs); 456static irqreturn_t tc35815_interrupt(int irq, void *dev_id);
457static void tc35815_rx(struct net_device *dev); 457static void tc35815_rx(struct net_device *dev);
458static void tc35815_txdone(struct net_device *dev); 458static void tc35815_txdone(struct net_device *dev);
459static int tc35815_close(struct net_device *dev); 459static int tc35815_close(struct net_device *dev);
@@ -1044,7 +1044,7 @@ static void tc35815_fatal_error_interrupt(struct net_device *dev, int status)
1044 * The typical workload of the driver: 1044 * The typical workload of the driver:
1045 * Handle the network interface interrupts. 1045 * Handle the network interface interrupts.
1046 */ 1046 */
1047static irqreturn_t tc35815_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1047static irqreturn_t tc35815_interrupt(int irq, void *dev_id)
1048{ 1048{
1049 struct net_device *dev = dev_id; 1049 struct net_device *dev = dev_id;
1050 struct tc35815_regs *tr; 1050 struct tc35815_regs *tr;
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index c25ba273b745..327836b1014e 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -3481,7 +3481,7 @@ static inline void tg3_full_unlock(struct tg3 *tp)
3481/* One-shot MSI handler - Chip automatically disables interrupt 3481/* One-shot MSI handler - Chip automatically disables interrupt
3482 * after sending MSI so driver doesn't have to do it. 3482 * after sending MSI so driver doesn't have to do it.
3483 */ 3483 */
3484static irqreturn_t tg3_msi_1shot(int irq, void *dev_id, struct pt_regs *regs) 3484static irqreturn_t tg3_msi_1shot(int irq, void *dev_id)
3485{ 3485{
3486 struct net_device *dev = dev_id; 3486 struct net_device *dev = dev_id;
3487 struct tg3 *tp = netdev_priv(dev); 3487 struct tg3 *tp = netdev_priv(dev);
@@ -3499,7 +3499,7 @@ static irqreturn_t tg3_msi_1shot(int irq, void *dev_id, struct pt_regs *regs)
3499 * flush status block and interrupt mailbox. PCI ordering rules 3499 * flush status block and interrupt mailbox. PCI ordering rules
3500 * guarantee that MSI will arrive after the status block. 3500 * guarantee that MSI will arrive after the status block.
3501 */ 3501 */
3502static irqreturn_t tg3_msi(int irq, void *dev_id, struct pt_regs *regs) 3502static irqreturn_t tg3_msi(int irq, void *dev_id)
3503{ 3503{
3504 struct net_device *dev = dev_id; 3504 struct net_device *dev = dev_id;
3505 struct tg3 *tp = netdev_priv(dev); 3505 struct tg3 *tp = netdev_priv(dev);
@@ -3520,7 +3520,7 @@ static irqreturn_t tg3_msi(int irq, void *dev_id, struct pt_regs *regs)
3520 return IRQ_RETVAL(1); 3520 return IRQ_RETVAL(1);
3521} 3521}
3522 3522
3523static irqreturn_t tg3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3523static irqreturn_t tg3_interrupt(int irq, void *dev_id)
3524{ 3524{
3525 struct net_device *dev = dev_id; 3525 struct net_device *dev = dev_id;
3526 struct tg3 *tp = netdev_priv(dev); 3526 struct tg3 *tp = netdev_priv(dev);
@@ -3563,7 +3563,7 @@ out:
3563 return IRQ_RETVAL(handled); 3563 return IRQ_RETVAL(handled);
3564} 3564}
3565 3565
3566static irqreturn_t tg3_interrupt_tagged(int irq, void *dev_id, struct pt_regs *regs) 3566static irqreturn_t tg3_interrupt_tagged(int irq, void *dev_id)
3567{ 3567{
3568 struct net_device *dev = dev_id; 3568 struct net_device *dev = dev_id;
3569 struct tg3 *tp = netdev_priv(dev); 3569 struct tg3 *tp = netdev_priv(dev);
@@ -3606,8 +3606,7 @@ out:
3606} 3606}
3607 3607
3608/* ISR for interrupt test */ 3608/* ISR for interrupt test */
3609static irqreturn_t tg3_test_isr(int irq, void *dev_id, 3609static irqreturn_t tg3_test_isr(int irq, void *dev_id)
3610 struct pt_regs *regs)
3611{ 3610{
3612 struct net_device *dev = dev_id; 3611 struct net_device *dev = dev_id;
3613 struct tg3 *tp = netdev_priv(dev); 3612 struct tg3 *tp = netdev_priv(dev);
@@ -3651,7 +3650,7 @@ static void tg3_poll_controller(struct net_device *dev)
3651{ 3650{
3652 struct tg3 *tp = netdev_priv(dev); 3651 struct tg3 *tp = netdev_priv(dev);
3653 3652
3654 tg3_interrupt(tp->pdev->irq, dev, NULL); 3653 tg3_interrupt(tp->pdev->irq, dev);
3655} 3654}
3656#endif 3655#endif
3657 3656
@@ -6838,7 +6837,7 @@ restart_timer:
6838 6837
6839static int tg3_request_irq(struct tg3 *tp) 6838static int tg3_request_irq(struct tg3 *tp)
6840{ 6839{
6841 irqreturn_t (*fn)(int, void *, struct pt_regs *); 6840 irq_handler_t fn;
6842 unsigned long flags; 6841 unsigned long flags;
6843 struct net_device *dev = tp->dev; 6842 struct net_device *dev = tp->dev;
6844 6843
diff --git a/drivers/net/tlan.c b/drivers/net/tlan.c
index 8d807bf603a0..e14f5a00f65a 100644
--- a/drivers/net/tlan.c
+++ b/drivers/net/tlan.c
@@ -289,7 +289,7 @@ static void TLan_Eisa_Cleanup( void );
289static int TLan_Init( struct net_device * ); 289static int TLan_Init( struct net_device * );
290static int TLan_Open( struct net_device *dev ); 290static int TLan_Open( struct net_device *dev );
291static int TLan_StartTx( struct sk_buff *, struct net_device *); 291static int TLan_StartTx( struct sk_buff *, struct net_device *);
292static irqreturn_t TLan_HandleInterrupt( int, void *, struct pt_regs *); 292static irqreturn_t TLan_HandleInterrupt( int, void *);
293static int TLan_Close( struct net_device *); 293static int TLan_Close( struct net_device *);
294static struct net_device_stats *TLan_GetStats( struct net_device *); 294static struct net_device_stats *TLan_GetStats( struct net_device *);
295static void TLan_SetMulticastList( struct net_device *); 295static void TLan_SetMulticastList( struct net_device *);
@@ -824,7 +824,7 @@ static void __init TLan_EisaProbe (void)
824static void TLan_Poll(struct net_device *dev) 824static void TLan_Poll(struct net_device *dev)
825{ 825{
826 disable_irq(dev->irq); 826 disable_irq(dev->irq);
827 TLan_HandleInterrupt(dev->irq, dev, NULL); 827 TLan_HandleInterrupt(dev->irq, dev);
828 enable_irq(dev->irq); 828 enable_irq(dev->irq);
829} 829}
830#endif 830#endif
@@ -1151,7 +1151,6 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
1151 * occurred. 1151 * occurred.
1152 * dev_id A pointer to the device assigned to 1152 * dev_id A pointer to the device assigned to
1153 * this irq line. 1153 * this irq line.
1154 * regs ???
1155 * 1154 *
1156 * This function handles an interrupt generated by its 1155 * This function handles an interrupt generated by its
1157 * assigned TLAN adapter. The function deactivates 1156 * assigned TLAN adapter. The function deactivates
@@ -1162,7 +1161,7 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
1162 * 1161 *
1163 **************************************************************/ 1162 **************************************************************/
1164 1163
1165static irqreturn_t TLan_HandleInterrupt(int irq, void *dev_id, struct pt_regs *regs) 1164static irqreturn_t TLan_HandleInterrupt(int irq, void *dev_id)
1166{ 1165{
1167 u32 ack; 1166 u32 ack;
1168 struct net_device *dev; 1167 struct net_device *dev;
diff --git a/drivers/net/tokenring/3c359.c b/drivers/net/tokenring/3c359.c
index 412390ba142e..7580bdeacadc 100644
--- a/drivers/net/tokenring/3c359.c
+++ b/drivers/net/tokenring/3c359.c
@@ -130,7 +130,7 @@ static int xl_xmit(struct sk_buff *skb, struct net_device *dev);
130static void xl_dn_comp(struct net_device *dev); 130static void xl_dn_comp(struct net_device *dev);
131static int xl_close(struct net_device *dev); 131static int xl_close(struct net_device *dev);
132static void xl_set_rx_mode(struct net_device *dev); 132static void xl_set_rx_mode(struct net_device *dev);
133static irqreturn_t xl_interrupt(int irq, void *dev_id, struct pt_regs *regs); 133static irqreturn_t xl_interrupt(int irq, void *dev_id);
134static struct net_device_stats * xl_get_stats(struct net_device *dev); 134static struct net_device_stats * xl_get_stats(struct net_device *dev);
135static int xl_set_mac_address(struct net_device *dev, void *addr) ; 135static int xl_set_mac_address(struct net_device *dev, void *addr) ;
136static void xl_arb_cmd(struct net_device *dev); 136static void xl_arb_cmd(struct net_device *dev);
@@ -1042,7 +1042,7 @@ static void xl_freemem(struct net_device *dev)
1042 return ; 1042 return ;
1043} 1043}
1044 1044
1045static irqreturn_t xl_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1045static irqreturn_t xl_interrupt(int irq, void *dev_id)
1046{ 1046{
1047 struct net_device *dev = (struct net_device *)dev_id; 1047 struct net_device *dev = (struct net_device *)dev_id;
1048 struct xl_private *xl_priv =(struct xl_private *)dev->priv; 1048 struct xl_private *xl_priv =(struct xl_private *)dev->priv;
diff --git a/drivers/net/tokenring/ibmtr.c b/drivers/net/tokenring/ibmtr.c
index 4470025ff7f8..bfe59865b1dd 100644
--- a/drivers/net/tokenring/ibmtr.c
+++ b/drivers/net/tokenring/ibmtr.c
@@ -197,7 +197,7 @@ static void open_sap(unsigned char type, struct net_device *dev);
197static void tok_set_multicast_list(struct net_device *dev); 197static void tok_set_multicast_list(struct net_device *dev);
198static int tok_send_packet(struct sk_buff *skb, struct net_device *dev); 198static int tok_send_packet(struct sk_buff *skb, struct net_device *dev);
199static int tok_close(struct net_device *dev); 199static int tok_close(struct net_device *dev);
200static irqreturn_t tok_interrupt(int irq, void *dev_id, struct pt_regs *regs); 200static irqreturn_t tok_interrupt(int irq, void *dev_id);
201static void initial_tok_int(struct net_device *dev); 201static void initial_tok_int(struct net_device *dev);
202static void tr_tx(struct net_device *dev); 202static void tr_tx(struct net_device *dev);
203static void tr_rx(struct net_device *dev); 203static void tr_rx(struct net_device *dev);
@@ -1166,7 +1166,7 @@ static void dir_open_adapter (struct net_device *dev)
1166 1166
1167/******************************************************************************/ 1167/******************************************************************************/
1168 1168
1169static irqreturn_t tok_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1169static irqreturn_t tok_interrupt(int irq, void *dev_id)
1170{ 1170{
1171 unsigned char status; 1171 unsigned char status;
1172 /* unsigned char status_even ; */ 1172 /* unsigned char status_even ; */
@@ -1178,7 +1178,7 @@ static irqreturn_t tok_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1178 1178
1179 dev = dev_id; 1179 dev = dev_id;
1180#if TR_VERBOSE 1180#if TR_VERBOSE
1181 DPRINTK("Int from tok_driver, dev : %p irq%d regs=%p\n", dev,irq,regs); 1181 DPRINTK("Int from tok_driver, dev : %p irq%d\n", dev,irq);
1182#endif 1182#endif
1183 ti = (struct tok_info *) dev->priv; 1183 ti = (struct tok_info *) dev->priv;
1184 if (ti->sram_phys & 1) 1184 if (ti->sram_phys & 1)
diff --git a/drivers/net/tokenring/lanstreamer.c b/drivers/net/tokenring/lanstreamer.c
index bfc8c3eae9a1..e999feb8c0bb 100644
--- a/drivers/net/tokenring/lanstreamer.c
+++ b/drivers/net/tokenring/lanstreamer.c
@@ -206,8 +206,7 @@ static int streamer_open(struct net_device *dev);
206static int streamer_xmit(struct sk_buff *skb, struct net_device *dev); 206static int streamer_xmit(struct sk_buff *skb, struct net_device *dev);
207static int streamer_close(struct net_device *dev); 207static int streamer_close(struct net_device *dev);
208static void streamer_set_rx_mode(struct net_device *dev); 208static void streamer_set_rx_mode(struct net_device *dev);
209static irqreturn_t streamer_interrupt(int irq, void *dev_id, 209static irqreturn_t streamer_interrupt(int irq, void *dev_id);
210 struct pt_regs *regs);
211static struct net_device_stats *streamer_get_stats(struct net_device *dev); 210static struct net_device_stats *streamer_get_stats(struct net_device *dev);
212static int streamer_set_mac_address(struct net_device *dev, void *addr); 211static int streamer_set_mac_address(struct net_device *dev, void *addr);
213static void streamer_arb_cmd(struct net_device *dev); 212static void streamer_arb_cmd(struct net_device *dev);
@@ -1028,7 +1027,7 @@ static void streamer_rx(struct net_device *dev)
1028 } /* end for all completed rx descriptors */ 1027 } /* end for all completed rx descriptors */
1029} 1028}
1030 1029
1031static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1030static irqreturn_t streamer_interrupt(int irq, void *dev_id)
1032{ 1031{
1033 struct net_device *dev = (struct net_device *) dev_id; 1032 struct net_device *dev = (struct net_device *) dev_id;
1034 struct streamer_private *streamer_priv = 1033 struct streamer_private *streamer_priv =
diff --git a/drivers/net/tokenring/madgemc.c b/drivers/net/tokenring/madgemc.c
index 666bbaaae82f..ed274d6909d0 100644
--- a/drivers/net/tokenring/madgemc.c
+++ b/drivers/net/tokenring/madgemc.c
@@ -70,7 +70,7 @@ static void madgemc_setregpage(struct net_device *dev, int page);
70static void madgemc_setsifsel(struct net_device *dev, int val); 70static void madgemc_setsifsel(struct net_device *dev, int val);
71static void madgemc_setint(struct net_device *dev, int val); 71static void madgemc_setint(struct net_device *dev, int val);
72 72
73static irqreturn_t madgemc_interrupt(int irq, void *dev_id, struct pt_regs *regs); 73static irqreturn_t madgemc_interrupt(int irq, void *dev_id);
74 74
75/* 75/*
76 * These work around paging, however they don't guarentee you're on the 76 * These work around paging, however they don't guarentee you're on the
@@ -417,7 +417,7 @@ getout:
417 * exhausted all contiguous interrupts. 417 * exhausted all contiguous interrupts.
418 * 418 *
419 */ 419 */
420static irqreturn_t madgemc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 420static irqreturn_t madgemc_interrupt(int irq, void *dev_id)
421{ 421{
422 int pending,reg1; 422 int pending,reg1;
423 struct net_device *dev; 423 struct net_device *dev;
@@ -451,7 +451,7 @@ static irqreturn_t madgemc_interrupt(int irq, void *dev_id, struct pt_regs *regs
451 outb(reg1, dev->base_addr + MC_CONTROL_REG1); 451 outb(reg1, dev->base_addr + MC_CONTROL_REG1);
452 452
453 /* Continue handling as normal */ 453 /* Continue handling as normal */
454 tms380tr_interrupt(irq, dev_id, regs); 454 tms380tr_interrupt(irq, dev_id);
455 455
456 pending = SIFREADW(SIFSTS); /* restart - the SIF way */ 456 pending = SIFREADW(SIFSTS); /* restart - the SIF way */
457 457
diff --git a/drivers/net/tokenring/olympic.c b/drivers/net/tokenring/olympic.c
index 85831484bc40..cd142d0302bc 100644
--- a/drivers/net/tokenring/olympic.c
+++ b/drivers/net/tokenring/olympic.c
@@ -185,7 +185,7 @@ static int olympic_xmit(struct sk_buff *skb, struct net_device *dev);
185static int olympic_close(struct net_device *dev); 185static int olympic_close(struct net_device *dev);
186static void olympic_set_rx_mode(struct net_device *dev); 186static void olympic_set_rx_mode(struct net_device *dev);
187static void olympic_freemem(struct net_device *dev) ; 187static void olympic_freemem(struct net_device *dev) ;
188static irqreturn_t olympic_interrupt(int irq, void *dev_id, struct pt_regs *regs); 188static irqreturn_t olympic_interrupt(int irq, void *dev_id);
189static struct net_device_stats * olympic_get_stats(struct net_device *dev); 189static struct net_device_stats * olympic_get_stats(struct net_device *dev);
190static int olympic_set_mac_address(struct net_device *dev, void *addr) ; 190static int olympic_set_mac_address(struct net_device *dev, void *addr) ;
191static void olympic_arb_cmd(struct net_device *dev); 191static void olympic_arb_cmd(struct net_device *dev);
@@ -925,7 +925,7 @@ static void olympic_freemem(struct net_device *dev)
925 return ; 925 return ;
926} 926}
927 927
928static irqreturn_t olympic_interrupt(int irq, void *dev_id, struct pt_regs *regs) 928static irqreturn_t olympic_interrupt(int irq, void *dev_id)
929{ 929{
930 struct net_device *dev= (struct net_device *)dev_id; 930 struct net_device *dev= (struct net_device *)dev_id;
931 struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv; 931 struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
diff --git a/drivers/net/tokenring/smctr.c b/drivers/net/tokenring/smctr.c
index 85a7f797d343..46dabdb12071 100644
--- a/drivers/net/tokenring/smctr.c
+++ b/drivers/net/tokenring/smctr.c
@@ -141,7 +141,7 @@ static int smctr_init_shared_memory(struct net_device *dev);
141static int smctr_init_tx_bdbs(struct net_device *dev); 141static int smctr_init_tx_bdbs(struct net_device *dev);
142static int smctr_init_tx_fcbs(struct net_device *dev); 142static int smctr_init_tx_fcbs(struct net_device *dev);
143static int smctr_internal_self_test(struct net_device *dev); 143static int smctr_internal_self_test(struct net_device *dev);
144static irqreturn_t smctr_interrupt(int irq, void *dev_id, struct pt_regs *regs); 144static irqreturn_t smctr_interrupt(int irq, void *dev_id);
145static int smctr_issue_enable_int_cmd(struct net_device *dev, 145static int smctr_issue_enable_int_cmd(struct net_device *dev,
146 __u16 interrupt_enable_mask); 146 __u16 interrupt_enable_mask);
147static int smctr_issue_int_ack(struct net_device *dev, __u16 iack_code, 147static int smctr_issue_int_ack(struct net_device *dev, __u16 iack_code,
@@ -1980,7 +1980,7 @@ static int smctr_internal_self_test(struct net_device *dev)
1980/* 1980/*
1981 * The typical workload of the driver: Handle the network interface interrupts. 1981 * The typical workload of the driver: Handle the network interface interrupts.
1982 */ 1982 */
1983static irqreturn_t smctr_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1983static irqreturn_t smctr_interrupt(int irq, void *dev_id)
1984{ 1984{
1985 struct net_device *dev = dev_id; 1985 struct net_device *dev = dev_id;
1986 struct net_local *tp; 1986 struct net_local *tp;
@@ -1990,15 +1990,8 @@ static irqreturn_t smctr_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1990 __u8 isb_type, isb_subtype; 1990 __u8 isb_type, isb_subtype;
1991 __u16 isb_index; 1991 __u16 isb_index;
1992 1992
1993 if(dev == NULL)
1994 {
1995 printk(KERN_CRIT "%s: irq %d for unknown device.\n", dev->name, irq);
1996 return IRQ_NONE;
1997 }
1998
1999 ioaddr = dev->base_addr; 1993 ioaddr = dev->base_addr;
2000 tp = netdev_priv(dev); 1994 tp = netdev_priv(dev);
2001
2002 1995
2003 if(tp->status == NOT_INITIALIZED) 1996 if(tp->status == NOT_INITIALIZED)
2004 return IRQ_NONE; 1997 return IRQ_NONE;
diff --git a/drivers/net/tokenring/tms380tr.c b/drivers/net/tokenring/tms380tr.c
index c1925590a0e1..ea797ca2b988 100644
--- a/drivers/net/tokenring/tms380tr.c
+++ b/drivers/net/tokenring/tms380tr.c
@@ -744,18 +744,13 @@ static void tms380tr_timer_chk(unsigned long data)
744/* 744/*
745 * The typical workload of the driver: Handle the network interface interrupts. 745 * The typical workload of the driver: Handle the network interface interrupts.
746 */ 746 */
747irqreturn_t tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs) 747irqreturn_t tms380tr_interrupt(int irq, void *dev_id)
748{ 748{
749 struct net_device *dev = dev_id; 749 struct net_device *dev = dev_id;
750 struct net_local *tp; 750 struct net_local *tp;
751 unsigned short irq_type; 751 unsigned short irq_type;
752 int handled = 0; 752 int handled = 0;
753 753
754 if(dev == NULL) {
755 printk(KERN_INFO "%s: irq %d for unknown device.\n", dev->name, irq);
756 return IRQ_NONE;
757 }
758
759 tp = netdev_priv(dev); 754 tp = netdev_priv(dev);
760 755
761 irq_type = SIFREADW(SIFSTS); 756 irq_type = SIFREADW(SIFSTS);
diff --git a/drivers/net/tokenring/tms380tr.h b/drivers/net/tokenring/tms380tr.h
index 30452c67bb68..2a16078ac3fd 100644
--- a/drivers/net/tokenring/tms380tr.h
+++ b/drivers/net/tokenring/tms380tr.h
@@ -16,7 +16,7 @@
16/* module prototypes */ 16/* module prototypes */
17int tms380tr_open(struct net_device *dev); 17int tms380tr_open(struct net_device *dev);
18int tms380tr_close(struct net_device *dev); 18int tms380tr_close(struct net_device *dev);
19irqreturn_t tms380tr_interrupt(int irq, void *dev_id, struct pt_regs *regs); 19irqreturn_t tms380tr_interrupt(int irq, void *dev_id);
20int tmsdev_init(struct net_device *dev, struct device *pdev); 20int tmsdev_init(struct net_device *dev, struct device *pdev);
21void tmsdev_term(struct net_device *dev); 21void tmsdev_term(struct net_device *dev);
22void tms380tr_wait(unsigned long time); 22void tms380tr_wait(unsigned long time);
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index e1b48bd86646..2cfd9634895a 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -484,7 +484,7 @@ rx_next:
484 de->rx_tail = rx_tail; 484 de->rx_tail = rx_tail;
485} 485}
486 486
487static irqreturn_t de_interrupt (int irq, void *dev_instance, struct pt_regs *regs) 487static irqreturn_t de_interrupt (int irq, void *dev_instance)
488{ 488{
489 struct net_device *dev = dev_instance; 489 struct net_device *dev = dev_instance;
490 struct de_private *de = dev->priv; 490 struct de_private *de = dev->priv;
diff --git a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c
index fb5fa7d68888..3f4b6408b755 100644
--- a/drivers/net/tulip/de4x5.c
+++ b/drivers/net/tulip/de4x5.c
@@ -896,7 +896,7 @@ static struct {
896*/ 896*/
897static int de4x5_open(struct net_device *dev); 897static int de4x5_open(struct net_device *dev);
898static int de4x5_queue_pkt(struct sk_buff *skb, struct net_device *dev); 898static int de4x5_queue_pkt(struct sk_buff *skb, struct net_device *dev);
899static irqreturn_t de4x5_interrupt(int irq, void *dev_id, struct pt_regs *regs); 899static irqreturn_t de4x5_interrupt(int irq, void *dev_id);
900static int de4x5_close(struct net_device *dev); 900static int de4x5_close(struct net_device *dev);
901static struct net_device_stats *de4x5_get_stats(struct net_device *dev); 901static struct net_device_stats *de4x5_get_stats(struct net_device *dev);
902static void de4x5_local_stats(struct net_device *dev, char *buf, int pkt_len); 902static void de4x5_local_stats(struct net_device *dev, char *buf, int pkt_len);
@@ -1538,18 +1538,14 @@ de4x5_queue_pkt(struct sk_buff *skb, struct net_device *dev)
1538** interrupt is asserted and this routine entered. 1538** interrupt is asserted and this routine entered.
1539*/ 1539*/
1540static irqreturn_t 1540static irqreturn_t
1541de4x5_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1541de4x5_interrupt(int irq, void *dev_id)
1542{ 1542{
1543 struct net_device *dev = (struct net_device *)dev_id; 1543 struct net_device *dev = dev_id;
1544 struct de4x5_private *lp; 1544 struct de4x5_private *lp;
1545 s32 imr, omr, sts, limit; 1545 s32 imr, omr, sts, limit;
1546 u_long iobase; 1546 u_long iobase;
1547 unsigned int handled = 0; 1547 unsigned int handled = 0;
1548 1548
1549 if (dev == NULL) {
1550 printk ("de4x5_interrupt(): irq %d for unknown device.\n", irq);
1551 return IRQ_NONE;
1552 }
1553 lp = netdev_priv(dev); 1549 lp = netdev_priv(dev);
1554 spin_lock(&lp->lock); 1550 spin_lock(&lp->lock);
1555 iobase = dev->base_addr; 1551 iobase = dev->base_addr;
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c
index ccf2c225f084..4dd8a0bae860 100644
--- a/drivers/net/tulip/dmfe.c
+++ b/drivers/net/tulip/dmfe.c
@@ -300,7 +300,7 @@ static struct net_device_stats * dmfe_get_stats(struct DEVICE *);
300static void dmfe_set_filter_mode(struct DEVICE *); 300static void dmfe_set_filter_mode(struct DEVICE *);
301static const struct ethtool_ops netdev_ethtool_ops; 301static const struct ethtool_ops netdev_ethtool_ops;
302static u16 read_srom_word(long ,int); 302static u16 read_srom_word(long ,int);
303static irqreturn_t dmfe_interrupt(int , void *, struct pt_regs *); 303static irqreturn_t dmfe_interrupt(int , void *);
304#ifdef CONFIG_NET_POLL_CONTROLLER 304#ifdef CONFIG_NET_POLL_CONTROLLER
305static void poll_dmfe (struct net_device *dev); 305static void poll_dmfe (struct net_device *dev);
306#endif 306#endif
@@ -735,7 +735,7 @@ static int dmfe_stop(struct DEVICE *dev)
735 * receive the packet to upper layer, free the transmitted packet 735 * receive the packet to upper layer, free the transmitted packet
736 */ 736 */
737 737
738static irqreturn_t dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs) 738static irqreturn_t dmfe_interrupt(int irq, void *dev_id)
739{ 739{
740 struct DEVICE *dev = dev_id; 740 struct DEVICE *dev = dev_id;
741 struct dmfe_board_info *db = netdev_priv(dev); 741 struct dmfe_board_info *db = netdev_priv(dev);
@@ -806,7 +806,7 @@ static void poll_dmfe (struct net_device *dev)
806 /* disable_irq here is not very nice, but with the lockless 806 /* disable_irq here is not very nice, but with the lockless
807 interrupt handler we have no other choice. */ 807 interrupt handler we have no other choice. */
808 disable_irq(dev->irq); 808 disable_irq(dev->irq);
809 dmfe_interrupt (dev->irq, dev, NULL); 809 dmfe_interrupt (dev->irq, dev);
810 enable_irq(dev->irq); 810 enable_irq(dev->irq);
811} 811}
812#endif 812#endif
diff --git a/drivers/net/tulip/interrupt.c b/drivers/net/tulip/interrupt.c
index 7f8f5d42a761..e3488d7b8ede 100644
--- a/drivers/net/tulip/interrupt.c
+++ b/drivers/net/tulip/interrupt.c
@@ -496,7 +496,7 @@ static inline unsigned int phy_interrupt (struct net_device *dev)
496 496
497/* The interrupt handler does all of the Rx thread work and cleans up 497/* The interrupt handler does all of the Rx thread work and cleans up
498 after the Tx thread. */ 498 after the Tx thread. */
499irqreturn_t tulip_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 499irqreturn_t tulip_interrupt(int irq, void *dev_instance)
500{ 500{
501 struct net_device *dev = (struct net_device *)dev_instance; 501 struct net_device *dev = (struct net_device *)dev_instance;
502 struct tulip_private *tp = netdev_priv(dev); 502 struct tulip_private *tp = netdev_priv(dev);
diff --git a/drivers/net/tulip/tulip.h b/drivers/net/tulip/tulip.h
index 25668ddb1f7e..ad107f45c7b1 100644
--- a/drivers/net/tulip/tulip.h
+++ b/drivers/net/tulip/tulip.h
@@ -424,7 +424,7 @@ int tulip_read_eeprom(struct net_device *dev, int location, int addr_len);
424/* interrupt.c */ 424/* interrupt.c */
425extern unsigned int tulip_max_interrupt_work; 425extern unsigned int tulip_max_interrupt_work;
426extern int tulip_rx_copybreak; 426extern int tulip_rx_copybreak;
427irqreturn_t tulip_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 427irqreturn_t tulip_interrupt(int irq, void *dev_instance);
428int tulip_refill_rx(struct net_device *dev); 428int tulip_refill_rx(struct net_device *dev);
429#ifdef CONFIG_TULIP_NAPI 429#ifdef CONFIG_TULIP_NAPI
430int tulip_poll(struct net_device *dev, int *budget); 430int tulip_poll(struct net_device *dev, int *budget);
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c
index 831919a81918..0aee618f883c 100644
--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -1823,7 +1823,7 @@ static void poll_tulip (struct net_device *dev)
1823 /* disable_irq here is not very nice, but with the lockless 1823 /* disable_irq here is not very nice, but with the lockless
1824 interrupt handler we have no other choice. */ 1824 interrupt handler we have no other choice. */
1825 disable_irq(dev->irq); 1825 disable_irq(dev->irq);
1826 tulip_interrupt (dev->irq, dev, NULL); 1826 tulip_interrupt (dev->irq, dev);
1827 enable_irq(dev->irq); 1827 enable_irq(dev->irq);
1828} 1828}
1829#endif 1829#endif
diff --git a/drivers/net/tulip/uli526x.c b/drivers/net/tulip/uli526x.c
index 0b176be51eb3..229158e8e4be 100644
--- a/drivers/net/tulip/uli526x.c
+++ b/drivers/net/tulip/uli526x.c
@@ -224,7 +224,7 @@ static struct net_device_stats * uli526x_get_stats(struct net_device *);
224static void uli526x_set_filter_mode(struct net_device *); 224static void uli526x_set_filter_mode(struct net_device *);
225static const struct ethtool_ops netdev_ethtool_ops; 225static const struct ethtool_ops netdev_ethtool_ops;
226static u16 read_srom_word(long, int); 226static u16 read_srom_word(long, int);
227static irqreturn_t uli526x_interrupt(int, void *, struct pt_regs *); 227static irqreturn_t uli526x_interrupt(int, void *);
228static void uli526x_descriptor_init(struct uli526x_board_info *, unsigned long); 228static void uli526x_descriptor_init(struct uli526x_board_info *, unsigned long);
229static void allocate_rx_buffer(struct uli526x_board_info *); 229static void allocate_rx_buffer(struct uli526x_board_info *);
230static void update_cr6(u32, unsigned long); 230static void update_cr6(u32, unsigned long);
@@ -659,7 +659,7 @@ static int uli526x_stop(struct net_device *dev)
659 * receive the packet to upper layer, free the transmitted packet 659 * receive the packet to upper layer, free the transmitted packet
660 */ 660 */
661 661
662static irqreturn_t uli526x_interrupt(int irq, void *dev_id, struct pt_regs *regs) 662static irqreturn_t uli526x_interrupt(int irq, void *dev_id)
663{ 663{
664 struct net_device *dev = dev_id; 664 struct net_device *dev = dev_id;
665 struct uli526x_board_info *db = netdev_priv(dev); 665 struct uli526x_board_info *db = netdev_priv(dev);
diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c
index 2fca1ee24f5a..002a05e0722f 100644
--- a/drivers/net/tulip/winbond-840.c
+++ b/drivers/net/tulip/winbond-840.c
@@ -332,7 +332,7 @@ static void tx_timeout(struct net_device *dev);
332static int alloc_ringdesc(struct net_device *dev); 332static int alloc_ringdesc(struct net_device *dev);
333static void free_ringdesc(struct netdev_private *np); 333static void free_ringdesc(struct netdev_private *np);
334static int start_tx(struct sk_buff *skb, struct net_device *dev); 334static int start_tx(struct sk_buff *skb, struct net_device *dev);
335static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *regs); 335static irqreturn_t intr_handler(int irq, void *dev_instance);
336static void netdev_error(struct net_device *dev, int intr_status); 336static void netdev_error(struct net_device *dev, int intr_status);
337static int netdev_rx(struct net_device *dev); 337static int netdev_rx(struct net_device *dev);
338static u32 __set_rx_mode(struct net_device *dev); 338static u32 __set_rx_mode(struct net_device *dev);
@@ -1110,7 +1110,7 @@ static void netdev_tx_done(struct net_device *dev)
1110 1110
1111/* The interrupt handler does all of the Rx thread work and cleans up 1111/* The interrupt handler does all of the Rx thread work and cleans up
1112 after the Tx thread. */ 1112 after the Tx thread. */
1113static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) 1113static irqreturn_t intr_handler(int irq, void *dev_instance)
1114{ 1114{
1115 struct net_device *dev = (struct net_device *)dev_instance; 1115 struct net_device *dev = (struct net_device *)dev_instance;
1116 struct netdev_private *np = netdev_priv(dev); 1116 struct netdev_private *np = netdev_priv(dev);
diff --git a/drivers/net/tulip/xircom_cb.c b/drivers/net/tulip/xircom_cb.c
index 629eac645289..61d313049dd0 100644
--- a/drivers/net/tulip/xircom_cb.c
+++ b/drivers/net/tulip/xircom_cb.c
@@ -114,7 +114,7 @@ struct xircom_private {
114/* Function prototypes */ 114/* Function prototypes */
115static int xircom_probe(struct pci_dev *pdev, const struct pci_device_id *id); 115static int xircom_probe(struct pci_dev *pdev, const struct pci_device_id *id);
116static void xircom_remove(struct pci_dev *pdev); 116static void xircom_remove(struct pci_dev *pdev);
117static irqreturn_t xircom_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 117static irqreturn_t xircom_interrupt(int irq, void *dev_instance);
118static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev); 118static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev);
119static int xircom_open(struct net_device *dev); 119static int xircom_open(struct net_device *dev);
120static int xircom_close(struct net_device *dev); 120static int xircom_close(struct net_device *dev);
@@ -334,7 +334,7 @@ static void __devexit xircom_remove(struct pci_dev *pdev)
334 leave("xircom_remove"); 334 leave("xircom_remove");
335} 335}
336 336
337static irqreturn_t xircom_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 337static irqreturn_t xircom_interrupt(int irq, void *dev_instance)
338{ 338{
339 struct net_device *dev = (struct net_device *) dev_instance; 339 struct net_device *dev = (struct net_device *) dev_instance;
340 struct xircom_private *card = netdev_priv(dev); 340 struct xircom_private *card = netdev_priv(dev);
@@ -513,7 +513,7 @@ static struct net_device_stats *xircom_get_stats(struct net_device *dev)
513static void xircom_poll_controller(struct net_device *dev) 513static void xircom_poll_controller(struct net_device *dev)
514{ 514{
515 disable_irq(dev->irq); 515 disable_irq(dev->irq);
516 xircom_interrupt(dev->irq, dev, NULL); 516 xircom_interrupt(dev->irq, dev);
517 enable_irq(dev->irq); 517 enable_irq(dev->irq);
518} 518}
519#endif 519#endif
diff --git a/drivers/net/tulip/xircom_tulip_cb.c b/drivers/net/tulip/xircom_tulip_cb.c
index 312788caa4c6..a998c5d0ae9c 100644
--- a/drivers/net/tulip/xircom_tulip_cb.c
+++ b/drivers/net/tulip/xircom_tulip_cb.c
@@ -328,7 +328,7 @@ static void xircom_init_ring(struct net_device *dev);
328static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev); 328static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev);
329static int xircom_rx(struct net_device *dev); 329static int xircom_rx(struct net_device *dev);
330static void xircom_media_change(struct net_device *dev); 330static void xircom_media_change(struct net_device *dev);
331static irqreturn_t xircom_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 331static irqreturn_t xircom_interrupt(int irq, void *dev_instance);
332static int xircom_close(struct net_device *dev); 332static int xircom_close(struct net_device *dev);
333static struct net_device_stats *xircom_get_stats(struct net_device *dev); 333static struct net_device_stats *xircom_get_stats(struct net_device *dev);
334static int xircom_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 334static int xircom_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
@@ -1044,7 +1044,7 @@ static void check_duplex(struct net_device *dev)
1044 1044
1045/* The interrupt handler does all of the Rx thread work and cleans up 1045/* The interrupt handler does all of the Rx thread work and cleans up
1046 after the Tx thread. */ 1046 after the Tx thread. */
1047static irqreturn_t xircom_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 1047static irqreturn_t xircom_interrupt(int irq, void *dev_instance)
1048{ 1048{
1049 struct net_device *dev = dev_instance; 1049 struct net_device *dev = dev_instance;
1050 struct xircom_private *tp = netdev_priv(dev); 1050 struct xircom_private *tp = netdev_priv(dev);
diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c
index d5c32e9caa97..3bf9e630404f 100644
--- a/drivers/net/typhoon.c
+++ b/drivers/net/typhoon.c
@@ -1826,7 +1826,7 @@ typhoon_poll(struct net_device *dev, int *total_budget)
1826} 1826}
1827 1827
1828static irqreturn_t 1828static irqreturn_t
1829typhoon_interrupt(int irq, void *dev_instance, struct pt_regs *rgs) 1829typhoon_interrupt(int irq, void *dev_instance)
1830{ 1830{
1831 struct net_device *dev = (struct net_device *) dev_instance; 1831 struct net_device *dev = (struct net_device *) dev_instance;
1832 struct typhoon *tp = dev->priv; 1832 struct typhoon *tp = dev->priv;
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index 700ebd7d1457..12cd7b561f35 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -3844,8 +3844,7 @@ static int ucc_geth_poll(struct net_device *dev, int *budget)
3844} 3844}
3845#endif /* CONFIG_UGETH_NAPI */ 3845#endif /* CONFIG_UGETH_NAPI */
3846 3846
3847static irqreturn_t ucc_geth_irq_handler(int irq, void *info, 3847static irqreturn_t ucc_geth_irq_handler(int irq, void *info)
3848 struct pt_regs *regs)
3849{ 3848{
3850 struct net_device *dev = (struct net_device *)info; 3849 struct net_device *dev = (struct net_device *)info;
3851 ucc_geth_private_t *ugeth = netdev_priv(dev); 3850 ucc_geth_private_t *ugeth = netdev_priv(dev);
@@ -3910,7 +3909,7 @@ static irqreturn_t ucc_geth_irq_handler(int irq, void *info,
3910 return IRQ_HANDLED; 3909 return IRQ_HANDLED;
3911} 3910}
3912 3911
3913static irqreturn_t phy_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3912static irqreturn_t phy_interrupt(int irq, void *dev_id)
3914{ 3913{
3915 struct net_device *dev = (struct net_device *)dev_id; 3914 struct net_device *dev = (struct net_device *)dev_id;
3916 ucc_geth_private_t *ugeth = netdev_priv(dev); 3915 ucc_geth_private_t *ugeth = netdev_priv(dev);
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index cbebf1b96e9d..ebbda1d8f542 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -404,7 +404,7 @@ static void mdio_write(struct net_device *dev, int phy_id, int location, int val
404static int rhine_open(struct net_device *dev); 404static int rhine_open(struct net_device *dev);
405static void rhine_tx_timeout(struct net_device *dev); 405static void rhine_tx_timeout(struct net_device *dev);
406static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev); 406static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev);
407static irqreturn_t rhine_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 407static irqreturn_t rhine_interrupt(int irq, void *dev_instance);
408static void rhine_tx(struct net_device *dev); 408static void rhine_tx(struct net_device *dev);
409static int rhine_rx(struct net_device *dev, int limit); 409static int rhine_rx(struct net_device *dev, int limit);
410static void rhine_error(struct net_device *dev, int intr_status); 410static void rhine_error(struct net_device *dev, int intr_status);
@@ -569,7 +569,7 @@ static void __devinit rhine_reload_eeprom(long pioaddr, struct net_device *dev)
569static void rhine_poll(struct net_device *dev) 569static void rhine_poll(struct net_device *dev)
570{ 570{
571 disable_irq(dev->irq); 571 disable_irq(dev->irq);
572 rhine_interrupt(dev->irq, (void *)dev, NULL); 572 rhine_interrupt(dev->irq, (void *)dev);
573 enable_irq(dev->irq); 573 enable_irq(dev->irq);
574} 574}
575#endif 575#endif
@@ -1290,7 +1290,7 @@ static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev)
1290 1290
1291/* The interrupt handler does all of the Rx thread work and cleans up 1291/* The interrupt handler does all of the Rx thread work and cleans up
1292 after the Tx thread. */ 1292 after the Tx thread. */
1293static irqreturn_t rhine_interrupt(int irq, void *dev_instance, struct pt_regs *rgs) 1293static irqreturn_t rhine_interrupt(int irq, void *dev_instance)
1294{ 1294{
1295 struct net_device *dev = dev_instance; 1295 struct net_device *dev = dev_instance;
1296 struct rhine_private *rp = netdev_priv(dev); 1296 struct rhine_private *rp = netdev_priv(dev);
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index 7d8808ce541f..74f894795a1b 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -236,7 +236,7 @@ static void velocity_print_info(struct velocity_info *vptr);
236static int velocity_open(struct net_device *dev); 236static int velocity_open(struct net_device *dev);
237static int velocity_change_mtu(struct net_device *dev, int mtu); 237static int velocity_change_mtu(struct net_device *dev, int mtu);
238static int velocity_xmit(struct sk_buff *skb, struct net_device *dev); 238static int velocity_xmit(struct sk_buff *skb, struct net_device *dev);
239static int velocity_intr(int irq, void *dev_instance, struct pt_regs *regs); 239static int velocity_intr(int irq, void *dev_instance);
240static void velocity_set_multi(struct net_device *dev); 240static void velocity_set_multi(struct net_device *dev);
241static struct net_device_stats *velocity_get_stats(struct net_device *dev); 241static struct net_device_stats *velocity_get_stats(struct net_device *dev);
242static int velocity_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 242static int velocity_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
@@ -2036,7 +2036,6 @@ static int velocity_xmit(struct sk_buff *skb, struct net_device *dev)
2036 * velocity_intr - interrupt callback 2036 * velocity_intr - interrupt callback
2037 * @irq: interrupt number 2037 * @irq: interrupt number
2038 * @dev_instance: interrupting device 2038 * @dev_instance: interrupting device
2039 * @pt_regs: CPU register state at interrupt
2040 * 2039 *
2041 * Called whenever an interrupt is generated by the velocity 2040 * Called whenever an interrupt is generated by the velocity
2042 * adapter IRQ line. We may not be the source of the interrupt 2041 * adapter IRQ line. We may not be the source of the interrupt
@@ -2044,7 +2043,7 @@ static int velocity_xmit(struct sk_buff *skb, struct net_device *dev)
2044 * efficiently as possible. 2043 * efficiently as possible.
2045 */ 2044 */
2046 2045
2047static int velocity_intr(int irq, void *dev_instance, struct pt_regs *regs) 2046static int velocity_intr(int irq, void *dev_instance)
2048{ 2047{
2049 struct net_device *dev = dev_instance; 2048 struct net_device *dev = dev_instance;
2050 struct velocity_info *vptr = netdev_priv(dev); 2049 struct velocity_info *vptr = netdev_priv(dev);
diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c
index 1f95b4864ea1..e1bf8b93f958 100644
--- a/drivers/net/wan/cosa.c
+++ b/drivers/net/wan/cosa.c
@@ -345,7 +345,7 @@ static void put_driver_status(struct cosa_data *cosa);
345static void put_driver_status_nolock(struct cosa_data *cosa); 345static void put_driver_status_nolock(struct cosa_data *cosa);
346 346
347/* Interrupt handling */ 347/* Interrupt handling */
348static irqreturn_t cosa_interrupt(int irq, void *cosa, struct pt_regs *regs); 348static irqreturn_t cosa_interrupt(int irq, void *cosa);
349 349
350/* I/O ops debugging */ 350/* I/O ops debugging */
351#ifdef DEBUG_IO 351#ifdef DEBUG_IO
@@ -1972,7 +1972,7 @@ out:
1972 spin_unlock_irqrestore(&cosa->lock, flags); 1972 spin_unlock_irqrestore(&cosa->lock, flags);
1973} 1973}
1974 1974
1975static irqreturn_t cosa_interrupt(int irq, void *cosa_, struct pt_regs *regs) 1975static irqreturn_t cosa_interrupt(int irq, void *cosa_)
1976{ 1976{
1977 unsigned status; 1977 unsigned status;
1978 int count = 0; 1978 int count = 0;
diff --git a/drivers/net/wan/cycx_main.c b/drivers/net/wan/cycx_main.c
index a5e7ce1bd16a..6e5f1c898517 100644
--- a/drivers/net/wan/cycx_main.c
+++ b/drivers/net/wan/cycx_main.c
@@ -74,7 +74,7 @@ static int cycx_wan_setup(struct wan_device *wandev, wandev_conf_t *conf);
74static int cycx_wan_shutdown(struct wan_device *wandev); 74static int cycx_wan_shutdown(struct wan_device *wandev);
75 75
76/* Miscellaneous functions */ 76/* Miscellaneous functions */
77static irqreturn_t cycx_isr(int irq, void *dev_id, struct pt_regs *regs); 77static irqreturn_t cycx_isr(int irq, void *dev_id);
78 78
79/* Global Data 79/* Global Data
80 * Note: All data must be explicitly initialized!!! 80 * Note: All data must be explicitly initialized!!!
@@ -301,11 +301,11 @@ out: return ret;
301 * o acknowledge Cyclom 2X hardware interrupt. 301 * o acknowledge Cyclom 2X hardware interrupt.
302 * o call protocol-specific interrupt service routine, if any. 302 * o call protocol-specific interrupt service routine, if any.
303 */ 303 */
304static irqreturn_t cycx_isr(int irq, void *dev_id, struct pt_regs *regs) 304static irqreturn_t cycx_isr(int irq, void *dev_id)
305{ 305{
306 struct cycx_device *card = (struct cycx_device *)dev_id; 306 struct cycx_device *card = dev_id;
307 307
308 if (!card || card->wandev.state == WAN_UNCONFIGURED) 308 if (card->wandev.state == WAN_UNCONFIGURED)
309 goto out; 309 goto out;
310 310
311 if (card->in_isr) { 311 if (card->in_isr) {
diff --git a/drivers/net/wan/dscc4.c b/drivers/net/wan/dscc4.c
index af4d4155905b..25021a7992a9 100644
--- a/drivers/net/wan/dscc4.c
+++ b/drivers/net/wan/dscc4.c
@@ -365,7 +365,7 @@ static int dscc4_init_ring(struct net_device *);
365static void dscc4_release_ring(struct dscc4_dev_priv *); 365static void dscc4_release_ring(struct dscc4_dev_priv *);
366static void dscc4_timer(unsigned long); 366static void dscc4_timer(unsigned long);
367static void dscc4_tx_timeout(struct net_device *); 367static void dscc4_tx_timeout(struct net_device *);
368static irqreturn_t dscc4_irq(int irq, void *dev_id, struct pt_regs *ptregs); 368static irqreturn_t dscc4_irq(int irq, void *dev_id);
369static int dscc4_hdlc_attach(struct net_device *, unsigned short, unsigned short); 369static int dscc4_hdlc_attach(struct net_device *, unsigned short, unsigned short);
370static int dscc4_set_iface(struct dscc4_dev_priv *, struct net_device *); 370static int dscc4_set_iface(struct dscc4_dev_priv *, struct net_device *);
371#ifdef DSCC4_POLLING 371#ifdef DSCC4_POLLING
@@ -1476,7 +1476,7 @@ static int dscc4_set_iface(struct dscc4_dev_priv *dpriv, struct net_device *dev)
1476 return ret; 1476 return ret;
1477} 1477}
1478 1478
1479static irqreturn_t dscc4_irq(int irq, void *token, struct pt_regs *ptregs) 1479static irqreturn_t dscc4_irq(int irq, void *token)
1480{ 1480{
1481 struct dscc4_dev_priv *root = token; 1481 struct dscc4_dev_priv *root = token;
1482 struct dscc4_pci_priv *priv; 1482 struct dscc4_pci_priv *priv;
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index 564351aafa41..c45d6a83339d 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -1498,7 +1498,7 @@ do_bottom_half_rx(struct fst_card_info *card)
1498 * Dev_id is our fst_card_info pointer 1498 * Dev_id is our fst_card_info pointer
1499 */ 1499 */
1500static irqreturn_t 1500static irqreturn_t
1501fst_intr(int irq, void *dev_id, struct pt_regs *regs) 1501fst_intr(int irq, void *dev_id)
1502{ 1502{
1503 struct fst_card_info *card; 1503 struct fst_card_info *card;
1504 struct fst_port_info *port; 1504 struct fst_port_info *port;
diff --git a/drivers/net/wan/hd6457x.c b/drivers/net/wan/hd6457x.c
index dce2bb317b82..8d0a1f2f00e5 100644
--- a/drivers/net/wan/hd6457x.c
+++ b/drivers/net/wan/hd6457x.c
@@ -424,7 +424,7 @@ static inline void sca_tx_intr(port_t *port)
424 424
425 425
426 426
427static irqreturn_t sca_intr(int irq, void* dev_id, struct pt_regs *regs) 427static irqreturn_t sca_intr(int irq, void* dev_id)
428{ 428{
429 card_t *card = dev_id; 429 card_t *card = dev_id;
430 int i; 430 int i;
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 7b5d81deb028..2b54f1bc3a0d 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -100,7 +100,7 @@ static int lmc_rx (struct net_device *dev);
100static int lmc_open(struct net_device *dev); 100static int lmc_open(struct net_device *dev);
101static int lmc_close(struct net_device *dev); 101static int lmc_close(struct net_device *dev);
102static struct net_device_stats *lmc_get_stats(struct net_device *dev); 102static struct net_device_stats *lmc_get_stats(struct net_device *dev);
103static irqreturn_t lmc_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 103static irqreturn_t lmc_interrupt(int irq, void *dev_instance);
104static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, size_t csr_size); 104static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, size_t csr_size);
105static void lmc_softreset(lmc_softc_t * const); 105static void lmc_softreset(lmc_softc_t * const);
106static void lmc_running_reset(struct net_device *dev); 106static void lmc_running_reset(struct net_device *dev);
@@ -1273,7 +1273,7 @@ static int lmc_ifdown (struct net_device *dev) /*fold00*/
1273/* Interrupt handling routine. This will take an incoming packet, or clean 1273/* Interrupt handling routine. This will take an incoming packet, or clean
1274 * up after a trasmit. 1274 * up after a trasmit.
1275 */ 1275 */
1276static irqreturn_t lmc_interrupt (int irq, void *dev_instance, struct pt_regs *regs) /*fold00*/ 1276static irqreturn_t lmc_interrupt (int irq, void *dev_instance) /*fold00*/
1277{ 1277{
1278 struct net_device *dev = (struct net_device *) dev_instance; 1278 struct net_device *dev = (struct net_device *) dev_instance;
1279 lmc_softc_t *sc; 1279 lmc_softc_t *sc;
diff --git a/drivers/net/wan/pc300_drv.c b/drivers/net/wan/pc300_drv.c
index 8d9b959bf15b..5823e3bca178 100644
--- a/drivers/net/wan/pc300_drv.c
+++ b/drivers/net/wan/pc300_drv.c
@@ -284,7 +284,7 @@ static void rx_dma_buf_pt_init(pc300_t *, int);
284static void rx_dma_buf_init(pc300_t *, int); 284static void rx_dma_buf_init(pc300_t *, int);
285static void tx_dma_buf_check(pc300_t *, int); 285static void tx_dma_buf_check(pc300_t *, int);
286static void rx_dma_buf_check(pc300_t *, int); 286static void rx_dma_buf_check(pc300_t *, int);
287static irqreturn_t cpc_intr(int, void *, struct pt_regs *); 287static irqreturn_t cpc_intr(int, void *);
288static struct net_device_stats *cpc_get_stats(struct net_device *); 288static struct net_device_stats *cpc_get_stats(struct net_device *);
289static int clock_rate_calc(uclong, uclong, int *); 289static int clock_rate_calc(uclong, uclong, int *);
290static uclong detect_ram(pc300_t *); 290static uclong detect_ram(pc300_t *);
@@ -2363,7 +2363,7 @@ static void falc_intr(pc300_t * card)
2363 } 2363 }
2364} 2364}
2365 2365
2366static irqreturn_t cpc_intr(int irq, void *dev_id, struct pt_regs *regs) 2366static irqreturn_t cpc_intr(int irq, void *dev_id)
2367{ 2367{
2368 pc300_t *card; 2368 pc300_t *card;
2369 volatile ucchar plx_status; 2369 volatile ucchar plx_status;
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c
index fc75bec19029..fc5c0c611ffd 100644
--- a/drivers/net/wan/sbni.c
+++ b/drivers/net/wan/sbni.c
@@ -119,7 +119,7 @@ static int sbni_ioctl( struct net_device *, struct ifreq *, int );
119static struct net_device_stats *sbni_get_stats( struct net_device * ); 119static struct net_device_stats *sbni_get_stats( struct net_device * );
120static void set_multicast_list( struct net_device * ); 120static void set_multicast_list( struct net_device * );
121 121
122static irqreturn_t sbni_interrupt( int, void *, struct pt_regs * ); 122static irqreturn_t sbni_interrupt( int, void * );
123static void handle_channel( struct net_device * ); 123static void handle_channel( struct net_device * );
124static int recv_frame( struct net_device * ); 124static int recv_frame( struct net_device * );
125static void send_frame( struct net_device * ); 125static void send_frame( struct net_device * );
@@ -501,7 +501,7 @@ sbni_start_xmit( struct sk_buff *skb, struct net_device *dev )
501 */ 501 */
502 502
503static irqreturn_t 503static irqreturn_t
504sbni_interrupt( int irq, void *dev_id, struct pt_regs *regs ) 504sbni_interrupt( int irq, void *dev_id )
505{ 505{
506 struct net_device *dev = (struct net_device *) dev_id; 506 struct net_device *dev = (struct net_device *) dev_id;
507 struct net_local *nl = (struct net_local *) dev->priv; 507 struct net_local *nl = (struct net_local *) dev->priv;
diff --git a/drivers/net/wan/sdla.c b/drivers/net/wan/sdla.c
index 0ba018f8382b..6a485f0556f4 100644
--- a/drivers/net/wan/sdla.c
+++ b/drivers/net/wan/sdla.c
@@ -867,7 +867,7 @@ static void sdla_receive(struct net_device *dev)
867 spin_unlock_irqrestore(&sdla_lock, flags); 867 spin_unlock_irqrestore(&sdla_lock, flags);
868} 868}
869 869
870static irqreturn_t sdla_isr(int irq, void *dev_id, struct pt_regs * regs) 870static irqreturn_t sdla_isr(int irq, void *dev_id)
871{ 871{
872 struct net_device *dev; 872 struct net_device *dev;
873 struct frad_local *flp; 873 struct frad_local *flp;
@@ -875,13 +875,7 @@ static irqreturn_t sdla_isr(int irq, void *dev_id, struct pt_regs * regs)
875 875
876 dev = dev_id; 876 dev = dev_id;
877 877
878 if (dev == NULL) 878 flp = netdev_priv(dev);
879 {
880 printk(KERN_WARNING "sdla_isr(): irq %d for unknown device.\n", irq);
881 return IRQ_NONE;
882 }
883
884 flp = dev->priv;
885 879
886 if (!flp->initialized) 880 if (!flp->initialized)
887 { 881 {
diff --git a/drivers/net/wan/wanxl.c b/drivers/net/wan/wanxl.c
index ec68f7dfd93f..c73601574334 100644
--- a/drivers/net/wan/wanxl.c
+++ b/drivers/net/wan/wanxl.c
@@ -244,7 +244,7 @@ static inline void wanxl_rx_intr(card_t *card)
244 244
245 245
246 246
247static irqreturn_t wanxl_intr(int irq, void* dev_id, struct pt_regs *regs) 247static irqreturn_t wanxl_intr(int irq, void* dev_id)
248{ 248{
249 card_t *card = dev_id; 249 card_t *card = dev_id;
250 int i; 250 int i;
diff --git a/drivers/net/wan/z85230.c b/drivers/net/wan/z85230.c
index caa48f12fd0f..59ddd21c3958 100644
--- a/drivers/net/wan/z85230.c
+++ b/drivers/net/wan/z85230.c
@@ -728,7 +728,7 @@ EXPORT_SYMBOL(z8530_nop);
728 * channel). c->lock for both channels points to dev->lock 728 * channel). c->lock for both channels points to dev->lock
729 */ 729 */
730 730
731irqreturn_t z8530_interrupt(int irq, void *dev_id, struct pt_regs *regs) 731irqreturn_t z8530_interrupt(int irq, void *dev_id)
732{ 732{
733 struct z8530_dev *dev=dev_id; 733 struct z8530_dev *dev=dev_id;
734 u8 intr; 734 u8 intr;
diff --git a/drivers/net/wan/z85230.h b/drivers/net/wan/z85230.h
index 77e53208045f..158aea7b8eac 100644
--- a/drivers/net/wan/z85230.h
+++ b/drivers/net/wan/z85230.h
@@ -396,7 +396,7 @@ struct z8530_dev
396extern u8 z8530_dead_port[]; 396extern u8 z8530_dead_port[];
397extern u8 z8530_hdlc_kilostream_85230[]; 397extern u8 z8530_hdlc_kilostream_85230[];
398extern u8 z8530_hdlc_kilostream[]; 398extern u8 z8530_hdlc_kilostream[];
399extern irqreturn_t z8530_interrupt(int, void *, struct pt_regs *); 399extern irqreturn_t z8530_interrupt(int, void *);
400extern void z8530_describe(struct z8530_dev *, char *mapping, unsigned long io); 400extern void z8530_describe(struct z8530_dev *, char *mapping, unsigned long io);
401extern int z8530_init(struct z8530_dev *); 401extern int z8530_init(struct z8530_dev *);
402extern int z8530_shutdown(struct z8530_dev *); 402extern int z8530_shutdown(struct z8530_dev *);
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 39d09345027c..0a33c8a56e13 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -1120,8 +1120,7 @@ static void mpi_receive_802_3(struct airo_info *ai);
1120static void mpi_receive_802_11(struct airo_info *ai); 1120static void mpi_receive_802_11(struct airo_info *ai);
1121static int waitbusy (struct airo_info *ai); 1121static int waitbusy (struct airo_info *ai);
1122 1122
1123static irqreturn_t airo_interrupt( int irq, void* dev_id, struct pt_regs 1123static irqreturn_t airo_interrupt( int irq, void* dev_id);
1124 *regs);
1125static int airo_thread(void *data); 1124static int airo_thread(void *data);
1126static void timer_func( struct net_device *dev ); 1125static void timer_func( struct net_device *dev );
1127static int airo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 1126static int airo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
@@ -3151,7 +3150,7 @@ static int airo_thread(void *data) {
3151 return 0; 3150 return 0;
3152} 3151}
3153 3152
3154static irqreturn_t airo_interrupt ( int irq, void* dev_id, struct pt_regs *regs) { 3153static irqreturn_t airo_interrupt ( int irq, void* dev_id) {
3155 struct net_device *dev = (struct net_device *)dev_id; 3154 struct net_device *dev = (struct net_device *)dev_id;
3156 u16 status; 3155 u16 status;
3157 u16 fid; 3156 u16 fid;
diff --git a/drivers/net/wireless/arlan-main.c b/drivers/net/wireless/arlan-main.c
index bb6bea4f3233..4688e56b69c7 100644
--- a/drivers/net/wireless/arlan-main.c
+++ b/drivers/net/wireless/arlan-main.c
@@ -78,7 +78,7 @@ static int arlans_found;
78 78
79static int arlan_open(struct net_device *dev); 79static int arlan_open(struct net_device *dev);
80static int arlan_tx(struct sk_buff *skb, struct net_device *dev); 80static int arlan_tx(struct sk_buff *skb, struct net_device *dev);
81static irqreturn_t arlan_interrupt(int irq, void *dev_id, struct pt_regs *regs); 81static irqreturn_t arlan_interrupt(int irq, void *dev_id);
82static int arlan_close(struct net_device *dev); 82static int arlan_close(struct net_device *dev);
83static struct net_device_stats * 83static struct net_device_stats *
84 arlan_statistics (struct net_device *dev); 84 arlan_statistics (struct net_device *dev);
@@ -1651,7 +1651,7 @@ end_int_process:
1651 return; 1651 return;
1652} 1652}
1653 1653
1654static irqreturn_t arlan_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1654static irqreturn_t arlan_interrupt(int irq, void *dev_id)
1655{ 1655{
1656 struct net_device *dev = dev_id; 1656 struct net_device *dev = dev_id;
1657 struct arlan_private *priv = netdev_priv(dev); 1657 struct arlan_private *priv = netdev_priv(dev);
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 0fc267d626dc..31eed85de60f 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1145,7 +1145,7 @@ next:
1145 } 1145 }
1146} 1146}
1147 1147
1148static irqreturn_t service_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1148static irqreturn_t service_interrupt(int irq, void *dev_id)
1149{ 1149{
1150 struct net_device *dev = (struct net_device *) dev_id; 1150 struct net_device *dev = (struct net_device *) dev_id;
1151 struct atmel_private *priv = netdev_priv(dev); 1151 struct atmel_private *priv = netdev_priv(dev);
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
index eb65db7393ba..bad3452ea893 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -1834,7 +1834,7 @@ static void bcm43xx_interrupt_ack(struct bcm43xx_private *bcm, u32 reason)
1834} 1834}
1835 1835
1836/* Interrupt handler top-half */ 1836/* Interrupt handler top-half */
1837static irqreturn_t bcm43xx_interrupt_handler(int irq, void *dev_id, struct pt_regs *regs) 1837static irqreturn_t bcm43xx_interrupt_handler(int irq, void *dev_id)
1838{ 1838{
1839 irqreturn_t ret = IRQ_HANDLED; 1839 irqreturn_t ret = IRQ_HANDLED;
1840 struct bcm43xx_private *bcm = dev_id; 1840 struct bcm43xx_private *bcm = dev_id;
@@ -3963,7 +3963,7 @@ static void bcm43xx_net_poll_controller(struct net_device *net_dev)
3963 3963
3964 local_irq_save(flags); 3964 local_irq_save(flags);
3965 if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED) 3965 if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED)
3966 bcm43xx_interrupt_handler(bcm->irq, bcm, NULL); 3966 bcm43xx_interrupt_handler(bcm->irq, bcm);
3967 local_irq_restore(flags); 3967 local_irq_restore(flags);
3968} 3968}
3969#endif /* CONFIG_NET_POLL_CONTROLLER */ 3969#endif /* CONFIG_NET_POLL_CONTROLLER */
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
index d500012fdc7a..ed00ebb6e7f4 100644
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -2622,7 +2622,7 @@ static void prism2_check_magic(local_info_t *local)
2622 2622
2623 2623
2624/* Called only from hardware IRQ */ 2624/* Called only from hardware IRQ */
2625static irqreturn_t prism2_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2625static irqreturn_t prism2_interrupt(int irq, void *dev_id)
2626{ 2626{
2627 struct net_device *dev = (struct net_device *) dev_id; 2627 struct net_device *dev = (struct net_device *) dev_id;
2628 struct hostap_interface *iface; 2628 struct hostap_interface *iface;
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c
index 599e2fe76188..4e4eaa2a99ca 100644
--- a/drivers/net/wireless/ipw2100.c
+++ b/drivers/net/wireless/ipw2100.c
@@ -3255,7 +3255,7 @@ static void ipw2100_irq_tasklet(struct ipw2100_priv *priv)
3255 IPW_DEBUG_ISR("exit\n"); 3255 IPW_DEBUG_ISR("exit\n");
3256} 3256}
3257 3257
3258static irqreturn_t ipw2100_interrupt(int irq, void *data, struct pt_regs *regs) 3258static irqreturn_t ipw2100_interrupt(int irq, void *data)
3259{ 3259{
3260 struct ipw2100_priv *priv = data; 3260 struct ipw2100_priv *priv = data;
3261 u32 inta, inta_mask; 3261 u32 inta, inta_mask;
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index 5685d7ba55bb..1f742814a01c 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -10467,7 +10467,7 @@ static const struct ethtool_ops ipw_ethtool_ops = {
10467 .set_eeprom = ipw_ethtool_set_eeprom, 10467 .set_eeprom = ipw_ethtool_set_eeprom,
10468}; 10468};
10469 10469
10470static irqreturn_t ipw_isr(int irq, void *data, struct pt_regs *regs) 10470static irqreturn_t ipw_isr(int irq, void *data)
10471{ 10471{
10472 struct ipw_priv *priv = data; 10472 struct ipw_priv *priv = data;
10473 u32 inta, inta_mask; 10473 u32 inta, inta_mask;
diff --git a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c
index 36b5e004305e..6714e0dfa8d6 100644
--- a/drivers/net/wireless/netwave_cs.c
+++ b/drivers/net/wireless/netwave_cs.c
@@ -207,7 +207,7 @@ static int netwave_start_xmit( struct sk_buff *skb, struct net_device *dev);
207static int netwave_rx( struct net_device *dev); 207static int netwave_rx( struct net_device *dev);
208 208
209/* Interrupt routines */ 209/* Interrupt routines */
210static irqreturn_t netwave_interrupt(int irq, void *dev_id, struct pt_regs *regs); 210static irqreturn_t netwave_interrupt(int irq, void *dev_id);
211static void netwave_watchdog(struct net_device *); 211static void netwave_watchdog(struct net_device *);
212 212
213/* Statistics */ 213/* Statistics */
@@ -1072,7 +1072,7 @@ static int netwave_start_xmit(struct sk_buff *skb, struct net_device *dev) {
1072} /* netwave_start_xmit */ 1072} /* netwave_start_xmit */
1073 1073
1074/* 1074/*
1075 * Function netwave_interrupt (irq, dev_id, regs) 1075 * Function netwave_interrupt (irq, dev_id)
1076 * 1076 *
1077 * This function is the interrupt handler for the Netwave card. This 1077 * This function is the interrupt handler for the Netwave card. This
1078 * routine will be called whenever: 1078 * routine will be called whenever:
@@ -1081,7 +1081,7 @@ static int netwave_start_xmit(struct sk_buff *skb, struct net_device *dev) {
1081 * ready to transmit another packet. 1081 * ready to transmit another packet.
1082 * 3. A command has completed execution. 1082 * 3. A command has completed execution.
1083 */ 1083 */
1084static irqreturn_t netwave_interrupt(int irq, void* dev_id, struct pt_regs *regs) 1084static irqreturn_t netwave_interrupt(int irq, void* dev_id)
1085{ 1085{
1086 kio_addr_t iobase; 1086 kio_addr_t iobase;
1087 u_char __iomem *ramBase; 1087 u_char __iomem *ramBase;
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
index 9e19a963febc..b779c7dcc1a8 100644
--- a/drivers/net/wireless/orinoco.c
+++ b/drivers/net/wireless/orinoco.c
@@ -1952,9 +1952,9 @@ static void __orinoco_ev_wterr(struct net_device *dev, hermes_t *hw)
1952 dev->name); 1952 dev->name);
1953} 1953}
1954 1954
1955irqreturn_t orinoco_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1955irqreturn_t orinoco_interrupt(int irq, void *dev_id)
1956{ 1956{
1957 struct net_device *dev = (struct net_device *)dev_id; 1957 struct net_device *dev = dev_id;
1958 struct orinoco_private *priv = netdev_priv(dev); 1958 struct orinoco_private *priv = netdev_priv(dev);
1959 hermes_t *hw = &priv->hw; 1959 hermes_t *hw = &priv->hw;
1960 int count = MAX_IRQLOOPS_PER_IRQ; 1960 int count = MAX_IRQLOOPS_PER_IRQ;
diff --git a/drivers/net/wireless/orinoco.h b/drivers/net/wireless/orinoco.h
index fb5700d6c454..4720fb20d66d 100644
--- a/drivers/net/wireless/orinoco.h
+++ b/drivers/net/wireless/orinoco.h
@@ -128,7 +128,7 @@ extern void free_orinocodev(struct net_device *dev);
128extern int __orinoco_up(struct net_device *dev); 128extern int __orinoco_up(struct net_device *dev);
129extern int __orinoco_down(struct net_device *dev); 129extern int __orinoco_down(struct net_device *dev);
130extern int orinoco_reinit_firmware(struct net_device *dev); 130extern int orinoco_reinit_firmware(struct net_device *dev);
131extern irqreturn_t orinoco_interrupt(int irq, void * dev_id, struct pt_regs *regs); 131extern irqreturn_t orinoco_interrupt(int irq, void * dev_id);
132 132
133/********************************************************************/ 133/********************************************************************/
134/* Locking and synchronization functions */ 134/* Locking and synchronization functions */
diff --git a/drivers/net/wireless/prism54/islpci_dev.c b/drivers/net/wireless/prism54/islpci_dev.c
index ab3c5a27efd9..ec1c00f19eb3 100644
--- a/drivers/net/wireless/prism54/islpci_dev.c
+++ b/drivers/net/wireless/prism54/islpci_dev.c
@@ -182,7 +182,7 @@ isl_upload_firmware(islpci_private *priv)
182******************************************************************************/ 182******************************************************************************/
183 183
184irqreturn_t 184irqreturn_t
185islpci_interrupt(int irq, void *config, struct pt_regs *regs) 185islpci_interrupt(int irq, void *config)
186{ 186{
187 u32 reg; 187 u32 reg;
188 islpci_private *priv = config; 188 islpci_private *priv = config;
diff --git a/drivers/net/wireless/prism54/islpci_dev.h b/drivers/net/wireless/prism54/islpci_dev.h
index 5049f37455b1..2f7e525d0cf6 100644
--- a/drivers/net/wireless/prism54/islpci_dev.h
+++ b/drivers/net/wireless/prism54/islpci_dev.h
@@ -198,7 +198,7 @@ islpci_state_t islpci_set_state(islpci_private *priv, islpci_state_t new_state);
198 198
199#define ISLPCI_TX_TIMEOUT (2*HZ) 199#define ISLPCI_TX_TIMEOUT (2*HZ)
200 200
201irqreturn_t islpci_interrupt(int, void *, struct pt_regs *); 201irqreturn_t islpci_interrupt(int, void *);
202 202
203int prism54_post_setup(islpci_private *, int); 203int prism54_post_setup(islpci_private *, int);
204int islpci_reset(islpci_private *, int); 204int islpci_reset(islpci_private *, int);
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index e82548ea609a..0b381d77015c 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -130,7 +130,7 @@ static void ray_update_parm(struct net_device *dev, UCHAR objid, UCHAR *value, i
130static void verify_dl_startup(u_long); 130static void verify_dl_startup(u_long);
131 131
132/* Prototypes for interrpt time functions **********************************/ 132/* Prototypes for interrpt time functions **********************************/
133static irqreturn_t ray_interrupt (int reg, void *dev_id, struct pt_regs *regs); 133static irqreturn_t ray_interrupt (int reg, void *dev_id);
134static void clear_interrupt(ray_dev_t *local); 134static void clear_interrupt(ray_dev_t *local);
135static void rx_deauthenticate(ray_dev_t *local, struct rcs __iomem *prcs, 135static void rx_deauthenticate(ray_dev_t *local, struct rcs __iomem *prcs,
136 unsigned int pkt_addr, int rx_len); 136 unsigned int pkt_addr, int rx_len);
@@ -1940,7 +1940,7 @@ static void set_multicast_list(struct net_device *dev)
1940/*============================================================================= 1940/*=============================================================================
1941 * All routines below here are run at interrupt time. 1941 * All routines below here are run at interrupt time.
1942=============================================================================*/ 1942=============================================================================*/
1943static irqreturn_t ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) 1943static irqreturn_t ray_interrupt(int irq, void *dev_id)
1944{ 1944{
1945 struct net_device *dev = (struct net_device *)dev_id; 1945 struct net_device *dev = (struct net_device *)dev_id;
1946 struct pcmcia_device *link; 1946 struct pcmcia_device *link;
diff --git a/drivers/net/wireless/wavelan.c b/drivers/net/wireless/wavelan.c
index 5b69befdab74..24221e476cd3 100644
--- a/drivers/net/wireless/wavelan.c
+++ b/drivers/net/wireless/wavelan.c
@@ -3768,7 +3768,7 @@ static int wv_check_ioaddr(unsigned long ioaddr, u8 * mac)
3768 * This function is the interrupt handler for the WaveLAN card. This 3768 * This function is the interrupt handler for the WaveLAN card. This
3769 * routine will be called whenever: 3769 * routine will be called whenever:
3770 */ 3770 */
3771static irqreturn_t wavelan_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3771static irqreturn_t wavelan_interrupt(int irq, void *dev_id)
3772{ 3772{
3773 struct net_device *dev; 3773 struct net_device *dev;
3774 unsigned long ioaddr; 3774 unsigned long ioaddr;
diff --git a/drivers/net/wireless/wavelan.p.h b/drivers/net/wireless/wavelan.p.h
index 5cb0bc8bb128..72b646c77d5a 100644
--- a/drivers/net/wireless/wavelan.p.h
+++ b/drivers/net/wireless/wavelan.p.h
@@ -642,8 +642,7 @@ static int
642/* ---------------------- INTERRUPT HANDLING ---------------------- */ 642/* ---------------------- INTERRUPT HANDLING ---------------------- */
643static irqreturn_t 643static irqreturn_t
644 wavelan_interrupt(int, /* interrupt handler */ 644 wavelan_interrupt(int, /* interrupt handler */
645 void *, 645 void *);
646 struct pt_regs *);
647static void 646static void
648 wavelan_watchdog(struct net_device *); /* transmission watchdog */ 647 wavelan_watchdog(struct net_device *); /* transmission watchdog */
649/* ------------------- CONFIGURATION CALLBACKS ------------------- */ 648/* ------------------- CONFIGURATION CALLBACKS ------------------- */
diff --git a/drivers/net/wireless/wavelan_cs.c b/drivers/net/wireless/wavelan_cs.c
index 0065f057bb1c..aafb301041b1 100644
--- a/drivers/net/wireless/wavelan_cs.c
+++ b/drivers/net/wireless/wavelan_cs.c
@@ -4117,24 +4117,14 @@ wv_pcmcia_release(struct pcmcia_device *link)
4117 */ 4117 */
4118static irqreturn_t 4118static irqreturn_t
4119wavelan_interrupt(int irq, 4119wavelan_interrupt(int irq,
4120 void * dev_id, 4120 void * dev_id)
4121 struct pt_regs * regs)
4122{ 4121{
4123 struct net_device * dev; 4122 struct net_device * dev = dev_id;
4124 net_local * lp; 4123 net_local * lp;
4125 kio_addr_t base; 4124 kio_addr_t base;
4126 int status0; 4125 int status0;
4127 u_int tx_status; 4126 u_int tx_status;
4128 4127
4129 if ((dev = dev_id) == NULL)
4130 {
4131#ifdef DEBUG_INTERRUPT_ERROR
4132 printk(KERN_WARNING "wavelan_interrupt(): irq %d for unknown device.\n",
4133 irq);
4134#endif
4135 return IRQ_NONE;
4136 }
4137
4138#ifdef DEBUG_INTERRUPT_TRACE 4128#ifdef DEBUG_INTERRUPT_TRACE
4139 printk(KERN_DEBUG "%s: ->wavelan_interrupt()\n", dev->name); 4129 printk(KERN_DEBUG "%s: ->wavelan_interrupt()\n", dev->name);
4140#endif 4130#endif
diff --git a/drivers/net/wireless/wavelan_cs.p.h b/drivers/net/wireless/wavelan_cs.p.h
index f34a36b0c7b0..4d1c4905c749 100644
--- a/drivers/net/wireless/wavelan_cs.p.h
+++ b/drivers/net/wireless/wavelan_cs.p.h
@@ -738,8 +738,7 @@ static void
738/* ---------------------- INTERRUPT HANDLING ---------------------- */ 738/* ---------------------- INTERRUPT HANDLING ---------------------- */
739static irqreturn_t 739static irqreturn_t
740 wavelan_interrupt(int, /* Interrupt handler */ 740 wavelan_interrupt(int, /* Interrupt handler */
741 void *, 741 void *);
742 struct pt_regs *);
743static void 742static void
744 wavelan_watchdog(struct net_device *); /* Transmission watchdog */ 743 wavelan_watchdog(struct net_device *); /* Transmission watchdog */
745/* ------------------- CONFIGURATION CALLBACKS ------------------- */ 744/* ------------------- CONFIGURATION CALLBACKS ------------------- */
diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c
index e3ae5f60d5be..5b98a7876982 100644
--- a/drivers/net/wireless/wl3501_cs.c
+++ b/drivers/net/wireless/wl3501_cs.c
@@ -1145,7 +1145,6 @@ static inline void wl3501_ack_interrupt(struct wl3501_card *this)
1145 * wl3501_interrupt - Hardware interrupt from card. 1145 * wl3501_interrupt - Hardware interrupt from card.
1146 * @irq - Interrupt number 1146 * @irq - Interrupt number
1147 * @dev_id - net_device 1147 * @dev_id - net_device
1148 * @regs - registers
1149 * 1148 *
1150 * We must acknowledge the interrupt as soon as possible, and block the 1149 * We must acknowledge the interrupt as soon as possible, and block the
1151 * interrupt from the same card immediately to prevent re-entry. 1150 * interrupt from the same card immediately to prevent re-entry.
@@ -1154,27 +1153,20 @@ static inline void wl3501_ack_interrupt(struct wl3501_card *this)
1154 * On the other hand, to prevent SUTRO from malfunctioning, we must 1153 * On the other hand, to prevent SUTRO from malfunctioning, we must
1155 * unlock the SUTRO as soon as possible. 1154 * unlock the SUTRO as soon as possible.
1156 */ 1155 */
1157static irqreturn_t wl3501_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1156static irqreturn_t wl3501_interrupt(int irq, void *dev_id)
1158{ 1157{
1159 struct net_device *dev = (struct net_device *)dev_id; 1158 struct net_device *dev = dev_id;
1160 struct wl3501_card *this; 1159 struct wl3501_card *this;
1161 int handled = 1;
1162 1160
1163 if (!dev) 1161 this = netdev_priv(dev);
1164 goto unknown;
1165 this = dev->priv;
1166 spin_lock(&this->lock); 1162 spin_lock(&this->lock);
1167 wl3501_ack_interrupt(this); 1163 wl3501_ack_interrupt(this);
1168 wl3501_block_interrupt(this); 1164 wl3501_block_interrupt(this);
1169 wl3501_rx_interrupt(dev); 1165 wl3501_rx_interrupt(dev);
1170 wl3501_unblock_interrupt(this); 1166 wl3501_unblock_interrupt(this);
1171 spin_unlock(&this->lock); 1167 spin_unlock(&this->lock);
1172out: 1168
1173 return IRQ_RETVAL(handled); 1169 return IRQ_HANDLED;
1174unknown:
1175 handled = 0;
1176 printk(KERN_ERR "%s: irq %d for unknown device.\n", __FUNCTION__, irq);
1177 goto out;
1178} 1170}
1179 1171
1180static int wl3501_reset_board(struct wl3501_card *this) 1172static int wl3501_reset_board(struct wl3501_card *this)
diff --git a/drivers/net/wireless/zd1201.c b/drivers/net/wireless/zd1201.c
index 80af9a9fcbb3..30057a335a7b 100644
--- a/drivers/net/wireless/zd1201.c
+++ b/drivers/net/wireless/zd1201.c
@@ -112,7 +112,7 @@ exit:
112 return err; 112 return err;
113} 113}
114 114
115static void zd1201_usbfree(struct urb *urb, struct pt_regs *regs) 115static void zd1201_usbfree(struct urb *urb)
116{ 116{
117 struct zd1201 *zd = urb->context; 117 struct zd1201 *zd = urb->context;
118 118
@@ -177,7 +177,7 @@ static int zd1201_docmd(struct zd1201 *zd, int cmd, int parm0,
177} 177}
178 178
179/* Callback after sending out a packet */ 179/* Callback after sending out a packet */
180static void zd1201_usbtx(struct urb *urb, struct pt_regs *regs) 180static void zd1201_usbtx(struct urb *urb)
181{ 181{
182 struct zd1201 *zd = urb->context; 182 struct zd1201 *zd = urb->context;
183 netif_wake_queue(zd->dev); 183 netif_wake_queue(zd->dev);
@@ -185,7 +185,7 @@ static void zd1201_usbtx(struct urb *urb, struct pt_regs *regs)
185} 185}
186 186
187/* Incoming data */ 187/* Incoming data */
188static void zd1201_usbrx(struct urb *urb, struct pt_regs *regs) 188static void zd1201_usbrx(struct urb *urb)
189{ 189{
190 struct zd1201 *zd = urb->context; 190 struct zd1201 *zd = urb->context;
191 int free = 0; 191 int free = 0;
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index 5c265ad0485a..3faaeb2b7c89 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -408,7 +408,7 @@ static inline void handle_retry_failed_int(struct urb *urb)
408} 408}
409 409
410 410
411static void int_urb_complete(struct urb *urb, struct pt_regs *pt_regs) 411static void int_urb_complete(struct urb *urb)
412{ 412{
413 int r; 413 int r;
414 struct usb_int_header *hdr; 414 struct usb_int_header *hdr;
@@ -609,7 +609,7 @@ static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer,
609 } 609 }
610} 610}
611 611
612static void rx_urb_complete(struct urb *urb, struct pt_regs *pt_regs) 612static void rx_urb_complete(struct urb *urb)
613{ 613{
614 struct zd_usb *usb; 614 struct zd_usb *usb;
615 struct zd_usb_rx *rx; 615 struct zd_usb_rx *rx;
@@ -779,7 +779,7 @@ void zd_usb_disable_rx(struct zd_usb *usb)
779 spin_unlock_irqrestore(&rx->lock, flags); 779 spin_unlock_irqrestore(&rx->lock, flags);
780} 780}
781 781
782static void tx_urb_complete(struct urb *urb, struct pt_regs *pt_regs) 782static void tx_urb_complete(struct urb *urb)
783{ 783{
784 int r; 784 int r;
785 785
diff --git a/drivers/net/yellowfin.c b/drivers/net/yellowfin.c
index a4c4953f1365..2412ce4917f2 100644
--- a/drivers/net/yellowfin.c
+++ b/drivers/net/yellowfin.c
@@ -350,7 +350,7 @@ static void yellowfin_timer(unsigned long data);
350static void yellowfin_tx_timeout(struct net_device *dev); 350static void yellowfin_tx_timeout(struct net_device *dev);
351static void yellowfin_init_ring(struct net_device *dev); 351static void yellowfin_init_ring(struct net_device *dev);
352static int yellowfin_start_xmit(struct sk_buff *skb, struct net_device *dev); 352static int yellowfin_start_xmit(struct sk_buff *skb, struct net_device *dev);
353static irqreturn_t yellowfin_interrupt(int irq, void *dev_instance, struct pt_regs *regs); 353static irqreturn_t yellowfin_interrupt(int irq, void *dev_instance);
354static int yellowfin_rx(struct net_device *dev); 354static int yellowfin_rx(struct net_device *dev);
355static void yellowfin_error(struct net_device *dev, int intr_status); 355static void yellowfin_error(struct net_device *dev, int intr_status);
356static int yellowfin_close(struct net_device *dev); 356static int yellowfin_close(struct net_device *dev);
@@ -888,7 +888,7 @@ static int yellowfin_start_xmit(struct sk_buff *skb, struct net_device *dev)
888 888
889/* The interrupt handler does all of the Rx thread work and cleans up 889/* The interrupt handler does all of the Rx thread work and cleans up
890 after the Tx thread. */ 890 after the Tx thread. */
891static irqreturn_t yellowfin_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 891static irqreturn_t yellowfin_interrupt(int irq, void *dev_instance)
892{ 892{
893 struct net_device *dev = dev_instance; 893 struct net_device *dev = dev_instance;
894 struct yellowfin_private *yp; 894 struct yellowfin_private *yp;
@@ -896,13 +896,6 @@ static irqreturn_t yellowfin_interrupt(int irq, void *dev_instance, struct pt_re
896 int boguscnt = max_interrupt_work; 896 int boguscnt = max_interrupt_work;
897 unsigned int handled = 0; 897 unsigned int handled = 0;
898 898
899#ifndef final_version /* Can never occur. */
900 if (dev == NULL) {
901 printk (KERN_ERR "yellowfin_interrupt(): irq %d for unknown device.\n", irq);
902 return IRQ_NONE;
903 }
904#endif
905
906 yp = netdev_priv(dev); 899 yp = netdev_priv(dev);
907 ioaddr = yp->base; 900 ioaddr = yp->base;
908 901
diff --git a/drivers/net/znet.c b/drivers/net/znet.c
index 656d5a02908b..b24b0727108c 100644
--- a/drivers/net/znet.c
+++ b/drivers/net/znet.c
@@ -158,7 +158,7 @@ struct netidblk {
158 158
159static int znet_open(struct net_device *dev); 159static int znet_open(struct net_device *dev);
160static int znet_send_packet(struct sk_buff *skb, struct net_device *dev); 160static int znet_send_packet(struct sk_buff *skb, struct net_device *dev);
161static irqreturn_t znet_interrupt(int irq, void *dev_id, struct pt_regs *regs); 161static irqreturn_t znet_interrupt(int irq, void *dev_id);
162static void znet_rx(struct net_device *dev); 162static void znet_rx(struct net_device *dev);
163static int znet_close(struct net_device *dev); 163static int znet_close(struct net_device *dev);
164static struct net_device_stats *net_get_stats(struct net_device *dev); 164static struct net_device_stats *net_get_stats(struct net_device *dev);
@@ -602,7 +602,7 @@ static int znet_send_packet(struct sk_buff *skb, struct net_device *dev)
602} 602}
603 603
604/* The ZNET interrupt handler. */ 604/* The ZNET interrupt handler. */
605static irqreturn_t znet_interrupt(int irq, void *dev_id, struct pt_regs * regs) 605static irqreturn_t znet_interrupt(int irq, void *dev_id)
606{ 606{
607 struct net_device *dev = dev_id; 607 struct net_device *dev = dev_id;
608 struct znet_private *znet = dev->priv; 608 struct znet_private *znet = dev->priv;
@@ -610,11 +610,6 @@ static irqreturn_t znet_interrupt(int irq, void *dev_id, struct pt_regs * regs)
610 int boguscnt = 20; 610 int boguscnt = 20;
611 int handled = 0; 611 int handled = 0;
612 612
613 if (dev == NULL) {
614 printk(KERN_WARNING "znet_interrupt(): IRQ %d for unknown device.\n", irq);
615 return IRQ_NONE;
616 }
617
618 spin_lock (&znet->lock); 613 spin_lock (&znet->lock);
619 614
620 ioaddr = dev->base_addr; 615 ioaddr = dev->base_addr;
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index 0d96c50ffe9c..03c763c2d0e0 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -368,8 +368,7 @@ static struct hw_interrupt_type dino_interrupt_type = {
368 * ilr_loop counter is a kluge to prevent a "stuck" IRQ line from 368 * ilr_loop counter is a kluge to prevent a "stuck" IRQ line from
369 * wedging the CPU. Could be removed or made optional at some point. 369 * wedging the CPU. Could be removed or made optional at some point.
370 */ 370 */
371static irqreturn_t 371static irqreturn_t dino_isr(int irq, void *intr_dev)
372dino_isr(int irq, void *intr_dev, struct pt_regs *regs)
373{ 372{
374 struct dino_device *dino_dev = intr_dev; 373 struct dino_device *dino_dev = intr_dev;
375 u32 mask; 374 u32 mask;
@@ -390,7 +389,7 @@ ilr_again:
390 int irq = dino_dev->global_irq[local_irq]; 389 int irq = dino_dev->global_irq[local_irq];
391 DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n", 390 DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n",
392 __FUNCTION__, irq, intr_dev, mask); 391 __FUNCTION__, irq, intr_dev, mask);
393 __do_IRQ(irq, regs); 392 __do_IRQ(irq);
394 mask &= ~(1 << local_irq); 393 mask &= ~(1 << local_irq);
395 } while (mask); 394 } while (mask);
396 395
diff --git a/drivers/parisc/eisa.c b/drivers/parisc/eisa.c
index 884965cedec9..e97cecbc4d18 100644
--- a/drivers/parisc/eisa.c
+++ b/drivers/parisc/eisa.c
@@ -199,7 +199,7 @@ static struct hw_interrupt_type eisa_interrupt_type = {
199 .end = no_end_irq, 199 .end = no_end_irq,
200}; 200};
201 201
202static irqreturn_t eisa_irq(int wax_irq, void *intr_dev, struct pt_regs *regs) 202static irqreturn_t eisa_irq(int wax_irq, void *intr_dev)
203{ 203{
204 int irq = gsc_readb(0xfc01f000); /* EISA supports 16 irqs */ 204 int irq = gsc_readb(0xfc01f000); /* EISA supports 16 irqs */
205 unsigned long flags; 205 unsigned long flags;
@@ -234,7 +234,7 @@ static irqreturn_t eisa_irq(int wax_irq, void *intr_dev, struct pt_regs *regs)
234 } 234 }
235 spin_unlock_irqrestore(&eisa_irq_lock, flags); 235 spin_unlock_irqrestore(&eisa_irq_lock, flags);
236 236
237 __do_IRQ(irq, regs); 237 __do_IRQ(irq);
238 238
239 spin_lock_irqsave(&eisa_irq_lock, flags); 239 spin_lock_irqsave(&eisa_irq_lock, flags);
240 /* unmask */ 240 /* unmask */
@@ -249,7 +249,7 @@ static irqreturn_t eisa_irq(int wax_irq, void *intr_dev, struct pt_regs *regs)
249 return IRQ_HANDLED; 249 return IRQ_HANDLED;
250} 250}
251 251
252static irqreturn_t dummy_irq2_handler(int _, void *dev, struct pt_regs *regs) 252static irqreturn_t dummy_irq2_handler(int _, void *dev)
253{ 253{
254 printk(KERN_ALERT "eisa: uhh, irq2?\n"); 254 printk(KERN_ALERT "eisa: uhh, irq2?\n");
255 return IRQ_HANDLED; 255 return IRQ_HANDLED;
diff --git a/drivers/parisc/gsc.c b/drivers/parisc/gsc.c
index b45aa5c675a0..1b3e3fd12d95 100644
--- a/drivers/parisc/gsc.c
+++ b/drivers/parisc/gsc.c
@@ -73,7 +73,7 @@ EXPORT_SYMBOL(gsc_alloc_irq);
73EXPORT_SYMBOL(gsc_claim_irq); 73EXPORT_SYMBOL(gsc_claim_irq);
74 74
75/* Common interrupt demultiplexer used by Asp, Lasi & Wax. */ 75/* Common interrupt demultiplexer used by Asp, Lasi & Wax. */
76irqreturn_t gsc_asic_intr(int gsc_asic_irq, void *dev, struct pt_regs *regs) 76irqreturn_t gsc_asic_intr(int gsc_asic_irq, void *dev)
77{ 77{
78 unsigned long irr; 78 unsigned long irr;
79 struct gsc_asic *gsc_asic = dev; 79 struct gsc_asic *gsc_asic = dev;
@@ -87,7 +87,7 @@ irqreturn_t gsc_asic_intr(int gsc_asic_irq, void *dev, struct pt_regs *regs)
87 do { 87 do {
88 int local_irq = __ffs(irr); 88 int local_irq = __ffs(irr);
89 unsigned int irq = gsc_asic->global_irq[local_irq]; 89 unsigned int irq = gsc_asic->global_irq[local_irq];
90 __do_IRQ(irq, regs); 90 __do_IRQ(irq);
91 irr &= ~(1 << local_irq); 91 irr &= ~(1 << local_irq);
92 } while (irr); 92 } while (irr);
93 93
diff --git a/drivers/parisc/gsc.h b/drivers/parisc/gsc.h
index a3dc456709d7..762a1babad60 100644
--- a/drivers/parisc/gsc.h
+++ b/drivers/parisc/gsc.h
@@ -44,4 +44,4 @@ void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl,
44 void (*choose)(struct parisc_device *child, void *ctrl)); 44 void (*choose)(struct parisc_device *child, void *ctrl));
45void gsc_asic_assign_irq(struct gsc_asic *asic, int local_irq, int *irqp); 45void gsc_asic_assign_irq(struct gsc_asic *asic, int local_irq, int *irqp);
46 46
47irqreturn_t gsc_asic_intr(int irq, void *dev, struct pt_regs *regs); 47irqreturn_t gsc_asic_intr(int irq, void *dev);
diff --git a/drivers/parisc/power.c b/drivers/parisc/power.c
index 2eb3577a88c5..97e9dc066f95 100644
--- a/drivers/parisc/power.c
+++ b/drivers/parisc/power.c
@@ -188,7 +188,7 @@ static void polling_tasklet_func(unsigned long soft_power_reg)
188 * powerfail interruption handler (irq IRQ_FROM_REGION(CPU_IRQ_REGION)+2) 188 * powerfail interruption handler (irq IRQ_FROM_REGION(CPU_IRQ_REGION)+2)
189 */ 189 */
190#if 0 190#if 0
191static void powerfail_interrupt(int code, void *x, struct pt_regs *regs) 191static void powerfail_interrupt(int code, void *x)
192{ 192{
193 printk(KERN_CRIT "POWERFAIL INTERRUPTION !\n"); 193 printk(KERN_CRIT "POWERFAIL INTERRUPTION !\n");
194 poweroff(); 194 poweroff();
diff --git a/drivers/parisc/superio.c b/drivers/parisc/superio.c
index 4ee26a6d9e25..1fd97f7c8b98 100644
--- a/drivers/parisc/superio.c
+++ b/drivers/parisc/superio.c
@@ -94,7 +94,7 @@ static struct superio_device sio_dev;
94#define PFX SUPERIO ": " 94#define PFX SUPERIO ": "
95 95
96static irqreturn_t 96static irqreturn_t
97superio_interrupt(int parent_irq, void *devp, struct pt_regs *regs) 97superio_interrupt(int parent_irq, void *devp)
98{ 98{
99 u8 results; 99 u8 results;
100 u8 local_irq; 100 u8 local_irq;
@@ -138,7 +138,7 @@ superio_interrupt(int parent_irq, void *devp, struct pt_regs *regs)
138 } 138 }
139 139
140 /* Call the appropriate device's interrupt */ 140 /* Call the appropriate device's interrupt */
141 __do_IRQ(local_irq, regs); 141 __do_IRQ(local_irq);
142 142
143 /* set EOI - forces a new interrupt if a lower priority device 143 /* set EOI - forces a new interrupt if a lower priority device
144 * still needs service. 144 * still needs service.
diff --git a/drivers/parport/daisy.c b/drivers/parport/daisy.c
index 83ee095ec6e2..ff9f34453530 100644
--- a/drivers/parport/daisy.c
+++ b/drivers/parport/daisy.c
@@ -216,7 +216,7 @@ void parport_daisy_fini(struct parport *port)
216 216
217struct pardevice *parport_open(int devnum, const char *name, 217struct pardevice *parport_open(int devnum, const char *name,
218 int (*pf) (void *), void (*kf) (void *), 218 int (*pf) (void *), void (*kf) (void *),
219 void (*irqf) (int, void *, struct pt_regs *), 219 void (*irqf) (int, void *),
220 int flags, void *handle) 220 int flags, void *handle)
221{ 221{
222 struct daisydev *p = topology; 222 struct daisydev *p = topology;
diff --git a/drivers/parport/ieee1284.c b/drivers/parport/ieee1284.c
index 7ff09f0f858f..5accaa7bde31 100644
--- a/drivers/parport/ieee1284.c
+++ b/drivers/parport/ieee1284.c
@@ -571,7 +571,7 @@ static int parport_ieee1284_ack_data_avail (struct parport *port)
571#endif /* IEEE1284 support */ 571#endif /* IEEE1284 support */
572 572
573/* Handle an interrupt. */ 573/* Handle an interrupt. */
574void parport_ieee1284_interrupt (int which, void *handle, struct pt_regs *regs) 574void parport_ieee1284_interrupt (int which, void *handle)
575{ 575{
576 struct parport *port = handle; 576 struct parport *port = handle;
577 parport_ieee1284_wakeup (port); 577 parport_ieee1284_wakeup (port);
diff --git a/drivers/parport/parport_amiga.c b/drivers/parport/parport_amiga.c
index 5126e74ac2ec..a0afaee5ebe5 100644
--- a/drivers/parport/parport_amiga.c
+++ b/drivers/parport/parport_amiga.c
@@ -138,9 +138,9 @@ static unsigned char amiga_read_status(struct parport *p)
138} 138}
139 139
140/* as this ports irq handling is already done, we use a generic funktion */ 140/* as this ports irq handling is already done, we use a generic funktion */
141static irqreturn_t amiga_interrupt(int irq, void *dev_id, struct pt_regs *regs) 141static irqreturn_t amiga_interrupt(int irq, void *dev_id)
142{ 142{
143 parport_generic_irq(irq, (struct parport *) dev_id, regs); 143 parport_generic_irq(irq, (struct parport *) dev_id);
144 return IRQ_HANDLED; 144 return IRQ_HANDLED;
145} 145}
146 146
diff --git a/drivers/parport/parport_atari.c b/drivers/parport/parport_atari.c
index 78c3f34108bc..6ea9929b8c7f 100644
--- a/drivers/parport/parport_atari.c
+++ b/drivers/parport/parport_atari.c
@@ -104,9 +104,9 @@ parport_atari_restore_state(struct parport *p, struct parport_state *s)
104} 104}
105 105
106static irqreturn_t 106static irqreturn_t
107parport_atari_interrupt(int irq, void *dev_id, struct pt_regs *regs) 107parport_atari_interrupt(int irq, void *dev_id)
108{ 108{
109 parport_generic_irq(irq, (struct parport *) dev_id, regs); 109 parport_generic_irq(irq, (struct parport *) dev_id);
110 return IRQ_HANDLED; 110 return IRQ_HANDLED;
111} 111}
112 112
diff --git a/drivers/parport/parport_ax88796.c b/drivers/parport/parport_ax88796.c
index 1850632590fd..74f4e9742c6c 100644
--- a/drivers/parport/parport_ax88796.c
+++ b/drivers/parport/parport_ax88796.c
@@ -233,9 +233,9 @@ parport_ax88796_restore_state(struct parport *p, struct parport_state *s)
233} 233}
234 234
235static irqreturn_t 235static irqreturn_t
236parport_ax88796_interrupt(int irq, void *dev_id, struct pt_regs *regs) 236parport_ax88796_interrupt(int irq, void *dev_id)
237{ 237{
238 parport_generic_irq(irq, dev_id, regs); 238 parport_generic_irq(irq, dev_id);
239 return IRQ_HANDLED; 239 return IRQ_HANDLED;
240} 240}
241 241
diff --git a/drivers/parport/parport_gsc.c b/drivers/parport/parport_gsc.c
index 7352104f7b30..a7c5ead9a3d3 100644
--- a/drivers/parport/parport_gsc.c
+++ b/drivers/parport/parport_gsc.c
@@ -81,9 +81,9 @@ static int clear_epp_timeout(struct parport *pb)
81 * of these are in parport_gsc.h. 81 * of these are in parport_gsc.h.
82 */ 82 */
83 83
84static irqreturn_t parport_gsc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 84static irqreturn_t parport_gsc_interrupt(int irq, void *dev_id)
85{ 85{
86 parport_generic_irq(irq, (struct parport *) dev_id, regs); 86 parport_generic_irq(irq, (struct parport *) dev_id);
87 return IRQ_HANDLED; 87 return IRQ_HANDLED;
88} 88}
89 89
diff --git a/drivers/parport/parport_ip32.c b/drivers/parport/parport_ip32.c
index 46e06e596d73..e3e19277030a 100644
--- a/drivers/parport/parport_ip32.c
+++ b/drivers/parport/parport_ip32.c
@@ -548,10 +548,8 @@ static void parport_ip32_dma_setup_context(unsigned int limit)
548 * parport_ip32_dma_interrupt - DMA interrupt handler 548 * parport_ip32_dma_interrupt - DMA interrupt handler
549 * @irq: interrupt number 549 * @irq: interrupt number
550 * @dev_id: unused 550 * @dev_id: unused
551 * @regs: pointer to &struct pt_regs
552 */ 551 */
553static irqreturn_t parport_ip32_dma_interrupt(int irq, void *dev_id, 552static irqreturn_t parport_ip32_dma_interrupt(int irq, void *dev_id)
554 struct pt_regs *regs)
555{ 553{
556 if (parport_ip32_dma.left) 554 if (parport_ip32_dma.left)
557 pr_trace(NULL, "(%d): ctx=%d", irq, parport_ip32_dma.ctx); 555 pr_trace(NULL, "(%d): ctx=%d", irq, parport_ip32_dma.ctx);
@@ -560,8 +558,7 @@ static irqreturn_t parport_ip32_dma_interrupt(int irq, void *dev_id,
560} 558}
561 559
562#if DEBUG_PARPORT_IP32 560#if DEBUG_PARPORT_IP32
563static irqreturn_t parport_ip32_merr_interrupt(int irq, void *dev_id, 561static irqreturn_t parport_ip32_merr_interrupt(int irq, void *dev_id)
564 struct pt_regs *regs)
565{ 562{
566 pr_trace1(NULL, "(%d)", irq); 563 pr_trace1(NULL, "(%d)", irq);
567 return IRQ_HANDLED; 564 return IRQ_HANDLED;
@@ -772,13 +769,11 @@ static inline void parport_ip32_wakeup(struct parport *p)
772 * parport_ip32_interrupt - interrupt handler 769 * parport_ip32_interrupt - interrupt handler
773 * @irq: interrupt number 770 * @irq: interrupt number
774 * @dev_id: pointer to &struct parport 771 * @dev_id: pointer to &struct parport
775 * @regs: pointer to &struct pt_regs
776 * 772 *
777 * Caught interrupts are forwarded to the upper parport layer if IRQ_mode is 773 * Caught interrupts are forwarded to the upper parport layer if IRQ_mode is
778 * %PARPORT_IP32_IRQ_FWD. 774 * %PARPORT_IP32_IRQ_FWD.
779 */ 775 */
780static irqreturn_t parport_ip32_interrupt(int irq, void *dev_id, 776static irqreturn_t parport_ip32_interrupt(int irq, void *dev_id)
781 struct pt_regs *regs)
782{ 777{
783 struct parport * const p = dev_id; 778 struct parport * const p = dev_id;
784 struct parport_ip32_private * const priv = p->physport->private_data; 779 struct parport_ip32_private * const priv = p->physport->private_data;
diff --git a/drivers/parport/parport_mfc3.c b/drivers/parport/parport_mfc3.c
index b2b8092a2b39..e5b0a544de40 100644
--- a/drivers/parport/parport_mfc3.c
+++ b/drivers/parport/parport_mfc3.c
@@ -211,7 +211,7 @@ static void mfc3_change_mode( struct parport *p, int m)
211 211
212static int use_cnt = 0; 212static int use_cnt = 0;
213 213
214static irqreturn_t mfc3_interrupt(int irq, void *dev_id, struct pt_regs *regs) 214static irqreturn_t mfc3_interrupt(int irq, void *dev_id)
215{ 215{
216 int i; 216 int i;
217 217
@@ -219,7 +219,7 @@ static irqreturn_t mfc3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
219 if (this_port[i] != NULL) 219 if (this_port[i] != NULL)
220 if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */ 220 if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */
221 dummy = pia(this_port[i])->pprb; /* clear irq bit */ 221 dummy = pia(this_port[i])->pprb; /* clear irq bit */
222 parport_generic_irq(irq, this_port[i], regs); 222 parport_generic_irq(irq, this_port[i]);
223 } 223 }
224 return IRQ_HANDLED; 224 return IRQ_HANDLED;
225} 225}
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index fe800dc0be9f..39c96641bc72 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -270,9 +270,9 @@ static int clear_epp_timeout(struct parport *pb)
270 * of these are in parport_pc.h. 270 * of these are in parport_pc.h.
271 */ 271 */
272 272
273static irqreturn_t parport_pc_interrupt(int irq, void *dev_id, struct pt_regs *regs) 273static irqreturn_t parport_pc_interrupt(int irq, void *dev_id)
274{ 274{
275 parport_generic_irq(irq, (struct parport *) dev_id, regs); 275 parport_generic_irq(irq, (struct parport *) dev_id);
276 /* FIXME! Was it really ours? */ 276 /* FIXME! Was it really ours? */
277 return IRQ_HANDLED; 277 return IRQ_HANDLED;
278} 278}
diff --git a/drivers/parport/parport_sunbpp.c b/drivers/parport/parport_sunbpp.c
index fac333b279bf..9793533276ec 100644
--- a/drivers/parport/parport_sunbpp.c
+++ b/drivers/parport/parport_sunbpp.c
@@ -46,9 +46,9 @@
46#define dprintk(x) 46#define dprintk(x)
47#endif 47#endif
48 48
49static irqreturn_t parport_sunbpp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 49static irqreturn_t parport_sunbpp_interrupt(int irq, void *dev_id)
50{ 50{
51 parport_generic_irq(irq, (struct parport *) dev_id, regs); 51 parport_generic_irq(irq, (struct parport *) dev_id);
52 return IRQ_HANDLED; 52 return IRQ_HANDLED;
53} 53}
54 54
diff --git a/drivers/parport/share.c b/drivers/parport/share.c
index 94dc506b83d1..fd9129e424f9 100644
--- a/drivers/parport/share.c
+++ b/drivers/parport/share.c
@@ -519,7 +519,7 @@ void parport_remove_port(struct parport *port)
519struct pardevice * 519struct pardevice *
520parport_register_device(struct parport *port, const char *name, 520parport_register_device(struct parport *port, const char *name,
521 int (*pf)(void *), void (*kf)(void *), 521 int (*pf)(void *), void (*kf)(void *),
522 void (*irq_func)(int, void *, struct pt_regs *), 522 void (*irq_func)(int, void *),
523 int flags, void *handle) 523 int flags, void *handle)
524{ 524{
525 struct pardevice *tmp; 525 struct pardevice *tmp;
diff --git a/drivers/pci/hotplug/cpci_hotplug_core.c b/drivers/pci/hotplug/cpci_hotplug_core.c
index d5df5871cfa2..d06ab4045134 100644
--- a/drivers/pci/hotplug/cpci_hotplug_core.c
+++ b/drivers/pci/hotplug/cpci_hotplug_core.c
@@ -342,7 +342,7 @@ cpci_hp_unregister_bus(struct pci_bus *bus)
342 342
343/* This is the interrupt mode interrupt handler */ 343/* This is the interrupt mode interrupt handler */
344static irqreturn_t 344static irqreturn_t
345cpci_hp_intr(int irq, void *data, struct pt_regs *regs) 345cpci_hp_intr(int irq, void *data)
346{ 346{
347 dbg("entered cpci_hp_intr"); 347 dbg("entered cpci_hp_intr");
348 348
diff --git a/drivers/pci/hotplug/cpqphp.h b/drivers/pci/hotplug/cpqphp.h
index c74e9e37e76b..ea040c32f47d 100644
--- a/drivers/pci/hotplug/cpqphp.h
+++ b/drivers/pci/hotplug/cpqphp.h
@@ -409,7 +409,7 @@ extern void cpqhp_remove_debugfs_files (struct controller *ctrl);
409 409
410/* controller functions */ 410/* controller functions */
411extern void cpqhp_pushbutton_thread (unsigned long event_pointer); 411extern void cpqhp_pushbutton_thread (unsigned long event_pointer);
412extern irqreturn_t cpqhp_ctrl_intr (int IRQ, void *data, struct pt_regs *regs); 412extern irqreturn_t cpqhp_ctrl_intr (int IRQ, void *data);
413extern int cpqhp_find_available_resources (struct controller *ctrl, void __iomem *rom_start); 413extern int cpqhp_find_available_resources (struct controller *ctrl, void __iomem *rom_start);
414extern int cpqhp_event_start_thread (void); 414extern int cpqhp_event_start_thread (void);
415extern void cpqhp_event_stop_thread (void); 415extern void cpqhp_event_stop_thread (void);
diff --git a/drivers/pci/hotplug/cpqphp_ctrl.c b/drivers/pci/hotplug/cpqphp_ctrl.c
index ae2dd36efef2..3ec2ad7db49a 100644
--- a/drivers/pci/hotplug/cpqphp_ctrl.c
+++ b/drivers/pci/hotplug/cpqphp_ctrl.c
@@ -889,7 +889,7 @@ int cpqhp_resource_sort_and_combine(struct pci_resource **head)
889} 889}
890 890
891 891
892irqreturn_t cpqhp_ctrl_intr(int IRQ, void *data, struct pt_regs *regs) 892irqreturn_t cpqhp_ctrl_intr(int IRQ, void *data)
893{ 893{
894 struct controller *ctrl = data; 894 struct controller *ctrl = data;
895 u8 schedule_flag = 0; 895 u8 schedule_flag = 0;
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
index 6ab3b6cd2b54..703a64a39fe8 100644
--- a/drivers/pci/hotplug/pciehp_hpc.c
+++ b/drivers/pci/hotplug/pciehp_hpc.c
@@ -222,7 +222,7 @@ static struct php_ctlr_state_s *php_ctlr_list_head; /* HPC state linked list */
222static int ctlr_seq_num = 0; /* Controller sequence # */ 222static int ctlr_seq_num = 0; /* Controller sequence # */
223static spinlock_t list_lock; 223static spinlock_t list_lock;
224 224
225static irqreturn_t pcie_isr(int IRQ, void *dev_id, struct pt_regs *regs); 225static irqreturn_t pcie_isr(int IRQ, void *dev_id);
226 226
227static void start_int_poll_timer(struct php_ctlr_state_s *php_ctlr, int seconds); 227static void start_int_poll_timer(struct php_ctlr_state_s *php_ctlr, int seconds);
228 228
@@ -239,7 +239,7 @@ static void int_poll_timeout(unsigned long lphp_ctlr)
239 } 239 }
240 240
241 /* Poll for interrupt events. regs == NULL => polling */ 241 /* Poll for interrupt events. regs == NULL => polling */
242 pcie_isr( 0, (void *)php_ctlr, NULL ); 242 pcie_isr( 0, (void *)php_ctlr );
243 243
244 init_timer(&php_ctlr->int_poll_timer); 244 init_timer(&php_ctlr->int_poll_timer);
245 245
@@ -863,7 +863,7 @@ static int hpc_power_off_slot(struct slot * slot)
863 return retval; 863 return retval;
864} 864}
865 865
866static irqreturn_t pcie_isr(int IRQ, void *dev_id, struct pt_regs *regs) 866static irqreturn_t pcie_isr(int IRQ, void *dev_id)
867{ 867{
868 struct controller *ctrl = NULL; 868 struct controller *ctrl = NULL;
869 struct php_ctlr_state_s *php_ctlr; 869 struct php_ctlr_state_s *php_ctlr;
diff --git a/drivers/pci/hotplug/shpchp_hpc.c b/drivers/pci/hotplug/shpchp_hpc.c
index 0f9798df4704..4d8aee119134 100644
--- a/drivers/pci/hotplug/shpchp_hpc.c
+++ b/drivers/pci/hotplug/shpchp_hpc.c
@@ -218,7 +218,7 @@ static spinlock_t list_lock;
218 218
219static atomic_t shpchp_num_controllers = ATOMIC_INIT(0); 219static atomic_t shpchp_num_controllers = ATOMIC_INIT(0);
220 220
221static irqreturn_t shpc_isr(int irq, void *dev_id, struct pt_regs *regs); 221static irqreturn_t shpc_isr(int irq, void *dev_id);
222static void start_int_poll_timer(struct php_ctlr_state_s *php_ctlr, int sec); 222static void start_int_poll_timer(struct php_ctlr_state_s *php_ctlr, int sec);
223static int hpc_check_cmd_status(struct controller *ctrl); 223static int hpc_check_cmd_status(struct controller *ctrl);
224 224
@@ -276,7 +276,7 @@ static void int_poll_timeout(unsigned long lphp_ctlr)
276 DBG_ENTER_ROUTINE 276 DBG_ENTER_ROUTINE
277 277
278 /* Poll for interrupt events. regs == NULL => polling */ 278 /* Poll for interrupt events. regs == NULL => polling */
279 shpc_isr(0, php_ctlr->callback_instance_id, NULL); 279 shpc_isr(0, php_ctlr->callback_instance_id);
280 280
281 init_timer(&php_ctlr->int_poll_timer); 281 init_timer(&php_ctlr->int_poll_timer);
282 if (!shpchp_poll_time) 282 if (!shpchp_poll_time)
@@ -870,7 +870,7 @@ static int hpc_set_bus_speed_mode(struct slot * slot, enum pci_bus_speed value)
870 return retval; 870 return retval;
871} 871}
872 872
873static irqreturn_t shpc_isr(int irq, void *dev_id, struct pt_regs *regs) 873static irqreturn_t shpc_isr(int irq, void *dev_id)
874{ 874{
875 struct controller *ctrl = (struct controller *)dev_id; 875 struct controller *ctrl = (struct controller *)dev_id;
876 struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; 876 struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle;
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index 0d4ac027d53e..04c43ef529ac 100644
--- a/drivers/pci/pcie/aer/aerdrv.c
+++ b/drivers/pci/pcie/aer/aerdrv.c
@@ -85,11 +85,10 @@ static struct pcie_port_service_driver aerdrv = {
85 * aer_irq - Root Port's ISR 85 * aer_irq - Root Port's ISR
86 * @irq: IRQ assigned to Root Port 86 * @irq: IRQ assigned to Root Port
87 * @context: pointer to Root Port data structure 87 * @context: pointer to Root Port data structure
88 * @r: pointer struct pt_regs
89 * 88 *
90 * Invoked when Root Port detects AER messages. 89 * Invoked when Root Port detects AER messages.
91 **/ 90 **/
92static irqreturn_t aer_irq(int irq, void *context, struct pt_regs * r) 91static irqreturn_t aer_irq(int irq, void *context)
93{ 92{
94 unsigned int status, id; 93 unsigned int status, id;
95 struct pcie_device *pdev = (struct pcie_device *)context; 94 struct pcie_device *pdev = (struct pcie_device *)context;
diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index 40569f40e90e..7f5df9a9f393 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -64,9 +64,9 @@ static int at91_cf_ss_init(struct pcmcia_socket *s)
64 return 0; 64 return 0;
65} 65}
66 66
67static irqreturn_t at91_cf_irq(int irq, void *_cf, struct pt_regs *r) 67static irqreturn_t at91_cf_irq(int irq, void *_cf)
68{ 68{
69 struct at91_cf_socket *cf = (struct at91_cf_socket *) _cf; 69 struct at91_cf_socket *cf = _cf;
70 70
71 if (irq == cf->board->det_pin) { 71 if (irq == cf->board->det_pin) {
72 unsigned present = at91_cf_present(cf); 72 unsigned present = at91_cf_present(cf);
diff --git a/drivers/pcmcia/hd64465_ss.c b/drivers/pcmcia/hd64465_ss.c
index ad02629c8be2..caca0dc9d30f 100644
--- a/drivers/pcmcia/hd64465_ss.c
+++ b/drivers/pcmcia/hd64465_ss.c
@@ -650,7 +650,7 @@ static int hs_set_mem_map(struct pcmcia_socket *s, struct pccard_mem_map *mem)
650 */ 650 */
651static int hs_irq_demux(int irq, void *dev) 651static int hs_irq_demux(int irq, void *dev)
652{ 652{
653 hs_socket_t *sp = (hs_socket_t *)dev; 653 hs_socket_t *sp = dev;
654 u_int cscr; 654 u_int cscr;
655 655
656 DPRINTK("hs_irq_demux(irq=%d)\n", irq); 656 DPRINTK("hs_irq_demux(irq=%d)\n", irq);
@@ -671,13 +671,12 @@ static int hs_irq_demux(int irq, void *dev)
671 * Interrupt handling routine. 671 * Interrupt handling routine.
672 */ 672 */
673 673
674static irqreturn_t hs_interrupt(int irq, void *dev, struct pt_regs *regs) 674static irqreturn_t hs_interrupt(int irq, void *dev)
675{ 675{
676 hs_socket_t *sp = (hs_socket_t *)dev; 676 hs_socket_t *sp = dev;
677 u_int events = 0; 677 u_int events = 0;
678 u_int cscr; 678 u_int cscr;
679 679
680
681 cscr = hs_in(sp, CSCR); 680 cscr = hs_in(sp, CSCR);
682 681
683 DPRINTK("hs_interrupt, cscr=%04x\n", cscr); 682 DPRINTK("hs_interrupt, cscr=%04x\n", cscr);
diff --git a/drivers/pcmcia/i82092.c b/drivers/pcmcia/i82092.c
index 2163aa75a257..82715f448957 100644
--- a/drivers/pcmcia/i82092.c
+++ b/drivers/pcmcia/i82092.c
@@ -315,7 +315,7 @@ static int to_cycles(int ns)
315 315
316/* Interrupt handler functionality */ 316/* Interrupt handler functionality */
317 317
318static irqreturn_t i82092aa_interrupt(int irq, void *dev, struct pt_regs *regs) 318static irqreturn_t i82092aa_interrupt(int irq, void *dev)
319{ 319{
320 int i; 320 int i;
321 int loopcount = 0; 321 int loopcount = 0;
diff --git a/drivers/pcmcia/i82092aa.h b/drivers/pcmcia/i82092aa.h
index 9c14599d0673..b0d453303c5d 100644
--- a/drivers/pcmcia/i82092aa.h
+++ b/drivers/pcmcia/i82092aa.h
@@ -23,7 +23,7 @@
23static int i82092aa_pci_probe(struct pci_dev *dev, const struct pci_device_id *id); 23static int i82092aa_pci_probe(struct pci_dev *dev, const struct pci_device_id *id);
24static void i82092aa_pci_remove(struct pci_dev *dev); 24static void i82092aa_pci_remove(struct pci_dev *dev);
25static int card_present(int socketno); 25static int card_present(int socketno);
26static irqreturn_t i82092aa_interrupt(int irq, void *dev, struct pt_regs *regs); 26static irqreturn_t i82092aa_interrupt(int irq, void *dev);
27 27
28 28
29 29
diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
index 1cc2682394b1..ea74f98a7350 100644
--- a/drivers/pcmcia/i82365.c
+++ b/drivers/pcmcia/i82365.c
@@ -80,7 +80,7 @@ module_param(pc_debug, int, 0644);
80#define debug(lvl, fmt, arg...) do { } while (0) 80#define debug(lvl, fmt, arg...) do { } while (0)
81#endif 81#endif
82 82
83static irqreturn_t i365_count_irq(int, void *, struct pt_regs *); 83static irqreturn_t i365_count_irq(int, void *);
84static inline int _check_irq(int irq, int flags) 84static inline int _check_irq(int irq, int flags)
85{ 85{
86 if (request_irq(irq, i365_count_irq, flags, "x", i365_count_irq) != 0) 86 if (request_irq(irq, i365_count_irq, flags, "x", i365_count_irq) != 0)
@@ -498,7 +498,7 @@ static u_int __init set_bridge_opts(u_short s, u_short ns)
498static volatile u_int irq_hits; 498static volatile u_int irq_hits;
499static u_short irq_sock; 499static u_short irq_sock;
500 500
501static irqreturn_t i365_count_irq(int irq, void *dev, struct pt_regs *regs) 501static irqreturn_t i365_count_irq(int irq, void *dev)
502{ 502{
503 i365_get(irq_sock, I365_CSC); 503 i365_get(irq_sock, I365_CSC);
504 irq_hits++; 504 irq_hits++;
@@ -848,8 +848,7 @@ static void __init isa_probe(void)
848 848
849/*====================================================================*/ 849/*====================================================================*/
850 850
851static irqreturn_t pcic_interrupt(int irq, void *dev, 851static irqreturn_t pcic_interrupt(int irq, void *dev)
852 struct pt_regs *regs)
853{ 852{
854 int i, j, csc; 853 int i, j, csc;
855 u_int events, active; 854 u_int events, active;
@@ -898,7 +897,7 @@ static irqreturn_t pcic_interrupt(int irq, void *dev,
898 897
899static void pcic_interrupt_wrapper(u_long data) 898static void pcic_interrupt_wrapper(u_long data)
900{ 899{
901 pcic_interrupt(0, NULL, NULL); 900 pcic_interrupt(0, NULL);
902 poll_timer.expires = jiffies + poll_interval; 901 poll_timer.expires = jiffies + poll_interval;
903 add_timer(&poll_timer); 902 add_timer(&poll_timer);
904} 903}
diff --git a/drivers/pcmcia/m32r_cfc.c b/drivers/pcmcia/m32r_cfc.c
index 9e768eaef17a..36fdaa58458c 100644
--- a/drivers/pcmcia/m32r_cfc.c
+++ b/drivers/pcmcia/m32r_cfc.c
@@ -254,7 +254,7 @@ static pcc_t pcc[] = {
254#endif /* CONFIG_PLAT_USRV */ 254#endif /* CONFIG_PLAT_USRV */
255}; 255};
256 256
257static irqreturn_t pcc_interrupt(int, void *, struct pt_regs *); 257static irqreturn_t pcc_interrupt(int, void *);
258 258
259/*====================================================================*/ 259/*====================================================================*/
260 260
@@ -372,14 +372,13 @@ static void add_pcc_socket(ulong base, int irq, ulong mapaddr, kio_addr_t ioaddr
372 372
373/*====================================================================*/ 373/*====================================================================*/
374 374
375static irqreturn_t pcc_interrupt(int irq, void *dev, struct pt_regs *regs) 375static irqreturn_t pcc_interrupt(int irq, void *dev)
376{ 376{
377 int i; 377 int i;
378 u_int events = 0; 378 u_int events = 0;
379 int handled = 0; 379 int handled = 0;
380 380
381 debug(3, "m32r_cfc: pcc_interrupt: irq=%d, dev=%p, regs=%p\n", 381 debug(3, "m32r_cfc: pcc_interrupt: irq=%d, dev=%p\n", irq, dev);
382 irq, dev, regs);
383 for (i = 0; i < pcc_sockets; i++) { 382 for (i = 0; i < pcc_sockets; i++) {
384 if (socket[i].cs_irq1 != irq && socket[i].cs_irq2 != irq) 383 if (socket[i].cs_irq1 != irq && socket[i].cs_irq2 != irq)
385 continue; 384 continue;
diff --git a/drivers/pcmcia/m32r_pcc.c b/drivers/pcmcia/m32r_pcc.c
index 61d50b5620dd..bbf025874d0c 100644
--- a/drivers/pcmcia/m32r_pcc.c
+++ b/drivers/pcmcia/m32r_pcc.c
@@ -267,7 +267,7 @@ static pcc_t pcc[] = {
267 { "xnux2", 0 }, { "xnux2", 0 }, 267 { "xnux2", 0 }, { "xnux2", 0 },
268}; 268};
269 269
270static irqreturn_t pcc_interrupt(int, void *, struct pt_regs *); 270static irqreturn_t pcc_interrupt(int, void *);
271 271
272/*====================================================================*/ 272/*====================================================================*/
273 273
@@ -352,7 +352,7 @@ static void add_pcc_socket(ulong base, int irq, ulong mapaddr, kio_addr_t ioaddr
352 352
353/*====================================================================*/ 353/*====================================================================*/
354 354
355static irqreturn_t pcc_interrupt(int irq, void *dev, struct pt_regs *regs) 355static irqreturn_t pcc_interrupt(int irq, void *dev)
356{ 356{
357 int i, j, irc; 357 int i, j, irc;
358 u_int events, active; 358 u_int events, active;
@@ -395,7 +395,7 @@ static irqreturn_t pcc_interrupt(int irq, void *dev, struct pt_regs *regs)
395 395
396static void pcc_interrupt_wrapper(u_long data) 396static void pcc_interrupt_wrapper(u_long data)
397{ 397{
398 pcc_interrupt(0, NULL, NULL); 398 pcc_interrupt(0, NULL);
399 init_timer(&poll_timer); 399 init_timer(&poll_timer);
400 poll_timer.expires = jiffies + poll_interval; 400 poll_timer.expires = jiffies + poll_interval;
401 add_timer(&poll_timer); 401 add_timer(&poll_timer);
diff --git a/drivers/pcmcia/m8xx_pcmcia.c b/drivers/pcmcia/m8xx_pcmcia.c
index d0f68ab8f041..e070a2896769 100644
--- a/drivers/pcmcia/m8xx_pcmcia.c
+++ b/drivers/pcmcia/m8xx_pcmcia.c
@@ -266,7 +266,7 @@ static const u32 m8xx_size_to_gray[M8XX_SIZES_NO] =
266 266
267/* ------------------------------------------------------------------------- */ 267/* ------------------------------------------------------------------------- */
268 268
269static irqreturn_t m8xx_interrupt(int irq, void *dev, struct pt_regs *regs); 269static irqreturn_t m8xx_interrupt(int irq, void *dev);
270 270
271#define PCMCIA_BMT_LIMIT (15*4) /* Bus Monitor Timeout value */ 271#define PCMCIA_BMT_LIMIT (15*4) /* Bus Monitor Timeout value */
272 272
@@ -646,7 +646,7 @@ static struct platform_device m8xx_device = {
646static u32 pending_events[PCMCIA_SOCKETS_NO]; 646static u32 pending_events[PCMCIA_SOCKETS_NO];
647static DEFINE_SPINLOCK(pending_event_lock); 647static DEFINE_SPINLOCK(pending_event_lock);
648 648
649static irqreturn_t m8xx_interrupt(int irq, void *dev, struct pt_regs *regs) 649static irqreturn_t m8xx_interrupt(int irq, void *dev)
650{ 650{
651 struct socket_info *s; 651 struct socket_info *s;
652 struct event_table *e; 652 struct event_table *e;
diff --git a/drivers/pcmcia/omap_cf.c b/drivers/pcmcia/omap_cf.c
index 01be47e72730..c8e838c69766 100644
--- a/drivers/pcmcia/omap_cf.c
+++ b/drivers/pcmcia/omap_cf.c
@@ -102,7 +102,7 @@ static void omap_cf_timer(unsigned long _cf)
102 * claim the card's IRQ. It may also detect some card insertions, but 102 * claim the card's IRQ. It may also detect some card insertions, but
103 * not removals; it can't always eliminate timer irqs. 103 * not removals; it can't always eliminate timer irqs.
104 */ 104 */
105static irqreturn_t omap_cf_irq(int irq, void *_cf, struct pt_regs *r) 105static irqreturn_t omap_cf_irq(int irq, void *_cf)
106{ 106{
107 omap_cf_timer((unsigned long)_cf); 107 omap_cf_timer((unsigned long)_cf);
108 return IRQ_HANDLED; 108 return IRQ_HANDLED;
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index c8323399e9e4..74cebd424032 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -784,7 +784,7 @@ EXPORT_SYMBOL(pcmcia_request_io);
784 */ 784 */
785 785
786#ifdef CONFIG_PCMCIA_PROBE 786#ifdef CONFIG_PCMCIA_PROBE
787static irqreturn_t test_action(int cpl, void *dev_id, struct pt_regs *regs) 787static irqreturn_t test_action(int cpl, void *dev_id)
788{ 788{
789 return IRQ_NONE; 789 return IRQ_NONE;
790} 790}
diff --git a/drivers/pcmcia/pd6729.c b/drivers/pcmcia/pd6729.c
index 22c5e7427ddd..c83a0a6b158f 100644
--- a/drivers/pcmcia/pd6729.c
+++ b/drivers/pcmcia/pd6729.c
@@ -182,7 +182,7 @@ static void indirect_write16(struct pd6729_socket *socket, unsigned short reg,
182 182
183/* Interrupt handler functionality */ 183/* Interrupt handler functionality */
184 184
185static irqreturn_t pd6729_interrupt(int irq, void *dev, struct pt_regs *regs) 185static irqreturn_t pd6729_interrupt(int irq, void *dev)
186{ 186{
187 struct pd6729_socket *socket = (struct pd6729_socket *)dev; 187 struct pd6729_socket *socket = (struct pd6729_socket *)dev;
188 int i; 188 int i;
@@ -249,7 +249,7 @@ static void pd6729_interrupt_wrapper(unsigned long data)
249{ 249{
250 struct pd6729_socket *socket = (struct pd6729_socket *) data; 250 struct pd6729_socket *socket = (struct pd6729_socket *) data;
251 251
252 pd6729_interrupt(0, (void *)socket, NULL); 252 pd6729_interrupt(0, (void *)socket);
253 mod_timer(&socket->poll_timer, jiffies + HZ); 253 mod_timer(&socket->poll_timer, jiffies + HZ);
254} 254}
255 255
@@ -575,7 +575,7 @@ static struct pccard_operations pd6729_operations = {
575 .set_mem_map = pd6729_set_mem_map, 575 .set_mem_map = pd6729_set_mem_map,
576}; 576};
577 577
578static irqreturn_t pd6729_test(int irq, void *dev, struct pt_regs *regs) 578static irqreturn_t pd6729_test(int irq, void *dev)
579{ 579{
580 dprintk("-> hit on irq %d\n", irq); 580 dprintk("-> hit on irq %d\n", irq);
581 return IRQ_HANDLED; 581 return IRQ_HANDLED;
diff --git a/drivers/pcmcia/soc_common.c b/drivers/pcmcia/soc_common.c
index ecaa132fa592..3627e52e0c27 100644
--- a/drivers/pcmcia/soc_common.c
+++ b/drivers/pcmcia/soc_common.c
@@ -256,7 +256,7 @@ static void soc_common_pcmcia_poll_event(unsigned long dummy)
256 * handling code performs scheduling operations which cannot be 256 * handling code performs scheduling operations which cannot be
257 * executed from within an interrupt context. 257 * executed from within an interrupt context.
258 */ 258 */
259static irqreturn_t soc_common_pcmcia_interrupt(int irq, void *dev, struct pt_regs *regs) 259static irqreturn_t soc_common_pcmcia_interrupt(int irq, void *dev)
260{ 260{
261 struct soc_pcmcia_socket *skt = dev; 261 struct soc_pcmcia_socket *skt = dev;
262 262
diff --git a/drivers/pcmcia/tcic.c b/drivers/pcmcia/tcic.c
index 65a60671659f..2d2f415f80a8 100644
--- a/drivers/pcmcia/tcic.c
+++ b/drivers/pcmcia/tcic.c
@@ -116,7 +116,7 @@ module_param(cycle_time, int, 0444);
116 116
117/*====================================================================*/ 117/*====================================================================*/
118 118
119static irqreturn_t tcic_interrupt(int irq, void *dev, struct pt_regs *regs); 119static irqreturn_t tcic_interrupt(int irq, void *dev);
120static void tcic_timer(u_long data); 120static void tcic_timer(u_long data);
121static struct pccard_operations tcic_operations; 121static struct pccard_operations tcic_operations;
122 122
@@ -218,7 +218,7 @@ static int to_cycles(int ns)
218 218
219static volatile u_int irq_hits; 219static volatile u_int irq_hits;
220 220
221static irqreturn_t __init tcic_irq_count(int irq, void *dev, struct pt_regs *regs) 221static irqreturn_t __init tcic_irq_count(int irq, void *dev)
222{ 222{
223 irq_hits++; 223 irq_hits++;
224 return IRQ_HANDLED; 224 return IRQ_HANDLED;
@@ -505,7 +505,7 @@ static int __init init_tcic(void)
505 } 505 }
506 506
507 /* jump start interrupt handler, if needed */ 507 /* jump start interrupt handler, if needed */
508 tcic_interrupt(0, NULL, NULL); 508 tcic_interrupt(0, NULL);
509 509
510 platform_device_register(&tcic_device); 510 platform_device_register(&tcic_device);
511 511
@@ -547,7 +547,7 @@ static void __exit exit_tcic(void)
547 547
548/*====================================================================*/ 548/*====================================================================*/
549 549
550static irqreturn_t tcic_interrupt(int irq, void *dev, struct pt_regs *regs) 550static irqreturn_t tcic_interrupt(int irq, void *dev)
551{ 551{
552 int i, quick = 0; 552 int i, quick = 0;
553 u_char latch, sstat; 553 u_char latch, sstat;
@@ -606,7 +606,7 @@ static void tcic_timer(u_long data)
606{ 606{
607 debug(2, "tcic_timer()\n"); 607 debug(2, "tcic_timer()\n");
608 tcic_timer_pending = 0; 608 tcic_timer_pending = 0;
609 tcic_interrupt(0, NULL, NULL); 609 tcic_interrupt(0, NULL);
610} /* tcic_timer */ 610} /* tcic_timer */
611 611
612/*====================================================================*/ 612/*====================================================================*/
diff --git a/drivers/pcmcia/vrc4171_card.c b/drivers/pcmcia/vrc4171_card.c
index e076a13db555..e90d8e8c5fd6 100644
--- a/drivers/pcmcia/vrc4171_card.c
+++ b/drivers/pcmcia/vrc4171_card.c
@@ -514,7 +514,7 @@ static inline unsigned int get_events(int slot)
514 return events; 514 return events;
515} 515}
516 516
517static irqreturn_t pccard_interrupt(int irq, void *dev_id, struct pt_regs *regs) 517static irqreturn_t pccard_interrupt(int irq, void *dev_id)
518{ 518{
519 vrc4171_socket_t *socket; 519 vrc4171_socket_t *socket;
520 unsigned int events; 520 unsigned int events;
diff --git a/drivers/pcmcia/vrc4173_cardu.c b/drivers/pcmcia/vrc4173_cardu.c
index d19a9138135f..812f038e9bda 100644
--- a/drivers/pcmcia/vrc4173_cardu.c
+++ b/drivers/pcmcia/vrc4173_cardu.c
@@ -440,7 +440,7 @@ static uint16_t get_events(vrc4173_socket_t *socket)
440 return events; 440 return events;
441} 441}
442 442
443static void cardu_interrupt(int irq, void *dev_id, struct pt_regs *regs) 443static void cardu_interrupt(int irq, void *dev_id)
444{ 444{
445 vrc4173_socket_t *socket = (vrc4173_socket_t *)dev_id; 445 vrc4173_socket_t *socket = (vrc4173_socket_t *)dev_id;
446 uint16_t events; 446 uint16_t events;
diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c
index 1344746381e8..26229d9da762 100644
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pcmcia/yenta_socket.c
@@ -442,7 +442,7 @@ static int yenta_set_mem_map(struct pcmcia_socket *sock, struct pccard_mem_map *
442 442
443 443
444 444
445static irqreturn_t yenta_interrupt(int irq, void *dev_id, struct pt_regs *regs) 445static irqreturn_t yenta_interrupt(int irq, void *dev_id)
446{ 446{
447 unsigned int events; 447 unsigned int events;
448 struct yenta_socket *socket = (struct yenta_socket *) dev_id; 448 struct yenta_socket *socket = (struct yenta_socket *) dev_id;
@@ -478,7 +478,7 @@ static void yenta_interrupt_wrapper(unsigned long data)
478{ 478{
479 struct yenta_socket *socket = (struct yenta_socket *) data; 479 struct yenta_socket *socket = (struct yenta_socket *) data;
480 480
481 yenta_interrupt(0, (void *)socket, NULL); 481 yenta_interrupt(0, (void *)socket);
482 socket->poll_timer.expires = jiffies + HZ; 482 socket->poll_timer.expires = jiffies + HZ;
483 add_timer(&socket->poll_timer); 483 add_timer(&socket->poll_timer);
484} 484}
@@ -896,7 +896,7 @@ static unsigned int yenta_probe_irq(struct yenta_socket *socket, u32 isa_irq_mas
896#ifdef CONFIG_YENTA_TI 896#ifdef CONFIG_YENTA_TI
897 897
898/* interrupt handler, only used during probing */ 898/* interrupt handler, only used during probing */
899static irqreturn_t yenta_probe_handler(int irq, void *dev_id, struct pt_regs *regs) 899static irqreturn_t yenta_probe_handler(int irq, void *dev_id)
900{ 900{
901 struct yenta_socket *socket = (struct yenta_socket *) dev_id; 901 struct yenta_socket *socket = (struct yenta_socket *) dev_id;
902 u8 csc; 902 u8 csc;
diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
index 5c8ec21e1086..a685fbec4604 100644
--- a/drivers/pnp/resource.c
+++ b/drivers/pnp/resource.c
@@ -348,7 +348,7 @@ int pnp_check_mem(struct pnp_dev * dev, int idx)
348 return 1; 348 return 1;
349} 349}
350 350
351static irqreturn_t pnp_test_handler(int irq, void *dev_id, struct pt_regs *regs) 351static irqreturn_t pnp_test_handler(int irq, void *dev_id)
352{ 352{
353 return IRQ_HANDLED; 353 return IRQ_HANDLED;
354} 354}
diff --git a/drivers/rtc/rtc-at91.c b/drivers/rtc/rtc-at91.c
index c0714da44920..bd61e99540a3 100644
--- a/drivers/rtc/rtc-at91.c
+++ b/drivers/rtc/rtc-at91.c
@@ -238,8 +238,7 @@ static int at91_rtc_proc(struct device *dev, struct seq_file *seq)
238/* 238/*
239 * IRQ handler for the RTC 239 * IRQ handler for the RTC
240 */ 240 */
241static irqreturn_t at91_rtc_interrupt(int irq, void *dev_id, 241static irqreturn_t at91_rtc_interrupt(int irq, void *dev_id)
242 struct pt_regs *regs)
243{ 242{
244 struct platform_device *pdev = dev_id; 243 struct platform_device *pdev = dev_id;
245 struct rtc_device *rtc = platform_get_drvdata(pdev); 244 struct rtc_device *rtc = platform_get_drvdata(pdev);
diff --git a/drivers/rtc/rtc-ds1553.c b/drivers/rtc/rtc-ds1553.c
index 9647188fee2c..78552e6e76aa 100644
--- a/drivers/rtc/rtc-ds1553.c
+++ b/drivers/rtc/rtc-ds1553.c
@@ -189,8 +189,7 @@ static int ds1553_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
189 return 0; 189 return 0;
190} 190}
191 191
192static irqreturn_t ds1553_rtc_interrupt(int irq, void *dev_id, 192static irqreturn_t ds1553_rtc_interrupt(int irq, void *dev_id)
193 struct pt_regs *regs)
194{ 193{
195 struct platform_device *pdev = dev_id; 194 struct platform_device *pdev = dev_id;
196 struct rtc_plat_data *pdata = platform_get_drvdata(pdev); 195 struct rtc_plat_data *pdata = platform_get_drvdata(pdev);
diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
index 739d1a6e14eb..f13daa9fecaa 100644
--- a/drivers/rtc/rtc-pl031.c
+++ b/drivers/rtc/rtc-pl031.c
@@ -47,7 +47,7 @@ struct pl031_local {
47 void __iomem *base; 47 void __iomem *base;
48}; 48};
49 49
50static irqreturn_t pl031_interrupt(int irq, void *dev_id, struct pt_regs *regs) 50static irqreturn_t pl031_interrupt(int irq, void *dev_id)
51{ 51{
52 struct rtc_device *rtc = dev_id; 52 struct rtc_device *rtc = dev_id;
53 53
diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
index 625dad2eeb4f..e301dea57bb3 100644
--- a/drivers/rtc/rtc-s3c.c
+++ b/drivers/rtc/rtc-s3c.c
@@ -46,7 +46,7 @@ static unsigned int tick_count;
46 46
47/* IRQ Handlers */ 47/* IRQ Handlers */
48 48
49static irqreturn_t s3c_rtc_alarmirq(int irq, void *id, struct pt_regs *r) 49static irqreturn_t s3c_rtc_alarmirq(int irq, void *id)
50{ 50{
51 struct rtc_device *rdev = id; 51 struct rtc_device *rdev = id;
52 52
@@ -54,7 +54,7 @@ static irqreturn_t s3c_rtc_alarmirq(int irq, void *id, struct pt_regs *r)
54 return IRQ_HANDLED; 54 return IRQ_HANDLED;
55} 55}
56 56
57static irqreturn_t s3c_rtc_tickirq(int irq, void *id, struct pt_regs *r) 57static irqreturn_t s3c_rtc_tickirq(int irq, void *id)
58{ 58{
59 struct rtc_device *rdev = id; 59 struct rtc_device *rdev = id;
60 60
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 439c41aea31c..bd4d7d174ef4 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -68,8 +68,7 @@ static int rtc_update_alarm(struct rtc_time *alrm)
68 return ret; 68 return ret;
69} 69}
70 70
71static irqreturn_t sa1100_rtc_interrupt(int irq, void *dev_id, 71static irqreturn_t sa1100_rtc_interrupt(int irq, void *dev_id)
72 struct pt_regs *regs)
73{ 72{
74 struct platform_device *pdev = to_platform_device(dev_id); 73 struct platform_device *pdev = to_platform_device(dev_id);
75 struct rtc_device *rtc = platform_get_drvdata(pdev); 74 struct rtc_device *rtc = platform_get_drvdata(pdev);
@@ -106,8 +105,7 @@ static irqreturn_t sa1100_rtc_interrupt(int irq, void *dev_id,
106 105
107static int rtc_timer1_count; 106static int rtc_timer1_count;
108 107
109static irqreturn_t timer1_interrupt(int irq, void *dev_id, 108static irqreturn_t timer1_interrupt(int irq, void *dev_id)
110 struct pt_regs *regs)
111{ 109{
112 struct platform_device *pdev = to_platform_device(dev_id); 110 struct platform_device *pdev = to_platform_device(dev_id);
113 struct rtc_device *rtc = platform_get_drvdata(pdev); 111 struct rtc_device *rtc = platform_get_drvdata(pdev);
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index d2ce0c8bb8f3..8b6efcc05058 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -73,7 +73,7 @@ struct sh_rtc {
73 spinlock_t lock; 73 spinlock_t lock;
74}; 74};
75 75
76static irqreturn_t sh_rtc_interrupt(int irq, void *id, struct pt_regs *regs) 76static irqreturn_t sh_rtc_interrupt(int irq, void *id)
77{ 77{
78 struct platform_device *pdev = id; 78 struct platform_device *pdev = id;
79 struct sh_rtc *rtc = platform_get_drvdata(pdev); 79 struct sh_rtc *rtc = platform_get_drvdata(pdev);
@@ -97,7 +97,7 @@ static irqreturn_t sh_rtc_interrupt(int irq, void *id, struct pt_regs *regs)
97 return IRQ_HANDLED; 97 return IRQ_HANDLED;
98} 98}
99 99
100static irqreturn_t sh_rtc_periodic(int irq, void *id, struct pt_regs *regs) 100static irqreturn_t sh_rtc_periodic(int irq, void *id)
101{ 101{
102 struct sh_rtc *rtc = dev_get_drvdata(id); 102 struct sh_rtc *rtc = dev_get_drvdata(id);
103 103
diff --git a/drivers/rtc/rtc-vr41xx.c b/drivers/rtc/rtc-vr41xx.c
index 58e5ed0aa127..e40322b71938 100644
--- a/drivers/rtc/rtc-vr41xx.c
+++ b/drivers/rtc/rtc-vr41xx.c
@@ -268,7 +268,7 @@ static int vr41xx_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long
268 return 0; 268 return 0;
269} 269}
270 270
271static irqreturn_t elapsedtime_interrupt(int irq, void *dev_id, struct pt_regs *regs) 271static irqreturn_t elapsedtime_interrupt(int irq, void *dev_id)
272{ 272{
273 struct platform_device *pdev = (struct platform_device *)dev_id; 273 struct platform_device *pdev = (struct platform_device *)dev_id;
274 struct rtc_device *rtc = platform_get_drvdata(pdev); 274 struct rtc_device *rtc = platform_get_drvdata(pdev);
@@ -280,7 +280,7 @@ static irqreturn_t elapsedtime_interrupt(int irq, void *dev_id, struct pt_regs *
280 return IRQ_HANDLED; 280 return IRQ_HANDLED;
281} 281}
282 282
283static irqreturn_t rtclong1_interrupt(int irq, void *dev_id, struct pt_regs *regs) 283static irqreturn_t rtclong1_interrupt(int irq, void *dev_id)
284{ 284{
285 struct platform_device *pdev = (struct platform_device *)dev_id; 285 struct platform_device *pdev = (struct platform_device *)dev_id;
286 struct rtc_device *rtc = platform_get_drvdata(pdev); 286 struct rtc_device *rtc = platform_get_drvdata(pdev);
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c
index 222a8a71a5e8..53db58a68617 100644
--- a/drivers/s390/block/dasd_diag.c
+++ b/drivers/s390/block/dasd_diag.c
@@ -218,7 +218,7 @@ dasd_diag_term_IO(struct dasd_ccw_req * cqr)
218 218
219/* Handle external interruption. */ 219/* Handle external interruption. */
220static void 220static void
221dasd_ext_handler(struct pt_regs *regs, __u16 code) 221dasd_ext_handler(__u16 code)
222{ 222{
223 struct dasd_ccw_req *cqr, *next; 223 struct dasd_ccw_req *cqr, *next;
224 struct dasd_device *device; 224 struct dasd_device *device;
diff --git a/drivers/s390/char/ctrlchar.c b/drivers/s390/char/ctrlchar.c
index d83eb6358bac..49e9628d9297 100644
--- a/drivers/s390/char/ctrlchar.c
+++ b/drivers/s390/char/ctrlchar.c
@@ -20,7 +20,7 @@ static int ctrlchar_sysrq_key;
20static void 20static void
21ctrlchar_handle_sysrq(void *tty) 21ctrlchar_handle_sysrq(void *tty)
22{ 22{
23 handle_sysrq(ctrlchar_sysrq_key, NULL, (struct tty_struct *) tty); 23 handle_sysrq(ctrlchar_sysrq_key, (struct tty_struct *) tty);
24} 24}
25 25
26static DECLARE_WORK(ctrlchar_work, ctrlchar_handle_sysrq, NULL); 26static DECLARE_WORK(ctrlchar_work, ctrlchar_handle_sysrq, NULL);
diff --git a/drivers/s390/char/keyboard.c b/drivers/s390/char/keyboard.c
index 3be06569180d..e3491a5f5219 100644
--- a/drivers/s390/char/keyboard.c
+++ b/drivers/s390/char/keyboard.c
@@ -304,7 +304,7 @@ kbd_keycode(struct kbd_data *kbd, unsigned int keycode)
304 if (kbd->sysrq) { 304 if (kbd->sysrq) {
305 if (kbd->sysrq == K(KT_LATIN, '-')) { 305 if (kbd->sysrq == K(KT_LATIN, '-')) {
306 kbd->sysrq = 0; 306 kbd->sysrq = 0;
307 handle_sysrq(value, NULL, kbd->tty); 307 handle_sysrq(value, kbd->tty);
308 return; 308 return;
309 } 309 }
310 if (value == '-') { 310 if (value == '-') {
diff --git a/drivers/s390/char/monwriter.c b/drivers/s390/char/monwriter.c
index 1e3939aeb8ab..4362ff260244 100644
--- a/drivers/s390/char/monwriter.c
+++ b/drivers/s390/char/monwriter.c
@@ -26,6 +26,7 @@
26#define MONWRITE_MAX_DATALEN 4024 26#define MONWRITE_MAX_DATALEN 4024
27 27
28static int mon_max_bufs = 255; 28static int mon_max_bufs = 255;
29static int mon_buf_count;
29 30
30struct mon_buf { 31struct mon_buf {
31 struct list_head list; 32 struct list_head list;
@@ -40,7 +41,6 @@ struct mon_private {
40 size_t hdr_to_read; 41 size_t hdr_to_read;
41 size_t data_to_read; 42 size_t data_to_read;
42 struct mon_buf *current_buf; 43 struct mon_buf *current_buf;
43 int mon_buf_count;
44}; 44};
45 45
46/* 46/*
@@ -99,13 +99,13 @@ static int monwrite_new_hdr(struct mon_private *monpriv)
99 rc = monwrite_diag(monhdr, monbuf->data, 99 rc = monwrite_diag(monhdr, monbuf->data,
100 APPLDATA_STOP_REC); 100 APPLDATA_STOP_REC);
101 list_del(&monbuf->list); 101 list_del(&monbuf->list);
102 monpriv->mon_buf_count--; 102 mon_buf_count--;
103 kfree(monbuf->data); 103 kfree(monbuf->data);
104 kfree(monbuf); 104 kfree(monbuf);
105 monbuf = NULL; 105 monbuf = NULL;
106 } 106 }
107 } else { 107 } else {
108 if (monpriv->mon_buf_count >= mon_max_bufs) 108 if (mon_buf_count >= mon_max_bufs)
109 return -ENOSPC; 109 return -ENOSPC;
110 monbuf = kzalloc(sizeof(struct mon_buf), GFP_KERNEL); 110 monbuf = kzalloc(sizeof(struct mon_buf), GFP_KERNEL);
111 if (!monbuf) 111 if (!monbuf)
@@ -118,7 +118,7 @@ static int monwrite_new_hdr(struct mon_private *monpriv)
118 } 118 }
119 monbuf->hdr = *monhdr; 119 monbuf->hdr = *monhdr;
120 list_add_tail(&monbuf->list, &monpriv->list); 120 list_add_tail(&monbuf->list, &monpriv->list);
121 monpriv->mon_buf_count++; 121 mon_buf_count++;
122 } 122 }
123 monpriv->current_buf = monbuf; 123 monpriv->current_buf = monbuf;
124 return 0; 124 return 0;
@@ -186,7 +186,7 @@ static int monwrite_close(struct inode *inode, struct file *filp)
186 if (entry->hdr.mon_function != MONWRITE_GEN_EVENT) 186 if (entry->hdr.mon_function != MONWRITE_GEN_EVENT)
187 monwrite_diag(&entry->hdr, entry->data, 187 monwrite_diag(&entry->hdr, entry->data,
188 APPLDATA_STOP_REC); 188 APPLDATA_STOP_REC);
189 monpriv->mon_buf_count--; 189 mon_buf_count--;
190 list_del(&entry->list); 190 list_del(&entry->list);
191 kfree(entry->data); 191 kfree(entry->data);
192 kfree(entry); 192 kfree(entry);
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c
index 31e335751d6d..8a056df09d6b 100644
--- a/drivers/s390/char/sclp.c
+++ b/drivers/s390/char/sclp.c
@@ -324,7 +324,7 @@ __sclp_find_req(u32 sccb)
324 * Prepare read event data request if necessary. Start processing of next 324 * Prepare read event data request if necessary. Start processing of next
325 * request on queue. */ 325 * request on queue. */
326static void 326static void
327sclp_interrupt_handler(struct pt_regs *regs, __u16 code) 327sclp_interrupt_handler(__u16 code)
328{ 328{
329 struct sclp_req *req; 329 struct sclp_req *req;
330 u32 finished_sccb; 330 u32 finished_sccb;
@@ -743,7 +743,7 @@ EXPORT_SYMBOL(sclp_reactivate);
743/* Handler for external interruption used during initialization. Modify 743/* Handler for external interruption used during initialization. Modify
744 * request state to done. */ 744 * request state to done. */
745static void 745static void
746sclp_check_handler(struct pt_regs *regs, __u16 code) 746sclp_check_handler(__u16 code)
747{ 747{
748 u32 finished_sccb; 748 u32 finished_sccb;
749 749
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c
index 3bb4e472d73d..07c7f19339d2 100644
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -200,11 +200,13 @@ css_get_ssd_info(struct subchannel *sch)
200 spin_unlock_irq(&sch->lock); 200 spin_unlock_irq(&sch->lock);
201 free_page((unsigned long)page); 201 free_page((unsigned long)page);
202 if (!ret) { 202 if (!ret) {
203 int j, chpid; 203 int j, chpid, mask;
204 /* Allocate channel path structures, if needed. */ 204 /* Allocate channel path structures, if needed. */
205 for (j = 0; j < 8; j++) { 205 for (j = 0; j < 8; j++) {
206 mask = 0x80 >> j;
206 chpid = sch->ssd_info.chpid[j]; 207 chpid = sch->ssd_info.chpid[j];
207 if (chpid && (get_chp_status(chpid) < 0)) 208 if ((sch->schib.pmcw.pim & mask) &&
209 (get_chp_status(chpid) < 0))
208 new_channel_path(chpid); 210 new_channel_path(chpid);
209 } 211 }
210 } 212 }
@@ -222,13 +224,15 @@ s390_subchannel_remove_chpid(struct device *dev, void *data)
222 224
223 sch = to_subchannel(dev); 225 sch = to_subchannel(dev);
224 chpid = data; 226 chpid = data;
225 for (j = 0; j < 8; j++) 227 for (j = 0; j < 8; j++) {
226 if (sch->schib.pmcw.chpid[j] == chpid->id) 228 mask = 0x80 >> j;
229 if ((sch->schib.pmcw.pim & mask) &&
230 (sch->schib.pmcw.chpid[j] == chpid->id))
227 break; 231 break;
232 }
228 if (j >= 8) 233 if (j >= 8)
229 return 0; 234 return 0;
230 235
231 mask = 0x80 >> j;
232 spin_lock_irq(&sch->lock); 236 spin_lock_irq(&sch->lock);
233 237
234 stsch(sch->schid, &schib); 238 stsch(sch->schid, &schib);
@@ -620,7 +624,7 @@ __chp_add_new_sch(struct subchannel_id schid)
620static int 624static int
621__chp_add(struct subchannel_id schid, void *data) 625__chp_add(struct subchannel_id schid, void *data)
622{ 626{
623 int i; 627 int i, mask;
624 struct channel_path *chp; 628 struct channel_path *chp;
625 struct subchannel *sch; 629 struct subchannel *sch;
626 630
@@ -630,8 +634,10 @@ __chp_add(struct subchannel_id schid, void *data)
630 /* Check if the subchannel is now available. */ 634 /* Check if the subchannel is now available. */
631 return __chp_add_new_sch(schid); 635 return __chp_add_new_sch(schid);
632 spin_lock_irq(&sch->lock); 636 spin_lock_irq(&sch->lock);
633 for (i=0; i<8; i++) 637 for (i=0; i<8; i++) {
634 if (sch->schib.pmcw.chpid[i] == chp->id) { 638 mask = 0x80 >> i;
639 if ((sch->schib.pmcw.pim & mask) &&
640 (sch->schib.pmcw.chpid[i] == chp->id)) {
635 if (stsch(sch->schid, &sch->schib) != 0) { 641 if (stsch(sch->schid, &sch->schib) != 0) {
636 /* Endgame. */ 642 /* Endgame. */
637 spin_unlock_irq(&sch->lock); 643 spin_unlock_irq(&sch->lock);
@@ -639,6 +645,7 @@ __chp_add(struct subchannel_id schid, void *data)
639 } 645 }
640 break; 646 break;
641 } 647 }
648 }
642 if (i==8) { 649 if (i==8) {
643 spin_unlock_irq(&sch->lock); 650 spin_unlock_irq(&sch->lock);
644 return 0; 651 return 0;
@@ -646,7 +653,7 @@ __chp_add(struct subchannel_id schid, void *data)
646 sch->lpm = ((sch->schib.pmcw.pim & 653 sch->lpm = ((sch->schib.pmcw.pim &
647 sch->schib.pmcw.pam & 654 sch->schib.pmcw.pam &
648 sch->schib.pmcw.pom) 655 sch->schib.pmcw.pom)
649 | 0x80 >> i) & sch->opm; 656 | mask) & sch->opm;
650 657
651 if (sch->driver && sch->driver->verify) 658 if (sch->driver && sch->driver->verify)
652 sch->driver->verify(&sch->dev); 659 sch->driver->verify(&sch->dev);
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index 2e2882daefbb..f18b1623cad7 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -19,6 +19,7 @@
19#include <asm/cio.h> 19#include <asm/cio.h>
20#include <asm/delay.h> 20#include <asm/delay.h>
21#include <asm/irq.h> 21#include <asm/irq.h>
22#include <asm/irq_regs.h>
22#include <asm/setup.h> 23#include <asm/setup.h>
23#include "airq.h" 24#include "airq.h"
24#include "cio.h" 25#include "cio.h"
@@ -606,15 +607,17 @@ do_IRQ (struct pt_regs *regs)
606 struct tpi_info *tpi_info; 607 struct tpi_info *tpi_info;
607 struct subchannel *sch; 608 struct subchannel *sch;
608 struct irb *irb; 609 struct irb *irb;
610 struct pt_regs *old_regs;
609 611
610 irq_enter (); 612 irq_enter ();
613 old_regs = set_irq_regs(regs);
611 asm volatile ("mc 0,0"); 614 asm volatile ("mc 0,0");
612 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) 615 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer)
613 /** 616 /**
614 * Make sure that the i/o interrupt did not "overtake" 617 * Make sure that the i/o interrupt did not "overtake"
615 * the last HZ timer interrupt. 618 * the last HZ timer interrupt.
616 */ 619 */
617 account_ticks(regs); 620 account_ticks();
618 /* 621 /*
619 * Get interrupt information from lowcore 622 * Get interrupt information from lowcore
620 */ 623 */
@@ -652,6 +655,7 @@ do_IRQ (struct pt_regs *regs)
652 * out of the sie which costs more cycles than it saves. 655 * out of the sie which costs more cycles than it saves.
653 */ 656 */
654 } while (!MACHINE_IS_VM && tpi (NULL) != 0); 657 } while (!MACHINE_IS_VM && tpi (NULL) != 0);
658 set_irq_regs(old_regs);
655 irq_exit (); 659 irq_exit ();
656} 660}
657 661
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
index cd30f37fceae..c5ccd20b110c 100644
--- a/drivers/s390/crypto/ap_bus.c
+++ b/drivers/s390/crypto/ap_bus.c
@@ -1062,7 +1062,7 @@ static int ap_poll_thread(void *data)
1062 unsigned long flags; 1062 unsigned long flags;
1063 int requests; 1063 int requests;
1064 1064
1065 set_user_nice(current, -20); 1065 set_user_nice(current, 19);
1066 while (1) { 1066 while (1) {
1067 if (need_resched()) { 1067 if (need_resched()) {
1068 schedule(); 1068 schedule();
diff --git a/drivers/s390/net/iucv.c b/drivers/s390/net/iucv.c
index 809dd8d7f47a..1476ce2b437c 100644
--- a/drivers/s390/net/iucv.c
+++ b/drivers/s390/net/iucv.c
@@ -116,7 +116,7 @@ static DEFINE_SPINLOCK(iucv_irq_queue_lock);
116 *Internal function prototypes 116 *Internal function prototypes
117 */ 117 */
118static void iucv_tasklet_handler(unsigned long); 118static void iucv_tasklet_handler(unsigned long);
119static void iucv_irq_handler(struct pt_regs *, __u16); 119static void iucv_irq_handler(__u16);
120 120
121static DECLARE_TASKLET(iucv_tasklet,iucv_tasklet_handler,0); 121static DECLARE_TASKLET(iucv_tasklet,iucv_tasklet_handler,0);
122 122
@@ -2251,7 +2251,7 @@ iucv_sever(__u16 pathid, __u8 user_data[16])
2251 * Places the interrupt buffer on a queue and schedules iucv_tasklet_handler(). 2251 * Places the interrupt buffer on a queue and schedules iucv_tasklet_handler().
2252 */ 2252 */
2253static void 2253static void
2254iucv_irq_handler(struct pt_regs *regs, __u16 code) 2254iucv_irq_handler(__u16 code)
2255{ 2255{
2256 iucv_irqdata *irqdata; 2256 iucv_irqdata *irqdata;
2257 2257
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index 862a411a4aa0..c88babce9bca 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -1987,7 +1987,7 @@ zfcp_erp_adapter_strategy_open_qdio(struct zfcp_erp_action *erp_action)
1987 sbale = &(adapter->response_queue.buffer[i]->element[0]); 1987 sbale = &(adapter->response_queue.buffer[i]->element[0]);
1988 sbale->length = 0; 1988 sbale->length = 0;
1989 sbale->flags = SBAL_FLAGS_LAST_ENTRY; 1989 sbale->flags = SBAL_FLAGS_LAST_ENTRY;
1990 sbale->addr = 0; 1990 sbale->addr = NULL;
1991 } 1991 }
1992 1992
1993 ZFCP_LOG_TRACE("calling do_QDIO on adapter %s (flags=0x%x, " 1993 ZFCP_LOG_TRACE("calling do_QDIO on adapter %s (flags=0x%x, "
diff --git a/drivers/sbus/char/aurora.c b/drivers/sbus/char/aurora.c
index a305d4091547..a54b4ac67568 100644
--- a/drivers/sbus/char/aurora.c
+++ b/drivers/sbus/char/aurora.c
@@ -254,7 +254,7 @@ for(i=0;i<TYPE_1_IRQS;i++)
254return 0; 254return 0;
255} 255}
256 256
257static irqreturn_t aurora_interrupt(int irq, void * dev_id, struct pt_regs * regs); 257static irqreturn_t aurora_interrupt(int irq, void * dev_id);
258 258
259/* Main probing routine, also sets irq. */ 259/* Main probing routine, also sets irq. */
260static int aurora_probe(void) 260static int aurora_probe(void)
@@ -689,7 +689,7 @@ static void aurora_check_modem(struct Aurora_board const * bp, int chip)
689} 689}
690 690
691/* The main interrupt processing routine */ 691/* The main interrupt processing routine */
692static irqreturn_t aurora_interrupt(int irq, void * dev_id, struct pt_regs * regs) 692static irqreturn_t aurora_interrupt(int irq, void * dev_id)
693{ 693{
694 unsigned char status; 694 unsigned char status;
695 unsigned char ack,chip/*,chip_id*/; 695 unsigned char ack,chip/*,chip_id*/;
diff --git a/drivers/sbus/char/bbc_i2c.c b/drivers/sbus/char/bbc_i2c.c
index 7186235594f9..22631f8b9b48 100644
--- a/drivers/sbus/char/bbc_i2c.c
+++ b/drivers/sbus/char/bbc_i2c.c
@@ -331,7 +331,7 @@ EXPORT_SYMBOL(bbc_i2c_readb);
331EXPORT_SYMBOL(bbc_i2c_write_buf); 331EXPORT_SYMBOL(bbc_i2c_write_buf);
332EXPORT_SYMBOL(bbc_i2c_read_buf); 332EXPORT_SYMBOL(bbc_i2c_read_buf);
333 333
334static irqreturn_t bbc_i2c_interrupt(int irq, void *dev_id, struct pt_regs *regs) 334static irqreturn_t bbc_i2c_interrupt(int irq, void *dev_id)
335{ 335{
336 struct bbc_i2c_bus *bp = dev_id; 336 struct bbc_i2c_bus *bp = dev_id;
337 337
diff --git a/drivers/sbus/char/cpwatchdog.c b/drivers/sbus/char/cpwatchdog.c
index 40b6fc86f6a8..f5803ecb1999 100644
--- a/drivers/sbus/char/cpwatchdog.c
+++ b/drivers/sbus/char/cpwatchdog.c
@@ -185,7 +185,7 @@ MODULE_SUPPORTED_DEVICE
185#ifdef WD_DEBUG 185#ifdef WD_DEBUG
186static void wd_dumpregs(void); 186static void wd_dumpregs(void);
187#endif 187#endif
188static irqreturn_t wd_interrupt(int irq, void *dev_id, struct pt_regs *regs); 188static irqreturn_t wd_interrupt(int irq, void *dev_id);
189static void wd_toggleintr(struct wd_timer* pTimer, int enable); 189static void wd_toggleintr(struct wd_timer* pTimer, int enable);
190static void wd_pingtimer(struct wd_timer* pTimer); 190static void wd_pingtimer(struct wd_timer* pTimer);
191static void wd_starttimer(struct wd_timer* pTimer); 191static void wd_starttimer(struct wd_timer* pTimer);
@@ -444,7 +444,7 @@ static ssize_t wd_read(struct file * file, char __user *buffer,
444#endif /* ifdef WD_DEBUG */ 444#endif /* ifdef WD_DEBUG */
445} 445}
446 446
447static irqreturn_t wd_interrupt(int irq, void *dev_id, struct pt_regs *regs) 447static irqreturn_t wd_interrupt(int irq, void *dev_id)
448{ 448{
449 /* Only WD0 will interrupt-- others are NMI and we won't 449 /* Only WD0 will interrupt-- others are NMI and we won't
450 * see them here.... 450 * see them here....
diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c
index 2f698763ba5d..81ba2d71cee2 100644
--- a/drivers/sbus/char/openprom.c
+++ b/drivers/sbus/char/openprom.c
@@ -630,7 +630,7 @@ static int openprom_ioctl(struct inode * inode, struct file * file,
630 case OPROMPATH2NODE: 630 case OPROMPATH2NODE:
631 if ((file->f_mode & FMODE_READ) == 0) 631 if ((file->f_mode & FMODE_READ) == 0)
632 return -EPERM; 632 return -EPERM;
633 return openprom_sunos_ioctl(inode, file, cmd, arg, 0); 633 return openprom_sunos_ioctl(inode, file, cmd, arg, NULL);
634 634
635 case OPIOCGET: 635 case OPIOCGET:
636 case OPIOCNEXTPROP: 636 case OPIOCNEXTPROP:
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c
index 575b1f7ed410..b30372f17f1c 100644
--- a/drivers/sbus/char/uctrl.c
+++ b/drivers/sbus/char/uctrl.c
@@ -217,7 +217,7 @@ uctrl_open(struct inode *inode, struct file *file)
217 return 0; 217 return 0;
218} 218}
219 219
220static irqreturn_t uctrl_interrupt(int irq, void *dev_id, struct pt_regs *regs) 220static irqreturn_t uctrl_interrupt(int irq, void *dev_id)
221{ 221{
222 struct uctrl_driver *driver = (struct uctrl_driver *)dev_id; 222 struct uctrl_driver *driver = (struct uctrl_driver *)dev_id;
223 printk("in uctrl_interrupt\n"); 223 printk("in uctrl_interrupt\n");
@@ -400,7 +400,7 @@ static int __init ts102_uctrl_init(void)
400 } 400 }
401 401
402 driver->regs->uctrl_intr = UCTRL_INTR_RXNE_REQ|UCTRL_INTR_RXNE_MSK; 402 driver->regs->uctrl_intr = UCTRL_INTR_RXNE_REQ|UCTRL_INTR_RXNE_MSK;
403 printk("uctrl: 0x%x (irq %d)\n", driver->regs, driver->irq); 403 printk("uctrl: 0x%p (irq %d)\n", driver->regs, driver->irq);
404 uctrl_get_event_status(); 404 uctrl_get_event_status();
405 uctrl_get_external_status(); 405 uctrl_get_external_status();
406 return 0; 406 return 0;
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c
index da173159cedb..5f8c26cd66ca 100644
--- a/drivers/scsi/3w-9xxx.c
+++ b/drivers/scsi/3w-9xxx.c
@@ -1192,7 +1192,7 @@ out:
1192} /* End twa_initialize_device_extension() */ 1192} /* End twa_initialize_device_extension() */
1193 1193
1194/* This function is the interrupt service routine */ 1194/* This function is the interrupt service routine */
1195static irqreturn_t twa_interrupt(int irq, void *dev_instance, struct pt_regs *regs) 1195static irqreturn_t twa_interrupt(int irq, void *dev_instance)
1196{ 1196{
1197 int request_id, error = 0; 1197 int request_id, error = 0;
1198 u32 status_reg_value; 1198 u32 status_reg_value;
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
index 2d4cb6721fa6..99a259c5a0c0 100644
--- a/drivers/scsi/3w-xxxx.c
+++ b/drivers/scsi/3w-xxxx.c
@@ -2078,8 +2078,7 @@ static int tw_scsi_queue(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd
2078} /* End tw_scsi_queue() */ 2078} /* End tw_scsi_queue() */
2079 2079
2080/* This function is the interrupt service routine */ 2080/* This function is the interrupt service routine */
2081static irqreturn_t tw_interrupt(int irq, void *dev_instance, 2081static irqreturn_t tw_interrupt(int irq, void *dev_instance)
2082 struct pt_regs *regs)
2083{ 2082{
2084 int request_id; 2083 int request_id;
2085 u32 status_reg_value; 2084 u32 status_reg_value;
diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c
index 15ce40a7053a..562432d017b0 100644
--- a/drivers/scsi/53c700.c
+++ b/drivers/scsi/53c700.c
@@ -1462,7 +1462,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
1462} 1462}
1463 1463
1464irqreturn_t 1464irqreturn_t
1465NCR_700_intr(int irq, void *dev_id, struct pt_regs *regs) 1465NCR_700_intr(int irq, void *dev_id)
1466{ 1466{
1467 struct Scsi_Host *host = (struct Scsi_Host *)dev_id; 1467 struct Scsi_Host *host = (struct Scsi_Host *)dev_id;
1468 struct NCR_700_Host_Parameters *hostdata = 1468 struct NCR_700_Host_Parameters *hostdata =
diff --git a/drivers/scsi/53c700.h b/drivers/scsi/53c700.h
index 97ebe71b701b..f5c3caf344a7 100644
--- a/drivers/scsi/53c700.h
+++ b/drivers/scsi/53c700.h
@@ -57,7 +57,7 @@ struct NCR_700_Host_Parameters;
57struct Scsi_Host *NCR_700_detect(struct scsi_host_template *, 57struct Scsi_Host *NCR_700_detect(struct scsi_host_template *,
58 struct NCR_700_Host_Parameters *, struct device *); 58 struct NCR_700_Host_Parameters *, struct device *);
59int NCR_700_release(struct Scsi_Host *host); 59int NCR_700_release(struct Scsi_Host *host);
60irqreturn_t NCR_700_intr(int, void *, struct pt_regs *); 60irqreturn_t NCR_700_intr(int, void *);
61 61
62 62
63enum NCR_700_Host_State { 63enum NCR_700_Host_State {
diff --git a/drivers/scsi/53c7xx.c b/drivers/scsi/53c7xx.c
index acf292736b4e..640536ef77dc 100644
--- a/drivers/scsi/53c7xx.c
+++ b/drivers/scsi/53c7xx.c
@@ -323,7 +323,7 @@ static int shutdown (struct Scsi_Host *host);
323static void abnormal_finished (struct NCR53c7x0_cmd *cmd, int result); 323static void abnormal_finished (struct NCR53c7x0_cmd *cmd, int result);
324static int disable (struct Scsi_Host *host); 324static int disable (struct Scsi_Host *host);
325static int NCR53c7xx_run_tests (struct Scsi_Host *host); 325static int NCR53c7xx_run_tests (struct Scsi_Host *host);
326static irqreturn_t NCR53c7x0_intr(int irq, void *dev_id, struct pt_regs * regs); 326static irqreturn_t NCR53c7x0_intr(int irq, void *dev_id);
327static void NCR53c7x0_intfly (struct Scsi_Host *host); 327static void NCR53c7x0_intfly (struct Scsi_Host *host);
328static int ncr_halt (struct Scsi_Host *host); 328static int ncr_halt (struct Scsi_Host *host);
329static void intr_phase_mismatch (struct Scsi_Host *host, struct NCR53c7x0_cmd 329static void intr_phase_mismatch (struct Scsi_Host *host, struct NCR53c7x0_cmd
@@ -4227,7 +4227,7 @@ restart:
4227} 4227}
4228 4228
4229/* 4229/*
4230 * Function : static irqreturn_t NCR53c7x0_intr (int irq, void *dev_id, struct pt_regs * regs) 4230 * Function : static irqreturn_t NCR53c7x0_intr (int irq, void *dev_id)
4231 * 4231 *
4232 * Purpose : handle NCR53c7x0 interrupts for all NCR devices sharing 4232 * Purpose : handle NCR53c7x0 interrupts for all NCR devices sharing
4233 * the same IRQ line. 4233 * the same IRQ line.
@@ -4241,7 +4241,7 @@ restart:
4241 */ 4241 */
4242 4242
4243static irqreturn_t 4243static irqreturn_t
4244NCR53c7x0_intr (int irq, void *dev_id, struct pt_regs * regs) 4244NCR53c7x0_intr (int irq, void *dev_id)
4245{ 4245{
4246 NCR53c7x0_local_declare(); 4246 NCR53c7x0_local_declare();
4247 struct Scsi_Host *host; /* Host we are looking at */ 4247 struct Scsi_Host *host; /* Host we are looking at */
diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c
index 4ea49fd7965e..7c59bba98798 100644
--- a/drivers/scsi/BusLogic.c
+++ b/drivers/scsi/BusLogic.c
@@ -2653,7 +2653,7 @@ static void BusLogic_ProcessCompletedCCBs(struct BusLogic_HostAdapter *HostAdapt
2653 Adapters. 2653 Adapters.
2654*/ 2654*/
2655 2655
2656static irqreturn_t BusLogic_InterruptHandler(int IRQ_Channel, void *DeviceIdentifier, struct pt_regs *InterruptRegisters) 2656static irqreturn_t BusLogic_InterruptHandler(int IRQ_Channel, void *DeviceIdentifier)
2657{ 2657{
2658 struct BusLogic_HostAdapter *HostAdapter = (struct BusLogic_HostAdapter *) DeviceIdentifier; 2658 struct BusLogic_HostAdapter *HostAdapter = (struct BusLogic_HostAdapter *) DeviceIdentifier;
2659 unsigned long ProcessorFlags; 2659 unsigned long ProcessorFlags;
diff --git a/drivers/scsi/BusLogic.h b/drivers/scsi/BusLogic.h
index d6d1d5613c8a..cca6d45eee4d 100644
--- a/drivers/scsi/BusLogic.h
+++ b/drivers/scsi/BusLogic.h
@@ -1347,7 +1347,7 @@ static int BusLogic_BIOSDiskParameters(struct scsi_device *, struct block_device
1347static int BusLogic_ProcDirectoryInfo(struct Scsi_Host *, char *, char **, off_t, int, int); 1347static int BusLogic_ProcDirectoryInfo(struct Scsi_Host *, char *, char **, off_t, int, int);
1348static int BusLogic_SlaveConfigure(struct scsi_device *); 1348static int BusLogic_SlaveConfigure(struct scsi_device *);
1349static void BusLogic_QueueCompletedCCB(struct BusLogic_CCB *); 1349static void BusLogic_QueueCompletedCCB(struct BusLogic_CCB *);
1350static irqreturn_t BusLogic_InterruptHandler(int, void *, struct pt_regs *); 1350static irqreturn_t BusLogic_InterruptHandler(int, void *);
1351static int BusLogic_ResetHostAdapter(struct BusLogic_HostAdapter *, boolean HardReset); 1351static int BusLogic_ResetHostAdapter(struct BusLogic_HostAdapter *, boolean HardReset);
1352static void BusLogic_Message(enum BusLogic_MessageLevel, char *, struct BusLogic_HostAdapter *, ...); 1352static void BusLogic_Message(enum BusLogic_MessageLevel, char *, struct BusLogic_HostAdapter *, ...);
1353static int __init BusLogic_Setup(char *); 1353static int __init BusLogic_Setup(char *);
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 616810ad17d8..a6aa91072880 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -558,8 +558,7 @@ static int probe_irq __initdata = 0;
558 * used by the IRQ probe code. 558 * used by the IRQ probe code.
559 */ 559 */
560 560
561static irqreturn_t __init probe_intr(int irq, void *dev_id, 561static irqreturn_t __init probe_intr(int irq, void *dev_id)
562 struct pt_regs *regs)
563{ 562{
564 probe_irq = irq; 563 probe_irq = irq;
565 return IRQ_HANDLED; 564 return IRQ_HANDLED;
@@ -1148,7 +1147,6 @@ static void NCR5380_main(void *p)
1148 * NCR5380_intr - generic NCR5380 irq handler 1147 * NCR5380_intr - generic NCR5380 irq handler
1149 * @irq: interrupt number 1148 * @irq: interrupt number
1150 * @dev_id: device info 1149 * @dev_id: device info
1151 * @regs: registers (unused)
1152 * 1150 *
1153 * Handle interrupts, reestablishing I_T_L or I_T_L_Q nexuses 1151 * Handle interrupts, reestablishing I_T_L or I_T_L_Q nexuses
1154 * from the disconnected queue, and restarting NCR5380_main() 1152 * from the disconnected queue, and restarting NCR5380_main()
@@ -1157,7 +1155,7 @@ static void NCR5380_main(void *p)
1157 * Locks: takes the needed instance locks 1155 * Locks: takes the needed instance locks
1158 */ 1156 */
1159 1157
1160static irqreturn_t NCR5380_intr(int irq, void *dev_id, struct pt_regs *regs) 1158static irqreturn_t NCR5380_intr(int irq, void *dev_id)
1161{ 1159{
1162 NCR5380_local_declare(); 1160 NCR5380_local_declare();
1163 struct Scsi_Host *instance = (struct Scsi_Host *)dev_id; 1161 struct Scsi_Host *instance = (struct Scsi_Host *)dev_id;
diff --git a/drivers/scsi/NCR5380.h b/drivers/scsi/NCR5380.h
index c3462e358d1c..1bc73de496b0 100644
--- a/drivers/scsi/NCR5380.h
+++ b/drivers/scsi/NCR5380.h
@@ -296,7 +296,7 @@ static int NCR5380_init(struct Scsi_Host *instance, int flags);
296static void NCR5380_exit(struct Scsi_Host *instance); 296static void NCR5380_exit(struct Scsi_Host *instance);
297static void NCR5380_information_transfer(struct Scsi_Host *instance); 297static void NCR5380_information_transfer(struct Scsi_Host *instance);
298#ifndef DONT_USE_INTR 298#ifndef DONT_USE_INTR
299static irqreturn_t NCR5380_intr(int irq, void *dev_id, struct pt_regs *regs); 299static irqreturn_t NCR5380_intr(int irq, void *dev_id);
300#endif 300#endif
301static void NCR5380_main(void *ptr); 301static void NCR5380_main(void *ptr);
302static void NCR5380_print_options(struct Scsi_Host *instance); 302static void NCR5380_print_options(struct Scsi_Host *instance);
diff --git a/drivers/scsi/NCR53C9x.c b/drivers/scsi/NCR53C9x.c
index bdc6bb262bce..3c912ee29da0 100644
--- a/drivers/scsi/NCR53C9x.c
+++ b/drivers/scsi/NCR53C9x.c
@@ -96,7 +96,7 @@ enum {
96static struct NCR_ESP *espchain; 96static struct NCR_ESP *espchain;
97int nesps = 0, esps_in_use = 0, esps_running = 0; 97int nesps = 0, esps_in_use = 0, esps_running = 0;
98 98
99irqreturn_t esp_intr(int irq, void *dev_id, struct pt_regs *pregs); 99irqreturn_t esp_intr(int irq, void *dev_id);
100 100
101/* Debugging routines */ 101/* Debugging routines */
102static struct esp_cmdstrings { 102static struct esp_cmdstrings {
@@ -3533,7 +3533,7 @@ state_machine:
3533} 3533}
3534 3534
3535#ifndef CONFIG_SMP 3535#ifndef CONFIG_SMP
3536irqreturn_t esp_intr(int irq, void *dev_id, struct pt_regs *pregs) 3536irqreturn_t esp_intr(int irq, void *dev_id)
3537{ 3537{
3538 struct NCR_ESP *esp; 3538 struct NCR_ESP *esp;
3539 unsigned long flags; 3539 unsigned long flags;
@@ -3570,7 +3570,7 @@ repeat:
3570} 3570}
3571#else 3571#else
3572/* For SMP we only service one ESP on the list list at our IRQ level! */ 3572/* For SMP we only service one ESP on the list list at our IRQ level! */
3573irqreturn_t esp_intr(int irq, void *dev_id, struct pt_regs *pregs) 3573irqreturn_t esp_intr(int irq, void *dev_id)
3574{ 3574{
3575 struct NCR_ESP *esp; 3575 struct NCR_ESP *esp;
3576 unsigned long flags; 3576 unsigned long flags;
diff --git a/drivers/scsi/NCR53C9x.h b/drivers/scsi/NCR53C9x.h
index 481653c977cf..521e3f842cfd 100644
--- a/drivers/scsi/NCR53C9x.h
+++ b/drivers/scsi/NCR53C9x.h
@@ -656,7 +656,7 @@ extern struct NCR_ESP *esp_allocate(struct scsi_host_template *, void *);
656extern void esp_deallocate(struct NCR_ESP *); 656extern void esp_deallocate(struct NCR_ESP *);
657extern void esp_release(void); 657extern void esp_release(void);
658extern void esp_initialize(struct NCR_ESP *); 658extern void esp_initialize(struct NCR_ESP *);
659extern irqreturn_t esp_intr(int, void *, struct pt_regs *); 659extern irqreturn_t esp_intr(int, void *);
660extern const char *esp_info(struct Scsi_Host *); 660extern const char *esp_info(struct Scsi_Host *);
661extern int esp_queue(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *)); 661extern int esp_queue(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
662extern int esp_abort(Scsi_Cmnd *); 662extern int esp_abort(Scsi_Cmnd *);
diff --git a/drivers/scsi/NCR53c406a.c b/drivers/scsi/NCR53c406a.c
index 8472c5359023..d4613815f685 100644
--- a/drivers/scsi/NCR53c406a.c
+++ b/drivers/scsi/NCR53c406a.c
@@ -168,8 +168,8 @@ enum Phase {
168}; 168};
169 169
170/* Static function prototypes */ 170/* Static function prototypes */
171static void NCR53c406a_intr(int, void *, struct pt_regs *); 171static void NCR53c406a_intr(void *);
172static irqreturn_t do_NCR53c406a_intr(int, void *, struct pt_regs *); 172static irqreturn_t do_NCR53c406a_intr(int, void *);
173static void chip_init(void); 173static void chip_init(void);
174static void calc_port_addr(void); 174static void calc_port_addr(void);
175#ifndef IRQ_LEV 175#ifndef IRQ_LEV
@@ -685,7 +685,7 @@ static void wait_intr(void)
685 return; 685 return;
686 } 686 }
687 687
688 NCR53c406a_intr(0, NULL, NULL); 688 NCR53c406a_intr(NULL);
689} 689}
690#endif 690#endif
691 691
@@ -761,19 +761,18 @@ static int NCR53c406a_biosparm(struct scsi_device *disk,
761 return 0; 761 return 0;
762} 762}
763 763
764static irqreturn_t do_NCR53c406a_intr(int unused, void *dev_id, 764static irqreturn_t do_NCR53c406a_intr(int unused, void *dev_id)
765 struct pt_regs *regs)
766{ 765{
767 unsigned long flags; 766 unsigned long flags;
768 struct Scsi_Host *dev = dev_id; 767 struct Scsi_Host *dev = dev_id;
769 768
770 spin_lock_irqsave(dev->host_lock, flags); 769 spin_lock_irqsave(dev->host_lock, flags);
771 NCR53c406a_intr(0, dev_id, regs); 770 NCR53c406a_intr(dev_id);
772 spin_unlock_irqrestore(dev->host_lock, flags); 771 spin_unlock_irqrestore(dev->host_lock, flags);
773 return IRQ_HANDLED; 772 return IRQ_HANDLED;
774} 773}
775 774
776static void NCR53c406a_intr(int unused, void *dev_id, struct pt_regs *regs) 775static void NCR53c406a_intr(void *dev_id)
777{ 776{
778 DEB(unsigned char fifo_size; 777 DEB(unsigned char fifo_size;
779 ) 778 )
diff --git a/drivers/scsi/NCR_D700.c b/drivers/scsi/NCR_D700.c
index d05681f9d81a..9859cd17fc57 100644
--- a/drivers/scsi/NCR_D700.c
+++ b/drivers/scsi/NCR_D700.c
@@ -226,14 +226,14 @@ NCR_D700_probe_one(struct NCR_D700_private *p, int siop, int irq,
226} 226}
227 227
228static int 228static int
229NCR_D700_intr(int irq, void *data, struct pt_regs *regs) 229NCR_D700_intr(int irq, void *data)
230{ 230{
231 struct NCR_D700_private *p = (struct NCR_D700_private *)data; 231 struct NCR_D700_private *p = (struct NCR_D700_private *)data;
232 int i, found = 0; 232 int i, found = 0;
233 233
234 for (i = 0; i < 2; i++) 234 for (i = 0; i < 2; i++)
235 if (p->hosts[i] && 235 if (p->hosts[i] &&
236 NCR_700_intr(irq, p->hosts[i], regs) == IRQ_HANDLED) 236 NCR_700_intr(irq, p->hosts[i]) == IRQ_HANDLED)
237 found++; 237 found++;
238 238
239 return found ? IRQ_HANDLED : IRQ_NONE; 239 return found ? IRQ_HANDLED : IRQ_NONE;
diff --git a/drivers/scsi/NCR_Q720.c b/drivers/scsi/NCR_Q720.c
index c39ffbb86e39..778844c3544a 100644
--- a/drivers/scsi/NCR_Q720.c
+++ b/drivers/scsi/NCR_Q720.c
@@ -54,7 +54,7 @@ static struct scsi_host_template NCR_Q720_tpnt = {
54}; 54};
55 55
56static irqreturn_t 56static irqreturn_t
57NCR_Q720_intr(int irq, void *data, struct pt_regs * regs) 57NCR_Q720_intr(int irq, void *data)
58{ 58{
59 struct NCR_Q720_private *p = (struct NCR_Q720_private *)data; 59 struct NCR_Q720_private *p = (struct NCR_Q720_private *)data;
60 __u8 sir = (readb(p->mem_base + 0x0d) & 0xf0) >> 4; 60 __u8 sir = (readb(p->mem_base + 0x0d) & 0xf0) >> 4;
@@ -68,7 +68,7 @@ NCR_Q720_intr(int irq, void *data, struct pt_regs * regs)
68 68
69 while((siop = ffz(sir)) < p->siops) { 69 while((siop = ffz(sir)) < p->siops) {
70 sir |= 1<<siop; 70 sir |= 1<<siop;
71 ncr53c8xx_intr(irq, p->hosts[siop], regs); 71 ncr53c8xx_intr(irq, p->hosts[siop]);
72 } 72 }
73 return IRQ_HANDLED; 73 return IRQ_HANDLED;
74} 74}
diff --git a/drivers/scsi/a100u2w.c b/drivers/scsi/a100u2w.c
index 2684150917e6..2650a5d0a161 100644
--- a/drivers/scsi/a100u2w.c
+++ b/drivers/scsi/a100u2w.c
@@ -1013,7 +1013,7 @@ static void inia100SCBPost(BYTE * pHcb, BYTE * pScb)
1013/* 1013/*
1014 * Interrupt handler (main routine of the driver) 1014 * Interrupt handler (main routine of the driver)
1015 */ 1015 */
1016static irqreturn_t inia100_intr(int irqno, void *devid, struct pt_regs *regs) 1016static irqreturn_t inia100_intr(int irqno, void *devid)
1017{ 1017{
1018 struct Scsi_Host *host = (struct Scsi_Host *)devid; 1018 struct Scsi_Host *host = (struct Scsi_Host *)devid;
1019 ORC_HCS *pHcb = (ORC_HCS *)host->hostdata; 1019 ORC_HCS *pHcb = (ORC_HCS *)host->hostdata;
diff --git a/drivers/scsi/a2091.c b/drivers/scsi/a2091.c
index 085406928605..f77016d31cab 100644
--- a/drivers/scsi/a2091.c
+++ b/drivers/scsi/a2091.c
@@ -24,7 +24,7 @@
24#define DMA(ptr) ((a2091_scsiregs *)((ptr)->base)) 24#define DMA(ptr) ((a2091_scsiregs *)((ptr)->base))
25#define HDATA(ptr) ((struct WD33C93_hostdata *)((ptr)->hostdata)) 25#define HDATA(ptr) ((struct WD33C93_hostdata *)((ptr)->hostdata))
26 26
27static irqreturn_t a2091_intr (int irq, void *_instance, struct pt_regs *fp) 27static irqreturn_t a2091_intr (int irq, void *_instance)
28{ 28{
29 unsigned long flags; 29 unsigned long flags;
30 unsigned int status; 30 unsigned int status;
diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c
index 7bf46d40b561..1299bc8edef1 100644
--- a/drivers/scsi/a3000.c
+++ b/drivers/scsi/a3000.c
@@ -26,7 +26,7 @@
26 26
27static struct Scsi_Host *a3000_host = NULL; 27static struct Scsi_Host *a3000_host = NULL;
28 28
29static irqreturn_t a3000_intr (int irq, void *dummy, struct pt_regs *fp) 29static irqreturn_t a3000_intr (int irq, void *dummy)
30{ 30{
31 unsigned long flags; 31 unsigned long flags;
32 unsigned int status = DMA(a3000_host)->ISTR; 32 unsigned int status = DMA(a3000_host)->ISTR;
diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c
index a1d214d770eb..dcc8b0ea7a9d 100644
--- a/drivers/scsi/aacraid/rx.c
+++ b/drivers/scsi/aacraid/rx.c
@@ -46,11 +46,11 @@
46 46
47#include "aacraid.h" 47#include "aacraid.h"
48 48
49static irqreturn_t aac_rx_intr(int irq, void *dev_id, struct pt_regs *regs) 49static irqreturn_t aac_rx_intr(int irq, void *dev_id)
50{ 50{
51 struct aac_dev *dev = dev_id; 51 struct aac_dev *dev = dev_id;
52 52
53 dprintk((KERN_DEBUG "aac_rx_intr(%d,%p,%p)\n", irq, dev_id, regs)); 53 dprintk((KERN_DEBUG "aac_rx_intr(%d,%p)\n", irq, dev_id));
54 if (dev->new_comm_interface) { 54 if (dev->new_comm_interface) {
55 u32 Index = rx_readl(dev, MUnit.OutboundQueue); 55 u32 Index = rx_readl(dev, MUnit.OutboundQueue);
56 if (Index == 0xFFFFFFFFL) 56 if (Index == 0xFFFFFFFFL)
diff --git a/drivers/scsi/aacraid/sa.c b/drivers/scsi/aacraid/sa.c
index f906ead239dd..511b0a938fb1 100644
--- a/drivers/scsi/aacraid/sa.c
+++ b/drivers/scsi/aacraid/sa.c
@@ -46,7 +46,7 @@
46 46
47#include "aacraid.h" 47#include "aacraid.h"
48 48
49static irqreturn_t aac_sa_intr(int irq, void *dev_id, struct pt_regs *regs) 49static irqreturn_t aac_sa_intr(int irq, void *dev_id)
50{ 50{
51 struct aac_dev *dev = dev_id; 51 struct aac_dev *dev = dev_id;
52 unsigned short intstat, mask; 52 unsigned short intstat, mask;
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 773f02e3b10b..2b344356a29e 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -3881,7 +3881,7 @@ typedef struct asc_board {
3881 /* 3881 /*
3882 * The following fields are used only for Wide Boards. 3882 * The following fields are used only for Wide Boards.
3883 */ 3883 */
3884 void *ioremap_addr; /* I/O Memory remap address. */ 3884 void __iomem *ioremap_addr; /* I/O Memory remap address. */
3885 ushort ioport; /* I/O Port address. */ 3885 ushort ioport; /* I/O Port address. */
3886 ADV_CARR_T *orig_carrp; /* ADV_CARR_T memory block. */ 3886 ADV_CARR_T *orig_carrp; /* ADV_CARR_T memory block. */
3887 adv_req_t *orig_reqp; /* adv_req_t memory block. */ 3887 adv_req_t *orig_reqp; /* adv_req_t memory block. */
@@ -3951,7 +3951,7 @@ typedef struct _PCI_CONFIG_SPACE_
3951 3951
3952/* Number of boards detected in system. */ 3952/* Number of boards detected in system. */
3953STATIC int asc_board_count = 0; 3953STATIC int asc_board_count = 0;
3954STATIC struct Scsi_Host *asc_host[ASC_NUM_BOARD_SUPPORTED] = { 0 }; 3954STATIC struct Scsi_Host *asc_host[ASC_NUM_BOARD_SUPPORTED] = { NULL };
3955 3955
3956/* Overrun buffer used by all narrow boards. */ 3956/* Overrun buffer used by all narrow boards. */
3957STATIC uchar overrun_buf[ASC_OVERRUN_BSIZE] = { 0 }; 3957STATIC uchar overrun_buf[ASC_OVERRUN_BSIZE] = { 0 };
@@ -3999,7 +3999,7 @@ STATIC PortAddr _asc_def_iop_base[];
3999 * advansys.h contains function prototypes for functions global to Linux. 3999 * advansys.h contains function prototypes for functions global to Linux.
4000 */ 4000 */
4001 4001
4002STATIC irqreturn_t advansys_interrupt(int, void *, struct pt_regs *); 4002STATIC irqreturn_t advansys_interrupt(int, void *);
4003STATIC int advansys_slave_configure(struct scsi_device *); 4003STATIC int advansys_slave_configure(struct scsi_device *);
4004STATIC void asc_scsi_done_list(struct scsi_cmnd *); 4004STATIC void asc_scsi_done_list(struct scsi_cmnd *);
4005STATIC int asc_execute_scsi_cmnd(struct scsi_cmnd *); 4005STATIC int asc_execute_scsi_cmnd(struct scsi_cmnd *);
@@ -5997,7 +5997,7 @@ static struct scsi_host_template driver_template = {
5997 * an AdvanSys adapter. 5997 * an AdvanSys adapter.
5998 */ 5998 */
5999STATIC irqreturn_t 5999STATIC irqreturn_t
6000advansys_interrupt(int irq, void *dev_id, struct pt_regs *regs) 6000advansys_interrupt(int irq, void *dev_id)
6001{ 6001{
6002 ulong flags; 6002 ulong flags;
6003 int i; 6003 int i;
@@ -6621,7 +6621,7 @@ adv_build_req(asc_board_t *boardp, struct scsi_cmnd *scp,
6621 dma_map_single(dev, scp->request_buffer, 6621 dma_map_single(dev, scp->request_buffer,
6622 scp->request_bufflen, scp->sc_data_direction); 6622 scp->request_bufflen, scp->sc_data_direction);
6623 } else { 6623 } else {
6624 scsiqp->vdata_addr = 0; 6624 scsiqp->vdata_addr = NULL;
6625 scp->SCp.dma_handle = 0; 6625 scp->SCp.dma_handle = 0;
6626 } 6626 }
6627 scsiqp->data_addr = cpu_to_le32(scp->SCp.dma_handle); 6627 scsiqp->data_addr = cpu_to_le32(scp->SCp.dma_handle);
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c
index fb6a476eb873..a0d1cee0be77 100644
--- a/drivers/scsi/aha152x.c
+++ b/drivers/scsi/aha152x.c
@@ -673,7 +673,7 @@ static struct {
673}; 673};
674 674
675/* setup & interrupt */ 675/* setup & interrupt */
676static irqreturn_t intr(int irq, void *dev_id, struct pt_regs *); 676static irqreturn_t intr(int irq, void *dev_id);
677static void reset_ports(struct Scsi_Host *shpnt); 677static void reset_ports(struct Scsi_Host *shpnt);
678static void aha152x_error(struct Scsi_Host *shpnt, char *msg); 678static void aha152x_error(struct Scsi_Host *shpnt, char *msg);
679static void done(struct Scsi_Host *shpnt, int error); 679static void done(struct Scsi_Host *shpnt, int error);
@@ -757,14 +757,9 @@ static inline Scsi_Cmnd *remove_SC(Scsi_Cmnd **SC, Scsi_Cmnd *SCp)
757 return ptr; 757 return ptr;
758} 758}
759 759
760static irqreturn_t swintr(int irqno, void *dev_id, struct pt_regs *regs) 760static irqreturn_t swintr(int irqno, void *dev_id)
761{ 761{
762 struct Scsi_Host *shpnt = (struct Scsi_Host *)dev_id; 762 struct Scsi_Host *shpnt = dev_id;
763
764 if (!shpnt) {
765 printk(KERN_ERR "aha152x: catched software interrupt %d for unknown controller.\n", irqno);
766 return IRQ_NONE;
767 }
768 763
769 HOSTDATA(shpnt)->swint++; 764 HOSTDATA(shpnt)->swint++;
770 765
@@ -1463,7 +1458,7 @@ static void run(void)
1463 * Interrupt handler 1458 * Interrupt handler
1464 * 1459 *
1465 */ 1460 */
1466static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs) 1461static irqreturn_t intr(int irqno, void *dev_id)
1467{ 1462{
1468 struct Scsi_Host *shpnt = (struct Scsi_Host *)dev_id; 1463 struct Scsi_Host *shpnt = (struct Scsi_Host *)dev_id;
1469 unsigned long flags; 1464 unsigned long flags;
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
index 24f0f5461792..d7a61a6bdaae 100644
--- a/drivers/scsi/aha1542.c
+++ b/drivers/scsi/aha1542.c
@@ -174,9 +174,8 @@ static DEFINE_SPINLOCK(aha1542_lock);
174 174
175static void setup_mailboxes(int base_io, struct Scsi_Host *shpnt); 175static void setup_mailboxes(int base_io, struct Scsi_Host *shpnt);
176static int aha1542_restart(struct Scsi_Host *shost); 176static int aha1542_restart(struct Scsi_Host *shost);
177static void aha1542_intr_handle(struct Scsi_Host *shost, void *dev_id, struct pt_regs *regs); 177static void aha1542_intr_handle(struct Scsi_Host *shost, void *dev_id);
178static irqreturn_t do_aha1542_intr_handle(int irq, void *dev_id, 178static irqreturn_t do_aha1542_intr_handle(int irq, void *dev_id);
179 struct pt_regs *regs);
180 179
181#define aha1542_intr_reset(base) outb(IRST, CONTROL(base)) 180#define aha1542_intr_reset(base) outb(IRST, CONTROL(base))
182 181
@@ -416,8 +415,7 @@ fail:
416} 415}
417 416
418/* A quick wrapper for do_aha1542_intr_handle to grab the spin lock */ 417/* A quick wrapper for do_aha1542_intr_handle to grab the spin lock */
419static irqreturn_t do_aha1542_intr_handle(int irq, void *dev_id, 418static irqreturn_t do_aha1542_intr_handle(int irq, void *dev_id)
420 struct pt_regs *regs)
421{ 419{
422 unsigned long flags; 420 unsigned long flags;
423 struct Scsi_Host *shost; 421 struct Scsi_Host *shost;
@@ -427,13 +425,13 @@ static irqreturn_t do_aha1542_intr_handle(int irq, void *dev_id,
427 panic("Splunge!"); 425 panic("Splunge!");
428 426
429 spin_lock_irqsave(shost->host_lock, flags); 427 spin_lock_irqsave(shost->host_lock, flags);
430 aha1542_intr_handle(shost, dev_id, regs); 428 aha1542_intr_handle(shost, dev_id);
431 spin_unlock_irqrestore(shost->host_lock, flags); 429 spin_unlock_irqrestore(shost->host_lock, flags);
432 return IRQ_HANDLED; 430 return IRQ_HANDLED;
433} 431}
434 432
435/* A "high" level interrupt handler */ 433/* A "high" level interrupt handler */
436static void aha1542_intr_handle(struct Scsi_Host *shost, void *dev_id, struct pt_regs *regs) 434static void aha1542_intr_handle(struct Scsi_Host *shost, void *dev_id)
437{ 435{
438 void (*my_done) (Scsi_Cmnd *) = NULL; 436 void (*my_done) (Scsi_Cmnd *) = NULL;
439 int errstatus, mbi, mbo, mbistatus; 437 int errstatus, mbi, mbo, mbistatus;
diff --git a/drivers/scsi/aha1740.c b/drivers/scsi/aha1740.c
index 6b35ed8301e0..c3c38a7e8d32 100644
--- a/drivers/scsi/aha1740.c
+++ b/drivers/scsi/aha1740.c
@@ -223,8 +223,7 @@ static int aha1740_test_port(unsigned int base)
223} 223}
224 224
225/* A "high" level interrupt handler */ 225/* A "high" level interrupt handler */
226static irqreturn_t aha1740_intr_handle(int irq, void *dev_id, 226static irqreturn_t aha1740_intr_handle(int irq, void *dev_id)
227 struct pt_regs *regs)
228{ 227{
229 struct Scsi_Host *host = (struct Scsi_Host *) dev_id; 228 struct Scsi_Host *host = (struct Scsi_Host *) dev_id;
230 void (*my_done)(Scsi_Cmnd *); 229 void (*my_done)(Scsi_Cmnd *);
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
index 1faa008b5b81..f8e60486167d 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c
@@ -1557,7 +1557,7 @@ ahd_linux_run_command(struct ahd_softc *ahd, struct ahd_linux_device *dev,
1557 * SCSI controller interrupt handler. 1557 * SCSI controller interrupt handler.
1558 */ 1558 */
1559irqreturn_t 1559irqreturn_t
1560ahd_linux_isr(int irq, void *dev_id, struct pt_regs * regs) 1560ahd_linux_isr(int irq, void *dev_id)
1561{ 1561{
1562 struct ahd_softc *ahd; 1562 struct ahd_softc *ahd;
1563 u_long flags; 1563 u_long flags;
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h
index 601340d84410..fb3d4dd54413 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.h
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.h
@@ -862,7 +862,7 @@ int ahd_platform_abort_scbs(struct ahd_softc *ahd, int target,
862 char channel, int lun, u_int tag, 862 char channel, int lun, u_int tag,
863 role_t role, uint32_t status); 863 role_t role, uint32_t status);
864irqreturn_t 864irqreturn_t
865 ahd_linux_isr(int irq, void *dev_id, struct pt_regs * regs); 865 ahd_linux_isr(int irq, void *dev_id);
866void ahd_done(struct ahd_softc*, struct scb*); 866void ahd_done(struct ahd_softc*, struct scb*);
867void ahd_send_async(struct ahd_softc *, char channel, 867void ahd_send_async(struct ahd_softc *, char channel,
868 u_int target, u_int lun, ac_code); 868 u_int target, u_int lun, ac_code);
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
index 339b85cb61cd..43ab753d2739 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -1608,7 +1608,7 @@ ahc_linux_run_command(struct ahc_softc *ahc, struct ahc_linux_device *dev,
1608 * SCSI controller interrupt handler. 1608 * SCSI controller interrupt handler.
1609 */ 1609 */
1610irqreturn_t 1610irqreturn_t
1611ahc_linux_isr(int irq, void *dev_id, struct pt_regs * regs) 1611ahc_linux_isr(int irq, void *dev_id)
1612{ 1612{
1613 struct ahc_softc *ahc; 1613 struct ahc_softc *ahc;
1614 u_long flags; 1614 u_long flags;
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h
index d42a71ee076d..a87a4ce090df 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.h
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h
@@ -830,7 +830,7 @@ int ahc_platform_abort_scbs(struct ahc_softc *ahc, int target,
830 char channel, int lun, u_int tag, 830 char channel, int lun, u_int tag,
831 role_t role, uint32_t status); 831 role_t role, uint32_t status);
832irqreturn_t 832irqreturn_t
833 ahc_linux_isr(int irq, void *dev_id, struct pt_regs * regs); 833 ahc_linux_isr(int irq, void *dev_id);
834void ahc_platform_flushwork(struct ahc_softc *ahc); 834void ahc_platform_flushwork(struct ahc_softc *ahc);
835void ahc_done(struct ahc_softc*, struct scb*); 835void ahc_done(struct ahc_softc*, struct scb*);
836void ahc_send_async(struct ahc_softc *, char channel, 836void ahc_send_async(struct ahc_softc *, char channel,
diff --git a/drivers/scsi/aic7xxx_old.c b/drivers/scsi/aic7xxx_old.c
index 3eae8062a02e..bcd7fffab907 100644
--- a/drivers/scsi/aic7xxx_old.c
+++ b/drivers/scsi/aic7xxx_old.c
@@ -6345,12 +6345,12 @@ aic7xxx_handle_command_completion_intr(struct aic7xxx_host *p)
6345 * SCSI controller interrupt handler. 6345 * SCSI controller interrupt handler.
6346 *-F*************************************************************************/ 6346 *-F*************************************************************************/
6347static void 6347static void
6348aic7xxx_isr(int irq, void *dev_id, struct pt_regs *regs) 6348aic7xxx_isr(void *dev_id)
6349{ 6349{
6350 struct aic7xxx_host *p; 6350 struct aic7xxx_host *p;
6351 unsigned char intstat; 6351 unsigned char intstat;
6352 6352
6353 p = (struct aic7xxx_host *)dev_id; 6353 p = dev_id;
6354 6354
6355 /* 6355 /*
6356 * Just a few sanity checks. Make sure that we have an int pending. 6356 * Just a few sanity checks. Make sure that we have an int pending.
@@ -6477,7 +6477,7 @@ aic7xxx_isr(int irq, void *dev_id, struct pt_regs *regs)
6477 * anything like it, please inform the Gross Hack Police immediately 6477 * anything like it, please inform the Gross Hack Police immediately
6478 *-F*************************************************************************/ 6478 *-F*************************************************************************/
6479static irqreturn_t 6479static irqreturn_t
6480do_aic7xxx_isr(int irq, void *dev_id, struct pt_regs *regs) 6480do_aic7xxx_isr(int irq, void *dev_id)
6481{ 6481{
6482 unsigned long cpu_flags; 6482 unsigned long cpu_flags;
6483 struct aic7xxx_host *p; 6483 struct aic7xxx_host *p;
@@ -6489,7 +6489,7 @@ do_aic7xxx_isr(int irq, void *dev_id, struct pt_regs *regs)
6489 p->flags |= AHC_IN_ISR; 6489 p->flags |= AHC_IN_ISR;
6490 do 6490 do
6491 { 6491 {
6492 aic7xxx_isr(irq, dev_id, regs); 6492 aic7xxx_isr(dev_id);
6493 } while ( (aic_inb(p, INTSTAT) & INT_PEND) ); 6493 } while ( (aic_inb(p, INTSTAT) & INT_PEND) );
6494 aic7xxx_done_cmds_complete(p); 6494 aic7xxx_done_cmds_complete(p);
6495 aic7xxx_run_waiting_queues(p); 6495 aic7xxx_run_waiting_queues(p);
@@ -10377,7 +10377,7 @@ static int __aic7xxx_bus_device_reset(struct scsi_cmnd *cmd)
10377 10377
10378 hscb = scb->hscb; 10378 hscb = scb->hscb;
10379 10379
10380 aic7xxx_isr(p->irq, (void *)p, NULL); 10380 aic7xxx_isr(p);
10381 aic7xxx_done_cmds_complete(p); 10381 aic7xxx_done_cmds_complete(p);
10382 /* If the command was already complete or just completed, then we didn't 10382 /* If the command was already complete or just completed, then we didn't
10383 * do a reset, return FAILED */ 10383 * do a reset, return FAILED */
@@ -10608,7 +10608,7 @@ static int __aic7xxx_abort(struct scsi_cmnd *cmd)
10608 else 10608 else
10609 return FAILED; 10609 return FAILED;
10610 10610
10611 aic7xxx_isr(p->irq, (void *)p, NULL); 10611 aic7xxx_isr(p);
10612 aic7xxx_done_cmds_complete(p); 10612 aic7xxx_done_cmds_complete(p);
10613 /* If the command was already complete or just completed, then we didn't 10613 /* If the command was already complete or just completed, then we didn't
10614 * do a reset, return FAILED */ 10614 * do a reset, return FAILED */
@@ -10863,7 +10863,7 @@ static int aic7xxx_reset(struct scsi_cmnd *cmd)
10863 10863
10864 while((aic_inb(p, INTSTAT) & INT_PEND) && !(p->flags & AHC_IN_ISR)) 10864 while((aic_inb(p, INTSTAT) & INT_PEND) && !(p->flags & AHC_IN_ISR))
10865 { 10865 {
10866 aic7xxx_isr(p->irq, p, (void *)NULL ); 10866 aic7xxx_isr(p);
10867 pause_sequencer(p); 10867 pause_sequencer(p);
10868 } 10868 }
10869 aic7xxx_done_cmds_complete(p); 10869 aic7xxx_done_cmds_complete(p);
diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.c b/drivers/scsi/aic94xx/aic94xx_hwi.c
index 1d8c5e5f442e..3c2d7a379931 100644
--- a/drivers/scsi/aic94xx/aic94xx_hwi.c
+++ b/drivers/scsi/aic94xx/aic94xx_hwi.c
@@ -996,11 +996,10 @@ static inline void asd_hst_pcix_isr(struct asd_ha_struct *asd_ha)
996 * asd_hw_isr -- host adapter interrupt service routine 996 * asd_hw_isr -- host adapter interrupt service routine
997 * @irq: ignored 997 * @irq: ignored
998 * @dev_id: pointer to host adapter structure 998 * @dev_id: pointer to host adapter structure
999 * @regs: ignored
1000 * 999 *
1001 * The ISR processes done list entries and level 3 error handling. 1000 * The ISR processes done list entries and level 3 error handling.
1002 */ 1001 */
1003irqreturn_t asd_hw_isr(int irq, void *dev_id, struct pt_regs *regs) 1002irqreturn_t asd_hw_isr(int irq, void *dev_id)
1004{ 1003{
1005 struct asd_ha_struct *asd_ha = dev_id; 1004 struct asd_ha_struct *asd_ha = dev_id;
1006 u32 chimint = asd_read_reg_dword(asd_ha, CHIMINT); 1005 u32 chimint = asd_read_reg_dword(asd_ha, CHIMINT);
diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.h b/drivers/scsi/aic94xx/aic94xx_hwi.h
index 8498144aa5e1..14319d1d6804 100644
--- a/drivers/scsi/aic94xx/aic94xx_hwi.h
+++ b/drivers/scsi/aic94xx/aic94xx_hwi.h
@@ -371,7 +371,7 @@ static inline void asd_ascb_free_list(struct asd_ascb *ascb_list)
371/* ---------- Function declarations ---------- */ 371/* ---------- Function declarations ---------- */
372 372
373int asd_init_hw(struct asd_ha_struct *asd_ha); 373int asd_init_hw(struct asd_ha_struct *asd_ha);
374irqreturn_t asd_hw_isr(int irq, void *dev_id, struct pt_regs *regs); 374irqreturn_t asd_hw_isr(int irq, void *dev_id);
375 375
376 376
377struct asd_ascb *asd_ascb_alloc_list(struct asd_ha_struct 377struct asd_ascb *asd_ascb_alloc_list(struct asd_ha_struct
diff --git a/drivers/scsi/amiga7xx.h b/drivers/scsi/amiga7xx.h
index 1b637592d5ae..7cd63a996886 100644
--- a/drivers/scsi/amiga7xx.h
+++ b/drivers/scsi/amiga7xx.h
@@ -8,7 +8,7 @@ int NCR53c7xx_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
8int NCR53c7xx_abort(Scsi_Cmnd *); 8int NCR53c7xx_abort(Scsi_Cmnd *);
9int NCR53c7x0_release (struct Scsi_Host *); 9int NCR53c7x0_release (struct Scsi_Host *);
10int NCR53c7xx_reset(Scsi_Cmnd *, unsigned int); 10int NCR53c7xx_reset(Scsi_Cmnd *, unsigned int);
11void NCR53c7x0_intr(int irq, void *dev_id, struct pt_regs * regs); 11void NCR53c7x0_intr(int irq, void *dev_id);
12 12
13#ifndef CMD_PER_LUN 13#ifndef CMD_PER_LUN
14#define CMD_PER_LUN 3 14#define CMD_PER_LUN 3
diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c
index 475f978ff8f0..086cc97eee8c 100644
--- a/drivers/scsi/arcmsr/arcmsr_hba.c
+++ b/drivers/scsi/arcmsr/arcmsr_hba.c
@@ -147,8 +147,7 @@ static struct pci_driver arcmsr_pci_driver = {
147 .shutdown = arcmsr_shutdown 147 .shutdown = arcmsr_shutdown
148}; 148};
149 149
150static irqreturn_t arcmsr_do_interrupt(int irq, void *dev_id, 150static irqreturn_t arcmsr_do_interrupt(int irq, void *dev_id)
151 struct pt_regs *regs)
152{ 151{
153 irqreturn_t handle_state; 152 irqreturn_t handle_state;
154 struct AdapterControlBlock *acb; 153 struct AdapterControlBlock *acb;
diff --git a/drivers/scsi/arm/acornscsi.c b/drivers/scsi/arm/acornscsi.c
index 0525d672e1e6..9cf902b7a126 100644
--- a/drivers/scsi/arm/acornscsi.c
+++ b/drivers/scsi/arm/acornscsi.c
@@ -2461,14 +2461,13 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
2461} 2461}
2462 2462
2463/* 2463/*
2464 * Prototype: void acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs) 2464 * Prototype: void acornscsi_intr(int irq, void *dev_id)
2465 * Purpose : handle interrupts from Acorn SCSI card 2465 * Purpose : handle interrupts from Acorn SCSI card
2466 * Params : irq - interrupt number 2466 * Params : irq - interrupt number
2467 * dev_id - device specific data (AS_Host structure) 2467 * dev_id - device specific data (AS_Host structure)
2468 * regs - processor registers when interrupt occurred
2469 */ 2468 */
2470static irqreturn_t 2469static irqreturn_t
2471acornscsi_intr(int irq, void *dev_id, struct pt_regs *regs) 2470acornscsi_intr(int irq, void *dev_id)
2472{ 2471{
2473 AS_Host *host = (AS_Host *)dev_id; 2472 AS_Host *host = (AS_Host *)dev_id;
2474 intr_ret_t ret; 2473 intr_ret_t ret;
diff --git a/drivers/scsi/arm/cumana_2.c b/drivers/scsi/arm/cumana_2.c
index 719af0dcc0e5..19edd9c853d9 100644
--- a/drivers/scsi/arm/cumana_2.c
+++ b/drivers/scsi/arm/cumana_2.c
@@ -137,10 +137,9 @@ cumanascsi_2_terminator_ctl(struct Scsi_Host *host, int on_off)
137 * Purpose : handle interrupts from Cumana SCSI 2 card 137 * Purpose : handle interrupts from Cumana SCSI 2 card
138 * Params : irq - interrupt number 138 * Params : irq - interrupt number
139 * dev_id - user-defined (Scsi_Host structure) 139 * dev_id - user-defined (Scsi_Host structure)
140 * regs - processor registers at interrupt
141 */ 140 */
142static irqreturn_t 141static irqreturn_t
143cumanascsi_2_intr(int irq, void *dev_id, struct pt_regs *regs) 142cumanascsi_2_intr(int irq, void *dev_id)
144{ 143{
145 struct cumanascsi2_info *info = dev_id; 144 struct cumanascsi2_info *info = dev_id;
146 145
diff --git a/drivers/scsi/arm/eesox.c b/drivers/scsi/arm/eesox.c
index dcbb4b2b3fe0..3f876fb75469 100644
--- a/drivers/scsi/arm/eesox.c
+++ b/drivers/scsi/arm/eesox.c
@@ -138,10 +138,9 @@ eesoxscsi_terminator_ctl(struct Scsi_Host *host, int on_off)
138 * Purpose : handle interrupts from EESOX SCSI card 138 * Purpose : handle interrupts from EESOX SCSI card
139 * Params : irq - interrupt number 139 * Params : irq - interrupt number
140 * dev_id - user-defined (Scsi_Host structure) 140 * dev_id - user-defined (Scsi_Host structure)
141 * regs - processor registers at interrupt
142 */ 141 */
143static irqreturn_t 142static irqreturn_t
144eesoxscsi_intr(int irq, void *dev_id, struct pt_regs *regs) 143eesoxscsi_intr(int irq, void *dev_id)
145{ 144{
146 struct eesoxscsi_info *info = dev_id; 145 struct eesoxscsi_info *info = dev_id;
147 146
diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c
index b2c346a47052..ce159c15bc86 100644
--- a/drivers/scsi/arm/powertec.c
+++ b/drivers/scsi/arm/powertec.c
@@ -112,10 +112,8 @@ powertecscsi_terminator_ctl(struct Scsi_Host *host, int on_off)
112 * Purpose : handle interrupts from Powertec SCSI card 112 * Purpose : handle interrupts from Powertec SCSI card
113 * Params : irq - interrupt number 113 * Params : irq - interrupt number
114 * dev_id - user-defined (Scsi_Host structure) 114 * dev_id - user-defined (Scsi_Host structure)
115 * regs - processor registers at interrupt
116 */ 115 */
117static irqreturn_t 116static irqreturn_t powertecscsi_intr(int irq, void *dev_id)
118powertecscsi_intr(int irq, void *dev_id, struct pt_regs *regs)
119{ 117{
120 struct powertec_info *info = dev_id; 118 struct powertec_info *info = dev_id;
121 119
diff --git a/drivers/scsi/atari_NCR5380.c b/drivers/scsi/atari_NCR5380.c
index e397129c90d1..0f920c84ac0f 100644
--- a/drivers/scsi/atari_NCR5380.c
+++ b/drivers/scsi/atari_NCR5380.c
@@ -1262,7 +1262,7 @@ static void NCR5380_dma_complete( struct Scsi_Host *instance )
1262 * 1262 *
1263 */ 1263 */
1264 1264
1265static irqreturn_t NCR5380_intr (int irq, void *dev_id, struct pt_regs *regs) 1265static irqreturn_t NCR5380_intr (int irq, void *dev_id)
1266{ 1266{
1267 struct Scsi_Host *instance = first_instance; 1267 struct Scsi_Host *instance = first_instance;
1268 int done = 1, handled = 0; 1268 int done = 1, handled = 0;
diff --git a/drivers/scsi/atari_dma_emul.c b/drivers/scsi/atari_dma_emul.c
index 8d5d2a5da961..cdc710ea00fa 100644
--- a/drivers/scsi/atari_dma_emul.c
+++ b/drivers/scsi/atari_dma_emul.c
@@ -110,7 +110,7 @@ static inline void set_restdata_reg(unsigned char *cur_addr)
110} 110}
111 111
112/* 112/*
113 * void hades_dma_emulator(int irq, void *dummy, struct pt_regs *fp) 113 * void hades_dma_emulator(int irq, void *dummy)
114 * 114 *
115 * This code emulates TT SCSI DMA on the Hades. 115 * This code emulates TT SCSI DMA on the Hades.
116 * 116 *
@@ -140,7 +140,7 @@ static inline void set_restdata_reg(unsigned char *cur_addr)
140 * increased with one. 140 * increased with one.
141 */ 141 */
142 142
143static irqreturn_t hades_dma_emulator(int irq, void *dummy, struct pt_regs *fp) 143static irqreturn_t hades_dma_emulator(int irq, void *dummy)
144{ 144{
145 unsigned long dma_base; 145 unsigned long dma_base;
146 register unsigned long dma_cnt asm ("d3"); 146 register unsigned long dma_cnt asm ("d3");
diff --git a/drivers/scsi/atari_scsi.c b/drivers/scsi/atari_scsi.c
index e1be4a4387cd..dfb1bcfae82e 100644
--- a/drivers/scsi/atari_scsi.c
+++ b/drivers/scsi/atari_scsi.c
@@ -194,8 +194,8 @@ static int falcon_classify_cmd( Scsi_Cmnd *cmd );
194static unsigned long atari_dma_xfer_len( unsigned long wanted_len, 194static unsigned long atari_dma_xfer_len( unsigned long wanted_len,
195 Scsi_Cmnd *cmd, int write_flag ); 195 Scsi_Cmnd *cmd, int write_flag );
196#endif 196#endif
197static irqreturn_t scsi_tt_intr( int irq, void *dummy, struct pt_regs *fp); 197static irqreturn_t scsi_tt_intr( int irq, void *dummy);
198static irqreturn_t scsi_falcon_intr( int irq, void *dummy, struct pt_regs *fp); 198static irqreturn_t scsi_falcon_intr( int irq, void *dummy);
199static void falcon_release_lock_if_possible( struct NCR5380_hostdata * 199static void falcon_release_lock_if_possible( struct NCR5380_hostdata *
200 hostdata ); 200 hostdata );
201static void falcon_get_lock( void ); 201static void falcon_get_lock( void );
@@ -285,7 +285,7 @@ static int scsi_dma_is_ignored_buserr( unsigned char dma_stat )
285 * end-of-DMA, both SCSI ints are triggered simultaneously, so the NCR int has 285 * end-of-DMA, both SCSI ints are triggered simultaneously, so the NCR int has
286 * to clear the DMA int pending bit before it allows other level 6 interrupts. 286 * to clear the DMA int pending bit before it allows other level 6 interrupts.
287 */ 287 */
288static void scsi_dma_buserr (int irq, void *dummy, struct pt_regs *fp) 288static void scsi_dma_buserr (int irq, void *dummy)
289{ 289{
290 unsigned char dma_stat = tt_scsi_dma.dma_ctrl; 290 unsigned char dma_stat = tt_scsi_dma.dma_ctrl;
291 291
@@ -314,7 +314,7 @@ static void scsi_dma_buserr (int irq, void *dummy, struct pt_regs *fp)
314#endif 314#endif
315 315
316 316
317static irqreturn_t scsi_tt_intr (int irq, void *dummy, struct pt_regs *fp) 317static irqreturn_t scsi_tt_intr (int irq, void *dummy)
318{ 318{
319#ifdef REAL_DMA 319#ifdef REAL_DMA
320 int dma_stat; 320 int dma_stat;
@@ -406,7 +406,7 @@ static irqreturn_t scsi_tt_intr (int irq, void *dummy, struct pt_regs *fp)
406} 406}
407 407
408 408
409static irqreturn_t scsi_falcon_intr (int irq, void *dummy, struct pt_regs *fp) 409static irqreturn_t scsi_falcon_intr (int irq, void *dummy)
410{ 410{
411#ifdef REAL_DMA 411#ifdef REAL_DMA
412 int dma_stat; 412 int dma_stat;
diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index 0ec41f34f462..fec58cc47f1c 100644
--- a/drivers/scsi/atp870u.c
+++ b/drivers/scsi/atp870u.c
@@ -44,7 +44,7 @@ static void send_s870(struct atp_unit *dev,unsigned char c);
44static void is885(struct atp_unit *dev, unsigned int wkport,unsigned char c); 44static void is885(struct atp_unit *dev, unsigned int wkport,unsigned char c);
45static void tscam_885(void); 45static void tscam_885(void);
46 46
47static irqreturn_t atp870u_intr_handle(int irq, void *dev_id, struct pt_regs *regs) 47static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)
48{ 48{
49 unsigned long flags; 49 unsigned long flags;
50 unsigned short int tmpcip, id; 50 unsigned short int tmpcip, id;
diff --git a/drivers/scsi/bvme6000.h b/drivers/scsi/bvme6000.h
index 7c9c0366cc08..ea3e4b2b9220 100644
--- a/drivers/scsi/bvme6000.h
+++ b/drivers/scsi/bvme6000.h
@@ -9,7 +9,7 @@ int NCR53c7xx_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
9int NCR53c7xx_abort(Scsi_Cmnd *); 9int NCR53c7xx_abort(Scsi_Cmnd *);
10int NCR53c7x0_release (struct Scsi_Host *); 10int NCR53c7x0_release (struct Scsi_Host *);
11int NCR53c7xx_reset(Scsi_Cmnd *, unsigned int); 11int NCR53c7xx_reset(Scsi_Cmnd *, unsigned int);
12void NCR53c7x0_intr(int irq, void *dev_id, struct pt_regs * regs); 12void NCR53c7x0_intr(int irq, void *dev_id);
13 13
14#ifndef CMD_PER_LUN 14#ifndef CMD_PER_LUN
15#define CMD_PER_LUN 3 15#define CMD_PER_LUN 3
diff --git a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c
index c6118d99385e..e95b367d09ed 100644
--- a/drivers/scsi/dc395x.c
+++ b/drivers/scsi/dc395x.c
@@ -1219,7 +1219,7 @@ static void dump_register_info(struct AdapterCtlBlk *acb,
1219 srb, srb->cmd, srb->cmd->pid, 1219 srb, srb->cmd, srb->cmd->pid,
1220 srb->cmd->cmnd[0], srb->cmd->device->id, 1220 srb->cmd->cmnd[0], srb->cmd->device->id,
1221 srb->cmd->device->lun); 1221 srb->cmd->device->lun);
1222 printk(" sglist=%p cnt=%i idx=%i len=%Zd\n", 1222 printk(" sglist=%p cnt=%i idx=%i len=%zu\n",
1223 srb->segment_x, srb->sg_count, srb->sg_index, 1223 srb->segment_x, srb->sg_count, srb->sg_index,
1224 srb->total_xfer_length); 1224 srb->total_xfer_length);
1225 printk(" state=0x%04x status=0x%02x phase=0x%02x (%sconn.)\n", 1225 printk(" state=0x%04x status=0x%02x phase=0x%02x (%sconn.)\n",
@@ -1813,10 +1813,9 @@ static void dc395x_handle_interrupt(struct AdapterCtlBlk *acb,
1813} 1813}
1814 1814
1815 1815
1816static irqreturn_t dc395x_interrupt(int irq, void *dev_id, 1816static irqreturn_t dc395x_interrupt(int irq, void *dev_id)
1817 struct pt_regs *regs)
1818{ 1817{
1819 struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)dev_id; 1818 struct AdapterCtlBlk *acb = dev_id;
1820 u16 scsi_status; 1819 u16 scsi_status;
1821 u8 dma_status; 1820 u8 dma_status;
1822 irqreturn_t handled = IRQ_NONE; 1821 irqreturn_t handled = IRQ_NONE;
diff --git a/drivers/scsi/dec_esp.c b/drivers/scsi/dec_esp.c
index eb32062f7e68..c29ccbc44693 100644
--- a/drivers/scsi/dec_esp.c
+++ b/drivers/scsi/dec_esp.c
@@ -94,9 +94,9 @@ volatile unsigned char pmaz_cmd_buffer[16];
94 * via PIO. 94 * via PIO.
95 */ 95 */
96 96
97static irqreturn_t scsi_dma_merr_int(int, void *, struct pt_regs *); 97static irqreturn_t scsi_dma_merr_int(int, void *);
98static irqreturn_t scsi_dma_err_int(int, void *, struct pt_regs *); 98static irqreturn_t scsi_dma_err_int(int, void *);
99static irqreturn_t scsi_dma_int(int, void *, struct pt_regs *); 99static irqreturn_t scsi_dma_int(int, void *);
100 100
101static int dec_esp_detect(struct scsi_host_template * tpnt); 101static int dec_esp_detect(struct scsi_host_template * tpnt);
102 102
@@ -307,7 +307,7 @@ err_dealloc:
307} 307}
308 308
309/************************************************************* DMA Functions */ 309/************************************************************* DMA Functions */
310static irqreturn_t scsi_dma_merr_int(int irq, void *dev_id, struct pt_regs *regs) 310static irqreturn_t scsi_dma_merr_int(int irq, void *dev_id)
311{ 311{
312 printk("Got unexpected SCSI DMA Interrupt! < "); 312 printk("Got unexpected SCSI DMA Interrupt! < ");
313 printk("SCSI_DMA_MEMRDERR "); 313 printk("SCSI_DMA_MEMRDERR ");
@@ -316,14 +316,14 @@ static irqreturn_t scsi_dma_merr_int(int irq, void *dev_id, struct pt_regs *regs
316 return IRQ_HANDLED; 316 return IRQ_HANDLED;
317} 317}
318 318
319static irqreturn_t scsi_dma_err_int(int irq, void *dev_id, struct pt_regs *regs) 319static irqreturn_t scsi_dma_err_int(int irq, void *dev_id)
320{ 320{
321 /* empty */ 321 /* empty */
322 322
323 return IRQ_HANDLED; 323 return IRQ_HANDLED;
324} 324}
325 325
326static irqreturn_t scsi_dma_int(int irq, void *dev_id, struct pt_regs *regs) 326static irqreturn_t scsi_dma_int(int irq, void *dev_id)
327{ 327{
328 u32 scsi_next_ptr; 328 u32 scsi_next_ptr;
329 329
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
index b20b37661d6f..60b1b434eba7 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -1989,7 +1989,7 @@ static int adpt_ioctl(struct inode *inode, struct file *file, uint cmd,
1989} 1989}
1990 1990
1991 1991
1992static irqreturn_t adpt_isr(int irq, void *dev_id, struct pt_regs *regs) 1992static irqreturn_t adpt_isr(int irq, void *dev_id)
1993{ 1993{
1994 struct scsi_cmnd* cmd; 1994 struct scsi_cmnd* cmd;
1995 adpt_hba* pHba = dev_id; 1995 adpt_hba* pHba = dev_id;
diff --git a/drivers/scsi/dpti.h b/drivers/scsi/dpti.h
index 289983264929..fd79068c5869 100644
--- a/drivers/scsi/dpti.h
+++ b/drivers/scsi/dpti.h
@@ -263,7 +263,7 @@ struct sg_simple_element {
263static void adpt_i2o_sys_shutdown(void); 263static void adpt_i2o_sys_shutdown(void);
264static int adpt_init(void); 264static int adpt_init(void);
265static int adpt_i2o_build_sys_table(void); 265static int adpt_i2o_build_sys_table(void);
266static irqreturn_t adpt_isr(int irq, void *dev_id, struct pt_regs *regs); 266static irqreturn_t adpt_isr(int irq, void *dev_id);
267#ifdef REBOOT_NOTIFIER 267#ifdef REBOOT_NOTIFIER
268static int adpt_reboot_event(struct notifier_block *n, ulong code, void *p); 268static int adpt_reboot_event(struct notifier_block *n, ulong code, void *p);
269#endif 269#endif
diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c
index a5ff43b1b263..2d38025861a5 100644
--- a/drivers/scsi/eata.c
+++ b/drivers/scsi/eata.c
@@ -875,7 +875,7 @@ static unsigned long io_port[] = {
875/* But transfer orientation from the 16 bit data register is Little Endian */ 875/* But transfer orientation from the 16 bit data register is Little Endian */
876#define REG2H(x) le16_to_cpu(x) 876#define REG2H(x) le16_to_cpu(x)
877 877
878static irqreturn_t do_interrupt_handler(int, void *, struct pt_regs *); 878static irqreturn_t do_interrupt_handler(int, void *);
879static void flush_dev(struct scsi_device *, unsigned long, struct hostdata *, 879static void flush_dev(struct scsi_device *, unsigned long, struct hostdata *,
880 unsigned int); 880 unsigned int);
881static int do_trace = 0; 881static int do_trace = 0;
@@ -2555,8 +2555,7 @@ static irqreturn_t ihdlr(int irq, struct Scsi_Host *shost)
2555 return IRQ_NONE; 2555 return IRQ_NONE;
2556} 2556}
2557 2557
2558static irqreturn_t do_interrupt_handler(int irq, void *shap, 2558static irqreturn_t do_interrupt_handler(int irq, void *shap)
2559 struct pt_regs *regs)
2560{ 2559{
2561 struct Scsi_Host *shost; 2560 struct Scsi_Host *shost;
2562 unsigned int j; 2561 unsigned int j;
diff --git a/drivers/scsi/eata_pio.c b/drivers/scsi/eata_pio.c
index d312633db92b..811d8840707e 100644
--- a/drivers/scsi/eata_pio.c
+++ b/drivers/scsi/eata_pio.c
@@ -194,10 +194,9 @@ static void IncStat(struct scsi_pointer *SCp, unsigned int Increment)
194 } 194 }
195} 195}
196 196
197static irqreturn_t eata_pio_int_handler(int irq, void *dev_id, struct pt_regs *regs); 197static irqreturn_t eata_pio_int_handler(int irq, void *dev_id);
198 198
199static irqreturn_t do_eata_pio_int_handler(int irq, void *dev_id, 199static irqreturn_t do_eata_pio_int_handler(int irq, void *dev_id)
200 struct pt_regs *regs)
201{ 200{
202 unsigned long flags; 201 unsigned long flags;
203 struct Scsi_Host *dev = dev_id; 202 struct Scsi_Host *dev = dev_id;
@@ -209,7 +208,7 @@ static irqreturn_t do_eata_pio_int_handler(int irq, void *dev_id,
209 return ret; 208 return ret;
210} 209}
211 210
212static irqreturn_t eata_pio_int_handler(int irq, void *dev_id, struct pt_regs *regs) 211static irqreturn_t eata_pio_int_handler(int irq, void *dev_id)
213{ 212{
214 unsigned int eata_stat = 0xfffff; 213 unsigned int eata_stat = 0xfffff;
215 struct scsi_cmnd *cmd; 214 struct scsi_cmnd *cmd;
diff --git a/drivers/scsi/esp.c b/drivers/scsi/esp.c
index 5630868c1b25..2c2fe80bc42a 100644
--- a/drivers/scsi/esp.c
+++ b/drivers/scsi/esp.c
@@ -184,7 +184,7 @@ enum {
184}; 184};
185 185
186/* Forward declarations. */ 186/* Forward declarations. */
187static irqreturn_t esp_intr(int irq, void *dev_id, struct pt_regs *pregs); 187static irqreturn_t esp_intr(int irq, void *dev_id);
188 188
189/* Debugging routines */ 189/* Debugging routines */
190struct esp_cmdstrings { 190struct esp_cmdstrings {
@@ -4282,7 +4282,7 @@ state_machine:
4282} 4282}
4283 4283
4284/* Service only the ESP described by dev_id. */ 4284/* Service only the ESP described by dev_id. */
4285static irqreturn_t esp_intr(int irq, void *dev_id, struct pt_regs *pregs) 4285static irqreturn_t esp_intr(int irq, void *dev_id)
4286{ 4286{
4287 struct esp *esp = dev_id; 4287 struct esp *esp = dev_id;
4288 unsigned long flags; 4288 unsigned long flags;
diff --git a/drivers/scsi/fd_mcs.c b/drivers/scsi/fd_mcs.c
index dde3edf35c03..ef8285c326e4 100644
--- a/drivers/scsi/fd_mcs.c
+++ b/drivers/scsi/fd_mcs.c
@@ -281,7 +281,7 @@ static struct fd_mcs_adapters_struct fd_mcs_adapters[] = {
281 281
282#define FD_BRDS ARRAY_SIZE(fd_mcs_adapters) 282#define FD_BRDS ARRAY_SIZE(fd_mcs_adapters)
283 283
284static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs); 284static irqreturn_t fd_mcs_intr(int irq, void *dev_id);
285 285
286static unsigned long addresses[] = { 0xc8000, 0xca000, 0xce000, 0xde000 }; 286static unsigned long addresses[] = { 0xc8000, 0xca000, 0xce000, 0xde000 };
287static unsigned short ports[] = { 0x140, 0x150, 0x160, 0x170 }; 287static unsigned short ports[] = { 0x140, 0x150, 0x160, 0x170 };
@@ -617,7 +617,7 @@ static void my_done(struct Scsi_Host *shpnt, int error)
617} 617}
618 618
619/* only my_done needs to be protected */ 619/* only my_done needs to be protected */
620static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs) 620static irqreturn_t fd_mcs_intr(int irq, void *dev_id)
621{ 621{
622 unsigned long flags; 622 unsigned long flags;
623 int status; 623 int status;
diff --git a/drivers/scsi/fdomain.c b/drivers/scsi/fdomain.c
index b0694dcce246..41b05fc45380 100644
--- a/drivers/scsi/fdomain.c
+++ b/drivers/scsi/fdomain.c
@@ -403,8 +403,7 @@ static volatile int in_interrupt_flag;
403static int FIFO_Size = 0x2000; /* 8k FIFO for 403static int FIFO_Size = 0x2000; /* 8k FIFO for
404 pre-tmc18c30 chips */ 404 pre-tmc18c30 chips */
405 405
406static irqreturn_t do_fdomain_16x0_intr( int irq, void *dev_id, 406static irqreturn_t do_fdomain_16x0_intr( int irq, void *dev_id );
407 struct pt_regs * regs );
408/* Allow insmod parameters to be like LILO parameters. For example: 407/* Allow insmod parameters to be like LILO parameters. For example:
409 insmod fdomain fdomain=0x140,11 */ 408 insmod fdomain fdomain=0x140,11 */
410static char * fdomain = NULL; 409static char * fdomain = NULL;
@@ -1094,8 +1093,7 @@ static void my_done(int error)
1094#endif 1093#endif
1095} 1094}
1096 1095
1097static irqreturn_t do_fdomain_16x0_intr(int irq, void *dev_id, 1096static irqreturn_t do_fdomain_16x0_intr(int irq, void *dev_id)
1098 struct pt_regs * regs )
1099{ 1097{
1100 unsigned long flags; 1098 unsigned long flags;
1101 int status; 1099 int status;
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index 0f3eb22b979a..4bc14ad92e22 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -424,7 +424,7 @@
424 424
425static void gdth_delay(int milliseconds); 425static void gdth_delay(int milliseconds);
426static void gdth_eval_mapping(ulong32 size, ulong32 *cyls, int *heads, int *secs); 426static void gdth_eval_mapping(ulong32 size, ulong32 *cyls, int *heads, int *secs);
427static irqreturn_t gdth_interrupt(int irq, void *dev_id, struct pt_regs *regs); 427static irqreturn_t gdth_interrupt(int irq, void *dev_id);
428static int gdth_sync_event(int hanum,int service,unchar index,Scsi_Cmnd *scp); 428static int gdth_sync_event(int hanum,int service,unchar index,Scsi_Cmnd *scp);
429static int gdth_async_event(int hanum); 429static int gdth_async_event(int hanum);
430static void gdth_log_event(gdth_evt_data *dvr, char *buffer); 430static void gdth_log_event(gdth_evt_data *dvr, char *buffer);
@@ -1804,7 +1804,7 @@ static int gdth_wait(int hanum,int index,ulong32 time)
1804 1804
1805 gdth_from_wait = TRUE; 1805 gdth_from_wait = TRUE;
1806 do { 1806 do {
1807 gdth_interrupt((int)ha->irq,ha,NULL); 1807 gdth_interrupt((int)ha->irq,ha);
1808 if (wait_hanum==hanum && wait_index==index) { 1808 if (wait_hanum==hanum && wait_index==index) {
1809 answer_found = TRUE; 1809 answer_found = TRUE;
1810 break; 1810 break;
@@ -3406,7 +3406,7 @@ static void gdth_clear_events(void)
3406 3406
3407/* SCSI interface functions */ 3407/* SCSI interface functions */
3408 3408
3409static irqreturn_t gdth_interrupt(int irq,void *dev_id,struct pt_regs *regs) 3409static irqreturn_t gdth_interrupt(int irq,void *dev_id)
3410{ 3410{
3411 gdth_ha_str *ha2 = (gdth_ha_str *)dev_id; 3411 gdth_ha_str *ha2 = (gdth_ha_str *)dev_id;
3412 register gdth_ha_str *ha; 3412 register gdth_ha_str *ha;
diff --git a/drivers/scsi/gvp11.c b/drivers/scsi/gvp11.c
index 18dbe5c27dac..2f6c1137a6e5 100644
--- a/drivers/scsi/gvp11.c
+++ b/drivers/scsi/gvp11.c
@@ -24,7 +24,7 @@
24#define DMA(ptr) ((gvp11_scsiregs *)((ptr)->base)) 24#define DMA(ptr) ((gvp11_scsiregs *)((ptr)->base))
25#define HDATA(ptr) ((struct WD33C93_hostdata *)((ptr)->hostdata)) 25#define HDATA(ptr) ((struct WD33C93_hostdata *)((ptr)->hostdata))
26 26
27static irqreturn_t gvp11_intr (int irq, void *_instance, struct pt_regs *fp) 27static irqreturn_t gvp11_intr (int irq, void *_instance)
28{ 28{
29 unsigned long flags; 29 unsigned long flags;
30 unsigned int status; 30 unsigned int status;
diff --git a/drivers/scsi/hptiop.c b/drivers/scsi/hptiop.c
index 28bfb8f9f81d..bec83cbee59a 100644
--- a/drivers/scsi/hptiop.c
+++ b/drivers/scsi/hptiop.c
@@ -431,7 +431,7 @@ void hptiop_iop_request_callback(struct hptiop_hba *hba, u32 tag)
431 writel(tag, &hba->iop->outbound_queue); 431 writel(tag, &hba->iop->outbound_queue);
432} 432}
433 433
434static irqreturn_t hptiop_intr(int irq, void *dev_id, struct pt_regs *regs) 434static irqreturn_t hptiop_intr(int irq, void *dev_id)
435{ 435{
436 struct hptiop_hba *hba = dev_id; 436 struct hptiop_hba *hba = dev_id;
437 int handled; 437 int handled;
diff --git a/drivers/scsi/ibmmca.c b/drivers/scsi/ibmmca.c
index 2be1dc5d852a..0e57fb6964d5 100644
--- a/drivers/scsi/ibmmca.c
+++ b/drivers/scsi/ibmmca.c
@@ -497,8 +497,7 @@ static int option_setup(char *);
497static int ldn_access_load(int, int); 497static int ldn_access_load(int, int);
498static int ldn_access_total_read_write(int); 498static int ldn_access_total_read_write(int);
499 499
500static irqreturn_t interrupt_handler(int irq, void *dev_id, 500static irqreturn_t interrupt_handler(int irq, void *dev_id)
501 struct pt_regs *regs)
502{ 501{
503 int host_index, ihost_index; 502 int host_index, ihost_index;
504 unsigned int intr_reg; 503 unsigned int intr_reg;
diff --git a/drivers/scsi/ibmvscsi/rpa_vscsi.c b/drivers/scsi/ibmvscsi/rpa_vscsi.c
index 01b8ac641eb8..227c0f2f4d74 100644
--- a/drivers/scsi/ibmvscsi/rpa_vscsi.c
+++ b/drivers/scsi/ibmvscsi/rpa_vscsi.c
@@ -45,14 +45,11 @@ static unsigned int partition_number = -1;
45 * ibmvscsi_handle_event: - Interrupt handler for crq events 45 * ibmvscsi_handle_event: - Interrupt handler for crq events
46 * @irq: number of irq to handle, not used 46 * @irq: number of irq to handle, not used
47 * @dev_instance: ibmvscsi_host_data of host that received interrupt 47 * @dev_instance: ibmvscsi_host_data of host that received interrupt
48 * @regs: pt_regs with registers
49 * 48 *
50 * Disables interrupts and schedules srp_task 49 * Disables interrupts and schedules srp_task
51 * Always returns IRQ_HANDLED 50 * Always returns IRQ_HANDLED
52 */ 51 */
53static irqreturn_t ibmvscsi_handle_event(int irq, 52static irqreturn_t ibmvscsi_handle_event(int irq, void *dev_instance)
54 void *dev_instance,
55 struct pt_regs *regs)
56{ 53{
57 struct ibmvscsi_host_data *hostdata = 54 struct ibmvscsi_host_data *hostdata =
58 (struct ibmvscsi_host_data *)dev_instance; 55 (struct ibmvscsi_host_data *)dev_instance;
diff --git a/drivers/scsi/in2000.c b/drivers/scsi/in2000.c
index 59a4097f1254..312190a69389 100644
--- a/drivers/scsi/in2000.c
+++ b/drivers/scsi/in2000.c
@@ -829,7 +829,7 @@ static void transfer_bytes(Scsi_Cmnd * cmd, int data_in_dir)
829 * but it _does_ need to be able to compile and run in an SMP kernel.) 829 * but it _does_ need to be able to compile and run in an SMP kernel.)
830 */ 830 */
831 831
832static irqreturn_t in2000_intr(int irqnum, void *dev_id, struct pt_regs *ptregs) 832static irqreturn_t in2000_intr(int irqnum, void *dev_id)
833{ 833{
834 struct Scsi_Host *instance = dev_id; 834 struct Scsi_Host *instance = dev_id;
835 struct IN2000_hostdata *hostdata; 835 struct IN2000_hostdata *hostdata;
diff --git a/drivers/scsi/initio.c b/drivers/scsi/initio.c
index 9e10dac61cfd..911f2ff4a1f2 100644
--- a/drivers/scsi/initio.c
+++ b/drivers/scsi/initio.c
@@ -2748,7 +2748,7 @@ int tul_wait_done_disc(HCS * pCurHcb)
2748 return (tul_bad_seq(pCurHcb)); 2748 return (tul_bad_seq(pCurHcb));
2749} 2749}
2750 2750
2751static irqreturn_t i91u_intr(int irqno, void *dev_id, struct pt_regs *regs) 2751static irqreturn_t i91u_intr(int irqno, void *dev_id)
2752{ 2752{
2753 struct Scsi_Host *dev = dev_id; 2753 struct Scsi_Host *dev = dev_id;
2754 unsigned long flags; 2754 unsigned long flags;
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index e1fe9494125b..2dde821025f3 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -3880,12 +3880,11 @@ static irqreturn_t ipr_handle_other_interrupt(struct ipr_ioa_cfg *ioa_cfg,
3880 * ipr_isr - Interrupt service routine 3880 * ipr_isr - Interrupt service routine
3881 * @irq: irq number 3881 * @irq: irq number
3882 * @devp: pointer to ioa config struct 3882 * @devp: pointer to ioa config struct
3883 * @regs: pt_regs struct
3884 * 3883 *
3885 * Return value: 3884 * Return value:
3886 * IRQ_NONE / IRQ_HANDLED 3885 * IRQ_NONE / IRQ_HANDLED
3887 **/ 3886 **/
3888static irqreturn_t ipr_isr(int irq, void *devp, struct pt_regs *regs) 3887static irqreturn_t ipr_isr(int irq, void *devp)
3889{ 3888{
3890 struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)devp; 3889 struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)devp;
3891 unsigned long lock_flags = 0; 3890 unsigned long lock_flags = 0;
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c
index 9a9ab297cf17..f06a06ae6092 100644
--- a/drivers/scsi/ips.c
+++ b/drivers/scsi/ips.c
@@ -248,7 +248,7 @@ static int ips_eh_abort(struct scsi_cmnd *);
248static int ips_eh_reset(struct scsi_cmnd *); 248static int ips_eh_reset(struct scsi_cmnd *);
249static int ips_queue(struct scsi_cmnd *, void (*)(struct scsi_cmnd *)); 249static int ips_queue(struct scsi_cmnd *, void (*)(struct scsi_cmnd *));
250static const char *ips_info(struct Scsi_Host *); 250static const char *ips_info(struct Scsi_Host *);
251static irqreturn_t do_ipsintr(int, void *, struct pt_regs *); 251static irqreturn_t do_ipsintr(int, void *);
252static int ips_hainit(ips_ha_t *); 252static int ips_hainit(ips_ha_t *);
253static int ips_map_status(ips_ha_t *, ips_scb_t *, ips_stat_t *); 253static int ips_map_status(ips_ha_t *, ips_scb_t *, ips_stat_t *);
254static int ips_send_wait(ips_ha_t *, ips_scb_t *, int, int); 254static int ips_send_wait(ips_ha_t *, ips_scb_t *, int, int);
@@ -1328,7 +1328,7 @@ ips_slave_configure(struct scsi_device * SDptr)
1328/* */ 1328/* */
1329/****************************************************************************/ 1329/****************************************************************************/
1330static irqreturn_t 1330static irqreturn_t
1331do_ipsintr(int irq, void *dev_id, struct pt_regs * regs) 1331do_ipsintr(int irq, void *dev_id)
1332{ 1332{
1333 ips_ha_t *ha; 1333 ips_ha_t *ha;
1334 unsigned long cpu_flags; 1334 unsigned long cpu_flags;
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h
index 3d684496acde..1251788ce2a3 100644
--- a/drivers/scsi/lpfc/lpfc_crtn.h
+++ b/drivers/scsi/lpfc/lpfc_crtn.h
@@ -120,7 +120,7 @@ int lpfc_sli_queue_setup(struct lpfc_hba *);
120 120
121void lpfc_handle_eratt(struct lpfc_hba *); 121void lpfc_handle_eratt(struct lpfc_hba *);
122void lpfc_handle_latt(struct lpfc_hba *); 122void lpfc_handle_latt(struct lpfc_hba *);
123irqreturn_t lpfc_intr_handler(int, void *, struct pt_regs *); 123irqreturn_t lpfc_intr_handler(int, void *);
124 124
125void lpfc_read_rev(struct lpfc_hba *, LPFC_MBOXQ_t *); 125void lpfc_read_rev(struct lpfc_hba *, LPFC_MBOXQ_t *);
126void lpfc_config_ring(struct lpfc_hba *, int, LPFC_MBOXQ_t *); 126void lpfc_config_ring(struct lpfc_hba *, int, LPFC_MBOXQ_t *);
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 70f4d5a1348e..24a1779b9af4 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -3119,7 +3119,7 @@ lpfc_sli_flush_mbox_queue(struct lpfc_hba * phba)
3119} 3119}
3120 3120
3121irqreturn_t 3121irqreturn_t
3122lpfc_intr_handler(int irq, void *dev_id, struct pt_regs * regs) 3122lpfc_intr_handler(int irq, void *dev_id)
3123{ 3123{
3124 struct lpfc_hba *phba; 3124 struct lpfc_hba *phba;
3125 uint32_t ha_copy; 3125 uint32_t ha_copy;
diff --git a/drivers/scsi/mac53c94.c b/drivers/scsi/mac53c94.c
index 6422de72bf43..753d88306cd1 100644
--- a/drivers/scsi/mac53c94.c
+++ b/drivers/scsi/mac53c94.c
@@ -60,8 +60,8 @@ struct fsc_state {
60 60
61static void mac53c94_init(struct fsc_state *); 61static void mac53c94_init(struct fsc_state *);
62static void mac53c94_start(struct fsc_state *); 62static void mac53c94_start(struct fsc_state *);
63static void mac53c94_interrupt(int, void *, struct pt_regs *); 63static void mac53c94_interrupt(int, void *);
64static irqreturn_t do_mac53c94_interrupt(int, void *, struct pt_regs *); 64static irqreturn_t do_mac53c94_interrupt(int, void *);
65static void cmd_done(struct fsc_state *, int result); 65static void cmd_done(struct fsc_state *, int result);
66static void set_dma_cmds(struct fsc_state *, struct scsi_cmnd *); 66static void set_dma_cmds(struct fsc_state *, struct scsi_cmnd *);
67 67
@@ -177,18 +177,18 @@ static void mac53c94_start(struct fsc_state *state)
177 set_dma_cmds(state, cmd); 177 set_dma_cmds(state, cmd);
178} 178}
179 179
180static irqreturn_t do_mac53c94_interrupt(int irq, void *dev_id, struct pt_regs *ptregs) 180static irqreturn_t do_mac53c94_interrupt(int irq, void *dev_id)
181{ 181{
182 unsigned long flags; 182 unsigned long flags;
183 struct Scsi_Host *dev = ((struct fsc_state *) dev_id)->current_req->device->host; 183 struct Scsi_Host *dev = ((struct fsc_state *) dev_id)->current_req->device->host;
184 184
185 spin_lock_irqsave(dev->host_lock, flags); 185 spin_lock_irqsave(dev->host_lock, flags);
186 mac53c94_interrupt(irq, dev_id, ptregs); 186 mac53c94_interrupt(irq, dev_id);
187 spin_unlock_irqrestore(dev->host_lock, flags); 187 spin_unlock_irqrestore(dev->host_lock, flags);
188 return IRQ_HANDLED; 188 return IRQ_HANDLED;
189} 189}
190 190
191static void mac53c94_interrupt(int irq, void *dev_id, struct pt_regs *ptregs) 191static void mac53c94_interrupt(int irq, void *dev_id)
192{ 192{
193 struct fsc_state *state = (struct fsc_state *) dev_id; 193 struct fsc_state *state = (struct fsc_state *) dev_id;
194 struct mac53c94_regs __iomem *regs = state->regs; 194 struct mac53c94_regs __iomem *regs = state->regs;
diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c
index 118206d68c6c..3586fac9be9a 100644
--- a/drivers/scsi/mac_esp.c
+++ b/drivers/scsi/mac_esp.c
@@ -44,7 +44,7 @@
44/* #define DEBUG_MAC_ESP */ 44/* #define DEBUG_MAC_ESP */
45 45
46extern void esp_handle(struct NCR_ESP *esp); 46extern void esp_handle(struct NCR_ESP *esp);
47extern void mac_esp_intr(int irq, void *dev_id, struct pt_regs *pregs); 47extern void mac_esp_intr(int irq, void *dev_id);
48 48
49static int dma_bytes_sent(struct NCR_ESP * esp, int fifo_count); 49static int dma_bytes_sent(struct NCR_ESP * esp, int fifo_count);
50static int dma_can_transfer(struct NCR_ESP * esp, Scsi_Cmnd *sp); 50static int dma_can_transfer(struct NCR_ESP * esp, Scsi_Cmnd *sp);
@@ -88,7 +88,7 @@ static int setup_hostid = -1;
88 * set up properly! 88 * set up properly!
89 */ 89 */
90 90
91void mac_esp_intr(int irq, void *dev_id, struct pt_regs *pregs) 91void mac_esp_intr(int irq, void *dev_id)
92{ 92{
93 struct NCR_ESP *esp = (struct NCR_ESP *) dev_id; 93 struct NCR_ESP *esp = (struct NCR_ESP *) dev_id;
94 int irq_p = 0; 94 int irq_p = 0;
@@ -122,24 +122,24 @@ void mac_esp_intr(int irq, void *dev_id, struct pt_regs *pregs)
122 * acknowledge on the various machines 122 * acknowledge on the various machines
123 */ 123 */
124 124
125void scsi_esp_polled(int irq, void *dev_id, struct pt_regs *pregs) 125void scsi_esp_polled(int irq, void *dev_id)
126{ 126{
127 if (esp_initialized == 0) 127 if (esp_initialized == 0)
128 return; 128 return;
129 129
130 mac_esp_intr(irq, dev_id, pregs); 130 mac_esp_intr(irq, dev_id);
131} 131}
132 132
133void fake_intr(int irq, void *dev_id, struct pt_regs *pregs) 133void fake_intr(int irq, void *dev_id)
134{ 134{
135#ifdef DEBUG_MAC_ESP 135#ifdef DEBUG_MAC_ESP
136 printk("mac_esp: got irq\n"); 136 printk("mac_esp: got irq\n");
137#endif 137#endif
138 138
139 mac_esp_intr(irq, dev_id, pregs); 139 mac_esp_intr(irq, dev_id);
140} 140}
141 141
142irqreturn_t fake_drq(int irq, void *dev_id, struct pt_regs *pregs) 142irqreturn_t fake_drq(int irq, void *dev_id)
143{ 143{
144 printk("mac_esp: got drq\n"); 144 printk("mac_esp: got drq\n");
145 return IRQ_HANDLED; 145 return IRQ_HANDLED;
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
index b87bef69ba0f..86099fde1b2a 100644
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -1256,14 +1256,13 @@ bug_blocked_mailbox:
1256 * megaraid_isr_iomapped() 1256 * megaraid_isr_iomapped()
1257 * @irq - irq 1257 * @irq - irq
1258 * @devp - pointer to our soft state 1258 * @devp - pointer to our soft state
1259 * @regs - unused
1260 * 1259 *
1261 * Interrupt service routine for io-mapped controllers. 1260 * Interrupt service routine for io-mapped controllers.
1262 * Find out if our device is interrupting. If yes, acknowledge the interrupt 1261 * Find out if our device is interrupting. If yes, acknowledge the interrupt
1263 * and service the completed commands. 1262 * and service the completed commands.
1264 */ 1263 */
1265static irqreturn_t 1264static irqreturn_t
1266megaraid_isr_iomapped(int irq, void *devp, struct pt_regs *regs) 1265megaraid_isr_iomapped(int irq, void *devp)
1267{ 1266{
1268 adapter_t *adapter = devp; 1267 adapter_t *adapter = devp;
1269 unsigned long flags; 1268 unsigned long flags;
@@ -1333,14 +1332,13 @@ megaraid_isr_iomapped(int irq, void *devp, struct pt_regs *regs)
1333 * megaraid_isr_memmapped() 1332 * megaraid_isr_memmapped()
1334 * @irq - irq 1333 * @irq - irq
1335 * @devp - pointer to our soft state 1334 * @devp - pointer to our soft state
1336 * @regs - unused
1337 * 1335 *
1338 * Interrupt service routine for memory-mapped controllers. 1336 * Interrupt service routine for memory-mapped controllers.
1339 * Find out if our device is interrupting. If yes, acknowledge the interrupt 1337 * Find out if our device is interrupting. If yes, acknowledge the interrupt
1340 * and service the completed commands. 1338 * and service the completed commands.
1341 */ 1339 */
1342static irqreturn_t 1340static irqreturn_t
1343megaraid_isr_memmapped(int irq, void *devp, struct pt_regs *regs) 1341megaraid_isr_memmapped(int irq, void *devp)
1344{ 1342{
1345 adapter_t *adapter = devp; 1343 adapter_t *adapter = devp;
1346 unsigned long flags; 1344 unsigned long flags;
diff --git a/drivers/scsi/megaraid.h b/drivers/scsi/megaraid.h
index 4b75fe619d9c..66529f11d23c 100644
--- a/drivers/scsi/megaraid.h
+++ b/drivers/scsi/megaraid.h
@@ -991,8 +991,8 @@ static scb_t * mega_build_cmd(adapter_t *, Scsi_Cmnd *, int *);
991static void __mega_runpendq(adapter_t *); 991static void __mega_runpendq(adapter_t *);
992static int issue_scb_block(adapter_t *, u_char *); 992static int issue_scb_block(adapter_t *, u_char *);
993 993
994static irqreturn_t megaraid_isr_memmapped(int, void *, struct pt_regs *); 994static irqreturn_t megaraid_isr_memmapped(int, void *);
995static irqreturn_t megaraid_isr_iomapped(int, void *, struct pt_regs *); 995static irqreturn_t megaraid_isr_iomapped(int, void *);
996 996
997static void mega_free_scb(adapter_t *, scb_t *); 997static void mega_free_scb(adapter_t *, scb_t *);
998 998
diff --git a/drivers/scsi/megaraid/megaraid_mbox.c b/drivers/scsi/megaraid/megaraid_mbox.c
index 266b3910846b..c0edb662d863 100644
--- a/drivers/scsi/megaraid/megaraid_mbox.c
+++ b/drivers/scsi/megaraid/megaraid_mbox.c
@@ -120,7 +120,7 @@ static void megaraid_mbox_prepare_pthru(adapter_t *, scb_t *,
120static void megaraid_mbox_prepare_epthru(adapter_t *, scb_t *, 120static void megaraid_mbox_prepare_epthru(adapter_t *, scb_t *,
121 struct scsi_cmnd *); 121 struct scsi_cmnd *);
122 122
123static irqreturn_t megaraid_isr(int, void *, struct pt_regs *); 123static irqreturn_t megaraid_isr(int, void *);
124 124
125static void megaraid_mbox_dpc(unsigned long); 125static void megaraid_mbox_dpc(unsigned long);
126 126
@@ -2231,7 +2231,7 @@ megaraid_ack_sequence(adapter_t *adapter)
2231 * Interrupt service routine for memory-mapped mailbox controllers. 2231 * Interrupt service routine for memory-mapped mailbox controllers.
2232 */ 2232 */
2233static irqreturn_t 2233static irqreturn_t
2234megaraid_isr(int irq, void *devp, struct pt_regs *regs) 2234megaraid_isr(int irq, void *devp)
2235{ 2235{
2236 adapter_t *adapter = devp; 2236 adapter_t *adapter = devp;
2237 int handled; 2237 int handled;
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c
index 977b6e8d8525..7e4262f2af96 100644
--- a/drivers/scsi/megaraid/megaraid_sas.c
+++ b/drivers/scsi/megaraid/megaraid_sas.c
@@ -1293,7 +1293,7 @@ megasas_deplete_reply_queue(struct megasas_instance *instance, u8 alt_status)
1293/** 1293/**
1294 * megasas_isr - isr entry point 1294 * megasas_isr - isr entry point
1295 */ 1295 */
1296static irqreturn_t megasas_isr(int irq, void *devp, struct pt_regs *regs) 1296static irqreturn_t megasas_isr(int irq, void *devp)
1297{ 1297{
1298 return megasas_deplete_reply_queue((struct megasas_instance *)devp, 1298 return megasas_deplete_reply_queue((struct megasas_instance *)devp,
1299 DID_OK); 1299 DID_OK);
diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c
index 683fc7ae4b8f..1fd3c7590d31 100644
--- a/drivers/scsi/mesh.c
+++ b/drivers/scsi/mesh.c
@@ -185,7 +185,7 @@ struct mesh_state {
185 * Driver is too messy, we need a few prototypes... 185 * Driver is too messy, we need a few prototypes...
186 */ 186 */
187static void mesh_done(struct mesh_state *ms, int start_next); 187static void mesh_done(struct mesh_state *ms, int start_next);
188static void mesh_interrupt(int irq, void *dev_id, struct pt_regs *ptregs); 188static void mesh_interrupt(int irq, void *dev_id);
189static void cmd_complete(struct mesh_state *ms); 189static void cmd_complete(struct mesh_state *ms);
190static void set_dma_cmds(struct mesh_state *ms, struct scsi_cmnd *cmd); 190static void set_dma_cmds(struct mesh_state *ms, struct scsi_cmnd *cmd);
191static void halt_dma(struct mesh_state *ms); 191static void halt_dma(struct mesh_state *ms);
@@ -466,7 +466,7 @@ static void mesh_start_cmd(struct mesh_state *ms, struct scsi_cmnd *cmd)
466 dlog(ms, "intr b4 arb, intr/exc/err/fc=%.8x", 466 dlog(ms, "intr b4 arb, intr/exc/err/fc=%.8x",
467 MKWORD(mr->interrupt, mr->exception, 467 MKWORD(mr->interrupt, mr->exception,
468 mr->error, mr->fifo_count)); 468 mr->error, mr->fifo_count));
469 mesh_interrupt(0, (void *)ms, NULL); 469 mesh_interrupt(0, (void *)ms);
470 if (ms->phase != arbitrating) 470 if (ms->phase != arbitrating)
471 return; 471 return;
472 } 472 }
@@ -504,7 +504,7 @@ static void mesh_start_cmd(struct mesh_state *ms, struct scsi_cmnd *cmd)
504 dlog(ms, "intr after disresel, intr/exc/err/fc=%.8x", 504 dlog(ms, "intr after disresel, intr/exc/err/fc=%.8x",
505 MKWORD(mr->interrupt, mr->exception, 505 MKWORD(mr->interrupt, mr->exception,
506 mr->error, mr->fifo_count)); 506 mr->error, mr->fifo_count));
507 mesh_interrupt(0, (void *)ms, NULL); 507 mesh_interrupt(0, (void *)ms);
508 if (ms->phase != arbitrating) 508 if (ms->phase != arbitrating)
509 return; 509 return;
510 dlog(ms, "after intr after disresel, intr/exc/err/fc=%.8x", 510 dlog(ms, "after intr after disresel, intr/exc/err/fc=%.8x",
@@ -1015,13 +1015,13 @@ static void handle_reset(struct mesh_state *ms)
1015 out_8(&mr->sequence, SEQ_ENBRESEL); 1015 out_8(&mr->sequence, SEQ_ENBRESEL);
1016} 1016}
1017 1017
1018static irqreturn_t do_mesh_interrupt(int irq, void *dev_id, struct pt_regs *ptregs) 1018static irqreturn_t do_mesh_interrupt(int irq, void *dev_id)
1019{ 1019{
1020 unsigned long flags; 1020 unsigned long flags;
1021 struct Scsi_Host *dev = ((struct mesh_state *)dev_id)->host; 1021 struct Scsi_Host *dev = ((struct mesh_state *)dev_id)->host;
1022 1022
1023 spin_lock_irqsave(dev->host_lock, flags); 1023 spin_lock_irqsave(dev->host_lock, flags);
1024 mesh_interrupt(irq, dev_id, ptregs); 1024 mesh_interrupt(irq, dev_id);
1025 spin_unlock_irqrestore(dev->host_lock, flags); 1025 spin_unlock_irqrestore(dev->host_lock, flags);
1026 return IRQ_HANDLED; 1026 return IRQ_HANDLED;
1027} 1027}
@@ -1661,7 +1661,7 @@ static int mesh_queue(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))
1661 * handler (do_mesh_interrupt) or by other functions in 1661 * handler (do_mesh_interrupt) or by other functions in
1662 * exceptional circumstances 1662 * exceptional circumstances
1663 */ 1663 */
1664static void mesh_interrupt(int irq, void *dev_id, struct pt_regs *ptregs) 1664static void mesh_interrupt(int irq, void *dev_id)
1665{ 1665{
1666 struct mesh_state *ms = (struct mesh_state *) dev_id; 1666 struct mesh_state *ms = (struct mesh_state *) dev_id;
1667 volatile struct mesh_regs __iomem *mr = ms->mesh; 1667 volatile struct mesh_regs __iomem *mr = ms->mesh;
diff --git a/drivers/scsi/mvme147.c b/drivers/scsi/mvme147.c
index 9b991b746d1e..1ddd7a11a958 100644
--- a/drivers/scsi/mvme147.c
+++ b/drivers/scsi/mvme147.c
@@ -20,7 +20,7 @@
20 20
21static struct Scsi_Host *mvme147_host = NULL; 21static struct Scsi_Host *mvme147_host = NULL;
22 22
23static irqreturn_t mvme147_intr (int irq, void *dummy, struct pt_regs *fp) 23static irqreturn_t mvme147_intr (int irq, void *dummy)
24{ 24{
25 if (irq == MVME147_IRQ_SCSI_PORT) 25 if (irq == MVME147_IRQ_SCSI_PORT)
26 wd33c93_intr (mvme147_host); 26 wd33c93_intr (mvme147_host);
diff --git a/drivers/scsi/mvme16x.h b/drivers/scsi/mvme16x.h
index c7a12533fb2c..73e33b37a3f8 100644
--- a/drivers/scsi/mvme16x.h
+++ b/drivers/scsi/mvme16x.h
@@ -9,7 +9,7 @@ int NCR53c7xx_queue_command(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
9int NCR53c7xx_abort(Scsi_Cmnd *); 9int NCR53c7xx_abort(Scsi_Cmnd *);
10int NCR53c7x0_release (struct Scsi_Host *); 10int NCR53c7x0_release (struct Scsi_Host *);
11int NCR53c7xx_reset(Scsi_Cmnd *, unsigned int); 11int NCR53c7xx_reset(Scsi_Cmnd *, unsigned int);
12void NCR53c7x0_intr(int irq, void *dev_id, struct pt_regs * regs); 12void NCR53c7x0_intr(int irq, void *dev_id);
13 13
14#ifndef CMD_PER_LUN 14#ifndef CMD_PER_LUN
15#define CMD_PER_LUN 3 15#define CMD_PER_LUN 3
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index b28712df0b77..6cc2bc2f62be 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -8111,7 +8111,7 @@ printk("ncr53c8xx : command successfully queued\n");
8111 return sts; 8111 return sts;
8112} 8112}
8113 8113
8114irqreturn_t ncr53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs) 8114irqreturn_t ncr53c8xx_intr(int irq, void *dev_id)
8115{ 8115{
8116 unsigned long flags; 8116 unsigned long flags;
8117 struct Scsi_Host *shost = (struct Scsi_Host *)dev_id; 8117 struct Scsi_Host *shost = (struct Scsi_Host *)dev_id;
diff --git a/drivers/scsi/ncr53c8xx.h b/drivers/scsi/ncr53c8xx.h
index 78818b6684f8..cb8b7701431e 100644
--- a/drivers/scsi/ncr53c8xx.h
+++ b/drivers/scsi/ncr53c8xx.h
@@ -1322,7 +1322,7 @@ struct ncr_device {
1322 1322
1323extern struct Scsi_Host *ncr_attach(struct scsi_host_template *tpnt, int unit, struct ncr_device *device); 1323extern struct Scsi_Host *ncr_attach(struct scsi_host_template *tpnt, int unit, struct ncr_device *device);
1324extern int ncr53c8xx_release(struct Scsi_Host *host); 1324extern int ncr53c8xx_release(struct Scsi_Host *host);
1325irqreturn_t ncr53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs); 1325irqreturn_t ncr53c8xx_intr(int irq, void *dev_id);
1326extern int ncr53c8xx_init(void); 1326extern int ncr53c8xx_init(void);
1327extern void ncr53c8xx_exit(void); 1327extern void ncr53c8xx_exit(void);
1328 1328
diff --git a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c
index 1c624ce81897..7c13f6f4a4c6 100644
--- a/drivers/scsi/nsp32.c
+++ b/drivers/scsi/nsp32.c
@@ -256,7 +256,7 @@ static void nsp32_sack_negate (nsp32_hw_data *);
256static void nsp32_do_bus_reset(nsp32_hw_data *); 256static void nsp32_do_bus_reset(nsp32_hw_data *);
257 257
258/* hardware interrupt handler */ 258/* hardware interrupt handler */
259static irqreturn_t do_nsp32_isr(int, void *, struct pt_regs *); 259static irqreturn_t do_nsp32_isr(int, void *);
260 260
261/* initialize hardware */ 261/* initialize hardware */
262static int nsp32hw_init(nsp32_hw_data *); 262static int nsp32hw_init(nsp32_hw_data *);
@@ -1201,7 +1201,7 @@ static int nsp32hw_init(nsp32_hw_data *data)
1201 1201
1202 1202
1203/* interrupt routine */ 1203/* interrupt routine */
1204static irqreturn_t do_nsp32_isr(int irq, void *dev_id, struct pt_regs *regs) 1204static irqreturn_t do_nsp32_isr(int irq, void *dev_id)
1205{ 1205{
1206 nsp32_hw_data *data = dev_id; 1206 nsp32_hw_data *data = dev_id;
1207 unsigned int base = data->BaseAddress; 1207 unsigned int base = data->BaseAddress;
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c
index 053303d36118..b1d346049525 100644
--- a/drivers/scsi/pcmcia/nsp_cs.c
+++ b/drivers/scsi/pcmcia/nsp_cs.c
@@ -948,7 +948,7 @@ static int nsp_nexus(Scsi_Cmnd *SCpnt)
948/* 948/*
949 * interrupt handler 949 * interrupt handler
950 */ 950 */
951static irqreturn_t nspintr(int irq, void *dev_id, struct pt_regs *regs) 951static irqreturn_t nspintr(int irq, void *dev_id)
952{ 952{
953 unsigned int base; 953 unsigned int base;
954 unsigned char irq_status, irq_phase, phase; 954 unsigned char irq_status, irq_phase, phase;
diff --git a/drivers/scsi/pcmcia/nsp_cs.h b/drivers/scsi/pcmcia/nsp_cs.h
index 8908b8e5b78a..a88714f4c05b 100644
--- a/drivers/scsi/pcmcia/nsp_cs.h
+++ b/drivers/scsi/pcmcia/nsp_cs.h
@@ -346,7 +346,7 @@ static int nsp_reselected (Scsi_Cmnd *SCpnt);
346static struct Scsi_Host *nsp_detect(struct scsi_host_template *sht); 346static struct Scsi_Host *nsp_detect(struct scsi_host_template *sht);
347 347
348/* Interrupt handler */ 348/* Interrupt handler */
349//static irqreturn_t nspintr(int irq, void *dev_id, struct pt_regs *regs); 349//static irqreturn_t nspintr(int irq, void *dev_id);
350 350
351/* Module entry point*/ 351/* Module entry point*/
352static int __init nsp_cs_init(void); 352static int __init nsp_cs_init(void);
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c
index 0b65099acb1a..72fe5d055de1 100644
--- a/drivers/scsi/pcmcia/sym53c500_cs.c
+++ b/drivers/scsi/pcmcia/sym53c500_cs.c
@@ -363,7 +363,7 @@ SYM53C500_pio_write(int fast_pio, int base, unsigned char *request, unsigned int
363} 363}
364 364
365static irqreturn_t 365static irqreturn_t
366SYM53C500_intr(int irq, void *dev_id, struct pt_regs *regs) 366SYM53C500_intr(int irq, void *dev_id)
367{ 367{
368 unsigned long flags; 368 unsigned long flags;
369 struct Scsi_Host *dev = dev_id; 369 struct Scsi_Host *dev = dev_id;
diff --git a/drivers/scsi/psi240i.c b/drivers/scsi/psi240i.c
index 5c2cdf523c3b..a720c9265e66 100644
--- a/drivers/scsi/psi240i.c
+++ b/drivers/scsi/psi240i.c
@@ -247,12 +247,11 @@ static ULONG DecodeError (struct Scsi_Host *pshost, UCHAR status)
247 * 247 *
248 * Parameters: irq - Hardware IRQ number. 248 * Parameters: irq - Hardware IRQ number.
249 * dev_id - 249 * dev_id -
250 * regs -
251 * 250 *
252 * Returns: TRUE if drive is not ready in time. 251 * Returns: TRUE if drive is not ready in time.
253 * 252 *
254 ****************************************************************/ 253 ****************************************************************/
255static void Irq_Handler (int irq, void *dev_id, struct pt_regs *regs) 254static void Irq_Handler (int irq, void *dev_id)
256 { 255 {
257 struct Scsi_Host *shost; // Pointer to host data block 256 struct Scsi_Host *shost; // Pointer to host data block
258 PADAPTER240I padapter; // Pointer to adapter control structure 257 PADAPTER240I padapter; // Pointer to adapter control structure
@@ -368,13 +367,13 @@ irqerror:;
368 SCpnt->scsi_done (SCpnt); 367 SCpnt->scsi_done (SCpnt);
369 } 368 }
370 369
371static irqreturn_t do_Irq_Handler (int irq, void *dev_id, struct pt_regs *regs) 370static irqreturn_t do_Irq_Handler (int irq, void *dev_id)
372{ 371{
373 unsigned long flags; 372 unsigned long flags;
374 struct Scsi_Host *dev = dev_id; 373 struct Scsi_Host *dev = dev_id;
375 374
376 spin_lock_irqsave(dev->host_lock, flags); 375 spin_lock_irqsave(dev->host_lock, flags);
377 Irq_Handler(irq, dev_id, regs); 376 Irq_Handler(irq, dev_id);
378 spin_unlock_irqrestore(dev->host_lock, flags); 377 spin_unlock_irqrestore(dev->host_lock, flags);
379 return IRQ_HANDLED; 378 return IRQ_HANDLED;
380} 379}
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index 9f33e5946c0d..2521d548dd59 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -1113,7 +1113,7 @@ qla1280_enable_intrs(struct scsi_qla_host *ha)
1113 * Handles the H/W interrupt 1113 * Handles the H/W interrupt
1114 **************************************************************************/ 1114 **************************************************************************/
1115static irqreturn_t 1115static irqreturn_t
1116qla1280_intr_handler(int irq, void *dev_id, struct pt_regs *regs) 1116qla1280_intr_handler(int irq, void *dev_id)
1117{ 1117{
1118 struct scsi_qla_host *ha; 1118 struct scsi_qla_host *ha;
1119 struct device_reg __iomem *reg; 1119 struct device_reg __iomem *reg;
diff --git a/drivers/scsi/qla2xxx/qla_dbg.h b/drivers/scsi/qla2xxx/qla_dbg.h
index 533425338e05..90dad7e88985 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.h
+++ b/drivers/scsi/qla2xxx/qla_dbg.h
@@ -38,7 +38,7 @@
38* Macros use for debugging the driver. 38* Macros use for debugging the driver.
39*/ 39*/
40 40
41#define DEBUG(x) do { if (extended_error_logging) { x; } } while (0) 41#define DEBUG(x) do { if (qla2_extended_error_logging) { x; } } while (0)
42 42
43#if defined(QL_DEBUG_LEVEL_1) 43#if defined(QL_DEBUG_LEVEL_1)
44#define DEBUG1(x) do {x;} while (0) 44#define DEBUG1(x) do {x;} while (0)
@@ -46,12 +46,12 @@
46#define DEBUG1(x) do {} while (0) 46#define DEBUG1(x) do {} while (0)
47#endif 47#endif
48 48
49#define DEBUG2(x) do { if (extended_error_logging) { x; } } while (0) 49#define DEBUG2(x) do { if (qla2_extended_error_logging) { x; } } while (0)
50#define DEBUG2_3(x) do { if (extended_error_logging) { x; } } while (0) 50#define DEBUG2_3(x) do { if (qla2_extended_error_logging) { x; } } while (0)
51#define DEBUG2_3_11(x) do { if (extended_error_logging) { x; } } while (0) 51#define DEBUG2_3_11(x) do { if (qla2_extended_error_logging) { x; } } while (0)
52#define DEBUG2_9_10(x) do { if (extended_error_logging) { x; } } while (0) 52#define DEBUG2_9_10(x) do { if (qla2_extended_error_logging) { x; } } while (0)
53#define DEBUG2_11(x) do { if (extended_error_logging) { x; } } while (0) 53#define DEBUG2_11(x) do { if (qla2_extended_error_logging) { x; } } while (0)
54#define DEBUG2_13(x) do { if (extended_error_logging) { x; } } while (0) 54#define DEBUG2_13(x) do { if (qla2_extended_error_logging) { x; } } while (0)
55 55
56#if defined(QL_DEBUG_LEVEL_3) 56#if defined(QL_DEBUG_LEVEL_3)
57#define DEBUG3(x) do {x;} while (0) 57#define DEBUG3(x) do {x;} while (0)
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index c37a30aa2146..bab33f6d0bdb 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -2009,7 +2009,7 @@ struct isp_operations {
2009 char * (*pci_info_str) (struct scsi_qla_host *, char *); 2009 char * (*pci_info_str) (struct scsi_qla_host *, char *);
2010 char * (*fw_version_str) (struct scsi_qla_host *, char *); 2010 char * (*fw_version_str) (struct scsi_qla_host *, char *);
2011 2011
2012 irqreturn_t (*intr_handler) (int, void *, struct pt_regs *); 2012 irq_handler_t intr_handler;
2013 void (*enable_intrs) (struct scsi_qla_host *); 2013 void (*enable_intrs) (struct scsi_qla_host *);
2014 void (*disable_intrs) (struct scsi_qla_host *); 2014 void (*disable_intrs) (struct scsi_qla_host *);
2015 2015
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index bef7011378c6..7da69832d74c 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -60,7 +60,7 @@ extern int ql2xplogiabsentdevice;
60extern int ql2xloginretrycount; 60extern int ql2xloginretrycount;
61extern int ql2xfdmienable; 61extern int ql2xfdmienable;
62extern int ql2xallocfwdump; 62extern int ql2xallocfwdump;
63extern int extended_error_logging; 63extern int qla2_extended_error_logging;
64 64
65extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *); 65extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *);
66 66
@@ -217,9 +217,9 @@ qla2x00_set_idma_speed(scsi_qla_host_t *, uint16_t, uint16_t, uint16_t *);
217/* 217/*
218 * Global Function Prototypes in qla_isr.c source file. 218 * Global Function Prototypes in qla_isr.c source file.
219 */ 219 */
220extern irqreturn_t qla2100_intr_handler(int, void *, struct pt_regs *); 220extern irqreturn_t qla2100_intr_handler(int, void *);
221extern irqreturn_t qla2300_intr_handler(int, void *, struct pt_regs *); 221extern irqreturn_t qla2300_intr_handler(int, void *);
222extern irqreturn_t qla24xx_intr_handler(int, void *, struct pt_regs *); 222extern irqreturn_t qla24xx_intr_handler(int, void *);
223extern void qla2x00_process_response_queue(struct scsi_qla_host *); 223extern void qla2x00_process_response_queue(struct scsi_qla_host *);
224extern void qla24xx_process_response_queue(struct scsi_qla_host *); 224extern void qla24xx_process_response_queue(struct scsi_qla_host *);
225 225
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index d5d26273c04e..833b93085fd3 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1644,7 +1644,7 @@ qla2x00_nvram_config(scsi_qla_host_t *ha)
1644 * Set host adapter parameters. 1644 * Set host adapter parameters.
1645 */ 1645 */
1646 if (nv->host_p[0] & BIT_7) 1646 if (nv->host_p[0] & BIT_7)
1647 extended_error_logging = 1; 1647 qla2_extended_error_logging = 1;
1648 ha->flags.disable_risc_code_load = ((nv->host_p[0] & BIT_4) ? 1 : 0); 1648 ha->flags.disable_risc_code_load = ((nv->host_p[0] & BIT_4) ? 1 : 0);
1649 /* Always load RISC code on non ISP2[12]00 chips. */ 1649 /* Always load RISC code on non ISP2[12]00 chips. */
1650 if (!IS_QLA2100(ha) && !IS_QLA2200(ha)) 1650 if (!IS_QLA2100(ha) && !IS_QLA2200(ha))
diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h
index 45007ee58067..d3023338628f 100644
--- a/drivers/scsi/qla2xxx/qla_inline.h
+++ b/drivers/scsi/qla2xxx/qla_inline.h
@@ -104,7 +104,7 @@ static __inline__ void qla2x00_poll(scsi_qla_host_t *);
104static inline void 104static inline void
105qla2x00_poll(scsi_qla_host_t *ha) 105qla2x00_poll(scsi_qla_host_t *ha)
106{ 106{
107 ha->isp_ops.intr_handler(0, ha, NULL); 107 ha->isp_ops.intr_handler(0, ha);
108} 108}
109 109
110static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *); 110static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *);
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 5fa933cda992..626c7178a434 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -20,14 +20,13 @@ static void qla24xx_ms_entry(scsi_qla_host_t *, struct ct_entry_24xx *);
20 * qla2100_intr_handler() - Process interrupts for the ISP2100 and ISP2200. 20 * qla2100_intr_handler() - Process interrupts for the ISP2100 and ISP2200.
21 * @irq: 21 * @irq:
22 * @dev_id: SCSI driver HA context 22 * @dev_id: SCSI driver HA context
23 * @regs:
24 * 23 *
25 * Called by system whenever the host adapter generates an interrupt. 24 * Called by system whenever the host adapter generates an interrupt.
26 * 25 *
27 * Returns handled flag. 26 * Returns handled flag.
28 */ 27 */
29irqreturn_t 28irqreturn_t
30qla2100_intr_handler(int irq, void *dev_id, struct pt_regs *regs) 29qla2100_intr_handler(int irq, void *dev_id)
31{ 30{
32 scsi_qla_host_t *ha; 31 scsi_qla_host_t *ha;
33 struct device_reg_2xxx __iomem *reg; 32 struct device_reg_2xxx __iomem *reg;
@@ -100,14 +99,13 @@ qla2100_intr_handler(int irq, void *dev_id, struct pt_regs *regs)
100 * qla2300_intr_handler() - Process interrupts for the ISP23xx and ISP63xx. 99 * qla2300_intr_handler() - Process interrupts for the ISP23xx and ISP63xx.
101 * @irq: 100 * @irq:
102 * @dev_id: SCSI driver HA context 101 * @dev_id: SCSI driver HA context
103 * @regs:
104 * 102 *
105 * Called by system whenever the host adapter generates an interrupt. 103 * Called by system whenever the host adapter generates an interrupt.
106 * 104 *
107 * Returns handled flag. 105 * Returns handled flag.
108 */ 106 */
109irqreturn_t 107irqreturn_t
110qla2300_intr_handler(int irq, void *dev_id, struct pt_regs *regs) 108qla2300_intr_handler(int irq, void *dev_id)
111{ 109{
112 scsi_qla_host_t *ha; 110 scsi_qla_host_t *ha;
113 struct device_reg_2xxx __iomem *reg; 111 struct device_reg_2xxx __iomem *reg;
@@ -1338,14 +1336,13 @@ qla24xx_process_response_queue(struct scsi_qla_host *ha)
1338 * qla24xx_intr_handler() - Process interrupts for the ISP23xx and ISP63xx. 1336 * qla24xx_intr_handler() - Process interrupts for the ISP23xx and ISP63xx.
1339 * @irq: 1337 * @irq:
1340 * @dev_id: SCSI driver HA context 1338 * @dev_id: SCSI driver HA context
1341 * @regs:
1342 * 1339 *
1343 * Called by system whenever the host adapter generates an interrupt. 1340 * Called by system whenever the host adapter generates an interrupt.
1344 * 1341 *
1345 * Returns handled flag. 1342 * Returns handled flag.
1346 */ 1343 */
1347irqreturn_t 1344irqreturn_t
1348qla24xx_intr_handler(int irq, void *dev_id, struct pt_regs *regs) 1345qla24xx_intr_handler(int irq, void *dev_id)
1349{ 1346{
1350 scsi_qla_host_t *ha; 1347 scsi_qla_host_t *ha;
1351 struct device_reg_24xx __iomem *reg; 1348 struct device_reg_24xx __iomem *reg;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 3ba8c239f171..3f20d765563e 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -61,9 +61,9 @@ MODULE_PARM_DESC(ql2xallocfwdump,
61 "during HBA initialization. Memory allocation requirements " 61 "during HBA initialization. Memory allocation requirements "
62 "vary by ISP type. Default is 1 - allocate memory."); 62 "vary by ISP type. Default is 1 - allocate memory.");
63 63
64int extended_error_logging; 64int qla2_extended_error_logging;
65module_param(extended_error_logging, int, S_IRUGO|S_IRUSR); 65module_param(qla2_extended_error_logging, int, S_IRUGO|S_IRUSR);
66MODULE_PARM_DESC(extended_error_logging, 66MODULE_PARM_DESC(qla2_extended_error_logging,
67 "Option to enable extended error logging, " 67 "Option to enable extended error logging, "
68 "Default is 0 - no logging. 1 - log errors."); 68 "Default is 0 - no logging. 1 - log errors.");
69 69
@@ -2697,7 +2697,7 @@ qla2x00_module_init(void)
2697 2697
2698 /* Derive version string. */ 2698 /* Derive version string. */
2699 strcpy(qla2x00_version_str, QLA2XXX_VERSION); 2699 strcpy(qla2x00_version_str, QLA2XXX_VERSION);
2700 if (extended_error_logging) 2700 if (qla2_extended_error_logging)
2701 strcat(qla2x00_version_str, "-debug"); 2701 strcat(qla2x00_version_str, "-debug");
2702 2702
2703 qla2xxx_transport_template = 2703 qla2xxx_transport_template =
diff --git a/drivers/scsi/qla4xxx/ql4_dbg.h b/drivers/scsi/qla4xxx/ql4_dbg.h
index 56ddc227f846..3e99dcfd5a9f 100644
--- a/drivers/scsi/qla4xxx/ql4_dbg.h
+++ b/drivers/scsi/qla4xxx/ql4_dbg.h
@@ -22,14 +22,14 @@
22#endif 22#endif
23 23
24#if defined(QL_DEBUG_LEVEL_2) 24#if defined(QL_DEBUG_LEVEL_2)
25#define DEBUG2(x) do {if(extended_error_logging == 2) x;} while (0); 25#define DEBUG2(x) do {if(qla4_extended_error_logging == 2) x;} while (0);
26#define DEBUG2_3(x) do {x;} while (0); 26#define DEBUG2_3(x) do {x;} while (0);
27#else /* */ 27#else /* */
28#define DEBUG2(x) do {} while (0); 28#define DEBUG2(x) do {} while (0);
29#endif /* */ 29#endif /* */
30 30
31#if defined(QL_DEBUG_LEVEL_3) 31#if defined(QL_DEBUG_LEVEL_3)
32#define DEBUG3(x) do {if(extended_error_logging == 3) x;} while (0); 32#define DEBUG3(x) do {if(qla4_extended_error_logging == 3) x;} while (0);
33#else /* */ 33#else /* */
34#define DEBUG3(x) do {} while (0); 34#define DEBUG3(x) do {} while (0);
35#if !defined(QL_DEBUG_LEVEL_2) 35#if !defined(QL_DEBUG_LEVEL_2)
diff --git a/drivers/scsi/qla4xxx/ql4_glbl.h b/drivers/scsi/qla4xxx/ql4_glbl.h
index 418fb7a13a65..2c803edf2de8 100644
--- a/drivers/scsi/qla4xxx/ql4_glbl.h
+++ b/drivers/scsi/qla4xxx/ql4_glbl.h
@@ -13,7 +13,7 @@ int qla4xxx_send_command_to_isp(struct scsi_qla_host *ha, struct srb * srb);
13int qla4xxx_initialize_adapter(struct scsi_qla_host * ha, 13int qla4xxx_initialize_adapter(struct scsi_qla_host * ha,
14 uint8_t renew_ddb_list); 14 uint8_t renew_ddb_list);
15int qla4xxx_soft_reset(struct scsi_qla_host *ha); 15int qla4xxx_soft_reset(struct scsi_qla_host *ha);
16irqreturn_t qla4xxx_intr_handler(int irq, void *dev_id, struct pt_regs *regs); 16irqreturn_t qla4xxx_intr_handler(int irq, void *dev_id);
17 17
18void qla4xxx_free_ddb_list(struct scsi_qla_host * ha); 18void qla4xxx_free_ddb_list(struct scsi_qla_host * ha);
19void qla4xxx_process_aen(struct scsi_qla_host * ha, uint8_t process_aen); 19void qla4xxx_process_aen(struct scsi_qla_host * ha, uint8_t process_aen);
@@ -72,7 +72,7 @@ int qla4xxx_reinitialize_ddb_list(struct scsi_qla_host * ha);
72int qla4xxx_process_ddb_changed(struct scsi_qla_host * ha, 72int qla4xxx_process_ddb_changed(struct scsi_qla_host * ha,
73 uint32_t fw_ddb_index, uint32_t state); 73 uint32_t fw_ddb_index, uint32_t state);
74 74
75extern int extended_error_logging; 75extern int qla4_extended_error_logging;
76extern int ql4xdiscoverywait; 76extern int ql4xdiscoverywait;
77extern int ql4xdontresethba; 77extern int ql4xdontresethba;
78#endif /* _QLA4x_GBL_H */ 78#endif /* _QLA4x_GBL_H */
diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c
index b584317608d1..1e283321a59d 100644
--- a/drivers/scsi/qla4xxx/ql4_isr.c
+++ b/drivers/scsi/qla4xxx/ql4_isr.c
@@ -610,9 +610,8 @@ void qla4xxx_interrupt_service_routine(struct scsi_qla_host * ha,
610 * qla4xxx_intr_handler - hardware interrupt handler. 610 * qla4xxx_intr_handler - hardware interrupt handler.
611 * @irq: Unused 611 * @irq: Unused
612 * @dev_id: Pointer to host adapter structure 612 * @dev_id: Pointer to host adapter structure
613 * @regs: Unused
614 **/ 613 **/
615irqreturn_t qla4xxx_intr_handler(int irq, void *dev_id, struct pt_regs *regs) 614irqreturn_t qla4xxx_intr_handler(int irq, void *dev_id)
616{ 615{
617 struct scsi_qla_host *ha; 616 struct scsi_qla_host *ha;
618 uint32_t intr_status; 617 uint32_t intr_status;
diff --git a/drivers/scsi/qla4xxx/ql4_mbx.c b/drivers/scsi/qla4xxx/ql4_mbx.c
index ed977f70b2db..ef82399c0858 100644
--- a/drivers/scsi/qla4xxx/ql4_mbx.c
+++ b/drivers/scsi/qla4xxx/ql4_mbx.c
@@ -701,7 +701,7 @@ void qla4xxx_get_conn_event_log(struct scsi_qla_host * ha)
701 DEBUG3(printk("scsi%ld: Connection Event Log Dump (%d entries):\n", 701 DEBUG3(printk("scsi%ld: Connection Event Log Dump (%d entries):\n",
702 ha->host_no, num_valid_entries)); 702 ha->host_no, num_valid_entries));
703 703
704 if (extended_error_logging == 3) { 704 if (qla4_extended_error_logging == 3) {
705 if (oldest_entry == 0) { 705 if (oldest_entry == 0) {
706 /* Circular Buffer has not wrapped around */ 706 /* Circular Buffer has not wrapped around */
707 for (i=0; i < num_valid_entries; i++) { 707 for (i=0; i < num_valid_entries; i++) {
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 5036ebf013a5..178fcddcfd81 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -34,9 +34,9 @@ MODULE_PARM_DESC(ql4xdontresethba,
34 " default it will reset hba :0" 34 " default it will reset hba :0"
35 " set to 1 to avoid resetting HBA"); 35 " set to 1 to avoid resetting HBA");
36 36
37int extended_error_logging = 0; /* 0 = off, 1 = log errors */ 37int qla4_extended_error_logging = 0; /* 0 = off, 1 = log errors */
38module_param(extended_error_logging, int, S_IRUGO | S_IRUSR); 38module_param(qla4_extended_error_logging, int, S_IRUGO | S_IRUSR);
39MODULE_PARM_DESC(extended_error_logging, 39MODULE_PARM_DESC(qla4_extended_error_logging,
40 "Option to enable extended error logging, " 40 "Option to enable extended error logging, "
41 "Default is 0 - no logging, 1 - debug logging"); 41 "Default is 0 - no logging, 1 - debug logging");
42 42
@@ -1714,7 +1714,7 @@ static int __init qla4xxx_module_init(void)
1714 1714
1715 /* Derive version string. */ 1715 /* Derive version string. */
1716 strcpy(qla4xxx_version_str, QLA4XXX_DRIVER_VERSION); 1716 strcpy(qla4xxx_version_str, QLA4XXX_DRIVER_VERSION);
1717 if (extended_error_logging) 1717 if (qla4_extended_error_logging)
1718 strcat(qla4xxx_version_str, "-debug"); 1718 strcat(qla4xxx_version_str, "-debug");
1719 1719
1720 qla4xxx_scsi_transport = 1720 qla4xxx_scsi_transport =
diff --git a/drivers/scsi/qlogicfas408.c b/drivers/scsi/qlogicfas408.c
index 52fb2ec3da70..e0725353c99c 100644
--- a/drivers/scsi/qlogicfas408.c
+++ b/drivers/scsi/qlogicfas408.c
@@ -405,10 +405,10 @@ static unsigned int ql_pcmd(Scsi_Cmnd * cmd)
405 * Interrupt handler 405 * Interrupt handler
406 */ 406 */
407 407
408static void ql_ihandl(int irq, void *dev_id, struct pt_regs *regs) 408static void ql_ihandl(void *dev_id)
409{ 409{
410 Scsi_Cmnd *icmd; 410 Scsi_Cmnd *icmd;
411 struct Scsi_Host *host = (struct Scsi_Host *)dev_id; 411 struct Scsi_Host *host = dev_id;
412 struct qlogicfas408_priv *priv = get_priv_by_host(host); 412 struct qlogicfas408_priv *priv = get_priv_by_host(host);
413 int qbase = priv->qbase; 413 int qbase = priv->qbase;
414 REG0; 414 REG0;
@@ -432,13 +432,13 @@ static void ql_ihandl(int irq, void *dev_id, struct pt_regs *regs)
432 (icmd->scsi_done) (icmd); 432 (icmd->scsi_done) (icmd);
433} 433}
434 434
435irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id, struct pt_regs *regs) 435irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id)
436{ 436{
437 unsigned long flags; 437 unsigned long flags;
438 struct Scsi_Host *host = dev_id; 438 struct Scsi_Host *host = dev_id;
439 439
440 spin_lock_irqsave(host->host_lock, flags); 440 spin_lock_irqsave(host->host_lock, flags);
441 ql_ihandl(irq, dev_id, regs); 441 ql_ihandl(dev_id);
442 spin_unlock_irqrestore(host->host_lock, flags); 442 spin_unlock_irqrestore(host->host_lock, flags);
443 return IRQ_HANDLED; 443 return IRQ_HANDLED;
444} 444}
diff --git a/drivers/scsi/qlogicfas408.h b/drivers/scsi/qlogicfas408.h
index 4b3df2003660..8fd5555c75b1 100644
--- a/drivers/scsi/qlogicfas408.h
+++ b/drivers/scsi/qlogicfas408.h
@@ -102,7 +102,7 @@ struct qlogicfas408_priv {
102#define get_priv_by_cmd(x) (struct qlogicfas408_priv *)&((x)->device->host->hostdata[0]) 102#define get_priv_by_cmd(x) (struct qlogicfas408_priv *)&((x)->device->host->hostdata[0])
103#define get_priv_by_host(x) (struct qlogicfas408_priv *)&((x)->hostdata[0]) 103#define get_priv_by_host(x) (struct qlogicfas408_priv *)&((x)->hostdata[0])
104 104
105irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id, struct pt_regs *regs); 105irqreturn_t qlogicfas408_ihandl(int irq, void *dev_id);
106int qlogicfas408_queuecommand(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *)); 106int qlogicfas408_queuecommand(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *));
107int qlogicfas408_biosparam(struct scsi_device * disk, 107int qlogicfas408_biosparam(struct scsi_device * disk,
108 struct block_device *dev, 108 struct block_device *dev,
diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c
index 5b2f0741a55b..ed58bb489889 100644
--- a/drivers/scsi/qlogicpti.c
+++ b/drivers/scsi/qlogicpti.c
@@ -649,7 +649,7 @@ static int qlogicpti_verify_tmon(struct qlogicpti *qpti)
649 return 0; 649 return 0;
650} 650}
651 651
652static irqreturn_t qpti_intr(int irq, void *dev_id, struct pt_regs *regs); 652static irqreturn_t qpti_intr(int irq, void *dev_id);
653 653
654static void __init qpti_chain_add(struct qlogicpti *qpti) 654static void __init qpti_chain_add(struct qlogicpti *qpti)
655{ 655{
@@ -1297,7 +1297,7 @@ static struct scsi_cmnd *qlogicpti_intr_handler(struct qlogicpti *qpti)
1297 return done_queue; 1297 return done_queue;
1298} 1298}
1299 1299
1300static irqreturn_t qpti_intr(int irq, void *dev_id, struct pt_regs *regs) 1300static irqreturn_t qpti_intr(int irq, void *dev_id)
1301{ 1301{
1302 struct qlogicpti *qpti = dev_id; 1302 struct qlogicpti *qpti = dev_id;
1303 unsigned long flags; 1303 unsigned long flags;
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 3d355d054612..aff1b0cfd4b2 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -495,7 +495,7 @@ static int scsi_send_eh_cmnd(struct scsi_cmnd *scmd, unsigned char *cmnd,
495 memcpy(scmd->cmnd, cmnd, cmnd_size); 495 memcpy(scmd->cmnd, cmnd, cmnd_size);
496 496
497 if (copy_sense) { 497 if (copy_sense) {
498 int gfp_mask = GFP_ATOMIC; 498 gfp_t gfp_mask = GFP_ATOMIC;
499 499
500 if (shost->hostt->unchecked_isa_dma) 500 if (shost->hostt->unchecked_isa_dma)
501 gfp_mask |= __GFP_DMA; 501 gfp_mask |= __GFP_DMA;
diff --git a/drivers/scsi/seagate.c b/drivers/scsi/seagate.c
index 4e6666ceae26..8ff1f2866f7b 100644
--- a/drivers/scsi/seagate.c
+++ b/drivers/scsi/seagate.c
@@ -320,8 +320,8 @@ static Signature __initdata signatures[] = {
320 */ 320 */
321 321
322static int hostno = -1; 322static int hostno = -1;
323static void seagate_reconnect_intr (int, void *, struct pt_regs *); 323static void seagate_reconnect_intr (int, void *);
324static irqreturn_t do_seagate_reconnect_intr (int, void *, struct pt_regs *); 324static irqreturn_t do_seagate_reconnect_intr (int, void *);
325static int seagate_st0x_bus_reset(struct scsi_cmnd *); 325static int seagate_st0x_bus_reset(struct scsi_cmnd *);
326 326
327#ifdef FAST 327#ifdef FAST
@@ -619,19 +619,18 @@ static int should_reconnect = 0;
619 * asserting SEL. 619 * asserting SEL.
620 */ 620 */
621 621
622static irqreturn_t do_seagate_reconnect_intr(int irq, void *dev_id, 622static irqreturn_t do_seagate_reconnect_intr(int irq, void *dev_id)
623 struct pt_regs *regs)
624{ 623{
625 unsigned long flags; 624 unsigned long flags;
626 struct Scsi_Host *dev = dev_id; 625 struct Scsi_Host *dev = dev_id;
627 626
628 spin_lock_irqsave (dev->host_lock, flags); 627 spin_lock_irqsave (dev->host_lock, flags);
629 seagate_reconnect_intr (irq, dev_id, regs); 628 seagate_reconnect_intr (irq, dev_id);
630 spin_unlock_irqrestore (dev->host_lock, flags); 629 spin_unlock_irqrestore (dev->host_lock, flags);
631 return IRQ_HANDLED; 630 return IRQ_HANDLED;
632} 631}
633 632
634static void seagate_reconnect_intr (int irq, void *dev_id, struct pt_regs *regs) 633static void seagate_reconnect_intr (int irq, void *dev_id)
635{ 634{
636 int temp; 635 int temp;
637 struct scsi_cmnd *SCtmp; 636 struct scsi_cmnd *SCtmp;
diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c
index 4f1db6f2aae8..e81f97a35bc8 100644
--- a/drivers/scsi/sgiwd93.c
+++ b/drivers/scsi/sgiwd93.c
@@ -84,7 +84,7 @@ static inline unsigned long read_wd33c93_count(const wd33c93_regs regs)
84 return value; 84 return value;
85} 85}
86 86
87static irqreturn_t sgiwd93_intr(int irq, void *dev_id, struct pt_regs *regs) 87static irqreturn_t sgiwd93_intr(int irq, void *dev_id)
88{ 88{
89 struct Scsi_Host * host = (struct Scsi_Host *) dev_id; 89 struct Scsi_Host * host = (struct Scsi_Host *) dev_id;
90 unsigned long flags; 90 unsigned long flags;
diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c
index a54e6c1026b7..185c270bb043 100644
--- a/drivers/scsi/stex.c
+++ b/drivers/scsi/stex.c
@@ -871,7 +871,7 @@ update_status:
871 readl(base + IMR1); /* flush */ 871 readl(base + IMR1); /* flush */
872} 872}
873 873
874static irqreturn_t stex_intr(int irq, void *__hba, struct pt_regs *regs) 874static irqreturn_t stex_intr(int irq, void *__hba)
875{ 875{
876 struct st_hba *hba = __hba; 876 struct st_hba *hba = __hba;
877 void __iomem *base = hba->mmio_base; 877 void __iomem *base = hba->mmio_base;
diff --git a/drivers/scsi/sun3_NCR5380.c b/drivers/scsi/sun3_NCR5380.c
index 7f9bcef6adfa..5ec5af8e3379 100644
--- a/drivers/scsi/sun3_NCR5380.c
+++ b/drivers/scsi/sun3_NCR5380.c
@@ -1252,7 +1252,7 @@ static void NCR5380_dma_complete( struct Scsi_Host *instance )
1252 * 1252 *
1253 */ 1253 */
1254 1254
1255static irqreturn_t NCR5380_intr (int irq, void *dev_id, struct pt_regs *regs) 1255static irqreturn_t NCR5380_intr (int irq, void *dev_id)
1256{ 1256{
1257 struct Scsi_Host *instance = first_instance; 1257 struct Scsi_Host *instance = first_instance;
1258 int done = 1, handled = 0; 1258 int done = 1, handled = 0;
diff --git a/drivers/scsi/sun3_scsi.c b/drivers/scsi/sun3_scsi.c
index 44a99aeb8180..e625b4c5833a 100644
--- a/drivers/scsi/sun3_scsi.c
+++ b/drivers/scsi/sun3_scsi.c
@@ -102,7 +102,7 @@ static void NCR5380_print(struct Scsi_Host *instance);
102#define ENABLE_IRQ() enable_irq( IRQ_SUN3_SCSI ); 102#define ENABLE_IRQ() enable_irq( IRQ_SUN3_SCSI );
103 103
104 104
105static irqreturn_t scsi_sun3_intr(int irq, void *dummy, struct pt_regs *fp); 105static irqreturn_t scsi_sun3_intr(int irq, void *dummy);
106static inline unsigned char sun3scsi_read(int reg); 106static inline unsigned char sun3scsi_read(int reg);
107static inline void sun3scsi_write(int reg, int value); 107static inline void sun3scsi_write(int reg, int value);
108 108
@@ -371,7 +371,7 @@ const char * sun3scsi_info (struct Scsi_Host *spnt) {
371// safe bits for the CSR 371// safe bits for the CSR
372#define CSR_GOOD 0x060f 372#define CSR_GOOD 0x060f
373 373
374static irqreturn_t scsi_sun3_intr(int irq, void *dummy, struct pt_regs *fp) 374static irqreturn_t scsi_sun3_intr(int irq, void *dummy)
375{ 375{
376 unsigned short csr = dregs->csr; 376 unsigned short csr = dregs->csr;
377 int handled = 0; 377 int handled = 0;
@@ -388,7 +388,7 @@ static irqreturn_t scsi_sun3_intr(int irq, void *dummy, struct pt_regs *fp)
388 } 388 }
389 389
390 if(csr & (CSR_SDB_INT | CSR_DMA_INT)) { 390 if(csr & (CSR_SDB_INT | CSR_DMA_INT)) {
391 NCR5380_intr(irq, dummy, fp); 391 NCR5380_intr(irq, dummy);
392 handled = 1; 392 handled = 1;
393 } 393 }
394 394
diff --git a/drivers/scsi/sun3_scsi_vme.c b/drivers/scsi/sun3_scsi_vme.c
index f5742b84b27a..e8faab16567b 100644
--- a/drivers/scsi/sun3_scsi_vme.c
+++ b/drivers/scsi/sun3_scsi_vme.c
@@ -67,7 +67,7 @@ extern int sun3_map_test(unsigned long, char *);
67#define ENABLE_IRQ() 67#define ENABLE_IRQ()
68 68
69 69
70static irqreturn_t scsi_sun3_intr(int irq, void *dummy, struct pt_regs *fp); 70static irqreturn_t scsi_sun3_intr(int irq, void *dummy);
71static inline unsigned char sun3scsi_read(int reg); 71static inline unsigned char sun3scsi_read(int reg);
72static inline void sun3scsi_write(int reg, int value); 72static inline void sun3scsi_write(int reg, int value);
73 73
@@ -340,7 +340,7 @@ static const char * sun3scsi_info (struct Scsi_Host *spnt) {
340// safe bits for the CSR 340// safe bits for the CSR
341#define CSR_GOOD 0x060f 341#define CSR_GOOD 0x060f
342 342
343static irqreturn_t scsi_sun3_intr(int irq, void *dummy, struct pt_regs *fp) 343static irqreturn_t scsi_sun3_intr(int irq, void *dummy)
344{ 344{
345 unsigned short csr = dregs->csr; 345 unsigned short csr = dregs->csr;
346 int handled = 0; 346 int handled = 0;
@@ -371,7 +371,7 @@ static irqreturn_t scsi_sun3_intr(int irq, void *dummy, struct pt_regs *fp)
371 } 371 }
372 372
373 if(csr & (CSR_SDB_INT | CSR_DMA_INT)) { 373 if(csr & (CSR_SDB_INT | CSR_DMA_INT)) {
374 NCR5380_intr(irq, dummy, fp); 374 NCR5380_intr(irq, dummy);
375 handled = 1; 375 handled = 1;
376 } 376 }
377 377
diff --git a/drivers/scsi/sym53c416.c b/drivers/scsi/sym53c416.c
index 8640253d6215..32c883f1efa1 100644
--- a/drivers/scsi/sym53c416.c
+++ b/drivers/scsi/sym53c416.c
@@ -326,8 +326,7 @@ static __inline__ unsigned int sym53c416_write(int base, unsigned char *buffer,
326 return orig_len - len; 326 return orig_len - len;
327} 327}
328 328
329static irqreturn_t sym53c416_intr_handle(int irq, void *dev_id, 329static irqreturn_t sym53c416_intr_handle(int irq, void *dev_id)
330 struct pt_regs *regs)
331{ 330{
332 struct Scsi_Host *dev = dev_id; 331 struct Scsi_Host *dev = dev_id;
333 int base = 0; 332 int base = 0;
diff --git a/drivers/scsi/sym53c8xx_2/sym_glue.c b/drivers/scsi/sym53c8xx_2/sym_glue.c
index 739d3ef46a40..4d78c7e87cca 100644
--- a/drivers/scsi/sym53c8xx_2/sym_glue.c
+++ b/drivers/scsi/sym53c8xx_2/sym_glue.c
@@ -652,7 +652,7 @@ static int sym53c8xx_queue_command(struct scsi_cmnd *cmd,
652/* 652/*
653 * Linux entry point of the interrupt handler. 653 * Linux entry point of the interrupt handler.
654 */ 654 */
655static irqreturn_t sym53c8xx_intr(int irq, void *dev_id, struct pt_regs * regs) 655static irqreturn_t sym53c8xx_intr(int irq, void *dev_id)
656{ 656{
657 unsigned long flags; 657 unsigned long flags;
658 struct sym_hcb *np = (struct sym_hcb *)dev_id; 658 struct sym_hcb *np = (struct sym_hcb *)dev_id;
diff --git a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c
index 028d5f641cc6..d03aa6ce8fe8 100644
--- a/drivers/scsi/tmscsim.c
+++ b/drivers/scsi/tmscsim.c
@@ -700,9 +700,9 @@ dc390_InvalidCmd(struct dc390_acb* pACB)
700 700
701 701
702static irqreturn_t __inline__ 702static irqreturn_t __inline__
703DC390_Interrupt(int irq, void *dev_id, struct pt_regs *regs) 703DC390_Interrupt(void *dev_id)
704{ 704{
705 struct dc390_acb *pACB = (struct dc390_acb*)dev_id; 705 struct dc390_acb *pACB = dev_id;
706 struct dc390_dcb *pDCB; 706 struct dc390_dcb *pDCB;
707 struct dc390_srb *pSRB; 707 struct dc390_srb *pSRB;
708 u8 sstatus=0; 708 u8 sstatus=0;
@@ -811,12 +811,12 @@ DC390_Interrupt(int irq, void *dev_id, struct pt_regs *regs)
811 return IRQ_HANDLED; 811 return IRQ_HANDLED;
812} 812}
813 813
814static irqreturn_t do_DC390_Interrupt( int irq, void *dev_id, struct pt_regs *regs) 814static irqreturn_t do_DC390_Interrupt(int irq, void *dev_id)
815{ 815{
816 irqreturn_t ret; 816 irqreturn_t ret;
817 DEBUG1(printk (KERN_INFO "DC390: Irq (%i) caught: ", irq)); 817 DEBUG1(printk (KERN_INFO "DC390: Irq (%i) caught: ", irq));
818 /* Locking is done in DC390_Interrupt */ 818 /* Locking is done in DC390_Interrupt */
819 ret = DC390_Interrupt(irq, dev_id, regs); 819 ret = DC390_Interrupt(dev_id);
820 DEBUG1(printk (".. IRQ returned\n")); 820 DEBUG1(printk (".. IRQ returned\n"));
821 return ret; 821 return ret;
822} 822}
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c
index 57449611e714..3de08a15de40 100644
--- a/drivers/scsi/u14-34f.c
+++ b/drivers/scsi/u14-34f.c
@@ -634,7 +634,7 @@ static unsigned long io_port[] = {
634#define H2DEV(x) cpu_to_le32(x) 634#define H2DEV(x) cpu_to_le32(x)
635#define DEV2H(x) le32_to_cpu(x) 635#define DEV2H(x) le32_to_cpu(x)
636 636
637static irqreturn_t do_interrupt_handler(int, void *, struct pt_regs *); 637static irqreturn_t do_interrupt_handler(int, void *);
638static void flush_dev(struct scsi_device *, unsigned long, unsigned int, unsigned int); 638static void flush_dev(struct scsi_device *, unsigned long, unsigned int, unsigned int);
639static int do_trace = FALSE; 639static int do_trace = FALSE;
640static int setup_done = FALSE; 640static int setup_done = FALSE;
@@ -1932,8 +1932,7 @@ none:
1932 return IRQ_NONE; 1932 return IRQ_NONE;
1933} 1933}
1934 1934
1935static irqreturn_t do_interrupt_handler(int irq, void *shap, 1935static irqreturn_t do_interrupt_handler(int irq, void *shap) {
1936 struct pt_regs *regs) {
1937 unsigned int j; 1936 unsigned int j;
1938 unsigned long spin_flags; 1937 unsigned long spin_flags;
1939 irqreturn_t ret; 1938 irqreturn_t ret;
diff --git a/drivers/scsi/ultrastor.c b/drivers/scsi/ultrastor.c
index 0372aa9fa190..56906aba5ee3 100644
--- a/drivers/scsi/ultrastor.c
+++ b/drivers/scsi/ultrastor.c
@@ -287,8 +287,8 @@ static const unsigned short ultrastor_ports_14f[] = {
287}; 287};
288#endif 288#endif
289 289
290static void ultrastor_interrupt(int, void *, struct pt_regs *); 290static void ultrastor_interrupt(void *);
291static irqreturn_t do_ultrastor_interrupt(int, void *, struct pt_regs *); 291static irqreturn_t do_ultrastor_interrupt(int, void *);
292static inline void build_sg_list(struct mscp *, struct scsi_cmnd *SCpnt); 292static inline void build_sg_list(struct mscp *, struct scsi_cmnd *SCpnt);
293 293
294 294
@@ -893,7 +893,7 @@ static int ultrastor_abort(struct scsi_cmnd *SCpnt)
893 893
894 spin_lock_irqsave(host->host_lock, flags); 894 spin_lock_irqsave(host->host_lock, flags);
895 /* FIXME: Ewww... need to think about passing host around properly */ 895 /* FIXME: Ewww... need to think about passing host around properly */
896 ultrastor_interrupt(0, NULL, NULL); 896 ultrastor_interrupt(NULL);
897 spin_unlock_irqrestore(host->host_lock, flags); 897 spin_unlock_irqrestore(host->host_lock, flags);
898 return SUCCESS; 898 return SUCCESS;
899 } 899 }
@@ -1039,7 +1039,7 @@ int ultrastor_biosparam(struct scsi_device *sdev, struct block_device *bdev,
1039 return 0; 1039 return 0;
1040} 1040}
1041 1041
1042static void ultrastor_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1042static void ultrastor_interrupt(void *dev_id)
1043{ 1043{
1044 unsigned int status; 1044 unsigned int status;
1045#if ULTRASTOR_MAX_CMDS > 1 1045#if ULTRASTOR_MAX_CMDS > 1
@@ -1171,14 +1171,13 @@ static void ultrastor_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1171#endif 1171#endif
1172} 1172}
1173 1173
1174static irqreturn_t do_ultrastor_interrupt(int irq, void *dev_id, 1174static irqreturn_t do_ultrastor_interrupt(int irq, void *dev_id)
1175 struct pt_regs *regs)
1176{ 1175{
1177 unsigned long flags; 1176 unsigned long flags;
1178 struct Scsi_Host *dev = dev_id; 1177 struct Scsi_Host *dev = dev_id;
1179 1178
1180 spin_lock_irqsave(dev->host_lock, flags); 1179 spin_lock_irqsave(dev->host_lock, flags);
1181 ultrastor_interrupt(irq, dev_id, regs); 1180 ultrastor_interrupt(dev_id);
1182 spin_unlock_irqrestore(dev->host_lock, flags); 1181 spin_unlock_irqrestore(dev->host_lock, flags);
1183 return IRQ_HANDLED; 1182 return IRQ_HANDLED;
1184} 1183}
diff --git a/drivers/scsi/wd7000.c b/drivers/scsi/wd7000.c
index a0b61af48f1c..331e1cf159b0 100644
--- a/drivers/scsi/wd7000.c
+++ b/drivers/scsi/wd7000.c
@@ -998,7 +998,7 @@ static int make_code(unsigned hosterr, unsigned scsierr)
998#define wd7000_intr_ack(host) outb (0, host->iobase + ASC_INTR_ACK) 998#define wd7000_intr_ack(host) outb (0, host->iobase + ASC_INTR_ACK)
999 999
1000 1000
1001static irqreturn_t wd7000_intr(int irq, void *dev_id, struct pt_regs *regs) 1001static irqreturn_t wd7000_intr(int irq, void *dev_id)
1002{ 1002{
1003 Adapter *host = (Adapter *) dev_id; 1003 Adapter *host = (Adapter *) dev_id;
1004 int flag, icmb, errstatus, icmb_status; 1004 int flag, icmb, errstatus, icmb_status;
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c
index 76d83ade9857..6a1a568ca649 100644
--- a/drivers/serial/21285.c
+++ b/drivers/serial/21285.c
@@ -85,7 +85,7 @@ static void serial21285_enable_ms(struct uart_port *port)
85{ 85{
86} 86}
87 87
88static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *regs) 88static irqreturn_t serial21285_rx_chars(int irq, void *dev_id)
89{ 89{
90 struct uart_port *port = dev_id; 90 struct uart_port *port = dev_id;
91 struct tty_struct *tty = port->info->tty; 91 struct tty_struct *tty = port->info->tty;
@@ -123,7 +123,7 @@ static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *r
123 return IRQ_HANDLED; 123 return IRQ_HANDLED;
124} 124}
125 125
126static irqreturn_t serial21285_tx_chars(int irq, void *dev_id, struct pt_regs *regs) 126static irqreturn_t serial21285_tx_chars(int irq, void *dev_id)
127{ 127{
128 struct uart_port *port = dev_id; 128 struct uart_port *port = dev_id;
129 struct circ_buf *xmit = &port->info->xmit; 129 struct circ_buf *xmit = &port->info->xmit;
diff --git a/drivers/serial/68328serial.c b/drivers/serial/68328serial.c
index bac853c5abb5..9b8b585513ec 100644
--- a/drivers/serial/68328serial.c
+++ b/drivers/serial/68328serial.c
@@ -275,8 +275,7 @@ static void status_handle(struct m68k_serial *info, unsigned short status)
275 return; 275 return;
276} 276}
277 277
278static void receive_chars(struct m68k_serial *info, struct pt_regs *regs, 278static void receive_chars(struct m68k_serial *info, unsigned short rx)
279 unsigned short rx)
280{ 279{
281 struct tty_struct *tty = info->tty; 280 struct tty_struct *tty = info->tty;
282 m68328_uart *uart = &uart_addr[info->line]; 281 m68328_uart *uart = &uart_addr[info->line];
@@ -377,7 +376,7 @@ clear_and_return:
377/* 376/*
378 * This is the serial driver's generic interrupt routine 377 * This is the serial driver's generic interrupt routine
379 */ 378 */
380irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs * regs) 379irqreturn_t rs_interrupt(int irq, void *dev_id)
381{ 380{
382 struct m68k_serial * info; 381 struct m68k_serial * info;
383 m68328_uart *uart; 382 m68328_uart *uart;
@@ -394,10 +393,10 @@ irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs * regs)
394#ifdef USE_INTS 393#ifdef USE_INTS
395 tx = uart->utx.w; 394 tx = uart->utx.w;
396 395
397 if (rx & URX_DATA_READY) receive_chars(info, regs, rx); 396 if (rx & URX_DATA_READY) receive_chars(info, rx);
398 if (tx & UTX_TX_AVAIL) transmit_chars(info); 397 if (tx & UTX_TX_AVAIL) transmit_chars(info);
399#else 398#else
400 receive_chars(info, regs, rx); 399 receive_chars(info, rx);
401#endif 400#endif
402 return IRQ_HANDLED; 401 return IRQ_HANDLED;
403} 402}
diff --git a/drivers/serial/68360serial.c b/drivers/serial/68360serial.c
index 1b299e8c57cd..634ecca36a77 100644
--- a/drivers/serial/68360serial.c
+++ b/drivers/serial/68360serial.c
@@ -612,7 +612,7 @@ static _INLINE_ void check_modem_status(struct async_struct *info)
612 * This is the serial driver's interrupt routine for a single port 612 * This is the serial driver's interrupt routine for a single port
613 */ 613 */
614/* static void rs_360_interrupt(void *dev_id) */ /* until and if we start servicing irqs here */ 614/* static void rs_360_interrupt(void *dev_id) */ /* until and if we start servicing irqs here */
615static void rs_360_interrupt(int vec, void *dev_id, struct pt_regs *fp) 615static void rs_360_interrupt(int vec, void *dev_id)
616{ 616{
617 u_char events; 617 u_char events;
618 int idx; 618 int idx;
@@ -620,7 +620,7 @@ static void rs_360_interrupt(int vec, void *dev_id, struct pt_regs *fp)
620 volatile struct smc_regs *smcp; 620 volatile struct smc_regs *smcp;
621 volatile struct scc_regs *sccp; 621 volatile struct scc_regs *sccp;
622 622
623 info = (ser_info_t *)dev_id; 623 info = dev_id;
624 624
625 idx = PORT_NUM(info->state->smc_scc_num); 625 idx = PORT_NUM(info->state->smc_scc_num);
626 if (info->state->smc_scc_num & NUM_IS_SCC) { 626 if (info->state->smc_scc_num & NUM_IS_SCC) {
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index cc2a205d4230..e34bd03cfce7 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -1175,7 +1175,7 @@ static void serial8250_enable_ms(struct uart_port *port)
1175} 1175}
1176 1176
1177static void 1177static void
1178receive_chars(struct uart_8250_port *up, int *status, struct pt_regs *regs) 1178receive_chars(struct uart_8250_port *up, int *status)
1179{ 1179{
1180 struct tty_struct *tty = up->port.info->tty; 1180 struct tty_struct *tty = up->port.info->tty;
1181 unsigned char ch, lsr = *status; 1181 unsigned char ch, lsr = *status;
@@ -1233,7 +1233,7 @@ receive_chars(struct uart_8250_port *up, int *status, struct pt_regs *regs)
1233 else if (lsr & UART_LSR_FE) 1233 else if (lsr & UART_LSR_FE)
1234 flag = TTY_FRAME; 1234 flag = TTY_FRAME;
1235 } 1235 }
1236 if (uart_handle_sysrq_char(&up->port, ch, regs)) 1236 if (uart_handle_sysrq_char(&up->port, ch))
1237 goto ignore_char; 1237 goto ignore_char;
1238 1238
1239 uart_insert_char(&up->port, lsr, UART_LSR_OE, ch, flag); 1239 uart_insert_char(&up->port, lsr, UART_LSR_OE, ch, flag);
@@ -1309,7 +1309,7 @@ static unsigned int check_modem_status(struct uart_8250_port *up)
1309 * This handles the interrupt from one port. 1309 * This handles the interrupt from one port.
1310 */ 1310 */
1311static inline void 1311static inline void
1312serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs) 1312serial8250_handle_port(struct uart_8250_port *up)
1313{ 1313{
1314 unsigned int status; 1314 unsigned int status;
1315 1315
@@ -1320,7 +1320,7 @@ serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs)
1320 DEBUG_INTR("status = %x...", status); 1320 DEBUG_INTR("status = %x...", status);
1321 1321
1322 if (status & UART_LSR_DR) 1322 if (status & UART_LSR_DR)
1323 receive_chars(up, &status, regs); 1323 receive_chars(up, &status);
1324 check_modem_status(up); 1324 check_modem_status(up);
1325 if (status & UART_LSR_THRE) 1325 if (status & UART_LSR_THRE)
1326 transmit_chars(up); 1326 transmit_chars(up);
@@ -1342,7 +1342,7 @@ serial8250_handle_port(struct uart_8250_port *up, struct pt_regs *regs)
1342 * This means we need to loop through all ports. checking that they 1342 * This means we need to loop through all ports. checking that they
1343 * don't have an interrupt pending. 1343 * don't have an interrupt pending.
1344 */ 1344 */
1345static irqreturn_t serial8250_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1345static irqreturn_t serial8250_interrupt(int irq, void *dev_id)
1346{ 1346{
1347 struct irq_info *i = dev_id; 1347 struct irq_info *i = dev_id;
1348 struct list_head *l, *end = NULL; 1348 struct list_head *l, *end = NULL;
@@ -1361,7 +1361,7 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id, struct pt_regs *r
1361 1361
1362 iir = serial_in(up, UART_IIR); 1362 iir = serial_in(up, UART_IIR);
1363 if (!(iir & UART_IIR_NO_INT)) { 1363 if (!(iir & UART_IIR_NO_INT)) {
1364 serial8250_handle_port(up, regs); 1364 serial8250_handle_port(up);
1365 1365
1366 handled = 1; 1366 handled = 1;
1367 1367
@@ -1461,7 +1461,7 @@ static void serial8250_timeout(unsigned long data)
1461 1461
1462 iir = serial_in(up, UART_IIR); 1462 iir = serial_in(up, UART_IIR);
1463 if (!(iir & UART_IIR_NO_INT)) 1463 if (!(iir & UART_IIR_NO_INT))
1464 serial8250_handle_port(up, NULL); 1464 serial8250_handle_port(up);
1465 1465
1466 timeout = up->port.timeout; 1466 timeout = up->port.timeout;
1467 timeout = timeout > 6 ? (timeout / 2 - 2) : 1; 1467 timeout = timeout > 6 ? (timeout / 2 - 2) : 1;
diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c
index 7311d8487c96..4213fabc62bf 100644
--- a/drivers/serial/amba-pl010.c
+++ b/drivers/serial/amba-pl010.c
@@ -111,12 +111,7 @@ static void pl010_enable_ms(struct uart_port *port)
111 writel(cr, port->membase + UART010_CR); 111 writel(cr, port->membase + UART010_CR);
112} 112}
113 113
114static void 114static void pl010_rx_chars(struct uart_port *port)
115#ifdef SUPPORT_SYSRQ
116pl010_rx_chars(struct uart_port *port, struct pt_regs *regs)
117#else
118pl010_rx_chars(struct uart_port *port)
119#endif
120{ 115{
121 struct tty_struct *tty = port->info->tty; 116 struct tty_struct *tty = port->info->tty;
122 unsigned int status, ch, flag, rsr, max_count = 256; 117 unsigned int status, ch, flag, rsr, max_count = 256;
@@ -156,7 +151,7 @@ pl010_rx_chars(struct uart_port *port)
156 flag = TTY_FRAME; 151 flag = TTY_FRAME;
157 } 152 }
158 153
159 if (uart_handle_sysrq_char(port, ch, regs)) 154 if (uart_handle_sysrq_char(port, ch))
160 goto ignore_char; 155 goto ignore_char;
161 156
162 uart_insert_char(port, rsr, UART01x_RSR_OE, ch, flag); 157 uart_insert_char(port, rsr, UART01x_RSR_OE, ch, flag);
@@ -227,7 +222,7 @@ static void pl010_modem_status(struct uart_port *port)
227 wake_up_interruptible(&uap->port.info->delta_msr_wait); 222 wake_up_interruptible(&uap->port.info->delta_msr_wait);
228} 223}
229 224
230static irqreturn_t pl010_int(int irq, void *dev_id, struct pt_regs *regs) 225static irqreturn_t pl010_int(int irq, void *dev_id)
231{ 226{
232 struct uart_port *port = dev_id; 227 struct uart_port *port = dev_id;
233 unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; 228 unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT;
@@ -239,11 +234,7 @@ static irqreturn_t pl010_int(int irq, void *dev_id, struct pt_regs *regs)
239 if (status) { 234 if (status) {
240 do { 235 do {
241 if (status & (UART010_IIR_RTIS | UART010_IIR_RIS)) 236 if (status & (UART010_IIR_RTIS | UART010_IIR_RIS))
242#ifdef SUPPORT_SYSRQ
243 pl010_rx_chars(port, regs);
244#else
245 pl010_rx_chars(port); 237 pl010_rx_chars(port);
246#endif
247 if (status & UART010_IIR_MIS) 238 if (status & UART010_IIR_MIS)
248 pl010_modem_status(port); 239 pl010_modem_status(port);
249 if (status & UART010_IIR_TIS) 240 if (status & UART010_IIR_TIS)
diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c
index a8d7124e84a1..d503625730df 100644
--- a/drivers/serial/amba-pl011.c
+++ b/drivers/serial/amba-pl011.c
@@ -107,12 +107,7 @@ static void pl011_enable_ms(struct uart_port *port)
107 writew(uap->im, uap->port.membase + UART011_IMSC); 107 writew(uap->im, uap->port.membase + UART011_IMSC);
108} 108}
109 109
110static void 110static void pl011_rx_chars(struct uart_amba_port *uap)
111#ifdef SUPPORT_SYSRQ
112pl011_rx_chars(struct uart_amba_port *uap, struct pt_regs *regs)
113#else
114pl011_rx_chars(struct uart_amba_port *uap)
115#endif
116{ 111{
117 struct tty_struct *tty = uap->port.info->tty; 112 struct tty_struct *tty = uap->port.info->tty;
118 unsigned int status, ch, flag, max_count = 256; 113 unsigned int status, ch, flag, max_count = 256;
@@ -150,7 +145,7 @@ pl011_rx_chars(struct uart_amba_port *uap)
150 flag = TTY_FRAME; 145 flag = TTY_FRAME;
151 } 146 }
152 147
153 if (uart_handle_sysrq_char(&uap->port, ch & 255, regs)) 148 if (uart_handle_sysrq_char(&uap->port, ch & 255))
154 goto ignore_char; 149 goto ignore_char;
155 150
156 uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag); 151 uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag);
@@ -218,7 +213,7 @@ static void pl011_modem_status(struct uart_amba_port *uap)
218 wake_up_interruptible(&uap->port.info->delta_msr_wait); 213 wake_up_interruptible(&uap->port.info->delta_msr_wait);
219} 214}
220 215
221static irqreturn_t pl011_int(int irq, void *dev_id, struct pt_regs *regs) 216static irqreturn_t pl011_int(int irq, void *dev_id)
222{ 217{
223 struct uart_amba_port *uap = dev_id; 218 struct uart_amba_port *uap = dev_id;
224 unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; 219 unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT;
@@ -234,11 +229,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id, struct pt_regs *regs)
234 uap->port.membase + UART011_ICR); 229 uap->port.membase + UART011_ICR);
235 230
236 if (status & (UART011_RTIS|UART011_RXIS)) 231 if (status & (UART011_RTIS|UART011_RXIS))
237#ifdef SUPPORT_SYSRQ
238 pl011_rx_chars(uap, regs);
239#else
240 pl011_rx_chars(uap); 232 pl011_rx_chars(uap);
241#endif
242 if (status & (UART011_DSRMIS|UART011_DCDMIS| 233 if (status & (UART011_DSRMIS|UART011_DCDMIS|
243 UART011_CTSMIS|UART011_RIMIS)) 234 UART011_CTSMIS|UART011_RIMIS))
244 pl011_modem_status(uap); 235 pl011_modem_status(uap);
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c
index 955c46da5800..391a1f4167a4 100644
--- a/drivers/serial/atmel_serial.c
+++ b/drivers/serial/atmel_serial.c
@@ -249,7 +249,7 @@ static void atmel_break_ctl(struct uart_port *port, int break_state)
249/* 249/*
250 * Characters received (called from interrupt handler) 250 * Characters received (called from interrupt handler)
251 */ 251 */
252static void atmel_rx_chars(struct uart_port *port, struct pt_regs *regs) 252static void atmel_rx_chars(struct uart_port *port)
253{ 253{
254 struct tty_struct *tty = port->info->tty; 254 struct tty_struct *tty = port->info->tty;
255 unsigned int status, ch, flg; 255 unsigned int status, ch, flg;
@@ -291,7 +291,7 @@ static void atmel_rx_chars(struct uart_port *port, struct pt_regs *regs)
291 flg = TTY_FRAME; 291 flg = TTY_FRAME;
292 } 292 }
293 293
294 if (uart_handle_sysrq_char(port, ch, regs)) 294 if (uart_handle_sysrq_char(port, ch))
295 goto ignore_char; 295 goto ignore_char;
296 296
297 uart_insert_char(port, status, ATMEL_US_OVRE, ch, flg); 297 uart_insert_char(port, status, ATMEL_US_OVRE, ch, flg);
@@ -339,7 +339,7 @@ static void atmel_tx_chars(struct uart_port *port)
339/* 339/*
340 * Interrupt handler 340 * Interrupt handler
341 */ 341 */
342static irqreturn_t atmel_interrupt(int irq, void *dev_id, struct pt_regs *regs) 342static irqreturn_t atmel_interrupt(int irq, void *dev_id)
343{ 343{
344 struct uart_port *port = dev_id; 344 struct uart_port *port = dev_id;
345 struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port; 345 struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
@@ -350,7 +350,7 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id, struct pt_regs *regs)
350 while (pending) { 350 while (pending) {
351 /* Interrupt receive */ 351 /* Interrupt receive */
352 if (pending & ATMEL_US_RXRDY) 352 if (pending & ATMEL_US_RXRDY)
353 atmel_rx_chars(port, regs); 353 atmel_rx_chars(port);
354 354
355 // TODO: All reads to CSR will clear these interrupts! 355 // TODO: All reads to CSR will clear these interrupts!
356 if (pending & ATMEL_US_RIIC) port->icount.rng++; 356 if (pending & ATMEL_US_RIIC) port->icount.rng++;
diff --git a/drivers/serial/clps711x.c b/drivers/serial/clps711x.c
index f27d852ce50d..598012714882 100644
--- a/drivers/serial/clps711x.c
+++ b/drivers/serial/clps711x.c
@@ -93,7 +93,7 @@ static void clps711xuart_enable_ms(struct uart_port *port)
93{ 93{
94} 94}
95 95
96static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *regs) 96static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id)
97{ 97{
98 struct uart_port *port = dev_id; 98 struct uart_port *port = dev_id;
99 struct tty_struct *tty = port->info->tty; 99 struct tty_struct *tty = port->info->tty;
@@ -131,7 +131,7 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re
131#endif 131#endif
132 } 132 }
133 133
134 if (uart_handle_sysrq_char(port, ch, regs)) 134 if (uart_handle_sysrq_char(port, ch))
135 goto ignore_char; 135 goto ignore_char;
136 136
137 /* 137 /*
@@ -147,7 +147,7 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re
147 return IRQ_HANDLED; 147 return IRQ_HANDLED;
148} 148}
149 149
150static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) 150static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id)
151{ 151{
152 struct uart_port *port = dev_id; 152 struct uart_port *port = dev_id;
153 struct circ_buf *xmit = &port->info->xmit; 153 struct circ_buf *xmit = &port->info->xmit;
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c
index a0d6136deb9b..0abb544ae63d 100644
--- a/drivers/serial/cpm_uart/cpm_uart_core.c
+++ b/drivers/serial/cpm_uart/cpm_uart_core.c
@@ -248,7 +248,7 @@ static void cpm_uart_break_ctl(struct uart_port *port, int break_state)
248/* 248/*
249 * Transmit characters, refill buffer descriptor, if possible 249 * Transmit characters, refill buffer descriptor, if possible
250 */ 250 */
251static void cpm_uart_int_tx(struct uart_port *port, struct pt_regs *regs) 251static void cpm_uart_int_tx(struct uart_port *port)
252{ 252{
253 pr_debug("CPM uart[%d]:TX INT\n", port->line); 253 pr_debug("CPM uart[%d]:TX INT\n", port->line);
254 254
@@ -258,7 +258,7 @@ static void cpm_uart_int_tx(struct uart_port *port, struct pt_regs *regs)
258/* 258/*
259 * Receive characters 259 * Receive characters
260 */ 260 */
261static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs) 261static void cpm_uart_int_rx(struct uart_port *port)
262{ 262{
263 int i; 263 int i;
264 unsigned char ch, *cp; 264 unsigned char ch, *cp;
@@ -304,7 +304,7 @@ static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs)
304 if (status & 304 if (status &
305 (BD_SC_BR | BD_SC_FR | BD_SC_PR | BD_SC_OV)) 305 (BD_SC_BR | BD_SC_FR | BD_SC_PR | BD_SC_OV))
306 goto handle_error; 306 goto handle_error;
307 if (uart_handle_sysrq_char(port, ch, regs)) 307 if (uart_handle_sysrq_char(port, ch))
308 continue; 308 continue;
309 309
310 error_return: 310 error_return:
@@ -373,7 +373,7 @@ static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs)
373/* 373/*
374 * Asynchron mode interrupt handler 374 * Asynchron mode interrupt handler
375 */ 375 */
376static irqreturn_t cpm_uart_int(int irq, void *data, struct pt_regs *regs) 376static irqreturn_t cpm_uart_int(int irq, void *data)
377{ 377{
378 u8 events; 378 u8 events;
379 struct uart_port *port = (struct uart_port *)data; 379 struct uart_port *port = (struct uart_port *)data;
@@ -389,18 +389,18 @@ static irqreturn_t cpm_uart_int(int irq, void *data, struct pt_regs *regs)
389 if (events & SMCM_BRKE) 389 if (events & SMCM_BRKE)
390 uart_handle_break(port); 390 uart_handle_break(port);
391 if (events & SMCM_RX) 391 if (events & SMCM_RX)
392 cpm_uart_int_rx(port, regs); 392 cpm_uart_int_rx(port);
393 if (events & SMCM_TX) 393 if (events & SMCM_TX)
394 cpm_uart_int_tx(port, regs); 394 cpm_uart_int_tx(port);
395 } else { 395 } else {
396 events = sccp->scc_scce; 396 events = sccp->scc_scce;
397 sccp->scc_scce = events; 397 sccp->scc_scce = events;
398 if (events & UART_SCCM_BRKE) 398 if (events & UART_SCCM_BRKE)
399 uart_handle_break(port); 399 uart_handle_break(port);
400 if (events & UART_SCCM_RX) 400 if (events & UART_SCCM_RX)
401 cpm_uart_int_rx(port, regs); 401 cpm_uart_int_rx(port);
402 if (events & UART_SCCM_TX) 402 if (events & UART_SCCM_TX)
403 cpm_uart_int_tx(port, regs); 403 cpm_uart_int_tx(port);
404 } 404 }
405 return (events) ? IRQ_HANDLED : IRQ_NONE; 405 return (events) ? IRQ_HANDLED : IRQ_NONE;
406} 406}
diff --git a/drivers/serial/crisv10.c b/drivers/serial/crisv10.c
index 9851d9eff022..7a24e53546c7 100644
--- a/drivers/serial/crisv10.c
+++ b/drivers/serial/crisv10.c
@@ -2346,7 +2346,7 @@ start_receive(struct e100_serial *info)
2346*/ 2346*/
2347 2347
2348static irqreturn_t 2348static irqreturn_t
2349tr_interrupt(int irq, void *dev_id, struct pt_regs * regs) 2349tr_interrupt(int irq, void *dev_id)
2350{ 2350{
2351 struct e100_serial *info; 2351 struct e100_serial *info;
2352 unsigned long ireg; 2352 unsigned long ireg;
@@ -2395,7 +2395,7 @@ tr_interrupt(int irq, void *dev_id, struct pt_regs * regs)
2395/* dma input channel interrupt handler */ 2395/* dma input channel interrupt handler */
2396 2396
2397static irqreturn_t 2397static irqreturn_t
2398rec_interrupt(int irq, void *dev_id, struct pt_regs * regs) 2398rec_interrupt(int irq, void *dev_id)
2399{ 2399{
2400 struct e100_serial *info; 2400 struct e100_serial *info;
2401 unsigned long ireg; 2401 unsigned long ireg;
@@ -3054,7 +3054,7 @@ static void handle_ser_tx_interrupt(struct e100_serial *info)
3054 * ser_int duration: just sending: 8-15 us normally, up to 73 us 3054 * ser_int duration: just sending: 8-15 us normally, up to 73 us
3055 */ 3055 */
3056static irqreturn_t 3056static irqreturn_t
3057ser_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3057ser_interrupt(int irq, void *dev_id)
3058{ 3058{
3059 static volatile int tx_started = 0; 3059 static volatile int tx_started = 0;
3060 struct e100_serial *info; 3060 struct e100_serial *info;
diff --git a/drivers/serial/dz.c b/drivers/serial/dz.c
index 8a98aae80e22..53662b33b841 100644
--- a/drivers/serial/dz.c
+++ b/drivers/serial/dz.c
@@ -339,7 +339,7 @@ static inline void check_modem_status(struct dz_port *dport)
339 * It deals with the multiple ports. 339 * It deals with the multiple ports.
340 * ------------------------------------------------------------ 340 * ------------------------------------------------------------
341 */ 341 */
342static irqreturn_t dz_interrupt(int irq, void *dev, struct pt_regs *regs) 342static irqreturn_t dz_interrupt(int irq, void *dev)
343{ 343{
344 struct dz_port *dport; 344 struct dz_port *dport;
345 unsigned short status; 345 unsigned short status;
diff --git a/drivers/serial/icom.c b/drivers/serial/icom.c
index a3c00a252149..8aa0f641866b 100644
--- a/drivers/serial/icom.c
+++ b/drivers/serial/icom.c
@@ -844,8 +844,7 @@ static void process_interrupt(u16 port_int_reg,
844 spin_unlock(&icom_port->uart_port.lock); 844 spin_unlock(&icom_port->uart_port.lock);
845} 845}
846 846
847static irqreturn_t icom_interrupt(int irq, void *dev_id, 847static irqreturn_t icom_interrupt(int irq, void *dev_id)
848 struct pt_regs *regs)
849{ 848{
850 void __iomem * int_reg; 849 void __iomem * int_reg;
851 u32 adapter_interrupts; 850 u32 adapter_interrupts;
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c
index 4a142d6b8f38..ee5c782597dd 100644
--- a/drivers/serial/imx.c
+++ b/drivers/serial/imx.c
@@ -182,7 +182,7 @@ static void imx_start_tx(struct uart_port *port)
182 imx_transmit_buffer(sport); 182 imx_transmit_buffer(sport);
183} 183}
184 184
185static irqreturn_t imx_rtsint(int irq, void *dev_id, struct pt_regs *regs) 185static irqreturn_t imx_rtsint(int irq, void *dev_id)
186{ 186{
187 struct imx_port *sport = (struct imx_port *)dev_id; 187 struct imx_port *sport = (struct imx_port *)dev_id;
188 unsigned int val = USR1((u32)sport->port.membase)&USR1_RTSS; 188 unsigned int val = USR1((u32)sport->port.membase)&USR1_RTSS;
@@ -198,7 +198,7 @@ static irqreturn_t imx_rtsint(int irq, void *dev_id, struct pt_regs *regs)
198 return IRQ_HANDLED; 198 return IRQ_HANDLED;
199} 199}
200 200
201static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs) 201static irqreturn_t imx_txint(int irq, void *dev_id)
202{ 202{
203 struct imx_port *sport = (struct imx_port *)dev_id; 203 struct imx_port *sport = (struct imx_port *)dev_id;
204 struct circ_buf *xmit = &sport->port.info->xmit; 204 struct circ_buf *xmit = &sport->port.info->xmit;
@@ -227,7 +227,7 @@ out:
227 return IRQ_HANDLED; 227 return IRQ_HANDLED;
228} 228}
229 229
230static irqreturn_t imx_rxint(int irq, void *dev_id, struct pt_regs *regs) 230static irqreturn_t imx_rxint(int irq, void *dev_id)
231{ 231{
232 struct imx_port *sport = dev_id; 232 struct imx_port *sport = dev_id;
233 unsigned int rx,flg,ignored = 0; 233 unsigned int rx,flg,ignored = 0;
@@ -248,7 +248,7 @@ static irqreturn_t imx_rxint(int irq, void *dev_id, struct pt_regs *regs)
248 } 248 }
249 249
250 if (uart_handle_sysrq_char 250 if (uart_handle_sysrq_char
251 (&sport->port, (unsigned char)rx, regs)) 251 (&sport->port, (unsigned char)rx))
252 goto ignore_char; 252 goto ignore_char;
253 253
254 if( rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR) ) 254 if( rx & (URXD_PRERR | URXD_OVRRUN | URXD_FRMERR) )
diff --git a/drivers/serial/ioc3_serial.c b/drivers/serial/ioc3_serial.c
index 8097cd91f16b..2308d26c8629 100644
--- a/drivers/serial/ioc3_serial.c
+++ b/drivers/serial/ioc3_serial.c
@@ -1428,13 +1428,12 @@ static int receive_chars(struct uart_port *the_port)
1428 * @is : submodule 1428 * @is : submodule
1429 * @idd: driver data 1429 * @idd: driver data
1430 * @pending: interrupts to handle 1430 * @pending: interrupts to handle
1431 * @regs: pt_regs
1432 */ 1431 */
1433 1432
1434static int inline 1433static int inline
1435ioc3uart_intr_one(struct ioc3_submodule *is, 1434ioc3uart_intr_one(struct ioc3_submodule *is,
1436 struct ioc3_driver_data *idd, 1435 struct ioc3_driver_data *idd,
1437 unsigned int pending, struct pt_regs *regs) 1436 unsigned int pending)
1438{ 1437{
1439 int port_num = GET_PORT_FROM_SIO_IR(pending); 1438 int port_num = GET_PORT_FROM_SIO_IR(pending);
1440 struct port_hooks *hooks; 1439 struct port_hooks *hooks;
@@ -1628,13 +1627,12 @@ ioc3uart_intr_one(struct ioc3_submodule *is,
1628 * @is : submodule 1627 * @is : submodule
1629 * @idd: driver data 1628 * @idd: driver data
1630 * @pending: interrupts to handle 1629 * @pending: interrupts to handle
1631 * @regs: pt_regs
1632 * 1630 *
1633 */ 1631 */
1634 1632
1635static int ioc3uart_intr(struct ioc3_submodule *is, 1633static int ioc3uart_intr(struct ioc3_submodule *is,
1636 struct ioc3_driver_data *idd, 1634 struct ioc3_driver_data *idd,
1637 unsigned int pending, struct pt_regs *regs) 1635 unsigned int pending)
1638{ 1636{
1639 int ret = 0; 1637 int ret = 0;
1640 1638
@@ -1644,9 +1642,9 @@ static int ioc3uart_intr(struct ioc3_submodule *is,
1644 */ 1642 */
1645 1643
1646 if (pending & SIO_IR_SA) 1644 if (pending & SIO_IR_SA)
1647 ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SA, regs); 1645 ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SA);
1648 if (pending & SIO_IR_SB) 1646 if (pending & SIO_IR_SB)
1649 ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SB, regs); 1647 ret |= ioc3uart_intr_one(is, idd, pending & SIO_IR_SB);
1650 1648
1651 return ret; 1649 return ret;
1652} 1650}
diff --git a/drivers/serial/ioc4_serial.c b/drivers/serial/ioc4_serial.c
index 5ec4716c99bf..98ce88d80207 100644
--- a/drivers/serial/ioc4_serial.c
+++ b/drivers/serial/ioc4_serial.c
@@ -987,10 +987,9 @@ intr_connect(struct ioc4_soft *soft, int type,
987 * ioc4_intr - Top level IOC4 interrupt handler. 987 * ioc4_intr - Top level IOC4 interrupt handler.
988 * @irq: irq value 988 * @irq: irq value
989 * @arg: handler arg 989 * @arg: handler arg
990 * @regs: registers
991 */ 990 */
992 991
993static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs) 992static irqreturn_t ioc4_intr(int irq, void *arg)
994{ 993{
995 struct ioc4_soft *soft; 994 struct ioc4_soft *soft;
996 uint32_t this_ir, this_mir; 995 uint32_t this_ir, this_mir;
diff --git a/drivers/serial/ip22zilog.c b/drivers/serial/ip22zilog.c
index dbf13c03a1bb..dca6c1bde8f9 100644
--- a/drivers/serial/ip22zilog.c
+++ b/drivers/serial/ip22zilog.c
@@ -252,8 +252,7 @@ static void ip22zilog_maybe_update_regs(struct uart_ip22zilog_port *up,
252} 252}
253 253
254static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up, 254static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up,
255 struct zilog_channel *channel, 255 struct zilog_channel *channel)
256 struct pt_regs *regs)
257{ 256{
258 struct tty_struct *tty = up->port.info->tty; /* XXX info==NULL? */ 257 struct tty_struct *tty = up->port.info->tty; /* XXX info==NULL? */
259 258
@@ -319,7 +318,7 @@ static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up,
319 else if (r1 & CRC_ERR) 318 else if (r1 & CRC_ERR)
320 flag = TTY_FRAME; 319 flag = TTY_FRAME;
321 } 320 }
322 if (uart_handle_sysrq_char(&up->port, ch, regs)) 321 if (uart_handle_sysrq_char(&up->port, ch))
323 goto next_char; 322 goto next_char;
324 323
325 if (up->port.ignore_status_mask == 0xff || 324 if (up->port.ignore_status_mask == 0xff ||
@@ -339,8 +338,7 @@ static void ip22zilog_receive_chars(struct uart_ip22zilog_port *up,
339} 338}
340 339
341static void ip22zilog_status_handle(struct uart_ip22zilog_port *up, 340static void ip22zilog_status_handle(struct uart_ip22zilog_port *up,
342 struct zilog_channel *channel, 341 struct zilog_channel *channel)
343 struct pt_regs *regs)
344{ 342{
345 unsigned char status; 343 unsigned char status;
346 344
@@ -443,7 +441,7 @@ ack_tx_int:
443 ZS_WSYNC(channel); 441 ZS_WSYNC(channel);
444} 442}
445 443
446static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) 444static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id)
447{ 445{
448 struct uart_ip22zilog_port *up = dev_id; 446 struct uart_ip22zilog_port *up = dev_id;
449 447
@@ -462,9 +460,9 @@ static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id, struct pt_regs *re
462 ZS_WSYNC(channel); 460 ZS_WSYNC(channel);
463 461
464 if (r3 & CHARxIP) 462 if (r3 & CHARxIP)
465 ip22zilog_receive_chars(up, channel, regs); 463 ip22zilog_receive_chars(up, channel);
466 if (r3 & CHAEXT) 464 if (r3 & CHAEXT)
467 ip22zilog_status_handle(up, channel, regs); 465 ip22zilog_status_handle(up, channel);
468 if (r3 & CHATxIP) 466 if (r3 & CHATxIP)
469 ip22zilog_transmit_chars(up, channel); 467 ip22zilog_transmit_chars(up, channel);
470 } 468 }
@@ -481,9 +479,9 @@ static irqreturn_t ip22zilog_interrupt(int irq, void *dev_id, struct pt_regs *re
481 ZS_WSYNC(channel); 479 ZS_WSYNC(channel);
482 480
483 if (r3 & CHBRxIP) 481 if (r3 & CHBRxIP)
484 ip22zilog_receive_chars(up, channel, regs); 482 ip22zilog_receive_chars(up, channel);
485 if (r3 & CHBEXT) 483 if (r3 & CHBEXT)
486 ip22zilog_status_handle(up, channel, regs); 484 ip22zilog_status_handle(up, channel);
487 if (r3 & CHBTxIP) 485 if (r3 & CHBTxIP)
488 ip22zilog_transmit_chars(up, channel); 486 ip22zilog_transmit_chars(up, channel);
489 } 487 }
diff --git a/drivers/serial/jsm/jsm.h b/drivers/serial/jsm/jsm.h
index 043f50b1d10c..12c934a1f274 100644
--- a/drivers/serial/jsm/jsm.h
+++ b/drivers/serial/jsm/jsm.h
@@ -99,7 +99,7 @@ struct jsm_channel;
99 * Per board operations structure * 99 * Per board operations structure *
100 ************************************************************************/ 100 ************************************************************************/
101struct board_ops { 101struct board_ops {
102 irqreturn_t (*intr) (int irq, void *voidbrd, struct pt_regs *regs); 102 irq_handler_t intr;
103 void (*uart_init) (struct jsm_channel *ch); 103 void (*uart_init) (struct jsm_channel *ch);
104 void (*uart_off) (struct jsm_channel *ch); 104 void (*uart_off) (struct jsm_channel *ch);
105 void (*param) (struct jsm_channel *ch); 105 void (*param) (struct jsm_channel *ch);
diff --git a/drivers/serial/jsm/jsm_neo.c b/drivers/serial/jsm/jsm_neo.c
index a5fc589d6ef5..8be8da37f629 100644
--- a/drivers/serial/jsm/jsm_neo.c
+++ b/drivers/serial/jsm/jsm_neo.c
@@ -1114,9 +1114,9 @@ static void neo_param(struct jsm_channel *ch)
1114 * 1114 *
1115 * Neo specific interrupt handler. 1115 * Neo specific interrupt handler.
1116 */ 1116 */
1117static irqreturn_t neo_intr(int irq, void *voidbrd, struct pt_regs *regs) 1117static irqreturn_t neo_intr(int irq, void *voidbrd)
1118{ 1118{
1119 struct jsm_board *brd = (struct jsm_board *) voidbrd; 1119 struct jsm_board *brd = voidbrd;
1120 struct jsm_channel *ch; 1120 struct jsm_channel *ch;
1121 int port = 0; 1121 int port = 0;
1122 int type = 0; 1122 int type = 0;
diff --git a/drivers/serial/m32r_sio.c b/drivers/serial/m32r_sio.c
index 28c9ce6f0bdc..7656a35f5e2f 100644
--- a/drivers/serial/m32r_sio.c
+++ b/drivers/serial/m32r_sio.c
@@ -323,8 +323,7 @@ static void m32r_sio_enable_ms(struct uart_port *port)
323 serial_out(up, UART_IER, up->ier); 323 serial_out(up, UART_IER, up->ier);
324} 324}
325 325
326static void receive_chars(struct uart_sio_port *up, int *status, 326static void receive_chars(struct uart_sio_port *up, int *status)
327 struct pt_regs *regs)
328{ 327{
329 struct tty_struct *tty = up->port.info->tty; 328 struct tty_struct *tty = up->port.info->tty;
330 unsigned char ch; 329 unsigned char ch;
@@ -378,7 +377,7 @@ static void receive_chars(struct uart_sio_port *up, int *status,
378 else if (*status & UART_LSR_FE) 377 else if (*status & UART_LSR_FE)
379 flag = TTY_FRAME; 378 flag = TTY_FRAME;
380 } 379 }
381 if (uart_handle_sysrq_char(&up->port, ch, regs)) 380 if (uart_handle_sysrq_char(&up->port, ch))
382 goto ignore_char; 381 goto ignore_char;
383 if ((*status & up->port.ignore_status_mask) == 0) 382 if ((*status & up->port.ignore_status_mask) == 0)
384 tty_insert_flip_char(tty, ch, flag); 383 tty_insert_flip_char(tty, ch, flag);
@@ -439,12 +438,12 @@ static void transmit_chars(struct uart_sio_port *up)
439 * This handles the interrupt from one port. 438 * This handles the interrupt from one port.
440 */ 439 */
441static inline void m32r_sio_handle_port(struct uart_sio_port *up, 440static inline void m32r_sio_handle_port(struct uart_sio_port *up,
442 unsigned int status, struct pt_regs *regs) 441 unsigned int status)
443{ 442{
444 DEBUG_INTR("status = %x...", status); 443 DEBUG_INTR("status = %x...", status);
445 444
446 if (status & 0x04) 445 if (status & 0x04)
447 receive_chars(up, &status, regs); 446 receive_chars(up, &status);
448 if (status & 0x01) 447 if (status & 0x01)
449 transmit_chars(up); 448 transmit_chars(up);
450} 449}
@@ -463,8 +462,7 @@ static inline void m32r_sio_handle_port(struct uart_sio_port *up,
463 * This means we need to loop through all ports. checking that they 462 * This means we need to loop through all ports. checking that they
464 * don't have an interrupt pending. 463 * don't have an interrupt pending.
465 */ 464 */
466static irqreturn_t m32r_sio_interrupt(int irq, void *dev_id, 465static irqreturn_t m32r_sio_interrupt(int irq, void *dev_id)
467 struct pt_regs *regs)
468{ 466{
469 struct irq_info *i = dev_id; 467 struct irq_info *i = dev_id;
470 struct list_head *l, *end = NULL; 468 struct list_head *l, *end = NULL;
@@ -492,7 +490,7 @@ static irqreturn_t m32r_sio_interrupt(int irq, void *dev_id,
492 sts = sio_in(up, SIOSTS); 490 sts = sio_in(up, SIOSTS);
493 if (sts & 0x5) { 491 if (sts & 0x5) {
494 spin_lock(&up->port.lock); 492 spin_lock(&up->port.lock);
495 m32r_sio_handle_port(up, sts, regs); 493 m32r_sio_handle_port(up, sts);
496 spin_unlock(&up->port.lock); 494 spin_unlock(&up->port.lock);
497 495
498 end = NULL; 496 end = NULL;
@@ -592,7 +590,7 @@ static void m32r_sio_timeout(unsigned long data)
592 sts = sio_in(up, SIOSTS); 590 sts = sio_in(up, SIOSTS);
593 if (sts & 0x5) { 591 if (sts & 0x5) {
594 spin_lock(&up->port.lock); 592 spin_lock(&up->port.lock);
595 m32r_sio_handle_port(up, sts, NULL); 593 m32r_sio_handle_port(up, sts);
596 spin_unlock(&up->port.lock); 594 spin_unlock(&up->port.lock);
597 } 595 }
598 596
diff --git a/drivers/serial/mcfserial.c b/drivers/serial/mcfserial.c
index 00d7859c167e..aee1b31f1a1c 100644
--- a/drivers/serial/mcfserial.c
+++ b/drivers/serial/mcfserial.c
@@ -385,7 +385,7 @@ static inline void transmit_chars(struct mcf_serial *info)
385/* 385/*
386 * This is the serial driver's generic interrupt routine 386 * This is the serial driver's generic interrupt routine
387 */ 387 */
388irqreturn_t mcfrs_interrupt(int irq, void *dev_id, struct pt_regs *regs) 388irqreturn_t mcfrs_interrupt(int irq, void *dev_id)
389{ 389{
390 struct mcf_serial *info; 390 struct mcf_serial *info;
391 unsigned char isr; 391 unsigned char isr;
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index dbad0e31e005..4f80c5b4a753 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -85,7 +85,7 @@ static struct uart_port mpc52xx_uart_ports[MPC52xx_PSC_MAXNUM];
85 85
86 86
87/* Forward declaration of the interruption handling routine */ 87/* Forward declaration of the interruption handling routine */
88static irqreturn_t mpc52xx_uart_int(int irq,void *dev_id,struct pt_regs *regs); 88static irqreturn_t mpc52xx_uart_int(int irq,void *dev_id);
89 89
90 90
91/* Simple macro to test if a port is console or not. This one is taken 91/* Simple macro to test if a port is console or not. This one is taken
@@ -410,7 +410,7 @@ static struct uart_ops mpc52xx_uart_ops = {
410/* ======================================================================== */ 410/* ======================================================================== */
411 411
412static inline int 412static inline int
413mpc52xx_uart_int_rx_chars(struct uart_port *port, struct pt_regs *regs) 413mpc52xx_uart_int_rx_chars(struct uart_port *port)
414{ 414{
415 struct tty_struct *tty = port->info->tty; 415 struct tty_struct *tty = port->info->tty;
416 unsigned char ch, flag; 416 unsigned char ch, flag;
@@ -425,7 +425,7 @@ mpc52xx_uart_int_rx_chars(struct uart_port *port, struct pt_regs *regs)
425 425
426 /* Handle sysreq char */ 426 /* Handle sysreq char */
427#ifdef SUPPORT_SYSRQ 427#ifdef SUPPORT_SYSRQ
428 if (uart_handle_sysrq_char(port, ch, regs)) { 428 if (uart_handle_sysrq_char(port, ch)) {
429 port->sysrq = 0; 429 port->sysrq = 0;
430 continue; 430 continue;
431 } 431 }
@@ -510,21 +510,13 @@ mpc52xx_uart_int_tx_chars(struct uart_port *port)
510} 510}
511 511
512static irqreturn_t 512static irqreturn_t
513mpc52xx_uart_int(int irq, void *dev_id, struct pt_regs *regs) 513mpc52xx_uart_int(int irq, void *dev_id)
514{ 514{
515 struct uart_port *port = (struct uart_port *) dev_id; 515 struct uart_port *port = dev_id;
516 unsigned long pass = ISR_PASS_LIMIT; 516 unsigned long pass = ISR_PASS_LIMIT;
517 unsigned int keepgoing; 517 unsigned int keepgoing;
518 unsigned short status; 518 unsigned short status;
519 519
520 if ( irq != port->irq ) {
521 printk( KERN_WARNING
522 "mpc52xx_uart_int : " \
523 "Received wrong int %d. Waiting for %d\n",
524 irq, port->irq);
525 return IRQ_NONE;
526 }
527
528 spin_lock(&port->lock); 520 spin_lock(&port->lock);
529 521
530 /* While we have stuff to do, we continue */ 522 /* While we have stuff to do, we continue */
@@ -539,7 +531,7 @@ mpc52xx_uart_int(int irq, void *dev_id, struct pt_regs *regs)
539 /* Do we need to receive chars ? */ 531 /* Do we need to receive chars ? */
540 /* For this RX interrupts must be on and some chars waiting */ 532 /* For this RX interrupts must be on and some chars waiting */
541 if ( status & MPC52xx_PSC_IMR_RXRDY ) 533 if ( status & MPC52xx_PSC_IMR_RXRDY )
542 keepgoing |= mpc52xx_uart_int_rx_chars(port, regs); 534 keepgoing |= mpc52xx_uart_int_rx_chars(port);
543 535
544 /* Do we need to send chars ? */ 536 /* Do we need to send chars ? */
545 /* For this, TX must be ready and TX interrupt enabled */ 537 /* For this, TX must be ready and TX interrupt enabled */
diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c
index 704243c9f78a..8eea69f29989 100644
--- a/drivers/serial/mpsc.c
+++ b/drivers/serial/mpsc.c
@@ -992,7 +992,7 @@ mpsc_make_ready(struct mpsc_port_info *pi)
992 */ 992 */
993 993
994static inline int 994static inline int
995mpsc_rx_intr(struct mpsc_port_info *pi, struct pt_regs *regs) 995mpsc_rx_intr(struct mpsc_port_info *pi)
996{ 996{
997 struct mpsc_rx_desc *rxre; 997 struct mpsc_rx_desc *rxre;
998 struct tty_struct *tty = pi->port.info->tty; 998 struct tty_struct *tty = pi->port.info->tty;
@@ -1072,7 +1072,7 @@ mpsc_rx_intr(struct mpsc_port_info *pi, struct pt_regs *regs)
1072 flag = TTY_PARITY; 1072 flag = TTY_PARITY;
1073 } 1073 }
1074 1074
1075 if (uart_handle_sysrq_char(&pi->port, *bp, regs)) { 1075 if (uart_handle_sysrq_char(&pi->port, *bp)) {
1076 bp++; 1076 bp++;
1077 bytes_in--; 1077 bytes_in--;
1078 goto next_frame; 1078 goto next_frame;
@@ -1257,7 +1257,7 @@ mpsc_tx_intr(struct mpsc_port_info *pi)
1257 * handling those descriptors, we restart the Rx/Tx engines if they're stopped. 1257 * handling those descriptors, we restart the Rx/Tx engines if they're stopped.
1258 */ 1258 */
1259static irqreturn_t 1259static irqreturn_t
1260mpsc_sdma_intr(int irq, void *dev_id, struct pt_regs *regs) 1260mpsc_sdma_intr(int irq, void *dev_id)
1261{ 1261{
1262 struct mpsc_port_info *pi = dev_id; 1262 struct mpsc_port_info *pi = dev_id;
1263 ulong iflags; 1263 ulong iflags;
@@ -1267,7 +1267,7 @@ mpsc_sdma_intr(int irq, void *dev_id, struct pt_regs *regs)
1267 1267
1268 spin_lock_irqsave(&pi->port.lock, iflags); 1268 spin_lock_irqsave(&pi->port.lock, iflags);
1269 mpsc_sdma_intr_ack(pi); 1269 mpsc_sdma_intr_ack(pi);
1270 if (mpsc_rx_intr(pi, regs)) 1270 if (mpsc_rx_intr(pi))
1271 rc = IRQ_HANDLED; 1271 rc = IRQ_HANDLED;
1272 if (mpsc_tx_intr(pi)) 1272 if (mpsc_tx_intr(pi))
1273 rc = IRQ_HANDLED; 1273 rc = IRQ_HANDLED;
diff --git a/drivers/serial/mux.c b/drivers/serial/mux.c
index aa819d3f8ee5..8ad1b8c5ec5d 100644
--- a/drivers/serial/mux.c
+++ b/drivers/serial/mux.c
@@ -230,7 +230,7 @@ static void mux_read(struct uart_port *port)
230 continue; 230 continue;
231 } 231 }
232 232
233 if (uart_handle_sysrq_char(port, data & 0xffu, NULL)) 233 if (uart_handle_sysrq_char(port, data & 0xffu))
234 continue; 234 continue;
235 235
236 tty_insert_flip_char(tty, data & 0xFF, TTY_NORMAL); 236 tty_insert_flip_char(tty, data & 0xFF, TTY_NORMAL);
diff --git a/drivers/serial/netx-serial.c b/drivers/serial/netx-serial.c
index 7502109d37f0..062bad457b1a 100644
--- a/drivers/serial/netx-serial.c
+++ b/drivers/serial/netx-serial.c
@@ -200,7 +200,7 @@ static void netx_txint(struct uart_port *port)
200 uart_write_wakeup(port); 200 uart_write_wakeup(port);
201} 201}
202 202
203static void netx_rxint(struct uart_port *port, struct pt_regs *regs) 203static void netx_rxint(struct uart_port *port)
204{ 204{
205 unsigned char rx, flg, status; 205 unsigned char rx, flg, status;
206 struct tty_struct *tty = port->info->tty; 206 struct tty_struct *tty = port->info->tty;
@@ -235,7 +235,7 @@ static void netx_rxint(struct uart_port *port, struct pt_regs *regs)
235 flg = TTY_FRAME; 235 flg = TTY_FRAME;
236 } 236 }
237 237
238 if (uart_handle_sysrq_char(port, rx, regs)) 238 if (uart_handle_sysrq_char(port, rx))
239 continue; 239 continue;
240 240
241 uart_insert_char(port, status, SR_OE, rx, flg); 241 uart_insert_char(port, status, SR_OE, rx, flg);
@@ -245,9 +245,9 @@ static void netx_rxint(struct uart_port *port, struct pt_regs *regs)
245 return; 245 return;
246} 246}
247 247
248static irqreturn_t netx_int(int irq, void *dev_id, struct pt_regs *regs) 248static irqreturn_t netx_int(int irq, void *dev_id)
249{ 249{
250 struct uart_port *port = (struct uart_port *)dev_id; 250 struct uart_port *port = dev_id;
251 unsigned long flags; 251 unsigned long flags;
252 unsigned char status; 252 unsigned char status;
253 253
@@ -256,7 +256,7 @@ static irqreturn_t netx_int(int irq, void *dev_id, struct pt_regs *regs)
256 status = readl(port->membase + UART_IIR) & IIR_MASK; 256 status = readl(port->membase + UART_IIR) & IIR_MASK;
257 while (status) { 257 while (status) {
258 if (status & IIR_RIS) 258 if (status & IIR_RIS)
259 netx_rxint(port, regs); 259 netx_rxint(port);
260 if (status & IIR_TIS) 260 if (status & IIR_TIS)
261 netx_txint(port); 261 netx_txint(port);
262 if (status & IIR_MIS) { 262 if (status & IIR_MIS) {
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c
index a3b99caf80e6..bf9809ed9c0b 100644
--- a/drivers/serial/pmac_zilog.c
+++ b/drivers/serial/pmac_zilog.c
@@ -204,8 +204,7 @@ static void pmz_maybe_update_regs(struct uart_pmac_port *uap)
204 } 204 }
205} 205}
206 206
207static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap, 207static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap)
208 struct pt_regs *regs)
209{ 208{
210 struct tty_struct *tty = NULL; 209 struct tty_struct *tty = NULL;
211 unsigned char ch, r1, drop, error, flag; 210 unsigned char ch, r1, drop, error, flag;
@@ -267,7 +266,7 @@ static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap,
267 if (uap->port.sysrq) { 266 if (uap->port.sysrq) {
268 int swallow; 267 int swallow;
269 spin_unlock(&uap->port.lock); 268 spin_unlock(&uap->port.lock);
270 swallow = uart_handle_sysrq_char(&uap->port, ch, regs); 269 swallow = uart_handle_sysrq_char(&uap->port, ch);
271 spin_lock(&uap->port.lock); 270 spin_lock(&uap->port.lock);
272 if (swallow) 271 if (swallow)
273 goto next_char; 272 goto next_char;
@@ -335,7 +334,7 @@ static struct tty_struct *pmz_receive_chars(struct uart_pmac_port *uap,
335 return tty; 334 return tty;
336} 335}
337 336
338static void pmz_status_handle(struct uart_pmac_port *uap, struct pt_regs *regs) 337static void pmz_status_handle(struct uart_pmac_port *uap)
339{ 338{
340 unsigned char status; 339 unsigned char status;
341 340
@@ -438,7 +437,7 @@ ack_tx_int:
438} 437}
439 438
440/* Hrm... we register that twice, fixme later.... */ 439/* Hrm... we register that twice, fixme later.... */
441static irqreturn_t pmz_interrupt(int irq, void *dev_id, struct pt_regs *regs) 440static irqreturn_t pmz_interrupt(int irq, void *dev_id)
442{ 441{
443 struct uart_pmac_port *uap = dev_id; 442 struct uart_pmac_port *uap = dev_id;
444 struct uart_pmac_port *uap_a; 443 struct uart_pmac_port *uap_a;
@@ -462,9 +461,9 @@ static irqreturn_t pmz_interrupt(int irq, void *dev_id, struct pt_regs *regs)
462 write_zsreg(uap_a, R0, RES_H_IUS); 461 write_zsreg(uap_a, R0, RES_H_IUS);
463 zssync(uap_a); 462 zssync(uap_a);
464 if (r3 & CHAEXT) 463 if (r3 & CHAEXT)
465 pmz_status_handle(uap_a, regs); 464 pmz_status_handle(uap_a);
466 if (r3 & CHARxIP) 465 if (r3 & CHARxIP)
467 tty = pmz_receive_chars(uap_a, regs); 466 tty = pmz_receive_chars(uap_a);
468 if (r3 & CHATxIP) 467 if (r3 & CHATxIP)
469 pmz_transmit_chars(uap_a); 468 pmz_transmit_chars(uap_a);
470 rc = IRQ_HANDLED; 469 rc = IRQ_HANDLED;
@@ -482,9 +481,9 @@ static irqreturn_t pmz_interrupt(int irq, void *dev_id, struct pt_regs *regs)
482 write_zsreg(uap_b, R0, RES_H_IUS); 481 write_zsreg(uap_b, R0, RES_H_IUS);
483 zssync(uap_b); 482 zssync(uap_b);
484 if (r3 & CHBEXT) 483 if (r3 & CHBEXT)
485 pmz_status_handle(uap_b, regs); 484 pmz_status_handle(uap_b);
486 if (r3 & CHBRxIP) 485 if (r3 & CHBRxIP)
487 tty = pmz_receive_chars(uap_b, regs); 486 tty = pmz_receive_chars(uap_b);
488 if (r3 & CHBTxIP) 487 if (r3 & CHBTxIP)
489 pmz_transmit_chars(uap_b); 488 pmz_transmit_chars(uap_b);
490 rc = IRQ_HANDLED; 489 rc = IRQ_HANDLED;
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c
index a720953a404e..415fe9633a9b 100644
--- a/drivers/serial/pxa.c
+++ b/drivers/serial/pxa.c
@@ -98,8 +98,7 @@ static void serial_pxa_stop_rx(struct uart_port *port)
98 serial_out(up, UART_IER, up->ier); 98 serial_out(up, UART_IER, up->ier);
99} 99}
100 100
101static inline void 101static inline void receive_chars(struct uart_pxa_port *up, int *status)
102receive_chars(struct uart_pxa_port *up, int *status, struct pt_regs *regs)
103{ 102{
104 struct tty_struct *tty = up->port.info->tty; 103 struct tty_struct *tty = up->port.info->tty;
105 unsigned int ch, flag; 104 unsigned int ch, flag;
@@ -153,7 +152,7 @@ receive_chars(struct uart_pxa_port *up, int *status, struct pt_regs *regs)
153 flag = TTY_FRAME; 152 flag = TTY_FRAME;
154 } 153 }
155 154
156 if (uart_handle_sysrq_char(&up->port, ch, regs)) 155 if (uart_handle_sysrq_char(&up->port, ch))
157 goto ignore_char; 156 goto ignore_char;
158 157
159 uart_insert_char(&up->port, *status, UART_LSR_OE, ch, flag); 158 uart_insert_char(&up->port, *status, UART_LSR_OE, ch, flag);
@@ -231,10 +230,9 @@ static inline void check_modem_status(struct uart_pxa_port *up)
231/* 230/*
232 * This handles the interrupt from one port. 231 * This handles the interrupt from one port.
233 */ 232 */
234static inline irqreturn_t 233static inline irqreturn_t serial_pxa_irq(int irq, void *dev_id)
235serial_pxa_irq(int irq, void *dev_id, struct pt_regs *regs)
236{ 234{
237 struct uart_pxa_port *up = (struct uart_pxa_port *)dev_id; 235 struct uart_pxa_port *up = dev_id;
238 unsigned int iir, lsr; 236 unsigned int iir, lsr;
239 237
240 iir = serial_in(up, UART_IIR); 238 iir = serial_in(up, UART_IIR);
@@ -242,7 +240,7 @@ serial_pxa_irq(int irq, void *dev_id, struct pt_regs *regs)
242 return IRQ_NONE; 240 return IRQ_NONE;
243 lsr = serial_in(up, UART_LSR); 241 lsr = serial_in(up, UART_LSR);
244 if (lsr & UART_LSR_DR) 242 if (lsr & UART_LSR_DR)
245 receive_chars(up, &lsr, regs); 243 receive_chars(up, &lsr);
246 check_modem_status(up); 244 check_modem_status(up);
247 if (lsr & UART_LSR_THRE) 245 if (lsr & UART_LSR_THRE)
248 transmit_chars(up); 246 transmit_chars(up);
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c
index 95738a19cde7..8dfc2dd058ca 100644
--- a/drivers/serial/s3c2410.c
+++ b/drivers/serial/s3c2410.c
@@ -310,7 +310,7 @@ static int s3c24xx_serial_rx_fifocnt(struct s3c24xx_uart_port *ourport,
310#define S3C2410_UERSTAT_PARITY (0x1000) 310#define S3C2410_UERSTAT_PARITY (0x1000)
311 311
312static irqreturn_t 312static irqreturn_t
313s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs) 313s3c24xx_serial_rx_chars(int irq, void *dev_id)
314{ 314{
315 struct s3c24xx_uart_port *ourport = dev_id; 315 struct s3c24xx_uart_port *ourport = dev_id;
316 struct uart_port *port = &ourport->port; 316 struct uart_port *port = &ourport->port;
@@ -379,7 +379,7 @@ s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs)
379 flag = TTY_FRAME; 379 flag = TTY_FRAME;
380 } 380 }
381 381
382 if (uart_handle_sysrq_char(port, ch, regs)) 382 if (uart_handle_sysrq_char(port, ch))
383 goto ignore_char; 383 goto ignore_char;
384 384
385 uart_insert_char(port, uerstat, S3C2410_UERSTAT_OVERRUN, ch, flag); 385 uart_insert_char(port, uerstat, S3C2410_UERSTAT_OVERRUN, ch, flag);
@@ -393,7 +393,7 @@ s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs)
393 return IRQ_HANDLED; 393 return IRQ_HANDLED;
394} 394}
395 395
396static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id, struct pt_regs *regs) 396static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id)
397{ 397{
398 struct s3c24xx_uart_port *ourport = id; 398 struct s3c24xx_uart_port *ourport = id;
399 struct uart_port *port = &ourport->port; 399 struct uart_port *port = &ourport->port;
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c
index db3486d33870..d4065266b6fc 100644
--- a/drivers/serial/sa1100.c
+++ b/drivers/serial/sa1100.c
@@ -190,7 +190,7 @@ static void sa1100_enable_ms(struct uart_port *port)
190} 190}
191 191
192static void 192static void
193sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) 193sa1100_rx_chars(struct sa1100_port *sport)
194{ 194{
195 struct tty_struct *tty = sport->port.info->tty; 195 struct tty_struct *tty = sport->port.info->tty;
196 unsigned int status, ch, flg; 196 unsigned int status, ch, flg;
@@ -228,7 +228,7 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs)
228#endif 228#endif
229 } 229 }
230 230
231 if (uart_handle_sysrq_char(&sport->port, ch, regs)) 231 if (uart_handle_sysrq_char(&sport->port, ch))
232 goto ignore_char; 232 goto ignore_char;
233 233
234 uart_insert_char(&sport->port, status, UTSR1_TO_SM(UTSR1_ROR), ch, flg); 234 uart_insert_char(&sport->port, status, UTSR1_TO_SM(UTSR1_ROR), ch, flg);
@@ -281,7 +281,7 @@ static void sa1100_tx_chars(struct sa1100_port *sport)
281 sa1100_stop_tx(&sport->port); 281 sa1100_stop_tx(&sport->port);
282} 282}
283 283
284static irqreturn_t sa1100_int(int irq, void *dev_id, struct pt_regs *regs) 284static irqreturn_t sa1100_int(int irq, void *dev_id)
285{ 285{
286 struct sa1100_port *sport = dev_id; 286 struct sa1100_port *sport = dev_id;
287 unsigned int status, pass_counter = 0; 287 unsigned int status, pass_counter = 0;
@@ -294,7 +294,7 @@ static irqreturn_t sa1100_int(int irq, void *dev_id, struct pt_regs *regs)
294 /* Clear the receiver idle bit, if set */ 294 /* Clear the receiver idle bit, if set */
295 if (status & UTSR0_RID) 295 if (status & UTSR0_RID)
296 UART_PUT_UTSR0(sport, UTSR0_RID); 296 UART_PUT_UTSR0(sport, UTSR0_RID);
297 sa1100_rx_chars(sport, regs); 297 sa1100_rx_chars(sport);
298 } 298 }
299 299
300 /* Clear the relevant break bits */ 300 /* Clear the relevant break bits */
diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c
index 23ddedbaec08..5e1ac356bbb0 100644
--- a/drivers/serial/serial_lh7a40x.c
+++ b/drivers/serial/serial_lh7a40x.c
@@ -135,12 +135,7 @@ static void lh7a40xuart_enable_ms (struct uart_port* port)
135 BIT_SET (port, UART_R_INTEN, ModemInt); 135 BIT_SET (port, UART_R_INTEN, ModemInt);
136} 136}
137 137
138static void 138static void lh7a40xuart_rx_chars (struct uart_port* port)
139#ifdef SUPPORT_SYSRQ
140lh7a40xuart_rx_chars (struct uart_port* port, struct pt_regs* regs)
141#else
142lh7a40xuart_rx_chars (struct uart_port* port)
143#endif
144{ 139{
145 struct tty_struct* tty = port->info->tty; 140 struct tty_struct* tty = port->info->tty;
146 int cbRxMax = 256; /* (Gross) limit on receive */ 141 int cbRxMax = 256; /* (Gross) limit on receive */
@@ -177,7 +172,7 @@ lh7a40xuart_rx_chars (struct uart_port* port)
177 flag = TTY_FRAME; 172 flag = TTY_FRAME;
178 } 173 }
179 174
180 if (uart_handle_sysrq_char (port, (unsigned char) data, regs)) 175 if (uart_handle_sysrq_char (port, (unsigned char) data))
181 continue; 176 continue;
182 177
183 uart_insert_char(port, data, RxOverrunError, data, flag); 178 uart_insert_char(port, data, RxOverrunError, data, flag);
@@ -248,8 +243,7 @@ static void lh7a40xuart_modem_status (struct uart_port* port)
248 wake_up_interruptible (&port->info->delta_msr_wait); 243 wake_up_interruptible (&port->info->delta_msr_wait);
249} 244}
250 245
251static irqreturn_t lh7a40xuart_int (int irq, void* dev_id, 246static irqreturn_t lh7a40xuart_int (int irq, void* dev_id)
252 struct pt_regs* regs)
253{ 247{
254 struct uart_port* port = dev_id; 248 struct uart_port* port = dev_id;
255 unsigned int cLoopLimit = ISR_LOOP_LIMIT; 249 unsigned int cLoopLimit = ISR_LOOP_LIMIT;
@@ -258,11 +252,7 @@ static irqreturn_t lh7a40xuart_int (int irq, void* dev_id,
258 252
259 do { 253 do {
260 if (isr & (RxInt | RxTimeoutInt)) 254 if (isr & (RxInt | RxTimeoutInt))
261#ifdef SUPPORT_SYSRQ
262 lh7a40xuart_rx_chars(port, regs);
263#else
264 lh7a40xuart_rx_chars(port); 255 lh7a40xuart_rx_chars(port);
265#endif
266 if (isr & ModemInt) 256 if (isr & ModemInt)
267 lh7a40xuart_modem_status (port); 257 lh7a40xuart_modem_status (port);
268 if (isr & TxInt) 258 if (isr & TxInt)
diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c
index ebd8d2bb17fd..2a48289ac722 100644
--- a/drivers/serial/serial_txx9.c
+++ b/drivers/serial/serial_txx9.c
@@ -283,7 +283,7 @@ static void serial_txx9_enable_ms(struct uart_port *port)
283} 283}
284 284
285static inline void 285static inline void
286receive_chars(struct uart_txx9_port *up, unsigned int *status, struct pt_regs *regs) 286receive_chars(struct uart_txx9_port *up, unsigned int *status)
287{ 287{
288 struct tty_struct *tty = up->port.info->tty; 288 struct tty_struct *tty = up->port.info->tty;
289 unsigned char ch; 289 unsigned char ch;
@@ -344,7 +344,7 @@ receive_chars(struct uart_txx9_port *up, unsigned int *status, struct pt_regs *r
344 else if (disr & TXX9_SIDISR_UFER) 344 else if (disr & TXX9_SIDISR_UFER)
345 flag = TTY_FRAME; 345 flag = TTY_FRAME;
346 } 346 }
347 if (uart_handle_sysrq_char(&up->port, ch, regs)) 347 if (uart_handle_sysrq_char(&up->port, ch))
348 goto ignore_char; 348 goto ignore_char;
349 349
350 uart_insert_char(&up->port, disr, TXX9_SIDISR_UOER, ch, flag); 350 uart_insert_char(&up->port, disr, TXX9_SIDISR_UOER, ch, flag);
@@ -391,7 +391,7 @@ static inline void transmit_chars(struct uart_txx9_port *up)
391 serial_txx9_stop_tx(&up->port); 391 serial_txx9_stop_tx(&up->port);
392} 392}
393 393
394static irqreturn_t serial_txx9_interrupt(int irq, void *dev_id, struct pt_regs *regs) 394static irqreturn_t serial_txx9_interrupt(int irq, void *dev_id)
395{ 395{
396 int pass_counter = 0; 396 int pass_counter = 0;
397 struct uart_txx9_port *up = dev_id; 397 struct uart_txx9_port *up = dev_id;
@@ -409,7 +409,7 @@ static irqreturn_t serial_txx9_interrupt(int irq, void *dev_id, struct pt_regs *
409 } 409 }
410 410
411 if (status & TXX9_SIDISR_RDIS) 411 if (status & TXX9_SIDISR_RDIS)
412 receive_chars(up, &status, regs); 412 receive_chars(up, &status);
413 if (status & TXX9_SIDISR_TDIS) 413 if (status & TXX9_SIDISR_TDIS)
414 transmit_chars(up); 414 transmit_chars(up);
415 /* Clear TX/RX Int. Status */ 415 /* Clear TX/RX Int. Status */
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index 5c025d1190c1..266aa325569e 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -446,8 +446,7 @@ static void sci_transmit_chars(struct uart_port *port)
446/* On SH3, SCIF may read end-of-break as a space->mark char */ 446/* On SH3, SCIF may read end-of-break as a space->mark char */
447#define STEPFN(c) ({int __c=(c); (((__c-1)|(__c)) == -1); }) 447#define STEPFN(c) ({int __c=(c); (((__c-1)|(__c)) == -1); })
448 448
449static inline void sci_receive_chars(struct uart_port *port, 449static inline void sci_receive_chars(struct uart_port *port)
450 struct pt_regs *regs)
451{ 450{
452 struct sci_port *sci_port = (struct sci_port *)port; 451 struct sci_port *sci_port = (struct sci_port *)port;
453 struct tty_struct *tty = port->info->tty; 452 struct tty_struct *tty = port->info->tty;
@@ -476,7 +475,7 @@ static inline void sci_receive_chars(struct uart_port *port,
476 475
477 if (port->type == PORT_SCI) { 476 if (port->type == PORT_SCI) {
478 char c = sci_in(port, SCxRDR); 477 char c = sci_in(port, SCxRDR);
479 if (uart_handle_sysrq_char(port, c, regs) || sci_port->break_flag) 478 if (uart_handle_sysrq_char(port, c) || sci_port->break_flag)
480 count = 0; 479 count = 0;
481 else { 480 else {
482 tty_insert_flip_char(tty, c, TTY_NORMAL); 481 tty_insert_flip_char(tty, c, TTY_NORMAL);
@@ -504,7 +503,7 @@ static inline void sci_receive_chars(struct uart_port *port,
504 } 503 }
505 } 504 }
506#endif /* CONFIG_CPU_SH3 */ 505#endif /* CONFIG_CPU_SH3 */
507 if (uart_handle_sysrq_char(port, c, regs)) { 506 if (uart_handle_sysrq_char(port, c)) {
508 count--; i--; 507 count--; i--;
509 continue; 508 continue;
510 } 509 }
@@ -652,18 +651,18 @@ static inline int sci_handle_breaks(struct uart_port *port)
652 return copied; 651 return copied;
653} 652}
654 653
655static irqreturn_t sci_rx_interrupt(int irq, void *port, struct pt_regs *regs) 654static irqreturn_t sci_rx_interrupt(int irq, void *port)
656{ 655{
657 /* I think sci_receive_chars has to be called irrespective 656 /* I think sci_receive_chars has to be called irrespective
658 * of whether the I_IXOFF is set, otherwise, how is the interrupt 657 * of whether the I_IXOFF is set, otherwise, how is the interrupt
659 * to be disabled? 658 * to be disabled?
660 */ 659 */
661 sci_receive_chars(port, regs); 660 sci_receive_chars(port);
662 661
663 return IRQ_HANDLED; 662 return IRQ_HANDLED;
664} 663}
665 664
666static irqreturn_t sci_tx_interrupt(int irq, void *ptr, struct pt_regs *regs) 665static irqreturn_t sci_tx_interrupt(int irq, void *ptr)
667{ 666{
668 struct uart_port *port = ptr; 667 struct uart_port *port = ptr;
669 668
@@ -674,7 +673,7 @@ static irqreturn_t sci_tx_interrupt(int irq, void *ptr, struct pt_regs *regs)
674 return IRQ_HANDLED; 673 return IRQ_HANDLED;
675} 674}
676 675
677static irqreturn_t sci_er_interrupt(int irq, void *ptr, struct pt_regs *regs) 676static irqreturn_t sci_er_interrupt(int irq, void *ptr)
678{ 677{
679 struct uart_port *port = ptr; 678 struct uart_port *port = ptr;
680 679
@@ -696,18 +695,18 @@ static irqreturn_t sci_er_interrupt(int irq, void *ptr, struct pt_regs *regs)
696 pr_debug("scif: overrun error\n"); 695 pr_debug("scif: overrun error\n");
697 } 696 }
698#endif 697#endif
699 sci_rx_interrupt(irq, ptr, regs); 698 sci_rx_interrupt(irq, ptr);
700 } 699 }
701 700
702 sci_out(port, SCxSR, SCxSR_ERROR_CLEAR(port)); 701 sci_out(port, SCxSR, SCxSR_ERROR_CLEAR(port));
703 702
704 /* Kick the transmission */ 703 /* Kick the transmission */
705 sci_tx_interrupt(irq, ptr, regs); 704 sci_tx_interrupt(irq, ptr);
706 705
707 return IRQ_HANDLED; 706 return IRQ_HANDLED;
708} 707}
709 708
710static irqreturn_t sci_br_interrupt(int irq, void *ptr, struct pt_regs *regs) 709static irqreturn_t sci_br_interrupt(int irq, void *ptr)
711{ 710{
712 struct uart_port *port = ptr; 711 struct uart_port *port = ptr;
713 712
@@ -724,7 +723,7 @@ static irqreturn_t sci_br_interrupt(int irq, void *ptr, struct pt_regs *regs)
724 return IRQ_HANDLED; 723 return IRQ_HANDLED;
725} 724}
726 725
727static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr, struct pt_regs *regs) 726static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr)
728{ 727{
729 unsigned short ssr_status, scr_status; 728 unsigned short ssr_status, scr_status;
730 struct uart_port *port = ptr; 729 struct uart_port *port = ptr;
@@ -734,16 +733,16 @@ static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr, struct pt_regs *regs)
734 733
735 /* Tx Interrupt */ 734 /* Tx Interrupt */
736 if ((ssr_status & 0x0020) && (scr_status & 0x0080)) 735 if ((ssr_status & 0x0020) && (scr_status & 0x0080))
737 sci_tx_interrupt(irq, ptr, regs); 736 sci_tx_interrupt(irq, ptr);
738 /* Rx Interrupt */ 737 /* Rx Interrupt */
739 if ((ssr_status & 0x0002) && (scr_status & 0x0040)) 738 if ((ssr_status & 0x0002) && (scr_status & 0x0040))
740 sci_rx_interrupt(irq, ptr, regs); 739 sci_rx_interrupt(irq, ptr);
741 /* Error Interrupt */ 740 /* Error Interrupt */
742 if ((ssr_status & 0x0080) && (scr_status & 0x0400)) 741 if ((ssr_status & 0x0080) && (scr_status & 0x0400))
743 sci_er_interrupt(irq, ptr, regs); 742 sci_er_interrupt(irq, ptr);
744 /* Break Interrupt */ 743 /* Break Interrupt */
745 if ((ssr_status & 0x0010) && (scr_status & 0x0200)) 744 if ((ssr_status & 0x0010) && (scr_status & 0x0200))
746 sci_br_interrupt(irq, ptr, regs); 745 sci_br_interrupt(irq, ptr);
747 746
748 return IRQ_HANDLED; 747 return IRQ_HANDLED;
749} 748}
@@ -795,7 +794,7 @@ static struct notifier_block sci_nb = { &sci_notifier, NULL, 0 };
795static int sci_request_irq(struct sci_port *port) 794static int sci_request_irq(struct sci_port *port)
796{ 795{
797 int i; 796 int i;
798 irqreturn_t (*handlers[4])(int irq, void *ptr, struct pt_regs *regs) = { 797 irqreturn_t (*handlers[4])(int irq, void *ptr) = {
799 sci_er_interrupt, sci_rx_interrupt, sci_tx_interrupt, 798 sci_er_interrupt, sci_rx_interrupt, sci_tx_interrupt,
800 sci_br_interrupt, 799 sci_br_interrupt,
801 }; 800 };
diff --git a/drivers/serial/sn_console.c b/drivers/serial/sn_console.c
index 2f148e5b9255..956b2cf08e1e 100644
--- a/drivers/serial/sn_console.c
+++ b/drivers/serial/sn_console.c
@@ -447,7 +447,6 @@ static int sn_debug_printf(const char *fmt, ...)
447/** 447/**
448 * sn_receive_chars - Grab characters, pass them to tty layer 448 * sn_receive_chars - Grab characters, pass them to tty layer
449 * @port: Port to operate on 449 * @port: Port to operate on
450 * @regs: Saved registers (needed by uart_handle_sysrq_char)
451 * @flags: irq flags 450 * @flags: irq flags
452 * 451 *
453 * Note: If we're not registered with the serial core infrastructure yet, 452 * Note: If we're not registered with the serial core infrastructure yet,
@@ -455,8 +454,7 @@ static int sn_debug_printf(const char *fmt, ...)
455 * 454 *
456 */ 455 */
457static void 456static void
458sn_receive_chars(struct sn_cons_port *port, struct pt_regs *regs, 457sn_receive_chars(struct sn_cons_port *port, unsigned long flags)
459 unsigned long flags)
460{ 458{
461 int ch; 459 int ch;
462 struct tty_struct *tty; 460 struct tty_struct *tty;
@@ -494,7 +492,7 @@ sn_receive_chars(struct sn_cons_port *port, struct pt_regs *regs,
494 sysrq_requested = 0; 492 sysrq_requested = 0;
495 if (ch && time_before(jiffies, sysrq_timeout)) { 493 if (ch && time_before(jiffies, sysrq_timeout)) {
496 spin_unlock_irqrestore(&port->sc_port.lock, flags); 494 spin_unlock_irqrestore(&port->sc_port.lock, flags);
497 handle_sysrq(ch, regs, NULL); 495 handle_sysrq(ch, NULL);
498 spin_lock_irqsave(&port->sc_port.lock, flags); 496 spin_lock_irqsave(&port->sc_port.lock, flags);
499 /* ignore actual sysrq command char */ 497 /* ignore actual sysrq command char */
500 continue; 498 continue;
@@ -615,10 +613,9 @@ static void sn_transmit_chars(struct sn_cons_port *port, int raw)
615 * sn_sal_interrupt - Handle console interrupts 613 * sn_sal_interrupt - Handle console interrupts
616 * @irq: irq #, useful for debug statements 614 * @irq: irq #, useful for debug statements
617 * @dev_id: our pointer to our port (sn_cons_port which contains the uart port) 615 * @dev_id: our pointer to our port (sn_cons_port which contains the uart port)
618 * @regs: Saved registers, used by sn_receive_chars for uart_handle_sysrq_char
619 * 616 *
620 */ 617 */
621static irqreturn_t sn_sal_interrupt(int irq, void *dev_id, struct pt_regs *regs) 618static irqreturn_t sn_sal_interrupt(int irq, void *dev_id)
622{ 619{
623 struct sn_cons_port *port = (struct sn_cons_port *)dev_id; 620 struct sn_cons_port *port = (struct sn_cons_port *)dev_id;
624 unsigned long flags; 621 unsigned long flags;
@@ -629,7 +626,7 @@ static irqreturn_t sn_sal_interrupt(int irq, void *dev_id, struct pt_regs *regs)
629 626
630 spin_lock_irqsave(&port->sc_port.lock, flags); 627 spin_lock_irqsave(&port->sc_port.lock, flags);
631 if (status & SAL_CONSOLE_INTR_RECV) { 628 if (status & SAL_CONSOLE_INTR_RECV) {
632 sn_receive_chars(port, regs, flags); 629 sn_receive_chars(port, flags);
633 } 630 }
634 if (status & SAL_CONSOLE_INTR_XMIT) { 631 if (status & SAL_CONSOLE_INTR_XMIT) {
635 sn_transmit_chars(port, TRANSMIT_BUFFERED); 632 sn_transmit_chars(port, TRANSMIT_BUFFERED);
@@ -677,7 +674,7 @@ static void sn_sal_timer_poll(unsigned long data)
677 if (!port->sc_port.irq) { 674 if (!port->sc_port.irq) {
678 spin_lock_irqsave(&port->sc_port.lock, flags); 675 spin_lock_irqsave(&port->sc_port.lock, flags);
679 if (sn_process_input) 676 if (sn_process_input)
680 sn_receive_chars(port, NULL, flags); 677 sn_receive_chars(port, flags);
681 sn_transmit_chars(port, TRANSMIT_RAW); 678 sn_transmit_chars(port, TRANSMIT_RAW);
682 spin_unlock_irqrestore(&port->sc_port.lock, flags); 679 spin_unlock_irqrestore(&port->sc_port.lock, flags);
683 mod_timer(&port->sc_timer, 680 mod_timer(&port->sc_timer,
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c
index f851f0f44f9b..03941d27d15d 100644
--- a/drivers/serial/sunhv.c
+++ b/drivers/serial/sunhv.c
@@ -73,7 +73,7 @@ static inline long hypervisor_con_putchar(long ch)
73 73
74static int hung_up = 0; 74static int hung_up = 0;
75 75
76static struct tty_struct *receive_chars(struct uart_port *port, struct pt_regs *regs) 76static struct tty_struct *receive_chars(struct uart_port *port)
77{ 77{
78 struct tty_struct *tty = NULL; 78 struct tty_struct *tty = NULL;
79 int saw_console_brk = 0; 79 int saw_console_brk = 0;
@@ -106,7 +106,7 @@ static struct tty_struct *receive_chars(struct uart_port *port, struct pt_regs *
106 } 106 }
107 107
108 if (tty == NULL) { 108 if (tty == NULL) {
109 uart_handle_sysrq_char(port, c, regs); 109 uart_handle_sysrq_char(port, c);
110 continue; 110 continue;
111 } 111 }
112 112
@@ -119,7 +119,7 @@ static struct tty_struct *receive_chars(struct uart_port *port, struct pt_regs *
119 flag = TTY_BREAK; 119 flag = TTY_BREAK;
120 } 120 }
121 121
122 if (uart_handle_sysrq_char(port, c, regs)) 122 if (uart_handle_sysrq_char(port, c))
123 continue; 123 continue;
124 124
125 if ((port->ignore_status_mask & IGNORE_ALL) || 125 if ((port->ignore_status_mask & IGNORE_ALL) ||
@@ -161,14 +161,14 @@ static void transmit_chars(struct uart_port *port)
161 uart_write_wakeup(port); 161 uart_write_wakeup(port);
162} 162}
163 163
164static irqreturn_t sunhv_interrupt(int irq, void *dev_id, struct pt_regs *regs) 164static irqreturn_t sunhv_interrupt(int irq, void *dev_id)
165{ 165{
166 struct uart_port *port = dev_id; 166 struct uart_port *port = dev_id;
167 struct tty_struct *tty; 167 struct tty_struct *tty;
168 unsigned long flags; 168 unsigned long flags;
169 169
170 spin_lock_irqsave(&port->lock, flags); 170 spin_lock_irqsave(&port->lock, flags);
171 tty = receive_chars(port, regs); 171 tty = receive_chars(port);
172 transmit_chars(port); 172 transmit_chars(port);
173 spin_unlock_irqrestore(&port->lock, flags); 173 spin_unlock_irqrestore(&port->lock, flags);
174 174
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c
index cfe20f730436..08a7cd6a3a0c 100644
--- a/drivers/serial/sunsab.c
+++ b/drivers/serial/sunsab.c
@@ -108,8 +108,7 @@ static __inline__ void sunsab_cec_wait(struct uart_sunsab_port *up)
108 108
109static struct tty_struct * 109static struct tty_struct *
110receive_chars(struct uart_sunsab_port *up, 110receive_chars(struct uart_sunsab_port *up,
111 union sab82532_irq_status *stat, 111 union sab82532_irq_status *stat)
112 struct pt_regs *regs)
113{ 112{
114 struct tty_struct *tty = NULL; 113 struct tty_struct *tty = NULL;
115 unsigned char buf[32]; 114 unsigned char buf[32];
@@ -161,7 +160,7 @@ receive_chars(struct uart_sunsab_port *up,
161 unsigned char ch = buf[i], flag; 160 unsigned char ch = buf[i], flag;
162 161
163 if (tty == NULL) { 162 if (tty == NULL) {
164 uart_handle_sysrq_char(&up->port, ch, regs); 163 uart_handle_sysrq_char(&up->port, ch);
165 continue; 164 continue;
166 } 165 }
167 166
@@ -208,7 +207,7 @@ receive_chars(struct uart_sunsab_port *up,
208 flag = TTY_FRAME; 207 flag = TTY_FRAME;
209 } 208 }
210 209
211 if (uart_handle_sysrq_char(&up->port, ch, regs)) 210 if (uart_handle_sysrq_char(&up->port, ch))
212 continue; 211 continue;
213 212
214 if ((stat->sreg.isr0 & (up->port.ignore_status_mask & 0xff)) == 0 && 213 if ((stat->sreg.isr0 & (up->port.ignore_status_mask & 0xff)) == 0 &&
@@ -301,7 +300,7 @@ static void check_status(struct uart_sunsab_port *up,
301 wake_up_interruptible(&up->port.info->delta_msr_wait); 300 wake_up_interruptible(&up->port.info->delta_msr_wait);
302} 301}
303 302
304static irqreturn_t sunsab_interrupt(int irq, void *dev_id, struct pt_regs *regs) 303static irqreturn_t sunsab_interrupt(int irq, void *dev_id)
305{ 304{
306 struct uart_sunsab_port *up = dev_id; 305 struct uart_sunsab_port *up = dev_id;
307 struct tty_struct *tty; 306 struct tty_struct *tty;
@@ -321,7 +320,7 @@ static irqreturn_t sunsab_interrupt(int irq, void *dev_id, struct pt_regs *regs)
321 if ((status.sreg.isr0 & (SAB82532_ISR0_TCD | SAB82532_ISR0_TIME | 320 if ((status.sreg.isr0 & (SAB82532_ISR0_TCD | SAB82532_ISR0_TIME |
322 SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) || 321 SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) ||
323 (status.sreg.isr1 & SAB82532_ISR1_BRK)) 322 (status.sreg.isr1 & SAB82532_ISR1_BRK))
324 tty = receive_chars(up, &status, regs); 323 tty = receive_chars(up, &status);
325 if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) || 324 if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) ||
326 (status.sreg.isr1 & SAB82532_ISR1_CSC)) 325 (status.sreg.isr1 & SAB82532_ISR1_CSC))
327 check_status(up, &status); 326 check_status(up, &status);
@@ -350,7 +349,7 @@ static irqreturn_t sunsab_interrupt(int irq, void *dev_id, struct pt_regs *regs)
350 SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) || 349 SAB82532_ISR0_RFO | SAB82532_ISR0_RPF)) ||
351 (status.sreg.isr1 & SAB82532_ISR1_BRK)) 350 (status.sreg.isr1 & SAB82532_ISR1_BRK))
352 351
353 tty = receive_chars(up, &status, regs); 352 tty = receive_chars(up, &status);
354 if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) || 353 if ((status.sreg.isr0 & SAB82532_ISR0_CDSC) ||
355 (status.sreg.isr1 & (SAB82532_ISR1_BRK | SAB82532_ISR1_CSC))) 354 (status.sreg.isr1 & (SAB82532_ISR1_BRK | SAB82532_ISR1_CSC)))
356 check_status(up, &status); 355 check_status(up, &status);
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 9b3b9aaa6b90..c577faea60e8 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -310,7 +310,7 @@ static void sunsu_enable_ms(struct uart_port *port)
310} 310}
311 311
312static struct tty_struct * 312static struct tty_struct *
313receive_chars(struct uart_sunsu_port *up, unsigned char *status, struct pt_regs *regs) 313receive_chars(struct uart_sunsu_port *up, unsigned char *status)
314{ 314{
315 struct tty_struct *tty = up->port.info->tty; 315 struct tty_struct *tty = up->port.info->tty;
316 unsigned char ch, flag; 316 unsigned char ch, flag;
@@ -367,7 +367,7 @@ receive_chars(struct uart_sunsu_port *up, unsigned char *status, struct pt_regs
367 else if (*status & UART_LSR_FE) 367 else if (*status & UART_LSR_FE)
368 flag = TTY_FRAME; 368 flag = TTY_FRAME;
369 } 369 }
370 if (uart_handle_sysrq_char(&up->port, ch, regs)) 370 if (uart_handle_sysrq_char(&up->port, ch))
371 goto ignore_char; 371 goto ignore_char;
372 if ((*status & up->port.ignore_status_mask) == 0) 372 if ((*status & up->port.ignore_status_mask) == 0)
373 tty_insert_flip_char(tty, ch, flag); 373 tty_insert_flip_char(tty, ch, flag);
@@ -445,7 +445,7 @@ static void check_modem_status(struct uart_sunsu_port *up)
445 wake_up_interruptible(&up->port.info->delta_msr_wait); 445 wake_up_interruptible(&up->port.info->delta_msr_wait);
446} 446}
447 447
448static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id, struct pt_regs *regs) 448static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id)
449{ 449{
450 struct uart_sunsu_port *up = dev_id; 450 struct uart_sunsu_port *up = dev_id;
451 unsigned long flags; 451 unsigned long flags;
@@ -459,7 +459,7 @@ static irqreturn_t sunsu_serial_interrupt(int irq, void *dev_id, struct pt_regs
459 status = serial_inp(up, UART_LSR); 459 status = serial_inp(up, UART_LSR);
460 tty = NULL; 460 tty = NULL;
461 if (status & UART_LSR_DR) 461 if (status & UART_LSR_DR)
462 tty = receive_chars(up, &status, regs); 462 tty = receive_chars(up, &status);
463 check_modem_status(up); 463 check_modem_status(up);
464 if (status & UART_LSR_THRE) 464 if (status & UART_LSR_THRE)
465 transmit_chars(up); 465 transmit_chars(up);
@@ -497,7 +497,7 @@ static void sunsu_change_mouse_baud(struct uart_sunsu_port *up)
497 sunsu_change_speed(&up->port, up->cflag, 0, quot); 497 sunsu_change_speed(&up->port, up->cflag, 0, quot);
498} 498}
499 499
500static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *regs, int is_break) 500static void receive_kbd_ms_chars(struct uart_sunsu_port *up, int is_break)
501{ 501{
502 do { 502 do {
503 unsigned char ch = serial_inp(up, UART_RX); 503 unsigned char ch = serial_inp(up, UART_RX);
@@ -505,7 +505,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg
505 /* Stop-A is handled by drivers/char/keyboard.c now. */ 505 /* Stop-A is handled by drivers/char/keyboard.c now. */
506 if (up->su_type == SU_PORT_KBD) { 506 if (up->su_type == SU_PORT_KBD) {
507#ifdef CONFIG_SERIO 507#ifdef CONFIG_SERIO
508 serio_interrupt(&up->serio, ch, 0, regs); 508 serio_interrupt(&up->serio, ch, 0);
509#endif 509#endif
510 } else if (up->su_type == SU_PORT_MS) { 510 } else if (up->su_type == SU_PORT_MS) {
511 int ret = suncore_mouse_baud_detection(ch, is_break); 511 int ret = suncore_mouse_baud_detection(ch, is_break);
@@ -519,7 +519,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg
519 519
520 case 0: 520 case 0:
521#ifdef CONFIG_SERIO 521#ifdef CONFIG_SERIO
522 serio_interrupt(&up->serio, ch, 0, regs); 522 serio_interrupt(&up->serio, ch, 0);
523#endif 523#endif
524 break; 524 break;
525 }; 525 };
@@ -527,7 +527,7 @@ static void receive_kbd_ms_chars(struct uart_sunsu_port *up, struct pt_regs *reg
527 } while (serial_in(up, UART_LSR) & UART_LSR_DR); 527 } while (serial_in(up, UART_LSR) & UART_LSR_DR);
528} 528}
529 529
530static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id, struct pt_regs *regs) 530static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id)
531{ 531{
532 struct uart_sunsu_port *up = dev_id; 532 struct uart_sunsu_port *up = dev_id;
533 533
@@ -535,8 +535,7 @@ static irqreturn_t sunsu_kbd_ms_interrupt(int irq, void *dev_id, struct pt_regs
535 unsigned char status = serial_inp(up, UART_LSR); 535 unsigned char status = serial_inp(up, UART_LSR);
536 536
537 if ((status & UART_LSR_DR) || (status & UART_LSR_BI)) 537 if ((status & UART_LSR_DR) || (status & UART_LSR_BI))
538 receive_kbd_ms_chars(up, regs, 538 receive_kbd_ms_chars(up, (status & UART_LSR_BI) != 0);
539 (status & UART_LSR_BI) != 0);
540 } 539 }
541 540
542 return IRQ_HANDLED; 541 return IRQ_HANDLED;
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c
index 0da3ebfff82d..73dd2eedaaad 100644
--- a/drivers/serial/sunzilog.c
+++ b/drivers/serial/sunzilog.c
@@ -277,14 +277,13 @@ static void sunzilog_change_mouse_baud(struct uart_sunzilog_port *up)
277} 277}
278 278
279static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up, 279static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up,
280 unsigned char ch, int is_break, 280 unsigned char ch, int is_break)
281 struct pt_regs *regs)
282{ 281{
283 if (ZS_IS_KEYB(up)) { 282 if (ZS_IS_KEYB(up)) {
284 /* Stop-A is handled by drivers/char/keyboard.c now. */ 283 /* Stop-A is handled by drivers/char/keyboard.c now. */
285#ifdef CONFIG_SERIO 284#ifdef CONFIG_SERIO
286 if (up->serio_open) 285 if (up->serio_open)
287 serio_interrupt(&up->serio, ch, 0, regs); 286 serio_interrupt(&up->serio, ch, 0);
288#endif 287#endif
289 } else if (ZS_IS_MOUSE(up)) { 288 } else if (ZS_IS_MOUSE(up)) {
290 int ret = suncore_mouse_baud_detection(ch, is_break); 289 int ret = suncore_mouse_baud_detection(ch, is_break);
@@ -299,7 +298,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up,
299 case 0: 298 case 0:
300#ifdef CONFIG_SERIO 299#ifdef CONFIG_SERIO
301 if (up->serio_open) 300 if (up->serio_open)
302 serio_interrupt(&up->serio, ch, 0, regs); 301 serio_interrupt(&up->serio, ch, 0);
303#endif 302#endif
304 break; 303 break;
305 }; 304 };
@@ -308,8 +307,7 @@ static void sunzilog_kbdms_receive_chars(struct uart_sunzilog_port *up,
308 307
309static struct tty_struct * 308static struct tty_struct *
310sunzilog_receive_chars(struct uart_sunzilog_port *up, 309sunzilog_receive_chars(struct uart_sunzilog_port *up,
311 struct zilog_channel __iomem *channel, 310 struct zilog_channel __iomem *channel)
312 struct pt_regs *regs)
313{ 311{
314 struct tty_struct *tty; 312 struct tty_struct *tty;
315 unsigned char ch, r1, flag; 313 unsigned char ch, r1, flag;
@@ -346,12 +344,12 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up,
346 ch &= up->parity_mask; 344 ch &= up->parity_mask;
347 345
348 if (unlikely(ZS_IS_KEYB(up)) || unlikely(ZS_IS_MOUSE(up))) { 346 if (unlikely(ZS_IS_KEYB(up)) || unlikely(ZS_IS_MOUSE(up))) {
349 sunzilog_kbdms_receive_chars(up, ch, 0, regs); 347 sunzilog_kbdms_receive_chars(up, ch, 0);
350 continue; 348 continue;
351 } 349 }
352 350
353 if (tty == NULL) { 351 if (tty == NULL) {
354 uart_handle_sysrq_char(&up->port, ch, regs); 352 uart_handle_sysrq_char(&up->port, ch);
355 continue; 353 continue;
356 } 354 }
357 355
@@ -379,7 +377,7 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up,
379 else if (r1 & CRC_ERR) 377 else if (r1 & CRC_ERR)
380 flag = TTY_FRAME; 378 flag = TTY_FRAME;
381 } 379 }
382 if (uart_handle_sysrq_char(&up->port, ch, regs)) 380 if (uart_handle_sysrq_char(&up->port, ch))
383 continue; 381 continue;
384 382
385 if (up->port.ignore_status_mask == 0xff || 383 if (up->port.ignore_status_mask == 0xff ||
@@ -394,8 +392,7 @@ sunzilog_receive_chars(struct uart_sunzilog_port *up,
394} 392}
395 393
396static void sunzilog_status_handle(struct uart_sunzilog_port *up, 394static void sunzilog_status_handle(struct uart_sunzilog_port *up,
397 struct zilog_channel __iomem *channel, 395 struct zilog_channel __iomem *channel)
398 struct pt_regs *regs)
399{ 396{
400 unsigned char status; 397 unsigned char status;
401 398
@@ -408,7 +405,7 @@ static void sunzilog_status_handle(struct uart_sunzilog_port *up,
408 405
409 if (status & BRK_ABRT) { 406 if (status & BRK_ABRT) {
410 if (ZS_IS_MOUSE(up)) 407 if (ZS_IS_MOUSE(up))
411 sunzilog_kbdms_receive_chars(up, 0, 1, regs); 408 sunzilog_kbdms_receive_chars(up, 0, 1);
412 if (ZS_IS_CONS(up)) { 409 if (ZS_IS_CONS(up)) {
413 /* Wait for BREAK to deassert to avoid potentially 410 /* Wait for BREAK to deassert to avoid potentially
414 * confusing the PROM. 411 * confusing the PROM.
@@ -517,7 +514,7 @@ ack_tx_int:
517 ZS_WSYNC(channel); 514 ZS_WSYNC(channel);
518} 515}
519 516
520static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *regs) 517static irqreturn_t sunzilog_interrupt(int irq, void *dev_id)
521{ 518{
522 struct uart_sunzilog_port *up = dev_id; 519 struct uart_sunzilog_port *up = dev_id;
523 520
@@ -538,9 +535,9 @@ static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *reg
538 ZS_WSYNC(channel); 535 ZS_WSYNC(channel);
539 536
540 if (r3 & CHARxIP) 537 if (r3 & CHARxIP)
541 tty = sunzilog_receive_chars(up, channel, regs); 538 tty = sunzilog_receive_chars(up, channel);
542 if (r3 & CHAEXT) 539 if (r3 & CHAEXT)
543 sunzilog_status_handle(up, channel, regs); 540 sunzilog_status_handle(up, channel);
544 if (r3 & CHATxIP) 541 if (r3 & CHATxIP)
545 sunzilog_transmit_chars(up, channel); 542 sunzilog_transmit_chars(up, channel);
546 } 543 }
@@ -561,9 +558,9 @@ static irqreturn_t sunzilog_interrupt(int irq, void *dev_id, struct pt_regs *reg
561 ZS_WSYNC(channel); 558 ZS_WSYNC(channel);
562 559
563 if (r3 & CHBRxIP) 560 if (r3 & CHBRxIP)
564 tty = sunzilog_receive_chars(up, channel, regs); 561 tty = sunzilog_receive_chars(up, channel);
565 if (r3 & CHBEXT) 562 if (r3 & CHBEXT)
566 sunzilog_status_handle(up, channel, regs); 563 sunzilog_status_handle(up, channel);
567 if (r3 & CHBTxIP) 564 if (r3 & CHBTxIP)
568 sunzilog_transmit_chars(up, channel); 565 sunzilog_transmit_chars(up, channel);
569 } 566 }
@@ -1060,7 +1057,7 @@ static void sunzilog_free_tables(void)
1060 1057
1061static void sunzilog_putchar(struct uart_port *port, int ch) 1058static void sunzilog_putchar(struct uart_port *port, int ch)
1062{ 1059{
1063 struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port); 1060 struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port);
1064 int loops = ZS_PUT_CHAR_MAX_DELAY; 1061 int loops = ZS_PUT_CHAR_MAX_DELAY;
1065 1062
1066 /* This is a timed polling loop so do not switch the explicit 1063 /* This is a timed polling loop so do not switch the explicit
diff --git a/drivers/serial/v850e_uart.c b/drivers/serial/v850e_uart.c
index f802867c95c5..28f3bbff87bf 100644
--- a/drivers/serial/v850e_uart.c
+++ b/drivers/serial/v850e_uart.c
@@ -271,14 +271,14 @@ void v850e_uart_tx (struct uart_port *port)
271 v850e_uart_stop_tx (port, stopped); 271 v850e_uart_stop_tx (port, stopped);
272} 272}
273 273
274static irqreturn_t v850e_uart_tx_irq(int irq, void *data, struct pt_regs *regs) 274static irqreturn_t v850e_uart_tx_irq(int irq, void *data)
275{ 275{
276 struct uart_port *port = data; 276 struct uart_port *port = data;
277 v850e_uart_tx (port); 277 v850e_uart_tx (port);
278 return IRQ_HANDLED; 278 return IRQ_HANDLED;
279} 279}
280 280
281static irqreturn_t v850e_uart_rx_irq(int irq, void *data, struct pt_regs *regs) 281static irqreturn_t v850e_uart_rx_irq(int irq, void *data)
282{ 282{
283 struct uart_port *port = data; 283 struct uart_port *port = data;
284 unsigned ch_stat = TTY_NORMAL; 284 unsigned ch_stat = TTY_NORMAL;
diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c
index 6c8b0ea83c3c..fd51f8182dec 100644
--- a/drivers/serial/vr41xx_siu.c
+++ b/drivers/serial/vr41xx_siu.c
@@ -359,8 +359,7 @@ static void siu_break_ctl(struct uart_port *port, int ctl)
359 spin_unlock_irqrestore(&port->lock, flags); 359 spin_unlock_irqrestore(&port->lock, flags);
360} 360}
361 361
362static inline void receive_chars(struct uart_port *port, uint8_t *status, 362static inline void receive_chars(struct uart_port *port, uint8_t *status)
363 struct pt_regs *regs)
364{ 363{
365 struct tty_struct *tty; 364 struct tty_struct *tty;
366 uint8_t lsr, ch; 365 uint8_t lsr, ch;
@@ -405,7 +404,7 @@ static inline void receive_chars(struct uart_port *port, uint8_t *status,
405 flag = TTY_PARITY; 404 flag = TTY_PARITY;
406 } 405 }
407 406
408 if (uart_handle_sysrq_char(port, ch, regs)) 407 if (uart_handle_sysrq_char(port, ch))
409 goto ignore_char; 408 goto ignore_char;
410 409
411 uart_insert_char(port, lsr, UART_LSR_OE, ch, flag); 410 uart_insert_char(port, lsr, UART_LSR_OE, ch, flag);
@@ -472,7 +471,7 @@ static inline void transmit_chars(struct uart_port *port)
472 siu_stop_tx(port); 471 siu_stop_tx(port);
473} 472}
474 473
475static irqreturn_t siu_interrupt(int irq, void *dev_id, struct pt_regs *regs) 474static irqreturn_t siu_interrupt(int irq, void *dev_id)
476{ 475{
477 struct uart_port *port; 476 struct uart_port *port;
478 uint8_t iir, lsr; 477 uint8_t iir, lsr;
@@ -485,7 +484,7 @@ static irqreturn_t siu_interrupt(int irq, void *dev_id, struct pt_regs *regs)
485 484
486 lsr = siu_read(port, UART_LSR); 485 lsr = siu_read(port, UART_LSR);
487 if (lsr & UART_LSR_DR) 486 if (lsr & UART_LSR_DR)
488 receive_chars(port, &lsr, regs); 487 receive_chars(port, &lsr);
489 488
490 check_modem_status(port); 489 check_modem_status(port);
491 490
diff --git a/drivers/sn/ioc3.c b/drivers/sn/ioc3.c
index 6c7e0352d561..cd6b65333b71 100644
--- a/drivers/sn/ioc3.c
+++ b/drivers/sn/ioc3.c
@@ -398,10 +398,10 @@ static inline uint32_t get_pending_intrs(struct ioc3_driver_data *idd)
398 return intrs; 398 return intrs;
399} 399}
400 400
401static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs) 401static irqreturn_t ioc3_intr_io(int irq, void *arg)
402{ 402{
403 unsigned long flags; 403 unsigned long flags;
404 struct ioc3_driver_data *idd = (struct ioc3_driver_data *)arg; 404 struct ioc3_driver_data *idd = arg;
405 int handled = 1, id; 405 int handled = 1, id;
406 unsigned int pending; 406 unsigned int pending;
407 407
@@ -412,7 +412,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs)
412 if(ioc3_ethernet && idd->active[ioc3_ethernet->id] && 412 if(ioc3_ethernet && idd->active[ioc3_ethernet->id] &&
413 ioc3_ethernet->intr) { 413 ioc3_ethernet->intr) {
414 handled = handled && !ioc3_ethernet->intr(ioc3_ethernet, 414 handled = handled && !ioc3_ethernet->intr(ioc3_ethernet,
415 idd, 0, regs); 415 idd, 0);
416 } 416 }
417 } 417 }
418 pending = get_pending_intrs(idd); /* look at the IO IRQs */ 418 pending = get_pending_intrs(idd); /* look at the IO IRQs */
@@ -424,8 +424,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs)
424 write_ireg(idd, ioc3_submodules[id]->irq_mask, 424 write_ireg(idd, ioc3_submodules[id]->irq_mask,
425 IOC3_W_IEC); 425 IOC3_W_IEC);
426 if(!ioc3_submodules[id]->intr(ioc3_submodules[id], 426 if(!ioc3_submodules[id]->intr(ioc3_submodules[id],
427 idd, pending & ioc3_submodules[id]->irq_mask, 427 idd, pending & ioc3_submodules[id]->irq_mask))
428 regs))
429 pending &= ~ioc3_submodules[id]->irq_mask; 428 pending &= ~ioc3_submodules[id]->irq_mask;
430 if (ioc3_submodules[id]->reset_mask) 429 if (ioc3_submodules[id]->reset_mask)
431 write_ireg(idd, ioc3_submodules[id]->irq_mask, 430 write_ireg(idd, ioc3_submodules[id]->irq_mask,
@@ -442,7 +441,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs)
442 return handled?IRQ_HANDLED:IRQ_NONE; 441 return handled?IRQ_HANDLED:IRQ_NONE;
443} 442}
444 443
445static irqreturn_t ioc3_intr_eth(int irq, void *arg, struct pt_regs *regs) 444static irqreturn_t ioc3_intr_eth(int irq, void *arg)
446{ 445{
447 unsigned long flags; 446 unsigned long flags;
448 struct ioc3_driver_data *idd = (struct ioc3_driver_data *)arg; 447 struct ioc3_driver_data *idd = (struct ioc3_driver_data *)arg;
@@ -453,8 +452,7 @@ static irqreturn_t ioc3_intr_eth(int irq, void *arg, struct pt_regs *regs)
453 read_lock_irqsave(&ioc3_submodules_lock, flags); 452 read_lock_irqsave(&ioc3_submodules_lock, flags);
454 if(ioc3_ethernet && idd->active[ioc3_ethernet->id] 453 if(ioc3_ethernet && idd->active[ioc3_ethernet->id]
455 && ioc3_ethernet->intr) 454 && ioc3_ethernet->intr)
456 handled = handled && !ioc3_ethernet->intr(ioc3_ethernet, idd, 0, 455 handled = handled && !ioc3_ethernet->intr(ioc3_ethernet, idd, 0);
457 regs);
458 read_unlock_irqrestore(&ioc3_submodules_lock, flags); 456 read_unlock_irqrestore(&ioc3_submodules_lock, flags);
459 return handled?IRQ_HANDLED:IRQ_NONE; 457 return handled?IRQ_HANDLED:IRQ_NONE;
460} 458}
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c
index 29aec77f98be..72025df5561d 100644
--- a/drivers/spi/pxa2xx_spi.c
+++ b/drivers/spi/pxa2xx_spi.c
@@ -409,7 +409,7 @@ static int wait_dma_channel_stop(int channel)
409 return limit; 409 return limit;
410} 410}
411 411
412static void dma_handler(int channel, void *data, struct pt_regs *regs) 412static void dma_handler(int channel, void *data)
413{ 413{
414 struct driver_data *drv_data = data; 414 struct driver_data *drv_data = data;
415 struct spi_message *msg = drv_data->cur_msg; 415 struct spi_message *msg = drv_data->cur_msg;
@@ -667,9 +667,9 @@ static irqreturn_t interrupt_transfer(struct driver_data *drv_data)
667 return IRQ_HANDLED; 667 return IRQ_HANDLED;
668} 668}
669 669
670static irqreturn_t ssp_int(int irq, void *dev_id, struct pt_regs *regs) 670static irqreturn_t ssp_int(int irq, void *dev_id)
671{ 671{
672 struct driver_data *drv_data = (struct driver_data *)dev_id; 672 struct driver_data *drv_data = dev_id;
673 void *reg = drv_data->ioaddr; 673 void *reg = drv_data->ioaddr;
674 674
675 if (!drv_data->cur_msg) { 675 if (!drv_data->cur_msg) {
diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc83xx.c
index 5d92a7e5cb41..ff0b04895db0 100644
--- a/drivers/spi/spi_mpc83xx.c
+++ b/drivers/spi/spi_mpc83xx.c
@@ -296,8 +296,7 @@ static int mpc83xx_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
296 return t->len - mpc83xx_spi->count; 296 return t->len - mpc83xx_spi->count;
297} 297}
298 298
299irqreturn_t mpc83xx_spi_irq(s32 irq, void *context_data, 299irqreturn_t mpc83xx_spi_irq(s32 irq, void *context_data)
300 struct pt_regs * ptregs)
301{ 300{
302 struct mpc83xx_spi *mpc83xx_spi = context_data; 301 struct mpc83xx_spi *mpc83xx_spi = context_data;
303 u32 event; 302 u32 event;
diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c
index 20eb6e95a3a0..2ebe1fc4c398 100644
--- a/drivers/spi/spi_s3c24xx.c
+++ b/drivers/spi/spi_s3c24xx.c
@@ -196,7 +196,7 @@ static int s3c24xx_spi_txrx(struct spi_device *spi, struct spi_transfer *t)
196 return hw->count; 196 return hw->count;
197} 197}
198 198
199static irqreturn_t s3c24xx_spi_irq(int irq, void *dev, struct pt_regs *regs) 199static irqreturn_t s3c24xx_spi_irq(int irq, void *dev)
200{ 200{
201 struct s3c24xx_spi *hw = dev; 201 struct s3c24xx_spi *hw = dev;
202 unsigned int spsta = readb(hw->regs + S3C2410_SPSTA); 202 unsigned int spsta = readb(hw->regs + S3C2410_SPSTA);
diff --git a/drivers/tc/zs.c b/drivers/tc/zs.c
index 622881f26761..792becdfe6f8 100644
--- a/drivers/tc/zs.c
+++ b/drivers/tc/zs.c
@@ -347,7 +347,7 @@ static void rs_sched_event(struct dec_serial *info, int event)
347 tasklet_schedule(&info->tlet); 347 tasklet_schedule(&info->tlet);
348} 348}
349 349
350static void receive_chars(struct dec_serial *info, struct pt_regs *regs) 350static void receive_chars(struct dec_serial *info)
351{ 351{
352 struct tty_struct *tty = info->tty; 352 struct tty_struct *tty = info->tty;
353 unsigned char ch, stat, flag; 353 unsigned char ch, stat, flag;
@@ -389,7 +389,7 @@ static void receive_chars(struct dec_serial *info, struct pt_regs *regs)
389 if (ch == 0) 389 if (ch == 0)
390 continue; 390 continue;
391 if (time_before(jiffies, break_pressed + HZ * 5)) { 391 if (time_before(jiffies, break_pressed + HZ * 5)) {
392 handle_sysrq(ch, regs, NULL); 392 handle_sysrq(ch, NULL);
393 break_pressed = 0; 393 break_pressed = 0;
394 continue; 394 continue;
395 } 395 }
@@ -490,7 +490,7 @@ static void status_handle(struct dec_serial *info)
490/* 490/*
491 * This is the serial driver's generic interrupt routine 491 * This is the serial driver's generic interrupt routine
492 */ 492 */
493static irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs *regs) 493static irqreturn_t rs_interrupt(int irq, void *dev_id)
494{ 494{
495 struct dec_serial *info = (struct dec_serial *) dev_id; 495 struct dec_serial *info = (struct dec_serial *) dev_id;
496 irqreturn_t status = IRQ_NONE; 496 irqreturn_t status = IRQ_NONE;
@@ -518,7 +518,7 @@ static irqreturn_t rs_interrupt(int irq, void *dev_id, struct pt_regs *regs)
518 status = IRQ_HANDLED; 518 status = IRQ_HANDLED;
519 519
520 if (zs_intreg & CHBRxIP) { 520 if (zs_intreg & CHBRxIP) {
521 receive_chars(info, regs); 521 receive_chars(info);
522 } 522 }
523 if (zs_intreg & CHBTxIP) { 523 if (zs_intreg & CHBTxIP) {
524 transmit_chars(info); 524 transmit_chars(info);
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
index 04631dcbabbc..3892a9e9aee3 100644
--- a/drivers/usb/atm/cxacru.c
+++ b/drivers/usb/atm/cxacru.c
@@ -171,7 +171,7 @@ struct cxacru_data {
171}; 171};
172 172
173/* the following three functions are stolen from drivers/usb/core/message.c */ 173/* the following three functions are stolen from drivers/usb/core/message.c */
174static void cxacru_blocking_completion(struct urb *urb, struct pt_regs *regs) 174static void cxacru_blocking_completion(struct urb *urb)
175{ 175{
176 complete((struct completion *)urb->context); 176 complete((struct completion *)urb->context);
177} 177}
diff --git a/drivers/usb/atm/speedtch.c b/drivers/usb/atm/speedtch.c
index 956b7a1e8af9..7c7b507af29d 100644
--- a/drivers/usb/atm/speedtch.c
+++ b/drivers/usb/atm/speedtch.c
@@ -547,7 +547,7 @@ static void speedtch_resubmit_int(unsigned long data)
547 } 547 }
548} 548}
549 549
550static void speedtch_handle_int(struct urb *int_urb, struct pt_regs *regs) 550static void speedtch_handle_int(struct urb *int_urb)
551{ 551{
552 struct speedtch_instance_data *instance = int_urb->context; 552 struct speedtch_instance_data *instance = int_urb->context;
553 struct usbatm_data *usbatm = instance->usbatm; 553 struct usbatm_data *usbatm = instance->usbatm;
diff --git a/drivers/usb/atm/ueagle-atm.c b/drivers/usb/atm/ueagle-atm.c
index 465961a26e4a..f5434b1cbb1e 100644
--- a/drivers/usb/atm/ueagle-atm.c
+++ b/drivers/usb/atm/ueagle-atm.c
@@ -1297,7 +1297,7 @@ bad1:
1297/* 1297/*
1298 * interrupt handler 1298 * interrupt handler
1299 */ 1299 */
1300static void uea_intr(struct urb *urb, struct pt_regs *regs) 1300static void uea_intr(struct urb *urb)
1301{ 1301{
1302 struct uea_softc *sc = urb->context; 1302 struct uea_softc *sc = urb->context;
1303 struct intr_pkt *intr = urb->transfer_buffer; 1303 struct intr_pkt *intr = urb->transfer_buffer;
diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
index a38701c742c3..309073f6433a 100644
--- a/drivers/usb/atm/usbatm.c
+++ b/drivers/usb/atm/usbatm.c
@@ -254,7 +254,7 @@ static int usbatm_submit_urb(struct urb *urb)
254 return ret; 254 return ret;
255} 255}
256 256
257static void usbatm_complete(struct urb *urb, struct pt_regs *regs) 257static void usbatm_complete(struct urb *urb)
258{ 258{
259 struct usbatm_channel *channel = urb->context; 259 struct usbatm_channel *channel = urb->context;
260 unsigned long flags; 260 unsigned long flags;
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 71288295df2f..ec4d1d756725 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -218,7 +218,7 @@ static int acm_write_start(struct acm *acm)
218 */ 218 */
219 219
220/* control interface reports status changes with "interrupt" transfers */ 220/* control interface reports status changes with "interrupt" transfers */
221static void acm_ctrl_irq(struct urb *urb, struct pt_regs *regs) 221static void acm_ctrl_irq(struct urb *urb)
222{ 222{
223 struct acm *acm = urb->context; 223 struct acm *acm = urb->context;
224 struct usb_cdc_notification *dr = urb->transfer_buffer; 224 struct usb_cdc_notification *dr = urb->transfer_buffer;
@@ -285,7 +285,7 @@ exit:
285} 285}
286 286
287/* data interface returns incoming bytes, or we got unthrottled */ 287/* data interface returns incoming bytes, or we got unthrottled */
288static void acm_read_bulk(struct urb *urb, struct pt_regs *regs) 288static void acm_read_bulk(struct urb *urb)
289{ 289{
290 struct acm_rb *buf; 290 struct acm_rb *buf;
291 struct acm_ru *rcv = urb->context; 291 struct acm_ru *rcv = urb->context;
@@ -409,7 +409,7 @@ urbs:
409} 409}
410 410
411/* data interface wrote those outgoing bytes */ 411/* data interface wrote those outgoing bytes */
412static void acm_write_bulk(struct urb *urb, struct pt_regs *regs) 412static void acm_write_bulk(struct urb *urb)
413{ 413{
414 struct acm *acm = (struct acm *)urb->context; 414 struct acm *acm = (struct acm *)urb->context;
415 415
diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
index 9cac11ca1bb7..a161d70e1e42 100644
--- a/drivers/usb/class/usblp.c
+++ b/drivers/usb/class/usblp.c
@@ -271,7 +271,7 @@ static int proto_bias = -1;
271 * URB callback. 271 * URB callback.
272 */ 272 */
273 273
274static void usblp_bulk_read(struct urb *urb, struct pt_regs *regs) 274static void usblp_bulk_read(struct urb *urb)
275{ 275{
276 struct usblp *usblp = urb->context; 276 struct usblp *usblp = urb->context;
277 277
@@ -288,7 +288,7 @@ unplug:
288 wake_up_interruptible(&usblp->wait); 288 wake_up_interruptible(&usblp->wait);
289} 289}
290 290
291static void usblp_bulk_write(struct urb *urb, struct pt_regs *regs) 291static void usblp_bulk_write(struct urb *urb)
292{ 292{
293 struct usblp *usblp = urb->context; 293 struct usblp *usblp = urb->context;
294 294
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 3f509beb88e4..724822cac2b1 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -304,7 +304,7 @@ static void snoop_urb(struct urb *urb, void __user *userurb)
304 printk("\n"); 304 printk("\n");
305} 305}
306 306
307static void async_completed(struct urb *urb, struct pt_regs *regs) 307static void async_completed(struct urb *urb)
308{ 308{
309 struct async *as = urb->context; 309 struct async *as = urb->context;
310 struct dev_state *ps = as->ps; 310 struct dev_state *ps = as->ps;
@@ -1216,7 +1216,7 @@ static int proc_submiturb_compat(struct dev_state *ps, void __user *arg)
1216{ 1216{
1217 struct usbdevfs_urb uurb; 1217 struct usbdevfs_urb uurb;
1218 1218
1219 if (get_urb32(&uurb,(struct usbdevfs_urb32 *)arg)) 1219 if (get_urb32(&uurb,(struct usbdevfs_urb32 __user *)arg))
1220 return -EFAULT; 1220 return -EFAULT;
1221 1221
1222 return proc_do_submiturb(ps, &uurb, ((struct usbdevfs_urb32 __user *)arg)->iso_frame_desc, arg); 1222 return proc_do_submiturb(ps, &uurb, ((struct usbdevfs_urb32 __user *)arg)->iso_frame_desc, arg);
@@ -1251,7 +1251,7 @@ static int processcompl_compat(struct async *as, void __user * __user *arg)
1251 } 1251 }
1252 1252
1253 free_async(as); 1253 free_async(as);
1254 if (put_user((u32)(u64)addr, (u32 __user *)arg)) 1254 if (put_user(ptr_to_compat(addr), (u32 __user *)arg))
1255 return -EFAULT; 1255 return -EFAULT;
1256 return 0; 1256 return 0;
1257} 1257}
@@ -1520,7 +1520,7 @@ static int usbdev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
1520 1520
1521 case USBDEVFS_IOCTL32: 1521 case USBDEVFS_IOCTL32:
1522 snoop(&dev->dev, "%s: IOCTL\n", __FUNCTION__); 1522 snoop(&dev->dev, "%s: IOCTL\n", __FUNCTION__);
1523 ret = proc_ioctl_compat(ps, (compat_uptr_t)(long)p); 1523 ret = proc_ioctl_compat(ps, ptr_to_compat(p));
1524 break; 1524 break;
1525#endif 1525#endif
1526 1526
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index e658089f7b50..afa2dd203329 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -522,7 +522,7 @@ error:
522 if (urb->status == -EINPROGRESS) 522 if (urb->status == -EINPROGRESS)
523 urb->status = status; 523 urb->status = status;
524 spin_unlock (&urb->lock); 524 spin_unlock (&urb->lock);
525 usb_hcd_giveback_urb (hcd, urb, NULL); 525 usb_hcd_giveback_urb (hcd, urb);
526 local_irq_restore (flags); 526 local_irq_restore (flags);
527 return 0; 527 return 0;
528} 528}
@@ -572,7 +572,7 @@ void usb_hcd_poll_rh_status(struct usb_hcd *hcd)
572 572
573 /* local irqs are always blocked in completions */ 573 /* local irqs are always blocked in completions */
574 if (length > 0) 574 if (length > 0)
575 usb_hcd_giveback_urb (hcd, urb, NULL); 575 usb_hcd_giveback_urb (hcd, urb);
576 else 576 else
577 hcd->poll_pending = 1; 577 hcd->poll_pending = 1;
578 local_irq_restore (flags); 578 local_irq_restore (flags);
@@ -656,7 +656,7 @@ static int usb_rh_urb_dequeue (struct usb_hcd *hcd, struct urb *urb)
656 urb = NULL; /* wasn't fully queued */ 656 urb = NULL; /* wasn't fully queued */
657 spin_unlock (&hcd_root_hub_lock); 657 spin_unlock (&hcd_root_hub_lock);
658 if (urb) 658 if (urb)
659 usb_hcd_giveback_urb (hcd, urb, NULL); 659 usb_hcd_giveback_urb (hcd, urb);
660 local_irq_restore (flags); 660 local_irq_restore (flags);
661 } 661 }
662 662
@@ -1498,7 +1498,6 @@ EXPORT_SYMBOL (usb_bus_start_enum);
1498 * usb_hcd_giveback_urb - return URB from HCD to device driver 1498 * usb_hcd_giveback_urb - return URB from HCD to device driver
1499 * @hcd: host controller returning the URB 1499 * @hcd: host controller returning the URB
1500 * @urb: urb being returned to the USB device driver. 1500 * @urb: urb being returned to the USB device driver.
1501 * @regs: pt_regs, passed down to the URB completion handler
1502 * Context: in_interrupt() 1501 * Context: in_interrupt()
1503 * 1502 *
1504 * This hands the URB from HCD to its USB device driver, using its 1503 * This hands the URB from HCD to its USB device driver, using its
@@ -1507,7 +1506,7 @@ EXPORT_SYMBOL (usb_bus_start_enum);
1507 * the device driver won't cause problems if it frees, modifies, 1506 * the device driver won't cause problems if it frees, modifies,
1508 * or resubmits this URB. 1507 * or resubmits this URB.
1509 */ 1508 */
1510void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs *regs) 1509void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb)
1511{ 1510{
1512 int at_root_hub; 1511 int at_root_hub;
1513 1512
@@ -1534,7 +1533,7 @@ void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs
1534 1533
1535 usbmon_urb_complete (&hcd->self, urb); 1534 usbmon_urb_complete (&hcd->self, urb);
1536 /* pass ownership to the completion handler */ 1535 /* pass ownership to the completion handler */
1537 urb->complete (urb, regs); 1536 urb->complete (urb);
1538 atomic_dec (&urb->use_count); 1537 atomic_dec (&urb->use_count);
1539 if (unlikely (urb->reject)) 1538 if (unlikely (urb->reject))
1540 wake_up (&usb_kill_urb_queue); 1539 wake_up (&usb_kill_urb_queue);
@@ -1553,7 +1552,7 @@ EXPORT_SYMBOL (usb_hcd_giveback_urb);
1553 * If the controller isn't HALTed, calls the driver's irq handler. 1552 * If the controller isn't HALTed, calls the driver's irq handler.
1554 * Checks whether the controller is now dead. 1553 * Checks whether the controller is now dead.
1555 */ 1554 */
1556irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs * r) 1555irqreturn_t usb_hcd_irq (int irq, void *__hcd)
1557{ 1556{
1558 struct usb_hcd *hcd = __hcd; 1557 struct usb_hcd *hcd = __hcd;
1559 int start = hcd->state; 1558 int start = hcd->state;
@@ -1561,7 +1560,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs * r)
1561 if (unlikely(start == HC_STATE_HALT || 1560 if (unlikely(start == HC_STATE_HALT ||
1562 !test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags))) 1561 !test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)))
1563 return IRQ_NONE; 1562 return IRQ_NONE;
1564 if (hcd->driver->irq (hcd, r) == IRQ_NONE) 1563 if (hcd->driver->irq (hcd) == IRQ_NONE)
1565 return IRQ_NONE; 1564 return IRQ_NONE;
1566 1565
1567 set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags); 1566 set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags);
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h
index 676877c15f81..8f8df0d4382e 100644
--- a/drivers/usb/core/hcd.h
+++ b/drivers/usb/core/hcd.h
@@ -143,15 +143,13 @@ struct hcd_timeout { /* timeouts we allocate */
143/*-------------------------------------------------------------------------*/ 143/*-------------------------------------------------------------------------*/
144 144
145 145
146struct pt_regs;
147
148struct hc_driver { 146struct hc_driver {
149 const char *description; /* "ehci-hcd" etc */ 147 const char *description; /* "ehci-hcd" etc */
150 const char *product_desc; /* product/vendor string */ 148 const char *product_desc; /* product/vendor string */
151 size_t hcd_priv_size; /* size of private data */ 149 size_t hcd_priv_size; /* size of private data */
152 150
153 /* irq handler */ 151 /* irq handler */
154 irqreturn_t (*irq) (struct usb_hcd *hcd, struct pt_regs *regs); 152 irqreturn_t (*irq) (struct usb_hcd *hcd);
155 153
156 int flags; 154 int flags;
157#define HCD_MEMORY 0x0001 /* HC regs use memory (else I/O) */ 155#define HCD_MEMORY 0x0001 /* HC regs use memory (else I/O) */
@@ -205,8 +203,7 @@ struct hc_driver {
205 203
206extern int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags); 204extern int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags);
207extern int usb_hcd_unlink_urb (struct urb *urb, int status); 205extern int usb_hcd_unlink_urb (struct urb *urb, int status);
208extern void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, 206extern void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb);
209 struct pt_regs *regs);
210extern void usb_hcd_endpoint_disable (struct usb_device *udev, 207extern void usb_hcd_endpoint_disable (struct usb_device *udev,
211 struct usb_host_endpoint *ep); 208 struct usb_host_endpoint *ep);
212extern int usb_hcd_get_frame_number (struct usb_device *udev); 209extern int usb_hcd_get_frame_number (struct usb_device *udev);
@@ -248,7 +245,7 @@ void hcd_buffer_free (struct usb_bus *bus, size_t size,
248 void *addr, dma_addr_t dma); 245 void *addr, dma_addr_t dma);
249 246
250/* generic bus glue, needed for host controllers that don't use PCI */ 247/* generic bus glue, needed for host controllers that don't use PCI */
251extern irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs *r); 248extern irqreturn_t usb_hcd_irq (int irq, void *__hcd);
252 249
253extern void usb_hc_died (struct usb_hcd *hcd); 250extern void usb_hc_died (struct usb_hcd *hcd);
254extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd); 251extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd);
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 7676690a0386..66bff184a30c 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -291,7 +291,7 @@ void usb_kick_khubd(struct usb_device *hdev)
291 291
292 292
293/* completion function, fires on port status changes and various faults */ 293/* completion function, fires on port status changes and various faults */
294static void hub_irq(struct urb *urb, struct pt_regs *regs) 294static void hub_irq(struct urb *urb)
295{ 295{
296 struct usb_hub *hub = urb->context; 296 struct usb_hub *hub = urb->context;
297 int status; 297 int status;
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 85b1cd18336f..fccd1952bad3 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -17,7 +17,7 @@
17#include "hcd.h" /* for usbcore internals */ 17#include "hcd.h" /* for usbcore internals */
18#include "usb.h" 18#include "usb.h"
19 19
20static void usb_api_blocking_completion(struct urb *urb, struct pt_regs *regs) 20static void usb_api_blocking_completion(struct urb *urb)
21{ 21{
22 complete((struct completion *)urb->context); 22 complete((struct completion *)urb->context);
23} 23}
@@ -246,7 +246,7 @@ static void sg_clean (struct usb_sg_request *io)
246 io->dev = NULL; 246 io->dev = NULL;
247} 247}
248 248
249static void sg_complete (struct urb *urb, struct pt_regs *regs) 249static void sg_complete (struct urb *urb)
250{ 250{
251 struct usb_sg_request *io = urb->context; 251 struct usb_sg_request *io = urb->context;
252 252
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index 77beba485a84..72f3db99ff94 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1366,7 +1366,7 @@ static void handle_ep0(struct at91_udc *udc)
1366 } 1366 }
1367} 1367}
1368 1368
1369static irqreturn_t at91_udc_irq (int irq, void *_udc, struct pt_regs *r) 1369static irqreturn_t at91_udc_irq (int irq, void *_udc)
1370{ 1370{
1371 struct at91_udc *udc = _udc; 1371 struct at91_udc *udc = _udc;
1372 u32 rescans = 5; 1372 u32 rescans = 5;
@@ -1552,7 +1552,7 @@ static struct at91_udc controller = {
1552 /* ep6 and ep7 are also reserved (custom silicon might use them) */ 1552 /* ep6 and ep7 are also reserved (custom silicon might use them) */
1553}; 1553};
1554 1554
1555static irqreturn_t at91_vbus_irq(int irq, void *_udc, struct pt_regs *r) 1555static irqreturn_t at91_vbus_irq(int irq, void *_udc)
1556{ 1556{
1557 struct at91_udc *udc = _udc; 1557 struct at91_udc *udc = _udc;
1558 unsigned value; 1558 unsigned value;
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
index 4d2946e540cf..f1f32d7be5f9 100644
--- a/drivers/usb/gadget/dummy_hcd.c
+++ b/drivers/usb/gadget/dummy_hcd.c
@@ -1551,7 +1551,7 @@ return_urb:
1551 ep->already_seen = ep->setup_stage = 0; 1551 ep->already_seen = ep->setup_stage = 0;
1552 1552
1553 spin_unlock (&dum->lock); 1553 spin_unlock (&dum->lock);
1554 usb_hcd_giveback_urb (dummy_to_hcd(dum), urb, NULL); 1554 usb_hcd_giveback_urb (dummy_to_hcd(dum), urb);
1555 spin_lock (&dum->lock); 1555 spin_lock (&dum->lock);
1556 1556
1557 goto restart; 1557 goto restart;
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c
index 7cf2999e8616..a3076da3f4eb 100644
--- a/drivers/usb/gadget/goku_udc.c
+++ b/drivers/usb/gadget/goku_udc.c
@@ -1628,7 +1628,7 @@ stall:
1628 handled = 1; \ 1628 handled = 1; \
1629 } 1629 }
1630 1630
1631static irqreturn_t goku_irq(int irq, void *_dev, struct pt_regs *r) 1631static irqreturn_t goku_irq(int irq, void *_dev)
1632{ 1632{
1633 struct goku_udc *dev = _dev; 1633 struct goku_udc *dev = _dev;
1634 struct goku_udc_regs __iomem *regs = dev->regs; 1634 struct goku_udc_regs __iomem *regs = dev->regs;
diff --git a/drivers/usb/gadget/lh7a40x_udc.c b/drivers/usb/gadget/lh7a40x_udc.c
index 36db72579377..179259664c18 100644
--- a/drivers/usb/gadget/lh7a40x_udc.c
+++ b/drivers/usb/gadget/lh7a40x_udc.c
@@ -922,7 +922,7 @@ static void lh7a40x_reset_intr(struct lh7a40x_udc *dev)
922/* 922/*
923 * lh7a40x usb client interrupt handler. 923 * lh7a40x usb client interrupt handler.
924 */ 924 */
925static irqreturn_t lh7a40x_udc_irq(int irq, void *_dev, struct pt_regs *r) 925static irqreturn_t lh7a40x_udc_irq(int irq, void *_dev)
926{ 926{
927 struct lh7a40x_udc *dev = _dev; 927 struct lh7a40x_udc *dev = _dev;
928 928
diff --git a/drivers/usb/gadget/net2280.c b/drivers/usb/gadget/net2280.c
index 3bda37f9a35f..d954daa8e9e0 100644
--- a/drivers/usb/gadget/net2280.c
+++ b/drivers/usb/gadget/net2280.c
@@ -2753,7 +2753,7 @@ static void handle_stat1_irqs (struct net2280 *dev, u32 stat)
2753 DEBUG (dev, "unhandled irqstat1 %08x\n", stat); 2753 DEBUG (dev, "unhandled irqstat1 %08x\n", stat);
2754} 2754}
2755 2755
2756static irqreturn_t net2280_irq (int irq, void *_dev, struct pt_regs * r) 2756static irqreturn_t net2280_irq (int irq, void *_dev)
2757{ 2757{
2758 struct net2280 *dev = _dev; 2758 struct net2280 *dev = _dev;
2759 2759
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
index 8c18df869833..48a09fd89d18 100644
--- a/drivers/usb/gadget/omap_udc.c
+++ b/drivers/usb/gadget/omap_udc.c
@@ -1815,8 +1815,7 @@ static void devstate_irq(struct omap_udc *udc, u16 irq_src)
1815 UDC_IRQ_SRC_REG = UDC_DS_CHG; 1815 UDC_IRQ_SRC_REG = UDC_DS_CHG;
1816} 1816}
1817 1817
1818static irqreturn_t 1818static irqreturn_t omap_udc_irq(int irq, void *_udc)
1819omap_udc_irq(int irq, void *_udc, struct pt_regs *r)
1820{ 1819{
1821 struct omap_udc *udc = _udc; 1820 struct omap_udc *udc = _udc;
1822 u16 irq_src; 1821 u16 irq_src;
@@ -1888,8 +1887,7 @@ static void pio_out_timer(unsigned long _ep)
1888 spin_unlock_irqrestore(&ep->udc->lock, flags); 1887 spin_unlock_irqrestore(&ep->udc->lock, flags);
1889} 1888}
1890 1889
1891static irqreturn_t 1890static irqreturn_t omap_udc_pio_irq(int irq, void *_dev)
1892omap_udc_pio_irq(int irq, void *_dev, struct pt_regs *r)
1893{ 1891{
1894 u16 epn_stat, irq_src; 1892 u16 epn_stat, irq_src;
1895 irqreturn_t status = IRQ_NONE; 1893 irqreturn_t status = IRQ_NONE;
@@ -1968,8 +1966,7 @@ omap_udc_pio_irq(int irq, void *_dev, struct pt_regs *r)
1968} 1966}
1969 1967
1970#ifdef USE_ISO 1968#ifdef USE_ISO
1971static irqreturn_t 1969static irqreturn_t omap_udc_iso_irq(int irq, void *_dev)
1972omap_udc_iso_irq(int irq, void *_dev, struct pt_regs *r)
1973{ 1970{
1974 struct omap_udc *udc = _dev; 1971 struct omap_udc *udc = _dev;
1975 struct omap_ep *ep; 1972 struct omap_ep *ep;
diff --git a/drivers/usb/gadget/pxa2xx_udc.c b/drivers/usb/gadget/pxa2xx_udc.c
index f1adcf8b2023..f42c00ef0bca 100644
--- a/drivers/usb/gadget/pxa2xx_udc.c
+++ b/drivers/usb/gadget/pxa2xx_udc.c
@@ -110,7 +110,7 @@ static int use_dma = 1;
110module_param(use_dma, bool, 0); 110module_param(use_dma, bool, 0);
111MODULE_PARM_DESC (use_dma, "true to use dma"); 111MODULE_PARM_DESC (use_dma, "true to use dma");
112 112
113static void dma_nodesc_handler (int dmach, void *_ep, struct pt_regs *r); 113static void dma_nodesc_handler (int dmach, void *_ep);
114static void kick_dma(struct pxa2xx_ep *ep, struct pxa2xx_request *req); 114static void kick_dma(struct pxa2xx_ep *ep, struct pxa2xx_request *req);
115 115
116#ifdef USE_OUT_DMA 116#ifdef USE_OUT_DMA
@@ -828,7 +828,7 @@ static void cancel_dma(struct pxa2xx_ep *ep)
828} 828}
829 829
830/* dma channel stopped ... normal tx end (IN), or on error (IN/OUT) */ 830/* dma channel stopped ... normal tx end (IN), or on error (IN/OUT) */
831static void dma_nodesc_handler(int dmach, void *_ep, struct pt_regs *r) 831static void dma_nodesc_handler(int dmach, void *_ep)
832{ 832{
833 struct pxa2xx_ep *ep = _ep; 833 struct pxa2xx_ep *ep = _ep;
834 struct pxa2xx_request *req; 834 struct pxa2xx_request *req;
@@ -1724,7 +1724,7 @@ EXPORT_SYMBOL(usb_gadget_unregister_driver);
1724 */ 1724 */
1725 1725
1726static irqreturn_t 1726static irqreturn_t
1727lubbock_vbus_irq(int irq, void *_dev, struct pt_regs *r) 1727lubbock_vbus_irq(int irq, void *_dev)
1728{ 1728{
1729 struct pxa2xx_udc *dev = _dev; 1729 struct pxa2xx_udc *dev = _dev;
1730 int vbus; 1730 int vbus;
@@ -1754,8 +1754,7 @@ lubbock_vbus_irq(int irq, void *_dev, struct pt_regs *r)
1754 1754
1755#endif 1755#endif
1756 1756
1757static irqreturn_t 1757static irqreturn_t udc_vbus_irq(int irq, void *_dev)
1758udc_vbus_irq(int irq, void *_dev, struct pt_regs *r)
1759{ 1758{
1760 struct pxa2xx_udc *dev = _dev; 1759 struct pxa2xx_udc *dev = _dev;
1761 int vbus = pxa_gpio_get(dev->mach->gpio_vbus); 1760 int vbus = pxa_gpio_get(dev->mach->gpio_vbus);
@@ -2084,7 +2083,7 @@ static void handle_ep(struct pxa2xx_ep *ep)
2084 * could cause usb protocol errors. 2083 * could cause usb protocol errors.
2085 */ 2084 */
2086static irqreturn_t 2085static irqreturn_t
2087pxa2xx_udc_irq(int irq, void *_dev, struct pt_regs *r) 2086pxa2xx_udc_irq(int irq, void *_dev)
2088{ 2087{
2089 struct pxa2xx_udc *dev = _dev; 2088 struct pxa2xx_udc *dev = _dev;
2090 int handled; 2089 int handled;
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 5ac918591131..aac6ec5dd7cf 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -254,8 +254,8 @@ static void ehci_quiesce (struct ehci_hcd *ehci)
254 254
255/*-------------------------------------------------------------------------*/ 255/*-------------------------------------------------------------------------*/
256 256
257static void end_unlink_async (struct ehci_hcd *ehci, struct pt_regs *regs); 257static void end_unlink_async (struct ehci_hcd *ehci);
258static void ehci_work(struct ehci_hcd *ehci, struct pt_regs *regs); 258static void ehci_work(struct ehci_hcd *ehci);
259 259
260#include "ehci-hub.c" 260#include "ehci-hub.c"
261#include "ehci-mem.c" 261#include "ehci-mem.c"
@@ -280,7 +280,7 @@ static void ehci_iaa_watchdog (unsigned long param)
280 ehci_vdbg (ehci, "lost IAA\n"); 280 ehci_vdbg (ehci, "lost IAA\n");
281 COUNT (ehci->stats.lost_iaa); 281 COUNT (ehci->stats.lost_iaa);
282 writel (STS_IAA, &ehci->regs->status); 282 writel (STS_IAA, &ehci->regs->status);
283 end_unlink_async (ehci, NULL); 283 end_unlink_async (ehci);
284 } 284 }
285 } 285 }
286 286
@@ -299,7 +299,7 @@ static void ehci_watchdog (unsigned long param)
299 start_unlink_async (ehci, ehci->async); 299 start_unlink_async (ehci, ehci->async);
300 300
301 /* ehci could run by timer, without IRQs ... */ 301 /* ehci could run by timer, without IRQs ... */
302 ehci_work (ehci, NULL); 302 ehci_work (ehci);
303 303
304 spin_unlock_irqrestore (&ehci->lock, flags); 304 spin_unlock_irqrestore (&ehci->lock, flags);
305} 305}
@@ -342,7 +342,7 @@ static void ehci_port_power (struct ehci_hcd *ehci, int is_on)
342 * ehci_work is called from some interrupts, timers, and so on. 342 * ehci_work is called from some interrupts, timers, and so on.
343 * it calls driver completion functions, after dropping ehci->lock. 343 * it calls driver completion functions, after dropping ehci->lock.
344 */ 344 */
345static void ehci_work (struct ehci_hcd *ehci, struct pt_regs *regs) 345static void ehci_work (struct ehci_hcd *ehci)
346{ 346{
347 timer_action_done (ehci, TIMER_IO_WATCHDOG); 347 timer_action_done (ehci, TIMER_IO_WATCHDOG);
348 348
@@ -353,9 +353,9 @@ static void ehci_work (struct ehci_hcd *ehci, struct pt_regs *regs)
353 if (ehci->scanning) 353 if (ehci->scanning)
354 return; 354 return;
355 ehci->scanning = 1; 355 ehci->scanning = 1;
356 scan_async (ehci, regs); 356 scan_async (ehci);
357 if (ehci->next_uframe != -1) 357 if (ehci->next_uframe != -1)
358 scan_periodic (ehci, regs); 358 scan_periodic (ehci);
359 ehci->scanning = 0; 359 ehci->scanning = 0;
360 360
361 /* the IO watchdog guards against hardware or driver bugs that 361 /* the IO watchdog guards against hardware or driver bugs that
@@ -397,7 +397,7 @@ static void ehci_stop (struct usb_hcd *hcd)
397 /* root hub is shut down separately (first, when possible) */ 397 /* root hub is shut down separately (first, when possible) */
398 spin_lock_irq (&ehci->lock); 398 spin_lock_irq (&ehci->lock);
399 if (ehci->async) 399 if (ehci->async)
400 ehci_work (ehci, NULL); 400 ehci_work (ehci);
401 spin_unlock_irq (&ehci->lock); 401 spin_unlock_irq (&ehci->lock);
402 ehci_mem_cleanup (ehci); 402 ehci_mem_cleanup (ehci);
403 403
@@ -573,7 +573,7 @@ static int ehci_run (struct usb_hcd *hcd)
573 573
574/*-------------------------------------------------------------------------*/ 574/*-------------------------------------------------------------------------*/
575 575
576static irqreturn_t ehci_irq (struct usb_hcd *hcd, struct pt_regs *regs) 576static irqreturn_t ehci_irq (struct usb_hcd *hcd)
577{ 577{
578 struct ehci_hcd *ehci = hcd_to_ehci (hcd); 578 struct ehci_hcd *ehci = hcd_to_ehci (hcd);
579 u32 status; 579 u32 status;
@@ -619,7 +619,7 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd, struct pt_regs *regs)
619 /* complete the unlinking of some qh [4.15.2.3] */ 619 /* complete the unlinking of some qh [4.15.2.3] */
620 if (status & STS_IAA) { 620 if (status & STS_IAA) {
621 COUNT (ehci->stats.reclaim); 621 COUNT (ehci->stats.reclaim);
622 end_unlink_async (ehci, regs); 622 end_unlink_async (ehci);
623 bh = 1; 623 bh = 1;
624 } 624 }
625 625
@@ -670,7 +670,7 @@ dead:
670 } 670 }
671 671
672 if (bh) 672 if (bh)
673 ehci_work (ehci, regs); 673 ehci_work (ehci);
674 spin_unlock (&ehci->lock); 674 spin_unlock (&ehci->lock);
675 return IRQ_HANDLED; 675 return IRQ_HANDLED;
676} 676}
@@ -727,7 +727,7 @@ static void unlink_async (struct ehci_hcd *ehci, struct ehci_qh *qh)
727 727
728 /* failfast */ 728 /* failfast */
729 if (!HC_IS_RUNNING (ehci_to_hcd(ehci)->state)) 729 if (!HC_IS_RUNNING (ehci_to_hcd(ehci)->state))
730 end_unlink_async (ehci, NULL); 730 end_unlink_async (ehci);
731 731
732 /* defer till later if busy */ 732 /* defer till later if busy */
733 else if (ehci->reclaim) { 733 else if (ehci->reclaim) {
@@ -787,7 +787,7 @@ static int ehci_urb_dequeue (struct usb_hcd *hcd, struct urb *urb)
787 intr_deschedule (ehci, qh); 787 intr_deschedule (ehci, qh);
788 /* FALL THROUGH */ 788 /* FALL THROUGH */
789 case QH_STATE_IDLE: 789 case QH_STATE_IDLE:
790 qh_completions (ehci, qh, NULL); 790 qh_completions (ehci, qh);
791 break; 791 break;
792 default: 792 default:
793 ehci_dbg (ehci, "bogus qh %p state %d\n", 793 ehci_dbg (ehci, "bogus qh %p state %d\n",
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index b2ee13c58517..2012213c0a25 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -48,8 +48,8 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
48 } 48 }
49 ehci->command = readl (&ehci->regs->command); 49 ehci->command = readl (&ehci->regs->command);
50 if (ehci->reclaim) 50 if (ehci->reclaim)
51 end_unlink_async (ehci, NULL); 51 end_unlink_async (ehci);
52 ehci_work(ehci, NULL); 52 ehci_work(ehci);
53 53
54 /* suspend any active/unsuspended ports, maybe allow wakeup */ 54 /* suspend any active/unsuspended ports, maybe allow wakeup */
55 while (port--) { 55 while (port--) {
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 08d0472d4f57..35e3fab6fc4e 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -303,8 +303,8 @@ restart:
303 /* emptying the schedule aborts any urbs */ 303 /* emptying the schedule aborts any urbs */
304 spin_lock_irq(&ehci->lock); 304 spin_lock_irq(&ehci->lock);
305 if (ehci->reclaim) 305 if (ehci->reclaim)
306 end_unlink_async (ehci, NULL); 306 end_unlink_async (ehci);
307 ehci_work(ehci, NULL); 307 ehci_work(ehci);
308 spin_unlock_irq(&ehci->lock); 308 spin_unlock_irq(&ehci->lock);
309 309
310 /* restart; khubd will disconnect devices */ 310 /* restart; khubd will disconnect devices */
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 7fc25b6bd7d2..46327272f614 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -214,7 +214,7 @@ static void qtd_copy_status (
214} 214}
215 215
216static void 216static void
217ehci_urb_done (struct ehci_hcd *ehci, struct urb *urb, struct pt_regs *regs) 217ehci_urb_done (struct ehci_hcd *ehci, struct urb *urb)
218__releases(ehci->lock) 218__releases(ehci->lock)
219__acquires(ehci->lock) 219__acquires(ehci->lock)
220{ 220{
@@ -262,7 +262,7 @@ __acquires(ehci->lock)
262 262
263 /* complete() can reenter this HCD */ 263 /* complete() can reenter this HCD */
264 spin_unlock (&ehci->lock); 264 spin_unlock (&ehci->lock);
265 usb_hcd_giveback_urb (ehci_to_hcd(ehci), urb, regs); 265 usb_hcd_giveback_urb (ehci_to_hcd(ehci), urb);
266 spin_lock (&ehci->lock); 266 spin_lock (&ehci->lock);
267} 267}
268 268
@@ -279,7 +279,7 @@ static int qh_schedule (struct ehci_hcd *ehci, struct ehci_qh *qh);
279 */ 279 */
280#define HALT_BIT __constant_cpu_to_le32(QTD_STS_HALT) 280#define HALT_BIT __constant_cpu_to_le32(QTD_STS_HALT)
281static unsigned 281static unsigned
282qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh, struct pt_regs *regs) 282qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
283{ 283{
284 struct ehci_qtd *last = NULL, *end = qh->dummy; 284 struct ehci_qtd *last = NULL, *end = qh->dummy;
285 struct list_head *entry, *tmp; 285 struct list_head *entry, *tmp;
@@ -317,7 +317,7 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh, struct pt_regs *regs)
317 /* clean up any state from previous QTD ...*/ 317 /* clean up any state from previous QTD ...*/
318 if (last) { 318 if (last) {
319 if (likely (last->urb != urb)) { 319 if (likely (last->urb != urb)) {
320 ehci_urb_done (ehci, last->urb, regs); 320 ehci_urb_done (ehci, last->urb);
321 count++; 321 count++;
322 } 322 }
323 ehci_qtd_free (ehci, last); 323 ehci_qtd_free (ehci, last);
@@ -407,7 +407,7 @@ halt:
407 407
408 /* last urb's completion might still need calling */ 408 /* last urb's completion might still need calling */
409 if (likely (last != NULL)) { 409 if (likely (last != NULL)) {
410 ehci_urb_done (ehci, last->urb, regs); 410 ehci_urb_done (ehci, last->urb);
411 count++; 411 count++;
412 ehci_qtd_free (ehci, last); 412 ehci_qtd_free (ehci, last);
413 } 413 }
@@ -962,7 +962,7 @@ submit_async (
962 962
963/* the async qh for the qtds being reclaimed are now unlinked from the HC */ 963/* the async qh for the qtds being reclaimed are now unlinked from the HC */
964 964
965static void end_unlink_async (struct ehci_hcd *ehci, struct pt_regs *regs) 965static void end_unlink_async (struct ehci_hcd *ehci)
966{ 966{
967 struct ehci_qh *qh = ehci->reclaim; 967 struct ehci_qh *qh = ehci->reclaim;
968 struct ehci_qh *next; 968 struct ehci_qh *next;
@@ -979,7 +979,7 @@ static void end_unlink_async (struct ehci_hcd *ehci, struct pt_regs *regs)
979 ehci->reclaim = next; 979 ehci->reclaim = next;
980 qh->reclaim = NULL; 980 qh->reclaim = NULL;
981 981
982 qh_completions (ehci, qh, regs); 982 qh_completions (ehci, qh);
983 983
984 if (!list_empty (&qh->qtd_list) 984 if (!list_empty (&qh->qtd_list)
985 && HC_IS_RUNNING (ehci_to_hcd(ehci)->state)) 985 && HC_IS_RUNNING (ehci_to_hcd(ehci)->state))
@@ -1047,7 +1047,7 @@ static void start_unlink_async (struct ehci_hcd *ehci, struct ehci_qh *qh)
1047 /* if (unlikely (qh->reclaim != 0)) 1047 /* if (unlikely (qh->reclaim != 0))
1048 * this will recurse, probably not much 1048 * this will recurse, probably not much
1049 */ 1049 */
1050 end_unlink_async (ehci, NULL); 1050 end_unlink_async (ehci);
1051 return; 1051 return;
1052 } 1052 }
1053 1053
@@ -1059,8 +1059,7 @@ static void start_unlink_async (struct ehci_hcd *ehci, struct ehci_qh *qh)
1059 1059
1060/*-------------------------------------------------------------------------*/ 1060/*-------------------------------------------------------------------------*/
1061 1061
1062static void 1062static void scan_async (struct ehci_hcd *ehci)
1063scan_async (struct ehci_hcd *ehci, struct pt_regs *regs)
1064{ 1063{
1065 struct ehci_qh *qh; 1064 struct ehci_qh *qh;
1066 enum ehci_timer_action action = TIMER_IO_WATCHDOG; 1065 enum ehci_timer_action action = TIMER_IO_WATCHDOG;
@@ -1084,7 +1083,7 @@ rescan:
1084 */ 1083 */
1085 qh = qh_get (qh); 1084 qh = qh_get (qh);
1086 qh->stamp = ehci->stamp; 1085 qh->stamp = ehci->stamp;
1087 temp = qh_completions (ehci, qh, regs); 1086 temp = qh_completions (ehci, qh);
1088 qh_put (qh); 1087 qh_put (qh);
1089 if (temp != 0) { 1088 if (temp != 0) {
1090 goto rescan; 1089 goto rescan;
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index e5e9c653c907..65c402a0fa7a 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -1553,8 +1553,7 @@ itd_link_urb (
1553static unsigned 1553static unsigned
1554itd_complete ( 1554itd_complete (
1555 struct ehci_hcd *ehci, 1555 struct ehci_hcd *ehci,
1556 struct ehci_itd *itd, 1556 struct ehci_itd *itd
1557 struct pt_regs *regs
1558) { 1557) {
1559 struct urb *urb = itd->urb; 1558 struct urb *urb = itd->urb;
1560 struct usb_iso_packet_descriptor *desc; 1559 struct usb_iso_packet_descriptor *desc;
@@ -1613,7 +1612,7 @@ itd_complete (
1613 1612
1614 /* give urb back to the driver ... can be out-of-order */ 1613 /* give urb back to the driver ... can be out-of-order */
1615 dev = urb->dev; 1614 dev = urb->dev;
1616 ehci_urb_done (ehci, urb, regs); 1615 ehci_urb_done (ehci, urb);
1617 urb = NULL; 1616 urb = NULL;
1618 1617
1619 /* defer stopping schedule; completion can submit */ 1618 /* defer stopping schedule; completion can submit */
@@ -1930,8 +1929,7 @@ sitd_link_urb (
1930static unsigned 1929static unsigned
1931sitd_complete ( 1930sitd_complete (
1932 struct ehci_hcd *ehci, 1931 struct ehci_hcd *ehci,
1933 struct ehci_sitd *sitd, 1932 struct ehci_sitd *sitd
1934 struct pt_regs *regs
1935) { 1933) {
1936 struct urb *urb = sitd->urb; 1934 struct urb *urb = sitd->urb;
1937 struct usb_iso_packet_descriptor *desc; 1935 struct usb_iso_packet_descriptor *desc;
@@ -1978,7 +1976,7 @@ sitd_complete (
1978 1976
1979 /* give urb back to the driver */ 1977 /* give urb back to the driver */
1980 dev = urb->dev; 1978 dev = urb->dev;
1981 ehci_urb_done (ehci, urb, regs); 1979 ehci_urb_done (ehci, urb);
1982 urb = NULL; 1980 urb = NULL;
1983 1981
1984 /* defer stopping schedule; completion can submit */ 1982 /* defer stopping schedule; completion can submit */
@@ -2065,8 +2063,7 @@ sitd_submit (struct ehci_hcd *ehci, struct urb *urb, gfp_t mem_flags)
2065static inline unsigned 2063static inline unsigned
2066sitd_complete ( 2064sitd_complete (
2067 struct ehci_hcd *ehci, 2065 struct ehci_hcd *ehci,
2068 struct ehci_sitd *sitd, 2066 struct ehci_sitd *sitd
2069 struct pt_regs *regs
2070) { 2067) {
2071 ehci_err (ehci, "sitd_complete %p?\n", sitd); 2068 ehci_err (ehci, "sitd_complete %p?\n", sitd);
2072 return 0; 2069 return 0;
@@ -2077,7 +2074,7 @@ sitd_complete (
2077/*-------------------------------------------------------------------------*/ 2074/*-------------------------------------------------------------------------*/
2078 2075
2079static void 2076static void
2080scan_periodic (struct ehci_hcd *ehci, struct pt_regs *regs) 2077scan_periodic (struct ehci_hcd *ehci)
2081{ 2078{
2082 unsigned frame, clock, now_uframe, mod; 2079 unsigned frame, clock, now_uframe, mod;
2083 unsigned modified; 2080 unsigned modified;
@@ -2131,7 +2128,7 @@ restart:
2131 temp.qh = qh_get (q.qh); 2128 temp.qh = qh_get (q.qh);
2132 type = Q_NEXT_TYPE (q.qh->hw_next); 2129 type = Q_NEXT_TYPE (q.qh->hw_next);
2133 q = q.qh->qh_next; 2130 q = q.qh->qh_next;
2134 modified = qh_completions (ehci, temp.qh, regs); 2131 modified = qh_completions (ehci, temp.qh);
2135 if (unlikely (list_empty (&temp.qh->qtd_list))) 2132 if (unlikely (list_empty (&temp.qh->qtd_list)))
2136 intr_deschedule (ehci, temp.qh); 2133 intr_deschedule (ehci, temp.qh);
2137 qh_put (temp.qh); 2134 qh_put (temp.qh);
@@ -2169,7 +2166,7 @@ restart:
2169 *hw_p = q.itd->hw_next; 2166 *hw_p = q.itd->hw_next;
2170 type = Q_NEXT_TYPE (q.itd->hw_next); 2167 type = Q_NEXT_TYPE (q.itd->hw_next);
2171 wmb(); 2168 wmb();
2172 modified = itd_complete (ehci, q.itd, regs); 2169 modified = itd_complete (ehci, q.itd);
2173 q = *q_p; 2170 q = *q_p;
2174 break; 2171 break;
2175 case Q_TYPE_SITD: 2172 case Q_TYPE_SITD:
@@ -2185,7 +2182,7 @@ restart:
2185 *hw_p = q.sitd->hw_next; 2182 *hw_p = q.sitd->hw_next;
2186 type = Q_NEXT_TYPE (q.sitd->hw_next); 2183 type = Q_NEXT_TYPE (q.sitd->hw_next);
2187 wmb(); 2184 wmb();
2188 modified = sitd_complete (ehci, q.sitd, regs); 2185 modified = sitd_complete (ehci, q.sitd);
2189 q = *q_p; 2186 q = *q_p;
2190 break; 2187 break;
2191 default: 2188 default:
diff --git a/drivers/usb/host/hc_crisv10.c b/drivers/usb/host/hc_crisv10.c
index 61e571782cf7..87eca6aeacf2 100644
--- a/drivers/usb/host/hc_crisv10.c
+++ b/drivers/usb/host/hc_crisv10.c
@@ -478,9 +478,9 @@ static int etrax_usb_submit_urb(struct urb *urb, unsigned mem_flags);
478static int etrax_usb_unlink_urb(struct urb *urb, int status); 478static int etrax_usb_unlink_urb(struct urb *urb, int status);
479static int etrax_usb_get_frame_number(struct usb_device *usb_dev); 479static int etrax_usb_get_frame_number(struct usb_device *usb_dev);
480 480
481static irqreturn_t etrax_usb_tx_interrupt(int irq, void *vhc, struct pt_regs *regs); 481static irqreturn_t etrax_usb_tx_interrupt(int irq, void *vhc);
482static irqreturn_t etrax_usb_rx_interrupt(int irq, void *vhc, struct pt_regs *regs); 482static irqreturn_t etrax_usb_rx_interrupt(int irq, void *vhc);
483static irqreturn_t etrax_usb_hc_interrupt_top_half(int irq, void *vhc, struct pt_regs *regs); 483static irqreturn_t etrax_usb_hc_interrupt_top_half(int irq, void *vhc);
484static void etrax_usb_hc_interrupt_bottom_half(void *data); 484static void etrax_usb_hc_interrupt_bottom_half(void *data);
485 485
486static void etrax_usb_isoc_descr_interrupt_bottom_half(void *data); 486static void etrax_usb_isoc_descr_interrupt_bottom_half(void *data);
@@ -1573,7 +1573,7 @@ static int etrax_usb_get_frame_number(struct usb_device *usb_dev)
1573 return (*R_USB_FM_NUMBER & 0x7ff); 1573 return (*R_USB_FM_NUMBER & 0x7ff);
1574} 1574}
1575 1575
1576static irqreturn_t etrax_usb_tx_interrupt(int irq, void *vhc, struct pt_regs *regs) 1576static irqreturn_t etrax_usb_tx_interrupt(int irq, void *vhc)
1577{ 1577{
1578 DBFENTER; 1578 DBFENTER;
1579 1579
@@ -1839,7 +1839,7 @@ static void etrax_usb_isoc_descr_interrupt_bottom_half(void *data)
1839 1839
1840 1840
1841 1841
1842static irqreturn_t etrax_usb_rx_interrupt(int irq, void *vhc, struct pt_regs *regs) 1842static irqreturn_t etrax_usb_rx_interrupt(int irq, void *vhc)
1843{ 1843{
1844 struct urb *urb; 1844 struct urb *urb;
1845 etrax_urb_priv_t *urb_priv; 1845 etrax_urb_priv_t *urb_priv;
@@ -3280,7 +3280,7 @@ static void etrax_usb_complete_urb(struct urb *urb, int status)
3280 3280
3281 3281
3282 3282
3283static irqreturn_t etrax_usb_hc_interrupt_top_half(int irq, void *vhc, struct pt_regs *regs) 3283static irqreturn_t etrax_usb_hc_interrupt_top_half(int irq, void *vhc)
3284{ 3284{
3285 usb_interrupt_registers_t *reg; 3285 usb_interrupt_registers_t *reg;
3286 unsigned long flags; 3286 unsigned long flags;
diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c
index a72e041df8e7..2718b5dc4ec1 100644
--- a/drivers/usb/host/isp116x-hcd.c
+++ b/drivers/usb/host/isp116x-hcd.c
@@ -418,7 +418,7 @@ static void postproc_atl_queue(struct isp116x *isp116x)
418 processed urbs. 418 processed urbs.
419*/ 419*/
420static void finish_request(struct isp116x *isp116x, struct isp116x_ep *ep, 420static void finish_request(struct isp116x *isp116x, struct isp116x_ep *ep,
421 struct urb *urb, struct pt_regs *regs) 421 struct urb *urb)
422__releases(isp116x->lock) __acquires(isp116x->lock) 422__releases(isp116x->lock) __acquires(isp116x->lock)
423{ 423{
424 unsigned i; 424 unsigned i;
@@ -432,7 +432,7 @@ __releases(isp116x->lock) __acquires(isp116x->lock)
432 urb_dbg(urb, "Finish"); 432 urb_dbg(urb, "Finish");
433 433
434 spin_unlock(&isp116x->lock); 434 spin_unlock(&isp116x->lock);
435 usb_hcd_giveback_urb(isp116x_to_hcd(isp116x), urb, regs); 435 usb_hcd_giveback_urb(isp116x_to_hcd(isp116x), urb);
436 spin_lock(&isp116x->lock); 436 spin_lock(&isp116x->lock);
437 437
438 /* take idle endpoints out of the schedule */ 438 /* take idle endpoints out of the schedule */
@@ -568,7 +568,7 @@ static void start_atl_transfers(struct isp116x *isp116x)
568/* 568/*
569 Finish the processed transfers 569 Finish the processed transfers
570*/ 570*/
571static void finish_atl_transfers(struct isp116x *isp116x, struct pt_regs *regs) 571static void finish_atl_transfers(struct isp116x *isp116x)
572{ 572{
573 struct isp116x_ep *ep; 573 struct isp116x_ep *ep;
574 struct urb *urb; 574 struct urb *urb;
@@ -590,12 +590,12 @@ static void finish_atl_transfers(struct isp116x *isp116x, struct pt_regs *regs)
590 occured, while URB_SHORT_NOT_OK was set */ 590 occured, while URB_SHORT_NOT_OK was set */
591 if (urb && urb->status != -EINPROGRESS 591 if (urb && urb->status != -EINPROGRESS
592 && ep->nextpid != USB_PID_ACK) 592 && ep->nextpid != USB_PID_ACK)
593 finish_request(isp116x, ep, urb, regs); 593 finish_request(isp116x, ep, urb);
594 } 594 }
595 atomic_dec(&isp116x->atl_finishing); 595 atomic_dec(&isp116x->atl_finishing);
596} 596}
597 597
598static irqreturn_t isp116x_irq(struct usb_hcd *hcd, struct pt_regs *regs) 598static irqreturn_t isp116x_irq(struct usb_hcd *hcd)
599{ 599{
600 struct isp116x *isp116x = hcd_to_isp116x(hcd); 600 struct isp116x *isp116x = hcd_to_isp116x(hcd);
601 u16 irqstat; 601 u16 irqstat;
@@ -608,7 +608,7 @@ static irqreturn_t isp116x_irq(struct usb_hcd *hcd, struct pt_regs *regs)
608 608
609 if (irqstat & (HCuPINT_ATL | HCuPINT_SOF)) { 609 if (irqstat & (HCuPINT_ATL | HCuPINT_SOF)) {
610 ret = IRQ_HANDLED; 610 ret = IRQ_HANDLED;
611 finish_atl_transfers(isp116x, regs); 611 finish_atl_transfers(isp116x);
612 } 612 }
613 613
614 if (irqstat & HCuPINT_OPR) { 614 if (irqstat & HCuPINT_OPR) {
@@ -824,7 +824,7 @@ static int isp116x_urb_enqueue(struct usb_hcd *hcd,
824 spin_lock(&urb->lock); 824 spin_lock(&urb->lock);
825 if (urb->status != -EINPROGRESS) { 825 if (urb->status != -EINPROGRESS) {
826 spin_unlock(&urb->lock); 826 spin_unlock(&urb->lock);
827 finish_request(isp116x, ep, urb, NULL); 827 finish_request(isp116x, ep, urb);
828 ret = 0; 828 ret = 0;
829 goto fail; 829 goto fail;
830 } 830 }
@@ -870,7 +870,7 @@ static int isp116x_urb_dequeue(struct usb_hcd *hcd, struct urb *urb)
870 } 870 }
871 871
872 if (urb) 872 if (urb)
873 finish_request(isp116x, ep, urb, NULL); 873 finish_request(isp116x, ep, urb);
874 874
875 spin_unlock_irqrestore(&isp116x->lock, flags); 875 spin_unlock_irqrestore(&isp116x->lock, flags);
876 return 0; 876 return 0;
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index d1d68c402251..9be6b303e784 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -261,7 +261,7 @@ static int ohci_urb_enqueue (
261 if (urb->status != -EINPROGRESS) { 261 if (urb->status != -EINPROGRESS) {
262 spin_unlock (&urb->lock); 262 spin_unlock (&urb->lock);
263 urb->hcpriv = urb_priv; 263 urb->hcpriv = urb_priv;
264 finish_urb (ohci, urb, NULL); 264 finish_urb (ohci, urb);
265 retval = 0; 265 retval = 0;
266 goto fail; 266 goto fail;
267 } 267 }
@@ -337,7 +337,7 @@ static int ohci_urb_dequeue (struct usb_hcd *hcd, struct urb *urb)
337 * any more ... just clean up every urb's memory. 337 * any more ... just clean up every urb's memory.
338 */ 338 */
339 if (urb->hcpriv) 339 if (urb->hcpriv)
340 finish_urb (ohci, urb, NULL); 340 finish_urb (ohci, urb);
341 } 341 }
342 spin_unlock_irqrestore (&ohci->lock, flags); 342 spin_unlock_irqrestore (&ohci->lock, flags);
343 return 0; 343 return 0;
@@ -369,7 +369,7 @@ rescan:
369 if (!HC_IS_RUNNING (hcd->state)) { 369 if (!HC_IS_RUNNING (hcd->state)) {
370sanitize: 370sanitize:
371 ed->state = ED_IDLE; 371 ed->state = ED_IDLE;
372 finish_unlinks (ohci, 0, NULL); 372 finish_unlinks (ohci, 0);
373 } 373 }
374 374
375 switch (ed->state) { 375 switch (ed->state) {
@@ -691,7 +691,7 @@ retry:
691 691
692/* an interrupt happens */ 692/* an interrupt happens */
693 693
694static irqreturn_t ohci_irq (struct usb_hcd *hcd, struct pt_regs *ptregs) 694static irqreturn_t ohci_irq (struct usb_hcd *hcd)
695{ 695{
696 struct ohci_hcd *ohci = hcd_to_ohci (hcd); 696 struct ohci_hcd *ohci = hcd_to_ohci (hcd);
697 struct ohci_regs __iomem *regs = ohci->regs; 697 struct ohci_regs __iomem *regs = ohci->regs;
@@ -747,7 +747,7 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd, struct pt_regs *ptregs)
747 if (HC_IS_RUNNING(hcd->state)) 747 if (HC_IS_RUNNING(hcd->state))
748 ohci_writel (ohci, OHCI_INTR_WDH, &regs->intrdisable); 748 ohci_writel (ohci, OHCI_INTR_WDH, &regs->intrdisable);
749 spin_lock (&ohci->lock); 749 spin_lock (&ohci->lock);
750 dl_done_list (ohci, ptregs); 750 dl_done_list (ohci);
751 spin_unlock (&ohci->lock); 751 spin_unlock (&ohci->lock);
752 if (HC_IS_RUNNING(hcd->state)) 752 if (HC_IS_RUNNING(hcd->state))
753 ohci_writel (ohci, OHCI_INTR_WDH, &regs->intrenable); 753 ohci_writel (ohci, OHCI_INTR_WDH, &regs->intrenable);
@@ -760,7 +760,7 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd, struct pt_regs *ptregs)
760 */ 760 */
761 spin_lock (&ohci->lock); 761 spin_lock (&ohci->lock);
762 if (ohci->ed_rm_list) 762 if (ohci->ed_rm_list)
763 finish_unlinks (ohci, ohci_frame_no(ohci), ptregs); 763 finish_unlinks (ohci, ohci_frame_no(ohci));
764 if ((ints & OHCI_INTR_SF) != 0 && !ohci->ed_rm_list 764 if ((ints & OHCI_INTR_SF) != 0 && !ohci->ed_rm_list
765 && HC_IS_RUNNING(hcd->state)) 765 && HC_IS_RUNNING(hcd->state))
766 ohci_writel (ohci, OHCI_INTR_SF, &regs->intrdisable); 766 ohci_writel (ohci, OHCI_INTR_SF, &regs->intrdisable);
@@ -852,7 +852,7 @@ static int ohci_restart (struct ohci_hcd *ohci)
852 urb->status = -ESHUTDOWN; 852 urb->status = -ESHUTDOWN;
853 spin_unlock (&urb->lock); 853 spin_unlock (&urb->lock);
854 } 854 }
855 finish_unlinks (ohci, 0, NULL); 855 finish_unlinks (ohci, 0);
856 spin_unlock_irq(&ohci->lock); 856 spin_unlock_irq(&ohci->lock);
857 857
858 /* paranoia, in case that didn't work: */ 858 /* paranoia, in case that didn't work: */
diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
index ec75774abeac..6f113596af66 100644
--- a/drivers/usb/host/ohci-hub.c
+++ b/drivers/usb/host/ohci-hub.c
@@ -47,8 +47,8 @@ static void ohci_rhsc_enable (struct usb_hcd *hcd)
47#define OHCI_SCHED_ENABLES \ 47#define OHCI_SCHED_ENABLES \
48 (OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_PLE|OHCI_CTRL_IE) 48 (OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_PLE|OHCI_CTRL_IE)
49 49
50static void dl_done_list (struct ohci_hcd *, struct pt_regs *); 50static void dl_done_list (struct ohci_hcd *);
51static void finish_unlinks (struct ohci_hcd *, u16 , struct pt_regs *); 51static void finish_unlinks (struct ohci_hcd *, u16);
52 52
53static int ohci_rh_suspend (struct ohci_hcd *ohci, int autostop) 53static int ohci_rh_suspend (struct ohci_hcd *ohci, int autostop)
54__releases(ohci->lock) 54__releases(ohci->lock)
@@ -94,8 +94,8 @@ __acquires(ohci->lock)
94 msleep (8); 94 msleep (8);
95 spin_lock_irq (&ohci->lock); 95 spin_lock_irq (&ohci->lock);
96 } 96 }
97 dl_done_list (ohci, NULL); 97 dl_done_list (ohci);
98 finish_unlinks (ohci, ohci_frame_no(ohci), NULL); 98 finish_unlinks (ohci, ohci_frame_no(ohci));
99 99
100 /* maybe resume can wake root hub */ 100 /* maybe resume can wake root hub */
101 if (device_may_wakeup(&ohci_to_hcd(ohci)->self.root_hub->dev) || 101 if (device_may_wakeup(&ohci_to_hcd(ohci)->self.root_hub->dev) ||
diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
index e372306ed0da..fe1fe2f97cb5 100644
--- a/drivers/usb/host/ohci-q.c
+++ b/drivers/usb/host/ohci-q.c
@@ -7,6 +7,8 @@
7 * This file is licenced under the GPL. 7 * This file is licenced under the GPL.
8 */ 8 */
9 9
10#include <linux/irq.h>
11
10static void urb_free_priv (struct ohci_hcd *hc, urb_priv_t *urb_priv) 12static void urb_free_priv (struct ohci_hcd *hc, urb_priv_t *urb_priv)
11{ 13{
12 int last = urb_priv->length - 1; 14 int last = urb_priv->length - 1;
@@ -34,7 +36,7 @@ static void urb_free_priv (struct ohci_hcd *hc, urb_priv_t *urb_priv)
34 * PRECONDITION: ohci lock held, irqs blocked. 36 * PRECONDITION: ohci lock held, irqs blocked.
35 */ 37 */
36static void 38static void
37finish_urb (struct ohci_hcd *ohci, struct urb *urb, struct pt_regs *regs) 39finish_urb (struct ohci_hcd *ohci, struct urb *urb)
38__releases(ohci->lock) 40__releases(ohci->lock)
39__acquires(ohci->lock) 41__acquires(ohci->lock)
40{ 42{
@@ -73,7 +75,7 @@ __acquires(ohci->lock)
73 75
74 /* urb->complete() can reenter this HCD */ 76 /* urb->complete() can reenter this HCD */
75 spin_unlock (&ohci->lock); 77 spin_unlock (&ohci->lock);
76 usb_hcd_giveback_urb (ohci_to_hcd(ohci), urb, regs); 78 usb_hcd_giveback_urb (ohci_to_hcd(ohci), urb);
77 spin_lock (&ohci->lock); 79 spin_lock (&ohci->lock);
78 80
79 /* stop periodic dma if it's not needed */ 81 /* stop periodic dma if it's not needed */
@@ -910,7 +912,7 @@ static struct td *dl_reverse_done_list (struct ohci_hcd *ohci)
910 912
911/* there are some urbs/eds to unlink; called in_irq(), with HCD locked */ 913/* there are some urbs/eds to unlink; called in_irq(), with HCD locked */
912static void 914static void
913finish_unlinks (struct ohci_hcd *ohci, u16 tick, struct pt_regs *regs) 915finish_unlinks (struct ohci_hcd *ohci, u16 tick)
914{ 916{
915 struct ed *ed, **last; 917 struct ed *ed, **last;
916 918
@@ -923,7 +925,7 @@ rescan_all:
923 /* only take off EDs that the HC isn't using, accounting for 925 /* only take off EDs that the HC isn't using, accounting for
924 * frame counter wraps and EDs with partially retired TDs 926 * frame counter wraps and EDs with partially retired TDs
925 */ 927 */
926 if (likely (regs && HC_IS_RUNNING(ohci_to_hcd(ohci)->state))) { 928 if (likely (HC_IS_RUNNING(ohci_to_hcd(ohci)->state))) {
927 if (tick_before (tick, ed->tick)) { 929 if (tick_before (tick, ed->tick)) {
928skip_ed: 930skip_ed:
929 last = &ed->ed_next; 931 last = &ed->ed_next;
@@ -990,7 +992,7 @@ rescan_this:
990 /* if URB is done, clean up */ 992 /* if URB is done, clean up */
991 if (urb_priv->td_cnt == urb_priv->length) { 993 if (urb_priv->td_cnt == urb_priv->length) {
992 modified = completed = 1; 994 modified = completed = 1;
993 finish_urb (ohci, urb, regs); 995 finish_urb (ohci, urb);
994 } 996 }
995 } 997 }
996 if (completed && !list_empty (&ed->td_list)) 998 if (completed && !list_empty (&ed->td_list))
@@ -1068,7 +1070,7 @@ rescan_this:
1068 * scanning the (re-reversed) donelist as this does. 1070 * scanning the (re-reversed) donelist as this does.
1069 */ 1071 */
1070static void 1072static void
1071dl_done_list (struct ohci_hcd *ohci, struct pt_regs *regs) 1073dl_done_list (struct ohci_hcd *ohci)
1072{ 1074{
1073 struct td *td = dl_reverse_done_list (ohci); 1075 struct td *td = dl_reverse_done_list (ohci);
1074 1076
@@ -1084,7 +1086,7 @@ dl_done_list (struct ohci_hcd *ohci, struct pt_regs *regs)
1084 1086
1085 /* If all this urb's TDs are done, call complete() */ 1087 /* If all this urb's TDs are done, call complete() */
1086 if (urb_priv->td_cnt == urb_priv->length) 1088 if (urb_priv->td_cnt == urb_priv->length)
1087 finish_urb (ohci, urb, regs); 1089 finish_urb (ohci, urb);
1088 1090
1089 /* clean schedule: unlink EDs that are no longer busy */ 1091 /* clean schedule: unlink EDs that are no longer busy */
1090 if (list_empty (&ed->td_list)) { 1092 if (list_empty (&ed->td_list)) {
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c
index 3a586aab3939..5fa5647ea095 100644
--- a/drivers/usb/host/sl811-hcd.c
+++ b/drivers/usb/host/sl811-hcd.c
@@ -428,7 +428,6 @@ static void finish_request(
428 struct sl811 *sl811, 428 struct sl811 *sl811,
429 struct sl811h_ep *ep, 429 struct sl811h_ep *ep,
430 struct urb *urb, 430 struct urb *urb,
431 struct pt_regs *regs,
432 int status 431 int status
433) __releases(sl811->lock) __acquires(sl811->lock) 432) __releases(sl811->lock) __acquires(sl811->lock)
434{ 433{
@@ -444,7 +443,7 @@ static void finish_request(
444 spin_unlock(&urb->lock); 443 spin_unlock(&urb->lock);
445 444
446 spin_unlock(&sl811->lock); 445 spin_unlock(&sl811->lock);
447 usb_hcd_giveback_urb(sl811_to_hcd(sl811), urb, regs); 446 usb_hcd_giveback_urb(sl811_to_hcd(sl811), urb);
448 spin_lock(&sl811->lock); 447 spin_lock(&sl811->lock);
449 448
450 /* leave active endpoints in the schedule */ 449 /* leave active endpoints in the schedule */
@@ -484,7 +483,7 @@ static void finish_request(
484} 483}
485 484
486static void 485static void
487done(struct sl811 *sl811, struct sl811h_ep *ep, u8 bank, struct pt_regs *regs) 486done(struct sl811 *sl811, struct sl811h_ep *ep, u8 bank)
488{ 487{
489 u8 status; 488 u8 status;
490 struct urb *urb; 489 struct urb *urb;
@@ -608,7 +607,7 @@ done(struct sl811 *sl811, struct sl811h_ep *ep, u8 bank, struct pt_regs *regs)
608 } 607 }
609 608
610 if (urb && (urbstat != -EINPROGRESS || urb->status != -EINPROGRESS)) 609 if (urb && (urbstat != -EINPROGRESS || urb->status != -EINPROGRESS))
611 finish_request(sl811, ep, urb, regs, urbstat); 610 finish_request(sl811, ep, urb, urbstat);
612} 611}
613 612
614static inline u8 checkdone(struct sl811 *sl811) 613static inline u8 checkdone(struct sl811 *sl811)
@@ -641,7 +640,7 @@ static inline u8 checkdone(struct sl811 *sl811)
641 return irqstat; 640 return irqstat;
642} 641}
643 642
644static irqreturn_t sl811h_irq(struct usb_hcd *hcd, struct pt_regs *regs) 643static irqreturn_t sl811h_irq(struct usb_hcd *hcd)
645{ 644{
646 struct sl811 *sl811 = hcd_to_sl811(hcd); 645 struct sl811 *sl811 = hcd_to_sl811(hcd);
647 u8 irqstat; 646 u8 irqstat;
@@ -670,13 +669,13 @@ retry:
670 * issued ... that's fine if they're different endpoints. 669 * issued ... that's fine if they're different endpoints.
671 */ 670 */
672 if (irqstat & SL11H_INTMASK_DONE_A) { 671 if (irqstat & SL11H_INTMASK_DONE_A) {
673 done(sl811, sl811->active_a, SL811_EP_A(SL811_HOST_BUF), regs); 672 done(sl811, sl811->active_a, SL811_EP_A(SL811_HOST_BUF));
674 sl811->active_a = NULL; 673 sl811->active_a = NULL;
675 sl811->stat_a++; 674 sl811->stat_a++;
676 } 675 }
677#ifdef USE_B 676#ifdef USE_B
678 if (irqstat & SL11H_INTMASK_DONE_B) { 677 if (irqstat & SL11H_INTMASK_DONE_B) {
679 done(sl811, sl811->active_b, SL811_EP_B(SL811_HOST_BUF), regs); 678 done(sl811, sl811->active_b, SL811_EP_B(SL811_HOST_BUF));
680 sl811->active_b = NULL; 679 sl811->active_b = NULL;
681 sl811->stat_b++; 680 sl811->stat_b++;
682 } 681 }
@@ -723,7 +722,7 @@ retry:
723 container_of(sl811->active_a 722 container_of(sl811->active_a
724 ->hep->urb_list.next, 723 ->hep->urb_list.next,
725 struct urb, urb_list), 724 struct urb, urb_list),
726 NULL, -ESHUTDOWN); 725 -ESHUTDOWN);
727 sl811->active_a = NULL; 726 sl811->active_a = NULL;
728 } 727 }
729#ifdef USE_B 728#ifdef USE_B
@@ -957,7 +956,7 @@ static int sl811h_urb_enqueue(
957 spin_lock(&urb->lock); 956 spin_lock(&urb->lock);
958 if (urb->status != -EINPROGRESS) { 957 if (urb->status != -EINPROGRESS) {
959 spin_unlock(&urb->lock); 958 spin_unlock(&urb->lock);
960 finish_request(sl811, ep, urb, NULL, 0); 959 finish_request(sl811, ep, urb, 0);
961 retval = 0; 960 retval = 0;
962 goto fail; 961 goto fail;
963 } 962 }
@@ -1026,7 +1025,7 @@ static int sl811h_urb_dequeue(struct usb_hcd *hcd, struct urb *urb)
1026 } 1025 }
1027 1026
1028 if (urb) 1027 if (urb)
1029 finish_request(sl811, ep, urb, NULL, 0); 1028 finish_request(sl811, ep, urb, 0);
1030 else 1029 else
1031 VDBG("dequeue, urb %p active %s; wait4irq\n", urb, 1030 VDBG("dequeue, urb %p active %s; wait4irq\n", urb,
1032 (sl811->active_a == ep) ? "A" : "B"); 1031 (sl811->active_a == ep) ? "A" : "B");
@@ -1083,7 +1082,7 @@ sl811h_hub_status_data(struct usb_hcd *hcd, char *buf)
1083 */ 1082 */
1084 local_irq_save(flags); 1083 local_irq_save(flags);
1085 if (!timer_pending(&sl811->timer)) { 1084 if (!timer_pending(&sl811->timer)) {
1086 if (sl811h_irq( /* ~0, */ hcd, NULL) != IRQ_NONE) 1085 if (sl811h_irq( /* ~0, */ hcd) != IRQ_NONE)
1087 sl811->stat_lost++; 1086 sl811->stat_lost++;
1088 } 1087 }
1089 local_irq_restore(flags); 1088 local_irq_restore(flags);
diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c
index 0a315200b331..32c635ecbf31 100644
--- a/drivers/usb/host/u132-hcd.c
+++ b/drivers/usb/host/u132-hcd.c
@@ -557,7 +557,7 @@ static void u132_hcd_giveback_urb(struct u132 *u132, struct u132_endp *endp,
557 u132_ring_queue_work(u132, ring, 0); 557 u132_ring_queue_work(u132, ring, 0);
558 up(&u132->scheduler_lock); 558 up(&u132->scheduler_lock);
559 u132_endp_put_kref(u132, endp); 559 u132_endp_put_kref(u132, endp);
560 usb_hcd_giveback_urb(hcd, urb, NULL); 560 usb_hcd_giveback_urb(hcd, urb);
561 return; 561 return;
562} 562}
563 563
@@ -590,7 +590,7 @@ static void u132_hcd_abandon_urb(struct u132 *u132, struct u132_endp *endp,
590 endp->active = 0; 590 endp->active = 0;
591 spin_unlock_irqrestore(&endp->queue_lock.slock, irqs); 591 spin_unlock_irqrestore(&endp->queue_lock.slock, irqs);
592 kfree(urbq); 592 kfree(urbq);
593 } usb_hcd_giveback_urb(hcd, urb, NULL); 593 } usb_hcd_giveback_urb(hcd, urb);
594 return; 594 return;
595} 595}
596 596
@@ -2434,7 +2434,7 @@ static int dequeue_from_overflow_chain(struct u132 *u132,
2434 endp->queue_size -= 1; 2434 endp->queue_size -= 1;
2435 urb->error_count = 0; 2435 urb->error_count = 0;
2436 urb->hcpriv = NULL; 2436 urb->hcpriv = NULL;
2437 usb_hcd_giveback_urb(hcd, urb, NULL); 2437 usb_hcd_giveback_urb(hcd, urb);
2438 return 0; 2438 return 0;
2439 } else 2439 } else
2440 continue; 2440 continue;
@@ -2512,7 +2512,7 @@ static int u132_endp_urb_dequeue(struct u132 *u132, struct u132_endp *endp,
2512 kfree(urbq); 2512 kfree(urbq);
2513 } urb->error_count = 0; 2513 } urb->error_count = 0;
2514 urb->hcpriv = NULL; 2514 urb->hcpriv = NULL;
2515 usb_hcd_giveback_urb(hcd, urb, NULL); 2515 usb_hcd_giveback_urb(hcd, urb);
2516 return 0; 2516 return 0;
2517 } else if (list_empty(&endp->urb_more)) { 2517 } else if (list_empty(&endp->urb_more)) {
2518 dev_err(&u132->platform_dev->dev, "urb=%p not found in " 2518 dev_err(&u132->platform_dev->dev, "urb=%p not found in "
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
index eb4eab98e8bf..45ee6920a850 100644
--- a/drivers/usb/host/uhci-hcd.c
+++ b/drivers/usb/host/uhci-hcd.c
@@ -252,7 +252,7 @@ __acquires(uhci->lock)
252 uhci->is_stopped = UHCI_IS_STOPPED; 252 uhci->is_stopped = UHCI_IS_STOPPED;
253 uhci_to_hcd(uhci)->poll_rh = !int_enable; 253 uhci_to_hcd(uhci)->poll_rh = !int_enable;
254 254
255 uhci_scan_schedule(uhci, NULL); 255 uhci_scan_schedule(uhci);
256 uhci_fsbr_off(uhci); 256 uhci_fsbr_off(uhci);
257} 257}
258 258
@@ -309,7 +309,7 @@ __acquires(uhci->lock)
309 mod_timer(&uhci_to_hcd(uhci)->rh_timer, jiffies); 309 mod_timer(&uhci_to_hcd(uhci)->rh_timer, jiffies);
310} 310}
311 311
312static irqreturn_t uhci_irq(struct usb_hcd *hcd, struct pt_regs *regs) 312static irqreturn_t uhci_irq(struct usb_hcd *hcd)
313{ 313{
314 struct uhci_hcd *uhci = hcd_to_uhci(hcd); 314 struct uhci_hcd *uhci = hcd_to_uhci(hcd);
315 unsigned short status; 315 unsigned short status;
@@ -358,7 +358,7 @@ static irqreturn_t uhci_irq(struct usb_hcd *hcd, struct pt_regs *regs)
358 usb_hcd_poll_rh_status(hcd); 358 usb_hcd_poll_rh_status(hcd);
359 else { 359 else {
360 spin_lock_irqsave(&uhci->lock, flags); 360 spin_lock_irqsave(&uhci->lock, flags);
361 uhci_scan_schedule(uhci, regs); 361 uhci_scan_schedule(uhci);
362 spin_unlock_irqrestore(&uhci->lock, flags); 362 spin_unlock_irqrestore(&uhci->lock, flags);
363 } 363 }
364 364
@@ -671,7 +671,7 @@ static void uhci_stop(struct usb_hcd *hcd)
671 spin_lock_irq(&uhci->lock); 671 spin_lock_irq(&uhci->lock);
672 if (test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags) && !uhci->dead) 672 if (test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags) && !uhci->dead)
673 uhci_hc_died(uhci); 673 uhci_hc_died(uhci);
674 uhci_scan_schedule(uhci, NULL); 674 uhci_scan_schedule(uhci);
675 spin_unlock_irq(&uhci->lock); 675 spin_unlock_irq(&uhci->lock);
676 676
677 del_timer_sync(&uhci->fsbr_timer); 677 del_timer_sync(&uhci->fsbr_timer);
diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c
index 16fb72eb6fc9..f8347f1a10b6 100644
--- a/drivers/usb/host/uhci-hub.c
+++ b/drivers/usb/host/uhci-hub.c
@@ -176,7 +176,7 @@ static int uhci_hub_status_data(struct usb_hcd *hcd, char *buf)
176 176
177 spin_lock_irqsave(&uhci->lock, flags); 177 spin_lock_irqsave(&uhci->lock, flags);
178 178
179 uhci_scan_schedule(uhci, NULL); 179 uhci_scan_schedule(uhci);
180 if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags) || uhci->dead) 180 if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags) || uhci->dead)
181 goto done; 181 goto done;
182 uhci_check_ports(uhci); 182 uhci_check_ports(uhci);
diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c
index 431e8f31f1a9..06115f22a4fa 100644
--- a/drivers/usb/host/uhci-q.c
+++ b/drivers/usb/host/uhci-q.c
@@ -1244,7 +1244,7 @@ done:
1244 * Finish unlinking an URB and give it back 1244 * Finish unlinking an URB and give it back
1245 */ 1245 */
1246static void uhci_giveback_urb(struct uhci_hcd *uhci, struct uhci_qh *qh, 1246static void uhci_giveback_urb(struct uhci_hcd *uhci, struct uhci_qh *qh,
1247 struct urb *urb, struct pt_regs *regs) 1247 struct urb *urb)
1248__releases(uhci->lock) 1248__releases(uhci->lock)
1249__acquires(uhci->lock) 1249__acquires(uhci->lock)
1250{ 1250{
@@ -1293,7 +1293,7 @@ __acquires(uhci->lock)
1293 } 1293 }
1294 1294
1295 spin_unlock(&uhci->lock); 1295 spin_unlock(&uhci->lock);
1296 usb_hcd_giveback_urb(uhci_to_hcd(uhci), urb, regs); 1296 usb_hcd_giveback_urb(uhci_to_hcd(uhci), urb);
1297 spin_lock(&uhci->lock); 1297 spin_lock(&uhci->lock);
1298 1298
1299 /* If the queue is now empty, we can unlink the QH and give up its 1299 /* If the queue is now empty, we can unlink the QH and give up its
@@ -1313,8 +1313,7 @@ __acquires(uhci->lock)
1313 (qh->state == QH_STATE_UNLINKING && \ 1313 (qh->state == QH_STATE_UNLINKING && \
1314 uhci->frame_number + uhci->is_stopped != qh->unlink_frame) 1314 uhci->frame_number + uhci->is_stopped != qh->unlink_frame)
1315 1315
1316static void uhci_scan_qh(struct uhci_hcd *uhci, struct uhci_qh *qh, 1316static void uhci_scan_qh(struct uhci_hcd *uhci, struct uhci_qh *qh)
1317 struct pt_regs *regs)
1318{ 1317{
1319 struct urb_priv *urbp; 1318 struct urb_priv *urbp;
1320 struct urb *urb; 1319 struct urb *urb;
@@ -1347,7 +1346,7 @@ static void uhci_scan_qh(struct uhci_hcd *uhci, struct uhci_qh *qh,
1347 return; 1346 return;
1348 } 1347 }
1349 1348
1350 uhci_giveback_urb(uhci, qh, urb, regs); 1349 uhci_giveback_urb(uhci, qh, urb);
1351 if (status < 0 && qh->type != USB_ENDPOINT_XFER_ISOC) 1350 if (status < 0 && qh->type != USB_ENDPOINT_XFER_ISOC)
1352 break; 1351 break;
1353 } 1352 }
@@ -1372,7 +1371,7 @@ restart:
1372 qh->is_stopped = 0; 1371 qh->is_stopped = 0;
1373 return; 1372 return;
1374 } 1373 }
1375 uhci_giveback_urb(uhci, qh, urb, regs); 1374 uhci_giveback_urb(uhci, qh, urb);
1376 goto restart; 1375 goto restart;
1377 } 1376 }
1378 } 1377 }
@@ -1487,7 +1486,7 @@ done:
1487/* 1486/*
1488 * Process events in the schedule, but only in one thread at a time 1487 * Process events in the schedule, but only in one thread at a time
1489 */ 1488 */
1490static void uhci_scan_schedule(struct uhci_hcd *uhci, struct pt_regs *regs) 1489static void uhci_scan_schedule(struct uhci_hcd *uhci)
1491{ 1490{
1492 int i; 1491 int i;
1493 struct uhci_qh *qh; 1492 struct uhci_qh *qh;
@@ -1515,7 +1514,7 @@ rescan:
1515 struct uhci_qh, node); 1514 struct uhci_qh, node);
1516 1515
1517 if (uhci_advance_check(uhci, qh)) { 1516 if (uhci_advance_check(uhci, qh)) {
1518 uhci_scan_qh(uhci, qh, regs); 1517 uhci_scan_qh(uhci, qh);
1519 if (qh->state == QH_STATE_ACTIVE) { 1518 if (qh->state == QH_STATE_ACTIVE) {
1520 uhci_urbp_wants_fsbr(uhci, 1519 uhci_urbp_wants_fsbr(uhci,
1521 list_entry(qh->queue.next, struct urb_priv, node)); 1520 list_entry(qh->queue.next, struct urb_priv, node));
diff --git a/drivers/usb/image/mdc800.c b/drivers/usb/image/mdc800.c
index ca6305c1d64c..63a84bbc310d 100644
--- a/drivers/usb/image/mdc800.c
+++ b/drivers/usb/image/mdc800.c
@@ -280,7 +280,7 @@ static int mdc800_isReady (char *ch)
280/* 280/*
281 * USB IRQ Handler for InputLine 281 * USB IRQ Handler for InputLine
282 */ 282 */
283static void mdc800_usb_irq (struct urb *urb, struct pt_regs *res) 283static void mdc800_usb_irq (struct urb *urb)
284{ 284{
285 int data_received=0, wake_up; 285 int data_received=0, wake_up;
286 unsigned char* b=urb->transfer_buffer; 286 unsigned char* b=urb->transfer_buffer;
@@ -374,7 +374,7 @@ static int mdc800_usb_waitForIRQ (int mode, int msec)
374/* 374/*
375 * The write_urb callback function 375 * The write_urb callback function
376 */ 376 */
377static void mdc800_usb_write_notify (struct urb *urb, struct pt_regs *res) 377static void mdc800_usb_write_notify (struct urb *urb)
378{ 378{
379 struct mdc800_data* mdc800=urb->context; 379 struct mdc800_data* mdc800=urb->context;
380 380
@@ -394,7 +394,7 @@ static void mdc800_usb_write_notify (struct urb *urb, struct pt_regs *res)
394/* 394/*
395 * The download_urb callback function 395 * The download_urb callback function
396 */ 396 */
397static void mdc800_usb_download_notify (struct urb *urb, struct pt_regs *res) 397static void mdc800_usb_download_notify (struct urb *urb)
398{ 398{
399 struct mdc800_data* mdc800=urb->context; 399 struct mdc800_data* mdc800=urb->context;
400 400
diff --git a/drivers/usb/image/microtek.c b/drivers/usb/image/microtek.c
index 5f861331932a..3038ed0700d3 100644
--- a/drivers/usb/image/microtek.c
+++ b/drivers/usb/image/microtek.c
@@ -370,7 +370,7 @@ static int
370mts_scsi_queuecommand(struct scsi_cmnd *srb, mts_scsi_cmnd_callback callback); 370mts_scsi_queuecommand(struct scsi_cmnd *srb, mts_scsi_cmnd_callback callback);
371 371
372static void mts_transfer_cleanup( struct urb *transfer ); 372static void mts_transfer_cleanup( struct urb *transfer );
373static void mts_do_sg(struct urb * transfer, struct pt_regs *regs); 373static void mts_do_sg(struct urb * transfer);
374 374
375static inline 375static inline
376void mts_int_submit_urb (struct urb* transfer, 376void mts_int_submit_urb (struct urb* transfer,
@@ -417,7 +417,7 @@ static void mts_transfer_cleanup( struct urb *transfer )
417 417
418} 418}
419 419
420static void mts_transfer_done( struct urb *transfer, struct pt_regs *regs ) 420static void mts_transfer_done( struct urb *transfer )
421{ 421{
422 MTS_INT_INIT(); 422 MTS_INT_INIT();
423 423
@@ -443,7 +443,7 @@ static void mts_get_status( struct urb *transfer )
443 mts_transfer_done ); 443 mts_transfer_done );
444} 444}
445 445
446static void mts_data_done( struct urb* transfer, struct pt_regs *regs ) 446static void mts_data_done( struct urb* transfer )
447/* Interrupt context! */ 447/* Interrupt context! */
448{ 448{
449 MTS_INT_INIT(); 449 MTS_INT_INIT();
@@ -460,7 +460,7 @@ static void mts_data_done( struct urb* transfer, struct pt_regs *regs )
460} 460}
461 461
462 462
463static void mts_command_done( struct urb *transfer, struct pt_regs *regs ) 463static void mts_command_done( struct urb *transfer )
464/* Interrupt context! */ 464/* Interrupt context! */
465{ 465{
466 MTS_INT_INIT(); 466 MTS_INT_INIT();
@@ -501,7 +501,7 @@ static void mts_command_done( struct urb *transfer, struct pt_regs *regs )
501 return; 501 return;
502} 502}
503 503
504static void mts_do_sg (struct urb* transfer, struct pt_regs *regs) 504static void mts_do_sg (struct urb* transfer)
505{ 505{
506 struct scatterlist * sg; 506 struct scatterlist * sg;
507 MTS_INT_INIT(); 507 MTS_INT_INIT();
diff --git a/drivers/usb/input/acecad.c b/drivers/usb/input/acecad.c
index d83603ba40ae..0096373b5f98 100644
--- a/drivers/usb/input/acecad.c
+++ b/drivers/usb/input/acecad.c
@@ -58,7 +58,7 @@ struct usb_acecad {
58 dma_addr_t data_dma; 58 dma_addr_t data_dma;
59}; 59};
60 60
61static void usb_acecad_irq(struct urb *urb, struct pt_regs *regs) 61static void usb_acecad_irq(struct urb *urb)
62{ 62{
63 struct usb_acecad *acecad = urb->context; 63 struct usb_acecad *acecad = urb->context;
64 unsigned char *data = acecad->data; 64 unsigned char *data = acecad->data;
diff --git a/drivers/usb/input/aiptek.c b/drivers/usb/input/aiptek.c
index b138dae2b055..bf428184608f 100644
--- a/drivers/usb/input/aiptek.c
+++ b/drivers/usb/input/aiptek.c
@@ -396,7 +396,7 @@ static int aiptek_convert_from_2s_complement(unsigned char c)
396 * replaced with the input_sync() method (which emits EV_SYN.) 396 * replaced with the input_sync() method (which emits EV_SYN.)
397 */ 397 */
398 398
399static void aiptek_irq(struct urb *urb, struct pt_regs *regs) 399static void aiptek_irq(struct urb *urb)
400{ 400{
401 struct aiptek *aiptek = urb->context; 401 struct aiptek *aiptek = urb->context;
402 unsigned char *data = aiptek->data; 402 unsigned char *data = aiptek->data;
@@ -442,8 +442,6 @@ static void aiptek_irq(struct urb *urb, struct pt_regs *regs)
442 aiptek->diagnostic = 442 aiptek->diagnostic =
443 AIPTEK_DIAGNOSTIC_SENDING_RELATIVE_IN_ABSOLUTE; 443 AIPTEK_DIAGNOSTIC_SENDING_RELATIVE_IN_ABSOLUTE;
444 } else { 444 } else {
445 input_regs(inputdev, regs);
446
447 x = aiptek_convert_from_2s_complement(data[2]); 445 x = aiptek_convert_from_2s_complement(data[2]);
448 y = aiptek_convert_from_2s_complement(data[3]); 446 y = aiptek_convert_from_2s_complement(data[3]);
449 447
@@ -488,8 +486,6 @@ static void aiptek_irq(struct urb *urb, struct pt_regs *regs)
488 (aiptek->curSetting.pointerMode)) { 486 (aiptek->curSetting.pointerMode)) {
489 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_TOOL_DISALLOWED; 487 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_TOOL_DISALLOWED;
490 } else { 488 } else {
491 input_regs(inputdev, regs);
492
493 x = le16_to_cpu(get_unaligned((__le16 *) (data + 1))); 489 x = le16_to_cpu(get_unaligned((__le16 *) (data + 1)));
494 y = le16_to_cpu(get_unaligned((__le16 *) (data + 3))); 490 y = le16_to_cpu(get_unaligned((__le16 *) (data + 3)));
495 z = le16_to_cpu(get_unaligned((__le16 *) (data + 6))); 491 z = le16_to_cpu(get_unaligned((__le16 *) (data + 6)));
@@ -568,7 +564,6 @@ static void aiptek_irq(struct urb *urb, struct pt_regs *regs)
568 (aiptek->curSetting.pointerMode)) { 564 (aiptek->curSetting.pointerMode)) {
569 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_TOOL_DISALLOWED; 565 aiptek->diagnostic = AIPTEK_DIAGNOSTIC_TOOL_DISALLOWED;
570 } else { 566 } else {
571 input_regs(inputdev, regs);
572 x = le16_to_cpu(get_unaligned((__le16 *) (data + 1))); 567 x = le16_to_cpu(get_unaligned((__le16 *) (data + 1)));
573 y = le16_to_cpu(get_unaligned((__le16 *) (data + 3))); 568 y = le16_to_cpu(get_unaligned((__le16 *) (data + 3)));
574 569
@@ -631,8 +626,6 @@ static void aiptek_irq(struct urb *urb, struct pt_regs *regs)
631 z = le16_to_cpu(get_unaligned((__le16 *) (data + 4))); 626 z = le16_to_cpu(get_unaligned((__le16 *) (data + 4)));
632 627
633 if (dv != 0) { 628 if (dv != 0) {
634 input_regs(inputdev, regs);
635
636 /* If we've not already sent a tool_button_?? code, do 629 /* If we've not already sent a tool_button_?? code, do
637 * so now. Then set FIRED_BIT so it won't be resent unless 630 * so now. Then set FIRED_BIT so it won't be resent unless
638 * the user forces FIRED_BIT off. 631 * the user forces FIRED_BIT off.
@@ -681,8 +674,6 @@ static void aiptek_irq(struct urb *urb, struct pt_regs *regs)
681 macro = data[3]; 674 macro = data[3];
682 675
683 if (dv != 0) { 676 if (dv != 0) {
684 input_regs(inputdev, regs);
685
686 /* If we've not already sent a tool_button_?? code, do 677 /* If we've not already sent a tool_button_?? code, do
687 * so now. Then set FIRED_BIT so it won't be resent unless 678 * so now. Then set FIRED_BIT so it won't be resent unless
688 * the user forces FIRED_BIT off. 679 * the user forces FIRED_BIT off.
@@ -726,8 +717,6 @@ static void aiptek_irq(struct urb *urb, struct pt_regs *regs)
726 */ 717 */
727 else if (data[0] == 6) { 718 else if (data[0] == 6) {
728 macro = le16_to_cpu(get_unaligned((__le16 *) (data + 1))); 719 macro = le16_to_cpu(get_unaligned((__le16 *) (data + 1)));
729 input_regs(inputdev, regs);
730
731 if (macro > 0) { 720 if (macro > 0) {
732 input_report_key(inputdev, macroKeyEvents[macro - 1], 721 input_report_key(inputdev, macroKeyEvents[macro - 1],
733 0); 722 0);
diff --git a/drivers/usb/input/appletouch.c b/drivers/usb/input/appletouch.c
index 0aa9cc2bfd69..4c213513484d 100644
--- a/drivers/usb/input/appletouch.c
+++ b/drivers/usb/input/appletouch.c
@@ -210,7 +210,7 @@ static inline void atp_report_fingers(struct input_dev *input, int fingers)
210 input_report_key(input, BTN_TOOL_TRIPLETAP, fingers > 2); 210 input_report_key(input, BTN_TOOL_TRIPLETAP, fingers > 2);
211} 211}
212 212
213static void atp_complete(struct urb* urb, struct pt_regs* regs) 213static void atp_complete(struct urb* urb)
214{ 214{
215 int x, y, x_z, y_z, x_f, y_f; 215 int x, y, x_z, y_z, x_f, y_f;
216 int retval, i, j; 216 int retval, i, j;
diff --git a/drivers/usb/input/ati_remote.c b/drivers/usb/input/ati_remote.c
index 3558d7ed99b9..f659f3028ad2 100644
--- a/drivers/usb/input/ati_remote.c
+++ b/drivers/usb/input/ati_remote.c
@@ -283,9 +283,9 @@ static void ati_remote_dump (unsigned char *data, unsigned int actual_length);
283static int ati_remote_open (struct input_dev *inputdev); 283static int ati_remote_open (struct input_dev *inputdev);
284static void ati_remote_close (struct input_dev *inputdev); 284static void ati_remote_close (struct input_dev *inputdev);
285static int ati_remote_sendpacket (struct ati_remote *ati_remote, u16 cmd, unsigned char *data); 285static int ati_remote_sendpacket (struct ati_remote *ati_remote, u16 cmd, unsigned char *data);
286static void ati_remote_irq_out (struct urb *urb, struct pt_regs *regs); 286static void ati_remote_irq_out (struct urb *urb);
287static void ati_remote_irq_in (struct urb *urb, struct pt_regs *regs); 287static void ati_remote_irq_in (struct urb *urb);
288static void ati_remote_input_report (struct urb *urb, struct pt_regs *regs); 288static void ati_remote_input_report (struct urb *urb);
289static int ati_remote_initialize (struct ati_remote *ati_remote); 289static int ati_remote_initialize (struct ati_remote *ati_remote);
290static int ati_remote_probe (struct usb_interface *interface, const struct usb_device_id *id); 290static int ati_remote_probe (struct usb_interface *interface, const struct usb_device_id *id);
291static void ati_remote_disconnect (struct usb_interface *interface); 291static void ati_remote_disconnect (struct usb_interface *interface);
@@ -344,7 +344,7 @@ static void ati_remote_close(struct input_dev *inputdev)
344/* 344/*
345 * ati_remote_irq_out 345 * ati_remote_irq_out
346 */ 346 */
347static void ati_remote_irq_out(struct urb *urb, struct pt_regs *regs) 347static void ati_remote_irq_out(struct urb *urb)
348{ 348{
349 struct ati_remote *ati_remote = urb->context; 349 struct ati_remote *ati_remote = urb->context;
350 350
@@ -453,7 +453,7 @@ static int ati_remote_compute_accel(struct ati_remote *ati_remote)
453/* 453/*
454 * ati_remote_report_input 454 * ati_remote_report_input
455 */ 455 */
456static void ati_remote_input_report(struct urb *urb, struct pt_regs *regs) 456static void ati_remote_input_report(struct urb *urb)
457{ 457{
458 struct ati_remote *ati_remote = urb->context; 458 struct ati_remote *ati_remote = urb->context;
459 unsigned char *data= ati_remote->inbuf; 459 unsigned char *data= ati_remote->inbuf;
@@ -491,7 +491,6 @@ static void ati_remote_input_report(struct urb *urb, struct pt_regs *regs)
491 remote_num, data[1], data[2], index, ati_remote_tbl[index].code); 491 remote_num, data[1], data[2], index, ati_remote_tbl[index].code);
492 492
493 if (ati_remote_tbl[index].kind == KIND_LITERAL) { 493 if (ati_remote_tbl[index].kind == KIND_LITERAL) {
494 input_regs(dev, regs);
495 input_event(dev, ati_remote_tbl[index].type, 494 input_event(dev, ati_remote_tbl[index].type,
496 ati_remote_tbl[index].code, 495 ati_remote_tbl[index].code,
497 ati_remote_tbl[index].value); 496 ati_remote_tbl[index].value);
@@ -520,7 +519,6 @@ static void ati_remote_input_report(struct urb *urb, struct pt_regs *regs)
520 return; 519 return;
521 520
522 521
523 input_regs(dev, regs);
524 input_event(dev, ati_remote_tbl[index].type, 522 input_event(dev, ati_remote_tbl[index].type,
525 ati_remote_tbl[index].code, 1); 523 ati_remote_tbl[index].code, 1);
526 input_sync(dev); 524 input_sync(dev);
@@ -537,7 +535,6 @@ static void ati_remote_input_report(struct urb *urb, struct pt_regs *regs)
537 */ 535 */
538 acc = ati_remote_compute_accel(ati_remote); 536 acc = ati_remote_compute_accel(ati_remote);
539 537
540 input_regs(dev, regs);
541 switch (ati_remote_tbl[index].kind) { 538 switch (ati_remote_tbl[index].kind) {
542 case KIND_ACCEL: 539 case KIND_ACCEL:
543 input_event(dev, ati_remote_tbl[index].type, 540 input_event(dev, ati_remote_tbl[index].type,
@@ -575,14 +572,14 @@ static void ati_remote_input_report(struct urb *urb, struct pt_regs *regs)
575/* 572/*
576 * ati_remote_irq_in 573 * ati_remote_irq_in
577 */ 574 */
578static void ati_remote_irq_in(struct urb *urb, struct pt_regs *regs) 575static void ati_remote_irq_in(struct urb *urb)
579{ 576{
580 struct ati_remote *ati_remote = urb->context; 577 struct ati_remote *ati_remote = urb->context;
581 int retval; 578 int retval;
582 579
583 switch (urb->status) { 580 switch (urb->status) {
584 case 0: /* success */ 581 case 0: /* success */
585 ati_remote_input_report(urb, regs); 582 ati_remote_input_report(urb);
586 break; 583 break;
587 case -ECONNRESET: /* unlink */ 584 case -ECONNRESET: /* unlink */
588 case -ENOENT: 585 case -ENOENT:
diff --git a/drivers/usb/input/ati_remote2.c b/drivers/usb/input/ati_remote2.c
index ea71de81ca6b..f982a2b4a7f9 100644
--- a/drivers/usb/input/ati_remote2.c
+++ b/drivers/usb/input/ati_remote2.c
@@ -142,7 +142,7 @@ static void ati_remote2_close(struct input_dev *idev)
142 usb_kill_urb(ar2->urb[1]); 142 usb_kill_urb(ar2->urb[1]);
143} 143}
144 144
145static void ati_remote2_input_mouse(struct ati_remote2 *ar2, struct pt_regs *regs) 145static void ati_remote2_input_mouse(struct ati_remote2 *ar2)
146{ 146{
147 struct input_dev *idev = ar2->idev; 147 struct input_dev *idev = ar2->idev;
148 u8 *data = ar2->buf[0]; 148 u8 *data = ar2->buf[0];
@@ -157,7 +157,6 @@ static void ati_remote2_input_mouse(struct ati_remote2 *ar2, struct pt_regs *reg
157 if (!((1 << data[0]) & mode_mask)) 157 if (!((1 << data[0]) & mode_mask))
158 return; 158 return;
159 159
160 input_regs(idev, regs);
161 input_event(idev, EV_REL, REL_X, (s8) data[1]); 160 input_event(idev, EV_REL, REL_X, (s8) data[1]);
162 input_event(idev, EV_REL, REL_Y, (s8) data[2]); 161 input_event(idev, EV_REL, REL_Y, (s8) data[2]);
163 input_sync(idev); 162 input_sync(idev);
@@ -174,7 +173,7 @@ static int ati_remote2_lookup(unsigned int hw_code)
174 return -1; 173 return -1;
175} 174}
176 175
177static void ati_remote2_input_key(struct ati_remote2 *ar2, struct pt_regs *regs) 176static void ati_remote2_input_key(struct ati_remote2 *ar2)
178{ 177{
179 struct input_dev *idev = ar2->idev; 178 struct input_dev *idev = ar2->idev;
180 u8 *data = ar2->buf[1]; 179 u8 *data = ar2->buf[1];
@@ -245,19 +244,18 @@ static void ati_remote2_input_key(struct ati_remote2 *ar2, struct pt_regs *regs)
245 return; 244 return;
246 } 245 }
247 246
248 input_regs(idev, regs);
249 input_event(idev, EV_KEY, ati_remote2_key_table[index].key_code, data[1]); 247 input_event(idev, EV_KEY, ati_remote2_key_table[index].key_code, data[1]);
250 input_sync(idev); 248 input_sync(idev);
251} 249}
252 250
253static void ati_remote2_complete_mouse(struct urb *urb, struct pt_regs *regs) 251static void ati_remote2_complete_mouse(struct urb *urb)
254{ 252{
255 struct ati_remote2 *ar2 = urb->context; 253 struct ati_remote2 *ar2 = urb->context;
256 int r; 254 int r;
257 255
258 switch (urb->status) { 256 switch (urb->status) {
259 case 0: 257 case 0:
260 ati_remote2_input_mouse(ar2, regs); 258 ati_remote2_input_mouse(ar2);
261 break; 259 break;
262 case -ENOENT: 260 case -ENOENT:
263 case -EILSEQ: 261 case -EILSEQ:
@@ -277,14 +275,14 @@ static void ati_remote2_complete_mouse(struct urb *urb, struct pt_regs *regs)
277 "%s(): usb_submit_urb() = %d\n", __FUNCTION__, r); 275 "%s(): usb_submit_urb() = %d\n", __FUNCTION__, r);
278} 276}
279 277
280static void ati_remote2_complete_key(struct urb *urb, struct pt_regs *regs) 278static void ati_remote2_complete_key(struct urb *urb)
281{ 279{
282 struct ati_remote2 *ar2 = urb->context; 280 struct ati_remote2 *ar2 = urb->context;
283 int r; 281 int r;
284 282
285 switch (urb->status) { 283 switch (urb->status) {
286 case 0: 284 case 0:
287 ati_remote2_input_key(ar2, regs); 285 ati_remote2_input_key(ar2);
288 break; 286 break;
289 case -ENOENT: 287 case -ENOENT:
290 case -EILSEQ: 288 case -EILSEQ:
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
index e0fd11605b43..a6738a83ff5b 100644
--- a/drivers/usb/input/hid-core.c
+++ b/drivers/usb/input/hid-core.c
@@ -780,13 +780,13 @@ static __inline__ int search(__s32 *array, __s32 value, unsigned n)
780 return -1; 780 return -1;
781} 781}
782 782
783static void hid_process_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value, int interrupt, struct pt_regs *regs) 783static void hid_process_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value, int interrupt)
784{ 784{
785 hid_dump_input(usage, value); 785 hid_dump_input(usage, value);
786 if (hid->claimed & HID_CLAIMED_INPUT) 786 if (hid->claimed & HID_CLAIMED_INPUT)
787 hidinput_hid_event(hid, field, usage, value, regs); 787 hidinput_hid_event(hid, field, usage, value);
788 if (hid->claimed & HID_CLAIMED_HIDDEV && interrupt) 788 if (hid->claimed & HID_CLAIMED_HIDDEV && interrupt)
789 hiddev_hid_event(hid, field, usage, value, regs); 789 hiddev_hid_event(hid, field, usage, value);
790} 790}
791 791
792/* 792/*
@@ -795,7 +795,7 @@ static void hid_process_event(struct hid_device *hid, struct hid_field *field, s
795 * reporting to the layer). 795 * reporting to the layer).
796 */ 796 */
797 797
798static void hid_input_field(struct hid_device *hid, struct hid_field *field, __u8 *data, int interrupt, struct pt_regs *regs) 798static void hid_input_field(struct hid_device *hid, struct hid_field *field, __u8 *data, int interrupt)
799{ 799{
800 unsigned n; 800 unsigned n;
801 unsigned count = field->report_count; 801 unsigned count = field->report_count;
@@ -822,19 +822,19 @@ static void hid_input_field(struct hid_device *hid, struct hid_field *field, __u
822 for (n = 0; n < count; n++) { 822 for (n = 0; n < count; n++) {
823 823
824 if (HID_MAIN_ITEM_VARIABLE & field->flags) { 824 if (HID_MAIN_ITEM_VARIABLE & field->flags) {
825 hid_process_event(hid, field, &field->usage[n], value[n], interrupt, regs); 825 hid_process_event(hid, field, &field->usage[n], value[n], interrupt);
826 continue; 826 continue;
827 } 827 }
828 828
829 if (field->value[n] >= min && field->value[n] <= max 829 if (field->value[n] >= min && field->value[n] <= max
830 && field->usage[field->value[n] - min].hid 830 && field->usage[field->value[n] - min].hid
831 && search(value, field->value[n], count)) 831 && search(value, field->value[n], count))
832 hid_process_event(hid, field, &field->usage[field->value[n] - min], 0, interrupt, regs); 832 hid_process_event(hid, field, &field->usage[field->value[n] - min], 0, interrupt);
833 833
834 if (value[n] >= min && value[n] <= max 834 if (value[n] >= min && value[n] <= max
835 && field->usage[value[n] - min].hid 835 && field->usage[value[n] - min].hid
836 && search(field->value, value[n], count)) 836 && search(field->value, value[n], count))
837 hid_process_event(hid, field, &field->usage[value[n] - min], 1, interrupt, regs); 837 hid_process_event(hid, field, &field->usage[value[n] - min], 1, interrupt);
838 } 838 }
839 839
840 memcpy(field->value, value, count * sizeof(__s32)); 840 memcpy(field->value, value, count * sizeof(__s32));
@@ -842,7 +842,7 @@ exit:
842 kfree(value); 842 kfree(value);
843} 843}
844 844
845static int hid_input_report(int type, struct urb *urb, int interrupt, struct pt_regs *regs) 845static int hid_input_report(int type, struct urb *urb, int interrupt)
846{ 846{
847 struct hid_device *hid = urb->context; 847 struct hid_device *hid = urb->context;
848 struct hid_report_enum *report_enum = hid->report_enum + type; 848 struct hid_report_enum *report_enum = hid->report_enum + type;
@@ -892,7 +892,7 @@ static int hid_input_report(int type, struct urb *urb, int interrupt, struct pt_
892 hiddev_report_event(hid, report); 892 hiddev_report_event(hid, report);
893 893
894 for (n = 0; n < report->maxfield; n++) 894 for (n = 0; n < report->maxfield; n++)
895 hid_input_field(hid, report->field[n], data, interrupt, regs); 895 hid_input_field(hid, report->field[n], data, interrupt);
896 896
897 if (hid->claimed & HID_CLAIMED_INPUT) 897 if (hid->claimed & HID_CLAIMED_INPUT)
898 hidinput_report_event(hid, report); 898 hidinput_report_event(hid, report);
@@ -1004,7 +1004,7 @@ done:
1004 * Input interrupt completion handler. 1004 * Input interrupt completion handler.
1005 */ 1005 */
1006 1006
1007static void hid_irq_in(struct urb *urb, struct pt_regs *regs) 1007static void hid_irq_in(struct urb *urb)
1008{ 1008{
1009 struct hid_device *hid = urb->context; 1009 struct hid_device *hid = urb->context;
1010 int status; 1010 int status;
@@ -1012,7 +1012,7 @@ static void hid_irq_in(struct urb *urb, struct pt_regs *regs)
1012 switch (urb->status) { 1012 switch (urb->status) {
1013 case 0: /* success */ 1013 case 0: /* success */
1014 hid->retry_delay = 0; 1014 hid->retry_delay = 0;
1015 hid_input_report(HID_INPUT_REPORT, urb, 1, regs); 1015 hid_input_report(HID_INPUT_REPORT, urb, 1);
1016 break; 1016 break;
1017 case -ECONNRESET: /* unlink */ 1017 case -ECONNRESET: /* unlink */
1018 case -ENOENT: 1018 case -ENOENT:
@@ -1193,7 +1193,7 @@ static int hid_submit_ctrl(struct hid_device *hid)
1193 * Output interrupt completion handler. 1193 * Output interrupt completion handler.
1194 */ 1194 */
1195 1195
1196static void hid_irq_out(struct urb *urb, struct pt_regs *regs) 1196static void hid_irq_out(struct urb *urb)
1197{ 1197{
1198 struct hid_device *hid = urb->context; 1198 struct hid_device *hid = urb->context;
1199 unsigned long flags; 1199 unsigned long flags;
@@ -1238,7 +1238,7 @@ static void hid_irq_out(struct urb *urb, struct pt_regs *regs)
1238 * Control pipe completion handler. 1238 * Control pipe completion handler.
1239 */ 1239 */
1240 1240
1241static void hid_ctrl(struct urb *urb, struct pt_regs *regs) 1241static void hid_ctrl(struct urb *urb)
1242{ 1242{
1243 struct hid_device *hid = urb->context; 1243 struct hid_device *hid = urb->context;
1244 unsigned long flags; 1244 unsigned long flags;
@@ -1249,7 +1249,7 @@ static void hid_ctrl(struct urb *urb, struct pt_regs *regs)
1249 switch (urb->status) { 1249 switch (urb->status) {
1250 case 0: /* success */ 1250 case 0: /* success */
1251 if (hid->ctrl[hid->ctrltail].dir == USB_DIR_IN) 1251 if (hid->ctrl[hid->ctrltail].dir == USB_DIR_IN)
1252 hid_input_report(hid->ctrl[hid->ctrltail].report->type, urb, 0, regs); 1252 hid_input_report(hid->ctrl[hid->ctrltail].report->type, urb, 0);
1253 break; 1253 break;
1254 case -ESHUTDOWN: /* unplug */ 1254 case -ESHUTDOWN: /* unplug */
1255 unplug = 1; 1255 unplug = 1;
diff --git a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c
index 4c62afbeb430..9a808a3b4d37 100644
--- a/drivers/usb/input/hid-input.c
+++ b/drivers/usb/input/hid-input.c
@@ -613,7 +613,7 @@ ignore:
613 return; 613 return;
614} 614}
615 615
616void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value, struct pt_regs *regs) 616void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value)
617{ 617{
618 struct input_dev *input; 618 struct input_dev *input;
619 int *quirks = &hid->quirks; 619 int *quirks = &hid->quirks;
@@ -623,8 +623,6 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
623 623
624 input = field->hidinput->input; 624 input = field->hidinput->input;
625 625
626 input_regs(input, regs);
627
628 if (!usage->type) 626 if (!usage->type)
629 return; 627 return;
630 628
diff --git a/drivers/usb/input/hid.h b/drivers/usb/input/hid.h
index b03fd9b075df..9b50effef758 100644
--- a/drivers/usb/input/hid.h
+++ b/drivers/usb/input/hid.h
@@ -499,13 +499,13 @@ struct hid_descriptor {
499/* Applications from HID Usage Tables 4/8/99 Version 1.1 */ 499/* Applications from HID Usage Tables 4/8/99 Version 1.1 */
500/* We ignore a few input applications that are not widely used */ 500/* We ignore a few input applications that are not widely used */
501#define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001)) 501#define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001))
502extern void hidinput_hid_event(struct hid_device *, struct hid_field *, struct hid_usage *, __s32, struct pt_regs *regs); 502extern void hidinput_hid_event(struct hid_device *, struct hid_field *, struct hid_usage *, __s32);
503extern void hidinput_report_event(struct hid_device *hid, struct hid_report *report); 503extern void hidinput_report_event(struct hid_device *hid, struct hid_report *report);
504extern int hidinput_connect(struct hid_device *); 504extern int hidinput_connect(struct hid_device *);
505extern void hidinput_disconnect(struct hid_device *); 505extern void hidinput_disconnect(struct hid_device *);
506#else 506#else
507#define IS_INPUT_APPLICATION(a) (0) 507#define IS_INPUT_APPLICATION(a) (0)
508static inline void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value, struct pt_regs *regs) { } 508static inline void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value) { }
509static inline void hidinput_report_event(struct hid_device *hid, struct hid_report *report) { } 509static inline void hidinput_report_event(struct hid_device *hid, struct hid_report *report) { }
510static inline int hidinput_connect(struct hid_device *hid) { return -ENODEV; } 510static inline int hidinput_connect(struct hid_device *hid) { return -ENODEV; }
511static inline void hidinput_disconnect(struct hid_device *hid) { } 511static inline void hidinput_disconnect(struct hid_device *hid) { }
diff --git a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c
index a2b419d13740..7dc14d0cacc1 100644
--- a/drivers/usb/input/hiddev.c
+++ b/drivers/usb/input/hiddev.c
@@ -179,7 +179,7 @@ static void hiddev_send_event(struct hid_device *hid,
179 * the interrupt pipe 179 * the interrupt pipe
180 */ 180 */
181void hiddev_hid_event(struct hid_device *hid, struct hid_field *field, 181void hiddev_hid_event(struct hid_device *hid, struct hid_field *field,
182 struct hid_usage *usage, __s32 value, struct pt_regs *regs) 182 struct hid_usage *usage, __s32 value)
183{ 183{
184 unsigned type = field->report_type; 184 unsigned type = field->report_type;
185 struct hiddev_usage_ref uref; 185 struct hiddev_usage_ref uref;
diff --git a/drivers/usb/input/itmtouch.c b/drivers/usb/input/itmtouch.c
index f3e3080de5b5..aac968aab860 100644
--- a/drivers/usb/input/itmtouch.c
+++ b/drivers/usb/input/itmtouch.c
@@ -80,7 +80,7 @@ static struct usb_device_id itmtouch_ids [] = {
80 { } 80 { }
81}; 81};
82 82
83static void itmtouch_irq(struct urb *urb, struct pt_regs *regs) 83static void itmtouch_irq(struct urb *urb)
84{ 84{
85 struct itmtouch_dev *itmtouch = urb->context; 85 struct itmtouch_dev *itmtouch = urb->context;
86 unsigned char *data = urb->transfer_buffer; 86 unsigned char *data = urb->transfer_buffer;
@@ -109,8 +109,6 @@ static void itmtouch_irq(struct urb *urb, struct pt_regs *regs)
109 goto exit; 109 goto exit;
110 } 110 }
111 111
112 input_regs(dev, regs);
113
114 /* if pressure has been released, then don't report X/Y */ 112 /* if pressure has been released, then don't report X/Y */
115 if (!(data[7] & 0x20)) { 113 if (!(data[7] & 0x20)) {
116 input_report_abs(dev, ABS_X, (data[0] & 0x1F) << 7 | (data[3] & 0x7F)); 114 input_report_abs(dev, ABS_X, (data[0] & 0x1F) << 7 | (data[3] & 0x7F));
diff --git a/drivers/usb/input/kbtab.c b/drivers/usb/input/kbtab.c
index 604ade356ead..fedbcb127c21 100644
--- a/drivers/usb/input/kbtab.c
+++ b/drivers/usb/input/kbtab.c
@@ -41,7 +41,7 @@ struct kbtab {
41 char phys[32]; 41 char phys[32];
42}; 42};
43 43
44static void kbtab_irq(struct urb *urb, struct pt_regs *regs) 44static void kbtab_irq(struct urb *urb)
45{ 45{
46 struct kbtab *kbtab = urb->context; 46 struct kbtab *kbtab = urb->context;
47 unsigned char *data = kbtab->data; 47 unsigned char *data = kbtab->data;
diff --git a/drivers/usb/input/keyspan_remote.c b/drivers/usb/input/keyspan_remote.c
index a90359551575..50aa8108a50b 100644
--- a/drivers/usb/input/keyspan_remote.c
+++ b/drivers/usb/input/keyspan_remote.c
@@ -176,7 +176,7 @@ static int keyspan_load_tester(struct usb_keyspan* dev, int bits_needed)
176/* 176/*
177 * Routine that handles all the logic needed to parse out the message from the remote. 177 * Routine that handles all the logic needed to parse out the message from the remote.
178 */ 178 */
179static void keyspan_check_data(struct usb_keyspan *remote, struct pt_regs *regs) 179static void keyspan_check_data(struct usb_keyspan *remote)
180{ 180{
181 int i; 181 int i;
182 int found = 0; 182 int found = 0;
@@ -311,7 +311,6 @@ static void keyspan_check_data(struct usb_keyspan *remote, struct pt_regs *regs)
311 __FUNCTION__, message.system, message.button, message.toggle); 311 __FUNCTION__, message.system, message.button, message.toggle);
312 312
313 if (message.toggle != remote->toggle) { 313 if (message.toggle != remote->toggle) {
314 input_regs(remote->input, regs);
315 input_report_key(remote->input, keyspan_key_table[message.button], 1); 314 input_report_key(remote->input, keyspan_key_table[message.button], 1);
316 input_report_key(remote->input, keyspan_key_table[message.button], 0); 315 input_report_key(remote->input, keyspan_key_table[message.button], 0);
317 input_sync(remote->input); 316 input_sync(remote->input);
@@ -361,7 +360,7 @@ static int keyspan_setup(struct usb_device* dev)
361/* 360/*
362 * Routine used to handle a new message that has come in. 361 * Routine used to handle a new message that has come in.
363 */ 362 */
364static void keyspan_irq_recv(struct urb *urb, struct pt_regs *regs) 363static void keyspan_irq_recv(struct urb *urb)
365{ 364{
366 struct usb_keyspan *dev = urb->context; 365 struct usb_keyspan *dev = urb->context;
367 int retval; 366 int retval;
@@ -385,7 +384,7 @@ static void keyspan_irq_recv(struct urb *urb, struct pt_regs *regs)
385 if (debug) 384 if (debug)
386 keyspan_print(dev); 385 keyspan_print(dev);
387 386
388 keyspan_check_data(dev, regs); 387 keyspan_check_data(dev);
389 388
390resubmit: 389resubmit:
391 retval = usb_submit_urb(urb, GFP_ATOMIC); 390 retval = usb_submit_urb(urb, GFP_ATOMIC);
diff --git a/drivers/usb/input/mtouchusb.c b/drivers/usb/input/mtouchusb.c
index 5dce951f2751..79a85d46cb13 100644
--- a/drivers/usb/input/mtouchusb.c
+++ b/drivers/usb/input/mtouchusb.c
@@ -98,7 +98,7 @@ static struct usb_device_id mtouchusb_devices[] = {
98 { } 98 { }
99}; 99};
100 100
101static void mtouchusb_irq(struct urb *urb, struct pt_regs *regs) 101static void mtouchusb_irq(struct urb *urb)
102{ 102{
103 struct mtouch_usb *mtouch = urb->context; 103 struct mtouch_usb *mtouch = urb->context;
104 int retval; 104 int retval;
@@ -125,7 +125,6 @@ static void mtouchusb_irq(struct urb *urb, struct pt_regs *regs)
125 goto exit; 125 goto exit;
126 } 126 }
127 127
128 input_regs(mtouch->input, regs);
129 input_report_key(mtouch->input, BTN_TOUCH, 128 input_report_key(mtouch->input, BTN_TOUCH,
130 MTOUCHUSB_GET_TOUCHED(mtouch->data)); 129 MTOUCHUSB_GET_TOUCHED(mtouch->data));
131 input_report_abs(mtouch->input, ABS_X, MTOUCHUSB_GET_XC(mtouch->data)); 130 input_report_abs(mtouch->input, ABS_X, MTOUCHUSB_GET_XC(mtouch->data));
diff --git a/drivers/usb/input/powermate.c b/drivers/usb/input/powermate.c
index f0f8db6810a2..0bf91778c40d 100644
--- a/drivers/usb/input/powermate.c
+++ b/drivers/usb/input/powermate.c
@@ -80,10 +80,10 @@ struct powermate_device {
80static char pm_name_powermate[] = "Griffin PowerMate"; 80static char pm_name_powermate[] = "Griffin PowerMate";
81static char pm_name_soundknob[] = "Griffin SoundKnob"; 81static char pm_name_soundknob[] = "Griffin SoundKnob";
82 82
83static void powermate_config_complete(struct urb *urb, struct pt_regs *regs); 83static void powermate_config_complete(struct urb *urb);
84 84
85/* Callback for data arriving from the PowerMate over the USB interrupt pipe */ 85/* Callback for data arriving from the PowerMate over the USB interrupt pipe */
86static void powermate_irq(struct urb *urb, struct pt_regs *regs) 86static void powermate_irq(struct urb *urb)
87{ 87{
88 struct powermate_device *pm = urb->context; 88 struct powermate_device *pm = urb->context;
89 int retval; 89 int retval;
@@ -104,7 +104,6 @@ static void powermate_irq(struct urb *urb, struct pt_regs *regs)
104 } 104 }
105 105
106 /* handle updates to device state */ 106 /* handle updates to device state */
107 input_regs(pm->input, regs);
108 input_report_key(pm->input, BTN_0, pm->data[0] & 0x01); 107 input_report_key(pm->input, BTN_0, pm->data[0] & 0x01);
109 input_report_rel(pm->input, REL_DIAL, pm->data[1]); 108 input_report_rel(pm->input, REL_DIAL, pm->data[1]);
110 input_sync(pm->input); 109 input_sync(pm->input);
@@ -191,7 +190,7 @@ static void powermate_sync_state(struct powermate_device *pm)
191} 190}
192 191
193/* Called when our asynchronous control message completes. We may need to issue another immediately */ 192/* Called when our asynchronous control message completes. We may need to issue another immediately */
194static void powermate_config_complete(struct urb *urb, struct pt_regs *regs) 193static void powermate_config_complete(struct urb *urb)
195{ 194{
196 struct powermate_device *pm = urb->context; 195 struct powermate_device *pm = urb->context;
197 unsigned long flags; 196 unsigned long flags;
diff --git a/drivers/usb/input/touchkitusb.c b/drivers/usb/input/touchkitusb.c
index 30b9f820e7a8..05c0d1ca39ab 100644
--- a/drivers/usb/input/touchkitusb.c
+++ b/drivers/usb/input/touchkitusb.c
@@ -92,8 +92,7 @@ static inline int touchkit_get_y(char *data)
92 92
93 93
94/* processes one input packet. */ 94/* processes one input packet. */
95static void touchkit_process_pkt(struct touchkit_usb *touchkit, 95static void touchkit_process_pkt(struct touchkit_usb *touchkit, char *pkt)
96 struct pt_regs *regs, char *pkt)
97{ 96{
98 int x, y; 97 int x, y;
99 98
@@ -109,7 +108,6 @@ static void touchkit_process_pkt(struct touchkit_usb *touchkit,
109 y = touchkit_get_y(pkt); 108 y = touchkit_get_y(pkt);
110 } 109 }
111 110
112 input_regs(touchkit->input, regs);
113 input_report_key(touchkit->input, BTN_TOUCH, touchkit_get_touched(pkt)); 111 input_report_key(touchkit->input, BTN_TOUCH, touchkit_get_touched(pkt));
114 input_report_abs(touchkit->input, ABS_X, x); 112 input_report_abs(touchkit->input, ABS_X, x);
115 input_report_abs(touchkit->input, ABS_Y, y); 113 input_report_abs(touchkit->input, ABS_Y, y);
@@ -130,8 +128,7 @@ static int touchkit_get_pkt_len(char *buf)
130 return 0; 128 return 0;
131} 129}
132 130
133static void touchkit_process(struct touchkit_usb *touchkit, int len, 131static void touchkit_process(struct touchkit_usb *touchkit, int len)
134 struct pt_regs *regs)
135{ 132{
136 char *buffer; 133 char *buffer;
137 int pkt_len, buf_len, pos; 134 int pkt_len, buf_len, pos;
@@ -153,7 +150,7 @@ static void touchkit_process(struct touchkit_usb *touchkit, int len,
153 /* append, process */ 150 /* append, process */
154 tmp = pkt_len - touchkit->buf_len; 151 tmp = pkt_len - touchkit->buf_len;
155 memcpy(touchkit->buffer + touchkit->buf_len, touchkit->data, tmp); 152 memcpy(touchkit->buffer + touchkit->buf_len, touchkit->data, tmp);
156 touchkit_process_pkt(touchkit, regs, touchkit->buffer); 153 touchkit_process_pkt(touchkit, touchkit->buffer);
157 154
158 buffer = touchkit->data + tmp; 155 buffer = touchkit->data + tmp;
159 buf_len = len - tmp; 156 buf_len = len - tmp;
@@ -181,7 +178,7 @@ static void touchkit_process(struct touchkit_usb *touchkit, int len,
181 178
182 /* full packet: process */ 179 /* full packet: process */
183 if (likely(pkt_len <= buf_len)) { 180 if (likely(pkt_len <= buf_len)) {
184 touchkit_process_pkt(touchkit, regs, buffer + pos); 181 touchkit_process_pkt(touchkit, buffer + pos);
185 } else { 182 } else {
186 /* incomplete packet: save in buffer */ 183 /* incomplete packet: save in buffer */
187 memcpy(touchkit->buffer, buffer + pos, buf_len - pos); 184 memcpy(touchkit->buffer, buffer + pos, buf_len - pos);
@@ -192,7 +189,7 @@ static void touchkit_process(struct touchkit_usb *touchkit, int len,
192} 189}
193 190
194 191
195static void touchkit_irq(struct urb *urb, struct pt_regs *regs) 192static void touchkit_irq(struct urb *urb)
196{ 193{
197 struct touchkit_usb *touchkit = urb->context; 194 struct touchkit_usb *touchkit = urb->context;
198 int retval; 195 int retval;
@@ -219,7 +216,7 @@ static void touchkit_irq(struct urb *urb, struct pt_regs *regs)
219 goto exit; 216 goto exit;
220 } 217 }
221 218
222 touchkit_process(touchkit, urb->actual_length, regs); 219 touchkit_process(touchkit, urb->actual_length);
223 220
224exit: 221exit:
225 retval = usb_submit_urb(urb, GFP_ATOMIC); 222 retval = usb_submit_urb(urb, GFP_ATOMIC);
diff --git a/drivers/usb/input/usbkbd.c b/drivers/usb/input/usbkbd.c
index 5067a6ae650f..c73285cf8558 100644
--- a/drivers/usb/input/usbkbd.c
+++ b/drivers/usb/input/usbkbd.c
@@ -80,7 +80,7 @@ struct usb_kbd {
80 dma_addr_t leds_dma; 80 dma_addr_t leds_dma;
81}; 81};
82 82
83static void usb_kbd_irq(struct urb *urb, struct pt_regs *regs) 83static void usb_kbd_irq(struct urb *urb)
84{ 84{
85 struct usb_kbd *kbd = urb->context; 85 struct usb_kbd *kbd = urb->context;
86 int i; 86 int i;
@@ -97,8 +97,6 @@ static void usb_kbd_irq(struct urb *urb, struct pt_regs *regs)
97 goto resubmit; 97 goto resubmit;
98 } 98 }
99 99
100 input_regs(kbd->dev, regs);
101
102 for (i = 0; i < 8; i++) 100 for (i = 0; i < 8; i++)
103 input_report_key(kbd->dev, usb_kbd_keycode[i + 224], (kbd->new[0] >> i) & 1); 101 input_report_key(kbd->dev, usb_kbd_keycode[i + 224], (kbd->new[0] >> i) & 1);
104 102
@@ -158,7 +156,7 @@ static int usb_kbd_event(struct input_dev *dev, unsigned int type,
158 return 0; 156 return 0;
159} 157}
160 158
161static void usb_kbd_led(struct urb *urb, struct pt_regs *regs) 159static void usb_kbd_led(struct urb *urb)
162{ 160{
163 struct usb_kbd *kbd = urb->context; 161 struct usb_kbd *kbd = urb->context;
164 162
diff --git a/drivers/usb/input/usbmouse.c b/drivers/usb/input/usbmouse.c
index 0fb792be95ef..cbbbea332ed7 100644
--- a/drivers/usb/input/usbmouse.c
+++ b/drivers/usb/input/usbmouse.c
@@ -55,7 +55,7 @@ struct usb_mouse {
55 dma_addr_t data_dma; 55 dma_addr_t data_dma;
56}; 56};
57 57
58static void usb_mouse_irq(struct urb *urb, struct pt_regs *regs) 58static void usb_mouse_irq(struct urb *urb)
59{ 59{
60 struct usb_mouse *mouse = urb->context; 60 struct usb_mouse *mouse = urb->context;
61 signed char *data = mouse->data; 61 signed char *data = mouse->data;
@@ -74,8 +74,6 @@ static void usb_mouse_irq(struct urb *urb, struct pt_regs *regs)
74 goto resubmit; 74 goto resubmit;
75 } 75 }
76 76
77 input_regs(dev, regs);
78
79 input_report_key(dev, BTN_LEFT, data[0] & 0x01); 77 input_report_key(dev, BTN_LEFT, data[0] & 0x01);
80 input_report_key(dev, BTN_RIGHT, data[0] & 0x02); 78 input_report_key(dev, BTN_RIGHT, data[0] & 0x02);
81 input_report_key(dev, BTN_MIDDLE, data[0] & 0x04); 79 input_report_key(dev, BTN_MIDDLE, data[0] & 0x04);
diff --git a/drivers/usb/input/usbtouchscreen.c b/drivers/usb/input/usbtouchscreen.c
index 923e22db18d4..f26c1cd1129f 100644
--- a/drivers/usb/input/usbtouchscreen.c
+++ b/drivers/usb/input/usbtouchscreen.c
@@ -61,7 +61,7 @@ struct usbtouch_device_info {
61 int rept_size; 61 int rept_size;
62 int flags; 62 int flags;
63 63
64 void (*process_pkt) (struct usbtouch_usb *usbtouch, struct pt_regs *regs, unsigned char *pkt, int len); 64 void (*process_pkt) (struct usbtouch_usb *usbtouch, unsigned char *pkt, int len);
65 int (*get_pkt_len) (unsigned char *pkt, int len); 65 int (*get_pkt_len) (unsigned char *pkt, int len);
66 int (*read_data) (unsigned char *pkt, int *x, int *y, int *touch, int *press); 66 int (*read_data) (unsigned char *pkt, int *x, int *y, int *touch, int *press);
67 int (*init) (struct usbtouch_usb *usbtouch); 67 int (*init) (struct usbtouch_usb *usbtouch);
@@ -91,7 +91,6 @@ struct usbtouch_usb {
91 91
92#ifdef MULTI_PACKET 92#ifdef MULTI_PACKET
93static void usbtouch_process_multi(struct usbtouch_usb *usbtouch, 93static void usbtouch_process_multi(struct usbtouch_usb *usbtouch,
94 struct pt_regs *regs,
95 unsigned char *pkt, int len); 94 unsigned char *pkt, int len);
96#endif 95#endif
97 96
@@ -397,7 +396,7 @@ static struct usbtouch_device_info usbtouch_dev_info[] = {
397 * Generic Part 396 * Generic Part
398 */ 397 */
399static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch, 398static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch,
400 struct pt_regs *regs, unsigned char *pkt, int len) 399 unsigned char *pkt, int len)
401{ 400{
402 int x, y, touch, press; 401 int x, y, touch, press;
403 struct usbtouch_device_info *type = usbtouch->type; 402 struct usbtouch_device_info *type = usbtouch->type;
@@ -405,7 +404,6 @@ static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch,
405 if (!type->read_data(pkt, &x, &y, &touch, &press)) 404 if (!type->read_data(pkt, &x, &y, &touch, &press))
406 return; 405 return;
407 406
408 input_regs(usbtouch->input, regs);
409 input_report_key(usbtouch->input, BTN_TOUCH, touch); 407 input_report_key(usbtouch->input, BTN_TOUCH, touch);
410 408
411 if (swap_xy) { 409 if (swap_xy) {
@@ -423,7 +421,6 @@ static void usbtouch_process_pkt(struct usbtouch_usb *usbtouch,
423 421
424#ifdef MULTI_PACKET 422#ifdef MULTI_PACKET
425static void usbtouch_process_multi(struct usbtouch_usb *usbtouch, 423static void usbtouch_process_multi(struct usbtouch_usb *usbtouch,
426 struct pt_regs *regs,
427 unsigned char *pkt, int len) 424 unsigned char *pkt, int len)
428{ 425{
429 unsigned char *buffer; 426 unsigned char *buffer;
@@ -460,7 +457,7 @@ static void usbtouch_process_multi(struct usbtouch_usb *usbtouch,
460 if (usbtouch->buf_len + tmp >= usbtouch->type->rept_size) 457 if (usbtouch->buf_len + tmp >= usbtouch->type->rept_size)
461 goto out_flush_buf; 458 goto out_flush_buf;
462 memcpy(usbtouch->buffer + usbtouch->buf_len, pkt, tmp); 459 memcpy(usbtouch->buffer + usbtouch->buf_len, pkt, tmp);
463 usbtouch_process_pkt(usbtouch, regs, usbtouch->buffer, pkt_len); 460 usbtouch_process_pkt(usbtouch, usbtouch->buffer, pkt_len);
464 461
465 buffer = pkt + tmp; 462 buffer = pkt + tmp;
466 buf_len = len - tmp; 463 buf_len = len - tmp;
@@ -481,7 +478,7 @@ static void usbtouch_process_multi(struct usbtouch_usb *usbtouch,
481 478
482 /* full packet: process */ 479 /* full packet: process */
483 if (likely((pkt_len > 0) && (pkt_len <= buf_len - pos))) { 480 if (likely((pkt_len > 0) && (pkt_len <= buf_len - pos))) {
484 usbtouch_process_pkt(usbtouch, regs, buffer + pos, pkt_len); 481 usbtouch_process_pkt(usbtouch, buffer + pos, pkt_len);
485 } else { 482 } else {
486 /* incomplete packet: save in buffer */ 483 /* incomplete packet: save in buffer */
487 memcpy(usbtouch->buffer, buffer + pos, buf_len - pos); 484 memcpy(usbtouch->buffer, buffer + pos, buf_len - pos);
@@ -498,7 +495,7 @@ out_flush_buf:
498#endif 495#endif
499 496
500 497
501static void usbtouch_irq(struct urb *urb, struct pt_regs *regs) 498static void usbtouch_irq(struct urb *urb)
502{ 499{
503 struct usbtouch_usb *usbtouch = urb->context; 500 struct usbtouch_usb *usbtouch = urb->context;
504 int retval; 501 int retval;
@@ -525,7 +522,7 @@ static void usbtouch_irq(struct urb *urb, struct pt_regs *regs)
525 goto exit; 522 goto exit;
526 } 523 }
527 524
528 usbtouch->type->process_pkt(usbtouch, regs, usbtouch->data, urb->actual_length); 525 usbtouch->type->process_pkt(usbtouch, usbtouch->data, urb->actual_length);
529 526
530exit: 527exit:
531 retval = usb_submit_urb(urb, GFP_ATOMIC); 528 retval = usb_submit_urb(urb, GFP_ATOMIC);
diff --git a/drivers/usb/input/wacom.h b/drivers/usb/input/wacom.h
index 832737b658cf..7b3840e378a8 100644
--- a/drivers/usb/input/wacom.h
+++ b/drivers/usb/input/wacom.h
@@ -106,16 +106,14 @@ struct wacom {
106struct wacom_combo { 106struct wacom_combo {
107 struct wacom * wacom; 107 struct wacom * wacom;
108 struct urb * urb; 108 struct urb * urb;
109 struct pt_regs *regs;
110}; 109};
111 110
112extern int wacom_wac_irq(struct wacom_wac * wacom_wac, void * wcombo); 111extern int wacom_wac_irq(struct wacom_wac * wacom_wac, void * wcombo);
113extern void wacom_sys_irq(struct urb *urb, struct pt_regs *regs); 112extern void wacom_sys_irq(struct urb *urb);
114extern void wacom_report_abs(void *wcombo, unsigned int abs_type, int abs_data); 113extern void wacom_report_abs(void *wcombo, unsigned int abs_type, int abs_data);
115extern void wacom_report_rel(void *wcombo, unsigned int rel_type, int rel_data); 114extern void wacom_report_rel(void *wcombo, unsigned int rel_type, int rel_data);
116extern void wacom_report_key(void *wcombo, unsigned int key_type, int key_data); 115extern void wacom_report_key(void *wcombo, unsigned int key_type, int key_data);
117extern void wacom_input_event(void *wcombo, unsigned int type, unsigned int code, int value); 116extern void wacom_input_event(void *wcombo, unsigned int type, unsigned int code, int value);
118extern void wacom_input_regs(void *wcombo);
119extern void wacom_input_sync(void *wcombo); 117extern void wacom_input_sync(void *wcombo);
120extern void wacom_init_input_dev(struct input_dev *input_dev, struct wacom_wac *wacom_wac); 118extern void wacom_init_input_dev(struct input_dev *input_dev, struct wacom_wac *wacom_wac);
121extern void input_dev_g4(struct input_dev *input_dev, struct wacom_wac *wacom_wac); 119extern void input_dev_g4(struct input_dev *input_dev, struct wacom_wac *wacom_wac);
diff --git a/drivers/usb/input/wacom_sys.c b/drivers/usb/input/wacom_sys.c
index 7c3b52bdd9d6..d233c37bd533 100644
--- a/drivers/usb/input/wacom_sys.c
+++ b/drivers/usb/input/wacom_sys.c
@@ -42,7 +42,7 @@ static struct input_dev * get_input_dev(struct wacom_combo *wcombo)
42 return wcombo->wacom->dev; 42 return wcombo->wacom->dev;
43} 43}
44 44
45void wacom_sys_irq(struct urb *urb, struct pt_regs *regs) 45void wacom_sys_irq(struct urb *urb)
46{ 46{
47 struct wacom *wacom = urb->context; 47 struct wacom *wacom = urb->context;
48 struct wacom_combo wcombo; 48 struct wacom_combo wcombo;
@@ -65,7 +65,6 @@ void wacom_sys_irq(struct urb *urb, struct pt_regs *regs)
65 65
66 wcombo.wacom = wacom; 66 wcombo.wacom = wacom;
67 wcombo.urb = urb; 67 wcombo.urb = urb;
68 wcombo.regs = regs;
69 68
70 if (wacom_wac_irq(wacom->wacom_wac, (void *)&wcombo)) 69 if (wacom_wac_irq(wacom->wacom_wac, (void *)&wcombo))
71 input_sync(get_input_dev(&wcombo)); 70 input_sync(get_input_dev(&wcombo));
@@ -115,12 +114,6 @@ __u16 wacom_le16_to_cpu(unsigned char *data)
115 return value; 114 return value;
116} 115}
117 116
118void wacom_input_regs(void *wcombo)
119{
120 input_regs(get_input_dev((struct wacom_combo *)wcombo), ((struct wacom_combo *)wcombo)->regs);
121 return;
122}
123
124void wacom_input_sync(void *wcombo) 117void wacom_input_sync(void *wcombo)
125{ 118{
126 input_sync(get_input_dev((struct wacom_combo *)wcombo)); 119 input_sync(get_input_dev((struct wacom_combo *)wcombo));
diff --git a/drivers/usb/input/wacom_wac.c b/drivers/usb/input/wacom_wac.c
index 85d458c98b6e..aa31d22d4f05 100644
--- a/drivers/usb/input/wacom_wac.c
+++ b/drivers/usb/input/wacom_wac.c
@@ -20,7 +20,6 @@ static int wacom_penpartner_irq(struct wacom_wac *wacom, void *wcombo)
20 20
21 switch (data[0]) { 21 switch (data[0]) {
22 case 1: 22 case 1:
23 wacom_input_regs(wcombo);
24 if (data[5] & 0x80) { 23 if (data[5] & 0x80) {
25 wacom->tool[0] = (data[5] & 0x20) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN; 24 wacom->tool[0] = (data[5] & 0x20) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN;
26 wacom->id[0] = (data[5] & 0x20) ? ERASER_DEVICE_ID : STYLUS_DEVICE_ID; 25 wacom->id[0] = (data[5] & 0x20) ? ERASER_DEVICE_ID : STYLUS_DEVICE_ID;
@@ -39,7 +38,6 @@ static int wacom_penpartner_irq(struct wacom_wac *wacom, void *wcombo)
39 } 38 }
40 break; 39 break;
41 case 2: 40 case 2:
42 wacom_input_regs(wcombo);
43 wacom_report_key(wcombo, BTN_TOOL_PEN, 1); 41 wacom_report_key(wcombo, BTN_TOOL_PEN, 1);
44 wacom_report_abs(wcombo, ABS_MISC, STYLUS_DEVICE_ID); /* report tool id */ 42 wacom_report_abs(wcombo, ABS_MISC, STYLUS_DEVICE_ID); /* report tool id */
45 wacom_report_abs(wcombo, ABS_X, wacom_le16_to_cpu(&data[1])); 43 wacom_report_abs(wcombo, ABS_X, wacom_le16_to_cpu(&data[1]));
@@ -67,8 +65,6 @@ static int wacom_pl_irq(struct wacom_wac *wacom, void *wcombo)
67 65
68 prox = data[1] & 0x40; 66 prox = data[1] & 0x40;
69 67
70 wacom_input_regs(wcombo);
71
72 id = ERASER_DEVICE_ID; 68 id = ERASER_DEVICE_ID;
73 if (prox) { 69 if (prox) {
74 70
@@ -138,7 +134,6 @@ static int wacom_ptu_irq(struct wacom_wac *wacom, void *wcombo)
138 return 0; 134 return 0;
139 } 135 }
140 136
141 wacom_input_regs(wcombo);
142 if (data[1] & 0x04) { 137 if (data[1] & 0x04) {
143 wacom_report_key(wcombo, BTN_TOOL_RUBBER, data[1] & 0x20); 138 wacom_report_key(wcombo, BTN_TOOL_RUBBER, data[1] & 0x20);
144 wacom_report_key(wcombo, BTN_TOUCH, data[1] & 0x08); 139 wacom_report_key(wcombo, BTN_TOUCH, data[1] & 0x08);
@@ -167,8 +162,6 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo)
167 return 0; 162 return 0;
168 } 163 }
169 164
170 wacom_input_regs(wcombo);
171
172 id = STYLUS_DEVICE_ID; 165 id = STYLUS_DEVICE_ID;
173 if (data[1] & 0x10) { /* in prox */ 166 if (data[1] & 0x10) { /* in prox */
174 167
@@ -369,8 +362,6 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo)
369 return 0; 362 return 0;
370 } 363 }
371 364
372 wacom_input_regs(wcombo);
373
374 /* tool number */ 365 /* tool number */
375 idx = data[1] & 0x01; 366 idx = data[1] & 0x01;
376 367
diff --git a/drivers/usb/input/xpad.c b/drivers/usb/input/xpad.c
index 9889b1cda05b..cebb6c463bfb 100644
--- a/drivers/usb/input/xpad.c
+++ b/drivers/usb/input/xpad.c
@@ -120,12 +120,10 @@ struct usb_xpad {
120 * http://euc.jp/periphs/xbox-controller.ja.html 120 * http://euc.jp/periphs/xbox-controller.ja.html
121 */ 121 */
122 122
123static void xpad_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data, struct pt_regs *regs) 123static void xpad_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data)
124{ 124{
125 struct input_dev *dev = xpad->dev; 125 struct input_dev *dev = xpad->dev;
126 126
127 input_regs(dev, regs);
128
129 /* left stick */ 127 /* left stick */
130 input_report_abs(dev, ABS_X, (__s16) (((__s16)data[13] << 8) | data[12])); 128 input_report_abs(dev, ABS_X, (__s16) (((__s16)data[13] << 8) | data[12]));
131 input_report_abs(dev, ABS_Y, (__s16) (((__s16)data[15] << 8) | data[14])); 129 input_report_abs(dev, ABS_Y, (__s16) (((__s16)data[15] << 8) | data[14]));
@@ -161,7 +159,7 @@ static void xpad_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *d
161 input_sync(dev); 159 input_sync(dev);
162} 160}
163 161
164static void xpad_irq_in(struct urb *urb, struct pt_regs *regs) 162static void xpad_irq_in(struct urb *urb)
165{ 163{
166 struct usb_xpad *xpad = urb->context; 164 struct usb_xpad *xpad = urb->context;
167 int retval; 165 int retval;
@@ -181,7 +179,7 @@ static void xpad_irq_in(struct urb *urb, struct pt_regs *regs)
181 goto exit; 179 goto exit;
182 } 180 }
183 181
184 xpad_process_packet(xpad, 0, xpad->idata, regs); 182 xpad_process_packet(xpad, 0, xpad->idata);
185 183
186exit: 184exit:
187 retval = usb_submit_urb (urb, GFP_ATOMIC); 185 retval = usb_submit_urb (urb, GFP_ATOMIC);
diff --git a/drivers/usb/input/yealink.c b/drivers/usb/input/yealink.c
index 7291e7a2717b..905bf6398257 100644
--- a/drivers/usb/input/yealink.c
+++ b/drivers/usb/input/yealink.c
@@ -233,11 +233,10 @@ static int map_p1k_to_key(int scancode)
233 * 233 *
234 * The key parameter can be cascaded: key2 << 8 | key1 234 * The key parameter can be cascaded: key2 << 8 | key1
235 */ 235 */
236static void report_key(struct yealink_dev *yld, int key, struct pt_regs *regs) 236static void report_key(struct yealink_dev *yld, int key)
237{ 237{
238 struct input_dev *idev = yld->idev; 238 struct input_dev *idev = yld->idev;
239 239
240 input_regs(idev, regs);
241 if (yld->key_code >= 0) { 240 if (yld->key_code >= 0) {
242 /* old key up */ 241 /* old key up */
243 input_report_key(idev, yld->key_code & 0xff, 0); 242 input_report_key(idev, yld->key_code & 0xff, 0);
@@ -422,7 +421,7 @@ send_update:
422 * error,start 421 * error,start
423 * 422 *
424 */ 423 */
425static void urb_irq_callback(struct urb *urb, struct pt_regs *regs) 424static void urb_irq_callback(struct urb *urb)
426{ 425{
427 struct yealink_dev *yld = urb->context; 426 struct yealink_dev *yld = urb->context;
428 int ret; 427 int ret;
@@ -439,7 +438,7 @@ static void urb_irq_callback(struct urb *urb, struct pt_regs *regs)
439 case CMD_SCANCODE: 438 case CMD_SCANCODE:
440 dbg("get scancode %x", yld->irq_data->data[0]); 439 dbg("get scancode %x", yld->irq_data->data[0]);
441 440
442 report_key(yld, map_p1k_to_key(yld->irq_data->data[0]), regs); 441 report_key(yld, map_p1k_to_key(yld->irq_data->data[0]));
443 break; 442 break;
444 443
445 default: 444 default:
@@ -453,7 +452,7 @@ static void urb_irq_callback(struct urb *urb, struct pt_regs *regs)
453 err("%s - usb_submit_urb failed %d", __FUNCTION__, ret); 452 err("%s - usb_submit_urb failed %d", __FUNCTION__, ret);
454} 453}
455 454
456static void urb_ctl_callback(struct urb *urb, struct pt_regs *regs) 455static void urb_ctl_callback(struct urb *urb)
457{ 456{
458 struct yealink_dev *yld = urb->context; 457 struct yealink_dev *yld = urb->context;
459 int ret; 458 int ret;
diff --git a/drivers/usb/misc/adutux.c b/drivers/usb/misc/adutux.c
index d3963199b6ec..aecd633fe9f6 100644
--- a/drivers/usb/misc/adutux.c
+++ b/drivers/usb/misc/adutux.c
@@ -177,7 +177,7 @@ static void adu_delete(struct adu_device *dev)
177 dbg(2, "%s : leave", __FUNCTION__); 177 dbg(2, "%s : leave", __FUNCTION__);
178} 178}
179 179
180static void adu_interrupt_in_callback(struct urb *urb, struct pt_regs *regs) 180static void adu_interrupt_in_callback(struct urb *urb)
181{ 181{
182 struct adu_device *dev = urb->context; 182 struct adu_device *dev = urb->context;
183 183
@@ -221,7 +221,7 @@ exit:
221 dbg(4," %s : leave, status %d", __FUNCTION__, urb->status); 221 dbg(4," %s : leave, status %d", __FUNCTION__, urb->status);
222} 222}
223 223
224static void adu_interrupt_out_callback(struct urb *urb, struct pt_regs *regs) 224static void adu_interrupt_out_callback(struct urb *urb)
225{ 225{
226 struct adu_device *dev = urb->context; 226 struct adu_device *dev = urb->context;
227 227
diff --git a/drivers/usb/misc/appledisplay.c b/drivers/usb/misc/appledisplay.c
index fc6cc147996f..6b23a1def9fe 100644
--- a/drivers/usb/misc/appledisplay.c
+++ b/drivers/usb/misc/appledisplay.c
@@ -84,7 +84,7 @@ struct appledisplay {
84static atomic_t count_displays = ATOMIC_INIT(0); 84static atomic_t count_displays = ATOMIC_INIT(0);
85static struct workqueue_struct *wq; 85static struct workqueue_struct *wq;
86 86
87static void appledisplay_complete(struct urb *urb, struct pt_regs *regs) 87static void appledisplay_complete(struct urb *urb)
88{ 88{
89 struct appledisplay *pdata = urb->context; 89 struct appledisplay *pdata = urb->context;
90 unsigned long flags; 90 unsigned long flags;
diff --git a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c
index 4fd2110b3411..0be9d62d62ae 100644
--- a/drivers/usb/misc/auerswald.c
+++ b/drivers/usb/misc/auerswald.c
@@ -267,7 +267,7 @@ typedef struct
267 267
268/*-------------------------------------------------------------------*/ 268/*-------------------------------------------------------------------*/
269/* Forwards */ 269/* Forwards */
270static void auerswald_ctrlread_complete (struct urb * urb, struct pt_regs *regs); 270static void auerswald_ctrlread_complete (struct urb * urb);
271static void auerswald_removeservice (pauerswald_t cp, pauerscon_t scp); 271static void auerswald_removeservice (pauerswald_t cp, pauerscon_t scp);
272static struct usb_driver auerswald_driver; 272static struct usb_driver auerswald_driver;
273 273
@@ -277,7 +277,7 @@ static struct usb_driver auerswald_driver;
277/* -------------------------- */ 277/* -------------------------- */
278 278
279/* completion function for chained urbs */ 279/* completion function for chained urbs */
280static void auerchain_complete (struct urb * urb, struct pt_regs *regs) 280static void auerchain_complete (struct urb * urb)
281{ 281{
282 unsigned long flags; 282 unsigned long flags;
283 int result; 283 int result;
@@ -296,7 +296,7 @@ static void auerchain_complete (struct urb * urb, struct pt_regs *regs)
296 NOTE: this function may lead to more urbs submitted into the chain. 296 NOTE: this function may lead to more urbs submitted into the chain.
297 (no chain lock at calling complete()!) 297 (no chain lock at calling complete()!)
298 acp->active != NULL is protecting us against recursion.*/ 298 acp->active != NULL is protecting us against recursion.*/
299 urb->complete (urb, regs); 299 urb->complete (urb);
300 300
301 /* detach element from chain data structure */ 301 /* detach element from chain data structure */
302 spin_lock_irqsave (&acp->lock, flags); 302 spin_lock_irqsave (&acp->lock, flags);
@@ -331,7 +331,7 @@ static void auerchain_complete (struct urb * urb, struct pt_regs *regs)
331 urb->status = result; 331 urb->status = result;
332 dbg("auerchain_complete: usb_submit_urb with error code %d", result); 332 dbg("auerchain_complete: usb_submit_urb with error code %d", result);
333 /* and do error handling via *this* completion function (recursive) */ 333 /* and do error handling via *this* completion function (recursive) */
334 auerchain_complete( urb, NULL); 334 auerchain_complete( urb);
335 } 335 }
336 } else { 336 } else {
337 /* simple return without submitting a new urb. 337 /* simple return without submitting a new urb.
@@ -408,7 +408,7 @@ static int auerchain_submit_urb_list (pauerchain_t acp, struct urb * urb, int ea
408 urb->status = result; 408 urb->status = result;
409 dbg("auerchain_submit_urb: usb_submit_urb with error code %d", result); 409 dbg("auerchain_submit_urb: usb_submit_urb with error code %d", result);
410 /* and do error handling via completion function */ 410 /* and do error handling via completion function */
411 auerchain_complete( urb, NULL); 411 auerchain_complete( urb);
412 } 412 }
413 } 413 }
414 414
@@ -448,7 +448,7 @@ static int auerchain_unlink_urb (pauerchain_t acp, struct urb * urb)
448 spin_unlock_irqrestore (&acp->lock, flags); 448 spin_unlock_irqrestore (&acp->lock, flags);
449 dbg ("unlink waiting urb"); 449 dbg ("unlink waiting urb");
450 urb->status = -ENOENT; 450 urb->status = -ENOENT;
451 urb->complete (urb, NULL); 451 urb->complete (urb);
452 return 0; 452 return 0;
453 } 453 }
454 } 454 }
@@ -505,7 +505,7 @@ static void auerchain_unlink_all (pauerchain_t acp)
505 spin_unlock_irqrestore (&acp->lock, flags); 505 spin_unlock_irqrestore (&acp->lock, flags);
506 dbg ("unlink waiting urb"); 506 dbg ("unlink waiting urb");
507 urbp->status = -ENOENT; 507 urbp->status = -ENOENT;
508 urbp->complete (urbp, NULL); 508 urbp->complete (urbp);
509 spin_lock_irqsave (&acp->lock, flags); 509 spin_lock_irqsave (&acp->lock, flags);
510 } 510 }
511 spin_unlock_irqrestore (&acp->lock, flags); 511 spin_unlock_irqrestore (&acp->lock, flags);
@@ -591,7 +591,7 @@ ac_fail:/* free the elements */
591 591
592 592
593/* completion handler for synchronous chained URBs */ 593/* completion handler for synchronous chained URBs */
594static void auerchain_blocking_completion (struct urb *urb, struct pt_regs *regs) 594static void auerchain_blocking_completion (struct urb *urb)
595{ 595{
596 pauerchain_chs_t pchs = (pauerchain_chs_t)urb->context; 596 pauerchain_chs_t pchs = (pauerchain_chs_t)urb->context;
597 pchs->done = 1; 597 pchs->done = 1;
@@ -846,7 +846,7 @@ static int auerswald_status_retry (int status)
846} 846}
847 847
848/* Completion of asynchronous write block */ 848/* Completion of asynchronous write block */
849static void auerchar_ctrlwrite_complete (struct urb * urb, struct pt_regs *regs) 849static void auerchar_ctrlwrite_complete (struct urb * urb)
850{ 850{
851 pauerbuf_t bp = (pauerbuf_t) urb->context; 851 pauerbuf_t bp = (pauerbuf_t) urb->context;
852 pauerswald_t cp = ((pauerswald_t)((char *)(bp->list)-(unsigned long)(&((pauerswald_t)0)->bufctl))); 852 pauerswald_t cp = ((pauerswald_t)((char *)(bp->list)-(unsigned long)(&((pauerswald_t)0)->bufctl)));
@@ -859,7 +859,7 @@ static void auerchar_ctrlwrite_complete (struct urb * urb, struct pt_regs *regs)
859} 859}
860 860
861/* Completion handler for dummy retry packet */ 861/* Completion handler for dummy retry packet */
862static void auerswald_ctrlread_wretcomplete (struct urb * urb, struct pt_regs *regs) 862static void auerswald_ctrlread_wretcomplete (struct urb * urb)
863{ 863{
864 pauerbuf_t bp = (pauerbuf_t) urb->context; 864 pauerbuf_t bp = (pauerbuf_t) urb->context;
865 pauerswald_t cp; 865 pauerswald_t cp;
@@ -893,12 +893,12 @@ static void auerswald_ctrlread_wretcomplete (struct urb * urb, struct pt_regs *r
893 if (ret) { 893 if (ret) {
894 dbg ("auerswald_ctrlread_complete: nonzero result of auerchain_submit_urb_list %d", ret); 894 dbg ("auerswald_ctrlread_complete: nonzero result of auerchain_submit_urb_list %d", ret);
895 bp->urbp->status = ret; 895 bp->urbp->status = ret;
896 auerswald_ctrlread_complete (bp->urbp, NULL); 896 auerswald_ctrlread_complete (bp->urbp);
897 } 897 }
898} 898}
899 899
900/* completion handler for receiving of control messages */ 900/* completion handler for receiving of control messages */
901static void auerswald_ctrlread_complete (struct urb * urb, struct pt_regs *regs) 901static void auerswald_ctrlread_complete (struct urb * urb)
902{ 902{
903 unsigned int serviceid; 903 unsigned int serviceid;
904 pauerswald_t cp; 904 pauerswald_t cp;
@@ -941,7 +941,7 @@ static void auerswald_ctrlread_complete (struct urb * urb, struct pt_regs *regs)
941 if (ret) { 941 if (ret) {
942 dbg ("auerswald_ctrlread_complete: nonzero result of auerchain_submit_urb_list %d", ret); 942 dbg ("auerswald_ctrlread_complete: nonzero result of auerchain_submit_urb_list %d", ret);
943 bp->urbp->status = ret; 943 bp->urbp->status = ret;
944 auerswald_ctrlread_wretcomplete (bp->urbp, regs); 944 auerswald_ctrlread_wretcomplete (bp->urbp);
945 } 945 }
946 return; 946 return;
947 } 947 }
@@ -970,7 +970,7 @@ static void auerswald_ctrlread_complete (struct urb * urb, struct pt_regs *regs)
970 messages from the USB device. 970 messages from the USB device.
971*/ 971*/
972/* int completion handler. */ 972/* int completion handler. */
973static void auerswald_int_complete (struct urb * urb, struct pt_regs *regs) 973static void auerswald_int_complete (struct urb * urb)
974{ 974{
975 unsigned long flags; 975 unsigned long flags;
976 unsigned int channelid; 976 unsigned int channelid;
@@ -1070,7 +1070,7 @@ static void auerswald_int_complete (struct urb * urb, struct pt_regs *regs)
1070 if (ret) { 1070 if (ret) {
1071 dbg ("auerswald_int_complete: nonzero result of auerchain_submit_urb %d", ret); 1071 dbg ("auerswald_int_complete: nonzero result of auerchain_submit_urb %d", ret);
1072 bp->urbp->status = ret; 1072 bp->urbp->status = ret;
1073 auerswald_ctrlread_complete( bp->urbp, NULL); 1073 auerswald_ctrlread_complete( bp->urbp);
1074 /* here applies the same problem as above: device locking! */ 1074 /* here applies the same problem as above: device locking! */
1075 } 1075 }
1076exit: 1076exit:
diff --git a/drivers/usb/misc/ftdi-elan.c b/drivers/usb/misc/ftdi-elan.c
index c6f2f488a40f..0eb26a26115b 100644
--- a/drivers/usb/misc/ftdi-elan.c
+++ b/drivers/usb/misc/ftdi-elan.c
@@ -758,7 +758,7 @@ static ssize_t ftdi_elan_read(struct file *file, char __user *buffer,
758 return bytes_read; 758 return bytes_read;
759} 759}
760 760
761static void ftdi_elan_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 761static void ftdi_elan_write_bulk_callback(struct urb *urb)
762{ 762{
763 struct usb_ftdi *ftdi = (struct usb_ftdi *)urb->context; 763 struct usb_ftdi *ftdi = (struct usb_ftdi *)urb->context;
764 if (urb->status && !(urb->status == -ENOENT || urb->status == 764 if (urb->status && !(urb->status == -ENOENT || urb->status ==
diff --git a/drivers/usb/misc/ldusb.c b/drivers/usb/misc/ldusb.c
index 10b640339d8d..788a11e6772f 100644
--- a/drivers/usb/misc/ldusb.c
+++ b/drivers/usb/misc/ldusb.c
@@ -212,7 +212,7 @@ static void ld_usb_delete(struct ld_usb *dev)
212/** 212/**
213 * ld_usb_interrupt_in_callback 213 * ld_usb_interrupt_in_callback
214 */ 214 */
215static void ld_usb_interrupt_in_callback(struct urb *urb, struct pt_regs *regs) 215static void ld_usb_interrupt_in_callback(struct urb *urb)
216{ 216{
217 struct ld_usb *dev = urb->context; 217 struct ld_usb *dev = urb->context;
218 size_t *actual_buffer; 218 size_t *actual_buffer;
@@ -264,7 +264,7 @@ exit:
264/** 264/**
265 * ld_usb_interrupt_out_callback 265 * ld_usb_interrupt_out_callback
266 */ 266 */
267static void ld_usb_interrupt_out_callback(struct urb *urb, struct pt_regs *regs) 267static void ld_usb_interrupt_out_callback(struct urb *urb)
268{ 268{
269 struct ld_usb *dev = urb->context; 269 struct ld_usb *dev = urb->context;
270 270
diff --git a/drivers/usb/misc/legousbtower.c b/drivers/usb/misc/legousbtower.c
index 77c36e63c7bf..27089497e717 100644
--- a/drivers/usb/misc/legousbtower.c
+++ b/drivers/usb/misc/legousbtower.c
@@ -248,8 +248,8 @@ static loff_t tower_llseek (struct file *file, loff_t off, int whence);
248 248
249static void tower_abort_transfers (struct lego_usb_tower *dev); 249static void tower_abort_transfers (struct lego_usb_tower *dev);
250static void tower_check_for_read_packet (struct lego_usb_tower *dev); 250static void tower_check_for_read_packet (struct lego_usb_tower *dev);
251static void tower_interrupt_in_callback (struct urb *urb, struct pt_regs *regs); 251static void tower_interrupt_in_callback (struct urb *urb);
252static void tower_interrupt_out_callback (struct urb *urb, struct pt_regs *regs); 252static void tower_interrupt_out_callback (struct urb *urb);
253 253
254static int tower_probe (struct usb_interface *interface, const struct usb_device_id *id); 254static int tower_probe (struct usb_interface *interface, const struct usb_device_id *id);
255static void tower_disconnect (struct usb_interface *interface); 255static void tower_disconnect (struct usb_interface *interface);
@@ -755,7 +755,7 @@ exit:
755/** 755/**
756 * tower_interrupt_in_callback 756 * tower_interrupt_in_callback
757 */ 757 */
758static void tower_interrupt_in_callback (struct urb *urb, struct pt_regs *regs) 758static void tower_interrupt_in_callback (struct urb *urb)
759{ 759{
760 struct lego_usb_tower *dev = (struct lego_usb_tower *)urb->context; 760 struct lego_usb_tower *dev = (struct lego_usb_tower *)urb->context;
761 int retval; 761 int retval;
@@ -811,7 +811,7 @@ exit:
811/** 811/**
812 * tower_interrupt_out_callback 812 * tower_interrupt_out_callback
813 */ 813 */
814static void tower_interrupt_out_callback (struct urb *urb, struct pt_regs *regs) 814static void tower_interrupt_out_callback (struct urb *urb)
815{ 815{
816 struct lego_usb_tower *dev = (struct lego_usb_tower *)urb->context; 816 struct lego_usb_tower *dev = (struct lego_usb_tower *)urb->context;
817 817
diff --git a/drivers/usb/misc/phidgetkit.c b/drivers/usb/misc/phidgetkit.c
index 78e419904abf..abb4dcd811ac 100644
--- a/drivers/usb/misc/phidgetkit.c
+++ b/drivers/usb/misc/phidgetkit.c
@@ -300,7 +300,7 @@ out:
300 300
301static DEVICE_ATTR(lcd, S_IWUGO, NULL, enable_lcd_files); 301static DEVICE_ATTR(lcd, S_IWUGO, NULL, enable_lcd_files);
302 302
303static void interfacekit_irq(struct urb *urb, struct pt_regs *regs) 303static void interfacekit_irq(struct urb *urb)
304{ 304{
305 struct interfacekit *kit = urb->context; 305 struct interfacekit *kit = urb->context;
306 unsigned char *buffer = kit->data; 306 unsigned char *buffer = kit->data;
diff --git a/drivers/usb/misc/phidgetmotorcontrol.c b/drivers/usb/misc/phidgetmotorcontrol.c
index 6b59b620d616..5c780cab92e0 100644
--- a/drivers/usb/misc/phidgetmotorcontrol.c
+++ b/drivers/usb/misc/phidgetmotorcontrol.c
@@ -90,7 +90,7 @@ static int set_motor(struct motorcontrol *mc, int motor)
90 return retval < 0 ? retval : 0; 90 return retval < 0 ? retval : 0;
91} 91}
92 92
93static void motorcontrol_irq(struct urb *urb, struct pt_regs *regs) 93static void motorcontrol_irq(struct urb *urb)
94{ 94{
95 struct motorcontrol *mc = urb->context; 95 struct motorcontrol *mc = urb->context;
96 unsigned char *buffer = mc->data; 96 unsigned char *buffer = mc->data;
diff --git a/drivers/usb/misc/sisusbvga/sisusb.c b/drivers/usb/misc/sisusbvga/sisusb.c
index a287836e39f1..b99ca9c79821 100644
--- a/drivers/usb/misc/sisusbvga/sisusb.c
+++ b/drivers/usb/misc/sisusbvga/sisusb.c
@@ -209,7 +209,7 @@ sisusb_free_outbuf(struct sisusb_usb_data *sisusb, int index)
209/* completion callback */ 209/* completion callback */
210 210
211static void 211static void
212sisusb_bulk_completeout(struct urb *urb, struct pt_regs *regs) 212sisusb_bulk_completeout(struct urb *urb)
213{ 213{
214 struct sisusb_urb_context *context = urb->context; 214 struct sisusb_urb_context *context = urb->context;
215 struct sisusb_usb_data *sisusb; 215 struct sisusb_usb_data *sisusb;
@@ -288,7 +288,7 @@ sisusb_bulkout_msg(struct sisusb_usb_data *sisusb, int index, unsigned int pipe,
288/* completion callback */ 288/* completion callback */
289 289
290static void 290static void
291sisusb_bulk_completein(struct urb *urb, struct pt_regs *regs) 291sisusb_bulk_completein(struct urb *urb)
292{ 292{
293 struct sisusb_usb_data *sisusb = urb->context; 293 struct sisusb_usb_data *sisusb = urb->context;
294 294
diff --git a/drivers/usb/misc/usblcd.c b/drivers/usb/misc/usblcd.c
index dbaca9f1efad..ada2ebc464ae 100644
--- a/drivers/usb/misc/usblcd.c
+++ b/drivers/usb/misc/usblcd.c
@@ -165,7 +165,7 @@ static int lcd_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
165 return 0; 165 return 0;
166} 166}
167 167
168static void lcd_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 168static void lcd_write_bulk_callback(struct urb *urb)
169{ 169{
170 struct usb_lcd *dev; 170 struct usb_lcd *dev;
171 171
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c
index 983e104dd452..7c2cbdf81d20 100644
--- a/drivers/usb/misc/usbtest.c
+++ b/drivers/usb/misc/usbtest.c
@@ -198,7 +198,7 @@ found:
198 * them with non-zero test data (or test for it) when appropriate. 198 * them with non-zero test data (or test for it) when appropriate.
199 */ 199 */
200 200
201static void simple_callback (struct urb *urb, struct pt_regs *regs) 201static void simple_callback (struct urb *urb)
202{ 202{
203 complete ((struct completion *) urb->context); 203 complete ((struct completion *) urb->context);
204} 204}
@@ -730,7 +730,7 @@ struct subcase {
730 int expected; 730 int expected;
731}; 731};
732 732
733static void ctrl_complete (struct urb *urb, struct pt_regs *regs) 733static void ctrl_complete (struct urb *urb)
734{ 734{
735 struct ctrl_ctx *ctx = urb->context; 735 struct ctrl_ctx *ctx = urb->context;
736 struct usb_ctrlrequest *reqp; 736 struct usb_ctrlrequest *reqp;
@@ -1035,7 +1035,7 @@ cleanup:
1035 1035
1036/*-------------------------------------------------------------------------*/ 1036/*-------------------------------------------------------------------------*/
1037 1037
1038static void unlink1_callback (struct urb *urb, struct pt_regs *regs) 1038static void unlink1_callback (struct urb *urb)
1039{ 1039{
1040 int status = urb->status; 1040 int status = urb->status;
1041 1041
@@ -1343,7 +1343,7 @@ struct iso_context {
1343 struct usbtest_dev *dev; 1343 struct usbtest_dev *dev;
1344}; 1344};
1345 1345
1346static void iso_callback (struct urb *urb, struct pt_regs *regs) 1346static void iso_callback (struct urb *urb)
1347{ 1347{
1348 struct iso_context *ctx = urb->context; 1348 struct iso_context *ctx = urb->context;
1349 1349
diff --git a/drivers/usb/misc/uss720.c b/drivers/usb/misc/uss720.c
index 4081990b7d1a..7e8a0acd52ee 100644
--- a/drivers/usb/misc/uss720.c
+++ b/drivers/usb/misc/uss720.c
@@ -106,7 +106,7 @@ static void destroy_async(struct kref *kref)
106 106
107/* --------------------------------------------------------------------- */ 107/* --------------------------------------------------------------------- */
108 108
109static void async_complete(struct urb *urb, struct pt_regs *ptregs) 109static void async_complete(struct urb *urb)
110{ 110{
111 struct uss720_async_request *rq; 111 struct uss720_async_request *rq;
112 struct parport *pp; 112 struct parport *pp;
@@ -127,7 +127,7 @@ static void async_complete(struct urb *urb, struct pt_regs *ptregs)
127#endif 127#endif
128 /* if nAck interrupts are enabled and we have an interrupt, call the interrupt procedure */ 128 /* if nAck interrupts are enabled and we have an interrupt, call the interrupt procedure */
129 if (rq->reg[2] & rq->reg[1] & 0x10 && pp) 129 if (rq->reg[2] & rq->reg[1] & 0x10 && pp)
130 parport_generic_irq(0, pp, NULL); 130 parport_generic_irq(0, pp);
131 } 131 }
132 complete(&rq->compl); 132 complete(&rq->compl);
133 kref_put(&rq->ref_count, destroy_async); 133 kref_put(&rq->ref_count, destroy_async);
diff --git a/drivers/usb/net/asix.c b/drivers/usb/net/asix.c
index 9c0eacf7055c..c73dd224aa76 100644
--- a/drivers/usb/net/asix.c
+++ b/drivers/usb/net/asix.c
@@ -214,7 +214,7 @@ static int asix_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
214 USB_CTRL_SET_TIMEOUT); 214 USB_CTRL_SET_TIMEOUT);
215} 215}
216 216
217static void asix_async_cmd_callback(struct urb *urb, struct pt_regs *regs) 217static void asix_async_cmd_callback(struct urb *urb)
218{ 218{
219 struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context; 219 struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context;
220 220
diff --git a/drivers/usb/net/catc.c b/drivers/usb/net/catc.c
index be5f5e142dd0..f740325abac4 100644
--- a/drivers/usb/net/catc.c
+++ b/drivers/usb/net/catc.c
@@ -223,7 +223,7 @@ struct catc {
223 * Receive routines. 223 * Receive routines.
224 */ 224 */
225 225
226static void catc_rx_done(struct urb *urb, struct pt_regs *regs) 226static void catc_rx_done(struct urb *urb)
227{ 227{
228 struct catc *catc = urb->context; 228 struct catc *catc = urb->context;
229 u8 *pkt_start = urb->transfer_buffer; 229 u8 *pkt_start = urb->transfer_buffer;
@@ -289,7 +289,7 @@ static void catc_rx_done(struct urb *urb, struct pt_regs *regs)
289 } 289 }
290} 290}
291 291
292static void catc_irq_done(struct urb *urb, struct pt_regs *regs) 292static void catc_irq_done(struct urb *urb)
293{ 293{
294 struct catc *catc = urb->context; 294 struct catc *catc = urb->context;
295 u8 *data = urb->transfer_buffer; 295 u8 *data = urb->transfer_buffer;
@@ -376,7 +376,7 @@ static void catc_tx_run(struct catc *catc)
376 catc->netdev->trans_start = jiffies; 376 catc->netdev->trans_start = jiffies;
377} 377}
378 378
379static void catc_tx_done(struct urb *urb, struct pt_regs *regs) 379static void catc_tx_done(struct urb *urb)
380{ 380{
381 struct catc *catc = urb->context; 381 struct catc *catc = urb->context;
382 unsigned long flags; 382 unsigned long flags;
@@ -486,7 +486,7 @@ static void catc_ctrl_run(struct catc *catc)
486 err("submit(ctrl_urb) status %d", status); 486 err("submit(ctrl_urb) status %d", status);
487} 487}
488 488
489static void catc_ctrl_done(struct urb *urb, struct pt_regs *regs) 489static void catc_ctrl_done(struct urb *urb)
490{ 490{
491 struct catc *catc = urb->context; 491 struct catc *catc = urb->context;
492 struct ctrl_queue *q; 492 struct ctrl_queue *q;
diff --git a/drivers/usb/net/gl620a.c b/drivers/usb/net/gl620a.c
index 3155f25f1d48..a3242be21959 100644
--- a/drivers/usb/net/gl620a.c
+++ b/drivers/usb/net/gl620a.c
@@ -106,7 +106,7 @@ static inline int gl_control_write(struct usbnet *dev, u8 request, u16 value)
106 return retval; 106 return retval;
107} 107}
108 108
109static void gl_interrupt_complete(struct urb *urb, struct pt_regs *regs) 109static void gl_interrupt_complete(struct urb *urb)
110{ 110{
111 int status = urb->status; 111 int status = urb->status;
112 112
diff --git a/drivers/usb/net/kaweth.c b/drivers/usb/net/kaweth.c
index 544d41fe9b92..957d4ad316f9 100644
--- a/drivers/usb/net/kaweth.c
+++ b/drivers/usb/net/kaweth.c
@@ -475,7 +475,7 @@ static int kaweth_reset(struct kaweth_device *kaweth)
475 return result; 475 return result;
476} 476}
477 477
478static void kaweth_usb_receive(struct urb *, struct pt_regs *regs); 478static void kaweth_usb_receive(struct urb *);
479static int kaweth_resubmit_rx_urb(struct kaweth_device *, gfp_t); 479static int kaweth_resubmit_rx_urb(struct kaweth_device *, gfp_t);
480 480
481/**************************************************************** 481/****************************************************************
@@ -500,7 +500,7 @@ static void kaweth_resubmit_int_urb(struct kaweth_device *kaweth, gfp_t mf)
500 kaweth->dev->devpath, status); 500 kaweth->dev->devpath, status);
501} 501}
502 502
503static void int_callback(struct urb *u, struct pt_regs *regs) 503static void int_callback(struct urb *u)
504{ 504{
505 struct kaweth_device *kaweth = u->context; 505 struct kaweth_device *kaweth = u->context;
506 int act_state; 506 int act_state;
@@ -581,7 +581,7 @@ static void kaweth_async_set_rx_mode(struct kaweth_device *kaweth);
581/**************************************************************** 581/****************************************************************
582 * kaweth_usb_receive 582 * kaweth_usb_receive
583 ****************************************************************/ 583 ****************************************************************/
584static void kaweth_usb_receive(struct urb *urb, struct pt_regs *regs) 584static void kaweth_usb_receive(struct urb *urb)
585{ 585{
586 struct kaweth_device *kaweth = urb->context; 586 struct kaweth_device *kaweth = urb->context;
587 struct net_device *net = kaweth->net; 587 struct net_device *net = kaweth->net;
@@ -725,7 +725,7 @@ static struct ethtool_ops ops = {
725/**************************************************************** 725/****************************************************************
726 * kaweth_usb_transmit_complete 726 * kaweth_usb_transmit_complete
727 ****************************************************************/ 727 ****************************************************************/
728static void kaweth_usb_transmit_complete(struct urb *urb, struct pt_regs *regs) 728static void kaweth_usb_transmit_complete(struct urb *urb)
729{ 729{
730 struct kaweth_device *kaweth = urb->context; 730 struct kaweth_device *kaweth = urb->context;
731 struct sk_buff *skb = kaweth->tx_skb; 731 struct sk_buff *skb = kaweth->tx_skb;
@@ -1154,7 +1154,7 @@ struct usb_api_data {
1154/*-------------------------------------------------------------------* 1154/*-------------------------------------------------------------------*
1155 * completion handler for compatibility wrappers (sync control/bulk) * 1155 * completion handler for compatibility wrappers (sync control/bulk) *
1156 *-------------------------------------------------------------------*/ 1156 *-------------------------------------------------------------------*/
1157static void usb_api_blocking_completion(struct urb *urb, struct pt_regs *regs) 1157static void usb_api_blocking_completion(struct urb *urb)
1158{ 1158{
1159 struct usb_api_data *awd = (struct usb_api_data *)urb->context; 1159 struct usb_api_data *awd = (struct usb_api_data *)urb->context;
1160 1160
diff --git a/drivers/usb/net/net1080.c b/drivers/usb/net/net1080.c
index 301baa72bac7..ce00de8f13a1 100644
--- a/drivers/usb/net/net1080.c
+++ b/drivers/usb/net/net1080.c
@@ -368,7 +368,7 @@ static int net1080_check_connect(struct usbnet *dev)
368 return 0; 368 return 0;
369} 369}
370 370
371static void nc_flush_complete(struct urb *urb, struct pt_regs *regs) 371static void nc_flush_complete(struct urb *urb)
372{ 372{
373 kfree(urb->context); 373 kfree(urb->context);
374 usb_free_urb(urb); 374 usb_free_urb(urb);
diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c
index 918cf5a77c08..33abbd2176b6 100644
--- a/drivers/usb/net/pegasus.c
+++ b/drivers/usb/net/pegasus.c
@@ -96,7 +96,7 @@ MODULE_DEVICE_TABLE(usb, pegasus_ids);
96 96
97static int update_eth_regs_async(pegasus_t *); 97static int update_eth_regs_async(pegasus_t *);
98/* Aargh!!! I _really_ hate such tweaks */ 98/* Aargh!!! I _really_ hate such tweaks */
99static void ctrl_callback(struct urb *urb, struct pt_regs *regs) 99static void ctrl_callback(struct urb *urb)
100{ 100{
101 pegasus_t *pegasus = urb->context; 101 pegasus_t *pegasus = urb->context;
102 102
@@ -605,7 +605,7 @@ static inline struct sk_buff *pull_skb(pegasus_t * pegasus)
605 return NULL; 605 return NULL;
606} 606}
607 607
608static void read_bulk_callback(struct urb *urb, struct pt_regs *regs) 608static void read_bulk_callback(struct urb *urb)
609{ 609{
610 pegasus_t *pegasus = urb->context; 610 pegasus_t *pegasus = urb->context;
611 struct net_device *net; 611 struct net_device *net;
@@ -764,7 +764,7 @@ done:
764 spin_unlock_irqrestore(&pegasus->rx_pool_lock, flags); 764 spin_unlock_irqrestore(&pegasus->rx_pool_lock, flags);
765} 765}
766 766
767static void write_bulk_callback(struct urb *urb, struct pt_regs *regs) 767static void write_bulk_callback(struct urb *urb)
768{ 768{
769 pegasus_t *pegasus = urb->context; 769 pegasus_t *pegasus = urb->context;
770 struct net_device *net = pegasus->net; 770 struct net_device *net = pegasus->net;
@@ -801,7 +801,7 @@ static void write_bulk_callback(struct urb *urb, struct pt_regs *regs)
801 netif_wake_queue(net); 801 netif_wake_queue(net);
802} 802}
803 803
804static void intr_callback(struct urb *urb, struct pt_regs *regs) 804static void intr_callback(struct urb *urb)
805{ 805{
806 pegasus_t *pegasus = urb->context; 806 pegasus_t *pegasus = urb->context;
807 struct net_device *net; 807 struct net_device *net;
@@ -1226,7 +1226,7 @@ static void pegasus_set_multicast(struct net_device *net)
1226 } 1226 }
1227 1227
1228 pegasus->flags |= ETH_REGS_CHANGE; 1228 pegasus->flags |= ETH_REGS_CHANGE;
1229 ctrl_callback(pegasus->ctrl_urb, NULL); 1229 ctrl_callback(pegasus->ctrl_urb);
1230} 1230}
1231 1231
1232static __u8 mii_phy_probe(pegasus_t * pegasus) 1232static __u8 mii_phy_probe(pegasus_t * pegasus)
@@ -1433,11 +1433,11 @@ static int pegasus_resume (struct usb_interface *intf)
1433 if (netif_running(pegasus->net)) { 1433 if (netif_running(pegasus->net)) {
1434 pegasus->rx_urb->status = 0; 1434 pegasus->rx_urb->status = 0;
1435 pegasus->rx_urb->actual_length = 0; 1435 pegasus->rx_urb->actual_length = 0;
1436 read_bulk_callback(pegasus->rx_urb, NULL); 1436 read_bulk_callback(pegasus->rx_urb);
1437 1437
1438 pegasus->intr_urb->status = 0; 1438 pegasus->intr_urb->status = 0;
1439 pegasus->intr_urb->actual_length = 0; 1439 pegasus->intr_urb->actual_length = 0;
1440 intr_callback(pegasus->intr_urb, NULL); 1440 intr_callback(pegasus->intr_urb);
1441 } 1441 }
1442 queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check, 1442 queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check,
1443 CARRIER_CHECK_DELAY); 1443 CARRIER_CHECK_DELAY);
diff --git a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c
index 2364c2099387..72171f94ded4 100644
--- a/drivers/usb/net/rtl8150.c
+++ b/drivers/usb/net/rtl8150.c
@@ -208,7 +208,7 @@ static int set_registers(rtl8150_t * dev, u16 indx, u16 size, void *data)
208 indx, 0, data, size, 500); 208 indx, 0, data, size, 500);
209} 209}
210 210
211static void ctrl_callback(struct urb *urb, struct pt_regs *regs) 211static void ctrl_callback(struct urb *urb)
212{ 212{
213 rtl8150_t *dev; 213 rtl8150_t *dev;
214 214
@@ -415,7 +415,7 @@ static inline struct sk_buff *pull_skb(rtl8150_t *dev)
415 return NULL; 415 return NULL;
416} 416}
417 417
418static void read_bulk_callback(struct urb *urb, struct pt_regs *regs) 418static void read_bulk_callback(struct urb *urb)
419{ 419{
420 rtl8150_t *dev; 420 rtl8150_t *dev;
421 unsigned pkt_len, res; 421 unsigned pkt_len, res;
@@ -525,7 +525,7 @@ tlsched:
525 tasklet_schedule(&dev->tl); 525 tasklet_schedule(&dev->tl);
526} 526}
527 527
528static void write_bulk_callback(struct urb *urb, struct pt_regs *regs) 528static void write_bulk_callback(struct urb *urb)
529{ 529{
530 rtl8150_t *dev; 530 rtl8150_t *dev;
531 531
@@ -541,7 +541,7 @@ static void write_bulk_callback(struct urb *urb, struct pt_regs *regs)
541 netif_wake_queue(dev->netdev); 541 netif_wake_queue(dev->netdev);
542} 542}
543 543
544static void intr_callback(struct urb *urb, struct pt_regs *regs) 544static void intr_callback(struct urb *urb)
545{ 545{
546 rtl8150_t *dev; 546 rtl8150_t *dev;
547 __u8 *d; 547 __u8 *d;
@@ -617,11 +617,11 @@ static int rtl8150_resume(struct usb_interface *intf)
617 if (netif_running(dev->netdev)) { 617 if (netif_running(dev->netdev)) {
618 dev->rx_urb->status = 0; 618 dev->rx_urb->status = 0;
619 dev->rx_urb->actual_length = 0; 619 dev->rx_urb->actual_length = 0;
620 read_bulk_callback(dev->rx_urb, NULL); 620 read_bulk_callback(dev->rx_urb);
621 621
622 dev->intr_urb->status = 0; 622 dev->intr_urb->status = 0;
623 dev->intr_urb->actual_length = 0; 623 dev->intr_urb->actual_length = 0;
624 intr_callback(dev->intr_urb, NULL); 624 intr_callback(dev->intr_urb);
625 } 625 }
626 return 0; 626 return 0;
627} 627}
diff --git a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c
index 98a522f1e264..24bd3486ee63 100644
--- a/drivers/usb/net/usbnet.c
+++ b/drivers/usb/net/usbnet.c
@@ -158,7 +158,7 @@ int usbnet_get_endpoints(struct usbnet *dev, struct usb_interface *intf)
158} 158}
159EXPORT_SYMBOL_GPL(usbnet_get_endpoints); 159EXPORT_SYMBOL_GPL(usbnet_get_endpoints);
160 160
161static void intr_complete (struct urb *urb, struct pt_regs *regs); 161static void intr_complete (struct urb *urb);
162 162
163static int init_status (struct usbnet *dev, struct usb_interface *intf) 163static int init_status (struct usbnet *dev, struct usb_interface *intf)
164{ 164{
@@ -295,7 +295,7 @@ EXPORT_SYMBOL_GPL(usbnet_defer_kevent);
295 295
296/*-------------------------------------------------------------------------*/ 296/*-------------------------------------------------------------------------*/
297 297
298static void rx_complete (struct urb *urb, struct pt_regs *regs); 298static void rx_complete (struct urb *urb);
299 299
300static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags) 300static void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
301{ 301{
@@ -383,7 +383,7 @@ error:
383 383
384/*-------------------------------------------------------------------------*/ 384/*-------------------------------------------------------------------------*/
385 385
386static void rx_complete (struct urb *urb, struct pt_regs *regs) 386static void rx_complete (struct urb *urb)
387{ 387{
388 struct sk_buff *skb = (struct sk_buff *) urb->context; 388 struct sk_buff *skb = (struct sk_buff *) urb->context;
389 struct skb_data *entry = (struct skb_data *) skb->cb; 389 struct skb_data *entry = (struct skb_data *) skb->cb;
@@ -467,7 +467,7 @@ block:
467 devdbg (dev, "no read resubmitted"); 467 devdbg (dev, "no read resubmitted");
468} 468}
469 469
470static void intr_complete (struct urb *urb, struct pt_regs *regs) 470static void intr_complete (struct urb *urb)
471{ 471{
472 struct usbnet *dev = urb->context; 472 struct usbnet *dev = urb->context;
473 int status = urb->status; 473 int status = urb->status;
@@ -797,7 +797,7 @@ kevent (void *data)
797 797
798/*-------------------------------------------------------------------------*/ 798/*-------------------------------------------------------------------------*/
799 799
800static void tx_complete (struct urb *urb, struct pt_regs *regs) 800static void tx_complete (struct urb *urb)
801{ 801{
802 struct sk_buff *skb = (struct sk_buff *) urb->context; 802 struct sk_buff *skb = (struct sk_buff *) urb->context;
803 struct skb_data *entry = (struct skb_data *) skb->cb; 803 struct skb_data *entry = (struct skb_data *) skb->cb;
diff --git a/drivers/usb/serial/aircable.c b/drivers/usb/serial/aircable.c
index 2ccd9ded52a5..812275509137 100644
--- a/drivers/usb/serial/aircable.c
+++ b/drivers/usb/serial/aircable.c
@@ -403,7 +403,7 @@ static int aircable_write(struct usb_serial_port *port,
403 403
404} 404}
405 405
406static void aircable_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 406static void aircable_write_bulk_callback(struct urb *urb)
407{ 407{
408 struct usb_serial_port *port = urb->context; 408 struct usb_serial_port *port = urb->context;
409 int result; 409 int result;
@@ -444,7 +444,7 @@ static void aircable_write_bulk_callback(struct urb *urb, struct pt_regs *regs)
444 aircable_send(port); 444 aircable_send(port);
445} 445}
446 446
447static void aircable_read_bulk_callback(struct urb *urb, struct pt_regs *regs) 447static void aircable_read_bulk_callback(struct urb *urb)
448{ 448{
449 struct usb_serial_port *port = urb->context; 449 struct usb_serial_port *port = urb->context;
450 struct aircable_private *priv = usb_get_serial_port_data(port); 450 struct aircable_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/airprime.c b/drivers/usb/serial/airprime.c
index 6e1a84a858d4..2c19f19b255c 100644
--- a/drivers/usb/serial/airprime.c
+++ b/drivers/usb/serial/airprime.c
@@ -46,7 +46,7 @@ struct airprime_private {
46 struct urb *read_urbp[NUM_READ_URBS]; 46 struct urb *read_urbp[NUM_READ_URBS];
47}; 47};
48 48
49static void airprime_read_bulk_callback(struct urb *urb, struct pt_regs *regs) 49static void airprime_read_bulk_callback(struct urb *urb)
50{ 50{
51 struct usb_serial_port *port = urb->context; 51 struct usb_serial_port *port = urb->context;
52 unsigned char *data = urb->transfer_buffer; 52 unsigned char *data = urb->transfer_buffer;
@@ -80,7 +80,7 @@ static void airprime_read_bulk_callback(struct urb *urb, struct pt_regs *regs)
80 return; 80 return;
81} 81}
82 82
83static void airprime_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 83static void airprime_write_bulk_callback(struct urb *urb)
84{ 84{
85 struct usb_serial_port *port = urb->context; 85 struct usb_serial_port *port = urb->context;
86 struct airprime_private *priv = usb_get_serial_port_data(port); 86 struct airprime_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c
index 70ece9e01ce4..8835bb58ca9b 100644
--- a/drivers/usb/serial/belkin_sa.c
+++ b/drivers/usb/serial/belkin_sa.c
@@ -91,7 +91,7 @@ static int belkin_sa_startup (struct usb_serial *serial);
91static void belkin_sa_shutdown (struct usb_serial *serial); 91static void belkin_sa_shutdown (struct usb_serial *serial);
92static int belkin_sa_open (struct usb_serial_port *port, struct file *filp); 92static int belkin_sa_open (struct usb_serial_port *port, struct file *filp);
93static void belkin_sa_close (struct usb_serial_port *port, struct file *filp); 93static void belkin_sa_close (struct usb_serial_port *port, struct file *filp);
94static void belkin_sa_read_int_callback (struct urb *urb, struct pt_regs *regs); 94static void belkin_sa_read_int_callback (struct urb *urb);
95static void belkin_sa_set_termios (struct usb_serial_port *port, struct termios * old); 95static void belkin_sa_set_termios (struct usb_serial_port *port, struct termios * old);
96static int belkin_sa_ioctl (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg); 96static int belkin_sa_ioctl (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg);
97static void belkin_sa_break_ctl (struct usb_serial_port *port, int break_state ); 97static void belkin_sa_break_ctl (struct usb_serial_port *port, int break_state );
@@ -248,7 +248,7 @@ static void belkin_sa_close (struct usb_serial_port *port, struct file *filp)
248} /* belkin_sa_close */ 248} /* belkin_sa_close */
249 249
250 250
251static void belkin_sa_read_int_callback (struct urb *urb, struct pt_regs *regs) 251static void belkin_sa_read_int_callback (struct urb *urb)
252{ 252{
253 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 253 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
254 struct belkin_sa_private *priv; 254 struct belkin_sa_private *priv;
diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c
index d954ec34b018..a63c3286caa0 100644
--- a/drivers/usb/serial/cyberjack.c
+++ b/drivers/usb/serial/cyberjack.c
@@ -63,9 +63,9 @@ static int cyberjack_open (struct usb_serial_port *port, struct file *filp);
63static void cyberjack_close (struct usb_serial_port *port, struct file *filp); 63static void cyberjack_close (struct usb_serial_port *port, struct file *filp);
64static int cyberjack_write (struct usb_serial_port *port, const unsigned char *buf, int count); 64static int cyberjack_write (struct usb_serial_port *port, const unsigned char *buf, int count);
65static int cyberjack_write_room( struct usb_serial_port *port ); 65static int cyberjack_write_room( struct usb_serial_port *port );
66static void cyberjack_read_int_callback (struct urb *urb, struct pt_regs *regs); 66static void cyberjack_read_int_callback (struct urb *urb);
67static void cyberjack_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 67static void cyberjack_read_bulk_callback (struct urb *urb);
68static void cyberjack_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 68static void cyberjack_write_bulk_callback (struct urb *urb);
69 69
70static struct usb_device_id id_table [] = { 70static struct usb_device_id id_table [] = {
71 { USB_DEVICE(CYBERJACK_VENDOR_ID, CYBERJACK_PRODUCT_ID) }, 71 { USB_DEVICE(CYBERJACK_VENDOR_ID, CYBERJACK_PRODUCT_ID) },
@@ -299,7 +299,7 @@ static int cyberjack_write_room( struct usb_serial_port *port )
299 return CYBERJACK_LOCAL_BUF_SIZE; 299 return CYBERJACK_LOCAL_BUF_SIZE;
300} 300}
301 301
302static void cyberjack_read_int_callback( struct urb *urb, struct pt_regs *regs ) 302static void cyberjack_read_int_callback( struct urb *urb )
303{ 303{
304 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 304 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
305 struct cyberjack_private *priv = usb_get_serial_port_data(port); 305 struct cyberjack_private *priv = usb_get_serial_port_data(port);
@@ -356,7 +356,7 @@ resubmit:
356 dbg("%s - usb_submit_urb(int urb)", __FUNCTION__); 356 dbg("%s - usb_submit_urb(int urb)", __FUNCTION__);
357} 357}
358 358
359static void cyberjack_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 359static void cyberjack_read_bulk_callback (struct urb *urb)
360{ 360{
361 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 361 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
362 struct cyberjack_private *priv = usb_get_serial_port_data(port); 362 struct cyberjack_private *priv = usb_get_serial_port_data(port);
@@ -406,7 +406,7 @@ static void cyberjack_read_bulk_callback (struct urb *urb, struct pt_regs *regs)
406 } 406 }
407} 407}
408 408
409static void cyberjack_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 409static void cyberjack_write_bulk_callback (struct urb *urb)
410{ 410{
411 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 411 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
412 struct cyberjack_private *priv = usb_get_serial_port_data(port); 412 struct cyberjack_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c
index e1173c1aee37..f2e89a083659 100644
--- a/drivers/usb/serial/cypress_m8.c
+++ b/drivers/usb/serial/cypress_m8.c
@@ -172,8 +172,8 @@ static int cypress_chars_in_buffer (struct usb_serial_port *port);
172static void cypress_throttle (struct usb_serial_port *port); 172static void cypress_throttle (struct usb_serial_port *port);
173static void cypress_unthrottle (struct usb_serial_port *port); 173static void cypress_unthrottle (struct usb_serial_port *port);
174static void cypress_set_dead (struct usb_serial_port *port); 174static void cypress_set_dead (struct usb_serial_port *port);
175static void cypress_read_int_callback (struct urb *urb, struct pt_regs *regs); 175static void cypress_read_int_callback (struct urb *urb);
176static void cypress_write_int_callback (struct urb *urb, struct pt_regs *regs); 176static void cypress_write_int_callback (struct urb *urb);
177/* baud helper functions */ 177/* baud helper functions */
178static int mask_to_rate (unsigned mask); 178static int mask_to_rate (unsigned mask);
179static unsigned rate_to_mask (int rate); 179static unsigned rate_to_mask (int rate);
@@ -1275,7 +1275,7 @@ static void cypress_unthrottle (struct usb_serial_port *port)
1275} 1275}
1276 1276
1277 1277
1278static void cypress_read_int_callback(struct urb *urb, struct pt_regs *regs) 1278static void cypress_read_int_callback(struct urb *urb)
1279{ 1279{
1280 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1280 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
1281 struct cypress_private *priv = usb_get_serial_port_data(port); 1281 struct cypress_private *priv = usb_get_serial_port_data(port);
@@ -1426,7 +1426,7 @@ continue_read:
1426} /* cypress_read_int_callback */ 1426} /* cypress_read_int_callback */
1427 1427
1428 1428
1429static void cypress_write_int_callback(struct urb *urb, struct pt_regs *regs) 1429static void cypress_write_int_callback(struct urb *urb)
1430{ 1430{
1431 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1431 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
1432 struct cypress_private *priv = usb_get_serial_port_data(port); 1432 struct cypress_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c
index 9b225183fc7a..bdb58100fc1d 100644
--- a/drivers/usb/serial/digi_acceleport.c
+++ b/drivers/usb/serial/digi_acceleport.c
@@ -456,7 +456,7 @@ static int digi_tiocmget( struct usb_serial_port *port, struct file *file );
456static int digi_tiocmset( struct usb_serial_port *port, struct file *file, 456static int digi_tiocmset( struct usb_serial_port *port, struct file *file,
457 unsigned int set, unsigned int clear ); 457 unsigned int set, unsigned int clear );
458static int digi_write( struct usb_serial_port *port, const unsigned char *buf, int count ); 458static int digi_write( struct usb_serial_port *port, const unsigned char *buf, int count );
459static void digi_write_bulk_callback( struct urb *urb, struct pt_regs *regs ); 459static void digi_write_bulk_callback( struct urb *urb );
460static int digi_write_room( struct usb_serial_port *port ); 460static int digi_write_room( struct usb_serial_port *port );
461static int digi_chars_in_buffer( struct usb_serial_port *port ); 461static int digi_chars_in_buffer( struct usb_serial_port *port );
462static int digi_open( struct usb_serial_port *port, struct file *filp ); 462static int digi_open( struct usb_serial_port *port, struct file *filp );
@@ -464,7 +464,7 @@ static void digi_close( struct usb_serial_port *port, struct file *filp );
464static int digi_startup_device( struct usb_serial *serial ); 464static int digi_startup_device( struct usb_serial *serial );
465static int digi_startup( struct usb_serial *serial ); 465static int digi_startup( struct usb_serial *serial );
466static void digi_shutdown( struct usb_serial *serial ); 466static void digi_shutdown( struct usb_serial *serial );
467static void digi_read_bulk_callback( struct urb *urb, struct pt_regs *regs ); 467static void digi_read_bulk_callback( struct urb *urb );
468static int digi_read_inb_callback( struct urb *urb ); 468static int digi_read_inb_callback( struct urb *urb );
469static int digi_read_oob_callback( struct urb *urb ); 469static int digi_read_oob_callback( struct urb *urb );
470 470
@@ -1336,7 +1336,7 @@ dbg( "digi_write: returning %d", ret );
1336} 1336}
1337 1337
1338 1338
1339static void digi_write_bulk_callback( struct urb *urb, struct pt_regs *regs ) 1339static void digi_write_bulk_callback( struct urb *urb )
1340{ 1340{
1341 1341
1342 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1342 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
@@ -1754,7 +1754,7 @@ dbg( "digi_shutdown: TOP, in_interrupt()=%ld", in_interrupt() );
1754} 1754}
1755 1755
1756 1756
1757static void digi_read_bulk_callback( struct urb *urb, struct pt_regs *regs ) 1757static void digi_read_bulk_callback( struct urb *urb )
1758{ 1758{
1759 1759
1760 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1760 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c
index daafe405d86d..4ce10a831953 100644
--- a/drivers/usb/serial/empeg.c
+++ b/drivers/usb/serial/empeg.c
@@ -93,8 +93,8 @@ static int empeg_ioctl (struct usb_serial_port *port,
93 unsigned int cmd, 93 unsigned int cmd,
94 unsigned long arg); 94 unsigned long arg);
95static void empeg_set_termios (struct usb_serial_port *port, struct termios *old_termios); 95static void empeg_set_termios (struct usb_serial_port *port, struct termios *old_termios);
96static void empeg_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 96static void empeg_write_bulk_callback (struct urb *urb);
97static void empeg_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 97static void empeg_read_bulk_callback (struct urb *urb);
98 98
99static struct usb_device_id id_table [] = { 99static struct usb_device_id id_table [] = {
100 { USB_DEVICE(EMPEG_VENDOR_ID, EMPEG_PRODUCT_ID) }, 100 { USB_DEVICE(EMPEG_VENDOR_ID, EMPEG_PRODUCT_ID) },
@@ -323,7 +323,7 @@ static int empeg_chars_in_buffer (struct usb_serial_port *port)
323} 323}
324 324
325 325
326static void empeg_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 326static void empeg_write_bulk_callback (struct urb *urb)
327{ 327{
328 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 328 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
329 329
@@ -338,7 +338,7 @@ static void empeg_write_bulk_callback (struct urb *urb, struct pt_regs *regs)
338} 338}
339 339
340 340
341static void empeg_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 341static void empeg_read_bulk_callback (struct urb *urb)
342{ 342{
343 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 343 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
344 struct tty_struct *tty; 344 struct tty_struct *tty;
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index e774a27c6c98..d3dc1a15ec6c 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -589,8 +589,8 @@ static void ftdi_close (struct usb_serial_port *port, struct file *filp);
589static int ftdi_write (struct usb_serial_port *port, const unsigned char *buf, int count); 589static int ftdi_write (struct usb_serial_port *port, const unsigned char *buf, int count);
590static int ftdi_write_room (struct usb_serial_port *port); 590static int ftdi_write_room (struct usb_serial_port *port);
591static int ftdi_chars_in_buffer (struct usb_serial_port *port); 591static int ftdi_chars_in_buffer (struct usb_serial_port *port);
592static void ftdi_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 592static void ftdi_write_bulk_callback (struct urb *urb);
593static void ftdi_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 593static void ftdi_read_bulk_callback (struct urb *urb);
594static void ftdi_process_read (void *param); 594static void ftdi_process_read (void *param);
595static void ftdi_set_termios (struct usb_serial_port *port, struct termios * old); 595static void ftdi_set_termios (struct usb_serial_port *port, struct termios * old);
596static int ftdi_tiocmget (struct usb_serial_port *port, struct file *file); 596static int ftdi_tiocmget (struct usb_serial_port *port, struct file *file);
@@ -1508,7 +1508,7 @@ static int ftdi_write (struct usb_serial_port *port,
1508 1508
1509/* This function may get called when the device is closed */ 1509/* This function may get called when the device is closed */
1510 1510
1511static void ftdi_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 1511static void ftdi_write_bulk_callback (struct urb *urb)
1512{ 1512{
1513 unsigned long flags; 1513 unsigned long flags;
1514 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1514 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
@@ -1591,7 +1591,7 @@ static int ftdi_chars_in_buffer (struct usb_serial_port *port)
1591 1591
1592 1592
1593 1593
1594static void ftdi_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 1594static void ftdi_read_bulk_callback (struct urb *urb)
1595{ /* ftdi_read_bulk_callback */ 1595{ /* ftdi_read_bulk_callback */
1596 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1596 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
1597 struct tty_struct *tty; 1597 struct tty_struct *tty;
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
index 4b1196a8b09e..4543152a9966 100644
--- a/drivers/usb/serial/garmin_gps.c
+++ b/drivers/usb/serial/garmin_gps.c
@@ -1031,7 +1031,7 @@ static void garmin_close (struct usb_serial_port *port, struct file * filp)
1031} 1031}
1032 1032
1033 1033
1034static void garmin_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 1034static void garmin_write_bulk_callback (struct urb *urb)
1035{ 1035{
1036 unsigned long flags; 1036 unsigned long flags;
1037 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1037 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
@@ -1274,7 +1274,7 @@ static void garmin_read_process(struct garmin_data * garmin_data_p,
1274} 1274}
1275 1275
1276 1276
1277static void garmin_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 1277static void garmin_read_bulk_callback (struct urb *urb)
1278{ 1278{
1279 unsigned long flags; 1279 unsigned long flags;
1280 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1280 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
@@ -1330,7 +1330,7 @@ static void garmin_read_bulk_callback (struct urb *urb, struct pt_regs *regs)
1330} 1330}
1331 1331
1332 1332
1333static void garmin_read_int_callback (struct urb *urb, struct pt_regs *regs) 1333static void garmin_read_int_callback (struct urb *urb)
1334{ 1334{
1335 unsigned long flags; 1335 unsigned long flags;
1336 int status; 1336 int status;
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
index 21cbaa0fb96b..36042937e77f 100644
--- a/drivers/usb/serial/generic.c
+++ b/drivers/usb/serial/generic.c
@@ -248,7 +248,7 @@ int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port)
248 return (chars); 248 return (chars);
249} 249}
250 250
251void usb_serial_generic_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 251void usb_serial_generic_read_bulk_callback (struct urb *urb)
252{ 252{
253 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 253 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
254 struct usb_serial *serial = port->serial; 254 struct usb_serial *serial = port->serial;
@@ -287,7 +287,7 @@ void usb_serial_generic_read_bulk_callback (struct urb *urb, struct pt_regs *reg
287} 287}
288EXPORT_SYMBOL_GPL(usb_serial_generic_read_bulk_callback); 288EXPORT_SYMBOL_GPL(usb_serial_generic_read_bulk_callback);
289 289
290void usb_serial_generic_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 290void usb_serial_generic_write_bulk_callback (struct urb *urb)
291{ 291{
292 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 292 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
293 293
diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
index c49976c3ad52..91bd3014ef1e 100644
--- a/drivers/usb/serial/io_edgeport.c
+++ b/drivers/usb/serial/io_edgeport.c
@@ -216,10 +216,10 @@ static int CmdUrbs = 0; /* Number of outstanding Command Write Urbs */
216/* local function prototypes */ 216/* local function prototypes */
217 217
218/* function prototypes for all URB callbacks */ 218/* function prototypes for all URB callbacks */
219static void edge_interrupt_callback (struct urb *urb, struct pt_regs *regs); 219static void edge_interrupt_callback (struct urb *urb);
220static void edge_bulk_in_callback (struct urb *urb, struct pt_regs *regs); 220static void edge_bulk_in_callback (struct urb *urb);
221static void edge_bulk_out_data_callback (struct urb *urb, struct pt_regs *regs); 221static void edge_bulk_out_data_callback (struct urb *urb);
222static void edge_bulk_out_cmd_callback (struct urb *urb, struct pt_regs *regs); 222static void edge_bulk_out_cmd_callback (struct urb *urb);
223 223
224/* function prototypes for the usbserial callbacks */ 224/* function prototypes for the usbserial callbacks */
225static int edge_open (struct usb_serial_port *port, struct file *filp); 225static int edge_open (struct usb_serial_port *port, struct file *filp);
@@ -534,7 +534,7 @@ static void get_product_info(struct edgeport_serial *edge_serial)
534 * this is the callback function for when we have received data on the 534 * this is the callback function for when we have received data on the
535 * interrupt endpoint. 535 * interrupt endpoint.
536 *****************************************************************************/ 536 *****************************************************************************/
537static void edge_interrupt_callback (struct urb *urb, struct pt_regs *regs) 537static void edge_interrupt_callback (struct urb *urb)
538{ 538{
539 struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context; 539 struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context;
540 struct edgeport_port *edge_port; 540 struct edgeport_port *edge_port;
@@ -631,7 +631,7 @@ exit:
631 * this is the callback function for when we have received data on the 631 * this is the callback function for when we have received data on the
632 * bulk in endpoint. 632 * bulk in endpoint.
633 *****************************************************************************/ 633 *****************************************************************************/
634static void edge_bulk_in_callback (struct urb *urb, struct pt_regs *regs) 634static void edge_bulk_in_callback (struct urb *urb)
635{ 635{
636 struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context; 636 struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context;
637 unsigned char *data = urb->transfer_buffer; 637 unsigned char *data = urb->transfer_buffer;
@@ -687,7 +687,7 @@ static void edge_bulk_in_callback (struct urb *urb, struct pt_regs *regs)
687 * this is the callback function for when we have finished sending serial data 687 * this is the callback function for when we have finished sending serial data
688 * on the bulk out endpoint. 688 * on the bulk out endpoint.
689 *****************************************************************************/ 689 *****************************************************************************/
690static void edge_bulk_out_data_callback (struct urb *urb, struct pt_regs *regs) 690static void edge_bulk_out_data_callback (struct urb *urb)
691{ 691{
692 struct edgeport_port *edge_port = (struct edgeport_port *)urb->context; 692 struct edgeport_port *edge_port = (struct edgeport_port *)urb->context;
693 struct tty_struct *tty; 693 struct tty_struct *tty;
@@ -718,7 +718,7 @@ static void edge_bulk_out_data_callback (struct urb *urb, struct pt_regs *regs)
718 * this is the callback function for when we have finished sending a command 718 * this is the callback function for when we have finished sending a command
719 * on the bulk out endpoint. 719 * on the bulk out endpoint.
720 *****************************************************************************/ 720 *****************************************************************************/
721static void edge_bulk_out_cmd_callback (struct urb *urb, struct pt_regs *regs) 721static void edge_bulk_out_cmd_callback (struct urb *urb)
722{ 722{
723 struct edgeport_port *edge_port = (struct edgeport_port *)urb->context; 723 struct edgeport_port *edge_port = (struct edgeport_port *)urb->context;
724 struct tty_struct *tty; 724 struct tty_struct *tty;
diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
index 17c5b1d2311a..ee0c921e1520 100644
--- a/drivers/usb/serial/io_ti.c
+++ b/drivers/usb/serial/io_ti.c
@@ -1697,7 +1697,7 @@ static void handle_new_lsr (struct edgeport_port *edge_port, int lsr_data, __u8
1697} 1697}
1698 1698
1699 1699
1700static void edge_interrupt_callback (struct urb *urb, struct pt_regs *regs) 1700static void edge_interrupt_callback (struct urb *urb)
1701{ 1701{
1702 struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context; 1702 struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context;
1703 struct usb_serial_port *port; 1703 struct usb_serial_port *port;
@@ -1787,7 +1787,7 @@ exit:
1787 __FUNCTION__, status); 1787 __FUNCTION__, status);
1788} 1788}
1789 1789
1790static void edge_bulk_in_callback (struct urb *urb, struct pt_regs *regs) 1790static void edge_bulk_in_callback (struct urb *urb)
1791{ 1791{
1792 struct edgeport_port *edge_port = (struct edgeport_port *)urb->context; 1792 struct edgeport_port *edge_port = (struct edgeport_port *)urb->context;
1793 unsigned char *data = urb->transfer_buffer; 1793 unsigned char *data = urb->transfer_buffer;
@@ -1879,7 +1879,7 @@ static void edge_tty_recv(struct device *dev, struct tty_struct *tty, unsigned c
1879 tty_flip_buffer_push(tty); 1879 tty_flip_buffer_push(tty);
1880} 1880}
1881 1881
1882static void edge_bulk_out_callback (struct urb *urb, struct pt_regs *regs) 1882static void edge_bulk_out_callback (struct urb *urb)
1883{ 1883{
1884 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1884 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
1885 struct edgeport_port *edge_port = usb_get_serial_port_data(port); 1885 struct edgeport_port *edge_port = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
index cbc725a6c58e..6238aff1e772 100644
--- a/drivers/usb/serial/ipaq.c
+++ b/drivers/usb/serial/ipaq.c
@@ -83,8 +83,8 @@ static int ipaq_write(struct usb_serial_port *port, const unsigned char *buf,
83static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf, 83static int ipaq_write_bulk(struct usb_serial_port *port, const unsigned char *buf,
84 int count); 84 int count);
85static void ipaq_write_gather(struct usb_serial_port *port); 85static void ipaq_write_gather(struct usb_serial_port *port);
86static void ipaq_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 86static void ipaq_read_bulk_callback (struct urb *urb);
87static void ipaq_write_bulk_callback(struct urb *urb, struct pt_regs *regs); 87static void ipaq_write_bulk_callback(struct urb *urb);
88static int ipaq_write_room(struct usb_serial_port *port); 88static int ipaq_write_room(struct usb_serial_port *port);
89static int ipaq_chars_in_buffer(struct usb_serial_port *port); 89static int ipaq_chars_in_buffer(struct usb_serial_port *port);
90static void ipaq_destroy_lists(struct usb_serial_port *port); 90static void ipaq_destroy_lists(struct usb_serial_port *port);
@@ -721,7 +721,7 @@ static void ipaq_close(struct usb_serial_port *port, struct file *filp)
721 /* info ("Bytes In = %d Bytes Out = %d", bytes_in, bytes_out); */ 721 /* info ("Bytes In = %d Bytes Out = %d", bytes_in, bytes_out); */
722} 722}
723 723
724static void ipaq_read_bulk_callback(struct urb *urb, struct pt_regs *regs) 724static void ipaq_read_bulk_callback(struct urb *urb)
725{ 725{
726 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 726 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
727 struct tty_struct *tty; 727 struct tty_struct *tty;
@@ -859,7 +859,7 @@ static void ipaq_write_gather(struct usb_serial_port *port)
859 return; 859 return;
860} 860}
861 861
862static void ipaq_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 862static void ipaq_write_bulk_callback(struct urb *urb)
863{ 863{
864 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 864 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
865 struct ipaq_private *priv = usb_get_serial_port_data(port); 865 struct ipaq_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/ipw.c b/drivers/usb/serial/ipw.c
index 812bc213a963..2a4bb66691ad 100644
--- a/drivers/usb/serial/ipw.c
+++ b/drivers/usb/serial/ipw.c
@@ -161,7 +161,7 @@ static struct usb_driver usb_ipw_driver = {
161 161
162static int debug; 162static int debug;
163 163
164static void ipw_read_bulk_callback(struct urb *urb, struct pt_regs *regs) 164static void ipw_read_bulk_callback(struct urb *urb)
165{ 165{
166 struct usb_serial_port *port = urb->context; 166 struct usb_serial_port *port = urb->context;
167 unsigned char *data = urb->transfer_buffer; 167 unsigned char *data = urb->transfer_buffer;
@@ -367,7 +367,7 @@ static void ipw_close(struct usb_serial_port *port, struct file * filp)
367 usb_kill_urb(port->write_urb); 367 usb_kill_urb(port->write_urb);
368} 368}
369 369
370static void ipw_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 370static void ipw_write_bulk_callback(struct urb *urb)
371{ 371{
372 struct usb_serial_port *port = urb->context; 372 struct usb_serial_port *port = urb->context;
373 373
diff --git a/drivers/usb/serial/ir-usb.c b/drivers/usb/serial/ir-usb.c
index 1b348df388ed..331bf81556fc 100644
--- a/drivers/usb/serial/ir-usb.c
+++ b/drivers/usb/serial/ir-usb.c
@@ -105,8 +105,8 @@ static int ir_startup (struct usb_serial *serial);
105static int ir_open (struct usb_serial_port *port, struct file *filep); 105static int ir_open (struct usb_serial_port *port, struct file *filep);
106static void ir_close (struct usb_serial_port *port, struct file *filep); 106static void ir_close (struct usb_serial_port *port, struct file *filep);
107static int ir_write (struct usb_serial_port *port, const unsigned char *buf, int count); 107static int ir_write (struct usb_serial_port *port, const unsigned char *buf, int count);
108static void ir_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 108static void ir_write_bulk_callback (struct urb *urb);
109static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 109static void ir_read_bulk_callback (struct urb *urb);
110static void ir_set_termios (struct usb_serial_port *port, struct termios *old_termios); 110static void ir_set_termios (struct usb_serial_port *port, struct termios *old_termios);
111 111
112static u8 ir_baud = 0; 112static u8 ir_baud = 0;
@@ -388,7 +388,7 @@ static int ir_write (struct usb_serial_port *port, const unsigned char *buf, int
388 return result; 388 return result;
389} 389}
390 390
391static void ir_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 391static void ir_write_bulk_callback (struct urb *urb)
392{ 392{
393 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 393 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
394 394
@@ -410,7 +410,7 @@ static void ir_write_bulk_callback (struct urb *urb, struct pt_regs *regs)
410 usb_serial_port_softint(port); 410 usb_serial_port_softint(port);
411} 411}
412 412
413static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 413static void ir_read_bulk_callback (struct urb *urb)
414{ 414{
415 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 415 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
416 struct tty_struct *tty; 416 struct tty_struct *tty;
diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
index 015ad6cc1bbb..53be824eb1bf 100644
--- a/drivers/usb/serial/keyspan.c
+++ b/drivers/usb/serial/keyspan.c
@@ -412,7 +412,7 @@ static int keyspan_write(struct usb_serial_port *port,
412 return count - left; 412 return count - left;
413} 413}
414 414
415static void usa26_indat_callback(struct urb *urb, struct pt_regs *regs) 415static void usa26_indat_callback(struct urb *urb)
416{ 416{
417 int i, err; 417 int i, err;
418 int endpoint; 418 int endpoint;
@@ -470,7 +470,7 @@ static void usa26_indat_callback(struct urb *urb, struct pt_regs *regs)
470} 470}
471 471
472 /* Outdat handling is common for all devices */ 472 /* Outdat handling is common for all devices */
473static void usa2x_outdat_callback(struct urb *urb, struct pt_regs *regs) 473static void usa2x_outdat_callback(struct urb *urb)
474{ 474{
475 struct usb_serial_port *port; 475 struct usb_serial_port *port;
476 struct keyspan_port_private *p_priv; 476 struct keyspan_port_private *p_priv;
@@ -483,13 +483,13 @@ static void usa2x_outdat_callback(struct urb *urb, struct pt_regs *regs)
483 usb_serial_port_softint(port); 483 usb_serial_port_softint(port);
484} 484}
485 485
486static void usa26_inack_callback(struct urb *urb, struct pt_regs *regs) 486static void usa26_inack_callback(struct urb *urb)
487{ 487{
488 dbg ("%s", __FUNCTION__); 488 dbg ("%s", __FUNCTION__);
489 489
490} 490}
491 491
492static void usa26_outcont_callback(struct urb *urb, struct pt_regs *regs) 492static void usa26_outcont_callback(struct urb *urb)
493{ 493{
494 struct usb_serial_port *port; 494 struct usb_serial_port *port;
495 struct keyspan_port_private *p_priv; 495 struct keyspan_port_private *p_priv;
@@ -503,7 +503,7 @@ static void usa26_outcont_callback(struct urb *urb, struct pt_regs *regs)
503 } 503 }
504} 504}
505 505
506static void usa26_instat_callback(struct urb *urb, struct pt_regs *regs) 506static void usa26_instat_callback(struct urb *urb)
507{ 507{
508 unsigned char *data = urb->transfer_buffer; 508 unsigned char *data = urb->transfer_buffer;
509 struct keyspan_usa26_portStatusMessage *msg; 509 struct keyspan_usa26_portStatusMessage *msg;
@@ -565,14 +565,14 @@ static void usa26_instat_callback(struct urb *urb, struct pt_regs *regs)
565exit: ; 565exit: ;
566} 566}
567 567
568static void usa26_glocont_callback(struct urb *urb, struct pt_regs *regs) 568static void usa26_glocont_callback(struct urb *urb)
569{ 569{
570 dbg ("%s", __FUNCTION__); 570 dbg ("%s", __FUNCTION__);
571 571
572} 572}
573 573
574 574
575static void usa28_indat_callback(struct urb *urb, struct pt_regs *regs) 575static void usa28_indat_callback(struct urb *urb)
576{ 576{
577 int i, err; 577 int i, err;
578 struct usb_serial_port *port; 578 struct usb_serial_port *port;
@@ -620,12 +620,12 @@ static void usa28_indat_callback(struct urb *urb, struct pt_regs *regs)
620 } while (urb->status != -EINPROGRESS); 620 } while (urb->status != -EINPROGRESS);
621} 621}
622 622
623static void usa28_inack_callback(struct urb *urb, struct pt_regs *regs) 623static void usa28_inack_callback(struct urb *urb)
624{ 624{
625 dbg ("%s", __FUNCTION__); 625 dbg ("%s", __FUNCTION__);
626} 626}
627 627
628static void usa28_outcont_callback(struct urb *urb, struct pt_regs *regs) 628static void usa28_outcont_callback(struct urb *urb)
629{ 629{
630 struct usb_serial_port *port; 630 struct usb_serial_port *port;
631 struct keyspan_port_private *p_priv; 631 struct keyspan_port_private *p_priv;
@@ -639,7 +639,7 @@ static void usa28_outcont_callback(struct urb *urb, struct pt_regs *regs)
639 } 639 }
640} 640}
641 641
642static void usa28_instat_callback(struct urb *urb, struct pt_regs *regs) 642static void usa28_instat_callback(struct urb *urb)
643{ 643{
644 int err; 644 int err;
645 unsigned char *data = urb->transfer_buffer; 645 unsigned char *data = urb->transfer_buffer;
@@ -700,13 +700,13 @@ static void usa28_instat_callback(struct urb *urb, struct pt_regs *regs)
700exit: ; 700exit: ;
701} 701}
702 702
703static void usa28_glocont_callback(struct urb *urb, struct pt_regs *regs) 703static void usa28_glocont_callback(struct urb *urb)
704{ 704{
705 dbg ("%s", __FUNCTION__); 705 dbg ("%s", __FUNCTION__);
706} 706}
707 707
708 708
709static void usa49_glocont_callback(struct urb *urb, struct pt_regs *regs) 709static void usa49_glocont_callback(struct urb *urb)
710{ 710{
711 struct usb_serial *serial; 711 struct usb_serial *serial;
712 struct usb_serial_port *port; 712 struct usb_serial_port *port;
@@ -730,7 +730,7 @@ static void usa49_glocont_callback(struct urb *urb, struct pt_regs *regs)
730 730
731 /* This is actually called glostat in the Keyspan 731 /* This is actually called glostat in the Keyspan
732 doco */ 732 doco */
733static void usa49_instat_callback(struct urb *urb, struct pt_regs *regs) 733static void usa49_instat_callback(struct urb *urb)
734{ 734{
735 int err; 735 int err;
736 unsigned char *data = urb->transfer_buffer; 736 unsigned char *data = urb->transfer_buffer;
@@ -793,12 +793,12 @@ static void usa49_instat_callback(struct urb *urb, struct pt_regs *regs)
793exit: ; 793exit: ;
794} 794}
795 795
796static void usa49_inack_callback(struct urb *urb, struct pt_regs *regs) 796static void usa49_inack_callback(struct urb *urb)
797{ 797{
798 dbg ("%s", __FUNCTION__); 798 dbg ("%s", __FUNCTION__);
799} 799}
800 800
801static void usa49_indat_callback(struct urb *urb, struct pt_regs *regs) 801static void usa49_indat_callback(struct urb *urb)
802{ 802{
803 int i, err; 803 int i, err;
804 int endpoint; 804 int endpoint;
@@ -851,12 +851,12 @@ static void usa49_indat_callback(struct urb *urb, struct pt_regs *regs)
851} 851}
852 852
853/* not used, usa-49 doesn't have per-port control endpoints */ 853/* not used, usa-49 doesn't have per-port control endpoints */
854static void usa49_outcont_callback(struct urb *urb, struct pt_regs *regs) 854static void usa49_outcont_callback(struct urb *urb)
855{ 855{
856 dbg ("%s", __FUNCTION__); 856 dbg ("%s", __FUNCTION__);
857} 857}
858 858
859static void usa90_indat_callback(struct urb *urb, struct pt_regs *regs) 859static void usa90_indat_callback(struct urb *urb)
860{ 860{
861 int i, err; 861 int i, err;
862 int endpoint; 862 int endpoint;
@@ -930,7 +930,7 @@ static void usa90_indat_callback(struct urb *urb, struct pt_regs *regs)
930} 930}
931 931
932 932
933static void usa90_instat_callback(struct urb *urb, struct pt_regs *regs) 933static void usa90_instat_callback(struct urb *urb)
934{ 934{
935 unsigned char *data = urb->transfer_buffer; 935 unsigned char *data = urb->transfer_buffer;
936 struct keyspan_usa90_portStatusMessage *msg; 936 struct keyspan_usa90_portStatusMessage *msg;
@@ -981,7 +981,7 @@ exit:
981 ; 981 ;
982} 982}
983 983
984static void usa90_outcont_callback(struct urb *urb, struct pt_regs *regs) 984static void usa90_outcont_callback(struct urb *urb)
985{ 985{
986 struct usb_serial_port *port; 986 struct usb_serial_port *port;
987 struct keyspan_port_private *p_priv; 987 struct keyspan_port_private *p_priv;
@@ -1277,7 +1277,7 @@ static int keyspan_fake_startup (struct usb_serial *serial)
1277/* Helper functions used by keyspan_setup_urbs */ 1277/* Helper functions used by keyspan_setup_urbs */
1278static struct urb *keyspan_setup_urb (struct usb_serial *serial, int endpoint, 1278static struct urb *keyspan_setup_urb (struct usb_serial *serial, int endpoint,
1279 int dir, void *ctx, char *buf, int len, 1279 int dir, void *ctx, char *buf, int len,
1280 void (*callback)(struct urb *, struct pt_regs *regs)) 1280 void (*callback)(struct urb *))
1281{ 1281{
1282 struct urb *urb; 1282 struct urb *urb;
1283 1283
@@ -1300,12 +1300,12 @@ static struct urb *keyspan_setup_urb (struct usb_serial *serial, int endpoint,
1300} 1300}
1301 1301
1302static struct callbacks { 1302static struct callbacks {
1303 void (*instat_callback)(struct urb *, struct pt_regs *regs); 1303 void (*instat_callback)(struct urb *);
1304 void (*glocont_callback)(struct urb *, struct pt_regs *regs); 1304 void (*glocont_callback)(struct urb *);
1305 void (*indat_callback)(struct urb *, struct pt_regs *regs); 1305 void (*indat_callback)(struct urb *);
1306 void (*outdat_callback)(struct urb *, struct pt_regs *regs); 1306 void (*outdat_callback)(struct urb *);
1307 void (*inack_callback)(struct urb *, struct pt_regs *regs); 1307 void (*inack_callback)(struct urb *);
1308 void (*outcont_callback)(struct urb *, struct pt_regs *regs); 1308 void (*outcont_callback)(struct urb *);
1309} keyspan_callbacks[] = { 1309} keyspan_callbacks[] = {
1310 { 1310 {
1311 /* msg_usa26 callbacks */ 1311 /* msg_usa26 callbacks */
diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c
index 59e777f1e8fd..909005107ea2 100644
--- a/drivers/usb/serial/keyspan_pda.c
+++ b/drivers/usb/serial/keyspan_pda.c
@@ -210,7 +210,7 @@ static void keyspan_pda_request_unthrottle( struct usb_serial *serial )
210} 210}
211 211
212 212
213static void keyspan_pda_rx_interrupt (struct urb *urb, struct pt_regs *regs) 213static void keyspan_pda_rx_interrupt (struct urb *urb)
214{ 214{
215 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 215 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
216 struct tty_struct *tty = port->tty; 216 struct tty_struct *tty = port->tty;
@@ -601,7 +601,7 @@ exit:
601} 601}
602 602
603 603
604static void keyspan_pda_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 604static void keyspan_pda_write_bulk_callback (struct urb *urb)
605{ 605{
606 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 606 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
607 struct keyspan_pda_private *priv; 607 struct keyspan_pda_private *priv;
diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c
index 2a2f3e2da055..17e205699c2b 100644
--- a/drivers/usb/serial/kl5kusb105.c
+++ b/drivers/usb/serial/kl5kusb105.c
@@ -80,11 +80,11 @@ static void klsi_105_close (struct usb_serial_port *port,
80static int klsi_105_write (struct usb_serial_port *port, 80static int klsi_105_write (struct usb_serial_port *port,
81 const unsigned char *buf, 81 const unsigned char *buf,
82 int count); 82 int count);
83static void klsi_105_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 83static void klsi_105_write_bulk_callback (struct urb *urb);
84static int klsi_105_chars_in_buffer (struct usb_serial_port *port); 84static int klsi_105_chars_in_buffer (struct usb_serial_port *port);
85static int klsi_105_write_room (struct usb_serial_port *port); 85static int klsi_105_write_room (struct usb_serial_port *port);
86 86
87static void klsi_105_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 87static void klsi_105_read_bulk_callback (struct urb *urb);
88static void klsi_105_set_termios (struct usb_serial_port *port, 88static void klsi_105_set_termios (struct usb_serial_port *port,
89 struct termios * old); 89 struct termios * old);
90static int klsi_105_ioctl (struct usb_serial_port *port, 90static int klsi_105_ioctl (struct usb_serial_port *port,
@@ -556,7 +556,7 @@ exit:
556 return bytes_sent; /* that's how much we wrote */ 556 return bytes_sent; /* that's how much we wrote */
557} /* klsi_105_write */ 557} /* klsi_105_write */
558 558
559static void klsi_105_write_bulk_callback ( struct urb *urb, struct pt_regs *regs) 559static void klsi_105_write_bulk_callback ( struct urb *urb)
560{ 560{
561 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 561 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
562 562
@@ -616,7 +616,7 @@ static int klsi_105_write_room (struct usb_serial_port *port)
616 616
617 617
618 618
619static void klsi_105_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 619static void klsi_105_read_bulk_callback (struct urb *urb)
620{ 620{
621 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 621 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
622 struct klsi_105_private *priv = usb_get_serial_port_data(port); 622 struct klsi_105_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/kobil_sct.c b/drivers/usb/serial/kobil_sct.c
index d50dce034958..ff03331e0bcf 100644
--- a/drivers/usb/serial/kobil_sct.c
+++ b/drivers/usb/serial/kobil_sct.c
@@ -80,8 +80,8 @@ static int kobil_ioctl(struct usb_serial_port *port, struct file *file,
80static int kobil_tiocmget(struct usb_serial_port *port, struct file *file); 80static int kobil_tiocmget(struct usb_serial_port *port, struct file *file);
81static int kobil_tiocmset(struct usb_serial_port *port, struct file *file, 81static int kobil_tiocmset(struct usb_serial_port *port, struct file *file,
82 unsigned int set, unsigned int clear); 82 unsigned int set, unsigned int clear);
83static void kobil_read_int_callback( struct urb *urb, struct pt_regs *regs ); 83static void kobil_read_int_callback( struct urb *urb );
84static void kobil_write_callback( struct urb *purb, struct pt_regs *regs ); 84static void kobil_write_callback( struct urb *purb );
85 85
86 86
87static struct usb_device_id id_table [] = { 87static struct usb_device_id id_table [] = {
@@ -360,7 +360,7 @@ static void kobil_close (struct usb_serial_port *port, struct file *filp)
360} 360}
361 361
362 362
363static void kobil_read_int_callback( struct urb *purb, struct pt_regs *regs) 363static void kobil_read_int_callback( struct urb *purb)
364{ 364{
365 int result; 365 int result;
366 struct usb_serial_port *port = (struct usb_serial_port *) purb->context; 366 struct usb_serial_port *port = (struct usb_serial_port *) purb->context;
@@ -405,7 +405,7 @@ static void kobil_read_int_callback( struct urb *purb, struct pt_regs *regs)
405} 405}
406 406
407 407
408static void kobil_write_callback( struct urb *purb, struct pt_regs *regs ) 408static void kobil_write_callback( struct urb *purb )
409{ 409{
410} 410}
411 411
diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
index f4d4305c2c02..b7582cc496dc 100644
--- a/drivers/usb/serial/mct_u232.c
+++ b/drivers/usb/serial/mct_u232.c
@@ -96,7 +96,7 @@ static int mct_u232_open (struct usb_serial_port *port,
96 struct file *filp); 96 struct file *filp);
97static void mct_u232_close (struct usb_serial_port *port, 97static void mct_u232_close (struct usb_serial_port *port,
98 struct file *filp); 98 struct file *filp);
99static void mct_u232_read_int_callback (struct urb *urb, struct pt_regs *regs); 99static void mct_u232_read_int_callback (struct urb *urb);
100static void mct_u232_set_termios (struct usb_serial_port *port, 100static void mct_u232_set_termios (struct usb_serial_port *port,
101 struct termios * old); 101 struct termios * old);
102static int mct_u232_ioctl (struct usb_serial_port *port, 102static int mct_u232_ioctl (struct usb_serial_port *port,
@@ -466,7 +466,7 @@ static void mct_u232_close (struct usb_serial_port *port, struct file *filp)
466} /* mct_u232_close */ 466} /* mct_u232_close */
467 467
468 468
469static void mct_u232_read_int_callback (struct urb *urb, struct pt_regs *regs) 469static void mct_u232_read_int_callback (struct urb *urb)
470{ 470{
471 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 471 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
472 struct mct_u232_private *priv = usb_get_serial_port_data(port); 472 struct mct_u232_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
index 95bf57166c59..021be39fe16e 100644
--- a/drivers/usb/serial/mos7840.c
+++ b/drivers/usb/serial/mos7840.c
@@ -421,7 +421,7 @@ static int mos7840_handle_new_lsr(struct moschip_port *port, __u8 new_lsr)
421/************************************************************************/ 421/************************************************************************/
422/************************************************************************/ 422/************************************************************************/
423 423
424static void mos7840_control_callback(struct urb *urb, struct pt_regs *regs) 424static void mos7840_control_callback(struct urb *urb)
425{ 425{
426 unsigned char *data; 426 unsigned char *data;
427 struct moschip_port *mos7840_port; 427 struct moschip_port *mos7840_port;
@@ -497,7 +497,7 @@ static int mos7840_get_reg(struct moschip_port *mcs, __u16 Wval, __u16 reg,
497 * interrupt endpoint. 497 * interrupt endpoint.
498 *****************************************************************************/ 498 *****************************************************************************/
499 499
500static void mos7840_interrupt_callback(struct urb *urb, struct pt_regs *regs) 500static void mos7840_interrupt_callback(struct urb *urb)
501{ 501{
502 int result; 502 int result;
503 int length; 503 int length;
@@ -647,7 +647,7 @@ static struct usb_serial *mos7840_get_usb_serial(struct usb_serial_port *port,
647 * bulk in endpoint. 647 * bulk in endpoint.
648 *****************************************************************************/ 648 *****************************************************************************/
649 649
650static void mos7840_bulk_in_callback(struct urb *urb, struct pt_regs *regs) 650static void mos7840_bulk_in_callback(struct urb *urb)
651{ 651{
652 int status; 652 int status;
653 unsigned char *data; 653 unsigned char *data;
@@ -726,8 +726,7 @@ static void mos7840_bulk_in_callback(struct urb *urb, struct pt_regs *regs)
726 * on the bulk out endpoint. 726 * on the bulk out endpoint.
727 *****************************************************************************/ 727 *****************************************************************************/
728 728
729static void mos7840_bulk_out_data_callback(struct urb *urb, 729static void mos7840_bulk_out_data_callback(struct urb *urb)
730 struct pt_regs *regs)
731{ 730{
732 struct moschip_port *mos7840_port; 731 struct moschip_port *mos7840_port;
733 struct tty_struct *tty; 732 struct tty_struct *tty;
@@ -1088,7 +1087,7 @@ static int mos7840_open(struct usb_serial_port *port, struct file *filp)
1088 mos7840_port->icount.tx = 0; 1087 mos7840_port->icount.tx = 0;
1089 mos7840_port->icount.rx = 0; 1088 mos7840_port->icount.rx = 0;
1090 1089
1091 dbg("\n\nusb_serial serial:%x mos7840_port:%x\n usb_serial_port port:%x\n\n", (unsigned int)serial, (unsigned int)mos7840_port, (unsigned int)port); 1090 dbg("\n\nusb_serial serial:%p mos7840_port:%p\n usb_serial_port port:%p\n\n", serial, mos7840_port, port);
1092 1091
1093 return 0; 1092 return 0;
1094 1093
@@ -1421,7 +1420,6 @@ static int mos7840_write(struct usb_serial_port *port,
1421 int i; 1420 int i;
1422 int bytes_sent = 0; 1421 int bytes_sent = 0;
1423 int transfer_size; 1422 int transfer_size;
1424 int from_user = 0;
1425 1423
1426 struct moschip_port *mos7840_port; 1424 struct moschip_port *mos7840_port;
1427 struct usb_serial *serial; 1425 struct usb_serial *serial;
@@ -1512,15 +1510,7 @@ static int mos7840_write(struct usb_serial_port *port,
1512 } 1510 }
1513 transfer_size = min(count, URB_TRANSFER_BUFFER_SIZE); 1511 transfer_size = min(count, URB_TRANSFER_BUFFER_SIZE);
1514 1512
1515 if (from_user) { 1513 memcpy(urb->transfer_buffer, current_position, transfer_size);
1516 if (copy_from_user
1517 (urb->transfer_buffer, current_position, transfer_size)) {
1518 bytes_sent = -EFAULT;
1519 goto exit;
1520 }
1521 } else {
1522 memcpy(urb->transfer_buffer, current_position, transfer_size);
1523 }
1524 1514
1525 /* fill urb with data and submit */ 1515 /* fill urb with data and submit */
1526 usb_fill_bulk_urb(urb, 1516 usb_fill_bulk_urb(urb,
@@ -2226,7 +2216,7 @@ static void mos7840_set_termios(struct usb_serial_port *port,
2226 *****************************************************************************/ 2216 *****************************************************************************/
2227 2217
2228static int mos7840_get_lsr_info(struct moschip_port *mos7840_port, 2218static int mos7840_get_lsr_info(struct moschip_port *mos7840_port,
2229 unsigned int *value) 2219 unsigned int __user *value)
2230{ 2220{
2231 int count; 2221 int count;
2232 unsigned int result = 0; 2222 unsigned int result = 0;
@@ -2249,7 +2239,7 @@ static int mos7840_get_lsr_info(struct moschip_port *mos7840_port,
2249 *****************************************************************************/ 2239 *****************************************************************************/
2250 2240
2251static int mos7840_get_bytes_avail(struct moschip_port *mos7840_port, 2241static int mos7840_get_bytes_avail(struct moschip_port *mos7840_port,
2252 unsigned int *value) 2242 unsigned int __user *value)
2253{ 2243{
2254 unsigned int result = 0; 2244 unsigned int result = 0;
2255 struct tty_struct *tty = mos7840_port->port->tty; 2245 struct tty_struct *tty = mos7840_port->port->tty;
@@ -2272,7 +2262,7 @@ static int mos7840_get_bytes_avail(struct moschip_port *mos7840_port,
2272 *****************************************************************************/ 2262 *****************************************************************************/
2273 2263
2274static int mos7840_set_modem_info(struct moschip_port *mos7840_port, 2264static int mos7840_set_modem_info(struct moschip_port *mos7840_port,
2275 unsigned int cmd, unsigned int *value) 2265 unsigned int cmd, unsigned int __user *value)
2276{ 2266{
2277 unsigned int mcr; 2267 unsigned int mcr;
2278 unsigned int arg; 2268 unsigned int arg;
@@ -2342,7 +2332,7 @@ static int mos7840_set_modem_info(struct moschip_port *mos7840_port,
2342 *****************************************************************************/ 2332 *****************************************************************************/
2343 2333
2344static int mos7840_get_modem_info(struct moschip_port *mos7840_port, 2334static int mos7840_get_modem_info(struct moschip_port *mos7840_port,
2345 unsigned int *value) 2335 unsigned int __user *value)
2346{ 2336{
2347 unsigned int result = 0; 2337 unsigned int result = 0;
2348 __u16 msr; 2338 __u16 msr;
@@ -2371,7 +2361,7 @@ static int mos7840_get_modem_info(struct moschip_port *mos7840_port,
2371 *****************************************************************************/ 2361 *****************************************************************************/
2372 2362
2373static int mos7840_get_serial_info(struct moschip_port *mos7840_port, 2363static int mos7840_get_serial_info(struct moschip_port *mos7840_port,
2374 struct serial_struct *retinfo) 2364 struct serial_struct __user *retinfo)
2375{ 2365{
2376 struct serial_struct tmp; 2366 struct serial_struct tmp;
2377 2367
@@ -2406,6 +2396,7 @@ static int mos7840_get_serial_info(struct moschip_port *mos7840_port,
2406static int mos7840_ioctl(struct usb_serial_port *port, struct file *file, 2396static int mos7840_ioctl(struct usb_serial_port *port, struct file *file,
2407 unsigned int cmd, unsigned long arg) 2397 unsigned int cmd, unsigned long arg)
2408{ 2398{
2399 void __user *argp = (void __user *)arg;
2409 struct moschip_port *mos7840_port; 2400 struct moschip_port *mos7840_port;
2410 struct tty_struct *tty; 2401 struct tty_struct *tty;
2411 2402
@@ -2434,16 +2425,13 @@ static int mos7840_ioctl(struct usb_serial_port *port, struct file *file,
2434 2425
2435 case TIOCINQ: 2426 case TIOCINQ:
2436 dbg("%s (%d) TIOCINQ", __FUNCTION__, port->number); 2427 dbg("%s (%d) TIOCINQ", __FUNCTION__, port->number);
2437 return mos7840_get_bytes_avail(mos7840_port, 2428 return mos7840_get_bytes_avail(mos7840_port, argp);
2438 (unsigned int *)arg);
2439 break;
2440 2429
2441 case TIOCOUTQ: 2430 case TIOCOUTQ:
2442 dbg("%s (%d) TIOCOUTQ", __FUNCTION__, port->number); 2431 dbg("%s (%d) TIOCOUTQ", __FUNCTION__, port->number);
2443 return put_user(tty->driver->chars_in_buffer ? 2432 return put_user(tty->driver->chars_in_buffer ?
2444 tty->driver->chars_in_buffer(tty) : 0, 2433 tty->driver->chars_in_buffer(tty) : 0,
2445 (int __user *)arg); 2434 (int __user *)arg);
2446 break;
2447 2435
2448 case TCFLSH: 2436 case TCFLSH:
2449 retval = tty_check_change(tty); 2437 retval = tty_check_change(tty);
@@ -2473,13 +2461,13 @@ static int mos7840_ioctl(struct usb_serial_port *port, struct file *file,
2473 2461
2474 case TCGETS: 2462 case TCGETS:
2475 if (kernel_termios_to_user_termios 2463 if (kernel_termios_to_user_termios
2476 ((struct termios __user *)arg, tty->termios)) 2464 ((struct termios __user *)argp, tty->termios))
2477 return -EFAULT; 2465 return -EFAULT;
2478 return 0; 2466 return 0;
2479 2467
2480 case TIOCSERGETLSR: 2468 case TIOCSERGETLSR:
2481 dbg("%s (%d) TIOCSERGETLSR", __FUNCTION__, port->number); 2469 dbg("%s (%d) TIOCSERGETLSR", __FUNCTION__, port->number);
2482 return mos7840_get_lsr_info(mos7840_port, (unsigned int *)arg); 2470 return mos7840_get_lsr_info(mos7840_port, argp);
2483 return 0; 2471 return 0;
2484 2472
2485 case TIOCMBIS: 2473 case TIOCMBIS:
@@ -2488,19 +2476,16 @@ static int mos7840_ioctl(struct usb_serial_port *port, struct file *file,
2488 dbg("%s (%d) TIOCMSET/TIOCMBIC/TIOCMSET", __FUNCTION__, 2476 dbg("%s (%d) TIOCMSET/TIOCMBIC/TIOCMSET", __FUNCTION__,
2489 port->number); 2477 port->number);
2490 mosret = 2478 mosret =
2491 mos7840_set_modem_info(mos7840_port, cmd, 2479 mos7840_set_modem_info(mos7840_port, cmd, argp);
2492 (unsigned int *)arg);
2493 return mosret; 2480 return mosret;
2494 2481
2495 case TIOCMGET: 2482 case TIOCMGET:
2496 dbg("%s (%d) TIOCMGET", __FUNCTION__, port->number); 2483 dbg("%s (%d) TIOCMGET", __FUNCTION__, port->number);
2497 return mos7840_get_modem_info(mos7840_port, 2484 return mos7840_get_modem_info(mos7840_port, argp);
2498 (unsigned int *)arg);
2499 2485
2500 case TIOCGSERIAL: 2486 case TIOCGSERIAL:
2501 dbg("%s (%d) TIOCGSERIAL", __FUNCTION__, port->number); 2487 dbg("%s (%d) TIOCGSERIAL", __FUNCTION__, port->number);
2502 return mos7840_get_serial_info(mos7840_port, 2488 return mos7840_get_serial_info(mos7840_port, argp);
2503 (struct serial_struct *)arg);
2504 2489
2505 case TIOCSSERIAL: 2490 case TIOCSSERIAL:
2506 dbg("%s (%d) TIOCSSERIAL", __FUNCTION__, port->number); 2491 dbg("%s (%d) TIOCSSERIAL", __FUNCTION__, port->number);
@@ -2550,7 +2535,7 @@ static int mos7840_ioctl(struct usb_serial_port *port, struct file *file,
2550 2535
2551 dbg("%s (%d) TIOCGICOUNT RX=%d, TX=%d", __FUNCTION__, 2536 dbg("%s (%d) TIOCGICOUNT RX=%d, TX=%d", __FUNCTION__,
2552 port->number, icount.rx, icount.tx); 2537 port->number, icount.rx, icount.tx);
2553 if (copy_to_user((void *)arg, &icount, sizeof(icount))) 2538 if (copy_to_user(argp, &icount, sizeof(icount)))
2554 return -EFAULT; 2539 return -EFAULT;
2555 return 0; 2540 return 0;
2556 2541
@@ -2818,7 +2803,7 @@ static int mos7840_startup(struct usb_serial *serial)
2818 2803
2819 /* setting configuration feature to one */ 2804 /* setting configuration feature to one */
2820 usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), 2805 usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0),
2821 (__u8) 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 5 * HZ); 2806 (__u8) 0x03, 0x00, 0x01, 0x00, NULL, 0x00, 5 * HZ);
2822 return 0; 2807 return 0;
2823} 2808}
2824 2809
diff --git a/drivers/usb/serial/navman.c b/drivers/usb/serial/navman.c
index ac3f8b5d2c49..0610409a6568 100644
--- a/drivers/usb/serial/navman.c
+++ b/drivers/usb/serial/navman.c
@@ -32,7 +32,7 @@ static struct usb_driver navman_driver = {
32 .no_dynamic_id = 1, 32 .no_dynamic_id = 1,
33}; 33};
34 34
35static void navman_read_int_callback(struct urb *urb, struct pt_regs *regs) 35static void navman_read_int_callback(struct urb *urb)
36{ 36{
37 struct usb_serial_port *port = urb->context; 37 struct usb_serial_port *port = urb->context;
38 unsigned char *data = urb->transfer_buffer; 38 unsigned char *data = urb->transfer_buffer;
diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
index a764ff4e326c..bc91d3b726fc 100644
--- a/drivers/usb/serial/omninet.c
+++ b/drivers/usb/serial/omninet.c
@@ -64,8 +64,8 @@ static int debug;
64/* function prototypes */ 64/* function prototypes */
65static int omninet_open (struct usb_serial_port *port, struct file *filp); 65static int omninet_open (struct usb_serial_port *port, struct file *filp);
66static void omninet_close (struct usb_serial_port *port, struct file *filp); 66static void omninet_close (struct usb_serial_port *port, struct file *filp);
67static void omninet_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 67static void omninet_read_bulk_callback (struct urb *urb);
68static void omninet_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 68static void omninet_write_bulk_callback (struct urb *urb);
69static int omninet_write (struct usb_serial_port *port, const unsigned char *buf, int count); 69static int omninet_write (struct usb_serial_port *port, const unsigned char *buf, int count);
70static int omninet_write_room (struct usb_serial_port *port); 70static int omninet_write_room (struct usb_serial_port *port);
71static void omninet_shutdown (struct usb_serial *serial); 71static void omninet_shutdown (struct usb_serial *serial);
@@ -194,7 +194,7 @@ static void omninet_close (struct usb_serial_port *port, struct file * filp)
194#define OMNINET_HEADERLEN sizeof(struct omninet_header) 194#define OMNINET_HEADERLEN sizeof(struct omninet_header)
195#define OMNINET_BULKOUTSIZE (64 - OMNINET_HEADERLEN) 195#define OMNINET_BULKOUTSIZE (64 - OMNINET_HEADERLEN)
196 196
197static void omninet_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 197static void omninet_read_bulk_callback (struct urb *urb)
198{ 198{
199 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 199 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
200 unsigned char *data = urb->transfer_buffer; 200 unsigned char *data = urb->transfer_buffer;
@@ -306,7 +306,7 @@ static int omninet_write_room (struct usb_serial_port *port)
306 return (room); 306 return (room);
307} 307}
308 308
309static void omninet_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 309static void omninet_write_bulk_callback (struct urb *urb)
310{ 310{
311/* struct omninet_header *header = (struct omninet_header *) urb->transfer_buffer; */ 311/* struct omninet_header *header = (struct omninet_header *) urb->transfer_buffer; */
312 struct usb_serial_port *port = (struct usb_serial_port *) urb->context; 312 struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index c856e6f40e22..130afbbd3fca 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -50,7 +50,7 @@ static void option_rx_throttle(struct usb_serial_port *port);
50static void option_rx_unthrottle(struct usb_serial_port *port); 50static void option_rx_unthrottle(struct usb_serial_port *port);
51static int option_write_room(struct usb_serial_port *port); 51static int option_write_room(struct usb_serial_port *port);
52 52
53static void option_instat_callback(struct urb *urb, struct pt_regs *regs); 53static void option_instat_callback(struct urb *urb);
54 54
55static int option_write(struct usb_serial_port *port, 55static int option_write(struct usb_serial_port *port,
56 const unsigned char *buf, int count); 56 const unsigned char *buf, int count);
@@ -337,7 +337,7 @@ static int option_write(struct usb_serial_port *port,
337 return count; 337 return count;
338} 338}
339 339
340static void option_indat_callback(struct urb *urb, struct pt_regs *regs) 340static void option_indat_callback(struct urb *urb)
341{ 341{
342 int err; 342 int err;
343 int endpoint; 343 int endpoint;
@@ -374,7 +374,7 @@ static void option_indat_callback(struct urb *urb, struct pt_regs *regs)
374 return; 374 return;
375} 375}
376 376
377static void option_outdat_callback(struct urb *urb, struct pt_regs *regs) 377static void option_outdat_callback(struct urb *urb)
378{ 378{
379 struct usb_serial_port *port; 379 struct usb_serial_port *port;
380 380
@@ -385,7 +385,7 @@ static void option_outdat_callback(struct urb *urb, struct pt_regs *regs)
385 usb_serial_port_softint(port); 385 usb_serial_port_softint(port);
386} 386}
387 387
388static void option_instat_callback(struct urb *urb, struct pt_regs *regs) 388static void option_instat_callback(struct urb *urb)
389{ 389{
390 int err; 390 int err;
391 struct usb_serial_port *port = (struct usb_serial_port *) urb->context; 391 struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
@@ -565,7 +565,7 @@ static void option_close(struct usb_serial_port *port, struct file *filp)
565/* Helper functions used by option_setup_urbs */ 565/* Helper functions used by option_setup_urbs */
566static struct urb *option_setup_urb(struct usb_serial *serial, int endpoint, 566static struct urb *option_setup_urb(struct usb_serial *serial, int endpoint,
567 int dir, void *ctx, char *buf, int len, 567 int dir, void *ctx, char *buf, int len,
568 void (*callback)(struct urb *, struct pt_regs *regs)) 568 void (*callback)(struct urb *))
569{ 569{
570 struct urb *urb; 570 struct urb *urb;
571 571
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 9c18173e33fb..bc800c8787a8 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -948,7 +948,7 @@ static void pl2303_update_line_status(struct usb_serial_port *port,
948 wake_up_interruptible(&priv->delta_msr_wait); 948 wake_up_interruptible(&priv->delta_msr_wait);
949} 949}
950 950
951static void pl2303_read_int_callback(struct urb *urb, struct pt_regs *regs) 951static void pl2303_read_int_callback(struct urb *urb)
952{ 952{
953 struct usb_serial_port *port = (struct usb_serial_port *) urb->context; 953 struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
954 unsigned char *data = urb->transfer_buffer; 954 unsigned char *data = urb->transfer_buffer;
@@ -987,7 +987,7 @@ exit:
987 __FUNCTION__, status); 987 __FUNCTION__, status);
988} 988}
989 989
990static void pl2303_read_bulk_callback(struct urb *urb, struct pt_regs *regs) 990static void pl2303_read_bulk_callback(struct urb *urb)
991{ 991{
992 struct usb_serial_port *port = (struct usb_serial_port *) urb->context; 992 struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
993 struct pl2303_private *priv = usb_get_serial_port_data(port); 993 struct pl2303_private *priv = usb_get_serial_port_data(port);
@@ -1070,7 +1070,7 @@ static void pl2303_read_bulk_callback(struct urb *urb, struct pt_regs *regs)
1070 return; 1070 return;
1071} 1071}
1072 1072
1073static void pl2303_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 1073static void pl2303_write_bulk_callback(struct urb *urb)
1074{ 1074{
1075 struct usb_serial_port *port = (struct usb_serial_port *) urb->context; 1075 struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
1076 struct pl2303_private *priv = usb_get_serial_port_data(port); 1076 struct pl2303_private *priv = usb_get_serial_port_data(port);
diff --git a/drivers/usb/serial/safe_serial.c b/drivers/usb/serial/safe_serial.c
index 1e07dfad6853..30b7ebc8d45d 100644
--- a/drivers/usb/serial/safe_serial.c
+++ b/drivers/usb/serial/safe_serial.c
@@ -204,7 +204,7 @@ static __u16 __inline__ fcs_compute10 (unsigned char *sp, int len, __u16 fcs)
204 return fcs; 204 return fcs;
205} 205}
206 206
207static void safe_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 207static void safe_read_bulk_callback (struct urb *urb)
208{ 208{
209 struct usb_serial_port *port = (struct usb_serial_port *) urb->context; 209 struct usb_serial_port *port = (struct usb_serial_port *) urb->context;
210 unsigned char *data = urb->transfer_buffer; 210 unsigned char *data = urb->transfer_buffer;
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index ac9b8ee52d44..07400c0c8a8c 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -166,9 +166,9 @@ static int ti_tiocmget(struct usb_serial_port *port, struct file *file);
166static int ti_tiocmset(struct usb_serial_port *port, struct file *file, 166static int ti_tiocmset(struct usb_serial_port *port, struct file *file,
167 unsigned int set, unsigned int clear); 167 unsigned int set, unsigned int clear);
168static void ti_break(struct usb_serial_port *port, int break_state); 168static void ti_break(struct usb_serial_port *port, int break_state);
169static void ti_interrupt_callback(struct urb *urb, struct pt_regs *regs); 169static void ti_interrupt_callback(struct urb *urb);
170static void ti_bulk_in_callback(struct urb *urb, struct pt_regs *regs); 170static void ti_bulk_in_callback(struct urb *urb);
171static void ti_bulk_out_callback(struct urb *urb, struct pt_regs *regs); 171static void ti_bulk_out_callback(struct urb *urb);
172 172
173static void ti_recv(struct device *dev, struct tty_struct *tty, 173static void ti_recv(struct device *dev, struct tty_struct *tty,
174 unsigned char *data, int length); 174 unsigned char *data, int length);
@@ -1098,7 +1098,7 @@ static void ti_break(struct usb_serial_port *port, int break_state)
1098} 1098}
1099 1099
1100 1100
1101static void ti_interrupt_callback(struct urb *urb, struct pt_regs *regs) 1101static void ti_interrupt_callback(struct urb *urb)
1102{ 1102{
1103 struct ti_device *tdev = (struct ti_device *)urb->context; 1103 struct ti_device *tdev = (struct ti_device *)urb->context;
1104 struct usb_serial_port *port; 1104 struct usb_serial_port *port;
@@ -1178,7 +1178,7 @@ exit:
1178} 1178}
1179 1179
1180 1180
1181static void ti_bulk_in_callback(struct urb *urb, struct pt_regs *regs) 1181static void ti_bulk_in_callback(struct urb *urb)
1182{ 1182{
1183 struct ti_port *tport = (struct ti_port *)urb->context; 1183 struct ti_port *tport = (struct ti_port *)urb->context;
1184 struct usb_serial_port *port = tport->tp_port; 1184 struct usb_serial_port *port = tport->tp_port;
@@ -1241,7 +1241,7 @@ exit:
1241} 1241}
1242 1242
1243 1243
1244static void ti_bulk_out_callback(struct urb *urb, struct pt_regs *regs) 1244static void ti_bulk_out_callback(struct urb *urb)
1245{ 1245{
1246 struct ti_port *tport = (struct ti_port *)urb->context; 1246 struct ti_port *tport = (struct ti_port *)urb->context;
1247 struct usb_serial_port *port = tport->tp_port; 1247 struct usb_serial_port *port = tport->tp_port;
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
index 88949f7884ca..befe2e11a041 100644
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -47,9 +47,9 @@ static int visor_calc_num_ports(struct usb_serial *serial);
47static void visor_shutdown (struct usb_serial *serial); 47static void visor_shutdown (struct usb_serial *serial);
48static int visor_ioctl (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg); 48static int visor_ioctl (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg);
49static void visor_set_termios (struct usb_serial_port *port, struct termios *old_termios); 49static void visor_set_termios (struct usb_serial_port *port, struct termios *old_termios);
50static void visor_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 50static void visor_write_bulk_callback (struct urb *urb);
51static void visor_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 51static void visor_read_bulk_callback (struct urb *urb);
52static void visor_read_int_callback (struct urb *urb, struct pt_regs *regs); 52static void visor_read_int_callback (struct urb *urb);
53static int clie_3_5_startup (struct usb_serial *serial); 53static int clie_3_5_startup (struct usb_serial *serial);
54static int treo_attach (struct usb_serial *serial); 54static int treo_attach (struct usb_serial *serial);
55static int clie_5_attach (struct usb_serial *serial); 55static int clie_5_attach (struct usb_serial *serial);
@@ -471,7 +471,7 @@ static int visor_chars_in_buffer (struct usb_serial_port *port)
471} 471}
472 472
473 473
474static void visor_write_bulk_callback (struct urb *urb, struct pt_regs *regs) 474static void visor_write_bulk_callback (struct urb *urb)
475{ 475{
476 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 476 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
477 struct visor_private *priv = usb_get_serial_port_data(port); 477 struct visor_private *priv = usb_get_serial_port_data(port);
@@ -494,7 +494,7 @@ static void visor_write_bulk_callback (struct urb *urb, struct pt_regs *regs)
494} 494}
495 495
496 496
497static void visor_read_bulk_callback (struct urb *urb, struct pt_regs *regs) 497static void visor_read_bulk_callback (struct urb *urb)
498{ 498{
499 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 499 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
500 struct visor_private *priv = usb_get_serial_port_data(port); 500 struct visor_private *priv = usb_get_serial_port_data(port);
@@ -539,7 +539,7 @@ static void visor_read_bulk_callback (struct urb *urb, struct pt_regs *regs)
539 return; 539 return;
540} 540}
541 541
542static void visor_read_int_callback (struct urb *urb, struct pt_regs *regs) 542static void visor_read_int_callback (struct urb *urb)
543{ 543{
544 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 544 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
545 int result; 545 int result;
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
index 6e6c7934be32..4d1cd7aeccd3 100644
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -152,8 +152,8 @@ static void whiteheat_break_ctl (struct usb_serial_port *port, int break_state)
152static int whiteheat_chars_in_buffer (struct usb_serial_port *port); 152static int whiteheat_chars_in_buffer (struct usb_serial_port *port);
153static void whiteheat_throttle (struct usb_serial_port *port); 153static void whiteheat_throttle (struct usb_serial_port *port);
154static void whiteheat_unthrottle (struct usb_serial_port *port); 154static void whiteheat_unthrottle (struct usb_serial_port *port);
155static void whiteheat_read_callback (struct urb *urb, struct pt_regs *regs); 155static void whiteheat_read_callback (struct urb *urb);
156static void whiteheat_write_callback (struct urb *urb, struct pt_regs *regs); 156static void whiteheat_write_callback (struct urb *urb);
157 157
158static struct usb_serial_driver whiteheat_fake_device = { 158static struct usb_serial_driver whiteheat_fake_device = {
159 .driver = { 159 .driver = {
@@ -235,8 +235,8 @@ struct whiteheat_private {
235/* local function prototypes */ 235/* local function prototypes */
236static int start_command_port(struct usb_serial *serial); 236static int start_command_port(struct usb_serial *serial);
237static void stop_command_port(struct usb_serial *serial); 237static void stop_command_port(struct usb_serial *serial);
238static void command_port_write_callback(struct urb *urb, struct pt_regs *regs); 238static void command_port_write_callback(struct urb *urb);
239static void command_port_read_callback(struct urb *urb, struct pt_regs *regs); 239static void command_port_read_callback(struct urb *urb);
240 240
241static int start_port_read(struct usb_serial_port *port); 241static int start_port_read(struct usb_serial_port *port);
242static struct whiteheat_urb_wrap *urb_to_wrap(struct urb *urb, struct list_head *head); 242static struct whiteheat_urb_wrap *urb_to_wrap(struct urb *urb, struct list_head *head);
@@ -958,7 +958,7 @@ static void whiteheat_unthrottle (struct usb_serial_port *port)
958/***************************************************************************** 958/*****************************************************************************
959 * Connect Tech's White Heat callback routines 959 * Connect Tech's White Heat callback routines
960 *****************************************************************************/ 960 *****************************************************************************/
961static void command_port_write_callback (struct urb *urb, struct pt_regs *regs) 961static void command_port_write_callback (struct urb *urb)
962{ 962{
963 dbg("%s", __FUNCTION__); 963 dbg("%s", __FUNCTION__);
964 964
@@ -969,7 +969,7 @@ static void command_port_write_callback (struct urb *urb, struct pt_regs *regs)
969} 969}
970 970
971 971
972static void command_port_read_callback (struct urb *urb, struct pt_regs *regs) 972static void command_port_read_callback (struct urb *urb)
973{ 973{
974 struct usb_serial_port *command_port = (struct usb_serial_port *)urb->context; 974 struct usb_serial_port *command_port = (struct usb_serial_port *)urb->context;
975 struct whiteheat_command_private *command_info; 975 struct whiteheat_command_private *command_info;
@@ -1019,7 +1019,7 @@ static void command_port_read_callback (struct urb *urb, struct pt_regs *regs)
1019} 1019}
1020 1020
1021 1021
1022static void whiteheat_read_callback(struct urb *urb, struct pt_regs *regs) 1022static void whiteheat_read_callback(struct urb *urb)
1023{ 1023{
1024 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1024 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
1025 struct whiteheat_urb_wrap *wrap; 1025 struct whiteheat_urb_wrap *wrap;
@@ -1061,7 +1061,7 @@ static void whiteheat_read_callback(struct urb *urb, struct pt_regs *regs)
1061} 1061}
1062 1062
1063 1063
1064static void whiteheat_write_callback(struct urb *urb, struct pt_regs *regs) 1064static void whiteheat_write_callback(struct urb *urb)
1065{ 1065{
1066 struct usb_serial_port *port = (struct usb_serial_port *)urb->context; 1066 struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
1067 struct whiteheat_private *info = usb_get_serial_port_data(port); 1067 struct whiteheat_private *info = usb_get_serial_port_data(port);
diff --git a/drivers/usb/storage/onetouch.c b/drivers/usb/storage/onetouch.c
index f843a0bcf107..3baf448e300d 100644
--- a/drivers/usb/storage/onetouch.c
+++ b/drivers/usb/storage/onetouch.c
@@ -53,7 +53,7 @@ struct usb_onetouch {
53 unsigned int is_open:1; 53 unsigned int is_open:1;
54}; 54};
55 55
56static void usb_onetouch_irq(struct urb *urb, struct pt_regs *regs) 56static void usb_onetouch_irq(struct urb *urb)
57{ 57{
58 struct usb_onetouch *onetouch = urb->context; 58 struct usb_onetouch *onetouch = urb->context;
59 signed char *data = onetouch->data; 59 signed char *data = onetouch->data;
@@ -72,7 +72,6 @@ static void usb_onetouch_irq(struct urb *urb, struct pt_regs *regs)
72 goto resubmit; 72 goto resubmit;
73 } 73 }
74 74
75 input_regs(dev, regs);
76 input_report_key(dev, ONETOUCH_BUTTON, data[0] & 0x02); 75 input_report_key(dev, ONETOUCH_BUTTON, data[0] & 0x02);
77 input_sync(dev); 76 input_sync(dev);
78 77
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
index f23514c4e649..47644b5b6155 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -108,7 +108,7 @@
108/* This is the completion handler which will wake us up when an URB 108/* This is the completion handler which will wake us up when an URB
109 * completes. 109 * completes.
110 */ 110 */
111static void usb_stor_blocking_completion(struct urb *urb, struct pt_regs *regs) 111static void usb_stor_blocking_completion(struct urb *urb)
112{ 112{
113 struct completion *urb_done_ptr = (struct completion *)urb->context; 113 struct completion *urb_done_ptr = (struct completion *)urb->context;
114 114
diff --git a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c
index 1b51d3187a95..296b091cf168 100644
--- a/drivers/usb/usb-skeleton.c
+++ b/drivers/usb/usb-skeleton.c
@@ -158,7 +158,7 @@ exit:
158 return retval; 158 return retval;
159} 159}
160 160
161static void skel_write_bulk_callback(struct urb *urb, struct pt_regs *regs) 161static void skel_write_bulk_callback(struct urb *urb)
162{ 162{
163 struct usb_skel *dev; 163 struct usb_skel *dev;
164 164
diff --git a/drivers/video/amifb.c b/drivers/video/amifb.c
index f1ba54f4fc39..a4e3fca05891 100644
--- a/drivers/video/amifb.c
+++ b/drivers/video/amifb.c
@@ -1144,7 +1144,7 @@ static void amifb_deinit(void);
1144 */ 1144 */
1145 1145
1146static int flash_cursor(void); 1146static int flash_cursor(void);
1147static irqreturn_t amifb_interrupt(int irq, void *dev_id, struct pt_regs *fp); 1147static irqreturn_t amifb_interrupt(int irq, void *dev_id);
1148static u_long chipalloc(u_long size); 1148static u_long chipalloc(u_long size);
1149static void chipfree(void); 1149static void chipfree(void);
1150 1150
@@ -2492,7 +2492,7 @@ static int flash_cursor(void)
2492 * VBlank Display Interrupt 2492 * VBlank Display Interrupt
2493 */ 2493 */
2494 2494
2495static irqreturn_t amifb_interrupt(int irq, void *dev_id, struct pt_regs *fp) 2495static irqreturn_t amifb_interrupt(int irq, void *dev_id)
2496{ 2496{
2497 if (do_vmode_pan || do_vmode_full) 2497 if (do_vmode_pan || do_vmode_full)
2498 ami_update_display(); 2498 ami_update_display();
diff --git a/drivers/video/arcfb.c b/drivers/video/arcfb.c
index 70dd8115a4d8..ab34b96acc31 100644
--- a/drivers/video/arcfb.c
+++ b/drivers/video/arcfb.c
@@ -218,8 +218,7 @@ static int arcfb_pan_display(struct fb_var_screeninfo *var,
218 return -EINVAL; 218 return -EINVAL;
219} 219}
220 220
221static irqreturn_t arcfb_interrupt(int vec, void *dev_instance, 221static irqreturn_t arcfb_interrupt(int vec, void *dev_instance)
222 struct pt_regs *regs)
223{ 222{
224 struct fb_info *info = dev_instance; 223 struct fb_info *info = dev_instance;
225 unsigned char ctl2status; 224 unsigned char ctl2status;
diff --git a/drivers/video/atafb.c b/drivers/video/atafb.c
index 5831893bf7a0..02c41a626fa2 100644
--- a/drivers/video/atafb.c
+++ b/drivers/video/atafb.c
@@ -1521,7 +1521,7 @@ static void falcon_set_par( struct atafb_par *par )
1521} 1521}
1522 1522
1523 1523
1524static irqreturn_t falcon_vbl_switcher( int irq, void *dummy, struct pt_regs *fp ) 1524static irqreturn_t falcon_vbl_switcher( int irq, void *dummy )
1525{ 1525{
1526 struct falcon_hw *hw = &f_new_mode; 1526 struct falcon_hw *hw = &f_new_mode;
1527 1527
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c
index b45c9fd1b330..b77b30923928 100644
--- a/drivers/video/aty/atyfb_base.c
+++ b/drivers/video/aty/atyfb_base.c
@@ -1532,7 +1532,7 @@ static int atyfb_open(struct fb_info *info, int user)
1532 return (0); 1532 return (0);
1533} 1533}
1534 1534
1535static irqreturn_t aty_irq(int irq, void *dev_id, struct pt_regs *fp) 1535static irqreturn_t aty_irq(int irq, void *dev_id)
1536{ 1536{
1537 struct atyfb_par *par = dev_id; 1537 struct atyfb_par *par = dev_id;
1538 int handled = 0; 1538 int handled = 0;
diff --git a/drivers/video/au1200fb.c b/drivers/video/au1200fb.c
index c6a5f0ccc107..dbf4ec3f6d57 100644
--- a/drivers/video/au1200fb.c
+++ b/drivers/video/au1200fb.c
@@ -1545,7 +1545,7 @@ static struct fb_ops au1200fb_fb_ops = {
1545 1545
1546/*-------------------------------------------------------------------------*/ 1546/*-------------------------------------------------------------------------*/
1547 1547
1548static irqreturn_t au1200fb_handle_irq(int irq, void* dev_id, struct pt_regs *regs) 1548static irqreturn_t au1200fb_handle_irq(int irq, void* dev_id)
1549{ 1549{
1550 /* Nothing to do for now, just clear any pending interrupt */ 1550 /* Nothing to do for now, just clear any pending interrupt */
1551 lcd->intstatus = lcd->intstatus; 1551 lcd->intstatus = lcd->intstatus;
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 8c041daa3a15..302174b8e477 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -204,7 +204,7 @@ static struct class_device *fbcon_class_device;
204 */ 204 */
205static int vbl_detected; 205static int vbl_detected;
206 206
207static irqreturn_t fb_vbl_detect(int irq, void *dummy, struct pt_regs *fp) 207static irqreturn_t fb_vbl_detect(int irq, void *dummy)
208{ 208{
209 vbl_detected++; 209 vbl_detected++;
210 return IRQ_HANDLED; 210 return IRQ_HANDLED;
@@ -414,7 +414,7 @@ static void fb_flashcursor(void *private)
414 414
415#if defined(CONFIG_ATARI) || defined(CONFIG_MAC) 415#if defined(CONFIG_ATARI) || defined(CONFIG_MAC)
416static int cursor_blink_rate; 416static int cursor_blink_rate;
417static irqreturn_t fb_vbl_handler(int irq, void *dev_id, struct pt_regs *fp) 417static irqreturn_t fb_vbl_handler(int irq, void *dev_id)
418{ 418{
419 struct fb_info *info = dev_id; 419 struct fb_info *info = dev_id;
420 420
diff --git a/drivers/video/intelfb/intelfbhw.c b/drivers/video/intelfb/intelfbhw.c
index f887f1efd3fe..eeeeff9a09eb 100644
--- a/drivers/video/intelfb/intelfbhw.c
+++ b/drivers/video/intelfb/intelfbhw.c
@@ -1952,7 +1952,7 @@ intelfbhw_cursor_reset(struct intelfb_info *dinfo) {
1952} 1952}
1953 1953
1954static irqreturn_t 1954static irqreturn_t
1955intelfbhw_irq(int irq, void *dev_id, struct pt_regs *fp) { 1955intelfbhw_irq(int irq, void *dev_id) {
1956 int handled = 0; 1956 int handled = 0;
1957 u16 tmp; 1957 u16 tmp;
1958 struct intelfb_info *dinfo = (struct intelfb_info *)dev_id; 1958 struct intelfb_info *dinfo = (struct intelfb_info *)dev_id;
diff --git a/drivers/video/matrox/matroxfb_base.c b/drivers/video/matrox/matroxfb_base.c
index 7acf01c181ee..e9b4115fcad0 100644
--- a/drivers/video/matrox/matroxfb_base.c
+++ b/drivers/video/matrox/matroxfb_base.c
@@ -198,7 +198,7 @@ static void matroxfb_crtc1_panpos(WPMINFO2) {
198 } 198 }
199} 199}
200 200
201static irqreturn_t matrox_irq(int irq, void *dev_id, struct pt_regs *fp) 201static irqreturn_t matrox_irq(int irq, void *dev_id)
202{ 202{
203 u_int32_t status; 203 u_int32_t status;
204 int handled = 0; 204 int handled = 0;
diff --git a/drivers/video/pvr2fb.c b/drivers/video/pvr2fb.c
index 78dc59a1751b..c7bc80921f16 100644
--- a/drivers/video/pvr2fb.c
+++ b/drivers/video/pvr2fb.c
@@ -209,7 +209,7 @@ static int pvr2fb_set_par(struct fb_info *info);
209static void pvr2_update_display(struct fb_info *info); 209static void pvr2_update_display(struct fb_info *info);
210static void pvr2_init_display(struct fb_info *info); 210static void pvr2_init_display(struct fb_info *info);
211static void pvr2_do_blank(void); 211static void pvr2_do_blank(void);
212static irqreturn_t pvr2fb_interrupt(int irq, void *dev_id, struct pt_regs *fp); 212static irqreturn_t pvr2fb_interrupt(int irq, void *dev_id);
213static int pvr2_init_cable(void); 213static int pvr2_init_cable(void);
214static int pvr2_get_param(const struct pvr2_params *p, const char *s, 214static int pvr2_get_param(const struct pvr2_params *p, const char *s,
215 int val, int size); 215 int val, int size);
@@ -626,7 +626,7 @@ static void pvr2_do_blank(void)
626 is_blanked = do_blank > 0 ? do_blank : 0; 626 is_blanked = do_blank > 0 ? do_blank : 0;
627} 627}
628 628
629static irqreturn_t pvr2fb_interrupt(int irq, void *dev_id, struct pt_regs *fp) 629static irqreturn_t pvr2fb_interrupt(int irq, void *dev_id)
630{ 630{
631 struct fb_info *info = dev_id; 631 struct fb_info *info = dev_id;
632 632
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c
index 3bc5da4a57ca..8a8ae55a7403 100644
--- a/drivers/video/pxafb.c
+++ b/drivers/video/pxafb.c
@@ -846,7 +846,7 @@ static void pxafb_disable_controller(struct pxafb_info *fbi)
846/* 846/*
847 * pxafb_handle_irq: Handle 'LCD DONE' interrupts. 847 * pxafb_handle_irq: Handle 'LCD DONE' interrupts.
848 */ 848 */
849static irqreturn_t pxafb_handle_irq(int irq, void *dev_id, struct pt_regs *regs) 849static irqreturn_t pxafb_handle_irq(int irq, void *dev_id)
850{ 850{
851 struct pxafb_info *fbi = dev_id; 851 struct pxafb_info *fbi = dev_id;
852 unsigned int lcsr = LCSR; 852 unsigned int lcsr = LCSR;
diff --git a/drivers/video/s3c2410fb.c b/drivers/video/s3c2410fb.c
index ad3bdd6f1ac1..59407343cc73 100644
--- a/drivers/video/s3c2410fb.c
+++ b/drivers/video/s3c2410fb.c
@@ -614,7 +614,7 @@ static void s3c2410fb_write_palette(struct s3c2410fb_info *fbi)
614 } 614 }
615} 615}
616 616
617static irqreturn_t s3c2410fb_irq(int irq, void *dev_id, struct pt_regs *r) 617static irqreturn_t s3c2410fb_irq(int irq, void *dev_id)
618{ 618{
619 struct s3c2410fb_info *fbi = dev_id; 619 struct s3c2410fb_info *fbi = dev_id;
620 unsigned long lcdirq = readl(S3C2410_LCDINTPND); 620 unsigned long lcdirq = readl(S3C2410_LCDINTPND);
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c
index a2e6e7205d7e..cd10b18150b8 100644
--- a/drivers/video/sa1100fb.c
+++ b/drivers/video/sa1100fb.c
@@ -1085,7 +1085,7 @@ static void sa1100fb_disable_controller(struct sa1100fb_info *fbi)
1085/* 1085/*
1086 * sa1100fb_handle_irq: Handle 'LCD DONE' interrupts. 1086 * sa1100fb_handle_irq: Handle 'LCD DONE' interrupts.
1087 */ 1087 */
1088static irqreturn_t sa1100fb_handle_irq(int irq, void *dev_id, struct pt_regs *regs) 1088static irqreturn_t sa1100fb_handle_irq(int irq, void *dev_id)
1089{ 1089{
1090 struct sa1100fb_info *fbi = dev_id; 1090 struct sa1100fb_info *fbi = dev_id;
1091 unsigned int lcsr = LCSR; 1091 unsigned int lcsr = LCSR;
diff --git a/fs/befs/befs.h b/fs/befs/befs.h
index 057a2c3d73b7..d9a40abda6b7 100644
--- a/fs/befs/befs.h
+++ b/fs/befs/befs.h
@@ -94,7 +94,7 @@ void befs_debug(const struct super_block *sb, const char *fmt, ...);
94 94
95void befs_dump_super_block(const struct super_block *sb, befs_super_block *); 95void befs_dump_super_block(const struct super_block *sb, befs_super_block *);
96void befs_dump_inode(const struct super_block *sb, befs_inode *); 96void befs_dump_inode(const struct super_block *sb, befs_inode *);
97void befs_dump_index_entry(const struct super_block *sb, befs_btree_super *); 97void befs_dump_index_entry(const struct super_block *sb, befs_disk_btree_super *);
98void befs_dump_index_node(const struct super_block *sb, befs_btree_nodehead *); 98void befs_dump_index_node(const struct super_block *sb, befs_btree_nodehead *);
99/****************************/ 99/****************************/
100 100
@@ -136,7 +136,7 @@ blockno2iaddr(struct super_block *sb, befs_blocknr_t blockno)
136static inline unsigned int 136static inline unsigned int
137befs_iaddrs_per_block(struct super_block *sb) 137befs_iaddrs_per_block(struct super_block *sb)
138{ 138{
139 return BEFS_SB(sb)->block_size / sizeof (befs_inode_addr); 139 return BEFS_SB(sb)->block_size / sizeof (befs_disk_inode_addr);
140} 140}
141 141
142static inline int 142static inline int
@@ -151,4 +151,6 @@ befs_brun_size(struct super_block *sb, befs_block_run run)
151 return BEFS_SB(sb)->block_size * run.len; 151 return BEFS_SB(sb)->block_size * run.len;
152} 152}
153 153
154#include "endian.h"
155
154#endif /* _LINUX_BEFS_H */ 156#endif /* _LINUX_BEFS_H */
diff --git a/fs/befs/befs_fs_types.h b/fs/befs/befs_fs_types.h
index 63ef1e18fb84..e2595c2c403a 100644
--- a/fs/befs/befs_fs_types.h
+++ b/fs/befs/befs_fs_types.h
@@ -79,17 +79,27 @@ enum inode_flags {
79 * On-Disk datastructures of BeFS 79 * On-Disk datastructures of BeFS
80 */ 80 */
81 81
82typedef u64 __bitwise fs64;
83typedef u32 __bitwise fs32;
84typedef u16 __bitwise fs16;
85
82typedef u64 befs_off_t; 86typedef u64 befs_off_t;
83typedef u64 befs_time_t; 87typedef fs64 befs_time_t;
84typedef void befs_binode_etc;
85 88
86/* Block runs */ 89/* Block runs */
87typedef struct { 90typedef struct {
91 fs32 allocation_group;
92 fs16 start;
93 fs16 len;
94} PACKED befs_disk_block_run;
95
96typedef struct {
88 u32 allocation_group; 97 u32 allocation_group;
89 u16 start; 98 u16 start;
90 u16 len; 99 u16 len;
91} PACKED befs_block_run; 100} PACKED befs_block_run;
92 101
102typedef befs_disk_block_run befs_disk_inode_addr;
93typedef befs_block_run befs_inode_addr; 103typedef befs_block_run befs_inode_addr;
94 104
95/* 105/*
@@ -97,31 +107,31 @@ typedef befs_block_run befs_inode_addr;
97 */ 107 */
98typedef struct { 108typedef struct {
99 char name[B_OS_NAME_LENGTH]; 109 char name[B_OS_NAME_LENGTH];
100 u32 magic1; 110 fs32 magic1;
101 u32 fs_byte_order; 111 fs32 fs_byte_order;
102 112
103 u32 block_size; 113 fs32 block_size;
104 u32 block_shift; 114 fs32 block_shift;
105 115
106 befs_off_t num_blocks; 116 fs64 num_blocks;
107 befs_off_t used_blocks; 117 fs64 used_blocks;
108 118
109 u32 inode_size; 119 fs32 inode_size;
110 120
111 u32 magic2; 121 fs32 magic2;
112 u32 blocks_per_ag; 122 fs32 blocks_per_ag;
113 u32 ag_shift; 123 fs32 ag_shift;
114 u32 num_ags; 124 fs32 num_ags;
115 125
116 u32 flags; 126 fs32 flags;
117 127
118 befs_block_run log_blocks; 128 befs_disk_block_run log_blocks;
119 befs_off_t log_start; 129 fs64 log_start;
120 befs_off_t log_end; 130 fs64 log_end;
121 131
122 u32 magic3; 132 fs32 magic3;
123 befs_inode_addr root_dir; 133 befs_disk_inode_addr root_dir;
124 befs_inode_addr indices; 134 befs_disk_inode_addr indices;
125 135
126} PACKED befs_super_block; 136} PACKED befs_super_block;
127 137
@@ -130,6 +140,16 @@ typedef struct {
130 * be longer than one block! 140 * be longer than one block!
131 */ 141 */
132typedef struct { 142typedef struct {
143 befs_disk_block_run direct[BEFS_NUM_DIRECT_BLOCKS];
144 fs64 max_direct_range;
145 befs_disk_block_run indirect;
146 fs64 max_indirect_range;
147 befs_disk_block_run double_indirect;
148 fs64 max_double_indirect_range;
149 fs64 size;
150} PACKED befs_disk_data_stream;
151
152typedef struct {
133 befs_block_run direct[BEFS_NUM_DIRECT_BLOCKS]; 153 befs_block_run direct[BEFS_NUM_DIRECT_BLOCKS];
134 befs_off_t max_direct_range; 154 befs_off_t max_direct_range;
135 befs_block_run indirect; 155 befs_block_run indirect;
@@ -141,35 +161,35 @@ typedef struct {
141 161
142/* Attribute */ 162/* Attribute */
143typedef struct { 163typedef struct {
144 u32 type; 164 fs32 type;
145 u16 name_size; 165 fs16 name_size;
146 u16 data_size; 166 fs16 data_size;
147 char name[1]; 167 char name[1];
148} PACKED befs_small_data; 168} PACKED befs_small_data;
149 169
150/* Inode structure */ 170/* Inode structure */
151typedef struct { 171typedef struct {
152 u32 magic1; 172 fs32 magic1;
153 befs_inode_addr inode_num; 173 befs_disk_inode_addr inode_num;
154 u32 uid; 174 fs32 uid;
155 u32 gid; 175 fs32 gid;
156 u32 mode; 176 fs32 mode;
157 u32 flags; 177 fs32 flags;
158 befs_time_t create_time; 178 befs_time_t create_time;
159 befs_time_t last_modified_time; 179 befs_time_t last_modified_time;
160 befs_inode_addr parent; 180 befs_disk_inode_addr parent;
161 befs_inode_addr attributes; 181 befs_disk_inode_addr attributes;
162 u32 type; 182 fs32 type;
163 183
164 u32 inode_size; 184 fs32 inode_size;
165 u32 etc; /* not use */ 185 fs32 etc; /* not use */
166 186
167 union { 187 union {
168 befs_data_stream datastream; 188 befs_disk_data_stream datastream;
169 char symlink[BEFS_SYMLINK_LEN]; 189 char symlink[BEFS_SYMLINK_LEN];
170 } data; 190 } data;
171 191
172 u32 pad[4]; /* not use */ 192 fs32 pad[4]; /* not use */
173 befs_small_data small_data[1]; 193 befs_small_data small_data[1];
174} PACKED befs_inode; 194} PACKED befs_inode;
175 195
@@ -190,6 +210,16 @@ enum btree_types {
190}; 210};
191 211
192typedef struct { 212typedef struct {
213 fs32 magic;
214 fs32 node_size;
215 fs32 max_depth;
216 fs32 data_type;
217 fs64 root_node_ptr;
218 fs64 free_node_ptr;
219 fs64 max_size;
220} PACKED befs_disk_btree_super;
221
222typedef struct {
193 u32 magic; 223 u32 magic;
194 u32 node_size; 224 u32 node_size;
195 u32 max_depth; 225 u32 max_depth;
@@ -203,11 +233,19 @@ typedef struct {
203 * Header stucture of each btree node 233 * Header stucture of each btree node
204 */ 234 */
205typedef struct { 235typedef struct {
236 fs64 left;
237 fs64 right;
238 fs64 overflow;
239 fs16 all_key_count;
240 fs16 all_key_length;
241} PACKED befs_btree_nodehead;
242
243typedef struct {
206 befs_off_t left; 244 befs_off_t left;
207 befs_off_t right; 245 befs_off_t right;
208 befs_off_t overflow; 246 befs_off_t overflow;
209 u16 all_key_count; 247 u16 all_key_count;
210 u16 all_key_length; 248 u16 all_key_length;
211} PACKED befs_btree_nodehead; 249} PACKED befs_host_btree_nodehead;
212 250
213#endif /* _LINUX_BEFS_FS_TYPES */ 251#endif /* _LINUX_BEFS_FS_TYPES */
diff --git a/fs/befs/btree.c b/fs/befs/btree.c
index 76e219799409..81b042ee24e6 100644
--- a/fs/befs/btree.c
+++ b/fs/befs/btree.c
@@ -30,7 +30,6 @@
30#include "befs.h" 30#include "befs.h"
31#include "btree.h" 31#include "btree.h"
32#include "datastream.h" 32#include "datastream.h"
33#include "endian.h"
34 33
35/* 34/*
36 * The btree functions in this file are built on top of the 35 * The btree functions in this file are built on top of the
@@ -80,7 +79,7 @@
80 * In memory structure of each btree node 79 * In memory structure of each btree node
81 */ 80 */
82typedef struct { 81typedef struct {
83 befs_btree_nodehead head; /* head of node converted to cpu byteorder */ 82 befs_host_btree_nodehead head; /* head of node converted to cpu byteorder */
84 struct buffer_head *bh; 83 struct buffer_head *bh;
85 befs_btree_nodehead *od_node; /* on disk node */ 84 befs_btree_nodehead *od_node; /* on disk node */
86} befs_btree_node; 85} befs_btree_node;
@@ -102,9 +101,9 @@ static int befs_bt_read_node(struct super_block *sb, befs_data_stream * ds,
102 101
103static int befs_leafnode(befs_btree_node * node); 102static int befs_leafnode(befs_btree_node * node);
104 103
105static u16 *befs_bt_keylen_index(befs_btree_node * node); 104static fs16 *befs_bt_keylen_index(befs_btree_node * node);
106 105
107static befs_off_t *befs_bt_valarray(befs_btree_node * node); 106static fs64 *befs_bt_valarray(befs_btree_node * node);
108 107
109static char *befs_bt_keydata(befs_btree_node * node); 108static char *befs_bt_keydata(befs_btree_node * node);
110 109
@@ -136,7 +135,7 @@ befs_bt_read_super(struct super_block *sb, befs_data_stream * ds,
136 befs_btree_super * sup) 135 befs_btree_super * sup)
137{ 136{
138 struct buffer_head *bh = NULL; 137 struct buffer_head *bh = NULL;
139 befs_btree_super *od_sup = NULL; 138 befs_disk_btree_super *od_sup = NULL;
140 139
141 befs_debug(sb, "---> befs_btree_read_super()"); 140 befs_debug(sb, "---> befs_btree_read_super()");
142 141
@@ -146,7 +145,7 @@ befs_bt_read_super(struct super_block *sb, befs_data_stream * ds,
146 befs_error(sb, "Couldn't read index header."); 145 befs_error(sb, "Couldn't read index header.");
147 goto error; 146 goto error;
148 } 147 }
149 od_sup = (befs_btree_super *) bh->b_data; 148 od_sup = (befs_disk_btree_super *) bh->b_data;
150 befs_dump_index_entry(sb, od_sup); 149 befs_dump_index_entry(sb, od_sup);
151 150
152 sup->magic = fs32_to_cpu(sb, od_sup->magic); 151 sup->magic = fs32_to_cpu(sb, od_sup->magic);
@@ -342,7 +341,7 @@ befs_find_key(struct super_block *sb, befs_btree_node * node,
342 u16 keylen; 341 u16 keylen;
343 int findkey_len; 342 int findkey_len;
344 char *thiskey; 343 char *thiskey;
345 befs_off_t *valarray; 344 fs64 *valarray;
346 345
347 befs_debug(sb, "---> befs_find_key() %s", findkey); 346 befs_debug(sb, "---> befs_find_key() %s", findkey);
348 347
@@ -422,7 +421,7 @@ befs_btree_read(struct super_block *sb, befs_data_stream * ds,
422 befs_btree_super bt_super; 421 befs_btree_super bt_super;
423 befs_off_t node_off = 0; 422 befs_off_t node_off = 0;
424 int cur_key; 423 int cur_key;
425 befs_off_t *valarray; 424 fs64 *valarray;
426 char *keystart; 425 char *keystart;
427 u16 keylen; 426 u16 keylen;
428 int res; 427 int res;
@@ -572,7 +571,7 @@ befs_btree_seekleaf(struct super_block *sb, befs_data_stream * ds,
572 this_node->head.overflow); 571 this_node->head.overflow);
573 *node_off = this_node->head.overflow; 572 *node_off = this_node->head.overflow;
574 } else { 573 } else {
575 befs_off_t *valarray = befs_bt_valarray(this_node); 574 fs64 *valarray = befs_bt_valarray(this_node);
576 *node_off = fs64_to_cpu(sb, valarray[0]); 575 *node_off = fs64_to_cpu(sb, valarray[0]);
577 } 576 }
578 if (befs_bt_read_node(sb, ds, this_node, *node_off) != BEFS_OK) { 577 if (befs_bt_read_node(sb, ds, this_node, *node_off) != BEFS_OK) {
@@ -622,7 +621,7 @@ befs_leafnode(befs_btree_node * node)
622 * 621 *
623 * Except that rounding up to 8 works, and rounding up to 4 doesn't. 622 * Except that rounding up to 8 works, and rounding up to 4 doesn't.
624 */ 623 */
625static u16 * 624static fs16 *
626befs_bt_keylen_index(befs_btree_node * node) 625befs_bt_keylen_index(befs_btree_node * node)
627{ 626{
628 const int keylen_align = 8; 627 const int keylen_align = 8;
@@ -633,7 +632,7 @@ befs_bt_keylen_index(befs_btree_node * node)
633 if (tmp) 632 if (tmp)
634 off += keylen_align - tmp; 633 off += keylen_align - tmp;
635 634
636 return (u16 *) ((void *) node->od_node + off); 635 return (fs16 *) ((void *) node->od_node + off);
637} 636}
638 637
639/** 638/**
@@ -643,13 +642,13 @@ befs_bt_keylen_index(befs_btree_node * node)
643 * Returns a pointer to the start of the value array 642 * Returns a pointer to the start of the value array
644 * of the node pointed to by the node header 643 * of the node pointed to by the node header
645 */ 644 */
646static befs_off_t * 645static fs64 *
647befs_bt_valarray(befs_btree_node * node) 646befs_bt_valarray(befs_btree_node * node)
648{ 647{
649 void *keylen_index_start = (void *) befs_bt_keylen_index(node); 648 void *keylen_index_start = (void *) befs_bt_keylen_index(node);
650 size_t keylen_index_size = node->head.all_key_count * sizeof (u16); 649 size_t keylen_index_size = node->head.all_key_count * sizeof (fs16);
651 650
652 return (befs_off_t *) (keylen_index_start + keylen_index_size); 651 return (fs64 *) (keylen_index_start + keylen_index_size);
653} 652}
654 653
655/** 654/**
@@ -681,7 +680,7 @@ befs_bt_get_key(struct super_block *sb, befs_btree_node * node,
681{ 680{
682 int prev_key_end; 681 int prev_key_end;
683 char *keystart; 682 char *keystart;
684 u16 *keylen_index; 683 fs16 *keylen_index;
685 684
686 if (index < 0 || index > node->head.all_key_count) { 685 if (index < 0 || index > node->head.all_key_count) {
687 *keylen = 0; 686 *keylen = 0;
diff --git a/fs/befs/datastream.c b/fs/befs/datastream.c
index b7d6b920f65f..aacb4da6298a 100644
--- a/fs/befs/datastream.c
+++ b/fs/befs/datastream.c
@@ -18,7 +18,6 @@
18#include "befs.h" 18#include "befs.h"
19#include "datastream.h" 19#include "datastream.h"
20#include "io.h" 20#include "io.h"
21#include "endian.h"
22 21
23const befs_inode_addr BAD_IADDR = { 0, 0, 0 }; 22const befs_inode_addr BAD_IADDR = { 0, 0, 0 };
24 23
@@ -312,7 +311,7 @@ befs_find_brun_indirect(struct super_block *sb,
312 befs_blocknr_t indir_start_blk; 311 befs_blocknr_t indir_start_blk;
313 befs_blocknr_t search_blk; 312 befs_blocknr_t search_blk;
314 struct buffer_head *indirblock; 313 struct buffer_head *indirblock;
315 befs_block_run *array; 314 befs_disk_block_run *array;
316 315
317 befs_block_run indirect = data->indirect; 316 befs_block_run indirect = data->indirect;
318 befs_blocknr_t indirblockno = iaddr2blockno(sb, &indirect); 317 befs_blocknr_t indirblockno = iaddr2blockno(sb, &indirect);
@@ -334,7 +333,7 @@ befs_find_brun_indirect(struct super_block *sb,
334 return BEFS_ERR; 333 return BEFS_ERR;
335 } 334 }
336 335
337 array = (befs_block_run *) indirblock->b_data; 336 array = (befs_disk_block_run *) indirblock->b_data;
338 337
339 for (j = 0; j < arraylen; ++j) { 338 for (j = 0; j < arraylen; ++j) {
340 int len = fs16_to_cpu(sb, array[j].len); 339 int len = fs16_to_cpu(sb, array[j].len);
@@ -427,7 +426,7 @@ befs_find_brun_dblindirect(struct super_block *sb,
427 struct buffer_head *dbl_indir_block; 426 struct buffer_head *dbl_indir_block;
428 struct buffer_head *indir_block; 427 struct buffer_head *indir_block;
429 befs_block_run indir_run; 428 befs_block_run indir_run;
430 befs_inode_addr *iaddr_array = NULL; 429 befs_disk_inode_addr *iaddr_array = NULL;
431 befs_sb_info *befs_sb = BEFS_SB(sb); 430 befs_sb_info *befs_sb = BEFS_SB(sb);
432 431
433 befs_blocknr_t indir_start_blk = 432 befs_blocknr_t indir_start_blk =
@@ -482,7 +481,7 @@ befs_find_brun_dblindirect(struct super_block *sb,
482 481
483 dbl_block_indx = 482 dbl_block_indx =
484 dblindir_indx - (dbl_which_block * befs_iaddrs_per_block(sb)); 483 dblindir_indx - (dbl_which_block * befs_iaddrs_per_block(sb));
485 iaddr_array = (befs_inode_addr *) dbl_indir_block->b_data; 484 iaddr_array = (befs_disk_inode_addr *) dbl_indir_block->b_data;
486 indir_run = fsrun_to_cpu(sb, iaddr_array[dbl_block_indx]); 485 indir_run = fsrun_to_cpu(sb, iaddr_array[dbl_block_indx]);
487 brelse(dbl_indir_block); 486 brelse(dbl_indir_block);
488 iaddr_array = NULL; 487 iaddr_array = NULL;
@@ -507,7 +506,7 @@ befs_find_brun_dblindirect(struct super_block *sb,
507 } 506 }
508 507
509 block_indx = indir_indx - (which_block * befs_iaddrs_per_block(sb)); 508 block_indx = indir_indx - (which_block * befs_iaddrs_per_block(sb));
510 iaddr_array = (befs_inode_addr *) indir_block->b_data; 509 iaddr_array = (befs_disk_inode_addr *) indir_block->b_data;
511 *run = fsrun_to_cpu(sb, iaddr_array[block_indx]); 510 *run = fsrun_to_cpu(sb, iaddr_array[block_indx]);
512 brelse(indir_block); 511 brelse(indir_block);
513 iaddr_array = NULL; 512 iaddr_array = NULL;
diff --git a/fs/befs/debug.c b/fs/befs/debug.c
index 875cc0aa318c..e831a8f30849 100644
--- a/fs/befs/debug.c
+++ b/fs/befs/debug.c
@@ -21,7 +21,6 @@
21#endif /* __KERNEL__ */ 21#endif /* __KERNEL__ */
22 22
23#include "befs.h" 23#include "befs.h"
24#include "endian.h"
25 24
26#define ERRBUFSIZE 1024 25#define ERRBUFSIZE 1024
27 26
@@ -125,7 +124,7 @@ befs_dump_inode(const struct super_block *sb, befs_inode * inode)
125 befs_debug(sb, " type %08x", fs32_to_cpu(sb, inode->type)); 124 befs_debug(sb, " type %08x", fs32_to_cpu(sb, inode->type));
126 befs_debug(sb, " inode_size %u", fs32_to_cpu(sb, inode->inode_size)); 125 befs_debug(sb, " inode_size %u", fs32_to_cpu(sb, inode->inode_size));
127 126
128 if (S_ISLNK(inode->mode)) { 127 if (S_ISLNK(fs32_to_cpu(sb, inode->mode))) {
129 befs_debug(sb, " Symbolic link [%s]", inode->data.symlink); 128 befs_debug(sb, " Symbolic link [%s]", inode->data.symlink);
130 } else { 129 } else {
131 int i; 130 int i;
@@ -231,21 +230,20 @@ befs_dump_small_data(const struct super_block *sb, befs_small_data * sd)
231 230
232/* unused */ 231/* unused */
233void 232void
234befs_dump_run(const struct super_block *sb, befs_block_run run) 233befs_dump_run(const struct super_block *sb, befs_disk_block_run run)
235{ 234{
236#ifdef CONFIG_BEFS_DEBUG 235#ifdef CONFIG_BEFS_DEBUG
237 236
238 run = fsrun_to_cpu(sb, run); 237 befs_block_run n = fsrun_to_cpu(sb, run);
239 238
240 befs_debug(sb, "[%u, %hu, %hu]", 239 befs_debug(sb, "[%u, %hu, %hu]", n.allocation_group, n.start, n.len);
241 run.allocation_group, run.start, run.len);
242 240
243#endif //CONFIG_BEFS_DEBUG 241#endif //CONFIG_BEFS_DEBUG
244} 242}
245#endif /* 0 */ 243#endif /* 0 */
246 244
247void 245void
248befs_dump_index_entry(const struct super_block *sb, befs_btree_super * super) 246befs_dump_index_entry(const struct super_block *sb, befs_disk_btree_super * super)
249{ 247{
250#ifdef CONFIG_BEFS_DEBUG 248#ifdef CONFIG_BEFS_DEBUG
251 249
diff --git a/fs/befs/endian.h b/fs/befs/endian.h
index 9ecaea4e3325..e254a20869f4 100644
--- a/fs/befs/endian.h
+++ b/fs/befs/endian.h
@@ -10,85 +10,84 @@
10#define LINUX_BEFS_ENDIAN 10#define LINUX_BEFS_ENDIAN
11 11
12#include <linux/byteorder/generic.h> 12#include <linux/byteorder/generic.h>
13#include "befs.h"
14 13
15static inline u64 14static inline u64
16fs64_to_cpu(const struct super_block *sb, u64 n) 15fs64_to_cpu(const struct super_block *sb, fs64 n)
17{ 16{
18 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) 17 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
19 return le64_to_cpu(n); 18 return le64_to_cpu((__force __le64)n);
20 else 19 else
21 return be64_to_cpu(n); 20 return be64_to_cpu((__force __be64)n);
22} 21}
23 22
24static inline u64 23static inline fs64
25cpu_to_fs64(const struct super_block *sb, u64 n) 24cpu_to_fs64(const struct super_block *sb, u64 n)
26{ 25{
27 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) 26 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
28 return cpu_to_le64(n); 27 return (__force fs64)cpu_to_le64(n);
29 else 28 else
30 return cpu_to_be64(n); 29 return (__force fs64)cpu_to_be64(n);
31} 30}
32 31
33static inline u32 32static inline u32
34fs32_to_cpu(const struct super_block *sb, u32 n) 33fs32_to_cpu(const struct super_block *sb, fs32 n)
35{ 34{
36 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) 35 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
37 return le32_to_cpu(n); 36 return le32_to_cpu((__force __le32)n);
38 else 37 else
39 return be32_to_cpu(n); 38 return be32_to_cpu((__force __be32)n);
40} 39}
41 40
42static inline u32 41static inline fs32
43cpu_to_fs32(const struct super_block *sb, u32 n) 42cpu_to_fs32(const struct super_block *sb, u32 n)
44{ 43{
45 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) 44 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
46 return cpu_to_le32(n); 45 return (__force fs32)cpu_to_le32(n);
47 else 46 else
48 return cpu_to_be32(n); 47 return (__force fs32)cpu_to_be32(n);
49} 48}
50 49
51static inline u16 50static inline u16
52fs16_to_cpu(const struct super_block *sb, u16 n) 51fs16_to_cpu(const struct super_block *sb, fs16 n)
53{ 52{
54 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) 53 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
55 return le16_to_cpu(n); 54 return le16_to_cpu((__force __le16)n);
56 else 55 else
57 return be16_to_cpu(n); 56 return be16_to_cpu((__force __be16)n);
58} 57}
59 58
60static inline u16 59static inline fs16
61cpu_to_fs16(const struct super_block *sb, u16 n) 60cpu_to_fs16(const struct super_block *sb, u16 n)
62{ 61{
63 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) 62 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE)
64 return cpu_to_le16(n); 63 return (__force fs16)cpu_to_le16(n);
65 else 64 else
66 return cpu_to_be16(n); 65 return (__force fs16)cpu_to_be16(n);
67} 66}
68 67
69/* Composite types below here */ 68/* Composite types below here */
70 69
71static inline befs_block_run 70static inline befs_block_run
72fsrun_to_cpu(const struct super_block *sb, befs_block_run n) 71fsrun_to_cpu(const struct super_block *sb, befs_disk_block_run n)
73{ 72{
74 befs_block_run run; 73 befs_block_run run;
75 74
76 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) { 75 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) {
77 run.allocation_group = le32_to_cpu(n.allocation_group); 76 run.allocation_group = le32_to_cpu((__force __le32)n.allocation_group);
78 run.start = le16_to_cpu(n.start); 77 run.start = le16_to_cpu((__force __le16)n.start);
79 run.len = le16_to_cpu(n.len); 78 run.len = le16_to_cpu((__force __le16)n.len);
80 } else { 79 } else {
81 run.allocation_group = be32_to_cpu(n.allocation_group); 80 run.allocation_group = be32_to_cpu((__force __be32)n.allocation_group);
82 run.start = be16_to_cpu(n.start); 81 run.start = be16_to_cpu((__force __be16)n.start);
83 run.len = be16_to_cpu(n.len); 82 run.len = be16_to_cpu((__force __be16)n.len);
84 } 83 }
85 return run; 84 return run;
86} 85}
87 86
88static inline befs_block_run 87static inline befs_disk_block_run
89cpu_to_fsrun(const struct super_block *sb, befs_block_run n) 88cpu_to_fsrun(const struct super_block *sb, befs_block_run n)
90{ 89{
91 befs_block_run run; 90 befs_disk_block_run run;
92 91
93 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) { 92 if (BEFS_SB(sb)->byte_order == BEFS_BYTESEX_LE) {
94 run.allocation_group = cpu_to_le32(n.allocation_group); 93 run.allocation_group = cpu_to_le32(n.allocation_group);
@@ -103,7 +102,7 @@ cpu_to_fsrun(const struct super_block *sb, befs_block_run n)
103} 102}
104 103
105static inline befs_data_stream 104static inline befs_data_stream
106fsds_to_cpu(const struct super_block *sb, befs_data_stream n) 105fsds_to_cpu(const struct super_block *sb, befs_disk_data_stream n)
107{ 106{
108 befs_data_stream data; 107 befs_data_stream data;
109 int i; 108 int i;
diff --git a/fs/befs/inode.c b/fs/befs/inode.c
index d41c9247ae8a..94c17f9a9576 100644
--- a/fs/befs/inode.c
+++ b/fs/befs/inode.c
@@ -8,7 +8,6 @@
8 8
9#include "befs.h" 9#include "befs.h"
10#include "inode.h" 10#include "inode.h"
11#include "endian.h"
12 11
13/* 12/*
14 Validates the correctness of the befs inode 13 Validates the correctness of the befs inode
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index 57020c7a7e65..07f7144f0e2e 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -22,7 +22,6 @@
22#include "datastream.h" 22#include "datastream.h"
23#include "super.h" 23#include "super.h"
24#include "io.h" 24#include "io.h"
25#include "endian.h"
26 25
27MODULE_DESCRIPTION("BeOS File System (BeFS) driver"); 26MODULE_DESCRIPTION("BeOS File System (BeFS) driver");
28MODULE_AUTHOR("Will Dyson"); 27MODULE_AUTHOR("Will Dyson");
diff --git a/fs/befs/super.c b/fs/befs/super.c
index 4557acbac528..8c3401ff6d6a 100644
--- a/fs/befs/super.c
+++ b/fs/befs/super.c
@@ -11,7 +11,6 @@
11 11
12#include "befs.h" 12#include "befs.h"
13#include "super.h" 13#include "super.h"
14#include "endian.h"
15 14
16/** 15/**
17 * load_befs_sb -- Read from disk and properly byteswap all the fields 16 * load_befs_sb -- Read from disk and properly byteswap all the fields
diff --git a/fs/buffer.c b/fs/buffer.c
index 16cfbcd254f1..eeb8ac1aa856 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -701,7 +701,10 @@ EXPORT_SYMBOL(mark_buffer_dirty_inode);
701 */ 701 */
702int __set_page_dirty_buffers(struct page *page) 702int __set_page_dirty_buffers(struct page *page)
703{ 703{
704 struct address_space * const mapping = page->mapping; 704 struct address_space * const mapping = page_mapping(page);
705
706 if (unlikely(!mapping))
707 return !TestSetPageDirty(page);
705 708
706 spin_lock(&mapping->private_lock); 709 spin_lock(&mapping->private_lock);
707 if (page_has_buffers(page)) { 710 if (page_has_buffers(page)) {
diff --git a/fs/compat.c b/fs/compat.c
index 4d3fbcb2ddb1..50624d4a70c6 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -1316,7 +1316,7 @@ compat_sys_vmsplice(int fd, const struct compat_iovec __user *iov32,
1316 unsigned int nr_segs, unsigned int flags) 1316 unsigned int nr_segs, unsigned int flags)
1317{ 1317{
1318 unsigned i; 1318 unsigned i;
1319 struct iovec *iov; 1319 struct iovec __user *iov;
1320 if (nr_segs > UIO_MAXIOV) 1320 if (nr_segs > UIO_MAXIOV)
1321 return -EINVAL; 1321 return -EINVAL;
1322 iov = compat_alloc_user_space(nr_segs * sizeof(struct iovec)); 1322 iov = compat_alloc_user_space(nr_segs * sizeof(struct iovec));
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c
index 23f5ce12080b..7bcea7c5addb 100644
--- a/fs/dlm/lowcomms.c
+++ b/fs/dlm/lowcomms.c
@@ -174,7 +174,7 @@ static int nodeid_to_addr(int nodeid, struct sockaddr *retaddr)
174 return 0; 174 return 0;
175} 175}
176 176
177static struct nodeinfo *nodeid2nodeinfo(int nodeid, int alloc) 177static struct nodeinfo *nodeid2nodeinfo(int nodeid, gfp_t alloc)
178{ 178{
179 struct nodeinfo *ni; 179 struct nodeinfo *ni;
180 int r; 180 int r;
@@ -726,7 +726,7 @@ static int init_sock(void)
726} 726}
727 727
728 728
729static struct writequeue_entry *new_writequeue_entry(int allocation) 729static struct writequeue_entry *new_writequeue_entry(gfp_t allocation)
730{ 730{
731 struct writequeue_entry *entry; 731 struct writequeue_entry *entry;
732 732
@@ -748,7 +748,7 @@ static struct writequeue_entry *new_writequeue_entry(int allocation)
748 return entry; 748 return entry;
749} 749}
750 750
751void *dlm_lowcomms_get_buffer(int nodeid, int len, int allocation, char **ppc) 751void *dlm_lowcomms_get_buffer(int nodeid, int len, gfp_t allocation, char **ppc)
752{ 752{
753 struct writequeue_entry *e; 753 struct writequeue_entry *e;
754 int offset = 0; 754 int offset = 0;
diff --git a/fs/dlm/lowcomms.h b/fs/dlm/lowcomms.h
index 6c04bb09cfa8..2d045e0daae1 100644
--- a/fs/dlm/lowcomms.h
+++ b/fs/dlm/lowcomms.h
@@ -19,7 +19,7 @@ void dlm_lowcomms_exit(void);
19int dlm_lowcomms_start(void); 19int dlm_lowcomms_start(void);
20void dlm_lowcomms_stop(void); 20void dlm_lowcomms_stop(void);
21int dlm_lowcomms_close(int nodeid); 21int dlm_lowcomms_close(int nodeid);
22void *dlm_lowcomms_get_buffer(int nodeid, int len, int allocation, char **ppc); 22void *dlm_lowcomms_get_buffer(int nodeid, int len, gfp_t allocation, char **ppc);
23void dlm_lowcomms_commit_buffer(void *mh); 23void dlm_lowcomms_commit_buffer(void *mh);
24 24
25#endif /* __LOWCOMMS_DOT_H__ */ 25#endif /* __LOWCOMMS_DOT_H__ */
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 045738032a83..4613cb202170 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -384,7 +384,7 @@ static int fat_fill_inode(struct inode *inode, struct msdos_dir_entry *de)
384 le16_to_cpu(de->cdate)) + secs; 384 le16_to_cpu(de->cdate)) + secs;
385 inode->i_ctime.tv_nsec = csecs * 10000000; 385 inode->i_ctime.tv_nsec = csecs * 10000000;
386 inode->i_atime.tv_sec = 386 inode->i_atime.tv_sec =
387 date_dos2unix(le16_to_cpu(0), le16_to_cpu(de->adate)); 387 date_dos2unix(0, le16_to_cpu(de->adate));
388 inode->i_atime.tv_nsec = 0; 388 inode->i_atime.tv_nsec = 0;
389 } else 389 } else
390 inode->i_ctime = inode->i_atime = inode->i_mtime; 390 inode->i_ctime = inode->i_atime = inode->i_mtime;
diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c
index bcf6ee36e065..7faef8544f32 100644
--- a/fs/hpfs/inode.c
+++ b/fs/hpfs/inode.c
@@ -60,14 +60,14 @@ void hpfs_read_inode(struct inode *i)
60 if (hpfs_sb(i->i_sb)->sb_eas) { 60 if (hpfs_sb(i->i_sb)->sb_eas) {
61 if ((ea = hpfs_get_ea(i->i_sb, fnode, "UID", &ea_size))) { 61 if ((ea = hpfs_get_ea(i->i_sb, fnode, "UID", &ea_size))) {
62 if (ea_size == 2) { 62 if (ea_size == 2) {
63 i->i_uid = le16_to_cpu(*(u16*)ea); 63 i->i_uid = le16_to_cpu(*(__le16*)ea);
64 hpfs_inode->i_ea_uid = 1; 64 hpfs_inode->i_ea_uid = 1;
65 } 65 }
66 kfree(ea); 66 kfree(ea);
67 } 67 }
68 if ((ea = hpfs_get_ea(i->i_sb, fnode, "GID", &ea_size))) { 68 if ((ea = hpfs_get_ea(i->i_sb, fnode, "GID", &ea_size))) {
69 if (ea_size == 2) { 69 if (ea_size == 2) {
70 i->i_gid = le16_to_cpu(*(u16*)ea); 70 i->i_gid = le16_to_cpu(*(__le16*)ea);
71 hpfs_inode->i_ea_gid = 1; 71 hpfs_inode->i_ea_gid = 1;
72 } 72 }
73 kfree(ea); 73 kfree(ea);
@@ -87,7 +87,7 @@ void hpfs_read_inode(struct inode *i)
87 int rdev = 0; 87 int rdev = 0;
88 umode_t mode = hpfs_sb(sb)->sb_mode; 88 umode_t mode = hpfs_sb(sb)->sb_mode;
89 if (ea_size == 2) { 89 if (ea_size == 2) {
90 mode = le16_to_cpu(*(u16*)ea); 90 mode = le16_to_cpu(*(__le16*)ea);
91 hpfs_inode->i_ea_mode = 1; 91 hpfs_inode->i_ea_mode = 1;
92 } 92 }
93 kfree(ea); 93 kfree(ea);
@@ -95,7 +95,7 @@ void hpfs_read_inode(struct inode *i)
95 if (S_ISBLK(mode) || S_ISCHR(mode)) { 95 if (S_ISBLK(mode) || S_ISCHR(mode)) {
96 if ((ea = hpfs_get_ea(i->i_sb, fnode, "DEV", &ea_size))) { 96 if ((ea = hpfs_get_ea(i->i_sb, fnode, "DEV", &ea_size))) {
97 if (ea_size == 4) 97 if (ea_size == 4)
98 rdev = le32_to_cpu(*(u32*)ea); 98 rdev = le32_to_cpu(*(__le32*)ea);
99 kfree(ea); 99 kfree(ea);
100 } 100 }
101 } 101 }
@@ -148,7 +148,7 @@ static void hpfs_write_inode_ea(struct inode *i, struct fnode *fnode)
148 we'd better not overwrite them 148 we'd better not overwrite them
149 hpfs_error(i->i_sb, "fnode %08x has some unknown HPFS386 stuctures", i->i_ino); 149 hpfs_error(i->i_sb, "fnode %08x has some unknown HPFS386 stuctures", i->i_ino);
150 } else*/ if (hpfs_sb(i->i_sb)->sb_eas >= 2) { 150 } else*/ if (hpfs_sb(i->i_sb)->sb_eas >= 2) {
151 u32 ea; 151 __le32 ea;
152 if ((i->i_uid != hpfs_sb(i->i_sb)->sb_uid) || hpfs_inode->i_ea_uid) { 152 if ((i->i_uid != hpfs_sb(i->i_sb)->sb_uid) || hpfs_inode->i_ea_uid) {
153 ea = cpu_to_le32(i->i_uid); 153 ea = cpu_to_le32(i->i_uid);
154 hpfs_set_ea(i, fnode, "UID", (char*)&ea, 2); 154 hpfs_set_ea(i, fnode, "UID", (char*)&ea, 2);
@@ -165,6 +165,7 @@ static void hpfs_write_inode_ea(struct inode *i, struct fnode *fnode)
165 && i->i_mode != ((hpfs_sb(i->i_sb)->sb_mode & ~(S_ISDIR(i->i_mode) ? 0222 : 0333)) 165 && i->i_mode != ((hpfs_sb(i->i_sb)->sb_mode & ~(S_ISDIR(i->i_mode) ? 0222 : 0333))
166 | (S_ISDIR(i->i_mode) ? S_IFDIR : S_IFREG))) || hpfs_inode->i_ea_mode) { 166 | (S_ISDIR(i->i_mode) ? S_IFDIR : S_IFREG))) || hpfs_inode->i_ea_mode) {
167 ea = cpu_to_le32(i->i_mode); 167 ea = cpu_to_le32(i->i_mode);
168 /* sick, but legal */
168 hpfs_set_ea(i, fnode, "MODE", (char *)&ea, 2); 169 hpfs_set_ea(i, fnode, "MODE", (char *)&ea, 2);
169 hpfs_inode->i_ea_mode = 1; 170 hpfs_inode->i_ea_mode = 1;
170 } 171 }
diff --git a/fs/hppfs/hppfs_kern.c b/fs/hppfs/hppfs_kern.c
index dcb6d2e988b8..642675fc394a 100644
--- a/fs/hppfs/hppfs_kern.c
+++ b/fs/hppfs/hppfs_kern.c
@@ -572,7 +572,7 @@ struct hppfs_dirent {
572}; 572};
573 573
574static int hppfs_filldir(void *d, const char *name, int size, 574static int hppfs_filldir(void *d, const char *name, int size,
575 loff_t offset, ino_t inode, unsigned int type) 575 loff_t offset, u64 inode, unsigned int type)
576{ 576{
577 struct hppfs_dirent *dirent = d; 577 struct hppfs_dirent *dirent = d;
578 578
diff --git a/fs/inode.c b/fs/inode.c
index bf6bec4e54ff..d9a21d122926 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -162,7 +162,7 @@ static struct inode *alloc_inode(struct super_block *sb)
162 bdi = sb->s_bdev->bd_inode->i_mapping->backing_dev_info; 162 bdi = sb->s_bdev->bd_inode->i_mapping->backing_dev_info;
163 mapping->backing_dev_info = bdi; 163 mapping->backing_dev_info = bdi;
164 } 164 }
165 inode->i_private = 0; 165 inode->i_private = NULL;
166 inode->i_mapping = mapping; 166 inode->i_mapping = mapping;
167 } 167 }
168 return inode; 168 return inode;
diff --git a/fs/isofs/joliet.c b/fs/isofs/joliet.c
index 81a90e170ac3..fb8fe7a9ddc6 100644
--- a/fs/isofs/joliet.c
+++ b/fs/isofs/joliet.c
@@ -14,9 +14,9 @@
14 * Convert Unicode 16 to UTF-8 or ASCII. 14 * Convert Unicode 16 to UTF-8 or ASCII.
15 */ 15 */
16static int 16static int
17uni16_to_x8(unsigned char *ascii, u16 *uni, int len, struct nls_table *nls) 17uni16_to_x8(unsigned char *ascii, __be16 *uni, int len, struct nls_table *nls)
18{ 18{
19 wchar_t *ip, ch; 19 __be16 *ip, ch;
20 unsigned char *op; 20 unsigned char *op;
21 21
22 ip = uni; 22 ip = uni;
@@ -24,8 +24,8 @@ uni16_to_x8(unsigned char *ascii, u16 *uni, int len, struct nls_table *nls)
24 24
25 while ((ch = get_unaligned(ip)) && len) { 25 while ((ch = get_unaligned(ip)) && len) {
26 int llen; 26 int llen;
27 ch = be16_to_cpu(ch); 27 llen = nls->uni2char(be16_to_cpu(ch), op, NLS_MAX_CHARSET_SIZE);
28 if ((llen = nls->uni2char(ch, op, NLS_MAX_CHARSET_SIZE)) > 0) 28 if (llen > 0)
29 op += llen; 29 op += llen;
30 else 30 else
31 *op++ = '?'; 31 *op++ = '?';
@@ -82,7 +82,7 @@ get_joliet_filename(struct iso_directory_record * de, unsigned char *outname, st
82 len = wcsntombs_be(outname, de->name, 82 len = wcsntombs_be(outname, de->name,
83 de->name_len[0] >> 1, PAGE_SIZE); 83 de->name_len[0] >> 1, PAGE_SIZE);
84 } else { 84 } else {
85 len = uni16_to_x8(outname, (u16 *) de->name, 85 len = uni16_to_x8(outname, (__be16 *) de->name,
86 de->name_len[0] >> 1, nls); 86 de->name_len[0] >> 1, nls);
87 } 87 }
88 if ((len > 2) && (outname[len-2] == ';') && (outname[len-1] == '1')) { 88 if ((len > 2) && (outname[len-2] == ';') && (outname[len-1] == '1')) {
diff --git a/fs/ncpfs/ioctl.c b/fs/ncpfs/ioctl.c
index a89ac84a8241..589d1eac55c1 100644
--- a/fs/ncpfs/ioctl.c
+++ b/fs/ncpfs/ioctl.c
@@ -726,7 +726,7 @@ outrel:
726 struct compat_ncp_privatedata_ioctl user32; 726 struct compat_ncp_privatedata_ioctl user32;
727 user32.len = user.len; 727 user32.len = user.len;
728 user32.data = (unsigned long) user.data; 728 user32.data = (unsigned long) user.data;
729 if (copy_to_user(&user32, argp, sizeof(user32))) 729 if (copy_to_user(argp, &user32, sizeof(user32)))
730 return -EFAULT; 730 return -EFAULT;
731 } else 731 } else
732#endif 732#endif
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 6e4e48c5092a..34c3996bd0f5 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -322,25 +322,11 @@ found_client:
322 if (new) 322 if (new)
323 nfs_free_client(new); 323 nfs_free_client(new);
324 324
325 if (clp->cl_cons_state == NFS_CS_INITING) { 325 error = wait_event_interruptible(nfs_client_active_wq,
326 DECLARE_WAITQUEUE(myself, current); 326 clp->cl_cons_state != NFS_CS_INITING);
327 327 if (error < 0) {
328 add_wait_queue(&nfs_client_active_wq, &myself); 328 nfs_put_client(clp);
329 329 return ERR_PTR(-ERESTARTSYS);
330 for (;;) {
331 set_current_state(TASK_INTERRUPTIBLE);
332 if (signal_pending(current) ||
333 clp->cl_cons_state > NFS_CS_READY)
334 break;
335 schedule();
336 }
337
338 remove_wait_queue(&nfs_client_active_wq, &myself);
339
340 if (signal_pending(current)) {
341 nfs_put_client(clp);
342 return ERR_PTR(-ERESTARTSYS);
343 }
344 } 330 }
345 331
346 if (clp->cl_cons_state < NFS_CS_READY) { 332 if (clp->cl_cons_state < NFS_CS_READY) {
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 6fa6340a5fb8..013b38996e64 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -217,7 +217,7 @@ int nfsd_create_serv(void)
217 217
218 atomic_set(&nfsd_busy, 0); 218 atomic_set(&nfsd_busy, 0);
219 nfsd_serv = svc_create_pooled(&nfsd_program, 219 nfsd_serv = svc_create_pooled(&nfsd_program,
220 NFSD_BUFSIZE - NFSSVC_MAXBLKSIZE + nfsd_max_blksize, 220 nfsd_max_blksize,
221 nfsd_last_thread, 221 nfsd_last_thread,
222 nfsd, SIG_NOCLEAN, THIS_MODULE); 222 nfsd, SIG_NOCLEAN, THIS_MODULE);
223 if (nfsd_serv == NULL) 223 if (nfsd_serv == NULL)
diff --git a/fs/partitions/msdos.c b/fs/partitions/msdos.c
index 4f8df71e49d3..8c7af1777819 100644
--- a/fs/partitions/msdos.c
+++ b/fs/partitions/msdos.c
@@ -32,13 +32,11 @@
32#include <asm/unaligned.h> 32#include <asm/unaligned.h>
33 33
34#define SYS_IND(p) (get_unaligned(&p->sys_ind)) 34#define SYS_IND(p) (get_unaligned(&p->sys_ind))
35#define NR_SECTS(p) ({ __typeof__(p->nr_sects) __a = \ 35#define NR_SECTS(p) ({ __le32 __a = get_unaligned(&p->nr_sects); \
36 get_unaligned(&p->nr_sects); \
37 le32_to_cpu(__a); \ 36 le32_to_cpu(__a); \
38 }) 37 })
39 38
40#define START_SECT(p) ({ __typeof__(p->start_sect) __a = \ 39#define START_SECT(p) ({ __le32 __a = get_unaligned(&p->start_sect); \
41 get_unaligned(&p->start_sect); \
42 le32_to_cpu(__a); \ 40 le32_to_cpu(__a); \
43 }) 41 })
44 42
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c
index 8d88e58ed5cc..93c43b676e59 100644
--- a/fs/proc/proc_misc.c
+++ b/fs/proc/proc_misc.c
@@ -647,7 +647,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
647 647
648 if (get_user(c, buf)) 648 if (get_user(c, buf))
649 return -EFAULT; 649 return -EFAULT;
650 __handle_sysrq(c, NULL, NULL, 0); 650 __handle_sysrq(c, NULL, 0);
651 } 651 }
652 return count; 652 return count;
653} 653}
diff --git a/fs/reiserfs/bitmap.c b/fs/reiserfs/bitmap.c
index 1bfae42117ca..e3d466a228d4 100644
--- a/fs/reiserfs/bitmap.c
+++ b/fs/reiserfs/bitmap.c
@@ -1304,8 +1304,8 @@ struct buffer_head *reiserfs_read_bitmap_block(struct super_block *sb,
1304 1304
1305 bh = sb_bread(sb, block); 1305 bh = sb_bread(sb, block);
1306 if (bh == NULL) 1306 if (bh == NULL)
1307 reiserfs_warning(sb, "sh-2029: %s: bitmap block (#%lu) " 1307 reiserfs_warning(sb, "sh-2029: %s: bitmap block (#%u) "
1308 "reading failed", __FUNCTION__, bh->b_blocknr); 1308 "reading failed", __FUNCTION__, block);
1309 else { 1309 else {
1310 if (buffer_locked(bh)) { 1310 if (buffer_locked(bh)) {
1311 PROC_INFO_INC(sb, scan_bitmap.wait); 1311 PROC_INFO_INC(sb, scan_bitmap.wait);
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 1d3b5d2070e5..1aea6a4f9a4a 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -1621,9 +1621,10 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
1621 goto error_out; 1621 goto error_out;
1622 } 1622 }
1623 1623
1624 if (UDF_SB_PARTFLAGS(sb, UDF_SB_PARTITION(sb)) & UDF_PART_FLAG_READ_ONLY) 1624 if (UDF_SB_PARTFLAGS(sb, UDF_SB_PARTITION(sb)) & UDF_PART_FLAG_READ_ONLY) {
1625 printk("UDF-fs: Partition marked readonly; forcing readonly mount\n"); 1625 printk("UDF-fs: Partition marked readonly; forcing readonly mount\n");
1626 sb->s_flags |= MS_RDONLY; 1626 sb->s_flags |= MS_RDONLY;
1627 }
1627 1628
1628 if ( udf_find_fileset(sb, &fileset, &rootdir) ) 1629 if ( udf_find_fileset(sb, &fileset, &rootdir) )
1629 { 1630 {
diff --git a/fs/ufs/util.c b/fs/ufs/util.c
index 22f820a9b15c..17437574f79c 100644
--- a/fs/ufs/util.c
+++ b/fs/ufs/util.c
@@ -184,14 +184,13 @@ void _ubh_memcpyubh_(struct ufs_sb_private_info * uspi,
184dev_t 184dev_t
185ufs_get_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi) 185ufs_get_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi)
186{ 186{
187 __fs32 fs32; 187 __u32 fs32;
188 dev_t dev; 188 dev_t dev;
189 189
190 if ((UFS_SB(sb)->s_flags & UFS_ST_MASK) == UFS_ST_SUNx86) 190 if ((UFS_SB(sb)->s_flags & UFS_ST_MASK) == UFS_ST_SUNx86)
191 fs32 = ufsi->i_u1.i_data[1]; 191 fs32 = fs32_to_cpu(sb, ufsi->i_u1.i_data[1]);
192 else 192 else
193 fs32 = ufsi->i_u1.i_data[0]; 193 fs32 = fs32_to_cpu(sb, ufsi->i_u1.i_data[0]);
194 fs32 = fs32_to_cpu(sb, fs32);
195 switch (UFS_SB(sb)->s_flags & UFS_ST_MASK) { 194 switch (UFS_SB(sb)->s_flags & UFS_ST_MASK) {
196 case UFS_ST_SUNx86: 195 case UFS_ST_SUNx86:
197 case UFS_ST_SUN: 196 case UFS_ST_SUN:
@@ -212,7 +211,7 @@ ufs_get_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi)
212void 211void
213ufs_set_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi, dev_t dev) 212ufs_set_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi, dev_t dev)
214{ 213{
215 __fs32 fs32; 214 __u32 fs32;
216 215
217 switch (UFS_SB(sb)->s_flags & UFS_ST_MASK) { 216 switch (UFS_SB(sb)->s_flags & UFS_ST_MASK) {
218 case UFS_ST_SUNx86: 217 case UFS_ST_SUNx86:
@@ -227,11 +226,10 @@ ufs_set_inode_dev(struct super_block *sb, struct ufs_inode_info *ufsi, dev_t dev
227 fs32 = old_encode_dev(dev); 226 fs32 = old_encode_dev(dev);
228 break; 227 break;
229 } 228 }
230 fs32 = cpu_to_fs32(sb, fs32);
231 if ((UFS_SB(sb)->s_flags & UFS_ST_MASK) == UFS_ST_SUNx86) 229 if ((UFS_SB(sb)->s_flags & UFS_ST_MASK) == UFS_ST_SUNx86)
232 ufsi->i_u1.i_data[1] = fs32; 230 ufsi->i_u1.i_data[1] = cpu_to_fs32(sb, fs32);
233 else 231 else
234 ufsi->i_u1.i_data[0] = fs32; 232 ufsi->i_u1.i_data[0] = cpu_to_fs32(sb, fs32);
235} 233}
236 234
237/** 235/**
diff --git a/fs/xattr.c b/fs/xattr.c
index c32f15b5f60f..395635100f77 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
@@ -135,6 +135,26 @@ vfs_getxattr(struct dentry *dentry, char *name, void *value, size_t size)
135} 135}
136EXPORT_SYMBOL_GPL(vfs_getxattr); 136EXPORT_SYMBOL_GPL(vfs_getxattr);
137 137
138ssize_t
139vfs_listxattr(struct dentry *d, char *list, size_t size)
140{
141 ssize_t error;
142
143 error = security_inode_listxattr(d);
144 if (error)
145 return error;
146 error = -EOPNOTSUPP;
147 if (d->d_inode->i_op && d->d_inode->i_op->listxattr) {
148 error = d->d_inode->i_op->listxattr(d, list, size);
149 } else {
150 error = security_inode_listsecurity(d->d_inode, list, size);
151 if (size && error > size)
152 error = -ERANGE;
153 }
154 return error;
155}
156EXPORT_SYMBOL_GPL(vfs_listxattr);
157
138int 158int
139vfs_removexattr(struct dentry *dentry, char *name) 159vfs_removexattr(struct dentry *dentry, char *name)
140{ 160{
@@ -346,17 +366,7 @@ listxattr(struct dentry *d, char __user *list, size_t size)
346 return -ENOMEM; 366 return -ENOMEM;
347 } 367 }
348 368
349 error = security_inode_listxattr(d); 369 error = vfs_listxattr(d, klist, size);
350 if (error)
351 goto out;
352 error = -EOPNOTSUPP;
353 if (d->d_inode->i_op && d->d_inode->i_op->listxattr) {
354 error = d->d_inode->i_op->listxattr(d, klist, size);
355 } else {
356 error = security_inode_listsecurity(d->d_inode, klist, size);
357 if (size && error > size)
358 error = -ERANGE;
359 }
360 if (error > 0) { 370 if (error > 0) {
361 if (size && copy_to_user(list, klist, error)) 371 if (size && copy_to_user(list, klist, error))
362 error = -EFAULT; 372 error = -EFAULT;
@@ -365,7 +375,6 @@ listxattr(struct dentry *d, char __user *list, size_t size)
365 than XATTR_LIST_MAX bytes. Not possible. */ 375 than XATTR_LIST_MAX bytes. Not possible. */
366 error = -E2BIG; 376 error = -E2BIG;
367 } 377 }
368out:
369 kfree(klist); 378 kfree(klist);
370 return error; 379 return error;
371} 380}
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h
index a4d0e73d5aca..063c4b54290f 100644
--- a/include/acpi/aclocal.h
+++ b/include/acpi/aclocal.h
@@ -708,7 +708,7 @@ struct acpi_bit_register_info {
708 * must be preserved. 708 * must be preserved.
709 */ 709 */
710#define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800 /* Bit 11 */ 710#define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800 /* Bit 11 */
711#define ACPI_PM1_CONTROL_PRESERVED_BITS 0x0201 /* Bit 9, Bit 0 (SCI_EN) */ 711#define ACPI_PM1_CONTROL_PRESERVED_BITS 0x0200 /* Bit 9 (whatever) */
712 712
713/* 713/*
714 * Register IDs 714 * Register IDs
diff --git a/include/asm-alpha/irq_regs.h b/include/asm-alpha/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-alpha/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-alpha/machvec.h b/include/asm-alpha/machvec.h
index aced22f91752..a86c083cdf7f 100644
--- a/include/asm-alpha/machvec.h
+++ b/include/asm-alpha/machvec.h
@@ -15,7 +15,6 @@
15 15
16struct task_struct; 16struct task_struct;
17struct mm_struct; 17struct mm_struct;
18struct pt_regs;
19struct vm_area_struct; 18struct vm_area_struct;
20struct linux_hose_info; 19struct linux_hose_info;
21struct pci_dev; 20struct pci_dev;
@@ -79,8 +78,8 @@ struct alpha_machine_vector
79 78
80 void (*update_irq_hw)(unsigned long, unsigned long, int); 79 void (*update_irq_hw)(unsigned long, unsigned long, int);
81 void (*ack_irq)(unsigned long); 80 void (*ack_irq)(unsigned long);
82 void (*device_interrupt)(unsigned long vector, struct pt_regs *regs); 81 void (*device_interrupt)(unsigned long vector);
83 void (*machine_check)(u64 vector, u64 la, struct pt_regs *regs); 82 void (*machine_check)(u64 vector, u64 la);
84 83
85 void (*smp_callin)(void); 84 void (*smp_callin)(void);
86 void (*init_arch)(void); 85 void (*init_arch)(void);
diff --git a/include/asm-arm/arch-clps711x/time.h b/include/asm-arm/arch-clps711x/time.h
index 0e4a3901d3b3..5edaae1c61d3 100644
--- a/include/asm-arm/arch-clps711x/time.h
+++ b/include/asm-arm/arch-clps711x/time.h
@@ -26,8 +26,9 @@ extern void clps711x_setup_timer(void);
26 * IRQ handler for the timer 26 * IRQ handler for the timer
27 */ 27 */
28static irqreturn_t 28static irqreturn_t
29p720t_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 29p720t_timer_interrupt(int irq, void *dev_id)
30{ 30{
31 struct pt_regs *regs = get_irq_regs();
31 do_leds(); 32 do_leds();
32 do_timer(1); 33 do_timer(1);
33#ifndef CONFIG_SMP 34#ifndef CONFIG_SMP
diff --git a/include/asm-arm/arch-imx/imx-dma.h b/include/asm-arm/arch-imx/imx-dma.h
index 599f03e5a9ef..5b1066da4e1f 100644
--- a/include/asm-arm/arch-imx/imx-dma.h
+++ b/include/asm-arm/arch-imx/imx-dma.h
@@ -45,8 +45,8 @@
45 45
46struct imx_dma_channel { 46struct imx_dma_channel {
47 const char *name; 47 const char *name;
48 void (*irq_handler) (int, void *, struct pt_regs *); 48 void (*irq_handler) (int, void *);
49 void (*err_handler) (int, void *, struct pt_regs *, int errcode); 49 void (*err_handler) (int, void *, int errcode);
50 void *data; 50 void *data;
51 dmamode_t dma_mode; 51 dmamode_t dma_mode;
52 struct scatterlist *sg; 52 struct scatterlist *sg;
@@ -77,8 +77,8 @@ imx_dma_setup_sg(imx_dmach_t dma_ch,
77 77
78int 78int
79imx_dma_setup_handlers(imx_dmach_t dma_ch, 79imx_dma_setup_handlers(imx_dmach_t dma_ch,
80 void (*irq_handler) (int, void *, struct pt_regs *), 80 void (*irq_handler) (int, void *),
81 void (*err_handler) (int, void *, struct pt_regs *, int), void *data); 81 void (*err_handler) (int, void *, int), void *data);
82 82
83void imx_dma_enable(imx_dmach_t dma_ch); 83void imx_dma_enable(imx_dmach_t dma_ch);
84 84
diff --git a/include/asm-arm/arch-l7200/time.h b/include/asm-arm/arch-l7200/time.h
index c69cb508735f..ea22f7fff9cd 100644
--- a/include/asm-arm/arch-l7200/time.h
+++ b/include/asm-arm/arch-l7200/time.h
@@ -43,8 +43,9 @@
43 * Handler for RTC timer interrupt 43 * Handler for RTC timer interrupt
44 */ 44 */
45static irqreturn_t 45static irqreturn_t
46timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 46timer_interrupt(int irq, void *dev_id)
47{ 47{
48 struct pt_regs *regs = get_irq_regs();
48 do_timer(1); 49 do_timer(1);
49#ifndef CONFIG_SMP 50#ifndef CONFIG_SMP
50 update_process_times(user_mode(regs)); 51 update_process_times(user_mode(regs));
diff --git a/include/asm-arm/arch-pnx4008/dma.h b/include/asm-arm/arch-pnx4008/dma.h
index 3aee1204795b..418f15283ff1 100644
--- a/include/asm-arm/arch-pnx4008/dma.h
+++ b/include/asm-arm/arch-pnx4008/dma.h
@@ -137,7 +137,7 @@ extern void pnx4008_free_ll_entry(struct pnx4008_dma_ll *, dma_addr_t);
137extern void pnx4008_free_ll(u32 ll_dma, struct pnx4008_dma_ll *); 137extern void pnx4008_free_ll(u32 ll_dma, struct pnx4008_dma_ll *);
138 138
139extern int pnx4008_request_channel(char *, int, 139extern int pnx4008_request_channel(char *, int,
140 void (*)(int, int, void *, struct pt_regs *), 140 void (*)(int, int, void *),
141 void *); 141 void *);
142extern void pnx4008_free_channel(int); 142extern void pnx4008_free_channel(int);
143extern int pnx4008_config_dma(int, int, int); 143extern int pnx4008_config_dma(int, int, int);
diff --git a/include/asm-arm/arch-pxa/dma.h b/include/asm-arm/arch-pxa/dma.h
index a008150abc59..bed042d71d68 100644
--- a/include/asm-arm/arch-pxa/dma.h
+++ b/include/asm-arm/arch-pxa/dma.h
@@ -56,7 +56,7 @@ for ( \
56 56
57int pxa_request_dma (char *name, 57int pxa_request_dma (char *name,
58 pxa_dma_prio prio, 58 pxa_dma_prio prio,
59 void (*irq_handler)(int, void *, struct pt_regs *), 59 void (*irq_handler)(int, void *),
60 void *data); 60 void *data);
61 61
62void pxa_free_dma (int dma_ch); 62void pxa_free_dma (int dma_ch);
diff --git a/include/asm-arm/arch-pxa/mmc.h b/include/asm-arm/arch-pxa/mmc.h
index 88c17dd02ed2..a38a28c4bbd8 100644
--- a/include/asm-arm/arch-pxa/mmc.h
+++ b/include/asm-arm/arch-pxa/mmc.h
@@ -10,7 +10,7 @@ struct mmc_host;
10struct pxamci_platform_data { 10struct pxamci_platform_data {
11 unsigned int ocr_mask; /* available voltages */ 11 unsigned int ocr_mask; /* available voltages */
12 unsigned long detect_delay; /* delay in jiffies before detecting cards after interrupt */ 12 unsigned long detect_delay; /* delay in jiffies before detecting cards after interrupt */
13 int (*init)(struct device *, irqreturn_t (*)(int, void *, struct pt_regs *), void *); 13 int (*init)(struct device *, irq_handler_t , void *);
14 int (*get_ro)(struct device *); 14 int (*get_ro)(struct device *);
15 void (*setpower)(struct device *, unsigned int); 15 void (*setpower)(struct device *, unsigned int);
16 void (*exit)(struct device *, void *); 16 void (*exit)(struct device *, void *);
diff --git a/include/asm-arm/hardware/sharpsl_pm.h b/include/asm-arm/hardware/sharpsl_pm.h
index a836e76a14f7..2d00db22b981 100644
--- a/include/asm-arm/hardware/sharpsl_pm.h
+++ b/include/asm-arm/hardware/sharpsl_pm.h
@@ -100,7 +100,7 @@ extern struct sharpsl_pm_status sharpsl_pm;
100 100
101void sharpsl_battery_kick(void); 101void sharpsl_battery_kick(void);
102void sharpsl_pm_led(int val); 102void sharpsl_pm_led(int val);
103irqreturn_t sharpsl_ac_isr(int irq, void *dev_id, struct pt_regs *fp); 103irqreturn_t sharpsl_ac_isr(int irq, void *dev_id);
104irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp); 104irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
105irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id, struct pt_regs *fp); 105irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
106 106
diff --git a/include/asm-arm/hw_irq.h b/include/asm-arm/hw_irq.h
index ea856971989a..98d594a973d6 100644
--- a/include/asm-arm/hw_irq.h
+++ b/include/asm-arm/hw_irq.h
@@ -12,7 +12,7 @@
12 if (!(action->flags & IRQF_TIMER) && system_timer->dyn_tick) { \ 12 if (!(action->flags & IRQF_TIMER) && system_timer->dyn_tick) { \
13 write_seqlock(&xtime_lock); \ 13 write_seqlock(&xtime_lock); \
14 if (system_timer->dyn_tick->state & DYN_TICK_ENABLED) \ 14 if (system_timer->dyn_tick->state & DYN_TICK_ENABLED) \
15 system_timer->dyn_tick->handler(irq, 0, regs); \ 15 system_timer->dyn_tick->handler(irq, NULL); \
16 write_sequnlock(&xtime_lock); \ 16 write_sequnlock(&xtime_lock); \
17 } 17 }
18#endif 18#endif
diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h
index 8076a85c3675..34aaaac4f617 100644
--- a/include/asm-arm/io.h
+++ b/include/asm-arm/io.h
@@ -63,7 +63,7 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen);
63 */ 63 */
64extern void __iomem * __ioremap_pfn(unsigned long, unsigned long, size_t, unsigned long); 64extern void __iomem * __ioremap_pfn(unsigned long, unsigned long, size_t, unsigned long);
65extern void __iomem * __ioremap(unsigned long, size_t, unsigned long); 65extern void __iomem * __ioremap(unsigned long, size_t, unsigned long);
66extern void __iounmap(void __iomem *addr); 66extern void __iounmap(volatile void __iomem *addr);
67 67
68/* 68/*
69 * Bad read/write accesses... 69 * Bad read/write accesses...
diff --git a/include/asm-arm/irq_regs.h b/include/asm-arm/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-arm/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-arm/mach/irq.h b/include/asm-arm/mach/irq.h
index 131f33733d25..0e017ecf2096 100644
--- a/include/asm-arm/mach/irq.h
+++ b/include/asm-arm/mach/irq.h
@@ -30,10 +30,9 @@ extern int show_fiq_list(struct seq_file *, void *);
30/* 30/*
31 * Obsolete inline function for calling irq descriptor handlers. 31 * Obsolete inline function for calling irq descriptor handlers.
32 */ 32 */
33static inline void desc_handle_irq(unsigned int irq, struct irq_desc *desc, 33static inline void desc_handle_irq(unsigned int irq, struct irq_desc *desc)
34 struct pt_regs *regs)
35{ 34{
36 desc->handle_irq(irq, desc, regs); 35 desc->handle_irq(irq, desc);
37} 36}
38 37
39void set_irq_flags(unsigned int irq, unsigned int flags); 38void set_irq_flags(unsigned int irq, unsigned int flags);
@@ -51,10 +50,10 @@ void set_irq_flags(unsigned int irq, unsigned int flags);
51#define irqdesc irq_desc 50#define irqdesc irq_desc
52#define irqchip irq_chip 51#define irqchip irq_chip
53 52
54#define do_bad_IRQ(irq,desc,regs) \ 53#define do_bad_IRQ(irq,desc) \
55do { \ 54do { \
56 spin_lock(&desc->lock); \ 55 spin_lock(&desc->lock); \
57 handle_bad_irq(irq, desc, regs); \ 56 handle_bad_irq(irq, desc); \
58 spin_unlock(&desc->lock); \ 57 spin_unlock(&desc->lock); \
59} while(0) 58} while(0)
60 59
diff --git a/include/asm-arm/mach/time.h b/include/asm-arm/mach/time.h
index 1eb93f5c0d6c..5dc357013b79 100644
--- a/include/asm-arm/mach/time.h
+++ b/include/asm-arm/mach/time.h
@@ -57,7 +57,7 @@ struct dyn_tick_timer {
57 int (*enable)(void); /* Enables dynamic tick */ 57 int (*enable)(void); /* Enables dynamic tick */
58 int (*disable)(void); /* Disables dynamic tick */ 58 int (*disable)(void); /* Disables dynamic tick */
59 void (*reprogram)(unsigned long); /* Reprograms the timer */ 59 void (*reprogram)(unsigned long); /* Reprograms the timer */
60 int (*handler)(int, void *, struct pt_regs *); 60 int (*handler)(int, void *);
61}; 61};
62 62
63void timer_dyn_reprogram(void); 63void timer_dyn_reprogram(void);
@@ -66,7 +66,7 @@ void timer_dyn_reprogram(void);
66#endif 66#endif
67 67
68extern struct sys_timer *system_timer; 68extern struct sys_timer *system_timer;
69extern void timer_tick(struct pt_regs *); 69extern void timer_tick(void);
70 70
71/* 71/*
72 * Kernel time keeping support. 72 * Kernel time keeping support.
diff --git a/include/asm-frv/dma.h b/include/asm-frv/dma.h
index 18d6bb8f84fc..683c47d48a5b 100644
--- a/include/asm-frv/dma.h
+++ b/include/asm-frv/dma.h
@@ -24,10 +24,7 @@
24/* 24/*
25 * FRV DMA controller management 25 * FRV DMA controller management
26 */ 26 */
27struct pt_regs; 27typedef irqreturn_t (*dma_irq_handler_t)(int dmachan, unsigned long cstr, void *data);
28
29typedef irqreturn_t (*dma_irq_handler_t)(int dmachan, unsigned long cstr, void *data,
30 struct pt_regs *regs);
31 28
32extern void frv_dma_init(void); 29extern void frv_dma_init(void);
33 30
diff --git a/include/asm-frv/irq_regs.h b/include/asm-frv/irq_regs.h
new file mode 100644
index 000000000000..d22e83289ad1
--- /dev/null
+++ b/include/asm-frv/irq_regs.h
@@ -0,0 +1,27 @@
1/* FRV per-CPU frame pointer holder
2 *
3 * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
12#ifndef _ASM_IRQ_REGS_H
13#define _ASM_IRQ_REGS_H
14
15/*
16 * Per-cpu current frame pointer - the location of the last exception frame on
17 * the stack
18 * - on FRV, GR28 is dedicated to keeping a pointer to the current exception
19 * frame
20 */
21#define ARCH_HAS_OWN_IRQ_REGS
22
23#ifndef __ASSEMBLY__
24#define get_irq_regs() (__frame)
25#endif
26
27#endif /* _ASM_IRQ_REGS_H */
diff --git a/include/asm-frv/ptrace.h b/include/asm-frv/ptrace.h
index 7ff525162a72..9a2241b8eb1e 100644
--- a/include/asm-frv/ptrace.h
+++ b/include/asm-frv/ptrace.h
@@ -12,6 +12,7 @@
12#define _ASM_PTRACE_H 12#define _ASM_PTRACE_H
13 13
14#include <asm/registers.h> 14#include <asm/registers.h>
15#include <asm/irq_regs.h>
15 16
16#define in_syscall(regs) (((regs)->tbr & TBR_TT) == TBR_TT_TRAP0) 17#define in_syscall(regs) (((regs)->tbr & TBR_TT) == TBR_TT_TRAP0)
17 18
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index a5250895155e..1d9573cf4a0b 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -41,14 +41,14 @@
41#endif 41#endif
42#endif 42#endif
43 43
44#define WARN_ON_ONCE(condition) ({ \ 44#define WARN_ON_ONCE(condition) ({ \
45 static int __warn_once = 1; \ 45 static int __warned; \
46 typeof(condition) __ret_warn_once = (condition);\ 46 typeof(condition) __ret_warn_once = (condition); \
47 \ 47 \
48 if (likely(__warn_once)) \ 48 if (unlikely(__ret_warn_once)) \
49 if (WARN_ON(__ret_warn_once)) \ 49 if (WARN_ON(!__warned)) \
50 __warn_once = 0; \ 50 __warned = 1; \
51 unlikely(__ret_warn_once); \ 51 unlikely(__ret_warn_once); \
52}) 52})
53 53
54#ifdef CONFIG_SMP 54#ifdef CONFIG_SMP
diff --git a/include/asm-generic/irq_regs.h b/include/asm-generic/irq_regs.h
new file mode 100644
index 000000000000..5ae1d07d4a12
--- /dev/null
+++ b/include/asm-generic/irq_regs.h
@@ -0,0 +1,37 @@
1/* Fallback per-CPU frame pointer holder
2 *
3 * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
12#ifndef _ASM_GENERIC_IRQ_REGS_H
13#define _ASM_GENERIC_IRQ_REGS_H
14
15#include <linux/percpu.h>
16
17/*
18 * Per-cpu current frame pointer - the location of the last exception frame on
19 * the stack
20 */
21DECLARE_PER_CPU(struct pt_regs *, __irq_regs);
22
23static inline struct pt_regs *get_irq_regs(void)
24{
25 return __get_cpu_var(__irq_regs);
26}
27
28static inline struct pt_regs *set_irq_regs(struct pt_regs *new_regs)
29{
30 struct pt_regs *old_regs, **pp_regs = &__get_cpu_var(__irq_regs);
31
32 old_regs = *pp_regs;
33 *pp_regs = new_regs;
34 return old_regs;
35}
36
37#endif /* _ASM_GENERIC_IRQ_REGS_H */
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
index 6d45ee5472af..196376262240 100644
--- a/include/asm-generic/percpu.h
+++ b/include/asm-generic/percpu.h
@@ -15,7 +15,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
15 15
16/* var is in discarded region: offset to particular copy we want */ 16/* var is in discarded region: offset to particular copy we want */
17#define per_cpu(var, cpu) (*({ \ 17#define per_cpu(var, cpu) (*({ \
18 extern int simple_indentifier_##var(void); \ 18 extern int simple_identifier_##var(void); \
19 RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]); })) 19 RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]); }))
20#define __get_cpu_var(var) per_cpu(var, smp_processor_id()) 20#define __get_cpu_var(var) per_cpu(var, smp_processor_id())
21#define __raw_get_cpu_var(var) per_cpu(var, raw_smp_processor_id()) 21#define __raw_get_cpu_var(var) per_cpu(var, raw_smp_processor_id())
diff --git a/include/asm-i386/apic.h b/include/asm-i386/apic.h
index 3a42b7d6fc92..b9529578fc37 100644
--- a/include/asm-i386/apic.h
+++ b/include/asm-i386/apic.h
@@ -98,7 +98,7 @@ extern void sync_Arb_IDs (void);
98extern void init_bsp_APIC (void); 98extern void init_bsp_APIC (void);
99extern void setup_local_APIC (void); 99extern void setup_local_APIC (void);
100extern void init_apic_mappings (void); 100extern void init_apic_mappings (void);
101extern void smp_local_timer_interrupt (struct pt_regs * regs); 101extern void smp_local_timer_interrupt (void);
102extern void setup_boot_APIC_clock (void); 102extern void setup_boot_APIC_clock (void);
103extern void setup_secondary_APIC_clock (void); 103extern void setup_secondary_APIC_clock (void);
104extern int APIC_init_uniprocessor (void); 104extern int APIC_init_uniprocessor (void);
@@ -107,7 +107,7 @@ extern void enable_APIC_timer(void);
107 107
108extern void enable_NMI_through_LVT0 (void * dummy); 108extern void enable_NMI_through_LVT0 (void * dummy);
109 109
110void smp_send_timer_broadcast_ipi(struct pt_regs *regs); 110void smp_send_timer_broadcast_ipi(void);
111void switch_APIC_timer_to_ipi(void *cpumask); 111void switch_APIC_timer_to_ipi(void *cpumask);
112void switch_ipi_to_APIC_timer(void *cpumask); 112void switch_ipi_to_APIC_timer(void *cpumask);
113#define ARCH_APICTIMER_STOPS_ON_C3 1 113#define ARCH_APICTIMER_STOPS_ON_C3 1
diff --git a/include/asm-i386/arch_hooks.h b/include/asm-i386/arch_hooks.h
index 238cf4275b96..a8c1fca9726d 100644
--- a/include/asm-i386/arch_hooks.h
+++ b/include/asm-i386/arch_hooks.h
@@ -14,7 +14,7 @@
14extern void init_ISA_irqs(void); 14extern void init_ISA_irqs(void);
15extern void apic_intr_init(void); 15extern void apic_intr_init(void);
16extern void smp_intr_init(void); 16extern void smp_intr_init(void);
17extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs); 17extern irqreturn_t timer_interrupt(int irq, void *dev_id);
18 18
19/* these are the defined hooks */ 19/* these are the defined hooks */
20extern void intr_init_hook(void); 20extern void intr_init_hook(void);
diff --git a/include/asm-i386/floppy.h b/include/asm-i386/floppy.h
index 359ead60b718..44ef2f55a8e9 100644
--- a/include/asm-i386/floppy.h
+++ b/include/asm-i386/floppy.h
@@ -51,7 +51,7 @@ static char *virtual_dma_addr;
51static int virtual_dma_mode; 51static int virtual_dma_mode;
52static int doing_pdma; 52static int doing_pdma;
53 53
54static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) 54static irqreturn_t floppy_hardint(int irq, void *dev_id)
55{ 55{
56 register unsigned char st; 56 register unsigned char st;
57 57
@@ -63,7 +63,7 @@ static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs)
63 static int dma_wait=0; 63 static int dma_wait=0;
64#endif 64#endif
65 if (!doing_pdma) 65 if (!doing_pdma)
66 return floppy_interrupt(irq, dev_id, regs); 66 return floppy_interrupt(irq, dev_id);
67 67
68#ifdef TRACE_FLPY_INT 68#ifdef TRACE_FLPY_INT
69 if(!calls) 69 if(!calls)
@@ -106,7 +106,7 @@ static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs)
106 dma_wait=0; 106 dma_wait=0;
107#endif 107#endif
108 doing_pdma = 0; 108 doing_pdma = 0;
109 floppy_interrupt(irq, dev_id, regs); 109 floppy_interrupt(irq, dev_id);
110 return IRQ_HANDLED; 110 return IRQ_HANDLED;
111 } 111 }
112#ifdef TRACE_FLPY_INT 112#ifdef TRACE_FLPY_INT
diff --git a/include/asm-i386/hpet.h b/include/asm-i386/hpet.h
index af5d435519d1..e47be9a56cc2 100644
--- a/include/asm-i386/hpet.h
+++ b/include/asm-i386/hpet.h
@@ -108,7 +108,7 @@ extern int hpet_set_alarm_time(unsigned char hrs, unsigned char min, unsigned ch
108extern int hpet_set_periodic_freq(unsigned long freq); 108extern int hpet_set_periodic_freq(unsigned long freq);
109extern int hpet_rtc_dropped_irq(void); 109extern int hpet_rtc_dropped_irq(void);
110extern int hpet_rtc_timer_init(void); 110extern int hpet_rtc_timer_init(void);
111extern irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs); 111extern irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id);
112#endif /* CONFIG_HPET_EMULATE_RTC */ 112#endif /* CONFIG_HPET_EMULATE_RTC */
113#endif /* CONFIG_HPET_TIMER */ 113#endif /* CONFIG_HPET_TIMER */
114#endif /* _I386_HPET_H */ 114#endif /* _I386_HPET_H */
diff --git a/include/asm-i386/hw_irq.h b/include/asm-i386/hw_irq.h
index 88f02a073561..0bedbdf5e907 100644
--- a/include/asm-i386/hw_irq.h
+++ b/include/asm-i386/hw_irq.h
@@ -26,9 +26,6 @@
26 * Interrupt entry/exit code at both C and assembly level 26 * Interrupt entry/exit code at both C and assembly level
27 */ 27 */
28 28
29extern u8 irq_vector[NR_IRQ_VECTORS];
30#define IO_APIC_VECTOR(irq) (irq_vector[irq])
31
32extern void (*interrupt[NR_IRQS])(void); 29extern void (*interrupt[NR_IRQS])(void);
33 30
34#ifdef CONFIG_SMP 31#ifdef CONFIG_SMP
@@ -41,7 +38,7 @@ fastcall void call_function_interrupt(void);
41fastcall void apic_timer_interrupt(void); 38fastcall void apic_timer_interrupt(void);
42fastcall void error_interrupt(void); 39fastcall void error_interrupt(void);
43fastcall void spurious_interrupt(void); 40fastcall void spurious_interrupt(void);
44fastcall void thermal_interrupt(struct pt_regs *); 41fastcall void thermal_interrupt(void);
45#define platform_legacy_irq(irq) ((irq) < 16) 42#define platform_legacy_irq(irq) ((irq) < 16)
46#endif 43#endif
47 44
diff --git a/include/asm-i386/irq_regs.h b/include/asm-i386/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-i386/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-i386/mach-default/do_timer.h b/include/asm-i386/mach-default/do_timer.h
index 4182c347ef85..7d606e3364ae 100644
--- a/include/asm-i386/mach-default/do_timer.h
+++ b/include/asm-i386/mach-default/do_timer.h
@@ -14,11 +14,11 @@
14 * timer interrupt as a means of triggering reschedules etc. 14 * timer interrupt as a means of triggering reschedules etc.
15 **/ 15 **/
16 16
17static inline void do_timer_interrupt_hook(struct pt_regs *regs) 17static inline void do_timer_interrupt_hook(void)
18{ 18{
19 do_timer(1); 19 do_timer(1);
20#ifndef CONFIG_SMP 20#ifndef CONFIG_SMP
21 update_process_times(user_mode_vm(regs)); 21 update_process_times(user_mode_vm(get_irq_regs()));
22#endif 22#endif
23/* 23/*
24 * In the SMP case we use the local APIC timer interrupt to do the 24 * In the SMP case we use the local APIC timer interrupt to do the
@@ -26,10 +26,10 @@ static inline void do_timer_interrupt_hook(struct pt_regs *regs)
26 * system, in that case we have to call the local interrupt handler. 26 * system, in that case we have to call the local interrupt handler.
27 */ 27 */
28#ifndef CONFIG_X86_LOCAL_APIC 28#ifndef CONFIG_X86_LOCAL_APIC
29 profile_tick(CPU_PROFILING, regs); 29 profile_tick(CPU_PROFILING);
30#else 30#else
31 if (!using_apic_timer) 31 if (!using_apic_timer)
32 smp_local_timer_interrupt(regs); 32 smp_local_timer_interrupt();
33#endif 33#endif
34} 34}
35 35
diff --git a/include/asm-i386/mach-visws/do_timer.h b/include/asm-i386/mach-visws/do_timer.h
index 8db618c5a72b..21cd696d4d0f 100644
--- a/include/asm-i386/mach-visws/do_timer.h
+++ b/include/asm-i386/mach-visws/do_timer.h
@@ -4,14 +4,14 @@
4#include <asm/i8259.h> 4#include <asm/i8259.h>
5#include "cobalt.h" 5#include "cobalt.h"
6 6
7static inline void do_timer_interrupt_hook(struct pt_regs *regs) 7static inline void do_timer_interrupt_hook(void)
8{ 8{
9 /* Clear the interrupt */ 9 /* Clear the interrupt */
10 co_cpu_write(CO_CPU_STAT,co_cpu_read(CO_CPU_STAT) & ~CO_STAT_TIMEINTR); 10 co_cpu_write(CO_CPU_STAT,co_cpu_read(CO_CPU_STAT) & ~CO_STAT_TIMEINTR);
11 11
12 do_timer(1); 12 do_timer(1);
13#ifndef CONFIG_SMP 13#ifndef CONFIG_SMP
14 update_process_times(user_mode_vm(regs)); 14 update_process_times(user_mode_vm(irq_regs));
15#endif 15#endif
16/* 16/*
17 * In the SMP case we use the local APIC timer interrupt to do the 17 * In the SMP case we use the local APIC timer interrupt to do the
@@ -19,10 +19,10 @@ static inline void do_timer_interrupt_hook(struct pt_regs *regs)
19 * system, in that case we have to call the local interrupt handler. 19 * system, in that case we have to call the local interrupt handler.
20 */ 20 */
21#ifndef CONFIG_X86_LOCAL_APIC 21#ifndef CONFIG_X86_LOCAL_APIC
22 profile_tick(CPU_PROFILING, regs); 22 profile_tick(CPU_PROFILING);
23#else 23#else
24 if (!using_apic_timer) 24 if (!using_apic_timer)
25 smp_local_timer_interrupt(regs); 25 smp_local_timer_interrupt();
26#endif 26#endif
27} 27}
28 28
diff --git a/include/asm-i386/mach-voyager/do_timer.h b/include/asm-i386/mach-voyager/do_timer.h
index 099fe9f5c1b2..04e69c104a74 100644
--- a/include/asm-i386/mach-voyager/do_timer.h
+++ b/include/asm-i386/mach-voyager/do_timer.h
@@ -1,14 +1,14 @@
1/* defines for inline arch setup functions */ 1/* defines for inline arch setup functions */
2#include <asm/voyager.h> 2#include <asm/voyager.h>
3 3
4static inline void do_timer_interrupt_hook(struct pt_regs *regs) 4static inline void do_timer_interrupt_hook(void)
5{ 5{
6 do_timer(1); 6 do_timer(1);
7#ifndef CONFIG_SMP 7#ifndef CONFIG_SMP
8 update_process_times(user_mode_vm(regs)); 8 update_process_times(user_mode_vm(irq_regs));
9#endif 9#endif
10 10
11 voyager_timer_interrupt(regs); 11 voyager_timer_interrupt();
12} 12}
13 13
14static inline int do_timer_overflow(int count) 14static inline int do_timer_overflow(int count)
diff --git a/include/asm-i386/smp.h b/include/asm-i386/smp.h
index 6aa1206f6e2a..bd59c1508e71 100644
--- a/include/asm-i386/smp.h
+++ b/include/asm-i386/smp.h
@@ -46,8 +46,6 @@ extern u8 x86_cpu_to_apicid[];
46 46
47#define cpu_physical_id(cpu) x86_cpu_to_apicid[cpu] 47#define cpu_physical_id(cpu) x86_cpu_to_apicid[cpu]
48 48
49extern u8 apicid_2_node[];
50
51#ifdef CONFIG_HOTPLUG_CPU 49#ifdef CONFIG_HOTPLUG_CPU
52extern void cpu_exit_clear(void); 50extern void cpu_exit_clear(void);
53extern void cpu_uninit(void); 51extern void cpu_uninit(void);
@@ -101,6 +99,9 @@ extern unsigned int num_processors;
101#endif 99#endif
102 100
103#ifndef __ASSEMBLY__ 101#ifndef __ASSEMBLY__
102
103extern u8 apicid_2_node[];
104
104#ifdef CONFIG_X86_LOCAL_APIC 105#ifdef CONFIG_X86_LOCAL_APIC
105static __inline int logical_smp_processor_id(void) 106static __inline int logical_smp_processor_id(void)
106{ 107{
diff --git a/include/asm-i386/voyager.h b/include/asm-i386/voyager.h
index aaf432dd7673..e74c54aa757f 100644
--- a/include/asm-i386/voyager.h
+++ b/include/asm-i386/voyager.h
@@ -505,8 +505,8 @@ extern int voyager_memory_detect(int region, __u32 *addr, __u32 *length);
505extern void voyager_smp_intr_init(void); 505extern void voyager_smp_intr_init(void);
506extern __u8 voyager_extended_cmos_read(__u16 cmos_address); 506extern __u8 voyager_extended_cmos_read(__u16 cmos_address);
507extern void voyager_smp_dump(void); 507extern void voyager_smp_dump(void);
508extern void voyager_timer_interrupt(struct pt_regs *regs); 508extern void voyager_timer_interrupt(void);
509extern void smp_local_timer_interrupt(struct pt_regs * regs); 509extern void smp_local_timer_interrupt(void);
510extern void voyager_power_off(void); 510extern void voyager_power_off(void);
511extern void smp_voyager_power_off(void *dummy); 511extern void smp_voyager_power_off(void *dummy);
512extern void voyager_restart(void); 512extern void voyager_restart(void);
diff --git a/include/asm-ia64/irq_regs.h b/include/asm-ia64/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-ia64/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h
index 90cba967df35..7ffbddf5306f 100644
--- a/include/asm-ia64/machvec.h
+++ b/include/asm-ia64/machvec.h
@@ -26,7 +26,7 @@ typedef void ia64_mv_setup_t (char **);
26typedef void ia64_mv_cpu_init_t (void); 26typedef void ia64_mv_cpu_init_t (void);
27typedef void ia64_mv_irq_init_t (void); 27typedef void ia64_mv_irq_init_t (void);
28typedef void ia64_mv_send_ipi_t (int, int, int, int); 28typedef void ia64_mv_send_ipi_t (int, int, int, int);
29typedef void ia64_mv_timer_interrupt_t (int, void *, struct pt_regs *); 29typedef void ia64_mv_timer_interrupt_t (int, void *);
30typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); 30typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long);
31typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); 31typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *);
32typedef unsigned int ia64_mv_local_vector_to_irq (u8); 32typedef unsigned int ia64_mv_local_vector_to_irq (u8);
@@ -96,7 +96,7 @@ machvec_noop_task (struct task_struct *task)
96} 96}
97 97
98extern void machvec_setup (char **); 98extern void machvec_setup (char **);
99extern void machvec_timer_interrupt (int, void *, struct pt_regs *); 99extern void machvec_timer_interrupt (int, void *);
100extern void machvec_dma_sync_single (struct device *, dma_addr_t, size_t, int); 100extern void machvec_dma_sync_single (struct device *, dma_addr_t, size_t, int);
101extern void machvec_dma_sync_sg (struct device *, struct scatterlist *, int, int); 101extern void machvec_dma_sync_sg (struct device *, struct scatterlist *, int, int);
102extern void machvec_tlb_migrate_finish (struct mm_struct *); 102extern void machvec_tlb_migrate_finish (struct mm_struct *);
diff --git a/include/asm-ia64/sn/pcibr_provider.h b/include/asm-ia64/sn/pcibr_provider.h
index e3b0c3fe5eed..da3eade0cae2 100644
--- a/include/asm-ia64/sn/pcibr_provider.h
+++ b/include/asm-ia64/sn/pcibr_provider.h
@@ -135,7 +135,7 @@ extern void pcireg_intr_addr_addr_set(struct pcibus_info *, int, u64
135extern void pcireg_force_intr_set(struct pcibus_info *, int); 135extern void pcireg_force_intr_set(struct pcibus_info *, int);
136extern u64 pcireg_wrb_flush_get(struct pcibus_info *, int); 136extern u64 pcireg_wrb_flush_get(struct pcibus_info *, int);
137extern void pcireg_int_ate_set(struct pcibus_info *, int, u64); 137extern void pcireg_int_ate_set(struct pcibus_info *, int, u64);
138extern u64 * pcireg_int_ate_addr(struct pcibus_info *, int); 138extern u64 __iomem * pcireg_int_ate_addr(struct pcibus_info *, int);
139extern void pcibr_force_interrupt(struct sn_irq_info *sn_irq_info); 139extern void pcibr_force_interrupt(struct sn_irq_info *sn_irq_info);
140extern void pcibr_change_devices_irq(struct sn_irq_info *sn_irq_info); 140extern void pcibr_change_devices_irq(struct sn_irq_info *sn_irq_info);
141extern int pcibr_ate_alloc(struct pcibus_info *, int); 141extern int pcibr_ate_alloc(struct pcibus_info *, int);
diff --git a/include/asm-ia64/sn/tioca_provider.h b/include/asm-ia64/sn/tioca_provider.h
index 65cdd73c2a57..9a820ac61be3 100644
--- a/include/asm-ia64/sn/tioca_provider.h
+++ b/include/asm-ia64/sn/tioca_provider.h
@@ -162,11 +162,11 @@ static inline void
162tioca_tlbflush(struct tioca_kernel *tioca_kernel) 162tioca_tlbflush(struct tioca_kernel *tioca_kernel)
163{ 163{
164 volatile u64 tmp; 164 volatile u64 tmp;
165 volatile struct tioca *ca_base; 165 volatile struct tioca __iomem *ca_base;
166 struct tioca_common *tioca_common; 166 struct tioca_common *tioca_common;
167 167
168 tioca_common = tioca_kernel->ca_common; 168 tioca_common = tioca_kernel->ca_common;
169 ca_base = (struct tioca *)tioca_common->ca_common.bs_base; 169 ca_base = (struct tioca __iomem *)tioca_common->ca_common.bs_base;
170 170
171 /* 171 /*
172 * Explicit flushes not needed if GART is in cached mode 172 * Explicit flushes not needed if GART is in cached mode
diff --git a/include/asm-ia64/sn/tioce_provider.h b/include/asm-ia64/sn/tioce_provider.h
index 6d62b13f7ae7..32c32f30b099 100644
--- a/include/asm-ia64/sn/tioce_provider.h
+++ b/include/asm-ia64/sn/tioce_provider.h
@@ -53,7 +53,7 @@ struct tioce_dmamap {
53 u64 ct_start; /* coretalk start address */ 53 u64 ct_start; /* coretalk start address */
54 u64 pci_start; /* bus start address */ 54 u64 pci_start; /* bus start address */
55 55
56 u64 *ate_hw; /* hw ptr of first ate in map */ 56 u64 __iomem *ate_hw;/* hw ptr of first ate in map */
57 u64 *ate_shadow; /* shadow ptr of firat ate */ 57 u64 *ate_shadow; /* shadow ptr of firat ate */
58 u16 ate_count; /* # ate's in the map */ 58 u16 ate_count; /* # ate's in the map */
59}; 59};
diff --git a/include/asm-ia64/sn/xpc.h b/include/asm-ia64/sn/xpc.h
index 35e1386f37ab..1d45e1518fb3 100644
--- a/include/asm-ia64/sn/xpc.h
+++ b/include/asm-ia64/sn/xpc.h
@@ -669,7 +669,7 @@ extern struct device *xpc_part;
669extern struct device *xpc_chan; 669extern struct device *xpc_chan;
670extern int xpc_disengage_request_timelimit; 670extern int xpc_disengage_request_timelimit;
671extern int xpc_disengage_request_timedout; 671extern int xpc_disengage_request_timedout;
672extern irqreturn_t xpc_notify_IRQ_handler(int, void *, struct pt_regs *); 672extern irqreturn_t xpc_notify_IRQ_handler(int, void *);
673extern void xpc_dropped_IPI_check(struct xpc_partition *); 673extern void xpc_dropped_IPI_check(struct xpc_partition *);
674extern void xpc_activate_partition(struct xpc_partition *); 674extern void xpc_activate_partition(struct xpc_partition *);
675extern void xpc_activate_kthreads(struct xpc_channel *, int); 675extern void xpc_activate_kthreads(struct xpc_channel *, int);
diff --git a/include/asm-m32r/irq_regs.h b/include/asm-m32r/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-m32r/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-m68k/atari_stdma.h b/include/asm-m68k/atari_stdma.h
index b4eadf852738..8e389b7fa70c 100644
--- a/include/asm-m68k/atari_stdma.h
+++ b/include/asm-m68k/atari_stdma.h
@@ -8,8 +8,7 @@
8 8
9/***************************** Prototypes *****************************/ 9/***************************** Prototypes *****************************/
10 10
11void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), 11void stdma_lock(irq_handler_t handler, void *data);
12 void *data);
13void stdma_release( void ); 12void stdma_release( void );
14int stdma_others_waiting( void ); 13int stdma_others_waiting( void );
15int stdma_islocked( void ); 14int stdma_islocked( void );
diff --git a/include/asm-m68k/dma-mapping.h b/include/asm-m68k/dma-mapping.h
index cebbb03370ec..d90d841d3dfd 100644
--- a/include/asm-m68k/dma-mapping.h
+++ b/include/asm-m68k/dma-mapping.h
@@ -5,6 +5,7 @@
5 5
6struct scatterlist; 6struct scatterlist;
7 7
8#ifndef CONFIG_MMU_SUN3
8static inline int dma_supported(struct device *dev, u64 mask) 9static inline int dma_supported(struct device *dev, u64 mask)
9{ 10{
10 return 1; 11 return 1;
@@ -26,7 +27,7 @@ static inline int dma_is_consistent(dma_addr_t dma_addr)
26} 27}
27 28
28extern void *dma_alloc_coherent(struct device *, size_t, 29extern void *dma_alloc_coherent(struct device *, size_t,
29 dma_addr_t *, int); 30 dma_addr_t *, gfp_t);
30extern void dma_free_coherent(struct device *, size_t, 31extern void dma_free_coherent(struct device *, size_t,
31 void *, dma_addr_t); 32 void *, dma_addr_t);
32 33
@@ -88,4 +89,8 @@ static inline int dma_mapping_error(dma_addr_t handle)
88 return 0; 89 return 0;
89} 90}
90 91
92#else
93#include <asm-generic/dma-mapping-broken.h>
94#endif
95
91#endif /* _M68K_DMA_MAPPING_H */ 96#endif /* _M68K_DMA_MAPPING_H */
diff --git a/include/asm-m68k/floppy.h b/include/asm-m68k/floppy.h
index 57f4fdda65ab..45dc908932a3 100644
--- a/include/asm-m68k/floppy.h
+++ b/include/asm-m68k/floppy.h
@@ -17,8 +17,7 @@
17 17
18#include <linux/vmalloc.h> 18#include <linux/vmalloc.h>
19 19
20asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id, 20asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id);
21 struct pt_regs *regs);
22 21
23/* constants... */ 22/* constants... */
24 23
@@ -184,8 +183,7 @@ static void fd_disable_dma(void)
184 183
185/* this is the only truly Q40 specific function */ 184/* this is the only truly Q40 specific function */
186 185
187asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id, 186asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id)
188 struct pt_regs *regs)
189{ 187{
190 register unsigned char st; 188 register unsigned char st;
191 189
@@ -198,7 +196,7 @@ asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id,
198 static int dma_wait=0; 196 static int dma_wait=0;
199#endif 197#endif
200 if(!doing_pdma) { 198 if(!doing_pdma) {
201 floppy_interrupt(irq, dev_id, regs); 199 floppy_interrupt(irq, dev_id);
202 return IRQ_HANDLED; 200 return IRQ_HANDLED;
203 } 201 }
204 202
@@ -246,7 +244,7 @@ asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id,
246 dma_wait=0; 244 dma_wait=0;
247#endif 245#endif
248 doing_pdma = 0; 246 doing_pdma = 0;
249 floppy_interrupt(irq, dev_id, regs); 247 floppy_interrupt(irq, dev_id);
250 return IRQ_HANDLED; 248 return IRQ_HANDLED;
251 } 249 }
252#ifdef TRACE_FLPY_INT 250#ifdef TRACE_FLPY_INT
diff --git a/include/asm-m68k/ide.h b/include/asm-m68k/ide.h
index 365f76fb8013..f9ffb2cbbae8 100644
--- a/include/asm-m68k/ide.h
+++ b/include/asm-m68k/ide.h
@@ -123,7 +123,7 @@ static __inline__ void ide_release_lock (void)
123} 123}
124 124
125static __inline__ void 125static __inline__ void
126ide_get_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), void *data) 126ide_get_lock(irq_handler_t handler, void *data)
127{ 127{
128 if (MACH_IS_ATARI) { 128 if (MACH_IS_ATARI) {
129 if (falconide_intr_lock == 0) { 129 if (falconide_intr_lock == 0) {
diff --git a/include/asm-m68k/irq.h b/include/asm-m68k/irq.h
index 3257f9881002..4901cb105e2f 100644
--- a/include/asm-m68k/irq.h
+++ b/include/asm-m68k/irq.h
@@ -83,7 +83,7 @@ struct pt_regs;
83 * interrupt source (if it supports chaining). 83 * interrupt source (if it supports chaining).
84 */ 84 */
85typedef struct irq_node { 85typedef struct irq_node {
86 int (*handler)(int, void *, struct pt_regs *); 86 int (*handler)(int, void *);
87 void *dev_id; 87 void *dev_id;
88 struct irq_node *next; 88 struct irq_node *next;
89 unsigned long flags; 89 unsigned long flags;
@@ -93,12 +93,12 @@ typedef struct irq_node {
93/* 93/*
94 * This structure has only 4 elements for speed reasons 94 * This structure has only 4 elements for speed reasons
95 */ 95 */
96typedef struct irq_handler { 96struct irq_handler {
97 int (*handler)(int, void *, struct pt_regs *); 97 int (*handler)(int, void *);
98 unsigned long flags; 98 unsigned long flags;
99 void *dev_id; 99 void *dev_id;
100 const char *devname; 100 const char *devname;
101} irq_handler_t; 101};
102 102
103struct irq_controller { 103struct irq_controller {
104 const char *name; 104 const char *name;
@@ -122,6 +122,7 @@ extern void m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt,
122 void (*handler)(unsigned int, struct pt_regs *)); 122 void (*handler)(unsigned int, struct pt_regs *));
123extern void m68k_setup_irq_controller(struct irq_controller *, unsigned int, unsigned int); 123extern void m68k_setup_irq_controller(struct irq_controller *, unsigned int, unsigned int);
124 124
125asmlinkage void m68k_handle_int(unsigned int, struct pt_regs *); 125asmlinkage void m68k_handle_int(unsigned int);
126asmlinkage void __m68k_handle_int(unsigned int, struct pt_regs *);
126 127
127#endif /* _M68K_IRQ_H_ */ 128#endif /* _M68K_IRQ_H_ */
diff --git a/include/asm-m68k/irq_regs.h b/include/asm-m68k/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-m68k/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-m68k/mac_iop.h b/include/asm-m68k/mac_iop.h
index b0d2e3473537..a2c7e6fcca38 100644
--- a/include/asm-m68k/mac_iop.h
+++ b/include/asm-m68k/mac_iop.h
@@ -143,17 +143,17 @@ struct iop_msg {
143 int status; /* status of this message */ 143 int status; /* status of this message */
144 __u8 message[IOP_MSG_LEN]; /* the message being sent/received */ 144 __u8 message[IOP_MSG_LEN]; /* the message being sent/received */
145 __u8 reply[IOP_MSG_LEN]; /* the reply to the message */ 145 __u8 reply[IOP_MSG_LEN]; /* the reply to the message */
146 void (*handler)(struct iop_msg *, struct pt_regs *); 146 void (*handler)(struct iop_msg *);
147 /* function to call when reply recvd */ 147 /* function to call when reply recvd */
148}; 148};
149 149
150extern int iop_scc_present,iop_ism_present; 150extern int iop_scc_present,iop_ism_present;
151 151
152extern int iop_listen(uint, uint, 152extern int iop_listen(uint, uint,
153 void (*handler)(struct iop_msg *, struct pt_regs *), 153 void (*handler)(struct iop_msg *),
154 const char *); 154 const char *);
155extern int iop_send_message(uint, uint, void *, uint, __u8 *, 155extern int iop_send_message(uint, uint, void *, uint, __u8 *,
156 void (*)(struct iop_msg *, struct pt_regs *)); 156 void (*)(struct iop_msg *));
157extern void iop_complete_message(struct iop_msg *); 157extern void iop_complete_message(struct iop_msg *);
158extern void iop_upload_code(uint, __u8 *, uint, __u16); 158extern void iop_upload_code(uint, __u8 *, uint, __u16);
159extern void iop_download_code(uint, __u8 *, uint, __u16); 159extern void iop_download_code(uint, __u8 *, uint, __u16);
diff --git a/include/asm-m68k/machdep.h b/include/asm-m68k/machdep.h
index df898f27e434..26d2b91209c5 100644
--- a/include/asm-m68k/machdep.h
+++ b/include/asm-m68k/machdep.h
@@ -10,7 +10,7 @@ struct rtc_time;
10struct rtc_pll_info; 10struct rtc_pll_info;
11struct buffer_head; 11struct buffer_head;
12 12
13extern void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)); 13extern void (*mach_sched_init) (irq_handler_t handler);
14/* machine dependent irq functions */ 14/* machine dependent irq functions */
15extern void (*mach_init_IRQ) (void); 15extern void (*mach_init_IRQ) (void);
16extern void (*mach_get_model) (char *model); 16extern void (*mach_get_model) (char *model);
diff --git a/include/asm-m68k/signal.h b/include/asm-m68k/signal.h
index de1ba6ead3b4..3db8a81942f1 100644
--- a/include/asm-m68k/signal.h
+++ b/include/asm-m68k/signal.h
@@ -198,6 +198,7 @@ static inline int sigfindinword(unsigned long word)
198 return word ^ 31; 198 return word ^ 31;
199} 199}
200 200
201struct pt_regs;
201extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie); 202extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie);
202 203
203#endif /* __KERNEL__ */ 204#endif /* __KERNEL__ */
diff --git a/include/asm-m68k/string.h b/include/asm-m68k/string.h
index 6c59215b285e..2eb7df1e0f5d 100644
--- a/include/asm-m68k/string.h
+++ b/include/asm-m68k/string.h
@@ -1,138 +1,114 @@
1#ifndef _M68K_STRING_H_ 1#ifndef _M68K_STRING_H_
2#define _M68K_STRING_H_ 2#define _M68K_STRING_H_
3 3
4#include <asm/setup.h> 4#include <linux/types.h>
5#include <asm/page.h> 5#include <linux/compiler.h>
6 6
7#define __HAVE_ARCH_STRCPY 7static inline size_t __kernel_strlen(const char *s)
8static inline char * strcpy(char * dest,const char *src)
9{ 8{
10 char *xdest = dest; 9 const char *sc;
11
12 __asm__ __volatile__
13 ("1:\tmoveb %1@+,%0@+\n\t"
14 "jne 1b"
15 : "=a" (dest), "=a" (src)
16 : "0" (dest), "1" (src) : "memory");
17 return xdest;
18}
19 10
20#define __HAVE_ARCH_STRNCPY 11 for (sc = s; *sc++; )
21static inline char * strncpy(char *dest, const char *src, size_t n) 12 ;
22{ 13 return sc - s - 1;
23 char *xdest = dest;
24
25 if (n == 0)
26 return xdest;
27
28 __asm__ __volatile__
29 ("1:\tmoveb %1@+,%0@+\n\t"
30 "jeq 2f\n\t"
31 "subql #1,%2\n\t"
32 "jne 1b\n\t"
33 "2:"
34 : "=a" (dest), "=a" (src), "=d" (n)
35 : "0" (dest), "1" (src), "2" (n)
36 : "memory");
37 return xdest;
38} 14}
39 15
40#define __HAVE_ARCH_STRCAT 16static inline char *__kernel_strcpy(char *dest, const char *src)
41static inline char * strcat(char * dest, const char * src)
42{ 17{
43 char *tmp = dest; 18 char *xdest = dest;
44 19
45 while (*dest) 20 asm volatile ("\n"
46 dest++; 21 "1: move.b (%1)+,(%0)+\n"
47 while ((*dest++ = *src++)) 22 " jne 1b"
48 ; 23 : "+a" (dest), "+a" (src)
49 24 : : "memory");
50 return tmp; 25 return xdest;
51} 26}
52 27
53#define __HAVE_ARCH_STRNCAT 28#ifndef __IN_STRING_C
54static inline char * strncat(char *dest, const char *src, size_t count)
55{
56 char *tmp = dest;
57
58 if (count) {
59 while (*dest)
60 dest++;
61 while ((*dest++ = *src++)) {
62 if (--count == 0) {
63 *dest++='\0';
64 break;
65 }
66 }
67 }
68 29
69 return tmp; 30#define __HAVE_ARCH_STRLEN
70} 31#define strlen(s) (__builtin_constant_p(s) ? \
32 __builtin_strlen(s) : \
33 __kernel_strlen(s))
71 34
72#define __HAVE_ARCH_STRCHR 35#define __HAVE_ARCH_STRNLEN
73static inline char * strchr(const char * s, int c) 36static inline size_t strnlen(const char *s, size_t count)
74{ 37{
75 const char ch = c; 38 const char *sc = s;
76 39
77 for(; *s != ch; ++s) 40 asm volatile ("\n"
78 if (*s == '\0') 41 "1: subq.l #1,%1\n"
79 return( NULL ); 42 " jcs 2f\n"
80 return( (char *) s); 43 " tst.b (%0)+\n"
44 " jne 1b\n"
45 " subq.l #1,%0\n"
46 "2:"
47 : "+a" (sc), "+d" (count));
48 return sc - s;
81} 49}
82 50
83/* strstr !! */ 51#define __HAVE_ARCH_STRCPY
52#if __GNUC__ >= 4
53#define strcpy(d, s) (__builtin_constant_p(s) && \
54 __builtin_strlen(s) <= 32 ? \
55 __builtin_strcpy(d, s) : \
56 __kernel_strcpy(d, s))
57#else
58#define strcpy(d, s) __kernel_strcpy(d, s)
59#endif
84 60
85#define __HAVE_ARCH_STRLEN 61#define __HAVE_ARCH_STRNCPY
86static inline size_t strlen(const char * s) 62static inline char *strncpy(char *dest, const char *src, size_t n)
87{ 63{
88 const char *sc; 64 char *xdest = dest;
89 for (sc = s; *sc != '\0'; ++sc) ; 65
90 return(sc - s); 66 asm volatile ("\n"
67 " jra 2f\n"
68 "1: move.b (%1),(%0)+\n"
69 " jeq 2f\n"
70 " addq.l #1,%1\n"
71 "2: subq.l #1,%2\n"
72 " jcc 1b\n"
73 : "+a" (dest), "+a" (src), "+d" (n)
74 : : "memory");
75 return xdest;
91} 76}
92 77
93/* strnlen !! */ 78#define __HAVE_ARCH_STRCAT
79#define strcat(d, s) ({ \
80 char *__d = (d); \
81 strcpy(__d + strlen(__d), (s)); \
82})
94 83
95#define __HAVE_ARCH_STRCMP 84#define __HAVE_ARCH_STRCHR
96static inline int strcmp(const char * cs,const char * ct) 85static inline char *strchr(const char *s, int c)
97{ 86{
98 char __res; 87 char sc, ch = c;
99 88
100 __asm__ 89 for (; (sc = *s++) != ch; ) {
101 ("1:\tmoveb %0@+,%2\n\t" /* get *cs */ 90 if (!sc)
102 "cmpb %1@+,%2\n\t" /* compare a byte */ 91 return NULL;
103 "jne 2f\n\t" /* not equal, break out */ 92 }
104 "tstb %2\n\t" /* at end of cs? */ 93 return (char *)s - 1;
105 "jne 1b\n\t" /* no, keep going */
106 "jra 3f\n\t" /* strings are equal */
107 "2:\tsubb %1@-,%2\n\t" /* *cs - *ct */
108 "3:"
109 : "=a" (cs), "=a" (ct), "=d" (__res)
110 : "0" (cs), "1" (ct));
111 return __res;
112} 94}
113 95
114#define __HAVE_ARCH_STRNCMP 96#define __HAVE_ARCH_STRCMP
115static inline int strncmp(const char * cs,const char * ct,size_t count) 97static inline int strcmp(const char *cs, const char *ct)
116{ 98{
117 char __res; 99 char res;
118 100
119 if (!count) 101 asm ("\n"
120 return 0; 102 "1: move.b (%0)+,%2\n" /* get *cs */
121 __asm__ 103 " cmp.b (%1)+,%2\n" /* compare a byte */
122 ("1:\tmovb %0@+,%3\n\t" /* get *cs */ 104 " jne 2f\n" /* not equal, break out */
123 "cmpb %1@+,%3\n\t" /* compare a byte */ 105 " tst.b %2\n" /* at end of cs? */
124 "jne 3f\n\t" /* not equal, break out */ 106 " jne 1b\n" /* no, keep going */
125 "tstb %3\n\t" /* at end of cs? */ 107 " jra 3f\n" /* strings are equal */
126 "jeq 4f\n\t" /* yes, all done */ 108 "2: sub.b -(%1),%2\n" /* *cs - *ct */
127 "subql #1,%2\n\t" /* no, adjust count */ 109 "3:"
128 "jne 1b\n\t" /* more to do, keep going */ 110 : "+a" (cs), "+a" (ct), "=d" (res));
129 "2:\tmoveq #0,%3\n\t" /* strings are equal */ 111 return res;
130 "jra 4f\n\t"
131 "3:\tsubb %1@-,%3\n\t" /* *cs - *ct */
132 "4:"
133 : "=a" (cs), "=a" (ct), "=d" (count), "=d" (__res)
134 : "0" (cs), "1" (ct), "2" (count));
135 return __res;
136} 112}
137 113
138#define __HAVE_ARCH_MEMSET 114#define __HAVE_ARCH_MEMSET
@@ -150,4 +126,6 @@ extern void *memmove(void *, const void *, __kernel_size_t);
150extern int memcmp(const void *, const void *, __kernel_size_t); 126extern int memcmp(const void *, const void *, __kernel_size_t);
151#define memcmp(d, s, n) __builtin_memcmp(d, s, n) 127#define memcmp(d, s, n) __builtin_memcmp(d, s, n)
152 128
129#endif
130
153#endif /* _M68K_STRING_H_ */ 131#endif /* _M68K_STRING_H_ */
diff --git a/include/asm-m68k/sun3xflop.h b/include/asm-m68k/sun3xflop.h
index ca8cc4113843..32c45f84ac60 100644
--- a/include/asm-m68k/sun3xflop.h
+++ b/include/asm-m68k/sun3xflop.h
@@ -111,8 +111,7 @@ static void sun3x_82072_fd_outb(unsigned char value, int port)
111} 111}
112 112
113 113
114asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id, 114asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id)
115 struct pt_regs * regs)
116{ 115{
117 register unsigned char st; 116 register unsigned char st;
118 117
@@ -125,7 +124,7 @@ asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id,
125 static int dma_wait=0; 124 static int dma_wait=0;
126#endif 125#endif
127 if(!doing_pdma) { 126 if(!doing_pdma) {
128 floppy_interrupt(irq, dev_id, regs); 127 floppy_interrupt(irq, dev_id);
129 return IRQ_HANDLED; 128 return IRQ_HANDLED;
130 } 129 }
131 130
@@ -189,7 +188,7 @@ asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id,
189 dma_wait=0; 188 dma_wait=0;
190#endif 189#endif
191 190
192 floppy_interrupt(irq, dev_id, regs); 191 floppy_interrupt(irq, dev_id);
193 return IRQ_HANDLED; 192 return IRQ_HANDLED;
194 } 193 }
195 194
diff --git a/include/asm-m68k/system.h b/include/asm-m68k/system.h
index 131a0cb0f491..243dd13e6bfc 100644
--- a/include/asm-m68k/system.h
+++ b/include/asm-m68k/system.h
@@ -78,13 +78,13 @@ static inline int irqs_disabled(void)
78#define mb() barrier() 78#define mb() barrier()
79#define rmb() barrier() 79#define rmb() barrier()
80#define wmb() barrier() 80#define wmb() barrier()
81#define read_barrier_depends() do { } while(0) 81#define read_barrier_depends() ((void)0)
82#define set_mb(var, value) do { xchg(&var, value); } while (0) 82#define set_mb(var, value) ({ (var) = (value); wmb(); })
83 83
84#define smp_mb() barrier() 84#define smp_mb() barrier()
85#define smp_rmb() barrier() 85#define smp_rmb() barrier()
86#define smp_wmb() barrier() 86#define smp_wmb() barrier()
87#define smp_read_barrier_depends() do { } while(0) 87#define smp_read_barrier_depends() ((void)0)
88 88
89 89
90#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) 90#define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
diff --git a/include/asm-m68k/unistd.h b/include/asm-m68k/unistd.h
index 3ab716f0fc18..ad4348058c66 100644
--- a/include/asm-m68k/unistd.h
+++ b/include/asm-m68k/unistd.h
@@ -284,10 +284,39 @@
284#define __NR_add_key 279 284#define __NR_add_key 279
285#define __NR_request_key 280 285#define __NR_request_key 280
286#define __NR_keyctl 281 286#define __NR_keyctl 281
287#define __NR_ioprio_set 282
288#define __NR_ioprio_get 283
289#define __NR_inotify_init 284
290#define __NR_inotify_add_watch 285
291#define __NR_inotify_rm_watch 286
292#define __NR_migrate_pages 287
293#define __NR_openat 288
294#define __NR_mkdirat 289
295#define __NR_mknodat 290
296#define __NR_fchownat 291
297#define __NR_futimesat 292
298#define __NR_fstatat64 293
299#define __NR_unlinkat 294
300#define __NR_renameat 295
301#define __NR_linkat 296
302#define __NR_symlinkat 297
303#define __NR_readlinkat 298
304#define __NR_fchmodat 299
305#define __NR_faccessat 300
306#define __NR_pselect6 301
307#define __NR_ppoll 302
308#define __NR_unshare 303
309#define __NR_set_robust_list 304
310#define __NR_get_robust_list 305
311#define __NR_splice 306
312#define __NR_sync_file_range 307
313#define __NR_tee 308
314#define __NR_vmsplice 309
315#define __NR_move_pages 310
287 316
288#ifdef __KERNEL__ 317#ifdef __KERNEL__
289 318
290#define NR_syscalls 282 319#define NR_syscalls 311
291#include <linux/err.h> 320#include <linux/err.h>
292 321
293/* user-visible error numbers are in the range -1 - -MAX_ERRNO: see 322/* user-visible error numbers are in the range -1 - -MAX_ERRNO: see
diff --git a/include/asm-m68k/user.h b/include/asm-m68k/user.h
index e8d5a64c7e79..d7c0b109bd45 100644
--- a/include/asm-m68k/user.h
+++ b/include/asm-m68k/user.h
@@ -81,7 +81,7 @@ struct user{
81 unsigned long magic; /* To uniquely identify a core file */ 81 unsigned long magic; /* To uniquely identify a core file */
82 char u_comm[32]; /* User command that was responsible */ 82 char u_comm[32]; /* User command that was responsible */
83}; 83};
84#define NBPG PAGE_SIZE 84#define NBPG 4096
85#define UPAGES 1 85#define UPAGES 1
86#define HOST_TEXT_START_ADDR (u.start_code) 86#define HOST_TEXT_START_ADDR (u.start_code)
87#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) 87#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
diff --git a/include/asm-mips/dec/ecc.h b/include/asm-mips/dec/ecc.h
index 19495a490e72..707ffdbc9add 100644
--- a/include/asm-mips/dec/ecc.h
+++ b/include/asm-mips/dec/ecc.h
@@ -49,8 +49,7 @@ struct pt_regs;
49 49
50extern void dec_ecc_be_init(void); 50extern void dec_ecc_be_init(void);
51extern int dec_ecc_be_handler(struct pt_regs *regs, int is_fixup); 51extern int dec_ecc_be_handler(struct pt_regs *regs, int is_fixup);
52extern irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id, 52extern irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id);
53 struct pt_regs *regs);
54#endif 53#endif
55 54
56#endif /* __ASM_MIPS_DEC_ECC_H */ 55#endif /* __ASM_MIPS_DEC_ECC_H */
diff --git a/include/asm-mips/dec/kn01.h b/include/asm-mips/dec/kn01.h
index eb522aa1e226..28fa717ac423 100644
--- a/include/asm-mips/dec/kn01.h
+++ b/include/asm-mips/dec/kn01.h
@@ -84,8 +84,7 @@ extern spinlock_t kn01_lock;
84 84
85extern void dec_kn01_be_init(void); 85extern void dec_kn01_be_init(void);
86extern int dec_kn01_be_handler(struct pt_regs *regs, int is_fixup); 86extern int dec_kn01_be_handler(struct pt_regs *regs, int is_fixup);
87extern irqreturn_t dec_kn01_be_interrupt(int irq, void *dev_id, 87extern irqreturn_t dec_kn01_be_interrupt(int irq, void *dev_id);
88 struct pt_regs *regs);
89#endif 88#endif
90 89
91#endif /* __ASM_MIPS_DEC_KN01_H */ 90#endif /* __ASM_MIPS_DEC_KN01_H */
diff --git a/include/asm-mips/dec/kn02xa.h b/include/asm-mips/dec/kn02xa.h
index a25f3d7da7f7..b56b4577f6ef 100644
--- a/include/asm-mips/dec/kn02xa.h
+++ b/include/asm-mips/dec/kn02xa.h
@@ -78,8 +78,7 @@ struct pt_regs;
78 78
79extern void dec_kn02xa_be_init(void); 79extern void dec_kn02xa_be_init(void);
80extern int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup); 80extern int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup);
81extern irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id, 81extern irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id);
82 struct pt_regs *regs);
83#endif 82#endif
84 83
85#endif /* __ASM_MIPS_DEC_KN02XA_H */ 84#endif /* __ASM_MIPS_DEC_KN02XA_H */
diff --git a/include/asm-mips/fpu.h b/include/asm-mips/fpu.h
index 58c561a9ec6b..efef843b93f0 100644
--- a/include/asm-mips/fpu.h
+++ b/include/asm-mips/fpu.h
@@ -134,9 +134,11 @@ static inline void restore_fp(struct task_struct *tsk)
134 134
135static inline fpureg_t *get_fpu_regs(struct task_struct *tsk) 135static inline fpureg_t *get_fpu_regs(struct task_struct *tsk)
136{ 136{
137 if (cpu_has_fpu) { 137 if (tsk == current) {
138 if ((tsk == current) && __is_fpu_owner()) 138 preempt_disable();
139 if (is_fpu_owner())
139 _save_fp(current); 140 _save_fp(current);
141 preempt_enable();
140 } 142 }
141 143
142 return tsk->thread.fpu.fpr; 144 return tsk->thread.fpu.fpr;
diff --git a/include/asm-mips/irq.h b/include/asm-mips/irq.h
index d35c61776a02..1a9804c65369 100644
--- a/include/asm-mips/irq.h
+++ b/include/asm-mips/irq.h
@@ -26,7 +26,7 @@ static inline int irq_canonicalize(int irq)
26 26
27struct pt_regs; 27struct pt_regs;
28 28
29extern asmlinkage unsigned int do_IRQ(unsigned int irq, struct pt_regs *regs); 29extern asmlinkage unsigned int do_IRQ(unsigned int irq);
30 30
31#ifdef CONFIG_MIPS_MT_SMTC 31#ifdef CONFIG_MIPS_MT_SMTC
32/* 32/*
@@ -55,18 +55,18 @@ do { \
55 * Ideally there should be away to get this into kernel/irq/handle.c to 55 * Ideally there should be away to get this into kernel/irq/handle.c to
56 * avoid the overhead of a call for just a tiny function ... 56 * avoid the overhead of a call for just a tiny function ...
57 */ 57 */
58#define do_IRQ(irq, regs) \ 58#define do_IRQ(irq) \
59do { \ 59do { \
60 irq_enter(); \ 60 irq_enter(); \
61 __DO_IRQ_SMTC_HOOK(); \ 61 __DO_IRQ_SMTC_HOOK(); \
62 __do_IRQ((irq), (regs)); \ 62 __do_IRQ((irq)); \
63 irq_exit(); \ 63 irq_exit(); \
64} while (0) 64} while (0)
65 65
66#endif 66#endif
67 67
68extern void arch_init_irq(void); 68extern void arch_init_irq(void);
69extern void spurious_interrupt(struct pt_regs *regs); 69extern void spurious_interrupt(void);
70 70
71#ifdef CONFIG_MIPS_MT_SMTC 71#ifdef CONFIG_MIPS_MT_SMTC
72struct irqaction; 72struct irqaction;
diff --git a/include/asm-mips/irq_regs.h b/include/asm-mips/irq_regs.h
new file mode 100644
index 000000000000..33bd2a06de57
--- /dev/null
+++ b/include/asm-mips/irq_regs.h
@@ -0,0 +1,21 @@
1/*
2 * This program is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU General Public License
4 * as published by the Free Software Foundation; either version
5 * 2 of the License, or (at your option) any later version.
6 *
7 * Copyright (C) 2006 Ralf Baechle (ralf@linux-mips.org)
8 */
9#ifndef __ASM_IRQ_REGS_H
10#define __ASM_IRQ_REGS_H
11
12#define ARCH_HAS_OWN_IRQ_REGS
13
14#include <linux/thread_info.h>
15
16static inline struct pt_regs *get_irq_regs(void)
17{
18 return current_thread_info()->regs;
19}
20
21#endif /* __ASM_IRQ_REGS_H */
diff --git a/include/asm-mips/jmr3927/irq.h b/include/asm-mips/jmr3927/irq.h
index fe551f33a74f..e3e7ed38da6c 100644
--- a/include/asm-mips/jmr3927/irq.h
+++ b/include/asm-mips/jmr3927/irq.h
@@ -45,10 +45,6 @@ extern int
45toshibaboards_setup_irq(int irq, struct irqaction * new); 45toshibaboards_setup_irq(int irq, struct irqaction * new);
46 46
47 47
48#ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND
49extern void tx_branch_likely_bug_fixup(struct pt_regs *regs);
50#endif
51
52extern int (*toshibaboards_gen_iack)(void); 48extern int (*toshibaboards_gen_iack)(void);
53 49
54#endif /* !__ASSEMBLY__ */ 50#endif /* !__ASSEMBLY__ */
diff --git a/include/asm-mips/mach-au1x00/au1000_dma.h b/include/asm-mips/mach-au1x00/au1000_dma.h
index 810f2fa33444..9f29520e8fb0 100644
--- a/include/asm-mips/mach-au1x00/au1000_dma.h
+++ b/include/asm-mips/mach-au1x00/au1000_dma.h
@@ -123,8 +123,7 @@ struct dma_chan {
123extern struct dma_chan au1000_dma_table[]; 123extern struct dma_chan au1000_dma_table[];
124extern int request_au1000_dma(int dev_id, 124extern int request_au1000_dma(int dev_id,
125 const char *dev_str, 125 const char *dev_str,
126 irqreturn_t (*irqhandler)(int, void *, 126 irq_handler_t irqhandler,
127 struct pt_regs *),
128 unsigned long irqflags, 127 unsigned long irqflags,
129 void *irq_dev_id); 128 void *irq_dev_id);
130extern void free_au1000_dma(unsigned int dmanr); 129extern void free_au1000_dma(unsigned int dmanr);
diff --git a/include/asm-mips/mach-au1x00/au1000_usbdev.h b/include/asm-mips/mach-au1x00/au1000_usbdev.h
deleted file mode 100644
index 05bc74bed0b1..000000000000
--- a/include/asm-mips/mach-au1x00/au1000_usbdev.h
+++ /dev/null
@@ -1,73 +0,0 @@
1/*
2 * BRIEF MODULE DESCRIPTION
3 * Au1000 USB Device-Side Driver
4 *
5 * Copyright 2001 MontaVista Software Inc.
6 * Author: MontaVista Software, Inc.
7 * stevel@mvista.com or source@mvista.com
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version.
13 *
14 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
17 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
20 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 *
25 * You should have received a copy of the GNU General Public License along
26 * with this program; if not, write to the Free Software Foundation, Inc.,
27 * 675 Mass Ave, Cambridge, MA 02139, USA.
28 */
29
30#define USBDEV_REV 0x0110 // BCD
31#define USBDEV_EP0_MAX_PACKET_SIZE 64
32
33typedef enum {
34 ATTACHED = 0,
35 POWERED,
36 DEFAULT,
37 ADDRESS,
38 CONFIGURED
39} usbdev_state_t;
40
41typedef enum {
42 CB_NEW_STATE = 0,
43 CB_PKT_COMPLETE
44} usbdev_cb_type_t;
45
46
47typedef struct usbdev_pkt {
48 int ep_addr; // ep addr this packet routed to
49 int size; // size of payload in bytes
50 unsigned status; // packet status
51 struct usbdev_pkt* next; // function layer can't touch this
52 u8 payload[0]; // the payload
53} usbdev_pkt_t;
54
55#define PKT_STATUS_ACK (1<<0)
56#define PKT_STATUS_NAK (1<<1)
57#define PKT_STATUS_SU (1<<2)
58
59extern int usbdev_init(struct usb_device_descriptor* dev_desc,
60 struct usb_config_descriptor* config_desc,
61 struct usb_interface_descriptor* if_desc,
62 struct usb_endpoint_descriptor* ep_desc,
63 struct usb_string_descriptor* str_desc[],
64 void (*cb)(usbdev_cb_type_t, unsigned long, void *),
65 void* cb_data);
66
67extern void usbdev_exit(void);
68
69extern int usbdev_alloc_packet (int ep_addr, int data_size,
70 usbdev_pkt_t** pkt);
71extern int usbdev_send_packet (int ep_addr, usbdev_pkt_t* pkt);
72extern int usbdev_receive_packet(int ep_addr, usbdev_pkt_t** pkt);
73extern int usbdev_get_byte_count(int ep_addr);
diff --git a/include/asm-mips/marvell.h b/include/asm-mips/marvell.h
index 6bb2125bb053..df94955b098a 100644
--- a/include/asm-mips/marvell.h
+++ b/include/asm-mips/marvell.h
@@ -53,6 +53,6 @@ struct mv_pci_controller {
53 unsigned long config_vreg; 53 unsigned long config_vreg;
54}; 54};
55 55
56extern void ll_mv64340_irq(struct pt_regs *regs); 56extern void ll_mv64340_irq(void);
57 57
58#endif /* __ASM_MIPS_MARVELL_H */ 58#endif /* __ASM_MIPS_MARVELL_H */
diff --git a/include/asm-mips/msc01_ic.h b/include/asm-mips/msc01_ic.h
index 64f17208d602..aa7ad9a71762 100644
--- a/include/asm-mips/msc01_ic.h
+++ b/include/asm-mips/msc01_ic.h
@@ -145,7 +145,7 @@ typedef struct msc_irqmap {
145#define MSC01_IRQ_EDGE 1 145#define MSC01_IRQ_EDGE 1
146 146
147extern void __init init_msc_irqs(unsigned int base, msc_irqmap_t *imp, int nirq); 147extern void __init init_msc_irqs(unsigned int base, msc_irqmap_t *imp, int nirq);
148extern void ll_msc_irq(struct pt_regs *regs); 148extern void ll_msc_irq(void);
149 149
150#endif /* __ASM_MIPS_BOARDS_MSC01_IC_H */ 150#endif /* __ASM_MIPS_BOARDS_MSC01_IC_H */
151 151
diff --git a/include/asm-mips/thread_info.h b/include/asm-mips/thread_info.h
index ae8ada5b42a9..e475c45ea263 100644
--- a/include/asm-mips/thread_info.h
+++ b/include/asm-mips/thread_info.h
@@ -34,6 +34,7 @@ struct thread_info {
34 0-0xFFFFFFFF for kernel-thread 34 0-0xFFFFFFFF for kernel-thread
35 */ 35 */
36 struct restart_block restart_block; 36 struct restart_block restart_block;
37 struct pt_regs *regs;
37}; 38};
38 39
39/* 40/*
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h
index 2d543735668b..28512ba2266e 100644
--- a/include/asm-mips/time.h
+++ b/include/asm-mips/time.h
@@ -67,18 +67,18 @@ extern unsigned long (*do_gettimeoffset)(void);
67/* 67/*
68 * high-level timer interrupt routines. 68 * high-level timer interrupt routines.
69 */ 69 */
70extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs); 70extern irqreturn_t timer_interrupt(int irq, void *dev_id);
71 71
72/* 72/*
73 * the corresponding low-level timer interrupt routine. 73 * the corresponding low-level timer interrupt routine.
74 */ 74 */
75extern asmlinkage void ll_timer_interrupt(int irq, struct pt_regs *regs); 75extern asmlinkage void ll_timer_interrupt(int irq);
76 76
77/* 77/*
78 * profiling and process accouting is done separately in local_timer_interrupt 78 * profiling and process accouting is done separately in local_timer_interrupt
79 */ 79 */
80extern void local_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs); 80extern void local_timer_interrupt(int irq, void *dev_id);
81extern asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs); 81extern asmlinkage void ll_local_timer_interrupt(int irq);
82 82
83/* 83/*
84 * board specific routines required by time_init(). 84 * board specific routines required by time_init().
diff --git a/include/asm-parisc/irq_regs.h b/include/asm-parisc/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-parisc/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-parisc/pdc.h b/include/asm-parisc/pdc.h
index c9b2e35326ee..423c2b84b4a0 100644
--- a/include/asm-parisc/pdc.h
+++ b/include/asm-parisc/pdc.h
@@ -774,8 +774,6 @@ int pdc_sti_call(unsigned long func, unsigned long flags,
774 unsigned long inptr, unsigned long outputr, 774 unsigned long inptr, unsigned long outputr,
775 unsigned long glob_cfg); 775 unsigned long glob_cfg);
776 776
777extern void pdc_init(void);
778
779static inline char * os_id_to_string(u16 os_id) { 777static inline char * os_id_to_string(u16 os_id) {
780 switch(os_id) { 778 switch(os_id) {
781 case OS_ID_NONE: return "No OS"; 779 case OS_ID_NONE: return "No OS";
diff --git a/include/asm-powerpc/i8259.h b/include/asm-powerpc/i8259.h
index c80e113052cd..78489fb8d140 100644
--- a/include/asm-powerpc/i8259.h
+++ b/include/asm-powerpc/i8259.h
@@ -6,10 +6,10 @@
6 6
7#ifdef CONFIG_PPC_MERGE 7#ifdef CONFIG_PPC_MERGE
8extern void i8259_init(struct device_node *node, unsigned long intack_addr); 8extern void i8259_init(struct device_node *node, unsigned long intack_addr);
9extern unsigned int i8259_irq(struct pt_regs *regs); 9extern unsigned int i8259_irq(void);
10#else 10#else
11extern void i8259_init(unsigned long intack_addr, int offset); 11extern void i8259_init(unsigned long intack_addr, int offset);
12extern int i8259_irq(struct pt_regs *regs); 12extern int i8259_irq(void);
13#endif 13#endif
14 14
15#endif /* __KERNEL__ */ 15#endif /* __KERNEL__ */
diff --git a/include/asm-powerpc/ibmebus.h b/include/asm-powerpc/ibmebus.h
index 7ab195a27888..3493429b70f5 100644
--- a/include/asm-powerpc/ibmebus.h
+++ b/include/asm-powerpc/ibmebus.h
@@ -65,7 +65,7 @@ void ibmebus_unregister_driver(struct ibmebus_driver *drv);
65 65
66int ibmebus_request_irq(struct ibmebus_dev *dev, 66int ibmebus_request_irq(struct ibmebus_dev *dev,
67 u32 ist, 67 u32 ist,
68 irqreturn_t (*handler)(int, void*, struct pt_regs *), 68 irq_handler_t handler,
69 unsigned long irq_flags, const char * devname, 69 unsigned long irq_flags, const char * devname,
70 void *dev_id); 70 void *dev_id);
71void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id); 71void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id);
diff --git a/include/asm-powerpc/ipic.h b/include/asm-powerpc/ipic.h
index 1ce09a35906e..9fbb03415860 100644
--- a/include/asm-powerpc/ipic.h
+++ b/include/asm-powerpc/ipic.h
@@ -79,12 +79,12 @@ extern void ipic_clear_mcp_status(u32 mask);
79 79
80#ifdef CONFIG_PPC_MERGE 80#ifdef CONFIG_PPC_MERGE
81extern void ipic_init(struct device_node *node, unsigned int flags); 81extern void ipic_init(struct device_node *node, unsigned int flags);
82extern unsigned int ipic_get_irq(struct pt_regs *regs); 82extern unsigned int ipic_get_irq(void);
83#else 83#else
84extern void ipic_init(phys_addr_t phys_addr, unsigned int flags, 84extern void ipic_init(phys_addr_t phys_addr, unsigned int flags,
85 unsigned int irq_offset, 85 unsigned int irq_offset,
86 unsigned char *senses, unsigned int senses_count); 86 unsigned char *senses, unsigned int senses_count);
87extern int ipic_get_irq(struct pt_regs *regs); 87extern int ipic_get_irq(void);
88#endif 88#endif
89 89
90#endif /* __ASM_IPIC_H__ */ 90#endif /* __ASM_IPIC_H__ */
diff --git a/include/asm-powerpc/irq.h b/include/asm-powerpc/irq.h
index 89ed545b446b..f960f5346f40 100644
--- a/include/asm-powerpc/irq.h
+++ b/include/asm-powerpc/irq.h
@@ -825,7 +825,7 @@ extern struct thread_info *softirq_ctx[NR_CPUS];
825 825
826extern void irq_ctx_init(void); 826extern void irq_ctx_init(void);
827extern void call_do_softirq(struct thread_info *tp); 827extern void call_do_softirq(struct thread_info *tp);
828extern int call_handle_irq(int irq, void *p1, void *p2, 828extern int call_handle_irq(int irq, void *p1,
829 struct thread_info *tp, void *func); 829 struct thread_info *tp, void *func);
830#else 830#else
831#define irq_ctx_init() 831#define irq_ctx_init()
diff --git a/include/asm-powerpc/irq_regs.h b/include/asm-powerpc/irq_regs.h
new file mode 100644
index 000000000000..ba94b51a0a70
--- /dev/null
+++ b/include/asm-powerpc/irq_regs.h
@@ -0,0 +1,2 @@
1#include <asm-generic/irq_regs.h>
2
diff --git a/include/asm-powerpc/iseries/hv_lp_event.h b/include/asm-powerpc/iseries/hv_lp_event.h
index 4065a4de4935..6ce2ce1e2690 100644
--- a/include/asm-powerpc/iseries/hv_lp_event.h
+++ b/include/asm-powerpc/iseries/hv_lp_event.h
@@ -50,7 +50,7 @@ struct HvLpEvent {
50 u64 xCorrelationToken; /* Unique value for source/type x10-x17 */ 50 u64 xCorrelationToken; /* Unique value for source/type x10-x17 */
51}; 51};
52 52
53typedef void (*LpEventHandler)(struct HvLpEvent *, struct pt_regs *); 53typedef void (*LpEventHandler)(struct HvLpEvent *);
54 54
55/* Register a handler for an event type - returns 0 on success */ 55/* Register a handler for an event type - returns 0 on success */
56extern int HvLpEvent_registerHandler(HvLpEvent_Type eventType, 56extern int HvLpEvent_registerHandler(HvLpEvent_Type eventType,
diff --git a/include/asm-powerpc/iseries/it_lp_queue.h b/include/asm-powerpc/iseries/it_lp_queue.h
index 3f6814769295..428278838821 100644
--- a/include/asm-powerpc/iseries/it_lp_queue.h
+++ b/include/asm-powerpc/iseries/it_lp_queue.h
@@ -72,7 +72,7 @@ struct hvlpevent_queue {
72extern struct hvlpevent_queue hvlpevent_queue; 72extern struct hvlpevent_queue hvlpevent_queue;
73 73
74extern int hvlpevent_is_pending(void); 74extern int hvlpevent_is_pending(void);
75extern void process_hvlpevents(struct pt_regs *); 75extern void process_hvlpevents(void);
76extern void setup_hvlpevent_queue(void); 76extern void setup_hvlpevent_queue(void);
77 77
78#endif /* _ASM_POWERPC_ISERIES_IT_LP_QUEUE_H */ 78#endif /* _ASM_POWERPC_ISERIES_IT_LP_QUEUE_H */
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h
index c17c13742401..dac90dc341cb 100644
--- a/include/asm-powerpc/machdep.h
+++ b/include/asm-powerpc/machdep.h
@@ -97,7 +97,7 @@ struct machdep_calls {
97 void (*show_percpuinfo)(struct seq_file *m, int i); 97 void (*show_percpuinfo)(struct seq_file *m, int i);
98 98
99 void (*init_IRQ)(void); 99 void (*init_IRQ)(void);
100 unsigned int (*get_irq)(struct pt_regs *); 100 unsigned int (*get_irq)(void);
101#ifdef CONFIG_KEXEC 101#ifdef CONFIG_KEXEC
102 void (*kexec_cpu_down)(int crash_shutdown, int secondary); 102 void (*kexec_cpu_down)(int crash_shutdown, int secondary);
103#endif 103#endif
diff --git a/include/asm-powerpc/mpic.h b/include/asm-powerpc/mpic.h
index a9f9604b9eff..ef0a5458d2b2 100644
--- a/include/asm-powerpc/mpic.h
+++ b/include/asm-powerpc/mpic.h
@@ -409,9 +409,9 @@ extern void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask);
409void smp_mpic_message_pass(int target, int msg); 409void smp_mpic_message_pass(int target, int msg);
410 410
411/* Fetch interrupt from a given mpic */ 411/* Fetch interrupt from a given mpic */
412extern unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs); 412extern unsigned int mpic_get_one_irq(struct mpic *mpic);
413/* This one gets to the primary mpic */ 413/* This one gets to the primary mpic */
414extern unsigned int mpic_get_irq(struct pt_regs *regs); 414extern unsigned int mpic_get_irq(void);
415 415
416/* Set the EPIC clock ratio */ 416/* Set the EPIC clock ratio */
417void mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio); 417void mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio);
diff --git a/include/asm-powerpc/reg.h b/include/asm-powerpc/reg.h
index 3a9fcc15811b..8fb96811b55d 100644
--- a/include/asm-powerpc/reg.h
+++ b/include/asm-powerpc/reg.h
@@ -503,7 +503,7 @@
503 503
504/* 504/*
505 * An mtfsf instruction with the L bit set. On CPUs that support this a 505 * An mtfsf instruction with the L bit set. On CPUs that support this a
506 * full 64bits of FPSCR is restored and on other CPUs it is ignored. 506 * full 64bits of FPSCR is restored and on other CPUs the L bit is ignored.
507 * 507 *
508 * Until binutils gets the new form of mtfsf, hardwire the instruction. 508 * Until binutils gets the new form of mtfsf, hardwire the instruction.
509 */ 509 */
diff --git a/include/asm-powerpc/smp.h b/include/asm-powerpc/smp.h
index 068f119aa298..20ea7c70bc38 100644
--- a/include/asm-powerpc/smp.h
+++ b/include/asm-powerpc/smp.h
@@ -34,8 +34,7 @@ extern void cpu_die(void);
34#ifdef CONFIG_SMP 34#ifdef CONFIG_SMP
35 35
36extern void smp_send_debugger_break(int cpu); 36extern void smp_send_debugger_break(int cpu);
37struct pt_regs; 37extern void smp_message_recv(int);
38extern void smp_message_recv(int, struct pt_regs *);
39 38
40#ifdef CONFIG_HOTPLUG_CPU 39#ifdef CONFIG_HOTPLUG_CPU
41extern void fixup_irqs(cpumask_t map); 40extern void fixup_irqs(cpumask_t map);
diff --git a/include/asm-ppc/commproc.h b/include/asm-ppc/commproc.h
index 3247bea5fc2b..7b06b4e6bf30 100644
--- a/include/asm-ppc/commproc.h
+++ b/include/asm-ppc/commproc.h
@@ -690,8 +690,7 @@ typedef struct risc_timer_pram {
690#define CICR_IEN ((uint)0x00000080) /* Int. enable */ 690#define CICR_IEN ((uint)0x00000080) /* Int. enable */
691#define CICR_SPS ((uint)0x00000001) /* SCC Spread */ 691#define CICR_SPS ((uint)0x00000001) /* SCC Spread */
692 692
693extern void cpm_install_handler(int vec, 693extern void cpm_install_handler(int vec, void (*handler)(void *), void *dev_id);
694 void (*handler)(void *, struct pt_regs *regs), void *dev_id);
695extern void cpm_free_handler(int vec); 694extern void cpm_free_handler(int vec);
696 695
697#endif /* __CPM_8XX__ */ 696#endif /* __CPM_8XX__ */
diff --git a/include/asm-ppc/floppy.h b/include/asm-ppc/floppy.h
index d3963ca79ad8..ae316e6d2ca9 100644
--- a/include/asm-ppc/floppy.h
+++ b/include/asm-ppc/floppy.h
@@ -38,14 +38,14 @@ static int virtual_dma_mode;
38static int doing_vdma; 38static int doing_vdma;
39static struct fd_dma_ops *fd_ops; 39static struct fd_dma_ops *fd_ops;
40 40
41static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) 41static irqreturn_t floppy_hardint(int irq, void *dev_id)
42{ 42{
43 unsigned char st; 43 unsigned char st;
44 int lcount; 44 int lcount;
45 char *lptr; 45 char *lptr;
46 46
47 if (!doing_vdma) 47 if (!doing_vdma)
48 return floppy_interrupt(irq, dev_id, regs); 48 return floppy_interrupt(irq, dev_id);
49 49
50 50
51 st = 1; 51 st = 1;
@@ -69,7 +69,7 @@ static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs)
69 virtual_dma_residue += virtual_dma_count; 69 virtual_dma_residue += virtual_dma_count;
70 virtual_dma_count=0; 70 virtual_dma_count=0;
71 doing_vdma = 0; 71 doing_vdma = 0;
72 floppy_interrupt(irq, dev_id, regs); 72 floppy_interrupt(irq, dev_id);
73 return IRQ_HANDLED; 73 return IRQ_HANDLED;
74 } 74 }
75 return IRQ_HANDLED; 75 return IRQ_HANDLED;
diff --git a/include/asm-ppc/gt64260.h b/include/asm-ppc/gt64260.h
index cd0ef644943d..9e63b3cfffca 100644
--- a/include/asm-ppc/gt64260.h
+++ b/include/asm-ppc/gt64260.h
@@ -315,7 +315,7 @@ int gt64260_get_base(u32 *base);
315int gt64260_pci_exclude_device(u8 bus, u8 devfn); 315int gt64260_pci_exclude_device(u8 bus, u8 devfn);
316 316
317void gt64260_init_irq(void); 317void gt64260_init_irq(void);
318int gt64260_get_irq(struct pt_regs *regs); 318int gt64260_get_irq(void);
319 319
320void gt64260_mpsc_progress(char *s, unsigned short hex); 320void gt64260_mpsc_progress(char *s, unsigned short hex);
321 321
diff --git a/include/asm-ppc/machdep.h b/include/asm-ppc/machdep.h
index da7746738aee..293a444a1d77 100644
--- a/include/asm-ppc/machdep.h
+++ b/include/asm-ppc/machdep.h
@@ -43,7 +43,7 @@ struct machdep_calls {
43 /* Optional, may be NULL. */ 43 /* Optional, may be NULL. */
44 unsigned int (*irq_canonicalize)(unsigned int irq); 44 unsigned int (*irq_canonicalize)(unsigned int irq);
45 void (*init_IRQ)(void); 45 void (*init_IRQ)(void);
46 int (*get_irq)(struct pt_regs *); 46 int (*get_irq)(void);
47 47
48 /* A general init function, called by ppc_init in init/main.c. 48 /* A general init function, called by ppc_init in init/main.c.
49 May be NULL. DEPRECATED ! */ 49 May be NULL. DEPRECATED ! */
diff --git a/include/asm-ppc/mpc52xx.h b/include/asm-ppc/mpc52xx.h
index 7e9842805a28..64c8874618dc 100644
--- a/include/asm-ppc/mpc52xx.h
+++ b/include/asm-ppc/mpc52xx.h
@@ -415,7 +415,7 @@ struct mpc52xx_cdm {
415#ifndef __ASSEMBLY__ 415#ifndef __ASSEMBLY__
416 416
417extern void mpc52xx_init_irq(void); 417extern void mpc52xx_init_irq(void);
418extern int mpc52xx_get_irq(struct pt_regs *regs); 418extern int mpc52xx_get_irq(void);
419 419
420extern unsigned long mpc52xx_find_end_of_memory(void); 420extern unsigned long mpc52xx_find_end_of_memory(void);
421extern void mpc52xx_set_bat(void); 421extern void mpc52xx_set_bat(void);
diff --git a/include/asm-ppc/mv64x60.h b/include/asm-ppc/mv64x60.h
index 663edbee3e91..db3776f18198 100644
--- a/include/asm-ppc/mv64x60.h
+++ b/include/asm-ppc/mv64x60.h
@@ -336,9 +336,9 @@ int mv64x60_pci_exclude_device(u8 bus, u8 devfn);
336 336
337 337
338void gt64260_init_irq(void); 338void gt64260_init_irq(void);
339int gt64260_get_irq(struct pt_regs *regs); 339int gt64260_get_irq(void);
340void mv64360_init_irq(void); 340void mv64360_init_irq(void);
341int mv64360_get_irq(struct pt_regs *regs); 341int mv64360_get_irq(void);
342 342
343u32 mv64x60_mask(u32 val, u32 num_bits); 343u32 mv64x60_mask(u32 val, u32 num_bits);
344u32 mv64x60_shift_left(u32 val, u32 num_bits); 344u32 mv64x60_shift_left(u32 val, u32 num_bits);
diff --git a/include/asm-ppc/open_pic.h b/include/asm-ppc/open_pic.h
index a4fe962d9f73..778d5726212c 100644
--- a/include/asm-ppc/open_pic.h
+++ b/include/asm-ppc/open_pic.h
@@ -48,12 +48,12 @@ extern void openpic_init(int linux_irq_offset);
48extern void openpic_init_nmi_irq(u_int irq); 48extern void openpic_init_nmi_irq(u_int irq);
49extern void openpic_set_irq_priority(u_int irq, u_int pri); 49extern void openpic_set_irq_priority(u_int irq, u_int pri);
50extern void openpic_hookup_cascade(u_int irq, char *name, 50extern void openpic_hookup_cascade(u_int irq, char *name,
51 int (*cascade_fn)(struct pt_regs *)); 51 int (*cascade_fn)(void));
52extern u_int openpic_irq(void); 52extern u_int openpic_irq(void);
53extern void openpic_eoi(void); 53extern void openpic_eoi(void);
54extern void openpic_request_IPIs(void); 54extern void openpic_request_IPIs(void);
55extern void do_openpic_setup_cpu(void); 55extern void do_openpic_setup_cpu(void);
56extern int openpic_get_irq(struct pt_regs *regs); 56extern int openpic_get_irq(void);
57extern void openpic_reset_processor_phys(u_int cpumask); 57extern void openpic_reset_processor_phys(u_int cpumask);
58extern void openpic_setup_ISU(int isu_num, unsigned long addr); 58extern void openpic_setup_ISU(int isu_num, unsigned long addr);
59extern void openpic_cause_IPI(u_int ipi, cpumask_t cpumask); 59extern void openpic_cause_IPI(u_int ipi, cpumask_t cpumask);
@@ -93,6 +93,6 @@ extern void openpic2_init(int linux_irq_offset);
93extern void openpic2_init_nmi_irq(u_int irq); 93extern void openpic2_init_nmi_irq(u_int irq);
94extern u_int openpic2_irq(void); 94extern u_int openpic2_irq(void);
95extern void openpic2_eoi(void); 95extern void openpic2_eoi(void);
96extern int openpic2_get_irq(struct pt_regs *regs); 96extern int openpic2_get_irq(void);
97extern void openpic2_setup_ISU(int isu_num, unsigned long addr); 97extern void openpic2_setup_ISU(int isu_num, unsigned long addr);
98#endif /* _PPC_KERNEL_OPEN_PIC_H */ 98#endif /* _PPC_KERNEL_OPEN_PIC_H */
diff --git a/include/asm-ppc/smp.h b/include/asm-ppc/smp.h
index 0b7fa89589df..e75791ea33a6 100644
--- a/include/asm-ppc/smp.h
+++ b/include/asm-ppc/smp.h
@@ -39,7 +39,7 @@ extern struct smp_ops_t *smp_ops;
39extern void smp_send_tlb_invalidate(int); 39extern void smp_send_tlb_invalidate(int);
40extern void smp_send_xmon_break(int cpu); 40extern void smp_send_xmon_break(int cpu);
41struct pt_regs; 41struct pt_regs;
42extern void smp_message_recv(int, struct pt_regs *); 42extern void smp_message_recv(int);
43 43
44extern int __cpu_disable(void); 44extern int __cpu_disable(void);
45extern void __cpu_die(unsigned int cpu); 45extern void __cpu_die(unsigned int cpu);
diff --git a/include/asm-s390/hardirq.h b/include/asm-s390/hardirq.h
index e84b7ef54aac..c2f6a8782d31 100644
--- a/include/asm-s390/hardirq.h
+++ b/include/asm-s390/hardirq.h
@@ -32,6 +32,6 @@ typedef struct {
32 32
33#define HARDIRQ_BITS 8 33#define HARDIRQ_BITS 8
34 34
35extern void account_ticks(struct pt_regs *); 35extern void account_ticks(void);
36 36
37#endif /* __ASM_HARDIRQ_H */ 37#endif /* __ASM_HARDIRQ_H */
diff --git a/include/asm-s390/irq_regs.h b/include/asm-s390/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-s390/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-s390/percpu.h b/include/asm-s390/percpu.h
index 495ad99c7635..9ea7f1023e57 100644
--- a/include/asm-s390/percpu.h
+++ b/include/asm-s390/percpu.h
@@ -16,7 +16,7 @@
16#if defined(__s390x__) && defined(MODULE) 16#if defined(__s390x__) && defined(MODULE)
17 17
18#define __reloc_hide(var,offset) (*({ \ 18#define __reloc_hide(var,offset) (*({ \
19 extern int simple_indentifier_##var(void); \ 19 extern int simple_identifier_##var(void); \
20 unsigned long *__ptr; \ 20 unsigned long *__ptr; \
21 asm ( "larl %0,per_cpu__"#var"@GOTENT" \ 21 asm ( "larl %0,per_cpu__"#var"@GOTENT" \
22 : "=a" (__ptr) : "X" (per_cpu__##var) ); \ 22 : "=a" (__ptr) : "X" (per_cpu__##var) ); \
@@ -25,7 +25,7 @@
25#else 25#else
26 26
27#define __reloc_hide(var, offset) (*({ \ 27#define __reloc_hide(var, offset) (*({ \
28 extern int simple_indentifier_##var(void); \ 28 extern int simple_identifier_##var(void); \
29 unsigned long __ptr; \ 29 unsigned long __ptr; \
30 asm ( "" : "=a" (__ptr) : "0" (&per_cpu__##var) ); \ 30 asm ( "" : "=a" (__ptr) : "0" (&per_cpu__##var) ); \
31 (typeof(&per_cpu__##var)) (__ptr + (offset)); })) 31 (typeof(&per_cpu__##var)) (__ptr + (offset)); }))
diff --git a/include/asm-s390/s390_ext.h b/include/asm-s390/s390_ext.h
index e9a2862b230d..df9b1017b703 100644
--- a/include/asm-s390/s390_ext.h
+++ b/include/asm-s390/s390_ext.h
@@ -10,7 +10,7 @@
10 * Martin Schwidefsky (schwidefsky@de.ibm.com) 10 * Martin Schwidefsky (schwidefsky@de.ibm.com)
11 */ 11 */
12 12
13typedef void (*ext_int_handler_t)(struct pt_regs *regs, __u16 code); 13typedef void (*ext_int_handler_t)(__u16 code);
14 14
15/* 15/*
16 * Warning: if you change ext_int_info_t you have to change the 16 * Warning: if you change ext_int_info_t you have to change the
diff --git a/include/asm-sparc/floppy.h b/include/asm-sparc/floppy.h
index c53b332c850a..9073c84218ce 100644
--- a/include/asm-sparc/floppy.h
+++ b/include/asm-sparc/floppy.h
@@ -262,7 +262,7 @@ static __inline__ void sun_fd_enable_dma(void)
262} 262}
263 263
264/* Our low-level entry point in arch/sparc/kernel/entry.S */ 264/* Our low-level entry point in arch/sparc/kernel/entry.S */
265irqreturn_t floppy_hardint(int irq, void *unused, struct pt_regs *regs); 265irqreturn_t floppy_hardint(int irq, void *unused);
266 266
267static int sun_fd_request_irq(void) 267static int sun_fd_request_irq(void)
268{ 268{
diff --git a/include/asm-sparc/irq.h b/include/asm-sparc/irq.h
index 3141ddfea97d..ff520ea97473 100644
--- a/include/asm-sparc/irq.h
+++ b/include/asm-sparc/irq.h
@@ -76,8 +76,8 @@ static inline void load_profile_irq(int cpu, int limit)
76 BTFIXUP_CALL(load_profile_irq)(cpu, limit); 76 BTFIXUP_CALL(load_profile_irq)(cpu, limit);
77} 77}
78 78
79extern void (*sparc_init_timers)(irqreturn_t (*lvl10_irq)(int, void *, struct pt_regs *)); 79extern void (*sparc_init_timers)(irq_handler_t lvl10_irq);
80extern void claim_ticker14(irqreturn_t (*irq_handler)(int, void *, struct pt_regs *), 80extern void claim_ticker14(irq_handler_t irq_handler,
81 int irq, 81 int irq,
82 unsigned int timeout); 82 unsigned int timeout);
83 83
@@ -91,7 +91,7 @@ BTFIXUPDEF_CALL(void, set_irq_udt, int)
91#define set_irq_udt(cpu) BTFIXUP_CALL(set_irq_udt)(cpu) 91#define set_irq_udt(cpu) BTFIXUP_CALL(set_irq_udt)(cpu)
92#endif 92#endif
93 93
94extern int request_fast_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long flags, __const__ char *devname); 94extern int request_fast_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, __const__ char *devname);
95 95
96/* On the sun4m, just like the timers, we have both per-cpu and master 96/* On the sun4m, just like the timers, we have both per-cpu and master
97 * interrupt registers. 97 * interrupt registers.
diff --git a/include/asm-sparc/irq_regs.h b/include/asm-sparc/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-sparc/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-sparc/spinlock.h b/include/asm-sparc/spinlock.h
index 557d08959d2f..de2249b267c6 100644
--- a/include/asm-sparc/spinlock.h
+++ b/include/asm-sparc/spinlock.h
@@ -129,6 +129,7 @@ static inline void __raw_write_lock(raw_rwlock_t *rw)
129 : /* no outputs */ 129 : /* no outputs */
130 : "r" (lp) 130 : "r" (lp)
131 : "g2", "g4", "memory", "cc"); 131 : "g2", "g4", "memory", "cc");
132 *(volatile __u32 *)&lp->lock = ~0U;
132} 133}
133 134
134static inline int __raw_write_trylock(raw_rwlock_t *rw) 135static inline int __raw_write_trylock(raw_rwlock_t *rw)
@@ -144,15 +145,40 @@ static inline int __raw_write_trylock(raw_rwlock_t *rw)
144 val = rw->lock & ~0xff; 145 val = rw->lock & ~0xff;
145 if (val) 146 if (val)
146 ((volatile u8*)&rw->lock)[3] = 0; 147 ((volatile u8*)&rw->lock)[3] = 0;
148 else
149 *(volatile u32*)&rw->lock = ~0U;
147 } 150 }
148 151
149 return (val == 0); 152 return (val == 0);
150} 153}
151 154
155static inline int __read_trylock(raw_rwlock_t *rw)
156{
157 register raw_rwlock_t *lp asm("g1");
158 register int res asm("o0");
159 lp = rw;
160 __asm__ __volatile__(
161 "mov %%o7, %%g4\n\t"
162 "call ___rw_read_try\n\t"
163 " ldstub [%%g1 + 3], %%g2\n"
164 : "=r" (res)
165 : "r" (lp)
166 : "g2", "g4", "memory", "cc");
167 return res;
168}
169
170#define __raw_read_trylock(lock) \
171({ unsigned long flags; \
172 int res; \
173 local_irq_save(flags); \
174 res = __read_trylock(lock); \
175 local_irq_restore(flags); \
176 res; \
177})
178
152#define __raw_write_unlock(rw) do { (rw)->lock = 0; } while(0) 179#define __raw_write_unlock(rw) do { (rw)->lock = 0; } while(0)
153 180
154#define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) 181#define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock)
155#define __raw_read_trylock(lock) generic__raw_read_trylock(lock)
156 182
157#define _raw_spin_relax(lock) cpu_relax() 183#define _raw_spin_relax(lock) cpu_relax()
158#define _raw_read_relax(lock) cpu_relax() 184#define _raw_read_relax(lock) cpu_relax()
diff --git a/include/asm-sparc64/floppy.h b/include/asm-sparc64/floppy.h
index abf150038019..dbe033e494db 100644
--- a/include/asm-sparc64/floppy.h
+++ b/include/asm-sparc64/floppy.h
@@ -208,7 +208,7 @@ static void sun_fd_enable_dma(void)
208 pdma_areasize = pdma_size; 208 pdma_areasize = pdma_size;
209} 209}
210 210
211irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie, struct pt_regs *regs) 211irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie)
212{ 212{
213 if (likely(doing_pdma)) { 213 if (likely(doing_pdma)) {
214 void __iomem *stat = (void __iomem *) fdc_status; 214 void __iomem *stat = (void __iomem *) fdc_status;
@@ -255,7 +255,7 @@ irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie, struct pt_regs *regs)
255 } 255 }
256 256
257main_interrupt: 257main_interrupt:
258 return floppy_interrupt(irq, dev_cookie, regs); 258 return floppy_interrupt(irq, dev_cookie);
259} 259}
260 260
261static int sun_fd_request_irq(void) 261static int sun_fd_request_irq(void)
@@ -311,7 +311,7 @@ struct sun_pci_dma_op {
311static struct sun_pci_dma_op sun_pci_dma_current = { -1U, 0, 0, NULL}; 311static struct sun_pci_dma_op sun_pci_dma_current = { -1U, 0, 0, NULL};
312static struct sun_pci_dma_op sun_pci_dma_pending = { -1U, 0, 0, NULL}; 312static struct sun_pci_dma_op sun_pci_dma_pending = { -1U, 0, 0, NULL};
313 313
314extern irqreturn_t floppy_interrupt(int irq, void *dev_id, struct pt_regs *regs); 314extern irqreturn_t floppy_interrupt(int irq, void *dev_id);
315 315
316static unsigned char sun_pci_fd_inb(unsigned long port) 316static unsigned char sun_pci_fd_inb(unsigned long port)
317{ 317{
@@ -446,7 +446,7 @@ static int sun_pci_fd_eject(int drive)
446 446
447void sun_pci_fd_dma_callback(struct ebus_dma_info *p, int event, void *cookie) 447void sun_pci_fd_dma_callback(struct ebus_dma_info *p, int event, void *cookie)
448{ 448{
449 floppy_interrupt(0, NULL, NULL); 449 floppy_interrupt(0, NULL);
450} 450}
451 451
452/* 452/*
diff --git a/include/asm-sparc64/irq_regs.h b/include/asm-sparc64/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-sparc64/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-um/irq_regs.h b/include/asm-um/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-um/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-x86_64/apic.h b/include/asm-x86_64/apic.h
index 9e66d32330c9..e81d0f289f0b 100644
--- a/include/asm-x86_64/apic.h
+++ b/include/asm-x86_64/apic.h
@@ -77,7 +77,7 @@ extern void sync_Arb_IDs (void);
77extern void init_bsp_APIC (void); 77extern void init_bsp_APIC (void);
78extern void setup_local_APIC (void); 78extern void setup_local_APIC (void);
79extern void init_apic_mappings (void); 79extern void init_apic_mappings (void);
80extern void smp_local_timer_interrupt (struct pt_regs * regs); 80extern void smp_local_timer_interrupt (void);
81extern void setup_boot_APIC_clock (void); 81extern void setup_boot_APIC_clock (void);
82extern void setup_secondary_APIC_clock (void); 82extern void setup_secondary_APIC_clock (void);
83extern int APIC_init_uniprocessor (void); 83extern int APIC_init_uniprocessor (void);
diff --git a/include/asm-x86_64/floppy.h b/include/asm-x86_64/floppy.h
index 32ff5d132714..6ea13c3806f3 100644
--- a/include/asm-x86_64/floppy.h
+++ b/include/asm-x86_64/floppy.h
@@ -51,7 +51,7 @@ static char *virtual_dma_addr;
51static int virtual_dma_mode; 51static int virtual_dma_mode;
52static int doing_pdma; 52static int doing_pdma;
53 53
54static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) 54static irqreturn_t floppy_hardint(int irq, void *dev_id)
55{ 55{
56 register unsigned char st; 56 register unsigned char st;
57 57
@@ -63,7 +63,7 @@ static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs)
63 static int dma_wait=0; 63 static int dma_wait=0;
64#endif 64#endif
65 if (!doing_pdma) 65 if (!doing_pdma)
66 return floppy_interrupt(irq, dev_id, regs); 66 return floppy_interrupt(irq, dev_id);
67 67
68#ifdef TRACE_FLPY_INT 68#ifdef TRACE_FLPY_INT
69 if(!calls) 69 if(!calls)
@@ -106,7 +106,7 @@ static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs)
106 dma_wait=0; 106 dma_wait=0;
107#endif 107#endif
108 doing_pdma = 0; 108 doing_pdma = 0;
109 floppy_interrupt(irq, dev_id, regs); 109 floppy_interrupt(irq, dev_id);
110 return IRQ_HANDLED; 110 return IRQ_HANDLED;
111 } 111 }
112#ifdef TRACE_FLPY_INT 112#ifdef TRACE_FLPY_INT
diff --git a/include/asm-x86_64/genapic.h b/include/asm-x86_64/genapic.h
index 81e714665344..a0e9a4b93484 100644
--- a/include/asm-x86_64/genapic.h
+++ b/include/asm-x86_64/genapic.h
@@ -18,6 +18,7 @@ struct genapic {
18 u32 int_dest_mode; 18 u32 int_dest_mode;
19 int (*apic_id_registered)(void); 19 int (*apic_id_registered)(void);
20 cpumask_t (*target_cpus)(void); 20 cpumask_t (*target_cpus)(void);
21 cpumask_t (*vector_allocation_domain)(int cpu);
21 void (*init_apic_ldr)(void); 22 void (*init_apic_ldr)(void);
22 /* ipi */ 23 /* ipi */
23 void (*send_IPI_mask)(cpumask_t mask, int vector); 24 void (*send_IPI_mask)(cpumask_t mask, int vector);
diff --git a/include/asm-x86_64/hw_irq.h b/include/asm-x86_64/hw_irq.h
index 53d0d9fd10d6..792dd52fcd70 100644
--- a/include/asm-x86_64/hw_irq.h
+++ b/include/asm-x86_64/hw_irq.h
@@ -74,10 +74,8 @@
74 74
75 75
76#ifndef __ASSEMBLY__ 76#ifndef __ASSEMBLY__
77extern unsigned int irq_vector[NR_IRQ_VECTORS];
78typedef int vector_irq_t[NR_VECTORS]; 77typedef int vector_irq_t[NR_VECTORS];
79DECLARE_PER_CPU(vector_irq_t, vector_irq); 78DECLARE_PER_CPU(vector_irq_t, vector_irq);
80#define IO_APIC_VECTOR(irq) (irq_vector[irq])
81 79
82/* 80/*
83 * Various low-level irq details needed by irq.c, process.c, 81 * Various low-level irq details needed by irq.c, process.c,
diff --git a/include/asm-x86_64/irq_regs.h b/include/asm-x86_64/irq_regs.h
new file mode 100644
index 000000000000..3dd9c0b70270
--- /dev/null
+++ b/include/asm-x86_64/irq_regs.h
@@ -0,0 +1 @@
#include <asm-generic/irq_regs.h>
diff --git a/include/asm-x86_64/mach_apic.h b/include/asm-x86_64/mach_apic.h
index d33422450c00..7b7115a0c1c9 100644
--- a/include/asm-x86_64/mach_apic.h
+++ b/include/asm-x86_64/mach_apic.h
@@ -17,6 +17,7 @@
17#define INT_DELIVERY_MODE (genapic->int_delivery_mode) 17#define INT_DELIVERY_MODE (genapic->int_delivery_mode)
18#define INT_DEST_MODE (genapic->int_dest_mode) 18#define INT_DEST_MODE (genapic->int_dest_mode)
19#define TARGET_CPUS (genapic->target_cpus()) 19#define TARGET_CPUS (genapic->target_cpus())
20#define vector_allocation_domain (genapic->vector_allocation_domain)
20#define apic_id_registered (genapic->apic_id_registered) 21#define apic_id_registered (genapic->apic_id_registered)
21#define init_apic_ldr (genapic->init_apic_ldr) 22#define init_apic_ldr (genapic->init_apic_ldr)
22#define send_IPI_mask (genapic->send_IPI_mask) 23#define send_IPI_mask (genapic->send_IPI_mask)
diff --git a/include/asm-x86_64/percpu.h b/include/asm-x86_64/percpu.h
index 285756010c51..5ed0ef340842 100644
--- a/include/asm-x86_64/percpu.h
+++ b/include/asm-x86_64/percpu.h
@@ -32,13 +32,13 @@
32 32
33/* var is in discarded region: offset to particular copy we want */ 33/* var is in discarded region: offset to particular copy we want */
34#define per_cpu(var, cpu) (*({ \ 34#define per_cpu(var, cpu) (*({ \
35 extern int simple_indentifier_##var(void); \ 35 extern int simple_identifier_##var(void); \
36 RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu)); })) 36 RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu)); }))
37#define __get_cpu_var(var) (*({ \ 37#define __get_cpu_var(var) (*({ \
38 extern int simple_indentifier_##var(void); \ 38 extern int simple_identifier_##var(void); \
39 RELOC_HIDE(&per_cpu__##var, __my_cpu_offset()); })) 39 RELOC_HIDE(&per_cpu__##var, __my_cpu_offset()); }))
40#define __raw_get_cpu_var(var) (*({ \ 40#define __raw_get_cpu_var(var) (*({ \
41 extern int simple_indentifier_##var(void); \ 41 extern int simple_identifier_##var(void); \
42 RELOC_HIDE(&per_cpu__##var, __my_cpu_offset()); })) 42 RELOC_HIDE(&per_cpu__##var, __my_cpu_offset()); }))
43 43
44/* A macro to avoid #include hell... */ 44/* A macro to avoid #include hell... */
diff --git a/include/asm-x86_64/proto.h b/include/asm-x86_64/proto.h
index c28fc2db2171..c181fef786e4 100644
--- a/include/asm-x86_64/proto.h
+++ b/include/asm-x86_64/proto.h
@@ -66,7 +66,7 @@ extern void free_bootmem_generic(unsigned long phys, unsigned len);
66extern void load_gs_index(unsigned gs); 66extern void load_gs_index(unsigned gs);
67 67
68extern void stop_timer_interrupt(void); 68extern void stop_timer_interrupt(void);
69extern void main_timer_handler(struct pt_regs *regs); 69extern void main_timer_handler(void);
70 70
71extern unsigned long end_pfn_map; 71extern unsigned long end_pfn_map;
72 72
@@ -124,7 +124,7 @@ extern int notsc_setup(char *);
124 124
125extern int gsi_irq_sharing(int gsi); 125extern int gsi_irq_sharing(int gsi);
126 126
127extern void smp_local_timer_interrupt(struct pt_regs * regs); 127extern void smp_local_timer_interrupt(void);
128 128
129long do_arch_prctl(struct task_struct *task, int code, unsigned long addr); 129long do_arch_prctl(struct task_struct *task, int code, unsigned long addr);
130 130
diff --git a/include/linux/adb.h b/include/linux/adb.h
index b7305b178279..64d8878e1444 100644
--- a/include/linux/adb.h
+++ b/include/linux/adb.h
@@ -90,10 +90,10 @@ extern struct blocking_notifier_head adb_client_list;
90int adb_request(struct adb_request *req, void (*done)(struct adb_request *), 90int adb_request(struct adb_request *req, void (*done)(struct adb_request *),
91 int flags, int nbytes, ...); 91 int flags, int nbytes, ...);
92int adb_register(int default_id,int handler_id,struct adb_ids *ids, 92int adb_register(int default_id,int handler_id,struct adb_ids *ids,
93 void (*handler)(unsigned char *, int, struct pt_regs *, int)); 93 void (*handler)(unsigned char *, int, int));
94int adb_unregister(int index); 94int adb_unregister(int index);
95void adb_poll(void); 95void adb_poll(void);
96void adb_input(unsigned char *, int, struct pt_regs *, int); 96void adb_input(unsigned char *, int, int);
97int adb_reset_bus(void); 97int adb_reset_bus(void);
98 98
99int adb_try_handler_change(int address, int new_id); 99int adb_try_handler_change(int address, int new_id);
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h
index 231ba090ae34..2f85049cfb3d 100644
--- a/include/linux/arcdevice.h
+++ b/include/linux/arcdevice.h
@@ -334,7 +334,7 @@ void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc);
334#endif 334#endif
335 335
336void arcnet_unregister_proto(struct ArcProto *proto); 336void arcnet_unregister_proto(struct ArcProto *proto);
337irqreturn_t arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs); 337irqreturn_t arcnet_interrupt(int irq, void *dev_id);
338struct net_device *alloc_arcdev(char *name); 338struct net_device *alloc_arcdev(char *name);
339 339
340#endif /* __KERNEL__ */ 340#endif /* __KERNEL__ */
diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h
index 3c9b0bc05123..bbbe7b4da0bb 100644
--- a/include/linux/cdrom.h
+++ b/include/linux/cdrom.h
@@ -749,7 +749,7 @@ struct request_sense {
749#define MRW_MODE_PC 0x03 749#define MRW_MODE_PC 0x03
750 750
751struct mrw_feature_desc { 751struct mrw_feature_desc {
752 __u16 feature_code; 752 __be16 feature_code;
753#if defined(__BIG_ENDIAN_BITFIELD) 753#if defined(__BIG_ENDIAN_BITFIELD)
754 __u8 reserved1 : 2; 754 __u8 reserved1 : 2;
755 __u8 feature_version : 4; 755 __u8 feature_version : 4;
@@ -776,7 +776,7 @@ struct mrw_feature_desc {
776 776
777/* cf. mmc4r02g.pdf 5.3.10 Random Writable Feature (0020h) pg 197 of 635 */ 777/* cf. mmc4r02g.pdf 5.3.10 Random Writable Feature (0020h) pg 197 of 635 */
778struct rwrt_feature_desc { 778struct rwrt_feature_desc {
779 __u16 feature_code; 779 __be16 feature_code;
780#if defined(__BIG_ENDIAN_BITFIELD) 780#if defined(__BIG_ENDIAN_BITFIELD)
781 __u8 reserved1 : 2; 781 __u8 reserved1 : 2;
782 __u8 feature_version : 4; 782 __u8 feature_version : 4;
@@ -803,7 +803,7 @@ struct rwrt_feature_desc {
803}; 803};
804 804
805typedef struct { 805typedef struct {
806 __u16 disc_information_length; 806 __be16 disc_information_length;
807#if defined(__BIG_ENDIAN_BITFIELD) 807#if defined(__BIG_ENDIAN_BITFIELD)
808 __u8 reserved1 : 3; 808 __u8 reserved1 : 3;
809 __u8 erasable : 1; 809 __u8 erasable : 1;
@@ -849,7 +849,7 @@ typedef struct {
849} disc_information; 849} disc_information;
850 850
851typedef struct { 851typedef struct {
852 __u16 track_information_length; 852 __be16 track_information_length;
853 __u8 track_lsb; 853 __u8 track_lsb;
854 __u8 session_lsb; 854 __u8 session_lsb;
855 __u8 reserved1; 855 __u8 reserved1;
@@ -880,12 +880,12 @@ typedef struct {
880 __u8 lra_v : 1; 880 __u8 lra_v : 1;
881 __u8 reserved3 : 6; 881 __u8 reserved3 : 6;
882#endif 882#endif
883 __u32 track_start; 883 __be32 track_start;
884 __u32 next_writable; 884 __be32 next_writable;
885 __u32 free_blocks; 885 __be32 free_blocks;
886 __u32 fixed_packet_size; 886 __be32 fixed_packet_size;
887 __u32 track_size; 887 __be32 track_size;
888 __u32 last_rec_address; 888 __be32 last_rec_address;
889} track_information; 889} track_information;
890 890
891struct feature_header { 891struct feature_header {
@@ -896,12 +896,12 @@ struct feature_header {
896}; 896};
897 897
898struct mode_page_header { 898struct mode_page_header {
899 __u16 mode_data_length; 899 __be16 mode_data_length;
900 __u8 medium_type; 900 __u8 medium_type;
901 __u8 reserved1; 901 __u8 reserved1;
902 __u8 reserved2; 902 __u8 reserved2;
903 __u8 reserved3; 903 __u8 reserved3;
904 __u16 desc_length; 904 __be16 desc_length;
905}; 905};
906 906
907#ifdef __KERNEL__ 907#ifdef __KERNEL__
@@ -1106,7 +1106,7 @@ typedef struct {
1106#endif 1106#endif
1107 __u8 session_format; 1107 __u8 session_format;
1108 __u8 reserved6; 1108 __u8 reserved6;
1109 __u32 packet_size; 1109 __be32 packet_size;
1110 __u16 audio_pause; 1110 __u16 audio_pause;
1111 __u8 mcn[16]; 1111 __u8 mcn[16];
1112 __u8 isrc[16]; 1112 __u8 isrc[16];
@@ -1151,7 +1151,7 @@ typedef struct {
1151} rpc_state_t; 1151} rpc_state_t;
1152 1152
1153struct event_header { 1153struct event_header {
1154 __u16 data_len; 1154 __be16 data_len;
1155#if defined(__BIG_ENDIAN_BITFIELD) 1155#if defined(__BIG_ENDIAN_BITFIELD)
1156 __u8 nea : 1; 1156 __u8 nea : 1;
1157 __u8 reserved1 : 4; 1157 __u8 reserved1 : 4;
diff --git a/include/linux/compat.h b/include/linux/compat.h
index ef5cd192784c..f4ebf96f5308 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -163,7 +163,7 @@ asmlinkage long
163compat_sys_set_robust_list(struct compat_robust_list_head __user *head, 163compat_sys_set_robust_list(struct compat_robust_list_head __user *head,
164 compat_size_t len); 164 compat_size_t len);
165asmlinkage long 165asmlinkage long
166compat_sys_get_robust_list(int pid, compat_uptr_t *head_ptr, 166compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
167 compat_size_t __user *len_ptr); 167 compat_size_t __user *len_ptr);
168 168
169long compat_sys_semctl(int first, int second, int third, void __user *uptr); 169long compat_sys_semctl(int first, int second, int third, void __user *uptr);
diff --git a/include/linux/config.h b/include/linux/config.h
deleted file mode 100644
index 479ffb0a22d8..000000000000
--- a/include/linux/config.h
+++ /dev/null
@@ -1,9 +0,0 @@
1#ifndef _LINUX_CONFIG_H
2#define _LINUX_CONFIG_H
3/* This file is no longer in use and kept only for backward compatibility.
4 * autoconf.h is now included via -imacros on the commandline
5 */
6#warning Including config.h is deprecated.
7#include <linux/autoconf.h>
8
9#endif
diff --git a/include/linux/dccp.h b/include/linux/dccp.h
index d6f4ec467a4b..53553c99cad6 100644
--- a/include/linux/dccp.h
+++ b/include/linux/dccp.h
@@ -191,7 +191,7 @@ enum {
191/* this structure is argument to DCCP_SOCKOPT_CHANGE_X */ 191/* this structure is argument to DCCP_SOCKOPT_CHANGE_X */
192struct dccp_so_feat { 192struct dccp_so_feat {
193 __u8 dccpsf_feat; 193 __u8 dccpsf_feat;
194 __u8 *dccpsf_val; 194 __u8 __user *dccpsf_val;
195 __u8 dccpsf_len; 195 __u8 dccpsf_len;
196}; 196};
197 197
diff --git a/include/linux/hiddev.h b/include/linux/hiddev.h
index 945ba1ad14ac..acbdae6d7ae1 100644
--- a/include/linux/hiddev.h
+++ b/include/linux/hiddev.h
@@ -222,7 +222,7 @@ struct hid_report;
222int hiddev_connect(struct hid_device *); 222int hiddev_connect(struct hid_device *);
223void hiddev_disconnect(struct hid_device *); 223void hiddev_disconnect(struct hid_device *);
224void hiddev_hid_event(struct hid_device *hid, struct hid_field *field, 224void hiddev_hid_event(struct hid_device *hid, struct hid_field *field,
225 struct hid_usage *usage, __s32 value, struct pt_regs *regs); 225 struct hid_usage *usage, __s32 value);
226void hiddev_report_event(struct hid_device *hid, struct hid_report *report); 226void hiddev_report_event(struct hid_device *hid, struct hid_report *report);
227int __init hiddev_init(void); 227int __init hiddev_init(void);
228void hiddev_exit(void); 228void hiddev_exit(void);
@@ -230,7 +230,7 @@ void hiddev_exit(void);
230static inline int hiddev_connect(struct hid_device *hid) { return -1; } 230static inline int hiddev_connect(struct hid_device *hid) { return -1; }
231static inline void hiddev_disconnect(struct hid_device *hid) { } 231static inline void hiddev_disconnect(struct hid_device *hid) { }
232static inline void hiddev_hid_event(struct hid_device *hid, struct hid_field *field, 232static inline void hiddev_hid_event(struct hid_device *hid, struct hid_field *field,
233 struct hid_usage *usage, __s32 value, struct pt_regs *regs) { } 233 struct hid_usage *usage, __s32 value) { }
234static inline void hiddev_report_event(struct hid_device *hid, struct hid_report *report) { } 234static inline void hiddev_report_event(struct hid_device *hid, struct hid_report *report) { }
235static inline int hiddev_init(void) { return 0; } 235static inline int hiddev_init(void) { return 0; }
236static inline void hiddev_exit(void) { } 236static inline void hiddev_exit(void) { }
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 07d8d725541f..9c2050293f17 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1185,7 +1185,7 @@ extern void ide_stall_queue(ide_drive_t *drive, unsigned long timeout);
1185 1185
1186extern int ide_spin_wait_hwgroup(ide_drive_t *); 1186extern int ide_spin_wait_hwgroup(ide_drive_t *);
1187extern void ide_timer_expiry(unsigned long); 1187extern void ide_timer_expiry(unsigned long);
1188extern irqreturn_t ide_intr(int irq, void *dev_id, struct pt_regs *regs); 1188extern irqreturn_t ide_intr(int irq, void *dev_id);
1189extern void do_ide_request(request_queue_t *); 1189extern void do_ide_request(request_queue_t *);
1190 1190
1191void ide_init_disk(struct gendisk *, ide_drive_t *); 1191void ide_init_disk(struct gendisk *, ide_drive_t *);
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index ab2740832742..35cb38573583 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -44,7 +44,7 @@ struct vlan_ethhdr {
44 unsigned char h_source[ETH_ALEN]; /* source ether addr */ 44 unsigned char h_source[ETH_ALEN]; /* source ether addr */
45 __be16 h_vlan_proto; /* Should always be 0x8100 */ 45 __be16 h_vlan_proto; /* Should always be 0x8100 */
46 __be16 h_vlan_TCI; /* Encapsulates priority and VLAN ID */ 46 __be16 h_vlan_TCI; /* Encapsulates priority and VLAN ID */
47 unsigned short h_vlan_encapsulated_proto; /* packet type ID field (or len) */ 47 __be16 h_vlan_encapsulated_proto; /* packet type ID field (or len) */
48}; 48};
49 49
50#include <linux/skbuff.h> 50#include <linux/skbuff.h>
diff --git a/include/linux/input.h b/include/linux/input.h
index 5770105471dd..c38507ba38b5 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -953,7 +953,6 @@ struct input_dev {
953 unsigned int repeat_key; 953 unsigned int repeat_key;
954 struct timer_list timer; 954 struct timer_list timer;
955 955
956 struct pt_regs *regs;
957 int state; 956 int state;
958 957
959 int sync; 958 int sync;
@@ -1149,15 +1148,9 @@ static inline void input_report_switch(struct input_dev *dev, unsigned int code,
1149 input_event(dev, EV_SW, code, !!value); 1148 input_event(dev, EV_SW, code, !!value);
1150} 1149}
1151 1150
1152static inline void input_regs(struct input_dev *dev, struct pt_regs *regs)
1153{
1154 dev->regs = regs;
1155}
1156
1157static inline void input_sync(struct input_dev *dev) 1151static inline void input_sync(struct input_dev *dev)
1158{ 1152{
1159 input_event(dev, EV_SYN, SYN_REPORT, 0); 1153 input_event(dev, EV_SYN, SYN_REPORT, 0);
1160 dev->regs = NULL;
1161} 1154}
1162 1155
1163static inline void input_set_abs_params(struct input_dev *dev, int axis, int min, int max, int fuzz, int flat) 1156static inline void input_set_abs_params(struct input_dev *dev, int axis, int min, int max, int fuzz, int flat)
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 1f97e3d92639..5b83e7b59621 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -64,8 +64,10 @@
64#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING 64#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING
65#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK 65#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK
66 66
67typedef irqreturn_t (*irq_handler_t)(int, void *);
68
67struct irqaction { 69struct irqaction {
68 irqreturn_t (*handler)(int, void *, struct pt_regs *); 70 irq_handler_t handler;
69 unsigned long flags; 71 unsigned long flags;
70 cpumask_t mask; 72 cpumask_t mask;
71 const char *name; 73 const char *name;
@@ -75,9 +77,8 @@ struct irqaction {
75 struct proc_dir_entry *dir; 77 struct proc_dir_entry *dir;
76}; 78};
77 79
78extern irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs); 80extern irqreturn_t no_action(int cpl, void *dev_id);
79extern int request_irq(unsigned int, 81extern int request_irq(unsigned int, irq_handler_t handler,
80 irqreturn_t (*handler)(int, void *, struct pt_regs *),
81 unsigned long, const char *, void *); 82 unsigned long, const char *, void *);
82extern void free_irq(unsigned int, void *); 83extern void free_irq(unsigned int, void *);
83 84
diff --git a/include/linux/io.h b/include/linux/io.h
index aa3f5af670b5..2ad96c3f0e4e 100644
--- a/include/linux/io.h
+++ b/include/linux/io.h
@@ -18,6 +18,7 @@
18#ifndef _LINUX_IO_H 18#ifndef _LINUX_IO_H
19#define _LINUX_IO_H 19#define _LINUX_IO_H
20 20
21#include <linux/types.h>
21#include <asm/io.h> 22#include <asm/io.h>
22#include <asm/page.h> 23#include <asm/page.h>
23 24
diff --git a/include/linux/ioc3.h b/include/linux/ioc3.h
index da7c09e4ede6..38b286e9a46c 100644
--- a/include/linux/ioc3.h
+++ b/include/linux/ioc3.h
@@ -63,7 +63,7 @@ struct ioc3_submodule {
63 /* IRQ stuff */ 63 /* IRQ stuff */
64 unsigned int irq_mask; /* IOC3 IRQ mask, leave clear for Ethernet */ 64 unsigned int irq_mask; /* IOC3 IRQ mask, leave clear for Ethernet */
65 int reset_mask; /* non-zero if you want the ioc3.c module to reset interrupts */ 65 int reset_mask; /* non-zero if you want the ioc3.c module to reset interrupts */
66 int (*intr) (struct ioc3_submodule *, struct ioc3_driver_data *, unsigned int, struct pt_regs *); 66 int (*intr) (struct ioc3_submodule *, struct ioc3_driver_data *, unsigned int);
67 /* private submodule data */ 67 /* private submodule data */
68 void *data; /* assigned by submodule */ 68 void *data; /* assigned by submodule */
69}; 69};
diff --git a/include/linux/ioc4.h b/include/linux/ioc4.h
index de73a3289cc2..51e2b9fb6372 100644
--- a/include/linux/ioc4.h
+++ b/include/linux/ioc4.h
@@ -157,7 +157,7 @@ struct ioc4_driver_data {
157 unsigned long idd_bar0; 157 unsigned long idd_bar0;
158 struct pci_dev *idd_pdev; 158 struct pci_dev *idd_pdev;
159 const struct pci_device_id *idd_pci_id; 159 const struct pci_device_id *idd_pci_id;
160 struct __iomem ioc4_misc_regs *idd_misc_regs; 160 struct ioc4_misc_regs __iomem *idd_misc_regs;
161 unsigned long count_period; 161 unsigned long count_period;
162 void *idd_serial_data; 162 void *idd_serial_data;
163 unsigned int idd_variant; 163 unsigned int idd_variant;
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 6f463606c318..c64f3cc7e870 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -21,6 +21,12 @@
21 21
22#include <asm/irq.h> 22#include <asm/irq.h>
23#include <asm/ptrace.h> 23#include <asm/ptrace.h>
24#include <asm/irq_regs.h>
25
26struct irq_desc;
27typedef void fastcall (*irq_flow_handler_t)(unsigned int irq,
28 struct irq_desc *desc);
29
24 30
25/* 31/*
26 * IRQ line status. 32 * IRQ line status.
@@ -139,9 +145,7 @@ struct irq_chip {
139 * Pad this out to 32 bytes for cache and indexing reasons. 145 * Pad this out to 32 bytes for cache and indexing reasons.
140 */ 146 */
141struct irq_desc { 147struct irq_desc {
142 void fastcall (*handle_irq)(unsigned int irq, 148 irq_flow_handler_t handle_irq;
143 struct irq_desc *desc,
144 struct pt_regs *regs);
145 struct irq_chip *chip; 149 struct irq_chip *chip;
146 void *handler_data; 150 void *handler_data;
147 void *chip_data; 151 void *chip_data;
@@ -254,43 +258,31 @@ static inline int select_smp_affinity(unsigned int irq)
254extern int no_irq_affinity; 258extern int no_irq_affinity;
255 259
256/* Handle irq action chains: */ 260/* Handle irq action chains: */
257extern int handle_IRQ_event(unsigned int irq, struct pt_regs *regs, 261extern int handle_IRQ_event(unsigned int irq, struct irqaction *action);
258 struct irqaction *action);
259 262
260/* 263/*
261 * Built-in IRQ handlers for various IRQ types, 264 * Built-in IRQ handlers for various IRQ types,
262 * callable via desc->chip->handle_irq() 265 * callable via desc->chip->handle_irq()
263 */ 266 */
264extern void fastcall 267extern void fastcall handle_level_irq(unsigned int irq, struct irq_desc *desc);
265handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs); 268extern void fastcall handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc);
266extern void fastcall 269extern void fastcall handle_edge_irq(unsigned int irq, struct irq_desc *desc);
267handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc, 270extern void fastcall handle_simple_irq(unsigned int irq, struct irq_desc *desc);
268 struct pt_regs *regs); 271extern void fastcall handle_percpu_irq(unsigned int irq, struct irq_desc *desc);
269extern void fastcall 272extern void fastcall handle_bad_irq(unsigned int irq, struct irq_desc *desc);
270handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs);
271extern void fastcall
272handle_simple_irq(unsigned int irq, struct irq_desc *desc,
273 struct pt_regs *regs);
274extern void fastcall
275handle_percpu_irq(unsigned int irq, struct irq_desc *desc,
276 struct pt_regs *regs);
277extern void fastcall
278handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs);
279 273
280/* 274/*
281 * Get a descriptive string for the highlevel handler, for 275 * Get a descriptive string for the highlevel handler, for
282 * /proc/interrupts output: 276 * /proc/interrupts output:
283 */ 277 */
284extern const char * 278extern const char *handle_irq_name(irq_flow_handler_t handle);
285handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *,
286 struct pt_regs *));
287 279
288/* 280/*
289 * Monolithic do_IRQ implementation. 281 * Monolithic do_IRQ implementation.
290 * (is an explicit fastcall, because i386 4KSTACKS calls it from assembly) 282 * (is an explicit fastcall, because i386 4KSTACKS calls it from assembly)
291 */ 283 */
292#ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ 284#ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ
293extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs); 285extern fastcall unsigned int __do_IRQ(unsigned int irq);
294#endif 286#endif
295 287
296/* 288/*
@@ -299,23 +291,23 @@ extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs);
299 * irqchip-style controller then we call the ->handle_irq() handler, 291 * irqchip-style controller then we call the ->handle_irq() handler,
300 * and it calls __do_IRQ() if it's attached to an irqtype-style controller. 292 * and it calls __do_IRQ() if it's attached to an irqtype-style controller.
301 */ 293 */
302static inline void generic_handle_irq(unsigned int irq, struct pt_regs *regs) 294static inline void generic_handle_irq(unsigned int irq)
303{ 295{
304 struct irq_desc *desc = irq_desc + irq; 296 struct irq_desc *desc = irq_desc + irq;
305 297
306#ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ 298#ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ
307 desc->handle_irq(irq, desc, regs); 299 desc->handle_irq(irq, desc);
308#else 300#else
309 if (likely(desc->handle_irq)) 301 if (likely(desc->handle_irq))
310 desc->handle_irq(irq, desc, regs); 302 desc->handle_irq(irq, desc);
311 else 303 else
312 __do_IRQ(irq, regs); 304 __do_IRQ(irq);
313#endif 305#endif
314} 306}
315 307
316/* Handling of unhandled and spurious interrupts: */ 308/* Handling of unhandled and spurious interrupts: */
317extern void note_interrupt(unsigned int irq, struct irq_desc *desc, 309extern void note_interrupt(unsigned int irq, struct irq_desc *desc,
318 int action_ret, struct pt_regs *regs); 310 int action_ret);
319 311
320/* Resending of interrupts :*/ 312/* Resending of interrupts :*/
321void check_irq_resend(struct irq_desc *desc, unsigned int irq); 313void check_irq_resend(struct irq_desc *desc, unsigned int irq);
@@ -335,22 +327,15 @@ extern struct irq_chip dummy_irq_chip;
335 327
336extern void 328extern void
337set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, 329set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
338 void fastcall (*handle)(unsigned int, 330 irq_flow_handler_t handle);
339 struct irq_desc *,
340 struct pt_regs *));
341extern void 331extern void
342__set_irq_handler(unsigned int irq, 332__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained);
343 void fastcall (*handle)(unsigned int, struct irq_desc *,
344 struct pt_regs *),
345 int is_chained);
346 333
347/* 334/*
348 * Set a highlevel flow handler for a given IRQ: 335 * Set a highlevel flow handler for a given IRQ:
349 */ 336 */
350static inline void 337static inline void
351set_irq_handler(unsigned int irq, 338set_irq_handler(unsigned int irq, irq_flow_handler_t handle)
352 void fastcall (*handle)(unsigned int, struct irq_desc *,
353 struct pt_regs *))
354{ 339{
355 __set_irq_handler(irq, handle, 0); 340 __set_irq_handler(irq, handle, 0);
356} 341}
@@ -362,8 +347,7 @@ set_irq_handler(unsigned int irq,
362 */ 347 */
363static inline void 348static inline void
364set_irq_chained_handler(unsigned int irq, 349set_irq_chained_handler(unsigned int irq,
365 void fastcall (*handle)(unsigned int, struct irq_desc *, 350 irq_flow_handler_t handle)
366 struct pt_regs *))
367{ 351{
368 __set_irq_handler(irq, handle, 1); 352 __set_irq_handler(irq, handle, 1);
369} 353}
diff --git a/include/linux/istallion.h b/include/linux/istallion.h
index 1f996621bc9c..b55e2a035605 100644
--- a/include/linux/istallion.h
+++ b/include/linux/istallion.h
@@ -100,7 +100,7 @@ typedef struct stlibrd {
100 unsigned int iobase; 100 unsigned int iobase;
101 int iosize; 101 int iosize;
102 unsigned long memaddr; 102 unsigned long memaddr;
103 void *membase; 103 void __iomem *membase;
104 int memsize; 104 int memsize;
105 int pagesize; 105 int pagesize;
106 int hostoffset; 106 int hostoffset;
@@ -113,7 +113,7 @@ typedef struct stlibrd {
113 void (*enable)(struct stlibrd *brdp); 113 void (*enable)(struct stlibrd *brdp);
114 void (*reenable)(struct stlibrd *brdp); 114 void (*reenable)(struct stlibrd *brdp);
115 void (*disable)(struct stlibrd *brdp); 115 void (*disable)(struct stlibrd *brdp);
116 char *(*getmemptr)(struct stlibrd *brdp, unsigned long offset, int line); 116 void __iomem *(*getmemptr)(struct stlibrd *brdp, unsigned long offset, int line);
117 void (*intr)(struct stlibrd *brdp); 117 void (*intr)(struct stlibrd *brdp);
118 void (*reset)(struct stlibrd *brdp); 118 void (*reset)(struct stlibrd *brdp);
119 stliport_t *ports[STL_MAXPORTS]; 119 stliport_t *ports[STL_MAXPORTS];
diff --git a/include/linux/libata.h b/include/linux/libata.h
index d1af1dbeaeb4..d0a7ad5ed518 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -628,7 +628,7 @@ struct ata_port_operations {
628 void (*error_handler) (struct ata_port *ap); 628 void (*error_handler) (struct ata_port *ap);
629 void (*post_internal_cmd) (struct ata_queued_cmd *qc); 629 void (*post_internal_cmd) (struct ata_queued_cmd *qc);
630 630
631 irqreturn_t (*irq_handler)(int, void *, struct pt_regs *); 631 irq_handler_t irq_handler;
632 void (*irq_clear) (struct ata_port *); 632 void (*irq_clear) (struct ata_port *);
633 633
634 u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg); 634 u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg);
@@ -769,7 +769,7 @@ extern void ata_exec_command(struct ata_port *ap, const struct ata_taskfile *tf)
769extern int ata_port_start (struct ata_port *ap); 769extern int ata_port_start (struct ata_port *ap);
770extern void ata_port_stop (struct ata_port *ap); 770extern void ata_port_stop (struct ata_port *ap);
771extern void ata_host_stop (struct ata_host *host); 771extern void ata_host_stop (struct ata_host *host);
772extern irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs); 772extern irqreturn_t ata_interrupt (int irq, void *dev_instance);
773extern void ata_mmio_data_xfer(struct ata_device *adev, unsigned char *buf, 773extern void ata_mmio_data_xfer(struct ata_device *adev, unsigned char *buf,
774 unsigned int buflen, int write_data); 774 unsigned int buflen, int write_data);
775extern void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf, 775extern void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf,
diff --git a/include/linux/mm.h b/include/linux/mm.h
index b7966ab8cb6a..26146623be2f 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -593,6 +593,7 @@ static inline int page_mapped(struct page *page)
593 */ 593 */
594#define NOPAGE_SIGBUS (NULL) 594#define NOPAGE_SIGBUS (NULL)
595#define NOPAGE_OOM ((struct page *) (-1)) 595#define NOPAGE_OOM ((struct page *) (-1))
596#define NOPAGE_REFAULT ((struct page *) (-2)) /* Return to userspace, rerun */
596 597
597/* 598/*
598 * Error return values for the *_nopfn functions 599 * Error return values for the *_nopfn functions
diff --git a/include/linux/mmc/protocol.h b/include/linux/mmc/protocol.h
index 81c3f77f652c..08dec8d9e703 100644
--- a/include/linux/mmc/protocol.h
+++ b/include/linux/mmc/protocol.h
@@ -83,6 +83,7 @@
83 83
84 /* Application commands */ 84 /* Application commands */
85#define SD_APP_SET_BUS_WIDTH 6 /* ac [1:0] bus width R1 */ 85#define SD_APP_SET_BUS_WIDTH 6 /* ac [1:0] bus width R1 */
86#define SD_APP_SEND_NUM_WR_BLKS 22 /* adtc R1 */
86#define SD_APP_OP_COND 41 /* bcr [31:0] OCR R3 */ 87#define SD_APP_OP_COND 41 /* bcr [31:0] OCR R3 */
87#define SD_APP_SEND_SCR 51 /* adtc R1 */ 88#define SD_APP_SEND_SCR 51 /* adtc R1 */
88 89
diff --git a/include/linux/parport.h b/include/linux/parport.h
index 5bf321e82c99..80682aaa8f18 100644
--- a/include/linux/parport.h
+++ b/include/linux/parport.h
@@ -229,7 +229,7 @@ struct pardevice {
229 int (*preempt)(void *); 229 int (*preempt)(void *);
230 void (*wakeup)(void *); 230 void (*wakeup)(void *);
231 void *private; 231 void *private;
232 void (*irq_func)(int, void *, struct pt_regs *); 232 void (*irq_func)(int, void *);
233 unsigned int flags; 233 unsigned int flags;
234 struct pardevice *next; 234 struct pardevice *next;
235 struct pardevice *prev; 235 struct pardevice *prev;
@@ -375,7 +375,7 @@ extern void parport_put_port (struct parport *);
375struct pardevice *parport_register_device(struct parport *port, 375struct pardevice *parport_register_device(struct parport *port,
376 const char *name, 376 const char *name,
377 int (*pf)(void *), void (*kf)(void *), 377 int (*pf)(void *), void (*kf)(void *),
378 void (*irq_func)(int, void *, struct pt_regs *), 378 void (*irq_func)(int, void *),
379 int flags, void *handle); 379 int flags, void *handle);
380 380
381/* parport_unregister unlinks a device from the chain. */ 381/* parport_unregister unlinks a device from the chain. */
@@ -457,7 +457,7 @@ static __inline__ int parport_yield_blocking(struct pardevice *dev)
457#define PARPORT_FLAG_EXCL (1<<1) /* EXCL driver registered. */ 457#define PARPORT_FLAG_EXCL (1<<1) /* EXCL driver registered. */
458 458
459/* IEEE1284 functions */ 459/* IEEE1284 functions */
460extern void parport_ieee1284_interrupt (int, void *, struct pt_regs *); 460extern void parport_ieee1284_interrupt (int, void *);
461extern int parport_negotiate (struct parport *, int mode); 461extern int parport_negotiate (struct parport *, int mode);
462extern ssize_t parport_write (struct parport *, const void *buf, size_t len); 462extern ssize_t parport_write (struct parport *, const void *buf, size_t len);
463extern ssize_t parport_read (struct parport *, void *buf, size_t len); 463extern ssize_t parport_read (struct parport *, void *buf, size_t len);
@@ -502,8 +502,7 @@ extern void parport_daisy_fini (struct parport *port);
502extern struct pardevice *parport_open (int devnum, const char *name, 502extern struct pardevice *parport_open (int devnum, const char *name,
503 int (*pf) (void *), 503 int (*pf) (void *),
504 void (*kf) (void *), 504 void (*kf) (void *),
505 void (*irqf) (int, void *, 505 void (*irqf) (int, void *),
506 struct pt_regs *),
507 int flags, void *handle); 506 int flags, void *handle);
508extern void parport_close (struct pardevice *dev); 507extern void parport_close (struct pardevice *dev);
509extern ssize_t parport_device_id (int devnum, char *buffer, size_t len); 508extern ssize_t parport_device_id (int devnum, char *buffer, size_t len);
@@ -512,13 +511,12 @@ extern void parport_daisy_deselect_all (struct parport *port);
512extern int parport_daisy_select (struct parport *port, int daisy, int mode); 511extern int parport_daisy_select (struct parport *port, int daisy, int mode);
513 512
514/* Lowlevel drivers _can_ call this support function to handle irqs. */ 513/* Lowlevel drivers _can_ call this support function to handle irqs. */
515static __inline__ void parport_generic_irq(int irq, struct parport *port, 514static __inline__ void parport_generic_irq(int irq, struct parport *port)
516 struct pt_regs *regs)
517{ 515{
518 parport_ieee1284_interrupt (irq, port, regs); 516 parport_ieee1284_interrupt (irq, port);
519 read_lock(&port->cad_lock); 517 read_lock(&port->cad_lock);
520 if (port->cad && port->cad->irq_func) 518 if (port->cad && port->cad->irq_func)
521 port->cad->irq_func(irq, port->cad->private, regs); 519 port->cad->irq_func(irq, port->cad->private);
522 read_unlock(&port->cad_lock); 520 read_unlock(&port->cad_lock);
523} 521}
524 522
diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index 46ec72fa2c84..600e3d387ffc 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -19,7 +19,7 @@
19 * we force a syntax error here if it isn't. 19 * we force a syntax error here if it isn't.
20 */ 20 */
21#define get_cpu_var(var) (*({ \ 21#define get_cpu_var(var) (*({ \
22 extern int simple_indentifier_##var(void); \ 22 extern int simple_identifier_##var(void); \
23 preempt_disable(); \ 23 preempt_disable(); \
24 &__get_cpu_var(var); })) 24 &__get_cpu_var(var); }))
25#define put_cpu_var(var) preempt_enable() 25#define put_cpu_var(var) preempt_enable()
diff --git a/include/linux/profile.h b/include/linux/profile.h
index e633004ae052..acce53fd38b6 100644
--- a/include/linux/profile.h
+++ b/include/linux/profile.h
@@ -17,7 +17,7 @@ struct notifier_block;
17 17
18/* init basic kernel profiler */ 18/* init basic kernel profiler */
19void __init profile_init(void); 19void __init profile_init(void);
20void profile_tick(int, struct pt_regs *); 20void profile_tick(int);
21void profile_hit(int, void *); 21void profile_hit(int, void *);
22#ifdef CONFIG_PROC_FS 22#ifdef CONFIG_PROC_FS
23void create_prof_cpu_mask(struct proc_dir_entry *); 23void create_prof_cpu_mask(struct proc_dir_entry *);
diff --git a/include/linux/rtc.h b/include/linux/rtc.h
index b89f09357054..09ff4c3e2713 100644
--- a/include/linux/rtc.h
+++ b/include/linux/rtc.h
@@ -208,7 +208,7 @@ int rtc_register(rtc_task_t *task);
208int rtc_unregister(rtc_task_t *task); 208int rtc_unregister(rtc_task_t *task);
209int rtc_control(rtc_task_t *t, unsigned int cmd, unsigned long arg); 209int rtc_control(rtc_task_t *t, unsigned int cmd, unsigned long arg);
210void rtc_get_rtc_time(struct rtc_time *rtc_tm); 210void rtc_get_rtc_time(struct rtc_time *rtc_tm);
211irqreturn_t rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs); 211irqreturn_t rtc_interrupt(int irq, void *dev_id);
212 212
213#endif /* __KERNEL__ */ 213#endif /* __KERNEL__ */
214 214
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 331f4502e92b..6735c1cf334c 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1065,9 +1065,10 @@ static inline int pid_alive(struct task_struct *p)
1065} 1065}
1066 1066
1067/** 1067/**
1068 * is_init - check if a task structure is the first user space 1068 * is_init - check if a task structure is init
1069 * task the kernel created. 1069 * @tsk: Task structure to be checked.
1070 * @p: Task structure to be checked. 1070 *
1071 * Check if a task structure is the first user space task the kernel created.
1071 */ 1072 */
1072static inline int is_init(struct task_struct *tsk) 1073static inline int is_init(struct task_struct *tsk)
1073{ 1074{
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index b661c19f3f72..463ab953b092 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -409,13 +409,12 @@ int uart_resume_port(struct uart_driver *reg, struct uart_port *port);
409 * The following are helper functions for the low level drivers. 409 * The following are helper functions for the low level drivers.
410 */ 410 */
411static inline int 411static inline int
412uart_handle_sysrq_char(struct uart_port *port, unsigned int ch, 412uart_handle_sysrq_char(struct uart_port *port, unsigned int ch)
413 struct pt_regs *regs)
414{ 413{
415#ifdef SUPPORT_SYSRQ 414#ifdef SUPPORT_SYSRQ
416 if (port->sysrq) { 415 if (port->sysrq) {
417 if (ch && time_before(jiffies, port->sysrq)) { 416 if (ch && time_before(jiffies, port->sysrq)) {
418 handle_sysrq(ch, regs, port->info->tty); 417 handle_sysrq(ch, port->info->tty);
419 port->sysrq = 0; 418 port->sysrq = 0;
420 return 1; 419 return 1;
421 } 420 }
@@ -425,7 +424,7 @@ uart_handle_sysrq_char(struct uart_port *port, unsigned int ch,
425 return 0; 424 return 0;
426} 425}
427#ifndef SUPPORT_SYSRQ 426#ifndef SUPPORT_SYSRQ
428#define uart_handle_sysrq_char(port,ch,regs) uart_handle_sysrq_char(port, 0, NULL) 427#define uart_handle_sysrq_char(port,ch) uart_handle_sysrq_char(port, 0)
429#endif 428#endif
430 429
431/* 430/*
diff --git a/include/linux/serio.h b/include/linux/serio.h
index c9069310b6ac..3a697cc6ecae 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -60,8 +60,7 @@ struct serio_driver {
60 unsigned int manual_bind; 60 unsigned int manual_bind;
61 61
62 void (*write_wakeup)(struct serio *); 62 void (*write_wakeup)(struct serio *);
63 irqreturn_t (*interrupt)(struct serio *, unsigned char, 63 irqreturn_t (*interrupt)(struct serio *, unsigned char, unsigned int);
64 unsigned int, struct pt_regs *);
65 int (*connect)(struct serio *, struct serio_driver *drv); 64 int (*connect)(struct serio *, struct serio_driver *drv);
66 int (*reconnect)(struct serio *); 65 int (*reconnect)(struct serio *);
67 void (*disconnect)(struct serio *); 66 void (*disconnect)(struct serio *);
@@ -75,7 +74,7 @@ int serio_open(struct serio *serio, struct serio_driver *drv);
75void serio_close(struct serio *serio); 74void serio_close(struct serio *serio);
76void serio_rescan(struct serio *serio); 75void serio_rescan(struct serio *serio);
77void serio_reconnect(struct serio *serio); 76void serio_reconnect(struct serio *serio);
78irqreturn_t serio_interrupt(struct serio *serio, unsigned char data, unsigned int flags, struct pt_regs *regs); 77irqreturn_t serio_interrupt(struct serio *serio, unsigned char data, unsigned int flags);
79 78
80void __serio_register_port(struct serio *serio, struct module *owner); 79void __serio_register_port(struct serio *serio, struct module *owner);
81static inline void serio_register_port(struct serio *serio) 80static inline void serio_register_port(struct serio *serio)
diff --git a/include/linux/smb_fs.h b/include/linux/smb_fs.h
index 367d6c3e8ed4..13b3af547864 100644
--- a/include/linux/smb_fs.h
+++ b/include/linux/smb_fs.h
@@ -43,17 +43,17 @@ static inline struct smb_inode_info *SMB_I(struct inode *inode)
43 43
44/* macro names are short for word, double-word, long value (?) */ 44/* macro names are short for word, double-word, long value (?) */
45#define WVAL(buf,pos) \ 45#define WVAL(buf,pos) \
46 (le16_to_cpu(get_unaligned((u16 *)((u8 *)(buf) + (pos))))) 46 (le16_to_cpu(get_unaligned((__le16 *)((u8 *)(buf) + (pos)))))
47#define DVAL(buf,pos) \ 47#define DVAL(buf,pos) \
48 (le32_to_cpu(get_unaligned((u32 *)((u8 *)(buf) + (pos))))) 48 (le32_to_cpu(get_unaligned((__le32 *)((u8 *)(buf) + (pos)))))
49#define LVAL(buf,pos) \ 49#define LVAL(buf,pos) \
50 (le64_to_cpu(get_unaligned((u64 *)((u8 *)(buf) + (pos))))) 50 (le64_to_cpu(get_unaligned((__le64 *)((u8 *)(buf) + (pos)))))
51#define WSET(buf,pos,val) \ 51#define WSET(buf,pos,val) \
52 put_unaligned(cpu_to_le16((u16)(val)), (u16 *)((u8 *)(buf) + (pos))) 52 put_unaligned(cpu_to_le16((u16)(val)), (__le16 *)((u8 *)(buf) + (pos)))
53#define DSET(buf,pos,val) \ 53#define DSET(buf,pos,val) \
54 put_unaligned(cpu_to_le32((u32)(val)), (u32 *)((u8 *)(buf) + (pos))) 54 put_unaligned(cpu_to_le32((u32)(val)), (__le32 *)((u8 *)(buf) + (pos)))
55#define LSET(buf,pos,val) \ 55#define LSET(buf,pos,val) \
56 put_unaligned(cpu_to_le64((u64)(val)), (u64 *)((u8 *)(buf) + (pos))) 56 put_unaligned(cpu_to_le64((u64)(val)), (__le64 *)((u8 *)(buf) + (pos)))
57 57
58/* where to find the base of the SMB packet proper */ 58/* where to find the base of the SMB packet proper */
59#define smb_base(buf) ((u8 *)(((u8 *)(buf))+4)) 59#define smb_base(buf) ((u8 *)(((u8 *)(buf))+4))
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
index d6288e89fd9d..9c9a8ad92477 100644
--- a/include/linux/sunrpc/svc.h
+++ b/include/linux/sunrpc/svc.h
@@ -57,7 +57,8 @@ struct svc_serv {
57 struct svc_stat * sv_stats; /* RPC statistics */ 57 struct svc_stat * sv_stats; /* RPC statistics */
58 spinlock_t sv_lock; 58 spinlock_t sv_lock;
59 unsigned int sv_nrthreads; /* # of server threads */ 59 unsigned int sv_nrthreads; /* # of server threads */
60 unsigned int sv_bufsz; /* datagram buffer size */ 60 unsigned int sv_max_payload; /* datagram payload size */
61 unsigned int sv_max_mesg; /* max_payload + 1 page for overheads */
61 unsigned int sv_xdrsize; /* XDR buffer size */ 62 unsigned int sv_xdrsize; /* XDR buffer size */
62 63
63 struct list_head sv_permsocks; /* all permanent sockets */ 64 struct list_head sv_permsocks; /* all permanent sockets */
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 3efcfc7e9c6c..b0ace3fd7eb9 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -593,7 +593,7 @@ asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags);
593asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes, 593asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes,
594 unsigned int flags); 594 unsigned int flags);
595asmlinkage long sys_get_robust_list(int pid, 595asmlinkage long sys_get_robust_list(int pid,
596 struct robust_list_head __user **head_ptr, 596 struct robust_list_head __user * __user *head_ptr,
597 size_t __user *len_ptr); 597 size_t __user *len_ptr);
598asmlinkage long sys_set_robust_list(struct robust_list_head __user *head, 598asmlinkage long sys_set_robust_list(struct robust_list_head __user *head,
599 size_t len); 599 size_t len);
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
index e657e523b9bf..9df8833670cb 100644
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -29,7 +29,7 @@ struct tty_struct;
29#define SYSRQ_ENABLE_RTNICE 0x0100 29#define SYSRQ_ENABLE_RTNICE 0x0100
30 30
31struct sysrq_key_op { 31struct sysrq_key_op {
32 void (*handler)(int, struct pt_regs *, struct tty_struct *); 32 void (*handler)(int, struct tty_struct *);
33 char *help_msg; 33 char *help_msg;
34 char *action_msg; 34 char *action_msg;
35 int enable_mask; 35 int enable_mask;
@@ -42,8 +42,8 @@ struct sysrq_key_op {
42 * are available -- else NULL's). 42 * are available -- else NULL's).
43 */ 43 */
44 44
45void handle_sysrq(int, struct pt_regs *, struct tty_struct *); 45void handle_sysrq(int, struct tty_struct *);
46void __handle_sysrq(int, struct pt_regs *, struct tty_struct *, int check_mask); 46void __handle_sysrq(int, struct tty_struct *, int check_mask);
47int register_sysrq_key(int, struct sysrq_key_op *); 47int register_sysrq_key(int, struct sysrq_key_op *);
48int unregister_sysrq_key(int, struct sysrq_key_op *); 48int unregister_sysrq_key(int, struct sysrq_key_op *);
49struct sysrq_key_op *__sysrq_get_key_op(int key); 49struct sysrq_key_op *__sysrq_get_key_op(int key);
diff --git a/include/linux/tifm.h b/include/linux/tifm.h
index 203dd5e11ecb..dfb8052eee5e 100644
--- a/include/linux/tifm.h
+++ b/include/linux/tifm.h
@@ -17,6 +17,7 @@
17#include <linux/wait.h> 17#include <linux/wait.h>
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/pci.h> 19#include <linux/pci.h>
20#include <linux/scatterlist.h>
20 21
21/* Host registers (relative to pci base address): */ 22/* Host registers (relative to pci base address): */
22enum { 23enum {
diff --git a/include/linux/timex.h b/include/linux/timex.h
index 049dfe4a11f2..db501dc23c29 100644
--- a/include/linux/timex.h
+++ b/include/linux/timex.h
@@ -293,6 +293,9 @@ extern void second_overflow(void);
293extern void update_ntp_one_tick(void); 293extern void update_ntp_one_tick(void);
294extern int do_adjtimex(struct timex *); 294extern int do_adjtimex(struct timex *);
295 295
296/* Don't use! Compatibility define for existing users. */
297#define tickadj (500/HZ ? : 1)
298
296#endif /* KERNEL */ 299#endif /* KERNEL */
297 300
298#endif /* LINUX_TIMEX_H */ 301#endif /* LINUX_TIMEX_H */
diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h
index fc62887c5206..61eef508b041 100644
--- a/include/linux/ufs_fs.h
+++ b/include/linux/ufs_fs.h
@@ -351,6 +351,14 @@ struct ufs2_csum_total {
351 __fs64 cs_spare[3]; /* future expansion */ 351 __fs64 cs_spare[3]; /* future expansion */
352}; 352};
353 353
354struct ufs_csum_core {
355 __u64 cs_ndir; /* number of directories */
356 __u64 cs_nbfree; /* number of free blocks */
357 __u64 cs_nifree; /* number of free inodes */
358 __u64 cs_nffree; /* number of free frags */
359 __u64 cs_numclusters; /* number of free clusters */
360};
361
354/* 362/*
355 * File system flags 363 * File system flags
356 */ 364 */
@@ -715,7 +723,7 @@ struct ufs_cg_private_info {
715 723
716struct ufs_sb_private_info { 724struct ufs_sb_private_info {
717 struct ufs_buffer_head s_ubh; /* buffer containing super block */ 725 struct ufs_buffer_head s_ubh; /* buffer containing super block */
718 struct ufs2_csum_total cs_total; 726 struct ufs_csum_core cs_total;
719 __u32 s_sblkno; /* offset of super-blocks in filesys */ 727 __u32 s_sblkno; /* offset of super-blocks in filesys */
720 __u32 s_cblkno; /* offset of cg-block in filesys */ 728 __u32 s_cblkno; /* offset of cg-block in filesys */
721 __u32 s_iblkno; /* offset of inode-blocks in filesys */ 729 __u32 s_iblkno; /* offset of inode-blocks in filesys */
diff --git a/include/linux/usb.h b/include/linux/usb.h
index 190cc1b78fe2..5482bfb3303d 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -764,9 +764,8 @@ struct usb_iso_packet_descriptor {
764}; 764};
765 765
766struct urb; 766struct urb;
767struct pt_regs;
768 767
769typedef void (*usb_complete_t)(struct urb *, struct pt_regs *); 768typedef void (*usb_complete_t)(struct urb *);
770 769
771/** 770/**
772 * struct urb - USB Request Block 771 * struct urb - USB Request Block
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h
index 91c983eef899..91b3ea2bbb14 100644
--- a/include/linux/usb/serial.h
+++ b/include/linux/usb/serial.h
@@ -226,10 +226,10 @@ struct usb_serial_driver {
226 int (*tiocmget) (struct usb_serial_port *port, struct file *file); 226 int (*tiocmget) (struct usb_serial_port *port, struct file *file);
227 int (*tiocmset) (struct usb_serial_port *port, struct file *file, unsigned int set, unsigned int clear); 227 int (*tiocmset) (struct usb_serial_port *port, struct file *file, unsigned int set, unsigned int clear);
228 228
229 void (*read_int_callback)(struct urb *urb, struct pt_regs *regs); 229 void (*read_int_callback)(struct urb *urb);
230 void (*write_int_callback)(struct urb *urb, struct pt_regs *regs); 230 void (*write_int_callback)(struct urb *urb);
231 void (*read_bulk_callback)(struct urb *urb, struct pt_regs *regs); 231 void (*read_bulk_callback)(struct urb *urb);
232 void (*write_bulk_callback)(struct urb *urb, struct pt_regs *regs); 232 void (*write_bulk_callback)(struct urb *urb);
233}; 233};
234#define to_usb_serial_driver(d) container_of(d, struct usb_serial_driver, driver) 234#define to_usb_serial_driver(d) container_of(d, struct usb_serial_driver, driver)
235 235
@@ -262,8 +262,8 @@ extern int usb_serial_generic_write (struct usb_serial_port *port, const unsigne
262extern void usb_serial_generic_close (struct usb_serial_port *port, struct file *filp); 262extern void usb_serial_generic_close (struct usb_serial_port *port, struct file *filp);
263extern int usb_serial_generic_write_room (struct usb_serial_port *port); 263extern int usb_serial_generic_write_room (struct usb_serial_port *port);
264extern int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port); 264extern int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port);
265extern void usb_serial_generic_read_bulk_callback (struct urb *urb, struct pt_regs *regs); 265extern void usb_serial_generic_read_bulk_callback (struct urb *urb);
266extern void usb_serial_generic_write_bulk_callback (struct urb *urb, struct pt_regs *regs); 266extern void usb_serial_generic_write_bulk_callback (struct urb *urb);
267extern void usb_serial_generic_shutdown (struct usb_serial *serial); 267extern void usb_serial_generic_shutdown (struct usb_serial *serial);
268extern int usb_serial_generic_register (int debug); 268extern int usb_serial_generic_register (int debug);
269extern void usb_serial_generic_deregister (void); 269extern void usb_serial_generic_deregister (void);
diff --git a/include/linux/xattr.h b/include/linux/xattr.h
index cda8a96e2fa0..0e7f1e20ea45 100644
--- a/include/linux/xattr.h
+++ b/include/linux/xattr.h
@@ -41,6 +41,7 @@ struct xattr_handler {
41}; 41};
42 42
43ssize_t vfs_getxattr(struct dentry *, char *, void *, size_t); 43ssize_t vfs_getxattr(struct dentry *, char *, void *, size_t);
44ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size);
44int vfs_setxattr(struct dentry *, char *, void *, size_t, int); 45int vfs_setxattr(struct dentry *, char *, void *, size_t, int);
45int vfs_removexattr(struct dentry *, char *); 46int vfs_removexattr(struct dentry *, char *);
46 47
diff --git a/include/sound/core.h b/include/sound/core.h
index b056ea925ecf..fa1ca0127bab 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -89,10 +89,10 @@ struct snd_device {
89struct snd_monitor_file { 89struct snd_monitor_file {
90 struct file *file; 90 struct file *file;
91 struct snd_monitor_file *next; 91 struct snd_monitor_file *next;
92 const struct file_operations *disconnected_f_op;
93 struct list_head shutdown_list;
92}; 94};
93 95
94struct snd_shutdown_f_ops; /* define it later in init.c */
95
96/* main structure for soundcard */ 96/* main structure for soundcard */
97 97
98struct snd_card { 98struct snd_card {
diff --git a/include/sound/cs4231.h b/include/sound/cs4231.h
index 60b5b92a1319..ab51ce1ba9a5 100644
--- a/include/sound/cs4231.h
+++ b/include/sound/cs4231.h
@@ -273,7 +273,7 @@ unsigned char snd_cs4236_ext_in(struct snd_cs4231 *chip, unsigned char reg);
273void snd_cs4231_mce_up(struct snd_cs4231 *chip); 273void snd_cs4231_mce_up(struct snd_cs4231 *chip);
274void snd_cs4231_mce_down(struct snd_cs4231 *chip); 274void snd_cs4231_mce_down(struct snd_cs4231 *chip);
275 275
276irqreturn_t snd_cs4231_interrupt(int irq, void *dev_id, struct pt_regs *regs); 276irqreturn_t snd_cs4231_interrupt(int irq, void *dev_id);
277 277
278const char *snd_cs4231_chip_id(struct snd_cs4231 *chip); 278const char *snd_cs4231_chip_id(struct snd_cs4231 *chip);
279 279
diff --git a/include/sound/emu10k1.h b/include/sound/emu10k1.h
index 892e310c504d..3d3c1514cf71 100644
--- a/include/sound/emu10k1.h
+++ b/include/sound/emu10k1.h
@@ -1194,7 +1194,7 @@ int snd_emu10k1_mixer(struct snd_emu10k1 * emu, int pcm_device, int multi_device
1194int snd_emu10k1_timer(struct snd_emu10k1 * emu, int device); 1194int snd_emu10k1_timer(struct snd_emu10k1 * emu, int device);
1195int snd_emu10k1_fx8010_new(struct snd_emu10k1 *emu, int device, struct snd_hwdep ** rhwdep); 1195int snd_emu10k1_fx8010_new(struct snd_emu10k1 *emu, int device, struct snd_hwdep ** rhwdep);
1196 1196
1197irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs); 1197irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id);
1198 1198
1199void snd_emu10k1_voice_init(struct snd_emu10k1 * emu, int voice); 1199void snd_emu10k1_voice_init(struct snd_emu10k1 * emu, int voice);
1200int snd_emu10k1_init_efx(struct snd_emu10k1 *emu); 1200int snd_emu10k1_init_efx(struct snd_emu10k1 *emu);
diff --git a/include/sound/gus.h b/include/sound/gus.h
index 68a664ab97f3..c49ea57db8cc 100644
--- a/include/sound/gus.h
+++ b/include/sound/gus.h
@@ -638,7 +638,7 @@ int snd_gus_initialize(struct snd_gus_card * gus);
638 638
639/* gus_irq.c */ 639/* gus_irq.c */
640 640
641irqreturn_t snd_gus_interrupt(int irq, void *dev_id, struct pt_regs *regs); 641irqreturn_t snd_gus_interrupt(int irq, void *dev_id);
642#ifdef CONFIG_SND_DEBUG 642#ifdef CONFIG_SND_DEBUG
643void snd_gus_irq_profile_init(struct snd_gus_card *gus); 643void snd_gus_irq_profile_init(struct snd_gus_card *gus);
644#endif 644#endif
diff --git a/include/sound/initval.h b/include/sound/initval.h
index 2ae76efc696f..e85b90750a59 100644
--- a/include/sound/initval.h
+++ b/include/sound/initval.h
@@ -53,7 +53,7 @@
53#ifdef SNDRV_LEGACY_FIND_FREE_IRQ 53#ifdef SNDRV_LEGACY_FIND_FREE_IRQ
54#include <linux/interrupt.h> 54#include <linux/interrupt.h>
55 55
56static irqreturn_t snd_legacy_empty_irq_handler(int irq, void *dev_id, struct pt_regs *regs) 56static irqreturn_t snd_legacy_empty_irq_handler(int irq, void *dev_id)
57{ 57{
58 return IRQ_HANDLED; 58 return IRQ_HANDLED;
59} 59}
diff --git a/include/sound/mpu401.h b/include/sound/mpu401.h
index ac504321ea56..8c88267e9bea 100644
--- a/include/sound/mpu401.h
+++ b/include/sound/mpu401.h
@@ -106,10 +106,8 @@ struct snd_mpu401 {
106 106
107 */ 107 */
108 108
109irqreturn_t snd_mpu401_uart_interrupt(int irq, void *dev_id, 109irqreturn_t snd_mpu401_uart_interrupt(int irq, void *dev_id);
110 struct pt_regs *regs); 110irqreturn_t snd_mpu401_uart_interrupt_tx(int irq, void *dev_id);
111irqreturn_t snd_mpu401_uart_interrupt_tx(int irq, void *dev_id,
112 struct pt_regs *regs);
113 111
114int snd_mpu401_uart_new(struct snd_card *card, 112int snd_mpu401_uart_new(struct snd_card *card,
115 int device, 113 int device,
diff --git a/include/sound/sb.h b/include/sound/sb.h
index 431d06675e36..2dd5c8e5b4fe 100644
--- a/include/sound/sb.h
+++ b/include/sound/sb.h
@@ -100,7 +100,7 @@ struct snd_sb {
100 struct snd_rawmidi *rmidi; 100 struct snd_rawmidi *rmidi;
101 struct snd_rawmidi_substream *midi_substream_input; 101 struct snd_rawmidi_substream *midi_substream_input;
102 struct snd_rawmidi_substream *midi_substream_output; 102 struct snd_rawmidi_substream *midi_substream_output;
103 irqreturn_t (*rmidi_callback)(int irq, void *dev_id, struct pt_regs *regs); 103 irq_handler_t rmidi_callback;
104 104
105 spinlock_t reg_lock; 105 spinlock_t reg_lock;
106 spinlock_t open_lock; 106 spinlock_t open_lock;
@@ -286,7 +286,7 @@ int snd_sbdsp_reset(struct snd_sb *chip);
286int snd_sbdsp_create(struct snd_card *card, 286int snd_sbdsp_create(struct snd_card *card,
287 unsigned long port, 287 unsigned long port,
288 int irq, 288 int irq,
289 irqreturn_t (*irq_handler)(int, void *, struct pt_regs *), 289 irq_handler_t irq_handler,
290 int dma8, int dma16, 290 int dma8, int dma16,
291 unsigned short hardware, 291 unsigned short hardware,
292 struct snd_sb **r_chip); 292 struct snd_sb **r_chip);
@@ -316,7 +316,7 @@ int snd_sb16dsp_pcm(struct snd_sb *chip, int device, struct snd_pcm ** rpcm);
316const struct snd_pcm_ops *snd_sb16dsp_get_pcm_ops(int direction); 316const struct snd_pcm_ops *snd_sb16dsp_get_pcm_ops(int direction);
317int snd_sb16dsp_configure(struct snd_sb *chip); 317int snd_sb16dsp_configure(struct snd_sb *chip);
318/* sb16.c */ 318/* sb16.c */
319irqreturn_t snd_sb16dsp_interrupt(int irq, void *dev_id, struct pt_regs *regs); 319irqreturn_t snd_sb16dsp_interrupt(int irq, void *dev_id);
320 320
321/* exported mixer stuffs */ 321/* exported mixer stuffs */
322enum { 322enum {
diff --git a/include/sound/version.h b/include/sound/version.h
index 2ee849d0e198..4ad86eb6440b 100644
--- a/include/sound/version.h
+++ b/include/sound/version.h
@@ -1,3 +1,3 @@
1/* include/version.h. Generated by configure. */ 1/* include/version.h. Generated by alsa/ksync script. */
2#define CONFIG_SND_VERSION "1.0.12rc1" 2#define CONFIG_SND_VERSION "1.0.13"
3#define CONFIG_SND_DATE " (Thu Jun 22 13:55:50 2006 UTC)" 3#define CONFIG_SND_DATE " (Fri Oct 06 18:28:19 2006 UTC)"
diff --git a/include/sound/vx_core.h b/include/sound/vx_core.h
index dbca14170615..217394652090 100644
--- a/include/sound/vx_core.h
+++ b/include/sound/vx_core.h
@@ -228,7 +228,7 @@ void snd_vx_free_firmware(struct vx_core *chip);
228/* 228/*
229 * interrupt handler; exported for pcmcia 229 * interrupt handler; exported for pcmcia
230 */ 230 */
231irqreturn_t snd_vx_irq_handler(int irq, void *dev, struct pt_regs *regs); 231irqreturn_t snd_vx_irq_handler(int irq, void *dev);
232 232
233/* 233/*
234 * lowlevel functions 234 * lowlevel functions
diff --git a/kernel/audit.c b/kernel/audit.c
index f9889ee77825..98106f6078b0 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -340,7 +340,7 @@ static int kauditd_thread(void *dummy)
340{ 340{
341 struct sk_buff *skb; 341 struct sk_buff *skb;
342 342
343 while (1) { 343 while (!kthread_should_stop()) {
344 skb = skb_dequeue(&audit_skb_queue); 344 skb = skb_dequeue(&audit_skb_queue);
345 wake_up(&audit_backlog_wait); 345 wake_up(&audit_backlog_wait);
346 if (skb) { 346 if (skb) {
@@ -369,6 +369,7 @@ static int kauditd_thread(void *dummy)
369 remove_wait_queue(&kauditd_wait, &wait); 369 remove_wait_queue(&kauditd_wait, &wait);
370 } 370 }
371 } 371 }
372 return 0;
372} 373}
373 374
374int audit_send_list(void *_dest) 375int audit_send_list(void *_dest)
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 9d850ae13b1b..6313c38c930e 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -2137,7 +2137,7 @@ static int cpuset_handle_cpuhp(struct notifier_block *nb,
2137 * See also the previous routine cpuset_handle_cpuhp(). 2137 * See also the previous routine cpuset_handle_cpuhp().
2138 */ 2138 */
2139 2139
2140void cpuset_track_online_nodes() 2140void cpuset_track_online_nodes(void)
2141{ 2141{
2142 common_cpu_mem_hotplug_unplug(); 2142 common_cpu_mem_hotplug_unplug();
2143} 2143}
diff --git a/kernel/futex.c b/kernel/futex.c
index 4aaf91951a43..b364e0026191 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1612,10 +1612,10 @@ sys_set_robust_list(struct robust_list_head __user *head,
1612 * @len_ptr: pointer to a length field, the kernel fills in the header size 1612 * @len_ptr: pointer to a length field, the kernel fills in the header size
1613 */ 1613 */
1614asmlinkage long 1614asmlinkage long
1615sys_get_robust_list(int pid, struct robust_list_head __user **head_ptr, 1615sys_get_robust_list(int pid, struct robust_list_head __user * __user *head_ptr,
1616 size_t __user *len_ptr) 1616 size_t __user *len_ptr)
1617{ 1617{
1618 struct robust_list_head *head; 1618 struct robust_list_head __user *head;
1619 unsigned long ret; 1619 unsigned long ret;
1620 1620
1621 if (!pid) 1621 if (!pid)
@@ -1694,14 +1694,15 @@ retry:
1694 * Fetch a robust-list pointer. Bit 0 signals PI futexes: 1694 * Fetch a robust-list pointer. Bit 0 signals PI futexes:
1695 */ 1695 */
1696static inline int fetch_robust_entry(struct robust_list __user **entry, 1696static inline int fetch_robust_entry(struct robust_list __user **entry,
1697 struct robust_list __user **head, int *pi) 1697 struct robust_list __user * __user *head,
1698 int *pi)
1698{ 1699{
1699 unsigned long uentry; 1700 unsigned long uentry;
1700 1701
1701 if (get_user(uentry, (unsigned long *)head)) 1702 if (get_user(uentry, (unsigned long __user *)head))
1702 return -EFAULT; 1703 return -EFAULT;
1703 1704
1704 *entry = (void *)(uentry & ~1UL); 1705 *entry = (void __user *)(uentry & ~1UL);
1705 *pi = uentry & 1; 1706 *pi = uentry & 1;
1706 1707
1707 return 0; 1708 return 0;
@@ -1739,7 +1740,7 @@ void exit_robust_list(struct task_struct *curr)
1739 return; 1740 return;
1740 1741
1741 if (pending) 1742 if (pending)
1742 handle_futex_death((void *)pending + futex_offset, curr, pip); 1743 handle_futex_death((void __user *)pending + futex_offset, curr, pip);
1743 1744
1744 while (entry != &head->list) { 1745 while (entry != &head->list) {
1745 /* 1746 /*
@@ -1747,7 +1748,7 @@ void exit_robust_list(struct task_struct *curr)
1747 * don't process it twice: 1748 * don't process it twice:
1748 */ 1749 */
1749 if (entry != pending) 1750 if (entry != pending)
1750 if (handle_futex_death((void *)entry + futex_offset, 1751 if (handle_futex_death((void __user *)entry + futex_offset,
1751 curr, pi)) 1752 curr, pi))
1752 return; 1753 return;
1753 /* 1754 /*
diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
index c5cca3f65cb7..50f24eea6cd0 100644
--- a/kernel/futex_compat.c
+++ b/kernel/futex_compat.c
@@ -18,7 +18,7 @@
18 */ 18 */
19static inline int 19static inline int
20fetch_robust_entry(compat_uptr_t *uentry, struct robust_list __user **entry, 20fetch_robust_entry(compat_uptr_t *uentry, struct robust_list __user **entry,
21 compat_uptr_t *head, int *pi) 21 compat_uptr_t __user *head, int *pi)
22{ 22{
23 if (get_user(*uentry, head)) 23 if (get_user(*uentry, head))
24 return -EFAULT; 24 return -EFAULT;
@@ -62,7 +62,7 @@ void compat_exit_robust_list(struct task_struct *curr)
62 &head->list_op_pending, &pip)) 62 &head->list_op_pending, &pip))
63 return; 63 return;
64 if (upending) 64 if (upending)
65 handle_futex_death((void *)pending + futex_offset, curr, pip); 65 handle_futex_death((void __user *)pending + futex_offset, curr, pip);
66 66
67 while (compat_ptr(uentry) != &head->list) { 67 while (compat_ptr(uentry) != &head->list) {
68 /* 68 /*
@@ -70,7 +70,7 @@ void compat_exit_robust_list(struct task_struct *curr)
70 * dont process it twice: 70 * dont process it twice:
71 */ 71 */
72 if (entry != pending) 72 if (entry != pending)
73 if (handle_futex_death((void *)entry + futex_offset, 73 if (handle_futex_death((void __user *)entry + futex_offset,
74 curr, pi)) 74 curr, pi))
75 return; 75 return;
76 76
@@ -78,7 +78,7 @@ void compat_exit_robust_list(struct task_struct *curr)
78 * Fetch the next entry in the list: 78 * Fetch the next entry in the list:
79 */ 79 */
80 if (fetch_robust_entry(&uentry, &entry, 80 if (fetch_robust_entry(&uentry, &entry,
81 (compat_uptr_t *)&entry->next, &pi)) 81 (compat_uptr_t __user *)&entry->next, &pi))
82 return; 82 return;
83 /* 83 /*
84 * Avoid excessively long or circular lists: 84 * Avoid excessively long or circular lists:
@@ -103,10 +103,10 @@ compat_sys_set_robust_list(struct compat_robust_list_head __user *head,
103} 103}
104 104
105asmlinkage long 105asmlinkage long
106compat_sys_get_robust_list(int pid, compat_uptr_t *head_ptr, 106compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
107 compat_size_t __user *len_ptr) 107 compat_size_t __user *len_ptr)
108{ 108{
109 struct compat_robust_list_head *head; 109 struct compat_robust_list_head __user *head;
110 unsigned long ret; 110 unsigned long ret;
111 111
112 if (!pid) 112 if (!pid)
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 4cf65f5c6a74..11c99697acfe 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -249,7 +249,6 @@ static inline void mask_ack_irq(struct irq_desc *desc, int irq)
249 * handle_simple_irq - Simple and software-decoded IRQs. 249 * handle_simple_irq - Simple and software-decoded IRQs.
250 * @irq: the interrupt number 250 * @irq: the interrupt number
251 * @desc: the interrupt description structure for this irq 251 * @desc: the interrupt description structure for this irq
252 * @regs: pointer to a register structure
253 * 252 *
254 * Simple interrupts are either sent from a demultiplexing interrupt 253 * Simple interrupts are either sent from a demultiplexing interrupt
255 * handler or come from hardware, where no interrupt hardware control 254 * handler or come from hardware, where no interrupt hardware control
@@ -259,7 +258,7 @@ static inline void mask_ack_irq(struct irq_desc *desc, int irq)
259 * unmask issues if necessary. 258 * unmask issues if necessary.
260 */ 259 */
261void fastcall 260void fastcall
262handle_simple_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) 261handle_simple_irq(unsigned int irq, struct irq_desc *desc)
263{ 262{
264 struct irqaction *action; 263 struct irqaction *action;
265 irqreturn_t action_ret; 264 irqreturn_t action_ret;
@@ -279,9 +278,9 @@ handle_simple_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
279 desc->status |= IRQ_INPROGRESS; 278 desc->status |= IRQ_INPROGRESS;
280 spin_unlock(&desc->lock); 279 spin_unlock(&desc->lock);
281 280
282 action_ret = handle_IRQ_event(irq, regs, action); 281 action_ret = handle_IRQ_event(irq, action);
283 if (!noirqdebug) 282 if (!noirqdebug)
284 note_interrupt(irq, desc, action_ret, regs); 283 note_interrupt(irq, desc, action_ret);
285 284
286 spin_lock(&desc->lock); 285 spin_lock(&desc->lock);
287 desc->status &= ~IRQ_INPROGRESS; 286 desc->status &= ~IRQ_INPROGRESS;
@@ -293,7 +292,6 @@ out_unlock:
293 * handle_level_irq - Level type irq handler 292 * handle_level_irq - Level type irq handler
294 * @irq: the interrupt number 293 * @irq: the interrupt number
295 * @desc: the interrupt description structure for this irq 294 * @desc: the interrupt description structure for this irq
296 * @regs: pointer to a register structure
297 * 295 *
298 * Level type interrupts are active as long as the hardware line has 296 * Level type interrupts are active as long as the hardware line has
299 * the active level. This may require to mask the interrupt and unmask 297 * the active level. This may require to mask the interrupt and unmask
@@ -301,7 +299,7 @@ out_unlock:
301 * interrupt line is back to inactive. 299 * interrupt line is back to inactive.
302 */ 300 */
303void fastcall 301void fastcall
304handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) 302handle_level_irq(unsigned int irq, struct irq_desc *desc)
305{ 303{
306 unsigned int cpu = smp_processor_id(); 304 unsigned int cpu = smp_processor_id();
307 struct irqaction *action; 305 struct irqaction *action;
@@ -329,9 +327,9 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
329 desc->status &= ~IRQ_PENDING; 327 desc->status &= ~IRQ_PENDING;
330 spin_unlock(&desc->lock); 328 spin_unlock(&desc->lock);
331 329
332 action_ret = handle_IRQ_event(irq, regs, action); 330 action_ret = handle_IRQ_event(irq, action);
333 if (!noirqdebug) 331 if (!noirqdebug)
334 note_interrupt(irq, desc, action_ret, regs); 332 note_interrupt(irq, desc, action_ret);
335 333
336 spin_lock(&desc->lock); 334 spin_lock(&desc->lock);
337 desc->status &= ~IRQ_INPROGRESS; 335 desc->status &= ~IRQ_INPROGRESS;
@@ -345,7 +343,6 @@ out_unlock:
345 * handle_fasteoi_irq - irq handler for transparent controllers 343 * handle_fasteoi_irq - irq handler for transparent controllers
346 * @irq: the interrupt number 344 * @irq: the interrupt number
347 * @desc: the interrupt description structure for this irq 345 * @desc: the interrupt description structure for this irq
348 * @regs: pointer to a register structure
349 * 346 *
350 * Only a single callback will be issued to the chip: an ->eoi() 347 * Only a single callback will be issued to the chip: an ->eoi()
351 * call when the interrupt has been serviced. This enables support 348 * call when the interrupt has been serviced. This enables support
@@ -353,8 +350,7 @@ out_unlock:
353 * details in hardware, transparently. 350 * details in hardware, transparently.
354 */ 351 */
355void fastcall 352void fastcall
356handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc, 353handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
357 struct pt_regs *regs)
358{ 354{
359 unsigned int cpu = smp_processor_id(); 355 unsigned int cpu = smp_processor_id();
360 struct irqaction *action; 356 struct irqaction *action;
@@ -382,9 +378,9 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc,
382 desc->status &= ~IRQ_PENDING; 378 desc->status &= ~IRQ_PENDING;
383 spin_unlock(&desc->lock); 379 spin_unlock(&desc->lock);
384 380
385 action_ret = handle_IRQ_event(irq, regs, action); 381 action_ret = handle_IRQ_event(irq, action);
386 if (!noirqdebug) 382 if (!noirqdebug)
387 note_interrupt(irq, desc, action_ret, regs); 383 note_interrupt(irq, desc, action_ret);
388 384
389 spin_lock(&desc->lock); 385 spin_lock(&desc->lock);
390 desc->status &= ~IRQ_INPROGRESS; 386 desc->status &= ~IRQ_INPROGRESS;
@@ -398,7 +394,6 @@ out:
398 * handle_edge_irq - edge type IRQ handler 394 * handle_edge_irq - edge type IRQ handler
399 * @irq: the interrupt number 395 * @irq: the interrupt number
400 * @desc: the interrupt description structure for this irq 396 * @desc: the interrupt description structure for this irq
401 * @regs: pointer to a register structure
402 * 397 *
403 * Interrupt occures on the falling and/or rising edge of a hardware 398 * Interrupt occures on the falling and/or rising edge of a hardware
404 * signal. The occurence is latched into the irq controller hardware 399 * signal. The occurence is latched into the irq controller hardware
@@ -412,7 +407,7 @@ out:
412 * loop is left. 407 * loop is left.
413 */ 408 */
414void fastcall 409void fastcall
415handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) 410handle_edge_irq(unsigned int irq, struct irq_desc *desc)
416{ 411{
417 const unsigned int cpu = smp_processor_id(); 412 const unsigned int cpu = smp_processor_id();
418 413
@@ -463,9 +458,9 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
463 458
464 desc->status &= ~IRQ_PENDING; 459 desc->status &= ~IRQ_PENDING;
465 spin_unlock(&desc->lock); 460 spin_unlock(&desc->lock);
466 action_ret = handle_IRQ_event(irq, regs, action); 461 action_ret = handle_IRQ_event(irq, action);
467 if (!noirqdebug) 462 if (!noirqdebug)
468 note_interrupt(irq, desc, action_ret, regs); 463 note_interrupt(irq, desc, action_ret);
469 spin_lock(&desc->lock); 464 spin_lock(&desc->lock);
470 465
471 } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING); 466 } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
@@ -480,12 +475,11 @@ out_unlock:
480 * handle_percpu_IRQ - Per CPU local irq handler 475 * handle_percpu_IRQ - Per CPU local irq handler
481 * @irq: the interrupt number 476 * @irq: the interrupt number
482 * @desc: the interrupt description structure for this irq 477 * @desc: the interrupt description structure for this irq
483 * @regs: pointer to a register structure
484 * 478 *
485 * Per CPU interrupts on SMP machines without locking requirements 479 * Per CPU interrupts on SMP machines without locking requirements
486 */ 480 */
487void fastcall 481void fastcall
488handle_percpu_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) 482handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
489{ 483{
490 irqreturn_t action_ret; 484 irqreturn_t action_ret;
491 485
@@ -494,9 +488,9 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
494 if (desc->chip->ack) 488 if (desc->chip->ack)
495 desc->chip->ack(irq); 489 desc->chip->ack(irq);
496 490
497 action_ret = handle_IRQ_event(irq, regs, desc->action); 491 action_ret = handle_IRQ_event(irq, desc->action);
498 if (!noirqdebug) 492 if (!noirqdebug)
499 note_interrupt(irq, desc, action_ret, regs); 493 note_interrupt(irq, desc, action_ret);
500 494
501 if (desc->chip->eoi) 495 if (desc->chip->eoi)
502 desc->chip->eoi(irq); 496 desc->chip->eoi(irq);
@@ -505,10 +499,7 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
505#endif /* CONFIG_SMP */ 499#endif /* CONFIG_SMP */
506 500
507void 501void
508__set_irq_handler(unsigned int irq, 502__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained)
509 void fastcall (*handle)(unsigned int, irq_desc_t *,
510 struct pt_regs *),
511 int is_chained)
512{ 503{
513 struct irq_desc *desc; 504 struct irq_desc *desc;
514 unsigned long flags; 505 unsigned long flags;
@@ -561,9 +552,7 @@ __set_irq_handler(unsigned int irq,
561 552
562void 553void
563set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, 554set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
564 void fastcall (*handle)(unsigned int, 555 irq_flow_handler_t handle)
565 struct irq_desc *,
566 struct pt_regs *))
567{ 556{
568 set_irq_chip(irq, chip); 557 set_irq_chip(irq, chip);
569 __set_irq_handler(irq, handle, 0); 558 __set_irq_handler(irq, handle, 0);
@@ -574,8 +563,7 @@ set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
574 * /proc/interrupts output: 563 * /proc/interrupts output:
575 */ 564 */
576const char * 565const char *
577handle_irq_name(void fastcall (*handle)(unsigned int, struct irq_desc *, 566handle_irq_name(irq_flow_handler_t handle)
578 struct pt_regs *))
579{ 567{
580 if (handle == handle_level_irq) 568 if (handle == handle_level_irq)
581 return "level "; 569 return "level ";
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 4c6cdbaed661..42aa6f1a3f0f 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -27,7 +27,7 @@
27 * Handles spurious and unhandled IRQ's. It also prints a debugmessage. 27 * Handles spurious and unhandled IRQ's. It also prints a debugmessage.
28 */ 28 */
29void fastcall 29void fastcall
30handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) 30handle_bad_irq(unsigned int irq, struct irq_desc *desc)
31{ 31{
32 print_irq_desc(irq, desc); 32 print_irq_desc(irq, desc);
33 kstat_this_cpu.irqs[irq]++; 33 kstat_this_cpu.irqs[irq]++;
@@ -115,7 +115,7 @@ struct irq_chip dummy_irq_chip = {
115/* 115/*
116 * Special, empty irq handler: 116 * Special, empty irq handler:
117 */ 117 */
118irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs) 118irqreturn_t no_action(int cpl, void *dev_id)
119{ 119{
120 return IRQ_NONE; 120 return IRQ_NONE;
121} 121}
@@ -123,13 +123,11 @@ irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs)
123/** 123/**
124 * handle_IRQ_event - irq action chain handler 124 * handle_IRQ_event - irq action chain handler
125 * @irq: the interrupt number 125 * @irq: the interrupt number
126 * @regs: pointer to a register structure
127 * @action: the interrupt action chain for this irq 126 * @action: the interrupt action chain for this irq
128 * 127 *
129 * Handles the action chain of an irq event 128 * Handles the action chain of an irq event
130 */ 129 */
131irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs, 130irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action)
132 struct irqaction *action)
133{ 131{
134 irqreturn_t ret, retval = IRQ_NONE; 132 irqreturn_t ret, retval = IRQ_NONE;
135 unsigned int status = 0; 133 unsigned int status = 0;
@@ -140,7 +138,7 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
140 local_irq_enable_in_hardirq(); 138 local_irq_enable_in_hardirq();
141 139
142 do { 140 do {
143 ret = action->handler(irq, action->dev_id, regs); 141 ret = action->handler(irq, action->dev_id);
144 if (ret == IRQ_HANDLED) 142 if (ret == IRQ_HANDLED)
145 status |= action->flags; 143 status |= action->flags;
146 retval |= ret; 144 retval |= ret;
@@ -158,7 +156,6 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
158/** 156/**
159 * __do_IRQ - original all in one highlevel IRQ handler 157 * __do_IRQ - original all in one highlevel IRQ handler
160 * @irq: the interrupt number 158 * @irq: the interrupt number
161 * @regs: pointer to a register structure
162 * 159 *
163 * __do_IRQ handles all normal device IRQ's (the special 160 * __do_IRQ handles all normal device IRQ's (the special
164 * SMP cross-CPU interrupts have their own specific 161 * SMP cross-CPU interrupts have their own specific
@@ -167,7 +164,7 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
167 * This is the original x86 implementation which is used for every 164 * This is the original x86 implementation which is used for every
168 * interrupt type. 165 * interrupt type.
169 */ 166 */
170fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs) 167fastcall unsigned int __do_IRQ(unsigned int irq)
171{ 168{
172 struct irq_desc *desc = irq_desc + irq; 169 struct irq_desc *desc = irq_desc + irq;
173 struct irqaction *action; 170 struct irqaction *action;
@@ -182,7 +179,7 @@ fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs)
182 */ 179 */
183 if (desc->chip->ack) 180 if (desc->chip->ack)
184 desc->chip->ack(irq); 181 desc->chip->ack(irq);
185 action_ret = handle_IRQ_event(irq, regs, desc->action); 182 action_ret = handle_IRQ_event(irq, desc->action);
186 desc->chip->end(irq); 183 desc->chip->end(irq);
187 return 1; 184 return 1;
188 } 185 }
@@ -233,11 +230,11 @@ fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs)
233 230
234 spin_unlock(&desc->lock); 231 spin_unlock(&desc->lock);
235 232
236 action_ret = handle_IRQ_event(irq, regs, action); 233 action_ret = handle_IRQ_event(irq, action);
237 234
238 spin_lock(&desc->lock); 235 spin_lock(&desc->lock);
239 if (!noirqdebug) 236 if (!noirqdebug)
240 note_interrupt(irq, desc, action_ret, regs); 237 note_interrupt(irq, desc, action_ret);
241 if (likely(!(desc->status & IRQ_PENDING))) 238 if (likely(!(desc->status & IRQ_PENDING)))
242 break; 239 break;
243 desc->status &= ~IRQ_PENDING; 240 desc->status &= ~IRQ_PENDING;
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 92be519eff26..6879202afe9a 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -427,8 +427,7 @@ EXPORT_SYMBOL(free_irq);
427 * IRQF_SAMPLE_RANDOM The interrupt can be used for entropy 427 * IRQF_SAMPLE_RANDOM The interrupt can be used for entropy
428 * 428 *
429 */ 429 */
430int request_irq(unsigned int irq, 430int request_irq(unsigned int irq, irq_handler_t handler,
431 irqreturn_t (*handler)(int, void *, struct pt_regs *),
432 unsigned long irqflags, const char *devname, void *dev_id) 431 unsigned long irqflags, const char *devname, void *dev_id)
433{ 432{
434 struct irqaction *action; 433 struct irqaction *action;
@@ -475,4 +474,3 @@ int request_irq(unsigned int irq,
475 return retval; 474 return retval;
476} 475}
477EXPORT_SYMBOL(request_irq); 476EXPORT_SYMBOL(request_irq);
478
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c
index 35f10f7ff94a..5bfeaed7e487 100644
--- a/kernel/irq/resend.c
+++ b/kernel/irq/resend.c
@@ -38,7 +38,7 @@ static void resend_irqs(unsigned long arg)
38 clear_bit(irq, irqs_resend); 38 clear_bit(irq, irqs_resend);
39 desc = irq_desc + irq; 39 desc = irq_desc + irq;
40 local_irq_disable(); 40 local_irq_disable();
41 desc->handle_irq(irq, desc, NULL); 41 desc->handle_irq(irq, desc);
42 local_irq_enable(); 42 local_irq_enable();
43 } 43 }
44} 44}
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
index 417e98092cf2..543ea2e5ad93 100644
--- a/kernel/irq/spurious.c
+++ b/kernel/irq/spurious.c
@@ -16,7 +16,7 @@ static int irqfixup __read_mostly;
16/* 16/*
17 * Recovery handler for misrouted interrupts. 17 * Recovery handler for misrouted interrupts.
18 */ 18 */
19static int misrouted_irq(int irq, struct pt_regs *regs) 19static int misrouted_irq(int irq)
20{ 20{
21 int i; 21 int i;
22 int ok = 0; 22 int ok = 0;
@@ -49,7 +49,7 @@ static int misrouted_irq(int irq, struct pt_regs *regs)
49 while (action) { 49 while (action) {
50 /* Only shared IRQ handlers are safe to call */ 50 /* Only shared IRQ handlers are safe to call */
51 if (action->flags & IRQF_SHARED) { 51 if (action->flags & IRQF_SHARED) {
52 if (action->handler(i, action->dev_id, regs) == 52 if (action->handler(i, action->dev_id) ==
53 IRQ_HANDLED) 53 IRQ_HANDLED)
54 ok = 1; 54 ok = 1;
55 } 55 }
@@ -70,7 +70,7 @@ static int misrouted_irq(int irq, struct pt_regs *regs)
70 */ 70 */
71 work = 1; 71 work = 1;
72 spin_unlock(&desc->lock); 72 spin_unlock(&desc->lock);
73 handle_IRQ_event(i, regs, action); 73 handle_IRQ_event(i, action);
74 spin_lock(&desc->lock); 74 spin_lock(&desc->lock);
75 desc->status &= ~IRQ_PENDING; 75 desc->status &= ~IRQ_PENDING;
76 } 76 }
@@ -136,7 +136,7 @@ report_bad_irq(unsigned int irq, struct irq_desc *desc, irqreturn_t action_ret)
136} 136}
137 137
138void note_interrupt(unsigned int irq, struct irq_desc *desc, 138void note_interrupt(unsigned int irq, struct irq_desc *desc,
139 irqreturn_t action_ret, struct pt_regs *regs) 139 irqreturn_t action_ret)
140{ 140{
141 if (unlikely(action_ret != IRQ_HANDLED)) { 141 if (unlikely(action_ret != IRQ_HANDLED)) {
142 desc->irqs_unhandled++; 142 desc->irqs_unhandled++;
@@ -147,7 +147,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc,
147 if (unlikely(irqfixup)) { 147 if (unlikely(irqfixup)) {
148 /* Don't punish working computers */ 148 /* Don't punish working computers */
149 if ((irqfixup == 2 && irq == 0) || action_ret == IRQ_NONE) { 149 if ((irqfixup == 2 && irq == 0) || action_ret == IRQ_NONE) {
150 int ok = misrouted_irq(irq, regs); 150 int ok = misrouted_irq(irq);
151 if (action_ret == IRQ_NONE) 151 if (action_ret == IRQ_NONE)
152 desc->irqs_unhandled -= ok; 152 desc->irqs_unhandled -= ok;
153 } 153 }
diff --git a/kernel/power/poweroff.c b/kernel/power/poweroff.c
index 7a4144ba3afd..f1f900ac3164 100644
--- a/kernel/power/poweroff.c
+++ b/kernel/power/poweroff.c
@@ -23,8 +23,7 @@ static void do_poweroff(void *dummy)
23 23
24static DECLARE_WORK(poweroff_work, do_poweroff, NULL); 24static DECLARE_WORK(poweroff_work, do_poweroff, NULL);
25 25
26static void handle_poweroff(int key, struct pt_regs *pt_regs, 26static void handle_poweroff(int key, struct tty_struct *tty)
27 struct tty_struct *tty)
28{ 27{
29 schedule_work(&poweroff_work); 28 schedule_work(&poweroff_work);
30} 29}
diff --git a/kernel/power/user.c b/kernel/power/user.c
index 72825c853cd7..93b5dd283dea 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -145,10 +145,10 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
145 error = freeze_processes(); 145 error = freeze_processes();
146 if (error) { 146 if (error) {
147 thaw_processes(); 147 thaw_processes();
148 enable_nonboot_cpus();
148 error = -EBUSY; 149 error = -EBUSY;
149 } 150 }
150 } 151 }
151 enable_nonboot_cpus();
152 up(&pm_sem); 152 up(&pm_sem);
153 if (!error) 153 if (!error)
154 data->frozen = 1; 154 data->frozen = 1;
diff --git a/kernel/profile.c b/kernel/profile.c
index fb660c7d35ba..857300a2afec 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -25,6 +25,7 @@
25#include <linux/mutex.h> 25#include <linux/mutex.h>
26#include <asm/sections.h> 26#include <asm/sections.h>
27#include <asm/semaphore.h> 27#include <asm/semaphore.h>
28#include <asm/irq_regs.h>
28 29
29struct profile_hit { 30struct profile_hit {
30 u32 pc, hits; 31 u32 pc, hits;
@@ -366,8 +367,10 @@ void profile_hit(int type, void *__pc)
366} 367}
367#endif /* !CONFIG_SMP */ 368#endif /* !CONFIG_SMP */
368 369
369void profile_tick(int type, struct pt_regs *regs) 370void profile_tick(int type)
370{ 371{
372 struct pt_regs *regs = get_irq_regs();
373
371 if (type == CPU_PROFILING && timer_hook) 374 if (type == CPU_PROFILING && timer_hook)
372 timer_hook(regs); 375 timer_hook(regs);
373 if (!user_mode(regs) && cpu_isset(smp_processor_id(), prof_cpu_mask)) 376 if (!user_mode(regs) && cpu_isset(smp_processor_id(), prof_cpu_mask))
diff --git a/kernel/relay.c b/kernel/relay.c
index 1d63ecddfa70..f04bbdb56ac2 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -887,7 +887,7 @@ static int subbuf_read_actor(size_t read_start,
887 887
888 from = buf->start + read_start; 888 from = buf->start + read_start;
889 ret = avail; 889 ret = avail;
890 if (copy_to_user(desc->arg.data, from, avail)) { 890 if (copy_to_user(desc->arg.buf, from, avail)) {
891 desc->error = -EFAULT; 891 desc->error = -EFAULT;
892 ret = 0; 892 ret = 0;
893 } 893 }
@@ -946,24 +946,17 @@ typedef int (*subbuf_actor_t) (size_t read_start,
946 */ 946 */
947static inline ssize_t relay_file_read_subbufs(struct file *filp, 947static inline ssize_t relay_file_read_subbufs(struct file *filp,
948 loff_t *ppos, 948 loff_t *ppos,
949 size_t count,
950 subbuf_actor_t subbuf_actor, 949 subbuf_actor_t subbuf_actor,
951 read_actor_t actor, 950 read_actor_t actor,
952 void *target) 951 read_descriptor_t *desc)
953{ 952{
954 struct rchan_buf *buf = filp->private_data; 953 struct rchan_buf *buf = filp->private_data;
955 size_t read_start, avail; 954 size_t read_start, avail;
956 read_descriptor_t desc;
957 int ret; 955 int ret;
958 956
959 if (!count) 957 if (!desc->count)
960 return 0; 958 return 0;
961 959
962 desc.written = 0;
963 desc.count = count;
964 desc.arg.data = target;
965 desc.error = 0;
966
967 mutex_lock(&filp->f_dentry->d_inode->i_mutex); 960 mutex_lock(&filp->f_dentry->d_inode->i_mutex);
968 do { 961 do {
969 if (!relay_file_read_avail(buf, *ppos)) 962 if (!relay_file_read_avail(buf, *ppos))
@@ -974,19 +967,19 @@ static inline ssize_t relay_file_read_subbufs(struct file *filp,
974 if (!avail) 967 if (!avail)
975 break; 968 break;
976 969
977 avail = min(desc.count, avail); 970 avail = min(desc->count, avail);
978 ret = subbuf_actor(read_start, buf, avail, &desc, actor); 971 ret = subbuf_actor(read_start, buf, avail, desc, actor);
979 if (desc.error < 0) 972 if (desc->error < 0)
980 break; 973 break;
981 974
982 if (ret) { 975 if (ret) {
983 relay_file_read_consume(buf, read_start, ret); 976 relay_file_read_consume(buf, read_start, ret);
984 *ppos = relay_file_read_end_pos(buf, read_start, ret); 977 *ppos = relay_file_read_end_pos(buf, read_start, ret);
985 } 978 }
986 } while (desc.count && ret); 979 } while (desc->count && ret);
987 mutex_unlock(&filp->f_dentry->d_inode->i_mutex); 980 mutex_unlock(&filp->f_dentry->d_inode->i_mutex);
988 981
989 return desc.written; 982 return desc->written;
990} 983}
991 984
992static ssize_t relay_file_read(struct file *filp, 985static ssize_t relay_file_read(struct file *filp,
@@ -994,8 +987,13 @@ static ssize_t relay_file_read(struct file *filp,
994 size_t count, 987 size_t count,
995 loff_t *ppos) 988 loff_t *ppos)
996{ 989{
997 return relay_file_read_subbufs(filp, ppos, count, subbuf_read_actor, 990 read_descriptor_t desc;
998 NULL, buffer); 991 desc.written = 0;
992 desc.count = count;
993 desc.arg.buf = buffer;
994 desc.error = 0;
995 return relay_file_read_subbufs(filp, ppos, subbuf_read_actor,
996 NULL, &desc);
999} 997}
1000 998
1001static ssize_t relay_file_sendfile(struct file *filp, 999static ssize_t relay_file_sendfile(struct file *filp,
@@ -1004,8 +1002,13 @@ static ssize_t relay_file_sendfile(struct file *filp,
1004 read_actor_t actor, 1002 read_actor_t actor,
1005 void *target) 1003 void *target)
1006{ 1004{
1007 return relay_file_read_subbufs(filp, ppos, count, subbuf_send_actor, 1005 read_descriptor_t desc;
1008 actor, target); 1006 desc.written = 0;
1007 desc.count = count;
1008 desc.arg.data = target;
1009 desc.error = 0;
1010 return relay_file_read_subbufs(filp, ppos, subbuf_send_actor,
1011 actor, &desc);
1009} 1012}
1010 1013
1011struct file_operations relay_file_operations = { 1014struct file_operations relay_file_operations = {
diff --git a/lib/Makefile b/lib/Makefile
index b0361756e22e..8e6662bb9c37 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -5,7 +5,7 @@
5lib-y := ctype.o string.o vsprintf.o cmdline.o \ 5lib-y := ctype.o string.o vsprintf.o cmdline.o \
6 bust_spinlocks.o rbtree.o radix-tree.o dump_stack.o \ 6 bust_spinlocks.o rbtree.o radix-tree.o dump_stack.o \
7 idr.o div64.o int_sqrt.o bitmap.o extable.o prio_tree.o \ 7 idr.o div64.o int_sqrt.o bitmap.o extable.o prio_tree.o \
8 sha1.o 8 sha1.o irq_regs.o
9 9
10lib-$(CONFIG_MMU) += ioremap.o 10lib-$(CONFIG_MMU) += ioremap.o
11lib-$(CONFIG_SMP) += cpumask.o 11lib-$(CONFIG_SMP) += cpumask.o
diff --git a/lib/irq_regs.c b/lib/irq_regs.c
new file mode 100644
index 000000000000..753880a5440c
--- /dev/null
+++ b/lib/irq_regs.c
@@ -0,0 +1,17 @@
1/* saved per-CPU IRQ register pointer
2 *
3 * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11#include <linux/module.h>
12#include <asm/irq_regs.h>
13
14#ifndef ARCH_HAS_OWN_IRQ_REGS
15DEFINE_PER_CPU(struct pt_regs *, __irq_regs);
16EXPORT_PER_CPU_SYMBOL(__irq_regs);
17#endif
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index 637d55608de5..aa9bfd0bdbd1 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -160,13 +160,13 @@ static inline int tag_get(struct radix_tree_node *node, unsigned int tag,
160 160
161static inline void root_tag_set(struct radix_tree_root *root, unsigned int tag) 161static inline void root_tag_set(struct radix_tree_root *root, unsigned int tag)
162{ 162{
163 root->gfp_mask |= (1 << (tag + __GFP_BITS_SHIFT)); 163 root->gfp_mask |= (__force gfp_t)(1 << (tag + __GFP_BITS_SHIFT));
164} 164}
165 165
166 166
167static inline void root_tag_clear(struct radix_tree_root *root, unsigned int tag) 167static inline void root_tag_clear(struct radix_tree_root *root, unsigned int tag)
168{ 168{
169 root->gfp_mask &= ~(1 << (tag + __GFP_BITS_SHIFT)); 169 root->gfp_mask &= (__force gfp_t)~(1 << (tag + __GFP_BITS_SHIFT));
170} 170}
171 171
172static inline void root_tag_clear_all(struct radix_tree_root *root) 172static inline void root_tag_clear_all(struct radix_tree_root *root)
@@ -176,7 +176,7 @@ static inline void root_tag_clear_all(struct radix_tree_root *root)
176 176
177static inline int root_tag_get(struct radix_tree_root *root, unsigned int tag) 177static inline int root_tag_get(struct radix_tree_root *root, unsigned int tag)
178{ 178{
179 return root->gfp_mask & (1 << (tag + __GFP_BITS_SHIFT)); 179 return (__force unsigned)root->gfp_mask & (1 << (tag + __GFP_BITS_SHIFT));
180} 180}
181 181
182/* 182/*
diff --git a/mm/memory.c b/mm/memory.c
index 9cf3f341a28a..b5a4aadd961a 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1086,6 +1086,7 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
1086 default: 1086 default:
1087 BUG(); 1087 BUG();
1088 } 1088 }
1089 cond_resched();
1089 } 1090 }
1090 if (pages) { 1091 if (pages) {
1091 pages[i] = page; 1092 pages[i] = page;
@@ -2169,11 +2170,13 @@ retry:
2169 * after the next truncate_count read. 2170 * after the next truncate_count read.
2170 */ 2171 */
2171 2172
2172 /* no page was available -- either SIGBUS or OOM */ 2173 /* no page was available -- either SIGBUS, OOM or REFAULT */
2173 if (new_page == NOPAGE_SIGBUS) 2174 if (unlikely(new_page == NOPAGE_SIGBUS))
2174 return VM_FAULT_SIGBUS; 2175 return VM_FAULT_SIGBUS;
2175 if (new_page == NOPAGE_OOM) 2176 else if (unlikely(new_page == NOPAGE_OOM))
2176 return VM_FAULT_OOM; 2177 return VM_FAULT_OOM;
2178 else if (unlikely(new_page == NOPAGE_REFAULT))
2179 return VM_FAULT_MINOR;
2177 2180
2178 /* 2181 /*
2179 * Should we do an early C-O-W break? 2182 * Should we do an early C-O-W break?
diff --git a/mm/slab.c b/mm/slab.c
index e9a63b5a7fb9..266449d604bd 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1106,15 +1106,18 @@ static inline int cache_free_alien(struct kmem_cache *cachep, void *objp)
1106 int nodeid = slabp->nodeid; 1106 int nodeid = slabp->nodeid;
1107 struct kmem_list3 *l3; 1107 struct kmem_list3 *l3;
1108 struct array_cache *alien = NULL; 1108 struct array_cache *alien = NULL;
1109 int node;
1110
1111 node = numa_node_id();
1109 1112
1110 /* 1113 /*
1111 * Make sure we are not freeing a object from another node to the array 1114 * Make sure we are not freeing a object from another node to the array
1112 * cache on this cpu. 1115 * cache on this cpu.
1113 */ 1116 */
1114 if (likely(slabp->nodeid == numa_node_id())) 1117 if (likely(slabp->nodeid == node))
1115 return 0; 1118 return 0;
1116 1119
1117 l3 = cachep->nodelists[numa_node_id()]; 1120 l3 = cachep->nodelists[node];
1118 STATS_INC_NODEFREES(cachep); 1121 STATS_INC_NODEFREES(cachep);
1119 if (l3->alien && l3->alien[nodeid]) { 1122 if (l3->alien && l3->alien[nodeid]) {
1120 alien = l3->alien[nodeid]; 1123 alien = l3->alien[nodeid];
@@ -1325,7 +1328,6 @@ static void init_list(struct kmem_cache *cachep, struct kmem_list3 *list,
1325{ 1328{
1326 struct kmem_list3 *ptr; 1329 struct kmem_list3 *ptr;
1327 1330
1328 BUG_ON(cachep->nodelists[nodeid] != list);
1329 ptr = kmalloc_node(sizeof(struct kmem_list3), GFP_KERNEL, nodeid); 1331 ptr = kmalloc_node(sizeof(struct kmem_list3), GFP_KERNEL, nodeid);
1330 BUG_ON(!ptr); 1332 BUG_ON(!ptr);
1331 1333
@@ -1352,6 +1354,7 @@ void __init kmem_cache_init(void)
1352 struct cache_names *names; 1354 struct cache_names *names;
1353 int i; 1355 int i;
1354 int order; 1356 int order;
1357 int node;
1355 1358
1356 for (i = 0; i < NUM_INIT_LISTS; i++) { 1359 for (i = 0; i < NUM_INIT_LISTS; i++) {
1357 kmem_list3_init(&initkmem_list3[i]); 1360 kmem_list3_init(&initkmem_list3[i]);
@@ -1386,12 +1389,14 @@ void __init kmem_cache_init(void)
1386 * 6) Resize the head arrays of the kmalloc caches to their final sizes. 1389 * 6) Resize the head arrays of the kmalloc caches to their final sizes.
1387 */ 1390 */
1388 1391
1392 node = numa_node_id();
1393
1389 /* 1) create the cache_cache */ 1394 /* 1) create the cache_cache */
1390 INIT_LIST_HEAD(&cache_chain); 1395 INIT_LIST_HEAD(&cache_chain);
1391 list_add(&cache_cache.next, &cache_chain); 1396 list_add(&cache_cache.next, &cache_chain);
1392 cache_cache.colour_off = cache_line_size(); 1397 cache_cache.colour_off = cache_line_size();
1393 cache_cache.array[smp_processor_id()] = &initarray_cache.cache; 1398 cache_cache.array[smp_processor_id()] = &initarray_cache.cache;
1394 cache_cache.nodelists[numa_node_id()] = &initkmem_list3[CACHE_CACHE]; 1399 cache_cache.nodelists[node] = &initkmem_list3[CACHE_CACHE];
1395 1400
1396 cache_cache.buffer_size = ALIGN(cache_cache.buffer_size, 1401 cache_cache.buffer_size = ALIGN(cache_cache.buffer_size,
1397 cache_line_size()); 1402 cache_line_size());
@@ -1496,19 +1501,18 @@ void __init kmem_cache_init(void)
1496 } 1501 }
1497 /* 5) Replace the bootstrap kmem_list3's */ 1502 /* 5) Replace the bootstrap kmem_list3's */
1498 { 1503 {
1499 int node; 1504 int nid;
1505
1500 /* Replace the static kmem_list3 structures for the boot cpu */ 1506 /* Replace the static kmem_list3 structures for the boot cpu */
1501 init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], 1507 init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], node);
1502 numa_node_id());
1503 1508
1504 for_each_online_node(node) { 1509 for_each_online_node(nid) {
1505 init_list(malloc_sizes[INDEX_AC].cs_cachep, 1510 init_list(malloc_sizes[INDEX_AC].cs_cachep,
1506 &initkmem_list3[SIZE_AC + node], node); 1511 &initkmem_list3[SIZE_AC + nid], nid);
1507 1512
1508 if (INDEX_AC != INDEX_L3) { 1513 if (INDEX_AC != INDEX_L3) {
1509 init_list(malloc_sizes[INDEX_L3].cs_cachep, 1514 init_list(malloc_sizes[INDEX_L3].cs_cachep,
1510 &initkmem_list3[SIZE_L3 + node], 1515 &initkmem_list3[SIZE_L3 + nid], nid);
1511 node);
1512 } 1516 }
1513 } 1517 }
1514 } 1518 }
@@ -2918,6 +2922,9 @@ static void *cache_alloc_refill(struct kmem_cache *cachep, gfp_t flags)
2918 int batchcount; 2922 int batchcount;
2919 struct kmem_list3 *l3; 2923 struct kmem_list3 *l3;
2920 struct array_cache *ac; 2924 struct array_cache *ac;
2925 int node;
2926
2927 node = numa_node_id();
2921 2928
2922 check_irq_off(); 2929 check_irq_off();
2923 ac = cpu_cache_get(cachep); 2930 ac = cpu_cache_get(cachep);
@@ -2931,7 +2938,7 @@ retry:
2931 */ 2938 */
2932 batchcount = BATCHREFILL_LIMIT; 2939 batchcount = BATCHREFILL_LIMIT;
2933 } 2940 }
2934 l3 = cachep->nodelists[numa_node_id()]; 2941 l3 = cachep->nodelists[node];
2935 2942
2936 BUG_ON(ac->avail > 0 || !l3); 2943 BUG_ON(ac->avail > 0 || !l3);
2937 spin_lock(&l3->list_lock); 2944 spin_lock(&l3->list_lock);
@@ -2961,7 +2968,7 @@ retry:
2961 STATS_SET_HIGH(cachep); 2968 STATS_SET_HIGH(cachep);
2962 2969
2963 ac->entry[ac->avail++] = slab_get_obj(cachep, slabp, 2970 ac->entry[ac->avail++] = slab_get_obj(cachep, slabp,
2964 numa_node_id()); 2971 node);
2965 } 2972 }
2966 check_slabp(cachep, slabp); 2973 check_slabp(cachep, slabp);
2967 2974
@@ -2980,7 +2987,7 @@ alloc_done:
2980 2987
2981 if (unlikely(!ac->avail)) { 2988 if (unlikely(!ac->avail)) {
2982 int x; 2989 int x;
2983 x = cache_grow(cachep, flags, numa_node_id()); 2990 x = cache_grow(cachep, flags, node);
2984 2991
2985 /* cache_grow can reenable interrupts, then ac could change. */ 2992 /* cache_grow can reenable interrupts, then ac could change. */
2986 ac = cpu_cache_get(cachep); 2993 ac = cpu_cache_get(cachep);
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index da9cfe927158..60a508eb1945 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -62,7 +62,7 @@ int vlan_dev_rebuild_header(struct sk_buff *skb)
62 default: 62 default:
63 printk(VLAN_DBG 63 printk(VLAN_DBG
64 "%s: unable to resolve type %X addresses.\n", 64 "%s: unable to resolve type %X addresses.\n",
65 dev->name, (int)veth->h_vlan_encapsulated_proto); 65 dev->name, ntohs(veth->h_vlan_encapsulated_proto));
66 66
67 memcpy(veth->h_source, dev->dev_addr, ETH_ALEN); 67 memcpy(veth->h_source, dev->dev_addr, ETH_ALEN);
68 break; 68 break;
diff --git a/net/ipv4/ipvs/ip_vs_ftp.c b/net/ipv4/ipvs/ip_vs_ftp.c
index e433cb0ff894..6d398f10aa91 100644
--- a/net/ipv4/ipvs/ip_vs_ftp.c
+++ b/net/ipv4/ipvs/ip_vs_ftp.c
@@ -274,7 +274,7 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp,
274 while (data <= data_limit - 6) { 274 while (data <= data_limit - 6) {
275 if (strnicmp(data, "PASV\r\n", 6) == 0) { 275 if (strnicmp(data, "PASV\r\n", 6) == 0) {
276 /* Passive mode on */ 276 /* Passive mode on */
277 IP_VS_DBG(7, "got PASV at %zd of %zd\n", 277 IP_VS_DBG(7, "got PASV at %td of %td\n",
278 data - data_start, 278 data - data_start,
279 data_limit - data_start); 279 data_limit - data_start);
280 cp->app_data = &ip_vs_ftp_pasv; 280 cp->app_data = &ip_vs_ftp_pasv;
diff --git a/net/irda/irias_object.c b/net/irda/irias_object.c
index a154b1d71c0f..56292ab7d652 100644
--- a/net/irda/irias_object.c
+++ b/net/irda/irias_object.c
@@ -43,7 +43,7 @@ struct ias_value irias_missing = { IAS_MISSING, 0, 0, 0, {0}};
43 * 43 *
44 * Faster, check boundary... Jean II 44 * Faster, check boundary... Jean II
45 */ 45 */
46static char *strndup(char *str, int max) 46static char *strndup(char *str, size_t max)
47{ 47{
48 char *new_str; 48 char *new_str;
49 int len; 49 int len;
diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
index 447d9aef4605..1f0f079ffa65 100644
--- a/net/sunrpc/auth_gss/svcauth_gss.c
+++ b/net/sunrpc/auth_gss/svcauth_gss.c
@@ -1146,10 +1146,11 @@ out:
1146 return ret; 1146 return ret;
1147} 1147}
1148 1148
1149u32 * 1149static __be32 *
1150svcauth_gss_prepare_to_wrap(struct xdr_buf *resbuf, struct gss_svc_data *gsd) 1150svcauth_gss_prepare_to_wrap(struct xdr_buf *resbuf, struct gss_svc_data *gsd)
1151{ 1151{
1152 u32 *p, verf_len; 1152 __be32 *p;
1153 u32 verf_len;
1153 1154
1154 p = gsd->verf_start; 1155 p = gsd->verf_start;
1155 gsd->verf_start = NULL; 1156 gsd->verf_start = NULL;
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index c2c8bb20d07f..2807fa0eab40 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -282,7 +282,10 @@ __svc_create(struct svc_program *prog, unsigned int bufsize, int npools,
282 serv->sv_program = prog; 282 serv->sv_program = prog;
283 serv->sv_nrthreads = 1; 283 serv->sv_nrthreads = 1;
284 serv->sv_stats = prog->pg_stats; 284 serv->sv_stats = prog->pg_stats;
285 serv->sv_bufsz = bufsize? bufsize : 4096; 285 if (bufsize > RPCSVC_MAXPAYLOAD)
286 bufsize = RPCSVC_MAXPAYLOAD;
287 serv->sv_max_payload = bufsize? bufsize : 4096;
288 serv->sv_max_mesg = roundup(serv->sv_max_payload + PAGE_SIZE, PAGE_SIZE);
286 serv->sv_shutdown = shutdown; 289 serv->sv_shutdown = shutdown;
287 xdrsize = 0; 290 xdrsize = 0;
288 while (prog) { 291 while (prog) {
@@ -414,9 +417,9 @@ svc_init_buffer(struct svc_rqst *rqstp, unsigned int size)
414 int pages; 417 int pages;
415 int arghi; 418 int arghi;
416 419
417 if (size > RPCSVC_MAXPAYLOAD) 420 pages = size / PAGE_SIZE + 1; /* extra page as we hold both request and reply.
418 size = RPCSVC_MAXPAYLOAD; 421 * We assume one is at most one page
419 pages = 2 + (size+ PAGE_SIZE -1) / PAGE_SIZE; 422 */
420 arghi = 0; 423 arghi = 0;
421 BUG_ON(pages > RPCSVC_MAXPAGES); 424 BUG_ON(pages > RPCSVC_MAXPAGES);
422 while (pages) { 425 while (pages) {
@@ -463,7 +466,7 @@ __svc_create_thread(svc_thread_fn func, struct svc_serv *serv,
463 466
464 if (!(rqstp->rq_argp = kmalloc(serv->sv_xdrsize, GFP_KERNEL)) 467 if (!(rqstp->rq_argp = kmalloc(serv->sv_xdrsize, GFP_KERNEL))
465 || !(rqstp->rq_resp = kmalloc(serv->sv_xdrsize, GFP_KERNEL)) 468 || !(rqstp->rq_resp = kmalloc(serv->sv_xdrsize, GFP_KERNEL))
466 || !svc_init_buffer(rqstp, serv->sv_bufsz)) 469 || !svc_init_buffer(rqstp, serv->sv_max_mesg))
467 goto out_thread; 470 goto out_thread;
468 471
469 serv->sv_nrthreads++; 472 serv->sv_nrthreads++;
@@ -938,8 +941,8 @@ u32 svc_max_payload(const struct svc_rqst *rqstp)
938 941
939 if (rqstp->rq_sock->sk_sock->type == SOCK_DGRAM) 942 if (rqstp->rq_sock->sk_sock->type == SOCK_DGRAM)
940 max = RPCSVC_MAXPAYLOAD_UDP; 943 max = RPCSVC_MAXPAYLOAD_UDP;
941 if (rqstp->rq_server->sv_bufsz < max) 944 if (rqstp->rq_server->sv_max_payload < max)
942 max = rqstp->rq_server->sv_bufsz; 945 max = rqstp->rq_server->sv_max_payload;
943 return max; 946 return max;
944} 947}
945EXPORT_SYMBOL_GPL(svc_max_payload); 948EXPORT_SYMBOL_GPL(svc_max_payload);
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index b39e7e2b648f..61e307cca13d 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -192,13 +192,13 @@ svc_sock_enqueue(struct svc_sock *svsk)
192 svsk->sk_pool = pool; 192 svsk->sk_pool = pool;
193 193
194 set_bit(SOCK_NOSPACE, &svsk->sk_sock->flags); 194 set_bit(SOCK_NOSPACE, &svsk->sk_sock->flags);
195 if (((atomic_read(&svsk->sk_reserved) + serv->sv_bufsz)*2 195 if (((atomic_read(&svsk->sk_reserved) + serv->sv_max_mesg)*2
196 > svc_sock_wspace(svsk)) 196 > svc_sock_wspace(svsk))
197 && !test_bit(SK_CLOSE, &svsk->sk_flags) 197 && !test_bit(SK_CLOSE, &svsk->sk_flags)
198 && !test_bit(SK_CONN, &svsk->sk_flags)) { 198 && !test_bit(SK_CONN, &svsk->sk_flags)) {
199 /* Don't enqueue while not enough space for reply */ 199 /* Don't enqueue while not enough space for reply */
200 dprintk("svc: socket %p no space, %d*2 > %ld, not enqueued\n", 200 dprintk("svc: socket %p no space, %d*2 > %ld, not enqueued\n",
201 svsk->sk_sk, atomic_read(&svsk->sk_reserved)+serv->sv_bufsz, 201 svsk->sk_sk, atomic_read(&svsk->sk_reserved)+serv->sv_max_mesg,
202 svc_sock_wspace(svsk)); 202 svc_sock_wspace(svsk));
203 svsk->sk_pool = NULL; 203 svsk->sk_pool = NULL;
204 clear_bit(SK_BUSY, &svsk->sk_flags); 204 clear_bit(SK_BUSY, &svsk->sk_flags);
@@ -220,7 +220,7 @@ svc_sock_enqueue(struct svc_sock *svsk)
220 rqstp, rqstp->rq_sock); 220 rqstp, rqstp->rq_sock);
221 rqstp->rq_sock = svsk; 221 rqstp->rq_sock = svsk;
222 atomic_inc(&svsk->sk_inuse); 222 atomic_inc(&svsk->sk_inuse);
223 rqstp->rq_reserved = serv->sv_bufsz; 223 rqstp->rq_reserved = serv->sv_max_mesg;
224 atomic_add(rqstp->rq_reserved, &svsk->sk_reserved); 224 atomic_add(rqstp->rq_reserved, &svsk->sk_reserved);
225 BUG_ON(svsk->sk_pool != pool); 225 BUG_ON(svsk->sk_pool != pool);
226 wake_up(&rqstp->rq_wait); 226 wake_up(&rqstp->rq_wait);
@@ -639,8 +639,8 @@ svc_udp_recvfrom(struct svc_rqst *rqstp)
639 * which will access the socket. 639 * which will access the socket.
640 */ 640 */
641 svc_sock_setbufsize(svsk->sk_sock, 641 svc_sock_setbufsize(svsk->sk_sock,
642 (serv->sv_nrthreads+3) * serv->sv_bufsz, 642 (serv->sv_nrthreads+3) * serv->sv_max_mesg,
643 (serv->sv_nrthreads+3) * serv->sv_bufsz); 643 (serv->sv_nrthreads+3) * serv->sv_max_mesg);
644 644
645 if ((rqstp->rq_deferred = svc_deferred_dequeue(svsk))) { 645 if ((rqstp->rq_deferred = svc_deferred_dequeue(svsk))) {
646 svc_sock_received(svsk); 646 svc_sock_received(svsk);
@@ -749,8 +749,8 @@ svc_udp_init(struct svc_sock *svsk)
749 * svc_udp_recvfrom will re-adjust if necessary 749 * svc_udp_recvfrom will re-adjust if necessary
750 */ 750 */
751 svc_sock_setbufsize(svsk->sk_sock, 751 svc_sock_setbufsize(svsk->sk_sock,
752 3 * svsk->sk_server->sv_bufsz, 752 3 * svsk->sk_server->sv_max_mesg,
753 3 * svsk->sk_server->sv_bufsz); 753 3 * svsk->sk_server->sv_max_mesg);
754 754
755 set_bit(SK_DATA, &svsk->sk_flags); /* might have come in before data_ready set up */ 755 set_bit(SK_DATA, &svsk->sk_flags); /* might have come in before data_ready set up */
756 set_bit(SK_CHNGBUF, &svsk->sk_flags); 756 set_bit(SK_CHNGBUF, &svsk->sk_flags);
@@ -993,8 +993,8 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp)
993 * as soon a a complete request arrives. 993 * as soon a a complete request arrives.
994 */ 994 */
995 svc_sock_setbufsize(svsk->sk_sock, 995 svc_sock_setbufsize(svsk->sk_sock,
996 (serv->sv_nrthreads+3) * serv->sv_bufsz, 996 (serv->sv_nrthreads+3) * serv->sv_max_mesg,
997 3 * serv->sv_bufsz); 997 3 * serv->sv_max_mesg);
998 998
999 clear_bit(SK_DATA, &svsk->sk_flags); 999 clear_bit(SK_DATA, &svsk->sk_flags);
1000 1000
@@ -1032,7 +1032,7 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp)
1032 } 1032 }
1033 svsk->sk_reclen &= 0x7fffffff; 1033 svsk->sk_reclen &= 0x7fffffff;
1034 dprintk("svc: TCP record, %d bytes\n", svsk->sk_reclen); 1034 dprintk("svc: TCP record, %d bytes\n", svsk->sk_reclen);
1035 if (svsk->sk_reclen > serv->sv_bufsz) { 1035 if (svsk->sk_reclen > serv->sv_max_mesg) {
1036 printk(KERN_NOTICE "RPC: bad TCP reclen 0x%08lx (large)\n", 1036 printk(KERN_NOTICE "RPC: bad TCP reclen 0x%08lx (large)\n",
1037 (unsigned long) svsk->sk_reclen); 1037 (unsigned long) svsk->sk_reclen);
1038 goto err_delete; 1038 goto err_delete;
@@ -1171,8 +1171,8 @@ svc_tcp_init(struct svc_sock *svsk)
1171 * svc_tcp_recvfrom will re-adjust if necessary 1171 * svc_tcp_recvfrom will re-adjust if necessary
1172 */ 1172 */
1173 svc_sock_setbufsize(svsk->sk_sock, 1173 svc_sock_setbufsize(svsk->sk_sock,
1174 3 * svsk->sk_server->sv_bufsz, 1174 3 * svsk->sk_server->sv_max_mesg,
1175 3 * svsk->sk_server->sv_bufsz); 1175 3 * svsk->sk_server->sv_max_mesg);
1176 1176
1177 set_bit(SK_CHNGBUF, &svsk->sk_flags); 1177 set_bit(SK_CHNGBUF, &svsk->sk_flags);
1178 set_bit(SK_DATA, &svsk->sk_flags); 1178 set_bit(SK_DATA, &svsk->sk_flags);
@@ -1234,7 +1234,7 @@ svc_recv(struct svc_rqst *rqstp, long timeout)
1234 1234
1235 1235
1236 /* now allocate needed pages. If we get a failure, sleep briefly */ 1236 /* now allocate needed pages. If we get a failure, sleep briefly */
1237 pages = 2 + (serv->sv_bufsz + PAGE_SIZE -1) / PAGE_SIZE; 1237 pages = (serv->sv_max_mesg + PAGE_SIZE) / PAGE_SIZE;
1238 for (i=0; i < pages ; i++) 1238 for (i=0; i < pages ; i++)
1239 while (rqstp->rq_pages[i] == NULL) { 1239 while (rqstp->rq_pages[i] == NULL) {
1240 struct page *p = alloc_page(GFP_KERNEL); 1240 struct page *p = alloc_page(GFP_KERNEL);
@@ -1263,7 +1263,7 @@ svc_recv(struct svc_rqst *rqstp, long timeout)
1263 if ((svsk = svc_sock_dequeue(pool)) != NULL) { 1263 if ((svsk = svc_sock_dequeue(pool)) != NULL) {
1264 rqstp->rq_sock = svsk; 1264 rqstp->rq_sock = svsk;
1265 atomic_inc(&svsk->sk_inuse); 1265 atomic_inc(&svsk->sk_inuse);
1266 rqstp->rq_reserved = serv->sv_bufsz; 1266 rqstp->rq_reserved = serv->sv_max_mesg;
1267 atomic_add(rqstp->rq_reserved, &svsk->sk_reserved); 1267 atomic_add(rqstp->rq_reserved, &svsk->sk_reserved);
1268 } else { 1268 } else {
1269 /* No data pending. Go to sleep */ 1269 /* No data pending. Go to sleep */
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 32d778448a00..acfb852e7c98 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -941,7 +941,7 @@ static int recv_stream(struct kiocb *iocb, struct socket *sock,
941 int sz_to_copy; 941 int sz_to_copy;
942 int sz_copied = 0; 942 int sz_copied = 0;
943 int needed; 943 int needed;
944 char *crs = m->msg_iov->iov_base; 944 char __user *crs = m->msg_iov->iov_base;
945 unsigned char *buf_crs; 945 unsigned char *buf_crs;
946 u32 err; 946 u32 err;
947 int res; 947 int res;
@@ -1496,7 +1496,7 @@ static int setsockopt(struct socket *sock,
1496 return -ENOPROTOOPT; 1496 return -ENOPROTOOPT;
1497 if (ol < sizeof(value)) 1497 if (ol < sizeof(value))
1498 return -EINVAL; 1498 return -EINVAL;
1499 if ((res = get_user(value, (u32 *)ov))) 1499 if ((res = get_user(value, (u32 __user *)ov)))
1500 return res; 1500 return res;
1501 1501
1502 if (down_interruptible(&tsock->sem)) 1502 if (down_interruptible(&tsock->sem))
@@ -1541,7 +1541,7 @@ static int setsockopt(struct socket *sock,
1541 */ 1541 */
1542 1542
1543static int getsockopt(struct socket *sock, 1543static int getsockopt(struct socket *sock,
1544 int lvl, int opt, char __user *ov, int *ol) 1544 int lvl, int opt, char __user *ov, int __user *ol)
1545{ 1545{
1546 struct tipc_sock *tsock = tipc_sk(sock->sk); 1546 struct tipc_sock *tsock = tipc_sk(sock->sk);
1547 int len; 1547 int len;
diff --git a/sound/aoa/core/snd-aoa-gpio-feature.c b/sound/aoa/core/snd-aoa-gpio-feature.c
index 7c26089527f6..40eb47eccf9a 100644
--- a/sound/aoa/core/snd-aoa-gpio-feature.c
+++ b/sound/aoa/core/snd-aoa-gpio-feature.c
@@ -283,9 +283,7 @@ static void ftr_gpio_exit(struct gpio_runtime *rt)
283 mutex_destroy(&rt->line_out_notify.mutex); 283 mutex_destroy(&rt->line_out_notify.mutex);
284} 284}
285 285
286static irqreturn_t ftr_handle_notify_irq(int xx, 286static irqreturn_t ftr_handle_notify_irq(int xx, void *data)
287 void *data,
288 struct pt_regs *regs)
289{ 287{
290 struct gpio_notification *notif = data; 288 struct gpio_notification *notif = data;
291 289
diff --git a/sound/aoa/soundbus/i2sbus/i2sbus-core.c b/sound/aoa/soundbus/i2sbus/i2sbus-core.c
index 23190aa6bc7b..e593a1333fe3 100644
--- a/sound/aoa/soundbus/i2sbus/i2sbus-core.c
+++ b/sound/aoa/soundbus/i2sbus/i2sbus-core.c
@@ -93,7 +93,7 @@ static void i2sbus_release_dev(struct device *dev)
93 kfree(i2sdev); 93 kfree(i2sdev);
94} 94}
95 95
96static irqreturn_t i2sbus_bus_intr(int irq, void *devid, struct pt_regs *regs) 96static irqreturn_t i2sbus_bus_intr(int irq, void *devid)
97{ 97{
98 struct i2sbus_dev *dev = devid; 98 struct i2sbus_dev *dev = devid;
99 u32 intreg; 99 u32 intreg;
@@ -165,8 +165,7 @@ static int i2sbus_add_dev(struct macio_dev *macio,
165 static const char *rnames[] = { "i2sbus: %s (control)", 165 static const char *rnames[] = { "i2sbus: %s (control)",
166 "i2sbus: %s (tx)", 166 "i2sbus: %s (tx)",
167 "i2sbus: %s (rx)" }; 167 "i2sbus: %s (rx)" };
168 static irqreturn_t (*ints[])(int irq, void *devid, 168 static irq_handler_t ints[] = {
169 struct pt_regs *regs) = {
170 i2sbus_bus_intr, 169 i2sbus_bus_intr,
171 i2sbus_tx_intr, 170 i2sbus_tx_intr,
172 i2sbus_rx_intr 171 i2sbus_rx_intr
diff --git a/sound/aoa/soundbus/i2sbus/i2sbus-pcm.c b/sound/aoa/soundbus/i2sbus/i2sbus-pcm.c
index 3049015a04f1..5eff30b10201 100644
--- a/sound/aoa/soundbus/i2sbus/i2sbus-pcm.c
+++ b/sound/aoa/soundbus/i2sbus/i2sbus-pcm.c
@@ -642,13 +642,13 @@ static inline void handle_interrupt(struct i2sbus_dev *i2sdev, int in)
642 spin_unlock(&i2sdev->low_lock); 642 spin_unlock(&i2sdev->low_lock);
643} 643}
644 644
645irqreturn_t i2sbus_tx_intr(int irq, void *devid, struct pt_regs *regs) 645irqreturn_t i2sbus_tx_intr(int irq, void *devid)
646{ 646{
647 handle_interrupt((struct i2sbus_dev *)devid, 0); 647 handle_interrupt((struct i2sbus_dev *)devid, 0);
648 return IRQ_HANDLED; 648 return IRQ_HANDLED;
649} 649}
650 650
651irqreturn_t i2sbus_rx_intr(int irq, void *devid, struct pt_regs * regs) 651irqreturn_t i2sbus_rx_intr(int irq, void *devid)
652{ 652{
653 handle_interrupt((struct i2sbus_dev *)devid, 1); 653 handle_interrupt((struct i2sbus_dev *)devid, 1);
654 return IRQ_HANDLED; 654 return IRQ_HANDLED;
diff --git a/sound/aoa/soundbus/i2sbus/i2sbus.h b/sound/aoa/soundbus/i2sbus/i2sbus.h
index 0c69d209be50..ec20ee615d7f 100644
--- a/sound/aoa/soundbus/i2sbus/i2sbus.h
+++ b/sound/aoa/soundbus/i2sbus/i2sbus.h
@@ -97,9 +97,9 @@ i2sbus_attach_codec(struct soundbus_dev *dev, struct snd_card *card,
97extern void 97extern void
98i2sbus_detach_codec(struct soundbus_dev *dev, void *data); 98i2sbus_detach_codec(struct soundbus_dev *dev, void *data);
99extern irqreturn_t 99extern irqreturn_t
100i2sbus_tx_intr(int irq, void *devid, struct pt_regs *regs); 100i2sbus_tx_intr(int irq, void *devid);
101extern irqreturn_t 101extern irqreturn_t
102i2sbus_rx_intr(int irq, void *devid, struct pt_regs *regs); 102i2sbus_rx_intr(int irq, void *devid);
103 103
104/* control specific functions */ 104/* control specific functions */
105extern int i2sbus_control_init(struct macio_dev* dev, 105extern int i2sbus_control_init(struct macio_dev* dev,
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c
index 8435fdd1c87c..53675cf4de44 100644
--- a/sound/arm/aaci.c
+++ b/sound/arm/aaci.c
@@ -221,7 +221,7 @@ static void aaci_fifo_irq(struct aaci *aaci, u32 mask)
221 } 221 }
222} 222}
223 223
224static irqreturn_t aaci_irq(int irq, void *devid, struct pt_regs *regs) 224static irqreturn_t aaci_irq(int irq, void *devid)
225{ 225{
226 struct aaci *aaci = devid; 226 struct aaci *aaci = devid;
227 u32 mask; 227 u32 mask;
diff --git a/sound/arm/pxa2xx-ac97.c b/sound/arm/pxa2xx-ac97.c
index 599aff8290e8..dede954b2c65 100644
--- a/sound/arm/pxa2xx-ac97.c
+++ b/sound/arm/pxa2xx-ac97.c
@@ -152,7 +152,7 @@ static void pxa2xx_ac97_reset(struct snd_ac97 *ac97)
152 GCR |= GCR_SDONE_IE|GCR_CDONE_IE; 152 GCR |= GCR_SDONE_IE|GCR_CDONE_IE;
153} 153}
154 154
155static irqreturn_t pxa2xx_ac97_irq(int irq, void *dev_id, struct pt_regs *regs) 155static irqreturn_t pxa2xx_ac97_irq(int irq, void *dev_id)
156{ 156{
157 long status; 157 long status;
158 158
diff --git a/sound/arm/pxa2xx-pcm.c b/sound/arm/pxa2xx-pcm.c
index 4938ef10b813..e8cf904b8358 100644
--- a/sound/arm/pxa2xx-pcm.c
+++ b/sound/arm/pxa2xx-pcm.c
@@ -137,7 +137,7 @@ static int pxa2xx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
137 return ret; 137 return ret;
138} 138}
139 139
140static void pxa2xx_pcm_dma_irq(int dma_ch, void *dev_id, struct pt_regs *regs) 140static void pxa2xx_pcm_dma_irq(int dma_ch, void *dev_id)
141{ 141{
142 struct snd_pcm_substream *substream = dev_id; 142 struct snd_pcm_substream *substream = dev_id;
143 struct pxa2xx_runtime_data *rtd = substream->runtime->private_data; 143 struct pxa2xx_runtime_data *rtd = substream->runtime->private_data;
diff --git a/sound/core/hwdep.c b/sound/core/hwdep.c
index 9aa9d94891f0..46b47689362c 100644
--- a/sound/core/hwdep.c
+++ b/sound/core/hwdep.c
@@ -158,6 +158,7 @@ static int snd_hwdep_release(struct inode *inode, struct file * file)
158{ 158{
159 int err = -ENXIO; 159 int err = -ENXIO;
160 struct snd_hwdep *hw = file->private_data; 160 struct snd_hwdep *hw = file->private_data;
161 struct module *mod = hw->card->module;
161 mutex_lock(&hw->open_mutex); 162 mutex_lock(&hw->open_mutex);
162 if (hw->ops.release) { 163 if (hw->ops.release) {
163 err = hw->ops.release(hw, file); 164 err = hw->ops.release(hw, file);
@@ -167,7 +168,7 @@ static int snd_hwdep_release(struct inode *inode, struct file * file)
167 hw->used--; 168 hw->used--;
168 snd_card_file_remove(hw->card, file); 169 snd_card_file_remove(hw->card, file);
169 mutex_unlock(&hw->open_mutex); 170 mutex_unlock(&hw->open_mutex);
170 module_put(hw->card->module); 171 module_put(mod);
171 return err; 172 return err;
172} 173}
173 174
diff --git a/sound/core/hwdep_compat.c b/sound/core/hwdep_compat.c
index 938f77580966..3827c0ceec8f 100644
--- a/sound/core/hwdep_compat.c
+++ b/sound/core/hwdep_compat.c
@@ -33,7 +33,7 @@ struct snd_hwdep_dsp_image32 {
33static int snd_hwdep_dsp_load_compat(struct snd_hwdep *hw, 33static int snd_hwdep_dsp_load_compat(struct snd_hwdep *hw,
34 struct snd_hwdep_dsp_image32 __user *src) 34 struct snd_hwdep_dsp_image32 __user *src)
35{ 35{
36 struct snd_hwdep_dsp_image *dst; 36 struct snd_hwdep_dsp_image __user *dst;
37 compat_caddr_t ptr; 37 compat_caddr_t ptr;
38 u32 val; 38 u32 val;
39 39
diff --git a/sound/core/init.c b/sound/core/init.c
index d7607a25acdf..3058d626a90a 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -33,10 +33,10 @@
33#include <sound/control.h> 33#include <sound/control.h>
34#include <sound/info.h> 34#include <sound/info.h>
35 35
36struct snd_shutdown_f_ops { 36static DEFINE_SPINLOCK(shutdown_lock);
37 struct file_operations f_ops; 37static LIST_HEAD(shutdown_files);
38 struct snd_shutdown_f_ops *next; 38
39}; 39static struct file_operations snd_shutdown_f_ops;
40 40
41static unsigned int snd_cards_lock; /* locked for registering/using */ 41static unsigned int snd_cards_lock; /* locked for registering/using */
42struct snd_card *snd_cards[SNDRV_CARDS]; 42struct snd_card *snd_cards[SNDRV_CARDS];
@@ -198,6 +198,25 @@ static ssize_t snd_disconnect_write(struct file *file, const char __user *buf,
198 return -ENODEV; 198 return -ENODEV;
199} 199}
200 200
201static int snd_disconnect_release(struct inode *inode, struct file *file)
202{
203 struct snd_monitor_file *df = NULL, *_df;
204
205 spin_lock(&shutdown_lock);
206 list_for_each_entry(_df, &shutdown_files, shutdown_list) {
207 if (_df->file == file) {
208 df = _df;
209 break;
210 }
211 }
212 spin_unlock(&shutdown_lock);
213
214 if (likely(df))
215 return df->disconnected_f_op->release(inode, file);
216
217 panic("%s(%p, %p) failed!", __FUNCTION__, inode, file);
218}
219
201static unsigned int snd_disconnect_poll(struct file * file, poll_table * wait) 220static unsigned int snd_disconnect_poll(struct file * file, poll_table * wait)
202{ 221{
203 return POLLERR | POLLNVAL; 222 return POLLERR | POLLNVAL;
@@ -219,6 +238,22 @@ static int snd_disconnect_fasync(int fd, struct file *file, int on)
219 return -ENODEV; 238 return -ENODEV;
220} 239}
221 240
241static struct file_operations snd_shutdown_f_ops =
242{
243 .owner = THIS_MODULE,
244 .llseek = snd_disconnect_llseek,
245 .read = snd_disconnect_read,
246 .write = snd_disconnect_write,
247 .release = snd_disconnect_release,
248 .poll = snd_disconnect_poll,
249 .unlocked_ioctl = snd_disconnect_ioctl,
250#ifdef CONFIG_COMPAT
251 .compat_ioctl = snd_disconnect_ioctl,
252#endif
253 .mmap = snd_disconnect_mmap,
254 .fasync = snd_disconnect_fasync
255};
256
222/** 257/**
223 * snd_card_disconnect - disconnect all APIs from the file-operations (user space) 258 * snd_card_disconnect - disconnect all APIs from the file-operations (user space)
224 * @card: soundcard structure 259 * @card: soundcard structure
@@ -234,9 +269,6 @@ int snd_card_disconnect(struct snd_card *card)
234{ 269{
235 struct snd_monitor_file *mfile; 270 struct snd_monitor_file *mfile;
236 struct file *file; 271 struct file *file;
237 struct snd_shutdown_f_ops *s_f_ops;
238 struct file_operations *f_ops;
239 const struct file_operations *old_f_ops;
240 int err; 272 int err;
241 273
242 spin_lock(&card->files_lock); 274 spin_lock(&card->files_lock);
@@ -261,34 +293,14 @@ int snd_card_disconnect(struct snd_card *card)
261 293
262 /* it's critical part, use endless loop */ 294 /* it's critical part, use endless loop */
263 /* we have no room to fail */ 295 /* we have no room to fail */
264 s_f_ops = kmalloc(sizeof(struct snd_shutdown_f_ops), GFP_ATOMIC); 296 mfile->disconnected_f_op = mfile->file->f_op;
265 if (s_f_ops == NULL)
266 panic("Atomic allocation failed for snd_shutdown_f_ops!");
267
268 f_ops = &s_f_ops->f_ops;
269
270 memset(f_ops, 0, sizeof(*f_ops));
271 f_ops->owner = file->f_op->owner;
272 f_ops->release = file->f_op->release;
273 f_ops->llseek = snd_disconnect_llseek;
274 f_ops->read = snd_disconnect_read;
275 f_ops->write = snd_disconnect_write;
276 f_ops->poll = snd_disconnect_poll;
277 f_ops->unlocked_ioctl = snd_disconnect_ioctl;
278#ifdef CONFIG_COMPAT
279 f_ops->compat_ioctl = snd_disconnect_ioctl;
280#endif
281 f_ops->mmap = snd_disconnect_mmap;
282 f_ops->fasync = snd_disconnect_fasync;
283 297
284 s_f_ops->next = card->s_f_ops; 298 spin_lock(&shutdown_lock);
285 card->s_f_ops = s_f_ops; 299 list_add(&mfile->shutdown_list, &shutdown_files);
286 300 spin_unlock(&shutdown_lock);
287 f_ops = fops_get(f_ops);
288 301
289 old_f_ops = file->f_op; 302 fops_get(&snd_shutdown_f_ops);
290 file->f_op = f_ops; /* must be atomic */ 303 mfile->file->f_op = &snd_shutdown_f_ops;
291 fops_put(old_f_ops);
292 304
293 mfile = mfile->next; 305 mfile = mfile->next;
294 } 306 }
@@ -326,8 +338,6 @@ EXPORT_SYMBOL(snd_card_disconnect);
326 */ 338 */
327static int snd_card_do_free(struct snd_card *card) 339static int snd_card_do_free(struct snd_card *card)
328{ 340{
329 struct snd_shutdown_f_ops *s_f_ops;
330
331#if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE) 341#if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
332 if (snd_mixer_oss_notify_callback) 342 if (snd_mixer_oss_notify_callback)
333 snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_FREE); 343 snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_FREE);
@@ -351,11 +361,6 @@ static int snd_card_do_free(struct snd_card *card)
351 snd_printk(KERN_WARNING "unable to free card info\n"); 361 snd_printk(KERN_WARNING "unable to free card info\n");
352 /* Not fatal error */ 362 /* Not fatal error */
353 } 363 }
354 while (card->s_f_ops) {
355 s_f_ops = card->s_f_ops;
356 card->s_f_ops = s_f_ops->next;
357 kfree(s_f_ops);
358 }
359 kfree(card); 364 kfree(card);
360 return 0; 365 return 0;
361} 366}
@@ -670,6 +675,7 @@ int snd_card_file_add(struct snd_card *card, struct file *file)
670 if (mfile == NULL) 675 if (mfile == NULL)
671 return -ENOMEM; 676 return -ENOMEM;
672 mfile->file = file; 677 mfile->file = file;
678 mfile->disconnected_f_op = NULL;
673 mfile->next = NULL; 679 mfile->next = NULL;
674 spin_lock(&card->files_lock); 680 spin_lock(&card->files_lock);
675 if (card->shutdown) { 681 if (card->shutdown) {
@@ -716,6 +722,12 @@ int snd_card_file_remove(struct snd_card *card, struct file *file)
716 pfile = mfile; 722 pfile = mfile;
717 mfile = mfile->next; 723 mfile = mfile->next;
718 } 724 }
725 if (mfile && mfile->disconnected_f_op) {
726 fops_put(mfile->disconnected_f_op);
727 spin_lock(&shutdown_lock);
728 list_del(&mfile->shutdown_list);
729 spin_unlock(&shutdown_lock);
730 }
719 if (card->files == NULL) 731 if (card->files == NULL)
720 last_close = 1; 732 last_close = 1;
721 spin_unlock(&card->files_lock); 733 spin_unlock(&card->files_lock);
diff --git a/sound/drivers/mpu401/mpu401_uart.c b/sound/drivers/mpu401/mpu401_uart.c
index 4bf07ca9b17d..3daa9fa56c0b 100644
--- a/sound/drivers/mpu401/mpu401_uart.c
+++ b/sound/drivers/mpu401/mpu401_uart.c
@@ -125,12 +125,10 @@ static void _snd_mpu401_uart_interrupt(struct snd_mpu401 *mpu)
125 * snd_mpu401_uart_interrupt - generic MPU401-UART interrupt handler 125 * snd_mpu401_uart_interrupt - generic MPU401-UART interrupt handler
126 * @irq: the irq number 126 * @irq: the irq number
127 * @dev_id: mpu401 instance 127 * @dev_id: mpu401 instance
128 * @regs: the reigster
129 * 128 *
130 * Processes the interrupt for MPU401-UART i/o. 129 * Processes the interrupt for MPU401-UART i/o.
131 */ 130 */
132irqreturn_t snd_mpu401_uart_interrupt(int irq, void *dev_id, 131irqreturn_t snd_mpu401_uart_interrupt(int irq, void *dev_id)
133 struct pt_regs *regs)
134{ 132{
135 struct snd_mpu401 *mpu = dev_id; 133 struct snd_mpu401 *mpu = dev_id;
136 134
@@ -146,12 +144,10 @@ EXPORT_SYMBOL(snd_mpu401_uart_interrupt);
146 * snd_mpu401_uart_interrupt_tx - generic MPU401-UART transmit irq handler 144 * snd_mpu401_uart_interrupt_tx - generic MPU401-UART transmit irq handler
147 * @irq: the irq number 145 * @irq: the irq number
148 * @dev_id: mpu401 instance 146 * @dev_id: mpu401 instance
149 * @regs: the reigster
150 * 147 *
151 * Processes the interrupt for MPU401-UART output. 148 * Processes the interrupt for MPU401-UART output.
152 */ 149 */
153irqreturn_t snd_mpu401_uart_interrupt_tx(int irq, void *dev_id, 150irqreturn_t snd_mpu401_uart_interrupt_tx(int irq, void *dev_id)
154 struct pt_regs *regs)
155{ 151{
156 struct snd_mpu401 *mpu = dev_id; 152 struct snd_mpu401 *mpu = dev_id;
157 153
diff --git a/sound/drivers/mtpav.c b/sound/drivers/mtpav.c
index e064d6c5685b..a9ff391258e7 100644
--- a/sound/drivers/mtpav.c
+++ b/sound/drivers/mtpav.c
@@ -570,7 +570,7 @@ static void snd_mtpav_read_bytes(struct mtpav *mcrd)
570 } while (sbyt & SIGS_BYTE); 570 } while (sbyt & SIGS_BYTE);
571} 571}
572 572
573static irqreturn_t snd_mtpav_irqh(int irq, void *dev_id, struct pt_regs *regs) 573static irqreturn_t snd_mtpav_irqh(int irq, void *dev_id)
574{ 574{
575 struct mtpav *mcard = dev_id; 575 struct mtpav *mcard = dev_id;
576 576
diff --git a/sound/drivers/mts64.c b/sound/drivers/mts64.c
index ab8d4effcf9e..5327c6f841f4 100644
--- a/sound/drivers/mts64.c
+++ b/sound/drivers/mts64.c
@@ -838,7 +838,7 @@ static int __devinit snd_mts64_rawmidi_create(struct snd_card *card)
838/********************************************************************* 838/*********************************************************************
839 * parport stuff 839 * parport stuff
840 *********************************************************************/ 840 *********************************************************************/
841static void snd_mts64_interrupt(int irq, void *private, struct pt_regs *r) 841static void snd_mts64_interrupt(int irq, void *private)
842{ 842{
843 struct mts64 *mts = ((struct snd_card*)private)->private_data; 843 struct mts64 *mts = ((struct snd_card*)private)->private_data;
844 u16 ret; 844 u16 ret;
diff --git a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c
index 52afb4bd2079..74028b2219c2 100644
--- a/sound/drivers/serial-u16550.c
+++ b/sound/drivers/serial-u16550.c
@@ -292,7 +292,7 @@ static void snd_uart16550_io_loop(snd_uart16550_t * uart)
292 * Note that some devices need OUT2 to be set before they will generate 292 * Note that some devices need OUT2 to be set before they will generate
293 * interrupts at all. (Possibly tied to an internal pull-up on CTS?) 293 * interrupts at all. (Possibly tied to an internal pull-up on CTS?)
294 */ 294 */
295static irqreturn_t snd_uart16550_interrupt(int irq, void *dev_id, struct pt_regs *regs) 295static irqreturn_t snd_uart16550_interrupt(int irq, void *dev_id)
296{ 296{
297 snd_uart16550_t *uart; 297 snd_uart16550_t *uart;
298 298
diff --git a/sound/drivers/vx/vx_core.c b/sound/drivers/vx/vx_core.c
index a60168268ddd..ed19bc17400b 100644
--- a/sound/drivers/vx/vx_core.c
+++ b/sound/drivers/vx/vx_core.c
@@ -537,7 +537,7 @@ static void vx_interrupt(unsigned long private_data)
537/** 537/**
538 * snd_vx_irq_handler - interrupt handler 538 * snd_vx_irq_handler - interrupt handler
539 */ 539 */
540irqreturn_t snd_vx_irq_handler(int irq, void *dev, struct pt_regs *regs) 540irqreturn_t snd_vx_irq_handler(int irq, void *dev)
541{ 541{
542 struct vx_core *chip = dev; 542 struct vx_core *chip = dev;
543 543
diff --git a/sound/isa/ad1816a/ad1816a_lib.c b/sound/isa/ad1816a/ad1816a_lib.c
index fd9b61eda0f3..b524e0d9ee44 100644
--- a/sound/isa/ad1816a/ad1816a_lib.c
+++ b/sound/isa/ad1816a/ad1816a_lib.c
@@ -315,7 +315,7 @@ static snd_pcm_uframes_t snd_ad1816a_capture_pointer(struct snd_pcm_substream *s
315} 315}
316 316
317 317
318static irqreturn_t snd_ad1816a_interrupt(int irq, void *dev_id, struct pt_regs *regs) 318static irqreturn_t snd_ad1816a_interrupt(int irq, void *dev_id)
319{ 319{
320 struct snd_ad1816a *chip = dev_id; 320 struct snd_ad1816a *chip = dev_id;
321 unsigned char status; 321 unsigned char status;
diff --git a/sound/isa/ad1848/ad1848_lib.c b/sound/isa/ad1848/ad1848_lib.c
index a6fbd5d1d62f..666b3bcc19f0 100644
--- a/sound/isa/ad1848/ad1848_lib.c
+++ b/sound/isa/ad1848/ad1848_lib.c
@@ -583,7 +583,7 @@ static int snd_ad1848_capture_prepare(struct snd_pcm_substream *substream)
583 return 0; 583 return 0;
584} 584}
585 585
586static irqreturn_t snd_ad1848_interrupt(int irq, void *dev_id, struct pt_regs *regs) 586static irqreturn_t snd_ad1848_interrupt(int irq, void *dev_id)
587{ 587{
588 struct snd_ad1848 *chip = dev_id; 588 struct snd_ad1848 *chip = dev_id;
589 589
diff --git a/sound/isa/cs423x/cs4231_lib.c b/sound/isa/cs423x/cs4231_lib.c
index fbb20176cca4..75c7c5f01989 100644
--- a/sound/isa/cs423x/cs4231_lib.c
+++ b/sound/isa/cs423x/cs4231_lib.c
@@ -920,7 +920,7 @@ static void snd_cs4231_overrange(struct snd_cs4231 *chip)
920 chip->capture_substream->runtime->overrange++; 920 chip->capture_substream->runtime->overrange++;
921} 921}
922 922
923irqreturn_t snd_cs4231_interrupt(int irq, void *dev_id, struct pt_regs *regs) 923irqreturn_t snd_cs4231_interrupt(int irq, void *dev_id)
924{ 924{
925 struct snd_cs4231 *chip = dev_id; 925 struct snd_cs4231 *chip = dev_id;
926 unsigned char status; 926 unsigned char status;
diff --git a/sound/isa/es1688/es1688_lib.c b/sound/isa/es1688/es1688_lib.c
index 7e985d3bc510..a2ab99f2ac35 100644
--- a/sound/isa/es1688/es1688_lib.c
+++ b/sound/isa/es1688/es1688_lib.c
@@ -479,7 +479,7 @@ static int snd_es1688_capture_trigger(struct snd_pcm_substream *substream,
479 return snd_es1688_trigger(chip, cmd, 0x0f); 479 return snd_es1688_trigger(chip, cmd, 0x0f);
480} 480}
481 481
482static irqreturn_t snd_es1688_interrupt(int irq, void *dev_id, struct pt_regs *regs) 482static irqreturn_t snd_es1688_interrupt(int irq, void *dev_id)
483{ 483{
484 struct snd_es1688 *chip = dev_id; 484 struct snd_es1688 *chip = dev_id;
485 485
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index 85818200333f..725c115ff97d 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -754,7 +754,7 @@ static int snd_es18xx_playback_trigger(struct snd_pcm_substream *substream,
754 return snd_es18xx_playback2_trigger(chip, substream, cmd); 754 return snd_es18xx_playback2_trigger(chip, substream, cmd);
755} 755}
756 756
757static irqreturn_t snd_es18xx_interrupt(int irq, void *dev_id, struct pt_regs *regs) 757static irqreturn_t snd_es18xx_interrupt(int irq, void *dev_id)
758{ 758{
759 struct snd_es18xx *chip = dev_id; 759 struct snd_es18xx *chip = dev_id;
760 unsigned char status; 760 unsigned char status;
@@ -799,7 +799,7 @@ static irqreturn_t snd_es18xx_interrupt(int irq, void *dev_id, struct pt_regs *r
799 799
800 /* MPU */ 800 /* MPU */
801 if ((status & MPU_IRQ) && chip->rmidi) 801 if ((status & MPU_IRQ) && chip->rmidi)
802 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 802 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
803 803
804 /* Hardware volume */ 804 /* Hardware volume */
805 if (status & HWV_IRQ) { 805 if (status & HWV_IRQ) {
@@ -2154,6 +2154,7 @@ static int __devinit snd_audiodrive_pnpc(int dev, struct snd_audiodrive *acard,
2154 } 2154 }
2155 /* Control port initialization */ 2155 /* Control port initialization */
2156 if (pnp_activate_dev(acard->devc) < 0) { 2156 if (pnp_activate_dev(acard->devc) < 0) {
2157 kfree(cfg);
2157 snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n"); 2158 snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n");
2158 return -EAGAIN; 2159 return -EAGAIN;
2159 } 2160 }
diff --git a/sound/isa/gus/gus_irq.c b/sound/isa/gus/gus_irq.c
index 42db37552efb..537d3cfe41f3 100644
--- a/sound/isa/gus/gus_irq.c
+++ b/sound/isa/gus/gus_irq.c
@@ -30,7 +30,7 @@
30#define STAT_ADD(x) while (0) { ; } 30#define STAT_ADD(x) while (0) { ; }
31#endif 31#endif
32 32
33irqreturn_t snd_gus_interrupt(int irq, void *dev_id, struct pt_regs *regs) 33irqreturn_t snd_gus_interrupt(int irq, void *dev_id)
34{ 34{
35 struct snd_gus_card * gus = dev_id; 35 struct snd_gus_card * gus = dev_id;
36 unsigned char status; 36 unsigned char status;
diff --git a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c
index ac11cae8589a..c1c69e3cbfd0 100644
--- a/sound/isa/gus/gusmax.c
+++ b/sound/isa/gus/gusmax.c
@@ -105,9 +105,9 @@ static int __init snd_gusmax_detect(struct snd_gus_card * gus)
105 return 0; 105 return 0;
106} 106}
107 107
108static irqreturn_t snd_gusmax_interrupt(int irq, void *dev_id, struct pt_regs *regs) 108static irqreturn_t snd_gusmax_interrupt(int irq, void *dev_id)
109{ 109{
110 struct snd_gusmax *maxcard = (struct snd_gusmax *) dev_id; 110 struct snd_gusmax *maxcard = dev_id;
111 int loop, max = 5; 111 int loop, max = 5;
112 int handled = 0; 112 int handled = 0;
113 113
@@ -115,12 +115,12 @@ static irqreturn_t snd_gusmax_interrupt(int irq, void *dev_id, struct pt_regs *r
115 loop = 0; 115 loop = 0;
116 if (inb(maxcard->gus_status_reg)) { 116 if (inb(maxcard->gus_status_reg)) {
117 handled = 1; 117 handled = 1;
118 snd_gus_interrupt(irq, maxcard->gus, regs); 118 snd_gus_interrupt(irq, maxcard->gus);
119 loop++; 119 loop++;
120 } 120 }
121 if (inb(maxcard->pcm_status_reg) & 0x01) { /* IRQ bit is set? */ 121 if (inb(maxcard->pcm_status_reg) & 0x01) { /* IRQ bit is set? */
122 handled = 1; 122 handled = 1;
123 snd_cs4231_interrupt(irq, maxcard->cs4231, regs); 123 snd_cs4231_interrupt(irq, maxcard->cs4231);
124 loop++; 124 loop++;
125 } 125 }
126 } while (loop && --max > 0); 126 } while (loop && --max > 0);
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
index ea69f25506fb..f12cd09d1fcc 100644
--- a/sound/isa/gus/interwave.c
+++ b/sound/isa/gus/interwave.c
@@ -299,9 +299,9 @@ static int __devinit snd_interwave_detect(struct snd_interwave *iwcard,
299 return -ENODEV; 299 return -ENODEV;
300} 300}
301 301
302static irqreturn_t snd_interwave_interrupt(int irq, void *dev_id, struct pt_regs *regs) 302static irqreturn_t snd_interwave_interrupt(int irq, void *dev_id)
303{ 303{
304 struct snd_interwave *iwcard = (struct snd_interwave *) dev_id; 304 struct snd_interwave *iwcard = dev_id;
305 int loop, max = 5; 305 int loop, max = 5;
306 int handled = 0; 306 int handled = 0;
307 307
@@ -309,12 +309,12 @@ static irqreturn_t snd_interwave_interrupt(int irq, void *dev_id, struct pt_regs
309 loop = 0; 309 loop = 0;
310 if (inb(iwcard->gus_status_reg)) { 310 if (inb(iwcard->gus_status_reg)) {
311 handled = 1; 311 handled = 1;
312 snd_gus_interrupt(irq, iwcard->gus, regs); 312 snd_gus_interrupt(irq, iwcard->gus);
313 loop++; 313 loop++;
314 } 314 }
315 if (inb(iwcard->pcm_status_reg) & 0x01) { /* IRQ bit is set? */ 315 if (inb(iwcard->pcm_status_reg) & 0x01) { /* IRQ bit is set? */
316 handled = 1; 316 handled = 1;
317 snd_cs4231_interrupt(irq, iwcard->cs4231, regs); 317 snd_cs4231_interrupt(irq, iwcard->cs4231);
318 loop++; 318 loop++;
319 } 319 }
320 } while (loop && --max > 0); 320 } while (loop && --max > 0);
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
index da92bf6c392b..419b4ebbf00e 100644
--- a/sound/isa/opl3sa2.c
+++ b/sound/isa/opl3sa2.c
@@ -294,7 +294,7 @@ static int __devinit snd_opl3sa2_detect(struct snd_opl3sa2 *chip)
294 return 0; 294 return 0;
295} 295}
296 296
297static irqreturn_t snd_opl3sa2_interrupt(int irq, void *dev_id, struct pt_regs *regs) 297static irqreturn_t snd_opl3sa2_interrupt(int irq, void *dev_id)
298{ 298{
299 unsigned short status; 299 unsigned short status;
300 struct snd_opl3sa2 *chip = dev_id; 300 struct snd_opl3sa2 *chip = dev_id;
@@ -312,12 +312,12 @@ static irqreturn_t snd_opl3sa2_interrupt(int irq, void *dev_id, struct pt_regs *
312 312
313 if ((status & 0x10) && chip->rmidi != NULL) { 313 if ((status & 0x10) && chip->rmidi != NULL) {
314 handled = 1; 314 handled = 1;
315 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 315 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
316 } 316 }
317 317
318 if (status & 0x07) { /* TI,CI,PI */ 318 if (status & 0x07) { /* TI,CI,PI */
319 handled = 1; 319 handled = 1;
320 snd_cs4231_interrupt(irq, chip->cs4231, regs); 320 snd_cs4231_interrupt(irq, chip->cs4231);
321 } 321 }
322 322
323 if (status & 0x40) { /* hardware volume change */ 323 if (status & 0x40) { /* hardware volume change */
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
index 9d528ae00bff..a1ad39a8cdce 100644
--- a/sound/isa/opti9xx/opti92x-ad1848.c
+++ b/sound/isa/opti9xx/opti92x-ad1848.c
@@ -1090,7 +1090,7 @@ static void snd_opti93x_overrange(struct snd_opti93x *chip)
1090 spin_unlock_irqrestore(&chip->lock, flags); 1090 spin_unlock_irqrestore(&chip->lock, flags);
1091} 1091}
1092 1092
1093static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1093static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id)
1094{ 1094{
1095 struct snd_opti93x *codec = dev_id; 1095 struct snd_opti93x *codec = dev_id;
1096 unsigned char status; 1096 unsigned char status;
diff --git a/sound/isa/sb/es968.c b/sound/isa/sb/es968.c
index d4d65b84265a..d4b218726ce7 100644
--- a/sound/isa/sb/es968.c
+++ b/sound/isa/sb/es968.c
@@ -70,8 +70,7 @@ MODULE_DEVICE_TABLE(pnp_card, snd_es968_pnpids);
70 70
71#define DRIVER_NAME "snd-card-es968" 71#define DRIVER_NAME "snd-card-es968"
72 72
73static irqreturn_t snd_card_es968_interrupt(int irq, void *dev_id, 73static irqreturn_t snd_card_es968_interrupt(int irq, void *dev_id)
74 struct pt_regs *regs)
75{ 74{
76 struct snd_sb *chip = dev_id; 75 struct snd_sb *chip = dev_id;
77 76
diff --git a/sound/isa/sb/sb16_main.c b/sound/isa/sb/sb16_main.c
index f183f1845a36..383911b9e74d 100644
--- a/sound/isa/sb/sb16_main.c
+++ b/sound/isa/sb/sb16_main.c
@@ -395,7 +395,7 @@ static int snd_sb16_capture_trigger(struct snd_pcm_substream *substream,
395 return result; 395 return result;
396} 396}
397 397
398irqreturn_t snd_sb16dsp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 398irqreturn_t snd_sb16dsp_interrupt(int irq, void *dev_id)
399{ 399{
400 struct snd_sb *chip = dev_id; 400 struct snd_sb *chip = dev_id;
401 unsigned char status; 401 unsigned char status;
@@ -405,7 +405,7 @@ irqreturn_t snd_sb16dsp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
405 status = snd_sbmixer_read(chip, SB_DSP4_IRQSTATUS); 405 status = snd_sbmixer_read(chip, SB_DSP4_IRQSTATUS);
406 spin_unlock(&chip->mixer_lock); 406 spin_unlock(&chip->mixer_lock);
407 if ((status & SB_IRQTYPE_MPUIN) && chip->rmidi_callback) 407 if ((status & SB_IRQTYPE_MPUIN) && chip->rmidi_callback)
408 chip->rmidi_callback(irq, chip->rmidi->private_data, regs); 408 chip->rmidi_callback(irq, chip->rmidi->private_data);
409 if (status & SB_IRQTYPE_8BIT) { 409 if (status & SB_IRQTYPE_8BIT) {
410 ok = 0; 410 ok = 0;
411 if (chip->mode & SB_MODE_PLAYBACK_8) { 411 if (chip->mode & SB_MODE_PLAYBACK_8) {
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
index 141400c01426..268ebd34703e 100644
--- a/sound/isa/sb/sb8.c
+++ b/sound/isa/sb/sb8.c
@@ -63,7 +63,7 @@ struct snd_sb8 {
63 struct snd_sb *chip; 63 struct snd_sb *chip;
64}; 64};
65 65
66static irqreturn_t snd_sb8_interrupt(int irq, void *dev_id, struct pt_regs *regs) 66static irqreturn_t snd_sb8_interrupt(int irq, void *dev_id)
67{ 67{
68 struct snd_sb *chip = dev_id; 68 struct snd_sb *chip = dev_id;
69 69
diff --git a/sound/isa/sb/sb_common.c b/sound/isa/sb/sb_common.c
index f17de2bdd9e0..c62a9e3d2ae4 100644
--- a/sound/isa/sb/sb_common.c
+++ b/sound/isa/sb/sb_common.c
@@ -205,7 +205,7 @@ static int snd_sbdsp_dev_free(struct snd_device *device)
205int snd_sbdsp_create(struct snd_card *card, 205int snd_sbdsp_create(struct snd_card *card,
206 unsigned long port, 206 unsigned long port,
207 int irq, 207 int irq,
208 irqreturn_t (*irq_handler)(int, void *, struct pt_regs *), 208 irq_handler_t irq_handler,
209 int dma8, 209 int dma8,
210 int dma16, 210 int dma16,
211 unsigned short hardware, 211 unsigned short hardware,
diff --git a/sound/isa/sgalaxy.c b/sound/isa/sgalaxy.c
index 8742fa517491..4fcd0f4e868c 100644
--- a/sound/isa/sgalaxy.c
+++ b/sound/isa/sgalaxy.c
@@ -109,7 +109,7 @@ static int __init snd_sgalaxy_sbdsp_command(unsigned long port, unsigned char va
109 return 0; 109 return 0;
110} 110}
111 111
112static irqreturn_t snd_sgalaxy_dummy_interrupt(int irq, void *dev_id, struct pt_regs *regs) 112static irqreturn_t snd_sgalaxy_dummy_interrupt(int irq, void *dev_id)
113{ 113{
114 return IRQ_NONE; 114 return IRQ_NONE;
115} 115}
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
index a8f8d2fa9d76..85db535aea9b 100644
--- a/sound/isa/wavefront/wavefront.c
+++ b/sound/isa/wavefront/wavefront.c
@@ -263,9 +263,7 @@ snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *c
263 263
264#endif /* CONFIG_PNP */ 264#endif /* CONFIG_PNP */
265 265
266static irqreturn_t snd_wavefront_ics2115_interrupt(int irq, 266static irqreturn_t snd_wavefront_ics2115_interrupt(int irq, void *dev_id)
267 void *dev_id,
268 struct pt_regs *regs)
269{ 267{
270 snd_wavefront_card_t *acard; 268 snd_wavefront_card_t *acard;
271 269
diff --git a/sound/mips/au1x00.c b/sound/mips/au1x00.c
index ff6e6fc198a1..8a61a1191861 100644
--- a/sound/mips/au1x00.c
+++ b/sound/mips/au1x00.c
@@ -220,7 +220,7 @@ au1000_dma_start(struct audio_stream *stream)
220} 220}
221 221
222static irqreturn_t 222static irqreturn_t
223au1000_dma_interrupt(int irq, void *dev_id, struct pt_regs *regs) 223au1000_dma_interrupt(int irq, void *dev_id)
224{ 224{
225 struct audio_stream *stream = (struct audio_stream *) dev_id; 225 struct audio_stream *stream = (struct audio_stream *) dev_id;
226 struct snd_pcm_substream *substream = stream->substream; 226 struct snd_pcm_substream *substream = stream->substream;
diff --git a/sound/oss/ad1816.c b/sound/oss/ad1816.c
index 29057836c644..caabf31193f7 100644
--- a/sound/oss/ad1816.c
+++ b/sound/oss/ad1816.c
@@ -521,7 +521,7 @@ static struct audio_driver ad1816_audio_driver =
521/* Interrupt handler */ 521/* Interrupt handler */
522 522
523 523
524static irqreturn_t ad1816_interrupt (int irq, void *dev_id, struct pt_regs *dummy) 524static irqreturn_t ad1816_interrupt (int irq, void *dev_id)
525{ 525{
526 unsigned char status; 526 unsigned char status;
527 ad1816_info *devc = (ad1816_info *)dev_id; 527 ad1816_info *devc = (ad1816_info *)dev_id;
diff --git a/sound/oss/ad1848.c b/sound/oss/ad1848.c
index 257b7536fb18..0ffa9970bf0f 100644
--- a/sound/oss/ad1848.c
+++ b/sound/oss/ad1848.c
@@ -195,7 +195,7 @@ static void ad1848_halt(int dev);
195static void ad1848_halt_input(int dev); 195static void ad1848_halt_input(int dev);
196static void ad1848_halt_output(int dev); 196static void ad1848_halt_output(int dev);
197static void ad1848_trigger(int dev, int bits); 197static void ad1848_trigger(int dev, int bits);
198static irqreturn_t adintr(int irq, void *dev_id, struct pt_regs *dummy); 198static irqreturn_t adintr(int irq, void *dev_id);
199 199
200#ifndef EXCLUDE_TIMERS 200#ifndef EXCLUDE_TIMERS
201static int ad1848_tmr_install(int dev); 201static int ad1848_tmr_install(int dev);
@@ -2196,7 +2196,7 @@ void ad1848_unload(int io_base, int irq, int dma_playback, int dma_capture, int
2196 printk(KERN_ERR "ad1848: Can't find device to be unloaded. Base=%x\n", io_base); 2196 printk(KERN_ERR "ad1848: Can't find device to be unloaded. Base=%x\n", io_base);
2197} 2197}
2198 2198
2199static irqreturn_t adintr(int irq, void *dev_id, struct pt_regs *dummy) 2199static irqreturn_t adintr(int irq, void *dev_id)
2200{ 2200{
2201 unsigned char status; 2201 unsigned char status;
2202 ad1848_info *devc; 2202 ad1848_info *devc;
diff --git a/sound/oss/ad1889.c b/sound/oss/ad1889.c
index f56f870b4840..09263d72a519 100644
--- a/sound/oss/ad1889.c
+++ b/sound/oss/ad1889.c
@@ -929,7 +929,7 @@ static struct pci_device_id ad1889_id_tbl[] = {
929}; 929};
930MODULE_DEVICE_TABLE(pci, ad1889_id_tbl); 930MODULE_DEVICE_TABLE(pci, ad1889_id_tbl);
931 931
932static irqreturn_t ad1889_interrupt(int irq, void *dev_id, struct pt_regs *regs) 932static irqreturn_t ad1889_interrupt(int irq, void *dev_id)
933{ 933{
934 u32 stat; 934 u32 stat;
935 ad1889_dev_t *dev = (ad1889_dev_t *)dev_id; 935 ad1889_dev_t *dev = (ad1889_dev_t *)dev_id;
diff --git a/sound/oss/btaudio.c b/sound/oss/btaudio.c
index 324a81fd3a3b..6ad384114239 100644
--- a/sound/oss/btaudio.c
+++ b/sound/oss/btaudio.c
@@ -824,7 +824,7 @@ static char *irq_name[] = { "", "", "", "OFLOW", "", "", "", "", "", "", "",
824 "RISCI", "FBUS", "FTRGT", "FDSR", "PPERR", 824 "RISCI", "FBUS", "FTRGT", "FDSR", "PPERR",
825 "RIPERR", "PABORT", "OCERR", "SCERR" }; 825 "RIPERR", "PABORT", "OCERR", "SCERR" };
826 826
827static irqreturn_t btaudio_irq(int irq, void *dev_id, struct pt_regs * regs) 827static irqreturn_t btaudio_irq(int irq, void *dev_id)
828{ 828{
829 int count = 0; 829 int count = 0;
830 u32 stat,astat; 830 u32 stat,astat;
diff --git a/sound/oss/cs46xx.c b/sound/oss/cs46xx.c
index 43193581f836..6e3c41f530e6 100644
--- a/sound/oss/cs46xx.c
+++ b/sound/oss/cs46xx.c
@@ -1613,7 +1613,7 @@ static void cs_handle_midi(struct cs_card *card)
1613 wake_up(&card->midi.owait); 1613 wake_up(&card->midi.owait);
1614} 1614}
1615 1615
1616static irqreturn_t cs_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1616static irqreturn_t cs_interrupt(int irq, void *dev_id)
1617{ 1617{
1618 struct cs_card *card = (struct cs_card *)dev_id; 1618 struct cs_card *card = (struct cs_card *)dev_id;
1619 /* Single channel card */ 1619 /* Single channel card */
diff --git a/sound/oss/dmasound/dmasound_atari.c b/sound/oss/dmasound/dmasound_atari.c
index dc31373069a5..285239d64b82 100644
--- a/sound/oss/dmasound/dmasound_atari.c
+++ b/sound/oss/dmasound/dmasound_atari.c
@@ -133,7 +133,7 @@ static int FalconSetFormat(int format);
133static int FalconSetVolume(int volume); 133static int FalconSetVolume(int volume);
134static void AtaPlayNextFrame(int index); 134static void AtaPlayNextFrame(int index);
135static void AtaPlay(void); 135static void AtaPlay(void);
136static irqreturn_t AtaInterrupt(int irq, void *dummy, struct pt_regs *fp); 136static irqreturn_t AtaInterrupt(int irq, void *dummy);
137 137
138/*** Mid level stuff *********************************************************/ 138/*** Mid level stuff *********************************************************/
139 139
@@ -1257,7 +1257,7 @@ static void AtaPlay(void)
1257} 1257}
1258 1258
1259 1259
1260static irqreturn_t AtaInterrupt(int irq, void *dummy, struct pt_regs *fp) 1260static irqreturn_t AtaInterrupt(int irq, void *dummy)
1261{ 1261{
1262#if 0 1262#if 0
1263 /* ++TeSche: if you should want to test this... */ 1263 /* ++TeSche: if you should want to test this... */
diff --git a/sound/oss/dmasound/dmasound_awacs.c b/sound/oss/dmasound/dmasound_awacs.c
index 9ae659f82430..37773b1deea5 100644
--- a/sound/oss/dmasound/dmasound_awacs.c
+++ b/sound/oss/dmasound/dmasound_awacs.c
@@ -281,9 +281,9 @@ static int PMacSetFormat(int format);
281static int PMacSetVolume(int volume); 281static int PMacSetVolume(int volume);
282static void PMacPlay(void); 282static void PMacPlay(void);
283static void PMacRecord(void); 283static void PMacRecord(void);
284static irqreturn_t pmac_awacs_tx_intr(int irq, void *devid, struct pt_regs *regs); 284static irqreturn_t pmac_awacs_tx_intr(int irq, void *devid);
285static irqreturn_t pmac_awacs_rx_intr(int irq, void *devid, struct pt_regs *regs); 285static irqreturn_t pmac_awacs_rx_intr(int irq, void *devid);
286static irqreturn_t pmac_awacs_intr(int irq, void *devid, struct pt_regs *regs); 286static irqreturn_t pmac_awacs_intr(int irq, void *devid);
287static void awacs_write(int val); 287static void awacs_write(int val);
288static int awacs_get_volume(int reg, int lshift); 288static int awacs_get_volume(int reg, int lshift);
289static int awacs_volume_setter(int volume, int n, int mute, int lshift); 289static int awacs_volume_setter(int volume, int n, int mute, int lshift);
@@ -398,7 +398,7 @@ read_audio_gpio(int gpio_addr)
398 * Headphone interrupt via GPIO (Tumbler, Snapper, DACA) 398 * Headphone interrupt via GPIO (Tumbler, Snapper, DACA)
399 */ 399 */
400static irqreturn_t 400static irqreturn_t
401headphone_intr(int irq, void *devid, struct pt_regs *regs) 401headphone_intr(int irq, void *devid)
402{ 402{
403 unsigned long flags; 403 unsigned long flags;
404 404
@@ -465,7 +465,7 @@ tas_dmasound_init(void)
465 val = pmac_call_feature(PMAC_FTR_READ_GPIO, NULL, gpio_headphone_detect, 0); 465 val = pmac_call_feature(PMAC_FTR_READ_GPIO, NULL, gpio_headphone_detect, 0);
466 pmac_call_feature(PMAC_FTR_WRITE_GPIO, NULL, gpio_headphone_detect, val | 0x80); 466 pmac_call_feature(PMAC_FTR_WRITE_GPIO, NULL, gpio_headphone_detect, val | 0x80);
467 /* Trigger it */ 467 /* Trigger it */
468 headphone_intr(0,NULL,NULL); 468 headphone_intr(0, NULL);
469 } 469 }
470 } 470 }
471 if (!gpio_headphone_irq) { 471 if (!gpio_headphone_irq) {
@@ -1037,7 +1037,7 @@ static void PMacRecord(void)
1037*/ 1037*/
1038 1038
1039static irqreturn_t 1039static irqreturn_t
1040pmac_awacs_tx_intr(int irq, void *devid, struct pt_regs *regs) 1040pmac_awacs_tx_intr(int irq, void *devid)
1041{ 1041{
1042 int i = write_sq.front; 1042 int i = write_sq.front;
1043 int stat; 1043 int stat;
@@ -1129,7 +1129,7 @@ printk("dmasound_pmac: tx-irq: xfer died - patching it up...\n") ;
1129 1129
1130 1130
1131static irqreturn_t 1131static irqreturn_t
1132pmac_awacs_rx_intr(int irq, void *devid, struct pt_regs *regs) 1132pmac_awacs_rx_intr(int irq, void *devid)
1133{ 1133{
1134 int stat ; 1134 int stat ;
1135 /* For some reason on my PowerBook G3, I get one interrupt 1135 /* For some reason on my PowerBook G3, I get one interrupt
@@ -1212,7 +1212,7 @@ printk("dmasound_pmac: rx-irq: DIED - attempting resurection\n");
1212 1212
1213 1213
1214static irqreturn_t 1214static irqreturn_t
1215pmac_awacs_intr(int irq, void *devid, struct pt_regs *regs) 1215pmac_awacs_intr(int irq, void *devid)
1216{ 1216{
1217 int ctrl; 1217 int ctrl;
1218 int status; 1218 int status;
@@ -1499,7 +1499,7 @@ static int awacs_sleep_notify(struct pmu_sleep_notifier *self, int when)
1499 write_audio_gpio(gpio_audio_reset, !gpio_audio_reset_pol); 1499 write_audio_gpio(gpio_audio_reset, !gpio_audio_reset_pol);
1500 msleep(150); 1500 msleep(150);
1501 tas_leave_sleep(); /* Stub for now */ 1501 tas_leave_sleep(); /* Stub for now */
1502 headphone_intr(0,NULL,NULL); 1502 headphone_intr(0, NULL);
1503 break; 1503 break;
1504 case AWACS_DACA: 1504 case AWACS_DACA:
1505 msleep(10); /* Check this !!! */ 1505 msleep(10); /* Check this !!! */
diff --git a/sound/oss/dmasound/dmasound_paula.c b/sound/oss/dmasound/dmasound_paula.c
index 68e1d8f6c359..90fc058e1159 100644
--- a/sound/oss/dmasound/dmasound_paula.c
+++ b/sound/oss/dmasound/dmasound_paula.c
@@ -82,7 +82,7 @@ static int AmiSetVolume(int volume);
82static int AmiSetTreble(int treble); 82static int AmiSetTreble(int treble);
83static void AmiPlayNextFrame(int index); 83static void AmiPlayNextFrame(int index);
84static void AmiPlay(void); 84static void AmiPlay(void);
85static irqreturn_t AmiInterrupt(int irq, void *dummy, struct pt_regs *fp); 85static irqreturn_t AmiInterrupt(int irq, void *dummy);
86 86
87#ifdef CONFIG_HEARTBEAT 87#ifdef CONFIG_HEARTBEAT
88 88
@@ -556,7 +556,7 @@ static void AmiPlay(void)
556} 556}
557 557
558 558
559static irqreturn_t AmiInterrupt(int irq, void *dummy, struct pt_regs *fp) 559static irqreturn_t AmiInterrupt(int irq, void *dummy)
560{ 560{
561 int minframes = 1; 561 int minframes = 1;
562 562
diff --git a/sound/oss/dmasound/dmasound_q40.c b/sound/oss/dmasound/dmasound_q40.c
index e2081f32b0c4..b3379dd7ca5e 100644
--- a/sound/oss/dmasound/dmasound_q40.c
+++ b/sound/oss/dmasound/dmasound_q40.c
@@ -48,8 +48,8 @@ static int Q40SetFormat(int format);
48static int Q40SetVolume(int volume); 48static int Q40SetVolume(int volume);
49static void Q40PlayNextFrame(int index); 49static void Q40PlayNextFrame(int index);
50static void Q40Play(void); 50static void Q40Play(void);
51static irqreturn_t Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp); 51static irqreturn_t Q40StereoInterrupt(int irq, void *dummy);
52static irqreturn_t Q40MonoInterrupt(int irq, void *dummy, struct pt_regs *fp); 52static irqreturn_t Q40MonoInterrupt(int irq, void *dummy);
53static void Q40Interrupt(void); 53static void Q40Interrupt(void);
54 54
55 55
@@ -451,7 +451,7 @@ static void Q40Play(void)
451 spin_unlock_irqrestore(&dmasound.lock, flags); 451 spin_unlock_irqrestore(&dmasound.lock, flags);
452} 452}
453 453
454static irqreturn_t Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp) 454static irqreturn_t Q40StereoInterrupt(int irq, void *dummy)
455{ 455{
456 spin_lock(&dmasound.lock); 456 spin_lock(&dmasound.lock);
457 if (q40_sc>1){ 457 if (q40_sc>1){
@@ -463,7 +463,7 @@ static irqreturn_t Q40StereoInterrupt(int irq, void *dummy, struct pt_regs *fp)
463 spin_unlock(&dmasound.lock); 463 spin_unlock(&dmasound.lock);
464 return IRQ_HANDLED; 464 return IRQ_HANDLED;
465} 465}
466static irqreturn_t Q40MonoInterrupt(int irq, void *dummy, struct pt_regs *fp) 466static irqreturn_t Q40MonoInterrupt(int irq, void *dummy)
467{ 467{
468 spin_lock(&dmasound.lock); 468 spin_lock(&dmasound.lock);
469 if (q40_sc>0){ 469 if (q40_sc>0){
diff --git a/sound/oss/emu10k1/irqmgr.c b/sound/oss/emu10k1/irqmgr.c
index d19b464ba01b..fb2ce638f01c 100644
--- a/sound/oss/emu10k1/irqmgr.c
+++ b/sound/oss/emu10k1/irqmgr.c
@@ -37,7 +37,7 @@
37 37
38/* Interrupt handler */ 38/* Interrupt handler */
39 39
40irqreturn_t emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs) 40irqreturn_t emu10k1_interrupt(int irq, void *dev_id)
41{ 41{
42 struct emu10k1_card *card = (struct emu10k1_card *) dev_id; 42 struct emu10k1_card *card = (struct emu10k1_card *) dev_id;
43 u32 irqstatus, irqstatus_tmp; 43 u32 irqstatus, irqstatus_tmp;
diff --git a/sound/oss/emu10k1/main.c b/sound/oss/emu10k1/main.c
index c4ce94d6e10c..6c59df7b0001 100644
--- a/sound/oss/emu10k1/main.c
+++ b/sound/oss/emu10k1/main.c
@@ -167,7 +167,7 @@ extern struct file_operations emu10k1_midi_fops;
167static struct midi_operations emu10k1_midi_operations; 167static struct midi_operations emu10k1_midi_operations;
168#endif 168#endif
169 169
170extern irqreturn_t emu10k1_interrupt(int, void *, struct pt_regs *s); 170extern irqreturn_t emu10k1_interrupt(int, void *);
171 171
172static int __devinit emu10k1_audio_init(struct emu10k1_card *card) 172static int __devinit emu10k1_audio_init(struct emu10k1_card *card)
173{ 173{
diff --git a/sound/oss/es1371.c b/sound/oss/es1371.c
index a2ffe723dad5..ddf6b0a0bca5 100644
--- a/sound/oss/es1371.c
+++ b/sound/oss/es1371.c
@@ -1100,9 +1100,9 @@ static void es1371_handle_midi(struct es1371_state *s)
1100 outb((s->midi.ocnt > 0) ? UCTRL_RXINTEN | UCTRL_ENA_TXINT : UCTRL_RXINTEN, s->io+ES1371_REG_UART_CONTROL); 1100 outb((s->midi.ocnt > 0) ? UCTRL_RXINTEN | UCTRL_ENA_TXINT : UCTRL_RXINTEN, s->io+ES1371_REG_UART_CONTROL);
1101} 1101}
1102 1102
1103static irqreturn_t es1371_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1103static irqreturn_t es1371_interrupt(int irq, void *dev_id)
1104{ 1104{
1105 struct es1371_state *s = (struct es1371_state *)dev_id; 1105 struct es1371_state *s = dev_id;
1106 unsigned int intsrc, sctl; 1106 unsigned int intsrc, sctl;
1107 1107
1108 /* fastpath out, to ease interrupt sharing */ 1108 /* fastpath out, to ease interrupt sharing */
diff --git a/sound/oss/hal2.c b/sound/oss/hal2.c
index 80ab402dae9a..784bdd707055 100644
--- a/sound/oss/hal2.c
+++ b/sound/oss/hal2.c
@@ -370,9 +370,9 @@ static void hal2_adc_interrupt(struct hal2_codec *adc)
370 wake_up(&adc->dma_wait); 370 wake_up(&adc->dma_wait);
371} 371}
372 372
373static irqreturn_t hal2_interrupt(int irq, void *dev_id, struct pt_regs *regs) 373static irqreturn_t hal2_interrupt(int irq, void *dev_id)
374{ 374{
375 struct hal2_card *hal2 = (struct hal2_card*)dev_id; 375 struct hal2_card *hal2 = dev_id;
376 irqreturn_t ret = IRQ_NONE; 376 irqreturn_t ret = IRQ_NONE;
377 377
378 /* decide what caused this interrupt */ 378 /* decide what caused this interrupt */
diff --git a/sound/oss/i810_audio.c b/sound/oss/i810_audio.c
index ddcddc2347f7..240cc7939b69 100644
--- a/sound/oss/i810_audio.c
+++ b/sound/oss/i810_audio.c
@@ -1523,9 +1523,9 @@ static void i810_channel_interrupt(struct i810_card *card)
1523#endif 1523#endif
1524} 1524}
1525 1525
1526static irqreturn_t i810_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1526static irqreturn_t i810_interrupt(int irq, void *dev_id)
1527{ 1527{
1528 struct i810_card *card = (struct i810_card *)dev_id; 1528 struct i810_card *card = dev_id;
1529 u32 status; 1529 u32 status;
1530 1530
1531 spin_lock(&card->lock); 1531 spin_lock(&card->lock);
diff --git a/sound/oss/mpu401.c b/sound/oss/mpu401.c
index 162d07cc489f..e96220541971 100644
--- a/sound/oss/mpu401.c
+++ b/sound/oss/mpu401.c
@@ -432,10 +432,10 @@ static void mpu401_input_loop(struct mpu_config *devc)
432 devc->m_busy = 0; 432 devc->m_busy = 0;
433} 433}
434 434
435static irqreturn_t mpuintr(int irq, void *dev_id, struct pt_regs *dummy) 435static irqreturn_t mpuintr(int irq, void *dev_id)
436{ 436{
437 struct mpu_config *devc; 437 struct mpu_config *devc;
438 int dev = (int) dev_id; 438 int dev = (int)(unsigned long) dev_id;
439 int handled = 0; 439 int handled = 0;
440 440
441 devc = &dev_conf[dev]; 441 devc = &dev_conf[dev];
diff --git a/sound/oss/mpu401.h b/sound/oss/mpu401.h
index 84c0e9522ef7..0ad1e9ee74f7 100644
--- a/sound/oss/mpu401.h
+++ b/sound/oss/mpu401.h
@@ -3,10 +3,9 @@
3int probe_uart401 (struct address_info *hw_config, struct module *owner); 3int probe_uart401 (struct address_info *hw_config, struct module *owner);
4void unload_uart401 (struct address_info *hw_config); 4void unload_uart401 (struct address_info *hw_config);
5 5
6irqreturn_t uart401intr (int irq, void *dev_id, struct pt_regs * dummy); 6irqreturn_t uart401intr (int irq, void *dev_id);
7 7
8/* From mpu401.c */ 8/* From mpu401.c */
9int probe_mpu401(struct address_info *hw_config, struct resource *ports); 9int probe_mpu401(struct address_info *hw_config, struct resource *ports);
10int attach_mpu401(struct address_info * hw_config, struct module *owner); 10int attach_mpu401(struct address_info * hw_config, struct module *owner);
11void unload_mpu401(struct address_info *hw_info); 11void unload_mpu401(struct address_info *hw_info);
12
diff --git a/sound/oss/msnd_pinnacle.c b/sound/oss/msnd_pinnacle.c
index 6d7763dae895..d5146790f5e3 100644
--- a/sound/oss/msnd_pinnacle.c
+++ b/sound/oss/msnd_pinnacle.c
@@ -1087,7 +1087,7 @@ static __inline__ void eval_dsp_msg(register WORD wMessage)
1087 } 1087 }
1088} 1088}
1089 1089
1090static irqreturn_t intr(int irq, void *dev_id, struct pt_regs *regs) 1090static irqreturn_t intr(int irq, void *dev_id)
1091{ 1091{
1092 /* Send ack to DSP */ 1092 /* Send ack to DSP */
1093 msnd_inb(dev.io + HP_RXL); 1093 msnd_inb(dev.io + HP_RXL);
diff --git a/sound/oss/nec_vrc5477.c b/sound/oss/nec_vrc5477.c
index 6f7f2f0423e4..da9728e17727 100644
--- a/sound/oss/nec_vrc5477.c
+++ b/sound/oss/nec_vrc5477.c
@@ -848,7 +848,7 @@ static inline void vrc5477_ac97_dac_interrupt(struct vrc5477_ac97_state *s)
848 wake_up_interruptible(&dac->wait); 848 wake_up_interruptible(&dac->wait);
849} 849}
850 850
851static irqreturn_t vrc5477_ac97_interrupt(int irq, void *dev_id, struct pt_regs *regs) 851static irqreturn_t vrc5477_ac97_interrupt(int irq, void *dev_id)
852{ 852{
853 struct vrc5477_ac97_state *s = (struct vrc5477_ac97_state *)dev_id; 853 struct vrc5477_ac97_state *s = (struct vrc5477_ac97_state *)dev_id;
854 u32 irqStatus; 854 u32 irqStatus;
diff --git a/sound/oss/nm256.h b/sound/oss/nm256.h
index 21e07b5081f2..1dade9033995 100644
--- a/sound/oss/nm256.h
+++ b/sound/oss/nm256.h
@@ -115,7 +115,7 @@ struct nm256_info
115 int has_irq; 115 int has_irq;
116 116
117 /* The card interrupt service routine. */ 117 /* The card interrupt service routine. */
118 irqreturn_t (*introutine) (int, void *, struct pt_regs *); 118 irq_handler_t introutine;
119 119
120 /* Current audio config, cached. */ 120 /* Current audio config, cached. */
121 struct sinfo { 121 struct sinfo {
diff --git a/sound/oss/nm256_audio.c b/sound/oss/nm256_audio.c
index 7760dddf2b32..44cd15505001 100644
--- a/sound/oss/nm256_audio.c
+++ b/sound/oss/nm256_audio.c
@@ -45,8 +45,8 @@ static struct audio_driver nm256_audio_driver;
45 45
46static int nm256_grabInterrupt (struct nm256_info *card); 46static int nm256_grabInterrupt (struct nm256_info *card);
47static int nm256_releaseInterrupt (struct nm256_info *card); 47static int nm256_releaseInterrupt (struct nm256_info *card);
48static irqreturn_t nm256_interrupt (int irq, void *dev_id, struct pt_regs *dummy); 48static irqreturn_t nm256_interrupt (int irq, void *dev_id);
49static irqreturn_t nm256_interrupt_zx (int irq, void *dev_id, struct pt_regs *dummy); 49static irqreturn_t nm256_interrupt_zx (int irq, void *dev_id);
50 50
51/* These belong in linux/pci.h. */ 51/* These belong in linux/pci.h. */
52#define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005 52#define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005
@@ -526,7 +526,7 @@ nm256_initHw (struct nm256_info *card)
526 */ 526 */
527 527
528static irqreturn_t 528static irqreturn_t
529nm256_interrupt (int irq, void *dev_id, struct pt_regs *dummy) 529nm256_interrupt (int irq, void *dev_id)
530{ 530{
531 struct nm256_info *card = (struct nm256_info *)dev_id; 531 struct nm256_info *card = (struct nm256_info *)dev_id;
532 u16 status; 532 u16 status;
@@ -629,7 +629,7 @@ nm256_interrupt (int irq, void *dev_id, struct pt_regs *dummy)
629 */ 629 */
630 630
631static irqreturn_t 631static irqreturn_t
632nm256_interrupt_zx (int irq, void *dev_id, struct pt_regs *dummy) 632nm256_interrupt_zx (int irq, void *dev_id)
633{ 633{
634 struct nm256_info *card = (struct nm256_info *)dev_id; 634 struct nm256_info *card = (struct nm256_info *)dev_id;
635 u32 status; 635 u32 status;
diff --git a/sound/oss/pas2_card.c b/sound/oss/pas2_card.c
index 4ebb9638746e..25f3a22c52ee 100644
--- a/sound/oss/pas2_card.c
+++ b/sound/oss/pas2_card.c
@@ -88,7 +88,7 @@ void pas_write(unsigned char data, int ioaddr)
88 88
89/******************* Begin of the Interrupt Handler ********************/ 89/******************* Begin of the Interrupt Handler ********************/
90 90
91static irqreturn_t pasintr(int irq, void *dev_id, struct pt_regs *dummy) 91static irqreturn_t pasintr(int irq, void *dev_id)
92{ 92{
93 int status; 93 int status;
94 94
diff --git a/sound/oss/sb_common.c b/sound/oss/sb_common.c
index bbe5b7596d0e..440537c72604 100644
--- a/sound/oss/sb_common.c
+++ b/sound/oss/sb_common.c
@@ -132,7 +132,7 @@ static void sb_intr (sb_devc *devc)
132 132
133 if (src & 4) /* MPU401 interrupt */ 133 if (src & 4) /* MPU401 interrupt */
134 if(devc->midi_irq_cookie) 134 if(devc->midi_irq_cookie)
135 uart401intr(devc->irq, devc->midi_irq_cookie, NULL); 135 uart401intr(devc->irq, devc->midi_irq_cookie);
136 136
137 if (!(src & 3)) 137 if (!(src & 3))
138 return; /* Not a DSP interrupt */ 138 return; /* Not a DSP interrupt */
@@ -200,7 +200,7 @@ static void pci_intr(sb_devc *devc)
200 sb_intr(devc); 200 sb_intr(devc);
201} 201}
202 202
203static irqreturn_t sbintr(int irq, void *dev_id, struct pt_regs *dummy) 203static irqreturn_t sbintr(int irq, void *dev_id)
204{ 204{
205 sb_devc *devc = dev_id; 205 sb_devc *devc = dev_id;
206 206
diff --git a/sound/oss/sh_dac_audio.c b/sound/oss/sh_dac_audio.c
index 83ff8a71f716..3b3b4da8cfd3 100644
--- a/sound/oss/sh_dac_audio.c
+++ b/sound/oss/sh_dac_audio.c
@@ -263,7 +263,7 @@ struct file_operations dac_audio_fops = {
263 .release = dac_audio_release, 263 .release = dac_audio_release,
264}; 264};
265 265
266static irqreturn_t timer1_interrupt(int irq, void *dev, struct pt_regs *regs) 266static irqreturn_t timer1_interrupt(int irq, void *dev)
267{ 267{
268 unsigned long timer_status; 268 unsigned long timer_status;
269 269
diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c
index 3edf8d4ac998..471c274c5000 100644
--- a/sound/oss/swarm_cs4297a.c
+++ b/sound/oss/swarm_cs4297a.c
@@ -2505,7 +2505,7 @@ static /*const */ struct file_operations cs4297a_audio_fops = {
2505 .release = cs4297a_release, 2505 .release = cs4297a_release,
2506}; 2506};
2507 2507
2508static void cs4297a_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2508static void cs4297a_interrupt(int irq, void *dev_id)
2509{ 2509{
2510 struct cs4297a_state *s = (struct cs4297a_state *) dev_id; 2510 struct cs4297a_state *s = (struct cs4297a_state *) dev_id;
2511 u32 status; 2511 u32 status;
diff --git a/sound/oss/trident.c b/sound/oss/trident.c
index 147c816a1f22..7a363a178afd 100644
--- a/sound/oss/trident.c
+++ b/sound/oss/trident.c
@@ -1811,7 +1811,7 @@ cyber_address_interrupt(struct trident_card *card)
1811} 1811}
1812 1812
1813static irqreturn_t 1813static irqreturn_t
1814trident_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1814trident_interrupt(int irq, void *dev_id)
1815{ 1815{
1816 struct trident_card *card = (struct trident_card *) dev_id; 1816 struct trident_card *card = (struct trident_card *) dev_id;
1817 u32 event; 1817 u32 event;
diff --git a/sound/oss/uart401.c b/sound/oss/uart401.c
index 8e18b6e25818..a446b826d5fc 100644
--- a/sound/oss/uart401.c
+++ b/sound/oss/uart401.c
@@ -96,7 +96,7 @@ static void uart401_input_loop(uart401_devc * devc)
96 printk(KERN_WARNING "Too much work in interrupt on uart401 (0x%X). UART jabbering ??\n", devc->base); 96 printk(KERN_WARNING "Too much work in interrupt on uart401 (0x%X). UART jabbering ??\n", devc->base);
97} 97}
98 98
99irqreturn_t uart401intr(int irq, void *dev_id, struct pt_regs *dummy) 99irqreturn_t uart401intr(int irq, void *dev_id)
100{ 100{
101 uart401_devc *devc = dev_id; 101 uart401_devc *devc = dev_id;
102 102
diff --git a/sound/oss/uart6850.c b/sound/oss/uart6850.c
index 501d3e654a67..f3f914aa92ee 100644
--- a/sound/oss/uart6850.c
+++ b/sound/oss/uart6850.c
@@ -104,7 +104,7 @@ static void uart6850_input_loop(void)
104 } 104 }
105} 105}
106 106
107static irqreturn_t m6850intr(int irq, void *dev_id, struct pt_regs *dummy) 107static irqreturn_t m6850intr(int irq, void *dev_id)
108{ 108{
109 if (input_avail()) 109 if (input_avail())
110 uart6850_input_loop(); 110 uart6850_input_loop();
diff --git a/sound/oss/via82cxxx_audio.c b/sound/oss/via82cxxx_audio.c
index 2fec42fc3482..17837d4b5ed3 100644
--- a/sound/oss/via82cxxx_audio.c
+++ b/sound/oss/via82cxxx_audio.c
@@ -1912,7 +1912,7 @@ static void via_intr_channel (struct via_info *card, struct via_channel *chan)
1912} 1912}
1913 1913
1914 1914
1915static irqreturn_t via_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1915static irqreturn_t via_interrupt(int irq, void *dev_id)
1916{ 1916{
1917 struct via_info *card = dev_id; 1917 struct via_info *card = dev_id;
1918 u32 status32; 1918 u32 status32;
@@ -1927,7 +1927,7 @@ static irqreturn_t via_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1927 { 1927 {
1928#ifdef CONFIG_MIDI_VIA82CXXX 1928#ifdef CONFIG_MIDI_VIA82CXXX
1929 if (card->midi_devc) 1929 if (card->midi_devc)
1930 uart401intr(irq, card->midi_devc, regs); 1930 uart401intr(irq, card->midi_devc);
1931#endif 1931#endif
1932 return IRQ_HANDLED; 1932 return IRQ_HANDLED;
1933 } 1933 }
@@ -1950,7 +1950,7 @@ static irqreturn_t via_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1950 return IRQ_HANDLED; 1950 return IRQ_HANDLED;
1951} 1951}
1952 1952
1953static irqreturn_t via_new_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1953static irqreturn_t via_new_interrupt(int irq, void *dev_id)
1954{ 1954{
1955 struct via_info *card = dev_id; 1955 struct via_info *card = dev_id;
1956 u32 status32; 1956 u32 status32;
diff --git a/sound/oss/vidc.c b/sound/oss/vidc.c
index 8932d89408ef..bb4a0969f461 100644
--- a/sound/oss/vidc.c
+++ b/sound/oss/vidc.c
@@ -372,7 +372,7 @@ static void vidc_audio_trigger(int dev, int enable_bits)
372 adev->flags |= DMA_ACTIVE; 372 adev->flags |= DMA_ACTIVE;
373 373
374 dma_interrupt = vidc_audio_dma_interrupt; 374 dma_interrupt = vidc_audio_dma_interrupt;
375 vidc_sound_dma_irq(0, NULL, NULL); 375 vidc_sound_dma_irq(0, NULL);
376 iomd_writeb(DMA_CR_E | 0x10, IOMD_SD0CR); 376 iomd_writeb(DMA_CR_E | 0x10, IOMD_SD0CR);
377 377
378 local_irq_restore(flags); 378 local_irq_restore(flags);
diff --git a/sound/oss/vidc.h b/sound/oss/vidc.h
index d5b8064dc565..0d1424751ecd 100644
--- a/sound/oss/vidc.h
+++ b/sound/oss/vidc.h
@@ -33,7 +33,7 @@ extern unsigned long vidc_fill_2x16_s(unsigned long ibuf, unsigned long iend,
33 * DMA Interrupt handler 33 * DMA Interrupt handler
34 */ 34 */
35 35
36extern irqreturn_t vidc_sound_dma_irq(int irqnr, void *ref, struct pt_regs *regs); 36extern irqreturn_t vidc_sound_dma_irq(int irqnr, void *ref);
37 37
38/* 38/*
39 * Filler routine pointer 39 * Filler routine pointer
diff --git a/sound/oss/vwsnd.c b/sound/oss/vwsnd.c
index 5f140c7586b3..6dfb9f4b03ec 100644
--- a/sound/oss/vwsnd.c
+++ b/sound/oss/vwsnd.c
@@ -2233,12 +2233,12 @@ static void vwsnd_audio_write_intr(vwsnd_dev_t *devc, unsigned int status)
2233 pcm_output(devc, underflown, 0); 2233 pcm_output(devc, underflown, 0);
2234} 2234}
2235 2235
2236static irqreturn_t vwsnd_audio_intr(int irq, void *dev_id, struct pt_regs *regs) 2236static irqreturn_t vwsnd_audio_intr(int irq, void *dev_id)
2237{ 2237{
2238 vwsnd_dev_t *devc = (vwsnd_dev_t *) dev_id; 2238 vwsnd_dev_t *devc = dev_id;
2239 unsigned int status; 2239 unsigned int status;
2240 2240
2241 DBGEV("(irq=%d, dev_id=0x%p, regs=0x%p)\n", irq, dev_id, regs); 2241 DBGEV("(irq=%d, dev_id=0x%p)\n", irq, dev_id);
2242 2242
2243 status = li_get_clear_intr_status(&devc->lith); 2243 status = li_get_clear_intr_status(&devc->lith);
2244 vwsnd_audio_read_intr(devc, status); 2244 vwsnd_audio_read_intr(devc, status);
diff --git a/sound/oss/waveartist.c b/sound/oss/waveartist.c
index 59a2f28eb5a5..c5bf363d32c2 100644
--- a/sound/oss/waveartist.c
+++ b/sound/oss/waveartist.c
@@ -833,7 +833,7 @@ static struct audio_driver waveartist_audio_driver = {
833 833
834 834
835static irqreturn_t 835static irqreturn_t
836waveartist_intr(int irq, void *dev_id, struct pt_regs *regs) 836waveartist_intr(int irq, void *dev_id)
837{ 837{
838 wavnc_info *devc = (wavnc_info *)dev_id; 838 wavnc_info *devc = (wavnc_info *)dev_id;
839 int irqstatus, status; 839 int irqstatus, status;
diff --git a/sound/parisc/harmony.c b/sound/parisc/harmony.c
index ce73f3eae78c..cf603337b321 100644
--- a/sound/parisc/harmony.c
+++ b/sound/parisc/harmony.c
@@ -193,7 +193,7 @@ harmony_set_control(struct snd_harmony *h)
193} 193}
194 194
195static irqreturn_t 195static irqreturn_t
196snd_harmony_interrupt(int irq, void *dev, struct pt_regs *regs) 196snd_harmony_interrupt(int irq, void *dev)
197{ 197{
198 u32 dstatus; 198 u32 dstatus;
199 struct snd_harmony *h = dev; 199 struct snd_harmony *h = dev;
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c
index dc28b111a06d..15be6ba87c82 100644
--- a/sound/pci/ac97/ac97_patch.c
+++ b/sound/pci/ac97/ac97_patch.c
@@ -530,7 +530,7 @@ AC97_ENUM("ALC Headphone Mux", wm9711_enum[1]),
530AC97_SINGLE("ALC Headphone Volume", AC97_VIDEO, 7, 7, 1), 530AC97_SINGLE("ALC Headphone Volume", AC97_VIDEO, 7, 7, 1),
531 531
532AC97_SINGLE("Out3 Switch", AC97_AUX, 15, 1, 1), 532AC97_SINGLE("Out3 Switch", AC97_AUX, 15, 1, 1),
533AC97_SINGLE("Out3 ZC Switch", AC97_AUX, 7, 1, 1), 533AC97_SINGLE("Out3 ZC Switch", AC97_AUX, 7, 1, 0),
534AC97_ENUM("Out3 Mux", wm9711_enum[2]), 534AC97_ENUM("Out3 Mux", wm9711_enum[2]),
535AC97_ENUM("Out3 LR Mux", wm9711_enum[3]), 535AC97_ENUM("Out3 LR Mux", wm9711_enum[3]),
536AC97_SINGLE("Out3 Volume", AC97_AUX, 0, 31, 1), 536AC97_SINGLE("Out3 Volume", AC97_AUX, 0, 31, 1),
@@ -575,13 +575,14 @@ AC97_SINGLE("Playback Attenuate (-6dB) Switch", AC97_MASTER_TONE, 6, 1, 0),
575 575
576AC97_SINGLE("ADC Switch", AC97_REC_GAIN, 15, 1, 1), 576AC97_SINGLE("ADC Switch", AC97_REC_GAIN, 15, 1, 1),
577AC97_ENUM("Capture Volume Steps", wm9711_enum[6]), 577AC97_ENUM("Capture Volume Steps", wm9711_enum[6]),
578AC97_DOUBLE("Capture Volume", AC97_REC_GAIN, 8, 0, 15, 1), 578AC97_DOUBLE("Capture Volume", AC97_REC_GAIN, 8, 0, 63, 1),
579AC97_SINGLE("Capture ZC Switch", AC97_REC_GAIN, 7, 1, 0), 579AC97_SINGLE("Capture ZC Switch", AC97_REC_GAIN, 7, 1, 0),
580 580
581AC97_SINGLE("Mic 1 to Phone Switch", AC97_MIC, 14, 1, 1), 581AC97_SINGLE("Mic 1 to Phone Switch", AC97_MIC, 14, 1, 1),
582AC97_SINGLE("Mic 2 to Phone Switch", AC97_MIC, 13, 1, 1), 582AC97_SINGLE("Mic 2 to Phone Switch", AC97_MIC, 13, 1, 1),
583AC97_ENUM("Mic Select Source", wm9711_enum[7]), 583AC97_ENUM("Mic Select Source", wm9711_enum[7]),
584AC97_SINGLE("Mic 1 Volume", AC97_MIC, 8, 32, 1), 584AC97_SINGLE("Mic 1 Volume", AC97_MIC, 8, 31, 1),
585AC97_SINGLE("Mic 2 Volume", AC97_MIC, 0, 31, 1),
585AC97_SINGLE("Mic 20dB Boost Switch", AC97_MIC, 7, 1, 0), 586AC97_SINGLE("Mic 20dB Boost Switch", AC97_MIC, 7, 1, 0),
586 587
587AC97_SINGLE("Master ZC Switch", AC97_MASTER, 7, 1, 0), 588AC97_SINGLE("Master ZC Switch", AC97_MASTER, 7, 1, 0),
diff --git a/sound/pci/ad1889.c b/sound/pci/ad1889.c
index 0786d0edaca5..cbf8331c3d33 100644
--- a/sound/pci/ad1889.c
+++ b/sound/pci/ad1889.c
@@ -596,9 +596,7 @@ static struct snd_pcm_ops snd_ad1889_capture_ops = {
596}; 596};
597 597
598static irqreturn_t 598static irqreturn_t
599snd_ad1889_interrupt(int irq, 599snd_ad1889_interrupt(int irq, void *dev_id)
600 void *dev_id,
601 struct pt_regs *regs)
602{ 600{
603 unsigned long st; 601 unsigned long st;
604 struct snd_ad1889 *chip = dev_id; 602 struct snd_ad1889 *chip = dev_id;
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c
index 74668398eac5..13a8cefa7749 100644
--- a/sound/pci/ali5451/ali5451.c
+++ b/sound/pci/ali5451/ali5451.c
@@ -1047,9 +1047,7 @@ static void snd_ali_interrupt(struct snd_ali * codec)
1047} 1047}
1048 1048
1049 1049
1050static irqreturn_t snd_ali_card_interrupt(int irq, 1050static irqreturn_t snd_ali_card_interrupt(int irq, void *dev_id)
1051 void *dev_id,
1052 struct pt_regs *regs)
1053{ 1051{
1054 struct snd_ali *codec = dev_id; 1052 struct snd_ali *codec = dev_id;
1055 1053
diff --git a/sound/pci/als300.c b/sound/pci/als300.c
index 96cfb8ae5055..9b16c299f0a9 100644
--- a/sound/pci/als300.c
+++ b/sound/pci/als300.c
@@ -204,8 +204,7 @@ static int snd_als300_dev_free(struct snd_device *device)
204 return snd_als300_free(chip); 204 return snd_als300_free(chip);
205} 205}
206 206
207static irqreturn_t snd_als300_interrupt(int irq, void *dev_id, 207static irqreturn_t snd_als300_interrupt(int irq, void *dev_id)
208 struct pt_regs *regs)
209{ 208{
210 u8 status; 209 u8 status;
211 struct snd_als300 *chip = dev_id; 210 struct snd_als300 *chip = dev_id;
@@ -236,8 +235,7 @@ static irqreturn_t snd_als300_interrupt(int irq, void *dev_id,
236 return IRQ_HANDLED; 235 return IRQ_HANDLED;
237} 236}
238 237
239static irqreturn_t snd_als300plus_interrupt(int irq, void *dev_id, 238static irqreturn_t snd_als300plus_interrupt(int irq, void *dev_id)
240 struct pt_regs *regs)
241{ 239{
242 u8 general, mpu, dram; 240 u8 general, mpu, dram;
243 struct snd_als300 *chip = dev_id; 241 struct snd_als300 *chip = dev_id;
diff --git a/sound/pci/als4000.c b/sound/pci/als4000.c
index 9e596f750cbd..15fc3929b5f7 100644
--- a/sound/pci/als4000.c
+++ b/sound/pci/als4000.c
@@ -385,7 +385,7 @@ static snd_pcm_uframes_t snd_als4000_playback_pointer(struct snd_pcm_substream *
385 * SB IRQ status. 385 * SB IRQ status.
386 * And do we *really* need the lock here for *reading* SB_DSP4_IRQSTATUS?? 386 * And do we *really* need the lock here for *reading* SB_DSP4_IRQSTATUS??
387 * */ 387 * */
388static irqreturn_t snd_als4000_interrupt(int irq, void *dev_id, struct pt_regs *regs) 388static irqreturn_t snd_als4000_interrupt(int irq, void *dev_id)
389{ 389{
390 struct snd_sb *chip = dev_id; 390 struct snd_sb *chip = dev_id;
391 unsigned gcr_status; 391 unsigned gcr_status;
@@ -399,7 +399,7 @@ static irqreturn_t snd_als4000_interrupt(int irq, void *dev_id, struct pt_regs *
399 if ((gcr_status & 0x40) && (chip->capture_substream)) /* capturing */ 399 if ((gcr_status & 0x40) && (chip->capture_substream)) /* capturing */
400 snd_pcm_period_elapsed(chip->capture_substream); 400 snd_pcm_period_elapsed(chip->capture_substream);
401 if ((gcr_status & 0x10) && (chip->rmidi)) /* MPU401 interrupt */ 401 if ((gcr_status & 0x10) && (chip->rmidi)) /* MPU401 interrupt */
402 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 402 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
403 /* release the gcr */ 403 /* release the gcr */
404 outb(gcr_status, chip->alt_port + 0xe); 404 outb(gcr_status, chip->alt_port + 0xe);
405 405
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c
index 347e25ff073d..3e8fc5a0006a 100644
--- a/sound/pci/atiixp.c
+++ b/sound/pci/atiixp.c
@@ -1300,7 +1300,7 @@ static int __devinit snd_atiixp_pcm_new(struct atiixp *chip)
1300/* 1300/*
1301 * interrupt handler 1301 * interrupt handler
1302 */ 1302 */
1303static irqreturn_t snd_atiixp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1303static irqreturn_t snd_atiixp_interrupt(int irq, void *dev_id)
1304{ 1304{
1305 struct atiixp *chip = dev_id; 1305 struct atiixp *chip = dev_id;
1306 unsigned int status; 1306 unsigned int status;
diff --git a/sound/pci/atiixp_modem.c b/sound/pci/atiixp_modem.c
index a89d67c4598b..c5dda1bf3d46 100644
--- a/sound/pci/atiixp_modem.c
+++ b/sound/pci/atiixp_modem.c
@@ -1017,7 +1017,7 @@ static int __devinit snd_atiixp_pcm_new(struct atiixp_modem *chip)
1017/* 1017/*
1018 * interrupt handler 1018 * interrupt handler
1019 */ 1019 */
1020static irqreturn_t snd_atiixp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1020static irqreturn_t snd_atiixp_interrupt(int irq, void *dev_id)
1021{ 1021{
1022 struct atiixp_modem *chip = dev_id; 1022 struct atiixp_modem *chip = dev_id;
1023 unsigned int status; 1023 unsigned int status;
diff --git a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c
index ef189d7f09d3..6ed5ad59f5b5 100644
--- a/sound/pci/au88x0/au88x0.c
+++ b/sound/pci/au88x0/au88x0.c
@@ -128,6 +128,7 @@ static int snd_vortex_dev_free(struct snd_device *device)
128 // Take down PCI interface. 128 // Take down PCI interface.
129 synchronize_irq(vortex->irq); 129 synchronize_irq(vortex->irq);
130 free_irq(vortex->irq, vortex); 130 free_irq(vortex->irq, vortex);
131 iounmap(vortex->mmio);
131 pci_release_regions(vortex->pci_dev); 132 pci_release_regions(vortex->pci_dev);
132 pci_disable_device(vortex->pci_dev); 133 pci_disable_device(vortex->pci_dev);
133 kfree(vortex); 134 kfree(vortex);
diff --git a/sound/pci/au88x0/au88x0.h b/sound/pci/au88x0/au88x0.h
index b1cfc3c79d07..5ccf0b1ec670 100644
--- a/sound/pci/au88x0/au88x0.h
+++ b/sound/pci/au88x0/au88x0.h
@@ -236,8 +236,7 @@ static void vortex_spdif_init(vortex_t * vortex, int spdif_sr, int spdif_mode);
236static int vortex_core_init(vortex_t * card); 236static int vortex_core_init(vortex_t * card);
237static int vortex_core_shutdown(vortex_t * card); 237static int vortex_core_shutdown(vortex_t * card);
238static void vortex_enable_int(vortex_t * card); 238static void vortex_enable_int(vortex_t * card);
239static irqreturn_t vortex_interrupt(int irq, void *dev_id, 239static irqreturn_t vortex_interrupt(int irq, void *dev_id);
240 struct pt_regs *regs);
241static int vortex_alsafmt_aspfmt(int alsafmt); 240static int vortex_alsafmt_aspfmt(int alsafmt);
242 241
243/* Connection stuff. */ 242/* Connection stuff. */
diff --git a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c
index 5299cce583d3..4a336eaae9d2 100644
--- a/sound/pci/au88x0/au88x0_core.c
+++ b/sound/pci/au88x0/au88x0_core.c
@@ -2385,7 +2385,7 @@ static void vortex_disable_int(vortex_t * card)
2385 hwread(card->mmio, VORTEX_CTRL) & ~CTRL_IRQ_ENABLE); 2385 hwread(card->mmio, VORTEX_CTRL) & ~CTRL_IRQ_ENABLE);
2386} 2386}
2387 2387
2388static irqreturn_t vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2388static irqreturn_t vortex_interrupt(int irq, void *dev_id)
2389{ 2389{
2390 vortex_t *vortex = dev_id; 2390 vortex_t *vortex = dev_id;
2391 int i, handled; 2391 int i, handled;
@@ -2462,7 +2462,7 @@ static irqreturn_t vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs)
2462 } 2462 }
2463 if (source & IRQ_MIDI) { 2463 if (source & IRQ_MIDI) {
2464 snd_mpu401_uart_interrupt(vortex->irq, 2464 snd_mpu401_uart_interrupt(vortex->irq,
2465 vortex->rmidi->private_data, regs); 2465 vortex->rmidi->private_data);
2466 handled = 1; 2466 handled = 1;
2467 } 2467 }
2468 2468
diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c
index bac8e9cfd921..692f203d65d8 100644
--- a/sound/pci/azt3328.c
+++ b/sound/pci/azt3328.c
@@ -1191,7 +1191,7 @@ snd_azf3328_capture_pointer(struct snd_pcm_substream *substream)
1191} 1191}
1192 1192
1193static irqreturn_t 1193static irqreturn_t
1194snd_azf3328_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1194snd_azf3328_interrupt(int irq, void *dev_id)
1195{ 1195{
1196 struct snd_azf3328 *chip = dev_id; 1196 struct snd_azf3328 *chip = dev_id;
1197 u8 status, which; 1197 u8 status, which;
@@ -1256,7 +1256,7 @@ snd_azf3328_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1256 /* MPU401 has less critical IRQ requirements 1256 /* MPU401 has less critical IRQ requirements
1257 * than timer and playback/recording, right? */ 1257 * than timer and playback/recording, right? */
1258 if (status & IRQ_MPU401) { 1258 if (status & IRQ_MPU401) {
1259 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 1259 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
1260 1260
1261 /* hmm, do we have to ack the IRQ here somehow? 1261 /* hmm, do we have to ack the IRQ here somehow?
1262 * If so, then I don't know how... */ 1262 * If so, then I don't know how... */
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c
index 97a280a246cb..d33a37086df9 100644
--- a/sound/pci/bt87x.c
+++ b/sound/pci/bt87x.c
@@ -269,7 +269,7 @@ static void snd_bt87x_pci_error(struct snd_bt87x *chip, unsigned int status)
269 } 269 }
270} 270}
271 271
272static irqreturn_t snd_bt87x_interrupt(int irq, void *dev_id, struct pt_regs *regs) 272static irqreturn_t snd_bt87x_interrupt(int irq, void *dev_id)
273{ 273{
274 struct snd_bt87x *chip = dev_id; 274 struct snd_bt87x *chip = dev_id;
275 unsigned int status, irq_status; 275 unsigned int status, irq_status;
diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c
index 12bbbb6afd2d..6fa4a302f7de 100644
--- a/sound/pci/ca0106/ca0106_main.c
+++ b/sound/pci/ca0106/ca0106_main.c
@@ -1058,8 +1058,7 @@ static int snd_ca0106_dev_free(struct snd_device *device)
1058 return snd_ca0106_free(chip); 1058 return snd_ca0106_free(chip);
1059} 1059}
1060 1060
1061static irqreturn_t snd_ca0106_interrupt(int irq, void *dev_id, 1061static irqreturn_t snd_ca0106_interrupt(int irq, void *dev_id)
1062 struct pt_regs *regs)
1063{ 1062{
1064 unsigned int status; 1063 unsigned int status;
1065 1064
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index 876b64464b6f..1f7e71083069 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -1294,7 +1294,7 @@ static int snd_cmipci_capture_spdif_hw_free(struct snd_pcm_substream *subs)
1294/* 1294/*
1295 * interrupt handler 1295 * interrupt handler
1296 */ 1296 */
1297static irqreturn_t snd_cmipci_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1297static irqreturn_t snd_cmipci_interrupt(int irq, void *dev_id)
1298{ 1298{
1299 struct cmipci *cm = dev_id; 1299 struct cmipci *cm = dev_id;
1300 unsigned int status, mask = 0; 1300 unsigned int status, mask = 0;
@@ -1315,7 +1315,7 @@ static irqreturn_t snd_cmipci_interrupt(int irq, void *dev_id, struct pt_regs *r
1315 spin_unlock(&cm->reg_lock); 1315 spin_unlock(&cm->reg_lock);
1316 1316
1317 if (cm->rmidi && (status & CM_UARTINT)) 1317 if (cm->rmidi && (status & CM_UARTINT))
1318 snd_mpu401_uart_interrupt(irq, cm->rmidi->private_data, regs); 1318 snd_mpu401_uart_interrupt(irq, cm->rmidi->private_data);
1319 1319
1320 if (cm->pcm) { 1320 if (cm->pcm) {
1321 if ((status & CM_CHINT0) && cm->channel[0].running) 1321 if ((status & CM_CHINT0) && cm->channel[0].running)
diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c
index 1990430a21c1..d54924e60bb1 100644
--- a/sound/pci/cs4281.c
+++ b/sound/pci/cs4281.c
@@ -493,7 +493,7 @@ struct cs4281 {
493 493
494}; 494};
495 495
496static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs); 496static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id);
497 497
498static struct pci_device_id snd_cs4281_ids[] = { 498static struct pci_device_id snd_cs4281_ids[] = {
499 { 0x1013, 0x6005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4281 */ 499 { 0x1013, 0x6005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4281 */
@@ -1814,7 +1814,7 @@ static int __devinit snd_cs4281_midi(struct cs4281 * chip, int device,
1814 * Interrupt handler 1814 * Interrupt handler
1815 */ 1815 */
1816 1816
1817static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1817static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id)
1818{ 1818{
1819 struct cs4281 *chip = dev_id; 1819 struct cs4281 *chip = dev_id;
1820 unsigned int status, dma, val; 1820 unsigned int status, dma, val;
diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
index 4851847180d2..16d4ebf2a33f 100644
--- a/sound/pci/cs46xx/cs46xx_lib.c
+++ b/sound/pci/cs46xx/cs46xx_lib.c
@@ -1149,7 +1149,7 @@ static int snd_cs46xx_capture_prepare(struct snd_pcm_substream *substream)
1149 return 0; 1149 return 0;
1150} 1150}
1151 1151
1152static irqreturn_t snd_cs46xx_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1152static irqreturn_t snd_cs46xx_interrupt(int irq, void *dev_id)
1153{ 1153{
1154 struct snd_cs46xx *chip = dev_id; 1154 struct snd_cs46xx *chip = dev_id;
1155 u32 status1; 1155 u32 status1;
diff --git a/sound/pci/cs5535audio/cs5535audio.c b/sound/pci/cs5535audio/cs5535audio.c
index 64c7826e8b8c..2441238f2004 100644
--- a/sound/pci/cs5535audio/cs5535audio.c
+++ b/sound/pci/cs5535audio/cs5535audio.c
@@ -203,8 +203,7 @@ static void process_bm1_irq(struct cs5535audio *cs5535au)
203 } 203 }
204} 204}
205 205
206static irqreturn_t snd_cs5535audio_interrupt(int irq, void *dev_id, 206static irqreturn_t snd_cs5535audio_interrupt(int irq, void *dev_id)
207 struct pt_regs *regs)
208{ 207{
209 u16 acc_irq_stat; 208 u16 acc_irq_stat;
210 u8 bm_stat; 209 u8 bm_stat;
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c
index c3dafa29054f..e5e88fe54de0 100644
--- a/sound/pci/echoaudio/echoaudio.c
+++ b/sound/pci/echoaudio/echoaudio.c
@@ -1818,8 +1818,7 @@ static struct snd_kcontrol_new snd_echo_channels_info __devinitdata = {
1818 IRQ Handler 1818 IRQ Handler
1819******************************************************************************/ 1819******************************************************************************/
1820 1820
1821static irqreturn_t snd_echo_interrupt(int irq, void *dev_id, 1821static irqreturn_t snd_echo_interrupt(int irq, void *dev_id)
1822 struct pt_regs *regs)
1823{ 1822{
1824 struct echoaudio *chip = dev_id; 1823 struct echoaudio *chip = dev_id;
1825 struct snd_pcm_substream *substream; 1824 struct snd_pcm_substream *substream;
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
index be65d4db8e27..8058059c56e9 100644
--- a/sound/pci/emu10k1/emu10k1_main.c
+++ b/sound/pci/emu10k1/emu10k1_main.c
@@ -1461,8 +1461,8 @@ void snd_emu10k1_resume_regs(struct snd_emu10k1 *emu)
1461 1461
1462 /* resore for spdif */ 1462 /* resore for spdif */
1463 if (emu->audigy) 1463 if (emu->audigy)
1464 outl(emu->port + A_IOCFG, emu->saved_a_iocfg); 1464 outl(emu->saved_a_iocfg, emu->port + A_IOCFG);
1465 outl(emu->port + HCFG, emu->saved_hcfg); 1465 outl(emu->saved_hcfg, emu->port + HCFG);
1466 1466
1467 val = emu->saved_ptr; 1467 val = emu->saved_ptr;
1468 for (reg = saved_regs; *reg != 0xff; reg++) 1468 for (reg = saved_regs; *reg != 0xff; reg++)
diff --git a/sound/pci/emu10k1/emu10k1x.c b/sound/pci/emu10k1/emu10k1x.c
index da1610a571b8..c46905a11175 100644
--- a/sound/pci/emu10k1/emu10k1x.c
+++ b/sound/pci/emu10k1/emu10k1x.c
@@ -780,8 +780,7 @@ static int snd_emu10k1x_dev_free(struct snd_device *device)
780 return snd_emu10k1x_free(chip); 780 return snd_emu10k1x_free(chip);
781} 781}
782 782
783static irqreturn_t snd_emu10k1x_interrupt(int irq, void *dev_id, 783static irqreturn_t snd_emu10k1x_interrupt(int irq, void *dev_id)
784 struct pt_regs *regs)
785{ 784{
786 unsigned int status; 785 unsigned int status;
787 786
diff --git a/sound/pci/emu10k1/irq.c b/sound/pci/emu10k1/irq.c
index 1076af4c3669..4f18f7e8bcfb 100644
--- a/sound/pci/emu10k1/irq.c
+++ b/sound/pci/emu10k1/irq.c
@@ -30,7 +30,7 @@
30#include <sound/core.h> 30#include <sound/core.h>
31#include <sound/emu10k1.h> 31#include <sound/emu10k1.h>
32 32
33irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs) 33irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id)
34{ 34{
35 struct snd_emu10k1 *emu = dev_id; 35 struct snd_emu10k1 *emu = dev_id;
36 unsigned int status, status2, orig_status, orig_status2; 36 unsigned int status, status2, orig_status, orig_status2;
diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c
index a8a601fc781f..8cb4fb2412db 100644
--- a/sound/pci/ens1370.c
+++ b/sound/pci/ens1370.c
@@ -444,7 +444,7 @@ struct ensoniq {
444#endif 444#endif
445}; 445};
446 446
447static irqreturn_t snd_audiopci_interrupt(int irq, void *dev_id, struct pt_regs *regs); 447static irqreturn_t snd_audiopci_interrupt(int irq, void *dev_id);
448 448
449static struct pci_device_id snd_audiopci_ids[] = { 449static struct pci_device_id snd_audiopci_ids[] = {
450#ifdef CHIP1370 450#ifdef CHIP1370
@@ -2404,7 +2404,7 @@ static int __devinit snd_ensoniq_midi(struct ensoniq * ensoniq, int device,
2404 * Interrupt handler 2404 * Interrupt handler
2405 */ 2405 */
2406 2406
2407static irqreturn_t snd_audiopci_interrupt(int irq, void *dev_id, struct pt_regs *regs) 2407static irqreturn_t snd_audiopci_interrupt(int irq, void *dev_id)
2408{ 2408{
2409 struct ensoniq *ensoniq = dev_id; 2409 struct ensoniq *ensoniq = dev_id;
2410 unsigned int status, sctrl; 2410 unsigned int status, sctrl;
diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c
index 3ce5a4e7e31f..2da988f78ba7 100644
--- a/sound/pci/es1938.c
+++ b/sound/pci/es1938.c
@@ -241,7 +241,7 @@ struct es1938 {
241#endif 241#endif
242}; 242};
243 243
244static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs); 244static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id);
245 245
246static struct pci_device_id snd_es1938_ids[] = { 246static struct pci_device_id snd_es1938_ids[] = {
247 { 0x125d, 0x1969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Solo-1 */ 247 { 0x125d, 0x1969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Solo-1 */
@@ -1642,7 +1642,7 @@ static int __devinit snd_es1938_create(struct snd_card *card,
1642/* -------------------------------------------------------------------- 1642/* --------------------------------------------------------------------
1643 * Interrupt handler 1643 * Interrupt handler
1644 * -------------------------------------------------------------------- */ 1644 * -------------------------------------------------------------------- */
1645static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1645static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id)
1646{ 1646{
1647 struct es1938 *chip = dev_id; 1647 struct es1938 *chip = dev_id;
1648 unsigned char status, audiostatus; 1648 unsigned char status, audiostatus;
@@ -1714,7 +1714,7 @@ static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *r
1714 // snd_es1938_mixer_bits(chip, ESSSB_IREG_MPU401CONTROL, 0x40, 0); /* ack? */ 1714 // snd_es1938_mixer_bits(chip, ESSSB_IREG_MPU401CONTROL, 0x40, 0); /* ack? */
1715 if (chip->rmidi) { 1715 if (chip->rmidi) {
1716 handled = 1; 1716 handled = 1;
1717 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 1717 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
1718 } 1718 }
1719 } 1719 }
1720 return IRQ_RETVAL(handled); 1720 return IRQ_RETVAL(handled);
diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c
index f3c40385c87d..b9d723c7e1db 100644
--- a/sound/pci/es1968.c
+++ b/sound/pci/es1968.c
@@ -590,7 +590,7 @@ struct es1968 {
590#endif 590#endif
591}; 591};
592 592
593static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs); 593static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id);
594 594
595static struct pci_device_id snd_es1968_ids[] = { 595static struct pci_device_id snd_es1968_ids[] = {
596 /* Maestro 1 */ 596 /* Maestro 1 */
@@ -1962,7 +1962,7 @@ static void es1968_update_hw_volume(unsigned long private_data)
1962/* 1962/*
1963 * interrupt handler 1963 * interrupt handler
1964 */ 1964 */
1965static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1965static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id)
1966{ 1966{
1967 struct es1968 *chip = dev_id; 1967 struct es1968 *chip = dev_id;
1968 u32 event; 1968 u32 event;
@@ -1979,7 +1979,7 @@ static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *r
1979 outb(0xFF, chip->io_port + 0x1A); 1979 outb(0xFF, chip->io_port + 0x1A);
1980 1980
1981 if ((event & ESM_MPU401_IRQ) && chip->rmidi) { 1981 if ((event & ESM_MPU401_IRQ) && chip->rmidi) {
1982 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 1982 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
1983 } 1983 }
1984 1984
1985 if (event & ESM_SOUND_IRQ) { 1985 if (event & ESM_SOUND_IRQ) {
diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c
index bdfda1997d5b..3ec7d7ee04dd 100644
--- a/sound/pci/fm801.c
+++ b/sound/pci/fm801.c
@@ -520,7 +520,7 @@ static snd_pcm_uframes_t snd_fm801_capture_pointer(struct snd_pcm_substream *sub
520 return bytes_to_frames(substream->runtime, ptr); 520 return bytes_to_frames(substream->runtime, ptr);
521} 521}
522 522
523static irqreturn_t snd_fm801_interrupt(int irq, void *dev_id, struct pt_regs *regs) 523static irqreturn_t snd_fm801_interrupt(int irq, void *dev_id)
524{ 524{
525 struct fm801 *chip = dev_id; 525 struct fm801 *chip = dev_id;
526 unsigned short status; 526 unsigned short status;
@@ -561,7 +561,7 @@ static irqreturn_t snd_fm801_interrupt(int irq, void *dev_id, struct pt_regs *re
561 snd_pcm_period_elapsed(chip->capture_substream); 561 snd_pcm_period_elapsed(chip->capture_substream);
562 } 562 }
563 if (chip->rmidi && (status & FM801_IRQ_MPU)) 563 if (chip->rmidi && (status & FM801_IRQ_MPU))
564 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 564 snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
565 if (status & FM801_IRQ_VOLUME) 565 if (status & FM801_IRQ_VOLUME)
566 ;/* TODO */ 566 ;/* TODO */
567 567
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index e9d4cb4d07e1..feeed12920b4 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -811,7 +811,7 @@ static void azx_init_chip(struct azx *chip)
811/* 811/*
812 * interrupt handler 812 * interrupt handler
813 */ 813 */
814static irqreturn_t azx_interrupt(int irq, void *dev_id, struct pt_regs *regs) 814static irqreturn_t azx_interrupt(int irq, void *dev_id)
815{ 815{
816 struct azx *chip = dev_id; 816 struct azx *chip = dev_id;
817 struct azx_dev *azx_dev; 817 struct azx_dev *azx_dev;
@@ -1682,6 +1682,7 @@ static struct pci_device_id azx_ids[] = {
1682 { 0x10b9, 0x5461, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ULI }, /* ULI M5461 */ 1682 { 0x10b9, 0x5461, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ULI }, /* ULI M5461 */
1683 { 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 026c */ 1683 { 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 026c */
1684 { 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 0371 */ 1684 { 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 0371 */
1685 { 0x10de, 0x03f0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 03f0 */
1685 { 0, } 1686 { 0, }
1686}; 1687};
1687MODULE_DEVICE_TABLE(pci, azx_ids); 1688MODULE_DEVICE_TABLE(pci, azx_ids);
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index d08d2e399c8f..84a3eb8aacc2 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -5076,6 +5076,10 @@ static struct hda_board_config alc883_cfg_tbl[] = {
5076 { .modelname = "acer", .config = ALC883_ACER }, 5076 { .modelname = "acer", .config = ALC883_ACER },
5077 { .pci_subvendor = 0x1025, .pci_subdevice = 0/*0x0102*/, 5077 { .pci_subvendor = 0x1025, .pci_subdevice = 0/*0x0102*/,
5078 .config = ALC883_ACER }, 5078 .config = ALC883_ACER },
5079 { .pci_subvendor = 0x1025, .pci_subdevice = 0x0102,
5080 .config = ALC883_ACER },
5081 { .pci_subvendor = 0x1025, .pci_subdevice = 0x009f,
5082 .config = ALC883_ACER },
5079 { .modelname = "auto", .config = ALC883_AUTO }, 5083 { .modelname = "auto", .config = ALC883_AUTO },
5080 {} 5084 {}
5081}; 5085};
diff --git a/sound/pci/hda/patch_si3054.c b/sound/pci/hda/patch_si3054.c
index 76ec3d75fa9e..cc87dff1eb56 100644
--- a/sound/pci/hda/patch_si3054.c
+++ b/sound/pci/hda/patch_si3054.c
@@ -297,8 +297,13 @@ static int patch_si3054(struct hda_codec *codec)
297struct hda_codec_preset snd_hda_preset_si3054[] = { 297struct hda_codec_preset snd_hda_preset_si3054[] = {
298 { .id = 0x163c3055, .name = "Si3054", .patch = patch_si3054 }, 298 { .id = 0x163c3055, .name = "Si3054", .patch = patch_si3054 },
299 { .id = 0x163c3155, .name = "Si3054", .patch = patch_si3054 }, 299 { .id = 0x163c3155, .name = "Si3054", .patch = patch_si3054 },
300 { .id = 0x11c11040, .name = "Si3054", .patch = patch_si3054 },
300 { .id = 0x11c13026, .name = "Si3054", .patch = patch_si3054 }, 301 { .id = 0x11c13026, .name = "Si3054", .patch = patch_si3054 },
302 { .id = 0x11c13055, .name = "Si3054", .patch = patch_si3054 },
303 { .id = 0x11c13155, .name = "Si3054", .patch = patch_si3054 },
304 { .id = 0x10573055, .name = "Si3054", .patch = patch_si3054 },
301 { .id = 0x10573057, .name = "Si3054", .patch = patch_si3054 }, 305 { .id = 0x10573057, .name = "Si3054", .patch = patch_si3054 },
306 { .id = 0x10573155, .name = "Si3054", .patch = patch_si3054 },
302 {} 307 {}
303}; 308};
304 309
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
index dc69392eafa3..8a576b78bee5 100644
--- a/sound/pci/ice1712/ice1712.c
+++ b/sound/pci/ice1712/ice1712.c
@@ -420,7 +420,7 @@ static void snd_ice1712_set_input_clock_source(struct snd_ice1712 *ice, int spdi
420 * Interrupt handler 420 * Interrupt handler
421 */ 421 */
422 422
423static irqreturn_t snd_ice1712_interrupt(int irq, void *dev_id, struct pt_regs *regs) 423static irqreturn_t snd_ice1712_interrupt(int irq, void *dev_id)
424{ 424{
425 struct snd_ice1712 *ice = dev_id; 425 struct snd_ice1712 *ice = dev_id;
426 unsigned char status; 426 unsigned char status;
@@ -433,7 +433,7 @@ static irqreturn_t snd_ice1712_interrupt(int irq, void *dev_id, struct pt_regs *
433 handled = 1; 433 handled = 1;
434 if (status & ICE1712_IRQ_MPU1) { 434 if (status & ICE1712_IRQ_MPU1) {
435 if (ice->rmidi[0]) 435 if (ice->rmidi[0])
436 snd_mpu401_uart_interrupt(irq, ice->rmidi[0]->private_data, regs); 436 snd_mpu401_uart_interrupt(irq, ice->rmidi[0]->private_data);
437 outb(ICE1712_IRQ_MPU1, ICEREG(ice, IRQSTAT)); 437 outb(ICE1712_IRQ_MPU1, ICEREG(ice, IRQSTAT));
438 status &= ~ICE1712_IRQ_MPU1; 438 status &= ~ICE1712_IRQ_MPU1;
439 } 439 }
@@ -441,7 +441,7 @@ static irqreturn_t snd_ice1712_interrupt(int irq, void *dev_id, struct pt_regs *
441 outb(ICE1712_IRQ_TIMER, ICEREG(ice, IRQSTAT)); 441 outb(ICE1712_IRQ_TIMER, ICEREG(ice, IRQSTAT));
442 if (status & ICE1712_IRQ_MPU2) { 442 if (status & ICE1712_IRQ_MPU2) {
443 if (ice->rmidi[1]) 443 if (ice->rmidi[1])
444 snd_mpu401_uart_interrupt(irq, ice->rmidi[1]->private_data, regs); 444 snd_mpu401_uart_interrupt(irq, ice->rmidi[1]->private_data);
445 outb(ICE1712_IRQ_MPU2, ICEREG(ice, IRQSTAT)); 445 outb(ICE1712_IRQ_MPU2, ICEREG(ice, IRQSTAT));
446 status &= ~ICE1712_IRQ_MPU2; 446 status &= ~ICE1712_IRQ_MPU2;
447 } 447 }
diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c
index 71d6aedc0749..e9cbfdf37059 100644
--- a/sound/pci/ice1712/ice1724.c
+++ b/sound/pci/ice1712/ice1724.c
@@ -218,7 +218,7 @@ static unsigned int snd_vt1724_get_gpio_data(struct snd_ice1712 *ice)
218 * Interrupt handler 218 * Interrupt handler
219 */ 219 */
220 220
221static irqreturn_t snd_vt1724_interrupt(int irq, void *dev_id, struct pt_regs *regs) 221static irqreturn_t snd_vt1724_interrupt(int irq, void *dev_id)
222{ 222{
223 struct snd_ice1712 *ice = dev_id; 223 struct snd_ice1712 *ice = dev_id;
224 unsigned char status; 224 unsigned char status;
@@ -236,7 +236,7 @@ static irqreturn_t snd_vt1724_interrupt(int irq, void *dev_id, struct pt_regs *r
236 */ 236 */
237 if ((status & VT1724_IRQ_MPU_RX)||(status & VT1724_IRQ_MPU_TX)) { 237 if ((status & VT1724_IRQ_MPU_RX)||(status & VT1724_IRQ_MPU_TX)) {
238 if (ice->rmidi[0]) 238 if (ice->rmidi[0])
239 snd_mpu401_uart_interrupt(irq, ice->rmidi[0]->private_data, regs); 239 snd_mpu401_uart_interrupt(irq, ice->rmidi[0]->private_data);
240 outb(status & (VT1724_IRQ_MPU_RX|VT1724_IRQ_MPU_TX), ICEREG1724(ice, IRQSTAT)); 240 outb(status & (VT1724_IRQ_MPU_RX|VT1724_IRQ_MPU_TX), ICEREG1724(ice, IRQSTAT));
241 status &= ~(VT1724_IRQ_MPU_RX|VT1724_IRQ_MPU_TX); 241 status &= ~(VT1724_IRQ_MPU_RX|VT1724_IRQ_MPU_TX);
242 } 242 }
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index 72dbaedcbdf5..f4319b8d4644 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -801,7 +801,7 @@ static inline void snd_intel8x0_update(struct intel8x0 *chip, struct ichdev *ich
801 status & (ICH_FIFOE | ICH_BCIS | ICH_LVBCI)); 801 status & (ICH_FIFOE | ICH_BCIS | ICH_LVBCI));
802} 802}
803 803
804static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id, struct pt_regs *regs) 804static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id)
805{ 805{
806 struct intel8x0 *chip = dev_id; 806 struct intel8x0 *chip = dev_id;
807 struct ichdev *ichdev; 807 struct ichdev *ichdev;
diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c
index 268e2f7241ea..6703f5cb5569 100644
--- a/sound/pci/intel8x0m.c
+++ b/sound/pci/intel8x0m.c
@@ -511,7 +511,7 @@ static inline void snd_intel8x0_update(struct intel8x0m *chip, struct ichdev *ic
511 iputbyte(chip, port + ichdev->roff_sr, ICH_FIFOE | ICH_BCIS | ICH_LVBCI); 511 iputbyte(chip, port + ichdev->roff_sr, ICH_FIFOE | ICH_BCIS | ICH_LVBCI);
512} 512}
513 513
514static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id, struct pt_regs *regs) 514static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id)
515{ 515{
516 struct intel8x0m *chip = dev_id; 516 struct intel8x0m *chip = dev_id;
517 struct ichdev *ichdev; 517 struct ichdev *ichdev;
diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c
index cfea51f44784..fa8cd8cecc21 100644
--- a/sound/pci/korg1212/korg1212.c
+++ b/sound/pci/korg1212/korg1212.c
@@ -1119,14 +1119,11 @@ static void snd_korg1212_OnDSPDownloadComplete(struct snd_korg1212 *korg1212)
1119 snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE); 1119 snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE);
1120} 1120}
1121 1121
1122static irqreturn_t snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1122static irqreturn_t snd_korg1212_interrupt(int irq, void *dev_id)
1123{ 1123{
1124 u32 doorbellValue; 1124 u32 doorbellValue;
1125 struct snd_korg1212 *korg1212 = dev_id; 1125 struct snd_korg1212 *korg1212 = dev_id;
1126 1126
1127 if(irq != korg1212->irq)
1128 return IRQ_NONE;
1129
1130 doorbellValue = readl(korg1212->inDoorbellPtr); 1127 doorbellValue = readl(korg1212->inDoorbellPtr);
1131 1128
1132 if (!doorbellValue) 1129 if (!doorbellValue)
@@ -1140,7 +1137,6 @@ static irqreturn_t snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs
1140 1137
1141 korg1212->inIRQ++; 1138 korg1212->inIRQ++;
1142 1139
1143
1144 switch (doorbellValue) { 1140 switch (doorbellValue) {
1145 case K1212_DB_DSPDownloadDone: 1141 case K1212_DB_DSPDownloadDone:
1146 K1212_DEBUG_PRINTK("K1212_DEBUG: IRQ DNLD count - %ld, %x, [%s].\n", 1142 K1212_DEBUG_PRINTK("K1212_DEBUG: IRQ DNLD count - %ld, %x, [%s].\n",
diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c
index 45214b3b81be..05605f474a72 100644
--- a/sound/pci/maestro3.c
+++ b/sound/pci/maestro3.c
@@ -1685,8 +1685,7 @@ static void snd_m3_update_hw_volume(unsigned long private_data)
1685 spin_unlock_irqrestore(&chip->ac97_lock, flags); 1685 spin_unlock_irqrestore(&chip->ac97_lock, flags);
1686} 1686}
1687 1687
1688static irqreturn_t 1688static irqreturn_t snd_m3_interrupt(int irq, void *dev_id)
1689snd_m3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1690{ 1689{
1691 struct snd_m3 *chip = dev_id; 1690 struct snd_m3 *chip = dev_id;
1692 u8 status; 1691 u8 status;
diff --git a/sound/pci/mixart/mixart_core.c b/sound/pci/mixart/mixart_core.c
index 406ac3a9d42a..d54457317b14 100644
--- a/sound/pci/mixart/mixart_core.c
+++ b/sound/pci/mixart/mixart_core.c
@@ -408,7 +408,7 @@ void snd_mixart_msg_tasklet(unsigned long arg)
408} 408}
409 409
410 410
411irqreturn_t snd_mixart_interrupt(int irq, void *dev_id, struct pt_regs *regs) 411irqreturn_t snd_mixart_interrupt(int irq, void *dev_id)
412{ 412{
413 struct mixart_mgr *mgr = dev_id; 413 struct mixart_mgr *mgr = dev_id;
414 int err; 414 int err;
diff --git a/sound/pci/mixart/mixart_core.h b/sound/pci/mixart/mixart_core.h
index 1fe2bcfcc57c..c919b734756f 100644
--- a/sound/pci/mixart/mixart_core.h
+++ b/sound/pci/mixart/mixart_core.h
@@ -563,7 +563,7 @@ int snd_mixart_send_msg(struct mixart_mgr *mgr, struct mixart_msg *request, int
563int snd_mixart_send_msg_wait_notif(struct mixart_mgr *mgr, struct mixart_msg *request, u32 notif_event); 563int snd_mixart_send_msg_wait_notif(struct mixart_mgr *mgr, struct mixart_msg *request, u32 notif_event);
564int snd_mixart_send_msg_nonblock(struct mixart_mgr *mgr, struct mixart_msg *request); 564int snd_mixart_send_msg_nonblock(struct mixart_mgr *mgr, struct mixart_msg *request);
565 565
566irqreturn_t snd_mixart_interrupt(int irq, void *dev_id, struct pt_regs *regs); 566irqreturn_t snd_mixart_interrupt(int irq, void *dev_id);
567void snd_mixart_msg_tasklet(unsigned long arg); 567void snd_mixart_msg_tasklet(unsigned long arg);
568 568
569void snd_mixart_reset_board(struct mixart_mgr *mgr); 569void snd_mixart_reset_board(struct mixart_mgr *mgr);
diff --git a/sound/pci/nm256/nm256.c b/sound/pci/nm256/nm256.c
index 101eee0aa018..b1bbdb9e3b7b 100644
--- a/sound/pci/nm256/nm256.c
+++ b/sound/pci/nm256/nm256.c
@@ -236,7 +236,7 @@ struct nm256 {
236 236
237 int irq; 237 int irq;
238 int irq_acks; 238 int irq_acks;
239 irqreturn_t (*interrupt)(int, void *, struct pt_regs *); 239 irq_handler_t interrupt;
240 int badintrcount; /* counter to check bogus interrupts */ 240 int badintrcount; /* counter to check bogus interrupts */
241 struct mutex irq_mutex; 241 struct mutex irq_mutex;
242 242
@@ -1004,7 +1004,7 @@ snd_nm256_intr_check(struct nm256 *chip)
1004 */ 1004 */
1005 1005
1006static irqreturn_t 1006static irqreturn_t
1007snd_nm256_interrupt(int irq, void *dev_id, struct pt_regs *dummy) 1007snd_nm256_interrupt(int irq, void *dev_id)
1008{ 1008{
1009 struct nm256 *chip = dev_id; 1009 struct nm256 *chip = dev_id;
1010 u16 status; 1010 u16 status;
@@ -1069,7 +1069,7 @@ snd_nm256_interrupt(int irq, void *dev_id, struct pt_regs *dummy)
1069 */ 1069 */
1070 1070
1071static irqreturn_t 1071static irqreturn_t
1072snd_nm256_interrupt_zx(int irq, void *dev_id, struct pt_regs *dummy) 1072snd_nm256_interrupt_zx(int irq, void *dev_id)
1073{ 1073{
1074 struct nm256 *chip = dev_id; 1074 struct nm256 *chip = dev_id;
1075 u32 status; 1075 u32 status;
diff --git a/sound/pci/pcxhr/pcxhr_core.c b/sound/pci/pcxhr/pcxhr_core.c
index c40f59062684..0ff8dc36fde3 100644
--- a/sound/pci/pcxhr/pcxhr_core.c
+++ b/sound/pci/pcxhr/pcxhr_core.c
@@ -1131,7 +1131,7 @@ static void pcxhr_update_timer_pos(struct pcxhr_mgr *mgr,
1131} 1131}
1132 1132
1133 1133
1134irqreturn_t pcxhr_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1134irqreturn_t pcxhr_interrupt(int irq, void *dev_id)
1135{ 1135{
1136 struct pcxhr_mgr *mgr = dev_id; 1136 struct pcxhr_mgr *mgr = dev_id;
1137 unsigned int reg; 1137 unsigned int reg;
diff --git a/sound/pci/pcxhr/pcxhr_core.h b/sound/pci/pcxhr/pcxhr_core.h
index e7415d6d1826..d9a4ab609875 100644
--- a/sound/pci/pcxhr/pcxhr_core.h
+++ b/sound/pci/pcxhr/pcxhr_core.h
@@ -194,7 +194,7 @@ int pcxhr_write_io_num_reg_cont(struct pcxhr_mgr *mgr, unsigned int mask,
194 194
195 195
196/* interrupt handling */ 196/* interrupt handling */
197irqreturn_t pcxhr_interrupt(int irq, void *dev_id, struct pt_regs *regs); 197irqreturn_t pcxhr_interrupt(int irq, void *dev_id);
198void pcxhr_msg_tasklet(unsigned long arg); 198void pcxhr_msg_tasklet(unsigned long arg);
199 199
200#endif /* __SOUND_PCXHR_CORE_H */ 200#endif /* __SOUND_PCXHR_CORE_H */
diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c
index fe210c853442..ec4899147e1d 100644
--- a/sound/pci/riptide/riptide.c
+++ b/sound/pci/riptide/riptide.c
@@ -1736,7 +1736,7 @@ snd_riptide_pcm(struct snd_riptide *chip, int device, struct snd_pcm **rpcm)
1736} 1736}
1737 1737
1738static irqreturn_t 1738static irqreturn_t
1739snd_riptide_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1739snd_riptide_interrupt(int irq, void *dev_id)
1740{ 1740{
1741 struct snd_riptide *chip = dev_id; 1741 struct snd_riptide *chip = dev_id;
1742 struct cmdif *cif = chip->cif; 1742 struct cmdif *cif = chip->cif;
@@ -1751,8 +1751,7 @@ snd_riptide_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1751 if (chip->rmidi && IS_MPUIRQ(cif->hwport)) { 1751 if (chip->rmidi && IS_MPUIRQ(cif->hwport)) {
1752 chip->handled_irqs++; 1752 chip->handled_irqs++;
1753 snd_mpu401_uart_interrupt(irq, 1753 snd_mpu401_uart_interrupt(irq,
1754 chip->rmidi->private_data, 1754 chip->rmidi->private_data);
1755 regs);
1756 } 1755 }
1757 SET_AIACK(cif->hwport); 1756 SET_AIACK(cif->hwport);
1758 } 1757 }
diff --git a/sound/pci/rme32.c b/sound/pci/rme32.c
index 2a71499242fa..dc8d1302e22d 100644
--- a/sound/pci/rme32.c
+++ b/sound/pci/rme32.c
@@ -818,8 +818,7 @@ static void snd_rme32_pcm_stop(struct rme32 * rme32, int to_pause)
818 writel(0, rme32->iobase + RME32_IO_RESET_POS); 818 writel(0, rme32->iobase + RME32_IO_RESET_POS);
819} 819}
820 820
821static irqreturn_t 821static irqreturn_t snd_rme32_interrupt(int irq, void *dev_id)
822snd_rme32_interrupt(int irq, void *dev_id, struct pt_regs *regs)
823{ 822{
824 struct rme32 *rme32 = (struct rme32 *) dev_id; 823 struct rme32 *rme32 = (struct rme32 *) dev_id;
825 824
diff --git a/sound/pci/rme96.c b/sound/pci/rme96.c
index f8de7c997017..106110a89a4c 100644
--- a/sound/pci/rme96.c
+++ b/sound/pci/rme96.c
@@ -1117,8 +1117,7 @@ snd_rme96_capture_stop(struct rme96 *rme96)
1117 1117
1118static irqreturn_t 1118static irqreturn_t
1119snd_rme96_interrupt(int irq, 1119snd_rme96_interrupt(int irq,
1120 void *dev_id, 1120 void *dev_id)
1121 struct pt_regs *regs)
1122{ 1121{
1123 struct rme96 *rme96 = (struct rme96 *)dev_id; 1122 struct rme96 *rme96 = (struct rme96 *)dev_id;
1124 1123
diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
index d3e07de433b0..694aa057ed49 100644
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -3603,7 +3603,7 @@ static void hdsp_midi_tasklet(unsigned long arg)
3603 snd_hdsp_midi_input_read (&hdsp->midi[1]); 3603 snd_hdsp_midi_input_read (&hdsp->midi[1]);
3604} 3604}
3605 3605
3606static irqreturn_t snd_hdsp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3606static irqreturn_t snd_hdsp_interrupt(int irq, void *dev_id)
3607{ 3607{
3608 struct hdsp *hdsp = (struct hdsp *) dev_id; 3608 struct hdsp *hdsp = (struct hdsp *) dev_id;
3609 unsigned int status; 3609 unsigned int status;
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c
index 7d03ae066d53..7055d893855d 100644
--- a/sound/pci/rme9652/hdspm.c
+++ b/sound/pci/rme9652/hdspm.c
@@ -2556,8 +2556,7 @@ static int snd_hdspm_set_defaults(struct hdspm * hdspm)
2556 interupt 2556 interupt
2557 ------------------------------------------------------------*/ 2557 ------------------------------------------------------------*/
2558 2558
2559static irqreturn_t snd_hdspm_interrupt(int irq, void *dev_id, 2559static irqreturn_t snd_hdspm_interrupt(int irq, void *dev_id)
2560 struct pt_regs *regs)
2561{ 2560{
2562 struct hdspm *hdspm = (struct hdspm *) dev_id; 2561 struct hdspm *hdspm = (struct hdspm *) dev_id;
2563 unsigned int status; 2562 unsigned int status;
diff --git a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c
index fc15f61ad5d1..cf0427b4bfde 100644
--- a/sound/pci/rme9652/rme9652.c
+++ b/sound/pci/rme9652/rme9652.c
@@ -1882,7 +1882,7 @@ static void snd_rme9652_set_defaults(struct snd_rme9652 *rme9652)
1882 rme9652_set_rate(rme9652, 48000); 1882 rme9652_set_rate(rme9652, 48000);
1883} 1883}
1884 1884
1885static irqreturn_t snd_rme9652_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1885static irqreturn_t snd_rme9652_interrupt(int irq, void *dev_id)
1886{ 1886{
1887 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) dev_id; 1887 struct snd_rme9652 *rme9652 = (struct snd_rme9652 *) dev_id;
1888 1888
diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c
index e5d4def1aa6f..f9b8afabda9c 100644
--- a/sound/pci/sonicvibes.c
+++ b/sound/pci/sonicvibes.c
@@ -580,7 +580,7 @@ static int snd_sonicvibes_trigger(struct sonicvibes * sonic, int what, int cmd)
580 return result; 580 return result;
581} 581}
582 582
583static irqreturn_t snd_sonicvibes_interrupt(int irq, void *dev_id, struct pt_regs *regs) 583static irqreturn_t snd_sonicvibes_interrupt(int irq, void *dev_id)
584{ 584{
585 struct sonicvibes *sonic = dev_id; 585 struct sonicvibes *sonic = dev_id;
586 unsigned char status; 586 unsigned char status;
@@ -601,7 +601,7 @@ static irqreturn_t snd_sonicvibes_interrupt(int irq, void *dev_id, struct pt_reg
601 } 601 }
602 if (sonic->rmidi) { 602 if (sonic->rmidi) {
603 if (status & SV_MIDI_IRQ) 603 if (status & SV_MIDI_IRQ)
604 snd_mpu401_uart_interrupt(irq, sonic->rmidi->private_data, regs); 604 snd_mpu401_uart_interrupt(irq, sonic->rmidi->private_data);
605 } 605 }
606 if (status & SV_UD_IRQ) { 606 if (status & SV_UD_IRQ) {
607 unsigned char udreg; 607 unsigned char udreg;
diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
index ebbe12d78d8c..0d478871808d 100644
--- a/sound/pci/trident/trident_main.c
+++ b/sound/pci/trident/trident_main.c
@@ -52,8 +52,7 @@ static int snd_trident_pcm_mixer_build(struct snd_trident *trident,
52static int snd_trident_pcm_mixer_free(struct snd_trident *trident, 52static int snd_trident_pcm_mixer_free(struct snd_trident *trident,
53 struct snd_trident_voice * voice, 53 struct snd_trident_voice * voice,
54 struct snd_pcm_substream *substream); 54 struct snd_pcm_substream *substream);
55static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, 55static irqreturn_t snd_trident_interrupt(int irq, void *dev_id);
56 struct pt_regs *regs);
57static int snd_trident_sis_reset(struct snd_trident *trident); 56static int snd_trident_sis_reset(struct snd_trident *trident);
58 57
59static void snd_trident_clear_voices(struct snd_trident * trident, 58static void snd_trident_clear_voices(struct snd_trident * trident,
@@ -3737,7 +3736,7 @@ static int snd_trident_free(struct snd_trident *trident)
3737 3736
3738 ---------------------------------------------------------------------------*/ 3737 ---------------------------------------------------------------------------*/
3739 3738
3740static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, struct pt_regs *regs) 3739static irqreturn_t snd_trident_interrupt(int irq, void *dev_id)
3741{ 3740{
3742 struct snd_trident *trident = dev_id; 3741 struct snd_trident *trident = dev_id;
3743 unsigned int audio_int, chn_int, stimer, channel, mask, tmp; 3742 unsigned int audio_int, chn_int, stimer, channel, mask, tmp;
@@ -3825,7 +3824,7 @@ static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, struct pt_regs *
3825 } 3824 }
3826 if (audio_int & MPU401_IRQ) { 3825 if (audio_int & MPU401_IRQ) {
3827 if (trident->rmidi) { 3826 if (trident->rmidi) {
3828 snd_mpu401_uart_interrupt(irq, trident->rmidi->private_data, regs); 3827 snd_mpu401_uart_interrupt(irq, trident->rmidi->private_data);
3829 } else { 3828 } else {
3830 inb(TRID_REG(trident, T4D_MPUR0)); 3829 inb(TRID_REG(trident, T4D_MPUR0));
3831 } 3830 }
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index 6db3d4cc4d8d..e6990e0bbf23 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -613,7 +613,7 @@ static void snd_via82xx_channel_reset(struct via82xx *chip, struct viadev *viade
613 * Interrupt handler 613 * Interrupt handler
614 * Used for 686 and 8233A 614 * Used for 686 and 8233A
615 */ 615 */
616static irqreturn_t snd_via686_interrupt(int irq, void *dev_id, struct pt_regs *regs) 616static irqreturn_t snd_via686_interrupt(int irq, void *dev_id)
617{ 617{
618 struct via82xx *chip = dev_id; 618 struct via82xx *chip = dev_id;
619 unsigned int status; 619 unsigned int status;
@@ -623,7 +623,7 @@ static irqreturn_t snd_via686_interrupt(int irq, void *dev_id, struct pt_regs *r
623 if (! (status & chip->intr_mask)) { 623 if (! (status & chip->intr_mask)) {
624 if (chip->rmidi) 624 if (chip->rmidi)
625 /* check mpu401 interrupt */ 625 /* check mpu401 interrupt */
626 return snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs); 626 return snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data);
627 return IRQ_NONE; 627 return IRQ_NONE;
628 } 628 }
629 629
@@ -659,7 +659,7 @@ static irqreturn_t snd_via686_interrupt(int irq, void *dev_id, struct pt_regs *r
659/* 659/*
660 * Interrupt handler 660 * Interrupt handler
661 */ 661 */
662static irqreturn_t snd_via8233_interrupt(int irq, void *dev_id, struct pt_regs *regs) 662static irqreturn_t snd_via8233_interrupt(int irq, void *dev_id)
663{ 663{
664 struct via82xx *chip = dev_id; 664 struct via82xx *chip = dev_id;
665 unsigned int status; 665 unsigned int status;
diff --git a/sound/pci/via82xx_modem.c b/sound/pci/via82xx_modem.c
index 016f9dac253f..5ab1cf3d434b 100644
--- a/sound/pci/via82xx_modem.c
+++ b/sound/pci/via82xx_modem.c
@@ -475,7 +475,7 @@ static void snd_via82xx_channel_reset(struct via82xx_modem *chip, struct viadev
475 * Interrupt handler 475 * Interrupt handler
476 */ 476 */
477 477
478static irqreturn_t snd_via82xx_interrupt(int irq, void *dev_id, struct pt_regs *regs) 478static irqreturn_t snd_via82xx_interrupt(int irq, void *dev_id)
479{ 479{
480 struct via82xx_modem *chip = dev_id; 480 struct via82xx_modem *chip = dev_id;
481 unsigned int status; 481 unsigned int status;
diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
index 24f6fc52f898..ebc6da89edf3 100644
--- a/sound/pci/ymfpci/ymfpci_main.c
+++ b/sound/pci/ymfpci/ymfpci_main.c
@@ -753,7 +753,7 @@ static void snd_ymfpci_irq_wait(struct snd_ymfpci *chip)
753 } 753 }
754} 754}
755 755
756static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id, struct pt_regs *regs) 756static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id)
757{ 757{
758 struct snd_ymfpci *chip = dev_id; 758 struct snd_ymfpci *chip = dev_id;
759 u32 status, nvoice, mode; 759 u32 status, nvoice, mode;
@@ -799,7 +799,7 @@ static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id, struct pt_regs *r
799 snd_ymfpci_writew(chip, YDSXGR_INTFLAG, status); 799 snd_ymfpci_writew(chip, YDSXGR_INTFLAG, status);
800 800
801 if (chip->rawmidi) 801 if (chip->rawmidi)
802 snd_mpu401_uart_interrupt(irq, chip->rawmidi->private_data, regs); 802 snd_mpu401_uart_interrupt(irq, chip->rawmidi->private_data);
803 return IRQ_HANDLED; 803 return IRQ_HANDLED;
804} 804}
805 805
diff --git a/sound/pcmcia/pdaudiocf/pdaudiocf.h b/sound/pcmcia/pdaudiocf/pdaudiocf.h
index 9a14a4f64bd3..206e2f5a113f 100644
--- a/sound/pcmcia/pdaudiocf/pdaudiocf.h
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf.h
@@ -138,7 +138,7 @@ int snd_pdacf_suspend(struct snd_pdacf *chip, pm_message_t state);
138int snd_pdacf_resume(struct snd_pdacf *chip); 138int snd_pdacf_resume(struct snd_pdacf *chip);
139#endif 139#endif
140int snd_pdacf_pcm_new(struct snd_pdacf *chip); 140int snd_pdacf_pcm_new(struct snd_pdacf *chip);
141irqreturn_t pdacf_interrupt(int irq, void *dev, struct pt_regs *regs); 141irqreturn_t pdacf_interrupt(int irq, void *dev);
142void pdacf_tasklet(unsigned long private_data); 142void pdacf_tasklet(unsigned long private_data);
143void pdacf_reinit(struct snd_pdacf *chip, int resume); 143void pdacf_reinit(struct snd_pdacf *chip, int resume);
144 144
diff --git a/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c b/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c
index 7c5f21e45cb4..5bd69206ba65 100644
--- a/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c
@@ -22,11 +22,12 @@
22#include <sound/core.h> 22#include <sound/core.h>
23#include "pdaudiocf.h" 23#include "pdaudiocf.h"
24#include <sound/initval.h> 24#include <sound/initval.h>
25#include <asm/irq_regs.h>
25 26
26/* 27/*
27 * 28 *
28 */ 29 */
29irqreturn_t pdacf_interrupt(int irq, void *dev, struct pt_regs *regs) 30irqreturn_t pdacf_interrupt(int irq, void *dev)
30{ 31{
31 struct snd_pdacf *chip = dev; 32 struct snd_pdacf *chip = dev;
32 unsigned short stat; 33 unsigned short stat;
@@ -45,7 +46,7 @@ irqreturn_t pdacf_interrupt(int irq, void *dev, struct pt_regs *regs)
45 if (!(stat & PDAUDIOCF_IRQAKM)) 46 if (!(stat & PDAUDIOCF_IRQAKM))
46 stat |= PDAUDIOCF_IRQAKM; /* check rate */ 47 stat |= PDAUDIOCF_IRQAKM; /* check rate */
47 } 48 }
48 if (regs != NULL) 49 if (get_irq_regs() != NULL)
49 snd_ak4117_check_rate_and_errors(chip->ak4117, 0); 50 snd_ak4117_check_rate_and_errors(chip->ak4117, 0);
50 return IRQ_HANDLED; 51 return IRQ_HANDLED;
51} 52}
diff --git a/sound/ppc/pmac.c b/sound/ppc/pmac.c
index 641430631505..c64af55865d4 100644
--- a/sound/ppc/pmac.c
+++ b/sound/ppc/pmac.c
@@ -713,7 +713,7 @@ void snd_pmac_beep_dma_stop(struct snd_pmac *chip)
713 * interrupt handlers 713 * interrupt handlers
714 */ 714 */
715static irqreturn_t 715static irqreturn_t
716snd_pmac_tx_intr(int irq, void *devid, struct pt_regs *regs) 716snd_pmac_tx_intr(int irq, void *devid)
717{ 717{
718 struct snd_pmac *chip = devid; 718 struct snd_pmac *chip = devid;
719 snd_pmac_pcm_update(chip, &chip->playback); 719 snd_pmac_pcm_update(chip, &chip->playback);
@@ -722,7 +722,7 @@ snd_pmac_tx_intr(int irq, void *devid, struct pt_regs *regs)
722 722
723 723
724static irqreturn_t 724static irqreturn_t
725snd_pmac_rx_intr(int irq, void *devid, struct pt_regs *regs) 725snd_pmac_rx_intr(int irq, void *devid)
726{ 726{
727 struct snd_pmac *chip = devid; 727 struct snd_pmac *chip = devid;
728 snd_pmac_pcm_update(chip, &chip->capture); 728 snd_pmac_pcm_update(chip, &chip->capture);
@@ -731,7 +731,7 @@ snd_pmac_rx_intr(int irq, void *devid, struct pt_regs *regs)
731 731
732 732
733static irqreturn_t 733static irqreturn_t
734snd_pmac_ctrl_intr(int irq, void *devid, struct pt_regs *regs) 734snd_pmac_ctrl_intr(int irq, void *devid)
735{ 735{
736 struct snd_pmac *chip = devid; 736 struct snd_pmac *chip = devid;
737 int ctrl = in_le32(&chip->awacs->control); 737 int ctrl = in_le32(&chip->awacs->control);
diff --git a/sound/ppc/tumbler.c b/sound/ppc/tumbler.c
index cdff53e4a17e..2fbe1d183fce 100644
--- a/sound/ppc/tumbler.c
+++ b/sound/ppc/tumbler.c
@@ -1017,7 +1017,7 @@ static void tumbler_update_automute(struct snd_pmac *chip, int do_notify)
1017 1017
1018 1018
1019/* interrupt - headphone plug changed */ 1019/* interrupt - headphone plug changed */
1020static irqreturn_t headphone_intr(int irq, void *devid, struct pt_regs *regs) 1020static irqreturn_t headphone_intr(int irq, void *devid)
1021{ 1021{
1022 struct snd_pmac *chip = devid; 1022 struct snd_pmac *chip = devid;
1023 if (chip->update_automute && chip->initialized) { 1023 if (chip->update_automute && chip->initialized) {
diff --git a/sound/sparc/amd7930.c b/sound/sparc/amd7930.c
index be0bd503f013..c899786f30f5 100644
--- a/sound/sparc/amd7930.c
+++ b/sound/sparc/amd7930.c
@@ -491,7 +491,7 @@ static void __amd7930_update_map(struct snd_amd7930 *amd)
491 __amd7930_write_map(amd); 491 __amd7930_write_map(amd);
492} 492}
493 493
494static irqreturn_t snd_amd7930_interrupt(int irq, void *dev_id, struct pt_regs *regs) 494static irqreturn_t snd_amd7930_interrupt(int irq, void *dev_id)
495{ 495{
496 struct snd_amd7930 *amd = dev_id; 496 struct snd_amd7930 *amd = dev_id;
497 unsigned int elapsed; 497 unsigned int elapsed;
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c
index 9a06c3bd6944..edeb3d3c4c7e 100644
--- a/sound/sparc/cs4231.c
+++ b/sound/sparc/cs4231.c
@@ -1753,7 +1753,7 @@ out_err:
1753 1753
1754#ifdef SBUS_SUPPORT 1754#ifdef SBUS_SUPPORT
1755 1755
1756static irqreturn_t snd_cs4231_sbus_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1756static irqreturn_t snd_cs4231_sbus_interrupt(int irq, void *dev_id)
1757{ 1757{
1758 unsigned long flags; 1758 unsigned long flags;
1759 unsigned char status; 1759 unsigned char status;
diff --git a/sound/sparc/dbri.c b/sound/sparc/dbri.c
index 5a97be689b40..4ceb09d215d8 100644
--- a/sound/sparc/dbri.c
+++ b/sound/sparc/dbri.c
@@ -1903,8 +1903,7 @@ static void dbri_process_interrupt_buffer(struct snd_dbri * dbri)
1903 } 1903 }
1904} 1904}
1905 1905
1906static irqreturn_t snd_dbri_interrupt(int irq, void *dev_id, 1906static irqreturn_t snd_dbri_interrupt(int irq, void *dev_id)
1907 struct pt_regs *regs)
1908{ 1907{
1909 struct snd_dbri *dbri = dev_id; 1908 struct snd_dbri *dbri = dev_id;
1910 static int errcnt = 0; 1909 static int errcnt = 0;
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index a42acf6d7b68..c82b01c7ad3a 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -653,7 +653,7 @@ static struct snd_urb_ops audio_urb_ops_high_speed[2] = {
653/* 653/*
654 * complete callback from data urb 654 * complete callback from data urb
655 */ 655 */
656static void snd_complete_urb(struct urb *urb, struct pt_regs *regs) 656static void snd_complete_urb(struct urb *urb)
657{ 657{
658 struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; 658 struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context;
659 struct snd_usb_substream *subs = ctx->subs; 659 struct snd_usb_substream *subs = ctx->subs;
@@ -676,7 +676,7 @@ static void snd_complete_urb(struct urb *urb, struct pt_regs *regs)
676/* 676/*
677 * complete callback from sync urb 677 * complete callback from sync urb
678 */ 678 */
679static void snd_complete_sync_urb(struct urb *urb, struct pt_regs *regs) 679static void snd_complete_sync_urb(struct urb *urb)
680{ 680{
681 struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; 681 struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context;
682 struct snd_usb_substream *subs = ctx->subs; 682 struct snd_usb_substream *subs = ctx->subs;
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c
index 0dcf78adb99a..b7c5e59b2299 100644
--- a/sound/usb/usbmidi.c
+++ b/sound/usb/usbmidi.c
@@ -223,7 +223,7 @@ static void dump_urb(const char *type, const u8 *data, int length)
223/* 223/*
224 * Processes the data read from the device. 224 * Processes the data read from the device.
225 */ 225 */
226static void snd_usbmidi_in_urb_complete(struct urb* urb, struct pt_regs *regs) 226static void snd_usbmidi_in_urb_complete(struct urb* urb)
227{ 227{
228 struct snd_usb_midi_in_endpoint* ep = urb->context; 228 struct snd_usb_midi_in_endpoint* ep = urb->context;
229 229
@@ -247,7 +247,7 @@ static void snd_usbmidi_in_urb_complete(struct urb* urb, struct pt_regs *regs)
247 snd_usbmidi_submit_urb(urb, GFP_ATOMIC); 247 snd_usbmidi_submit_urb(urb, GFP_ATOMIC);
248} 248}
249 249
250static void snd_usbmidi_out_urb_complete(struct urb* urb, struct pt_regs *regs) 250static void snd_usbmidi_out_urb_complete(struct urb* urb)
251{ 251{
252 struct snd_usb_midi_out_endpoint* ep = urb->context; 252 struct snd_usb_midi_out_endpoint* ep = urb->context;
253 253
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index e516d6adbb22..1024c178f5c0 100644
--- a/sound/usb/usbmixer.c
+++ b/sound/usb/usbmixer.c
@@ -1710,7 +1710,7 @@ static void snd_usb_mixer_memory_change(struct usb_mixer_interface *mixer,
1710 } 1710 }
1711} 1711}
1712 1712
1713static void snd_usb_mixer_status_complete(struct urb *urb, struct pt_regs *regs) 1713static void snd_usb_mixer_status_complete(struct urb *urb)
1714{ 1714{
1715 struct usb_mixer_interface *mixer = urb->context; 1715 struct usb_mixer_interface *mixer = urb->context;
1716 1716
@@ -1772,8 +1772,7 @@ static int snd_usb_mixer_status_create(struct usb_mixer_interface *mixer)
1772 return 0; 1772 return 0;
1773} 1773}
1774 1774
1775static void snd_usb_soundblaster_remote_complete(struct urb *urb, 1775static void snd_usb_soundblaster_remote_complete(struct urb *urb)
1776 struct pt_regs *regs)
1777{ 1776{
1778 struct usb_mixer_interface *mixer = urb->context; 1777 struct usb_mixer_interface *mixer = urb->context;
1779 const struct rc_config *rc = mixer->rc_cfg; 1778 const struct rc_config *rc = mixer->rc_cfg;
diff --git a/sound/usb/usx2y/usbusx2y.c b/sound/usb/usx2y/usbusx2y.c
index cfec38d7839b..e011fcacce92 100644
--- a/sound/usb/usx2y/usbusx2y.c
+++ b/sound/usb/usx2y/usbusx2y.c
@@ -172,7 +172,7 @@ static void snd_usX2Y_card_private_free(struct snd_card *card);
172/* 172/*
173 * pipe 4 is used for switching the lamps, setting samplerate, volumes .... 173 * pipe 4 is used for switching the lamps, setting samplerate, volumes ....
174 */ 174 */
175static void i_usX2Y_Out04Int(struct urb *urb, struct pt_regs *regs) 175static void i_usX2Y_Out04Int(struct urb *urb)
176{ 176{
177#ifdef CONFIG_SND_DEBUG 177#ifdef CONFIG_SND_DEBUG
178 if (urb->status) { 178 if (urb->status) {
@@ -184,7 +184,7 @@ static void i_usX2Y_Out04Int(struct urb *urb, struct pt_regs *regs)
184#endif 184#endif
185} 185}
186 186
187static void i_usX2Y_In04Int(struct urb *urb, struct pt_regs *regs) 187static void i_usX2Y_In04Int(struct urb *urb)
188{ 188{
189 int err = 0; 189 int err = 0;
190 struct usX2Ydev *usX2Y = urb->context; 190 struct usX2Ydev *usX2Y = urb->context;
diff --git a/sound/usb/usx2y/usbusx2yaudio.c b/sound/usb/usx2y/usbusx2yaudio.c
index f6bd0dee563c..367f8a32a665 100644
--- a/sound/usb/usx2y/usbusx2yaudio.c
+++ b/sound/usb/usx2y/usbusx2yaudio.c
@@ -306,7 +306,7 @@ static void usX2Y_error_sequence(struct usX2Ydev *usX2Y,
306 usX2Y_clients_stop(usX2Y); 306 usX2Y_clients_stop(usX2Y);
307} 307}
308 308
309static void i_usX2Y_urb_complete(struct urb *urb, struct pt_regs *regs) 309static void i_usX2Y_urb_complete(struct urb *urb)
310{ 310{
311 struct snd_usX2Y_substream *subs = urb->context; 311 struct snd_usX2Y_substream *subs = urb->context;
312 struct usX2Ydev *usX2Y = subs->usX2Y; 312 struct usX2Ydev *usX2Y = subs->usX2Y;
@@ -322,7 +322,7 @@ static void i_usX2Y_urb_complete(struct urb *urb, struct pt_regs *regs)
322 usX2Y_error_urb_status(usX2Y, subs, urb); 322 usX2Y_error_urb_status(usX2Y, subs, urb);
323 return; 323 return;
324 } 324 }
325 if (likely((0xFFFF & urb->start_frame) == usX2Y->wait_iso_frame)) 325 if (likely(urb->start_frame == usX2Y->wait_iso_frame))
326 subs->completed_urb = urb; 326 subs->completed_urb = urb;
327 else { 327 else {
328 usX2Y_error_sequence(usX2Y, subs, urb); 328 usX2Y_error_sequence(usX2Y, subs, urb);
@@ -335,13 +335,9 @@ static void i_usX2Y_urb_complete(struct urb *urb, struct pt_regs *regs)
335 atomic_read(&capsubs->state) >= state_PREPARED && 335 atomic_read(&capsubs->state) >= state_PREPARED &&
336 (playbacksubs->completed_urb || 336 (playbacksubs->completed_urb ||
337 atomic_read(&playbacksubs->state) < state_PREPARED)) { 337 atomic_read(&playbacksubs->state) < state_PREPARED)) {
338 if (!usX2Y_usbframe_complete(capsubs, playbacksubs, urb->start_frame)) { 338 if (!usX2Y_usbframe_complete(capsubs, playbacksubs, urb->start_frame))
339 if (nr_of_packs() <= urb->start_frame && 339 usX2Y->wait_iso_frame += nr_of_packs();
340 urb->start_frame <= (2 * nr_of_packs() - 1)) // uhci and ohci 340 else {
341 usX2Y->wait_iso_frame = urb->start_frame - nr_of_packs();
342 else
343 usX2Y->wait_iso_frame += nr_of_packs();
344 } else {
345 snd_printdd("\n"); 341 snd_printdd("\n");
346 usX2Y_clients_stop(usX2Y); 342 usX2Y_clients_stop(usX2Y);
347 } 343 }
@@ -350,7 +346,7 @@ static void i_usX2Y_urb_complete(struct urb *urb, struct pt_regs *regs)
350} 346}
351 347
352static void usX2Y_urbs_set_complete(struct usX2Ydev * usX2Y, 348static void usX2Y_urbs_set_complete(struct usX2Ydev * usX2Y,
353 void (*complete)(struct urb *, struct pt_regs *)) 349 void (*complete)(struct urb *))
354{ 350{
355 int s, u; 351 int s, u;
356 for (s = 0; s < 4; s++) { 352 for (s = 0; s < 4; s++) {
@@ -370,7 +366,7 @@ static void usX2Y_subs_startup_finish(struct usX2Ydev * usX2Y)
370 usX2Y->prepare_subs = NULL; 366 usX2Y->prepare_subs = NULL;
371} 367}
372 368
373static void i_usX2Y_subs_startup(struct urb *urb, struct pt_regs *regs) 369static void i_usX2Y_subs_startup(struct urb *urb)
374{ 370{
375 struct snd_usX2Y_substream *subs = urb->context; 371 struct snd_usX2Y_substream *subs = urb->context;
376 struct usX2Ydev *usX2Y = subs->usX2Y; 372 struct usX2Ydev *usX2Y = subs->usX2Y;
@@ -382,7 +378,7 @@ static void i_usX2Y_subs_startup(struct urb *urb, struct pt_regs *regs)
382 wake_up(&usX2Y->prepare_wait_queue); 378 wake_up(&usX2Y->prepare_wait_queue);
383 } 379 }
384 380
385 i_usX2Y_urb_complete(urb, regs); 381 i_usX2Y_urb_complete(urb);
386} 382}
387 383
388static void usX2Y_subs_prepare(struct snd_usX2Y_substream *subs) 384static void usX2Y_subs_prepare(struct snd_usX2Y_substream *subs)
@@ -495,7 +491,6 @@ static int usX2Y_urbs_start(struct snd_usX2Y_substream *subs)
495 if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED) 491 if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED)
496 goto start; 492 goto start;
497 } 493 }
498 usX2Y->wait_iso_frame = -1;
499 494
500 start: 495 start:
501 usX2Y_subs_startup(subs); 496 usX2Y_subs_startup(subs);
@@ -516,10 +511,9 @@ static int usX2Y_urbs_start(struct snd_usX2Y_substream *subs)
516 snd_printk (KERN_ERR "cannot submit datapipe for urb %d, err = %d\n", i, err); 511 snd_printk (KERN_ERR "cannot submit datapipe for urb %d, err = %d\n", i, err);
517 err = -EPIPE; 512 err = -EPIPE;
518 goto cleanup; 513 goto cleanup;
519 } else { 514 } else
520 if (0 > usX2Y->wait_iso_frame) 515 if (i == 0)
521 usX2Y->wait_iso_frame = urb->start_frame; 516 usX2Y->wait_iso_frame = urb->start_frame;
522 }
523 urb->transfer_flags = 0; 517 urb->transfer_flags = 0;
524 } else { 518 } else {
525 atomic_set(&subs->state, state_STARTING1); 519 atomic_set(&subs->state, state_STARTING1);
@@ -663,7 +657,7 @@ static struct s_c2 SetRate48000[] =
663}; 657};
664#define NOOF_SETRATE_URBS ARRAY_SIZE(SetRate48000) 658#define NOOF_SETRATE_URBS ARRAY_SIZE(SetRate48000)
665 659
666static void i_usX2Y_04Int(struct urb *urb, struct pt_regs *regs) 660static void i_usX2Y_04Int(struct urb *urb)
667{ 661{
668 struct usX2Ydev *usX2Y = urb->context; 662 struct usX2Ydev *usX2Y = urb->context;
669 663
diff --git a/sound/usb/usx2y/usx2yhwdeppcm.c b/sound/usb/usx2y/usx2yhwdeppcm.c
index 88b72b52590f..8f3e35e24e72 100644
--- a/sound/usb/usx2y/usx2yhwdeppcm.c
+++ b/sound/usb/usx2y/usx2yhwdeppcm.c
@@ -226,7 +226,7 @@ static inline int usX2Y_usbpcm_usbframe_complete(struct snd_usX2Y_substream *cap
226} 226}
227 227
228 228
229static void i_usX2Y_usbpcm_urb_complete(struct urb *urb, struct pt_regs *regs) 229static void i_usX2Y_usbpcm_urb_complete(struct urb *urb)
230{ 230{
231 struct snd_usX2Y_substream *subs = urb->context; 231 struct snd_usX2Y_substream *subs = urb->context;
232 struct usX2Ydev *usX2Y = subs->usX2Y; 232 struct usX2Ydev *usX2Y = subs->usX2Y;
@@ -243,7 +243,7 @@ static void i_usX2Y_usbpcm_urb_complete(struct urb *urb, struct pt_regs *regs)
243 usX2Y_error_urb_status(usX2Y, subs, urb); 243 usX2Y_error_urb_status(usX2Y, subs, urb);
244 return; 244 return;
245 } 245 }
246 if (likely((0xFFFF & urb->start_frame) == usX2Y->wait_iso_frame)) 246 if (likely(urb->start_frame == usX2Y->wait_iso_frame))
247 subs->completed_urb = urb; 247 subs->completed_urb = urb;
248 else { 248 else {
249 usX2Y_error_sequence(usX2Y, subs, urb); 249 usX2Y_error_sequence(usX2Y, subs, urb);
@@ -256,13 +256,9 @@ static void i_usX2Y_usbpcm_urb_complete(struct urb *urb, struct pt_regs *regs)
256 if (capsubs->completed_urb && atomic_read(&capsubs->state) >= state_PREPARED && 256 if (capsubs->completed_urb && atomic_read(&capsubs->state) >= state_PREPARED &&
257 (NULL == capsubs2 || capsubs2->completed_urb) && 257 (NULL == capsubs2 || capsubs2->completed_urb) &&
258 (playbacksubs->completed_urb || atomic_read(&playbacksubs->state) < state_PREPARED)) { 258 (playbacksubs->completed_urb || atomic_read(&playbacksubs->state) < state_PREPARED)) {
259 if (!usX2Y_usbpcm_usbframe_complete(capsubs, capsubs2, playbacksubs, urb->start_frame)) { 259 if (!usX2Y_usbpcm_usbframe_complete(capsubs, capsubs2, playbacksubs, urb->start_frame))
260 if (nr_of_packs() <= urb->start_frame && 260 usX2Y->wait_iso_frame += nr_of_packs();
261 urb->start_frame <= (2 * nr_of_packs() - 1)) // uhci and ohci 261 else {
262 usX2Y->wait_iso_frame = urb->start_frame - nr_of_packs();
263 else
264 usX2Y->wait_iso_frame += nr_of_packs();
265 } else {
266 snd_printdd("\n"); 262 snd_printdd("\n");
267 usX2Y_clients_stop(usX2Y); 263 usX2Y_clients_stop(usX2Y);
268 } 264 }
@@ -294,7 +290,7 @@ static void usX2Y_usbpcm_subs_startup_finish(struct usX2Ydev * usX2Y)
294 usX2Y->prepare_subs = NULL; 290 usX2Y->prepare_subs = NULL;
295} 291}
296 292
297static void i_usX2Y_usbpcm_subs_startup(struct urb *urb, struct pt_regs *regs) 293static void i_usX2Y_usbpcm_subs_startup(struct urb *urb)
298{ 294{
299 struct snd_usX2Y_substream *subs = urb->context; 295 struct snd_usX2Y_substream *subs = urb->context;
300 struct usX2Ydev *usX2Y = subs->usX2Y; 296 struct usX2Ydev *usX2Y = subs->usX2Y;
@@ -311,7 +307,7 @@ static void i_usX2Y_usbpcm_subs_startup(struct urb *urb, struct pt_regs *regs)
311 wake_up(&usX2Y->prepare_wait_queue); 307 wake_up(&usX2Y->prepare_wait_queue);
312 } 308 }
313 309
314 i_usX2Y_usbpcm_urb_complete(urb, regs); 310 i_usX2Y_usbpcm_urb_complete(urb);
315} 311}
316 312
317/* 313/*
@@ -433,7 +429,6 @@ static int usX2Y_usbpcm_urbs_start(struct snd_usX2Y_substream *subs)
433 if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED) 429 if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED)
434 goto start; 430 goto start;
435 } 431 }
436 usX2Y->wait_iso_frame = -1;
437 432
438 start: 433 start:
439 usX2Y_usbpcm_subs_startup(subs); 434 usX2Y_usbpcm_subs_startup(subs);
@@ -459,7 +454,7 @@ static int usX2Y_usbpcm_urbs_start(struct snd_usX2Y_substream *subs)
459 goto cleanup; 454 goto cleanup;
460 } else { 455 } else {
461 snd_printdd("%i\n", urb->start_frame); 456 snd_printdd("%i\n", urb->start_frame);
462 if (0 > usX2Y->wait_iso_frame) 457 if (u == 0)
463 usX2Y->wait_iso_frame = urb->start_frame; 458 usX2Y->wait_iso_frame = urb->start_frame;
464 } 459 }
465 urb->transfer_flags = 0; 460 urb->transfer_flags = 0;
@@ -632,7 +627,7 @@ static int usX2Y_pcms_lock_check(struct snd_card *card)
632 for (s = 0; s < 2; ++s) { 627 for (s = 0; s < 2; ++s) {
633 struct snd_pcm_substream *substream; 628 struct snd_pcm_substream *substream;
634 substream = pcm->streams[s].substream; 629 substream = pcm->streams[s].substream;
635 if (SUBSTREAM_BUSY(substream)) 630 if (substream && SUBSTREAM_BUSY(substream))
636 err = -EBUSY; 631 err = -EBUSY;
637 } 632 }
638 } 633 }