aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CREDITS11
-rw-r--r--Documentation/DMA-API.txt9
-rw-r--r--Documentation/accounting/getdelays.c4
-rw-r--r--Documentation/cgroups/cgroups.txt5
-rw-r--r--Documentation/cgroups/cpuacct.txt (renamed from Documentation/controllers/cpuacct.txt)0
-rw-r--r--Documentation/cgroups/cpusets.txt (renamed from Documentation/cpusets.txt)0
-rw-r--r--Documentation/cgroups/devices.txt (renamed from Documentation/controllers/devices.txt)0
-rw-r--r--Documentation/cgroups/memcg_test.txt (renamed from Documentation/controllers/memcg_test.txt)2
-rw-r--r--Documentation/cgroups/memory.txt (renamed from Documentation/controllers/memory.txt)0
-rw-r--r--Documentation/cgroups/resource_counter.txt (renamed from Documentation/controllers/resource_counter.txt)0
-rw-r--r--Documentation/filesystems/proc.txt288
-rw-r--r--Documentation/hwmon/adt747587
-rw-r--r--Documentation/hwmon/lis3lv02d30
-rw-r--r--Documentation/kernel-parameters.txt7
-rw-r--r--Documentation/laptops/thinkpad-acpi.txt25
-rw-r--r--Documentation/mips/AU1xxx_IDE.README6
-rw-r--r--Documentation/networking/netconsole.txt3
-rw-r--r--Documentation/scheduler/sched-design-CFS.txt2
-rw-r--r--Documentation/sound/alsa/HD-Audio-Models.txt13
-rw-r--r--Documentation/sysctl/vm.txt619
-rw-r--r--Documentation/sysrq.txt19
-rw-r--r--MAINTAINERS19
-rw-r--r--Makefile6
-rw-r--r--arch/Kconfig3
-rw-r--r--arch/alpha/include/asm/Kbuild1
-rw-r--r--arch/alpha/include/asm/byteorder.h1
-rw-r--r--arch/alpha/include/asm/machvec.h4
-rw-r--r--arch/alpha/include/asm/pgalloc.h7
-rw-r--r--arch/alpha/include/asm/rtc.h12
-rw-r--r--arch/alpha/kernel/.gitignore1
-rw-r--r--arch/alpha/kernel/core_marvel.c10
-rw-r--r--arch/alpha/kernel/entry.S8
-rw-r--r--arch/alpha/kernel/irq_srm.c2
-rw-r--r--arch/alpha/kernel/machvec_impl.h5
-rw-r--r--arch/alpha/kernel/proto.h2
-rw-r--r--arch/alpha/kernel/sys_jensen.c2
-rw-r--r--arch/alpha/kernel/sys_marvel.c56
-rw-r--r--arch/alpha/kernel/sys_nautilus.c4
-rw-r--r--arch/alpha/kernel/systbls.S2
-rw-r--r--arch/alpha/kernel/time.c10
-rw-r--r--arch/alpha/mm/init.c7
-rw-r--r--arch/arm/include/asm/Kbuild1
-rw-r--r--arch/arm/include/asm/byteorder.h2
-rw-r--r--arch/arm/kernel/calls.S2
-rw-r--r--arch/arm/plat-mxc/include/mach/ipu.h181
-rw-r--r--arch/arm/plat-mxc/include/mach/irqs.h10
-rw-r--r--arch/arm/plat-mxc/include/mach/mx3fb.h38
-rw-r--r--arch/avr32/include/asm/Kbuild1
-rw-r--r--arch/avr32/include/asm/byteorder.h1
-rw-r--r--arch/blackfin/include/asm/Kbuild1
-rw-r--r--arch/blackfin/include/asm/byteorder.h1
-rw-r--r--arch/cris/arch-v10/kernel/entry.S2
-rw-r--r--arch/cris/arch-v32/kernel/entry.S2
-rw-r--r--arch/cris/include/arch-v10/arch/swab.h (renamed from arch/cris/include/arch-v10/arch/byteorder.h)16
-rw-r--r--arch/cris/include/arch-v32/arch/byteorder.h20
-rw-r--r--arch/cris/include/arch-v32/arch/swab.h24
-rw-r--r--arch/cris/include/asm/byteorder.h19
-rw-r--r--arch/cris/include/asm/swab.h8
-rw-r--r--arch/h8300/include/asm/Kbuild1
-rw-r--r--arch/h8300/include/asm/byteorder.h1
-rw-r--r--arch/h8300/kernel/syscalls.S2
-rw-r--r--arch/ia64/Kconfig1
-rw-r--r--arch/ia64/configs/generic_defconfig2
-rw-r--r--arch/ia64/ia32/ia32_entry.S2
-rw-r--r--arch/ia64/include/asm/Kbuild1
-rw-r--r--arch/ia64/include/asm/byteorder.h1
-rw-r--r--arch/ia64/include/asm/dma-mapping.h2
-rw-r--r--arch/ia64/include/asm/machvec.h7
-rw-r--r--arch/ia64/include/asm/machvec_init.h1
-rw-r--r--arch/ia64/include/asm/machvec_sn2.h2
-rw-r--r--arch/ia64/include/asm/unistd.h2
-rw-r--r--arch/ia64/kernel/entry.S2
-rw-r--r--arch/ia64/kernel/kprobes.c2
-rw-r--r--arch/ia64/kernel/sys_ia64.c2
-rw-r--r--arch/ia64/kernel/unaligned.c6
-rw-r--r--arch/ia64/pci/pci.c27
-rw-r--r--arch/ia64/sn/pci/pci_dma.c6
-rw-r--r--arch/ia64/xen/time.c4
-rw-r--r--arch/m68k/include/asm/Kbuild (renamed from include/asm-m68k/Kbuild)1
-rw-r--r--arch/m68k/include/asm/MC68328.h (renamed from arch/m68knommu/include/asm/MC68328.h)0
-rw-r--r--arch/m68k/include/asm/MC68332.h (renamed from arch/m68knommu/include/asm/MC68332.h)0
-rw-r--r--arch/m68k/include/asm/MC68EZ328.h (renamed from arch/m68knommu/include/asm/MC68EZ328.h)0
-rw-r--r--arch/m68k/include/asm/MC68VZ328.h (renamed from arch/m68knommu/include/asm/MC68VZ328.h)0
-rw-r--r--arch/m68k/include/asm/a.out-core.h (renamed from include/asm-m68k/a.out-core.h)0
-rw-r--r--arch/m68k/include/asm/a.out.h (renamed from include/asm-m68k/a.out.h)0
-rw-r--r--arch/m68k/include/asm/adb_iop.h (renamed from include/asm-m68k/adb_iop.h)0
-rw-r--r--arch/m68k/include/asm/amigahw.h (renamed from include/asm-m68k/amigahw.h)0
-rw-r--r--arch/m68k/include/asm/amigaints.h (renamed from include/asm-m68k/amigaints.h)0
-rw-r--r--arch/m68k/include/asm/amigayle.h (renamed from include/asm-m68k/amigayle.h)0
-rw-r--r--arch/m68k/include/asm/amipcmcia.h (renamed from include/asm-m68k/amipcmcia.h)0
-rw-r--r--arch/m68k/include/asm/anchor.h (renamed from arch/m68knommu/include/asm/anchor.h)0
-rw-r--r--arch/m68k/include/asm/apollodma.h (renamed from include/asm-m68k/apollodma.h)0
-rw-r--r--arch/m68k/include/asm/apollohw.h (renamed from include/asm-m68k/apollohw.h)0
-rw-r--r--arch/m68k/include/asm/atafd.h (renamed from include/asm-m68k/atafd.h)0
-rw-r--r--arch/m68k/include/asm/atafdreg.h (renamed from include/asm-m68k/atafdreg.h)0
-rw-r--r--arch/m68k/include/asm/atari_joystick.h (renamed from include/asm-m68k/atari_joystick.h)0
-rw-r--r--arch/m68k/include/asm/atari_stdma.h (renamed from include/asm-m68k/atari_stdma.h)0
-rw-r--r--arch/m68k/include/asm/atari_stram.h (renamed from include/asm-m68k/atari_stram.h)0
-rw-r--r--arch/m68k/include/asm/atarihw.h (renamed from include/asm-m68k/atarihw.h)0
-rw-r--r--arch/m68k/include/asm/atariints.h (renamed from include/asm-m68k/atariints.h)0
-rw-r--r--arch/m68k/include/asm/atarikb.h (renamed from include/asm-m68k/atarikb.h)0
-rw-r--r--arch/m68k/include/asm/atomic.h5
-rw-r--r--arch/m68k/include/asm/atomic_mm.h (renamed from include/asm-m68k/atomic.h)0
-rw-r--r--arch/m68k/include/asm/atomic_no.h (renamed from arch/m68knommu/include/asm/atomic.h)0
-rw-r--r--arch/m68k/include/asm/auxvec.h (renamed from arch/m68knommu/include/asm/auxvec.h)0
-rw-r--r--arch/m68k/include/asm/bitops.h5
-rw-r--r--arch/m68k/include/asm/bitops_mm.h (renamed from include/asm-m68k/bitops.h)0
-rw-r--r--arch/m68k/include/asm/bitops_no.h (renamed from arch/m68knommu/include/asm/bitops.h)0
-rw-r--r--arch/m68k/include/asm/blinken.h (renamed from include/asm-m68k/blinken.h)0
-rw-r--r--arch/m68k/include/asm/bootinfo.h5
-rw-r--r--arch/m68k/include/asm/bootinfo_mm.h (renamed from include/asm-m68k/bootinfo.h)0
-rw-r--r--arch/m68k/include/asm/bootinfo_no.h (renamed from arch/m68knommu/include/asm/bootinfo.h)0
-rw-r--r--arch/m68k/include/asm/bootstd.h (renamed from arch/m68knommu/include/asm/bootstd.h)0
-rw-r--r--arch/m68k/include/asm/bug.h5
-rw-r--r--arch/m68k/include/asm/bug_mm.h (renamed from include/asm-m68k/bug.h)0
-rw-r--r--arch/m68k/include/asm/bug_no.h (renamed from arch/m68knommu/include/asm/bug.h)0
-rw-r--r--arch/m68k/include/asm/bugs.h5
-rw-r--r--arch/m68k/include/asm/bugs_mm.h (renamed from include/asm-m68k/bugs.h)0
-rw-r--r--arch/m68k/include/asm/bugs_no.h (renamed from arch/m68knommu/include/asm/bugs.h)0
-rw-r--r--arch/m68k/include/asm/bvme6000hw.h (renamed from include/asm-m68k/bvme6000hw.h)0
-rw-r--r--arch/m68k/include/asm/byteorder.h (renamed from include/asm-m68k/byteorder.h)1
-rw-r--r--arch/m68k/include/asm/cache.h5
-rw-r--r--arch/m68k/include/asm/cache_mm.h (renamed from include/asm-m68k/cache.h)0
-rw-r--r--arch/m68k/include/asm/cache_no.h (renamed from arch/m68knommu/include/asm/cache.h)0
-rw-r--r--arch/m68k/include/asm/cachectl.h (renamed from include/asm-m68k/cachectl.h)0
-rw-r--r--arch/m68k/include/asm/cacheflush.h5
-rw-r--r--arch/m68k/include/asm/cacheflush_mm.h (renamed from include/asm-m68k/cacheflush.h)0
-rw-r--r--arch/m68k/include/asm/cacheflush_no.h (renamed from arch/m68knommu/include/asm/cacheflush.h)0
-rw-r--r--arch/m68k/include/asm/checksum.h5
-rw-r--r--arch/m68k/include/asm/checksum_mm.h (renamed from include/asm-m68k/checksum.h)0
-rw-r--r--arch/m68k/include/asm/checksum_no.h (renamed from arch/m68knommu/include/asm/checksum.h)0
-rw-r--r--arch/m68k/include/asm/coldfire.h (renamed from arch/m68knommu/include/asm/coldfire.h)0
-rw-r--r--arch/m68k/include/asm/commproc.h (renamed from arch/m68knommu/include/asm/commproc.h)0
-rw-r--r--arch/m68k/include/asm/contregs.h (renamed from include/asm-m68k/contregs.h)0
-rw-r--r--arch/m68k/include/asm/cputime.h (renamed from include/asm-m68k/cputime.h)0
-rw-r--r--arch/m68k/include/asm/current.h5
-rw-r--r--arch/m68k/include/asm/current_mm.h (renamed from include/asm-m68k/current.h)0
-rw-r--r--arch/m68k/include/asm/current_no.h (renamed from arch/m68knommu/include/asm/current.h)0
-rw-r--r--arch/m68k/include/asm/dbg.h (renamed from arch/m68knommu/include/asm/dbg.h)0
-rw-r--r--arch/m68k/include/asm/delay.h5
-rw-r--r--arch/m68k/include/asm/delay_mm.h (renamed from include/asm-m68k/delay.h)0
-rw-r--r--arch/m68k/include/asm/delay_no.h (renamed from arch/m68knommu/include/asm/delay.h)0
-rw-r--r--arch/m68k/include/asm/device.h (renamed from arch/m68knommu/include/asm/device.h)0
-rw-r--r--arch/m68k/include/asm/div64.h5
-rw-r--r--arch/m68k/include/asm/div64_mm.h (renamed from include/asm-m68k/div64.h)0
-rw-r--r--arch/m68k/include/asm/div64_no.h (renamed from arch/m68knommu/include/asm/div64.h)0
-rw-r--r--arch/m68k/include/asm/dma-mapping.h5
-rw-r--r--arch/m68k/include/asm/dma-mapping_mm.h (renamed from include/asm-m68k/dma-mapping.h)0
-rw-r--r--arch/m68k/include/asm/dma-mapping_no.h (renamed from arch/m68knommu/include/asm/dma-mapping.h)0
-rw-r--r--arch/m68k/include/asm/dma.h5
-rw-r--r--arch/m68k/include/asm/dma_mm.h (renamed from include/asm-m68k/dma.h)0
-rw-r--r--arch/m68k/include/asm/dma_no.h (renamed from arch/m68knommu/include/asm/dma.h)0
-rw-r--r--arch/m68k/include/asm/dsp56k.h (renamed from include/asm-m68k/dsp56k.h)0
-rw-r--r--arch/m68k/include/asm/dvma.h (renamed from include/asm-m68k/dvma.h)0
-rw-r--r--arch/m68k/include/asm/elf.h5
-rw-r--r--arch/m68k/include/asm/elf_mm.h (renamed from include/asm-m68k/elf.h)0
-rw-r--r--arch/m68k/include/asm/elf_no.h (renamed from arch/m68knommu/include/asm/elf.h)0
-rw-r--r--arch/m68k/include/asm/elia.h (renamed from arch/m68knommu/include/asm/elia.h)0
-rw-r--r--arch/m68k/include/asm/emergency-restart.h (renamed from arch/m68knommu/include/asm/emergency-restart.h)0
-rw-r--r--arch/m68k/include/asm/entry.h5
-rw-r--r--arch/m68k/include/asm/entry_mm.h (renamed from include/asm-m68k/entry.h)0
-rw-r--r--arch/m68k/include/asm/entry_no.h (renamed from arch/m68knommu/include/asm/entry.h)0
-rw-r--r--arch/m68k/include/asm/errno.h (renamed from include/asm-m68k/errno.h)0
-rw-r--r--arch/m68k/include/asm/fb.h5
-rw-r--r--arch/m68k/include/asm/fb_mm.h (renamed from include/asm-m68k/fb.h)0
-rw-r--r--arch/m68k/include/asm/fb_no.h (renamed from arch/m68knommu/include/asm/fb.h)0
-rw-r--r--arch/m68k/include/asm/fbio.h (renamed from include/asm-m68k/fbio.h)0
-rw-r--r--arch/m68k/include/asm/fcntl.h (renamed from include/asm-m68k/fcntl.h)0
-rw-r--r--arch/m68k/include/asm/flat.h (renamed from arch/m68knommu/include/asm/flat.h)0
-rw-r--r--arch/m68k/include/asm/floppy.h (renamed from include/asm-m68k/floppy.h)0
-rw-r--r--arch/m68k/include/asm/fpu.h5
-rw-r--r--arch/m68k/include/asm/fpu_mm.h (renamed from include/asm-m68k/fpu.h)0
-rw-r--r--arch/m68k/include/asm/fpu_no.h (renamed from arch/m68knommu/include/asm/fpu.h)0
-rw-r--r--arch/m68k/include/asm/futex.h (renamed from arch/m68knommu/include/asm/futex.h)0
-rw-r--r--arch/m68k/include/asm/hardirq.h5
-rw-r--r--arch/m68k/include/asm/hardirq_mm.h (renamed from include/asm-m68k/hardirq.h)0
-rw-r--r--arch/m68k/include/asm/hardirq_no.h (renamed from arch/m68knommu/include/asm/hardirq.h)0
-rw-r--r--arch/m68k/include/asm/hp300hw.h (renamed from include/asm-m68k/hp300hw.h)0
-rw-r--r--arch/m68k/include/asm/hw_irq.h5
-rw-r--r--arch/m68k/include/asm/hw_irq_mm.h (renamed from include/asm-m68k/hw_irq.h)0
-rw-r--r--arch/m68k/include/asm/hw_irq_no.h (renamed from arch/m68knommu/include/asm/hw_irq.h)0
-rw-r--r--arch/m68k/include/asm/hwtest.h (renamed from include/asm-m68k/hwtest.h)0
-rw-r--r--arch/m68k/include/asm/ide.h (renamed from include/asm-m68k/ide.h)0
-rw-r--r--arch/m68k/include/asm/idprom.h (renamed from include/asm-m68k/idprom.h)0
-rw-r--r--arch/m68k/include/asm/intersil.h (renamed from include/asm-m68k/intersil.h)0
-rw-r--r--arch/m68k/include/asm/io.h5
-rw-r--r--arch/m68k/include/asm/io_mm.h (renamed from include/asm-m68k/io.h)0
-rw-r--r--arch/m68k/include/asm/io_no.h (renamed from arch/m68knommu/include/asm/io.h)0
-rw-r--r--arch/m68k/include/asm/ioctl.h (renamed from arch/m68knommu/include/asm/ioctl.h)0
-rw-r--r--arch/m68k/include/asm/ioctls.h (renamed from include/asm-m68k/ioctls.h)0
-rw-r--r--arch/m68k/include/asm/ipcbuf.h (renamed from include/asm-m68k/ipcbuf.h)0
-rw-r--r--arch/m68k/include/asm/irq.h5
-rw-r--r--arch/m68k/include/asm/irq_mm.h (renamed from include/asm-m68k/irq.h)0
-rw-r--r--arch/m68k/include/asm/irq_no.h (renamed from arch/m68knommu/include/asm/irq.h)0
-rw-r--r--arch/m68k/include/asm/irq_regs.h (renamed from arch/m68knommu/include/asm/irq_regs.h)0
-rw-r--r--arch/m68k/include/asm/kdebug.h (renamed from arch/m68knommu/include/asm/kdebug.h)0
-rw-r--r--arch/m68k/include/asm/kmap_types.h5
-rw-r--r--arch/m68k/include/asm/kmap_types_mm.h (renamed from include/asm-m68k/kmap_types.h)0
-rw-r--r--arch/m68k/include/asm/kmap_types_no.h (renamed from arch/m68knommu/include/asm/kmap_types.h)0
-rw-r--r--arch/m68k/include/asm/linkage.h (renamed from include/asm-m68k/linkage.h)0
-rw-r--r--arch/m68k/include/asm/local.h (renamed from include/asm-m68k/local.h)0
-rw-r--r--arch/m68k/include/asm/m5206sim.h (renamed from arch/m68knommu/include/asm/m5206sim.h)0
-rw-r--r--arch/m68k/include/asm/m520xsim.h (renamed from arch/m68knommu/include/asm/m520xsim.h)0
-rw-r--r--arch/m68k/include/asm/m523xsim.h (renamed from arch/m68knommu/include/asm/m523xsim.h)0
-rw-r--r--arch/m68k/include/asm/m5249sim.h (renamed from arch/m68knommu/include/asm/m5249sim.h)0
-rw-r--r--arch/m68k/include/asm/m5272sim.h (renamed from arch/m68knommu/include/asm/m5272sim.h)0
-rw-r--r--arch/m68k/include/asm/m527xsim.h (renamed from arch/m68knommu/include/asm/m527xsim.h)0
-rw-r--r--arch/m68k/include/asm/m528xsim.h (renamed from arch/m68knommu/include/asm/m528xsim.h)0
-rw-r--r--arch/m68k/include/asm/m5307sim.h (renamed from arch/m68knommu/include/asm/m5307sim.h)0
-rw-r--r--arch/m68k/include/asm/m532xsim.h (renamed from arch/m68knommu/include/asm/m532xsim.h)0
-rw-r--r--arch/m68k/include/asm/m5407sim.h (renamed from arch/m68knommu/include/asm/m5407sim.h)0
-rw-r--r--arch/m68k/include/asm/m68360.h (renamed from arch/m68knommu/include/asm/m68360.h)0
-rw-r--r--arch/m68k/include/asm/m68360_enet.h (renamed from arch/m68knommu/include/asm/m68360_enet.h)0
-rw-r--r--arch/m68k/include/asm/m68360_pram.h (renamed from arch/m68knommu/include/asm/m68360_pram.h)0
-rw-r--r--arch/m68k/include/asm/m68360_quicc.h (renamed from arch/m68knommu/include/asm/m68360_quicc.h)0
-rw-r--r--arch/m68k/include/asm/m68360_regs.h (renamed from arch/m68knommu/include/asm/m68360_regs.h)0
-rw-r--r--arch/m68k/include/asm/mac_asc.h (renamed from include/asm-m68k/mac_asc.h)0
-rw-r--r--arch/m68k/include/asm/mac_baboon.h (renamed from include/asm-m68k/mac_baboon.h)0
-rw-r--r--arch/m68k/include/asm/mac_iop.h (renamed from include/asm-m68k/mac_iop.h)0
-rw-r--r--arch/m68k/include/asm/mac_mouse.h (renamed from include/asm-m68k/mac_mouse.h)0
-rw-r--r--arch/m68k/include/asm/mac_oss.h (renamed from include/asm-m68k/mac_oss.h)0
-rw-r--r--arch/m68k/include/asm/mac_psc.h (renamed from include/asm-m68k/mac_psc.h)0
-rw-r--r--arch/m68k/include/asm/mac_via.h (renamed from include/asm-m68k/mac_via.h)0
-rw-r--r--arch/m68k/include/asm/machdep.h5
-rw-r--r--arch/m68k/include/asm/machdep_mm.h (renamed from include/asm-m68k/machdep.h)0
-rw-r--r--arch/m68k/include/asm/machdep_no.h (renamed from arch/m68knommu/include/asm/machdep.h)0
-rw-r--r--arch/m68k/include/asm/machines.h (renamed from include/asm-m68k/machines.h)0
-rw-r--r--arch/m68k/include/asm/machw.h (renamed from include/asm-m68k/machw.h)0
-rw-r--r--arch/m68k/include/asm/macintosh.h (renamed from include/asm-m68k/macintosh.h)0
-rw-r--r--arch/m68k/include/asm/macints.h (renamed from include/asm-m68k/macints.h)0
-rw-r--r--arch/m68k/include/asm/math-emu.h (renamed from include/asm-m68k/math-emu.h)0
-rw-r--r--arch/m68k/include/asm/mc146818rtc.h5
-rw-r--r--arch/m68k/include/asm/mc146818rtc_mm.h (renamed from include/asm-m68k/mc146818rtc.h)0
-rw-r--r--arch/m68k/include/asm/mc146818rtc_no.h (renamed from arch/m68knommu/include/asm/mc146818rtc.h)0
-rw-r--r--arch/m68k/include/asm/mcfcache.h (renamed from arch/m68knommu/include/asm/mcfcache.h)0
-rw-r--r--arch/m68k/include/asm/mcfdma.h (renamed from arch/m68knommu/include/asm/mcfdma.h)0
-rw-r--r--arch/m68k/include/asm/mcfmbus.h (renamed from arch/m68knommu/include/asm/mcfmbus.h)0
-rw-r--r--arch/m68k/include/asm/mcfne.h (renamed from arch/m68knommu/include/asm/mcfne.h)0
-rw-r--r--arch/m68k/include/asm/mcfpci.h (renamed from arch/m68knommu/include/asm/mcfpci.h)0
-rw-r--r--arch/m68k/include/asm/mcfpit.h (renamed from arch/m68knommu/include/asm/mcfpit.h)0
-rw-r--r--arch/m68k/include/asm/mcfsim.h (renamed from arch/m68knommu/include/asm/mcfsim.h)0
-rw-r--r--arch/m68k/include/asm/mcfsmc.h (renamed from arch/m68knommu/include/asm/mcfsmc.h)0
-rw-r--r--arch/m68k/include/asm/mcftimer.h (renamed from arch/m68knommu/include/asm/mcftimer.h)0
-rw-r--r--arch/m68k/include/asm/mcfuart.h (renamed from arch/m68knommu/include/asm/mcfuart.h)0
-rw-r--r--arch/m68k/include/asm/mcfwdebug.h (renamed from arch/m68knommu/include/asm/mcfwdebug.h)0
-rw-r--r--arch/m68k/include/asm/md.h (renamed from include/asm-m68k/md.h)0
-rw-r--r--arch/m68k/include/asm/mman.h (renamed from include/asm-m68k/mman.h)0
-rw-r--r--arch/m68k/include/asm/mmu.h5
-rw-r--r--arch/m68k/include/asm/mmu_context.h5
-rw-r--r--arch/m68k/include/asm/mmu_context_mm.h (renamed from include/asm-m68k/mmu_context.h)0
-rw-r--r--arch/m68k/include/asm/mmu_context_no.h (renamed from arch/m68knommu/include/asm/mmu_context.h)0
-rw-r--r--arch/m68k/include/asm/mmu_mm.h (renamed from include/asm-m68k/mmu.h)0
-rw-r--r--arch/m68k/include/asm/mmu_no.h (renamed from arch/m68knommu/include/asm/mmu.h)0
-rw-r--r--arch/m68k/include/asm/mmzone.h (renamed from include/asm-m68k/mmzone.h)0
-rw-r--r--arch/m68k/include/asm/module.h5
-rw-r--r--arch/m68k/include/asm/module_mm.h (renamed from include/asm-m68k/module.h)0
-rw-r--r--arch/m68k/include/asm/module_no.h (renamed from arch/m68knommu/include/asm/module.h)0
-rw-r--r--arch/m68k/include/asm/motorola_pgalloc.h (renamed from include/asm-m68k/motorola_pgalloc.h)0
-rw-r--r--arch/m68k/include/asm/motorola_pgtable.h (renamed from include/asm-m68k/motorola_pgtable.h)0
-rw-r--r--arch/m68k/include/asm/movs.h (renamed from include/asm-m68k/movs.h)0
-rw-r--r--arch/m68k/include/asm/msgbuf.h (renamed from include/asm-m68k/msgbuf.h)0
-rw-r--r--arch/m68k/include/asm/mutex.h (renamed from arch/m68knommu/include/asm/mutex.h)0
-rw-r--r--arch/m68k/include/asm/mvme147hw.h (renamed from include/asm-m68k/mvme147hw.h)0
-rw-r--r--arch/m68k/include/asm/mvme16xhw.h (renamed from include/asm-m68k/mvme16xhw.h)0
-rw-r--r--arch/m68k/include/asm/nettel.h (renamed from arch/m68knommu/include/asm/nettel.h)0
-rw-r--r--arch/m68k/include/asm/nubus.h (renamed from include/asm-m68k/nubus.h)0
-rw-r--r--arch/m68k/include/asm/openprom.h (renamed from include/asm-m68k/openprom.h)0
-rw-r--r--arch/m68k/include/asm/oplib.h (renamed from include/asm-m68k/oplib.h)0
-rw-r--r--arch/m68k/include/asm/page.h5
-rw-r--r--arch/m68k/include/asm/page_mm.h (renamed from include/asm-m68k/page.h)0
-rw-r--r--arch/m68k/include/asm/page_no.h (renamed from arch/m68knommu/include/asm/page.h)0
-rw-r--r--arch/m68k/include/asm/page_offset.h5
-rw-r--r--arch/m68k/include/asm/page_offset_mm.h (renamed from include/asm-m68k/page_offset.h)0
-rw-r--r--arch/m68k/include/asm/page_offset_no.h (renamed from arch/m68knommu/include/asm/page_offset.h)0
-rw-r--r--arch/m68k/include/asm/param.h5
-rw-r--r--arch/m68k/include/asm/param_mm.h (renamed from include/asm-m68k/param.h)0
-rw-r--r--arch/m68k/include/asm/param_no.h (renamed from arch/m68knommu/include/asm/param.h)0
-rw-r--r--arch/m68k/include/asm/parport.h (renamed from include/asm-m68k/parport.h)0
-rw-r--r--arch/m68k/include/asm/pci.h5
-rw-r--r--arch/m68k/include/asm/pci_mm.h (renamed from include/asm-m68k/pci.h)0
-rw-r--r--arch/m68k/include/asm/pci_no.h (renamed from arch/m68knommu/include/asm/pci.h)2
-rw-r--r--arch/m68k/include/asm/percpu.h (renamed from include/asm-m68k/percpu.h)0
-rw-r--r--arch/m68k/include/asm/pgalloc.h5
-rw-r--r--arch/m68k/include/asm/pgalloc_mm.h (renamed from include/asm-m68k/pgalloc.h)0
-rw-r--r--arch/m68k/include/asm/pgalloc_no.h (renamed from arch/m68knommu/include/asm/pgalloc.h)0
-rw-r--r--arch/m68k/include/asm/pgtable.h5
-rw-r--r--arch/m68k/include/asm/pgtable_mm.h (renamed from include/asm-m68k/pgtable.h)0
-rw-r--r--arch/m68k/include/asm/pgtable_no.h (renamed from arch/m68knommu/include/asm/pgtable.h)0
-rw-r--r--arch/m68k/include/asm/poll.h (renamed from include/asm-m68k/poll.h)0
-rw-r--r--arch/m68k/include/asm/posix_types.h (renamed from include/asm-m68k/posix_types.h)0
-rw-r--r--arch/m68k/include/asm/processor.h5
-rw-r--r--arch/m68k/include/asm/processor_mm.h (renamed from include/asm-m68k/processor.h)0
-rw-r--r--arch/m68k/include/asm/processor_no.h (renamed from arch/m68knommu/include/asm/processor.h)0
-rw-r--r--arch/m68k/include/asm/ptrace.h5
-rw-r--r--arch/m68k/include/asm/ptrace_mm.h (renamed from include/asm-m68k/ptrace.h)0
-rw-r--r--arch/m68k/include/asm/ptrace_no.h (renamed from arch/m68knommu/include/asm/ptrace.h)0
-rw-r--r--arch/m68k/include/asm/q40_master.h (renamed from include/asm-m68k/q40_master.h)0
-rw-r--r--arch/m68k/include/asm/q40ints.h (renamed from include/asm-m68k/q40ints.h)0
-rw-r--r--arch/m68k/include/asm/quicc_simple.h (renamed from arch/m68knommu/include/asm/quicc_simple.h)0
-rw-r--r--arch/m68k/include/asm/raw_io.h (renamed from include/asm-m68k/raw_io.h)0
-rw-r--r--arch/m68k/include/asm/resource.h (renamed from include/asm-m68k/resource.h)0
-rw-r--r--arch/m68k/include/asm/rtc.h (renamed from include/asm-m68k/rtc.h)0
-rw-r--r--arch/m68k/include/asm/sbus.h (renamed from include/asm-m68k/sbus.h)0
-rw-r--r--arch/m68k/include/asm/scatterlist.h5
-rw-r--r--arch/m68k/include/asm/scatterlist_mm.h (renamed from include/asm-m68k/scatterlist.h)0
-rw-r--r--arch/m68k/include/asm/scatterlist_no.h (renamed from arch/m68knommu/include/asm/scatterlist.h)0
-rw-r--r--arch/m68k/include/asm/sections.h (renamed from include/asm-m68k/sections.h)0
-rw-r--r--arch/m68k/include/asm/segment.h5
-rw-r--r--arch/m68k/include/asm/segment_mm.h (renamed from include/asm-m68k/segment.h)0
-rw-r--r--arch/m68k/include/asm/segment_no.h (renamed from arch/m68knommu/include/asm/segment.h)0
-rw-r--r--arch/m68k/include/asm/sembuf.h (renamed from include/asm-m68k/sembuf.h)0
-rw-r--r--arch/m68k/include/asm/serial.h (renamed from include/asm-m68k/serial.h)0
-rw-r--r--arch/m68k/include/asm/setup.h5
-rw-r--r--arch/m68k/include/asm/setup_mm.h (renamed from include/asm-m68k/setup.h)0
-rw-r--r--arch/m68k/include/asm/setup_no.h (renamed from arch/m68knommu/include/asm/setup.h)2
-rw-r--r--arch/m68k/include/asm/shm.h (renamed from include/asm-m68k/shm.h)0
-rw-r--r--arch/m68k/include/asm/shmbuf.h (renamed from include/asm-m68k/shmbuf.h)0
-rw-r--r--arch/m68k/include/asm/shmparam.h (renamed from include/asm-m68k/shmparam.h)0
-rw-r--r--arch/m68k/include/asm/sigcontext.h5
-rw-r--r--arch/m68k/include/asm/sigcontext_mm.h (renamed from include/asm-m68k/sigcontext.h)0
-rw-r--r--arch/m68k/include/asm/sigcontext_no.h (renamed from arch/m68knommu/include/asm/sigcontext.h)0
-rw-r--r--arch/m68k/include/asm/siginfo.h5
-rw-r--r--arch/m68k/include/asm/siginfo_mm.h (renamed from include/asm-m68k/siginfo.h)0
-rw-r--r--arch/m68k/include/asm/siginfo_no.h (renamed from arch/m68knommu/include/asm/siginfo.h)0
-rw-r--r--arch/m68k/include/asm/signal.h5
-rw-r--r--arch/m68k/include/asm/signal_mm.h (renamed from include/asm-m68k/signal.h)0
-rw-r--r--arch/m68k/include/asm/signal_no.h (renamed from arch/m68knommu/include/asm/signal.h)0
-rw-r--r--arch/m68k/include/asm/smp.h (renamed from arch/m68knommu/include/asm/smp.h)0
-rw-r--r--arch/m68k/include/asm/socket.h (renamed from include/asm-m68k/socket.h)0
-rw-r--r--arch/m68k/include/asm/sockios.h (renamed from include/asm-m68k/sockios.h)0
-rw-r--r--arch/m68k/include/asm/spinlock.h (renamed from include/asm-m68k/spinlock.h)0
-rw-r--r--arch/m68k/include/asm/stat.h (renamed from include/asm-m68k/stat.h)0
-rw-r--r--arch/m68k/include/asm/statfs.h (renamed from include/asm-m68k/statfs.h)0
-rw-r--r--arch/m68k/include/asm/string.h5
-rw-r--r--arch/m68k/include/asm/string_mm.h (renamed from include/asm-m68k/string.h)0
-rw-r--r--arch/m68k/include/asm/string_no.h (renamed from arch/m68knommu/include/asm/string.h)0
-rw-r--r--arch/m68k/include/asm/sun3-head.h (renamed from include/asm-m68k/sun3-head.h)0
-rw-r--r--arch/m68k/include/asm/sun3_pgalloc.h (renamed from include/asm-m68k/sun3_pgalloc.h)0
-rw-r--r--arch/m68k/include/asm/sun3_pgtable.h (renamed from include/asm-m68k/sun3_pgtable.h)0
-rw-r--r--arch/m68k/include/asm/sun3ints.h (renamed from include/asm-m68k/sun3ints.h)0
-rw-r--r--arch/m68k/include/asm/sun3mmu.h (renamed from include/asm-m68k/sun3mmu.h)0
-rw-r--r--arch/m68k/include/asm/sun3x.h (renamed from include/asm-m68k/sun3x.h)0
-rw-r--r--arch/m68k/include/asm/sun3xflop.h (renamed from include/asm-m68k/sun3xflop.h)0
-rw-r--r--arch/m68k/include/asm/sun3xprom.h (renamed from include/asm-m68k/sun3xprom.h)0
-rw-r--r--arch/m68k/include/asm/suspend.h (renamed from include/asm-m68k/suspend.h)0
-rw-r--r--arch/m68k/include/asm/swab.h5
-rw-r--r--arch/m68k/include/asm/swab_mm.h (renamed from include/asm-m68k/swab.h)0
-rw-r--r--arch/m68k/include/asm/swab_no.h (renamed from arch/m68knommu/include/asm/swab.h)0
-rw-r--r--arch/m68k/include/asm/system.h5
-rw-r--r--arch/m68k/include/asm/system_mm.h (renamed from include/asm-m68k/system.h)0
-rw-r--r--arch/m68k/include/asm/system_no.h (renamed from arch/m68knommu/include/asm/system.h)0
-rw-r--r--arch/m68k/include/asm/termbits.h (renamed from include/asm-m68k/termbits.h)0
-rw-r--r--arch/m68k/include/asm/termios.h (renamed from include/asm-m68k/termios.h)0
-rw-r--r--arch/m68k/include/asm/thread_info.h5
-rw-r--r--arch/m68k/include/asm/thread_info_mm.h (renamed from include/asm-m68k/thread_info.h)0
-rw-r--r--arch/m68k/include/asm/thread_info_no.h (renamed from arch/m68knommu/include/asm/thread_info.h)0
-rw-r--r--arch/m68k/include/asm/timex.h5
-rw-r--r--arch/m68k/include/asm/timex_mm.h (renamed from include/asm-m68k/timex.h)0
-rw-r--r--arch/m68k/include/asm/timex_no.h (renamed from arch/m68knommu/include/asm/timex.h)0
-rw-r--r--arch/m68k/include/asm/tlb.h (renamed from include/asm-m68k/tlb.h)0
-rw-r--r--arch/m68k/include/asm/tlbflush.h5
-rw-r--r--arch/m68k/include/asm/tlbflush_mm.h (renamed from include/asm-m68k/tlbflush.h)0
-rw-r--r--arch/m68k/include/asm/tlbflush_no.h (renamed from arch/m68knommu/include/asm/tlbflush.h)0
-rw-r--r--arch/m68k/include/asm/topology.h (renamed from arch/m68knommu/include/asm/topology.h)0
-rw-r--r--arch/m68k/include/asm/traps.h5
-rw-r--r--arch/m68k/include/asm/traps_mm.h (renamed from include/asm-m68k/traps.h)0
-rw-r--r--arch/m68k/include/asm/traps_no.h (renamed from arch/m68knommu/include/asm/traps.h)0
-rw-r--r--arch/m68k/include/asm/types.h (renamed from include/asm-m68k/types.h)0
-rw-r--r--arch/m68k/include/asm/uaccess.h5
-rw-r--r--arch/m68k/include/asm/uaccess_mm.h (renamed from include/asm-m68k/uaccess.h)0
-rw-r--r--arch/m68k/include/asm/uaccess_no.h (renamed from arch/m68knommu/include/asm/uaccess.h)0
-rw-r--r--arch/m68k/include/asm/ucontext.h5
-rw-r--r--arch/m68k/include/asm/ucontext_mm.h (renamed from include/asm-m68k/ucontext.h)0
-rw-r--r--arch/m68k/include/asm/ucontext_no.h (renamed from arch/m68knommu/include/asm/ucontext.h)0
-rw-r--r--arch/m68k/include/asm/unaligned.h5
-rw-r--r--arch/m68k/include/asm/unaligned_mm.h (renamed from include/asm-m68k/unaligned.h)0
-rw-r--r--arch/m68k/include/asm/unaligned_no.h (renamed from arch/m68knommu/include/asm/unaligned.h)0
-rw-r--r--arch/m68k/include/asm/unistd.h5
-rw-r--r--arch/m68k/include/asm/unistd_mm.h (renamed from include/asm-m68k/unistd.h)0
-rw-r--r--arch/m68k/include/asm/unistd_no.h (renamed from arch/m68knommu/include/asm/unistd.h)0
-rw-r--r--arch/m68k/include/asm/user.h (renamed from include/asm-m68k/user.h)0
-rw-r--r--arch/m68k/include/asm/virtconvert.h (renamed from include/asm-m68k/virtconvert.h)0
-rw-r--r--arch/m68k/include/asm/xor.h (renamed from include/asm-m68k/xor.h)0
-rw-r--r--arch/m68k/include/asm/zorro.h (renamed from include/asm-m68k/zorro.h)0
-rw-r--r--arch/m68k/kernel/entry.S2
-rw-r--r--arch/m68knommu/include/asm/Kbuild3
-rw-r--r--arch/m68knommu/include/asm/byteorder.h7
-rw-r--r--arch/m68knommu/include/asm/cachectl.h1
-rw-r--r--arch/m68knommu/include/asm/cputime.h6
-rw-r--r--arch/m68knommu/include/asm/errno.h1
-rw-r--r--arch/m68knommu/include/asm/fcntl.h1
-rw-r--r--arch/m68knommu/include/asm/hwtest.h1
-rw-r--r--arch/m68knommu/include/asm/ioctls.h1
-rw-r--r--arch/m68knommu/include/asm/ipcbuf.h1
-rw-r--r--arch/m68knommu/include/asm/linkage.h1
-rw-r--r--arch/m68knommu/include/asm/local.h6
-rw-r--r--arch/m68knommu/include/asm/math-emu.h1
-rw-r--r--arch/m68knommu/include/asm/md.h1
-rw-r--r--arch/m68knommu/include/asm/mman.h1
-rw-r--r--arch/m68knommu/include/asm/movs.h1
-rw-r--r--arch/m68knommu/include/asm/msgbuf.h1
-rw-r--r--arch/m68knommu/include/asm/openprom.h1
-rw-r--r--arch/m68knommu/include/asm/oplib.h1
-rw-r--r--arch/m68knommu/include/asm/percpu.h6
-rw-r--r--arch/m68knommu/include/asm/poll.h1
-rw-r--r--arch/m68knommu/include/asm/posix_types.h1
-rw-r--r--arch/m68knommu/include/asm/resource.h1
-rw-r--r--arch/m68knommu/include/asm/rtc.h1
-rw-r--r--arch/m68knommu/include/asm/sections.h7
-rw-r--r--arch/m68knommu/include/asm/sembuf.h1
-rw-r--r--arch/m68knommu/include/asm/shm.h1
-rw-r--r--arch/m68knommu/include/asm/shmbuf.h1
-rw-r--r--arch/m68knommu/include/asm/shmparam.h1
-rw-r--r--arch/m68knommu/include/asm/socket.h1
-rw-r--r--arch/m68knommu/include/asm/sockios.h1
-rw-r--r--arch/m68knommu/include/asm/spinlock.h1
-rw-r--r--arch/m68knommu/include/asm/stat.h1
-rw-r--r--arch/m68knommu/include/asm/statfs.h1
-rw-r--r--arch/m68knommu/include/asm/termbits.h1
-rw-r--r--arch/m68knommu/include/asm/termios.h1
-rw-r--r--arch/m68knommu/include/asm/tlb.h1
-rw-r--r--arch/m68knommu/include/asm/types.h1
-rw-r--r--arch/m68knommu/include/asm/user.h1
-rw-r--r--arch/m68knommu/kernel/syscalltable.S2
-rw-r--r--arch/mips/include/asm/Kbuild1
-rw-r--r--arch/mips/include/asm/byteorder.h2
-rw-r--r--arch/mips/kernel/scall32-o32.S2
-rw-r--r--arch/mn10300/kernel/entry.S2
-rw-r--r--arch/parisc/include/asm/Kbuild1
-rw-r--r--arch/parisc/include/asm/byteorder.h1
-rw-r--r--arch/powerpc/Kconfig1
-rw-r--r--arch/powerpc/boot/dts/mpc8315erdb.dts4
-rw-r--r--arch/powerpc/boot/dts/mpc8544ds.dts4
-rw-r--r--arch/powerpc/boot/dts/mpc8572ds.dts4
-rw-r--r--arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts2
-rw-r--r--arch/powerpc/configs/ppc64_defconfig26
-rw-r--r--arch/powerpc/include/asm/Kbuild1
-rw-r--r--arch/powerpc/include/asm/byteorder.h2
-rw-r--r--arch/powerpc/include/asm/ps3.h8
-rw-r--r--arch/powerpc/include/asm/qe.h19
-rw-r--r--arch/powerpc/include/asm/rtas.h2
-rw-r--r--arch/powerpc/include/asm/systbl.h2
-rw-r--r--arch/powerpc/include/asm/types.h7
-rw-r--r--arch/powerpc/kernel/asm-offsets.c7
-rw-r--r--arch/powerpc/kernel/cacheinfo.c10
-rw-r--r--arch/powerpc/kernel/dma-iommu.c4
-rw-r--r--arch/powerpc/kernel/head_64.S9
-rw-r--r--arch/powerpc/kernel/head_fsl_booke.S8
-rw-r--r--arch/powerpc/kernel/iommu.c12
-rw-r--r--arch/powerpc/kernel/lparcfg.c10
-rw-r--r--arch/powerpc/kernel/machine_kexec.c25
-rw-r--r--arch/powerpc/kernel/pci_64.c6
-rw-r--r--arch/powerpc/kernel/prom.c5
-rw-r--r--arch/powerpc/kernel/setup_64.c6
-rw-r--r--arch/powerpc/kernel/vmlinux.lds.S4
-rw-r--r--arch/powerpc/mm/fsl_booke_mmu.c9
-rw-r--r--arch/powerpc/mm/mmu_decl.h11
-rw-r--r--arch/powerpc/mm/slice.c11
-rw-r--r--arch/powerpc/mm/stab.c4
-rw-r--r--arch/powerpc/oprofile/op_model_pa6t.c6
-rw-r--r--arch/powerpc/platforms/512x/clock.c4
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_gpio.c3
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_pic.c8
-rw-r--r--arch/powerpc/platforms/83xx/Makefile1
-rw-r--r--arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c (renamed from drivers/i2c/chips/mcu_mpc8349emitx.c)0
-rw-r--r--arch/powerpc/platforms/Kconfig11
-rw-r--r--arch/powerpc/platforms/cell/beat_interrupt.c2
-rw-r--r--arch/powerpc/platforms/cell/celleb_scc_epci.c4
-rw-r--r--arch/powerpc/platforms/cell/iommu.c4
-rw-r--r--arch/powerpc/platforms/cell/ras.c8
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c4
-rw-r--r--arch/powerpc/platforms/cell/spu_callbacks.c2
-rw-r--r--arch/powerpc/platforms/cell/spufs/coredump.c2
-rw-r--r--arch/powerpc/platforms/cell/spufs/fault.c2
-rw-r--r--arch/powerpc/platforms/cell/spufs/file.c6
-rw-r--r--arch/powerpc/platforms/fsl_uli1575.c1
-rw-r--r--arch/powerpc/platforms/iseries/iommu.c4
-rw-r--r--arch/powerpc/platforms/powermac/smp.c2
-rw-r--r--arch/powerpc/platforms/ps3/device-init.c26
-rw-r--r--arch/powerpc/platforms/ps3/htab.c2
-rw-r--r--arch/powerpc/platforms/ps3/interrupt.c28
-rw-r--r--arch/powerpc/platforms/ps3/mm.c97
-rw-r--r--arch/powerpc/platforms/ps3/os-area.c2
-rw-r--r--arch/powerpc/platforms/ps3/repository.c22
-rw-r--r--arch/powerpc/platforms/ps3/setup.c2
-rw-r--r--arch/powerpc/platforms/ps3/spu.c12
-rw-r--r--arch/powerpc/platforms/ps3/system-bus.c14
-rw-r--r--arch/powerpc/platforms/pseries/iommu.c35
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c107
-rw-r--r--arch/powerpc/sysdev/mpic.c2
-rw-r--r--arch/s390/Kconfig1
-rw-r--r--arch/s390/include/asm/Kbuild1
-rw-r--r--arch/s390/include/asm/byteorder.h1
-rw-r--r--arch/s390/include/asm/elf.h16
-rw-r--r--arch/s390/kernel/compat_wrapper.S42
-rw-r--r--arch/s390/kernel/entry.h16
-rw-r--r--arch/s390/kernel/process.c9
-rw-r--r--arch/s390/kernel/signal.c19
-rw-r--r--arch/s390/kernel/sys_s390.c35
-rw-r--r--arch/s390/kernel/syscalls.S24
-rw-r--r--arch/s390/kernel/time.c6
-rw-r--r--arch/s390/kernel/vtime.c4
-rw-r--r--arch/sh/Kconfig63
-rw-r--r--arch/sh/boards/board-ap325rxa.c53
-rw-r--r--arch/sh/boards/board-magicpanelr2.c23
-rw-r--r--arch/sh/boards/board-sh7785lcr.c1
-rw-r--r--arch/sh/boards/mach-highlander/setup.c1
-rw-r--r--arch/sh/boards/mach-hp6xx/setup.c2
-rw-r--r--arch/sh/boards/mach-migor/setup.c171
-rw-r--r--arch/sh/boards/mach-rsk/devices-rsk7203.c24
-rw-r--r--arch/sh/boards/mach-x3proto/setup.c1
-rw-r--r--arch/sh/configs/ap325rxa_defconfig355
-rw-r--r--arch/sh/configs/dreamcast_defconfig60
-rw-r--r--arch/sh/configs/edosk7705_defconfig18
-rw-r--r--arch/sh/configs/edosk7760_defconfig83
-rw-r--r--arch/sh/configs/hp6xx_defconfig88
-rw-r--r--arch/sh/configs/landisk_defconfig76
-rw-r--r--arch/sh/configs/lboxre2_defconfig63
-rw-r--r--arch/sh/configs/magicpanelr2_defconfig119
-rw-r--r--arch/sh/configs/microdev_defconfig63
-rw-r--r--arch/sh/configs/migor_defconfig95
-rw-r--r--arch/sh/configs/r7780mp_defconfig85
-rw-r--r--arch/sh/configs/r7785rp_defconfig130
-rw-r--r--arch/sh/configs/rsk7201_defconfig26
-rw-r--r--arch/sh/configs/rsk7203_defconfig88
-rw-r--r--arch/sh/configs/rts7751r2d1_defconfig87
-rw-r--r--arch/sh/configs/rts7751r2dplus_defconfig87
-rw-r--r--arch/sh/configs/sdk7780_defconfig101
-rw-r--r--arch/sh/configs/se7206_defconfig75
-rw-r--r--arch/sh/configs/se7343_defconfig61
-rw-r--r--arch/sh/configs/se7619_defconfig47
-rw-r--r--arch/sh/configs/se7705_defconfig60
-rw-r--r--arch/sh/configs/se7712_defconfig79
-rw-r--r--arch/sh/configs/se7721_defconfig85
-rw-r--r--arch/sh/configs/se7722_defconfig61
-rw-r--r--arch/sh/configs/se7750_defconfig61
-rw-r--r--arch/sh/configs/se7751_defconfig56
-rw-r--r--arch/sh/configs/se7780_defconfig87
-rw-r--r--arch/sh/configs/sh03_defconfig82
-rw-r--r--arch/sh/configs/sh7710voipgw_defconfig55
-rw-r--r--arch/sh/configs/sh7763rdp_defconfig71
-rw-r--r--arch/sh/configs/sh7785lcr_defconfig92
-rw-r--r--arch/sh/configs/shmin_defconfig54
-rw-r--r--arch/sh/configs/shx3_defconfig77
-rw-r--r--arch/sh/configs/snapgear_defconfig53
-rw-r--r--arch/sh/configs/systemh_defconfig50
-rw-r--r--arch/sh/configs/titan_defconfig90
-rw-r--r--arch/sh/configs/ul2_defconfig69
-rw-r--r--arch/sh/include/asm/Kbuild1
-rw-r--r--arch/sh/include/asm/byteorder.h2
-rw-r--r--arch/sh/include/asm/posix_types_32.h8
-rw-r--r--arch/sh/include/asm/posix_types_64.h8
-rw-r--r--arch/sh/include/asm/syscalls_32.h6
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7343.c31
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7722.c2
-rw-r--r--arch/sh/kernel/process_64.c2
-rw-r--r--arch/sh/kernel/sys_sh32.c2
-rw-r--r--arch/sh/kernel/syscalls_32.S4
-rw-r--r--arch/sh/kernel/syscalls_64.S2
-rw-r--r--arch/sh/kernel/traps_32.c9
-rw-r--r--arch/sh/mm/ioremap_64.c2
-rw-r--r--arch/sparc/Kconfig1
-rw-r--r--arch/sparc/include/asm/Kbuild1
-rw-r--r--arch/sparc/include/asm/byteorder.h1
-rw-r--r--arch/sparc/kernel/central.c2
-rw-r--r--arch/sparc/kernel/cpu.c18
-rw-r--r--arch/sparc/kernel/entry.S4
-rw-r--r--arch/sparc/kernel/sparc_ksyms_64.c11
-rw-r--r--arch/sparc/kernel/sys_sparc_64.c48
-rw-r--r--arch/sparc/kernel/syscalls.S4
-rw-r--r--arch/sparc/kernel/systbls.h3
-rw-r--r--arch/sparc/kernel/systbls_32.S4
-rw-r--r--arch/sparc/kernel/systbls_64.S20
-rw-r--r--arch/sparc/kernel/traps_64.c17
-rw-r--r--arch/sparc/lib/Makefile3
-rw-r--r--arch/x86/include/asm/Kbuild1
-rw-r--r--arch/x86/include/asm/bitops.h14
-rw-r--r--arch/x86/include/asm/byteorder.h1
-rw-r--r--arch/x86/include/asm/io.h1
-rw-r--r--arch/x86/include/asm/msr-index.h29
-rw-r--r--arch/x86/include/asm/pgalloc.h1
-rw-r--r--arch/x86/include/asm/syscalls.h2
-rw-r--r--arch/x86/include/asm/timex.h13
-rw-r--r--arch/x86/kernel/apic.c9
-rw-r--r--arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c35
-rw-r--r--arch/x86/kernel/cpu/intel.c13
-rw-r--r--arch/x86/kernel/cpu/mtrr/generic.c12
-rw-r--r--arch/x86/kernel/hpet.c3
-rw-r--r--arch/x86/kernel/kprobes.c2
-rw-r--r--arch/x86/kernel/setup_percpu.c2
-rw-r--r--arch/x86/kernel/signal.c11
-rw-r--r--arch/x86/kernel/syscall_table_32.S2
-rw-r--r--arch/x86/kernel/tlb_uv.c1
-rw-r--r--arch/x86/kernel/vmi_32.c2
-rw-r--r--arch/x86/lib/usercopy_32.c4
-rw-r--r--arch/x86/lib/usercopy_64.c4
-rw-r--r--arch/x86/mm/init_32.c48
-rw-r--r--arch/x86/mm/init_64.c2
-rw-r--r--arch/x86/mm/iomap_32.c10
-rw-r--r--arch/x86/mm/ioremap.c25
-rw-r--r--arch/x86/mm/pageattr.c51
-rw-r--r--arch/x86/mm/pat.c88
-rw-r--r--arch/xtensa/include/asm/Kbuild2
-rw-r--r--arch/xtensa/include/asm/byteorder.h2
-rw-r--r--drivers/acpi/Makefile2
-rw-r--r--drivers/acpi/ec.c73
-rw-r--r--drivers/acpi/sleep.c (renamed from drivers/acpi/main.c)0
-rw-r--r--drivers/acpi/thermal.c16
-rw-r--r--drivers/ata/Kconfig9
-rw-r--r--drivers/ata/Makefile1
-rw-r--r--drivers/ata/libata-core.c73
-rw-r--r--drivers/ata/libata-scsi.c17
-rw-r--r--drivers/ata/pata_ali.c28
-rw-r--r--drivers/ata/pata_atiixp.c32
-rw-r--r--drivers/ata/pata_octeon_cf.c965
-rw-r--r--drivers/ata/sata_fsl.c2
-rw-r--r--drivers/ata/sata_via.c2
-rw-r--r--drivers/base/core.c6
-rw-r--r--drivers/block/nbd.c4
-rw-r--r--drivers/block/ps3disk.c18
-rw-r--r--drivers/block/xsysace.c1
-rw-r--r--drivers/char/bsr.c2
-rw-r--r--drivers/char/hvc_console.c12
-rw-r--r--drivers/char/hvc_irq.c2
-rw-r--r--drivers/char/ps3flash.c18
-rw-r--r--drivers/char/synclink_gt.c16
-rw-r--r--drivers/char/sysrq.c6
-rw-r--r--drivers/char/tty_ioctl.c2
-rw-r--r--drivers/dma/Kconfig19
-rw-r--r--drivers/dma/Makefile1
-rw-r--r--drivers/dma/dmaengine.c8
-rw-r--r--drivers/dma/dmatest.c35
-rw-r--r--drivers/dma/fsldma.c8
-rw-r--r--drivers/dma/ipu/Makefile1
-rw-r--r--drivers/dma/ipu/ipu_idmac.c1740
-rw-r--r--drivers/dma/ipu/ipu_intern.h176
-rw-r--r--drivers/dma/ipu/ipu_irq.c413
-rw-r--r--drivers/firmware/dell_rbu.c4
-rw-r--r--drivers/gpio/max7301.c6
-rw-r--r--drivers/gpio/max732x.c6
-rw-r--r--drivers/gpio/mcp23s08.c6
-rw-r--r--drivers/gpio/pca953x.c6
-rw-r--r--drivers/gpio/pcf857x.c12
-rw-r--r--drivers/gpu/drm/drm_agpsupport.c3
-rw-r--r--drivers/gpu/drm/drm_crtc.c14
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c175
-rw-r--r--drivers/gpu/drm/drm_drv.c4
-rw-r--r--drivers/gpu/drm/drm_edid.c2
-rw-r--r--drivers/gpu/drm/drm_irq.c18
-rw-r--r--drivers/gpu/drm/drm_stub.c8
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c17
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h23
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c189
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c6
-rw-r--r--drivers/gpu/drm/i915/intel_display.c43
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c20
-rw-r--r--drivers/hwmon/Kconfig24
-rw-r--r--drivers/hwmon/Makefile2
-rw-r--r--drivers/hwmon/abituguru3.c24
-rw-r--r--drivers/hwmon/adt7475.c1221
-rw-r--r--drivers/hwmon/applesmc.c5
-rw-r--r--drivers/hwmon/hp_accel.c75
-rw-r--r--drivers/hwmon/k8temp.c55
-rw-r--r--drivers/i2c/chips/Kconfig11
-rw-r--r--drivers/i2c/chips/Makefile1
-rw-r--r--drivers/ide/Kconfig5
-rw-r--r--drivers/ide/falconide.c2
-rw-r--r--drivers/ide/ide-disk.c2
-rw-r--r--drivers/ide/ide-iops.c2
-rw-r--r--drivers/ide/ide-pm.c12
-rw-r--r--drivers/ide/ide-probe.c5
-rw-r--r--drivers/ide/it821x.c15
-rw-r--r--drivers/ide/palm_bk3710.c11
-rw-r--r--drivers/ide/sl82c105.c4
-rw-r--r--drivers/ide/tx4938ide.c1
-rw-r--r--drivers/ide/via82cxxx.c2
-rw-r--r--drivers/infiniband/hw/ehca/ehca_cq.c16
-rw-r--r--drivers/infiniband/hw/ehca/ehca_hca.c2
-rw-r--r--drivers/infiniband/hw/ehca/ehca_irq.c18
-rw-r--r--drivers/infiniband/hw/ehca/ehca_main.c6
-rw-r--r--drivers/infiniband/hw/ehca/ehca_mcast.c4
-rw-r--r--drivers/infiniband/hw/ehca/ehca_mrmw.c144
-rw-r--r--drivers/infiniband/hw/ehca/ehca_qp.c32
-rw-r--r--drivers/infiniband/hw/ehca/ehca_reqs.c2
-rw-r--r--drivers/infiniband/hw/ehca/ehca_sqp.c2
-rw-r--r--drivers/infiniband/hw/ehca/ehca_tools.h2
-rw-r--r--drivers/infiniband/hw/ehca/ehca_uverbs.c2
-rw-r--r--drivers/infiniband/hw/ehca/hcp_if.c56
-rw-r--r--drivers/infiniband/hw/mlx4/qp.c28
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c27
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_multicast.c2
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_vlan.c11
-rw-r--r--drivers/isdn/i4l/isdn_net.c9
-rw-r--r--drivers/isdn/i4l/isdn_ppp.c2
-rw-r--r--drivers/leds/Kconfig7
-rw-r--r--drivers/leds/Makefile1
-rw-r--r--drivers/leds/leds-hp-disk.c137
-rw-r--r--drivers/message/fusion/lsi/mpi.h7
-rw-r--r--drivers/message/fusion/lsi/mpi_cnfg.h47
-rw-r--r--drivers/message/fusion/lsi/mpi_fc.h2
-rw-r--r--drivers/message/fusion/lsi/mpi_history.txt86
-rw-r--r--drivers/message/fusion/lsi/mpi_init.h2
-rw-r--r--drivers/message/fusion/lsi/mpi_ioc.h22
-rw-r--r--drivers/message/fusion/lsi/mpi_lan.h2
-rw-r--r--drivers/message/fusion/lsi/mpi_log_fc.h2
-rw-r--r--drivers/message/fusion/lsi/mpi_log_sas.h37
-rw-r--r--drivers/message/fusion/lsi/mpi_raid.h11
-rw-r--r--drivers/message/fusion/lsi/mpi_sas.h18
-rw-r--r--drivers/message/fusion/lsi/mpi_targ.h2
-rw-r--r--drivers/message/fusion/lsi/mpi_tool.h2
-rw-r--r--drivers/message/fusion/lsi/mpi_type.h4
-rw-r--r--drivers/message/fusion/mptbase.c87
-rw-r--r--drivers/message/fusion/mptbase.h3
-rw-r--r--drivers/message/fusion/mptscsih.c3
-rw-r--r--drivers/misc/Makefile1
-rw-r--r--drivers/misc/sgi-xp/xpc_sn2.c2
-rw-r--r--drivers/net/arm/etherh.c2
-rw-r--r--drivers/net/ax88796.c27
-rw-r--r--drivers/net/b44.c4
-rw-r--r--drivers/net/b44.h2
-rw-r--r--drivers/net/bnx2x.h30
-rw-r--r--drivers/net/bnx2x_link.c64
-rw-r--r--drivers/net/bnx2x_main.c480
-rw-r--r--drivers/net/bnx2x_reg.h2
-rw-r--r--drivers/net/cxgb3/sge.c1
-rw-r--r--drivers/net/e1000e/82571.c6
-rw-r--r--drivers/net/e1000e/hw.h1
-rw-r--r--drivers/net/ehea/ehea_main.c8
-rw-r--r--drivers/net/ehea/ehea_qmr.c18
-rw-r--r--drivers/net/fs_enet/fs_enet-main.c1
-rw-r--r--drivers/net/gianfar.c14
-rw-r--r--drivers/net/ibm_newemac/mal.c4
-rw-r--r--drivers/net/ibm_newemac/mal.h2
-rw-r--r--drivers/net/ibmveth.c16
-rw-r--r--drivers/net/irda/irda-usb.c2
-rw-r--r--drivers/net/iseries_veth.c2
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c62
-rw-r--r--drivers/net/ixgbe/ixgbe_type.h3
-rw-r--r--drivers/net/korina.c173
-rw-r--r--drivers/net/macb.c8
-rw-r--r--drivers/net/mlx4/profile.c6
-rw-r--r--drivers/net/mv643xx_eth.c17
-rw-r--r--drivers/net/myri10ge/myri10ge.c15
-rw-r--r--drivers/net/netxen/netxen_nic.h158
-rw-r--r--drivers/net/netxen/netxen_nic_ctx.c50
-rw-r--r--drivers/net/netxen/netxen_nic_ethtool.c36
-rw-r--r--drivers/net/netxen/netxen_nic_hw.c97
-rw-r--r--drivers/net/netxen/netxen_nic_init.c105
-rw-r--r--drivers/net/netxen/netxen_nic_main.c233
-rw-r--r--drivers/net/pasemi_mac.c6
-rw-r--r--drivers/net/phy/mdio_bus.c8
-rw-r--r--drivers/net/phy/phy_device.c9
-rw-r--r--drivers/net/phy/smsc.c12
-rw-r--r--drivers/net/ppp_generic.c43
-rw-r--r--drivers/net/sis900.c8
-rw-r--r--drivers/net/tg3.c81
-rw-r--r--drivers/net/tg3.h1
-rw-r--r--drivers/net/usb/hso.c12
-rw-r--r--drivers/net/usb/mcs7830.c20
-rw-r--r--drivers/net/via-velocity.c2
-rw-r--r--drivers/net/virtio_net.c3
-rw-r--r--drivers/net/wan/ixp4xx_hss.c6
-rw-r--r--drivers/net/wimax/i2400m/control.c2
-rw-r--r--drivers/net/wimax/i2400m/usb-rx.c9
-rw-r--r--drivers/net/wireless/Kconfig2
-rw-r--r--drivers/net/wireless/ath5k/base.c8
-rw-r--r--drivers/net/wireless/ath5k/pcu.c4
-rw-r--r--drivers/net/wireless/ath5k/reg.h2
-rw-r--r--drivers/net/wireless/ath9k/Kconfig1
-rw-r--r--drivers/net/wireless/ath9k/main.c4
-rw-r--r--drivers/net/wireless/ath9k/rc.c2
-rw-r--r--drivers/net/wireless/ath9k/regd_common.h2
-rw-r--r--drivers/net/wireless/ath9k/xmit.c48
-rw-r--r--drivers/net/wireless/b43/main.c2
-rw-r--r--drivers/net/wireless/b43legacy/main.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945-rs.c14
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-rs.c14
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-hcmd.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c4
-rw-r--r--drivers/net/wireless/libertas/hostcmd.h91
-rw-r--r--drivers/net/wireless/libertas_tf/main.c2
-rw-r--r--drivers/net/wireless/orinoco/orinoco.c60
-rw-r--r--drivers/net/wireless/orinoco/orinoco_cs.c1
-rw-r--r--drivers/net/wireless/p54/p54common.c60
-rw-r--r--drivers/net/wireless/p54/p54usb.c43
-rw-r--r--drivers/net/wireless/rndis_wlan.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c23
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c8
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00leds.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00lib.h11
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00queue.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00rfkill.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c1
-rw-r--r--drivers/net/wireless/rtl818x/rtl8180_dev.c1
-rw-r--r--drivers/net/wireless/rtl818x/rtl8187_dev.c6
-rw-r--r--drivers/net/wireless/zd1211rw/zd_usb.c1
-rw-r--r--drivers/of/of_i2c.c19
-rw-r--r--drivers/oprofile/cpu_buffer.c5
-rw-r--r--drivers/oprofile/cpu_buffer.h7
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c2
-rw-r--r--drivers/pci/hotplug/pciehp_core.c4
-rw-r--r--drivers/pci/msi.c16
-rw-r--r--drivers/pci/pci-driver.c91
-rw-r--r--drivers/pci/pci.c71
-rw-r--r--drivers/pci/pci.h6
-rw-r--r--drivers/pci/syscall.c12
-rw-r--r--drivers/pcmcia/electra_cf.c2
-rw-r--r--drivers/platform/x86/Kconfig23
-rw-r--r--drivers/platform/x86/Makefile1
-rw-r--r--drivers/platform/x86/dell-laptop.c (renamed from drivers/misc/dell-laptop.c)2
-rw-r--r--drivers/platform/x86/eeepc-laptop.c4
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c910
-rw-r--r--drivers/power/pda_power.c2
-rw-r--r--drivers/ps3/ps3-lpm.c16
-rw-r--r--drivers/ps3/ps3-vuart.c32
-rw-r--r--drivers/ps3/ps3stor_lib.c14
-rw-r--r--drivers/regulator/wm8400-regulator.c2
-rw-r--r--drivers/rtc/rtc-pxa.c2
-rw-r--r--drivers/rtc/rtc-twl4030.c49
-rw-r--r--drivers/s390/net/lcs.c8
-rw-r--r--drivers/scsi/ibmvscsi/ibmvfc.c14
-rw-r--r--drivers/scsi/ibmvscsi/ibmvfc.h6
-rw-r--r--drivers/scsi/ibmvscsi/ibmvscsi.c12
-rw-r--r--drivers/scsi/ipr.c2
-rw-r--r--drivers/scsi/libiscsi_tcp.c3
-rw-r--r--drivers/scsi/libsas/sas_scsi_host.c2
-rw-r--r--drivers/scsi/ps3rom.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c58
-rw-r--r--drivers/scsi/qla2xxx/qla_mid.c1
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c7
-rw-r--r--drivers/scsi/scsi.c5
-rw-r--r--drivers/scsi/scsi_devinfo.c1
-rw-r--r--drivers/serial/8250_pci.c8
-rw-r--r--drivers/serial/8250_pnp.c2
-rw-r--r--drivers/serial/atmel_serial.c2
-rw-r--r--drivers/serial/of_serial.c1
-rw-r--r--drivers/serial/pnx8xxx_uart.c23
-rw-r--r--drivers/serial/sh-sci.h5
-rw-r--r--drivers/spi/atmel_spi.c3
-rw-r--r--drivers/spi/xilinx_spi.c137
-rw-r--r--drivers/usb/core/hub.c2
-rw-r--r--drivers/usb/serial/ftdi_sio.c2
-rw-r--r--drivers/video/Kconfig12
-rw-r--r--drivers/video/Makefile1
-rw-r--r--drivers/video/bf54x-lq043fb.c15
-rw-r--r--drivers/video/bfin-t350mcqb-fb.c15
-rw-r--r--drivers/video/mx3fb.c1555
-rw-r--r--drivers/video/ps3fb.c4
-rw-r--r--drivers/xen/balloon.c8
-rw-r--r--drivers/xen/xenfs/xenbus.c11
-rw-r--r--fs/9p/Kconfig10
-rw-r--r--fs/Kconfig1401
-rw-r--r--fs/adfs/Kconfig27
-rw-r--r--fs/affs/Kconfig21
-rw-r--r--fs/afs/Kconfig21
-rw-r--r--fs/aio.c22
-rw-r--r--fs/autofs/Kconfig21
-rw-r--r--fs/autofs4/Kconfig20
-rw-r--r--fs/befs/Kconfig26
-rw-r--r--fs/bfs/Kconfig19
-rw-r--r--fs/btrfs/Kconfig18
-rw-r--r--fs/btrfs/ioctl.h14
-rw-r--r--fs/btrfs/super.c5
-rw-r--r--fs/btrfs/volumes.c1
-rw-r--r--fs/buffer.c2
-rw-r--r--fs/coda/Kconfig21
-rw-r--r--fs/compat.c6
-rw-r--r--fs/configfs/Kconfig11
-rw-r--r--fs/cramfs/Kconfig19
-rw-r--r--fs/dcache.c2
-rw-r--r--fs/dcookies.c10
-rw-r--r--fs/dlm/plock.c6
-rw-r--r--fs/dquot.c218
-rw-r--r--fs/ecryptfs/Kconfig11
-rw-r--r--fs/efs/Kconfig14
-rw-r--r--fs/eventfd.c5
-rw-r--r--fs/eventpoll.c18
-rw-r--r--fs/exec.c2
-rw-r--r--fs/ext2/dir.c7
-rw-r--r--fs/fat/Kconfig97
-rw-r--r--fs/fcntl.c11
-rw-r--r--fs/filesystems.c2
-rw-r--r--fs/freevxfs/Kconfig16
-rw-r--r--fs/fuse/Kconfig15
-rw-r--r--fs/fuse/dev.c16
-rw-r--r--fs/fuse/file.c2
-rw-r--r--fs/fuse/inode.c30
-rw-r--r--fs/hfs/Kconfig12
-rw-r--r--fs/hfsplus/Kconfig13
-rw-r--r--fs/hpfs/Kconfig14
-rw-r--r--fs/ioctl.c2
-rw-r--r--fs/ioprio.c5
-rw-r--r--fs/isofs/Kconfig39
-rw-r--r--fs/jfs/Kconfig49
-rw-r--r--fs/locks.c2
-rw-r--r--fs/minix/Kconfig17
-rw-r--r--fs/namei.c35
-rw-r--r--fs/namespace.c13
-rw-r--r--fs/ncpfs/Kconfig21
-rw-r--r--fs/nfs/Kconfig86
-rw-r--r--fs/nfsctl.c4
-rw-r--r--fs/nfsd/Kconfig80
-rw-r--r--fs/notify/inotify/inotify_user.c144
-rw-r--r--fs/ntfs/Kconfig78
-rw-r--r--fs/ocfs2/Kconfig85
-rw-r--r--fs/ocfs2/quota_global.c169
-rw-r--r--fs/omfs/Kconfig13
-rw-r--r--fs/open.c82
-rw-r--r--fs/pipe.c4
-rw-r--r--fs/qnx4/Kconfig25
-rw-r--r--fs/quota.c3
-rw-r--r--fs/read_write.c49
-rw-r--r--fs/readdir.c9
-rw-r--r--fs/reiserfs/Kconfig85
-rw-r--r--fs/romfs/Kconfig16
-rw-r--r--fs/select.c27
-rw-r--r--fs/signalfd.c8
-rw-r--r--fs/smbfs/Kconfig55
-rw-r--r--fs/splice.c12
-rw-r--r--fs/squashfs/Kconfig51
-rw-r--r--fs/squashfs/squashfs_fs.h1
-rw-r--r--fs/squashfs/super.c1
-rw-r--r--fs/stat.c38
-rw-r--r--fs/super.c2
-rw-r--r--fs/sync.c32
-rw-r--r--fs/sysfs/Kconfig23
-rw-r--r--fs/sysfs/bin.c6
-rw-r--r--fs/sysv/Kconfig36
-rw-r--r--fs/timerfd.c10
-rw-r--r--fs/udf/Kconfig18
-rw-r--r--fs/ufs/Kconfig43
-rw-r--r--fs/utimes.c11
-rw-r--r--fs/xattr.c53
-rw-r--r--fs/xfs/Kconfig1
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.h2
-rw-r--r--fs/xfs/linux-2.6/xfs_buf.c79
-rw-r--r--fs/xfs/linux-2.6/xfs_export.c23
-rw-r--r--fs/xfs/linux-2.6/xfs_ioctl.c305
-rw-r--r--fs/xfs/linux-2.6/xfs_ioctl.h15
-rw-r--r--fs/xfs/linux-2.6/xfs_ioctl32.c184
-rw-r--r--fs/xfs/linux-2.6/xfs_super.c17
-rw-r--r--fs/xfs/quota/xfs_dquot.c38
-rw-r--r--fs/xfs/quota/xfs_dquot.h10
-rw-r--r--fs/xfs/quota/xfs_qm.c9
-rw-r--r--fs/xfs/xfs_acl.h1
-rw-r--r--fs/xfs/xfs_ag.h8
-rw-r--r--fs/xfs/xfs_alloc_btree.c2
-rw-r--r--fs/xfs/xfs_attr.c26
-rw-r--r--fs/xfs/xfs_attr_leaf.c72
-rw-r--r--fs/xfs/xfs_attr_leaf.h12
-rw-r--r--fs/xfs/xfs_bit.h10
-rw-r--r--fs/xfs/xfs_bmap.c166
-rw-r--r--fs/xfs/xfs_bmap.h2
-rw-r--r--fs/xfs/xfs_bmap_btree.c94
-rw-r--r--fs/xfs/xfs_bmap_btree.h4
-rw-r--r--fs/xfs/xfs_btree.c20
-rw-r--r--fs/xfs/xfs_da_btree.c8
-rw-r--r--fs/xfs/xfs_dir2_block.c7
-rw-r--r--fs/xfs/xfs_dir2_leaf.c6
-rw-r--r--fs/xfs/xfs_dir2_sf.c15
-rw-r--r--fs/xfs/xfs_ialloc.c6
-rw-r--r--fs/xfs/xfs_ialloc.h2
-rw-r--r--fs/xfs/xfs_ialloc_btree.h1
-rw-r--r--fs/xfs/xfs_inode.c19
-rw-r--r--fs/xfs/xfs_inode_item.h4
-rw-r--r--fs/xfs/xfs_iomap.c10
-rw-r--r--fs/xfs/xfs_itable.c6
-rw-r--r--fs/xfs/xfs_mount.c26
-rw-r--r--fs/xfs/xfs_mount.h9
-rw-r--r--fs/xfs/xfs_rename.c2
-rw-r--r--fs/xfs/xfs_rtalloc.c2
-rw-r--r--fs/xfs/xfs_rw.h1
-rw-r--r--fs/xfs/xfs_sb.h2
-rw-r--r--fs/xfs/xfs_types.h4
-rw-r--r--fs/xfs/xfs_vnodeops.c20
-rw-r--r--include/acpi/actbl.h2
-rw-r--r--include/asm-frv/Kbuild1
-rw-r--r--include/asm-frv/byteorder.h1
-rw-r--r--include/asm-generic/Kbuild.asm1
-rw-r--r--include/asm-generic/bitops/__ffs.h2
-rw-r--r--include/asm-generic/bitops/__fls.h2
-rw-r--r--include/asm-generic/bitops/fls.h2
-rw-r--r--include/asm-generic/bitops/fls64.h4
-rw-r--r--include/asm-generic/rtc.h14
-rw-r--r--include/asm-m32r/Kbuild1
-rw-r--r--include/asm-m32r/byteorder.h2
-rw-r--r--include/asm-m68k/auxvec.h4
-rw-r--r--include/asm-m68k/device.h7
-rw-r--r--include/asm-m68k/emergency-restart.h6
-rw-r--r--include/asm-m68k/futex.h6
-rw-r--r--include/asm-m68k/ioctl.h1
-rw-r--r--include/asm-m68k/irq_regs.h1
-rw-r--r--include/asm-m68k/kdebug.h1
-rw-r--r--include/asm-m68k/mutex.h9
-rw-r--r--include/asm-m68k/topology.h6
-rw-r--r--include/asm-mn10300/Kbuild1
-rw-r--r--include/asm-mn10300/byteorder.h1
-rw-r--r--include/drm/drm_crtc.h5
-rw-r--r--include/drm/drm_crtc_helper.h2
-rw-r--r--include/linux/agpgart.h1
-rw-r--r--include/linux/atm_idt77105.h2
-rw-r--r--include/linux/capi.h2
-rw-r--r--include/linux/compat.h13
-rw-r--r--include/linux/connector.h2
-rw-r--r--include/linux/cyclades.h2
-rw-r--r--include/linux/debugfs.h7
-rw-r--r--include/linux/dmaengine.h11
-rw-r--r--include/linux/fb.h2
-rw-r--r--include/linux/ide.h2
-rw-r--r--include/linux/if_frad.h10
-rw-r--r--include/linux/if_pppol2tp.h2
-rw-r--r--include/linux/if_pppox.h2
-rw-r--r--include/linux/init_task.h6
-rw-r--r--include/linux/input.h2
-rw-r--r--include/linux/ioport.h3
-rw-r--r--include/linux/jbd.h2
-rw-r--r--include/linux/joystick.h2
-rw-r--r--include/linux/klist.h2
-rw-r--r--include/linux/kvm.h2
-rw-r--r--include/linux/libata.h11
-rw-r--r--include/linux/loop.h2
-rw-r--r--include/linux/magic.h2
-rw-r--r--include/linux/matroxfb.h2
-rw-r--r--include/linux/mm.h1
-rw-r--r--include/linux/netdevice.h5
-rw-r--r--include/linux/netfilter/x_tables.h2
-rw-r--r--include/linux/of_i2c.h3
-rw-r--r--include/linux/pci.h5
-rw-r--r--include/linux/pci_ids.h1
-rw-r--r--include/linux/phantom.h2
-rw-r--r--include/linux/quotaops.h2
-rw-r--r--include/linux/radeonfb.h2
-rw-r--r--include/linux/res_counter.h2
-rw-r--r--include/linux/sched.h32
-rw-r--r--include/linux/swab.h2
-rw-r--r--include/linux/syscalls.h169
-rw-r--r--include/linux/usb/usbnet.h4
-rw-r--r--include/linux/workqueue.h12
-rw-r--r--include/net/mac80211.h1
-rw-r--r--include/net/sctp/checksum.h2
-rw-r--r--include/scsi/libiscsi_tcp.h1
-rw-r--r--include/sound/soc-dapm.h2
-rw-r--r--init/Kconfig252
-rw-r--r--ipc/mqueue.c28
-rw-r--r--ipc/msg.c12
-rw-r--r--ipc/sem.c18
-rw-r--r--ipc/shm.c8
-rw-r--r--kernel/Makefile5
-rw-r--r--kernel/acct.c2
-rw-r--r--kernel/capability.c4
-rw-r--r--kernel/cpuset.c2
-rw-r--r--kernel/dma-coherent.c47
-rw-r--r--kernel/exec_domain.c3
-rw-r--r--kernel/exit.c17
-rw-r--r--kernel/fork.c20
-rw-r--r--kernel/futex.c17
-rw-r--r--kernel/hrtimer.c8
-rw-r--r--kernel/itimer.c7
-rw-r--r--kernel/kexec.c5
-rw-r--r--kernel/kprobes.c2
-rw-r--r--kernel/module.c10
-rw-r--r--kernel/posix-cpu-timers.c70
-rw-r--r--kernel/posix-timers.c43
-rw-r--r--kernel/power/Makefile3
-rw-r--r--kernel/printk.c7
-rw-r--r--kernel/ptrace.c2
-rw-r--r--kernel/rcuclassic.c2
-rw-r--r--kernel/rcutree.c2
-rw-r--r--kernel/relay.c4
-rw-r--r--kernel/resource.c1
-rw-r--r--kernel/sched.c43
-rw-r--r--kernel/sched_fair.c37
-rw-r--r--kernel/sched_stats.h33
-rw-r--r--kernel/signal.c59
-rw-r--r--kernel/softlockup.c9
-rw-r--r--kernel/sys.c70
-rw-r--r--kernel/sys_ni.c1
-rw-r--r--kernel/sysctl.c15
-rw-r--r--kernel/time.c14
-rw-r--r--kernel/time/tick-sched.c2
-rw-r--r--kernel/timer.c18
-rw-r--r--kernel/uid16.c39
-rw-r--r--kernel/workqueue.c20
-rw-r--r--lib/Kconfig.debug22
-rw-r--r--lib/idr.c14
-rw-r--r--mm/fadvise.c18
-rw-r--r--mm/filemap.c9
-rw-r--r--mm/fremap.c4
-rw-r--r--mm/madvise.c2
-rw-r--r--mm/memcontrol.c130
-rw-r--r--mm/mempolicy.c24
-rw-r--r--mm/migrate.c8
-rw-r--r--mm/mincore.c4
-rw-r--r--mm/mlock.c8
-rw-r--r--mm/mmap.c4
-rw-r--r--mm/mprotect.c4
-rw-r--r--mm/mremap.c6
-rw-r--r--mm/msync.c2
-rw-r--r--mm/nommu.c31
-rw-r--r--mm/swapfile.c4
-rw-r--r--mm/vmalloc.c20
-rw-r--r--net/8021q/vlan_core.c4
-rw-r--r--net/9p/Kconfig2
-rw-r--r--net/9p/client.c2
-rw-r--r--net/Kconfig8
-rw-r--r--net/bridge/br_netfilter.c18
-rw-r--r--net/bridge/netfilter/ebtables.c2
-rw-r--r--net/can/bcm.c57
-rw-r--r--net/core/dev.c63
-rw-r--r--net/core/net_namespace.c2
-rw-r--r--net/core/skbuff.c76
-rw-r--r--net/ipv4/netfilter/iptable_filter.c7
-rw-r--r--net/ipv4/netfilter/iptable_mangle.c6
-rw-r--r--net/ipv4/netfilter/iptable_raw.c6
-rw-r--r--net/ipv4/netfilter/iptable_security.c6
-rw-r--r--net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c5
-rw-r--r--net/ipv4/netfilter/nf_conntrack_proto_icmp.c2
-rw-r--r--net/ipv4/tcp.c24
-rw-r--r--net/ipv6/af_inet6.c7
-rw-r--r--net/ipv6/ip6_fib.c15
-rw-r--r--net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c2
-rw-r--r--net/key/af_key.c1
-rw-r--r--net/mac80211/ht.c2
-rw-r--r--net/mac80211/iface.c3
-rw-r--r--net/mac80211/mesh_plink.c1
-rw-r--r--net/mac80211/mlme.c4
-rw-r--r--net/mac80211/rc80211_minstrel.c10
-rw-r--r--net/mac80211/sta_info.h1
-rw-r--r--net/mac80211/tx.c6
-rw-r--r--net/netfilter/nf_conntrack_core.c4
-rw-r--r--net/netfilter/nf_conntrack_netlink.c5
-rw-r--r--net/netfilter/x_tables.c8
-rw-r--r--net/netfilter/xt_time.c11
-rw-r--r--net/sched/sch_htb.c15
-rw-r--r--net/sctp/input.c13
-rw-r--r--net/sctp/output.c7
-rw-r--r--net/sctp/outqueue.c3
-rw-r--r--net/socket.c63
-rw-r--r--net/sunrpc/Kconfig79
-rw-r--r--net/wireless/reg.c128
-rwxr-xr-xscripts/checkpatch.pl28
-rw-r--r--scripts/mod/file2alias.c17
-rw-r--r--security/keys/keyctl.c23
-rw-r--r--sound/pci/Kconfig4
-rw-r--r--sound/pci/hda/hda_codec.c63
-rw-r--r--sound/pci/hda/hda_local.h3
-rw-r--r--sound/pci/hda/patch_nvhdmi.c2
-rw-r--r--sound/pci/hda/patch_realtek.c3
-rw-r--r--sound/pci/hda/patch_sigmatel.c209
-rw-r--r--sound/pci/oxygen/virtuoso.c20
-rw-r--r--sound/ppc/snd_ps3.c4
-rw-r--r--sound/soc/atmel/atmel-pcm.c2
-rw-r--r--sound/soc/fsl/mpc8610_hpcd.c18
-rw-r--r--sound/soc/soc-dapm.c3
-rw-r--r--sound/usb/usbquirks.h8
1160 files changed, 18613 insertions, 8102 deletions
diff --git a/CREDITS b/CREDITS
index 939da46a87fb..2b39168c06aa 100644
--- a/CREDITS
+++ b/CREDITS
@@ -3786,14 +3786,11 @@ S: The Netherlands
3786 3786
3787N: David Woodhouse 3787N: David Woodhouse
3788E: dwmw2@infradead.org 3788E: dwmw2@infradead.org
3789D: ARCnet stuff, Applicom board driver, SO_BINDTODEVICE, 3789D: JFFS2 file system, Memory Technology Device subsystem,
3790D: some Alpha platform porting from 2.0, Memory Technology Devices,
3791D: Acquire watchdog timer, PC speaker driver maintenance,
3792D: various other stuff that annoyed me by not working. 3790D: various other stuff that annoyed me by not working.
3793S: c/o Red Hat Engineering 3791S: c/o Intel Corporation
3794S: Rustat House 3792S: Pipers Way
3795S: 60 Clifton Road 3793S: Swindon. SN3 1RJ
3796S: Cambridge. CB1 7EG
3797S: England 3794S: England
3798 3795
3799N: Chris Wright 3796N: Chris Wright
diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt
index b462bb149543..52441694fe03 100644
--- a/Documentation/DMA-API.txt
+++ b/Documentation/DMA-API.txt
@@ -170,16 +170,15 @@ Returns: 0 if successful and a negative error if not.
170u64 170u64
171dma_get_required_mask(struct device *dev) 171dma_get_required_mask(struct device *dev)
172 172
173After setting the mask with dma_set_mask(), this API returns the 173This API returns the mask that the platform requires to
174actual mask (within that already set) that the platform actually 174operate efficiently. Usually this means the returned mask
175requires to operate efficiently. Usually this means the returned mask
176is the minimum required to cover all of memory. Examining the 175is the minimum required to cover all of memory. Examining the
177required mask gives drivers with variable descriptor sizes the 176required mask gives drivers with variable descriptor sizes the
178opportunity to use smaller descriptors as necessary. 177opportunity to use smaller descriptors as necessary.
179 178
180Requesting the required mask does not alter the current mask. If you 179Requesting the required mask does not alter the current mask. If you
181wish to take advantage of it, you should issue another dma_set_mask() 180wish to take advantage of it, you should issue a dma_set_mask()
182call to lower the mask again. 181call to set the mask to the value returned.
183 182
184 183
185Part Id - Streaming DMA mappings 184Part Id - Streaming DMA mappings
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c
index cc49400b4af8..7ea231172c85 100644
--- a/Documentation/accounting/getdelays.c
+++ b/Documentation/accounting/getdelays.c
@@ -392,6 +392,10 @@ int main(int argc, char *argv[])
392 goto err; 392 goto err;
393 } 393 }
394 } 394 }
395 if (!maskset && !tid && !containerset) {
396 usage();
397 goto err;
398 }
395 399
396 do { 400 do {
397 int i; 401 int i;
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt
index e33ee74eee77..d9e5d6f41b92 100644
--- a/Documentation/cgroups/cgroups.txt
+++ b/Documentation/cgroups/cgroups.txt
@@ -1,7 +1,8 @@
1 CGROUPS 1 CGROUPS
2 ------- 2 -------
3 3
4Written by Paul Menage <menage@google.com> based on Documentation/cpusets.txt 4Written by Paul Menage <menage@google.com> based on
5Documentation/cgroups/cpusets.txt
5 6
6Original copyright statements from cpusets.txt: 7Original copyright statements from cpusets.txt:
7Portions Copyright (C) 2004 BULL SA. 8Portions Copyright (C) 2004 BULL SA.
@@ -68,7 +69,7 @@ On their own, the only use for cgroups is for simple job
68tracking. The intention is that other subsystems hook into the generic 69tracking. The intention is that other subsystems hook into the generic
69cgroup support to provide new attributes for cgroups, such as 70cgroup support to provide new attributes for cgroups, such as
70accounting/limiting the resources which processes in a cgroup can 71accounting/limiting the resources which processes in a cgroup can
71access. For example, cpusets (see Documentation/cpusets.txt) allows 72access. For example, cpusets (see Documentation/cgroups/cpusets.txt) allows
72you to associate a set of CPUs and a set of memory nodes with the 73you to associate a set of CPUs and a set of memory nodes with the
73tasks in each cgroup. 74tasks in each cgroup.
74 75
diff --git a/Documentation/controllers/cpuacct.txt b/Documentation/cgroups/cpuacct.txt
index bb775fbe43d7..bb775fbe43d7 100644
--- a/Documentation/controllers/cpuacct.txt
+++ b/Documentation/cgroups/cpuacct.txt
diff --git a/Documentation/cpusets.txt b/Documentation/cgroups/cpusets.txt
index 5c86c258c791..5c86c258c791 100644
--- a/Documentation/cpusets.txt
+++ b/Documentation/cgroups/cpusets.txt
diff --git a/Documentation/controllers/devices.txt b/Documentation/cgroups/devices.txt
index 7cc6e6a60672..7cc6e6a60672 100644
--- a/Documentation/controllers/devices.txt
+++ b/Documentation/cgroups/devices.txt
diff --git a/Documentation/controllers/memcg_test.txt b/Documentation/cgroups/memcg_test.txt
index 08d4d3ea0d79..19533f93b7a2 100644
--- a/Documentation/controllers/memcg_test.txt
+++ b/Documentation/cgroups/memcg_test.txt
@@ -6,7 +6,7 @@ Because VM is getting complex (one of reasons is memcg...), memcg's behavior
6is complex. This is a document for memcg's internal behavior. 6is complex. This is a document for memcg's internal behavior.
7Please note that implementation details can be changed. 7Please note that implementation details can be changed.
8 8
9(*) Topics on API should be in Documentation/controllers/memory.txt) 9(*) Topics on API should be in Documentation/cgroups/memory.txt)
10 10
110. How to record usage ? 110. How to record usage ?
12 2 objects are used. 12 2 objects are used.
diff --git a/Documentation/controllers/memory.txt b/Documentation/cgroups/memory.txt
index e1501964df1e..e1501964df1e 100644
--- a/Documentation/controllers/memory.txt
+++ b/Documentation/cgroups/memory.txt
diff --git a/Documentation/controllers/resource_counter.txt b/Documentation/cgroups/resource_counter.txt
index f196ac1d7d25..f196ac1d7d25 100644
--- a/Documentation/controllers/resource_counter.txt
+++ b/Documentation/cgroups/resource_counter.txt
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index d105eb45282a..bbebc3a43ac0 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -1371,292 +1371,8 @@ auto_msgmni default value is 1.
13712.4 /proc/sys/vm - The virtual memory subsystem 13712.4 /proc/sys/vm - The virtual memory subsystem
1372----------------------------------------------- 1372-----------------------------------------------
1373 1373
1374The files in this directory can be used to tune the operation of the virtual 1374Please see: Documentation/sysctls/vm.txt for a description of these
1375memory (VM) subsystem of the Linux kernel. 1375entries.
1376
1377vfs_cache_pressure
1378------------------
1379
1380Controls the tendency of the kernel to reclaim the memory which is used for
1381caching of directory and inode objects.
1382
1383At the default value of vfs_cache_pressure=100 the kernel will attempt to
1384reclaim dentries and inodes at a "fair" rate with respect to pagecache and
1385swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer
1386to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100
1387causes the kernel to prefer to reclaim dentries and inodes.
1388
1389dirty_background_bytes
1390----------------------
1391
1392Contains the amount of dirty memory at which the pdflush background writeback
1393daemon will start writeback.
1394
1395If dirty_background_bytes is written, dirty_background_ratio becomes a function
1396of its value (dirty_background_bytes / the amount of dirtyable system memory).
1397
1398dirty_background_ratio
1399----------------------
1400
1401Contains, as a percentage of the dirtyable system memory (free pages + mapped
1402pages + file cache, not including locked pages and HugePages), the number of
1403pages at which the pdflush background writeback daemon will start writing out
1404dirty data.
1405
1406If dirty_background_ratio is written, dirty_background_bytes becomes a function
1407of its value (dirty_background_ratio * the amount of dirtyable system memory).
1408
1409dirty_bytes
1410-----------
1411
1412Contains the amount of dirty memory at which a process generating disk writes
1413will itself start writeback.
1414
1415If dirty_bytes is written, dirty_ratio becomes a function of its value
1416(dirty_bytes / the amount of dirtyable system memory).
1417
1418dirty_ratio
1419-----------
1420
1421Contains, as a percentage of the dirtyable system memory (free pages + mapped
1422pages + file cache, not including locked pages and HugePages), the number of
1423pages at which a process which is generating disk writes will itself start
1424writing out dirty data.
1425
1426If dirty_ratio is written, dirty_bytes becomes a function of its value
1427(dirty_ratio * the amount of dirtyable system memory).
1428
1429dirty_writeback_centisecs
1430-------------------------
1431
1432The pdflush writeback daemons will periodically wake up and write `old' data
1433out to disk. This tunable expresses the interval between those wakeups, in
1434100'ths of a second.
1435
1436Setting this to zero disables periodic writeback altogether.
1437
1438dirty_expire_centisecs
1439----------------------
1440
1441This tunable is used to define when dirty data is old enough to be eligible
1442for writeout by the pdflush daemons. It is expressed in 100'ths of a second.
1443Data which has been dirty in-memory for longer than this interval will be
1444written out next time a pdflush daemon wakes up.
1445
1446highmem_is_dirtyable
1447--------------------
1448
1449Only present if CONFIG_HIGHMEM is set.
1450
1451This defaults to 0 (false), meaning that the ratios set above are calculated
1452as a percentage of lowmem only. This protects against excessive scanning
1453in page reclaim, swapping and general VM distress.
1454
1455Setting this to 1 can be useful on 32 bit machines where you want to make
1456random changes within an MMAPed file that is larger than your available
1457lowmem without causing large quantities of random IO. Is is safe if the
1458behavior of all programs running on the machine is known and memory will
1459not be otherwise stressed.
1460
1461legacy_va_layout
1462----------------
1463
1464If non-zero, this sysctl disables the new 32-bit mmap mmap layout - the kernel
1465will use the legacy (2.4) layout for all processes.
1466
1467lowmem_reserve_ratio
1468---------------------
1469
1470For some specialised workloads on highmem machines it is dangerous for
1471the kernel to allow process memory to be allocated from the "lowmem"
1472zone. This is because that memory could then be pinned via the mlock()
1473system call, or by unavailability of swapspace.
1474
1475And on large highmem machines this lack of reclaimable lowmem memory
1476can be fatal.
1477
1478So the Linux page allocator has a mechanism which prevents allocations
1479which _could_ use highmem from using too much lowmem. This means that
1480a certain amount of lowmem is defended from the possibility of being
1481captured into pinned user memory.
1482
1483(The same argument applies to the old 16 megabyte ISA DMA region. This
1484mechanism will also defend that region from allocations which could use
1485highmem or lowmem).
1486
1487The `lowmem_reserve_ratio' tunable determines how aggressive the kernel is
1488in defending these lower zones.
1489
1490If you have a machine which uses highmem or ISA DMA and your
1491applications are using mlock(), or if you are running with no swap then
1492you probably should change the lowmem_reserve_ratio setting.
1493
1494The lowmem_reserve_ratio is an array. You can see them by reading this file.
1495-
1496% cat /proc/sys/vm/lowmem_reserve_ratio
1497256 256 32
1498-
1499Note: # of this elements is one fewer than number of zones. Because the highest
1500 zone's value is not necessary for following calculation.
1501
1502But, these values are not used directly. The kernel calculates # of protection
1503pages for each zones from them. These are shown as array of protection pages
1504in /proc/zoneinfo like followings. (This is an example of x86-64 box).
1505Each zone has an array of protection pages like this.
1506
1507-
1508Node 0, zone DMA
1509 pages free 1355
1510 min 3
1511 low 3
1512 high 4
1513 :
1514 :
1515 numa_other 0
1516 protection: (0, 2004, 2004, 2004)
1517 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1518 pagesets
1519 cpu: 0 pcp: 0
1520 :
1521-
1522These protections are added to score to judge whether this zone should be used
1523for page allocation or should be reclaimed.
1524
1525In this example, if normal pages (index=2) are required to this DMA zone and
1526pages_high is used for watermark, the kernel judges this zone should not be
1527used because pages_free(1355) is smaller than watermark + protection[2]
1528(4 + 2004 = 2008). If this protection value is 0, this zone would be used for
1529normal page requirement. If requirement is DMA zone(index=0), protection[0]
1530(=0) is used.
1531
1532zone[i]'s protection[j] is calculated by following expression.
1533
1534(i < j):
1535 zone[i]->protection[j]
1536 = (total sums of present_pages from zone[i+1] to zone[j] on the node)
1537 / lowmem_reserve_ratio[i];
1538(i = j):
1539 (should not be protected. = 0;
1540(i > j):
1541 (not necessary, but looks 0)
1542
1543The default values of lowmem_reserve_ratio[i] are
1544 256 (if zone[i] means DMA or DMA32 zone)
1545 32 (others).
1546As above expression, they are reciprocal number of ratio.
1547256 means 1/256. # of protection pages becomes about "0.39%" of total present
1548pages of higher zones on the node.
1549
1550If you would like to protect more pages, smaller values are effective.
1551The minimum value is 1 (1/1 -> 100%).
1552
1553page-cluster
1554------------
1555
1556page-cluster controls the number of pages which are written to swap in
1557a single attempt. The swap I/O size.
1558
1559It is a logarithmic value - setting it to zero means "1 page", setting
1560it to 1 means "2 pages", setting it to 2 means "4 pages", etc.
1561
1562The default value is three (eight pages at a time). There may be some
1563small benefits in tuning this to a different value if your workload is
1564swap-intensive.
1565
1566overcommit_memory
1567-----------------
1568
1569Controls overcommit of system memory, possibly allowing processes
1570to allocate (but not use) more memory than is actually available.
1571
1572
15730 - Heuristic overcommit handling. Obvious overcommits of
1574 address space are refused. Used for a typical system. It
1575 ensures a seriously wild allocation fails while allowing
1576 overcommit to reduce swap usage. root is allowed to
1577 allocate slightly more memory in this mode. This is the
1578 default.
1579
15801 - Always overcommit. Appropriate for some scientific
1581 applications.
1582
15832 - Don't overcommit. The total address space commit
1584 for the system is not permitted to exceed swap plus a
1585 configurable percentage (default is 50) of physical RAM.
1586 Depending on the percentage you use, in most situations
1587 this means a process will not be killed while attempting
1588 to use already-allocated memory but will receive errors
1589 on memory allocation as appropriate.
1590
1591overcommit_ratio
1592----------------
1593
1594Percentage of physical memory size to include in overcommit calculations
1595(see above.)
1596
1597Memory allocation limit = swapspace + physmem * (overcommit_ratio / 100)
1598
1599 swapspace = total size of all swap areas
1600 physmem = size of physical memory in system
1601
1602nr_hugepages and hugetlb_shm_group
1603----------------------------------
1604
1605nr_hugepages configures number of hugetlb page reserved for the system.
1606
1607hugetlb_shm_group contains group id that is allowed to create SysV shared
1608memory segment using hugetlb page.
1609
1610hugepages_treat_as_movable
1611--------------------------
1612
1613This parameter is only useful when kernelcore= is specified at boot time to
1614create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
1615are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
1616value written to hugepages_treat_as_movable allows huge pages to be allocated
1617from ZONE_MOVABLE.
1618
1619Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
1620pages pool can easily grow or shrink within. Assuming that applications are
1621not running that mlock() a lot of memory, it is likely the huge pages pool
1622can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
1623into nr_hugepages and triggering page reclaim.
1624
1625laptop_mode
1626-----------
1627
1628laptop_mode is a knob that controls "laptop mode". All the things that are
1629controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
1630
1631block_dump
1632----------
1633
1634block_dump enables block I/O debugging when set to a nonzero value. More
1635information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
1636
1637swap_token_timeout
1638------------------
1639
1640This file contains valid hold time of swap out protection token. The Linux
1641VM has token based thrashing control mechanism and uses the token to prevent
1642unnecessary page faults in thrashing situation. The unit of the value is
1643second. The value would be useful to tune thrashing behavior.
1644
1645drop_caches
1646-----------
1647
1648Writing to this will cause the kernel to drop clean caches, dentries and
1649inodes from memory, causing that memory to become free.
1650
1651To free pagecache:
1652 echo 1 > /proc/sys/vm/drop_caches
1653To free dentries and inodes:
1654 echo 2 > /proc/sys/vm/drop_caches
1655To free pagecache, dentries and inodes:
1656 echo 3 > /proc/sys/vm/drop_caches
1657
1658As this is a non-destructive operation and dirty objects are not freeable, the
1659user should run `sync' first.
1660 1376
1661 1377
16622.5 /proc/sys/dev - Device specific parameters 13782.5 /proc/sys/dev - Device specific parameters
diff --git a/Documentation/hwmon/adt7475 b/Documentation/hwmon/adt7475
new file mode 100644
index 000000000000..a2b1abec850e
--- /dev/null
+++ b/Documentation/hwmon/adt7475
@@ -0,0 +1,87 @@
1This describes the interface for the ADT7475 driver:
2
3(there are 4 fans, numbered fan1 to fan4):
4
5fanX_input Read the current speed of the fan (in RPMs)
6fanX_min Read/write the minimum speed of the fan. Dropping
7 below this sets an alarm.
8
9(there are three PWMs, numbered pwm1 to pwm3):
10
11pwmX Read/write the current duty cycle of the PWM. Writes
12 only have effect when auto mode is turned off (see
13 below). Range is 0 - 255.
14
15pwmX_enable Fan speed control method:
16
17 0 - No control (fan at full speed)
18 1 - Manual fan speed control (using pwm[1-*])
19 2 - Automatic fan speed control
20
21pwmX_auto_channels_temp Select which channels affect this PWM
22
23 1 - TEMP1 controls PWM
24 2 - TEMP2 controls PWM
25 4 - TEMP3 controls PWM
26 6 - TEMP2 and TEMP3 control PWM
27 7 - All three inputs control PWM
28
29pwmX_freq Read/write the PWM frequency in Hz. The number
30 should be one of the following:
31
32 11 Hz
33 14 Hz
34 22 Hz
35 29 Hz
36 35 Hz
37 44 Hz
38 58 Hz
39 88 Hz
40
41pwmX_auto_point1_pwm Read/write the minimum PWM duty cycle in automatic mode
42
43pwmX_auto_point2_pwm Read/write the maximum PWM duty cycle in automatic mode
44
45(there are three temperature settings numbered temp1 to temp3):
46
47tempX_input Read the current temperature. The value is in milli
48 degrees of Celsius.
49
50tempX_max Read/write the upper temperature limit - exceeding this
51 will cause an alarm.
52
53tempX_min Read/write the lower temperature limit - exceeding this
54 will cause an alarm.
55
56tempX_offset Read/write the temperature adjustment offset
57
58tempX_crit Read/write the THERM limit for remote1.
59
60tempX_crit_hyst Set the temperature value below crit where the
61 fans will stay on - this helps drive the temperature
62 low enough so it doesn't stay near the edge and
63 cause THERM to keep tripping.
64
65tempX_auto_point1_temp Read/write the minimum temperature where the fans will
66 turn on in automatic mode.
67
68tempX_auto_point2_temp Read/write the maximum temperature over which the fans
69 will run in automatic mode. tempX_auto_point1_temp
70 and tempX_auto_point2_temp together define the
71 range of automatic control.
72
73tempX_alarm Read a 1 if the max/min alarm is set
74tempX_fault Read a 1 if either temp1 or temp3 diode has a fault
75
76(There are two voltage settings, in1 and in2):
77
78inX_input Read the current voltage on VCC. Value is in
79 millivolts.
80
81inX_min read/write the minimum voltage limit.
82 Dropping below this causes an alarm.
83
84inX_max read/write the maximum voltage limit.
85 Exceeding this causes an alarm.
86
87inX_alarm Read a 1 if the max/min alarm is set.
diff --git a/Documentation/hwmon/lis3lv02d b/Documentation/hwmon/lis3lv02d
index 65dfb0c0fd67..0fcfc4a7ccdc 100644
--- a/Documentation/hwmon/lis3lv02d
+++ b/Documentation/hwmon/lis3lv02d
@@ -13,18 +13,21 @@ Author:
13Description 13Description
14----------- 14-----------
15 15
16This driver provides support for the accelerometer found in various HP laptops 16This driver provides support for the accelerometer found in various HP
17sporting the feature officially called "HP Mobile Data Protection System 3D" or 17laptops sporting the feature officially called "HP Mobile Data
18"HP 3D DriveGuard". It detect automatically laptops with this sensor. Known models 18Protection System 3D" or "HP 3D DriveGuard". It detect automatically
19(for now the HP 2133, nc6420, nc2510, nc8510, nc84x0, nw9440 and nx9420) will 19laptops with this sensor. Known models (for now the HP 2133, nc6420,
20have their axis automatically oriented on standard way (eg: you can directly 20nc2510, nc8510, nc84x0, nw9440 and nx9420) will have their axis
21play neverball). The accelerometer data is readable via 21automatically oriented on standard way (eg: you can directly play
22neverball). The accelerometer data is readable via
22/sys/devices/platform/lis3lv02d. 23/sys/devices/platform/lis3lv02d.
23 24
24Sysfs attributes under /sys/devices/platform/lis3lv02d/: 25Sysfs attributes under /sys/devices/platform/lis3lv02d/:
25position - 3D position that the accelerometer reports. Format: "(x,y,z)" 26position - 3D position that the accelerometer reports. Format: "(x,y,z)"
26calibrate - read: values (x, y, z) that are used as the base for input class device operation. 27calibrate - read: values (x, y, z) that are used as the base for input
27 write: forces the base to be recalibrated with the current position. 28 class device operation.
29 write: forces the base to be recalibrated with the current
30 position.
28rate - reports the sampling rate of the accelerometer device in HZ 31rate - reports the sampling rate of the accelerometer device in HZ
29 32
30This driver also provides an absolute input class device, allowing 33This driver also provides an absolute input class device, allowing
@@ -39,11 +42,12 @@ the accelerometer are converted into a "standard" organisation of the axes
39 * When the laptop is horizontal the position reported is about 0 for X and Y 42 * When the laptop is horizontal the position reported is about 0 for X and Y
40and a positive value for Z 43and a positive value for Z
41 * If the left side is elevated, X increases (becomes positive) 44 * If the left side is elevated, X increases (becomes positive)
42 * If the front side (where the touchpad is) is elevated, Y decreases (becomes negative) 45 * If the front side (where the touchpad is) is elevated, Y decreases
46 (becomes negative)
43 * If the laptop is put upside-down, Z becomes negative 47 * If the laptop is put upside-down, Z becomes negative
44 48
45If your laptop model is not recognized (cf "dmesg"), you can send an email to the 49If your laptop model is not recognized (cf "dmesg"), you can send an
46authors to add it to the database. When reporting a new laptop, please include 50email to the authors to add it to the database. When reporting a new
47the output of "dmidecode" plus the value of /sys/devices/platform/lis3lv02d/position 51laptop, please include the output of "dmidecode" plus the value of
48in these four cases. 52/sys/devices/platform/lis3lv02d/position in these four cases.
49 53
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 8511d3532c27..d8362cf9909e 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -577,9 +577,6 @@ and is between 256 and 4096 characters. It is defined in the file
577 a memory unit (amount[KMG]). See also 577 a memory unit (amount[KMG]). See also
578 Documentation/kdump/kdump.txt for a example. 578 Documentation/kdump/kdump.txt for a example.
579 579
580 cs4232= [HW,OSS]
581 Format: <io>,<irq>,<dma>,<dma2>,<mpuio>,<mpuirq>
582
583 cs89x0_dma= [HW,NET] 580 cs89x0_dma= [HW,NET]
584 Format: <dma> 581 Format: <dma>
585 582
@@ -732,10 +729,6 @@ and is between 256 and 4096 characters. It is defined in the file
732 Default value is 0. 729 Default value is 0.
733 Value can be changed at runtime via /selinux/enforce. 730 Value can be changed at runtime via /selinux/enforce.
734 731
735 es1371= [HW,OSS]
736 Format: <spdif>,[<nomix>,[<amplifier>]]
737 See also header of sound/oss/es1371.c.
738
739 ether= [HW,NET] Ethernet cards parameters 732 ether= [HW,NET] Ethernet cards parameters
740 This option is obsoleted by the "netdev=" option, which 733 This option is obsoleted by the "netdev=" option, which
741 has equivalent usage. See its documentation for details. 734 has equivalent usage. See its documentation for details.
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index 898b4987bb80..41bc99fa1884 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -1,7 +1,7 @@
1 ThinkPad ACPI Extras Driver 1 ThinkPad ACPI Extras Driver
2 2
3 Version 0.21 3 Version 0.22
4 May 29th, 2008 4 November 23rd, 2008
5 5
6 Borislav Deianov <borislav@users.sf.net> 6 Borislav Deianov <borislav@users.sf.net>
7 Henrique de Moraes Holschuh <hmh@hmh.eng.br> 7 Henrique de Moraes Holschuh <hmh@hmh.eng.br>
@@ -16,7 +16,8 @@ supported by the generic Linux ACPI drivers.
16This driver used to be named ibm-acpi until kernel 2.6.21 and release 16This driver used to be named ibm-acpi until kernel 2.6.21 and release
170.13-20070314. It used to be in the drivers/acpi tree, but it was 170.13-20070314. It used to be in the drivers/acpi tree, but it was
18moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel 18moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel
192.6.22, and release 0.14. 192.6.22, and release 0.14. It was moved to drivers/platform/x86 for
20kernel 2.6.29 and release 0.22.
20 21
21The driver is named "thinkpad-acpi". In some places, like module 22The driver is named "thinkpad-acpi". In some places, like module
22names, "thinkpad_acpi" is used because of userspace issues. 23names, "thinkpad_acpi" is used because of userspace issues.
@@ -1412,6 +1413,24 @@ Sysfs notes:
1412 rfkill controller switch "tpacpi_wwan_sw": refer to 1413 rfkill controller switch "tpacpi_wwan_sw": refer to
1413 Documentation/rfkill.txt for details. 1414 Documentation/rfkill.txt for details.
1414 1415
1416EXPERIMENTAL: UWB
1417-----------------
1418
1419This feature is marked EXPERIMENTAL because it has not been extensively
1420tested and validated in various ThinkPad models yet. The feature may not
1421work as expected. USE WITH CAUTION! To use this feature, you need to supply
1422the experimental=1 parameter when loading the module.
1423
1424sysfs rfkill class: switch "tpacpi_uwb_sw"
1425
1426This feature exports an rfkill controller for the UWB device, if one is
1427present and enabled in the BIOS.
1428
1429Sysfs notes:
1430
1431 rfkill controller switch "tpacpi_uwb_sw": refer to
1432 Documentation/rfkill.txt for details.
1433
1415Multiple Commands, Module Parameters 1434Multiple Commands, Module Parameters
1416------------------------------------ 1435------------------------------------
1417 1436
diff --git a/Documentation/mips/AU1xxx_IDE.README b/Documentation/mips/AU1xxx_IDE.README
index f54962aea84d..8ace35ebdcd5 100644
--- a/Documentation/mips/AU1xxx_IDE.README
+++ b/Documentation/mips/AU1xxx_IDE.README
@@ -52,14 +52,12 @@ Two files are introduced:
52 b) 'drivers/ide/mips/au1xxx-ide.c' 52 b) 'drivers/ide/mips/au1xxx-ide.c'
53 contains the functionality of the AU1XXX IDE driver 53 contains the functionality of the AU1XXX IDE driver
54 54
55Four configs variables are introduced: 55Following extra configs variables are introduced:
56 56
57 CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA - enable the PIO+DBDMA mode 57 CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA - enable the PIO+DBDMA mode
58 CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA - enable the MWDMA mode 58 CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA - enable the MWDMA mode
59 CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON - set Burstable FIFO in DBDMA 59 CONFIG_BLK_DEV_IDE_AU1XXX_BURSTABLE_ON - set Burstable FIFO in DBDMA
60 controller 60 controller
61 CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ - maximum transfer size
62 per descriptor
63 61
64 62
65SUPPORTED IDE MODES 63SUPPORTED IDE MODES
@@ -87,7 +85,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
87CONFIG_IDEDMA_PCI_AUTO=y 85CONFIG_IDEDMA_PCI_AUTO=y
88CONFIG_BLK_DEV_IDE_AU1XXX=y 86CONFIG_BLK_DEV_IDE_AU1XXX=y
89CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y 87CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y
90CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ=128
91CONFIG_BLK_DEV_IDEDMA=y 88CONFIG_BLK_DEV_IDEDMA=y
92CONFIG_IDEDMA_AUTO=y 89CONFIG_IDEDMA_AUTO=y
93 90
@@ -105,7 +102,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
105CONFIG_IDEDMA_PCI_AUTO=y 102CONFIG_IDEDMA_PCI_AUTO=y
106CONFIG_BLK_DEV_IDE_AU1XXX=y 103CONFIG_BLK_DEV_IDE_AU1XXX=y
107CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y 104CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=y
108CONFIG_BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ=128
109CONFIG_BLK_DEV_IDEDMA=y 105CONFIG_BLK_DEV_IDEDMA=y
110CONFIG_IDEDMA_AUTO=y 106CONFIG_IDEDMA_AUTO=y
111 107
diff --git a/Documentation/networking/netconsole.txt b/Documentation/networking/netconsole.txt
index 3c2f2b328638..8d022073e3ef 100644
--- a/Documentation/networking/netconsole.txt
+++ b/Documentation/networking/netconsole.txt
@@ -51,7 +51,8 @@ Built-in netconsole starts immediately after the TCP stack is
51initialized and attempts to bring up the supplied dev at the supplied 51initialized and attempts to bring up the supplied dev at the supplied
52address. 52address.
53 53
54The remote host can run either 'netcat -u -l -p <port>' or syslogd. 54The remote host can run either 'netcat -u -l -p <port>',
55'nc -l -u <port>' or syslogd.
55 56
56Dynamic reconfiguration: 57Dynamic reconfiguration:
57======================== 58========================
diff --git a/Documentation/scheduler/sched-design-CFS.txt b/Documentation/scheduler/sched-design-CFS.txt
index 8398ca4ff4ed..6f33593e59e2 100644
--- a/Documentation/scheduler/sched-design-CFS.txt
+++ b/Documentation/scheduler/sched-design-CFS.txt
@@ -231,7 +231,7 @@ CPU bandwidth control purposes:
231 231
232 This options needs CONFIG_CGROUPS to be defined, and lets the administrator 232 This options needs CONFIG_CGROUPS to be defined, and lets the administrator
233 create arbitrary groups of tasks, using the "cgroup" pseudo filesystem. See 233 create arbitrary groups of tasks, using the "cgroup" pseudo filesystem. See
234 Documentation/cgroups.txt for more information about this filesystem. 234 Documentation/cgroups/cgroups.txt for more information about this filesystem.
235 235
236Only one of these options to group tasks can be chosen and not both. 236Only one of these options to group tasks can be chosen and not both.
237 237
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt
index 4b7ac21ea9eb..0f5d26bea80f 100644
--- a/Documentation/sound/alsa/HD-Audio-Models.txt
+++ b/Documentation/sound/alsa/HD-Audio-Models.txt
@@ -275,7 +275,8 @@ STAC9200
275 dell-m25 Dell Inspiron E1505n 275 dell-m25 Dell Inspiron E1505n
276 dell-m26 Dell Inspiron 1501 276 dell-m26 Dell Inspiron 1501
277 dell-m27 Dell Inspiron E1705/9400 277 dell-m27 Dell Inspiron E1705/9400
278 gateway Gateway laptops with EAPD control 278 gateway-m4 Gateway laptops with EAPD control
279 gateway-m4-2 Gateway laptops with EAPD control
279 panasonic Panasonic CF-74 280 panasonic Panasonic CF-74
280 281
281STAC9205/9254 282STAC9205/9254
@@ -302,6 +303,7 @@ STAC9220/9221
302 macbook-pro Intel Mac Book Pro 2nd generation (eq. type 3) 303 macbook-pro Intel Mac Book Pro 2nd generation (eq. type 3)
303 imac-intel Intel iMac (eq. type 2) 304 imac-intel Intel iMac (eq. type 2)
304 imac-intel-20 Intel iMac (newer version) (eq. type 3) 305 imac-intel-20 Intel iMac (newer version) (eq. type 3)
306 ecs202 ECS/PC chips
305 dell-d81 Dell (unknown) 307 dell-d81 Dell (unknown)
306 dell-d82 Dell (unknown) 308 dell-d82 Dell (unknown)
307 dell-m81 Dell (unknown) 309 dell-m81 Dell (unknown)
@@ -310,9 +312,13 @@ STAC9220/9221
310STAC9202/9250/9251 312STAC9202/9250/9251
311================== 313==================
312 ref Reference board, base config 314 ref Reference board, base config
315 m1 Some Gateway MX series laptops (NX560XL)
316 m1-2 Some Gateway MX series laptops (MX6453)
317 m2 Some Gateway MX series laptops (M255)
313 m2-2 Some Gateway MX series laptops 318 m2-2 Some Gateway MX series laptops
319 m3 Some Gateway MX series laptops
320 m5 Some Gateway MX series laptops (MP6954)
314 m6 Some Gateway NX series laptops 321 m6 Some Gateway NX series laptops
315 pa6 Gateway NX860 series
316 322
317STAC9227/9228/9229/927x 323STAC9227/9228/9229/927x
318======================= 324=======================
@@ -329,6 +335,7 @@ STAC92HD71B*
329 dell-m4-1 Dell desktops 335 dell-m4-1 Dell desktops
330 dell-m4-2 Dell desktops 336 dell-m4-2 Dell desktops
331 dell-m4-3 Dell desktops 337 dell-m4-3 Dell desktops
338 hp-m4 HP dv laptops
332 339
333STAC92HD73* 340STAC92HD73*
334=========== 341===========
@@ -337,10 +344,12 @@ STAC92HD73*
337 dell-m6-amic Dell desktops/laptops with analog mics 344 dell-m6-amic Dell desktops/laptops with analog mics
338 dell-m6-dmic Dell desktops/laptops with digital mics 345 dell-m6-dmic Dell desktops/laptops with digital mics
339 dell-m6 Dell desktops/laptops with both type of mics 346 dell-m6 Dell desktops/laptops with both type of mics
347 dell-eq Dell desktops/laptops
340 348
341STAC92HD83* 349STAC92HD83*
342=========== 350===========
343 ref Reference board 351 ref Reference board
352 mic-ref Reference board with power managment for ports
344 353
345STAC9872 354STAC9872
346======== 355========
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt
index a3415070bcac..3197fc83bc51 100644
--- a/Documentation/sysctl/vm.txt
+++ b/Documentation/sysctl/vm.txt
@@ -1,12 +1,13 @@
1Documentation for /proc/sys/vm/* kernel version 2.2.10 1Documentation for /proc/sys/vm/* kernel version 2.6.29
2 (c) 1998, 1999, Rik van Riel <riel@nl.linux.org> 2 (c) 1998, 1999, Rik van Riel <riel@nl.linux.org>
3 (c) 2008 Peter W. Morreale <pmorreale@novell.com>
3 4
4For general info and legal blurb, please look in README. 5For general info and legal blurb, please look in README.
5 6
6============================================================== 7==============================================================
7 8
8This file contains the documentation for the sysctl files in 9This file contains the documentation for the sysctl files in
9/proc/sys/vm and is valid for Linux kernel version 2.2. 10/proc/sys/vm and is valid for Linux kernel version 2.6.29.
10 11
11The files in this directory can be used to tune the operation 12The files in this directory can be used to tune the operation
12of the virtual memory (VM) subsystem of the Linux kernel and 13of the virtual memory (VM) subsystem of the Linux kernel and
@@ -16,180 +17,274 @@ Default values and initialization routines for most of these
16files can be found in mm/swap.c. 17files can be found in mm/swap.c.
17 18
18Currently, these files are in /proc/sys/vm: 19Currently, these files are in /proc/sys/vm:
19- overcommit_memory 20
20- page-cluster 21- block_dump
21- dirty_ratio 22- dirty_background_bytes
22- dirty_background_ratio 23- dirty_background_ratio
24- dirty_bytes
23- dirty_expire_centisecs 25- dirty_expire_centisecs
26- dirty_ratio
24- dirty_writeback_centisecs 27- dirty_writeback_centisecs
25- highmem_is_dirtyable (only if CONFIG_HIGHMEM set) 28- drop_caches
29- hugepages_treat_as_movable
30- hugetlb_shm_group
31- laptop_mode
32- legacy_va_layout
33- lowmem_reserve_ratio
26- max_map_count 34- max_map_count
27- min_free_kbytes 35- min_free_kbytes
28- laptop_mode
29- block_dump
30- drop-caches
31- zone_reclaim_mode
32- min_unmapped_ratio
33- min_slab_ratio 36- min_slab_ratio
34- panic_on_oom 37- min_unmapped_ratio
35- oom_dump_tasks 38- mmap_min_addr
36- oom_kill_allocating_task
37- mmap_min_address
38- numa_zonelist_order
39- nr_hugepages 39- nr_hugepages
40- nr_overcommit_hugepages 40- nr_overcommit_hugepages
41- nr_trim_pages (only if CONFIG_MMU=n) 41- nr_pdflush_threads
42- nr_trim_pages (only if CONFIG_MMU=n)
43- numa_zonelist_order
44- oom_dump_tasks
45- oom_kill_allocating_task
46- overcommit_memory
47- overcommit_ratio
48- page-cluster
49- panic_on_oom
50- percpu_pagelist_fraction
51- stat_interval
52- swappiness
53- vfs_cache_pressure
54- zone_reclaim_mode
55
42 56
43============================================================== 57==============================================================
44 58
45dirty_bytes, dirty_ratio, dirty_background_bytes, 59block_dump
46dirty_background_ratio, dirty_expire_centisecs,
47dirty_writeback_centisecs, highmem_is_dirtyable,
48vfs_cache_pressure, laptop_mode, block_dump, swap_token_timeout,
49drop-caches, hugepages_treat_as_movable:
50 60
51See Documentation/filesystems/proc.txt 61block_dump enables block I/O debugging when set to a nonzero value. More
62information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
52 63
53============================================================== 64==============================================================
54 65
55overcommit_memory: 66dirty_background_bytes
56 67
57This value contains a flag that enables memory overcommitment. 68Contains the amount of dirty memory at which the pdflush background writeback
69daemon will start writeback.
58 70
59When this flag is 0, the kernel attempts to estimate the amount 71If dirty_background_bytes is written, dirty_background_ratio becomes a function
60of free memory left when userspace requests more memory. 72of its value (dirty_background_bytes / the amount of dirtyable system memory).
61 73
62When this flag is 1, the kernel pretends there is always enough 74==============================================================
63memory until it actually runs out.
64 75
65When this flag is 2, the kernel uses a "never overcommit" 76dirty_background_ratio
66policy that attempts to prevent any overcommit of memory.
67 77
68This feature can be very useful because there are a lot of 78Contains, as a percentage of total system memory, the number of pages at which
69programs that malloc() huge amounts of memory "just-in-case" 79the pdflush background writeback daemon will start writing out dirty data.
70and don't use much of it.
71 80
72The default value is 0. 81==============================================================
73 82
74See Documentation/vm/overcommit-accounting and 83dirty_bytes
75security/commoncap.c::cap_vm_enough_memory() for more information. 84
85Contains the amount of dirty memory at which a process generating disk writes
86will itself start writeback.
87
88If dirty_bytes is written, dirty_ratio becomes a function of its value
89(dirty_bytes / the amount of dirtyable system memory).
76 90
77============================================================== 91==============================================================
78 92
79overcommit_ratio: 93dirty_expire_centisecs
80 94
81When overcommit_memory is set to 2, the committed address 95This tunable is used to define when dirty data is old enough to be eligible
82space is not permitted to exceed swap plus this percentage 96for writeout by the pdflush daemons. It is expressed in 100'ths of a second.
83of physical RAM. See above. 97Data which has been dirty in-memory for longer than this interval will be
98written out next time a pdflush daemon wakes up.
99
100==============================================================
101
102dirty_ratio
103
104Contains, as a percentage of total system memory, the number of pages at which
105a process which is generating disk writes will itself start writing out dirty
106data.
84 107
85============================================================== 108==============================================================
86 109
87page-cluster: 110dirty_writeback_centisecs
88 111
89The Linux VM subsystem avoids excessive disk seeks by reading 112The pdflush writeback daemons will periodically wake up and write `old' data
90multiple pages on a page fault. The number of pages it reads 113out to disk. This tunable expresses the interval between those wakeups, in
91is dependent on the amount of memory in your machine. 114100'ths of a second.
92 115
93The number of pages the kernel reads in at once is equal to 116Setting this to zero disables periodic writeback altogether.
942 ^ page-cluster. Values above 2 ^ 5 don't make much sense
95for swap because we only cluster swap data in 32-page groups.
96 117
97============================================================== 118==============================================================
98 119
99max_map_count: 120drop_caches
100 121
101This file contains the maximum number of memory map areas a process 122Writing to this will cause the kernel to drop clean caches, dentries and
102may have. Memory map areas are used as a side-effect of calling 123inodes from memory, causing that memory to become free.
103malloc, directly by mmap and mprotect, and also when loading shared
104libraries.
105 124
106While most applications need less than a thousand maps, certain 125To free pagecache:
107programs, particularly malloc debuggers, may consume lots of them, 126 echo 1 > /proc/sys/vm/drop_caches
108e.g., up to one or two maps per allocation. 127To free dentries and inodes:
128 echo 2 > /proc/sys/vm/drop_caches
129To free pagecache, dentries and inodes:
130 echo 3 > /proc/sys/vm/drop_caches
109 131
110The default value is 65536. 132As this is a non-destructive operation and dirty objects are not freeable, the
133user should run `sync' first.
111 134
112============================================================== 135==============================================================
113 136
114min_free_kbytes: 137hugepages_treat_as_movable
115 138
116This is used to force the Linux VM to keep a minimum number 139This parameter is only useful when kernelcore= is specified at boot time to
117of kilobytes free. The VM uses this number to compute a pages_min 140create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
118value for each lowmem zone in the system. Each lowmem zone gets 141are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
119a number of reserved free pages based proportionally on its size. 142value written to hugepages_treat_as_movable allows huge pages to be allocated
143from ZONE_MOVABLE.
120 144
121Some minimal amount of memory is needed to satisfy PF_MEMALLOC 145Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
122allocations; if you set this to lower than 1024KB, your system will 146pages pool can easily grow or shrink within. Assuming that applications are
123become subtly broken, and prone to deadlock under high loads. 147not running that mlock() a lot of memory, it is likely the huge pages pool
124 148can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
125Setting this too high will OOM your machine instantly. 149into nr_hugepages and triggering page reclaim.
126 150
127============================================================== 151==============================================================
128 152
129percpu_pagelist_fraction 153hugetlb_shm_group
130 154
131This is the fraction of pages at most (high mark pcp->high) in each zone that 155hugetlb_shm_group contains group id that is allowed to create SysV
132are allocated for each per cpu page list. The min value for this is 8. It 156shared memory segment using hugetlb page.
133means that we don't allow more than 1/8th of pages in each zone to be
134allocated in any single per_cpu_pagelist. This entry only changes the value
135of hot per cpu pagelists. User can specify a number like 100 to allocate
1361/100th of each zone to each per cpu page list.
137 157
138The batch value of each per cpu pagelist is also updated as a result. It is 158==============================================================
139set to pcp->high/4. The upper limit of batch is (PAGE_SHIFT * 8)
140 159
141The initial value is zero. Kernel does not use this value at boot time to set 160laptop_mode
142the high water marks for each per cpu page list.
143 161
144=============================================================== 162laptop_mode is a knob that controls "laptop mode". All the things that are
163controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
145 164
146zone_reclaim_mode: 165==============================================================
147 166
148Zone_reclaim_mode allows someone to set more or less aggressive approaches to 167legacy_va_layout
149reclaim memory when a zone runs out of memory. If it is set to zero then no
150zone reclaim occurs. Allocations will be satisfied from other zones / nodes
151in the system.
152 168
153This is value ORed together of 169If non-zero, this sysctl disables the new 32-bit mmap mmap layout - the kernel
170will use the legacy (2.4) layout for all processes.
154 171
1551 = Zone reclaim on 172==============================================================
1562 = Zone reclaim writes dirty pages out
1574 = Zone reclaim swaps pages
158 173
159zone_reclaim_mode is set during bootup to 1 if it is determined that pages 174lowmem_reserve_ratio
160from remote zones will cause a measurable performance reduction. The 175
161page allocator will then reclaim easily reusable pages (those page 176For some specialised workloads on highmem machines it is dangerous for
162cache pages that are currently not used) before allocating off node pages. 177the kernel to allow process memory to be allocated from the "lowmem"
178zone. This is because that memory could then be pinned via the mlock()
179system call, or by unavailability of swapspace.
180
181And on large highmem machines this lack of reclaimable lowmem memory
182can be fatal.
183
184So the Linux page allocator has a mechanism which prevents allocations
185which _could_ use highmem from using too much lowmem. This means that
186a certain amount of lowmem is defended from the possibility of being
187captured into pinned user memory.
188
189(The same argument applies to the old 16 megabyte ISA DMA region. This
190mechanism will also defend that region from allocations which could use
191highmem or lowmem).
192
193The `lowmem_reserve_ratio' tunable determines how aggressive the kernel is
194in defending these lower zones.
195
196If you have a machine which uses highmem or ISA DMA and your
197applications are using mlock(), or if you are running with no swap then
198you probably should change the lowmem_reserve_ratio setting.
199
200The lowmem_reserve_ratio is an array. You can see them by reading this file.
201-
202% cat /proc/sys/vm/lowmem_reserve_ratio
203256 256 32
204-
205Note: # of this elements is one fewer than number of zones. Because the highest
206 zone's value is not necessary for following calculation.
207
208But, these values are not used directly. The kernel calculates # of protection
209pages for each zones from them. These are shown as array of protection pages
210in /proc/zoneinfo like followings. (This is an example of x86-64 box).
211Each zone has an array of protection pages like this.
212
213-
214Node 0, zone DMA
215 pages free 1355
216 min 3
217 low 3
218 high 4
219 :
220 :
221 numa_other 0
222 protection: (0, 2004, 2004, 2004)
223 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
224 pagesets
225 cpu: 0 pcp: 0
226 :
227-
228These protections are added to score to judge whether this zone should be used
229for page allocation or should be reclaimed.
230
231In this example, if normal pages (index=2) are required to this DMA zone and
232pages_high is used for watermark, the kernel judges this zone should not be
233used because pages_free(1355) is smaller than watermark + protection[2]
234(4 + 2004 = 2008). If this protection value is 0, this zone would be used for
235normal page requirement. If requirement is DMA zone(index=0), protection[0]
236(=0) is used.
237
238zone[i]'s protection[j] is calculated by following expression.
239
240(i < j):
241 zone[i]->protection[j]
242 = (total sums of present_pages from zone[i+1] to zone[j] on the node)
243 / lowmem_reserve_ratio[i];
244(i = j):
245 (should not be protected. = 0;
246(i > j):
247 (not necessary, but looks 0)
248
249The default values of lowmem_reserve_ratio[i] are
250 256 (if zone[i] means DMA or DMA32 zone)
251 32 (others).
252As above expression, they are reciprocal number of ratio.
253256 means 1/256. # of protection pages becomes about "0.39%" of total present
254pages of higher zones on the node.
255
256If you would like to protect more pages, smaller values are effective.
257The minimum value is 1 (1/1 -> 100%).
163 258
164It may be beneficial to switch off zone reclaim if the system is 259==============================================================
165used for a file server and all of memory should be used for caching files
166from disk. In that case the caching effect is more important than
167data locality.
168 260
169Allowing zone reclaim to write out pages stops processes that are 261max_map_count:
170writing large amounts of data from dirtying pages on other nodes. Zone
171reclaim will write out dirty pages if a zone fills up and so effectively
172throttle the process. This may decrease the performance of a single process
173since it cannot use all of system memory to buffer the outgoing writes
174anymore but it preserve the memory on other nodes so that the performance
175of other processes running on other nodes will not be affected.
176 262
177Allowing regular swap effectively restricts allocations to the local 263This file contains the maximum number of memory map areas a process
178node unless explicitly overridden by memory policies or cpuset 264may have. Memory map areas are used as a side-effect of calling
179configurations. 265malloc, directly by mmap and mprotect, and also when loading shared
266libraries.
180 267
181============================================================= 268While most applications need less than a thousand maps, certain
269programs, particularly malloc debuggers, may consume lots of them,
270e.g., up to one or two maps per allocation.
182 271
183min_unmapped_ratio: 272The default value is 65536.
184 273
185This is available only on NUMA kernels. 274==============================================================
186 275
187A percentage of the total pages in each zone. Zone reclaim will only 276min_free_kbytes:
188occur if more than this percentage of pages are file backed and unmapped.
189This is to insure that a minimal amount of local pages is still available for
190file I/O even if the node is overallocated.
191 277
192The default is 1 percent. 278This is used to force the Linux VM to keep a minimum number
279of kilobytes free. The VM uses this number to compute a pages_min
280value for each lowmem zone in the system. Each lowmem zone gets
281a number of reserved free pages based proportionally on its size.
282
283Some minimal amount of memory is needed to satisfy PF_MEMALLOC
284allocations; if you set this to lower than 1024KB, your system will
285become subtly broken, and prone to deadlock under high loads.
286
287Setting this too high will OOM your machine instantly.
193 288
194============================================================= 289=============================================================
195 290
@@ -211,82 +306,73 @@ and may not be fast.
211 306
212============================================================= 307=============================================================
213 308
214panic_on_oom 309min_unmapped_ratio:
215 310
216This enables or disables panic on out-of-memory feature. 311This is available only on NUMA kernels.
217 312
218If this is set to 0, the kernel will kill some rogue process, 313A percentage of the total pages in each zone. Zone reclaim will only
219called oom_killer. Usually, oom_killer can kill rogue processes and 314occur if more than this percentage of pages are file backed and unmapped.
220system will survive. 315This is to insure that a minimal amount of local pages is still available for
316file I/O even if the node is overallocated.
221 317
222If this is set to 1, the kernel panics when out-of-memory happens. 318The default is 1 percent.
223However, if a process limits using nodes by mempolicy/cpusets,
224and those nodes become memory exhaustion status, one process
225may be killed by oom-killer. No panic occurs in this case.
226Because other nodes' memory may be free. This means system total status
227may be not fatal yet.
228 319
229If this is set to 2, the kernel panics compulsorily even on the 320==============================================================
230above-mentioned.
231 321
232The default value is 0. 322mmap_min_addr
2331 and 2 are for failover of clustering. Please select either
234according to your policy of failover.
235 323
236============================================================= 324This file indicates the amount of address space which a user process will
325be restricted from mmaping. Since kernel null dereference bugs could
326accidentally operate based on the information in the first couple of pages
327of memory userspace processes should not be allowed to write to them. By
328default this value is set to 0 and no protections will be enforced by the
329security module. Setting this value to something like 64k will allow the
330vast majority of applications to work correctly and provide defense in depth
331against future potential kernel bugs.
237 332
238oom_dump_tasks 333==============================================================
239 334
240Enables a system-wide task dump (excluding kernel threads) to be 335nr_hugepages
241produced when the kernel performs an OOM-killing and includes such
242information as pid, uid, tgid, vm size, rss, cpu, oom_adj score, and
243name. This is helpful to determine why the OOM killer was invoked
244and to identify the rogue task that caused it.
245 336
246If this is set to zero, this information is suppressed. On very 337Change the minimum size of the hugepage pool.
247large systems with thousands of tasks it may not be feasible to dump
248the memory state information for each one. Such systems should not
249be forced to incur a performance penalty in OOM conditions when the
250information may not be desired.
251 338
252If this is set to non-zero, this information is shown whenever the 339See Documentation/vm/hugetlbpage.txt
253OOM killer actually kills a memory-hogging task.
254 340
255The default value is 0. 341==============================================================
256 342
257============================================================= 343nr_overcommit_hugepages
258 344
259oom_kill_allocating_task 345Change the maximum size of the hugepage pool. The maximum is
346nr_hugepages + nr_overcommit_hugepages.
260 347
261This enables or disables killing the OOM-triggering task in 348See Documentation/vm/hugetlbpage.txt
262out-of-memory situations.
263 349
264If this is set to zero, the OOM killer will scan through the entire 350==============================================================
265tasklist and select a task based on heuristics to kill. This normally
266selects a rogue memory-hogging task that frees up a large amount of
267memory when killed.
268 351
269If this is set to non-zero, the OOM killer simply kills the task that 352nr_pdflush_threads
270triggered the out-of-memory condition. This avoids the expensive
271tasklist scan.
272 353
273If panic_on_oom is selected, it takes precedence over whatever value 354The current number of pdflush threads. This value is read-only.
274is used in oom_kill_allocating_task. 355The value changes according to the number of dirty pages in the system.
275 356
276The default value is 0. 357When neccessary, additional pdflush threads are created, one per second, up to
358nr_pdflush_threads_max.
277 359
278============================================================== 360==============================================================
279 361
280mmap_min_addr 362nr_trim_pages
281 363
282This file indicates the amount of address space which a user process will 364This is available only on NOMMU kernels.
283be restricted from mmaping. Since kernel null dereference bugs could 365
284accidentally operate based on the information in the first couple of pages 366This value adjusts the excess page trimming behaviour of power-of-2 aligned
285of memory userspace processes should not be allowed to write to them. By 367NOMMU mmap allocations.
286default this value is set to 0 and no protections will be enforced by the 368
287security module. Setting this value to something like 64k will allow the 369A value of 0 disables trimming of allocations entirely, while a value of 1
288vast majority of applications to work correctly and provide defense in depth 370trims excess pages aggressively. Any value >= 1 acts as the watermark where
289against future potential kernel bugs. 371trimming of allocations is initiated.
372
373The default value is 1.
374
375See Documentation/nommu-mmap.txt for more information.
290 376
291============================================================== 377==============================================================
292 378
@@ -335,34 +421,199 @@ this is causing problems for your system/application.
335 421
336============================================================== 422==============================================================
337 423
338nr_hugepages 424oom_dump_tasks
339 425
340Change the minimum size of the hugepage pool. 426Enables a system-wide task dump (excluding kernel threads) to be
427produced when the kernel performs an OOM-killing and includes such
428information as pid, uid, tgid, vm size, rss, cpu, oom_adj score, and
429name. This is helpful to determine why the OOM killer was invoked
430and to identify the rogue task that caused it.
341 431
342See Documentation/vm/hugetlbpage.txt 432If this is set to zero, this information is suppressed. On very
433large systems with thousands of tasks it may not be feasible to dump
434the memory state information for each one. Such systems should not
435be forced to incur a performance penalty in OOM conditions when the
436information may not be desired.
437
438If this is set to non-zero, this information is shown whenever the
439OOM killer actually kills a memory-hogging task.
440
441The default value is 0.
343 442
344============================================================== 443==============================================================
345 444
346nr_overcommit_hugepages 445oom_kill_allocating_task
347 446
348Change the maximum size of the hugepage pool. The maximum is 447This enables or disables killing the OOM-triggering task in
349nr_hugepages + nr_overcommit_hugepages. 448out-of-memory situations.
350 449
351See Documentation/vm/hugetlbpage.txt 450If this is set to zero, the OOM killer will scan through the entire
451tasklist and select a task based on heuristics to kill. This normally
452selects a rogue memory-hogging task that frees up a large amount of
453memory when killed.
454
455If this is set to non-zero, the OOM killer simply kills the task that
456triggered the out-of-memory condition. This avoids the expensive
457tasklist scan.
458
459If panic_on_oom is selected, it takes precedence over whatever value
460is used in oom_kill_allocating_task.
461
462The default value is 0.
352 463
353============================================================== 464==============================================================
354 465
355nr_trim_pages 466overcommit_memory:
356 467
357This is available only on NOMMU kernels. 468This value contains a flag that enables memory overcommitment.
358 469
359This value adjusts the excess page trimming behaviour of power-of-2 aligned 470When this flag is 0, the kernel attempts to estimate the amount
360NOMMU mmap allocations. 471of free memory left when userspace requests more memory.
361 472
362A value of 0 disables trimming of allocations entirely, while a value of 1 473When this flag is 1, the kernel pretends there is always enough
363trims excess pages aggressively. Any value >= 1 acts as the watermark where 474memory until it actually runs out.
364trimming of allocations is initiated.
365 475
366The default value is 1. 476When this flag is 2, the kernel uses a "never overcommit"
477policy that attempts to prevent any overcommit of memory.
367 478
368See Documentation/nommu-mmap.txt for more information. 479This feature can be very useful because there are a lot of
480programs that malloc() huge amounts of memory "just-in-case"
481and don't use much of it.
482
483The default value is 0.
484
485See Documentation/vm/overcommit-accounting and
486security/commoncap.c::cap_vm_enough_memory() for more information.
487
488==============================================================
489
490overcommit_ratio:
491
492When overcommit_memory is set to 2, the committed address
493space is not permitted to exceed swap plus this percentage
494of physical RAM. See above.
495
496==============================================================
497
498page-cluster
499
500page-cluster controls the number of pages which are written to swap in
501a single attempt. The swap I/O size.
502
503It is a logarithmic value - setting it to zero means "1 page", setting
504it to 1 means "2 pages", setting it to 2 means "4 pages", etc.
505
506The default value is three (eight pages at a time). There may be some
507small benefits in tuning this to a different value if your workload is
508swap-intensive.
509
510=============================================================
511
512panic_on_oom
513
514This enables or disables panic on out-of-memory feature.
515
516If this is set to 0, the kernel will kill some rogue process,
517called oom_killer. Usually, oom_killer can kill rogue processes and
518system will survive.
519
520If this is set to 1, the kernel panics when out-of-memory happens.
521However, if a process limits using nodes by mempolicy/cpusets,
522and those nodes become memory exhaustion status, one process
523may be killed by oom-killer. No panic occurs in this case.
524Because other nodes' memory may be free. This means system total status
525may be not fatal yet.
526
527If this is set to 2, the kernel panics compulsorily even on the
528above-mentioned.
529
530The default value is 0.
5311 and 2 are for failover of clustering. Please select either
532according to your policy of failover.
533
534=============================================================
535
536percpu_pagelist_fraction
537
538This is the fraction of pages at most (high mark pcp->high) in each zone that
539are allocated for each per cpu page list. The min value for this is 8. It
540means that we don't allow more than 1/8th of pages in each zone to be
541allocated in any single per_cpu_pagelist. This entry only changes the value
542of hot per cpu pagelists. User can specify a number like 100 to allocate
5431/100th of each zone to each per cpu page list.
544
545The batch value of each per cpu pagelist is also updated as a result. It is
546set to pcp->high/4. The upper limit of batch is (PAGE_SHIFT * 8)
547
548The initial value is zero. Kernel does not use this value at boot time to set
549the high water marks for each per cpu page list.
550
551==============================================================
552
553stat_interval
554
555The time interval between which vm statistics are updated. The default
556is 1 second.
557
558==============================================================
559
560swappiness
561
562This control is used to define how aggressive the kernel will swap
563memory pages. Higher values will increase agressiveness, lower values
564descrease the amount of swap.
565
566The default value is 60.
567
568==============================================================
569
570vfs_cache_pressure
571------------------
572
573Controls the tendency of the kernel to reclaim the memory which is used for
574caching of directory and inode objects.
575
576At the default value of vfs_cache_pressure=100 the kernel will attempt to
577reclaim dentries and inodes at a "fair" rate with respect to pagecache and
578swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer
579to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100
580causes the kernel to prefer to reclaim dentries and inodes.
581
582==============================================================
583
584zone_reclaim_mode:
585
586Zone_reclaim_mode allows someone to set more or less aggressive approaches to
587reclaim memory when a zone runs out of memory. If it is set to zero then no
588zone reclaim occurs. Allocations will be satisfied from other zones / nodes
589in the system.
590
591This is value ORed together of
592
5931 = Zone reclaim on
5942 = Zone reclaim writes dirty pages out
5954 = Zone reclaim swaps pages
596
597zone_reclaim_mode is set during bootup to 1 if it is determined that pages
598from remote zones will cause a measurable performance reduction. The
599page allocator will then reclaim easily reusable pages (those page
600cache pages that are currently not used) before allocating off node pages.
601
602It may be beneficial to switch off zone reclaim if the system is
603used for a file server and all of memory should be used for caching files
604from disk. In that case the caching effect is more important than
605data locality.
606
607Allowing zone reclaim to write out pages stops processes that are
608writing large amounts of data from dirtying pages on other nodes. Zone
609reclaim will write out dirty pages if a zone fills up and so effectively
610throttle the process. This may decrease the performance of a single process
611since it cannot use all of system memory to buffer the outgoing writes
612anymore but it preserve the memory on other nodes so that the performance
613of other processes running on other nodes will not be affected.
614
615Allowing regular swap effectively restricts allocations to the local
616node unless explicitly overridden by memory policies or cpuset
617configurations.
618
619============ End of Document =================================
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index 10a0263ebb3f..9e592c718afb 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -1,6 +1,5 @@
1Linux Magic System Request Key Hacks 1Linux Magic System Request Key Hacks
2Documentation for sysrq.c 2Documentation for sysrq.c
3Last update: 2007-AUG-04
4 3
5* What is the magic SysRq key? 4* What is the magic SysRq key?
6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -211,6 +210,24 @@ within a function called by handle_sysrq, you must be aware that you are in
211a lock (you are also in an interrupt handler, which means don't sleep!), so 210a lock (you are also in an interrupt handler, which means don't sleep!), so
212you must call __handle_sysrq_nolock instead. 211you must call __handle_sysrq_nolock instead.
213 212
213* When I hit a SysRq key combination only the header appears on the console?
214~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
215Sysrq output is subject to the same console loglevel control as all
216other console output. This means that if the kernel was booted 'quiet'
217as is common on distro kernels the output may not appear on the actual
218console, even though it will appear in the dmesg buffer, and be accessible
219via the dmesg command and to the consumers of /proc/kmsg. As a specific
220exception the header line from the sysrq command is passed to all console
221consumers as if the current loglevel was maximum. If only the header
222is emitted it is almost certain that the kernel loglevel is too low.
223Should you require the output on the console channel then you will need
224to temporarily up the console loglevel using alt-sysrq-8 or:
225
226 echo 8 > /proc/sysrq-trigger
227
228Remember to return the loglevel to normal after triggering the sysrq
229command you are interested in.
230
214* I have more questions, who can I ask? 231* I have more questions, who can I ask?
215~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 232~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
216And I'll answer any questions about the registration system you got, also 233And I'll answer any questions about the registration system you got, also
diff --git a/MAINTAINERS b/MAINTAINERS
index 6f65a269cb17..3fe4dc2c2564 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1581,6 +1581,13 @@ L: bluesmoke-devel@lists.sourceforge.net
1581W: bluesmoke.sourceforge.net 1581W: bluesmoke.sourceforge.net
1582S: Maintained 1582S: Maintained
1583 1583
1584EDAC-I5400
1585P: Mauro Carvalho Chehab
1586M: mchehab@redhat.com
1587L: bluesmoke-devel@lists.sourceforge.net
1588W: bluesmoke.sourceforge.net
1589S: Maintained
1590
1584EDAC-I82975X 1591EDAC-I82975X
1585P: Ranganathan Desikan 1592P: Ranganathan Desikan
1586P: Arvind R. 1593P: Arvind R.
@@ -1814,6 +1821,14 @@ M: hch@infradead.org
1814W: ftp://ftp.openlinux.org/pub/people/hch/vxfs 1821W: ftp://ftp.openlinux.org/pub/people/hch/vxfs
1815S: Maintained 1822S: Maintained
1816 1823
1824FREEZER
1825P: Pavel Machek
1826M: pavel@suse.cz
1827P: Rafael J. Wysocki
1828M: rjw@sisk.pl
1829L: linux-pm@lists.linux-foundation.org
1830S: Supported
1831
1817FTRACE 1832FTRACE
1818P: Steven Rostedt 1833P: Steven Rostedt
1819M: rostedt@goodmis.org 1834M: rostedt@goodmis.org
@@ -4842,11 +4857,11 @@ S: Supported
4842 4857
4843XFS FILESYSTEM 4858XFS FILESYSTEM
4844P: Silicon Graphics Inc 4859P: Silicon Graphics Inc
4845P: Tim Shimmin 4860P: Bill O'Donnell
4846M: xfs-masters@oss.sgi.com 4861M: xfs-masters@oss.sgi.com
4847L: xfs@oss.sgi.com 4862L: xfs@oss.sgi.com
4848W: http://oss.sgi.com/projects/xfs 4863W: http://oss.sgi.com/projects/xfs
4849T: git git://oss.sgi.com:8090/xfs/xfs-2.6.git 4864T: git://oss.sgi.com/xfs/xfs.git
4850S: Supported 4865S: Supported
4851 4866
4852XILINX SYSTEMACE DRIVER 4867XILINX SYSTEMACE DRIVER
diff --git a/Makefile b/Makefile
index c2c4bbeef59d..cf9e20dac86e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 29 3SUBLEVEL = 29
4EXTRAVERSION = -rc1 4EXTRAVERSION = -rc2
5NAME = Erotic Pickled Herring 5NAME = Erotic Pickled Herring
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -213,6 +213,10 @@ endif
213# Where to locate arch specific headers 213# Where to locate arch specific headers
214hdr-arch := $(SRCARCH) 214hdr-arch := $(SRCARCH)
215 215
216ifeq ($(ARCH),m68knommu)
217 hdr-arch := m68k
218endif
219
216KCONFIG_CONFIG ?= .config 220KCONFIG_CONFIG ?= .config
217 221
218# SHELL used by kbuild 222# SHELL used by kbuild
diff --git a/arch/Kconfig b/arch/Kconfig
index 2e13aa261929..550dab22daa1 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -62,6 +62,9 @@ config HAVE_EFFICIENT_UNALIGNED_ACCESS
62 See Documentation/unaligned-memory-access.txt for more 62 See Documentation/unaligned-memory-access.txt for more
63 information on the topic of unaligned memory accesses. 63 information on the topic of unaligned memory accesses.
64 64
65config HAVE_SYSCALL_WRAPPERS
66 bool
67
65config KRETPROBES 68config KRETPROBES
66 def_bool y 69 def_bool y
67 depends on KPROBES && HAVE_KRETPROBES 70 depends on KPROBES && HAVE_KRETPROBES
diff --git a/arch/alpha/include/asm/Kbuild b/arch/alpha/include/asm/Kbuild
index 4dad27360576..b7c8f188b313 100644
--- a/arch/alpha/include/asm/Kbuild
+++ b/arch/alpha/include/asm/Kbuild
@@ -9,4 +9,3 @@ unifdef-y += console.h
9unifdef-y += fpu.h 9unifdef-y += fpu.h
10unifdef-y += sysinfo.h 10unifdef-y += sysinfo.h
11unifdef-y += compiler.h 11unifdef-y += compiler.h
12unifdef-y += swab.h
diff --git a/arch/alpha/include/asm/byteorder.h b/arch/alpha/include/asm/byteorder.h
index 6772f3168701..73683093202d 100644
--- a/arch/alpha/include/asm/byteorder.h
+++ b/arch/alpha/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _ALPHA_BYTEORDER_H 1#ifndef _ALPHA_BYTEORDER_H
2#define _ALPHA_BYTEORDER_H 2#define _ALPHA_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/little_endian.h> 4#include <linux/byteorder/little_endian.h>
6 5
7#endif /* _ALPHA_BYTEORDER_H */ 6#endif /* _ALPHA_BYTEORDER_H */
diff --git a/arch/alpha/include/asm/machvec.h b/arch/alpha/include/asm/machvec.h
index a86c083cdf7f..fea4ea75b79d 100644
--- a/arch/alpha/include/asm/machvec.h
+++ b/arch/alpha/include/asm/machvec.h
@@ -21,6 +21,7 @@ struct pci_dev;
21struct pci_ops; 21struct pci_ops;
22struct pci_controller; 22struct pci_controller;
23struct _alpha_agp_info; 23struct _alpha_agp_info;
24struct rtc_time;
24 25
25struct alpha_machine_vector 26struct alpha_machine_vector
26{ 27{
@@ -94,6 +95,9 @@ struct alpha_machine_vector
94 95
95 struct _alpha_agp_info *(*agp_info)(void); 96 struct _alpha_agp_info *(*agp_info)(void);
96 97
98 unsigned int (*rtc_get_time)(struct rtc_time *);
99 int (*rtc_set_time)(struct rtc_time *);
100
97 const char *vector_name; 101 const char *vector_name;
98 102
99 /* NUMA information */ 103 /* NUMA information */
diff --git a/arch/alpha/include/asm/pgalloc.h b/arch/alpha/include/asm/pgalloc.h
index fd090155dccd..bc2a0daf2d92 100644
--- a/arch/alpha/include/asm/pgalloc.h
+++ b/arch/alpha/include/asm/pgalloc.h
@@ -50,7 +50,12 @@ pmd_free(struct mm_struct *mm, pmd_t *pmd)
50 free_page((unsigned long)pmd); 50 free_page((unsigned long)pmd);
51} 51}
52 52
53extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr); 53static inline pte_t *
54pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
55{
56 pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
57 return pte;
58}
54 59
55static inline void 60static inline void
56pte_free_kernel(struct mm_struct *mm, pte_t *pte) 61pte_free_kernel(struct mm_struct *mm, pte_t *pte)
diff --git a/arch/alpha/include/asm/rtc.h b/arch/alpha/include/asm/rtc.h
index 4e854b1333eb..1f7fba671ae6 100644
--- a/arch/alpha/include/asm/rtc.h
+++ b/arch/alpha/include/asm/rtc.h
@@ -1,9 +1,15 @@
1#ifndef _ALPHA_RTC_H 1#ifndef _ALPHA_RTC_H
2#define _ALPHA_RTC_H 2#define _ALPHA_RTC_H
3 3
4/* 4#if defined(CONFIG_ALPHA_GENERIC)
5 * Alpha uses the default access methods for the RTC. 5# define get_rtc_time alpha_mv.rtc_get_time
6 */ 6# define set_rtc_time alpha_mv.rtc_set_time
7#else
8# if defined(CONFIG_ALPHA_MARVEL) && defined(CONFIG_SMP)
9# define get_rtc_time marvel_get_rtc_time
10# define set_rtc_time marvel_set_rtc_time
11# endif
12#endif
7 13
8#include <asm-generic/rtc.h> 14#include <asm-generic/rtc.h>
9 15
diff --git a/arch/alpha/kernel/.gitignore b/arch/alpha/kernel/.gitignore
new file mode 100644
index 000000000000..c5f676c3c224
--- /dev/null
+++ b/arch/alpha/kernel/.gitignore
@@ -0,0 +1 @@
vmlinux.lds
diff --git a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c
index 9cd8dca742a7..e302daecbe56 100644
--- a/arch/alpha/kernel/core_marvel.c
+++ b/arch/alpha/kernel/core_marvel.c
@@ -658,16 +658,8 @@ __marvel_rtc_io(u8 b, unsigned long addr, int write)
658 rtc_access.data = bcd2bin(b); 658 rtc_access.data = bcd2bin(b);
659 rtc_access.function = 0x48 + !write; /* GET/PUT_TOY */ 659 rtc_access.function = 0x48 + !write; /* GET/PUT_TOY */
660 660
661#ifdef CONFIG_SMP
662 if (smp_processor_id() != boot_cpuid)
663 smp_call_function_single(boot_cpuid,
664 __marvel_access_rtc,
665 &rtc_access, 1);
666 else
667 __marvel_access_rtc(&rtc_access);
668#else
669 __marvel_access_rtc(&rtc_access); 661 __marvel_access_rtc(&rtc_access);
670#endif 662
671 ret = bin2bcd(rtc_access.data); 663 ret = bin2bcd(rtc_access.data);
672 break; 664 break;
673 665
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
index f77345bc66a9..aa2e50cf9857 100644
--- a/arch/alpha/kernel/entry.S
+++ b/arch/alpha/kernel/entry.S
@@ -896,9 +896,9 @@ sys_getxpid:
896.end sys_getxpid 896.end sys_getxpid
897 897
898 .align 4 898 .align 4
899 .globl sys_pipe 899 .globl sys_alpha_pipe
900 .ent sys_pipe 900 .ent sys_alpha_pipe
901sys_pipe: 901sys_alpha_pipe:
902 lda $sp, -16($sp) 902 lda $sp, -16($sp)
903 stq $26, 0($sp) 903 stq $26, 0($sp)
904 .prologue 0 904 .prologue 0
@@ -916,7 +916,7 @@ sys_pipe:
916 stq $1, 80+16($sp) 916 stq $1, 80+16($sp)
9171: lda $sp, 16($sp) 9171: lda $sp, 16($sp)
918 ret 918 ret
919.end sys_pipe 919.end sys_alpha_pipe
920 920
921 .align 4 921 .align 4
922 .globl sys_execve 922 .globl sys_execve
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c
index 32212014fbe9..a03fbca4940e 100644
--- a/arch/alpha/kernel/irq_srm.c
+++ b/arch/alpha/kernel/irq_srm.c
@@ -63,6 +63,8 @@ init_srm_irqs(long max, unsigned long ignore_mask)
63{ 63{
64 long i; 64 long i;
65 65
66 if (NR_IRQS <= 16)
67 return;
66 for (i = 16; i < max; ++i) { 68 for (i = 16; i < max; ++i) {
67 if (i < 64 && ((ignore_mask >> i) & 1)) 69 if (i < 64 && ((ignore_mask >> i) & 1))
68 continue; 70 continue;
diff --git a/arch/alpha/kernel/machvec_impl.h b/arch/alpha/kernel/machvec_impl.h
index 466c9dff8181..512685f78097 100644
--- a/arch/alpha/kernel/machvec_impl.h
+++ b/arch/alpha/kernel/machvec_impl.h
@@ -40,7 +40,10 @@
40#define CAT1(x,y) x##y 40#define CAT1(x,y) x##y
41#define CAT(x,y) CAT1(x,y) 41#define CAT(x,y) CAT1(x,y)
42 42
43#define DO_DEFAULT_RTC .rtc_port = 0x70 43#define DO_DEFAULT_RTC \
44 .rtc_port = 0x70, \
45 .rtc_get_time = common_get_rtc_time, \
46 .rtc_set_time = common_set_rtc_time
44 47
45#define DO_EV4_MMU \ 48#define DO_EV4_MMU \
46 .max_asn = EV4_MAX_ASN, \ 49 .max_asn = EV4_MAX_ASN, \
diff --git a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h
index 708d5ca87782..fe14c6747cd6 100644
--- a/arch/alpha/kernel/proto.h
+++ b/arch/alpha/kernel/proto.h
@@ -145,6 +145,8 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *);
145extern irqreturn_t timer_interrupt(int irq, void *dev); 145extern irqreturn_t timer_interrupt(int irq, void *dev);
146extern void common_init_rtc(void); 146extern void common_init_rtc(void);
147extern unsigned long est_cycle_freq; 147extern unsigned long est_cycle_freq;
148extern unsigned int common_get_rtc_time(struct rtc_time *time);
149extern int common_set_rtc_time(struct rtc_time *time);
148 150
149/* smc37c93x.c */ 151/* smc37c93x.c */
150extern void SMC93x_Init(void); 152extern void SMC93x_Init(void);
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c
index 2c3de97de46c..e2516f9a8967 100644
--- a/arch/alpha/kernel/sys_jensen.c
+++ b/arch/alpha/kernel/sys_jensen.c
@@ -261,6 +261,8 @@ struct alpha_machine_vector jensen_mv __initmv = {
261 .machine_check = jensen_machine_check, 261 .machine_check = jensen_machine_check,
262 .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS, 262 .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS,
263 .rtc_port = 0x170, 263 .rtc_port = 0x170,
264 .rtc_get_time = common_get_rtc_time,
265 .rtc_set_time = common_set_rtc_time,
264 266
265 .nr_irqs = 16, 267 .nr_irqs = 16,
266 .device_interrupt = jensen_device_interrupt, 268 .device_interrupt = jensen_device_interrupt,
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c
index 828449cd2636..c5a1a2438c67 100644
--- a/arch/alpha/kernel/sys_marvel.c
+++ b/arch/alpha/kernel/sys_marvel.c
@@ -23,6 +23,7 @@
23#include <asm/hwrpb.h> 23#include <asm/hwrpb.h>
24#include <asm/tlbflush.h> 24#include <asm/tlbflush.h>
25#include <asm/vga.h> 25#include <asm/vga.h>
26#include <asm/rtc.h>
26 27
27#include "proto.h" 28#include "proto.h"
28#include "err_impl.h" 29#include "err_impl.h"
@@ -426,6 +427,57 @@ marvel_init_rtc(void)
426 init_rtc_irq(); 427 init_rtc_irq();
427} 428}
428 429
430struct marvel_rtc_time {
431 struct rtc_time *time;
432 int retval;
433};
434
435#ifdef CONFIG_SMP
436static void
437smp_get_rtc_time(void *data)
438{
439 struct marvel_rtc_time *mrt = data;
440 mrt->retval = __get_rtc_time(mrt->time);
441}
442
443static void
444smp_set_rtc_time(void *data)
445{
446 struct marvel_rtc_time *mrt = data;
447 mrt->retval = __set_rtc_time(mrt->time);
448}
449#endif
450
451static unsigned int
452marvel_get_rtc_time(struct rtc_time *time)
453{
454#ifdef CONFIG_SMP
455 struct marvel_rtc_time mrt;
456
457 if (smp_processor_id() != boot_cpuid) {
458 mrt.time = time;
459 smp_call_function_single(boot_cpuid, smp_get_rtc_time, &mrt, 1);
460 return mrt.retval;
461 }
462#endif
463 return __get_rtc_time(time);
464}
465
466static int
467marvel_set_rtc_time(struct rtc_time *time)
468{
469#ifdef CONFIG_SMP
470 struct marvel_rtc_time mrt;
471
472 if (smp_processor_id() != boot_cpuid) {
473 mrt.time = time;
474 smp_call_function_single(boot_cpuid, smp_set_rtc_time, &mrt, 1);
475 return mrt.retval;
476 }
477#endif
478 return __set_rtc_time(time);
479}
480
429static void 481static void
430marvel_smp_callin(void) 482marvel_smp_callin(void)
431{ 483{
@@ -466,7 +518,9 @@ marvel_smp_callin(void)
466struct alpha_machine_vector marvel_ev7_mv __initmv = { 518struct alpha_machine_vector marvel_ev7_mv __initmv = {
467 .vector_name = "MARVEL/EV7", 519 .vector_name = "MARVEL/EV7",
468 DO_EV7_MMU, 520 DO_EV7_MMU,
469 DO_DEFAULT_RTC, 521 .rtc_port = 0x70,
522 .rtc_get_time = marvel_get_rtc_time,
523 .rtc_set_time = marvel_set_rtc_time,
470 DO_MARVEL_IO, 524 DO_MARVEL_IO,
471 .machine_check = marvel_machine_check, 525 .machine_check = marvel_machine_check,
472 .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS, 526 .max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS,
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c
index a7f23b5ab814..99c0f46f6b9c 100644
--- a/arch/alpha/kernel/sys_nautilus.c
+++ b/arch/alpha/kernel/sys_nautilus.c
@@ -245,6 +245,10 @@ nautilus_init_pci(void)
245 IRONGATE0->pci_mem = pci_mem; 245 IRONGATE0->pci_mem = pci_mem;
246 246
247 pci_bus_assign_resources(bus); 247 pci_bus_assign_resources(bus);
248
249 /* pci_common_swizzle() relies on bus->self being NULL
250 for the root bus, so just clear it. */
251 bus->self = NULL;
248 pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq); 252 pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq);
249} 253}
250 254
diff --git a/arch/alpha/kernel/systbls.S b/arch/alpha/kernel/systbls.S
index ba914af18c4f..9d9e3a98bb95 100644
--- a/arch/alpha/kernel/systbls.S
+++ b/arch/alpha/kernel/systbls.S
@@ -52,7 +52,7 @@ sys_call_table:
52 .quad sys_setpgid 52 .quad sys_setpgid
53 .quad alpha_ni_syscall /* 40 */ 53 .quad alpha_ni_syscall /* 40 */
54 .quad sys_dup 54 .quad sys_dup
55 .quad sys_pipe 55 .quad sys_alpha_pipe
56 .quad osf_set_program_attributes 56 .quad osf_set_program_attributes
57 .quad alpha_ni_syscall 57 .quad alpha_ni_syscall
58 .quad sys_open /* 45 */ 58 .quad sys_open /* 45 */
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index e6a231435cba..b04e2cbf23a4 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -46,6 +46,7 @@
46#include <asm/io.h> 46#include <asm/io.h>
47#include <asm/hwrpb.h> 47#include <asm/hwrpb.h>
48#include <asm/8253pit.h> 48#include <asm/8253pit.h>
49#include <asm/rtc.h>
49 50
50#include <linux/mc146818rtc.h> 51#include <linux/mc146818rtc.h>
51#include <linux/time.h> 52#include <linux/time.h>
@@ -180,6 +181,15 @@ common_init_rtc(void)
180 init_rtc_irq(); 181 init_rtc_irq();
181} 182}
182 183
184unsigned int common_get_rtc_time(struct rtc_time *time)
185{
186 return __get_rtc_time(time);
187}
188
189int common_set_rtc_time(struct rtc_time *time)
190{
191 return __set_rtc_time(time);
192}
183 193
184/* Validate a computed cycle counter result against the known bounds for 194/* Validate a computed cycle counter result against the known bounds for
185 the given processor core. There's too much brokenness in the way of 195 the given processor core. There's too much brokenness in the way of
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
index 234e42b8ee74..5d7a16eab312 100644
--- a/arch/alpha/mm/init.c
+++ b/arch/alpha/mm/init.c
@@ -59,13 +59,6 @@ pgd_alloc(struct mm_struct *mm)
59 return ret; 59 return ret;
60} 60}
61 61
62pte_t *
63pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
64{
65 pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
66 return pte;
67}
68
69 62
70/* 63/*
71 * BAD_PAGE is the page that is used for page faults when linux 64 * BAD_PAGE is the page that is used for page faults when linux
diff --git a/arch/arm/include/asm/Kbuild b/arch/arm/include/asm/Kbuild
index 43b0b2ba392f..73237bd130a2 100644
--- a/arch/arm/include/asm/Kbuild
+++ b/arch/arm/include/asm/Kbuild
@@ -1,4 +1,3 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2 2
3unifdef-y += hwcap.h 3unifdef-y += hwcap.h
4unifdef-y += swab.h
diff --git a/arch/arm/include/asm/byteorder.h b/arch/arm/include/asm/byteorder.h
index c02b6fc28e1a..77379748b171 100644
--- a/arch/arm/include/asm/byteorder.h
+++ b/arch/arm/include/asm/byteorder.h
@@ -15,8 +15,6 @@
15#ifndef __ASM_ARM_BYTEORDER_H 15#ifndef __ASM_ARM_BYTEORDER_H
16#define __ASM_ARM_BYTEORDER_H 16#define __ASM_ARM_BYTEORDER_H
17 17
18#include <asm/swab.h>
19
20#ifdef __ARMEB__ 18#ifdef __ARMEB__
21#include <linux/byteorder/big_endian.h> 19#include <linux/byteorder/big_endian.h>
22#else 20#else
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
index 09a061cb7838..9ca8d13f05f7 100644
--- a/arch/arm/kernel/calls.S
+++ b/arch/arm/kernel/calls.S
@@ -98,7 +98,7 @@
98 CALL(sys_uselib) 98 CALL(sys_uselib)
99 CALL(sys_swapon) 99 CALL(sys_swapon)
100 CALL(sys_reboot) 100 CALL(sys_reboot)
101 CALL(OBSOLETE(old_readdir)) /* used by libc4 */ 101 CALL(OBSOLETE(sys_old_readdir)) /* used by libc4 */
102/* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */ 102/* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */
103 CALL(sys_munmap) 103 CALL(sys_munmap)
104 CALL(sys_truncate) 104 CALL(sys_truncate)
diff --git a/arch/arm/plat-mxc/include/mach/ipu.h b/arch/arm/plat-mxc/include/mach/ipu.h
new file mode 100644
index 000000000000..a9221f1cc1a0
--- /dev/null
+++ b/arch/arm/plat-mxc/include/mach/ipu.h
@@ -0,0 +1,181 @@
1/*
2 * Copyright (C) 2008
3 * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de>
4 *
5 * Copyright (C) 2005-2007 Freescale Semiconductor, Inc.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#ifndef _IPU_H_
13#define _IPU_H_
14
15#include <linux/types.h>
16#include <linux/dmaengine.h>
17
18/* IPU DMA Controller channel definitions. */
19enum ipu_channel {
20 IDMAC_IC_0 = 0, /* IC (encoding task) to memory */
21 IDMAC_IC_1 = 1, /* IC (viewfinder task) to memory */
22 IDMAC_ADC_0 = 1,
23 IDMAC_IC_2 = 2,
24 IDMAC_ADC_1 = 2,
25 IDMAC_IC_3 = 3,
26 IDMAC_IC_4 = 4,
27 IDMAC_IC_5 = 5,
28 IDMAC_IC_6 = 6,
29 IDMAC_IC_7 = 7, /* IC (sensor data) to memory */
30 IDMAC_IC_8 = 8,
31 IDMAC_IC_9 = 9,
32 IDMAC_IC_10 = 10,
33 IDMAC_IC_11 = 11,
34 IDMAC_IC_12 = 12,
35 IDMAC_IC_13 = 13,
36 IDMAC_SDC_0 = 14, /* Background synchronous display data */
37 IDMAC_SDC_1 = 15, /* Foreground data (overlay) */
38 IDMAC_SDC_2 = 16,
39 IDMAC_SDC_3 = 17,
40 IDMAC_ADC_2 = 18,
41 IDMAC_ADC_3 = 19,
42 IDMAC_ADC_4 = 20,
43 IDMAC_ADC_5 = 21,
44 IDMAC_ADC_6 = 22,
45 IDMAC_ADC_7 = 23,
46 IDMAC_PF_0 = 24,
47 IDMAC_PF_1 = 25,
48 IDMAC_PF_2 = 26,
49 IDMAC_PF_3 = 27,
50 IDMAC_PF_4 = 28,
51 IDMAC_PF_5 = 29,
52 IDMAC_PF_6 = 30,
53 IDMAC_PF_7 = 31,
54};
55
56/* Order significant! */
57enum ipu_channel_status {
58 IPU_CHANNEL_FREE,
59 IPU_CHANNEL_INITIALIZED,
60 IPU_CHANNEL_READY,
61 IPU_CHANNEL_ENABLED,
62};
63
64#define IPU_CHANNELS_NUM 32
65
66enum pixel_fmt {
67 /* 1 byte */
68 IPU_PIX_FMT_GENERIC,
69 IPU_PIX_FMT_RGB332,
70 IPU_PIX_FMT_YUV420P,
71 IPU_PIX_FMT_YUV422P,
72 IPU_PIX_FMT_YUV420P2,
73 IPU_PIX_FMT_YVU422P,
74 /* 2 bytes */
75 IPU_PIX_FMT_RGB565,
76 IPU_PIX_FMT_RGB666,
77 IPU_PIX_FMT_BGR666,
78 IPU_PIX_FMT_YUYV,
79 IPU_PIX_FMT_UYVY,
80 /* 3 bytes */
81 IPU_PIX_FMT_RGB24,
82 IPU_PIX_FMT_BGR24,
83 /* 4 bytes */
84 IPU_PIX_FMT_GENERIC_32,
85 IPU_PIX_FMT_RGB32,
86 IPU_PIX_FMT_BGR32,
87 IPU_PIX_FMT_ABGR32,
88 IPU_PIX_FMT_BGRA32,
89 IPU_PIX_FMT_RGBA32,
90};
91
92enum ipu_color_space {
93 IPU_COLORSPACE_RGB,
94 IPU_COLORSPACE_YCBCR,
95 IPU_COLORSPACE_YUV
96};
97
98/*
99 * Enumeration of IPU rotation modes
100 */
101enum ipu_rotate_mode {
102 /* Note the enum values correspond to BAM value */
103 IPU_ROTATE_NONE = 0,
104 IPU_ROTATE_VERT_FLIP = 1,
105 IPU_ROTATE_HORIZ_FLIP = 2,
106 IPU_ROTATE_180 = 3,
107 IPU_ROTATE_90_RIGHT = 4,
108 IPU_ROTATE_90_RIGHT_VFLIP = 5,
109 IPU_ROTATE_90_RIGHT_HFLIP = 6,
110 IPU_ROTATE_90_LEFT = 7,
111};
112
113struct ipu_platform_data {
114 unsigned int irq_base;
115};
116
117/*
118 * Enumeration of DI ports for ADC.
119 */
120enum display_port {
121 DISP0,
122 DISP1,
123 DISP2,
124 DISP3
125};
126
127struct idmac_video_param {
128 unsigned short in_width;
129 unsigned short in_height;
130 uint32_t in_pixel_fmt;
131 unsigned short out_width;
132 unsigned short out_height;
133 uint32_t out_pixel_fmt;
134 unsigned short out_stride;
135 bool graphics_combine_en;
136 bool global_alpha_en;
137 bool key_color_en;
138 enum display_port disp;
139 unsigned short out_left;
140 unsigned short out_top;
141};
142
143/*
144 * Union of initialization parameters for a logical channel. So far only video
145 * parameters are used.
146 */
147union ipu_channel_param {
148 struct idmac_video_param video;
149};
150
151struct idmac_tx_desc {
152 struct dma_async_tx_descriptor txd;
153 struct scatterlist *sg; /* scatterlist for this */
154 unsigned int sg_len; /* tx-descriptor. */
155 struct list_head list;
156};
157
158struct idmac_channel {
159 struct dma_chan dma_chan;
160 dma_cookie_t completed; /* last completed cookie */
161 union ipu_channel_param params;
162 enum ipu_channel link; /* input channel, linked to the output */
163 enum ipu_channel_status status;
164 void *client; /* Only one client per channel */
165 unsigned int n_tx_desc;
166 struct idmac_tx_desc *desc; /* allocated tx-descriptors */
167 struct scatterlist *sg[2]; /* scatterlist elements in buffer-0 and -1 */
168 struct list_head free_list; /* free tx-descriptors */
169 struct list_head queue; /* queued tx-descriptors */
170 spinlock_t lock; /* protects sg[0,1], queue */
171 struct mutex chan_mutex; /* protects status, cookie, free_list */
172 bool sec_chan_en;
173 int active_buffer;
174 unsigned int eof_irq;
175 char eof_name[16]; /* EOF IRQ name for request_irq() */
176};
177
178#define to_tx_desc(tx) container_of(tx, struct idmac_tx_desc, txd)
179#define to_idmac_chan(c) container_of(c, struct idmac_channel, dma_chan)
180
181#endif
diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h
index e06d3cb0ee11..c02b8fc2d821 100644
--- a/arch/arm/plat-mxc/include/mach/irqs.h
+++ b/arch/arm/plat-mxc/include/mach/irqs.h
@@ -35,7 +35,15 @@
35#define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS) 35#define MXC_BOARD_IRQ_START (MXC_INTERNAL_IRQS + MXC_GPIO_IRQS)
36#define MXC_BOARD_IRQS 16 36#define MXC_BOARD_IRQS 16
37 37
38#define NR_IRQS (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS) 38#define MXC_IPU_IRQ_START (MXC_BOARD_IRQ_START + MXC_BOARD_IRQS)
39
40#ifdef CONFIG_MX3_IPU_IRQS
41#define MX3_IPU_IRQS CONFIG_MX3_IPU_IRQS
42#else
43#define MX3_IPU_IRQS 0
44#endif
45
46#define NR_IRQS (MXC_IPU_IRQ_START + MX3_IPU_IRQS)
39 47
40extern void imx_irq_set_priority(unsigned char irq, unsigned char prio); 48extern void imx_irq_set_priority(unsigned char irq, unsigned char prio);
41 49
diff --git a/arch/arm/plat-mxc/include/mach/mx3fb.h b/arch/arm/plat-mxc/include/mach/mx3fb.h
new file mode 100644
index 000000000000..e391a76ca87d
--- /dev/null
+++ b/arch/arm/plat-mxc/include/mach/mx3fb.h
@@ -0,0 +1,38 @@
1/*
2 * Copyright (C) 2008
3 * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10#ifndef __ASM_ARCH_MX3FB_H__
11#define __ASM_ARCH_MX3FB_H__
12
13#include <linux/device.h>
14#include <linux/fb.h>
15
16/* Proprietary FB_SYNC_ flags */
17#define FB_SYNC_OE_ACT_HIGH 0x80000000
18#define FB_SYNC_CLK_INVERT 0x40000000
19#define FB_SYNC_DATA_INVERT 0x20000000
20#define FB_SYNC_CLK_IDLE_EN 0x10000000
21#define FB_SYNC_SHARP_MODE 0x08000000
22#define FB_SYNC_SWAP_RGB 0x04000000
23#define FB_SYNC_CLK_SEL_EN 0x02000000
24
25/**
26 * struct mx3fb_platform_data - mx3fb platform data
27 *
28 * @dma_dev: pointer to the dma-device, used for dma-slave connection
29 * @mode: pointer to a platform-provided per mxc_register_fb() videomode
30 */
31struct mx3fb_platform_data {
32 struct device *dma_dev;
33 const char *name;
34 const struct fb_videomode *mode;
35 int num_modes;
36};
37
38#endif
diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild
index 219822c8ad18..3136628ba8d2 100644
--- a/arch/avr32/include/asm/Kbuild
+++ b/arch/avr32/include/asm/Kbuild
@@ -1,4 +1,3 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2 2
3header-y += swab.h
4header-y += cachectl.h 3header-y += cachectl.h
diff --git a/arch/avr32/include/asm/byteorder.h b/arch/avr32/include/asm/byteorder.h
index 2aba64b4e122..50abc21619a8 100644
--- a/arch/avr32/include/asm/byteorder.h
+++ b/arch/avr32/include/asm/byteorder.h
@@ -4,7 +4,6 @@
4#ifndef __ASM_AVR32_BYTEORDER_H 4#ifndef __ASM_AVR32_BYTEORDER_H
5#define __ASM_AVR32_BYTEORDER_H 5#define __ASM_AVR32_BYTEORDER_H
6 6
7#include <asm/swab.h>
8#include <linux/byteorder/big_endian.h> 7#include <linux/byteorder/big_endian.h>
9 8
10#endif /* __ASM_AVR32_BYTEORDER_H */ 9#endif /* __ASM_AVR32_BYTEORDER_H */
diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild
index d0d1ac435544..606ecfdcc962 100644
--- a/arch/blackfin/include/asm/Kbuild
+++ b/arch/blackfin/include/asm/Kbuild
@@ -1,4 +1,3 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2 2
3unifdef-y += fixed_code.h 3unifdef-y += fixed_code.h
4unifdef-y += swab.h
diff --git a/arch/blackfin/include/asm/byteorder.h b/arch/blackfin/include/asm/byteorder.h
index b9e797a497b4..3e69106a4d37 100644
--- a/arch/blackfin/include/asm/byteorder.h
+++ b/arch/blackfin/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _BLACKFIN_BYTEORDER_H 1#ifndef _BLACKFIN_BYTEORDER_H
2#define _BLACKFIN_BYTEORDER_H 2#define _BLACKFIN_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/little_endian.h> 4#include <linux/byteorder/little_endian.h>
6 5
7#endif /* _BLACKFIN_BYTEORDER_H */ 6#endif /* _BLACKFIN_BYTEORDER_H */
diff --git a/arch/cris/arch-v10/kernel/entry.S b/arch/cris/arch-v10/kernel/entry.S
index ed171d389e65..72f5cd319b97 100644
--- a/arch/cris/arch-v10/kernel/entry.S
+++ b/arch/cris/arch-v10/kernel/entry.S
@@ -691,7 +691,7 @@ sys_call_table:
691 .long sys_uselib 691 .long sys_uselib
692 .long sys_swapon 692 .long sys_swapon
693 .long sys_reboot 693 .long sys_reboot
694 .long old_readdir 694 .long sys_old_readdir
695 .long old_mmap /* 90 */ 695 .long old_mmap /* 90 */
696 .long sys_munmap 696 .long sys_munmap
697 .long sys_truncate 697 .long sys_truncate
diff --git a/arch/cris/arch-v32/kernel/entry.S b/arch/cris/arch-v32/kernel/entry.S
index 7f6f93e6b70e..5e674c8f7c51 100644
--- a/arch/cris/arch-v32/kernel/entry.S
+++ b/arch/cris/arch-v32/kernel/entry.S
@@ -614,7 +614,7 @@ sys_call_table:
614 .long sys_uselib 614 .long sys_uselib
615 .long sys_swapon 615 .long sys_swapon
616 .long sys_reboot 616 .long sys_reboot
617 .long old_readdir 617 .long sys_old_readdir
618 .long old_mmap /* 90 */ 618 .long old_mmap /* 90 */
619 .long sys_munmap 619 .long sys_munmap
620 .long sys_truncate 620 .long sys_truncate
diff --git a/arch/cris/include/arch-v10/arch/byteorder.h b/arch/cris/include/arch-v10/arch/swab.h
index 255b646b7fa8..e4e847d8a05e 100644
--- a/arch/cris/include/arch-v10/arch/byteorder.h
+++ b/arch/cris/include/arch-v10/arch/swab.h
@@ -1,26 +1,30 @@
1#ifndef _CRIS_ARCH_BYTEORDER_H 1#ifndef _CRIS_ARCH_SWAB_H
2#define _CRIS_ARCH_BYTEORDER_H 2#define _CRIS_ARCH_SWAB_H
3 3
4#include <asm/types.h> 4#include <asm/types.h>
5#include <linux/compiler.h> 5#include <linux/compiler.h>
6 6
7#define __SWAB_64_THRU_32__
8
7/* we just define these two (as we can do the swap in a single 9/* we just define these two (as we can do the swap in a single
8 * asm instruction in CRIS) and the arch-independent files will put 10 * asm instruction in CRIS) and the arch-independent files will put
9 * them together into ntohl etc. 11 * them together into ntohl etc.
10 */ 12 */
11 13
12static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) 14static inline __attribute_const__ __u32 __arch_swab32(__u32 x)
13{ 15{
14 __asm__ ("swapwb %0" : "=r" (x) : "0" (x)); 16 __asm__ ("swapwb %0" : "=r" (x) : "0" (x));
15 17
16 return(x); 18 return(x);
17} 19}
20#define __arch_swab32 __arch_swab32
18 21
19static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) 22static inline __attribute_const__ __u16 __arch_swab16(__u16 x)
20{ 23{
21 __asm__ ("swapb %0" : "=r" (x) : "0" (x)); 24 __asm__ ("swapb %0" : "=r" (x) : "0" (x));
22 25
23 return(x); 26 return(x);
24} 27}
28#define __arch_swab16 __arch_swab16
25 29
26#endif 30#endif
diff --git a/arch/cris/include/arch-v32/arch/byteorder.h b/arch/cris/include/arch-v32/arch/byteorder.h
deleted file mode 100644
index 6ef8fb4a35f2..000000000000
--- a/arch/cris/include/arch-v32/arch/byteorder.h
+++ /dev/null
@@ -1,20 +0,0 @@
1#ifndef _ASM_CRIS_ARCH_BYTEORDER_H
2#define _ASM_CRIS_ARCH_BYTEORDER_H
3
4#include <asm/types.h>
5
6static inline __const__ __u32
7___arch__swab32(__u32 x)
8{
9 __asm__ __volatile__ ("swapwb %0" : "=r" (x) : "0" (x));
10 return (x);
11}
12
13static inline __const__ __u16
14___arch__swab16(__u16 x)
15{
16 __asm__ __volatile__ ("swapb %0" : "=r" (x) : "0" (x));
17 return (x);
18}
19
20#endif /* _ASM_CRIS_ARCH_BYTEORDER_H */
diff --git a/arch/cris/include/arch-v32/arch/swab.h b/arch/cris/include/arch-v32/arch/swab.h
new file mode 100644
index 000000000000..9a4ea5e209c2
--- /dev/null
+++ b/arch/cris/include/arch-v32/arch/swab.h
@@ -0,0 +1,24 @@
1#ifndef _ASM_CRIS_ARCH_SWAB_H
2#define _ASM_CRIS_ARCH_SWAB_H
3
4#include <asm/types.h>
5
6#define __SWAB_64_THRU_32__
7
8static inline __const__ __u32
9__arch_swab32(__u32 x)
10{
11 __asm__ __volatile__ ("swapwb %0" : "=r" (x) : "0" (x));
12 return (x);
13}
14#define __arch_swab32 __arch_swab32
15
16static inline __const__ __u16
17__arch_swab16(__u16 x)
18{
19 __asm__ __volatile__ ("swapb %0" : "=r" (x) : "0" (x));
20 return (x);
21}
22#define __arch_swab16 __arch_swab16
23
24#endif /* _ASM_CRIS_ARCH_SWAB_H */
diff --git a/arch/cris/include/asm/byteorder.h b/arch/cris/include/asm/byteorder.h
index cc8e418cfd14..bcd189798e26 100644
--- a/arch/cris/include/asm/byteorder.h
+++ b/arch/cris/include/asm/byteorder.h
@@ -1,25 +1,6 @@
1#ifndef _CRIS_BYTEORDER_H 1#ifndef _CRIS_BYTEORDER_H
2#define _CRIS_BYTEORDER_H 2#define _CRIS_BYTEORDER_H
3 3
4#ifdef __GNUC__
5
6#ifdef __KERNEL__
7#include <arch/byteorder.h>
8
9/* defines are necessary because the other files detect the presence
10 * of a defined __arch_swab32, not an inline
11 */
12#define __arch__swab32(x) ___arch__swab32(x)
13#define __arch__swab16(x) ___arch__swab16(x)
14#endif /* __KERNEL__ */
15
16#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
17# define __BYTEORDER_HAS_U64__
18# define __SWAB_64_THRU_32__
19#endif
20
21#endif /* __GNUC__ */
22
23#include <linux/byteorder/little_endian.h> 4#include <linux/byteorder/little_endian.h>
24 5
25#endif 6#endif
diff --git a/arch/cris/include/asm/swab.h b/arch/cris/include/asm/swab.h
new file mode 100644
index 000000000000..80668e88419c
--- /dev/null
+++ b/arch/cris/include/asm/swab.h
@@ -0,0 +1,8 @@
1#ifndef _CRIS_SWAB_H
2#define _CRIS_SWAB_H
3
4#ifdef __KERNEL__
5#include <arch/swab.h>
6#endif /* __KERNEL__ */
7
8#endif /* _CRIS_SWAB_H */
diff --git a/arch/h8300/include/asm/Kbuild b/arch/h8300/include/asm/Kbuild
index 27b108a86b39..c68e1680da01 100644
--- a/arch/h8300/include/asm/Kbuild
+++ b/arch/h8300/include/asm/Kbuild
@@ -1,2 +1 @@
1include include/asm-generic/Kbuild.asm include include/asm-generic/Kbuild.asm
2unifdef-y += swab.h
diff --git a/arch/h8300/include/asm/byteorder.h b/arch/h8300/include/asm/byteorder.h
index c36b80a3dd84..13539da99efd 100644
--- a/arch/h8300/include/asm/byteorder.h
+++ b/arch/h8300/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _H8300_BYTEORDER_H 1#ifndef _H8300_BYTEORDER_H
2#define _H8300_BYTEORDER_H 2#define _H8300_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/big_endian.h> 4#include <linux/byteorder/big_endian.h>
6 5
7#endif /* _H8300_BYTEORDER_H */ 6#endif /* _H8300_BYTEORDER_H */
diff --git a/arch/h8300/kernel/syscalls.S b/arch/h8300/kernel/syscalls.S
index 54e21c3f2057..4eb67faac633 100644
--- a/arch/h8300/kernel/syscalls.S
+++ b/arch/h8300/kernel/syscalls.S
@@ -103,7 +103,7 @@ SYMBOL_NAME_LABEL(sys_call_table)
103 .long SYMBOL_NAME(sys_uselib) 103 .long SYMBOL_NAME(sys_uselib)
104 .long SYMBOL_NAME(sys_swapon) 104 .long SYMBOL_NAME(sys_swapon)
105 .long SYMBOL_NAME(sys_reboot) 105 .long SYMBOL_NAME(sys_reboot)
106 .long SYMBOL_NAME(old_readdir) 106 .long SYMBOL_NAME(sys_old_readdir)
107 .long SYMBOL_NAME(old_mmap) /* 90 */ 107 .long SYMBOL_NAME(old_mmap) /* 90 */
108 .long SYMBOL_NAME(sys_munmap) 108 .long SYMBOL_NAME(sys_munmap)
109 .long SYMBOL_NAME(sys_truncate) 109 .long SYMBOL_NAME(sys_truncate)
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 3d31636cbafb..6183aeccecf1 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -17,6 +17,7 @@ config IA64
17 select ACPI if (!IA64_HP_SIM) 17 select ACPI if (!IA64_HP_SIM)
18 select PM if (!IA64_HP_SIM) 18 select PM if (!IA64_HP_SIM)
19 select ARCH_SUPPORTS_MSI 19 select ARCH_SUPPORTS_MSI
20 select HAVE_UNSTABLE_SCHED_CLOCK
20 select HAVE_IDE 21 select HAVE_IDE
21 select HAVE_OPROFILE 22 select HAVE_OPROFILE
22 select HAVE_KPROBES 23 select HAVE_KPROBES
diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig
index 27eb67604c53..a109db30ce55 100644
--- a/arch/ia64/configs/generic_defconfig
+++ b/arch/ia64/configs/generic_defconfig
@@ -578,7 +578,7 @@ CONFIG_ATA_PIIX=y
578# CONFIG_SATA_SIS is not set 578# CONFIG_SATA_SIS is not set
579# CONFIG_SATA_ULI is not set 579# CONFIG_SATA_ULI is not set
580# CONFIG_SATA_VIA is not set 580# CONFIG_SATA_VIA is not set
581# CONFIG_SATA_VITESSE is not set 581CONFIG_SATA_VITESSE=y
582# CONFIG_SATA_INIC162X is not set 582# CONFIG_SATA_INIC162X is not set
583# CONFIG_PATA_ACPI is not set 583# CONFIG_PATA_ACPI is not set
584# CONFIG_PATA_ALI is not set 584# CONFIG_PATA_ALI is not set
diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
index a8cf19958850..a46f8395e9a5 100644
--- a/arch/ia64/ia32/ia32_entry.S
+++ b/arch/ia64/ia32/ia32_entry.S
@@ -220,7 +220,7 @@ ia32_syscall_table:
220 data8 sys_mkdir 220 data8 sys_mkdir
221 data8 sys_rmdir /* 40 */ 221 data8 sys_rmdir /* 40 */
222 data8 sys_dup 222 data8 sys_dup
223 data8 sys_pipe 223 data8 sys_ia64_pipe
224 data8 compat_sys_times 224 data8 compat_sys_times
225 data8 sys_ni_syscall /* old prof syscall holder */ 225 data8 sys_ni_syscall /* old prof syscall holder */
226 data8 sys32_brk /* 45 */ 226 data8 sys32_brk /* 45 */
diff --git a/arch/ia64/include/asm/Kbuild b/arch/ia64/include/asm/Kbuild
index 3b25bd9dca91..ccbe8ae47a61 100644
--- a/arch/ia64/include/asm/Kbuild
+++ b/arch/ia64/include/asm/Kbuild
@@ -14,4 +14,3 @@ unifdef-y += gcc_intrin.h
14unifdef-y += intrinsics.h 14unifdef-y += intrinsics.h
15unifdef-y += perfmon.h 15unifdef-y += perfmon.h
16unifdef-y += ustack.h 16unifdef-y += ustack.h
17unifdef-y += swab.h
diff --git a/arch/ia64/include/asm/byteorder.h b/arch/ia64/include/asm/byteorder.h
index 0f84c5cb703d..a8dd73558150 100644
--- a/arch/ia64/include/asm/byteorder.h
+++ b/arch/ia64/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _ASM_IA64_BYTEORDER_H 1#ifndef _ASM_IA64_BYTEORDER_H
2#define _ASM_IA64_BYTEORDER_H 2#define _ASM_IA64_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/little_endian.h> 4#include <linux/byteorder/little_endian.h>
6 5
7#endif /* _ASM_IA64_BYTEORDER_H */ 6#endif /* _ASM_IA64_BYTEORDER_H */
diff --git a/arch/ia64/include/asm/dma-mapping.h b/arch/ia64/include/asm/dma-mapping.h
index bbab7e2b0fc9..1f912d927585 100644
--- a/arch/ia64/include/asm/dma-mapping.h
+++ b/arch/ia64/include/asm/dma-mapping.h
@@ -9,6 +9,8 @@
9#include <linux/scatterlist.h> 9#include <linux/scatterlist.h>
10#include <asm/swiotlb.h> 10#include <asm/swiotlb.h>
11 11
12#define ARCH_HAS_DMA_GET_REQUIRED_MASK
13
12struct dma_mapping_ops { 14struct dma_mapping_ops {
13 int (*mapping_error)(struct device *dev, 15 int (*mapping_error)(struct device *dev,
14 dma_addr_t dma_addr); 16 dma_addr_t dma_addr);
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h
index 59c17e446683..fe87b2121707 100644
--- a/arch/ia64/include/asm/machvec.h
+++ b/arch/ia64/include/asm/machvec.h
@@ -62,6 +62,7 @@ typedef dma_addr_t ia64_mv_dma_map_single_attrs (struct device *, void *, size_t
62typedef void ia64_mv_dma_unmap_single_attrs (struct device *, dma_addr_t, size_t, int, struct dma_attrs *); 62typedef void ia64_mv_dma_unmap_single_attrs (struct device *, dma_addr_t, size_t, int, struct dma_attrs *);
63typedef int ia64_mv_dma_map_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *); 63typedef int ia64_mv_dma_map_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *);
64typedef void ia64_mv_dma_unmap_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *); 64typedef void ia64_mv_dma_unmap_sg_attrs (struct device *, struct scatterlist *, int, int, struct dma_attrs *);
65typedef u64 ia64_mv_dma_get_required_mask (struct device *);
65 66
66/* 67/*
67 * WARNING: The legacy I/O space is _architected_. Platforms are 68 * WARNING: The legacy I/O space is _architected_. Platforms are
@@ -159,6 +160,7 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *);
159# define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device 160# define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device
160# define platform_dma_mapping_error ia64_mv.dma_mapping_error 161# define platform_dma_mapping_error ia64_mv.dma_mapping_error
161# define platform_dma_supported ia64_mv.dma_supported 162# define platform_dma_supported ia64_mv.dma_supported
163# define platform_dma_get_required_mask ia64_mv.dma_get_required_mask
162# define platform_irq_to_vector ia64_mv.irq_to_vector 164# define platform_irq_to_vector ia64_mv.irq_to_vector
163# define platform_local_vector_to_irq ia64_mv.local_vector_to_irq 165# define platform_local_vector_to_irq ia64_mv.local_vector_to_irq
164# define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem 166# define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem
@@ -213,6 +215,7 @@ struct ia64_machine_vector {
213 ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; 215 ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device;
214 ia64_mv_dma_mapping_error *dma_mapping_error; 216 ia64_mv_dma_mapping_error *dma_mapping_error;
215 ia64_mv_dma_supported *dma_supported; 217 ia64_mv_dma_supported *dma_supported;
218 ia64_mv_dma_get_required_mask *dma_get_required_mask;
216 ia64_mv_irq_to_vector *irq_to_vector; 219 ia64_mv_irq_to_vector *irq_to_vector;
217 ia64_mv_local_vector_to_irq *local_vector_to_irq; 220 ia64_mv_local_vector_to_irq *local_vector_to_irq;
218 ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; 221 ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem;
@@ -263,6 +266,7 @@ struct ia64_machine_vector {
263 platform_dma_sync_sg_for_device, \ 266 platform_dma_sync_sg_for_device, \
264 platform_dma_mapping_error, \ 267 platform_dma_mapping_error, \
265 platform_dma_supported, \ 268 platform_dma_supported, \
269 platform_dma_get_required_mask, \
266 platform_irq_to_vector, \ 270 platform_irq_to_vector, \
267 platform_local_vector_to_irq, \ 271 platform_local_vector_to_irq, \
268 platform_pci_get_legacy_mem, \ 272 platform_pci_get_legacy_mem, \
@@ -366,6 +370,9 @@ extern void machvec_init_from_cmdline(const char *cmdline);
366#ifndef platform_dma_supported 370#ifndef platform_dma_supported
367# define platform_dma_supported swiotlb_dma_supported 371# define platform_dma_supported swiotlb_dma_supported
368#endif 372#endif
373#ifndef platform_dma_get_required_mask
374# define platform_dma_get_required_mask ia64_dma_get_required_mask
375#endif
369#ifndef platform_irq_to_vector 376#ifndef platform_irq_to_vector
370# define platform_irq_to_vector __ia64_irq_to_vector 377# define platform_irq_to_vector __ia64_irq_to_vector
371#endif 378#endif
diff --git a/arch/ia64/include/asm/machvec_init.h b/arch/ia64/include/asm/machvec_init.h
index ef964b286842..37a469849ab9 100644
--- a/arch/ia64/include/asm/machvec_init.h
+++ b/arch/ia64/include/asm/machvec_init.h
@@ -3,6 +3,7 @@
3 3
4extern ia64_mv_send_ipi_t ia64_send_ipi; 4extern ia64_mv_send_ipi_t ia64_send_ipi;
5extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; 5extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge;
6extern ia64_mv_dma_get_required_mask ia64_dma_get_required_mask;
6extern ia64_mv_irq_to_vector __ia64_irq_to_vector; 7extern ia64_mv_irq_to_vector __ia64_irq_to_vector;
7extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; 8extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq;
8extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; 9extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem;
diff --git a/arch/ia64/include/asm/machvec_sn2.h b/arch/ia64/include/asm/machvec_sn2.h
index 781308ea7b88..f1a6e0d6dfa5 100644
--- a/arch/ia64/include/asm/machvec_sn2.h
+++ b/arch/ia64/include/asm/machvec_sn2.h
@@ -67,6 +67,7 @@ extern ia64_mv_dma_sync_single_for_device sn_dma_sync_single_for_device;
67extern ia64_mv_dma_sync_sg_for_device sn_dma_sync_sg_for_device; 67extern ia64_mv_dma_sync_sg_for_device sn_dma_sync_sg_for_device;
68extern ia64_mv_dma_mapping_error sn_dma_mapping_error; 68extern ia64_mv_dma_mapping_error sn_dma_mapping_error;
69extern ia64_mv_dma_supported sn_dma_supported; 69extern ia64_mv_dma_supported sn_dma_supported;
70extern ia64_mv_dma_get_required_mask sn_dma_get_required_mask;
70extern ia64_mv_migrate_t sn_migrate; 71extern ia64_mv_migrate_t sn_migrate;
71extern ia64_mv_kernel_launch_event_t sn_kernel_launch_event; 72extern ia64_mv_kernel_launch_event_t sn_kernel_launch_event;
72extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq; 73extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq;
@@ -123,6 +124,7 @@ extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus;
123#define platform_dma_sync_sg_for_device sn_dma_sync_sg_for_device 124#define platform_dma_sync_sg_for_device sn_dma_sync_sg_for_device
124#define platform_dma_mapping_error sn_dma_mapping_error 125#define platform_dma_mapping_error sn_dma_mapping_error
125#define platform_dma_supported sn_dma_supported 126#define platform_dma_supported sn_dma_supported
127#define platform_dma_get_required_mask sn_dma_get_required_mask
126#define platform_migrate sn_migrate 128#define platform_migrate sn_migrate
127#define platform_kernel_launch_event sn_kernel_launch_event 129#define platform_kernel_launch_event sn_kernel_launch_event
128#ifdef CONFIG_PCI_MSI 130#ifdef CONFIG_PCI_MSI
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index f791576355ad..9015979ebe0f 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -364,7 +364,7 @@ struct pt_regs;
364struct sigaction; 364struct sigaction;
365long sys_execve(char __user *filename, char __user * __user *argv, 365long sys_execve(char __user *filename, char __user * __user *argv,
366 char __user * __user *envp, struct pt_regs *regs); 366 char __user * __user *envp, struct pt_regs *regs);
367asmlinkage long sys_pipe(void); 367asmlinkage long sys_ia64_pipe(void);
368asmlinkage long sys_rt_sigaction(int sig, 368asmlinkage long sys_rt_sigaction(int sig,
369 const struct sigaction __user *act, 369 const struct sigaction __user *act,
370 struct sigaction __user *oact, 370 struct sigaction __user *oact,
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index d435f4a7a96c..e5341e2c1175 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1442,7 +1442,7 @@ sys_call_table:
1442 data8 sys_mkdir // 1055 1442 data8 sys_mkdir // 1055
1443 data8 sys_rmdir 1443 data8 sys_rmdir
1444 data8 sys_dup 1444 data8 sys_dup
1445 data8 sys_pipe 1445 data8 sys_ia64_pipe
1446 data8 sys_times 1446 data8 sys_times
1447 data8 ia64_brk // 1060 1447 data8 ia64_brk // 1060
1448 data8 sys_setgid 1448 data8 sys_setgid
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index f90be51b1123..9adac441ac9b 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -870,7 +870,7 @@ static int __kprobes pre_kprobes_handler(struct die_args *args)
870 return 1; 870 return 1;
871 871
872ss_probe: 872ss_probe:
873#if !defined(CONFIG_PREEMPT) || defined(CONFIG_PM) 873#if !defined(CONFIG_PREEMPT) || defined(CONFIG_FREEZER)
874 if (p->ainsn.inst_flag == INST_FLAG_BOOSTABLE && !p->post_handler) { 874 if (p->ainsn.inst_flag == INST_FLAG_BOOSTABLE && !p->post_handler) {
875 /* Boost up -- we can execute copied instructions directly */ 875 /* Boost up -- we can execute copied instructions directly */
876 ia64_psr(regs)->ri = p->ainsn.slot; 876 ia64_psr(regs)->ri = p->ainsn.slot;
diff --git a/arch/ia64/kernel/sys_ia64.c b/arch/ia64/kernel/sys_ia64.c
index bcbb6d8792d3..92ed83f34036 100644
--- a/arch/ia64/kernel/sys_ia64.c
+++ b/arch/ia64/kernel/sys_ia64.c
@@ -154,7 +154,7 @@ out:
154 * and r9) as this is faster than doing a copy_to_user(). 154 * and r9) as this is faster than doing a copy_to_user().
155 */ 155 */
156asmlinkage long 156asmlinkage long
157sys_pipe (void) 157sys_ia64_pipe (void)
158{ 158{
159 struct pt_regs *regs = task_pt_regs(current); 159 struct pt_regs *regs = task_pt_regs(current);
160 int fd[2]; 160 int fd[2];
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index ff0e7c10faa7..6db08599ebbc 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -59,6 +59,7 @@ dump (const char *str, void *vp, size_t len)
59 * (i.e. don't allow attacker to fill up logs with unaligned accesses). 59 * (i.e. don't allow attacker to fill up logs with unaligned accesses).
60 */ 60 */
61int no_unaligned_warning; 61int no_unaligned_warning;
62int unaligned_dump_stack;
62static int noprint_warning; 63static int noprint_warning;
63 64
64/* 65/*
@@ -1371,9 +1372,12 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
1371 } 1372 }
1372 } 1373 }
1373 } else { 1374 } else {
1374 if (within_logging_rate_limit()) 1375 if (within_logging_rate_limit()) {
1375 printk(KERN_WARNING "kernel unaligned access to 0x%016lx, ip=0x%016lx\n", 1376 printk(KERN_WARNING "kernel unaligned access to 0x%016lx, ip=0x%016lx\n",
1376 ifa, regs->cr_iip + ipsr->ri); 1377 ifa, regs->cr_iip + ipsr->ri);
1378 if (unaligned_dump_stack)
1379 dump_stack();
1380 }
1377 set_fs(KERNEL_DS); 1381 set_fs(KERNEL_DS);
1378 } 1382 }
1379 1383
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 211fcfd115f9..61f1af5c23c1 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -19,6 +19,7 @@
19#include <linux/ioport.h> 19#include <linux/ioport.h>
20#include <linux/slab.h> 20#include <linux/slab.h>
21#include <linux/spinlock.h> 21#include <linux/spinlock.h>
22#include <linux/bootmem.h>
22 23
23#include <asm/machvec.h> 24#include <asm/machvec.h>
24#include <asm/page.h> 25#include <asm/page.h>
@@ -748,6 +749,32 @@ static void __init set_pci_cacheline_size(void)
748 pci_cache_line_size = (1 << cci.pcci_line_size) / 4; 749 pci_cache_line_size = (1 << cci.pcci_line_size) / 4;
749} 750}
750 751
752u64 ia64_dma_get_required_mask(struct device *dev)
753{
754 u32 low_totalram = ((max_pfn - 1) << PAGE_SHIFT);
755 u32 high_totalram = ((max_pfn - 1) >> (32 - PAGE_SHIFT));
756 u64 mask;
757
758 if (!high_totalram) {
759 /* convert to mask just covering totalram */
760 low_totalram = (1 << (fls(low_totalram) - 1));
761 low_totalram += low_totalram - 1;
762 mask = low_totalram;
763 } else {
764 high_totalram = (1 << (fls(high_totalram) - 1));
765 high_totalram += high_totalram - 1;
766 mask = (((u64)high_totalram) << 32) + 0xffffffff;
767 }
768 return mask;
769}
770EXPORT_SYMBOL_GPL(ia64_dma_get_required_mask);
771
772u64 dma_get_required_mask(struct device *dev)
773{
774 return platform_dma_get_required_mask(dev);
775}
776EXPORT_SYMBOL_GPL(dma_get_required_mask);
777
751static int __init pcibios_init(void) 778static int __init pcibios_init(void)
752{ 779{
753 set_pci_cacheline_size(); 780 set_pci_cacheline_size();
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index 53ebb6484495..863f5017baae 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -356,6 +356,12 @@ int sn_dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
356} 356}
357EXPORT_SYMBOL(sn_dma_mapping_error); 357EXPORT_SYMBOL(sn_dma_mapping_error);
358 358
359u64 sn_dma_get_required_mask(struct device *dev)
360{
361 return DMA_64BIT_MASK;
362}
363EXPORT_SYMBOL_GPL(sn_dma_get_required_mask);
364
359char *sn_pci_get_legacy_mem(struct pci_bus *bus) 365char *sn_pci_get_legacy_mem(struct pci_bus *bus)
360{ 366{
361 if (!SN_PCIBUS_BUSSOFT(bus)) 367 if (!SN_PCIBUS_BUSSOFT(bus))
diff --git a/arch/ia64/xen/time.c b/arch/ia64/xen/time.c
index d15a94c330fb..68d6204c3f16 100644
--- a/arch/ia64/xen/time.c
+++ b/arch/ia64/xen/time.c
@@ -129,8 +129,8 @@ consider_steal_time(unsigned long new_itm)
129 blocked = stolentick; 129 blocked = stolentick;
130 130
131 if (stolen > 0 || blocked > 0) { 131 if (stolen > 0 || blocked > 0) {
132 account_steal_time(NULL, jiffies_to_cputime(stolen)); 132 account_steal_ticks(stolen);
133 account_steal_time(idle_task(cpu), jiffies_to_cputime(blocked)); 133 account_idle_ticks(blocked);
134 run_local_timers(); 134 run_local_timers();
135 135
136 if (rcu_pending(cpu)) 136 if (rcu_pending(cpu))
diff --git a/include/asm-m68k/Kbuild b/arch/m68k/include/asm/Kbuild
index 52fd96b4142a..1a922fad76f7 100644
--- a/include/asm-m68k/Kbuild
+++ b/arch/m68k/include/asm/Kbuild
@@ -1,3 +1,2 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2header-y += cachectl.h 2header-y += cachectl.h
3unifdef-y += swab.h
diff --git a/arch/m68knommu/include/asm/MC68328.h b/arch/m68k/include/asm/MC68328.h
index a337e56d09bf..a337e56d09bf 100644
--- a/arch/m68knommu/include/asm/MC68328.h
+++ b/arch/m68k/include/asm/MC68328.h
diff --git a/arch/m68knommu/include/asm/MC68332.h b/arch/m68k/include/asm/MC68332.h
index 6bb8f02685a2..6bb8f02685a2 100644
--- a/arch/m68knommu/include/asm/MC68332.h
+++ b/arch/m68k/include/asm/MC68332.h
diff --git a/arch/m68knommu/include/asm/MC68EZ328.h b/arch/m68k/include/asm/MC68EZ328.h
index 69b7f9139e5e..69b7f9139e5e 100644
--- a/arch/m68knommu/include/asm/MC68EZ328.h
+++ b/arch/m68k/include/asm/MC68EZ328.h
diff --git a/arch/m68knommu/include/asm/MC68VZ328.h b/arch/m68k/include/asm/MC68VZ328.h
index 2b9bf626a0a5..2b9bf626a0a5 100644
--- a/arch/m68knommu/include/asm/MC68VZ328.h
+++ b/arch/m68k/include/asm/MC68VZ328.h
diff --git a/include/asm-m68k/a.out-core.h b/arch/m68k/include/asm/a.out-core.h
index f6bfc1d63ff6..f6bfc1d63ff6 100644
--- a/include/asm-m68k/a.out-core.h
+++ b/arch/m68k/include/asm/a.out-core.h
diff --git a/include/asm-m68k/a.out.h b/arch/m68k/include/asm/a.out.h
index 3885fe43432a..3885fe43432a 100644
--- a/include/asm-m68k/a.out.h
+++ b/arch/m68k/include/asm/a.out.h
diff --git a/include/asm-m68k/adb_iop.h b/arch/m68k/include/asm/adb_iop.h
index 8a48e56f2d62..8a48e56f2d62 100644
--- a/include/asm-m68k/adb_iop.h
+++ b/arch/m68k/include/asm/adb_iop.h
diff --git a/include/asm-m68k/amigahw.h b/arch/m68k/include/asm/amigahw.h
index 5ca5dd951a4a..5ca5dd951a4a 100644
--- a/include/asm-m68k/amigahw.h
+++ b/arch/m68k/include/asm/amigahw.h
diff --git a/include/asm-m68k/amigaints.h b/arch/m68k/include/asm/amigaints.h
index b1bcdb835ab9..b1bcdb835ab9 100644
--- a/include/asm-m68k/amigaints.h
+++ b/arch/m68k/include/asm/amigaints.h
diff --git a/include/asm-m68k/amigayle.h b/arch/m68k/include/asm/amigayle.h
index bb5a6aa329f3..bb5a6aa329f3 100644
--- a/include/asm-m68k/amigayle.h
+++ b/arch/m68k/include/asm/amigayle.h
diff --git a/include/asm-m68k/amipcmcia.h b/arch/m68k/include/asm/amipcmcia.h
index 6f1ec1887d82..6f1ec1887d82 100644
--- a/include/asm-m68k/amipcmcia.h
+++ b/arch/m68k/include/asm/amipcmcia.h
diff --git a/arch/m68knommu/include/asm/anchor.h b/arch/m68k/include/asm/anchor.h
index 871c0d5cfc3d..871c0d5cfc3d 100644
--- a/arch/m68knommu/include/asm/anchor.h
+++ b/arch/m68k/include/asm/anchor.h
diff --git a/include/asm-m68k/apollodma.h b/arch/m68k/include/asm/apollodma.h
index 954adc851adb..954adc851adb 100644
--- a/include/asm-m68k/apollodma.h
+++ b/arch/m68k/include/asm/apollodma.h
diff --git a/include/asm-m68k/apollohw.h b/arch/m68k/include/asm/apollohw.h
index a1373b9aa281..a1373b9aa281 100644
--- a/include/asm-m68k/apollohw.h
+++ b/arch/m68k/include/asm/apollohw.h
diff --git a/include/asm-m68k/atafd.h b/arch/m68k/include/asm/atafd.h
index 8456889ee7da..8456889ee7da 100644
--- a/include/asm-m68k/atafd.h
+++ b/arch/m68k/include/asm/atafd.h
diff --git a/include/asm-m68k/atafdreg.h b/arch/m68k/include/asm/atafdreg.h
index bbf80949fd9f..bbf80949fd9f 100644
--- a/include/asm-m68k/atafdreg.h
+++ b/arch/m68k/include/asm/atafdreg.h
diff --git a/include/asm-m68k/atari_joystick.h b/arch/m68k/include/asm/atari_joystick.h
index 93be7da9f2c7..93be7da9f2c7 100644
--- a/include/asm-m68k/atari_joystick.h
+++ b/arch/m68k/include/asm/atari_joystick.h
diff --git a/include/asm-m68k/atari_stdma.h b/arch/m68k/include/asm/atari_stdma.h
index 8e389b7fa70c..8e389b7fa70c 100644
--- a/include/asm-m68k/atari_stdma.h
+++ b/arch/m68k/include/asm/atari_stdma.h
diff --git a/include/asm-m68k/atari_stram.h b/arch/m68k/include/asm/atari_stram.h
index 7546d13963be..7546d13963be 100644
--- a/include/asm-m68k/atari_stram.h
+++ b/arch/m68k/include/asm/atari_stram.h
diff --git a/include/asm-m68k/atarihw.h b/arch/m68k/include/asm/atarihw.h
index 1412b4ab202f..1412b4ab202f 100644
--- a/include/asm-m68k/atarihw.h
+++ b/arch/m68k/include/asm/atarihw.h
diff --git a/include/asm-m68k/atariints.h b/arch/m68k/include/asm/atariints.h
index 5748e99f4e26..5748e99f4e26 100644
--- a/include/asm-m68k/atariints.h
+++ b/arch/m68k/include/asm/atariints.h
diff --git a/include/asm-m68k/atarikb.h b/arch/m68k/include/asm/atarikb.h
index 546e7da5804f..546e7da5804f 100644
--- a/include/asm-m68k/atarikb.h
+++ b/arch/m68k/include/asm/atarikb.h
diff --git a/arch/m68k/include/asm/atomic.h b/arch/m68k/include/asm/atomic.h
new file mode 100644
index 000000000000..8d29145ebb27
--- /dev/null
+++ b/arch/m68k/include/asm/atomic.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "atomic_no.h"
3#else
4#include "atomic_mm.h"
5#endif
diff --git a/include/asm-m68k/atomic.h b/arch/m68k/include/asm/atomic_mm.h
index eb0ab9d4ee77..eb0ab9d4ee77 100644
--- a/include/asm-m68k/atomic.h
+++ b/arch/m68k/include/asm/atomic_mm.h
diff --git a/arch/m68knommu/include/asm/atomic.h b/arch/m68k/include/asm/atomic_no.h
index 6bb674855a3f..6bb674855a3f 100644
--- a/arch/m68knommu/include/asm/atomic.h
+++ b/arch/m68k/include/asm/atomic_no.h
diff --git a/arch/m68knommu/include/asm/auxvec.h b/arch/m68k/include/asm/auxvec.h
index 844d6d52204b..844d6d52204b 100644
--- a/arch/m68knommu/include/asm/auxvec.h
+++ b/arch/m68k/include/asm/auxvec.h
diff --git a/arch/m68k/include/asm/bitops.h b/arch/m68k/include/asm/bitops.h
new file mode 100644
index 000000000000..ce163abddaba
--- /dev/null
+++ b/arch/m68k/include/asm/bitops.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "bitops_no.h"
3#else
4#include "bitops_mm.h"
5#endif
diff --git a/include/asm-m68k/bitops.h b/arch/m68k/include/asm/bitops_mm.h
index 9bde784e7bad..9bde784e7bad 100644
--- a/include/asm-m68k/bitops.h
+++ b/arch/m68k/include/asm/bitops_mm.h
diff --git a/arch/m68knommu/include/asm/bitops.h b/arch/m68k/include/asm/bitops_no.h
index 9d3cbe5fad1e..9d3cbe5fad1e 100644
--- a/arch/m68knommu/include/asm/bitops.h
+++ b/arch/m68k/include/asm/bitops_no.h
diff --git a/include/asm-m68k/blinken.h b/arch/m68k/include/asm/blinken.h
index 1a749cf7b06d..1a749cf7b06d 100644
--- a/include/asm-m68k/blinken.h
+++ b/arch/m68k/include/asm/blinken.h
diff --git a/arch/m68k/include/asm/bootinfo.h b/arch/m68k/include/asm/bootinfo.h
new file mode 100644
index 000000000000..fedf3e326121
--- /dev/null
+++ b/arch/m68k/include/asm/bootinfo.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "bootinfo_no.h"
3#else
4#include "bootinfo_mm.h"
5#endif
diff --git a/include/asm-m68k/bootinfo.h b/arch/m68k/include/asm/bootinfo_mm.h
index fb8a06b9ab6a..fb8a06b9ab6a 100644
--- a/include/asm-m68k/bootinfo.h
+++ b/arch/m68k/include/asm/bootinfo_mm.h
diff --git a/arch/m68knommu/include/asm/bootinfo.h b/arch/m68k/include/asm/bootinfo_no.h
index c12e526f5189..c12e526f5189 100644
--- a/arch/m68knommu/include/asm/bootinfo.h
+++ b/arch/m68k/include/asm/bootinfo_no.h
diff --git a/arch/m68knommu/include/asm/bootstd.h b/arch/m68k/include/asm/bootstd.h
index bdc1a4ac4fe9..bdc1a4ac4fe9 100644
--- a/arch/m68knommu/include/asm/bootstd.h
+++ b/arch/m68k/include/asm/bootstd.h
diff --git a/arch/m68k/include/asm/bug.h b/arch/m68k/include/asm/bug.h
new file mode 100644
index 000000000000..997e0944ebc1
--- /dev/null
+++ b/arch/m68k/include/asm/bug.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "bug_no.h"
3#else
4#include "bug_mm.h"
5#endif
diff --git a/include/asm-m68k/bug.h b/arch/m68k/include/asm/bug_mm.h
index e5b528deb8a8..e5b528deb8a8 100644
--- a/include/asm-m68k/bug.h
+++ b/arch/m68k/include/asm/bug_mm.h
diff --git a/arch/m68knommu/include/asm/bug.h b/arch/m68k/include/asm/bug_no.h
index 70e7dc0af21a..70e7dc0af21a 100644
--- a/arch/m68knommu/include/asm/bug.h
+++ b/arch/m68k/include/asm/bug_no.h
diff --git a/arch/m68k/include/asm/bugs.h b/arch/m68k/include/asm/bugs.h
new file mode 100644
index 000000000000..01f047d784ec
--- /dev/null
+++ b/arch/m68k/include/asm/bugs.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "bugs_no.h"
3#else
4#include "bugs_mm.h"
5#endif
diff --git a/include/asm-m68k/bugs.h b/arch/m68k/include/asm/bugs_mm.h
index d01935592410..d01935592410 100644
--- a/include/asm-m68k/bugs.h
+++ b/arch/m68k/include/asm/bugs_mm.h
diff --git a/arch/m68knommu/include/asm/bugs.h b/arch/m68k/include/asm/bugs_no.h
index 5f382dac3a60..5f382dac3a60 100644
--- a/arch/m68knommu/include/asm/bugs.h
+++ b/arch/m68k/include/asm/bugs_no.h
diff --git a/include/asm-m68k/bvme6000hw.h b/arch/m68k/include/asm/bvme6000hw.h
index f40d2f8510ee..f40d2f8510ee 100644
--- a/include/asm-m68k/bvme6000hw.h
+++ b/arch/m68k/include/asm/bvme6000hw.h
diff --git a/include/asm-m68k/byteorder.h b/arch/m68k/include/asm/byteorder.h
index 300866523b86..31b260a88803 100644
--- a/include/asm-m68k/byteorder.h
+++ b/arch/m68k/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _M68K_BYTEORDER_H 1#ifndef _M68K_BYTEORDER_H
2#define _M68K_BYTEORDER_H 2#define _M68K_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/big_endian.h> 4#include <linux/byteorder/big_endian.h>
6 5
7#endif /* _M68K_BYTEORDER_H */ 6#endif /* _M68K_BYTEORDER_H */
diff --git a/arch/m68k/include/asm/cache.h b/arch/m68k/include/asm/cache.h
new file mode 100644
index 000000000000..599c29bc8f40
--- /dev/null
+++ b/arch/m68k/include/asm/cache.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "cache_no.h"
3#else
4#include "cache_mm.h"
5#endif
diff --git a/include/asm-m68k/cache.h b/arch/m68k/include/asm/cache_mm.h
index fed3fd30de7e..fed3fd30de7e 100644
--- a/include/asm-m68k/cache.h
+++ b/arch/m68k/include/asm/cache_mm.h
diff --git a/arch/m68knommu/include/asm/cache.h b/arch/m68k/include/asm/cache_no.h
index 24e9eace5f8c..24e9eace5f8c 100644
--- a/arch/m68knommu/include/asm/cache.h
+++ b/arch/m68k/include/asm/cache_no.h
diff --git a/include/asm-m68k/cachectl.h b/arch/m68k/include/asm/cachectl.h
index 525978e959e3..525978e959e3 100644
--- a/include/asm-m68k/cachectl.h
+++ b/arch/m68k/include/asm/cachectl.h
diff --git a/arch/m68k/include/asm/cacheflush.h b/arch/m68k/include/asm/cacheflush.h
new file mode 100644
index 000000000000..a70d7319630a
--- /dev/null
+++ b/arch/m68k/include/asm/cacheflush.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "cacheflush_no.h"
3#else
4#include "cacheflush_mm.h"
5#endif
diff --git a/include/asm-m68k/cacheflush.h b/arch/m68k/include/asm/cacheflush_mm.h
index 16bf375fdbe1..16bf375fdbe1 100644
--- a/include/asm-m68k/cacheflush.h
+++ b/arch/m68k/include/asm/cacheflush_mm.h
diff --git a/arch/m68knommu/include/asm/cacheflush.h b/arch/m68k/include/asm/cacheflush_no.h
index 87e5dc0413b4..87e5dc0413b4 100644
--- a/arch/m68knommu/include/asm/cacheflush.h
+++ b/arch/m68k/include/asm/cacheflush_no.h
diff --git a/arch/m68k/include/asm/checksum.h b/arch/m68k/include/asm/checksum.h
new file mode 100644
index 000000000000..1cf544767453
--- /dev/null
+++ b/arch/m68k/include/asm/checksum.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "checksum_no.h"
3#else
4#include "checksum_mm.h"
5#endif
diff --git a/include/asm-m68k/checksum.h b/arch/m68k/include/asm/checksum_mm.h
index 494f9aec37ea..494f9aec37ea 100644
--- a/include/asm-m68k/checksum.h
+++ b/arch/m68k/include/asm/checksum_mm.h
diff --git a/arch/m68knommu/include/asm/checksum.h b/arch/m68k/include/asm/checksum_no.h
index 81883482ffb1..81883482ffb1 100644
--- a/arch/m68knommu/include/asm/checksum.h
+++ b/arch/m68k/include/asm/checksum_no.h
diff --git a/arch/m68knommu/include/asm/coldfire.h b/arch/m68k/include/asm/coldfire.h
index 83a9fa4e618a..83a9fa4e618a 100644
--- a/arch/m68knommu/include/asm/coldfire.h
+++ b/arch/m68k/include/asm/coldfire.h
diff --git a/arch/m68knommu/include/asm/commproc.h b/arch/m68k/include/asm/commproc.h
index edf5eb6c08d2..edf5eb6c08d2 100644
--- a/arch/m68knommu/include/asm/commproc.h
+++ b/arch/m68k/include/asm/commproc.h
diff --git a/include/asm-m68k/contregs.h b/arch/m68k/include/asm/contregs.h
index d1ea750bddfe..d1ea750bddfe 100644
--- a/include/asm-m68k/contregs.h
+++ b/arch/m68k/include/asm/contregs.h
diff --git a/include/asm-m68k/cputime.h b/arch/m68k/include/asm/cputime.h
index c79c5e892305..c79c5e892305 100644
--- a/include/asm-m68k/cputime.h
+++ b/arch/m68k/include/asm/cputime.h
diff --git a/arch/m68k/include/asm/current.h b/arch/m68k/include/asm/current.h
new file mode 100644
index 000000000000..51b056dfaedd
--- /dev/null
+++ b/arch/m68k/include/asm/current.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "current_no.h"
3#else
4#include "current_mm.h"
5#endif
diff --git a/include/asm-m68k/current.h b/arch/m68k/include/asm/current_mm.h
index 8de8f8ceda61..8de8f8ceda61 100644
--- a/include/asm-m68k/current.h
+++ b/arch/m68k/include/asm/current_mm.h
diff --git a/arch/m68knommu/include/asm/current.h b/arch/m68k/include/asm/current_no.h
index 53ee0f9f7cef..53ee0f9f7cef 100644
--- a/arch/m68knommu/include/asm/current.h
+++ b/arch/m68k/include/asm/current_no.h
diff --git a/arch/m68knommu/include/asm/dbg.h b/arch/m68k/include/asm/dbg.h
index 27af3270f671..27af3270f671 100644
--- a/arch/m68knommu/include/asm/dbg.h
+++ b/arch/m68k/include/asm/dbg.h
diff --git a/arch/m68k/include/asm/delay.h b/arch/m68k/include/asm/delay.h
new file mode 100644
index 000000000000..d2598e3dd7b2
--- /dev/null
+++ b/arch/m68k/include/asm/delay.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "delay_no.h"
3#else
4#include "delay_mm.h"
5#endif
diff --git a/include/asm-m68k/delay.h b/arch/m68k/include/asm/delay_mm.h
index 5ed92851bc6f..5ed92851bc6f 100644
--- a/include/asm-m68k/delay.h
+++ b/arch/m68k/include/asm/delay_mm.h
diff --git a/arch/m68knommu/include/asm/delay.h b/arch/m68k/include/asm/delay_no.h
index 55cbd6294ab6..55cbd6294ab6 100644
--- a/arch/m68knommu/include/asm/delay.h
+++ b/arch/m68k/include/asm/delay_no.h
diff --git a/arch/m68knommu/include/asm/device.h b/arch/m68k/include/asm/device.h
index d8f9872b0e2d..d8f9872b0e2d 100644
--- a/arch/m68knommu/include/asm/device.h
+++ b/arch/m68k/include/asm/device.h
diff --git a/arch/m68k/include/asm/div64.h b/arch/m68k/include/asm/div64.h
new file mode 100644
index 000000000000..d211d9f54276
--- /dev/null
+++ b/arch/m68k/include/asm/div64.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "div64_no.h"
3#else
4#include "div64_mm.h"
5#endif
diff --git a/include/asm-m68k/div64.h b/arch/m68k/include/asm/div64_mm.h
index 8243c931b5c0..8243c931b5c0 100644
--- a/include/asm-m68k/div64.h
+++ b/arch/m68k/include/asm/div64_mm.h
diff --git a/arch/m68knommu/include/asm/div64.h b/arch/m68k/include/asm/div64_no.h
index 6cd978cefb28..6cd978cefb28 100644
--- a/arch/m68knommu/include/asm/div64.h
+++ b/arch/m68k/include/asm/div64_no.h
diff --git a/arch/m68k/include/asm/dma-mapping.h b/arch/m68k/include/asm/dma-mapping.h
new file mode 100644
index 000000000000..f4a4c7638f89
--- /dev/null
+++ b/arch/m68k/include/asm/dma-mapping.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "dma-mapping_no.h"
3#else
4#include "dma-mapping_mm.h"
5#endif
diff --git a/include/asm-m68k/dma-mapping.h b/arch/m68k/include/asm/dma-mapping_mm.h
index 26f505488c11..26f505488c11 100644
--- a/include/asm-m68k/dma-mapping.h
+++ b/arch/m68k/include/asm/dma-mapping_mm.h
diff --git a/arch/m68knommu/include/asm/dma-mapping.h b/arch/m68k/include/asm/dma-mapping_no.h
index 6aeab18e58bd..6aeab18e58bd 100644
--- a/arch/m68knommu/include/asm/dma-mapping.h
+++ b/arch/m68k/include/asm/dma-mapping_no.h
diff --git a/arch/m68k/include/asm/dma.h b/arch/m68k/include/asm/dma.h
new file mode 100644
index 000000000000..b82e660cf1c2
--- /dev/null
+++ b/arch/m68k/include/asm/dma.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "dma_no.h"
3#else
4#include "dma_mm.h"
5#endif
diff --git a/include/asm-m68k/dma.h b/arch/m68k/include/asm/dma_mm.h
index 4240fbc946f8..4240fbc946f8 100644
--- a/include/asm-m68k/dma.h
+++ b/arch/m68k/include/asm/dma_mm.h
diff --git a/arch/m68knommu/include/asm/dma.h b/arch/m68k/include/asm/dma_no.h
index 939a02056217..939a02056217 100644
--- a/arch/m68knommu/include/asm/dma.h
+++ b/arch/m68k/include/asm/dma_no.h
diff --git a/include/asm-m68k/dsp56k.h b/arch/m68k/include/asm/dsp56k.h
index 2d8c0c9f794b..2d8c0c9f794b 100644
--- a/include/asm-m68k/dsp56k.h
+++ b/arch/m68k/include/asm/dsp56k.h
diff --git a/include/asm-m68k/dvma.h b/arch/m68k/include/asm/dvma.h
index 890bbf7e7758..890bbf7e7758 100644
--- a/include/asm-m68k/dvma.h
+++ b/arch/m68k/include/asm/dvma.h
diff --git a/arch/m68k/include/asm/elf.h b/arch/m68k/include/asm/elf.h
new file mode 100644
index 000000000000..04ce488bc63f
--- /dev/null
+++ b/arch/m68k/include/asm/elf.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "elf_no.h"
3#else
4#include "elf_mm.h"
5#endif
diff --git a/include/asm-m68k/elf.h b/arch/m68k/include/asm/elf_mm.h
index 0b0f49eb876b..0b0f49eb876b 100644
--- a/include/asm-m68k/elf.h
+++ b/arch/m68k/include/asm/elf_mm.h
diff --git a/arch/m68knommu/include/asm/elf.h b/arch/m68k/include/asm/elf_no.h
index b8046837f384..b8046837f384 100644
--- a/arch/m68knommu/include/asm/elf.h
+++ b/arch/m68k/include/asm/elf_no.h
diff --git a/arch/m68knommu/include/asm/elia.h b/arch/m68k/include/asm/elia.h
index e037d4e2de33..e037d4e2de33 100644
--- a/arch/m68knommu/include/asm/elia.h
+++ b/arch/m68k/include/asm/elia.h
diff --git a/arch/m68knommu/include/asm/emergency-restart.h b/arch/m68k/include/asm/emergency-restart.h
index 108d8c48e42e..108d8c48e42e 100644
--- a/arch/m68knommu/include/asm/emergency-restart.h
+++ b/arch/m68k/include/asm/emergency-restart.h
diff --git a/arch/m68k/include/asm/entry.h b/arch/m68k/include/asm/entry.h
new file mode 100644
index 000000000000..876eec6f2b52
--- /dev/null
+++ b/arch/m68k/include/asm/entry.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "entry_no.h"
3#else
4#include "entry_mm.h"
5#endif
diff --git a/include/asm-m68k/entry.h b/arch/m68k/include/asm/entry_mm.h
index 5202f5a5b420..5202f5a5b420 100644
--- a/include/asm-m68k/entry.h
+++ b/arch/m68k/include/asm/entry_mm.h
diff --git a/arch/m68knommu/include/asm/entry.h b/arch/m68k/include/asm/entry_no.h
index c2553d26273d..c2553d26273d 100644
--- a/arch/m68knommu/include/asm/entry.h
+++ b/arch/m68k/include/asm/entry_no.h
diff --git a/include/asm-m68k/errno.h b/arch/m68k/include/asm/errno.h
index 0d4e188d6ef6..0d4e188d6ef6 100644
--- a/include/asm-m68k/errno.h
+++ b/arch/m68k/include/asm/errno.h
diff --git a/arch/m68k/include/asm/fb.h b/arch/m68k/include/asm/fb.h
new file mode 100644
index 000000000000..97bcaefd2064
--- /dev/null
+++ b/arch/m68k/include/asm/fb.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "fb_no.h"
3#else
4#include "fb_mm.h"
5#endif
diff --git a/include/asm-m68k/fb.h b/arch/m68k/include/asm/fb_mm.h
index 380b97ae8157..380b97ae8157 100644
--- a/include/asm-m68k/fb.h
+++ b/arch/m68k/include/asm/fb_mm.h
diff --git a/arch/m68knommu/include/asm/fb.h b/arch/m68k/include/asm/fb_no.h
index c7df38030992..c7df38030992 100644
--- a/arch/m68knommu/include/asm/fb.h
+++ b/arch/m68k/include/asm/fb_no.h
diff --git a/include/asm-m68k/fbio.h b/arch/m68k/include/asm/fbio.h
index b9215a0907d3..b9215a0907d3 100644
--- a/include/asm-m68k/fbio.h
+++ b/arch/m68k/include/asm/fbio.h
diff --git a/include/asm-m68k/fcntl.h b/arch/m68k/include/asm/fcntl.h
index 1c369b20dc45..1c369b20dc45 100644
--- a/include/asm-m68k/fcntl.h
+++ b/arch/m68k/include/asm/fcntl.h
diff --git a/arch/m68knommu/include/asm/flat.h b/arch/m68k/include/asm/flat.h
index 814b5174a8e0..814b5174a8e0 100644
--- a/arch/m68knommu/include/asm/flat.h
+++ b/arch/m68k/include/asm/flat.h
diff --git a/include/asm-m68k/floppy.h b/arch/m68k/include/asm/floppy.h
index 697d50393dd0..697d50393dd0 100644
--- a/include/asm-m68k/floppy.h
+++ b/arch/m68k/include/asm/floppy.h
diff --git a/arch/m68k/include/asm/fpu.h b/arch/m68k/include/asm/fpu.h
new file mode 100644
index 000000000000..e19bc5ed9c37
--- /dev/null
+++ b/arch/m68k/include/asm/fpu.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "fpu_no.h"
3#else
4#include "fpu_mm.h"
5#endif
diff --git a/include/asm-m68k/fpu.h b/arch/m68k/include/asm/fpu_mm.h
index ffb6b8cfc6d5..ffb6b8cfc6d5 100644
--- a/include/asm-m68k/fpu.h
+++ b/arch/m68k/include/asm/fpu_mm.h
diff --git a/arch/m68knommu/include/asm/fpu.h b/arch/m68k/include/asm/fpu_no.h
index b16b2e4fca2a..b16b2e4fca2a 100644
--- a/arch/m68knommu/include/asm/fpu.h
+++ b/arch/m68k/include/asm/fpu_no.h
diff --git a/arch/m68knommu/include/asm/futex.h b/arch/m68k/include/asm/futex.h
index 6a332a9f099c..6a332a9f099c 100644
--- a/arch/m68knommu/include/asm/futex.h
+++ b/arch/m68k/include/asm/futex.h
diff --git a/arch/m68k/include/asm/hardirq.h b/arch/m68k/include/asm/hardirq.h
new file mode 100644
index 000000000000..56d0d5db231c
--- /dev/null
+++ b/arch/m68k/include/asm/hardirq.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "hardirq_no.h"
3#else
4#include "hardirq_mm.h"
5#endif
diff --git a/include/asm-m68k/hardirq.h b/arch/m68k/include/asm/hardirq_mm.h
index 394ee946015c..394ee946015c 100644
--- a/include/asm-m68k/hardirq.h
+++ b/arch/m68k/include/asm/hardirq_mm.h
diff --git a/arch/m68knommu/include/asm/hardirq.h b/arch/m68k/include/asm/hardirq_no.h
index bfad28149a49..bfad28149a49 100644
--- a/arch/m68knommu/include/asm/hardirq.h
+++ b/arch/m68k/include/asm/hardirq_no.h
diff --git a/include/asm-m68k/hp300hw.h b/arch/m68k/include/asm/hp300hw.h
index d998ea67c19c..d998ea67c19c 100644
--- a/include/asm-m68k/hp300hw.h
+++ b/arch/m68k/include/asm/hp300hw.h
diff --git a/arch/m68k/include/asm/hw_irq.h b/arch/m68k/include/asm/hw_irq.h
new file mode 100644
index 000000000000..e19526015890
--- /dev/null
+++ b/arch/m68k/include/asm/hw_irq.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "hw_irq_no.h"
3#else
4#include "hw_irq_mm.h"
5#endif
diff --git a/include/asm-m68k/hw_irq.h b/arch/m68k/include/asm/hw_irq_mm.h
index eacef0951fbf..eacef0951fbf 100644
--- a/include/asm-m68k/hw_irq.h
+++ b/arch/m68k/include/asm/hw_irq_mm.h
diff --git a/arch/m68knommu/include/asm/hw_irq.h b/arch/m68k/include/asm/hw_irq_no.h
index f3ec9e5ae049..f3ec9e5ae049 100644
--- a/arch/m68knommu/include/asm/hw_irq.h
+++ b/arch/m68k/include/asm/hw_irq_no.h
diff --git a/include/asm-m68k/hwtest.h b/arch/m68k/include/asm/hwtest.h
index 402c8a4401fe..402c8a4401fe 100644
--- a/include/asm-m68k/hwtest.h
+++ b/arch/m68k/include/asm/hwtest.h
diff --git a/include/asm-m68k/ide.h b/arch/m68k/include/asm/ide.h
index b996a3c8cff5..b996a3c8cff5 100644
--- a/include/asm-m68k/ide.h
+++ b/arch/m68k/include/asm/ide.h
diff --git a/include/asm-m68k/idprom.h b/arch/m68k/include/asm/idprom.h
index 160616a89e05..160616a89e05 100644
--- a/include/asm-m68k/idprom.h
+++ b/arch/m68k/include/asm/idprom.h
diff --git a/include/asm-m68k/intersil.h b/arch/m68k/include/asm/intersil.h
index f482902cac8a..f482902cac8a 100644
--- a/include/asm-m68k/intersil.h
+++ b/arch/m68k/include/asm/intersil.h
diff --git a/arch/m68k/include/asm/io.h b/arch/m68k/include/asm/io.h
new file mode 100644
index 000000000000..c7210ba184ea
--- /dev/null
+++ b/arch/m68k/include/asm/io.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "io_no.h"
3#else
4#include "io_mm.h"
5#endif
diff --git a/include/asm-m68k/io.h b/arch/m68k/include/asm/io_mm.h
index 9e673e3bd434..9e673e3bd434 100644
--- a/include/asm-m68k/io.h
+++ b/arch/m68k/include/asm/io_mm.h
diff --git a/arch/m68knommu/include/asm/io.h b/arch/m68k/include/asm/io_no.h
index 6adef1ee2082..6adef1ee2082 100644
--- a/arch/m68knommu/include/asm/io.h
+++ b/arch/m68k/include/asm/io_no.h
diff --git a/arch/m68knommu/include/asm/ioctl.h b/arch/m68k/include/asm/ioctl.h
index b279fe06dfe5..b279fe06dfe5 100644
--- a/arch/m68knommu/include/asm/ioctl.h
+++ b/arch/m68k/include/asm/ioctl.h
diff --git a/include/asm-m68k/ioctls.h b/arch/m68k/include/asm/ioctls.h
index b8d2f4be7fd7..b8d2f4be7fd7 100644
--- a/include/asm-m68k/ioctls.h
+++ b/arch/m68k/include/asm/ioctls.h
diff --git a/include/asm-m68k/ipcbuf.h b/arch/m68k/include/asm/ipcbuf.h
index a623ea3f0955..a623ea3f0955 100644
--- a/include/asm-m68k/ipcbuf.h
+++ b/arch/m68k/include/asm/ipcbuf.h
diff --git a/arch/m68k/include/asm/irq.h b/arch/m68k/include/asm/irq.h
new file mode 100644
index 000000000000..d031416595b2
--- /dev/null
+++ b/arch/m68k/include/asm/irq.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "irq_no.h"
3#else
4#include "irq_mm.h"
5#endif
diff --git a/include/asm-m68k/irq.h b/arch/m68k/include/asm/irq_mm.h
index 226bfc0f21b1..226bfc0f21b1 100644
--- a/include/asm-m68k/irq.h
+++ b/arch/m68k/include/asm/irq_mm.h
diff --git a/arch/m68knommu/include/asm/irq.h b/arch/m68k/include/asm/irq_no.h
index 9373c31ac87d..9373c31ac87d 100644
--- a/arch/m68knommu/include/asm/irq.h
+++ b/arch/m68k/include/asm/irq_no.h
diff --git a/arch/m68knommu/include/asm/irq_regs.h b/arch/m68k/include/asm/irq_regs.h
index 3dd9c0b70270..3dd9c0b70270 100644
--- a/arch/m68knommu/include/asm/irq_regs.h
+++ b/arch/m68k/include/asm/irq_regs.h
diff --git a/arch/m68knommu/include/asm/kdebug.h b/arch/m68k/include/asm/kdebug.h
index 6ece1b037665..6ece1b037665 100644
--- a/arch/m68knommu/include/asm/kdebug.h
+++ b/arch/m68k/include/asm/kdebug.h
diff --git a/arch/m68k/include/asm/kmap_types.h b/arch/m68k/include/asm/kmap_types.h
new file mode 100644
index 000000000000..045d9fd122a2
--- /dev/null
+++ b/arch/m68k/include/asm/kmap_types.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "kmap_types_no.h"
3#else
4#include "kmap_types_mm.h"
5#endif
diff --git a/include/asm-m68k/kmap_types.h b/arch/m68k/include/asm/kmap_types_mm.h
index c843c63d3801..c843c63d3801 100644
--- a/include/asm-m68k/kmap_types.h
+++ b/arch/m68k/include/asm/kmap_types_mm.h
diff --git a/arch/m68knommu/include/asm/kmap_types.h b/arch/m68k/include/asm/kmap_types_no.h
index bfb6707575d1..bfb6707575d1 100644
--- a/arch/m68knommu/include/asm/kmap_types.h
+++ b/arch/m68k/include/asm/kmap_types_no.h
diff --git a/include/asm-m68k/linkage.h b/arch/m68k/include/asm/linkage.h
index 5a822bb790f7..5a822bb790f7 100644
--- a/include/asm-m68k/linkage.h
+++ b/arch/m68k/include/asm/linkage.h
diff --git a/include/asm-m68k/local.h b/arch/m68k/include/asm/local.h
index 6c259263e1f0..6c259263e1f0 100644
--- a/include/asm-m68k/local.h
+++ b/arch/m68k/include/asm/local.h
diff --git a/arch/m68knommu/include/asm/m5206sim.h b/arch/m68k/include/asm/m5206sim.h
index 7e3594dea88b..7e3594dea88b 100644
--- a/arch/m68knommu/include/asm/m5206sim.h
+++ b/arch/m68k/include/asm/m5206sim.h
diff --git a/arch/m68knommu/include/asm/m520xsim.h b/arch/m68k/include/asm/m520xsim.h
index 49d016e6391a..49d016e6391a 100644
--- a/arch/m68knommu/include/asm/m520xsim.h
+++ b/arch/m68k/include/asm/m520xsim.h
diff --git a/arch/m68knommu/include/asm/m523xsim.h b/arch/m68k/include/asm/m523xsim.h
index bf397313e93f..bf397313e93f 100644
--- a/arch/m68knommu/include/asm/m523xsim.h
+++ b/arch/m68k/include/asm/m523xsim.h
diff --git a/arch/m68knommu/include/asm/m5249sim.h b/arch/m68k/include/asm/m5249sim.h
index 366eb8602d2f..366eb8602d2f 100644
--- a/arch/m68knommu/include/asm/m5249sim.h
+++ b/arch/m68k/include/asm/m5249sim.h
diff --git a/arch/m68knommu/include/asm/m5272sim.h b/arch/m68k/include/asm/m5272sim.h
index 6217edc21139..6217edc21139 100644
--- a/arch/m68knommu/include/asm/m5272sim.h
+++ b/arch/m68k/include/asm/m5272sim.h
diff --git a/arch/m68knommu/include/asm/m527xsim.h b/arch/m68k/include/asm/m527xsim.h
index 1f63ab3fb3e6..1f63ab3fb3e6 100644
--- a/arch/m68knommu/include/asm/m527xsim.h
+++ b/arch/m68k/include/asm/m527xsim.h
diff --git a/arch/m68knommu/include/asm/m528xsim.h b/arch/m68k/include/asm/m528xsim.h
index 28bf783a5d6d..28bf783a5d6d 100644
--- a/arch/m68knommu/include/asm/m528xsim.h
+++ b/arch/m68k/include/asm/m528xsim.h
diff --git a/arch/m68knommu/include/asm/m5307sim.h b/arch/m68k/include/asm/m5307sim.h
index 5886728409c0..5886728409c0 100644
--- a/arch/m68knommu/include/asm/m5307sim.h
+++ b/arch/m68k/include/asm/m5307sim.h
diff --git a/arch/m68knommu/include/asm/m532xsim.h b/arch/m68k/include/asm/m532xsim.h
index 1835fd20a82c..1835fd20a82c 100644
--- a/arch/m68knommu/include/asm/m532xsim.h
+++ b/arch/m68k/include/asm/m532xsim.h
diff --git a/arch/m68knommu/include/asm/m5407sim.h b/arch/m68k/include/asm/m5407sim.h
index cc22c4a53005..cc22c4a53005 100644
--- a/arch/m68knommu/include/asm/m5407sim.h
+++ b/arch/m68k/include/asm/m5407sim.h
diff --git a/arch/m68knommu/include/asm/m68360.h b/arch/m68k/include/asm/m68360.h
index eb7d39ef2855..eb7d39ef2855 100644
--- a/arch/m68knommu/include/asm/m68360.h
+++ b/arch/m68k/include/asm/m68360.h
diff --git a/arch/m68knommu/include/asm/m68360_enet.h b/arch/m68k/include/asm/m68360_enet.h
index c36f4d059203..c36f4d059203 100644
--- a/arch/m68knommu/include/asm/m68360_enet.h
+++ b/arch/m68k/include/asm/m68360_enet.h
diff --git a/arch/m68knommu/include/asm/m68360_pram.h b/arch/m68k/include/asm/m68360_pram.h
index e6088bbce93d..e6088bbce93d 100644
--- a/arch/m68knommu/include/asm/m68360_pram.h
+++ b/arch/m68k/include/asm/m68360_pram.h
diff --git a/arch/m68knommu/include/asm/m68360_quicc.h b/arch/m68k/include/asm/m68360_quicc.h
index 6d40f4d18e10..6d40f4d18e10 100644
--- a/arch/m68knommu/include/asm/m68360_quicc.h
+++ b/arch/m68k/include/asm/m68360_quicc.h
diff --git a/arch/m68knommu/include/asm/m68360_regs.h b/arch/m68k/include/asm/m68360_regs.h
index d57217ca4f27..d57217ca4f27 100644
--- a/arch/m68knommu/include/asm/m68360_regs.h
+++ b/arch/m68k/include/asm/m68360_regs.h
diff --git a/include/asm-m68k/mac_asc.h b/arch/m68k/include/asm/mac_asc.h
index fc2e5467b41e..fc2e5467b41e 100644
--- a/include/asm-m68k/mac_asc.h
+++ b/arch/m68k/include/asm/mac_asc.h
diff --git a/include/asm-m68k/mac_baboon.h b/arch/m68k/include/asm/mac_baboon.h
index c2a042b8c349..c2a042b8c349 100644
--- a/include/asm-m68k/mac_baboon.h
+++ b/arch/m68k/include/asm/mac_baboon.h
diff --git a/include/asm-m68k/mac_iop.h b/arch/m68k/include/asm/mac_iop.h
index a2c7e6fcca38..a2c7e6fcca38 100644
--- a/include/asm-m68k/mac_iop.h
+++ b/arch/m68k/include/asm/mac_iop.h
diff --git a/include/asm-m68k/mac_mouse.h b/arch/m68k/include/asm/mac_mouse.h
index 39a5c292eaee..39a5c292eaee 100644
--- a/include/asm-m68k/mac_mouse.h
+++ b/arch/m68k/include/asm/mac_mouse.h
diff --git a/include/asm-m68k/mac_oss.h b/arch/m68k/include/asm/mac_oss.h
index 7221f7251934..7221f7251934 100644
--- a/include/asm-m68k/mac_oss.h
+++ b/arch/m68k/include/asm/mac_oss.h
diff --git a/include/asm-m68k/mac_psc.h b/arch/m68k/include/asm/mac_psc.h
index 7808bb0b2323..7808bb0b2323 100644
--- a/include/asm-m68k/mac_psc.h
+++ b/arch/m68k/include/asm/mac_psc.h
diff --git a/include/asm-m68k/mac_via.h b/arch/m68k/include/asm/mac_via.h
index 39afb438b656..39afb438b656 100644
--- a/include/asm-m68k/mac_via.h
+++ b/arch/m68k/include/asm/mac_via.h
diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h
new file mode 100644
index 000000000000..fc24b6fc5508
--- /dev/null
+++ b/arch/m68k/include/asm/machdep.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "machdep_no.h"
3#else
4#include "machdep_mm.h"
5#endif
diff --git a/include/asm-m68k/machdep.h b/arch/m68k/include/asm/machdep_mm.h
index 5637dcef314e..5637dcef314e 100644
--- a/include/asm-m68k/machdep.h
+++ b/arch/m68k/include/asm/machdep_mm.h
diff --git a/arch/m68knommu/include/asm/machdep.h b/arch/m68k/include/asm/machdep_no.h
index de9f47a51cc2..de9f47a51cc2 100644
--- a/arch/m68knommu/include/asm/machdep.h
+++ b/arch/m68k/include/asm/machdep_no.h
diff --git a/include/asm-m68k/machines.h b/arch/m68k/include/asm/machines.h
index be667e84f01b..be667e84f01b 100644
--- a/include/asm-m68k/machines.h
+++ b/arch/m68k/include/asm/machines.h
diff --git a/include/asm-m68k/machw.h b/arch/m68k/include/asm/machw.h
index 2b4de0c2ce4a..2b4de0c2ce4a 100644
--- a/include/asm-m68k/machw.h
+++ b/arch/m68k/include/asm/machw.h
diff --git a/include/asm-m68k/macintosh.h b/arch/m68k/include/asm/macintosh.h
index 05309f7e3d06..05309f7e3d06 100644
--- a/include/asm-m68k/macintosh.h
+++ b/arch/m68k/include/asm/macintosh.h
diff --git a/include/asm-m68k/macints.h b/arch/m68k/include/asm/macints.h
index 679c48ab4407..679c48ab4407 100644
--- a/include/asm-m68k/macints.h
+++ b/arch/m68k/include/asm/macints.h
diff --git a/include/asm-m68k/math-emu.h b/arch/m68k/include/asm/math-emu.h
index ddfab96403cb..ddfab96403cb 100644
--- a/include/asm-m68k/math-emu.h
+++ b/arch/m68k/include/asm/math-emu.h
diff --git a/arch/m68k/include/asm/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc.h
new file mode 100644
index 000000000000..fb90dcf78426
--- /dev/null
+++ b/arch/m68k/include/asm/mc146818rtc.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "mc146818rtc_no.h"
3#else
4#include "mc146818rtc_mm.h"
5#endif
diff --git a/include/asm-m68k/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc_mm.h
index 9f70a01f73dc..9f70a01f73dc 100644
--- a/include/asm-m68k/mc146818rtc.h
+++ b/arch/m68k/include/asm/mc146818rtc_mm.h
diff --git a/arch/m68knommu/include/asm/mc146818rtc.h b/arch/m68k/include/asm/mc146818rtc_no.h
index 907a0481a140..907a0481a140 100644
--- a/arch/m68knommu/include/asm/mc146818rtc.h
+++ b/arch/m68k/include/asm/mc146818rtc_no.h
diff --git a/arch/m68knommu/include/asm/mcfcache.h b/arch/m68k/include/asm/mcfcache.h
index c042634fadaa..c042634fadaa 100644
--- a/arch/m68knommu/include/asm/mcfcache.h
+++ b/arch/m68k/include/asm/mcfcache.h
diff --git a/arch/m68knommu/include/asm/mcfdma.h b/arch/m68k/include/asm/mcfdma.h
index 705c52c79cd8..705c52c79cd8 100644
--- a/arch/m68knommu/include/asm/mcfdma.h
+++ b/arch/m68k/include/asm/mcfdma.h
diff --git a/arch/m68knommu/include/asm/mcfmbus.h b/arch/m68k/include/asm/mcfmbus.h
index 319899c47a2c..319899c47a2c 100644
--- a/arch/m68knommu/include/asm/mcfmbus.h
+++ b/arch/m68k/include/asm/mcfmbus.h
diff --git a/arch/m68knommu/include/asm/mcfne.h b/arch/m68k/include/asm/mcfne.h
index 431f63aadd0e..431f63aadd0e 100644
--- a/arch/m68knommu/include/asm/mcfne.h
+++ b/arch/m68k/include/asm/mcfne.h
diff --git a/arch/m68knommu/include/asm/mcfpci.h b/arch/m68k/include/asm/mcfpci.h
index f1507dd06ec6..f1507dd06ec6 100644
--- a/arch/m68knommu/include/asm/mcfpci.h
+++ b/arch/m68k/include/asm/mcfpci.h
diff --git a/arch/m68knommu/include/asm/mcfpit.h b/arch/m68k/include/asm/mcfpit.h
index f570cf64fd29..f570cf64fd29 100644
--- a/arch/m68knommu/include/asm/mcfpit.h
+++ b/arch/m68k/include/asm/mcfpit.h
diff --git a/arch/m68knommu/include/asm/mcfsim.h b/arch/m68k/include/asm/mcfsim.h
index da3f2ceff3a4..da3f2ceff3a4 100644
--- a/arch/m68knommu/include/asm/mcfsim.h
+++ b/arch/m68k/include/asm/mcfsim.h
diff --git a/arch/m68knommu/include/asm/mcfsmc.h b/arch/m68k/include/asm/mcfsmc.h
index 2d7a4dbd9683..2d7a4dbd9683 100644
--- a/arch/m68knommu/include/asm/mcfsmc.h
+++ b/arch/m68k/include/asm/mcfsmc.h
diff --git a/arch/m68knommu/include/asm/mcftimer.h b/arch/m68k/include/asm/mcftimer.h
index 0f90f6d2227a..0f90f6d2227a 100644
--- a/arch/m68knommu/include/asm/mcftimer.h
+++ b/arch/m68k/include/asm/mcftimer.h
diff --git a/arch/m68knommu/include/asm/mcfuart.h b/arch/m68k/include/asm/mcfuart.h
index ef2293873612..ef2293873612 100644
--- a/arch/m68knommu/include/asm/mcfuart.h
+++ b/arch/m68k/include/asm/mcfuart.h
diff --git a/arch/m68knommu/include/asm/mcfwdebug.h b/arch/m68k/include/asm/mcfwdebug.h
index 27f70e45d700..27f70e45d700 100644
--- a/arch/m68knommu/include/asm/mcfwdebug.h
+++ b/arch/m68k/include/asm/mcfwdebug.h
diff --git a/include/asm-m68k/md.h b/arch/m68k/include/asm/md.h
index d2f78f226f3d..d2f78f226f3d 100644
--- a/include/asm-m68k/md.h
+++ b/arch/m68k/include/asm/md.h
diff --git a/include/asm-m68k/mman.h b/arch/m68k/include/asm/mman.h
index 1626d37f4898..1626d37f4898 100644
--- a/include/asm-m68k/mman.h
+++ b/arch/m68k/include/asm/mman.h
diff --git a/arch/m68k/include/asm/mmu.h b/arch/m68k/include/asm/mmu.h
new file mode 100644
index 000000000000..a81d3946675f
--- /dev/null
+++ b/arch/m68k/include/asm/mmu.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "mmu_no.h"
3#else
4#include "mmu_mm.h"
5#endif
diff --git a/arch/m68k/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context.h
new file mode 100644
index 000000000000..b440928fc6c7
--- /dev/null
+++ b/arch/m68k/include/asm/mmu_context.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "mmu_context_no.h"
3#else
4#include "mmu_context_mm.h"
5#endif
diff --git a/include/asm-m68k/mmu_context.h b/arch/m68k/include/asm/mmu_context_mm.h
index 894dacbcee14..894dacbcee14 100644
--- a/include/asm-m68k/mmu_context.h
+++ b/arch/m68k/include/asm/mmu_context_mm.h
diff --git a/arch/m68knommu/include/asm/mmu_context.h b/arch/m68k/include/asm/mmu_context_no.h
index 9ccee4278c97..9ccee4278c97 100644
--- a/arch/m68knommu/include/asm/mmu_context.h
+++ b/arch/m68k/include/asm/mmu_context_no.h
diff --git a/include/asm-m68k/mmu.h b/arch/m68k/include/asm/mmu_mm.h
index ccd36d26615a..ccd36d26615a 100644
--- a/include/asm-m68k/mmu.h
+++ b/arch/m68k/include/asm/mmu_mm.h
diff --git a/arch/m68knommu/include/asm/mmu.h b/arch/m68k/include/asm/mmu_no.h
index e2da1e6f09fe..e2da1e6f09fe 100644
--- a/arch/m68knommu/include/asm/mmu.h
+++ b/arch/m68k/include/asm/mmu_no.h
diff --git a/include/asm-m68k/mmzone.h b/arch/m68k/include/asm/mmzone.h
index e1f1ec7b7006..e1f1ec7b7006 100644
--- a/include/asm-m68k/mmzone.h
+++ b/arch/m68k/include/asm/mmzone.h
diff --git a/arch/m68k/include/asm/module.h b/arch/m68k/include/asm/module.h
new file mode 100644
index 000000000000..79b59d137dd0
--- /dev/null
+++ b/arch/m68k/include/asm/module.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "module_no.h"
3#else
4#include "module_mm.h"
5#endif
diff --git a/include/asm-m68k/module.h b/arch/m68k/include/asm/module_mm.h
index 382d20a6fc18..382d20a6fc18 100644
--- a/include/asm-m68k/module.h
+++ b/arch/m68k/include/asm/module_mm.h
diff --git a/arch/m68knommu/include/asm/module.h b/arch/m68k/include/asm/module_no.h
index 2e45ab50b232..2e45ab50b232 100644
--- a/arch/m68knommu/include/asm/module.h
+++ b/arch/m68k/include/asm/module_no.h
diff --git a/include/asm-m68k/motorola_pgalloc.h b/arch/m68k/include/asm/motorola_pgalloc.h
index d08bf6261df8..d08bf6261df8 100644
--- a/include/asm-m68k/motorola_pgalloc.h
+++ b/arch/m68k/include/asm/motorola_pgalloc.h
diff --git a/include/asm-m68k/motorola_pgtable.h b/arch/m68k/include/asm/motorola_pgtable.h
index 8e9a8a754dde..8e9a8a754dde 100644
--- a/include/asm-m68k/motorola_pgtable.h
+++ b/arch/m68k/include/asm/motorola_pgtable.h
diff --git a/include/asm-m68k/movs.h b/arch/m68k/include/asm/movs.h
index 67dbea36960f..67dbea36960f 100644
--- a/include/asm-m68k/movs.h
+++ b/arch/m68k/include/asm/movs.h
diff --git a/include/asm-m68k/msgbuf.h b/arch/m68k/include/asm/msgbuf.h
index 243cb798de8f..243cb798de8f 100644
--- a/include/asm-m68k/msgbuf.h
+++ b/arch/m68k/include/asm/msgbuf.h
diff --git a/arch/m68knommu/include/asm/mutex.h b/arch/m68k/include/asm/mutex.h
index 458c1f7fbc18..458c1f7fbc18 100644
--- a/arch/m68knommu/include/asm/mutex.h
+++ b/arch/m68k/include/asm/mutex.h
diff --git a/include/asm-m68k/mvme147hw.h b/arch/m68k/include/asm/mvme147hw.h
index b81043108472..b81043108472 100644
--- a/include/asm-m68k/mvme147hw.h
+++ b/arch/m68k/include/asm/mvme147hw.h
diff --git a/include/asm-m68k/mvme16xhw.h b/arch/m68k/include/asm/mvme16xhw.h
index 6117f56653d2..6117f56653d2 100644
--- a/include/asm-m68k/mvme16xhw.h
+++ b/arch/m68k/include/asm/mvme16xhw.h
diff --git a/arch/m68knommu/include/asm/nettel.h b/arch/m68k/include/asm/nettel.h
index 0299f6a2deeb..0299f6a2deeb 100644
--- a/arch/m68knommu/include/asm/nettel.h
+++ b/arch/m68k/include/asm/nettel.h
diff --git a/include/asm-m68k/nubus.h b/arch/m68k/include/asm/nubus.h
index d6be9976f1ae..d6be9976f1ae 100644
--- a/include/asm-m68k/nubus.h
+++ b/arch/m68k/include/asm/nubus.h
diff --git a/include/asm-m68k/openprom.h b/arch/m68k/include/asm/openprom.h
index d33cdadf78e1..d33cdadf78e1 100644
--- a/include/asm-m68k/openprom.h
+++ b/arch/m68k/include/asm/openprom.h
diff --git a/include/asm-m68k/oplib.h b/arch/m68k/include/asm/oplib.h
index f082d03336bd..f082d03336bd 100644
--- a/include/asm-m68k/oplib.h
+++ b/arch/m68k/include/asm/oplib.h
diff --git a/arch/m68k/include/asm/page.h b/arch/m68k/include/asm/page.h
new file mode 100644
index 000000000000..f2b4480cc98a
--- /dev/null
+++ b/arch/m68k/include/asm/page.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "page_no.h"
3#else
4#include "page_mm.h"
5#endif
diff --git a/include/asm-m68k/page.h b/arch/m68k/include/asm/page_mm.h
index a34b8bad7847..a34b8bad7847 100644
--- a/include/asm-m68k/page.h
+++ b/arch/m68k/include/asm/page_mm.h
diff --git a/arch/m68knommu/include/asm/page.h b/arch/m68k/include/asm/page_no.h
index 3a1ede4544cb..3a1ede4544cb 100644
--- a/arch/m68knommu/include/asm/page.h
+++ b/arch/m68k/include/asm/page_no.h
diff --git a/arch/m68k/include/asm/page_offset.h b/arch/m68k/include/asm/page_offset.h
new file mode 100644
index 000000000000..66455c849fbb
--- /dev/null
+++ b/arch/m68k/include/asm/page_offset.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "page_offset_no.h"
3#else
4#include "page_offset_mm.h"
5#endif
diff --git a/include/asm-m68k/page_offset.h b/arch/m68k/include/asm/page_offset_mm.h
index 1cbdb7f30ac2..1cbdb7f30ac2 100644
--- a/include/asm-m68k/page_offset.h
+++ b/arch/m68k/include/asm/page_offset_mm.h
diff --git a/arch/m68knommu/include/asm/page_offset.h b/arch/m68k/include/asm/page_offset_no.h
index d4e73e0ba646..d4e73e0ba646 100644
--- a/arch/m68knommu/include/asm/page_offset.h
+++ b/arch/m68k/include/asm/page_offset_no.h
diff --git a/arch/m68k/include/asm/param.h b/arch/m68k/include/asm/param.h
new file mode 100644
index 000000000000..40d1112a4588
--- /dev/null
+++ b/arch/m68k/include/asm/param.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "param_no.h"
3#else
4#include "param_mm.h"
5#endif
diff --git a/include/asm-m68k/param.h b/arch/m68k/include/asm/param_mm.h
index 536a27888358..536a27888358 100644
--- a/include/asm-m68k/param.h
+++ b/arch/m68k/include/asm/param_mm.h
diff --git a/arch/m68knommu/include/asm/param.h b/arch/m68k/include/asm/param_no.h
index 6044397adb64..6044397adb64 100644
--- a/arch/m68knommu/include/asm/param.h
+++ b/arch/m68k/include/asm/param_no.h
diff --git a/include/asm-m68k/parport.h b/arch/m68k/include/asm/parport.h
index 646b1872f73b..646b1872f73b 100644
--- a/include/asm-m68k/parport.h
+++ b/arch/m68k/include/asm/parport.h
diff --git a/arch/m68k/include/asm/pci.h b/arch/m68k/include/asm/pci.h
new file mode 100644
index 000000000000..dbea95373080
--- /dev/null
+++ b/arch/m68k/include/asm/pci.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "pci_no.h"
3#else
4#include "pci_mm.h"
5#endif
diff --git a/include/asm-m68k/pci.h b/arch/m68k/include/asm/pci_mm.h
index 4ad0aea48ab4..4ad0aea48ab4 100644
--- a/include/asm-m68k/pci.h
+++ b/arch/m68k/include/asm/pci_mm.h
diff --git a/arch/m68knommu/include/asm/pci.h b/arch/m68k/include/asm/pci_no.h
index a13f3cc87451..9abbc03c73ee 100644
--- a/arch/m68knommu/include/asm/pci.h
+++ b/arch/m68k/include/asm/pci_no.h
@@ -1,7 +1,7 @@
1#ifndef M68KNOMMU_PCI_H 1#ifndef M68KNOMMU_PCI_H
2#define M68KNOMMU_PCI_H 2#define M68KNOMMU_PCI_H
3 3
4#include <asm-m68k/pci.h> 4#include <asm/pci_mm.h>
5 5
6#ifdef CONFIG_COMEMPCI 6#ifdef CONFIG_COMEMPCI
7/* 7/*
diff --git a/include/asm-m68k/percpu.h b/arch/m68k/include/asm/percpu.h
index 0859d048faf5..0859d048faf5 100644
--- a/include/asm-m68k/percpu.h
+++ b/arch/m68k/include/asm/percpu.h
diff --git a/arch/m68k/include/asm/pgalloc.h b/arch/m68k/include/asm/pgalloc.h
new file mode 100644
index 000000000000..059cb73e78fc
--- /dev/null
+++ b/arch/m68k/include/asm/pgalloc.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "pgalloc_no.h"
3#else
4#include "pgalloc_mm.h"
5#endif
diff --git a/include/asm-m68k/pgalloc.h b/arch/m68k/include/asm/pgalloc_mm.h
index 4cb1a57ab763..4cb1a57ab763 100644
--- a/include/asm-m68k/pgalloc.h
+++ b/arch/m68k/include/asm/pgalloc_mm.h
diff --git a/arch/m68knommu/include/asm/pgalloc.h b/arch/m68k/include/asm/pgalloc_no.h
index d6352f671ec0..d6352f671ec0 100644
--- a/arch/m68knommu/include/asm/pgalloc.h
+++ b/arch/m68k/include/asm/pgalloc_no.h
diff --git a/arch/m68k/include/asm/pgtable.h b/arch/m68k/include/asm/pgtable.h
new file mode 100644
index 000000000000..ee6759eb445a
--- /dev/null
+++ b/arch/m68k/include/asm/pgtable.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "pgtable_no.h"
3#else
4#include "pgtable_mm.h"
5#endif
diff --git a/include/asm-m68k/pgtable.h b/arch/m68k/include/asm/pgtable_mm.h
index 0b604f0f192d..0b604f0f192d 100644
--- a/include/asm-m68k/pgtable.h
+++ b/arch/m68k/include/asm/pgtable_mm.h
diff --git a/arch/m68knommu/include/asm/pgtable.h b/arch/m68k/include/asm/pgtable_no.h
index 46251016e821..46251016e821 100644
--- a/arch/m68knommu/include/asm/pgtable.h
+++ b/arch/m68k/include/asm/pgtable_no.h
diff --git a/include/asm-m68k/poll.h b/arch/m68k/include/asm/poll.h
index f080fcdb61bf..f080fcdb61bf 100644
--- a/include/asm-m68k/poll.h
+++ b/arch/m68k/include/asm/poll.h
diff --git a/include/asm-m68k/posix_types.h b/arch/m68k/include/asm/posix_types.h
index 63cdcc142d93..63cdcc142d93 100644
--- a/include/asm-m68k/posix_types.h
+++ b/arch/m68k/include/asm/posix_types.h
diff --git a/arch/m68k/include/asm/processor.h b/arch/m68k/include/asm/processor.h
new file mode 100644
index 000000000000..fc3f2c22f2b8
--- /dev/null
+++ b/arch/m68k/include/asm/processor.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "processor_no.h"
3#else
4#include "processor_mm.h"
5#endif
diff --git a/include/asm-m68k/processor.h b/arch/m68k/include/asm/processor_mm.h
index 1f61ef53f0e0..1f61ef53f0e0 100644
--- a/include/asm-m68k/processor.h
+++ b/arch/m68k/include/asm/processor_mm.h
diff --git a/arch/m68knommu/include/asm/processor.h b/arch/m68k/include/asm/processor_no.h
index 91cba18acdd3..91cba18acdd3 100644
--- a/arch/m68knommu/include/asm/processor.h
+++ b/arch/m68k/include/asm/processor_no.h
diff --git a/arch/m68k/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace.h
new file mode 100644
index 000000000000..e83cd2f66101
--- /dev/null
+++ b/arch/m68k/include/asm/ptrace.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "ptrace_no.h"
3#else
4#include "ptrace_mm.h"
5#endif
diff --git a/include/asm-m68k/ptrace.h b/arch/m68k/include/asm/ptrace_mm.h
index 57e763d79bf4..57e763d79bf4 100644
--- a/include/asm-m68k/ptrace.h
+++ b/arch/m68k/include/asm/ptrace_mm.h
diff --git a/arch/m68knommu/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace_no.h
index 8c9194b98548..8c9194b98548 100644
--- a/arch/m68knommu/include/asm/ptrace.h
+++ b/arch/m68k/include/asm/ptrace_no.h
diff --git a/include/asm-m68k/q40_master.h b/arch/m68k/include/asm/q40_master.h
index 3907a09d4fca..3907a09d4fca 100644
--- a/include/asm-m68k/q40_master.h
+++ b/arch/m68k/include/asm/q40_master.h
diff --git a/include/asm-m68k/q40ints.h b/arch/m68k/include/asm/q40ints.h
index 3d970afb708f..3d970afb708f 100644
--- a/include/asm-m68k/q40ints.h
+++ b/arch/m68k/include/asm/q40ints.h
diff --git a/arch/m68knommu/include/asm/quicc_simple.h b/arch/m68k/include/asm/quicc_simple.h
index c3636932d4bc..c3636932d4bc 100644
--- a/arch/m68knommu/include/asm/quicc_simple.h
+++ b/arch/m68k/include/asm/quicc_simple.h
diff --git a/include/asm-m68k/raw_io.h b/arch/m68k/include/asm/raw_io.h
index d9eb9834ccc8..d9eb9834ccc8 100644
--- a/include/asm-m68k/raw_io.h
+++ b/arch/m68k/include/asm/raw_io.h
diff --git a/include/asm-m68k/resource.h b/arch/m68k/include/asm/resource.h
index e7d35019f337..e7d35019f337 100644
--- a/include/asm-m68k/resource.h
+++ b/arch/m68k/include/asm/resource.h
diff --git a/include/asm-m68k/rtc.h b/arch/m68k/include/asm/rtc.h
index 5d3e03859844..5d3e03859844 100644
--- a/include/asm-m68k/rtc.h
+++ b/arch/m68k/include/asm/rtc.h
diff --git a/include/asm-m68k/sbus.h b/arch/m68k/include/asm/sbus.h
index bfe3ba147f2e..bfe3ba147f2e 100644
--- a/include/asm-m68k/sbus.h
+++ b/arch/m68k/include/asm/sbus.h
diff --git a/arch/m68k/include/asm/scatterlist.h b/arch/m68k/include/asm/scatterlist.h
new file mode 100644
index 000000000000..b7e528636252
--- /dev/null
+++ b/arch/m68k/include/asm/scatterlist.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "scatterlist_no.h"
3#else
4#include "scatterlist_mm.h"
5#endif
diff --git a/include/asm-m68k/scatterlist.h b/arch/m68k/include/asm/scatterlist_mm.h
index d3a7a0edfeca..d3a7a0edfeca 100644
--- a/include/asm-m68k/scatterlist.h
+++ b/arch/m68k/include/asm/scatterlist_mm.h
diff --git a/arch/m68knommu/include/asm/scatterlist.h b/arch/m68k/include/asm/scatterlist_no.h
index afc4788b0d2c..afc4788b0d2c 100644
--- a/arch/m68knommu/include/asm/scatterlist.h
+++ b/arch/m68k/include/asm/scatterlist_no.h
diff --git a/include/asm-m68k/sections.h b/arch/m68k/include/asm/sections.h
index d64967ecfec6..d64967ecfec6 100644
--- a/include/asm-m68k/sections.h
+++ b/arch/m68k/include/asm/sections.h
diff --git a/arch/m68k/include/asm/segment.h b/arch/m68k/include/asm/segment.h
new file mode 100644
index 000000000000..82583bc004bd
--- /dev/null
+++ b/arch/m68k/include/asm/segment.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "segment_no.h"
3#else
4#include "segment_mm.h"
5#endif
diff --git a/include/asm-m68k/segment.h b/arch/m68k/include/asm/segment_mm.h
index 7b0b2d3127f9..7b0b2d3127f9 100644
--- a/include/asm-m68k/segment.h
+++ b/arch/m68k/include/asm/segment_mm.h
diff --git a/arch/m68knommu/include/asm/segment.h b/arch/m68k/include/asm/segment_no.h
index 42318ebec7ec..42318ebec7ec 100644
--- a/arch/m68knommu/include/asm/segment.h
+++ b/arch/m68k/include/asm/segment_no.h
diff --git a/include/asm-m68k/sembuf.h b/arch/m68k/include/asm/sembuf.h
index 2308052a8c24..2308052a8c24 100644
--- a/include/asm-m68k/sembuf.h
+++ b/arch/m68k/include/asm/sembuf.h
diff --git a/include/asm-m68k/serial.h b/arch/m68k/include/asm/serial.h
index 2b90d6e69070..2b90d6e69070 100644
--- a/include/asm-m68k/serial.h
+++ b/arch/m68k/include/asm/serial.h
diff --git a/arch/m68k/include/asm/setup.h b/arch/m68k/include/asm/setup.h
new file mode 100644
index 000000000000..842f86f75ccd
--- /dev/null
+++ b/arch/m68k/include/asm/setup.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "setup_no.h"
3#else
4#include "setup_mm.h"
5#endif
diff --git a/include/asm-m68k/setup.h b/arch/m68k/include/asm/setup_mm.h
index 4dfb3952b375..4dfb3952b375 100644
--- a/include/asm-m68k/setup.h
+++ b/arch/m68k/include/asm/setup_mm.h
diff --git a/arch/m68knommu/include/asm/setup.h b/arch/m68k/include/asm/setup_no.h
index fb86bb2a6078..45d286ce9398 100644
--- a/arch/m68knommu/include/asm/setup.h
+++ b/arch/m68k/include/asm/setup_no.h
@@ -1,6 +1,6 @@
1#ifdef __KERNEL__ 1#ifdef __KERNEL__
2 2
3#include <asm-m68k/setup.h> 3#include <asm/setup_mm.h>
4 4
5/* We have a bigger command line buffer. */ 5/* We have a bigger command line buffer. */
6#undef COMMAND_LINE_SIZE 6#undef COMMAND_LINE_SIZE
diff --git a/include/asm-m68k/shm.h b/arch/m68k/include/asm/shm.h
index fa56ec84a126..fa56ec84a126 100644
--- a/include/asm-m68k/shm.h
+++ b/arch/m68k/include/asm/shm.h
diff --git a/include/asm-m68k/shmbuf.h b/arch/m68k/include/asm/shmbuf.h
index f8928d62f1b7..f8928d62f1b7 100644
--- a/include/asm-m68k/shmbuf.h
+++ b/arch/m68k/include/asm/shmbuf.h
diff --git a/include/asm-m68k/shmparam.h b/arch/m68k/include/asm/shmparam.h
index 558892a2efb3..558892a2efb3 100644
--- a/include/asm-m68k/shmparam.h
+++ b/arch/m68k/include/asm/shmparam.h
diff --git a/arch/m68k/include/asm/sigcontext.h b/arch/m68k/include/asm/sigcontext.h
new file mode 100644
index 000000000000..bff6d40345a9
--- /dev/null
+++ b/arch/m68k/include/asm/sigcontext.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "sigcontext_no.h"
3#else
4#include "sigcontext_mm.h"
5#endif
diff --git a/include/asm-m68k/sigcontext.h b/arch/m68k/include/asm/sigcontext_mm.h
index 64fbe34cf26f..64fbe34cf26f 100644
--- a/include/asm-m68k/sigcontext.h
+++ b/arch/m68k/include/asm/sigcontext_mm.h
diff --git a/arch/m68knommu/include/asm/sigcontext.h b/arch/m68k/include/asm/sigcontext_no.h
index 36c293fc133d..36c293fc133d 100644
--- a/arch/m68knommu/include/asm/sigcontext.h
+++ b/arch/m68k/include/asm/sigcontext_no.h
diff --git a/arch/m68k/include/asm/siginfo.h b/arch/m68k/include/asm/siginfo.h
new file mode 100644
index 000000000000..61219d7affc8
--- /dev/null
+++ b/arch/m68k/include/asm/siginfo.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "siginfo_no.h"
3#else
4#include "siginfo_mm.h"
5#endif
diff --git a/include/asm-m68k/siginfo.h b/arch/m68k/include/asm/siginfo_mm.h
index 05a8d6d90b58..05a8d6d90b58 100644
--- a/include/asm-m68k/siginfo.h
+++ b/arch/m68k/include/asm/siginfo_mm.h
diff --git a/arch/m68knommu/include/asm/siginfo.h b/arch/m68k/include/asm/siginfo_no.h
index b18e5f4064ae..b18e5f4064ae 100644
--- a/arch/m68knommu/include/asm/siginfo.h
+++ b/arch/m68k/include/asm/siginfo_no.h
diff --git a/arch/m68k/include/asm/signal.h b/arch/m68k/include/asm/signal.h
new file mode 100644
index 000000000000..3c19988bd93c
--- /dev/null
+++ b/arch/m68k/include/asm/signal.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "signal_no.h"
3#else
4#include "signal_mm.h"
5#endif
diff --git a/include/asm-m68k/signal.h b/arch/m68k/include/asm/signal_mm.h
index 3db8a81942f1..3db8a81942f1 100644
--- a/include/asm-m68k/signal.h
+++ b/arch/m68k/include/asm/signal_mm.h
diff --git a/arch/m68knommu/include/asm/signal.h b/arch/m68k/include/asm/signal_no.h
index 216c08be54a0..216c08be54a0 100644
--- a/arch/m68knommu/include/asm/signal.h
+++ b/arch/m68k/include/asm/signal_no.h
diff --git a/arch/m68knommu/include/asm/smp.h b/arch/m68k/include/asm/smp.h
index 9e9bd7e58922..9e9bd7e58922 100644
--- a/arch/m68knommu/include/asm/smp.h
+++ b/arch/m68k/include/asm/smp.h
diff --git a/include/asm-m68k/socket.h b/arch/m68k/include/asm/socket.h
index dbc64e92c41a..dbc64e92c41a 100644
--- a/include/asm-m68k/socket.h
+++ b/arch/m68k/include/asm/socket.h
diff --git a/include/asm-m68k/sockios.h b/arch/m68k/include/asm/sockios.h
index c04a23943cb7..c04a23943cb7 100644
--- a/include/asm-m68k/sockios.h
+++ b/arch/m68k/include/asm/sockios.h
diff --git a/include/asm-m68k/spinlock.h b/arch/m68k/include/asm/spinlock.h
index 20f46e27b534..20f46e27b534 100644
--- a/include/asm-m68k/spinlock.h
+++ b/arch/m68k/include/asm/spinlock.h
diff --git a/include/asm-m68k/stat.h b/arch/m68k/include/asm/stat.h
index dd38bc2e9f98..dd38bc2e9f98 100644
--- a/include/asm-m68k/stat.h
+++ b/arch/m68k/include/asm/stat.h
diff --git a/include/asm-m68k/statfs.h b/arch/m68k/include/asm/statfs.h
index 08d93f14e061..08d93f14e061 100644
--- a/include/asm-m68k/statfs.h
+++ b/arch/m68k/include/asm/statfs.h
diff --git a/arch/m68k/include/asm/string.h b/arch/m68k/include/asm/string.h
new file mode 100644
index 000000000000..2c356f90f171
--- /dev/null
+++ b/arch/m68k/include/asm/string.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "string_no.h"
3#else
4#include "string_mm.h"
5#endif
diff --git a/include/asm-m68k/string.h b/arch/m68k/include/asm/string_mm.h
index 2eb7df1e0f5d..2eb7df1e0f5d 100644
--- a/include/asm-m68k/string.h
+++ b/arch/m68k/include/asm/string_mm.h
diff --git a/arch/m68knommu/include/asm/string.h b/arch/m68k/include/asm/string_no.h
index af09e17000fc..af09e17000fc 100644
--- a/arch/m68knommu/include/asm/string.h
+++ b/arch/m68k/include/asm/string_no.h
diff --git a/include/asm-m68k/sun3-head.h b/arch/m68k/include/asm/sun3-head.h
index 05af2f18b3bd..05af2f18b3bd 100644
--- a/include/asm-m68k/sun3-head.h
+++ b/arch/m68k/include/asm/sun3-head.h
diff --git a/include/asm-m68k/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h
index d4c83f143816..d4c83f143816 100644
--- a/include/asm-m68k/sun3_pgalloc.h
+++ b/arch/m68k/include/asm/sun3_pgalloc.h
diff --git a/include/asm-m68k/sun3_pgtable.h b/arch/m68k/include/asm/sun3_pgtable.h
index f847ec732d62..f847ec732d62 100644
--- a/include/asm-m68k/sun3_pgtable.h
+++ b/arch/m68k/include/asm/sun3_pgtable.h
diff --git a/include/asm-m68k/sun3ints.h b/arch/m68k/include/asm/sun3ints.h
index 309d6e6a1374..309d6e6a1374 100644
--- a/include/asm-m68k/sun3ints.h
+++ b/arch/m68k/include/asm/sun3ints.h
diff --git a/include/asm-m68k/sun3mmu.h b/arch/m68k/include/asm/sun3mmu.h
index d8f17a0d8c9f..d8f17a0d8c9f 100644
--- a/include/asm-m68k/sun3mmu.h
+++ b/arch/m68k/include/asm/sun3mmu.h
diff --git a/include/asm-m68k/sun3x.h b/arch/m68k/include/asm/sun3x.h
index f5691a1ed7cc..f5691a1ed7cc 100644
--- a/include/asm-m68k/sun3x.h
+++ b/arch/m68k/include/asm/sun3x.h
diff --git a/include/asm-m68k/sun3xflop.h b/arch/m68k/include/asm/sun3xflop.h
index 32c45f84ac60..32c45f84ac60 100644
--- a/include/asm-m68k/sun3xflop.h
+++ b/arch/m68k/include/asm/sun3xflop.h
diff --git a/include/asm-m68k/sun3xprom.h b/arch/m68k/include/asm/sun3xprom.h
index 6735efcf5f6d..6735efcf5f6d 100644
--- a/include/asm-m68k/sun3xprom.h
+++ b/arch/m68k/include/asm/sun3xprom.h
diff --git a/include/asm-m68k/suspend.h b/arch/m68k/include/asm/suspend.h
index 57b3ddb4d269..57b3ddb4d269 100644
--- a/include/asm-m68k/suspend.h
+++ b/arch/m68k/include/asm/suspend.h
diff --git a/arch/m68k/include/asm/swab.h b/arch/m68k/include/asm/swab.h
new file mode 100644
index 000000000000..7d7dde1c73ec
--- /dev/null
+++ b/arch/m68k/include/asm/swab.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "swab_no.h"
3#else
4#include "swab_mm.h"
5#endif
diff --git a/include/asm-m68k/swab.h b/arch/m68k/include/asm/swab_mm.h
index 7221e3066825..7221e3066825 100644
--- a/include/asm-m68k/swab.h
+++ b/arch/m68k/include/asm/swab_mm.h
diff --git a/arch/m68knommu/include/asm/swab.h b/arch/m68k/include/asm/swab_no.h
index e582257db300..e582257db300 100644
--- a/arch/m68knommu/include/asm/swab.h
+++ b/arch/m68k/include/asm/swab_no.h
diff --git a/arch/m68k/include/asm/system.h b/arch/m68k/include/asm/system.h
new file mode 100644
index 000000000000..ccea925ff4f5
--- /dev/null
+++ b/arch/m68k/include/asm/system.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "system_no.h"
3#else
4#include "system_mm.h"
5#endif
diff --git a/include/asm-m68k/system.h b/arch/m68k/include/asm/system_mm.h
index dbb6515ffd5b..dbb6515ffd5b 100644
--- a/include/asm-m68k/system.h
+++ b/arch/m68k/include/asm/system_mm.h
diff --git a/arch/m68knommu/include/asm/system.h b/arch/m68k/include/asm/system_no.h
index 40f49de69821..40f49de69821 100644
--- a/arch/m68knommu/include/asm/system.h
+++ b/arch/m68k/include/asm/system_no.h
diff --git a/include/asm-m68k/termbits.h b/arch/m68k/include/asm/termbits.h
index 8c14170996bb..8c14170996bb 100644
--- a/include/asm-m68k/termbits.h
+++ b/arch/m68k/include/asm/termbits.h
diff --git a/include/asm-m68k/termios.h b/arch/m68k/include/asm/termios.h
index 0823032e4045..0823032e4045 100644
--- a/include/asm-m68k/termios.h
+++ b/arch/m68k/include/asm/termios.h
diff --git a/arch/m68k/include/asm/thread_info.h b/arch/m68k/include/asm/thread_info.h
new file mode 100644
index 000000000000..f31a3f42b7b3
--- /dev/null
+++ b/arch/m68k/include/asm/thread_info.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "thread_info_no.h"
3#else
4#include "thread_info_mm.h"
5#endif
diff --git a/include/asm-m68k/thread_info.h b/arch/m68k/include/asm/thread_info_mm.h
index af0fda46e94b..af0fda46e94b 100644
--- a/include/asm-m68k/thread_info.h
+++ b/arch/m68k/include/asm/thread_info_mm.h
diff --git a/arch/m68knommu/include/asm/thread_info.h b/arch/m68k/include/asm/thread_info_no.h
index 82529f424ea3..82529f424ea3 100644
--- a/arch/m68knommu/include/asm/thread_info.h
+++ b/arch/m68k/include/asm/thread_info_no.h
diff --git a/arch/m68k/include/asm/timex.h b/arch/m68k/include/asm/timex.h
new file mode 100644
index 000000000000..719762980578
--- /dev/null
+++ b/arch/m68k/include/asm/timex.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "timex_no.h"
3#else
4#include "timex_mm.h"
5#endif
diff --git a/include/asm-m68k/timex.h b/arch/m68k/include/asm/timex_mm.h
index b87f2f278f67..b87f2f278f67 100644
--- a/include/asm-m68k/timex.h
+++ b/arch/m68k/include/asm/timex_mm.h
diff --git a/arch/m68knommu/include/asm/timex.h b/arch/m68k/include/asm/timex_no.h
index 109050f3fe91..109050f3fe91 100644
--- a/arch/m68knommu/include/asm/timex.h
+++ b/arch/m68k/include/asm/timex_no.h
diff --git a/include/asm-m68k/tlb.h b/arch/m68k/include/asm/tlb.h
index 1785cff73449..1785cff73449 100644
--- a/include/asm-m68k/tlb.h
+++ b/arch/m68k/include/asm/tlb.h
diff --git a/arch/m68k/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush.h
new file mode 100644
index 000000000000..b6f93b30951e
--- /dev/null
+++ b/arch/m68k/include/asm/tlbflush.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "tlbflush_no.h"
3#else
4#include "tlbflush_mm.h"
5#endif
diff --git a/include/asm-m68k/tlbflush.h b/arch/m68k/include/asm/tlbflush_mm.h
index acb6bf21a321..acb6bf21a321 100644
--- a/include/asm-m68k/tlbflush.h
+++ b/arch/m68k/include/asm/tlbflush_mm.h
diff --git a/arch/m68knommu/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush_no.h
index a470cfb803eb..a470cfb803eb 100644
--- a/arch/m68knommu/include/asm/tlbflush.h
+++ b/arch/m68k/include/asm/tlbflush_no.h
diff --git a/arch/m68knommu/include/asm/topology.h b/arch/m68k/include/asm/topology.h
index ca173e9f26ff..ca173e9f26ff 100644
--- a/arch/m68knommu/include/asm/topology.h
+++ b/arch/m68k/include/asm/topology.h
diff --git a/arch/m68k/include/asm/traps.h b/arch/m68k/include/asm/traps.h
new file mode 100644
index 000000000000..3011ec0f5365
--- /dev/null
+++ b/arch/m68k/include/asm/traps.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "traps_no.h"
3#else
4#include "traps_mm.h"
5#endif
diff --git a/include/asm-m68k/traps.h b/arch/m68k/include/asm/traps_mm.h
index 8caef25624c7..8caef25624c7 100644
--- a/include/asm-m68k/traps.h
+++ b/arch/m68k/include/asm/traps_mm.h
diff --git a/arch/m68knommu/include/asm/traps.h b/arch/m68k/include/asm/traps_no.h
index d0671e5f8e29..d0671e5f8e29 100644
--- a/arch/m68knommu/include/asm/traps.h
+++ b/arch/m68k/include/asm/traps_no.h
diff --git a/include/asm-m68k/types.h b/arch/m68k/include/asm/types.h
index 6441cb5f8e7c..6441cb5f8e7c 100644
--- a/include/asm-m68k/types.h
+++ b/arch/m68k/include/asm/types.h
diff --git a/arch/m68k/include/asm/uaccess.h b/arch/m68k/include/asm/uaccess.h
new file mode 100644
index 000000000000..38f92dbb9a45
--- /dev/null
+++ b/arch/m68k/include/asm/uaccess.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "uaccess_no.h"
3#else
4#include "uaccess_mm.h"
5#endif
diff --git a/include/asm-m68k/uaccess.h b/arch/m68k/include/asm/uaccess_mm.h
index 7107f3fbdbb6..7107f3fbdbb6 100644
--- a/include/asm-m68k/uaccess.h
+++ b/arch/m68k/include/asm/uaccess_mm.h
diff --git a/arch/m68knommu/include/asm/uaccess.h b/arch/m68k/include/asm/uaccess_no.h
index 68bbe9b312f1..68bbe9b312f1 100644
--- a/arch/m68knommu/include/asm/uaccess.h
+++ b/arch/m68k/include/asm/uaccess_no.h
diff --git a/arch/m68k/include/asm/ucontext.h b/arch/m68k/include/asm/ucontext.h
new file mode 100644
index 000000000000..b53cd160c0b3
--- /dev/null
+++ b/arch/m68k/include/asm/ucontext.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "ucontext_no.h"
3#else
4#include "ucontext_mm.h"
5#endif
diff --git a/include/asm-m68k/ucontext.h b/arch/m68k/include/asm/ucontext_mm.h
index e4e22669edc0..e4e22669edc0 100644
--- a/include/asm-m68k/ucontext.h
+++ b/arch/m68k/include/asm/ucontext_mm.h
diff --git a/arch/m68knommu/include/asm/ucontext.h b/arch/m68k/include/asm/ucontext_no.h
index 713a27f901cd..713a27f901cd 100644
--- a/arch/m68knommu/include/asm/ucontext.h
+++ b/arch/m68k/include/asm/ucontext_no.h
diff --git a/arch/m68k/include/asm/unaligned.h b/arch/m68k/include/asm/unaligned.h
new file mode 100644
index 000000000000..c640bba3bdf4
--- /dev/null
+++ b/arch/m68k/include/asm/unaligned.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "unaligned_no.h"
3#else
4#include "unaligned_mm.h"
5#endif
diff --git a/include/asm-m68k/unaligned.h b/arch/m68k/include/asm/unaligned_mm.h
index 77698f2dc33c..77698f2dc33c 100644
--- a/include/asm-m68k/unaligned.h
+++ b/arch/m68k/include/asm/unaligned_mm.h
diff --git a/arch/m68knommu/include/asm/unaligned.h b/arch/m68k/include/asm/unaligned_no.h
index eb1ea4cb9a59..eb1ea4cb9a59 100644
--- a/arch/m68knommu/include/asm/unaligned.h
+++ b/arch/m68k/include/asm/unaligned_no.h
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h
new file mode 100644
index 000000000000..df1d9d4cb1fd
--- /dev/null
+++ b/arch/m68k/include/asm/unistd.h
@@ -0,0 +1,5 @@
1#ifdef __uClinux__
2#include "unistd_no.h"
3#else
4#include "unistd_mm.h"
5#endif
diff --git a/include/asm-m68k/unistd.h b/arch/m68k/include/asm/unistd_mm.h
index 3c19027331fa..3c19027331fa 100644
--- a/include/asm-m68k/unistd.h
+++ b/arch/m68k/include/asm/unistd_mm.h
diff --git a/arch/m68knommu/include/asm/unistd.h b/arch/m68k/include/asm/unistd_no.h
index b034a2f7b444..b034a2f7b444 100644
--- a/arch/m68knommu/include/asm/unistd.h
+++ b/arch/m68k/include/asm/unistd_no.h
diff --git a/include/asm-m68k/user.h b/arch/m68k/include/asm/user.h
index f1f478d6e050..f1f478d6e050 100644
--- a/include/asm-m68k/user.h
+++ b/arch/m68k/include/asm/user.h
diff --git a/include/asm-m68k/virtconvert.h b/arch/m68k/include/asm/virtconvert.h
index 22ab05c9c52b..22ab05c9c52b 100644
--- a/include/asm-m68k/virtconvert.h
+++ b/arch/m68k/include/asm/virtconvert.h
diff --git a/include/asm-m68k/xor.h b/arch/m68k/include/asm/xor.h
index c82eb12a5b18..c82eb12a5b18 100644
--- a/include/asm-m68k/xor.h
+++ b/arch/m68k/include/asm/xor.h
diff --git a/include/asm-m68k/zorro.h b/arch/m68k/include/asm/zorro.h
index 5ce97c22b582..5ce97c22b582 100644
--- a/include/asm-m68k/zorro.h
+++ b/arch/m68k/include/asm/zorro.h
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
index 5b780826647c..5c332f2b9b83 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -513,7 +513,7 @@ sys_call_table:
513 .long sys_uselib 513 .long sys_uselib
514 .long sys_swapon 514 .long sys_swapon
515 .long sys_reboot 515 .long sys_reboot
516 .long old_readdir 516 .long sys_old_readdir
517 .long old_mmap /* 90 */ 517 .long old_mmap /* 90 */
518 .long sys_munmap 518 .long sys_munmap
519 .long sys_truncate 519 .long sys_truncate
diff --git a/arch/m68knommu/include/asm/Kbuild b/arch/m68knommu/include/asm/Kbuild
deleted file mode 100644
index 58c02a454130..000000000000
--- a/arch/m68knommu/include/asm/Kbuild
+++ /dev/null
@@ -1,3 +0,0 @@
1include include/asm-generic/Kbuild.asm
2
3unifdef-y += swab.h
diff --git a/arch/m68knommu/include/asm/byteorder.h b/arch/m68knommu/include/asm/byteorder.h
deleted file mode 100644
index a6f0b8f7f622..000000000000
--- a/arch/m68knommu/include/asm/byteorder.h
+++ /dev/null
@@ -1,7 +0,0 @@
1#ifndef _M68KNOMMU_BYTEORDER_H
2#define _M68KNOMMU_BYTEORDER_H
3
4#include <asm/swab.h>
5#include <linux/byteorder/big_endian.h>
6
7#endif /* _M68KNOMMU_BYTEORDER_H */
diff --git a/arch/m68knommu/include/asm/cachectl.h b/arch/m68knommu/include/asm/cachectl.h
deleted file mode 100644
index bcf5a6a9dd52..000000000000
--- a/arch/m68knommu/include/asm/cachectl.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/cachectl.h>
diff --git a/arch/m68knommu/include/asm/cputime.h b/arch/m68knommu/include/asm/cputime.h
deleted file mode 100644
index a0c4a660878d..000000000000
--- a/arch/m68knommu/include/asm/cputime.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef __M68KNOMMU_CPUTIME_H
2#define __M68KNOMMU_CPUTIME_H
3
4#include <asm-generic/cputime.h>
5
6#endif /* __M68KNOMMU_CPUTIME_H */
diff --git a/arch/m68knommu/include/asm/errno.h b/arch/m68knommu/include/asm/errno.h
deleted file mode 100644
index 7e8c22b9a5e6..000000000000
--- a/arch/m68knommu/include/asm/errno.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/errno.h>
diff --git a/arch/m68knommu/include/asm/fcntl.h b/arch/m68knommu/include/asm/fcntl.h
deleted file mode 100644
index f6a552cda4cd..000000000000
--- a/arch/m68knommu/include/asm/fcntl.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/fcntl.h>
diff --git a/arch/m68knommu/include/asm/hwtest.h b/arch/m68knommu/include/asm/hwtest.h
deleted file mode 100644
index 700626a1b1bf..000000000000
--- a/arch/m68knommu/include/asm/hwtest.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/hwtest.h>
diff --git a/arch/m68knommu/include/asm/ioctls.h b/arch/m68knommu/include/asm/ioctls.h
deleted file mode 100644
index 0b1eb4d85059..000000000000
--- a/arch/m68knommu/include/asm/ioctls.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/ioctls.h>
diff --git a/arch/m68knommu/include/asm/ipcbuf.h b/arch/m68knommu/include/asm/ipcbuf.h
deleted file mode 100644
index e4a7be6dd706..000000000000
--- a/arch/m68knommu/include/asm/ipcbuf.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/ipcbuf.h>
diff --git a/arch/m68knommu/include/asm/linkage.h b/arch/m68knommu/include/asm/linkage.h
deleted file mode 100644
index c288a19ff489..000000000000
--- a/arch/m68knommu/include/asm/linkage.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/linkage.h>
diff --git a/arch/m68knommu/include/asm/local.h b/arch/m68knommu/include/asm/local.h
deleted file mode 100644
index 84a39c1b86f8..000000000000
--- a/arch/m68knommu/include/asm/local.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef __M68KNOMMU_LOCAL_H
2#define __M68KNOMMU_LOCAL_H
3
4#include <asm-generic/local.h>
5
6#endif /* __M68KNOMMU_LOCAL_H */
diff --git a/arch/m68knommu/include/asm/math-emu.h b/arch/m68knommu/include/asm/math-emu.h
deleted file mode 100644
index 7e7090517b72..000000000000
--- a/arch/m68knommu/include/asm/math-emu.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/math-emu.h>
diff --git a/arch/m68knommu/include/asm/md.h b/arch/m68knommu/include/asm/md.h
deleted file mode 100644
index d810c78de5ff..000000000000
--- a/arch/m68knommu/include/asm/md.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/md.h>
diff --git a/arch/m68knommu/include/asm/mman.h b/arch/m68knommu/include/asm/mman.h
deleted file mode 100644
index 4846c682efed..000000000000
--- a/arch/m68knommu/include/asm/mman.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/mman.h>
diff --git a/arch/m68knommu/include/asm/movs.h b/arch/m68knommu/include/asm/movs.h
deleted file mode 100644
index 81a16779e833..000000000000
--- a/arch/m68knommu/include/asm/movs.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/movs.h>
diff --git a/arch/m68knommu/include/asm/msgbuf.h b/arch/m68knommu/include/asm/msgbuf.h
deleted file mode 100644
index bdfadec4d52d..000000000000
--- a/arch/m68knommu/include/asm/msgbuf.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/msgbuf.h>
diff --git a/arch/m68knommu/include/asm/openprom.h b/arch/m68knommu/include/asm/openprom.h
deleted file mode 100644
index fdba7953ff9f..000000000000
--- a/arch/m68knommu/include/asm/openprom.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/openprom.h>
diff --git a/arch/m68knommu/include/asm/oplib.h b/arch/m68knommu/include/asm/oplib.h
deleted file mode 100644
index ce079dc332d9..000000000000
--- a/arch/m68knommu/include/asm/oplib.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/oplib.h>
diff --git a/arch/m68knommu/include/asm/percpu.h b/arch/m68knommu/include/asm/percpu.h
deleted file mode 100644
index 5de72c327efd..000000000000
--- a/arch/m68knommu/include/asm/percpu.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef __ARCH_M68KNOMMU_PERCPU__
2#define __ARCH_M68KNOMMU_PERCPU__
3
4#include <asm-generic/percpu.h>
5
6#endif /* __ARCH_M68KNOMMU_PERCPU__ */
diff --git a/arch/m68knommu/include/asm/poll.h b/arch/m68knommu/include/asm/poll.h
deleted file mode 100644
index ee1b6cb549ca..000000000000
--- a/arch/m68knommu/include/asm/poll.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/poll.h>
diff --git a/arch/m68knommu/include/asm/posix_types.h b/arch/m68knommu/include/asm/posix_types.h
deleted file mode 100644
index 6205fb9392a3..000000000000
--- a/arch/m68knommu/include/asm/posix_types.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/posix_types.h>
diff --git a/arch/m68knommu/include/asm/resource.h b/arch/m68knommu/include/asm/resource.h
deleted file mode 100644
index 7fa63d5ea576..000000000000
--- a/arch/m68knommu/include/asm/resource.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/resource.h>
diff --git a/arch/m68knommu/include/asm/rtc.h b/arch/m68knommu/include/asm/rtc.h
deleted file mode 100644
index eaf18ec83c8e..000000000000
--- a/arch/m68knommu/include/asm/rtc.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/rtc.h>
diff --git a/arch/m68knommu/include/asm/sections.h b/arch/m68knommu/include/asm/sections.h
deleted file mode 100644
index dd0ecb98ec08..000000000000
--- a/arch/m68knommu/include/asm/sections.h
+++ /dev/null
@@ -1,7 +0,0 @@
1#ifndef _M68KNOMMU_SECTIONS_H
2#define _M68KNOMMU_SECTIONS_H
3
4/* nothing to see, move along */
5#include <asm-generic/sections.h>
6
7#endif
diff --git a/arch/m68knommu/include/asm/sembuf.h b/arch/m68knommu/include/asm/sembuf.h
deleted file mode 100644
index 3a634f9ecf50..000000000000
--- a/arch/m68knommu/include/asm/sembuf.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/sembuf.h>
diff --git a/arch/m68knommu/include/asm/shm.h b/arch/m68knommu/include/asm/shm.h
deleted file mode 100644
index cc8e522d9050..000000000000
--- a/arch/m68knommu/include/asm/shm.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/shm.h>
diff --git a/arch/m68knommu/include/asm/shmbuf.h b/arch/m68knommu/include/asm/shmbuf.h
deleted file mode 100644
index bc34cf8eefce..000000000000
--- a/arch/m68knommu/include/asm/shmbuf.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/shmbuf.h>
diff --git a/arch/m68knommu/include/asm/shmparam.h b/arch/m68knommu/include/asm/shmparam.h
deleted file mode 100644
index d7ee69648ebf..000000000000
--- a/arch/m68knommu/include/asm/shmparam.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/shmparam.h>
diff --git a/arch/m68knommu/include/asm/socket.h b/arch/m68knommu/include/asm/socket.h
deleted file mode 100644
index ac5478bf6371..000000000000
--- a/arch/m68knommu/include/asm/socket.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/socket.h>
diff --git a/arch/m68knommu/include/asm/sockios.h b/arch/m68knommu/include/asm/sockios.h
deleted file mode 100644
index dcc6a8900ce2..000000000000
--- a/arch/m68knommu/include/asm/sockios.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/sockios.h>
diff --git a/arch/m68knommu/include/asm/spinlock.h b/arch/m68knommu/include/asm/spinlock.h
deleted file mode 100644
index 6bb1f06c4781..000000000000
--- a/arch/m68knommu/include/asm/spinlock.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/spinlock.h>
diff --git a/arch/m68knommu/include/asm/stat.h b/arch/m68knommu/include/asm/stat.h
deleted file mode 100644
index 3d4b260e7c03..000000000000
--- a/arch/m68knommu/include/asm/stat.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/stat.h>
diff --git a/arch/m68knommu/include/asm/statfs.h b/arch/m68knommu/include/asm/statfs.h
deleted file mode 100644
index 2ce99eaf0970..000000000000
--- a/arch/m68knommu/include/asm/statfs.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/statfs.h>
diff --git a/arch/m68knommu/include/asm/termbits.h b/arch/m68knommu/include/asm/termbits.h
deleted file mode 100644
index 05dd6bc27285..000000000000
--- a/arch/m68knommu/include/asm/termbits.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/termbits.h>
diff --git a/arch/m68knommu/include/asm/termios.h b/arch/m68knommu/include/asm/termios.h
deleted file mode 100644
index e7337881a985..000000000000
--- a/arch/m68knommu/include/asm/termios.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/termios.h>
diff --git a/arch/m68knommu/include/asm/tlb.h b/arch/m68knommu/include/asm/tlb.h
deleted file mode 100644
index 77a7c51ca299..000000000000
--- a/arch/m68knommu/include/asm/tlb.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/tlb.h>
diff --git a/arch/m68knommu/include/asm/types.h b/arch/m68knommu/include/asm/types.h
deleted file mode 100644
index 031238c2d180..000000000000
--- a/arch/m68knommu/include/asm/types.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/types.h>
diff --git a/arch/m68knommu/include/asm/user.h b/arch/m68knommu/include/asm/user.h
deleted file mode 100644
index a5a555b761c4..000000000000
--- a/arch/m68knommu/include/asm/user.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-m68k/user.h>
diff --git a/arch/m68knommu/kernel/syscalltable.S b/arch/m68knommu/kernel/syscalltable.S
index 812f8d8b7a85..5c3e3f62194a 100644
--- a/arch/m68knommu/kernel/syscalltable.S
+++ b/arch/m68knommu/kernel/syscalltable.S
@@ -107,7 +107,7 @@ ENTRY(sys_call_table)
107 .long sys_uselib 107 .long sys_uselib
108 .long sys_ni_syscall /* sys_swapon */ 108 .long sys_ni_syscall /* sys_swapon */
109 .long sys_reboot 109 .long sys_reboot
110 .long old_readdir 110 .long sys_old_readdir
111 .long old_mmap /* 90 */ 111 .long old_mmap /* 90 */
112 .long sys_munmap 112 .long sys_munmap
113 .long sys_truncate 113 .long sys_truncate
diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild
index 023866c0c102..7897f05e3165 100644
--- a/arch/mips/include/asm/Kbuild
+++ b/arch/mips/include/asm/Kbuild
@@ -1,4 +1,3 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2 2
3header-y += cachectl.h sgidefs.h sysmips.h 3header-y += cachectl.h sgidefs.h sysmips.h
4header-y += swab.h
diff --git a/arch/mips/include/asm/byteorder.h b/arch/mips/include/asm/byteorder.h
index 607b71830707..9579051ff1c7 100644
--- a/arch/mips/include/asm/byteorder.h
+++ b/arch/mips/include/asm/byteorder.h
@@ -8,8 +8,6 @@
8#ifndef _ASM_BYTEORDER_H 8#ifndef _ASM_BYTEORDER_H
9#define _ASM_BYTEORDER_H 9#define _ASM_BYTEORDER_H
10 10
11#include <asm/swab.h>
12
13#if defined(__MIPSEB__) 11#if defined(__MIPSEB__)
14#include <linux/byteorder/big_endian.h> 12#include <linux/byteorder/big_endian.h>
15#elif defined(__MIPSEL__) 13#elif defined(__MIPSEL__)
diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
index d0916a55cd77..51d1ba415b90 100644
--- a/arch/mips/kernel/scall32-o32.S
+++ b/arch/mips/kernel/scall32-o32.S
@@ -398,7 +398,7 @@ einval: li v0, -ENOSYS
398 sys sys_uselib 1 398 sys sys_uselib 1
399 sys sys_swapon 2 399 sys sys_swapon 2
400 sys sys_reboot 3 400 sys sys_reboot 3
401 sys old_readdir 3 401 sys sys_old_readdir 3
402 sys old_mmap 6 /* 4090 */ 402 sys old_mmap 6 /* 4090 */
403 sys sys_munmap 2 403 sys sys_munmap 2
404 sys sys_truncate 2 404 sys sys_truncate 2
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S
index 62fba8aa9b6e..ceeaaaa359e2 100644
--- a/arch/mn10300/kernel/entry.S
+++ b/arch/mn10300/kernel/entry.S
@@ -478,7 +478,7 @@ ENTRY(sys_call_table)
478 .long sys_uselib 478 .long sys_uselib
479 .long sys_swapon 479 .long sys_swapon
480 .long sys_reboot 480 .long sys_reboot
481 .long old_readdir 481 .long sys_old_readdir
482 .long old_mmap /* 90 */ 482 .long old_mmap /* 90 */
483 .long sys_munmap 483 .long sys_munmap
484 .long sys_truncate 484 .long sys_truncate
diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild
index 2121d99f8364..f88b252e419c 100644
--- a/arch/parisc/include/asm/Kbuild
+++ b/arch/parisc/include/asm/Kbuild
@@ -1,4 +1,3 @@
1include include/asm-generic/Kbuild.asm 1include include/asm-generic/Kbuild.asm
2 2
3unifdef-y += pdc.h 3unifdef-y += pdc.h
4unifdef-y += swab.h
diff --git a/arch/parisc/include/asm/byteorder.h b/arch/parisc/include/asm/byteorder.h
index da66029c4cb2..58af2c5f5d61 100644
--- a/arch/parisc/include/asm/byteorder.h
+++ b/arch/parisc/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _PARISC_BYTEORDER_H 1#ifndef _PARISC_BYTEORDER_H
2#define _PARISC_BYTEORDER_H 2#define _PARISC_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/big_endian.h> 4#include <linux/byteorder/big_endian.h>
6 5
7#endif /* _PARISC_BYTEORDER_H */ 6#endif /* _PARISC_BYTEORDER_H */
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 84b861316ce7..e39b73bc0ff8 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -123,6 +123,7 @@ config PPC
123 select HAVE_DMA_ATTRS if PPC64 123 select HAVE_DMA_ATTRS if PPC64
124 select USE_GENERIC_SMP_HELPERS if SMP 124 select USE_GENERIC_SMP_HELPERS if SMP
125 select HAVE_OPROFILE 125 select HAVE_OPROFILE
126 select HAVE_SYSCALL_WRAPPERS if PPC64
126 127
127config EARLY_PRINTK 128config EARLY_PRINTK
128 bool 129 bool
diff --git a/arch/powerpc/boot/dts/mpc8315erdb.dts b/arch/powerpc/boot/dts/mpc8315erdb.dts
index 072c9b0f8c8e..71784165b77e 100644
--- a/arch/powerpc/boot/dts/mpc8315erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8315erdb.dts
@@ -255,7 +255,7 @@
255 device_type = "serial"; 255 device_type = "serial";
256 compatible = "ns16550"; 256 compatible = "ns16550";
257 reg = <0x4500 0x100>; 257 reg = <0x4500 0x100>;
258 clock-frequency = <0>; 258 clock-frequency = <133333333>;
259 interrupts = <9 0x8>; 259 interrupts = <9 0x8>;
260 interrupt-parent = <&ipic>; 260 interrupt-parent = <&ipic>;
261 }; 261 };
@@ -265,7 +265,7 @@
265 device_type = "serial"; 265 device_type = "serial";
266 compatible = "ns16550"; 266 compatible = "ns16550";
267 reg = <0x4600 0x100>; 267 reg = <0x4600 0x100>;
268 clock-frequency = <0>; 268 clock-frequency = <133333333>;
269 interrupts = <10 0x8>; 269 interrupts = <10 0x8>;
270 interrupt-parent = <&ipic>; 270 interrupt-parent = <&ipic>;
271 }; 271 };
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts
index b9da42105066..0668d1048779 100644
--- a/arch/powerpc/boot/dts/mpc8544ds.dts
+++ b/arch/powerpc/boot/dts/mpc8544ds.dts
@@ -313,7 +313,7 @@
313 0x1000000 0x0 0x0 0xe1010000 0x0 0x10000>; 313 0x1000000 0x0 0x0 0xe1010000 0x0 0x10000>;
314 clock-frequency = <33333333>; 314 clock-frequency = <33333333>;
315 interrupt-parent = <&mpic>; 315 interrupt-parent = <&mpic>;
316 interrupts = <26 2>; 316 interrupts = <25 2>;
317 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 317 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
318 interrupt-map = < 318 interrupt-map = <
319 /* IDSEL 0x0 */ 319 /* IDSEL 0x0 */
@@ -350,7 +350,7 @@
350 0x1000000 0x0 0x0 0xe1020000 0x0 0x10000>; 350 0x1000000 0x0 0x0 0xe1020000 0x0 0x10000>;
351 clock-frequency = <33333333>; 351 clock-frequency = <33333333>;
352 interrupt-parent = <&mpic>; 352 interrupt-parent = <&mpic>;
353 interrupts = <25 2>; 353 interrupts = <26 2>;
354 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 354 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
355 interrupt-map = < 355 interrupt-map = <
356 /* IDSEL 0x0 */ 356 /* IDSEL 0x0 */
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts
index 21459e161d02..3dcc001b8ed3 100644
--- a/arch/powerpc/boot/dts/mpc8572ds.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds.dts
@@ -724,7 +724,7 @@
724 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x00010000>; 724 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x00010000>;
725 clock-frequency = <33333333>; 725 clock-frequency = <33333333>;
726 interrupt-parent = <&mpic>; 726 interrupt-parent = <&mpic>;
727 interrupts = <26 2>; 727 interrupts = <25 2>;
728 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 728 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
729 interrupt-map = < 729 interrupt-map = <
730 /* IDSEL 0x0 */ 730 /* IDSEL 0x0 */
@@ -761,7 +761,7 @@
761 0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x00010000>; 761 0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x00010000>;
762 clock-frequency = <33333333>; 762 clock-frequency = <33333333>;
763 interrupt-parent = <&mpic>; 763 interrupt-parent = <&mpic>;
764 interrupts = <27 2>; 764 interrupts = <26 2>;
765 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 765 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
766 interrupt-map = < 766 interrupt-map = <
767 /* IDSEL 0x0 */ 767 /* IDSEL 0x0 */
diff --git a/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts b/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts
index c114c4ee9931..fd462efa9e61 100644
--- a/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts
@@ -457,7 +457,7 @@
457 0x1000000 0x0 0x0 0xffc10000 0x0 0x10000>; 457 0x1000000 0x0 0x0 0xffc10000 0x0 0x10000>;
458 clock-frequency = <33333333>; 458 clock-frequency = <33333333>;
459 interrupt-parent = <&mpic>; 459 interrupt-parent = <&mpic>;
460 interrupts = <26 2>; 460 interrupts = <25 2>;
461 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 461 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
462 interrupt-map = < 462 interrupt-map = <
463 /* IDSEL 0x0 */ 463 /* IDSEL 0x0 */
diff --git a/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts b/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts
index 04ecda18d206..e35230f2ac93 100644
--- a/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts
@@ -208,7 +208,7 @@
208 0x1000000 0x0 0x0 0xffc20000 0x0 0x10000>; 208 0x1000000 0x0 0x0 0xffc20000 0x0 0x10000>;
209 clock-frequency = <33333333>; 209 clock-frequency = <33333333>;
210 interrupt-parent = <&mpic>; 210 interrupt-parent = <&mpic>;
211 interrupts = <27 2>; 211 interrupts = <26 2>;
212 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 212 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
213 interrupt-map = < 213 interrupt-map = <
214 /* IDSEL 0x0 */ 214 /* IDSEL 0x0 */
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 069ae1bbac29..d4685d1c0be8 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -211,11 +211,28 @@ CONFIG_PPC_PASEMI=y
211CONFIG_PPC_PASEMI_IOMMU=y 211CONFIG_PPC_PASEMI_IOMMU=y
212# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set 212# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
213CONFIG_PPC_PASEMI_MDIO=y 213CONFIG_PPC_PASEMI_MDIO=y
214# CONFIG_PPC_PS3 is not set 214CONFIG_PPC_PS3=y
215
216#
217# PS3 Platform Options
218#
219# CONFIG_PS3_ADVANCED is not set
220CONFIG_PS3_HTAB_SIZE=20
221# CONFIG_PS3_DYNAMIC_DMA is not set
222CONFIG_PS3_VUART=y
223CONFIG_PS3_PS3AV=y
224CONFIG_PS3_SYS_MANAGER=y
225CONFIG_PS3_STORAGE=m
226CONFIG_PS3_DISK=m
227CONFIG_PS3_ROM=m
228CONFIG_PS3_FLASH=m
229CONFIG_PS3_LPM=m
215CONFIG_PPC_CELL=y 230CONFIG_PPC_CELL=y
231CONFIG_PPC_CELL_COMMON=y
216CONFIG_PPC_CELL_NATIVE=y 232CONFIG_PPC_CELL_NATIVE=y
217CONFIG_PPC_IBM_CELL_BLADE=y 233CONFIG_PPC_IBM_CELL_BLADE=y
218CONFIG_PPC_CELLEB=y 234CONFIG_PPC_CELLEB=y
235CONFIG_PPC_CELL_QPACE=y
219 236
220# 237#
221# Cell Broadband Engine options 238# Cell Broadband Engine options
@@ -981,6 +998,9 @@ CONFIG_E1000=y
981CONFIG_TIGON3=y 998CONFIG_TIGON3=y
982# CONFIG_BNX2 is not set 999# CONFIG_BNX2 is not set
983CONFIG_SPIDER_NET=m 1000CONFIG_SPIDER_NET=m
1001CONFIG_GELIC_NET=m
1002CONFIG_GELIC_WIRELESS=y
1003# CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE is not set
984# CONFIG_QLA3XXX is not set 1004# CONFIG_QLA3XXX is not set
985# CONFIG_ATL1 is not set 1005# CONFIG_ATL1 is not set
986# CONFIG_ATL1E is not set 1006# CONFIG_ATL1E is not set
@@ -1370,6 +1390,8 @@ CONFIG_FB_RADEON_BACKLIGHT=y
1370# CONFIG_FB_PM3 is not set 1390# CONFIG_FB_PM3 is not set
1371# CONFIG_FB_CARMINE is not set 1391# CONFIG_FB_CARMINE is not set
1372CONFIG_FB_IBM_GXT4500=y 1392CONFIG_FB_IBM_GXT4500=y
1393CONFIG_FB_PS3=m
1394CONFIG_FB_PS3_DEFAULT_SIZE_M=9
1373# CONFIG_FB_VIRTUAL is not set 1395# CONFIG_FB_VIRTUAL is not set
1374# CONFIG_FB_METRONOME is not set 1396# CONFIG_FB_METRONOME is not set
1375CONFIG_BACKLIGHT_LCD_SUPPORT=y 1397CONFIG_BACKLIGHT_LCD_SUPPORT=y
@@ -1492,6 +1514,8 @@ CONFIG_SND_PCI=y
1492CONFIG_SND_PPC=y 1514CONFIG_SND_PPC=y
1493CONFIG_SND_POWERMAC=m 1515CONFIG_SND_POWERMAC=m
1494CONFIG_SND_POWERMAC_AUTO_DRC=y 1516CONFIG_SND_POWERMAC_AUTO_DRC=y
1517CONFIG_SND_PS3=m
1518CONFIG_SND_PS3_DEFAULT_START_DELAY=2000
1495CONFIG_SND_AOA=m 1519CONFIG_SND_AOA=m
1496CONFIG_SND_AOA_FABRIC_LAYOUT=m 1520CONFIG_SND_AOA_FABRIC_LAYOUT=m
1497CONFIG_SND_AOA_ONYX=m 1521CONFIG_SND_AOA_ONYX=m
diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild
index 9268602de5d0..5ab7d7fe198c 100644
--- a/arch/powerpc/include/asm/Kbuild
+++ b/arch/powerpc/include/asm/Kbuild
@@ -35,4 +35,3 @@ unifdef-y += spu_info.h
35unifdef-y += termios.h 35unifdef-y += termios.h
36unifdef-y += types.h 36unifdef-y += types.h
37unifdef-y += unistd.h 37unifdef-y += unistd.h
38unifdef-y += swab.h
diff --git a/arch/powerpc/include/asm/byteorder.h b/arch/powerpc/include/asm/byteorder.h
index 5cca27a41532..aa6cc4fac965 100644
--- a/arch/powerpc/include/asm/byteorder.h
+++ b/arch/powerpc/include/asm/byteorder.h
@@ -7,8 +7,6 @@
7 * as published by the Free Software Foundation; either version 7 * as published by the Free Software Foundation; either version
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
11#include <asm/swab.h>
12#include <linux/byteorder/big_endian.h> 10#include <linux/byteorder/big_endian.h>
13 11
14#endif /* _ASM_POWERPC_BYTEORDER_H */ 12#endif /* _ASM_POWERPC_BYTEORDER_H */
diff --git a/arch/powerpc/include/asm/ps3.h b/arch/powerpc/include/asm/ps3.h
index eead5c67197a..67f1812698d2 100644
--- a/arch/powerpc/include/asm/ps3.h
+++ b/arch/powerpc/include/asm/ps3.h
@@ -103,10 +103,10 @@ struct ps3_dma_region_ops {
103 int (*map)(struct ps3_dma_region *, 103 int (*map)(struct ps3_dma_region *,
104 unsigned long virt_addr, 104 unsigned long virt_addr,
105 unsigned long len, 105 unsigned long len,
106 unsigned long *bus_addr, 106 dma_addr_t *bus_addr,
107 u64 iopte_pp); 107 u64 iopte_pp);
108 int (*unmap)(struct ps3_dma_region *, 108 int (*unmap)(struct ps3_dma_region *,
109 unsigned long bus_addr, 109 dma_addr_t bus_addr,
110 unsigned long len); 110 unsigned long len);
111}; 111};
112/** 112/**
@@ -124,9 +124,9 @@ int ps3_dma_region_init(struct ps3_system_bus_device *dev,
124int ps3_dma_region_create(struct ps3_dma_region *r); 124int ps3_dma_region_create(struct ps3_dma_region *r);
125int ps3_dma_region_free(struct ps3_dma_region *r); 125int ps3_dma_region_free(struct ps3_dma_region *r);
126int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, 126int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr,
127 unsigned long len, unsigned long *bus_addr, 127 unsigned long len, dma_addr_t *bus_addr,
128 u64 iopte_pp); 128 u64 iopte_pp);
129int ps3_dma_unmap(struct ps3_dma_region *r, unsigned long bus_addr, 129int ps3_dma_unmap(struct ps3_dma_region *r, dma_addr_t bus_addr,
130 unsigned long len); 130 unsigned long len);
131 131
132/* mmio routines */ 132/* mmio routines */
diff --git a/arch/powerpc/include/asm/qe.h b/arch/powerpc/include/asm/qe.h
index a0a15311d0d8..2701753d9937 100644
--- a/arch/powerpc/include/asm/qe.h
+++ b/arch/powerpc/include/asm/qe.h
@@ -624,7 +624,7 @@ struct ucc_slow_pram {
624#define UCC_GETH_UCCE_RXF1 0x00000002 624#define UCC_GETH_UCCE_RXF1 0x00000002
625#define UCC_GETH_UCCE_RXF0 0x00000001 625#define UCC_GETH_UCCE_RXF0 0x00000001
626 626
627/* UPSMR, when used as a UART */ 627/* UCC Protocol Specific Mode Register (UPSMR), when used for UART */
628#define UCC_UART_UPSMR_FLC 0x8000 628#define UCC_UART_UPSMR_FLC 0x8000
629#define UCC_UART_UPSMR_SL 0x4000 629#define UCC_UART_UPSMR_SL 0x4000
630#define UCC_UART_UPSMR_CL_MASK 0x3000 630#define UCC_UART_UPSMR_CL_MASK 0x3000
@@ -652,6 +652,23 @@ struct ucc_slow_pram {
652#define UCC_UART_UPSMR_TPM_EVEN 0x0002 652#define UCC_UART_UPSMR_TPM_EVEN 0x0002
653#define UCC_UART_UPSMR_TPM_HIGH 0x0003 653#define UCC_UART_UPSMR_TPM_HIGH 0x0003
654 654
655/* UCC Protocol Specific Mode Register (UPSMR), when used for Ethernet */
656#define UCC_GETH_UPSMR_FTFE 0x80000000
657#define UCC_GETH_UPSMR_PTPE 0x40000000
658#define UCC_GETH_UPSMR_ECM 0x04000000
659#define UCC_GETH_UPSMR_HSE 0x02000000
660#define UCC_GETH_UPSMR_PRO 0x00400000
661#define UCC_GETH_UPSMR_CAP 0x00200000
662#define UCC_GETH_UPSMR_RSH 0x00100000
663#define UCC_GETH_UPSMR_RPM 0x00080000
664#define UCC_GETH_UPSMR_R10M 0x00040000
665#define UCC_GETH_UPSMR_RLPB 0x00020000
666#define UCC_GETH_UPSMR_TBIM 0x00010000
667#define UCC_GETH_UPSMR_RES1 0x00002000
668#define UCC_GETH_UPSMR_RMM 0x00001000
669#define UCC_GETH_UPSMR_CAM 0x00000400
670#define UCC_GETH_UPSMR_BRO 0x00000200
671
655/* UCC Transmit On Demand Register (UTODR) */ 672/* UCC Transmit On Demand Register (UTODR) */
656#define UCC_SLOW_TOD 0x8000 673#define UCC_SLOW_TOD 0x8000
657#define UCC_FAST_TOD 0x8000 674#define UCC_FAST_TOD 0x8000
diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
index e0175beb4462..0aa0315fb7e8 100644
--- a/arch/powerpc/include/asm/rtas.h
+++ b/arch/powerpc/include/asm/rtas.h
@@ -18,7 +18,7 @@
18 */ 18 */
19 19
20#define RTAS_UNKNOWN_SERVICE (-1) 20#define RTAS_UNKNOWN_SERVICE (-1)
21#define RTAS_INSTANTIATE_MAX (1UL<<30) /* Don't instantiate rtas at/above this value */ 21#define RTAS_INSTANTIATE_MAX (1ULL<<30) /* Don't instantiate rtas at/above this value */
22 22
23/* Buffer size for ppc_rtas system call. */ 23/* Buffer size for ppc_rtas system call. */
24#define RTAS_RMOBUF_MAX (64 * 1024) 24#define RTAS_RMOBUF_MAX (64 * 1024)
diff --git a/arch/powerpc/include/asm/systbl.h b/arch/powerpc/include/asm/systbl.h
index 803def236654..72353f6070a4 100644
--- a/arch/powerpc/include/asm/systbl.h
+++ b/arch/powerpc/include/asm/systbl.h
@@ -92,7 +92,7 @@ COMPAT_SYS_SPU(readlink)
92SYSCALL(uselib) 92SYSCALL(uselib)
93SYSCALL(swapon) 93SYSCALL(swapon)
94SYSCALL(reboot) 94SYSCALL(reboot)
95SYSX(sys_ni_syscall,compat_sys_old_readdir,old_readdir) 95SYSX(sys_ni_syscall,compat_sys_old_readdir,sys_old_readdir)
96SYSCALL_SPU(mmap) 96SYSCALL_SPU(mmap)
97SYSCALL_SPU(munmap) 97SYSCALL_SPU(munmap)
98SYSCALL_SPU(truncate) 98SYSCALL_SPU(truncate)
diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h
index c004c13f291e..7ce27a52bb34 100644
--- a/arch/powerpc/include/asm/types.h
+++ b/arch/powerpc/include/asm/types.h
@@ -1,7 +1,12 @@
1#ifndef _ASM_POWERPC_TYPES_H 1#ifndef _ASM_POWERPC_TYPES_H
2#define _ASM_POWERPC_TYPES_H 2#define _ASM_POWERPC_TYPES_H
3 3
4#ifdef __powerpc64__ 4/*
5 * This is here because we used to use l64 for 64bit powerpc
6 * and we don't want to impact user mode with our change to ll64
7 * in the kernel.
8 */
9#if defined(__powerpc64__) && !defined(__KERNEL__)
5# include <asm-generic/int-l64.h> 10# include <asm-generic/int-l64.h>
6#else 11#else
7# include <asm-generic/int-ll64.h> 12# include <asm-generic/int-ll64.h>
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index 9937fe44555f..19ee491e9e23 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -56,6 +56,10 @@
56#include "head_booke.h" 56#include "head_booke.h"
57#endif 57#endif
58 58
59#if defined(CONFIG_FSL_BOOKE)
60#include "../mm/mmu_decl.h"
61#endif
62
59int main(void) 63int main(void)
60{ 64{
61 DEFINE(THREAD, offsetof(struct task_struct, thread)); 65 DEFINE(THREAD, offsetof(struct task_struct, thread));
@@ -382,6 +386,9 @@ int main(void)
382 DEFINE(PGD_T_LOG2, PGD_T_LOG2); 386 DEFINE(PGD_T_LOG2, PGD_T_LOG2);
383 DEFINE(PTE_T_LOG2, PTE_T_LOG2); 387 DEFINE(PTE_T_LOG2, PTE_T_LOG2);
384#endif 388#endif
389#ifdef CONFIG_FSL_BOOKE
390 DEFINE(TLBCAM_SIZE, sizeof(struct tlbcam));
391#endif
385 392
386#ifdef CONFIG_KVM_EXIT_TIMING 393#ifdef CONFIG_KVM_EXIT_TIMING
387 DEFINE(VCPU_TIMING_EXIT_TBU, offsetof(struct kvm_vcpu, 394 DEFINE(VCPU_TIMING_EXIT_TBU, offsetof(struct kvm_vcpu,
diff --git a/arch/powerpc/kernel/cacheinfo.c b/arch/powerpc/kernel/cacheinfo.c
index b33f0417a4bf..bb37b1d19a58 100644
--- a/arch/powerpc/kernel/cacheinfo.c
+++ b/arch/powerpc/kernel/cacheinfo.c
@@ -113,7 +113,7 @@ struct cache {
113 struct cache *next_local; /* next cache of >= level */ 113 struct cache *next_local; /* next cache of >= level */
114}; 114};
115 115
116static DEFINE_PER_CPU(struct cache_dir *, cache_dir); 116static DEFINE_PER_CPU(struct cache_dir *, cache_dir_pcpu);
117 117
118/* traversal/modification of this list occurs only at cpu hotplug time; 118/* traversal/modification of this list occurs only at cpu hotplug time;
119 * access is serialized by cpu hotplug locking 119 * access is serialized by cpu hotplug locking
@@ -468,9 +468,9 @@ static struct cache_dir *__cpuinit cacheinfo_create_cache_dir(unsigned int cpu_i
468 468
469 cache_dir->kobj = kobj; 469 cache_dir->kobj = kobj;
470 470
471 WARN_ON_ONCE(per_cpu(cache_dir, cpu_id) != NULL); 471 WARN_ON_ONCE(per_cpu(cache_dir_pcpu, cpu_id) != NULL);
472 472
473 per_cpu(cache_dir, cpu_id) = cache_dir; 473 per_cpu(cache_dir_pcpu, cpu_id) = cache_dir;
474 474
475 return cache_dir; 475 return cache_dir;
476err: 476err:
@@ -820,13 +820,13 @@ void cacheinfo_cpu_offline(unsigned int cpu_id)
820 820
821 /* Prevent userspace from seeing inconsistent state - remove 821 /* Prevent userspace from seeing inconsistent state - remove
822 * the sysfs hierarchy first */ 822 * the sysfs hierarchy first */
823 cache_dir = per_cpu(cache_dir, cpu_id); 823 cache_dir = per_cpu(cache_dir_pcpu, cpu_id);
824 824
825 /* careful, sysfs population may have failed */ 825 /* careful, sysfs population may have failed */
826 if (cache_dir) 826 if (cache_dir)
827 remove_cache_dir(cache_dir); 827 remove_cache_dir(cache_dir);
828 828
829 per_cpu(cache_dir, cpu_id) = NULL; 829 per_cpu(cache_dir_pcpu, cpu_id) = NULL;
830 830
831 /* clear the CPU's bit in its cache chain, possibly freeing 831 /* clear the CPU's bit in its cache chain, possibly freeing
832 * cache objects */ 832 * cache objects */
diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c
index 14183af1b3fb..2983adac8cc3 100644
--- a/arch/powerpc/kernel/dma-iommu.c
+++ b/arch/powerpc/kernel/dma-iommu.c
@@ -79,10 +79,10 @@ static int dma_iommu_dma_supported(struct device *dev, u64 mask)
79 "Warning: IOMMU offset too big for device mask\n"); 79 "Warning: IOMMU offset too big for device mask\n");
80 if (tbl) 80 if (tbl)
81 printk(KERN_INFO 81 printk(KERN_INFO
82 "mask: 0x%08lx, table offset: 0x%08lx\n", 82 "mask: 0x%08llx, table offset: 0x%08lx\n",
83 mask, tbl->it_offset); 83 mask, tbl->it_offset);
84 else 84 else
85 printk(KERN_INFO "mask: 0x%08lx, table unavailable\n", 85 printk(KERN_INFO "mask: 0x%08llx, table unavailable\n",
86 mask); 86 mask);
87 return 0; 87 return 0;
88 } else 88 } else
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index b4bcf5a930fa..ebaedafc8e67 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -1518,6 +1518,15 @@ _GLOBAL(pmac_secondary_start)
1518 /* turn on 64-bit mode */ 1518 /* turn on 64-bit mode */
1519 bl .enable_64b_mode 1519 bl .enable_64b_mode
1520 1520
1521 li r0,0
1522 mfspr r3,SPRN_HID4
1523 rldimi r3,r0,40,23 /* clear bit 23 (rm_ci) */
1524 sync
1525 mtspr SPRN_HID4,r3
1526 isync
1527 sync
1528 slbia
1529
1521 /* get TOC pointer (real address) */ 1530 /* get TOC pointer (real address) */
1522 bl .relative_toc 1531 bl .relative_toc
1523 1532
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S
index 11b549acc034..36ffb3504a4f 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -389,10 +389,6 @@ skpinv: addi r6,r6,1 /* Increment */
389#endif 389#endif
390#endif 390#endif
391 391
392 mfspr r3,SPRN_TLB1CFG
393 andi. r3,r3,0xfff
394 lis r4,num_tlbcam_entries@ha
395 stw r3,num_tlbcam_entries@l(r4)
396/* 392/*
397 * Decide what sort of machine this is and initialize the MMU. 393 * Decide what sort of machine this is and initialize the MMU.
398 */ 394 */
@@ -711,7 +707,7 @@ interrupt_base:
711 EXCEPTION(0x2060, PerformanceMonitor, performance_monitor_exception, EXC_XFER_STD) 707 EXCEPTION(0x2060, PerformanceMonitor, performance_monitor_exception, EXC_XFER_STD)
712 708
713#ifdef CONFIG_PPC_E500MC 709#ifdef CONFIG_PPC_E500MC
714 EXCEPTION(0x2070, Doorbell, unknown_exception, EXC_XFER_EE) 710 EXCEPTION(0x2070, Doorbell, unknown_exception, EXC_XFER_STD)
715#endif 711#endif
716 712
717 /* Debug Interrupt */ 713 /* Debug Interrupt */
@@ -909,7 +905,7 @@ KernelSPE:
909_GLOBAL(loadcam_entry) 905_GLOBAL(loadcam_entry)
910 lis r4,TLBCAM@ha 906 lis r4,TLBCAM@ha
911 addi r4,r4,TLBCAM@l 907 addi r4,r4,TLBCAM@l
912 mulli r5,r3,20 908 mulli r5,r3,TLBCAM_SIZE
913 add r3,r5,r4 909 add r3,r5,r4
914 lwz r4,0(r3) 910 lwz r4,0(r3)
915 mtspr SPRN_MAS0,r4 911 mtspr SPRN_MAS0,r4
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index 1bfa706b96e7..fd51578e29dd 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -239,12 +239,12 @@ static void __iommu_free(struct iommu_table *tbl, dma_addr_t dma_addr,
239 if (printk_ratelimit()) { 239 if (printk_ratelimit()) {
240 printk(KERN_INFO "iommu_free: invalid entry\n"); 240 printk(KERN_INFO "iommu_free: invalid entry\n");
241 printk(KERN_INFO "\tentry = 0x%lx\n", entry); 241 printk(KERN_INFO "\tentry = 0x%lx\n", entry);
242 printk(KERN_INFO "\tdma_addr = 0x%lx\n", (u64)dma_addr); 242 printk(KERN_INFO "\tdma_addr = 0x%llx\n", (u64)dma_addr);
243 printk(KERN_INFO "\tTable = 0x%lx\n", (u64)tbl); 243 printk(KERN_INFO "\tTable = 0x%llx\n", (u64)tbl);
244 printk(KERN_INFO "\tbus# = 0x%lx\n", (u64)tbl->it_busno); 244 printk(KERN_INFO "\tbus# = 0x%llx\n", (u64)tbl->it_busno);
245 printk(KERN_INFO "\tsize = 0x%lx\n", (u64)tbl->it_size); 245 printk(KERN_INFO "\tsize = 0x%llx\n", (u64)tbl->it_size);
246 printk(KERN_INFO "\tstartOff = 0x%lx\n", (u64)tbl->it_offset); 246 printk(KERN_INFO "\tstartOff = 0x%llx\n", (u64)tbl->it_offset);
247 printk(KERN_INFO "\tindex = 0x%lx\n", (u64)tbl->it_index); 247 printk(KERN_INFO "\tindex = 0x%llx\n", (u64)tbl->it_index);
248 WARN_ON(1); 248 WARN_ON(1);
249 } 249 }
250 return; 250 return;
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c
index d051e8cbcd03..182e0f642f36 100644
--- a/arch/powerpc/kernel/lparcfg.c
+++ b/arch/powerpc/kernel/lparcfg.c
@@ -240,7 +240,7 @@ static void parse_ppp_data(struct seq_file *m)
240 if (rc) 240 if (rc)
241 return; 241 return;
242 242
243 seq_printf(m, "partition_entitled_capacity=%ld\n", 243 seq_printf(m, "partition_entitled_capacity=%lld\n",
244 ppp_data.entitlement); 244 ppp_data.entitlement);
245 seq_printf(m, "group=%d\n", ppp_data.group_num); 245 seq_printf(m, "group=%d\n", ppp_data.group_num);
246 seq_printf(m, "system_active_processors=%d\n", 246 seq_printf(m, "system_active_processors=%d\n",
@@ -265,7 +265,7 @@ static void parse_ppp_data(struct seq_file *m)
265 ppp_data.unallocated_weight); 265 ppp_data.unallocated_weight);
266 seq_printf(m, "capacity_weight=%d\n", ppp_data.weight); 266 seq_printf(m, "capacity_weight=%d\n", ppp_data.weight);
267 seq_printf(m, "capped=%d\n", ppp_data.capped); 267 seq_printf(m, "capped=%d\n", ppp_data.capped);
268 seq_printf(m, "unallocated_capacity=%ld\n", 268 seq_printf(m, "unallocated_capacity=%lld\n",
269 ppp_data.unallocated_entitlement); 269 ppp_data.unallocated_entitlement);
270} 270}
271 271
@@ -509,10 +509,10 @@ static ssize_t update_ppp(u64 *entitlement, u8 *weight)
509 } else 509 } else
510 return -EINVAL; 510 return -EINVAL;
511 511
512 pr_debug("%s: current_entitled = %lu, current_weight = %u\n", 512 pr_debug("%s: current_entitled = %llu, current_weight = %u\n",
513 __func__, ppp_data.entitlement, ppp_data.weight); 513 __func__, ppp_data.entitlement, ppp_data.weight);
514 514
515 pr_debug("%s: new_entitled = %lu, new_weight = %u\n", 515 pr_debug("%s: new_entitled = %llu, new_weight = %u\n",
516 __func__, new_entitled, new_weight); 516 __func__, new_entitled, new_weight);
517 517
518 retval = plpar_hcall_norets(H_SET_PPP, new_entitled, new_weight); 518 retval = plpar_hcall_norets(H_SET_PPP, new_entitled, new_weight);
@@ -558,7 +558,7 @@ static ssize_t update_mpp(u64 *entitlement, u8 *weight)
558 pr_debug("%s: current_entitled = %lu, current_weight = %u\n", 558 pr_debug("%s: current_entitled = %lu, current_weight = %u\n",
559 __func__, mpp_data.entitled_mem, mpp_data.mem_weight); 559 __func__, mpp_data.entitled_mem, mpp_data.mem_weight);
560 560
561 pr_debug("%s: new_entitled = %lu, new_weight = %u\n", 561 pr_debug("%s: new_entitled = %llu, new_weight = %u\n",
562 __func__, new_entitled, new_weight); 562 __func__, new_entitled, new_weight);
563 563
564 rc = plpar_hcall_norets(H_SET_MPP, new_entitled, new_weight); 564 rc = plpar_hcall_norets(H_SET_MPP, new_entitled, new_weight);
diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c
index b3abebb7ee64..d59e2b1bdcba 100644
--- a/arch/powerpc/kernel/machine_kexec.c
+++ b/arch/powerpc/kernel/machine_kexec.c
@@ -93,10 +93,35 @@ void __init reserve_crashkernel(void)
93 KDUMP_KERNELBASE); 93 KDUMP_KERNELBASE);
94 94
95 crashk_res.start = KDUMP_KERNELBASE; 95 crashk_res.start = KDUMP_KERNELBASE;
96#else
97 if (!crashk_res.start) {
98 /*
99 * unspecified address, choose a region of specified size
100 * can overlap with initrd (ignoring corruption when retained)
101 * ppc64 requires kernel and some stacks to be in first segemnt
102 */
103 crashk_res.start = KDUMP_KERNELBASE;
104 }
105
106 crash_base = PAGE_ALIGN(crashk_res.start);
107 if (crash_base != crashk_res.start) {
108 printk("Crash kernel base must be aligned to 0x%lx\n",
109 PAGE_SIZE);
110 crashk_res.start = crash_base;
111 }
112
96#endif 113#endif
97 crash_size = PAGE_ALIGN(crash_size); 114 crash_size = PAGE_ALIGN(crash_size);
98 crashk_res.end = crashk_res.start + crash_size - 1; 115 crashk_res.end = crashk_res.start + crash_size - 1;
99 116
117 /* The crash region must not overlap the current kernel */
118 if (overlaps_crashkernel(__pa(_stext), _end - _stext)) {
119 printk(KERN_WARNING
120 "Crash kernel can not overlap current kernel\n");
121 crashk_res.start = crashk_res.end = 0;
122 return;
123 }
124
100 /* Crash kernel trumps memory limit */ 125 /* Crash kernel trumps memory limit */
101 if (memory_limit && memory_limit <= crashk_res.end) { 126 if (memory_limit && memory_limit <= crashk_res.end) {
102 memory_limit = crashk_res.end + 1; 127 memory_limit = crashk_res.end + 1;
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 586962f65c2a..ea8eda8c87cf 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -470,7 +470,7 @@ int __devinit pcibios_map_io_space(struct pci_bus *bus)
470 if (bus->self) { 470 if (bus->self) {
471 pr_debug("IO mapping for PCI-PCI bridge %s\n", 471 pr_debug("IO mapping for PCI-PCI bridge %s\n",
472 pci_name(bus->self)); 472 pci_name(bus->self));
473 pr_debug(" virt=0x%016lx...0x%016lx\n", 473 pr_debug(" virt=0x%016llx...0x%016llx\n",
474 bus->resource[0]->start + _IO_BASE, 474 bus->resource[0]->start + _IO_BASE,
475 bus->resource[0]->end + _IO_BASE); 475 bus->resource[0]->end + _IO_BASE);
476 return 0; 476 return 0;
@@ -502,7 +502,7 @@ int __devinit pcibios_map_io_space(struct pci_bus *bus)
502 hose->io_base_phys - phys_page); 502 hose->io_base_phys - phys_page);
503 503
504 pr_debug("IO mapping for PHB %s\n", hose->dn->full_name); 504 pr_debug("IO mapping for PHB %s\n", hose->dn->full_name);
505 pr_debug(" phys=0x%016lx, virt=0x%p (alloc=0x%p)\n", 505 pr_debug(" phys=0x%016llx, virt=0x%p (alloc=0x%p)\n",
506 hose->io_base_phys, hose->io_base_virt, hose->io_base_alloc); 506 hose->io_base_phys, hose->io_base_virt, hose->io_base_alloc);
507 pr_debug(" size=0x%016lx (alloc=0x%016lx)\n", 507 pr_debug(" size=0x%016lx (alloc=0x%016lx)\n",
508 hose->pci_io_size, size_page); 508 hose->pci_io_size, size_page);
@@ -517,7 +517,7 @@ int __devinit pcibios_map_io_space(struct pci_bus *bus)
517 hose->io_resource.start += io_virt_offset; 517 hose->io_resource.start += io_virt_offset;
518 hose->io_resource.end += io_virt_offset; 518 hose->io_resource.end += io_virt_offset;
519 519
520 pr_debug(" hose->io_resource=0x%016lx...0x%016lx\n", 520 pr_debug(" hose->io_resource=0x%016llx...0x%016llx\n",
521 hose->io_resource.start, hose->io_resource.end); 521 hose->io_resource.start, hose->io_resource.end);
522 522
523 return 0; 523 return 0;
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index c09cffafb6ee..f00f83109ab3 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -590,6 +590,11 @@ static void __init check_cpu_slb_size(unsigned long node)
590{ 590{
591 u32 *slb_size_ptr; 591 u32 *slb_size_ptr;
592 592
593 slb_size_ptr = of_get_flat_dt_prop(node, "slb-size", NULL);
594 if (slb_size_ptr != NULL) {
595 mmu_slb_size = *slb_size_ptr;
596 return;
597 }
593 slb_size_ptr = of_get_flat_dt_prop(node, "ibm,slb-size", NULL); 598 slb_size_ptr = of_get_flat_dt_prop(node, "ibm,slb-size", NULL);
594 if (slb_size_ptr != NULL) { 599 if (slb_size_ptr != NULL) {
595 mmu_slb_size = *slb_size_ptr; 600 mmu_slb_size = *slb_size_ptr;
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index d8bd2161e738..2d34196bba8c 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -434,8 +434,8 @@ void __init setup_system(void)
434 printk("Starting Linux PPC64 %s\n", init_utsname()->version); 434 printk("Starting Linux PPC64 %s\n", init_utsname()->version);
435 435
436 printk("-----------------------------------------------------\n"); 436 printk("-----------------------------------------------------\n");
437 printk("ppc64_pft_size = 0x%lx\n", ppc64_pft_size); 437 printk("ppc64_pft_size = 0x%llx\n", ppc64_pft_size);
438 printk("physicalMemorySize = 0x%lx\n", lmb_phys_mem_size()); 438 printk("physicalMemorySize = 0x%llx\n", lmb_phys_mem_size());
439 if (ppc64_caches.dline_size != 0x80) 439 if (ppc64_caches.dline_size != 0x80)
440 printk("ppc64_caches.dcache_line_size = 0x%x\n", 440 printk("ppc64_caches.dcache_line_size = 0x%x\n",
441 ppc64_caches.dline_size); 441 ppc64_caches.dline_size);
@@ -493,7 +493,7 @@ static void __init emergency_stack_init(void)
493 * bringup, we need to get at them in real mode. This means they 493 * bringup, we need to get at them in real mode. This means they
494 * must also be within the RMO region. 494 * must also be within the RMO region.
495 */ 495 */
496 limit = min(0x10000000UL, lmb.rmo_size); 496 limit = min(0x10000000ULL, lmb.rmo_size);
497 497
498 for_each_possible_cpu(i) { 498 for_each_possible_cpu(i) {
499 unsigned long sp; 499 unsigned long sp;
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 47bf15cd2c9e..161b9b9691f0 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -87,7 +87,9 @@ SECTIONS
87 /* The dummy segment contents for the bug workaround mentioned above 87 /* The dummy segment contents for the bug workaround mentioned above
88 near PHDRS. */ 88 near PHDRS. */
89 .dummy : AT(ADDR(.dummy) - LOAD_OFFSET) { 89 .dummy : AT(ADDR(.dummy) - LOAD_OFFSET) {
90 LONG(0xf177) 90 LONG(0)
91 LONG(0)
92 LONG(0)
91 } :kernel :dummy 93 } :kernel :dummy
92 94
93/* 95/*
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c
index 23cee39534fd..1971e4ee3d6e 100644
--- a/arch/powerpc/mm/fsl_booke_mmu.c
+++ b/arch/powerpc/mm/fsl_booke_mmu.c
@@ -56,18 +56,11 @@
56 56
57extern void loadcam_entry(unsigned int index); 57extern void loadcam_entry(unsigned int index);
58unsigned int tlbcam_index; 58unsigned int tlbcam_index;
59unsigned int num_tlbcam_entries;
60static unsigned long __cam0, __cam1, __cam2; 59static unsigned long __cam0, __cam1, __cam2;
61 60
62#define NUM_TLBCAMS (16) 61#define NUM_TLBCAMS (16)
63 62
64struct tlbcam { 63struct tlbcam TLBCAM[NUM_TLBCAMS];
65 u32 MAS0;
66 u32 MAS1;
67 u32 MAS2;
68 u32 MAS3;
69 u32 MAS7;
70} TLBCAM[NUM_TLBCAMS];
71 64
72struct tlbcamrange { 65struct tlbcamrange {
73 unsigned long start; 66 unsigned long start;
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
index ad123bced404..d1f9c62dc177 100644
--- a/arch/powerpc/mm/mmu_decl.h
+++ b/arch/powerpc/mm/mmu_decl.h
@@ -75,6 +75,15 @@ extern void _tlbia(void);
75#endif /* CONFIG_PPC_MMU_NOHASH */ 75#endif /* CONFIG_PPC_MMU_NOHASH */
76 76
77#ifdef CONFIG_PPC32 77#ifdef CONFIG_PPC32
78
79struct tlbcam {
80 u32 MAS0;
81 u32 MAS1;
82 u32 MAS2;
83 u32 MAS3;
84 u32 MAS7;
85};
86
78extern void mapin_ram(void); 87extern void mapin_ram(void);
79extern int map_page(unsigned long va, phys_addr_t pa, int flags); 88extern int map_page(unsigned long va, phys_addr_t pa, int flags);
80extern void setbat(int index, unsigned long virt, phys_addr_t phys, 89extern void setbat(int index, unsigned long virt, phys_addr_t phys,
@@ -90,8 +99,6 @@ extern unsigned int rtas_data, rtas_size;
90struct hash_pte; 99struct hash_pte;
91extern struct hash_pte *Hash, *Hash_end; 100extern struct hash_pte *Hash, *Hash_end;
92extern unsigned long Hash_size, Hash_mask; 101extern unsigned long Hash_size, Hash_mask;
93
94extern unsigned int num_tlbcam_entries;
95#endif 102#endif
96 103
97extern unsigned long ioremap_bot; 104extern unsigned long ioremap_bot;
diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
index db44e02e045b..ba5194817f8a 100644
--- a/arch/powerpc/mm/slice.c
+++ b/arch/powerpc/mm/slice.c
@@ -710,9 +710,18 @@ int is_hugepage_only_range(struct mm_struct *mm, unsigned long addr,
710 unsigned long len) 710 unsigned long len)
711{ 711{
712 struct slice_mask mask, available; 712 struct slice_mask mask, available;
713 unsigned int psize = mm->context.user_psize;
713 714
714 mask = slice_range_to_mask(addr, len); 715 mask = slice_range_to_mask(addr, len);
715 available = slice_mask_for_size(mm, mm->context.user_psize); 716 available = slice_mask_for_size(mm, psize);
717#ifdef CONFIG_PPC_64K_PAGES
718 /* We need to account for 4k slices too */
719 if (psize == MMU_PAGE_64K) {
720 struct slice_mask compat_mask;
721 compat_mask = slice_mask_for_size(mm, MMU_PAGE_4K);
722 or_mask(available, compat_mask);
723 }
724#endif
716 725
717#if 0 /* too verbose */ 726#if 0 /* too verbose */
718 slice_dbg("is_hugepage_only_range(mm=%p, addr=%lx, len=%lx)\n", 727 slice_dbg("is_hugepage_only_range(mm=%p, addr=%lx, len=%lx)\n",
diff --git a/arch/powerpc/mm/stab.c b/arch/powerpc/mm/stab.c
index 60e6032a8088..98cd1dc2ae75 100644
--- a/arch/powerpc/mm/stab.c
+++ b/arch/powerpc/mm/stab.c
@@ -251,8 +251,8 @@ void __init stabs_alloc(void)
251 251
252 paca[cpu].stab_addr = newstab; 252 paca[cpu].stab_addr = newstab;
253 paca[cpu].stab_real = virt_to_abs(newstab); 253 paca[cpu].stab_real = virt_to_abs(newstab);
254 printk(KERN_INFO "Segment table for CPU %d at 0x%lx " 254 printk(KERN_INFO "Segment table for CPU %d at 0x%llx "
255 "virtual, 0x%lx absolute\n", 255 "virtual, 0x%llx absolute\n",
256 cpu, paca[cpu].stab_addr, paca[cpu].stab_real); 256 cpu, paca[cpu].stab_addr, paca[cpu].stab_real);
257 } 257 }
258} 258}
diff --git a/arch/powerpc/oprofile/op_model_pa6t.c b/arch/powerpc/oprofile/op_model_pa6t.c
index c40de461fd4e..42f778dff919 100644
--- a/arch/powerpc/oprofile/op_model_pa6t.c
+++ b/arch/powerpc/oprofile/op_model_pa6t.c
@@ -132,7 +132,7 @@ static int pa6t_reg_setup(struct op_counter_config *ctr,
132 for (pmc = 0; pmc < cur_cpu_spec->num_pmcs; pmc++) { 132 for (pmc = 0; pmc < cur_cpu_spec->num_pmcs; pmc++) {
133 /* counters are 40 bit. Move to cputable at some point? */ 133 /* counters are 40 bit. Move to cputable at some point? */
134 reset_value[pmc] = (0x1UL << 39) - ctr[pmc].count; 134 reset_value[pmc] = (0x1UL << 39) - ctr[pmc].count;
135 pr_debug("reset_value for pmc%u inited to 0x%lx\n", 135 pr_debug("reset_value for pmc%u inited to 0x%llx\n",
136 pmc, reset_value[pmc]); 136 pmc, reset_value[pmc]);
137 } 137 }
138 138
@@ -177,7 +177,7 @@ static int pa6t_start(struct op_counter_config *ctr)
177 177
178 oprofile_running = 1; 178 oprofile_running = 1;
179 179
180 pr_debug("start on cpu %d, mmcr0 %lx\n", smp_processor_id(), mmcr0); 180 pr_debug("start on cpu %d, mmcr0 %llx\n", smp_processor_id(), mmcr0);
181 181
182 return 0; 182 return 0;
183} 183}
@@ -193,7 +193,7 @@ static void pa6t_stop(void)
193 193
194 oprofile_running = 0; 194 oprofile_running = 0;
195 195
196 pr_debug("stop on cpu %d, mmcr0 %lx\n", smp_processor_id(), mmcr0); 196 pr_debug("stop on cpu %d, mmcr0 %llx\n", smp_processor_id(), mmcr0);
197} 197}
198 198
199/* handle the perfmon overflow vector */ 199/* handle the perfmon overflow vector */
diff --git a/arch/powerpc/platforms/512x/clock.c b/arch/powerpc/platforms/512x/clock.c
index f416014ee727..1bcff94eb924 100644
--- a/arch/powerpc/platforms/512x/clock.c
+++ b/arch/powerpc/platforms/512x/clock.c
@@ -56,12 +56,12 @@ static struct clk *mpc5121_clk_get(struct device *dev, const char *id)
56 int dev_match = 0; 56 int dev_match = 0;
57 int id_match = 0; 57 int id_match = 0;
58 58
59 if (dev == NULL && id == NULL) 59 if (dev == NULL || id == NULL)
60 return NULL; 60 return NULL;
61 61
62 mutex_lock(&clocks_mutex); 62 mutex_lock(&clocks_mutex);
63 list_for_each_entry(p, &clocks, node) { 63 list_for_each_entry(p, &clocks, node) {
64 if (dev && dev == p->dev) 64 if (dev == p->dev)
65 dev_match++; 65 dev_match++;
66 if (strcmp(id, p->name) == 0) 66 if (strcmp(id, p->name) == 0)
67 id_match++; 67 id_match++;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpio.c b/arch/powerpc/platforms/52xx/mpc52xx_gpio.c
index 8a455ebce98d..07f89ae46d04 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_gpio.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_gpio.c
@@ -363,11 +363,8 @@ static int mpc52xx_gpt_gpio_get(struct gpio_chip *gc, unsigned int gpio)
363{ 363{
364 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 364 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
365 struct mpc52xx_gpt __iomem *regs = mm_gc->regs; 365 struct mpc52xx_gpt __iomem *regs = mm_gc->regs;
366 unsigned int ret;
367 366
368 return (in_be32(&regs->status) & (1 << (31 - 23))) ? 1 : 0; 367 return (in_be32(&regs->status) & (1 << (31 - 23))) ? 1 : 0;
369
370 return ret;
371} 368}
372 369
373static void 370static void
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
index 72865e8e4b51..0a093f03c758 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
@@ -196,6 +196,7 @@ static void mpc52xx_extirq_ack(unsigned int virq)
196 196
197static int mpc52xx_extirq_set_type(unsigned int virq, unsigned int flow_type) 197static int mpc52xx_extirq_set_type(unsigned int virq, unsigned int flow_type)
198{ 198{
199 struct irq_desc *desc = get_irq_desc(virq);
199 u32 ctrl_reg, type; 200 u32 ctrl_reg, type;
200 int irq; 201 int irq;
201 int l2irq; 202 int l2irq;
@@ -222,6 +223,11 @@ static int mpc52xx_extirq_set_type(unsigned int virq, unsigned int flow_type)
222 type = 0; 223 type = 0;
223 } 224 }
224 225
226 desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL);
227 desc->status |= flow_type & IRQ_TYPE_SENSE_MASK;
228 if (flow_type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW))
229 desc->status |= IRQ_LEVEL;
230
225 ctrl_reg = in_be32(&intr->ctrl); 231 ctrl_reg = in_be32(&intr->ctrl);
226 ctrl_reg &= ~(0x3 << (22 - (l2irq * 2))); 232 ctrl_reg &= ~(0x3 << (22 - (l2irq * 2)));
227 ctrl_reg |= (type << (22 - (l2irq * 2))); 233 ctrl_reg |= (type << (22 - (l2irq * 2)));
@@ -231,7 +237,7 @@ static int mpc52xx_extirq_set_type(unsigned int virq, unsigned int flow_type)
231} 237}
232 238
233static struct irq_chip mpc52xx_extirq_irqchip = { 239static struct irq_chip mpc52xx_extirq_irqchip = {
234 .typename = " MPC52xx IRQ[0-3] ", 240 .typename = "MPC52xx External",
235 .mask = mpc52xx_extirq_mask, 241 .mask = mpc52xx_extirq_mask,
236 .unmask = mpc52xx_extirq_unmask, 242 .unmask = mpc52xx_extirq_unmask,
237 .ack = mpc52xx_extirq_ack, 243 .ack = mpc52xx_extirq_ack,
diff --git a/arch/powerpc/platforms/83xx/Makefile b/arch/powerpc/platforms/83xx/Makefile
index ba5028e29890..051777c542c7 100644
--- a/arch/powerpc/platforms/83xx/Makefile
+++ b/arch/powerpc/platforms/83xx/Makefile
@@ -3,6 +3,7 @@
3# 3#
4obj-y := misc.o usb.o 4obj-y := misc.o usb.o
5obj-$(CONFIG_SUSPEND) += suspend.o suspend-asm.o 5obj-$(CONFIG_SUSPEND) += suspend.o suspend-asm.o
6obj-$(CONFIG_MCU_MPC8349EMITX) += mcu_mpc8349emitx.o
6obj-$(CONFIG_MPC831x_RDB) += mpc831x_rdb.o 7obj-$(CONFIG_MPC831x_RDB) += mpc831x_rdb.o
7obj-$(CONFIG_MPC832x_RDB) += mpc832x_rdb.o 8obj-$(CONFIG_MPC832x_RDB) += mpc832x_rdb.o
8obj-$(CONFIG_MPC834x_MDS) += mpc834x_mds.o 9obj-$(CONFIG_MPC834x_MDS) += mpc834x_mds.o
diff --git a/drivers/i2c/chips/mcu_mpc8349emitx.c b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
index 82a9bcb858b6..82a9bcb858b6 100644
--- a/drivers/i2c/chips/mcu_mpc8349emitx.c
+++ b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
index 47fe2bea9865..200b9cb900ea 100644
--- a/arch/powerpc/platforms/Kconfig
+++ b/arch/powerpc/platforms/Kconfig
@@ -323,4 +323,15 @@ config SIMPLE_GPIO
323 chip-selects, Ethernet/USB PHY's power and various other small 323 chip-selects, Ethernet/USB PHY's power and various other small
324 on-board peripherals. 324 on-board peripherals.
325 325
326config MCU_MPC8349EMITX
327 tristate "MPC8349E-mITX MCU driver"
328 depends on I2C && PPC_83xx
329 select GENERIC_GPIO
330 select ARCH_REQUIRE_GPIOLIB
331 help
332 Say Y here to enable soft power-off functionality on the Freescale
333 boards with the MPC8349E-mITX-compatible MCU chips. This driver will
334 also register MCU GPIOs with the generic GPIO API, so you'll able
335 to use MCU pins as GPIOs.
336
326endmenu 337endmenu
diff --git a/arch/powerpc/platforms/cell/beat_interrupt.c b/arch/powerpc/platforms/cell/beat_interrupt.c
index 192a93509372..72254848a228 100644
--- a/arch/powerpc/platforms/cell/beat_interrupt.c
+++ b/arch/powerpc/platforms/cell/beat_interrupt.c
@@ -99,7 +99,7 @@ static void beatic_end_irq(unsigned int irq_plug)
99 err = beat_downcount_of_interrupt(irq_plug); 99 err = beat_downcount_of_interrupt(irq_plug);
100 if (err != 0) { 100 if (err != 0) {
101 if ((err & 0xFFFFFFFF) != 0xFFFFFFF5) /* -11: wrong state */ 101 if ((err & 0xFFFFFFFF) != 0xFFFFFFF5) /* -11: wrong state */
102 panic("Failed to downcount IRQ! Error = %16lx", err); 102 panic("Failed to downcount IRQ! Error = %16llx", err);
103 103
104 printk(KERN_ERR "IRQ over-downcounted, plug %d\n", irq_plug); 104 printk(KERN_ERR "IRQ over-downcounted, plug %d\n", irq_plug);
105 } 105 }
diff --git a/arch/powerpc/platforms/cell/celleb_scc_epci.c b/arch/powerpc/platforms/cell/celleb_scc_epci.c
index 08c285b10e30..48ec88a38a12 100644
--- a/arch/powerpc/platforms/cell/celleb_scc_epci.c
+++ b/arch/powerpc/platforms/cell/celleb_scc_epci.c
@@ -405,7 +405,7 @@ static int __init celleb_setup_epci(struct device_node *node,
405 hose->cfg_addr = ioremap(r.start, (r.end - r.start + 1)); 405 hose->cfg_addr = ioremap(r.start, (r.end - r.start + 1));
406 if (!hose->cfg_addr) 406 if (!hose->cfg_addr)
407 goto error; 407 goto error;
408 pr_debug("EPCI: cfg_addr map 0x%016lx->0x%016lx + 0x%016lx\n", 408 pr_debug("EPCI: cfg_addr map 0x%016llx->0x%016lx + 0x%016llx\n",
409 r.start, (unsigned long)hose->cfg_addr, (r.end - r.start + 1)); 409 r.start, (unsigned long)hose->cfg_addr, (r.end - r.start + 1));
410 410
411 if (of_address_to_resource(node, 2, &r)) 411 if (of_address_to_resource(node, 2, &r))
@@ -413,7 +413,7 @@ static int __init celleb_setup_epci(struct device_node *node,
413 hose->cfg_data = ioremap(r.start, (r.end - r.start + 1)); 413 hose->cfg_data = ioremap(r.start, (r.end - r.start + 1));
414 if (!hose->cfg_data) 414 if (!hose->cfg_data)
415 goto error; 415 goto error;
416 pr_debug("EPCI: cfg_data map 0x%016lx->0x%016lx + 0x%016lx\n", 416 pr_debug("EPCI: cfg_data map 0x%016llx->0x%016lx + 0x%016llx\n",
417 r.start, (unsigned long)hose->cfg_data, (r.end - r.start + 1)); 417 r.start, (unsigned long)hose->cfg_data, (r.end - r.start + 1));
418 418
419 hose->ops = &celleb_epci_ops; 419 hose->ops = &celleb_epci_ops;
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index 88d94b59a7cb..ee5033eddf01 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -855,7 +855,7 @@ static int __init cell_iommu_init_disabled(void)
855 */ 855 */
856 if (np && size < lmb_end_of_DRAM()) { 856 if (np && size < lmb_end_of_DRAM()) {
857 printk(KERN_WARNING "iommu: force-enabled, dma window" 857 printk(KERN_WARNING "iommu: force-enabled, dma window"
858 " (%ldMB) smaller than total memory (%ldMB)\n", 858 " (%ldMB) smaller than total memory (%lldMB)\n",
859 size >> 20, lmb_end_of_DRAM() >> 20); 859 size >> 20, lmb_end_of_DRAM() >> 20);
860 return -ENODEV; 860 return -ENODEV;
861 } 861 }
@@ -985,7 +985,7 @@ static void cell_dma_dev_setup_fixed(struct device *dev)
985 addr = cell_iommu_get_fixed_address(dev) + dma_iommu_fixed_base; 985 addr = cell_iommu_get_fixed_address(dev) + dma_iommu_fixed_base;
986 archdata->dma_data = (void *)addr; 986 archdata->dma_data = (void *)addr;
987 987
988 dev_dbg(dev, "iommu: fixed addr = %lx\n", addr); 988 dev_dbg(dev, "iommu: fixed addr = %llx\n", addr);
989} 989}
990 990
991static void insert_16M_pte(unsigned long addr, unsigned long *ptab, 991static void insert_16M_pte(unsigned long addr, unsigned long *ptab,
diff --git a/arch/powerpc/platforms/cell/ras.c b/arch/powerpc/platforms/cell/ras.c
index 7b4cefa2199b..5f961c464cc4 100644
--- a/arch/powerpc/platforms/cell/ras.c
+++ b/arch/powerpc/platforms/cell/ras.c
@@ -38,16 +38,16 @@ static void dump_fir(int cpu)
38 /* Todo: do some nicer parsing of bits and based on them go down 38 /* Todo: do some nicer parsing of bits and based on them go down
39 * to other sub-units FIRs and not only IIC 39 * to other sub-units FIRs and not only IIC
40 */ 40 */
41 printk(KERN_ERR "Global Checkstop FIR : 0x%016lx\n", 41 printk(KERN_ERR "Global Checkstop FIR : 0x%016llx\n",
42 in_be64(&pregs->checkstop_fir)); 42 in_be64(&pregs->checkstop_fir));
43 printk(KERN_ERR "Global Recoverable FIR : 0x%016lx\n", 43 printk(KERN_ERR "Global Recoverable FIR : 0x%016llx\n",
44 in_be64(&pregs->checkstop_fir)); 44 in_be64(&pregs->checkstop_fir));
45 printk(KERN_ERR "Global MachineCheck FIR : 0x%016lx\n", 45 printk(KERN_ERR "Global MachineCheck FIR : 0x%016llx\n",
46 in_be64(&pregs->spec_att_mchk_fir)); 46 in_be64(&pregs->spec_att_mchk_fir));
47 47
48 if (iregs == NULL) 48 if (iregs == NULL)
49 return; 49 return;
50 printk(KERN_ERR "IOC FIR : 0x%016lx\n", 50 printk(KERN_ERR "IOC FIR : 0x%016llx\n",
51 in_be64(&iregs->ioc_fir)); 51 in_be64(&iregs->ioc_fir));
52 52
53} 53}
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index a5bdb89a17c3..e487ad68ac11 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -151,7 +151,7 @@ static inline void spu_load_slb(struct spu *spu, int slbe, struct spu_slb *slb)
151{ 151{
152 struct spu_priv2 __iomem *priv2 = spu->priv2; 152 struct spu_priv2 __iomem *priv2 = spu->priv2;
153 153
154 pr_debug("%s: adding SLB[%d] 0x%016lx 0x%016lx\n", 154 pr_debug("%s: adding SLB[%d] 0x%016llx 0x%016llx\n",
155 __func__, slbe, slb->vsid, slb->esid); 155 __func__, slbe, slb->vsid, slb->esid);
156 156
157 out_be64(&priv2->slb_index_W, slbe); 157 out_be64(&priv2->slb_index_W, slbe);
@@ -221,7 +221,7 @@ static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr)
221{ 221{
222 int ret; 222 int ret;
223 223
224 pr_debug("%s, %lx, %lx\n", __func__, dsisr, ea); 224 pr_debug("%s, %llx, %lx\n", __func__, dsisr, ea);
225 225
226 /* 226 /*
227 * Handle kernel space hash faults immediately. User hash 227 * Handle kernel space hash faults immediately. User hash
diff --git a/arch/powerpc/platforms/cell/spu_callbacks.c b/arch/powerpc/platforms/cell/spu_callbacks.c
index 19f6bfdbb933..fec1495e6b12 100644
--- a/arch/powerpc/platforms/cell/spu_callbacks.c
+++ b/arch/powerpc/platforms/cell/spu_callbacks.c
@@ -54,7 +54,7 @@ long spu_sys_callback(struct spu_syscall_block *s)
54 long (*syscall)(u64 a1, u64 a2, u64 a3, u64 a4, u64 a5, u64 a6); 54 long (*syscall)(u64 a1, u64 a2, u64 a3, u64 a4, u64 a5, u64 a6);
55 55
56 if (s->nr_ret >= ARRAY_SIZE(spu_syscall_table)) { 56 if (s->nr_ret >= ARRAY_SIZE(spu_syscall_table)) {
57 pr_debug("%s: invalid syscall #%ld", __func__, s->nr_ret); 57 pr_debug("%s: invalid syscall #%lld", __func__, s->nr_ret);
58 return -ENOSYS; 58 return -ENOSYS;
59 } 59 }
60 60
diff --git a/arch/powerpc/platforms/cell/spufs/coredump.c b/arch/powerpc/platforms/cell/spufs/coredump.c
index af116aadba10..c4d4a19235e0 100644
--- a/arch/powerpc/platforms/cell/spufs/coredump.c
+++ b/arch/powerpc/platforms/cell/spufs/coredump.c
@@ -42,7 +42,7 @@ static ssize_t do_coredump_read(int num, struct spu_context *ctx, void *buffer,
42 return spufs_coredump_read[num].read(ctx, buffer, size, off); 42 return spufs_coredump_read[num].read(ctx, buffer, size, off);
43 43
44 data = spufs_coredump_read[num].get(ctx); 44 data = spufs_coredump_read[num].get(ctx);
45 ret = snprintf(buffer, size, "0x%.16lx", data); 45 ret = snprintf(buffer, size, "0x%.16llx", data);
46 if (ret >= size) 46 if (ret >= size)
47 return size; 47 return size;
48 return ++ret; /* count trailing NULL */ 48 return ++ret; /* count trailing NULL */
diff --git a/arch/powerpc/platforms/cell/spufs/fault.c b/arch/powerpc/platforms/cell/spufs/fault.c
index f093a581ac74..a4dd3ae7223a 100644
--- a/arch/powerpc/platforms/cell/spufs/fault.c
+++ b/arch/powerpc/platforms/cell/spufs/fault.c
@@ -132,7 +132,7 @@ int spufs_handle_class1(struct spu_context *ctx)
132 132
133 spuctx_switch_state(ctx, SPU_UTIL_IOWAIT); 133 spuctx_switch_state(ctx, SPU_UTIL_IOWAIT);
134 134
135 pr_debug("ctx %p: ea %016lx, dsisr %016lx state %d\n", ctx, ea, 135 pr_debug("ctx %p: ea %016llx, dsisr %016llx state %d\n", ctx, ea,
136 dsisr, ctx->state); 136 dsisr, ctx->state);
137 137
138 ctx->stats.hash_flt++; 138 ctx->stats.hash_flt++;
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index 7106b63d401b..0da7f2bf5ee1 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -1654,7 +1654,7 @@ out:
1654 1654
1655static int spufs_check_valid_dma(struct mfc_dma_command *cmd) 1655static int spufs_check_valid_dma(struct mfc_dma_command *cmd)
1656{ 1656{
1657 pr_debug("queueing DMA %x %lx %x %x %x\n", cmd->lsa, 1657 pr_debug("queueing DMA %x %llx %x %x %x\n", cmd->lsa,
1658 cmd->ea, cmd->size, cmd->tag, cmd->cmd); 1658 cmd->ea, cmd->size, cmd->tag, cmd->cmd);
1659 1659
1660 switch (cmd->cmd) { 1660 switch (cmd->cmd) {
@@ -1671,7 +1671,7 @@ static int spufs_check_valid_dma(struct mfc_dma_command *cmd)
1671 } 1671 }
1672 1672
1673 if ((cmd->lsa & 0xf) != (cmd->ea &0xf)) { 1673 if ((cmd->lsa & 0xf) != (cmd->ea &0xf)) {
1674 pr_debug("invalid DMA alignment, ea %lx lsa %x\n", 1674 pr_debug("invalid DMA alignment, ea %llx lsa %x\n",
1675 cmd->ea, cmd->lsa); 1675 cmd->ea, cmd->lsa);
1676 return -EIO; 1676 return -EIO;
1677 } 1677 }
@@ -2633,7 +2633,7 @@ static int spufs_show_ctx(struct seq_file *s, void *private)
2633 } 2633 }
2634 2634
2635 seq_printf(s, "%c flgs(%lx) sflgs(%lx) pri(%d) ts(%d) spu(%02d)" 2635 seq_printf(s, "%c flgs(%lx) sflgs(%lx) pri(%d) ts(%d) spu(%02d)"
2636 " %c %lx %lx %lx %lx %x %x\n", 2636 " %c %llx %llx %llx %llx %x %x\n",
2637 ctx->state == SPU_STATE_SAVED ? 'S' : 'R', 2637 ctx->state == SPU_STATE_SAVED ? 'S' : 'R',
2638 ctx->flags, 2638 ctx->flags,
2639 ctx->sched_flags, 2639 ctx->sched_flags,
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c
index 8c619963becc..1db6b9e037fc 100644
--- a/arch/powerpc/platforms/fsl_uli1575.c
+++ b/arch/powerpc/platforms/fsl_uli1575.c
@@ -249,6 +249,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288);
249DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229); 249DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
250DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249); 250DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249);
251DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575); 251DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575);
252DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229);
252 253
253static void __devinit hpcd_quirk_uli1575(struct pci_dev *dev) 254static void __devinit hpcd_quirk_uli1575(struct pci_dev *dev)
254{ 255{
diff --git a/arch/powerpc/platforms/iseries/iommu.c b/arch/powerpc/platforms/iseries/iommu.c
index bbe828f1b885..6ed75bffc8ab 100644
--- a/arch/powerpc/platforms/iseries/iommu.c
+++ b/arch/powerpc/platforms/iseries/iommu.c
@@ -66,7 +66,7 @@ static int tce_build_iSeries(struct iommu_table *tbl, long index, long npages,
66 66
67 rc = HvCallXm_setTce((u64)tbl->it_index, (u64)index, tce); 67 rc = HvCallXm_setTce((u64)tbl->it_index, (u64)index, tce);
68 if (rc) 68 if (rc)
69 panic("PCI_DMA: HvCallXm_setTce failed, Rc: 0x%lx\n", 69 panic("PCI_DMA: HvCallXm_setTce failed, Rc: 0x%llx\n",
70 rc); 70 rc);
71 index++; 71 index++;
72 uaddr += TCE_PAGE_SIZE; 72 uaddr += TCE_PAGE_SIZE;
@@ -81,7 +81,7 @@ static void tce_free_iSeries(struct iommu_table *tbl, long index, long npages)
81 while (npages--) { 81 while (npages--) {
82 rc = HvCallXm_setTce((u64)tbl->it_index, (u64)index, 0); 82 rc = HvCallXm_setTce((u64)tbl->it_index, (u64)index, 0);
83 if (rc) 83 if (rc)
84 panic("PCI_DMA: HvCallXm_setTce failed, Rc: 0x%lx\n", 84 panic("PCI_DMA: HvCallXm_setTce failed, Rc: 0x%llx\n",
85 rc); 85 rc);
86 index++; 86 index++;
87 } 87 }
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 6b0711c15eca..bd8817b00fa4 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -53,7 +53,7 @@
53#include <asm/pmac_low_i2c.h> 53#include <asm/pmac_low_i2c.h>
54#include <asm/pmac_pfunc.h> 54#include <asm/pmac_pfunc.h>
55 55
56#define DEBUG 56#undef DEBUG
57 57
58#ifdef DEBUG 58#ifdef DEBUG
59#define DBG(fmt...) udbg_printf(fmt) 59#define DBG(fmt...) udbg_printf(fmt)
diff --git a/arch/powerpc/platforms/ps3/device-init.c b/arch/powerpc/platforms/ps3/device-init.c
index ca71a12b764c..bb028f165fb3 100644
--- a/arch/powerpc/platforms/ps3/device-init.c
+++ b/arch/powerpc/platforms/ps3/device-init.c
@@ -82,7 +82,7 @@ static int __init ps3_register_lpm_devices(void)
82 goto fail_rights; 82 goto fail_rights;
83 } 83 }
84 84
85 pr_debug("%s:%d: pu_id %lu, rights %lu(%lxh)\n", 85 pr_debug("%s:%d: pu_id %llu, rights %llu(%llxh)\n",
86 __func__, __LINE__, dev->lpm.pu_id, dev->lpm.rights, 86 __func__, __LINE__, dev->lpm.pu_id, dev->lpm.rights,
87 dev->lpm.rights); 87 dev->lpm.rights);
88 88
@@ -348,7 +348,7 @@ static int ps3_setup_storage_dev(const struct ps3_repository_device *repo,
348 return -ENODEV; 348 return -ENODEV;
349 } 349 }
350 350
351 pr_debug("%s:%u: (%u:%u:%u): port %lu blk_size %lu num_blocks %lu " 351 pr_debug("%s:%u: (%u:%u:%u): port %llu blk_size %llu num_blocks %llu "
352 "num_regions %u\n", __func__, __LINE__, repo->bus_index, 352 "num_regions %u\n", __func__, __LINE__, repo->bus_index,
353 repo->dev_index, repo->dev_type, port, blk_size, num_blocks, 353 repo->dev_index, repo->dev_type, port, blk_size, num_blocks,
354 num_regions); 354 num_regions);
@@ -394,7 +394,7 @@ static int ps3_setup_storage_dev(const struct ps3_repository_device *repo,
394 result = -ENODEV; 394 result = -ENODEV;
395 goto fail_read_region; 395 goto fail_read_region;
396 } 396 }
397 pr_debug("%s:%u: region %u: id %u start %lu size %lu\n", 397 pr_debug("%s:%u: region %u: id %u start %llu size %llu\n",
398 __func__, __LINE__, i, id, start, size); 398 __func__, __LINE__, i, id, start, size);
399 399
400 p->regions[i].id = id; 400 p->regions[i].id = id;
@@ -662,13 +662,13 @@ static void ps3_find_and_add_device(u64 bus_id, u64 dev_id)
662 if (rem) 662 if (rem)
663 break; 663 break;
664 } 664 }
665 pr_warning("%s:%u: device %lu:%lu not found\n", __func__, __LINE__, 665 pr_warning("%s:%u: device %llu:%llu not found\n", __func__, __LINE__,
666 bus_id, dev_id); 666 bus_id, dev_id);
667 return; 667 return;
668 668
669found: 669found:
670 if (retries) 670 if (retries)
671 pr_debug("%s:%u: device %lu:%lu found after %u retries\n", 671 pr_debug("%s:%u: device %llu:%llu found after %u retries\n",
672 __func__, __LINE__, bus_id, dev_id, retries); 672 __func__, __LINE__, bus_id, dev_id, retries);
673 673
674 ps3_setup_dynamic_device(&repo); 674 ps3_setup_dynamic_device(&repo);
@@ -715,14 +715,14 @@ static irqreturn_t ps3_notification_interrupt(int irq, void *data)
715 res = lv1_storage_get_async_status(PS3_NOTIFICATION_DEV_ID, &tag, 715 res = lv1_storage_get_async_status(PS3_NOTIFICATION_DEV_ID, &tag,
716 &status); 716 &status);
717 if (tag != dev->tag) 717 if (tag != dev->tag)
718 pr_err("%s:%u: tag mismatch, got %lx, expected %lx\n", 718 pr_err("%s:%u: tag mismatch, got %llx, expected %llx\n",
719 __func__, __LINE__, tag, dev->tag); 719 __func__, __LINE__, tag, dev->tag);
720 720
721 if (res) { 721 if (res) {
722 pr_err("%s:%u: res %d status 0x%lx\n", __func__, __LINE__, res, 722 pr_err("%s:%u: res %d status 0x%llx\n", __func__, __LINE__, res,
723 status); 723 status);
724 } else { 724 } else {
725 pr_debug("%s:%u: completed, status 0x%lx\n", __func__, 725 pr_debug("%s:%u: completed, status 0x%llx\n", __func__,
726 __LINE__, status); 726 __LINE__, status);
727 dev->lv1_status = status; 727 dev->lv1_status = status;
728 complete(&dev->done); 728 complete(&dev->done);
@@ -761,7 +761,7 @@ static int ps3_notification_read_write(struct ps3_notification_device *dev,
761 } 761 }
762 762
763 if (dev->lv1_status) { 763 if (dev->lv1_status) {
764 pr_err("%s:%u: %s not completed, status 0x%lx\n", __func__, 764 pr_err("%s:%u: %s not completed, status 0x%llx\n", __func__,
765 __LINE__, op, dev->lv1_status); 765 __LINE__, op, dev->lv1_status);
766 return -EIO; 766 return -EIO;
767 } 767 }
@@ -850,16 +850,16 @@ static int ps3_probe_thread(void *data)
850 if (res) 850 if (res)
851 break; 851 break;
852 852
853 pr_debug("%s:%u: notify event type 0x%lx bus id %lu dev id %lu" 853 pr_debug("%s:%u: notify event type 0x%llx bus id %llu dev id %llu"
854 " type %lu port %lu\n", __func__, __LINE__, 854 " type %llu port %llu\n", __func__, __LINE__,
855 notify_event->event_type, notify_event->bus_id, 855 notify_event->event_type, notify_event->bus_id,
856 notify_event->dev_id, notify_event->dev_type, 856 notify_event->dev_id, notify_event->dev_type,
857 notify_event->dev_port); 857 notify_event->dev_port);
858 858
859 if (notify_event->event_type != notify_region_probe || 859 if (notify_event->event_type != notify_region_probe ||
860 notify_event->bus_id != dev.sbd.bus_id) { 860 notify_event->bus_id != dev.sbd.bus_id) {
861 pr_warning("%s:%u: bad notify_event: event %lu, " 861 pr_warning("%s:%u: bad notify_event: event %llu, "
862 "dev_id %lu, dev_type %lu\n", 862 "dev_id %llu, dev_type %llu\n",
863 __func__, __LINE__, notify_event->event_type, 863 __func__, __LINE__, notify_event->event_type,
864 notify_event->dev_id, 864 notify_event->dev_id,
865 notify_event->dev_type); 865 notify_event->dev_type);
diff --git a/arch/powerpc/platforms/ps3/htab.c b/arch/powerpc/platforms/ps3/htab.c
index 6eb1d4d182c9..1e8a1e39dfe8 100644
--- a/arch/powerpc/platforms/ps3/htab.c
+++ b/arch/powerpc/platforms/ps3/htab.c
@@ -75,7 +75,7 @@ static long ps3_hpte_insert(unsigned long hpte_group, unsigned long va,
75 75
76 if (result) { 76 if (result) {
77 /* all entries bolted !*/ 77 /* all entries bolted !*/
78 pr_info("%s:result=%d va=%lx pa=%lx ix=%lx v=%lx r=%lx\n", 78 pr_info("%s:result=%d va=%lx pa=%lx ix=%lx v=%llx r=%llx\n",
79 __func__, result, va, pa, hpte_group, hpte_v, hpte_r); 79 __func__, result, va, pa, hpte_group, hpte_v, hpte_r);
80 BUG(); 80 BUG();
81 } 81 }
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c
index e59634f7af96..8ec5ccf76b19 100644
--- a/arch/powerpc/platforms/ps3/interrupt.c
+++ b/arch/powerpc/platforms/ps3/interrupt.c
@@ -60,6 +60,8 @@
60 * gives a usable range of plug values of {NUM_ISA_INTERRUPTS..63}. Note 60 * gives a usable range of plug values of {NUM_ISA_INTERRUPTS..63}. Note
61 * that there is no constraint on how many in this set an individual thread 61 * that there is no constraint on how many in this set an individual thread
62 * can acquire. 62 * can acquire.
63 *
64 * The mask is declared as unsigned long so we can use set/clear_bit on it.
63 */ 65 */
64 66
65#define PS3_BMP_MINALIGN 64 67#define PS3_BMP_MINALIGN 64
@@ -68,7 +70,7 @@ struct ps3_bmp {
68 struct { 70 struct {
69 u64 status; 71 u64 status;
70 u64 unused_1[3]; 72 u64 unused_1[3];
71 u64 mask; 73 unsigned long mask;
72 u64 unused_2[3]; 74 u64 unused_2[3];
73 }; 75 };
74 u64 ipi_debug_brk_mask; 76 u64 ipi_debug_brk_mask;
@@ -102,7 +104,7 @@ static void ps3_chip_mask(unsigned int virq)
102 struct ps3_private *pd = get_irq_chip_data(virq); 104 struct ps3_private *pd = get_irq_chip_data(virq);
103 unsigned long flags; 105 unsigned long flags;
104 106
105 pr_debug("%s:%d: thread_id %lu, virq %d\n", __func__, __LINE__, 107 pr_debug("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__,
106 pd->thread_id, virq); 108 pd->thread_id, virq);
107 109
108 local_irq_save(flags); 110 local_irq_save(flags);
@@ -123,7 +125,7 @@ static void ps3_chip_unmask(unsigned int virq)
123 struct ps3_private *pd = get_irq_chip_data(virq); 125 struct ps3_private *pd = get_irq_chip_data(virq);
124 unsigned long flags; 126 unsigned long flags;
125 127
126 pr_debug("%s:%d: thread_id %lu, virq %d\n", __func__, __LINE__, 128 pr_debug("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__,
127 pd->thread_id, virq); 129 pd->thread_id, virq);
128 130
129 local_irq_save(flags); 131 local_irq_save(flags);
@@ -221,7 +223,7 @@ static int ps3_virq_destroy(unsigned int virq)
221{ 223{
222 const struct ps3_private *pd = get_irq_chip_data(virq); 224 const struct ps3_private *pd = get_irq_chip_data(virq);
223 225
224 pr_debug("%s:%d: ppe_id %lu, thread_id %lu, virq %u\n", __func__, 226 pr_debug("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__,
225 __LINE__, pd->ppe_id, pd->thread_id, virq); 227 __LINE__, pd->ppe_id, pd->thread_id, virq);
226 228
227 set_irq_chip_data(virq, NULL); 229 set_irq_chip_data(virq, NULL);
@@ -291,7 +293,7 @@ int ps3_irq_plug_destroy(unsigned int virq)
291 int result; 293 int result;
292 const struct ps3_private *pd = get_irq_chip_data(virq); 294 const struct ps3_private *pd = get_irq_chip_data(virq);
293 295
294 pr_debug("%s:%d: ppe_id %lu, thread_id %lu, virq %u\n", __func__, 296 pr_debug("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__,
295 __LINE__, pd->ppe_id, pd->thread_id, virq); 297 __LINE__, pd->ppe_id, pd->thread_id, virq);
296 298
297 ps3_chip_mask(virq); 299 ps3_chip_mask(virq);
@@ -322,7 +324,7 @@ EXPORT_SYMBOL_GPL(ps3_irq_plug_destroy);
322int ps3_event_receive_port_setup(enum ps3_cpu_binding cpu, unsigned int *virq) 324int ps3_event_receive_port_setup(enum ps3_cpu_binding cpu, unsigned int *virq)
323{ 325{
324 int result; 326 int result;
325 unsigned long outlet; 327 u64 outlet;
326 328
327 result = lv1_construct_event_receive_port(&outlet); 329 result = lv1_construct_event_receive_port(&outlet);
328 330
@@ -468,7 +470,7 @@ int ps3_io_irq_setup(enum ps3_cpu_binding cpu, unsigned int interrupt_id,
468 unsigned int *virq) 470 unsigned int *virq)
469{ 471{
470 int result; 472 int result;
471 unsigned long outlet; 473 u64 outlet;
472 474
473 result = lv1_construct_io_irq_outlet(interrupt_id, &outlet); 475 result = lv1_construct_io_irq_outlet(interrupt_id, &outlet);
474 476
@@ -525,7 +527,7 @@ int ps3_vuart_irq_setup(enum ps3_cpu_binding cpu, void* virt_addr_bmp,
525 unsigned int *virq) 527 unsigned int *virq)
526{ 528{
527 int result; 529 int result;
528 unsigned long outlet; 530 u64 outlet;
529 u64 lpar_addr; 531 u64 lpar_addr;
530 532
531 BUG_ON(!is_kernel_addr((u64)virt_addr_bmp)); 533 BUG_ON(!is_kernel_addr((u64)virt_addr_bmp));
@@ -581,7 +583,7 @@ int ps3_spe_irq_setup(enum ps3_cpu_binding cpu, unsigned long spe_id,
581 unsigned int class, unsigned int *virq) 583 unsigned int class, unsigned int *virq)
582{ 584{
583 int result; 585 int result;
584 unsigned long outlet; 586 u64 outlet;
585 587
586 BUG_ON(class > 2); 588 BUG_ON(class > 2);
587 589
@@ -691,7 +693,7 @@ void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq)
691 693
692 pd->bmp.ipi_debug_brk_mask = 0x8000000000000000UL >> virq; 694 pd->bmp.ipi_debug_brk_mask = 0x8000000000000000UL >> virq;
693 695
694 pr_debug("%s:%d: cpu %u, virq %u, mask %lxh\n", __func__, __LINE__, 696 pr_debug("%s:%d: cpu %u, virq %u, mask %llxh\n", __func__, __LINE__,
695 cpu, virq, pd->bmp.ipi_debug_brk_mask); 697 cpu, virq, pd->bmp.ipi_debug_brk_mask);
696} 698}
697 699
@@ -710,7 +712,7 @@ static unsigned int ps3_get_irq(void)
710 plug &= 0x3f; 712 plug &= 0x3f;
711 713
712 if (unlikely(plug == NO_IRQ)) { 714 if (unlikely(plug == NO_IRQ)) {
713 pr_debug("%s:%d: no plug found: thread_id %lu\n", __func__, 715 pr_debug("%s:%d: no plug found: thread_id %llu\n", __func__,
714 __LINE__, pd->thread_id); 716 __LINE__, pd->thread_id);
715 dump_bmp(&per_cpu(ps3_private, 0)); 717 dump_bmp(&per_cpu(ps3_private, 0));
716 dump_bmp(&per_cpu(ps3_private, 1)); 718 dump_bmp(&per_cpu(ps3_private, 1));
@@ -745,7 +747,7 @@ void __init ps3_init_IRQ(void)
745 pd->thread_id = get_hard_smp_processor_id(cpu); 747 pd->thread_id = get_hard_smp_processor_id(cpu);
746 spin_lock_init(&pd->bmp.lock); 748 spin_lock_init(&pd->bmp.lock);
747 749
748 pr_debug("%s:%d: ppe_id %lu, thread_id %lu, bmp %lxh\n", 750 pr_debug("%s:%d: ppe_id %llu, thread_id %llu, bmp %lxh\n",
749 __func__, __LINE__, pd->ppe_id, pd->thread_id, 751 __func__, __LINE__, pd->ppe_id, pd->thread_id,
750 ps3_mm_phys_to_lpar(__pa(&pd->bmp))); 752 ps3_mm_phys_to_lpar(__pa(&pd->bmp)));
751 753
@@ -770,6 +772,6 @@ void ps3_shutdown_IRQ(int cpu)
770 lv1_get_logical_ppe_id(&ppe_id); 772 lv1_get_logical_ppe_id(&ppe_id);
771 result = lv1_configure_irq_state_bitmap(ppe_id, thread_id, 0); 773 result = lv1_configure_irq_state_bitmap(ppe_id, thread_id, 0);
772 774
773 DBG("%s:%d: lv1_configure_irq_state_bitmap (%lu:%lu/%d) %s\n", __func__, 775 DBG("%s:%d: lv1_configure_irq_state_bitmap (%llu:%llu/%d) %s\n", __func__,
774 __LINE__, ppe_id, thread_id, cpu, ps3_result(result)); 776 __LINE__, ppe_id, thread_id, cpu, ps3_result(result));
775} 777}
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c
index a4d49dd9e8a9..67de6bf3db3d 100644
--- a/arch/powerpc/platforms/ps3/mm.c
+++ b/arch/powerpc/platforms/ps3/mm.c
@@ -79,8 +79,8 @@ enum {
79 */ 79 */
80 80
81struct mem_region { 81struct mem_region {
82 unsigned long base; 82 u64 base;
83 unsigned long size; 83 u64 size;
84 unsigned long offset; 84 unsigned long offset;
85}; 85};
86 86
@@ -103,9 +103,9 @@ struct mem_region {
103 */ 103 */
104 104
105struct map { 105struct map {
106 unsigned long total; 106 u64 total;
107 unsigned long vas_id; 107 u64 vas_id;
108 unsigned long htab_size; 108 u64 htab_size;
109 struct mem_region rm; 109 struct mem_region rm;
110 struct mem_region r1; 110 struct mem_region r1;
111}; 111};
@@ -114,13 +114,13 @@ struct map {
114static void __maybe_unused _debug_dump_map(const struct map *m, 114static void __maybe_unused _debug_dump_map(const struct map *m,
115 const char *func, int line) 115 const char *func, int line)
116{ 116{
117 DBG("%s:%d: map.total = %lxh\n", func, line, m->total); 117 DBG("%s:%d: map.total = %llxh\n", func, line, m->total);
118 DBG("%s:%d: map.rm.size = %lxh\n", func, line, m->rm.size); 118 DBG("%s:%d: map.rm.size = %llxh\n", func, line, m->rm.size);
119 DBG("%s:%d: map.vas_id = %lu\n", func, line, m->vas_id); 119 DBG("%s:%d: map.vas_id = %llu\n", func, line, m->vas_id);
120 DBG("%s:%d: map.htab_size = %lxh\n", func, line, m->htab_size); 120 DBG("%s:%d: map.htab_size = %llxh\n", func, line, m->htab_size);
121 DBG("%s:%d: map.r1.base = %lxh\n", func, line, m->r1.base); 121 DBG("%s:%d: map.r1.base = %llxh\n", func, line, m->r1.base);
122 DBG("%s:%d: map.r1.offset = %lxh\n", func, line, m->r1.offset); 122 DBG("%s:%d: map.r1.offset = %lxh\n", func, line, m->r1.offset);
123 DBG("%s:%d: map.r1.size = %lxh\n", func, line, m->r1.size); 123 DBG("%s:%d: map.r1.size = %llxh\n", func, line, m->r1.size);
124} 124}
125 125
126static struct map map; 126static struct map map;
@@ -146,11 +146,11 @@ EXPORT_SYMBOL(ps3_mm_phys_to_lpar);
146void __init ps3_mm_vas_create(unsigned long* htab_size) 146void __init ps3_mm_vas_create(unsigned long* htab_size)
147{ 147{
148 int result; 148 int result;
149 unsigned long start_address; 149 u64 start_address;
150 unsigned long size; 150 u64 size;
151 unsigned long access_right; 151 u64 access_right;
152 unsigned long max_page_size; 152 u64 max_page_size;
153 unsigned long flags; 153 u64 flags;
154 154
155 result = lv1_query_logical_partition_address_region_info(0, 155 result = lv1_query_logical_partition_address_region_info(0,
156 &start_address, &size, &access_right, &max_page_size, 156 &start_address, &size, &access_right, &max_page_size,
@@ -164,7 +164,7 @@ void __init ps3_mm_vas_create(unsigned long* htab_size)
164 } 164 }
165 165
166 if (max_page_size < PAGE_SHIFT_16M) { 166 if (max_page_size < PAGE_SHIFT_16M) {
167 DBG("%s:%d: bad max_page_size %lxh\n", __func__, __LINE__, 167 DBG("%s:%d: bad max_page_size %llxh\n", __func__, __LINE__,
168 max_page_size); 168 max_page_size);
169 goto fail; 169 goto fail;
170 } 170 }
@@ -208,7 +208,7 @@ void ps3_mm_vas_destroy(void)
208{ 208{
209 int result; 209 int result;
210 210
211 DBG("%s:%d: map.vas_id = %lu\n", __func__, __LINE__, map.vas_id); 211 DBG("%s:%d: map.vas_id = %llu\n", __func__, __LINE__, map.vas_id);
212 212
213 if (map.vas_id) { 213 if (map.vas_id) {
214 result = lv1_select_virtual_address_space(0); 214 result = lv1_select_virtual_address_space(0);
@@ -235,15 +235,14 @@ void ps3_mm_vas_destroy(void)
235static int ps3_mm_region_create(struct mem_region *r, unsigned long size) 235static int ps3_mm_region_create(struct mem_region *r, unsigned long size)
236{ 236{
237 int result; 237 int result;
238 unsigned long muid; 238 u64 muid;
239 239
240 r->size = _ALIGN_DOWN(size, 1 << PAGE_SHIFT_16M); 240 r->size = _ALIGN_DOWN(size, 1 << PAGE_SHIFT_16M);
241 241
242 DBG("%s:%d requested %lxh\n", __func__, __LINE__, size); 242 DBG("%s:%d requested %lxh\n", __func__, __LINE__, size);
243 DBG("%s:%d actual %lxh\n", __func__, __LINE__, r->size); 243 DBG("%s:%d actual %llxh\n", __func__, __LINE__, r->size);
244 DBG("%s:%d difference %lxh (%luMB)\n", __func__, __LINE__, 244 DBG("%s:%d difference %llxh (%lluMB)\n", __func__, __LINE__,
245 (unsigned long)(size - r->size), 245 size - r->size, (size - r->size) / 1024 / 1024);
246 (size - r->size) / 1024 / 1024);
247 246
248 if (r->size == 0) { 247 if (r->size == 0) {
249 DBG("%s:%d: size == 0\n", __func__, __LINE__); 248 DBG("%s:%d: size == 0\n", __func__, __LINE__);
@@ -277,7 +276,7 @@ static void ps3_mm_region_destroy(struct mem_region *r)
277{ 276{
278 int result; 277 int result;
279 278
280 DBG("%s:%d: r->base = %lxh\n", __func__, __LINE__, r->base); 279 DBG("%s:%d: r->base = %llxh\n", __func__, __LINE__, r->base);
281 if (r->base) { 280 if (r->base) {
282 result = lv1_release_memory(r->base); 281 result = lv1_release_memory(r->base);
283 BUG_ON(result); 282 BUG_ON(result);
@@ -355,7 +354,7 @@ static unsigned long dma_sb_lpar_to_bus(struct ps3_dma_region *r,
355static void __maybe_unused _dma_dump_region(const struct ps3_dma_region *r, 354static void __maybe_unused _dma_dump_region(const struct ps3_dma_region *r,
356 const char *func, int line) 355 const char *func, int line)
357{ 356{
358 DBG("%s:%d: dev %lu:%lu\n", func, line, r->dev->bus_id, 357 DBG("%s:%d: dev %llu:%llu\n", func, line, r->dev->bus_id,
359 r->dev->dev_id); 358 r->dev->dev_id);
360 DBG("%s:%d: page_size %u\n", func, line, r->page_size); 359 DBG("%s:%d: page_size %u\n", func, line, r->page_size);
361 DBG("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr); 360 DBG("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr);
@@ -390,7 +389,7 @@ struct dma_chunk {
390static void _dma_dump_chunk (const struct dma_chunk* c, const char* func, 389static void _dma_dump_chunk (const struct dma_chunk* c, const char* func,
391 int line) 390 int line)
392{ 391{
393 DBG("%s:%d: r.dev %lu:%lu\n", func, line, 392 DBG("%s:%d: r.dev %llu:%llu\n", func, line,
394 c->region->dev->bus_id, c->region->dev->dev_id); 393 c->region->dev->bus_id, c->region->dev->dev_id);
395 DBG("%s:%d: r.bus_addr %lxh\n", func, line, c->region->bus_addr); 394 DBG("%s:%d: r.bus_addr %lxh\n", func, line, c->region->bus_addr);
396 DBG("%s:%d: r.page_size %u\n", func, line, c->region->page_size); 395 DBG("%s:%d: r.page_size %u\n", func, line, c->region->page_size);
@@ -596,7 +595,7 @@ static int dma_ioc0_map_pages(struct ps3_dma_region *r, unsigned long phys_addr,
596 595
597 /* build ioptes for the area */ 596 /* build ioptes for the area */
598 pages = len >> r->page_size; 597 pages = len >> r->page_size;
599 DBG("%s: pgsize=%#x len=%#lx pages=%#x iopteflag=%#lx\n", __func__, 598 DBG("%s: pgsize=%#x len=%#lx pages=%#x iopteflag=%#llx\n", __func__,
600 r->page_size, r->len, pages, iopte_flag); 599 r->page_size, r->len, pages, iopte_flag);
601 for (iopage = 0; iopage < pages; iopage++) { 600 for (iopage = 0; iopage < pages; iopage++) {
602 offset = (1 << r->page_size) * iopage; 601 offset = (1 << r->page_size) * iopage;
@@ -648,13 +647,14 @@ fail_alloc:
648static int dma_sb_region_create(struct ps3_dma_region *r) 647static int dma_sb_region_create(struct ps3_dma_region *r)
649{ 648{
650 int result; 649 int result;
650 u64 bus_addr;
651 651
652 DBG(" -> %s:%d:\n", __func__, __LINE__); 652 DBG(" -> %s:%d:\n", __func__, __LINE__);
653 653
654 BUG_ON(!r); 654 BUG_ON(!r);
655 655
656 if (!r->dev->bus_id) { 656 if (!r->dev->bus_id) {
657 pr_info("%s:%d: %lu:%lu no dma\n", __func__, __LINE__, 657 pr_info("%s:%d: %llu:%llu no dma\n", __func__, __LINE__,
658 r->dev->bus_id, r->dev->dev_id); 658 r->dev->bus_id, r->dev->dev_id);
659 return 0; 659 return 0;
660 } 660 }
@@ -671,7 +671,8 @@ static int dma_sb_region_create(struct ps3_dma_region *r)
671 671
672 result = lv1_allocate_device_dma_region(r->dev->bus_id, r->dev->dev_id, 672 result = lv1_allocate_device_dma_region(r->dev->bus_id, r->dev->dev_id,
673 roundup_pow_of_two(r->len), r->page_size, r->region_type, 673 roundup_pow_of_two(r->len), r->page_size, r->region_type,
674 &r->bus_addr); 674 &bus_addr);
675 r->bus_addr = bus_addr;
675 676
676 if (result) { 677 if (result) {
677 DBG("%s:%d: lv1_allocate_device_dma_region failed: %s\n", 678 DBG("%s:%d: lv1_allocate_device_dma_region failed: %s\n",
@@ -685,6 +686,7 @@ static int dma_sb_region_create(struct ps3_dma_region *r)
685static int dma_ioc0_region_create(struct ps3_dma_region *r) 686static int dma_ioc0_region_create(struct ps3_dma_region *r)
686{ 687{
687 int result; 688 int result;
689 u64 bus_addr;
688 690
689 INIT_LIST_HEAD(&r->chunk_list.head); 691 INIT_LIST_HEAD(&r->chunk_list.head);
690 spin_lock_init(&r->chunk_list.lock); 692 spin_lock_init(&r->chunk_list.lock);
@@ -692,7 +694,8 @@ static int dma_ioc0_region_create(struct ps3_dma_region *r)
692 result = lv1_allocate_io_segment(0, 694 result = lv1_allocate_io_segment(0,
693 r->len, 695 r->len,
694 r->page_size, 696 r->page_size,
695 &r->bus_addr); 697 &bus_addr);
698 r->bus_addr = bus_addr;
696 if (result) { 699 if (result) {
697 DBG("%s:%d: lv1_allocate_io_segment failed: %s\n", 700 DBG("%s:%d: lv1_allocate_io_segment failed: %s\n",
698 __func__, __LINE__, ps3_result(result)); 701 __func__, __LINE__, ps3_result(result));
@@ -720,7 +723,7 @@ static int dma_sb_region_free(struct ps3_dma_region *r)
720 BUG_ON(!r); 723 BUG_ON(!r);
721 724
722 if (!r->dev->bus_id) { 725 if (!r->dev->bus_id) {
723 pr_info("%s:%d: %lu:%lu no dma\n", __func__, __LINE__, 726 pr_info("%s:%d: %llu:%llu no dma\n", __func__, __LINE__,
724 r->dev->bus_id, r->dev->dev_id); 727 r->dev->bus_id, r->dev->dev_id);
725 return 0; 728 return 0;
726 } 729 }
@@ -777,7 +780,7 @@ static int dma_ioc0_region_free(struct ps3_dma_region *r)
777 */ 780 */
778 781
779static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, 782static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
780 unsigned long len, unsigned long *bus_addr, 783 unsigned long len, dma_addr_t *bus_addr,
781 u64 iopte_flag) 784 u64 iopte_flag)
782{ 785{
783 int result; 786 int result;
@@ -800,7 +803,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
800 DBG("%s:%d lpar_addr %lxh\n", __func__, __LINE__, 803 DBG("%s:%d lpar_addr %lxh\n", __func__, __LINE__,
801 lpar_addr); 804 lpar_addr);
802 DBG("%s:%d len %lxh\n", __func__, __LINE__, len); 805 DBG("%s:%d len %lxh\n", __func__, __LINE__, len);
803 DBG("%s:%d bus_addr %lxh (%lxh)\n", __func__, __LINE__, 806 DBG("%s:%d bus_addr %llxh (%lxh)\n", __func__, __LINE__,
804 *bus_addr, len); 807 *bus_addr, len);
805 } 808 }
806 809
@@ -832,7 +835,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
832} 835}
833 836
834static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, 837static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
835 unsigned long len, unsigned long *bus_addr, 838 unsigned long len, dma_addr_t *bus_addr,
836 u64 iopte_flag) 839 u64 iopte_flag)
837{ 840{
838 int result; 841 int result;
@@ -872,7 +875,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
872 return result; 875 return result;
873 } 876 }
874 *bus_addr = c->bus_addr + phys_addr - aligned_phys; 877 *bus_addr = c->bus_addr + phys_addr - aligned_phys;
875 DBG("%s: va=%#lx pa=%#lx a_pa=%#lx bus=%#lx\n", __func__, 878 DBG("%s: va=%#lx pa=%#lx a_pa=%#lx bus=%#llx\n", __func__,
876 virt_addr, phys_addr, aligned_phys, *bus_addr); 879 virt_addr, phys_addr, aligned_phys, *bus_addr);
877 c->usage_count = 1; 880 c->usage_count = 1;
878 881
@@ -889,7 +892,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
889 * This is the common dma unmap routine. 892 * This is the common dma unmap routine.
890 */ 893 */
891 894
892static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr, 895static int dma_sb_unmap_area(struct ps3_dma_region *r, dma_addr_t bus_addr,
893 unsigned long len) 896 unsigned long len)
894{ 897{
895 unsigned long flags; 898 unsigned long flags;
@@ -903,7 +906,7 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr,
903 1 << r->page_size); 906 1 << r->page_size);
904 unsigned long aligned_len = _ALIGN_UP(len + bus_addr 907 unsigned long aligned_len = _ALIGN_UP(len + bus_addr
905 - aligned_bus, 1 << r->page_size); 908 - aligned_bus, 1 << r->page_size);
906 DBG("%s:%d: not found: bus_addr %lxh\n", 909 DBG("%s:%d: not found: bus_addr %llxh\n",
907 __func__, __LINE__, bus_addr); 910 __func__, __LINE__, bus_addr);
908 DBG("%s:%d: not found: len %lxh\n", 911 DBG("%s:%d: not found: len %lxh\n",
909 __func__, __LINE__, len); 912 __func__, __LINE__, len);
@@ -926,12 +929,12 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr,
926} 929}
927 930
928static int dma_ioc0_unmap_area(struct ps3_dma_region *r, 931static int dma_ioc0_unmap_area(struct ps3_dma_region *r,
929 unsigned long bus_addr, unsigned long len) 932 dma_addr_t bus_addr, unsigned long len)
930{ 933{
931 unsigned long flags; 934 unsigned long flags;
932 struct dma_chunk *c; 935 struct dma_chunk *c;
933 936
934 DBG("%s: start a=%#lx l=%#lx\n", __func__, bus_addr, len); 937 DBG("%s: start a=%#llx l=%#lx\n", __func__, bus_addr, len);
935 spin_lock_irqsave(&r->chunk_list.lock, flags); 938 spin_lock_irqsave(&r->chunk_list.lock, flags);
936 c = dma_find_chunk(r, bus_addr, len); 939 c = dma_find_chunk(r, bus_addr, len);
937 940
@@ -941,7 +944,7 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r,
941 unsigned long aligned_len = _ALIGN_UP(len + bus_addr 944 unsigned long aligned_len = _ALIGN_UP(len + bus_addr
942 - aligned_bus, 945 - aligned_bus,
943 1 << r->page_size); 946 1 << r->page_size);
944 DBG("%s:%d: not found: bus_addr %lxh\n", 947 DBG("%s:%d: not found: bus_addr %llxh\n",
945 __func__, __LINE__, bus_addr); 948 __func__, __LINE__, bus_addr);
946 DBG("%s:%d: not found: len %lxh\n", 949 DBG("%s:%d: not found: len %lxh\n",
947 __func__, __LINE__, len); 950 __func__, __LINE__, len);
@@ -975,7 +978,8 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r,
975static int dma_sb_region_create_linear(struct ps3_dma_region *r) 978static int dma_sb_region_create_linear(struct ps3_dma_region *r)
976{ 979{
977 int result; 980 int result;
978 unsigned long virt_addr, len, tmp; 981 unsigned long virt_addr, len;
982 dma_addr_t tmp;
979 983
980 if (r->len > 16*1024*1024) { /* FIXME: need proper fix */ 984 if (r->len > 16*1024*1024) { /* FIXME: need proper fix */
981 /* force 16M dma pages for linear mapping */ 985 /* force 16M dma pages for linear mapping */
@@ -1027,7 +1031,8 @@ static int dma_sb_region_create_linear(struct ps3_dma_region *r)
1027static int dma_sb_region_free_linear(struct ps3_dma_region *r) 1031static int dma_sb_region_free_linear(struct ps3_dma_region *r)
1028{ 1032{
1029 int result; 1033 int result;
1030 unsigned long bus_addr, len, lpar_addr; 1034 dma_addr_t bus_addr;
1035 unsigned long len, lpar_addr;
1031 1036
1032 if (r->offset < map.rm.size) { 1037 if (r->offset < map.rm.size) {
1033 /* Unmap (part of) 1st RAM chunk */ 1038 /* Unmap (part of) 1st RAM chunk */
@@ -1072,7 +1077,7 @@ static int dma_sb_region_free_linear(struct ps3_dma_region *r)
1072 */ 1077 */
1073 1078
1074static int dma_sb_map_area_linear(struct ps3_dma_region *r, 1079static int dma_sb_map_area_linear(struct ps3_dma_region *r,
1075 unsigned long virt_addr, unsigned long len, unsigned long *bus_addr, 1080 unsigned long virt_addr, unsigned long len, dma_addr_t *bus_addr,
1076 u64 iopte_flag) 1081 u64 iopte_flag)
1077{ 1082{
1078 unsigned long phys_addr = is_kernel_addr(virt_addr) ? __pa(virt_addr) 1083 unsigned long phys_addr = is_kernel_addr(virt_addr) ? __pa(virt_addr)
@@ -1091,7 +1096,7 @@ static int dma_sb_map_area_linear(struct ps3_dma_region *r,
1091 */ 1096 */
1092 1097
1093static int dma_sb_unmap_area_linear(struct ps3_dma_region *r, 1098static int dma_sb_unmap_area_linear(struct ps3_dma_region *r,
1094 unsigned long bus_addr, unsigned long len) 1099 dma_addr_t bus_addr, unsigned long len)
1095{ 1100{
1096 return 0; 1101 return 0;
1097}; 1102};
@@ -1169,13 +1174,13 @@ int ps3_dma_region_free(struct ps3_dma_region *r)
1169EXPORT_SYMBOL(ps3_dma_region_free); 1174EXPORT_SYMBOL(ps3_dma_region_free);
1170 1175
1171int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, 1176int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr,
1172 unsigned long len, unsigned long *bus_addr, 1177 unsigned long len, dma_addr_t *bus_addr,
1173 u64 iopte_flag) 1178 u64 iopte_flag)
1174{ 1179{
1175 return r->region_ops->map(r, virt_addr, len, bus_addr, iopte_flag); 1180 return r->region_ops->map(r, virt_addr, len, bus_addr, iopte_flag);
1176} 1181}
1177 1182
1178int ps3_dma_unmap(struct ps3_dma_region *r, unsigned long bus_addr, 1183int ps3_dma_unmap(struct ps3_dma_region *r, dma_addr_t bus_addr,
1179 unsigned long len) 1184 unsigned long len)
1180{ 1185{
1181 return r->region_ops->unmap(r, bus_addr, len); 1186 return r->region_ops->unmap(r, bus_addr, len);
diff --git a/arch/powerpc/platforms/ps3/os-area.c b/arch/powerpc/platforms/ps3/os-area.c
index 1d201782d4e5..e1c83c23b435 100644
--- a/arch/powerpc/platforms/ps3/os-area.c
+++ b/arch/powerpc/platforms/ps3/os-area.c
@@ -306,7 +306,7 @@ static void _dump_params(const struct os_area_params *p, const char *func,
306{ 306{
307 pr_debug("%s:%d: p.boot_flag: %u\n", func, line, p->boot_flag); 307 pr_debug("%s:%d: p.boot_flag: %u\n", func, line, p->boot_flag);
308 pr_debug("%s:%d: p.num_params: %u\n", func, line, p->num_params); 308 pr_debug("%s:%d: p.num_params: %u\n", func, line, p->num_params);
309 pr_debug("%s:%d: p.rtc_diff %ld\n", func, line, p->rtc_diff); 309 pr_debug("%s:%d: p.rtc_diff %lld\n", func, line, p->rtc_diff);
310 pr_debug("%s:%d: p.av_multi_out %u\n", func, line, p->av_multi_out); 310 pr_debug("%s:%d: p.av_multi_out %u\n", func, line, p->av_multi_out);
311 pr_debug("%s:%d: p.ctrl_button: %u\n", func, line, p->ctrl_button); 311 pr_debug("%s:%d: p.ctrl_button: %u\n", func, line, p->ctrl_button);
312 pr_debug("%s:%d: p.static_ip_addr: %u.%u.%u.%u\n", func, line, 312 pr_debug("%s:%d: p.static_ip_addr: %u.%u.%u.%u\n", func, line,
diff --git a/arch/powerpc/platforms/ps3/repository.c b/arch/powerpc/platforms/ps3/repository.c
index 22063adeb38b..5e304c292f68 100644
--- a/arch/powerpc/platforms/ps3/repository.c
+++ b/arch/powerpc/platforms/ps3/repository.c
@@ -44,7 +44,7 @@ static void _dump_field(const char *hdr, u64 n, const char *func, int line)
44 s[i] = (in[i] <= 126 && in[i] >= 32) ? in[i] : '.'; 44 s[i] = (in[i] <= 126 && in[i] >= 32) ? in[i] : '.';
45 s[i] = 0; 45 s[i] = 0;
46 46
47 pr_debug("%s:%d: %s%016lx : %s\n", func, line, hdr, n, s); 47 pr_debug("%s:%d: %s%016llx : %s\n", func, line, hdr, n, s);
48#endif 48#endif
49} 49}
50 50
@@ -70,8 +70,8 @@ static void _dump_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4,
70 _dump_field("n2: ", n2, func, line); 70 _dump_field("n2: ", n2, func, line);
71 _dump_field("n3: ", n3, func, line); 71 _dump_field("n3: ", n3, func, line);
72 _dump_field("n4: ", n4, func, line); 72 _dump_field("n4: ", n4, func, line);
73 pr_debug("%s:%d: v1: %016lx\n", func, line, v1); 73 pr_debug("%s:%d: v1: %016llx\n", func, line, v1);
74 pr_debug("%s:%d: v2: %016lx\n", func, line, v2); 74 pr_debug("%s:%d: v2: %016llx\n", func, line, v2);
75} 75}
76 76
77/** 77/**
@@ -149,10 +149,10 @@ static int read_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4,
149 *_v2 = v2; 149 *_v2 = v2;
150 150
151 if (v1 && !_v1) 151 if (v1 && !_v1)
152 pr_debug("%s:%d: warning: discarding non-zero v1: %016lx\n", 152 pr_debug("%s:%d: warning: discarding non-zero v1: %016llx\n",
153 __func__, __LINE__, v1); 153 __func__, __LINE__, v1);
154 if (v2 && !_v2) 154 if (v2 && !_v2)
155 pr_debug("%s:%d: warning: discarding non-zero v2: %016lx\n", 155 pr_debug("%s:%d: warning: discarding non-zero v2: %016llx\n",
156 __func__, __LINE__, v2); 156 __func__, __LINE__, v2);
157 157
158 return 0; 158 return 0;
@@ -327,7 +327,7 @@ int ps3_repository_find_device(struct ps3_repository_device *repo)
327 return result; 327 return result;
328 } 328 }
329 329
330 pr_debug("%s:%d: bus_type %u, bus_index %u, bus_id %lu, num_dev %u\n", 330 pr_debug("%s:%d: bus_type %u, bus_index %u, bus_id %llu, num_dev %u\n",
331 __func__, __LINE__, tmp.bus_type, tmp.bus_index, tmp.bus_id, 331 __func__, __LINE__, tmp.bus_type, tmp.bus_index, tmp.bus_id,
332 num_dev); 332 num_dev);
333 333
@@ -353,7 +353,7 @@ int ps3_repository_find_device(struct ps3_repository_device *repo)
353 return result; 353 return result;
354 } 354 }
355 355
356 pr_debug("%s:%d: found: dev_type %u, dev_index %u, dev_id %lu\n", 356 pr_debug("%s:%d: found: dev_type %u, dev_index %u, dev_id %llu\n",
357 __func__, __LINE__, tmp.dev_type, tmp.dev_index, tmp.dev_id); 357 __func__, __LINE__, tmp.dev_type, tmp.dev_index, tmp.dev_id);
358 358
359 *repo = tmp; 359 *repo = tmp;
@@ -367,7 +367,7 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo,
367 struct ps3_repository_device tmp; 367 struct ps3_repository_device tmp;
368 unsigned int num_dev; 368 unsigned int num_dev;
369 369
370 pr_debug(" -> %s:%u: find device by id %lu:%lu\n", __func__, __LINE__, 370 pr_debug(" -> %s:%u: find device by id %llu:%llu\n", __func__, __LINE__,
371 bus_id, dev_id); 371 bus_id, dev_id);
372 372
373 for (tmp.bus_index = 0; tmp.bus_index < 10; tmp.bus_index++) { 373 for (tmp.bus_index = 0; tmp.bus_index < 10; tmp.bus_index++) {
@@ -382,7 +382,7 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo,
382 if (tmp.bus_id == bus_id) 382 if (tmp.bus_id == bus_id)
383 goto found_bus; 383 goto found_bus;
384 384
385 pr_debug("%s:%u: skip, bus_id %lu\n", __func__, __LINE__, 385 pr_debug("%s:%u: skip, bus_id %llu\n", __func__, __LINE__,
386 tmp.bus_id); 386 tmp.bus_id);
387 } 387 }
388 pr_debug(" <- %s:%u: bus not found\n", __func__, __LINE__); 388 pr_debug(" <- %s:%u: bus not found\n", __func__, __LINE__);
@@ -416,7 +416,7 @@ found_bus:
416 if (tmp.dev_id == dev_id) 416 if (tmp.dev_id == dev_id)
417 goto found_dev; 417 goto found_dev;
418 418
419 pr_debug("%s:%u: skip, dev_id %lu\n", __func__, __LINE__, 419 pr_debug("%s:%u: skip, dev_id %llu\n", __func__, __LINE__,
420 tmp.dev_id); 420 tmp.dev_id);
421 } 421 }
422 pr_debug(" <- %s:%u: dev not found\n", __func__, __LINE__); 422 pr_debug(" <- %s:%u: dev not found\n", __func__, __LINE__);
@@ -430,7 +430,7 @@ found_dev:
430 return result; 430 return result;
431 } 431 }
432 432
433 pr_debug(" <- %s:%u: found: type (%u:%u) index (%u:%u) id (%lu:%lu)\n", 433 pr_debug(" <- %s:%u: found: type (%u:%u) index (%u:%u) id (%llu:%llu)\n",
434 __func__, __LINE__, tmp.bus_type, tmp.dev_type, tmp.bus_index, 434 __func__, __LINE__, tmp.bus_type, tmp.dev_type, tmp.bus_index,
435 tmp.dev_index, tmp.bus_id, tmp.dev_id); 435 tmp.dev_index, tmp.bus_id, tmp.dev_id);
436 *repo = tmp; 436 *repo = tmp;
diff --git a/arch/powerpc/platforms/ps3/setup.c b/arch/powerpc/platforms/ps3/setup.c
index 35f3e85cf60e..3331ccbb8d38 100644
--- a/arch/powerpc/platforms/ps3/setup.c
+++ b/arch/powerpc/platforms/ps3/setup.c
@@ -186,7 +186,7 @@ early_param("ps3flash", early_parse_ps3flash);
186#define prealloc_ps3flash_bounce_buffer() do { } while (0) 186#define prealloc_ps3flash_bounce_buffer() do { } while (0)
187#endif 187#endif
188 188
189static int ps3_set_dabr(u64 dabr) 189static int ps3_set_dabr(unsigned long dabr)
190{ 190{
191 enum {DABR_USER = 1, DABR_KERNEL = 2,}; 191 enum {DABR_USER = 1, DABR_KERNEL = 2,};
192 192
diff --git a/arch/powerpc/platforms/ps3/spu.c b/arch/powerpc/platforms/ps3/spu.c
index ccae3d446b98..b3c6a993f9f3 100644
--- a/arch/powerpc/platforms/ps3/spu.c
+++ b/arch/powerpc/platforms/ps3/spu.c
@@ -149,7 +149,7 @@ EXPORT_SYMBOL_GPL(ps3_get_spe_id);
149 149
150static unsigned long get_vas_id(void) 150static unsigned long get_vas_id(void)
151{ 151{
152 unsigned long id; 152 u64 id;
153 153
154 lv1_get_logical_ppe_id(&id); 154 lv1_get_logical_ppe_id(&id);
155 lv1_get_virtual_address_space_id_of_ppe(id, &id); 155 lv1_get_virtual_address_space_id_of_ppe(id, &id);
@@ -160,14 +160,18 @@ static unsigned long get_vas_id(void)
160static int __init construct_spu(struct spu *spu) 160static int __init construct_spu(struct spu *spu)
161{ 161{
162 int result; 162 int result;
163 unsigned long unused; 163 u64 unused;
164 u64 problem_phys;
165 u64 local_store_phys;
164 166
165 result = lv1_construct_logical_spe(PAGE_SHIFT, PAGE_SHIFT, PAGE_SHIFT, 167 result = lv1_construct_logical_spe(PAGE_SHIFT, PAGE_SHIFT, PAGE_SHIFT,
166 PAGE_SHIFT, PAGE_SHIFT, get_vas_id(), SPE_TYPE_LOGICAL, 168 PAGE_SHIFT, PAGE_SHIFT, get_vas_id(), SPE_TYPE_LOGICAL,
167 &spu_pdata(spu)->priv2_addr, &spu->problem_phys, 169 &spu_pdata(spu)->priv2_addr, &problem_phys,
168 &spu->local_store_phys, &unused, 170 &local_store_phys, &unused,
169 &spu_pdata(spu)->shadow_addr, 171 &spu_pdata(spu)->shadow_addr,
170 &spu_pdata(spu)->spe_id); 172 &spu_pdata(spu)->spe_id);
173 spu->problem_phys = problem_phys;
174 spu->local_store_phys = local_store_phys;
171 175
172 if (result) { 176 if (result) {
173 pr_debug("%s:%d: lv1_construct_logical_spe failed: %s\n", 177 pr_debug("%s:%d: lv1_construct_logical_spe failed: %s\n",
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c
index ee0d22911621..58311a867851 100644
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c
@@ -182,7 +182,7 @@ int ps3_open_hv_device(struct ps3_system_bus_device *dev)
182 case PS3_MATCH_ID_SYSTEM_MANAGER: 182 case PS3_MATCH_ID_SYSTEM_MANAGER:
183 pr_debug("%s:%d: unsupported match_id: %u\n", __func__, 183 pr_debug("%s:%d: unsupported match_id: %u\n", __func__,
184 __LINE__, dev->match_id); 184 __LINE__, dev->match_id);
185 pr_debug("%s:%d: bus_id: %lu\n", __func__, __LINE__, 185 pr_debug("%s:%d: bus_id: %llu\n", __func__, __LINE__,
186 dev->bus_id); 186 dev->bus_id);
187 BUG(); 187 BUG();
188 return -EINVAL; 188 return -EINVAL;
@@ -220,7 +220,7 @@ int ps3_close_hv_device(struct ps3_system_bus_device *dev)
220 case PS3_MATCH_ID_SYSTEM_MANAGER: 220 case PS3_MATCH_ID_SYSTEM_MANAGER:
221 pr_debug("%s:%d: unsupported match_id: %u\n", __func__, 221 pr_debug("%s:%d: unsupported match_id: %u\n", __func__,
222 __LINE__, dev->match_id); 222 __LINE__, dev->match_id);
223 pr_debug("%s:%d: bus_id: %lu\n", __func__, __LINE__, 223 pr_debug("%s:%d: bus_id: %llu\n", __func__, __LINE__,
224 dev->bus_id); 224 dev->bus_id);
225 BUG(); 225 BUG();
226 return -EINVAL; 226 return -EINVAL;
@@ -240,7 +240,7 @@ EXPORT_SYMBOL_GPL(ps3_close_hv_device);
240static void _dump_mmio_region(const struct ps3_mmio_region* r, 240static void _dump_mmio_region(const struct ps3_mmio_region* r,
241 const char* func, int line) 241 const char* func, int line)
242{ 242{
243 pr_debug("%s:%d: dev %lu:%lu\n", func, line, r->dev->bus_id, 243 pr_debug("%s:%d: dev %llu:%llu\n", func, line, r->dev->bus_id,
244 r->dev->dev_id); 244 r->dev->dev_id);
245 pr_debug("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr); 245 pr_debug("%s:%d: bus_addr %lxh\n", func, line, r->bus_addr);
246 pr_debug("%s:%d: len %lxh\n", func, line, r->len); 246 pr_debug("%s:%d: len %lxh\n", func, line, r->len);
@@ -250,9 +250,11 @@ static void _dump_mmio_region(const struct ps3_mmio_region* r,
250static int ps3_sb_mmio_region_create(struct ps3_mmio_region *r) 250static int ps3_sb_mmio_region_create(struct ps3_mmio_region *r)
251{ 251{
252 int result; 252 int result;
253 u64 lpar_addr;
253 254
254 result = lv1_map_device_mmio_region(r->dev->bus_id, r->dev->dev_id, 255 result = lv1_map_device_mmio_region(r->dev->bus_id, r->dev->dev_id,
255 r->bus_addr, r->len, r->page_size, &r->lpar_addr); 256 r->bus_addr, r->len, r->page_size, &lpar_addr);
257 r->lpar_addr = lpar_addr;
256 258
257 if (result) { 259 if (result) {
258 pr_debug("%s:%d: lv1_map_device_mmio_region failed: %s\n", 260 pr_debug("%s:%d: lv1_map_device_mmio_region failed: %s\n",
@@ -568,7 +570,7 @@ static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page,
568{ 570{
569 struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); 571 struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev);
570 int result; 572 int result;
571 unsigned long bus_addr; 573 dma_addr_t bus_addr;
572 void *ptr = page_address(page) + offset; 574 void *ptr = page_address(page) + offset;
573 575
574 result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size, 576 result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size,
@@ -590,7 +592,7 @@ static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page,
590{ 592{
591 struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); 593 struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev);
592 int result; 594 int result;
593 unsigned long bus_addr; 595 dma_addr_t bus_addr;
594 u64 iopte_flag; 596 u64 iopte_flag;
595 void *ptr = page_address(page) + offset; 597 void *ptr = page_address(page) + offset;
596 598
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index c90817acb472..3ee01b4f4257 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -127,10 +127,10 @@ static int tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum,
127 } 127 }
128 128
129 if (rc && printk_ratelimit()) { 129 if (rc && printk_ratelimit()) {
130 printk("tce_build_pSeriesLP: plpar_tce_put failed. rc=%ld\n", rc); 130 printk("tce_build_pSeriesLP: plpar_tce_put failed. rc=%lld\n", rc);
131 printk("\tindex = 0x%lx\n", (u64)tbl->it_index); 131 printk("\tindex = 0x%llx\n", (u64)tbl->it_index);
132 printk("\ttcenum = 0x%lx\n", (u64)tcenum); 132 printk("\ttcenum = 0x%llx\n", (u64)tcenum);
133 printk("\ttce val = 0x%lx\n", tce ); 133 printk("\ttce val = 0x%llx\n", tce );
134 show_stack(current, (unsigned long *)__get_SP()); 134 show_stack(current, (unsigned long *)__get_SP());
135 } 135 }
136 136
@@ -210,10 +210,10 @@ static int tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
210 } 210 }
211 211
212 if (rc && printk_ratelimit()) { 212 if (rc && printk_ratelimit()) {
213 printk("tce_buildmulti_pSeriesLP: plpar_tce_put failed. rc=%ld\n", rc); 213 printk("tce_buildmulti_pSeriesLP: plpar_tce_put failed. rc=%lld\n", rc);
214 printk("\tindex = 0x%lx\n", (u64)tbl->it_index); 214 printk("\tindex = 0x%llx\n", (u64)tbl->it_index);
215 printk("\tnpages = 0x%lx\n", (u64)npages); 215 printk("\tnpages = 0x%llx\n", (u64)npages);
216 printk("\ttce[0] val = 0x%lx\n", tcep[0]); 216 printk("\ttce[0] val = 0x%llx\n", tcep[0]);
217 show_stack(current, (unsigned long *)__get_SP()); 217 show_stack(current, (unsigned long *)__get_SP());
218 } 218 }
219 return ret; 219 return ret;
@@ -227,9 +227,9 @@ static void tce_free_pSeriesLP(struct iommu_table *tbl, long tcenum, long npages
227 rc = plpar_tce_put((u64)tbl->it_index, (u64)tcenum << 12, 0); 227 rc = plpar_tce_put((u64)tbl->it_index, (u64)tcenum << 12, 0);
228 228
229 if (rc && printk_ratelimit()) { 229 if (rc && printk_ratelimit()) {
230 printk("tce_free_pSeriesLP: plpar_tce_put failed. rc=%ld\n", rc); 230 printk("tce_free_pSeriesLP: plpar_tce_put failed. rc=%lld\n", rc);
231 printk("\tindex = 0x%lx\n", (u64)tbl->it_index); 231 printk("\tindex = 0x%llx\n", (u64)tbl->it_index);
232 printk("\ttcenum = 0x%lx\n", (u64)tcenum); 232 printk("\ttcenum = 0x%llx\n", (u64)tcenum);
233 show_stack(current, (unsigned long *)__get_SP()); 233 show_stack(current, (unsigned long *)__get_SP());
234 } 234 }
235 235
@@ -246,9 +246,9 @@ static void tce_freemulti_pSeriesLP(struct iommu_table *tbl, long tcenum, long n
246 246
247 if (rc && printk_ratelimit()) { 247 if (rc && printk_ratelimit()) {
248 printk("tce_freemulti_pSeriesLP: plpar_tce_stuff failed\n"); 248 printk("tce_freemulti_pSeriesLP: plpar_tce_stuff failed\n");
249 printk("\trc = %ld\n", rc); 249 printk("\trc = %lld\n", rc);
250 printk("\tindex = 0x%lx\n", (u64)tbl->it_index); 250 printk("\tindex = 0x%llx\n", (u64)tbl->it_index);
251 printk("\tnpages = 0x%lx\n", (u64)npages); 251 printk("\tnpages = 0x%llx\n", (u64)npages);
252 show_stack(current, (unsigned long *)__get_SP()); 252 show_stack(current, (unsigned long *)__get_SP());
253 } 253 }
254} 254}
@@ -261,10 +261,9 @@ static unsigned long tce_get_pSeriesLP(struct iommu_table *tbl, long tcenum)
261 rc = plpar_tce_get((u64)tbl->it_index, (u64)tcenum << 12, &tce_ret); 261 rc = plpar_tce_get((u64)tbl->it_index, (u64)tcenum << 12, &tce_ret);
262 262
263 if (rc && printk_ratelimit()) { 263 if (rc && printk_ratelimit()) {
264 printk("tce_get_pSeriesLP: plpar_tce_get failed. rc=%ld\n", 264 printk("tce_get_pSeriesLP: plpar_tce_get failed. rc=%lld\n", rc);
265 rc); 265 printk("\tindex = 0x%llx\n", (u64)tbl->it_index);
266 printk("\tindex = 0x%lx\n", (u64)tbl->it_index); 266 printk("\ttcenum = 0x%llx\n", (u64)tcenum);
267 printk("\ttcenum = 0x%lx\n", (u64)tcenum);
268 show_stack(current, (unsigned long *)__get_SP()); 267 show_stack(current, (unsigned long *)__get_SP());
269 } 268 }
270 269
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index f611d0369cc8..9817f63723dd 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -28,63 +28,104 @@
28#include <sysdev/fsl_pci.h> 28#include <sysdev/fsl_pci.h>
29 29
30#if defined(CONFIG_PPC_85xx) || defined(CONFIG_PPC_86xx) 30#if defined(CONFIG_PPC_85xx) || defined(CONFIG_PPC_86xx)
31static int __init setup_one_atmu(struct ccsr_pci __iomem *pci,
32 unsigned int index, const struct resource *res,
33 resource_size_t offset)
34{
35 resource_size_t pci_addr = res->start - offset;
36 resource_size_t phys_addr = res->start;
37 resource_size_t size = res->end - res->start + 1;
38 u32 flags = 0x80044000; /* enable & mem R/W */
39 unsigned int i;
40
41 pr_debug("PCI MEM resource start 0x%016llx, size 0x%016llx.\n",
42 (u64)res->start, (u64)size);
43
44 if (res->flags & IORESOURCE_PREFETCH)
45 flags |= 0x10000000; /* enable relaxed ordering */
46
47 for (i = 0; size > 0; i++) {
48 unsigned int bits = min(__ilog2(size),
49 __ffs(pci_addr | phys_addr));
50
51 if (index + i >= 5)
52 return -1;
53
54 out_be32(&pci->pow[index + i].potar, pci_addr >> 12);
55 out_be32(&pci->pow[index + i].potear, (u64)pci_addr >> 44);
56 out_be32(&pci->pow[index + i].powbar, phys_addr >> 12);
57 out_be32(&pci->pow[index + i].powar, flags | (bits - 1));
58
59 pci_addr += (resource_size_t)1U << bits;
60 phys_addr += (resource_size_t)1U << bits;
61 size -= (resource_size_t)1U << bits;
62 }
63
64 return i;
65}
66
31/* atmu setup for fsl pci/pcie controller */ 67/* atmu setup for fsl pci/pcie controller */
32static void __init setup_pci_atmu(struct pci_controller *hose, 68static void __init setup_pci_atmu(struct pci_controller *hose,
33 struct resource *rsrc) 69 struct resource *rsrc)
34{ 70{
35 struct ccsr_pci __iomem *pci; 71 struct ccsr_pci __iomem *pci;
36 int i; 72 int i, j, n;
37 73
38 pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n", 74 pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n",
39 (u64)rsrc->start, (u64)rsrc->end - (u64)rsrc->start + 1); 75 (u64)rsrc->start, (u64)rsrc->end - (u64)rsrc->start + 1);
40 pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1); 76 pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1);
77 if (!pci) {
78 dev_err(hose->parent, "Unable to map ATMU registers\n");
79 return;
80 }
41 81
42 /* Disable all windows (except powar0 since its ignored) */ 82 /* Disable all windows (except powar0 since it's ignored) */
43 for(i = 1; i < 5; i++) 83 for(i = 1; i < 5; i++)
44 out_be32(&pci->pow[i].powar, 0); 84 out_be32(&pci->pow[i].powar, 0);
45 for(i = 0; i < 3; i++) 85 for(i = 0; i < 3; i++)
46 out_be32(&pci->piw[i].piwar, 0); 86 out_be32(&pci->piw[i].piwar, 0);
47 87
48 /* Setup outbound MEM window */ 88 /* Setup outbound MEM window */
49 for(i = 0; i < 3; i++) 89 for(i = 0, j = 1; i < 3; i++) {
50 if (hose->mem_resources[i].flags & IORESOURCE_MEM){ 90 if (!(hose->mem_resources[i].flags & IORESOURCE_MEM))
51 resource_size_t pci_addr_start = 91 continue;
52 hose->mem_resources[i].start - 92
53 hose->pci_mem_offset; 93 n = setup_one_atmu(pci, j, &hose->mem_resources[i],
54 pr_debug("PCI MEM resource start 0x%016llx, size 0x%016llx.\n", 94 hose->pci_mem_offset);
55 (u64)hose->mem_resources[i].start, 95
56 (u64)hose->mem_resources[i].end 96 if (n < 0 || j >= 5) {
57 - (u64)hose->mem_resources[i].start + 1); 97 pr_err("Ran out of outbound PCI ATMUs for resource %d!\n", i);
58 out_be32(&pci->pow[i+1].potar, (pci_addr_start >> 12)); 98 hose->mem_resources[i].flags |= IORESOURCE_DISABLED;
59 out_be32(&pci->pow[i+1].potear, 0); 99 } else
60 out_be32(&pci->pow[i+1].powbar, 100 j += n;
61 (hose->mem_resources[i].start >> 12)); 101 }
62 /* Enable, Mem R/W */
63 out_be32(&pci->pow[i+1].powar, 0x80044000
64 | (__ilog2(hose->mem_resources[i].end
65 - hose->mem_resources[i].start + 1) - 1));
66 }
67 102
68 /* Setup outbound IO window */ 103 /* Setup outbound IO window */
69 if (hose->io_resource.flags & IORESOURCE_IO){ 104 if (hose->io_resource.flags & IORESOURCE_IO) {
70 pr_debug("PCI IO resource start 0x%016llx, size 0x%016llx, " 105 if (j >= 5) {
71 "phy base 0x%016llx.\n", 106 pr_err("Ran out of outbound PCI ATMUs for IO resource\n");
72 (u64)hose->io_resource.start, 107 } else {
73 (u64)hose->io_resource.end - (u64)hose->io_resource.start + 1, 108 pr_debug("PCI IO resource start 0x%016llx, size 0x%016llx, "
74 (u64)hose->io_base_phys); 109 "phy base 0x%016llx.\n",
75 out_be32(&pci->pow[i+1].potar, (hose->io_resource.start >> 12)); 110 (u64)hose->io_resource.start,
76 out_be32(&pci->pow[i+1].potear, 0); 111 (u64)hose->io_resource.end - (u64)hose->io_resource.start + 1,
77 out_be32(&pci->pow[i+1].powbar, (hose->io_base_phys >> 12)); 112 (u64)hose->io_base_phys);
78 /* Enable, IO R/W */ 113 out_be32(&pci->pow[j].potar, (hose->io_resource.start >> 12));
79 out_be32(&pci->pow[i+1].powar, 0x80088000 114 out_be32(&pci->pow[j].potear, 0);
80 | (__ilog2(hose->io_resource.end 115 out_be32(&pci->pow[j].powbar, (hose->io_base_phys >> 12));
81 - hose->io_resource.start + 1) - 1)); 116 /* Enable, IO R/W */
117 out_be32(&pci->pow[j].powar, 0x80088000
118 | (__ilog2(hose->io_resource.end
119 - hose->io_resource.start + 1) - 1));
120 }
82 } 121 }
83 122
84 /* Setup 2G inbound Memory Window @ 1 */ 123 /* Setup 2G inbound Memory Window @ 1 */
85 out_be32(&pci->piw[2].pitar, 0x00000000); 124 out_be32(&pci->piw[2].pitar, 0x00000000);
86 out_be32(&pci->piw[2].piwbar,0x00000000); 125 out_be32(&pci->piw[2].piwbar,0x00000000);
87 out_be32(&pci->piw[2].piwar, PIWAR_2G); 126 out_be32(&pci->piw[2].piwar, PIWAR_2G);
127
128 iounmap(pci);
88} 129}
89 130
90static void __init setup_pci_cmd(struct pci_controller *hose) 131static void __init setup_pci_cmd(struct pci_controller *hose)
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 3e0d89dcdba2..a35297dbac28 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -435,7 +435,7 @@ static void __init mpic_scan_ht_msi(struct mpic *mpic, u8 __iomem *devbase,
435 addr = addr | ((u64)readl(base + HT_MSI_ADDR_HI) << 32); 435 addr = addr | ((u64)readl(base + HT_MSI_ADDR_HI) << 32);
436 } 436 }
437 437
438 printk(KERN_DEBUG "mpic: - HT:%02x.%x %s MSI mapping found @ 0x%lx\n", 438 printk(KERN_DEBUG "mpic: - HT:%02x.%x %s MSI mapping found @ 0x%llx\n",
439 PCI_SLOT(devfn), PCI_FUNC(devfn), 439 PCI_SLOT(devfn), PCI_FUNC(devfn),
440 flags & HT_MSI_FLAGS_ENABLE ? "enabled" : "disabled", addr); 440 flags & HT_MSI_FLAGS_ENABLE ? "enabled" : "disabled", addr);
441 441
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index a94a3c3ae932..6b0a3538dc63 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -77,6 +77,7 @@ mainmenu "Linux Kernel Configuration"
77config S390 77config S390
78 def_bool y 78 def_bool y
79 select USE_GENERIC_SMP_HELPERS if SMP 79 select USE_GENERIC_SMP_HELPERS if SMP
80 select HAVE_SYSCALL_WRAPPERS
80 select HAVE_FUNCTION_TRACER 81 select HAVE_FUNCTION_TRACER
81 select HAVE_OPROFILE 82 select HAVE_OPROFILE
82 select HAVE_KPROBES 83 select HAVE_KPROBES
diff --git a/arch/s390/include/asm/Kbuild b/arch/s390/include/asm/Kbuild
index f2af4167bd5f..63a23415fba6 100644
--- a/arch/s390/include/asm/Kbuild
+++ b/arch/s390/include/asm/Kbuild
@@ -13,4 +13,3 @@ unifdef-y += cmb.h
13unifdef-y += debug.h 13unifdef-y += debug.h
14unifdef-y += chpid.h 14unifdef-y += chpid.h
15unifdef-y += schid.h 15unifdef-y += schid.h
16unifdef-y += swab.h
diff --git a/arch/s390/include/asm/byteorder.h b/arch/s390/include/asm/byteorder.h
index b95a2b2933fb..a332e59e26fc 100644
--- a/arch/s390/include/asm/byteorder.h
+++ b/arch/s390/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _S390_BYTEORDER_H 1#ifndef _S390_BYTEORDER_H
2#define _S390_BYTEORDER_H 2#define _S390_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/big_endian.h> 4#include <linux/byteorder/big_endian.h>
6 5
7#endif /* _S390_BYTEORDER_H */ 6#endif /* _S390_BYTEORDER_H */
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
index d480f39d65e6..74d0bbb7d955 100644
--- a/arch/s390/include/asm/elf.h
+++ b/arch/s390/include/asm/elf.h
@@ -172,14 +172,14 @@ extern char elf_platform[];
172#ifndef __s390x__ 172#ifndef __s390x__
173#define SET_PERSONALITY(ex) set_personality(PER_LINUX) 173#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
174#else /* __s390x__ */ 174#else /* __s390x__ */
175#define SET_PERSONALITY(ex) \ 175#define SET_PERSONALITY(ex) \
176do { \ 176do { \
177 if (current->personality != PER_LINUX32) \ 177 if (personality(current->personality) != PER_LINUX32) \
178 set_personality(PER_LINUX); \ 178 set_personality(PER_LINUX); \
179 if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ 179 if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
180 set_thread_flag(TIF_31BIT); \ 180 set_thread_flag(TIF_31BIT); \
181 else \ 181 else \
182 clear_thread_flag(TIF_31BIT); \ 182 clear_thread_flag(TIF_31BIT); \
183} while (0) 183} while (0)
184#endif /* __s390x__ */ 184#endif /* __s390x__ */
185 185
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index fc2c97197a53..62c706eb0de6 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -547,7 +547,7 @@ sys32_setdomainname_wrapper:
547 .globl sys32_newuname_wrapper 547 .globl sys32_newuname_wrapper
548sys32_newuname_wrapper: 548sys32_newuname_wrapper:
549 llgtr %r2,%r2 # struct new_utsname * 549 llgtr %r2,%r2 # struct new_utsname *
550 jg s390x_newuname # branch to system call 550 jg sys_s390_newuname # branch to system call
551 551
552 .globl compat_sys_adjtimex_wrapper 552 .globl compat_sys_adjtimex_wrapper
553compat_sys_adjtimex_wrapper: 553compat_sys_adjtimex_wrapper:
@@ -615,7 +615,7 @@ sys32_sysfs_wrapper:
615 .globl sys32_personality_wrapper 615 .globl sys32_personality_wrapper
616sys32_personality_wrapper: 616sys32_personality_wrapper:
617 llgfr %r2,%r2 # unsigned long 617 llgfr %r2,%r2 # unsigned long
618 jg s390x_personality # branch to system call 618 jg sys_s390_personality # branch to system call
619 619
620 .globl sys32_setfsuid16_wrapper 620 .globl sys32_setfsuid16_wrapper
621sys32_setfsuid16_wrapper: 621sys32_setfsuid16_wrapper:
@@ -1767,3 +1767,41 @@ sys_dup3_wrapper:
1767sys_epoll_create1_wrapper: 1767sys_epoll_create1_wrapper:
1768 lgfr %r2,%r2 # int 1768 lgfr %r2,%r2 # int
1769 jg sys_epoll_create1 # branch to system call 1769 jg sys_epoll_create1 # branch to system call
1770
1771 .globl sys32_readahead_wrapper
1772sys32_readahead_wrapper:
1773 lgfr %r2,%r2 # int
1774 llgfr %r3,%r3 # u32
1775 llgfr %r4,%r4 # u32
1776 lgfr %r5,%r5 # s32
1777 jg sys32_readahead # branch to system call
1778
1779 .globl sys32_sendfile64_wrapper
1780sys32_sendfile64_wrapper:
1781 lgfr %r2,%r2 # int
1782 lgfr %r3,%r3 # int
1783 llgtr %r4,%r4 # compat_loff_t *
1784 lgfr %r5,%r5 # s32
1785 jg sys32_sendfile64 # branch to system call
1786
1787 .globl sys_tkill_wrapper
1788sys_tkill_wrapper:
1789 lgfr %r2,%r2 # pid_t
1790 lgfr %r3,%r3 # int
1791 jg sys_tkill # branch to system call
1792
1793 .globl sys_tgkill_wrapper
1794sys_tgkill_wrapper:
1795 lgfr %r2,%r2 # pid_t
1796 lgfr %r3,%r3 # pid_t
1797 lgfr %r4,%r4 # int
1798 jg sys_tgkill # branch to system call
1799
1800 .globl compat_sys_keyctl_wrapper
1801compat_sys_keyctl_wrapper:
1802 llgfr %r2,%r2 # u32
1803 llgfr %r3,%r3 # u32
1804 llgfr %r4,%r4 # u32
1805 llgfr %r5,%r5 # u32
1806 llgfr %r6,%r6 # u32
1807 jg compat_sys_keyctl # branch to system call
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index a65afc91e8aa..950c59c6688b 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -30,23 +30,23 @@ struct fadvise64_64_args;
30struct old_sigaction; 30struct old_sigaction;
31struct sel_arg_struct; 31struct sel_arg_struct;
32 32
33long sys_pipe(unsigned long __user *fildes);
34long sys_mmap2(struct mmap_arg_struct __user *arg); 33long sys_mmap2(struct mmap_arg_struct __user *arg);
35long old_mmap(struct mmap_arg_struct __user *arg); 34long sys_s390_old_mmap(struct mmap_arg_struct __user *arg);
36long sys_ipc(uint call, int first, unsigned long second, 35long sys_ipc(uint call, int first, unsigned long second,
37 unsigned long third, void __user *ptr); 36 unsigned long third, void __user *ptr);
38long s390x_newuname(struct new_utsname __user *name); 37long sys_s390_newuname(struct new_utsname __user *name);
39long s390x_personality(unsigned long personality); 38long sys_s390_personality(unsigned long personality);
40long s390_fadvise64(int fd, u32 offset_high, u32 offset_low, 39long sys_s390_fadvise64(int fd, u32 offset_high, u32 offset_low,
41 size_t len, int advice); 40 size_t len, int advice);
42long s390_fadvise64_64(struct fadvise64_64_args __user *args); 41long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args);
43long s390_fallocate(int fd, int mode, loff_t offset, u32 len_high, u32 len_low); 42long sys_s390_fallocate(int fd, int mode, loff_t offset, u32 len_high,
43 u32 len_low);
44long sys_fork(void); 44long sys_fork(void);
45long sys_clone(void); 45long sys_clone(void);
46long sys_vfork(void); 46long sys_vfork(void);
47void execve_tail(void); 47void execve_tail(void);
48long sys_execve(void); 48long sys_execve(void);
49int sys_sigsuspend(int history0, int history1, old_sigset_t mask); 49long sys_sigsuspend(int history0, int history1, old_sigset_t mask);
50long sys_sigaction(int sig, const struct old_sigaction __user *act, 50long sys_sigaction(int sig, const struct old_sigaction __user *act,
51 struct old_sigaction __user *oact); 51 struct old_sigaction __user *oact);
52long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss); 52long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss);
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index b6110bdf8dc2..5cd38a90e64d 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -39,6 +39,7 @@
39#include <linux/tick.h> 39#include <linux/tick.h>
40#include <linux/elfcore.h> 40#include <linux/elfcore.h>
41#include <linux/kernel_stat.h> 41#include <linux/kernel_stat.h>
42#include <linux/syscalls.h>
42#include <asm/uaccess.h> 43#include <asm/uaccess.h>
43#include <asm/pgtable.h> 44#include <asm/pgtable.h>
44#include <asm/system.h> 45#include <asm/system.h>
@@ -225,13 +226,13 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
225 return 0; 226 return 0;
226} 227}
227 228
228asmlinkage long sys_fork(void) 229SYSCALL_DEFINE0(fork)
229{ 230{
230 struct pt_regs *regs = task_pt_regs(current); 231 struct pt_regs *regs = task_pt_regs(current);
231 return do_fork(SIGCHLD, regs->gprs[15], regs, 0, NULL, NULL); 232 return do_fork(SIGCHLD, regs->gprs[15], regs, 0, NULL, NULL);
232} 233}
233 234
234asmlinkage long sys_clone(void) 235SYSCALL_DEFINE0(clone)
235{ 236{
236 struct pt_regs *regs = task_pt_regs(current); 237 struct pt_regs *regs = task_pt_regs(current);
237 unsigned long clone_flags; 238 unsigned long clone_flags;
@@ -258,7 +259,7 @@ asmlinkage long sys_clone(void)
258 * do not have enough call-clobbered registers to hold all 259 * do not have enough call-clobbered registers to hold all
259 * the information you need. 260 * the information you need.
260 */ 261 */
261asmlinkage long sys_vfork(void) 262SYSCALL_DEFINE0(vfork)
262{ 263{
263 struct pt_regs *regs = task_pt_regs(current); 264 struct pt_regs *regs = task_pt_regs(current);
264 return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 265 return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,
@@ -278,7 +279,7 @@ asmlinkage void execve_tail(void)
278/* 279/*
279 * sys_execve() executes a new program. 280 * sys_execve() executes a new program.
280 */ 281 */
281asmlinkage long sys_execve(void) 282SYSCALL_DEFINE0(execve)
282{ 283{
283 struct pt_regs *regs = task_pt_regs(current); 284 struct pt_regs *regs = task_pt_regs(current);
284 char *filename; 285 char *filename;
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 8e6812a22670..3cf74c3ccb69 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -25,6 +25,7 @@
25#include <linux/personality.h> 25#include <linux/personality.h>
26#include <linux/binfmts.h> 26#include <linux/binfmts.h>
27#include <linux/tracehook.h> 27#include <linux/tracehook.h>
28#include <linux/syscalls.h>
28#include <asm/ucontext.h> 29#include <asm/ucontext.h>
29#include <asm/uaccess.h> 30#include <asm/uaccess.h>
30#include <asm/lowcore.h> 31#include <asm/lowcore.h>
@@ -53,8 +54,7 @@ typedef struct
53/* 54/*
54 * Atomically swap in the new signal mask, and wait for a signal. 55 * Atomically swap in the new signal mask, and wait for a signal.
55 */ 56 */
56asmlinkage int 57SYSCALL_DEFINE3(sigsuspend, int, history0, int, history1, old_sigset_t, mask)
57sys_sigsuspend(int history0, int history1, old_sigset_t mask)
58{ 58{
59 mask &= _BLOCKABLE; 59 mask &= _BLOCKABLE;
60 spin_lock_irq(&current->sighand->siglock); 60 spin_lock_irq(&current->sighand->siglock);
@@ -70,9 +70,8 @@ sys_sigsuspend(int history0, int history1, old_sigset_t mask)
70 return -ERESTARTNOHAND; 70 return -ERESTARTNOHAND;
71} 71}
72 72
73asmlinkage long 73SYSCALL_DEFINE3(sigaction, int, sig, const struct old_sigaction __user *, act,
74sys_sigaction(int sig, const struct old_sigaction __user *act, 74 struct old_sigaction __user *, oact)
75 struct old_sigaction __user *oact)
76{ 75{
77 struct k_sigaction new_ka, old_ka; 76 struct k_sigaction new_ka, old_ka;
78 int ret; 77 int ret;
@@ -102,15 +101,13 @@ sys_sigaction(int sig, const struct old_sigaction __user *act,
102 return ret; 101 return ret;
103} 102}
104 103
105asmlinkage long 104SYSCALL_DEFINE2(sigaltstack, const stack_t __user *, uss,
106sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss) 105 stack_t __user *, uoss)
107{ 106{
108 struct pt_regs *regs = task_pt_regs(current); 107 struct pt_regs *regs = task_pt_regs(current);
109 return do_sigaltstack(uss, uoss, regs->gprs[15]); 108 return do_sigaltstack(uss, uoss, regs->gprs[15]);
110} 109}
111 110
112
113
114/* Returns non-zero on fault. */ 111/* Returns non-zero on fault. */
115static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs) 112static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
116{ 113{
@@ -164,7 +161,7 @@ static int restore_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
164 return 0; 161 return 0;
165} 162}
166 163
167asmlinkage long sys_sigreturn(void) 164SYSCALL_DEFINE0(sigreturn)
168{ 165{
169 struct pt_regs *regs = task_pt_regs(current); 166 struct pt_regs *regs = task_pt_regs(current);
170 sigframe __user *frame = (sigframe __user *)regs->gprs[15]; 167 sigframe __user *frame = (sigframe __user *)regs->gprs[15];
@@ -191,7 +188,7 @@ badframe:
191 return 0; 188 return 0;
192} 189}
193 190
194asmlinkage long sys_rt_sigreturn(void) 191SYSCALL_DEFINE0(rt_sigreturn)
195{ 192{
196 struct pt_regs *regs = task_pt_regs(current); 193 struct pt_regs *regs = task_pt_regs(current);
197 rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15]; 194 rt_sigframe __user *frame = (rt_sigframe __user *)regs->gprs[15];
diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c
index c34be4568b80..c7ae4b17e0e3 100644
--- a/arch/s390/kernel/sys_s390.c
+++ b/arch/s390/kernel/sys_s390.c
@@ -29,6 +29,7 @@
29#include <linux/personality.h> 29#include <linux/personality.h>
30#include <linux/unistd.h> 30#include <linux/unistd.h>
31#include <linux/ipc.h> 31#include <linux/ipc.h>
32#include <linux/syscalls.h>
32#include <asm/uaccess.h> 33#include <asm/uaccess.h>
33#include "entry.h" 34#include "entry.h"
34 35
@@ -74,7 +75,7 @@ struct mmap_arg_struct {
74 unsigned long offset; 75 unsigned long offset;
75}; 76};
76 77
77asmlinkage long sys_mmap2(struct mmap_arg_struct __user *arg) 78SYSCALL_DEFINE1(mmap2, struct mmap_arg_struct __user *, arg)
78{ 79{
79 struct mmap_arg_struct a; 80 struct mmap_arg_struct a;
80 int error = -EFAULT; 81 int error = -EFAULT;
@@ -86,7 +87,7 @@ out:
86 return error; 87 return error;
87} 88}
88 89
89asmlinkage long old_mmap(struct mmap_arg_struct __user *arg) 90SYSCALL_DEFINE1(s390_old_mmap, struct mmap_arg_struct __user *, arg)
90{ 91{
91 struct mmap_arg_struct a; 92 struct mmap_arg_struct a;
92 long error = -EFAULT; 93 long error = -EFAULT;
@@ -108,8 +109,8 @@ out:
108 * 109 *
109 * This is really horribly ugly. 110 * This is really horribly ugly.
110 */ 111 */
111asmlinkage long sys_ipc(uint call, int first, unsigned long second, 112SYSCALL_DEFINE5(ipc, uint, call, int, first, unsigned long, second,
112 unsigned long third, void __user *ptr) 113 unsigned long, third, void __user *, ptr)
113{ 114{
114 struct ipc_kludge tmp; 115 struct ipc_kludge tmp;
115 int ret; 116 int ret;
@@ -175,7 +176,7 @@ asmlinkage long sys_ipc(uint call, int first, unsigned long second,
175} 176}
176 177
177#ifdef CONFIG_64BIT 178#ifdef CONFIG_64BIT
178asmlinkage long s390x_newuname(struct new_utsname __user *name) 179SYSCALL_DEFINE1(s390_newuname, struct new_utsname __user *, name)
179{ 180{
180 int ret = sys_newuname(name); 181 int ret = sys_newuname(name);
181 182
@@ -186,7 +187,7 @@ asmlinkage long s390x_newuname(struct new_utsname __user *name)
186 return ret; 187 return ret;
187} 188}
188 189
189asmlinkage long s390x_personality(unsigned long personality) 190SYSCALL_DEFINE1(s390_personality, unsigned long, personality)
190{ 191{
191 int ret; 192 int ret;
192 193
@@ -205,15 +206,13 @@ asmlinkage long s390x_personality(unsigned long personality)
205 */ 206 */
206#ifndef CONFIG_64BIT 207#ifndef CONFIG_64BIT
207 208
208asmlinkage long 209SYSCALL_DEFINE5(s390_fadvise64, int, fd, u32, offset_high, u32, offset_low,
209s390_fadvise64(int fd, u32 offset_high, u32 offset_low, size_t len, int advice) 210 size_t, len, int, advice)
210{ 211{
211 return sys_fadvise64(fd, (u64) offset_high << 32 | offset_low, 212 return sys_fadvise64(fd, (u64) offset_high << 32 | offset_low,
212 len, advice); 213 len, advice);
213} 214}
214 215
215#endif
216
217struct fadvise64_64_args { 216struct fadvise64_64_args {
218 int fd; 217 int fd;
219 long long offset; 218 long long offset;
@@ -221,8 +220,7 @@ struct fadvise64_64_args {
221 int advice; 220 int advice;
222}; 221};
223 222
224asmlinkage long 223SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args)
225s390_fadvise64_64(struct fadvise64_64_args __user *args)
226{ 224{
227 struct fadvise64_64_args a; 225 struct fadvise64_64_args a;
228 226
@@ -231,7 +229,6 @@ s390_fadvise64_64(struct fadvise64_64_args __user *args)
231 return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice); 229 return sys_fadvise64_64(a.fd, a.offset, a.len, a.advice);
232} 230}
233 231
234#ifndef CONFIG_64BIT
235/* 232/*
236 * This is a wrapper to call sys_fallocate(). For 31 bit s390 the last 233 * This is a wrapper to call sys_fallocate(). For 31 bit s390 the last
237 * 64 bit argument "len" is split into the upper and lower 32 bits. The 234 * 64 bit argument "len" is split into the upper and lower 32 bits. The
@@ -244,9 +241,19 @@ s390_fadvise64_64(struct fadvise64_64_args __user *args)
244 * to 241 * to
245 * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len 242 * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len
246 */ 243 */
247asmlinkage long s390_fallocate(int fd, int mode, loff_t offset, 244SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset,
248 u32 len_high, u32 len_low) 245 u32 len_high, u32 len_low)
249{ 246{
250 return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low); 247 return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low);
251} 248}
249#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
250asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset,
251 long len_high, long len_low)
252{
253 return SYSC_s390_fallocate((int) fd, (int) mode, offset,
254 (u32) len_high, (u32) len_low);
255}
256SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate);
257#endif
258
252#endif 259#endif
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 2d61787949d5..fe5b25a988ab 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -98,7 +98,7 @@ SYSCALL(sys_uselib,sys_uselib,sys32_uselib_wrapper)
98SYSCALL(sys_swapon,sys_swapon,sys32_swapon_wrapper) 98SYSCALL(sys_swapon,sys_swapon,sys32_swapon_wrapper)
99SYSCALL(sys_reboot,sys_reboot,sys32_reboot_wrapper) 99SYSCALL(sys_reboot,sys_reboot,sys32_reboot_wrapper)
100SYSCALL(sys_ni_syscall,sys_ni_syscall,old32_readdir_wrapper) /* old readdir syscall */ 100SYSCALL(sys_ni_syscall,sys_ni_syscall,old32_readdir_wrapper) /* old readdir syscall */
101SYSCALL(old_mmap,old_mmap,old32_mmap_wrapper) /* 90 */ 101SYSCALL(sys_s390_old_mmap,sys_s390_old_mmap,old32_mmap_wrapper) /* 90 */
102SYSCALL(sys_munmap,sys_munmap,sys32_munmap_wrapper) 102SYSCALL(sys_munmap,sys_munmap,sys32_munmap_wrapper)
103SYSCALL(sys_truncate,sys_truncate,sys32_truncate_wrapper) 103SYSCALL(sys_truncate,sys_truncate,sys32_truncate_wrapper)
104SYSCALL(sys_ftruncate,sys_ftruncate,sys32_ftruncate_wrapper) 104SYSCALL(sys_ftruncate,sys_ftruncate,sys32_ftruncate_wrapper)
@@ -130,7 +130,7 @@ SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper)
130SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn) 130SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
131SYSCALL(sys_clone,sys_clone,sys32_clone) /* 120 */ 131SYSCALL(sys_clone,sys_clone,sys32_clone) /* 120 */
132SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper) 132SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper)
133SYSCALL(sys_newuname,s390x_newuname,sys32_newuname_wrapper) 133SYSCALL(sys_newuname,sys_s390_newuname,sys32_newuname_wrapper)
134NI_SYSCALL /* modify_ldt for i386 */ 134NI_SYSCALL /* modify_ldt for i386 */
135SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper) 135SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper)
136SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */ 136SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */
@@ -144,7 +144,7 @@ SYSCALL(sys_getpgid,sys_getpgid,sys32_getpgid_wrapper)
144SYSCALL(sys_fchdir,sys_fchdir,sys32_fchdir_wrapper) 144SYSCALL(sys_fchdir,sys_fchdir,sys32_fchdir_wrapper)
145SYSCALL(sys_bdflush,sys_bdflush,sys32_bdflush_wrapper) 145SYSCALL(sys_bdflush,sys_bdflush,sys32_bdflush_wrapper)
146SYSCALL(sys_sysfs,sys_sysfs,sys32_sysfs_wrapper) /* 135 */ 146SYSCALL(sys_sysfs,sys_sysfs,sys32_sysfs_wrapper) /* 135 */
147SYSCALL(sys_personality,s390x_personality,sys32_personality_wrapper) 147SYSCALL(sys_personality,sys_s390_personality,sys32_personality_wrapper)
148NI_SYSCALL /* for afs_syscall */ 148NI_SYSCALL /* for afs_syscall */
149SYSCALL(sys_setfsuid16,sys_ni_syscall,sys32_setfsuid16_wrapper) /* old setfsuid16 syscall */ 149SYSCALL(sys_setfsuid16,sys_ni_syscall,sys32_setfsuid16_wrapper) /* old setfsuid16 syscall */
150SYSCALL(sys_setfsgid16,sys_ni_syscall,sys32_setfsgid16_wrapper) /* old setfsgid16 syscall */ 150SYSCALL(sys_setfsgid16,sys_ni_syscall,sys32_setfsgid16_wrapper) /* old setfsgid16 syscall */
@@ -194,7 +194,7 @@ SYSCALL(sys_chown16,sys_ni_syscall,sys32_chown16_wrapper) /* old chown16 syscall
194SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) 194SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper)
195SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) 195SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper)
196SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ 196SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */
197SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack) 197SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack_wrapper)
198SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) 198SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper)
199NI_SYSCALL /* streams1 */ 199NI_SYSCALL /* streams1 */
200NI_SYSCALL /* streams2 */ 200NI_SYSCALL /* streams2 */
@@ -230,8 +230,8 @@ SYSCALL(sys_mincore,sys_mincore,sys32_mincore_wrapper)
230SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper) 230SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper)
231SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ 231SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */
232SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) 232SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper)
233SYSCALL(sys_readahead,sys_readahead,sys32_readahead) 233SYSCALL(sys_readahead,sys_readahead,sys32_readahead_wrapper)
234SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64) 234SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64_wrapper)
235SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) 235SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper)
236SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ 236SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */
237SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) 237SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper)
@@ -245,11 +245,11 @@ SYSCALL(sys_removexattr,sys_removexattr,sys32_removexattr_wrapper)
245SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) 245SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper)
246SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ 246SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */
247SYSCALL(sys_gettid,sys_gettid,sys_gettid) 247SYSCALL(sys_gettid,sys_gettid,sys_gettid)
248SYSCALL(sys_tkill,sys_tkill,sys_tkill) 248SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper)
249SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) 249SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper)
250SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) 250SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper)
251SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ 251SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */
252SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill) 252SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper)
253NI_SYSCALL /* reserved for TUX */ 253NI_SYSCALL /* reserved for TUX */
254SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper) 254SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper)
255SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper) 255SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper)
@@ -261,7 +261,7 @@ SYSCALL(sys_epoll_create,sys_epoll_create,sys_epoll_create_wrapper)
261SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */ 261SYSCALL(sys_epoll_ctl,sys_epoll_ctl,sys_epoll_ctl_wrapper) /* 250 */
262SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper) 262SYSCALL(sys_epoll_wait,sys_epoll_wait,sys_epoll_wait_wrapper)
263SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper) 263SYSCALL(sys_set_tid_address,sys_set_tid_address,sys32_set_tid_address_wrapper)
264SYSCALL(s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper) 264SYSCALL(sys_s390_fadvise64,sys_fadvise64_64,sys32_fadvise64_wrapper)
265SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper) 265SYSCALL(sys_timer_create,sys_timer_create,sys32_timer_create_wrapper)
266SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */ 266SYSCALL(sys_timer_settime,sys_timer_settime,sys32_timer_settime_wrapper) /* 255 */
267SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper) 267SYSCALL(sys_timer_gettime,sys_timer_gettime,sys32_timer_gettime_wrapper)
@@ -272,7 +272,7 @@ SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260
272SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper) 272SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
273SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper) 273SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
274NI_SYSCALL /* reserved for vserver */ 274NI_SYSCALL /* reserved for vserver */
275SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper) 275SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
276SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper) 276SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
277SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper) 277SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
278SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper) 278SYSCALL(sys_remap_file_pages,sys_remap_file_pages,sys32_remap_file_pages_wrapper)
@@ -288,7 +288,7 @@ SYSCALL(sys_mq_getsetattr,sys_mq_getsetattr,compat_sys_mq_getsetattr_wrapper)
288SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) 288SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper)
289SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) 289SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper)
290SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) 290SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper)
291SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl) /* 280 */ 291SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */
292SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) 292SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper)
293SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) 293SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper)
294SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper) 294SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper)
@@ -322,7 +322,7 @@ NI_SYSCALL /* 310 sys_move_pages */
322SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper) 322SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper)
323SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper) 323SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper)
324SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper) 324SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper)
325SYSCALL(s390_fallocate,sys_fallocate,sys_fallocate_wrapper) 325SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
326SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */ 326SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */
327SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper) 327SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper)
328NI_SYSCALL /* 317 old sys_timer_fd */ 328NI_SYSCALL /* 317 old sys_timer_fd */
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index d649600df5b9..fc468cae4460 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -399,8 +399,10 @@ static struct workqueue_struct *time_sync_wq;
399 399
400static void __init time_init_wq(void) 400static void __init time_init_wq(void)
401{ 401{
402 if (!time_sync_wq) 402 if (time_sync_wq)
403 time_sync_wq = create_singlethread_workqueue("timesync"); 403 return;
404 time_sync_wq = create_singlethread_workqueue("timesync");
405 stop_machine_create();
404} 406}
405 407
406/* 408/*
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 2fb36e462194..ecf0304e61c1 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -516,8 +516,12 @@ EXPORT_SYMBOL(del_virt_timer);
516 */ 516 */
517void init_cpu_vtimer(void) 517void init_cpu_vtimer(void)
518{ 518{
519 struct thread_info *ti = current_thread_info();
519 struct vtimer_queue *vq; 520 struct vtimer_queue *vq;
520 521
522 S390_lowcore.user_timer = ti->user_timer;
523 S390_lowcore.system_timer = ti->system_timer;
524
521 /* kick the virtual timer */ 525 /* kick the virtual timer */
522 asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock)); 526 asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock));
523 asm volatile ("STPT %0" : "=m" (S390_lowcore.last_update_timer)); 527 asm volatile ("STPT %0" : "=m" (S390_lowcore.last_update_timer));
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index f32a5197128d..ebabe518e729 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -644,66 +644,25 @@ endmenu
644 644
645menu "Bus options" 645menu "Bus options"
646 646
647# Even on SuperH devices which don't have an ISA bus,
648# this variable helps the PCMCIA modules handle
649# IRQ requesting properly -- Greg Banks.
650#
651# Though we're generally not interested in it when
652# we're not using PCMCIA, so we make it dependent on
653# PCMCIA outright. -- PFM.
654config ISA
655 def_bool y
656 depends on PCMCIA && HD6446X_SERIES
657 help
658 Find out whether you have ISA slots on your motherboard. ISA is the
659 name of a bus system, i.e. the way the CPU talks to the other stuff
660 inside your box. Other bus systems are PCI, EISA, MicroChannel
661 (MCA) or VESA. ISA is an older system, now being displaced by PCI;
662 newer boards don't support it. If you have ISA, say Y, otherwise N.
663
664config EISA
665 bool
666 ---help---
667 The Extended Industry Standard Architecture (EISA) bus was
668 developed as an open alternative to the IBM MicroChannel bus.
669
670 The EISA bus provided some of the features of the IBM MicroChannel
671 bus while maintaining backward compatibility with cards made for
672 the older ISA bus. The EISA bus saw limited use between 1988 and
673 1995 when it was made obsolete by the PCI bus.
674
675 Say Y here if you are building a kernel for an EISA-based machine.
676
677 Otherwise, say N.
678
679config MCA
680 bool
681 help
682 MicroChannel Architecture is found in some IBM PS/2 machines and
683 laptops. It is a bus system similar to PCI or ISA. See
684 <file:Documentation/mca.txt> (and especially the web page given
685 there) before attempting to build an MCA bus kernel.
686
687config SBUS
688 bool
689
690config SUPERHYWAY 647config SUPERHYWAY
691 tristate "SuperHyway Bus support" 648 tristate "SuperHyway Bus support"
692 depends on CPU_SUBTYPE_SH4_202 649 depends on CPU_SUBTYPE_SH4_202
693 650
694config MAPLE 651config MAPLE
695 bool "Maple Bus support" 652 bool "Maple Bus support"
696 depends on SH_DREAMCAST 653 depends on SH_DREAMCAST
697 help 654 help
698 The Maple Bus is SEGA's serial communication bus for peripherals 655 The Maple Bus is SEGA's serial communication bus for peripherals
699 on the Dreamcast. Without this bus support you won't be able to 656 on the Dreamcast. Without this bus support you won't be able to
700 get your Dreamcast keyboard etc to work, so most users 657 get your Dreamcast keyboard etc to work, so most users
701 probably want to say 'Y' here, unless you are only using the 658 probably want to say 'Y' here, unless you are only using the
702 Dreamcast with a serial line terminal or a remote network 659 Dreamcast with a serial line terminal or a remote network
703 connection. 660 connection.
704 661
705source "arch/sh/drivers/pci/Kconfig" 662source "arch/sh/drivers/pci/Kconfig"
706 663
664source "drivers/pci/pcie/Kconfig"
665
707source "drivers/pci/Kconfig" 666source "drivers/pci/Kconfig"
708 667
709source "drivers/pcmcia/Kconfig" 668source "drivers/pcmcia/Kconfig"
diff --git a/arch/sh/boards/board-ap325rxa.c b/arch/sh/boards/board-ap325rxa.c
index 1c67cba6e34f..caf4c33f4e84 100644
--- a/arch/sh/boards/board-ap325rxa.c
+++ b/arch/sh/boards/board-ap325rxa.c
@@ -18,8 +18,10 @@
18#include <linux/mtd/sh_flctl.h> 18#include <linux/mtd/sh_flctl.h>
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/i2c.h> 20#include <linux/i2c.h>
21#include <linux/smc911x.h> 21#include <linux/smsc911x.h>
22#include <linux/gpio.h> 22#include <linux/gpio.h>
23#include <linux/spi/spi.h>
24#include <linux/spi/spi_gpio.h>
23#include <media/soc_camera_platform.h> 25#include <media/soc_camera_platform.h>
24#include <media/sh_mobile_ceu.h> 26#include <media/sh_mobile_ceu.h>
25#include <video/sh_mobile_lcdc.h> 27#include <video/sh_mobile_lcdc.h>
@@ -27,12 +29,14 @@
27#include <asm/clock.h> 29#include <asm/clock.h>
28#include <cpu/sh7723.h> 30#include <cpu/sh7723.h>
29 31
30static struct smc911x_platdata smc911x_info = { 32static struct smsc911x_platform_config smsc911x_config = {
31 .flags = SMC911X_USE_32BIT, 33 .phy_interface = PHY_INTERFACE_MODE_MII,
32 .irq_flags = IRQF_TRIGGER_LOW, 34 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
35 .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
36 .flags = SMSC911X_USE_32BIT,
33}; 37};
34 38
35static struct resource smc9118_resources[] = { 39static struct resource smsc9118_resources[] = {
36 [0] = { 40 [0] = {
37 .start = 0xb6080000, 41 .start = 0xb6080000,
38 .end = 0xb60fffff, 42 .end = 0xb60fffff,
@@ -45,13 +49,13 @@ static struct resource smc9118_resources[] = {
45 } 49 }
46}; 50};
47 51
48static struct platform_device smc9118_device = { 52static struct platform_device smsc9118_device = {
49 .name = "smc911x", 53 .name = "smsc911x",
50 .id = -1, 54 .id = -1,
51 .num_resources = ARRAY_SIZE(smc9118_resources), 55 .num_resources = ARRAY_SIZE(smsc9118_resources),
52 .resource = smc9118_resources, 56 .resource = smsc9118_resources,
53 .dev = { 57 .dev = {
54 .platform_data = &smc911x_info, 58 .platform_data = &smsc911x_config,
55 }, 59 },
56}; 60};
57 61
@@ -315,8 +319,22 @@ static struct platform_device ceu_device = {
315 }, 319 },
316}; 320};
317 321
322struct spi_gpio_platform_data sdcard_cn3_platform_data = {
323 .sck = GPIO_PTD0,
324 .mosi = GPIO_PTD1,
325 .miso = GPIO_PTD2,
326 .num_chipselect = 1,
327};
328
329static struct platform_device sdcard_cn3_device = {
330 .name = "spi_gpio",
331 .dev = {
332 .platform_data = &sdcard_cn3_platform_data,
333 },
334};
335
318static struct platform_device *ap325rxa_devices[] __initdata = { 336static struct platform_device *ap325rxa_devices[] __initdata = {
319 &smc9118_device, 337 &smsc9118_device,
320 &ap325rxa_nor_flash_device, 338 &ap325rxa_nor_flash_device,
321 &lcdc_device, 339 &lcdc_device,
322 &ceu_device, 340 &ceu_device,
@@ -324,6 +342,7 @@ static struct platform_device *ap325rxa_devices[] __initdata = {
324 &camera_device, 342 &camera_device,
325#endif 343#endif
326 &nand_flash_device, 344 &nand_flash_device,
345 &sdcard_cn3_device,
327}; 346};
328 347
329static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = { 348static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = {
@@ -332,6 +351,15 @@ static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = {
332 }, 351 },
333}; 352};
334 353
354static struct spi_board_info ap325rxa_spi_devices[] = {
355 {
356 .modalias = "mmc_spi",
357 .max_speed_hz = 5000000,
358 .chip_select = 0,
359 .controller_data = (void *) GPIO_PTD5,
360 },
361};
362
335static int __init ap325rxa_devices_setup(void) 363static int __init ap325rxa_devices_setup(void)
336{ 364{
337 /* LD3 and LD4 LEDs */ 365 /* LD3 and LD4 LEDs */
@@ -429,6 +457,9 @@ static int __init ap325rxa_devices_setup(void)
429 i2c_register_board_info(0, ap325rxa_i2c_devices, 457 i2c_register_board_info(0, ap325rxa_i2c_devices,
430 ARRAY_SIZE(ap325rxa_i2c_devices)); 458 ARRAY_SIZE(ap325rxa_i2c_devices));
431 459
460 spi_register_board_info(ap325rxa_spi_devices,
461 ARRAY_SIZE(ap325rxa_spi_devices));
462
432 return platform_add_devices(ap325rxa_devices, 463 return platform_add_devices(ap325rxa_devices,
433 ARRAY_SIZE(ap325rxa_devices)); 464 ARRAY_SIZE(ap325rxa_devices));
434} 465}
diff --git a/arch/sh/boards/board-magicpanelr2.c b/arch/sh/boards/board-magicpanelr2.c
index 3de22ccdeb7e..0a37c8bfc959 100644
--- a/arch/sh/boards/board-magicpanelr2.c
+++ b/arch/sh/boards/board-magicpanelr2.c
@@ -14,6 +14,7 @@
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/delay.h> 15#include <linux/delay.h>
16#include <linux/gpio.h> 16#include <linux/gpio.h>
17#include <linux/smsc911x.h>
17#include <linux/mtd/mtd.h> 18#include <linux/mtd/mtd.h>
18#include <linux/mtd/partitions.h> 19#include <linux/mtd/partitions.h>
19#include <linux/mtd/physmap.h> 20#include <linux/mtd/physmap.h>
@@ -242,7 +243,7 @@ static void __init mpr2_setup(char **cmdline_p)
242 printk(KERN_WARNING "Ethernet not ready\n"); 243 printk(KERN_WARNING "Ethernet not ready\n");
243} 244}
244 245
245static struct resource smc911x_resources[] = { 246static struct resource smsc911x_resources[] = {
246 [0] = { 247 [0] = {
247 .start = 0xa8000000, 248 .start = 0xa8000000,
248 .end = 0xabffffff, 249 .end = 0xabffffff,
@@ -255,11 +256,21 @@ static struct resource smc911x_resources[] = {
255 }, 256 },
256}; 257};
257 258
258static struct platform_device smc911x_device = { 259static struct smsc911x_platform_config smsc911x_config = {
259 .name = "smc911x", 260 .phy_interface = PHY_INTERFACE_MODE_MII,
261 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
262 .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
263 .flags = SMSC911X_USE_32BIT,
264};
265
266static struct platform_device smsc911x_device = {
267 .name = "smsc911x",
260 .id = -1, 268 .id = -1,
261 .num_resources = ARRAY_SIZE(smc911x_resources), 269 .num_resources = ARRAY_SIZE(smsc911x_resources),
262 .resource = smc911x_resources, 270 .resource = smsc911x_resources,
271 .dev = {
272 .platform_data = &smsc911x_config,
273 },
263}; 274};
264 275
265static struct resource heartbeat_resources[] = { 276static struct resource heartbeat_resources[] = {
@@ -360,7 +371,7 @@ static void __init set_mtd_partitions(void)
360 371
361static struct platform_device *mpr2_devices[] __initdata = { 372static struct platform_device *mpr2_devices[] __initdata = {
362 &heartbeat_device, 373 &heartbeat_device,
363 &smc911x_device, 374 &smsc911x_device,
364 &flash_device, 375 &flash_device,
365}; 376};
366 377
diff --git a/arch/sh/boards/board-sh7785lcr.c b/arch/sh/boards/board-sh7785lcr.c
index 408bbddaf325..38a64968d7bf 100644
--- a/arch/sh/boards/board-sh7785lcr.c
+++ b/arch/sh/boards/board-sh7785lcr.c
@@ -18,6 +18,7 @@
18#include <linux/i2c.h> 18#include <linux/i2c.h>
19#include <linux/i2c-pca-platform.h> 19#include <linux/i2c-pca-platform.h>
20#include <linux/i2c-algo-pca.h> 20#include <linux/i2c-algo-pca.h>
21#include <linux/irq.h>
21#include <asm/heartbeat.h> 22#include <asm/heartbeat.h>
22#include <mach/sh7785lcr.h> 23#include <mach/sh7785lcr.h>
23 24
diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c
index 806438b42cac..20fe72c515d5 100644
--- a/arch/sh/boards/mach-highlander/setup.c
+++ b/arch/sh/boards/mach-highlander/setup.c
@@ -18,6 +18,7 @@
18#include <linux/ata_platform.h> 18#include <linux/ata_platform.h>
19#include <linux/types.h> 19#include <linux/types.h>
20#include <linux/i2c.h> 20#include <linux/i2c.h>
21#include <linux/irq.h>
21#include <net/ax88796.h> 22#include <net/ax88796.h>
22#include <asm/machvec.h> 23#include <asm/machvec.h>
23#include <mach/highlander.h> 24#include <mach/highlander.h>
diff --git a/arch/sh/boards/mach-hp6xx/setup.c b/arch/sh/boards/mach-hp6xx/setup.c
index 48fece78ff54..746742bdc014 100644
--- a/arch/sh/boards/mach-hp6xx/setup.c
+++ b/arch/sh/boards/mach-hp6xx/setup.c
@@ -12,9 +12,9 @@
12#include <linux/types.h> 12#include <linux/types.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/irq.h>
15#include <asm/hd64461.h> 16#include <asm/hd64461.h>
16#include <asm/io.h> 17#include <asm/io.h>
17#include <asm/irq.h>
18#include <mach/hp6xx.h> 18#include <mach/hp6xx.h>
19#include <cpu/dac.h> 19#include <cpu/dac.h>
20 20
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c
index cc1408119c24..28e56c5809a2 100644
--- a/arch/sh/boards/mach-migor/setup.c
+++ b/arch/sh/boards/mach-migor/setup.c
@@ -18,9 +18,12 @@
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/clk.h> 19#include <linux/clk.h>
20#include <linux/gpio.h> 20#include <linux/gpio.h>
21#include <media/soc_camera_platform.h> 21#include <linux/spi/spi.h>
22#include <media/sh_mobile_ceu.h> 22#include <linux/spi/spi_gpio.h>
23#include <video/sh_mobile_lcdc.h> 23#include <video/sh_mobile_lcdc.h>
24#include <media/sh_mobile_ceu.h>
25#include <media/ov772x.h>
26#include <media/tw9910.h>
24#include <asm/clock.h> 27#include <asm/clock.h>
25#include <asm/machvec.h> 28#include <asm/machvec.h>
26#include <asm/io.h> 29#include <asm/io.h>
@@ -292,9 +295,12 @@ static struct platform_device migor_lcdc_device = {
292}; 295};
293 296
294static struct clk *camera_clk; 297static struct clk *camera_clk;
298static DEFINE_MUTEX(camera_lock);
295 299
296static void camera_power_on(void) 300static void camera_power_on(int is_tw)
297{ 301{
302 mutex_lock(&camera_lock);
303
298 /* Use 10 MHz VIO_CKO instead of 24 MHz to work 304 /* Use 10 MHz VIO_CKO instead of 24 MHz to work
299 * around signal quality issues on Panel Board V2.1. 305 * around signal quality issues on Panel Board V2.1.
300 */ 306 */
@@ -304,6 +310,12 @@ static void camera_power_on(void)
304 310
305 /* use VIO_RST to take camera out of reset */ 311 /* use VIO_RST to take camera out of reset */
306 mdelay(10); 312 mdelay(10);
313 if (is_tw) {
314 gpio_set_value(GPIO_PTT2, 0);
315 gpio_set_value(GPIO_PTT0, 0);
316 } else {
317 gpio_set_value(GPIO_PTT0, 1);
318 }
307 gpio_set_value(GPIO_PTT3, 0); 319 gpio_set_value(GPIO_PTT3, 0);
308 mdelay(10); 320 mdelay(10);
309 gpio_set_value(GPIO_PTT3, 1); 321 gpio_set_value(GPIO_PTT3, 1);
@@ -316,107 +328,29 @@ static void camera_power_off(void)
316 clk_put(camera_clk); 328 clk_put(camera_clk);
317 329
318 gpio_set_value(GPIO_PTT3, 0); 330 gpio_set_value(GPIO_PTT3, 0);
331 mutex_unlock(&camera_lock);
319} 332}
320 333
321static void camera_power(int mode) 334static int ov7725_power(struct device *dev, int mode)
322{ 335{
323 if (mode) 336 if (mode)
324 camera_power_on(); 337 camera_power_on(0);
325 else 338 else
326 camera_power_off(); 339 camera_power_off();
327}
328 340
329#ifdef CONFIG_I2C 341 return 0;
330static unsigned char camera_ov772x_magic[] = 342}
331{
332 0x09, 0x01, 0x0c, 0x20, 0x0d, 0x41, 0x0e, 0x01,
333 0x12, 0x00, 0x13, 0x8F, 0x14, 0x4A, 0x15, 0x00,
334 0x16, 0x00, 0x17, 0x23, 0x18, 0xa0, 0x19, 0x07,
335 0x1a, 0xf0, 0x1b, 0x40, 0x1f, 0x00, 0x20, 0x10,
336 0x22, 0xff, 0x23, 0x01, 0x28, 0x00, 0x29, 0xa0,
337 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0xf0, 0x2d, 0x00,
338 0x2e, 0x00, 0x30, 0x80, 0x31, 0x60, 0x32, 0x00,
339 0x33, 0x00, 0x34, 0x00, 0x3d, 0x80, 0x3e, 0xe2,
340 0x3f, 0x1f, 0x42, 0x80, 0x43, 0x80, 0x44, 0x80,
341 0x45, 0x80, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00,
342 0x49, 0x50, 0x4a, 0x30, 0x4b, 0x50, 0x4c, 0x50,
343 0x4d, 0x00, 0x4e, 0xef, 0x4f, 0x10, 0x50, 0x60,
344 0x51, 0x00, 0x52, 0x00, 0x53, 0x24, 0x54, 0x7a,
345 0x55, 0xfc, 0x62, 0xff, 0x63, 0xf0, 0x64, 0x1f,
346 0x65, 0x00, 0x66, 0x10, 0x67, 0x00, 0x68, 0x00,
347 0x69, 0x5c, 0x6a, 0x11, 0x6b, 0xa2, 0x6c, 0x01,
348 0x6d, 0x50, 0x6e, 0x80, 0x6f, 0x80, 0x70, 0x0f,
349 0x71, 0x00, 0x72, 0x00, 0x73, 0x0f, 0x74, 0x0f,
350 0x75, 0xff, 0x78, 0x10, 0x79, 0x70, 0x7a, 0x70,
351 0x7b, 0xf0, 0x7c, 0xf0, 0x7d, 0xf0, 0x7e, 0x0e,
352 0x7f, 0x1a, 0x80, 0x31, 0x81, 0x5a, 0x82, 0x69,
353 0x83, 0x75, 0x84, 0x7e, 0x85, 0x88, 0x86, 0x8f,
354 0x87, 0x96, 0x88, 0xa3, 0x89, 0xaf, 0x8a, 0xc4,
355 0x8b, 0xd7, 0x8c, 0xe8, 0x8d, 0x20, 0x8e, 0x00,
356 0x8f, 0x00, 0x90, 0x08, 0x91, 0x10, 0x92, 0x1f,
357 0x93, 0x01, 0x94, 0x2c, 0x95, 0x24, 0x96, 0x08,
358 0x97, 0x14, 0x98, 0x24, 0x99, 0x38, 0x9a, 0x9e,
359 0x9b, 0x00, 0x9c, 0x40, 0x9e, 0x11, 0x9f, 0x02,
360 0xa0, 0x00, 0xa1, 0x40, 0xa2, 0x40, 0xa3, 0x06,
361 0xa4, 0x00, 0xa6, 0x00, 0xa7, 0x40, 0xa8, 0x40,
362 0xa9, 0x80, 0xaa, 0x80, 0xab, 0x06, 0xac, 0xff,
363 0x12, 0x06, 0x64, 0x3f, 0x12, 0x46, 0x17, 0x3f,
364 0x18, 0x50, 0x19, 0x03, 0x1a, 0x78, 0x29, 0x50,
365 0x2c, 0x78,
366};
367 343
368static int ov772x_set_capture(struct soc_camera_platform_info *info, 344static int tw9910_power(struct device *dev, int mode)
369 int enable)
370{ 345{
371 struct i2c_adapter *a = i2c_get_adapter(0); 346 if (mode)
372 struct i2c_msg msg; 347 camera_power_on(1);
373 int ret = 0; 348 else
374 int i; 349 camera_power_off();
375
376 if (!enable)
377 return 0; /* camera_power_off() is enough */
378
379 for (i = 0; i < ARRAY_SIZE(camera_ov772x_magic); i += 2) {
380 u_int8_t buf[8];
381
382 msg.addr = 0x21;
383 msg.buf = buf;
384 msg.len = 2;
385 msg.flags = 0;
386
387 buf[0] = camera_ov772x_magic[i];
388 buf[1] = camera_ov772x_magic[i + 1];
389
390 ret = (ret < 0) ? ret : i2c_transfer(a, &msg, 1);
391 }
392 350
393 return ret; 351 return 0;
394} 352}
395 353
396static struct soc_camera_platform_info ov772x_info = {
397 .iface = 0,
398 .format_name = "RGB565",
399 .format_depth = 16,
400 .format = {
401 .pixelformat = V4L2_PIX_FMT_RGB565,
402 .colorspace = V4L2_COLORSPACE_SRGB,
403 .width = 320,
404 .height = 240,
405 },
406 .bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH |
407 SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8,
408 .power = camera_power,
409 .set_capture = ov772x_set_capture,
410};
411
412static struct platform_device migor_camera_device = {
413 .name = "soc_camera_platform",
414 .dev = {
415 .platform_data = &ov772x_info,
416 },
417};
418#endif /* CONFIG_I2C */
419
420static struct sh_mobile_ceu_info sh_mobile_ceu_info = { 354static struct sh_mobile_ceu_info sh_mobile_ceu_info = {
421 .flags = SOCAM_MASTER | SOCAM_DATAWIDTH_8 | SOCAM_PCLK_SAMPLE_RISING \ 355 .flags = SOCAM_MASTER | SOCAM_DATAWIDTH_8 | SOCAM_PCLK_SAMPLE_RISING \
422 | SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_HIGH, 356 | SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_HIGH,
@@ -448,16 +382,43 @@ static struct platform_device migor_ceu_device = {
448 }, 382 },
449}; 383};
450 384
385static struct ov772x_camera_info ov7725_info = {
386 .buswidth = SOCAM_DATAWIDTH_8,
387 .link = {
388 .power = ov7725_power,
389 },
390};
391
392static struct tw9910_video_info tw9910_info = {
393 .buswidth = SOCAM_DATAWIDTH_8,
394 .mpout = TW9910_MPO_FIELD,
395 .link = {
396 .power = tw9910_power,
397 }
398};
399
400struct spi_gpio_platform_data sdcard_cn9_platform_data = {
401 .sck = GPIO_PTD0,
402 .mosi = GPIO_PTD1,
403 .miso = GPIO_PTD2,
404 .num_chipselect = 1,
405};
406
407static struct platform_device sdcard_cn9_device = {
408 .name = "spi_gpio",
409 .dev = {
410 .platform_data = &sdcard_cn9_platform_data,
411 },
412};
413
451static struct platform_device *migor_devices[] __initdata = { 414static struct platform_device *migor_devices[] __initdata = {
452 &smc91x_eth_device, 415 &smc91x_eth_device,
453 &sh_keysc_device, 416 &sh_keysc_device,
454 &migor_lcdc_device, 417 &migor_lcdc_device,
455 &migor_ceu_device, 418 &migor_ceu_device,
456#ifdef CONFIG_I2C
457 &migor_camera_device,
458#endif
459 &migor_nor_flash_device, 419 &migor_nor_flash_device,
460 &migor_nand_flash_device, 420 &migor_nand_flash_device,
421 &sdcard_cn9_device,
461}; 422};
462 423
463static struct i2c_board_info migor_i2c_devices[] = { 424static struct i2c_board_info migor_i2c_devices[] = {
@@ -468,6 +429,23 @@ static struct i2c_board_info migor_i2c_devices[] = {
468 I2C_BOARD_INFO("migor_ts", 0x51), 429 I2C_BOARD_INFO("migor_ts", 0x51),
469 .irq = 38, /* IRQ6 */ 430 .irq = 38, /* IRQ6 */
470 }, 431 },
432 {
433 I2C_BOARD_INFO("ov772x", 0x21),
434 .platform_data = &ov7725_info,
435 },
436 {
437 I2C_BOARD_INFO("tw9910", 0x45),
438 .platform_data = &tw9910_info,
439 },
440};
441
442static struct spi_board_info migor_spi_devices[] = {
443 {
444 .modalias = "mmc_spi",
445 .max_speed_hz = 5000000,
446 .chip_select = 0,
447 .controller_data = (void *) GPIO_PTD5,
448 },
471}; 449};
472 450
473static int __init migor_devices_setup(void) 451static int __init migor_devices_setup(void)
@@ -592,6 +570,9 @@ static int __init migor_devices_setup(void)
592 i2c_register_board_info(0, migor_i2c_devices, 570 i2c_register_board_info(0, migor_i2c_devices,
593 ARRAY_SIZE(migor_i2c_devices)); 571 ARRAY_SIZE(migor_i2c_devices));
594 572
573 spi_register_board_info(migor_spi_devices,
574 ARRAY_SIZE(migor_spi_devices));
575
595 return platform_add_devices(migor_devices, ARRAY_SIZE(migor_devices)); 576 return platform_add_devices(migor_devices, ARRAY_SIZE(migor_devices));
596} 577}
597__initcall(migor_devices_setup); 578__initcall(migor_devices_setup);
diff --git a/arch/sh/boards/mach-rsk/devices-rsk7203.c b/arch/sh/boards/mach-rsk/devices-rsk7203.c
index 73f743b9be8d..d8a65ea91665 100644
--- a/arch/sh/boards/mach-rsk/devices-rsk7203.c
+++ b/arch/sh/boards/mach-rsk/devices-rsk7203.c
@@ -15,19 +15,21 @@
15#include <linux/mtd/partitions.h> 15#include <linux/mtd/partitions.h>
16#include <linux/mtd/physmap.h> 16#include <linux/mtd/physmap.h>
17#include <linux/mtd/map.h> 17#include <linux/mtd/map.h>
18#include <linux/smc911x.h> 18#include <linux/smsc911x.h>
19#include <linux/gpio.h> 19#include <linux/gpio.h>
20#include <linux/leds.h> 20#include <linux/leds.h>
21#include <asm/machvec.h> 21#include <asm/machvec.h>
22#include <asm/io.h> 22#include <asm/io.h>
23#include <cpu/sh7203.h> 23#include <cpu/sh7203.h>
24 24
25static struct smc911x_platdata smc911x_info = { 25static struct smsc911x_platform_config smsc911x_config = {
26 .flags = SMC911X_USE_16BIT, 26 .phy_interface = PHY_INTERFACE_MODE_MII,
27 .irq_flags = IRQF_TRIGGER_LOW, 27 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
28 .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
29 .flags = SMSC911X_USE_16BIT,
28}; 30};
29 31
30static struct resource smc911x_resources[] = { 32static struct resource smsc911x_resources[] = {
31 [0] = { 33 [0] = {
32 .start = 0x24000000, 34 .start = 0x24000000,
33 .end = 0x24000000 + 0x100, 35 .end = 0x24000000 + 0x100,
@@ -40,13 +42,13 @@ static struct resource smc911x_resources[] = {
40 }, 42 },
41}; 43};
42 44
43static struct platform_device smc911x_device = { 45static struct platform_device smsc911x_device = {
44 .name = "smc911x", 46 .name = "smsc911x",
45 .id = -1, 47 .id = -1,
46 .num_resources = ARRAY_SIZE(smc911x_resources), 48 .num_resources = ARRAY_SIZE(smsc911x_resources),
47 .resource = smc911x_resources, 49 .resource = smsc911x_resources,
48 .dev = { 50 .dev = {
49 .platform_data = &smc911x_info, 51 .platform_data = &smsc911x_config,
50 }, 52 },
51}; 53};
52 54
@@ -87,7 +89,7 @@ static struct platform_device led_device = {
87}; 89};
88 90
89static struct platform_device *rsk7203_devices[] __initdata = { 91static struct platform_device *rsk7203_devices[] __initdata = {
90 &smc911x_device, 92 &smsc911x_device,
91 &led_device, 93 &led_device,
92}; 94};
93 95
diff --git a/arch/sh/boards/mach-x3proto/setup.c b/arch/sh/boards/mach-x3proto/setup.c
index a70d23b21788..a340492087fa 100644
--- a/arch/sh/boards/mach-x3proto/setup.c
+++ b/arch/sh/boards/mach-x3proto/setup.c
@@ -14,6 +14,7 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <linux/smc91x.h> 16#include <linux/smc91x.h>
17#include <linux/irq.h>
17#include <asm/ilsel.h> 18#include <asm/ilsel.h>
18 19
19static struct resource heartbeat_resources[] = { 20static struct resource heartbeat_resources[] = {
diff --git a/arch/sh/configs/ap325rxa_defconfig b/arch/sh/configs/ap325rxa_defconfig
index 874dd9726e52..5c423fa8e6b8 100644
--- a/arch/sh/configs/ap325rxa_defconfig
+++ b/arch/sh/configs/ap325rxa_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.27 3# Linux kernel version: 2.6.28
4# Tue Oct 21 18:20:06 2008 4# Fri Jan 9 16:54:19 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_GPIO=y 16CONFIG_GENERIC_GPIO=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -75,12 +77,10 @@ CONFIG_EVENTFD=y
75CONFIG_SHMEM=y 77CONFIG_SHMEM=y
76CONFIG_AIO=y 78CONFIG_AIO=y
77CONFIG_VM_EVENT_COUNTERS=y 79CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
79CONFIG_SLAB=y 80CONFIG_SLAB=y
80# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
81# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
82# CONFIG_PROFILING is not set 83# CONFIG_PROFILING is not set
83# CONFIG_MARKERS is not set
84CONFIG_HAVE_OPROFILE=y 84CONFIG_HAVE_OPROFILE=y
85CONFIG_HAVE_IOREMAP_PROT=y 85CONFIG_HAVE_IOREMAP_PROT=y
86CONFIG_HAVE_KPROBES=y 86CONFIG_HAVE_KPROBES=y
@@ -90,7 +90,6 @@ CONFIG_HAVE_CLK=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
92CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
93# CONFIG_TINY_SHMEM is not set
94CONFIG_BASE_SMALL=0 93CONFIG_BASE_SMALL=0
95CONFIG_MODULES=y 94CONFIG_MODULES=y
96# CONFIG_MODULE_FORCE_LOAD is not set 95# CONFIG_MODULE_FORCE_LOAD is not set
@@ -98,11 +97,9 @@ CONFIG_MODULE_UNLOAD=y
98# CONFIG_MODULE_FORCE_UNLOAD is not set 97# CONFIG_MODULE_FORCE_UNLOAD is not set
99# CONFIG_MODVERSIONS is not set 98# CONFIG_MODVERSIONS is not set
100# CONFIG_MODULE_SRCVERSION_ALL is not set 99# CONFIG_MODULE_SRCVERSION_ALL is not set
101CONFIG_KMOD=y
102CONFIG_BLOCK=y 100CONFIG_BLOCK=y
103# CONFIG_LBD is not set 101# CONFIG_LBD is not set
104# CONFIG_BLK_DEV_IO_TRACE is not set 102# CONFIG_BLK_DEV_IO_TRACE is not set
105# CONFIG_LSF is not set
106# CONFIG_BLK_DEV_BSG is not set 103# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set 104# CONFIG_BLK_DEV_INTEGRITY is not set
108 105
@@ -119,6 +116,10 @@ CONFIG_DEFAULT_CFQ=y
119# CONFIG_DEFAULT_NOOP is not set 116# CONFIG_DEFAULT_NOOP is not set
120CONFIG_DEFAULT_IOSCHED="cfq" 117CONFIG_DEFAULT_IOSCHED="cfq"
121CONFIG_CLASSIC_RCU=y 118CONFIG_CLASSIC_RCU=y
119# CONFIG_TREE_RCU is not set
120# CONFIG_PREEMPT_RCU is not set
121# CONFIG_TREE_RCU_TRACE is not set
122# CONFIG_PREEMPT_RCU_TRACE is not set
122# CONFIG_FREEZER is not set 123# CONFIG_FREEZER is not set
123 124
124# 125#
@@ -128,6 +129,7 @@ CONFIG_CPU_SH4=y
128CONFIG_CPU_SH4A=y 129CONFIG_CPU_SH4A=y
129CONFIG_CPU_SHX2=y 130CONFIG_CPU_SHX2=y
130# CONFIG_CPU_SUBTYPE_SH7619 is not set 131# CONFIG_CPU_SUBTYPE_SH7619 is not set
132# CONFIG_CPU_SUBTYPE_SH7201 is not set
131# CONFIG_CPU_SUBTYPE_SH7203 is not set 133# CONFIG_CPU_SUBTYPE_SH7203 is not set
132# CONFIG_CPU_SUBTYPE_SH7206 is not set 134# CONFIG_CPU_SUBTYPE_SH7206 is not set
133# CONFIG_CPU_SUBTYPE_SH7263 is not set 135# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -192,7 +194,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
192CONFIG_SPARSEMEM_STATIC=y 194CONFIG_SPARSEMEM_STATIC=y
193CONFIG_PAGEFLAGS_EXTENDED=y 195CONFIG_PAGEFLAGS_EXTENDED=y
194CONFIG_SPLIT_PTLOCK_CPUS=4 196CONFIG_SPLIT_PTLOCK_CPUS=4
195# CONFIG_RESOURCES_64BIT is not set
196# CONFIG_PHYS_ADDR_T_64BIT is not set 197# CONFIG_PHYS_ADDR_T_64BIT is not set
197CONFIG_ZONE_DMA_FLAG=0 198CONFIG_ZONE_DMA_FLAG=0
198CONFIG_NR_QUICK=2 199CONFIG_NR_QUICK=2
@@ -269,7 +270,6 @@ CONFIG_SECCOMP=y
269# CONFIG_PREEMPT_NONE is not set 270# CONFIG_PREEMPT_NONE is not set
270# CONFIG_PREEMPT_VOLUNTARY is not set 271# CONFIG_PREEMPT_VOLUNTARY is not set
271CONFIG_PREEMPT=y 272CONFIG_PREEMPT=y
272# CONFIG_PREEMPT_RCU is not set
273CONFIG_GUSA=y 273CONFIG_GUSA=y
274 274
275# 275#
@@ -293,11 +293,18 @@ CONFIG_BINFMT_ELF=y
293# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 293# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
294# CONFIG_HAVE_AOUT is not set 294# CONFIG_HAVE_AOUT is not set
295# CONFIG_BINFMT_MISC is not set 295# CONFIG_BINFMT_MISC is not set
296
297#
298# Power management options (EXPERIMENTAL)
299#
300# CONFIG_PM is not set
301# CONFIG_CPU_IDLE is not set
296CONFIG_NET=y 302CONFIG_NET=y
297 303
298# 304#
299# Networking options 305# Networking options
300# 306#
307CONFIG_COMPAT_NET_DEV_OPS=y
301CONFIG_PACKET=y 308CONFIG_PACKET=y
302# CONFIG_PACKET_MMAP is not set 309# CONFIG_PACKET_MMAP is not set
303CONFIG_UNIX=y 310CONFIG_UNIX=y
@@ -353,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
353# CONFIG_ECONET is not set 360# CONFIG_ECONET is not set
354# CONFIG_WAN_ROUTER is not set 361# CONFIG_WAN_ROUTER is not set
355# CONFIG_NET_SCHED is not set 362# CONFIG_NET_SCHED is not set
363# CONFIG_DCB is not set
356 364
357# 365#
358# Network testing 366# Network testing
@@ -368,8 +376,8 @@ CONFIG_WIRELESS=y
368# CONFIG_CFG80211 is not set 376# CONFIG_CFG80211 is not set
369# CONFIG_WIRELESS_OLD_REGULATORY is not set 377# CONFIG_WIRELESS_OLD_REGULATORY is not set
370# CONFIG_WIRELESS_EXT is not set 378# CONFIG_WIRELESS_EXT is not set
379# CONFIG_LIB80211 is not set
371# CONFIG_MAC80211 is not set 380# CONFIG_MAC80211 is not set
372# CONFIG_IEEE80211 is not set
373# CONFIG_RFKILL is not set 381# CONFIG_RFKILL is not set
374# CONFIG_NET_9P is not set 382# CONFIG_NET_9P is not set
375 383
@@ -447,6 +455,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0
447# 455#
448# Self-contained MTD device drivers 456# Self-contained MTD device drivers
449# 457#
458# CONFIG_MTD_DATAFLASH is not set
459# CONFIG_MTD_M25P80 is not set
450# CONFIG_MTD_SLRAM is not set 460# CONFIG_MTD_SLRAM is not set
451# CONFIG_MTD_PHRAM is not set 461# CONFIG_MTD_PHRAM is not set
452# CONFIG_MTD_MTDRAM is not set 462# CONFIG_MTD_MTDRAM is not set
@@ -472,7 +482,15 @@ CONFIG_MTD_NAND_SH_FLCTL=y
472# 482#
473# UBI - Unsorted block images 483# UBI - Unsorted block images
474# 484#
475# CONFIG_MTD_UBI is not set 485CONFIG_MTD_UBI=y
486CONFIG_MTD_UBI_WL_THRESHOLD=4096
487CONFIG_MTD_UBI_BEB_RESERVE=1
488# CONFIG_MTD_UBI_GLUEBI is not set
489
490#
491# UBI debugging options
492#
493# CONFIG_MTD_UBI_DEBUG is not set
476# CONFIG_PARPORT is not set 494# CONFIG_PARPORT is not set
477CONFIG_BLK_DEV=y 495CONFIG_BLK_DEV=y
478# CONFIG_BLK_DEV_COW_COMMON is not set 496# CONFIG_BLK_DEV_COW_COMMON is not set
@@ -487,7 +505,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
487# CONFIG_BLK_DEV_HD is not set 505# CONFIG_BLK_DEV_HD is not set
488CONFIG_MISC_DEVICES=y 506CONFIG_MISC_DEVICES=y
489# CONFIG_EEPROM_93CX6 is not set 507# CONFIG_EEPROM_93CX6 is not set
508# CONFIG_ICS932S401 is not set
490# CONFIG_ENCLOSURE_SERVICES is not set 509# CONFIG_ENCLOSURE_SERVICES is not set
510# CONFIG_C2PORT is not set
491CONFIG_HAVE_IDE=y 511CONFIG_HAVE_IDE=y
492# CONFIG_IDE is not set 512# CONFIG_IDE is not set
493 513
@@ -530,6 +550,7 @@ CONFIG_SCSI_WAIT_SCAN=m
530# CONFIG_SCSI_SRP_ATTRS is not set 550# CONFIG_SCSI_SRP_ATTRS is not set
531CONFIG_SCSI_LOWLEVEL=y 551CONFIG_SCSI_LOWLEVEL=y
532# CONFIG_ISCSI_TCP is not set 552# CONFIG_ISCSI_TCP is not set
553# CONFIG_LIBFC is not set
533# CONFIG_SCSI_DEBUG is not set 554# CONFIG_SCSI_DEBUG is not set
534# CONFIG_SCSI_DH is not set 555# CONFIG_SCSI_DH is not set
535# CONFIG_ATA is not set 556# CONFIG_ATA is not set
@@ -541,13 +562,34 @@ CONFIG_NETDEVICES=y
541# CONFIG_EQUALIZER is not set 562# CONFIG_EQUALIZER is not set
542# CONFIG_TUN is not set 563# CONFIG_TUN is not set
543# CONFIG_VETH is not set 564# CONFIG_VETH is not set
544# CONFIG_PHYLIB is not set 565CONFIG_PHYLIB=y
566
567#
568# MII PHY device drivers
569#
570# CONFIG_MARVELL_PHY is not set
571# CONFIG_DAVICOM_PHY is not set
572# CONFIG_QSEMI_PHY is not set
573# CONFIG_LXT_PHY is not set
574# CONFIG_CICADA_PHY is not set
575# CONFIG_VITESSE_PHY is not set
576CONFIG_SMSC_PHY=y
577# CONFIG_BROADCOM_PHY is not set
578# CONFIG_ICPLUS_PHY is not set
579# CONFIG_REALTEK_PHY is not set
580# CONFIG_NATIONAL_PHY is not set
581# CONFIG_STE10XP is not set
582# CONFIG_LSI_ET1011C_PHY is not set
583# CONFIG_FIXED_PHY is not set
584# CONFIG_MDIO_BITBANG is not set
545CONFIG_NET_ETHERNET=y 585CONFIG_NET_ETHERNET=y
546CONFIG_MII=y 586CONFIG_MII=y
547# CONFIG_AX88796 is not set 587# CONFIG_AX88796 is not set
548# CONFIG_STNIC is not set 588# CONFIG_STNIC is not set
549# CONFIG_SMC91X is not set 589# CONFIG_SMC91X is not set
550CONFIG_SMC911X=y 590# CONFIG_ENC28J60 is not set
591# CONFIG_SMC911X is not set
592CONFIG_SMSC911X=y
551# CONFIG_IBM_NEW_EMAC_ZMII is not set 593# CONFIG_IBM_NEW_EMAC_ZMII is not set
552# CONFIG_IBM_NEW_EMAC_RGMII is not set 594# CONFIG_IBM_NEW_EMAC_RGMII is not set
553# CONFIG_IBM_NEW_EMAC_TAH is not set 595# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -630,6 +672,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
630CONFIG_SERIAL_CORE=y 672CONFIG_SERIAL_CORE=y
631CONFIG_SERIAL_CORE_CONSOLE=y 673CONFIG_SERIAL_CORE_CONSOLE=y
632CONFIG_UNIX98_PTYS=y 674CONFIG_UNIX98_PTYS=y
675# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
633CONFIG_LEGACY_PTYS=y 676CONFIG_LEGACY_PTYS=y
634CONFIG_LEGACY_PTY_COUNT=256 677CONFIG_LEGACY_PTY_COUNT=256
635# CONFIG_IPMI_HANDLER is not set 678# CONFIG_IPMI_HANDLER is not set
@@ -637,19 +680,102 @@ CONFIG_HW_RANDOM=y
637# CONFIG_R3964 is not set 680# CONFIG_R3964 is not set
638# CONFIG_RAW_DRIVER is not set 681# CONFIG_RAW_DRIVER is not set
639# CONFIG_TCG_TPM is not set 682# CONFIG_TCG_TPM is not set
640# CONFIG_I2C is not set 683CONFIG_I2C=y
641# CONFIG_SPI is not set 684CONFIG_I2C_BOARDINFO=y
685CONFIG_I2C_CHARDEV=y
686CONFIG_I2C_HELPER_AUTO=y
687
688#
689# I2C Hardware Bus support
690#
691
692#
693# I2C system bus drivers (mostly embedded / system-on-chip)
694#
695# CONFIG_I2C_GPIO is not set
696# CONFIG_I2C_OCORES is not set
697CONFIG_I2C_SH_MOBILE=y
698# CONFIG_I2C_SIMTEC is not set
699
700#
701# External I2C/SMBus adapter drivers
702#
703# CONFIG_I2C_PARPORT_LIGHT is not set
704# CONFIG_I2C_TAOS_EVM is not set
705
706#
707# Other I2C/SMBus bus drivers
708#
709# CONFIG_I2C_PCA_PLATFORM is not set
710# CONFIG_I2C_STUB is not set
711
712#
713# Miscellaneous I2C Chip support
714#
715# CONFIG_DS1682 is not set
716# CONFIG_AT24 is not set
717# CONFIG_SENSORS_EEPROM is not set
718# CONFIG_SENSORS_PCF8574 is not set
719# CONFIG_PCF8575 is not set
720# CONFIG_SENSORS_PCA9539 is not set
721# CONFIG_SENSORS_PCF8591 is not set
722# CONFIG_SENSORS_MAX6875 is not set
723# CONFIG_SENSORS_TSL2550 is not set
724# CONFIG_I2C_DEBUG_CORE is not set
725# CONFIG_I2C_DEBUG_ALGO is not set
726# CONFIG_I2C_DEBUG_BUS is not set
727# CONFIG_I2C_DEBUG_CHIP is not set
728CONFIG_SPI=y
729CONFIG_SPI_MASTER=y
730
731#
732# SPI Master Controller Drivers
733#
734CONFIG_SPI_BITBANG=y
735CONFIG_SPI_GPIO=y
736# CONFIG_SPI_SH_SCI is not set
737
738#
739# SPI Protocol Masters
740#
741# CONFIG_SPI_AT25 is not set
742# CONFIG_SPI_SPIDEV is not set
743# CONFIG_SPI_TLE62X0 is not set
744CONFIG_ARCH_REQUIRE_GPIOLIB=y
745CONFIG_GPIOLIB=y
746# CONFIG_GPIO_SYSFS is not set
747
748#
749# Memory mapped GPIO expanders:
750#
751
752#
753# I2C GPIO expanders:
754#
755# CONFIG_GPIO_MAX732X is not set
756# CONFIG_GPIO_PCA953X is not set
757# CONFIG_GPIO_PCF857X is not set
758
759#
760# PCI GPIO expanders:
761#
762
763#
764# SPI GPIO expanders:
765#
766# CONFIG_GPIO_MAX7301 is not set
767# CONFIG_GPIO_MCP23S08 is not set
642# CONFIG_W1 is not set 768# CONFIG_W1 is not set
643# CONFIG_POWER_SUPPLY is not set 769# CONFIG_POWER_SUPPLY is not set
644# CONFIG_HWMON is not set 770# CONFIG_HWMON is not set
645# CONFIG_THERMAL is not set 771# CONFIG_THERMAL is not set
646# CONFIG_THERMAL_HWMON is not set 772# CONFIG_THERMAL_HWMON is not set
647# CONFIG_WATCHDOG is not set 773# CONFIG_WATCHDOG is not set
774CONFIG_SSB_POSSIBLE=y
648 775
649# 776#
650# Sonics Silicon Backplane 777# Sonics Silicon Backplane
651# 778#
652CONFIG_SSB_POSSIBLE=y
653# CONFIG_SSB is not set 779# CONFIG_SSB is not set
654 780
655# 781#
@@ -658,8 +784,13 @@ CONFIG_SSB_POSSIBLE=y
658# CONFIG_MFD_CORE is not set 784# CONFIG_MFD_CORE is not set
659# CONFIG_MFD_SM501 is not set 785# CONFIG_MFD_SM501 is not set
660# CONFIG_HTC_PASIC3 is not set 786# CONFIG_HTC_PASIC3 is not set
787# CONFIG_TPS65010 is not set
788# CONFIG_TWL4030_CORE is not set
661# CONFIG_MFD_TMIO is not set 789# CONFIG_MFD_TMIO is not set
790# CONFIG_PMIC_DA903X is not set
662# CONFIG_MFD_WM8400 is not set 791# CONFIG_MFD_WM8400 is not set
792# CONFIG_MFD_WM8350_I2C is not set
793# CONFIG_REGULATOR is not set
663 794
664# 795#
665# Multimedia devices 796# Multimedia devices
@@ -668,13 +799,47 @@ CONFIG_SSB_POSSIBLE=y
668# 799#
669# Multimedia core support 800# Multimedia core support
670# 801#
671# CONFIG_VIDEO_DEV is not set 802CONFIG_VIDEO_DEV=y
803CONFIG_VIDEO_V4L2_COMMON=y
804# CONFIG_VIDEO_ALLOW_V4L1 is not set
805CONFIG_VIDEO_V4L1_COMPAT=y
672# CONFIG_DVB_CORE is not set 806# CONFIG_DVB_CORE is not set
673# CONFIG_VIDEO_MEDIA is not set 807CONFIG_VIDEO_MEDIA=y
674 808
675# 809#
676# Multimedia drivers 810# Multimedia drivers
677# 811#
812# CONFIG_MEDIA_ATTACH is not set
813CONFIG_MEDIA_TUNER=y
814# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
815CONFIG_MEDIA_TUNER_SIMPLE=y
816CONFIG_MEDIA_TUNER_TDA8290=y
817CONFIG_MEDIA_TUNER_TDA9887=y
818CONFIG_MEDIA_TUNER_TEA5761=y
819CONFIG_MEDIA_TUNER_TEA5767=y
820CONFIG_MEDIA_TUNER_MT20XX=y
821CONFIG_MEDIA_TUNER_XC2028=y
822CONFIG_MEDIA_TUNER_XC5000=y
823CONFIG_VIDEO_V4L2=y
824CONFIG_VIDEOBUF_GEN=y
825CONFIG_VIDEOBUF_DMA_CONTIG=y
826CONFIG_VIDEO_CAPTURE_DRIVERS=y
827# CONFIG_VIDEO_ADV_DEBUG is not set
828# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
829CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
830# CONFIG_VIDEO_VIVI is not set
831# CONFIG_VIDEO_SAA5246A is not set
832# CONFIG_VIDEO_SAA5249 is not set
833CONFIG_SOC_CAMERA=y
834# CONFIG_SOC_CAMERA_MT9M001 is not set
835# CONFIG_SOC_CAMERA_MT9M111 is not set
836# CONFIG_SOC_CAMERA_MT9T031 is not set
837# CONFIG_SOC_CAMERA_MT9V022 is not set
838# CONFIG_SOC_CAMERA_TW9910 is not set
839CONFIG_SOC_CAMERA_PLATFORM=y
840# CONFIG_SOC_CAMERA_OV772X is not set
841CONFIG_VIDEO_SH_MOBILE_CEU=y
842# CONFIG_RADIO_ADAPTERS is not set
678# CONFIG_DAB is not set 843# CONFIG_DAB is not set
679 844
680# 845#
@@ -682,7 +847,34 @@ CONFIG_SSB_POSSIBLE=y
682# 847#
683# CONFIG_VGASTATE is not set 848# CONFIG_VGASTATE is not set
684# CONFIG_VIDEO_OUTPUT_CONTROL is not set 849# CONFIG_VIDEO_OUTPUT_CONTROL is not set
685# CONFIG_FB is not set 850CONFIG_FB=y
851# CONFIG_FIRMWARE_EDID is not set
852# CONFIG_FB_DDC is not set
853# CONFIG_FB_BOOT_VESA_SUPPORT is not set
854# CONFIG_FB_CFB_FILLRECT is not set
855# CONFIG_FB_CFB_COPYAREA is not set
856# CONFIG_FB_CFB_IMAGEBLIT is not set
857# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
858CONFIG_FB_SYS_FILLRECT=y
859CONFIG_FB_SYS_COPYAREA=y
860CONFIG_FB_SYS_IMAGEBLIT=y
861# CONFIG_FB_FOREIGN_ENDIAN is not set
862CONFIG_FB_SYS_FOPS=y
863CONFIG_FB_DEFERRED_IO=y
864# CONFIG_FB_SVGALIB is not set
865# CONFIG_FB_MACMODES is not set
866# CONFIG_FB_BACKLIGHT is not set
867# CONFIG_FB_MODE_HELPERS is not set
868# CONFIG_FB_TILEBLITTING is not set
869
870#
871# Frame buffer hardware drivers
872#
873# CONFIG_FB_S1D13XXX is not set
874CONFIG_FB_SH_MOBILE_LCDC=y
875# CONFIG_FB_VIRTUAL is not set
876# CONFIG_FB_METRONOME is not set
877# CONFIG_FB_MB862XX is not set
686# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 878# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
687 879
688# 880#
@@ -694,14 +886,103 @@ CONFIG_SSB_POSSIBLE=y
694# Console display driver support 886# Console display driver support
695# 887#
696CONFIG_DUMMY_CONSOLE=y 888CONFIG_DUMMY_CONSOLE=y
889CONFIG_FRAMEBUFFER_CONSOLE=y
890# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
891# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
892# CONFIG_FONTS is not set
893CONFIG_FONT_8x8=y
894CONFIG_FONT_8x16=y
895CONFIG_LOGO=y
896CONFIG_LOGO_LINUX_MONO=y
897CONFIG_LOGO_LINUX_VGA16=y
898CONFIG_LOGO_LINUX_CLUT224=y
899CONFIG_LOGO_SUPERH_MONO=y
900CONFIG_LOGO_SUPERH_VGA16=y
901CONFIG_LOGO_SUPERH_CLUT224=y
697# CONFIG_SOUND is not set 902# CONFIG_SOUND is not set
698# CONFIG_HID_SUPPORT is not set 903# CONFIG_HID_SUPPORT is not set
699# CONFIG_USB_SUPPORT is not set 904# CONFIG_USB_SUPPORT is not set
700# CONFIG_MMC is not set 905CONFIG_MMC=y
906# CONFIG_MMC_DEBUG is not set
907# CONFIG_MMC_UNSAFE_RESUME is not set
908
909#
910# MMC/SD/SDIO Card Drivers
911#
912CONFIG_MMC_BLOCK=y
913CONFIG_MMC_BLOCK_BOUNCE=y
914# CONFIG_SDIO_UART is not set
915# CONFIG_MMC_TEST is not set
916
917#
918# MMC/SD/SDIO Host Controller Drivers
919#
920# CONFIG_MMC_SDHCI is not set
921CONFIG_MMC_SPI=y
701# CONFIG_MEMSTICK is not set 922# CONFIG_MEMSTICK is not set
702# CONFIG_NEW_LEDS is not set 923# CONFIG_NEW_LEDS is not set
703# CONFIG_ACCESSIBILITY is not set 924# CONFIG_ACCESSIBILITY is not set
704# CONFIG_RTC_CLASS is not set 925CONFIG_RTC_LIB=y
926CONFIG_RTC_CLASS=y
927CONFIG_RTC_HCTOSYS=y
928CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
929# CONFIG_RTC_DEBUG is not set
930
931#
932# RTC interfaces
933#
934CONFIG_RTC_INTF_SYSFS=y
935CONFIG_RTC_INTF_PROC=y
936CONFIG_RTC_INTF_DEV=y
937# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
938# CONFIG_RTC_DRV_TEST is not set
939
940#
941# I2C RTC drivers
942#
943# CONFIG_RTC_DRV_DS1307 is not set
944# CONFIG_RTC_DRV_DS1374 is not set
945# CONFIG_RTC_DRV_DS1672 is not set
946# CONFIG_RTC_DRV_MAX6900 is not set
947# CONFIG_RTC_DRV_RS5C372 is not set
948# CONFIG_RTC_DRV_ISL1208 is not set
949# CONFIG_RTC_DRV_X1205 is not set
950CONFIG_RTC_DRV_PCF8563=y
951# CONFIG_RTC_DRV_PCF8583 is not set
952# CONFIG_RTC_DRV_M41T80 is not set
953# CONFIG_RTC_DRV_S35390A is not set
954# CONFIG_RTC_DRV_FM3130 is not set
955# CONFIG_RTC_DRV_RX8581 is not set
956
957#
958# SPI RTC drivers
959#
960# CONFIG_RTC_DRV_M41T94 is not set
961# CONFIG_RTC_DRV_DS1305 is not set
962# CONFIG_RTC_DRV_DS1390 is not set
963# CONFIG_RTC_DRV_MAX6902 is not set
964# CONFIG_RTC_DRV_R9701 is not set
965# CONFIG_RTC_DRV_RS5C348 is not set
966# CONFIG_RTC_DRV_DS3234 is not set
967
968#
969# Platform RTC drivers
970#
971# CONFIG_RTC_DRV_DS1286 is not set
972# CONFIG_RTC_DRV_DS1511 is not set
973# CONFIG_RTC_DRV_DS1553 is not set
974# CONFIG_RTC_DRV_DS1742 is not set
975# CONFIG_RTC_DRV_STK17TA8 is not set
976# CONFIG_RTC_DRV_M48T86 is not set
977# CONFIG_RTC_DRV_M48T35 is not set
978# CONFIG_RTC_DRV_M48T59 is not set
979# CONFIG_RTC_DRV_BQ4802 is not set
980# CONFIG_RTC_DRV_V3020 is not set
981
982#
983# on-CPU RTC drivers
984#
985# CONFIG_RTC_DRV_SH is not set
705# CONFIG_DMADEVICES is not set 986# CONFIG_DMADEVICES is not set
706CONFIG_UIO=y 987CONFIG_UIO=y
707# CONFIG_UIO_PDRV is not set 988# CONFIG_UIO_PDRV is not set
@@ -768,10 +1049,7 @@ CONFIG_TMPFS=y
768# CONFIG_HUGETLBFS is not set 1049# CONFIG_HUGETLBFS is not set
769# CONFIG_HUGETLB_PAGE is not set 1050# CONFIG_HUGETLB_PAGE is not set
770# CONFIG_CONFIGFS_FS is not set 1051# CONFIG_CONFIGFS_FS is not set
771 1052CONFIG_MISC_FILESYSTEMS=y
772#
773# Miscellaneous filesystems
774#
775# CONFIG_ADFS_FS is not set 1053# CONFIG_ADFS_FS is not set
776# CONFIG_AFFS_FS is not set 1054# CONFIG_AFFS_FS is not set
777# CONFIG_HFS_FS is not set 1055# CONFIG_HFS_FS is not set
@@ -780,6 +1058,7 @@ CONFIG_TMPFS=y
780# CONFIG_BFS_FS is not set 1058# CONFIG_BFS_FS is not set
781# CONFIG_EFS_FS is not set 1059# CONFIG_EFS_FS is not set
782# CONFIG_JFFS2_FS is not set 1060# CONFIG_JFFS2_FS is not set
1061# CONFIG_UBIFS_FS is not set
783# CONFIG_CRAMFS is not set 1062# CONFIG_CRAMFS is not set
784# CONFIG_VXFS_FS is not set 1063# CONFIG_VXFS_FS is not set
785# CONFIG_MINIX_FS is not set 1064# CONFIG_MINIX_FS is not set
@@ -878,13 +1157,19 @@ CONFIG_FRAME_WARN=1024
878# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1157# CONFIG_RCU_CPU_STALL_DETECTOR is not set
879# CONFIG_LATENCYTOP is not set 1158# CONFIG_LATENCYTOP is not set
880CONFIG_SYSCTL_SYSCALL_CHECK=y 1159CONFIG_SYSCTL_SYSCALL_CHECK=y
881CONFIG_NOP_TRACER=y 1160CONFIG_HAVE_FUNCTION_TRACER=y
882CONFIG_HAVE_FTRACE=y 1161CONFIG_HAVE_DYNAMIC_FTRACE=y
1162CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1163
1164#
1165# Tracers
1166#
883# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1167# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
884# CONFIG_SAMPLES is not set 1168# CONFIG_SAMPLES is not set
1169CONFIG_HAVE_ARCH_KGDB=y
885# CONFIG_SH_STANDARD_BIOS is not set 1170# CONFIG_SH_STANDARD_BIOS is not set
886# CONFIG_EARLY_SCIF_CONSOLE is not set 1171# CONFIG_EARLY_SCIF_CONSOLE is not set
887# CONFIG_SH_KGDB is not set 1172# CONFIG_MORE_COMPILE_OPTIONS is not set
888 1173
889# 1174#
890# Security options 1175# Security options
@@ -900,11 +1185,14 @@ CONFIG_CRYPTO=y
900# 1185#
901# CONFIG_CRYPTO_FIPS is not set 1186# CONFIG_CRYPTO_FIPS is not set
902CONFIG_CRYPTO_ALGAPI=y 1187CONFIG_CRYPTO_ALGAPI=y
903CONFIG_CRYPTO_AEAD=y 1188CONFIG_CRYPTO_ALGAPI2=y
1189CONFIG_CRYPTO_AEAD2=y
904CONFIG_CRYPTO_BLKCIPHER=y 1190CONFIG_CRYPTO_BLKCIPHER=y
905CONFIG_CRYPTO_HASH=y 1191CONFIG_CRYPTO_BLKCIPHER2=y
906CONFIG_CRYPTO_RNG=y 1192CONFIG_CRYPTO_HASH2=y
1193CONFIG_CRYPTO_RNG2=y
907CONFIG_CRYPTO_MANAGER=y 1194CONFIG_CRYPTO_MANAGER=y
1195CONFIG_CRYPTO_MANAGER2=y
908# CONFIG_CRYPTO_GF128MUL is not set 1196# CONFIG_CRYPTO_GF128MUL is not set
909# CONFIG_CRYPTO_NULL is not set 1197# CONFIG_CRYPTO_NULL is not set
910# CONFIG_CRYPTO_CRYPTD is not set 1198# CONFIG_CRYPTO_CRYPTD is not set
@@ -987,12 +1275,13 @@ CONFIG_CRYPTO_HW=y
987# Library routines 1275# Library routines
988# 1276#
989CONFIG_BITREVERSE=y 1277CONFIG_BITREVERSE=y
1278CONFIG_GENERIC_FIND_LAST_BIT=y
990# CONFIG_CRC_CCITT is not set 1279# CONFIG_CRC_CCITT is not set
991# CONFIG_CRC16 is not set 1280# CONFIG_CRC16 is not set
992CONFIG_CRC_T10DIF=y 1281CONFIG_CRC_T10DIF=y
993# CONFIG_CRC_ITU_T is not set 1282CONFIG_CRC_ITU_T=y
994CONFIG_CRC32=y 1283CONFIG_CRC32=y
995# CONFIG_CRC7 is not set 1284CONFIG_CRC7=y
996# CONFIG_LIBCRC32C is not set 1285# CONFIG_LIBCRC32C is not set
997CONFIG_PLIST=y 1286CONFIG_PLIST=y
998CONFIG_HAS_IOMEM=y 1287CONFIG_HAS_IOMEM=y
diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig
index be4c2e0dbb26..2d86e0487517 100644
--- a/arch/sh/configs/dreamcast_defconfig
+++ b/arch/sh/configs/dreamcast_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:18:02 2008 4# Fri Jan 9 16:54:55 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -78,7 +80,6 @@ CONFIG_SLAB=y
78# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
79# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
80CONFIG_PROFILING=y 82CONFIG_PROFILING=y
81# CONFIG_MARKERS is not set
82# CONFIG_OPROFILE is not set 83# CONFIG_OPROFILE is not set
83CONFIG_HAVE_OPROFILE=y 84CONFIG_HAVE_OPROFILE=y
84# CONFIG_KPROBES is not set 85# CONFIG_KPROBES is not set
@@ -90,7 +91,6 @@ CONFIG_HAVE_CLK=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y 91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 92CONFIG_SLABINFO=y
92CONFIG_RT_MUTEXES=y 93CONFIG_RT_MUTEXES=y
93# CONFIG_TINY_SHMEM is not set
94CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
95CONFIG_MODULES=y 95CONFIG_MODULES=y
96# CONFIG_MODULE_FORCE_LOAD is not set 96# CONFIG_MODULE_FORCE_LOAD is not set
@@ -98,11 +98,9 @@ CONFIG_MODULE_UNLOAD=y
98# CONFIG_MODULE_FORCE_UNLOAD is not set 98# CONFIG_MODULE_FORCE_UNLOAD is not set
99# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
100# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
101CONFIG_KMOD=y
102CONFIG_BLOCK=y 101CONFIG_BLOCK=y
103# CONFIG_LBD is not set 102# CONFIG_LBD is not set
104# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
105# CONFIG_LSF is not set
106# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
108 106
@@ -119,6 +117,10 @@ CONFIG_DEFAULT_AS=y
119# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
120CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
121CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_TREE_RCU is not set
121# CONFIG_PREEMPT_RCU is not set
122# CONFIG_TREE_RCU_TRACE is not set
123# CONFIG_PREEMPT_RCU_TRACE is not set
122# CONFIG_FREEZER is not set 124# CONFIG_FREEZER is not set
123 125
124# 126#
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y
126# 128#
127CONFIG_CPU_SH4=y 129CONFIG_CPU_SH4=y
128# CONFIG_CPU_SUBTYPE_SH7619 is not set 130# CONFIG_CPU_SUBTYPE_SH7619 is not set
131# CONFIG_CPU_SUBTYPE_SH7201 is not set
129# CONFIG_CPU_SUBTYPE_SH7203 is not set 132# CONFIG_CPU_SUBTYPE_SH7203 is not set
130# CONFIG_CPU_SUBTYPE_SH7206 is not set 133# CONFIG_CPU_SUBTYPE_SH7206 is not set
131# CONFIG_CPU_SUBTYPE_SH7263 is not set 134# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -195,7 +198,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
195CONFIG_SPARSEMEM_STATIC=y 198CONFIG_SPARSEMEM_STATIC=y
196CONFIG_PAGEFLAGS_EXTENDED=y 199CONFIG_PAGEFLAGS_EXTENDED=y
197CONFIG_SPLIT_PTLOCK_CPUS=4 200CONFIG_SPLIT_PTLOCK_CPUS=4
198# CONFIG_RESOURCES_64BIT is not set
199# CONFIG_PHYS_ADDR_T_64BIT is not set 201# CONFIG_PHYS_ADDR_T_64BIT is not set
200CONFIG_ZONE_DMA_FLAG=0 202CONFIG_ZONE_DMA_FLAG=0
201CONFIG_NR_QUICK=2 203CONFIG_NR_QUICK=2
@@ -290,7 +292,6 @@ CONFIG_SECCOMP=y
290# CONFIG_PREEMPT_NONE is not set 292# CONFIG_PREEMPT_NONE is not set
291# CONFIG_PREEMPT_VOLUNTARY is not set 293# CONFIG_PREEMPT_VOLUNTARY is not set
292CONFIG_PREEMPT=y 294CONFIG_PREEMPT=y
293# CONFIG_PREEMPT_RCU is not set
294CONFIG_GUSA=y 295CONFIG_GUSA=y
295# CONFIG_GUSA_RB is not set 296# CONFIG_GUSA_RB is not set
296 297
@@ -310,6 +311,7 @@ CONFIG_MAPLE=y
310CONFIG_PCI=y 311CONFIG_PCI=y
311CONFIG_SH_PCIDMA_NONCOHERENT=y 312CONFIG_SH_PCIDMA_NONCOHERENT=y
312CONFIG_PCI_AUTO=y 313CONFIG_PCI_AUTO=y
314# CONFIG_PCIEPORTBUS is not set
313# CONFIG_ARCH_SUPPORTS_MSI is not set 315# CONFIG_ARCH_SUPPORTS_MSI is not set
314CONFIG_PCI_LEGACY=y 316CONFIG_PCI_LEGACY=y
315# CONFIG_PCCARD is not set 317# CONFIG_PCCARD is not set
@@ -322,11 +324,18 @@ CONFIG_BINFMT_ELF=y
322# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 324# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
323# CONFIG_HAVE_AOUT is not set 325# CONFIG_HAVE_AOUT is not set
324# CONFIG_BINFMT_MISC is not set 326# CONFIG_BINFMT_MISC is not set
327
328#
329# Power management options (EXPERIMENTAL)
330#
331# CONFIG_PM is not set
332# CONFIG_CPU_IDLE is not set
325CONFIG_NET=y 333CONFIG_NET=y
326 334
327# 335#
328# Networking options 336# Networking options
329# 337#
338CONFIG_COMPAT_NET_DEV_OPS=y
330CONFIG_PACKET=y 339CONFIG_PACKET=y
331# CONFIG_PACKET_MMAP is not set 340# CONFIG_PACKET_MMAP is not set
332CONFIG_UNIX=y 341CONFIG_UNIX=y
@@ -379,6 +388,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_ECONET is not set 388# CONFIG_ECONET is not set
380# CONFIG_WAN_ROUTER is not set 389# CONFIG_WAN_ROUTER is not set
381# CONFIG_NET_SCHED is not set 390# CONFIG_NET_SCHED is not set
391# CONFIG_DCB is not set
382 392
383# 393#
384# Network testing 394# Network testing
@@ -394,8 +404,8 @@ CONFIG_WIRELESS=y
394# CONFIG_CFG80211 is not set 404# CONFIG_CFG80211 is not set
395# CONFIG_WIRELESS_OLD_REGULATORY is not set 405# CONFIG_WIRELESS_OLD_REGULATORY is not set
396# CONFIG_WIRELESS_EXT is not set 406# CONFIG_WIRELESS_EXT is not set
407# CONFIG_LIB80211 is not set
397# CONFIG_MAC80211 is not set 408# CONFIG_MAC80211 is not set
398# CONFIG_IEEE80211 is not set
399# CONFIG_RFKILL is not set 409# CONFIG_RFKILL is not set
400# CONFIG_NET_9P is not set 410# CONFIG_NET_9P is not set
401 411
@@ -434,6 +444,7 @@ CONFIG_MISC_DEVICES=y
434# CONFIG_TIFM_CORE is not set 444# CONFIG_TIFM_CORE is not set
435# CONFIG_ENCLOSURE_SERVICES is not set 445# CONFIG_ENCLOSURE_SERVICES is not set
436# CONFIG_HP_ILO is not set 446# CONFIG_HP_ILO is not set
447# CONFIG_C2PORT is not set
437CONFIG_HAVE_IDE=y 448CONFIG_HAVE_IDE=y
438# CONFIG_IDE is not set 449# CONFIG_IDE is not set
439 450
@@ -477,6 +488,7 @@ CONFIG_MII=y
477# CONFIG_NET_VENDOR_3COM is not set 488# CONFIG_NET_VENDOR_3COM is not set
478# CONFIG_SMC91X is not set 489# CONFIG_SMC91X is not set
479# CONFIG_SMC911X is not set 490# CONFIG_SMC911X is not set
491# CONFIG_SMSC911X is not set
480# CONFIG_NET_TULIP is not set 492# CONFIG_NET_TULIP is not set
481# CONFIG_HP100 is not set 493# CONFIG_HP100 is not set
482# CONFIG_IBM_NEW_EMAC_ZMII is not set 494# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -492,7 +504,6 @@ CONFIG_NET_PCI=y
492# CONFIG_ADAPTEC_STARFIRE is not set 504# CONFIG_ADAPTEC_STARFIRE is not set
493# CONFIG_B44 is not set 505# CONFIG_B44 is not set
494# CONFIG_FORCEDETH is not set 506# CONFIG_FORCEDETH is not set
495# CONFIG_EEPRO100 is not set
496# CONFIG_E100 is not set 507# CONFIG_E100 is not set
497# CONFIG_FEALNX is not set 508# CONFIG_FEALNX is not set
498# CONFIG_NATSEMI is not set 509# CONFIG_NATSEMI is not set
@@ -506,6 +517,7 @@ CONFIG_8139TOO=y
506# CONFIG_R6040 is not set 517# CONFIG_R6040 is not set
507# CONFIG_SIS900 is not set 518# CONFIG_SIS900 is not set
508# CONFIG_EPIC100 is not set 519# CONFIG_EPIC100 is not set
520# CONFIG_SMSC9420 is not set
509# CONFIG_SUNDANCE is not set 521# CONFIG_SUNDANCE is not set
510# CONFIG_TLAN is not set 522# CONFIG_TLAN is not set
511# CONFIG_VIA_RHINE is not set 523# CONFIG_VIA_RHINE is not set
@@ -611,6 +623,7 @@ CONFIG_SERIAL_CORE=y
611CONFIG_SERIAL_CORE_CONSOLE=y 623CONFIG_SERIAL_CORE_CONSOLE=y
612# CONFIG_SERIAL_JSM is not set 624# CONFIG_SERIAL_JSM is not set
613CONFIG_UNIX98_PTYS=y 625CONFIG_UNIX98_PTYS=y
626# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
614CONFIG_LEGACY_PTYS=y 627CONFIG_LEGACY_PTYS=y
615CONFIG_LEGACY_PTY_COUNT=256 628CONFIG_LEGACY_PTY_COUNT=256
616# CONFIG_IPMI_HANDLER is not set 629# CONFIG_IPMI_HANDLER is not set
@@ -643,11 +656,11 @@ CONFIG_SH_WDT=y
643# 656#
644# CONFIG_PCIPCWATCHDOG is not set 657# CONFIG_PCIPCWATCHDOG is not set
645# CONFIG_WDTPCI is not set 658# CONFIG_WDTPCI is not set
659CONFIG_SSB_POSSIBLE=y
646 660
647# 661#
648# Sonics Silicon Backplane 662# Sonics Silicon Backplane
649# 663#
650CONFIG_SSB_POSSIBLE=y
651# CONFIG_SSB is not set 664# CONFIG_SSB is not set
652 665
653# 666#
@@ -657,7 +670,7 @@ CONFIG_SSB_POSSIBLE=y
657# CONFIG_MFD_SM501 is not set 670# CONFIG_MFD_SM501 is not set
658# CONFIG_HTC_PASIC3 is not set 671# CONFIG_HTC_PASIC3 is not set
659# CONFIG_MFD_TMIO is not set 672# CONFIG_MFD_TMIO is not set
660# CONFIG_MFD_WM8400 is not set 673# CONFIG_REGULATOR is not set
661 674
662# 675#
663# Multimedia devices 676# Multimedia devices
@@ -732,6 +745,7 @@ CONFIG_FB_PVR2=y
732# CONFIG_FB_SH_MOBILE_LCDC is not set 745# CONFIG_FB_SH_MOBILE_LCDC is not set
733# CONFIG_FB_VIRTUAL is not set 746# CONFIG_FB_VIRTUAL is not set
734# CONFIG_FB_METRONOME is not set 747# CONFIG_FB_METRONOME is not set
748# CONFIG_FB_MB862XX is not set
735# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 749# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
736 750
737# 751#
@@ -788,9 +802,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
788# 802#
789 803
790# 804#
791# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 805# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
792# 806#
793# CONFIG_USB_GADGET is not set 807# CONFIG_USB_GADGET is not set
808# CONFIG_UWB is not set
794# CONFIG_MMC is not set 809# CONFIG_MMC is not set
795# CONFIG_MEMSTICK is not set 810# CONFIG_MEMSTICK is not set
796# CONFIG_NEW_LEDS is not set 811# CONFIG_NEW_LEDS is not set
@@ -847,10 +862,7 @@ CONFIG_TMPFS=y
847CONFIG_HUGETLBFS=y 862CONFIG_HUGETLBFS=y
848CONFIG_HUGETLB_PAGE=y 863CONFIG_HUGETLB_PAGE=y
849# CONFIG_CONFIGFS_FS is not set 864# CONFIG_CONFIGFS_FS is not set
850 865CONFIG_MISC_FILESYSTEMS=y
851#
852# Miscellaneous filesystems
853#
854# CONFIG_ADFS_FS is not set 866# CONFIG_ADFS_FS is not set
855# CONFIG_AFFS_FS is not set 867# CONFIG_AFFS_FS is not set
856# CONFIG_HFS_FS is not set 868# CONFIG_HFS_FS is not set
@@ -901,13 +913,19 @@ CONFIG_FRAME_WARN=1024
901# CONFIG_DEBUG_MEMORY_INIT is not set 913# CONFIG_DEBUG_MEMORY_INIT is not set
902# CONFIG_RCU_CPU_STALL_DETECTOR is not set 914# CONFIG_RCU_CPU_STALL_DETECTOR is not set
903# CONFIG_LATENCYTOP is not set 915# CONFIG_LATENCYTOP is not set
904CONFIG_NOP_TRACER=y 916CONFIG_HAVE_FUNCTION_TRACER=y
905CONFIG_HAVE_FTRACE=y 917CONFIG_HAVE_DYNAMIC_FTRACE=y
918CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
919
920#
921# Tracers
922#
906# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 923# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
907# CONFIG_SAMPLES is not set 924# CONFIG_SAMPLES is not set
925CONFIG_HAVE_ARCH_KGDB=y
908# CONFIG_SH_STANDARD_BIOS is not set 926# CONFIG_SH_STANDARD_BIOS is not set
909# CONFIG_EARLY_SCIF_CONSOLE is not set 927# CONFIG_EARLY_SCIF_CONSOLE is not set
910# CONFIG_SH_KGDB is not set 928# CONFIG_MORE_COMPILE_OPTIONS is not set
911 929
912# 930#
913# Security options 931# Security options
@@ -923,6 +941,7 @@ CONFIG_CRYPTO=y
923# 941#
924# CONFIG_CRYPTO_FIPS is not set 942# CONFIG_CRYPTO_FIPS is not set
925# CONFIG_CRYPTO_MANAGER is not set 943# CONFIG_CRYPTO_MANAGER is not set
944# CONFIG_CRYPTO_MANAGER2 is not set
926# CONFIG_CRYPTO_GF128MUL is not set 945# CONFIG_CRYPTO_GF128MUL is not set
927# CONFIG_CRYPTO_NULL is not set 946# CONFIG_CRYPTO_NULL is not set
928# CONFIG_CRYPTO_CRYPTD is not set 947# CONFIG_CRYPTO_CRYPTD is not set
@@ -1006,6 +1025,7 @@ CONFIG_CRYPTO_HW=y
1006# Library routines 1025# Library routines
1007# 1026#
1008CONFIG_BITREVERSE=y 1027CONFIG_BITREVERSE=y
1028CONFIG_GENERIC_FIND_LAST_BIT=y
1009# CONFIG_CRC_CCITT is not set 1029# CONFIG_CRC_CCITT is not set
1010# CONFIG_CRC16 is not set 1030# CONFIG_CRC16 is not set
1011# CONFIG_CRC_T10DIF is not set 1031# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/edosk7705_defconfig b/arch/sh/configs/edosk7705_defconfig
index 8f4329fbbd39..461bfb350221 100644
--- a/arch/sh/configs/edosk7705_defconfig
+++ b/arch/sh/configs/edosk7705_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.28-rc6 3# Linux kernel version: 2.6.28
4# Wed Dec 17 13:53:02 2008 4# Fri Jan 9 16:55:29 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -64,7 +64,6 @@ CONFIG_SHMEM=y
64CONFIG_SLUB=y 64CONFIG_SLUB=y
65# CONFIG_SLOB is not set 65# CONFIG_SLOB is not set
66# CONFIG_PROFILING is not set 66# CONFIG_PROFILING is not set
67# CONFIG_MARKERS is not set
68CONFIG_HAVE_OPROFILE=y 67CONFIG_HAVE_OPROFILE=y
69CONFIG_HAVE_IOREMAP_PROT=y 68CONFIG_HAVE_IOREMAP_PROT=y
70CONFIG_HAVE_KPROBES=y 69CONFIG_HAVE_KPROBES=y
@@ -72,11 +71,14 @@ CONFIG_HAVE_KRETPROBES=y
72CONFIG_HAVE_ARCH_TRACEHOOK=y 71CONFIG_HAVE_ARCH_TRACEHOOK=y
73CONFIG_HAVE_CLK=y 72CONFIG_HAVE_CLK=y
74CONFIG_HAVE_GENERIC_DMA_COHERENT=y 73CONFIG_HAVE_GENERIC_DMA_COHERENT=y
75# CONFIG_TINY_SHMEM is not set
76CONFIG_BASE_SMALL=1 74CONFIG_BASE_SMALL=1
77# CONFIG_MODULES is not set 75# CONFIG_MODULES is not set
78# CONFIG_BLOCK is not set 76# CONFIG_BLOCK is not set
79CONFIG_CLASSIC_RCU=y 77CONFIG_CLASSIC_RCU=y
78# CONFIG_TREE_RCU is not set
79# CONFIG_PREEMPT_RCU is not set
80# CONFIG_TREE_RCU_TRACE is not set
81# CONFIG_PREEMPT_RCU_TRACE is not set
80# CONFIG_FREEZER is not set 82# CONFIG_FREEZER is not set
81 83
82# 84#
@@ -151,7 +153,6 @@ CONFIG_SPARSEMEM_STATIC=y
151CONFIG_PAGEFLAGS_EXTENDED=y 153CONFIG_PAGEFLAGS_EXTENDED=y
152CONFIG_SPLIT_PTLOCK_CPUS=4 154CONFIG_SPLIT_PTLOCK_CPUS=4
153CONFIG_MIGRATION=y 155CONFIG_MIGRATION=y
154# CONFIG_RESOURCES_64BIT is not set
155# CONFIG_PHYS_ADDR_T_64BIT is not set 156# CONFIG_PHYS_ADDR_T_64BIT is not set
156CONFIG_ZONE_DMA_FLAG=0 157CONFIG_ZONE_DMA_FLAG=0
157CONFIG_NR_QUICK=2 158CONFIG_NR_QUICK=2
@@ -362,7 +363,6 @@ CONFIG_SSB_POSSIBLE=y
362# CONFIG_DMADEVICES is not set 363# CONFIG_DMADEVICES is not set
363# CONFIG_UIO is not set 364# CONFIG_UIO is not set
364# CONFIG_STAGING is not set 365# CONFIG_STAGING is not set
365CONFIG_STAGING_EXCLUDE_BUILD=y
366 366
367# 367#
368# File systems 368# File systems
@@ -382,10 +382,7 @@ CONFIG_STAGING_EXCLUDE_BUILD=y
382# CONFIG_TMPFS is not set 382# CONFIG_TMPFS is not set
383# CONFIG_HUGETLBFS is not set 383# CONFIG_HUGETLBFS is not set
384# CONFIG_HUGETLB_PAGE is not set 384# CONFIG_HUGETLB_PAGE is not set
385 385CONFIG_MISC_FILESYSTEMS=y
386#
387# Miscellaneous filesystems
388#
389# CONFIG_NLS is not set 386# CONFIG_NLS is not set
390 387
391# 388#
@@ -426,6 +423,7 @@ CONFIG_HAVE_ARCH_KGDB=y
426# 423#
427# Library routines 424# Library routines
428# 425#
426CONFIG_GENERIC_FIND_LAST_BIT=y
429# CONFIG_CRC_CCITT is not set 427# CONFIG_CRC_CCITT is not set
430# CONFIG_CRC16 is not set 428# CONFIG_CRC16 is not set
431# CONFIG_CRC_T10DIF is not set 429# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/edosk7760_defconfig b/arch/sh/configs/edosk7760_defconfig
index 158006847ad6..240621d8b8d2 100644
--- a/arch/sh/configs/edosk7760_defconfig
+++ b/arch/sh/configs/edosk7760_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:20:09 2008 4# Fri Jan 9 16:55:48 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -59,6 +61,7 @@ CONFIG_UID16=y
59CONFIG_SYSCTL_SYSCALL=y 61CONFIG_SYSCTL_SYSCALL=y
60CONFIG_KALLSYMS=y 62CONFIG_KALLSYMS=y
61CONFIG_KALLSYMS_ALL=y 63CONFIG_KALLSYMS_ALL=y
64CONFIG_KALLSYMS_STRIP_GENERATED=y
62# CONFIG_KALLSYMS_EXTRA_PASS is not set 65# CONFIG_KALLSYMS_EXTRA_PASS is not set
63CONFIG_HOTPLUG=y 66CONFIG_HOTPLUG=y
64CONFIG_PRINTK=y 67CONFIG_PRINTK=y
@@ -75,13 +78,11 @@ CONFIG_EVENTFD=y
75CONFIG_SHMEM=y 78CONFIG_SHMEM=y
76CONFIG_AIO=y 79CONFIG_AIO=y
77CONFIG_VM_EVENT_COUNTERS=y 80CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
79CONFIG_SLUB_DEBUG=y 81CONFIG_SLUB_DEBUG=y
80# CONFIG_SLAB is not set 82# CONFIG_SLAB is not set
81CONFIG_SLUB=y 83CONFIG_SLUB=y
82# CONFIG_SLOB is not set 84# CONFIG_SLOB is not set
83# CONFIG_PROFILING is not set 85# CONFIG_PROFILING is not set
84# CONFIG_MARKERS is not set
85CONFIG_HAVE_OPROFILE=y 86CONFIG_HAVE_OPROFILE=y
86# CONFIG_KPROBES is not set 87# CONFIG_KPROBES is not set
87CONFIG_HAVE_IOREMAP_PROT=y 88CONFIG_HAVE_IOREMAP_PROT=y
@@ -92,7 +93,6 @@ CONFIG_HAVE_CLK=y
92CONFIG_HAVE_GENERIC_DMA_COHERENT=y 93CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 94CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 95CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set
96CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 97CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set 98# CONFIG_MODULE_FORCE_LOAD is not set
@@ -100,11 +100,9 @@ CONFIG_MODULE_UNLOAD=y
100CONFIG_MODULE_FORCE_UNLOAD=y 100CONFIG_MODULE_FORCE_UNLOAD=y
101# CONFIG_MODVERSIONS is not set 101# CONFIG_MODVERSIONS is not set
102# CONFIG_MODULE_SRCVERSION_ALL is not set 102# CONFIG_MODULE_SRCVERSION_ALL is not set
103CONFIG_KMOD=y
104CONFIG_BLOCK=y 103CONFIG_BLOCK=y
105# CONFIG_LBD is not set 104# CONFIG_LBD is not set
106# CONFIG_BLK_DEV_IO_TRACE is not set 105# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 106# CONFIG_BLK_DEV_BSG is not set
109# CONFIG_BLK_DEV_INTEGRITY is not set 107# CONFIG_BLK_DEV_INTEGRITY is not set
110 108
@@ -121,6 +119,10 @@ CONFIG_DEFAULT_CFQ=y
121# CONFIG_DEFAULT_NOOP is not set 119# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="cfq" 120CONFIG_DEFAULT_IOSCHED="cfq"
123CONFIG_CLASSIC_RCU=y 121CONFIG_CLASSIC_RCU=y
122# CONFIG_TREE_RCU is not set
123# CONFIG_PREEMPT_RCU is not set
124# CONFIG_TREE_RCU_TRACE is not set
125# CONFIG_PREEMPT_RCU_TRACE is not set
124# CONFIG_FREEZER is not set 126# CONFIG_FREEZER is not set
125 127
126# 128#
@@ -128,6 +130,7 @@ CONFIG_CLASSIC_RCU=y
128# 130#
129CONFIG_CPU_SH4=y 131CONFIG_CPU_SH4=y
130# CONFIG_CPU_SUBTYPE_SH7619 is not set 132# CONFIG_CPU_SUBTYPE_SH7619 is not set
133# CONFIG_CPU_SUBTYPE_SH7201 is not set
131# CONFIG_CPU_SUBTYPE_SH7203 is not set 134# CONFIG_CPU_SUBTYPE_SH7203 is not set
132# CONFIG_CPU_SUBTYPE_SH7206 is not set 135# CONFIG_CPU_SUBTYPE_SH7206 is not set
133# CONFIG_CPU_SUBTYPE_SH7263 is not set 136# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -191,7 +194,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
191CONFIG_SPARSEMEM_STATIC=y 194CONFIG_SPARSEMEM_STATIC=y
192CONFIG_PAGEFLAGS_EXTENDED=y 195CONFIG_PAGEFLAGS_EXTENDED=y
193CONFIG_SPLIT_PTLOCK_CPUS=4 196CONFIG_SPLIT_PTLOCK_CPUS=4
194# CONFIG_RESOURCES_64BIT is not set
195# CONFIG_PHYS_ADDR_T_64BIT is not set 197# CONFIG_PHYS_ADDR_T_64BIT is not set
196CONFIG_ZONE_DMA_FLAG=0 198CONFIG_ZONE_DMA_FLAG=0
197CONFIG_NR_QUICK=2 199CONFIG_NR_QUICK=2
@@ -272,7 +274,6 @@ CONFIG_SCHED_HRTICK=y
272# CONFIG_PREEMPT_NONE is not set 274# CONFIG_PREEMPT_NONE is not set
273# CONFIG_PREEMPT_VOLUNTARY is not set 275# CONFIG_PREEMPT_VOLUNTARY is not set
274CONFIG_PREEMPT=y 276CONFIG_PREEMPT=y
275# CONFIG_PREEMPT_RCU is not set
276CONFIG_GUSA=y 277CONFIG_GUSA=y
277# CONFIG_GUSA_RB is not set 278# CONFIG_GUSA_RB is not set
278 279
@@ -298,11 +299,18 @@ CONFIG_BINFMT_ELF=y
298# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 299# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
299# CONFIG_HAVE_AOUT is not set 300# CONFIG_HAVE_AOUT is not set
300# CONFIG_BINFMT_MISC is not set 301# CONFIG_BINFMT_MISC is not set
302
303#
304# Power management options (EXPERIMENTAL)
305#
306# CONFIG_PM is not set
307# CONFIG_CPU_IDLE is not set
301CONFIG_NET=y 308CONFIG_NET=y
302 309
303# 310#
304# Networking options 311# Networking options
305# 312#
313CONFIG_COMPAT_NET_DEV_OPS=y
306CONFIG_PACKET=y 314CONFIG_PACKET=y
307# CONFIG_PACKET_MMAP is not set 315# CONFIG_PACKET_MMAP is not set
308CONFIG_UNIX=y 316CONFIG_UNIX=y
@@ -353,6 +361,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
353# CONFIG_ECONET is not set 361# CONFIG_ECONET is not set
354# CONFIG_WAN_ROUTER is not set 362# CONFIG_WAN_ROUTER is not set
355# CONFIG_NET_SCHED is not set 363# CONFIG_NET_SCHED is not set
364# CONFIG_DCB is not set
356 365
357# 366#
358# Network testing 367# Network testing
@@ -368,8 +377,8 @@ CONFIG_WIRELESS=y
368# CONFIG_CFG80211 is not set 377# CONFIG_CFG80211 is not set
369# CONFIG_WIRELESS_OLD_REGULATORY is not set 378# CONFIG_WIRELESS_OLD_REGULATORY is not set
370# CONFIG_WIRELESS_EXT is not set 379# CONFIG_WIRELESS_EXT is not set
380# CONFIG_LIB80211 is not set
371# CONFIG_MAC80211 is not set 381# CONFIG_MAC80211 is not set
372# CONFIG_IEEE80211 is not set
373# CONFIG_RFKILL is not set 382# CONFIG_RFKILL is not set
374# CONFIG_NET_9P is not set 383# CONFIG_NET_9P is not set
375 384
@@ -510,6 +519,7 @@ CONFIG_MII=y
510# CONFIG_STNIC is not set 519# CONFIG_STNIC is not set
511CONFIG_SMC91X=y 520CONFIG_SMC91X=y
512# CONFIG_SMC911X is not set 521# CONFIG_SMC911X is not set
522# CONFIG_SMSC911X is not set
513# CONFIG_IBM_NEW_EMAC_ZMII is not set 523# CONFIG_IBM_NEW_EMAC_ZMII is not set
514# CONFIG_IBM_NEW_EMAC_RGMII is not set 524# CONFIG_IBM_NEW_EMAC_RGMII is not set
515# CONFIG_IBM_NEW_EMAC_TAH is not set 525# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -592,6 +602,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
592CONFIG_SERIAL_CORE=y 602CONFIG_SERIAL_CORE=y
593CONFIG_SERIAL_CORE_CONSOLE=y 603CONFIG_SERIAL_CORE_CONSOLE=y
594CONFIG_UNIX98_PTYS=y 604CONFIG_UNIX98_PTYS=y
605# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
595CONFIG_LEGACY_PTYS=y 606CONFIG_LEGACY_PTYS=y
596CONFIG_LEGACY_PTY_COUNT=256 607CONFIG_LEGACY_PTY_COUNT=256
597# CONFIG_IPMI_HANDLER is not set 608# CONFIG_IPMI_HANDLER is not set
@@ -651,11 +662,11 @@ CONFIG_I2C_DEBUG_CHIP=y
651# CONFIG_THERMAL is not set 662# CONFIG_THERMAL is not set
652# CONFIG_THERMAL_HWMON is not set 663# CONFIG_THERMAL_HWMON is not set
653# CONFIG_WATCHDOG is not set 664# CONFIG_WATCHDOG is not set
665CONFIG_SSB_POSSIBLE=y
654 666
655# 667#
656# Sonics Silicon Backplane 668# Sonics Silicon Backplane
657# 669#
658CONFIG_SSB_POSSIBLE=y
659# CONFIG_SSB is not set 670# CONFIG_SSB is not set
660 671
661# 672#
@@ -664,9 +675,12 @@ CONFIG_SSB_POSSIBLE=y
664# CONFIG_MFD_CORE is not set 675# CONFIG_MFD_CORE is not set
665# CONFIG_MFD_SM501 is not set 676# CONFIG_MFD_SM501 is not set
666# CONFIG_HTC_PASIC3 is not set 677# CONFIG_HTC_PASIC3 is not set
678# CONFIG_TWL4030_CORE is not set
667# CONFIG_MFD_TMIO is not set 679# CONFIG_MFD_TMIO is not set
680# CONFIG_PMIC_DA903X is not set
668# CONFIG_MFD_WM8400 is not set 681# CONFIG_MFD_WM8400 is not set
669# CONFIG_MFD_WM8350_I2C is not set 682# CONFIG_MFD_WM8350_I2C is not set
683# CONFIG_REGULATOR is not set
670 684
671# 685#
672# Multimedia devices 686# Multimedia devices
@@ -693,15 +707,16 @@ CONFIG_FB=m
693# CONFIG_FIRMWARE_EDID is not set 707# CONFIG_FIRMWARE_EDID is not set
694# CONFIG_FB_DDC is not set 708# CONFIG_FB_DDC is not set
695# CONFIG_FB_BOOT_VESA_SUPPORT is not set 709# CONFIG_FB_BOOT_VESA_SUPPORT is not set
696CONFIG_FB_CFB_FILLRECT=m 710# CONFIG_FB_CFB_FILLRECT is not set
697CONFIG_FB_CFB_COPYAREA=m 711# CONFIG_FB_CFB_COPYAREA is not set
698CONFIG_FB_CFB_IMAGEBLIT=m 712# CONFIG_FB_CFB_IMAGEBLIT is not set
699# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 713# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
700# CONFIG_FB_SYS_FILLRECT is not set 714CONFIG_FB_SYS_FILLRECT=m
701# CONFIG_FB_SYS_COPYAREA is not set 715CONFIG_FB_SYS_COPYAREA=m
702# CONFIG_FB_SYS_IMAGEBLIT is not set 716CONFIG_FB_SYS_IMAGEBLIT=m
703# CONFIG_FB_FOREIGN_ENDIAN is not set 717# CONFIG_FB_FOREIGN_ENDIAN is not set
704# CONFIG_FB_SYS_FOPS is not set 718CONFIG_FB_SYS_FOPS=m
719CONFIG_FB_DEFERRED_IO=y
705# CONFIG_FB_SVGALIB is not set 720# CONFIG_FB_SVGALIB is not set
706# CONFIG_FB_MACMODES is not set 721# CONFIG_FB_MACMODES is not set
707# CONFIG_FB_BACKLIGHT is not set 722# CONFIG_FB_BACKLIGHT is not set
@@ -716,6 +731,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m
716# CONFIG_FB_SH7760 is not set 731# CONFIG_FB_SH7760 is not set
717# CONFIG_FB_VIRTUAL is not set 732# CONFIG_FB_VIRTUAL is not set
718# CONFIG_FB_METRONOME is not set 733# CONFIG_FB_METRONOME is not set
734# CONFIG_FB_MB862XX is not set
719# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 735# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
720 736
721# 737#
@@ -737,6 +753,7 @@ CONFIG_SND_PCM=y
737# CONFIG_SND_SEQUENCER is not set 753# CONFIG_SND_SEQUENCER is not set
738# CONFIG_SND_MIXER_OSS is not set 754# CONFIG_SND_MIXER_OSS is not set
739# CONFIG_SND_PCM_OSS is not set 755# CONFIG_SND_PCM_OSS is not set
756# CONFIG_SND_HRTIMER is not set
740# CONFIG_SND_DYNAMIC_MINORS is not set 757# CONFIG_SND_DYNAMIC_MINORS is not set
741# CONFIG_SND_SUPPORT_OLD_API is not set 758# CONFIG_SND_SUPPORT_OLD_API is not set
742# CONFIG_SND_VERBOSE_PROCFS is not set 759# CONFIG_SND_VERBOSE_PROCFS is not set
@@ -753,6 +770,7 @@ CONFIG_SND_SOC=y
753# 770#
754# SoC Audio support for SuperH 771# SoC Audio support for SuperH
755# 772#
773CONFIG_SND_SOC_I2C_AND_SPI=y
756# CONFIG_SND_SOC_ALL_CODECS is not set 774# CONFIG_SND_SOC_ALL_CODECS is not set
757# CONFIG_SOUND_PRIME is not set 775# CONFIG_SOUND_PRIME is not set
758# CONFIG_HID_SUPPORT is not set 776# CONFIG_HID_SUPPORT is not set
@@ -823,10 +841,7 @@ CONFIG_TMPFS_POSIX_ACL=y
823# CONFIG_HUGETLBFS is not set 841# CONFIG_HUGETLBFS is not set
824# CONFIG_HUGETLB_PAGE is not set 842# CONFIG_HUGETLB_PAGE is not set
825# CONFIG_CONFIGFS_FS is not set 843# CONFIG_CONFIGFS_FS is not set
826 844CONFIG_MISC_FILESYSTEMS=y
827#
828# Miscellaneous filesystems
829#
830# CONFIG_ADFS_FS is not set 845# CONFIG_ADFS_FS is not set
831# CONFIG_AFFS_FS is not set 846# CONFIG_AFFS_FS is not set
832# CONFIG_HFS_FS is not set 847# CONFIG_HFS_FS is not set
@@ -950,6 +965,7 @@ CONFIG_DEBUG_INFO=y
950# CONFIG_DEBUG_MEMORY_INIT is not set 965# CONFIG_DEBUG_MEMORY_INIT is not set
951# CONFIG_DEBUG_LIST is not set 966# CONFIG_DEBUG_LIST is not set
952# CONFIG_DEBUG_SG is not set 967# CONFIG_DEBUG_SG is not set
968# CONFIG_DEBUG_NOTIFIERS is not set
953# CONFIG_FRAME_POINTER is not set 969# CONFIG_FRAME_POINTER is not set
954# CONFIG_RCU_TORTURE_TEST is not set 970# CONFIG_RCU_TORTURE_TEST is not set
955# CONFIG_RCU_CPU_STALL_DETECTOR is not set 971# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -958,17 +974,25 @@ CONFIG_DEBUG_INFO=y
958# CONFIG_FAULT_INJECTION is not set 974# CONFIG_FAULT_INJECTION is not set
959# CONFIG_LATENCYTOP is not set 975# CONFIG_LATENCYTOP is not set
960CONFIG_SYSCTL_SYSCALL_CHECK=y 976CONFIG_SYSCTL_SYSCALL_CHECK=y
961CONFIG_NOP_TRACER=y 977CONFIG_HAVE_FUNCTION_TRACER=y
962CONFIG_HAVE_FTRACE=y 978CONFIG_HAVE_DYNAMIC_FTRACE=y
963# CONFIG_FTRACE is not set 979CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
980
981#
982# Tracers
983#
984# CONFIG_FUNCTION_TRACER is not set
964# CONFIG_IRQSOFF_TRACER is not set 985# CONFIG_IRQSOFF_TRACER is not set
965# CONFIG_PREEMPT_TRACER is not set 986# CONFIG_PREEMPT_TRACER is not set
966# CONFIG_SCHED_TRACER is not set 987# CONFIG_SCHED_TRACER is not set
967# CONFIG_CONTEXT_SWITCH_TRACER is not set 988# CONFIG_CONTEXT_SWITCH_TRACER is not set
968# CONFIG_BOOT_TRACER is not set 989# CONFIG_BOOT_TRACER is not set
990# CONFIG_TRACE_BRANCH_PROFILING is not set
969# CONFIG_STACK_TRACER is not set 991# CONFIG_STACK_TRACER is not set
970# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 992# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
971# CONFIG_SAMPLES is not set 993# CONFIG_SAMPLES is not set
994CONFIG_HAVE_ARCH_KGDB=y
995# CONFIG_KGDB is not set
972# CONFIG_SH_STANDARD_BIOS is not set 996# CONFIG_SH_STANDARD_BIOS is not set
973CONFIG_EARLY_SCIF_CONSOLE=y 997CONFIG_EARLY_SCIF_CONSOLE=y
974CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 998CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
@@ -978,7 +1002,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y
978# CONFIG_DEBUG_STACK_USAGE is not set 1002# CONFIG_DEBUG_STACK_USAGE is not set
979# CONFIG_4KSTACKS is not set 1003# CONFIG_4KSTACKS is not set
980# CONFIG_IRQSTACKS is not set 1004# CONFIG_IRQSTACKS is not set
981# CONFIG_SH_KGDB is not set 1005CONFIG_DUMP_CODE=y
1006# CONFIG_SH_NO_BSS_INIT is not set
1007# CONFIG_MORE_COMPILE_OPTIONS is not set
982 1008
983# 1009#
984# Security options 1010# Security options
@@ -994,7 +1020,11 @@ CONFIG_CRYPTO=y
994# 1020#
995# CONFIG_CRYPTO_FIPS is not set 1021# CONFIG_CRYPTO_FIPS is not set
996CONFIG_CRYPTO_ALGAPI=y 1022CONFIG_CRYPTO_ALGAPI=y
1023CONFIG_CRYPTO_ALGAPI2=y
1024CONFIG_CRYPTO_HASH=y
1025CONFIG_CRYPTO_HASH2=y
997# CONFIG_CRYPTO_MANAGER is not set 1026# CONFIG_CRYPTO_MANAGER is not set
1027# CONFIG_CRYPTO_MANAGER2 is not set
998# CONFIG_CRYPTO_GF128MUL is not set 1028# CONFIG_CRYPTO_GF128MUL is not set
999# CONFIG_CRYPTO_NULL is not set 1029# CONFIG_CRYPTO_NULL is not set
1000# CONFIG_CRYPTO_CRYPTD is not set 1030# CONFIG_CRYPTO_CRYPTD is not set
@@ -1077,6 +1107,7 @@ CONFIG_CRYPTO_HW=y
1077# Library routines 1107# Library routines
1078# 1108#
1079CONFIG_BITREVERSE=y 1109CONFIG_BITREVERSE=y
1110CONFIG_GENERIC_FIND_LAST_BIT=y
1080# CONFIG_CRC_CCITT is not set 1111# CONFIG_CRC_CCITT is not set
1081# CONFIG_CRC16 is not set 1112# CONFIG_CRC16 is not set
1082# CONFIG_CRC_T10DIF is not set 1113# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/hp6xx_defconfig b/arch/sh/configs/hp6xx_defconfig
index 1032b235f080..847a25106635 100644
--- a/arch/sh/configs/hp6xx_defconfig
+++ b/arch/sh/configs/hp6xx_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:23:53 2008 4# Fri Jan 9 16:56:55 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,7 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_SYS_SUPPORTS_PM=y 19CONFIG_ARCH_SUSPEND_POSSIBLE=y
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
20CONFIG_SYS_SUPPORTS_APM_EMULATION=y 21CONFIG_SYS_SUPPORTS_APM_EMULATION=y
21CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
22CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -70,12 +71,10 @@ CONFIG_EVENTFD=y
70CONFIG_SHMEM=y 71CONFIG_SHMEM=y
71CONFIG_AIO=y 72CONFIG_AIO=y
72CONFIG_VM_EVENT_COUNTERS=y 73CONFIG_VM_EVENT_COUNTERS=y
73CONFIG_PCI_QUIRKS=y
74CONFIG_SLAB=y 74CONFIG_SLAB=y
75# CONFIG_SLUB is not set 75# CONFIG_SLUB is not set
76# CONFIG_SLOB is not set 76# CONFIG_SLOB is not set
77# CONFIG_PROFILING is not set 77# CONFIG_PROFILING is not set
78# CONFIG_MARKERS is not set
79CONFIG_HAVE_OPROFILE=y 78CONFIG_HAVE_OPROFILE=y
80CONFIG_HAVE_IOREMAP_PROT=y 79CONFIG_HAVE_IOREMAP_PROT=y
81CONFIG_HAVE_KPROBES=y 80CONFIG_HAVE_KPROBES=y
@@ -85,13 +84,11 @@ CONFIG_HAVE_CLK=y
85CONFIG_HAVE_GENERIC_DMA_COHERENT=y 84CONFIG_HAVE_GENERIC_DMA_COHERENT=y
86CONFIG_SLABINFO=y 85CONFIG_SLABINFO=y
87CONFIG_RT_MUTEXES=y 86CONFIG_RT_MUTEXES=y
88# CONFIG_TINY_SHMEM is not set
89CONFIG_BASE_SMALL=0 87CONFIG_BASE_SMALL=0
90# CONFIG_MODULES is not set 88# CONFIG_MODULES is not set
91CONFIG_BLOCK=y 89CONFIG_BLOCK=y
92# CONFIG_LBD is not set 90# CONFIG_LBD is not set
93# CONFIG_BLK_DEV_IO_TRACE is not set 91# CONFIG_BLK_DEV_IO_TRACE is not set
94# CONFIG_LSF is not set
95# CONFIG_BLK_DEV_BSG is not set 92# CONFIG_BLK_DEV_BSG is not set
96# CONFIG_BLK_DEV_INTEGRITY is not set 93# CONFIG_BLK_DEV_INTEGRITY is not set
97 94
@@ -108,6 +105,10 @@ CONFIG_DEFAULT_AS=y
108# CONFIG_DEFAULT_NOOP is not set 105# CONFIG_DEFAULT_NOOP is not set
109CONFIG_DEFAULT_IOSCHED="anticipatory" 106CONFIG_DEFAULT_IOSCHED="anticipatory"
110CONFIG_CLASSIC_RCU=y 107CONFIG_CLASSIC_RCU=y
108# CONFIG_TREE_RCU is not set
109# CONFIG_PREEMPT_RCU is not set
110# CONFIG_TREE_RCU_TRACE is not set
111# CONFIG_PREEMPT_RCU_TRACE is not set
111CONFIG_FREEZER=y 112CONFIG_FREEZER=y
112 113
113# 114#
@@ -115,6 +116,7 @@ CONFIG_FREEZER=y
115# 116#
116CONFIG_CPU_SH3=y 117CONFIG_CPU_SH3=y
117# CONFIG_CPU_SUBTYPE_SH7619 is not set 118# CONFIG_CPU_SUBTYPE_SH7619 is not set
119# CONFIG_CPU_SUBTYPE_SH7201 is not set
118# CONFIG_CPU_SUBTYPE_SH7203 is not set 120# CONFIG_CPU_SUBTYPE_SH7203 is not set
119# CONFIG_CPU_SUBTYPE_SH7206 is not set 121# CONFIG_CPU_SUBTYPE_SH7206 is not set
120# CONFIG_CPU_SUBTYPE_SH7263 is not set 122# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -178,7 +180,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
178CONFIG_SPARSEMEM_STATIC=y 180CONFIG_SPARSEMEM_STATIC=y
179CONFIG_PAGEFLAGS_EXTENDED=y 181CONFIG_PAGEFLAGS_EXTENDED=y
180CONFIG_SPLIT_PTLOCK_CPUS=4 182CONFIG_SPLIT_PTLOCK_CPUS=4
181# CONFIG_RESOURCES_64BIT is not set
182# CONFIG_PHYS_ADDR_T_64BIT is not set 183# CONFIG_PHYS_ADDR_T_64BIT is not set
183CONFIG_ZONE_DMA_FLAG=0 184CONFIG_ZONE_DMA_FLAG=0
184CONFIG_NR_QUICK=2 185CONFIG_NR_QUICK=2
@@ -236,7 +237,6 @@ CONFIG_NR_ONCHIP_DMA_CHANNELS=4
236# 237#
237CONFIG_HD6446X_SERIES=y 238CONFIG_HD6446X_SERIES=y
238CONFIG_HD64461=y 239CONFIG_HD64461=y
239# CONFIG_HD64465 is not set
240CONFIG_HD64461_IRQ=36 240CONFIG_HD64461_IRQ=36
241CONFIG_HD64461_IOBASE=0xb0000000 241CONFIG_HD64461_IOBASE=0xb0000000
242CONFIG_HD64461_ENABLER=y 242CONFIG_HD64461_ENABLER=y
@@ -275,7 +275,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
275# 275#
276# Bus options 276# Bus options
277# 277#
278CONFIG_ISA=y
279# CONFIG_ARCH_SUPPORTS_MSI is not set 278# CONFIG_ARCH_SUPPORTS_MSI is not set
280CONFIG_PCCARD=y 279CONFIG_PCCARD=y
281# CONFIG_PCMCIA_DEBUG is not set 280# CONFIG_PCMCIA_DEBUG is not set
@@ -286,9 +285,6 @@ CONFIG_PCMCIA_IOCTL=y
286# 285#
287# PC-card bridges 286# PC-card bridges
288# 287#
289# CONFIG_I82365 is not set
290# CONFIG_TCIC is not set
291CONFIG_PCMCIA_PROBE=y
292 288
293# 289#
294# Executable file formats 290# Executable file formats
@@ -301,13 +297,13 @@ CONFIG_BINFMT_ELF=y
301# 297#
302# Power management options (EXPERIMENTAL) 298# Power management options (EXPERIMENTAL)
303# 299#
304CONFIG_ARCH_SUSPEND_POSSIBLE=y
305CONFIG_PM=y 300CONFIG_PM=y
306# CONFIG_PM_DEBUG is not set 301# CONFIG_PM_DEBUG is not set
307CONFIG_PM_SLEEP=y 302CONFIG_PM_SLEEP=y
308CONFIG_SUSPEND=y 303CONFIG_SUSPEND=y
309CONFIG_SUSPEND_FREEZER=y 304CONFIG_SUSPEND_FREEZER=y
310CONFIG_APM_EMULATION=y 305CONFIG_APM_EMULATION=y
306# CONFIG_CPU_IDLE is not set
311# CONFIG_NET is not set 307# CONFIG_NET is not set
312 308
313# 309#
@@ -326,7 +322,6 @@ CONFIG_EXTRA_FIRMWARE=""
326# CONFIG_SYS_HYPERVISOR is not set 322# CONFIG_SYS_HYPERVISOR is not set
327# CONFIG_MTD is not set 323# CONFIG_MTD is not set
328# CONFIG_PARPORT is not set 324# CONFIG_PARPORT is not set
329# CONFIG_PNP is not set
330CONFIG_BLK_DEV=y 325CONFIG_BLK_DEV=y
331# CONFIG_BLK_DEV_COW_COMMON is not set 326# CONFIG_BLK_DEV_COW_COMMON is not set
332# CONFIG_BLK_DEV_LOOP is not set 327# CONFIG_BLK_DEV_LOOP is not set
@@ -336,6 +331,7 @@ CONFIG_BLK_DEV=y
336CONFIG_MISC_DEVICES=y 331CONFIG_MISC_DEVICES=y
337# CONFIG_EEPROM_93CX6 is not set 332# CONFIG_EEPROM_93CX6 is not set
338# CONFIG_ENCLOSURE_SERVICES is not set 333# CONFIG_ENCLOSURE_SERVICES is not set
334# CONFIG_C2PORT is not set
339CONFIG_HAVE_IDE=y 335CONFIG_HAVE_IDE=y
340# CONFIG_IDE is not set 336# CONFIG_IDE is not set
341 337
@@ -375,18 +371,7 @@ CONFIG_BLK_DEV_SD=y
375# CONFIG_SCSI_SAS_LIBSAS is not set 371# CONFIG_SCSI_SAS_LIBSAS is not set
376# CONFIG_SCSI_SRP_ATTRS is not set 372# CONFIG_SCSI_SRP_ATTRS is not set
377CONFIG_SCSI_LOWLEVEL=y 373CONFIG_SCSI_LOWLEVEL=y
378# CONFIG_SCSI_AHA152X is not set 374# CONFIG_LIBFC is not set
379# CONFIG_SCSI_AIC7XXX_OLD is not set
380# CONFIG_SCSI_IN2000 is not set
381# CONFIG_SCSI_DTC3280 is not set
382# CONFIG_SCSI_FUTURE_DOMAIN is not set
383# CONFIG_SCSI_GENERIC_NCR5380 is not set
384# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
385# CONFIG_SCSI_NCR53C406A is not set
386# CONFIG_SCSI_PAS16 is not set
387# CONFIG_SCSI_QLOGIC_FAS is not set
388# CONFIG_SCSI_SYM53C416 is not set
389# CONFIG_SCSI_T128 is not set
390# CONFIG_SCSI_DEBUG is not set 375# CONFIG_SCSI_DEBUG is not set
391# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 376# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
392# CONFIG_SCSI_DH is not set 377# CONFIG_SCSI_DH is not set
@@ -395,10 +380,7 @@ CONFIG_ATA=y
395CONFIG_SATA_PMP=y 380CONFIG_SATA_PMP=y
396CONFIG_ATA_SFF=y 381CONFIG_ATA_SFF=y
397# CONFIG_SATA_MV is not set 382# CONFIG_SATA_MV is not set
398# CONFIG_PATA_LEGACY is not set
399# CONFIG_PATA_PCMCIA is not set 383# CONFIG_PATA_PCMCIA is not set
400# CONFIG_PATA_QDI is not set
401# CONFIG_PATA_WINBOND_VLB is not set
402CONFIG_PATA_PLATFORM=y 384CONFIG_PATA_PLATFORM=y
403# CONFIG_MD is not set 385# CONFIG_MD is not set
404# CONFIG_PHONE is not set 386# CONFIG_PHONE is not set
@@ -438,11 +420,11 @@ CONFIG_INPUT_TOUCHSCREEN=y
438# CONFIG_TOUCHSCREEN_FUJITSU is not set 420# CONFIG_TOUCHSCREEN_FUJITSU is not set
439# CONFIG_TOUCHSCREEN_GUNZE is not set 421# CONFIG_TOUCHSCREEN_GUNZE is not set
440# CONFIG_TOUCHSCREEN_ELO is not set 422# CONFIG_TOUCHSCREEN_ELO is not set
423# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
441# CONFIG_TOUCHSCREEN_MTOUCH is not set 424# CONFIG_TOUCHSCREEN_MTOUCH is not set
442# CONFIG_TOUCHSCREEN_INEXIO is not set 425# CONFIG_TOUCHSCREEN_INEXIO is not set
443# CONFIG_TOUCHSCREEN_MK712 is not set 426# CONFIG_TOUCHSCREEN_MK712 is not set
444CONFIG_TOUCHSCREEN_HP600=y 427CONFIG_TOUCHSCREEN_HP600=y
445# CONFIG_TOUCHSCREEN_HTCPEN is not set
446# CONFIG_TOUCHSCREEN_PENMOUNT is not set 428# CONFIG_TOUCHSCREEN_PENMOUNT is not set
447# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set 429# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
448# CONFIG_TOUCHSCREEN_TOUCHWIN is not set 430# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
@@ -484,11 +466,11 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
484CONFIG_SERIAL_CORE=y 466CONFIG_SERIAL_CORE=y
485CONFIG_SERIAL_CORE_CONSOLE=y 467CONFIG_SERIAL_CORE_CONSOLE=y
486CONFIG_UNIX98_PTYS=y 468CONFIG_UNIX98_PTYS=y
469# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
487CONFIG_LEGACY_PTYS=y 470CONFIG_LEGACY_PTYS=y
488CONFIG_LEGACY_PTY_COUNT=64 471CONFIG_LEGACY_PTY_COUNT=64
489# CONFIG_IPMI_HANDLER is not set 472# CONFIG_IPMI_HANDLER is not set
490CONFIG_HW_RANDOM=y 473CONFIG_HW_RANDOM=y
491# CONFIG_DTLK is not set
492# CONFIG_R3964 is not set 474# CONFIG_R3964 is not set
493 475
494# 476#
@@ -499,7 +481,6 @@ CONFIG_HW_RANDOM=y
499# CONFIG_CARDMAN_4040 is not set 481# CONFIG_CARDMAN_4040 is not set
500# CONFIG_RAW_DRIVER is not set 482# CONFIG_RAW_DRIVER is not set
501# CONFIG_TCG_TPM is not set 483# CONFIG_TCG_TPM is not set
502CONFIG_DEVPORT=y
503# CONFIG_I2C is not set 484# CONFIG_I2C is not set
504# CONFIG_SPI is not set 485# CONFIG_SPI is not set
505# CONFIG_W1 is not set 486# CONFIG_W1 is not set
@@ -508,11 +489,11 @@ CONFIG_DEVPORT=y
508# CONFIG_THERMAL is not set 489# CONFIG_THERMAL is not set
509# CONFIG_THERMAL_HWMON is not set 490# CONFIG_THERMAL_HWMON is not set
510# CONFIG_WATCHDOG is not set 491# CONFIG_WATCHDOG is not set
492CONFIG_SSB_POSSIBLE=y
511 493
512# 494#
513# Sonics Silicon Backplane 495# Sonics Silicon Backplane
514# 496#
515CONFIG_SSB_POSSIBLE=y
516# CONFIG_SSB is not set 497# CONFIG_SSB is not set
517 498
518# 499#
@@ -522,7 +503,7 @@ CONFIG_SSB_POSSIBLE=y
522# CONFIG_MFD_SM501 is not set 503# CONFIG_MFD_SM501 is not set
523# CONFIG_HTC_PASIC3 is not set 504# CONFIG_HTC_PASIC3 is not set
524# CONFIG_MFD_TMIO is not set 505# CONFIG_MFD_TMIO is not set
525# CONFIG_MFD_WM8400 is not set 506# CONFIG_REGULATOR is not set
526 507
527# 508#
528# Multimedia devices 509# Multimedia devices
@@ -552,11 +533,12 @@ CONFIG_FB_CFB_FILLRECT=y
552CONFIG_FB_CFB_COPYAREA=y 533CONFIG_FB_CFB_COPYAREA=y
553CONFIG_FB_CFB_IMAGEBLIT=y 534CONFIG_FB_CFB_IMAGEBLIT=y
554# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 535# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
555# CONFIG_FB_SYS_FILLRECT is not set 536CONFIG_FB_SYS_FILLRECT=y
556# CONFIG_FB_SYS_COPYAREA is not set 537CONFIG_FB_SYS_COPYAREA=y
557# CONFIG_FB_SYS_IMAGEBLIT is not set 538CONFIG_FB_SYS_IMAGEBLIT=y
558# CONFIG_FB_FOREIGN_ENDIAN is not set 539# CONFIG_FB_FOREIGN_ENDIAN is not set
559# CONFIG_FB_SYS_FOPS is not set 540CONFIG_FB_SYS_FOPS=y
541CONFIG_FB_DEFERRED_IO=y
560# CONFIG_FB_SVGALIB is not set 542# CONFIG_FB_SVGALIB is not set
561# CONFIG_FB_MACMODES is not set 543# CONFIG_FB_MACMODES is not set
562# CONFIG_FB_BACKLIGHT is not set 544# CONFIG_FB_BACKLIGHT is not set
@@ -571,6 +553,7 @@ CONFIG_FB_HIT=y
571CONFIG_FB_SH_MOBILE_LCDC=y 553CONFIG_FB_SH_MOBILE_LCDC=y
572# CONFIG_FB_VIRTUAL is not set 554# CONFIG_FB_VIRTUAL is not set
573# CONFIG_FB_METRONOME is not set 555# CONFIG_FB_METRONOME is not set
556# CONFIG_FB_MB862XX is not set
574CONFIG_BACKLIGHT_LCD_SUPPORT=y 557CONFIG_BACKLIGHT_LCD_SUPPORT=y
575CONFIG_LCD_CLASS_DEVICE=y 558CONFIG_LCD_CLASS_DEVICE=y
576# CONFIG_LCD_ILI9320 is not set 559# CONFIG_LCD_ILI9320 is not set
@@ -587,7 +570,6 @@ CONFIG_BACKLIGHT_HP680=y
587# 570#
588# Console display driver support 571# Console display driver support
589# 572#
590# CONFIG_MDA_CONSOLE is not set
591CONFIG_DUMMY_CONSOLE=y 573CONFIG_DUMMY_CONSOLE=y
592CONFIG_FRAMEBUFFER_CONSOLE=y 574CONFIG_FRAMEBUFFER_CONSOLE=y
593# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set 575# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
@@ -701,10 +683,7 @@ CONFIG_SYSFS=y
701# CONFIG_HUGETLBFS is not set 683# CONFIG_HUGETLBFS is not set
702# CONFIG_HUGETLB_PAGE is not set 684# CONFIG_HUGETLB_PAGE is not set
703# CONFIG_CONFIGFS_FS is not set 685# CONFIG_CONFIGFS_FS is not set
704 686CONFIG_MISC_FILESYSTEMS=y
705#
706# Miscellaneous filesystems
707#
708# CONFIG_ADFS_FS is not set 687# CONFIG_ADFS_FS is not set
709# CONFIG_AFFS_FS is not set 688# CONFIG_AFFS_FS is not set
710# CONFIG_HFS_FS is not set 689# CONFIG_HFS_FS is not set
@@ -785,13 +764,19 @@ CONFIG_FRAME_WARN=1024
785# CONFIG_DEBUG_MEMORY_INIT is not set 764# CONFIG_DEBUG_MEMORY_INIT is not set
786# CONFIG_RCU_CPU_STALL_DETECTOR is not set 765# CONFIG_RCU_CPU_STALL_DETECTOR is not set
787# CONFIG_LATENCYTOP is not set 766# CONFIG_LATENCYTOP is not set
788CONFIG_NOP_TRACER=y 767CONFIG_HAVE_FUNCTION_TRACER=y
789CONFIG_HAVE_FTRACE=y 768CONFIG_HAVE_DYNAMIC_FTRACE=y
769CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
770
771#
772# Tracers
773#
790# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 774# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
791# CONFIG_SAMPLES is not set 775# CONFIG_SAMPLES is not set
776CONFIG_HAVE_ARCH_KGDB=y
792# CONFIG_SH_STANDARD_BIOS is not set 777# CONFIG_SH_STANDARD_BIOS is not set
793# CONFIG_EARLY_SCIF_CONSOLE is not set 778# CONFIG_EARLY_SCIF_CONSOLE is not set
794# CONFIG_SH_KGDB is not set 779# CONFIG_MORE_COMPILE_OPTIONS is not set
795 780
796# 781#
797# Security options 782# Security options
@@ -807,11 +792,15 @@ CONFIG_CRYPTO=y
807# 792#
808# CONFIG_CRYPTO_FIPS is not set 793# CONFIG_CRYPTO_FIPS is not set
809CONFIG_CRYPTO_ALGAPI=y 794CONFIG_CRYPTO_ALGAPI=y
810CONFIG_CRYPTO_AEAD=y 795CONFIG_CRYPTO_ALGAPI2=y
796CONFIG_CRYPTO_AEAD2=y
811CONFIG_CRYPTO_BLKCIPHER=y 797CONFIG_CRYPTO_BLKCIPHER=y
798CONFIG_CRYPTO_BLKCIPHER2=y
812CONFIG_CRYPTO_HASH=y 799CONFIG_CRYPTO_HASH=y
813CONFIG_CRYPTO_RNG=y 800CONFIG_CRYPTO_HASH2=y
801CONFIG_CRYPTO_RNG2=y
814CONFIG_CRYPTO_MANAGER=y 802CONFIG_CRYPTO_MANAGER=y
803CONFIG_CRYPTO_MANAGER2=y
815# CONFIG_CRYPTO_GF128MUL is not set 804# CONFIG_CRYPTO_GF128MUL is not set
816# CONFIG_CRYPTO_NULL is not set 805# CONFIG_CRYPTO_NULL is not set
817# CONFIG_CRYPTO_CRYPTD is not set 806# CONFIG_CRYPTO_CRYPTD is not set
@@ -893,6 +882,7 @@ CONFIG_CRYPTO_MD5=y
893# Library routines 882# Library routines
894# 883#
895CONFIG_BITREVERSE=y 884CONFIG_BITREVERSE=y
885CONFIG_GENERIC_FIND_LAST_BIT=y
896# CONFIG_CRC_CCITT is not set 886# CONFIG_CRC_CCITT is not set
897CONFIG_CRC16=y 887CONFIG_CRC16=y
898CONFIG_CRC_T10DIF=y 888CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/landisk_defconfig b/arch/sh/configs/landisk_defconfig
index b82dfb4da3aa..d3bbbb037716 100644
--- a/arch/sh/configs/landisk_defconfig
+++ b/arch/sh/configs/landisk_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:25:51 2008 4# Fri Jan 9 16:58:46 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -76,7 +78,6 @@ CONFIG_SLAB=y
76# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
77# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
78# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
79# CONFIG_MARKERS is not set
80CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
81# CONFIG_KPROBES is not set 82# CONFIG_KPROBES is not set
82CONFIG_HAVE_IOREMAP_PROT=y 83CONFIG_HAVE_IOREMAP_PROT=y
@@ -87,7 +88,6 @@ CONFIG_HAVE_CLK=y
87CONFIG_HAVE_GENERIC_DMA_COHERENT=y 88CONFIG_HAVE_GENERIC_DMA_COHERENT=y
88CONFIG_SLABINFO=y 89CONFIG_SLABINFO=y
89CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
90# CONFIG_TINY_SHMEM is not set
91CONFIG_BASE_SMALL=0 91CONFIG_BASE_SMALL=0
92CONFIG_MODULES=y 92CONFIG_MODULES=y
93# CONFIG_MODULE_FORCE_LOAD is not set 93# CONFIG_MODULE_FORCE_LOAD is not set
@@ -95,11 +95,9 @@ CONFIG_MODULE_UNLOAD=y
95CONFIG_MODULE_FORCE_UNLOAD=y 95CONFIG_MODULE_FORCE_UNLOAD=y
96# CONFIG_MODVERSIONS is not set 96# CONFIG_MODVERSIONS is not set
97# CONFIG_MODULE_SRCVERSION_ALL is not set 97# CONFIG_MODULE_SRCVERSION_ALL is not set
98CONFIG_KMOD=y
99CONFIG_BLOCK=y 98CONFIG_BLOCK=y
100# CONFIG_LBD is not set 99# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 100# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set
103# CONFIG_BLK_DEV_BSG is not set 101# CONFIG_BLK_DEV_BSG is not set
104# CONFIG_BLK_DEV_INTEGRITY is not set 102# CONFIG_BLK_DEV_INTEGRITY is not set
105 103
@@ -116,6 +114,10 @@ CONFIG_DEFAULT_AS=y
116# CONFIG_DEFAULT_NOOP is not set 114# CONFIG_DEFAULT_NOOP is not set
117CONFIG_DEFAULT_IOSCHED="anticipatory" 115CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y 116CONFIG_CLASSIC_RCU=y
117# CONFIG_TREE_RCU is not set
118# CONFIG_PREEMPT_RCU is not set
119# CONFIG_TREE_RCU_TRACE is not set
120# CONFIG_PREEMPT_RCU_TRACE is not set
119# CONFIG_FREEZER is not set 121# CONFIG_FREEZER is not set
120 122
121# 123#
@@ -123,6 +125,7 @@ CONFIG_CLASSIC_RCU=y
123# 125#
124CONFIG_CPU_SH4=y 126CONFIG_CPU_SH4=y
125# CONFIG_CPU_SUBTYPE_SH7619 is not set 127# CONFIG_CPU_SUBTYPE_SH7619 is not set
128# CONFIG_CPU_SUBTYPE_SH7201 is not set
126# CONFIG_CPU_SUBTYPE_SH7203 is not set 129# CONFIG_CPU_SUBTYPE_SH7203 is not set
127# CONFIG_CPU_SUBTYPE_SH7206 is not set 130# CONFIG_CPU_SUBTYPE_SH7206 is not set
128# CONFIG_CPU_SUBTYPE_SH7263 is not set 131# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -186,7 +189,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
186CONFIG_SPARSEMEM_STATIC=y 189CONFIG_SPARSEMEM_STATIC=y
187CONFIG_PAGEFLAGS_EXTENDED=y 190CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 191CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set 192# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0 193CONFIG_ZONE_DMA_FLAG=0
192CONFIG_NR_QUICK=2 194CONFIG_NR_QUICK=2
@@ -285,6 +287,7 @@ CONFIG_PCI=y
285CONFIG_SH_PCIDMA_NONCOHERENT=y 287CONFIG_SH_PCIDMA_NONCOHERENT=y
286CONFIG_PCI_AUTO=y 288CONFIG_PCI_AUTO=y
287CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 289CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
290# CONFIG_PCIEPORTBUS is not set
288# CONFIG_ARCH_SUPPORTS_MSI is not set 291# CONFIG_ARCH_SUPPORTS_MSI is not set
289CONFIG_PCI_LEGACY=y 292CONFIG_PCI_LEGACY=y
290CONFIG_PCCARD=y 293CONFIG_PCCARD=y
@@ -315,11 +318,18 @@ CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 318# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set 319# CONFIG_HAVE_AOUT is not set
317# CONFIG_BINFMT_MISC is not set 320# CONFIG_BINFMT_MISC is not set
321
322#
323# Power management options (EXPERIMENTAL)
324#
325# CONFIG_PM is not set
326# CONFIG_CPU_IDLE is not set
318CONFIG_NET=y 327CONFIG_NET=y
319 328
320# 329#
321# Networking options 330# Networking options
322# 331#
332CONFIG_COMPAT_NET_DEV_OPS=y
323CONFIG_PACKET=y 333CONFIG_PACKET=y
324# CONFIG_PACKET_MMAP is not set 334# CONFIG_PACKET_MMAP is not set
325CONFIG_UNIX=y 335CONFIG_UNIX=y
@@ -401,6 +411,7 @@ CONFIG_ATALK=m
401# CONFIG_ECONET is not set 411# CONFIG_ECONET is not set
402# CONFIG_WAN_ROUTER is not set 412# CONFIG_WAN_ROUTER is not set
403# CONFIG_NET_SCHED is not set 413# CONFIG_NET_SCHED is not set
414# CONFIG_DCB is not set
404 415
405# 416#
406# Network testing 417# Network testing
@@ -416,8 +427,8 @@ CONFIG_WIRELESS=y
416# CONFIG_CFG80211 is not set 427# CONFIG_CFG80211 is not set
417# CONFIG_WIRELESS_OLD_REGULATORY is not set 428# CONFIG_WIRELESS_OLD_REGULATORY is not set
418# CONFIG_WIRELESS_EXT is not set 429# CONFIG_WIRELESS_EXT is not set
430# CONFIG_LIB80211 is not set
419# CONFIG_MAC80211 is not set 431# CONFIG_MAC80211 is not set
420# CONFIG_IEEE80211 is not set
421# CONFIG_RFKILL is not set 432# CONFIG_RFKILL is not set
422# CONFIG_NET_9P is not set 433# CONFIG_NET_9P is not set
423 434
@@ -462,6 +473,7 @@ CONFIG_MISC_DEVICES=y
462# CONFIG_TIFM_CORE is not set 473# CONFIG_TIFM_CORE is not set
463# CONFIG_ENCLOSURE_SERVICES is not set 474# CONFIG_ENCLOSURE_SERVICES is not set
464# CONFIG_HP_ILO is not set 475# CONFIG_HP_ILO is not set
476# CONFIG_C2PORT is not set
465CONFIG_HAVE_IDE=y 477CONFIG_HAVE_IDE=y
466CONFIG_IDE=y 478CONFIG_IDE=y
467 479
@@ -478,7 +490,6 @@ CONFIG_IDE_GD_ATA=y
478CONFIG_BLK_DEV_IDECD=y 490CONFIG_BLK_DEV_IDECD=y
479CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 491CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
480# CONFIG_BLK_DEV_IDETAPE is not set 492# CONFIG_BLK_DEV_IDETAPE is not set
481CONFIG_BLK_DEV_IDESCSI=y
482# CONFIG_IDE_TASK_IOCTL is not set 493# CONFIG_IDE_TASK_IOCTL is not set
483CONFIG_IDE_PROC_FS=y 494CONFIG_IDE_PROC_FS=y
484 495
@@ -508,6 +519,7 @@ CONFIG_BLK_DEV_AEC62XX=y
508# CONFIG_BLK_DEV_JMICRON is not set 519# CONFIG_BLK_DEV_JMICRON is not set
509# CONFIG_BLK_DEV_SC1200 is not set 520# CONFIG_BLK_DEV_SC1200 is not set
510# CONFIG_BLK_DEV_PIIX is not set 521# CONFIG_BLK_DEV_PIIX is not set
522# CONFIG_BLK_DEV_IT8172 is not set
511# CONFIG_BLK_DEV_IT8213 is not set 523# CONFIG_BLK_DEV_IT8213 is not set
512# CONFIG_BLK_DEV_IT821X is not set 524# CONFIG_BLK_DEV_IT821X is not set
513# CONFIG_BLK_DEV_NS87415 is not set 525# CONFIG_BLK_DEV_NS87415 is not set
@@ -560,6 +572,7 @@ CONFIG_SCSI_WAIT_SCAN=m
560# CONFIG_SCSI_SRP_ATTRS is not set 572# CONFIG_SCSI_SRP_ATTRS is not set
561CONFIG_SCSI_LOWLEVEL=y 573CONFIG_SCSI_LOWLEVEL=y
562# CONFIG_ISCSI_TCP is not set 574# CONFIG_ISCSI_TCP is not set
575# CONFIG_SCSI_CXGB3_ISCSI is not set
563# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 576# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
564# CONFIG_SCSI_3W_9XXX is not set 577# CONFIG_SCSI_3W_9XXX is not set
565# CONFIG_SCSI_ACARD is not set 578# CONFIG_SCSI_ACARD is not set
@@ -573,6 +586,8 @@ CONFIG_SCSI_LOWLEVEL=y
573# CONFIG_MEGARAID_LEGACY is not set 586# CONFIG_MEGARAID_LEGACY is not set
574# CONFIG_MEGARAID_SAS is not set 587# CONFIG_MEGARAID_SAS is not set
575# CONFIG_SCSI_HPTIOP is not set 588# CONFIG_SCSI_HPTIOP is not set
589# CONFIG_LIBFC is not set
590# CONFIG_FCOE is not set
576# CONFIG_SCSI_DMX3191D is not set 591# CONFIG_SCSI_DMX3191D is not set
577# CONFIG_SCSI_FUTURE_DOMAIN is not set 592# CONFIG_SCSI_FUTURE_DOMAIN is not set
578# CONFIG_SCSI_IPS is not set 593# CONFIG_SCSI_IPS is not set
@@ -634,6 +649,7 @@ CONFIG_MII=y
634# CONFIG_NET_VENDOR_3COM is not set 649# CONFIG_NET_VENDOR_3COM is not set
635# CONFIG_SMC91X is not set 650# CONFIG_SMC91X is not set
636# CONFIG_SMC911X is not set 651# CONFIG_SMC911X is not set
652# CONFIG_SMSC911X is not set
637# CONFIG_NET_TULIP is not set 653# CONFIG_NET_TULIP is not set
638# CONFIG_HP100 is not set 654# CONFIG_HP100 is not set
639# CONFIG_IBM_NEW_EMAC_ZMII is not set 655# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -649,7 +665,6 @@ CONFIG_NET_PCI=y
649# CONFIG_ADAPTEC_STARFIRE is not set 665# CONFIG_ADAPTEC_STARFIRE is not set
650# CONFIG_B44 is not set 666# CONFIG_B44 is not set
651# CONFIG_FORCEDETH is not set 667# CONFIG_FORCEDETH is not set
652# CONFIG_EEPRO100 is not set
653# CONFIG_E100 is not set 668# CONFIG_E100 is not set
654# CONFIG_FEALNX is not set 669# CONFIG_FEALNX is not set
655# CONFIG_NATSEMI is not set 670# CONFIG_NATSEMI is not set
@@ -659,6 +674,7 @@ CONFIG_8139CP=y
659# CONFIG_R6040 is not set 674# CONFIG_R6040 is not set
660# CONFIG_SIS900 is not set 675# CONFIG_SIS900 is not set
661# CONFIG_EPIC100 is not set 676# CONFIG_EPIC100 is not set
677# CONFIG_SMSC9420 is not set
662# CONFIG_SUNDANCE is not set 678# CONFIG_SUNDANCE is not set
663# CONFIG_TLAN is not set 679# CONFIG_TLAN is not set
664# CONFIG_VIA_RHINE is not set 680# CONFIG_VIA_RHINE is not set
@@ -687,6 +703,7 @@ CONFIG_NETDEV_1000=y
687# CONFIG_JME is not set 703# CONFIG_JME is not set
688CONFIG_NETDEV_10000=y 704CONFIG_NETDEV_10000=y
689# CONFIG_CHELSIO_T1 is not set 705# CONFIG_CHELSIO_T1 is not set
706CONFIG_CHELSIO_T3_DEPENDS=y
690# CONFIG_CHELSIO_T3 is not set 707# CONFIG_CHELSIO_T3 is not set
691# CONFIG_ENIC is not set 708# CONFIG_ENIC is not set
692# CONFIG_IXGBE is not set 709# CONFIG_IXGBE is not set
@@ -695,6 +712,7 @@ CONFIG_NETDEV_10000=y
695# CONFIG_MYRI10GE is not set 712# CONFIG_MYRI10GE is not set
696# CONFIG_NETXEN_NIC is not set 713# CONFIG_NETXEN_NIC is not set
697# CONFIG_NIU is not set 714# CONFIG_NIU is not set
715# CONFIG_MLX4_EN is not set
698# CONFIG_MLX4_CORE is not set 716# CONFIG_MLX4_CORE is not set
699# CONFIG_TEHUTI is not set 717# CONFIG_TEHUTI is not set
700# CONFIG_BNX2X is not set 718# CONFIG_BNX2X is not set
@@ -791,6 +809,7 @@ CONFIG_SERIAL_CORE=y
791CONFIG_SERIAL_CORE_CONSOLE=y 809CONFIG_SERIAL_CORE_CONSOLE=y
792# CONFIG_SERIAL_JSM is not set 810# CONFIG_SERIAL_JSM is not set
793CONFIG_UNIX98_PTYS=y 811CONFIG_UNIX98_PTYS=y
812# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
794CONFIG_LEGACY_PTYS=y 813CONFIG_LEGACY_PTYS=y
795CONFIG_LEGACY_PTY_COUNT=256 814CONFIG_LEGACY_PTY_COUNT=256
796# CONFIG_IPMI_HANDLER is not set 815# CONFIG_IPMI_HANDLER is not set
@@ -832,11 +851,11 @@ CONFIG_HWMON=y
832# CONFIG_THERMAL is not set 851# CONFIG_THERMAL is not set
833# CONFIG_THERMAL_HWMON is not set 852# CONFIG_THERMAL_HWMON is not set
834# CONFIG_WATCHDOG is not set 853# CONFIG_WATCHDOG is not set
854CONFIG_SSB_POSSIBLE=y
835 855
836# 856#
837# Sonics Silicon Backplane 857# Sonics Silicon Backplane
838# 858#
839CONFIG_SSB_POSSIBLE=y
840# CONFIG_SSB is not set 859# CONFIG_SSB is not set
841 860
842# 861#
@@ -846,7 +865,7 @@ CONFIG_SSB_POSSIBLE=y
846# CONFIG_MFD_SM501 is not set 865# CONFIG_MFD_SM501 is not set
847# CONFIG_HTC_PASIC3 is not set 866# CONFIG_HTC_PASIC3 is not set
848# CONFIG_MFD_TMIO is not set 867# CONFIG_MFD_TMIO is not set
849# CONFIG_MFD_WM8400 is not set 868# CONFIG_REGULATOR is not set
850 869
851# 870#
852# Multimedia devices 871# Multimedia devices
@@ -952,11 +971,9 @@ CONFIG_HID_COMPAT=y
952CONFIG_HID_A4TECH=m 971CONFIG_HID_A4TECH=m
953CONFIG_HID_APPLE=m 972CONFIG_HID_APPLE=m
954CONFIG_HID_BELKIN=m 973CONFIG_HID_BELKIN=m
955CONFIG_HID_BRIGHT=m
956CONFIG_HID_CHERRY=m 974CONFIG_HID_CHERRY=m
957CONFIG_HID_CHICONY=m 975CONFIG_HID_CHICONY=m
958CONFIG_HID_CYPRESS=m 976CONFIG_HID_CYPRESS=m
959CONFIG_HID_DELL=m
960CONFIG_HID_EZKEY=m 977CONFIG_HID_EZKEY=m
961CONFIG_HID_GYRATION=m 978CONFIG_HID_GYRATION=m
962CONFIG_HID_LOGITECH=m 979CONFIG_HID_LOGITECH=m
@@ -964,12 +981,15 @@ CONFIG_HID_LOGITECH=m
964# CONFIG_LOGIRUMBLEPAD2_FF is not set 981# CONFIG_LOGIRUMBLEPAD2_FF is not set
965CONFIG_HID_MICROSOFT=m 982CONFIG_HID_MICROSOFT=m
966CONFIG_HID_MONTEREY=m 983CONFIG_HID_MONTEREY=m
984# CONFIG_HID_NTRIG is not set
967CONFIG_HID_PANTHERLORD=m 985CONFIG_HID_PANTHERLORD=m
968# CONFIG_PANTHERLORD_FF is not set 986# CONFIG_PANTHERLORD_FF is not set
969CONFIG_HID_PETALYNX=m 987CONFIG_HID_PETALYNX=m
970CONFIG_HID_SAMSUNG=m 988CONFIG_HID_SAMSUNG=m
971CONFIG_HID_SONY=m 989CONFIG_HID_SONY=m
972CONFIG_HID_SUNPLUS=m 990CONFIG_HID_SUNPLUS=m
991# CONFIG_GREENASIA_FF is not set
992# CONFIG_HID_TOPSEED is not set
973CONFIG_THRUSTMASTER_FF=m 993CONFIG_THRUSTMASTER_FF=m
974CONFIG_ZEROPLUS_FF=m 994CONFIG_ZEROPLUS_FF=m
975CONFIG_USB_SUPPORT=y 995CONFIG_USB_SUPPORT=y
@@ -990,6 +1010,8 @@ CONFIG_USB_DEVICE_CLASS=y
990# CONFIG_USB_OTG_WHITELIST is not set 1010# CONFIG_USB_OTG_WHITELIST is not set
991# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1011# CONFIG_USB_OTG_BLACKLIST_HUB is not set
992CONFIG_USB_MON=y 1012CONFIG_USB_MON=y
1013# CONFIG_USB_WUSB is not set
1014# CONFIG_USB_WUSB_CBAF is not set
993 1015
994# 1016#
995# USB Host Controller Drivers 1017# USB Host Controller Drivers
@@ -1007,6 +1029,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1007# CONFIG_USB_UHCI_HCD is not set 1029# CONFIG_USB_UHCI_HCD is not set
1008# CONFIG_USB_SL811_HCD is not set 1030# CONFIG_USB_SL811_HCD is not set
1009# CONFIG_USB_R8A66597_HCD is not set 1031# CONFIG_USB_R8A66597_HCD is not set
1032# CONFIG_USB_WHCI_HCD is not set
1033# CONFIG_USB_HWA_HCD is not set
1010 1034
1011# 1035#
1012# USB Device Class drivers 1036# USB Device Class drivers
@@ -1017,11 +1041,11 @@ CONFIG_USB_PRINTER=m
1017# CONFIG_USB_TMC is not set 1041# CONFIG_USB_TMC is not set
1018 1042
1019# 1043#
1020# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1044# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1021# 1045#
1022 1046
1023# 1047#
1024# may also be needed; see USB_STORAGE Help for more information 1048# see USB_STORAGE Help for more information
1025# 1049#
1026CONFIG_USB_STORAGE=m 1050CONFIG_USB_STORAGE=m
1027# CONFIG_USB_STORAGE_DEBUG is not set 1051# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1119,6 +1143,7 @@ CONFIG_USB_SISUSBVGA_CON=y
1119# CONFIG_USB_ISIGHTFW is not set 1143# CONFIG_USB_ISIGHTFW is not set
1120# CONFIG_USB_VST is not set 1144# CONFIG_USB_VST is not set
1121# CONFIG_USB_GADGET is not set 1145# CONFIG_USB_GADGET is not set
1146# CONFIG_UWB is not set
1122# CONFIG_MMC is not set 1147# CONFIG_MMC is not set
1123# CONFIG_MEMSTICK is not set 1148# CONFIG_MEMSTICK is not set
1124# CONFIG_NEW_LEDS is not set 1149# CONFIG_NEW_LEDS is not set
@@ -1192,10 +1217,7 @@ CONFIG_TMPFS=y
1192# CONFIG_HUGETLBFS is not set 1217# CONFIG_HUGETLBFS is not set
1193# CONFIG_HUGETLB_PAGE is not set 1218# CONFIG_HUGETLB_PAGE is not set
1194# CONFIG_CONFIGFS_FS is not set 1219# CONFIG_CONFIGFS_FS is not set
1195 1220CONFIG_MISC_FILESYSTEMS=y
1196#
1197# Miscellaneous filesystems
1198#
1199# CONFIG_ADFS_FS is not set 1221# CONFIG_ADFS_FS is not set
1200# CONFIG_AFFS_FS is not set 1222# CONFIG_AFFS_FS is not set
1201# CONFIG_HFS_FS is not set 1223# CONFIG_HFS_FS is not set
@@ -1302,14 +1324,20 @@ CONFIG_FRAME_WARN=1024
1302# CONFIG_DEBUG_MEMORY_INIT is not set 1324# CONFIG_DEBUG_MEMORY_INIT is not set
1303# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1325# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1304# CONFIG_LATENCYTOP is not set 1326# CONFIG_LATENCYTOP is not set
1305CONFIG_NOP_TRACER=y 1327CONFIG_HAVE_FUNCTION_TRACER=y
1306CONFIG_HAVE_FTRACE=y 1328CONFIG_HAVE_DYNAMIC_FTRACE=y
1329CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1330
1331#
1332# Tracers
1333#
1307# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1334# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1308# CONFIG_SAMPLES is not set 1335# CONFIG_SAMPLES is not set
1336CONFIG_HAVE_ARCH_KGDB=y
1309CONFIG_SH_STANDARD_BIOS=y 1337CONFIG_SH_STANDARD_BIOS=y
1310# CONFIG_EARLY_SCIF_CONSOLE is not set 1338# CONFIG_EARLY_SCIF_CONSOLE is not set
1311# CONFIG_EARLY_PRINTK is not set 1339# CONFIG_EARLY_PRINTK is not set
1312# CONFIG_SH_KGDB is not set 1340# CONFIG_MORE_COMPILE_OPTIONS is not set
1313 1341
1314# 1342#
1315# Security options 1343# Security options
@@ -1325,6 +1353,7 @@ CONFIG_CRYPTO=y
1325# 1353#
1326# CONFIG_CRYPTO_FIPS is not set 1354# CONFIG_CRYPTO_FIPS is not set
1327# CONFIG_CRYPTO_MANAGER is not set 1355# CONFIG_CRYPTO_MANAGER is not set
1356# CONFIG_CRYPTO_MANAGER2 is not set
1328# CONFIG_CRYPTO_GF128MUL is not set 1357# CONFIG_CRYPTO_GF128MUL is not set
1329# CONFIG_CRYPTO_NULL is not set 1358# CONFIG_CRYPTO_NULL is not set
1330# CONFIG_CRYPTO_CRYPTD is not set 1359# CONFIG_CRYPTO_CRYPTD is not set
@@ -1408,6 +1437,7 @@ CONFIG_CRYPTO_HW=y
1408# Library routines 1437# Library routines
1409# 1438#
1410CONFIG_BITREVERSE=y 1439CONFIG_BITREVERSE=y
1440CONFIG_GENERIC_FIND_LAST_BIT=y
1411# CONFIG_CRC_CCITT is not set 1441# CONFIG_CRC_CCITT is not set
1412# CONFIG_CRC16 is not set 1442# CONFIG_CRC16 is not set
1413CONFIG_CRC_T10DIF=y 1443CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/lboxre2_defconfig b/arch/sh/configs/lboxre2_defconfig
index c3ecedfc1bc7..d5c5a1dbaa62 100644
--- a/arch/sh/configs/lboxre2_defconfig
+++ b/arch/sh/configs/lboxre2_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:29:42 2008 4# Fri Jan 9 17:02:46 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -76,7 +78,6 @@ CONFIG_SLAB=y
76# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
77# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
78# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
79# CONFIG_MARKERS is not set
80CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
81# CONFIG_KPROBES is not set 82# CONFIG_KPROBES is not set
82CONFIG_HAVE_IOREMAP_PROT=y 83CONFIG_HAVE_IOREMAP_PROT=y
@@ -87,7 +88,6 @@ CONFIG_HAVE_CLK=y
87CONFIG_HAVE_GENERIC_DMA_COHERENT=y 88CONFIG_HAVE_GENERIC_DMA_COHERENT=y
88CONFIG_SLABINFO=y 89CONFIG_SLABINFO=y
89CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
90# CONFIG_TINY_SHMEM is not set
91CONFIG_BASE_SMALL=0 91CONFIG_BASE_SMALL=0
92CONFIG_MODULES=y 92CONFIG_MODULES=y
93# CONFIG_MODULE_FORCE_LOAD is not set 93# CONFIG_MODULE_FORCE_LOAD is not set
@@ -95,11 +95,9 @@ CONFIG_MODULE_UNLOAD=y
95CONFIG_MODULE_FORCE_UNLOAD=y 95CONFIG_MODULE_FORCE_UNLOAD=y
96# CONFIG_MODVERSIONS is not set 96# CONFIG_MODVERSIONS is not set
97# CONFIG_MODULE_SRCVERSION_ALL is not set 97# CONFIG_MODULE_SRCVERSION_ALL is not set
98CONFIG_KMOD=y
99CONFIG_BLOCK=y 98CONFIG_BLOCK=y
100# CONFIG_LBD is not set 99# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 100# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set
103# CONFIG_BLK_DEV_BSG is not set 101# CONFIG_BLK_DEV_BSG is not set
104# CONFIG_BLK_DEV_INTEGRITY is not set 102# CONFIG_BLK_DEV_INTEGRITY is not set
105 103
@@ -116,6 +114,10 @@ CONFIG_DEFAULT_AS=y
116# CONFIG_DEFAULT_NOOP is not set 114# CONFIG_DEFAULT_NOOP is not set
117CONFIG_DEFAULT_IOSCHED="anticipatory" 115CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y 116CONFIG_CLASSIC_RCU=y
117# CONFIG_TREE_RCU is not set
118# CONFIG_PREEMPT_RCU is not set
119# CONFIG_TREE_RCU_TRACE is not set
120# CONFIG_PREEMPT_RCU_TRACE is not set
119# CONFIG_FREEZER is not set 121# CONFIG_FREEZER is not set
120 122
121# 123#
@@ -123,6 +125,7 @@ CONFIG_CLASSIC_RCU=y
123# 125#
124CONFIG_CPU_SH4=y 126CONFIG_CPU_SH4=y
125# CONFIG_CPU_SUBTYPE_SH7619 is not set 127# CONFIG_CPU_SUBTYPE_SH7619 is not set
128# CONFIG_CPU_SUBTYPE_SH7201 is not set
126# CONFIG_CPU_SUBTYPE_SH7203 is not set 129# CONFIG_CPU_SUBTYPE_SH7203 is not set
127# CONFIG_CPU_SUBTYPE_SH7206 is not set 130# CONFIG_CPU_SUBTYPE_SH7206 is not set
128# CONFIG_CPU_SUBTYPE_SH7263 is not set 131# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -186,7 +189,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
186CONFIG_SPARSEMEM_STATIC=y 189CONFIG_SPARSEMEM_STATIC=y
187CONFIG_PAGEFLAGS_EXTENDED=y 190CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 191CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set 192# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0 193CONFIG_ZONE_DMA_FLAG=0
192CONFIG_NR_QUICK=2 194CONFIG_NR_QUICK=2
@@ -286,6 +288,7 @@ CONFIG_PCI=y
286CONFIG_SH_PCIDMA_NONCOHERENT=y 288CONFIG_SH_PCIDMA_NONCOHERENT=y
287CONFIG_PCI_AUTO=y 289CONFIG_PCI_AUTO=y
288CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 290CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
291# CONFIG_PCIEPORTBUS is not set
289# CONFIG_ARCH_SUPPORTS_MSI is not set 292# CONFIG_ARCH_SUPPORTS_MSI is not set
290CONFIG_PCI_LEGACY=y 293CONFIG_PCI_LEGACY=y
291CONFIG_PCCARD=y 294CONFIG_PCCARD=y
@@ -315,11 +318,18 @@ CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 318# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set 319# CONFIG_HAVE_AOUT is not set
317# CONFIG_BINFMT_MISC is not set 320# CONFIG_BINFMT_MISC is not set
321
322#
323# Power management options (EXPERIMENTAL)
324#
325# CONFIG_PM is not set
326# CONFIG_CPU_IDLE is not set
318CONFIG_NET=y 327CONFIG_NET=y
319 328
320# 329#
321# Networking options 330# Networking options
322# 331#
332CONFIG_COMPAT_NET_DEV_OPS=y
323CONFIG_PACKET=y 333CONFIG_PACKET=y
324# CONFIG_PACKET_MMAP is not set 334# CONFIG_PACKET_MMAP is not set
325CONFIG_UNIX=y 335CONFIG_UNIX=y
@@ -399,6 +409,7 @@ CONFIG_NETFILTER_ADVANCED=y
399# CONFIG_ECONET is not set 409# CONFIG_ECONET is not set
400# CONFIG_WAN_ROUTER is not set 410# CONFIG_WAN_ROUTER is not set
401# CONFIG_NET_SCHED is not set 411# CONFIG_NET_SCHED is not set
412# CONFIG_DCB is not set
402 413
403# 414#
404# Network testing 415# Network testing
@@ -414,8 +425,8 @@ CONFIG_WIRELESS=y
414# CONFIG_CFG80211 is not set 425# CONFIG_CFG80211 is not set
415# CONFIG_WIRELESS_OLD_REGULATORY is not set 426# CONFIG_WIRELESS_OLD_REGULATORY is not set
416# CONFIG_WIRELESS_EXT is not set 427# CONFIG_WIRELESS_EXT is not set
428# CONFIG_LIB80211 is not set
417# CONFIG_MAC80211 is not set 429# CONFIG_MAC80211 is not set
418# CONFIG_IEEE80211 is not set
419# CONFIG_RFKILL is not set 430# CONFIG_RFKILL is not set
420# CONFIG_NET_9P is not set 431# CONFIG_NET_9P is not set
421 432
@@ -459,6 +470,7 @@ CONFIG_MISC_DEVICES=y
459# CONFIG_TIFM_CORE is not set 470# CONFIG_TIFM_CORE is not set
460# CONFIG_ENCLOSURE_SERVICES is not set 471# CONFIG_ENCLOSURE_SERVICES is not set
461# CONFIG_HP_ILO is not set 472# CONFIG_HP_ILO is not set
473# CONFIG_C2PORT is not set
462CONFIG_HAVE_IDE=y 474CONFIG_HAVE_IDE=y
463# CONFIG_IDE is not set 475# CONFIG_IDE is not set
464 476
@@ -501,6 +513,7 @@ CONFIG_SCSI_WAIT_SCAN=m
501# CONFIG_SCSI_SRP_ATTRS is not set 513# CONFIG_SCSI_SRP_ATTRS is not set
502CONFIG_SCSI_LOWLEVEL=y 514CONFIG_SCSI_LOWLEVEL=y
503# CONFIG_ISCSI_TCP is not set 515# CONFIG_ISCSI_TCP is not set
516# CONFIG_SCSI_CXGB3_ISCSI is not set
504# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 517# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
505# CONFIG_SCSI_3W_9XXX is not set 518# CONFIG_SCSI_3W_9XXX is not set
506# CONFIG_SCSI_ACARD is not set 519# CONFIG_SCSI_ACARD is not set
@@ -514,6 +527,8 @@ CONFIG_SCSI_LOWLEVEL=y
514# CONFIG_MEGARAID_LEGACY is not set 527# CONFIG_MEGARAID_LEGACY is not set
515# CONFIG_MEGARAID_SAS is not set 528# CONFIG_MEGARAID_SAS is not set
516# CONFIG_SCSI_HPTIOP is not set 529# CONFIG_SCSI_HPTIOP is not set
530# CONFIG_LIBFC is not set
531# CONFIG_FCOE is not set
517# CONFIG_SCSI_DMX3191D is not set 532# CONFIG_SCSI_DMX3191D is not set
518# CONFIG_SCSI_FUTURE_DOMAIN is not set 533# CONFIG_SCSI_FUTURE_DOMAIN is not set
519# CONFIG_SCSI_IPS is not set 534# CONFIG_SCSI_IPS is not set
@@ -627,6 +642,7 @@ CONFIG_MII=y
627# CONFIG_NET_VENDOR_3COM is not set 642# CONFIG_NET_VENDOR_3COM is not set
628# CONFIG_SMC91X is not set 643# CONFIG_SMC91X is not set
629# CONFIG_SMC911X is not set 644# CONFIG_SMC911X is not set
645# CONFIG_SMSC911X is not set
630# CONFIG_NET_TULIP is not set 646# CONFIG_NET_TULIP is not set
631# CONFIG_HP100 is not set 647# CONFIG_HP100 is not set
632# CONFIG_IBM_NEW_EMAC_ZMII is not set 648# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -642,7 +658,6 @@ CONFIG_NET_PCI=y
642# CONFIG_ADAPTEC_STARFIRE is not set 658# CONFIG_ADAPTEC_STARFIRE is not set
643# CONFIG_B44 is not set 659# CONFIG_B44 is not set
644# CONFIG_FORCEDETH is not set 660# CONFIG_FORCEDETH is not set
645# CONFIG_EEPRO100 is not set
646# CONFIG_E100 is not set 661# CONFIG_E100 is not set
647# CONFIG_FEALNX is not set 662# CONFIG_FEALNX is not set
648# CONFIG_NATSEMI is not set 663# CONFIG_NATSEMI is not set
@@ -656,6 +671,7 @@ CONFIG_8139TOO_TUNE_TWISTER=y
656# CONFIG_R6040 is not set 671# CONFIG_R6040 is not set
657# CONFIG_SIS900 is not set 672# CONFIG_SIS900 is not set
658# CONFIG_EPIC100 is not set 673# CONFIG_EPIC100 is not set
674# CONFIG_SMSC9420 is not set
659# CONFIG_SUNDANCE is not set 675# CONFIG_SUNDANCE is not set
660# CONFIG_TLAN is not set 676# CONFIG_TLAN is not set
661# CONFIG_VIA_RHINE is not set 677# CONFIG_VIA_RHINE is not set
@@ -684,6 +700,7 @@ CONFIG_NETDEV_1000=y
684# CONFIG_JME is not set 700# CONFIG_JME is not set
685CONFIG_NETDEV_10000=y 701CONFIG_NETDEV_10000=y
686# CONFIG_CHELSIO_T1 is not set 702# CONFIG_CHELSIO_T1 is not set
703CONFIG_CHELSIO_T3_DEPENDS=y
687# CONFIG_CHELSIO_T3 is not set 704# CONFIG_CHELSIO_T3 is not set
688# CONFIG_ENIC is not set 705# CONFIG_ENIC is not set
689# CONFIG_IXGBE is not set 706# CONFIG_IXGBE is not set
@@ -692,6 +709,7 @@ CONFIG_NETDEV_10000=y
692# CONFIG_MYRI10GE is not set 709# CONFIG_MYRI10GE is not set
693# CONFIG_NETXEN_NIC is not set 710# CONFIG_NETXEN_NIC is not set
694# CONFIG_NIU is not set 711# CONFIG_NIU is not set
712# CONFIG_MLX4_EN is not set
695# CONFIG_MLX4_CORE is not set 713# CONFIG_MLX4_CORE is not set
696# CONFIG_TEHUTI is not set 714# CONFIG_TEHUTI is not set
697# CONFIG_BNX2X is not set 715# CONFIG_BNX2X is not set
@@ -787,6 +805,7 @@ CONFIG_SERIAL_CORE=y
787CONFIG_SERIAL_CORE_CONSOLE=y 805CONFIG_SERIAL_CORE_CONSOLE=y
788# CONFIG_SERIAL_JSM is not set 806# CONFIG_SERIAL_JSM is not set
789CONFIG_UNIX98_PTYS=y 807CONFIG_UNIX98_PTYS=y
808# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
790CONFIG_LEGACY_PTYS=y 809CONFIG_LEGACY_PTYS=y
791CONFIG_LEGACY_PTY_COUNT=256 810CONFIG_LEGACY_PTY_COUNT=256
792# CONFIG_IPMI_HANDLER is not set 811# CONFIG_IPMI_HANDLER is not set
@@ -828,11 +847,11 @@ CONFIG_HWMON=y
828# CONFIG_THERMAL is not set 847# CONFIG_THERMAL is not set
829# CONFIG_THERMAL_HWMON is not set 848# CONFIG_THERMAL_HWMON is not set
830# CONFIG_WATCHDOG is not set 849# CONFIG_WATCHDOG is not set
850CONFIG_SSB_POSSIBLE=y
831 851
832# 852#
833# Sonics Silicon Backplane 853# Sonics Silicon Backplane
834# 854#
835CONFIG_SSB_POSSIBLE=y
836# CONFIG_SSB is not set 855# CONFIG_SSB is not set
837 856
838# 857#
@@ -842,7 +861,7 @@ CONFIG_SSB_POSSIBLE=y
842# CONFIG_MFD_SM501 is not set 861# CONFIG_MFD_SM501 is not set
843# CONFIG_HTC_PASIC3 is not set 862# CONFIG_HTC_PASIC3 is not set
844# CONFIG_MFD_TMIO is not set 863# CONFIG_MFD_TMIO is not set
845# CONFIG_MFD_WM8400 is not set 864# CONFIG_REGULATOR is not set
846 865
847# 866#
848# Multimedia devices 867# Multimedia devices
@@ -902,9 +921,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
902# 921#
903 922
904# 923#
905# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 924# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
906# 925#
907# CONFIG_USB_GADGET is not set 926# CONFIG_USB_GADGET is not set
927# CONFIG_UWB is not set
908# CONFIG_MMC is not set 928# CONFIG_MMC is not set
909# CONFIG_MEMSTICK is not set 929# CONFIG_MEMSTICK is not set
910# CONFIG_NEW_LEDS is not set 930# CONFIG_NEW_LEDS is not set
@@ -1007,10 +1027,7 @@ CONFIG_TMPFS=y
1007# CONFIG_HUGETLBFS is not set 1027# CONFIG_HUGETLBFS is not set
1008# CONFIG_HUGETLB_PAGE is not set 1028# CONFIG_HUGETLB_PAGE is not set
1009# CONFIG_CONFIGFS_FS is not set 1029# CONFIG_CONFIGFS_FS is not set
1010 1030CONFIG_MISC_FILESYSTEMS=y
1011#
1012# Miscellaneous filesystems
1013#
1014# CONFIG_ADFS_FS is not set 1031# CONFIG_ADFS_FS is not set
1015# CONFIG_AFFS_FS is not set 1032# CONFIG_AFFS_FS is not set
1016# CONFIG_HFS_FS is not set 1033# CONFIG_HFS_FS is not set
@@ -1100,14 +1117,20 @@ CONFIG_FRAME_WARN=1024
1100# CONFIG_DEBUG_MEMORY_INIT is not set 1117# CONFIG_DEBUG_MEMORY_INIT is not set
1101# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1118# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1102# CONFIG_LATENCYTOP is not set 1119# CONFIG_LATENCYTOP is not set
1103CONFIG_NOP_TRACER=y 1120CONFIG_HAVE_FUNCTION_TRACER=y
1104CONFIG_HAVE_FTRACE=y 1121CONFIG_HAVE_DYNAMIC_FTRACE=y
1122CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1123
1124#
1125# Tracers
1126#
1105# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1127# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1106# CONFIG_SAMPLES is not set 1128# CONFIG_SAMPLES is not set
1129CONFIG_HAVE_ARCH_KGDB=y
1107CONFIG_SH_STANDARD_BIOS=y 1130CONFIG_SH_STANDARD_BIOS=y
1108# CONFIG_EARLY_SCIF_CONSOLE is not set 1131# CONFIG_EARLY_SCIF_CONSOLE is not set
1109# CONFIG_EARLY_PRINTK is not set 1132# CONFIG_EARLY_PRINTK is not set
1110# CONFIG_SH_KGDB is not set 1133# CONFIG_MORE_COMPILE_OPTIONS is not set
1111 1134
1112# 1135#
1113# Security options 1136# Security options
@@ -1123,6 +1146,7 @@ CONFIG_CRYPTO=y
1123# 1146#
1124# CONFIG_CRYPTO_FIPS is not set 1147# CONFIG_CRYPTO_FIPS is not set
1125# CONFIG_CRYPTO_MANAGER is not set 1148# CONFIG_CRYPTO_MANAGER is not set
1149# CONFIG_CRYPTO_MANAGER2 is not set
1126# CONFIG_CRYPTO_GF128MUL is not set 1150# CONFIG_CRYPTO_GF128MUL is not set
1127# CONFIG_CRYPTO_NULL is not set 1151# CONFIG_CRYPTO_NULL is not set
1128# CONFIG_CRYPTO_CRYPTD is not set 1152# CONFIG_CRYPTO_CRYPTD is not set
@@ -1206,6 +1230,7 @@ CONFIG_CRYPTO_HW=y
1206# Library routines 1230# Library routines
1207# 1231#
1208CONFIG_BITREVERSE=y 1232CONFIG_BITREVERSE=y
1233CONFIG_GENERIC_FIND_LAST_BIT=y
1209# CONFIG_CRC_CCITT is not set 1234# CONFIG_CRC_CCITT is not set
1210# CONFIG_CRC16 is not set 1235# CONFIG_CRC16 is not set
1211CONFIG_CRC_T10DIF=y 1236CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/magicpanelr2_defconfig b/arch/sh/configs/magicpanelr2_defconfig
index 499ed7204385..125d8019dc2f 100644
--- a/arch/sh/configs/magicpanelr2_defconfig
+++ b/arch/sh/configs/magicpanelr2_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:32:23 2008 4# Fri Jan 9 17:03:37 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_GPIO=y 16CONFIG_GENERIC_GPIO=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -58,6 +60,7 @@ CONFIG_UID16=y
58CONFIG_SYSCTL_SYSCALL=y 60CONFIG_SYSCTL_SYSCALL=y
59CONFIG_KALLSYMS=y 61CONFIG_KALLSYMS=y
60CONFIG_KALLSYMS_ALL=y 62CONFIG_KALLSYMS_ALL=y
63CONFIG_KALLSYMS_STRIP_GENERATED=y
61# CONFIG_KALLSYMS_EXTRA_PASS is not set 64# CONFIG_KALLSYMS_EXTRA_PASS is not set
62CONFIG_HOTPLUG=y 65CONFIG_HOTPLUG=y
63CONFIG_PRINTK=y 66CONFIG_PRINTK=y
@@ -74,12 +77,10 @@ CONFIG_EVENTFD=y
74CONFIG_SHMEM=y 77CONFIG_SHMEM=y
75CONFIG_AIO=y 78CONFIG_AIO=y
76CONFIG_VM_EVENT_COUNTERS=y 79CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
78CONFIG_SLAB=y 80CONFIG_SLAB=y
79# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
81# CONFIG_PROFILING is not set 83# CONFIG_PROFILING is not set
82# CONFIG_MARKERS is not set
83CONFIG_HAVE_OPROFILE=y 84CONFIG_HAVE_OPROFILE=y
84# CONFIG_KPROBES is not set 85# CONFIG_KPROBES is not set
85CONFIG_HAVE_IOREMAP_PROT=y 86CONFIG_HAVE_IOREMAP_PROT=y
@@ -90,7 +91,6 @@ CONFIG_HAVE_CLK=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y 91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 92CONFIG_SLABINFO=y
92CONFIG_RT_MUTEXES=y 93CONFIG_RT_MUTEXES=y
93# CONFIG_TINY_SHMEM is not set
94CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
95CONFIG_MODULES=y 95CONFIG_MODULES=y
96# CONFIG_MODULE_FORCE_LOAD is not set 96# CONFIG_MODULE_FORCE_LOAD is not set
@@ -98,11 +98,9 @@ CONFIG_MODULE_UNLOAD=y
98# CONFIG_MODULE_FORCE_UNLOAD is not set 98# CONFIG_MODULE_FORCE_UNLOAD is not set
99CONFIG_MODVERSIONS=y 99CONFIG_MODVERSIONS=y
100CONFIG_MODULE_SRCVERSION_ALL=y 100CONFIG_MODULE_SRCVERSION_ALL=y
101CONFIG_KMOD=y
102CONFIG_BLOCK=y 101CONFIG_BLOCK=y
103# CONFIG_LBD is not set 102# CONFIG_LBD is not set
104# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
105# CONFIG_LSF is not set
106# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
108 106
@@ -119,6 +117,10 @@ CONFIG_IOSCHED_NOOP=y
119CONFIG_DEFAULT_NOOP=y 117CONFIG_DEFAULT_NOOP=y
120CONFIG_DEFAULT_IOSCHED="noop" 118CONFIG_DEFAULT_IOSCHED="noop"
121CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_TREE_RCU is not set
121# CONFIG_PREEMPT_RCU is not set
122# CONFIG_TREE_RCU_TRACE is not set
123# CONFIG_PREEMPT_RCU_TRACE is not set
122# CONFIG_FREEZER is not set 124# CONFIG_FREEZER is not set
123 125
124# 126#
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y
126# 128#
127CONFIG_CPU_SH3=y 129CONFIG_CPU_SH3=y
128# CONFIG_CPU_SUBTYPE_SH7619 is not set 130# CONFIG_CPU_SUBTYPE_SH7619 is not set
131# CONFIG_CPU_SUBTYPE_SH7201 is not set
129# CONFIG_CPU_SUBTYPE_SH7203 is not set 132# CONFIG_CPU_SUBTYPE_SH7203 is not set
130# CONFIG_CPU_SUBTYPE_SH7206 is not set 133# CONFIG_CPU_SUBTYPE_SH7206 is not set
131# CONFIG_CPU_SUBTYPE_SH7263 is not set 134# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
189CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
190CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
191CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
192# CONFIG_RESOURCES_64BIT is not set
193# CONFIG_PHYS_ADDR_T_64BIT is not set 195# CONFIG_PHYS_ADDR_T_64BIT is not set
194CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
195CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
@@ -296,11 +298,18 @@ CONFIG_BINFMT_ELF=y
296# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 298# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
297# CONFIG_HAVE_AOUT is not set 299# CONFIG_HAVE_AOUT is not set
298# CONFIG_BINFMT_MISC is not set 300# CONFIG_BINFMT_MISC is not set
301
302#
303# Power management options (EXPERIMENTAL)
304#
305# CONFIG_PM is not set
306# CONFIG_CPU_IDLE is not set
299CONFIG_NET=y 307CONFIG_NET=y
300 308
301# 309#
302# Networking options 310# Networking options
303# 311#
312CONFIG_COMPAT_NET_DEV_OPS=y
304CONFIG_PACKET=y 313CONFIG_PACKET=y
305CONFIG_PACKET_MMAP=y 314CONFIG_PACKET_MMAP=y
306CONFIG_UNIX=y 315CONFIG_UNIX=y
@@ -351,6 +360,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
351# CONFIG_ECONET is not set 360# CONFIG_ECONET is not set
352# CONFIG_WAN_ROUTER is not set 361# CONFIG_WAN_ROUTER is not set
353# CONFIG_NET_SCHED is not set 362# CONFIG_NET_SCHED is not set
363# CONFIG_DCB is not set
354 364
355# 365#
356# Network testing 366# Network testing
@@ -366,8 +376,8 @@ CONFIG_WIRELESS=y
366# CONFIG_CFG80211 is not set 376# CONFIG_CFG80211 is not set
367# CONFIG_WIRELESS_OLD_REGULATORY is not set 377# CONFIG_WIRELESS_OLD_REGULATORY is not set
368# CONFIG_WIRELESS_EXT is not set 378# CONFIG_WIRELESS_EXT is not set
379# CONFIG_LIB80211 is not set
369# CONFIG_MAC80211 is not set 380# CONFIG_MAC80211 is not set
370# CONFIG_IEEE80211 is not set
371# CONFIG_RFKILL is not set 381# CONFIG_RFKILL is not set
372# CONFIG_NET_9P is not set 382# CONFIG_NET_9P is not set
373 383
@@ -483,6 +493,7 @@ CONFIG_BLK_DEV_RAM_SIZE=65536
483CONFIG_MISC_DEVICES=y 493CONFIG_MISC_DEVICES=y
484# CONFIG_EEPROM_93CX6 is not set 494# CONFIG_EEPROM_93CX6 is not set
485# CONFIG_ENCLOSURE_SERVICES is not set 495# CONFIG_ENCLOSURE_SERVICES is not set
496# CONFIG_C2PORT is not set
486CONFIG_HAVE_IDE=y 497CONFIG_HAVE_IDE=y
487# CONFIG_IDE is not set 498# CONFIG_IDE is not set
488 499
@@ -502,13 +513,33 @@ CONFIG_NETDEVICES=y
502# CONFIG_EQUALIZER is not set 513# CONFIG_EQUALIZER is not set
503# CONFIG_TUN is not set 514# CONFIG_TUN is not set
504# CONFIG_VETH is not set 515# CONFIG_VETH is not set
505# CONFIG_PHYLIB is not set 516CONFIG_PHYLIB=y
517
518#
519# MII PHY device drivers
520#
521# CONFIG_MARVELL_PHY is not set
522# CONFIG_DAVICOM_PHY is not set
523# CONFIG_QSEMI_PHY is not set
524# CONFIG_LXT_PHY is not set
525# CONFIG_CICADA_PHY is not set
526# CONFIG_VITESSE_PHY is not set
527CONFIG_SMSC_PHY=y
528# CONFIG_BROADCOM_PHY is not set
529# CONFIG_ICPLUS_PHY is not set
530# CONFIG_REALTEK_PHY is not set
531# CONFIG_NATIONAL_PHY is not set
532# CONFIG_STE10XP is not set
533# CONFIG_LSI_ET1011C_PHY is not set
534# CONFIG_FIXED_PHY is not set
535# CONFIG_MDIO_BITBANG is not set
506CONFIG_NET_ETHERNET=y 536CONFIG_NET_ETHERNET=y
507CONFIG_MII=y 537CONFIG_MII=y
508# CONFIG_AX88796 is not set 538# CONFIG_AX88796 is not set
509# CONFIG_STNIC is not set 539# CONFIG_STNIC is not set
510# CONFIG_SMC91X is not set 540# CONFIG_SMC91X is not set
511CONFIG_SMC911X=y 541# CONFIG_SMC911X is not set
542CONFIG_SMSC911X=y
512# CONFIG_IBM_NEW_EMAC_ZMII is not set 543# CONFIG_IBM_NEW_EMAC_ZMII is not set
513# CONFIG_IBM_NEW_EMAC_RGMII is not set 544# CONFIG_IBM_NEW_EMAC_RGMII is not set
514# CONFIG_IBM_NEW_EMAC_TAH is not set 545# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -618,6 +649,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
618CONFIG_SERIAL_CORE=y 649CONFIG_SERIAL_CORE=y
619CONFIG_SERIAL_CORE_CONSOLE=y 650CONFIG_SERIAL_CORE_CONSOLE=y
620CONFIG_UNIX98_PTYS=y 651CONFIG_UNIX98_PTYS=y
652# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
621CONFIG_LEGACY_PTYS=y 653CONFIG_LEGACY_PTYS=y
622CONFIG_LEGACY_PTY_COUNT=256 654CONFIG_LEGACY_PTY_COUNT=256
623# CONFIG_IPMI_HANDLER is not set 655# CONFIG_IPMI_HANDLER is not set
@@ -627,17 +659,37 @@ CONFIG_LEGACY_PTY_COUNT=256
627# CONFIG_TCG_TPM is not set 659# CONFIG_TCG_TPM is not set
628# CONFIG_I2C is not set 660# CONFIG_I2C is not set
629# CONFIG_SPI is not set 661# CONFIG_SPI is not set
662CONFIG_ARCH_REQUIRE_GPIOLIB=y
663CONFIG_GPIOLIB=y
664# CONFIG_DEBUG_GPIO is not set
665# CONFIG_GPIO_SYSFS is not set
666
667#
668# Memory mapped GPIO expanders:
669#
670
671#
672# I2C GPIO expanders:
673#
674
675#
676# PCI GPIO expanders:
677#
678
679#
680# SPI GPIO expanders:
681#
630# CONFIG_W1 is not set 682# CONFIG_W1 is not set
631# CONFIG_POWER_SUPPLY is not set 683# CONFIG_POWER_SUPPLY is not set
632# CONFIG_HWMON is not set 684# CONFIG_HWMON is not set
633# CONFIG_THERMAL is not set 685# CONFIG_THERMAL is not set
634# CONFIG_THERMAL_HWMON is not set 686# CONFIG_THERMAL_HWMON is not set
635# CONFIG_WATCHDOG is not set 687# CONFIG_WATCHDOG is not set
688CONFIG_SSB_POSSIBLE=y
636 689
637# 690#
638# Sonics Silicon Backplane 691# Sonics Silicon Backplane
639# 692#
640CONFIG_SSB_POSSIBLE=y
641# CONFIG_SSB is not set 693# CONFIG_SSB is not set
642 694
643# 695#
@@ -647,7 +699,7 @@ CONFIG_SSB_POSSIBLE=y
647# CONFIG_MFD_SM501 is not set 699# CONFIG_MFD_SM501 is not set
648# CONFIG_HTC_PASIC3 is not set 700# CONFIG_HTC_PASIC3 is not set
649# CONFIG_MFD_TMIO is not set 701# CONFIG_MFD_TMIO is not set
650# CONFIG_MFD_WM8400 is not set 702# CONFIG_REGULATOR is not set
651 703
652# 704#
653# Multimedia devices 705# Multimedia devices
@@ -778,10 +830,7 @@ CONFIG_TMPFS=y
778# CONFIG_HUGETLBFS is not set 830# CONFIG_HUGETLBFS is not set
779# CONFIG_HUGETLB_PAGE is not set 831# CONFIG_HUGETLB_PAGE is not set
780# CONFIG_CONFIGFS_FS is not set 832# CONFIG_CONFIGFS_FS is not set
781 833CONFIG_MISC_FILESYSTEMS=y
782#
783# Miscellaneous filesystems
784#
785# CONFIG_ADFS_FS is not set 834# CONFIG_ADFS_FS is not set
786# CONFIG_AFFS_FS is not set 835# CONFIG_AFFS_FS is not set
787# CONFIG_HFS_FS is not set 836# CONFIG_HFS_FS is not set
@@ -912,6 +961,7 @@ CONFIG_DEBUG_INFO=y
912# CONFIG_DEBUG_MEMORY_INIT is not set 961# CONFIG_DEBUG_MEMORY_INIT is not set
913# CONFIG_DEBUG_LIST is not set 962# CONFIG_DEBUG_LIST is not set
914# CONFIG_DEBUG_SG is not set 963# CONFIG_DEBUG_SG is not set
964# CONFIG_DEBUG_NOTIFIERS is not set
915CONFIG_FRAME_POINTER=y 965CONFIG_FRAME_POINTER=y
916# CONFIG_RCU_TORTURE_TEST is not set 966# CONFIG_RCU_TORTURE_TEST is not set
917# CONFIG_RCU_CPU_STALL_DETECTOR is not set 967# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -920,16 +970,24 @@ CONFIG_FRAME_POINTER=y
920# CONFIG_FAULT_INJECTION is not set 970# CONFIG_FAULT_INJECTION is not set
921# CONFIG_LATENCYTOP is not set 971# CONFIG_LATENCYTOP is not set
922CONFIG_SYSCTL_SYSCALL_CHECK=y 972CONFIG_SYSCTL_SYSCALL_CHECK=y
923CONFIG_NOP_TRACER=y 973CONFIG_HAVE_FUNCTION_TRACER=y
924CONFIG_HAVE_FTRACE=y 974CONFIG_HAVE_DYNAMIC_FTRACE=y
925# CONFIG_FTRACE is not set 975CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
976
977#
978# Tracers
979#
980# CONFIG_FUNCTION_TRACER is not set
926# CONFIG_IRQSOFF_TRACER is not set 981# CONFIG_IRQSOFF_TRACER is not set
927# CONFIG_SCHED_TRACER is not set 982# CONFIG_SCHED_TRACER is not set
928# CONFIG_CONTEXT_SWITCH_TRACER is not set 983# CONFIG_CONTEXT_SWITCH_TRACER is not set
929# CONFIG_BOOT_TRACER is not set 984# CONFIG_BOOT_TRACER is not set
985# CONFIG_TRACE_BRANCH_PROFILING is not set
930# CONFIG_STACK_TRACER is not set 986# CONFIG_STACK_TRACER is not set
931# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 987# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
932# CONFIG_SAMPLES is not set 988# CONFIG_SAMPLES is not set
989CONFIG_HAVE_ARCH_KGDB=y
990# CONFIG_KGDB is not set
933# CONFIG_SH_STANDARD_BIOS is not set 991# CONFIG_SH_STANDARD_BIOS is not set
934CONFIG_EARLY_SCIF_CONSOLE=y 992CONFIG_EARLY_SCIF_CONSOLE=y
935CONFIG_EARLY_SCIF_CONSOLE_PORT=0xa4430000 993CONFIG_EARLY_SCIF_CONSOLE_PORT=0xa4430000
@@ -939,25 +997,9 @@ CONFIG_EARLY_PRINTK=y
939# CONFIG_DEBUG_STACK_USAGE is not set 997# CONFIG_DEBUG_STACK_USAGE is not set
940# CONFIG_4KSTACKS is not set 998# CONFIG_4KSTACKS is not set
941# CONFIG_IRQSTACKS is not set 999# CONFIG_IRQSTACKS is not set
942CONFIG_SH_KGDB=y 1000CONFIG_DUMP_CODE=y
943 1001# CONFIG_SH_NO_BSS_INIT is not set
944#
945# KGDB configuration options
946#
947# CONFIG_MORE_COMPILE_OPTIONS is not set 1002# CONFIG_MORE_COMPILE_OPTIONS is not set
948# CONFIG_KGDB_NMI is not set
949CONFIG_KGDB_SYSRQ=y
950
951#
952# Serial port setup
953#
954CONFIG_KGDB_DEFPORT=0
955CONFIG_KGDB_DEFBAUD=115200
956CONFIG_KGDB_DEFPARITY_N=y
957# CONFIG_KGDB_DEFPARITY_E is not set
958# CONFIG_KGDB_DEFPARITY_O is not set
959CONFIG_KGDB_DEFBITS_8=y
960# CONFIG_KGDB_DEFBITS_7 is not set
961 1003
962# 1004#
963# Security options 1005# Security options
@@ -972,6 +1014,7 @@ CONFIG_KGDB_DEFBITS_8=y
972# Library routines 1014# Library routines
973# 1015#
974CONFIG_BITREVERSE=y 1016CONFIG_BITREVERSE=y
1017CONFIG_GENERIC_FIND_LAST_BIT=y
975CONFIG_CRC_CCITT=m 1018CONFIG_CRC_CCITT=m
976CONFIG_CRC16=m 1019CONFIG_CRC16=m
977# CONFIG_CRC_T10DIF is not set 1020# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/microdev_defconfig b/arch/sh/configs/microdev_defconfig
index b8ada8ce98d9..5a1c0485a354 100644
--- a/arch/sh/configs/microdev_defconfig
+++ b/arch/sh/configs/microdev_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:37:41 2008 4# Fri Jan 9 17:06:47 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -72,12 +74,10 @@ CONFIG_EVENTFD=y
72CONFIG_SHMEM=y 74CONFIG_SHMEM=y
73CONFIG_AIO=y 75CONFIG_AIO=y
74CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
76CONFIG_SLAB=y 77CONFIG_SLAB=y
77# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
82CONFIG_HAVE_IOREMAP_PROT=y 82CONFIG_HAVE_IOREMAP_PROT=y
83CONFIG_HAVE_KPROBES=y 83CONFIG_HAVE_KPROBES=y
@@ -87,13 +87,11 @@ CONFIG_HAVE_CLK=y
87CONFIG_HAVE_GENERIC_DMA_COHERENT=y 87CONFIG_HAVE_GENERIC_DMA_COHERENT=y
88CONFIG_SLABINFO=y 88CONFIG_SLABINFO=y
89CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
90# CONFIG_TINY_SHMEM is not set
91CONFIG_BASE_SMALL=0 90CONFIG_BASE_SMALL=0
92# CONFIG_MODULES is not set 91# CONFIG_MODULES is not set
93CONFIG_BLOCK=y 92CONFIG_BLOCK=y
94# CONFIG_LBD is not set 93# CONFIG_LBD is not set
95# CONFIG_BLK_DEV_IO_TRACE is not set 94# CONFIG_BLK_DEV_IO_TRACE is not set
96# CONFIG_LSF is not set
97# CONFIG_BLK_DEV_BSG is not set 95# CONFIG_BLK_DEV_BSG is not set
98# CONFIG_BLK_DEV_INTEGRITY is not set 96# CONFIG_BLK_DEV_INTEGRITY is not set
99 97
@@ -110,6 +108,10 @@ CONFIG_DEFAULT_AS=y
110# CONFIG_DEFAULT_NOOP is not set 108# CONFIG_DEFAULT_NOOP is not set
111CONFIG_DEFAULT_IOSCHED="anticipatory" 109CONFIG_DEFAULT_IOSCHED="anticipatory"
112CONFIG_CLASSIC_RCU=y 110CONFIG_CLASSIC_RCU=y
111# CONFIG_TREE_RCU is not set
112# CONFIG_PREEMPT_RCU is not set
113# CONFIG_TREE_RCU_TRACE is not set
114# CONFIG_PREEMPT_RCU_TRACE is not set
113# CONFIG_FREEZER is not set 115# CONFIG_FREEZER is not set
114 116
115# 117#
@@ -117,6 +119,7 @@ CONFIG_CLASSIC_RCU=y
117# 119#
118CONFIG_CPU_SH4=y 120CONFIG_CPU_SH4=y
119# CONFIG_CPU_SUBTYPE_SH7619 is not set 121# CONFIG_CPU_SUBTYPE_SH7619 is not set
122# CONFIG_CPU_SUBTYPE_SH7201 is not set
120# CONFIG_CPU_SUBTYPE_SH7203 is not set 123# CONFIG_CPU_SUBTYPE_SH7203 is not set
121# CONFIG_CPU_SUBTYPE_SH7206 is not set 124# CONFIG_CPU_SUBTYPE_SH7206 is not set
122# CONFIG_CPU_SUBTYPE_SH7263 is not set 125# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -186,7 +189,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
186CONFIG_SPARSEMEM_STATIC=y 189CONFIG_SPARSEMEM_STATIC=y
187CONFIG_PAGEFLAGS_EXTENDED=y 190CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 191CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set 192# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0 193CONFIG_ZONE_DMA_FLAG=0
192CONFIG_NR_QUICK=2 194CONFIG_NR_QUICK=2
@@ -265,7 +267,6 @@ CONFIG_HZ=250
265# CONFIG_PREEMPT_NONE is not set 267# CONFIG_PREEMPT_NONE is not set
266# CONFIG_PREEMPT_VOLUNTARY is not set 268# CONFIG_PREEMPT_VOLUNTARY is not set
267CONFIG_PREEMPT=y 269CONFIG_PREEMPT=y
268# CONFIG_PREEMPT_RCU is not set
269CONFIG_GUSA=y 270CONFIG_GUSA=y
270# CONFIG_GUSA_RB is not set 271# CONFIG_GUSA_RB is not set
271 272
@@ -292,11 +293,18 @@ CONFIG_BINFMT_ELF=y
292# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 293# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
293# CONFIG_HAVE_AOUT is not set 294# CONFIG_HAVE_AOUT is not set
294# CONFIG_BINFMT_MISC is not set 295# CONFIG_BINFMT_MISC is not set
296
297#
298# Power management options (EXPERIMENTAL)
299#
300# CONFIG_PM is not set
301# CONFIG_CPU_IDLE is not set
295CONFIG_NET=y 302CONFIG_NET=y
296 303
297# 304#
298# Networking options 305# Networking options
299# 306#
307CONFIG_COMPAT_NET_DEV_OPS=y
300# CONFIG_PACKET is not set 308# CONFIG_PACKET is not set
301# CONFIG_UNIX is not set 309# CONFIG_UNIX is not set
302CONFIG_XFRM=y 310CONFIG_XFRM=y
@@ -351,6 +359,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
351# CONFIG_ECONET is not set 359# CONFIG_ECONET is not set
352# CONFIG_WAN_ROUTER is not set 360# CONFIG_WAN_ROUTER is not set
353# CONFIG_NET_SCHED is not set 361# CONFIG_NET_SCHED is not set
362# CONFIG_DCB is not set
354 363
355# 364#
356# Network testing 365# Network testing
@@ -366,8 +375,8 @@ CONFIG_WIRELESS=y
366# CONFIG_CFG80211 is not set 375# CONFIG_CFG80211 is not set
367# CONFIG_WIRELESS_OLD_REGULATORY is not set 376# CONFIG_WIRELESS_OLD_REGULATORY is not set
368# CONFIG_WIRELESS_EXT is not set 377# CONFIG_WIRELESS_EXT is not set
378# CONFIG_LIB80211 is not set
369# CONFIG_MAC80211 is not set 379# CONFIG_MAC80211 is not set
370# CONFIG_IEEE80211 is not set
371# CONFIG_RFKILL is not set 380# CONFIG_RFKILL is not set
372# CONFIG_NET_9P is not set 381# CONFIG_NET_9P is not set
373 382
@@ -400,12 +409,14 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
400CONFIG_MISC_DEVICES=y 409CONFIG_MISC_DEVICES=y
401# CONFIG_EEPROM_93CX6 is not set 410# CONFIG_EEPROM_93CX6 is not set
402# CONFIG_ENCLOSURE_SERVICES is not set 411# CONFIG_ENCLOSURE_SERVICES is not set
412# CONFIG_C2PORT is not set
403CONFIG_HAVE_IDE=y 413CONFIG_HAVE_IDE=y
404CONFIG_IDE=y 414CONFIG_IDE=y
405 415
406# 416#
407# Please see Documentation/ide/ide.txt for help/info on IDE drives 417# Please see Documentation/ide/ide.txt for help/info on IDE drives
408# 418#
419CONFIG_IDE_ATAPI=y
409# CONFIG_BLK_DEV_IDE_SATA is not set 420# CONFIG_BLK_DEV_IDE_SATA is not set
410CONFIG_IDE_GD=y 421CONFIG_IDE_GD=y
411CONFIG_IDE_GD_ATA=y 422CONFIG_IDE_GD_ATA=y
@@ -445,6 +456,7 @@ CONFIG_MII=y
445# CONFIG_STNIC is not set 456# CONFIG_STNIC is not set
446CONFIG_SMC91X=y 457CONFIG_SMC91X=y
447# CONFIG_SMC911X is not set 458# CONFIG_SMC911X is not set
459# CONFIG_SMSC911X is not set
448# CONFIG_IBM_NEW_EMAC_ZMII is not set 460# CONFIG_IBM_NEW_EMAC_ZMII is not set
449# CONFIG_IBM_NEW_EMAC_RGMII is not set 461# CONFIG_IBM_NEW_EMAC_RGMII is not set
450# CONFIG_IBM_NEW_EMAC_TAH is not set 462# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -503,6 +515,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
503CONFIG_SERIAL_CORE=y 515CONFIG_SERIAL_CORE=y
504CONFIG_SERIAL_CORE_CONSOLE=y 516CONFIG_SERIAL_CORE_CONSOLE=y
505CONFIG_UNIX98_PTYS=y 517CONFIG_UNIX98_PTYS=y
518# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
506CONFIG_LEGACY_PTYS=y 519CONFIG_LEGACY_PTYS=y
507CONFIG_LEGACY_PTY_COUNT=256 520CONFIG_LEGACY_PTY_COUNT=256
508# CONFIG_IPMI_HANDLER is not set 521# CONFIG_IPMI_HANDLER is not set
@@ -530,11 +543,11 @@ CONFIG_HWMON=y
530# CONFIG_THERMAL is not set 543# CONFIG_THERMAL is not set
531# CONFIG_THERMAL_HWMON is not set 544# CONFIG_THERMAL_HWMON is not set
532# CONFIG_WATCHDOG is not set 545# CONFIG_WATCHDOG is not set
546CONFIG_SSB_POSSIBLE=y
533 547
534# 548#
535# Sonics Silicon Backplane 549# Sonics Silicon Backplane
536# 550#
537CONFIG_SSB_POSSIBLE=y
538# CONFIG_SSB is not set 551# CONFIG_SSB is not set
539 552
540# 553#
@@ -544,7 +557,7 @@ CONFIG_SSB_POSSIBLE=y
544# CONFIG_MFD_SM501 is not set 557# CONFIG_MFD_SM501 is not set
545# CONFIG_HTC_PASIC3 is not set 558# CONFIG_HTC_PASIC3 is not set
546# CONFIG_MFD_TMIO is not set 559# CONFIG_MFD_TMIO is not set
547# CONFIG_MFD_WM8400 is not set 560# CONFIG_REGULATOR is not set
548 561
549# 562#
550# Multimedia devices 563# Multimedia devices
@@ -588,7 +601,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
588# 601#
589 602
590# 603#
591# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 604# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
592# 605#
593# CONFIG_USB_GADGET is not set 606# CONFIG_USB_GADGET is not set
594# CONFIG_MMC is not set 607# CONFIG_MMC is not set
@@ -656,10 +669,7 @@ CONFIG_TMPFS=y
656CONFIG_HUGETLBFS=y 669CONFIG_HUGETLBFS=y
657CONFIG_HUGETLB_PAGE=y 670CONFIG_HUGETLB_PAGE=y
658# CONFIG_CONFIGFS_FS is not set 671# CONFIG_CONFIGFS_FS is not set
659 672CONFIG_MISC_FILESYSTEMS=y
660#
661# Miscellaneous filesystems
662#
663# CONFIG_ADFS_FS is not set 673# CONFIG_ADFS_FS is not set
664# CONFIG_AFFS_FS is not set 674# CONFIG_AFFS_FS is not set
665# CONFIG_HFS_FS is not set 675# CONFIG_HFS_FS is not set
@@ -761,13 +771,19 @@ CONFIG_FRAME_WARN=1024
761# CONFIG_DEBUG_MEMORY_INIT is not set 771# CONFIG_DEBUG_MEMORY_INIT is not set
762# CONFIG_RCU_CPU_STALL_DETECTOR is not set 772# CONFIG_RCU_CPU_STALL_DETECTOR is not set
763# CONFIG_LATENCYTOP is not set 773# CONFIG_LATENCYTOP is not set
764CONFIG_NOP_TRACER=y 774CONFIG_HAVE_FUNCTION_TRACER=y
765CONFIG_HAVE_FTRACE=y 775CONFIG_HAVE_DYNAMIC_FTRACE=y
776CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
777
778#
779# Tracers
780#
766# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 781# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
767# CONFIG_SAMPLES is not set 782# CONFIG_SAMPLES is not set
783CONFIG_HAVE_ARCH_KGDB=y
768# CONFIG_SH_STANDARD_BIOS is not set 784# CONFIG_SH_STANDARD_BIOS is not set
769# CONFIG_EARLY_SCIF_CONSOLE is not set 785# CONFIG_EARLY_SCIF_CONSOLE is not set
770# CONFIG_SH_KGDB is not set 786# CONFIG_MORE_COMPILE_OPTIONS is not set
771 787
772# 788#
773# Security options 789# Security options
@@ -783,11 +799,15 @@ CONFIG_CRYPTO=y
783# 799#
784# CONFIG_CRYPTO_FIPS is not set 800# CONFIG_CRYPTO_FIPS is not set
785CONFIG_CRYPTO_ALGAPI=y 801CONFIG_CRYPTO_ALGAPI=y
786CONFIG_CRYPTO_AEAD=y 802CONFIG_CRYPTO_ALGAPI2=y
803CONFIG_CRYPTO_AEAD2=y
787CONFIG_CRYPTO_BLKCIPHER=y 804CONFIG_CRYPTO_BLKCIPHER=y
805CONFIG_CRYPTO_BLKCIPHER2=y
788CONFIG_CRYPTO_HASH=y 806CONFIG_CRYPTO_HASH=y
789CONFIG_CRYPTO_RNG=y 807CONFIG_CRYPTO_HASH2=y
808CONFIG_CRYPTO_RNG2=y
790CONFIG_CRYPTO_MANAGER=y 809CONFIG_CRYPTO_MANAGER=y
810CONFIG_CRYPTO_MANAGER2=y
791# CONFIG_CRYPTO_GF128MUL is not set 811# CONFIG_CRYPTO_GF128MUL is not set
792# CONFIG_CRYPTO_NULL is not set 812# CONFIG_CRYPTO_NULL is not set
793# CONFIG_CRYPTO_CRYPTD is not set 813# CONFIG_CRYPTO_CRYPTD is not set
@@ -869,6 +889,7 @@ CONFIG_CRYPTO_HW=y
869# Library routines 889# Library routines
870# 890#
871CONFIG_BITREVERSE=y 891CONFIG_BITREVERSE=y
892CONFIG_GENERIC_FIND_LAST_BIT=y
872# CONFIG_CRC_CCITT is not set 893# CONFIG_CRC_CCITT is not set
873# CONFIG_CRC16 is not set 894# CONFIG_CRC16 is not set
874# CONFIG_CRC_T10DIF is not set 895# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/migor_defconfig b/arch/sh/configs/migor_defconfig
index 30cac42f25e7..76380ce972bb 100644
--- a/arch/sh/configs/migor_defconfig
+++ b/arch/sh/configs/migor_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.28-rc2 3# Linux kernel version: 2.6.28
4# Fri Oct 31 15:58:06 2008 4# Fri Jan 9 17:09:35 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16CONFIG_GENERIC_GPIO=y 16CONFIG_GENERIC_GPIO=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_NUMA=y 21CONFIG_SYS_SUPPORTS_NUMA=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -77,6 +79,7 @@ CONFIG_SLAB=y
77# CONFIG_SLUB is not set 79# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 80# CONFIG_SLOB is not set
79CONFIG_PROFILING=y 81CONFIG_PROFILING=y
82CONFIG_TRACEPOINTS=y
80# CONFIG_MARKERS is not set 83# CONFIG_MARKERS is not set
81CONFIG_OPROFILE=y 84CONFIG_OPROFILE=y
82CONFIG_HAVE_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
@@ -89,18 +92,15 @@ CONFIG_HAVE_CLK=y
89CONFIG_HAVE_GENERIC_DMA_COHERENT=y 92CONFIG_HAVE_GENERIC_DMA_COHERENT=y
90CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
92# CONFIG_TINY_SHMEM is not set
93CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
94CONFIG_MODULES=y 96CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
96# CONFIG_MODULE_UNLOAD is not set 98# CONFIG_MODULE_UNLOAD is not set
97# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
98# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
99CONFIG_KMOD=y
100CONFIG_BLOCK=y 101CONFIG_BLOCK=y
101# CONFIG_LBD is not set 102# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set
104# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
105# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
106 106
@@ -117,6 +117,10 @@ CONFIG_DEFAULT_AS=y
117# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
118CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
119CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_TREE_RCU is not set
121# CONFIG_PREEMPT_RCU is not set
122# CONFIG_TREE_RCU_TRACE is not set
123# CONFIG_PREEMPT_RCU_TRACE is not set
120# CONFIG_FREEZER is not set 124# CONFIG_FREEZER is not set
121 125
122# 126#
@@ -127,6 +131,7 @@ CONFIG_CPU_SH4A=y
127CONFIG_CPU_SH4AL_DSP=y 131CONFIG_CPU_SH4AL_DSP=y
128CONFIG_CPU_SHX2=y 132CONFIG_CPU_SHX2=y
129# CONFIG_CPU_SUBTYPE_SH7619 is not set 133# CONFIG_CPU_SUBTYPE_SH7619 is not set
134# CONFIG_CPU_SUBTYPE_SH7201 is not set
130# CONFIG_CPU_SUBTYPE_SH7203 is not set 135# CONFIG_CPU_SUBTYPE_SH7203 is not set
131# CONFIG_CPU_SUBTYPE_SH7206 is not set 136# CONFIG_CPU_SUBTYPE_SH7206 is not set
132# CONFIG_CPU_SUBTYPE_SH7263 is not set 137# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -196,7 +201,6 @@ CONFIG_SPARSEMEM_STATIC=y
196# CONFIG_MEMORY_HOTPLUG is not set 201# CONFIG_MEMORY_HOTPLUG is not set
197CONFIG_SPLIT_PTLOCK_CPUS=4 202CONFIG_SPLIT_PTLOCK_CPUS=4
198# CONFIG_MIGRATION is not set 203# CONFIG_MIGRATION is not set
199# CONFIG_RESOURCES_64BIT is not set
200# CONFIG_PHYS_ADDR_T_64BIT is not set 204# CONFIG_PHYS_ADDR_T_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=0 205CONFIG_ZONE_DMA_FLAG=0
202CONFIG_NR_QUICK=2 206CONFIG_NR_QUICK=2
@@ -299,11 +303,18 @@ CONFIG_BINFMT_ELF=y
299# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 303# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
300# CONFIG_HAVE_AOUT is not set 304# CONFIG_HAVE_AOUT is not set
301# CONFIG_BINFMT_MISC is not set 305# CONFIG_BINFMT_MISC is not set
306
307#
308# Power management options (EXPERIMENTAL)
309#
310# CONFIG_PM is not set
311# CONFIG_CPU_IDLE is not set
302CONFIG_NET=y 312CONFIG_NET=y
303 313
304# 314#
305# Networking options 315# Networking options
306# 316#
317CONFIG_COMPAT_NET_DEV_OPS=y
307CONFIG_PACKET=y 318CONFIG_PACKET=y
308# CONFIG_PACKET_MMAP is not set 319# CONFIG_PACKET_MMAP is not set
309CONFIG_UNIX=y 320CONFIG_UNIX=y
@@ -359,6 +370,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
359# CONFIG_ECONET is not set 370# CONFIG_ECONET is not set
360# CONFIG_WAN_ROUTER is not set 371# CONFIG_WAN_ROUTER is not set
361# CONFIG_NET_SCHED is not set 372# CONFIG_NET_SCHED is not set
373# CONFIG_DCB is not set
362 374
363# 375#
364# Network testing 376# Network testing
@@ -375,8 +387,8 @@ CONFIG_WIRELESS=y
375# CONFIG_WIRELESS_OLD_REGULATORY is not set 387# CONFIG_WIRELESS_OLD_REGULATORY is not set
376CONFIG_WIRELESS_EXT=y 388CONFIG_WIRELESS_EXT=y
377CONFIG_WIRELESS_EXT_SYSFS=y 389CONFIG_WIRELESS_EXT_SYSFS=y
390# CONFIG_LIB80211 is not set
378# CONFIG_MAC80211 is not set 391# CONFIG_MAC80211 is not set
379# CONFIG_IEEE80211 is not set
380# CONFIG_RFKILL is not set 392# CONFIG_RFKILL is not set
381# CONFIG_NET_9P is not set 393# CONFIG_NET_9P is not set
382 394
@@ -493,7 +505,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
493# CONFIG_BLK_DEV_HD is not set 505# CONFIG_BLK_DEV_HD is not set
494CONFIG_MISC_DEVICES=y 506CONFIG_MISC_DEVICES=y
495# CONFIG_EEPROM_93CX6 is not set 507# CONFIG_EEPROM_93CX6 is not set
508# CONFIG_ICS932S401 is not set
496# CONFIG_ENCLOSURE_SERVICES is not set 509# CONFIG_ENCLOSURE_SERVICES is not set
510# CONFIG_C2PORT is not set
497CONFIG_HAVE_IDE=y 511CONFIG_HAVE_IDE=y
498# CONFIG_IDE is not set 512# CONFIG_IDE is not set
499 513
@@ -536,6 +550,7 @@ CONFIG_SCSI_WAIT_SCAN=m
536# CONFIG_SCSI_SRP_ATTRS is not set 550# CONFIG_SCSI_SRP_ATTRS is not set
537CONFIG_SCSI_LOWLEVEL=y 551CONFIG_SCSI_LOWLEVEL=y
538# CONFIG_ISCSI_TCP is not set 552# CONFIG_ISCSI_TCP is not set
553# CONFIG_LIBFC is not set
539# CONFIG_SCSI_DEBUG is not set 554# CONFIG_SCSI_DEBUG is not set
540# CONFIG_SCSI_DH is not set 555# CONFIG_SCSI_DH is not set
541# CONFIG_ATA is not set 556# CONFIG_ATA is not set
@@ -554,6 +569,7 @@ CONFIG_MII=y
554# CONFIG_STNIC is not set 569# CONFIG_STNIC is not set
555CONFIG_SMC91X=y 570CONFIG_SMC91X=y
556# CONFIG_SMC911X is not set 571# CONFIG_SMC911X is not set
572# CONFIG_SMSC911X is not set
557# CONFIG_IBM_NEW_EMAC_ZMII is not set 573# CONFIG_IBM_NEW_EMAC_ZMII is not set
558# CONFIG_IBM_NEW_EMAC_RGMII is not set 574# CONFIG_IBM_NEW_EMAC_RGMII is not set
559# CONFIG_IBM_NEW_EMAC_TAH is not set 575# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -644,6 +660,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
644CONFIG_SERIAL_CORE=y 660CONFIG_SERIAL_CORE=y
645CONFIG_SERIAL_CORE_CONSOLE=y 661CONFIG_SERIAL_CORE_CONSOLE=y
646CONFIG_UNIX98_PTYS=y 662CONFIG_UNIX98_PTYS=y
663# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
647CONFIG_LEGACY_PTYS=y 664CONFIG_LEGACY_PTYS=y
648CONFIG_LEGACY_PTY_COUNT=256 665CONFIG_LEGACY_PTY_COUNT=256
649# CONFIG_IPMI_HANDLER is not set 666# CONFIG_IPMI_HANDLER is not set
@@ -697,17 +714,39 @@ CONFIG_I2C_SH_MOBILE=y
697# CONFIG_I2C_DEBUG_BUS is not set 714# CONFIG_I2C_DEBUG_BUS is not set
698# CONFIG_I2C_DEBUG_CHIP is not set 715# CONFIG_I2C_DEBUG_CHIP is not set
699# CONFIG_SPI is not set 716# CONFIG_SPI is not set
717CONFIG_ARCH_REQUIRE_GPIOLIB=y
718CONFIG_GPIOLIB=y
719# CONFIG_GPIO_SYSFS is not set
720
721#
722# Memory mapped GPIO expanders:
723#
724
725#
726# I2C GPIO expanders:
727#
728# CONFIG_GPIO_MAX732X is not set
729# CONFIG_GPIO_PCA953X is not set
730# CONFIG_GPIO_PCF857X is not set
731
732#
733# PCI GPIO expanders:
734#
735
736#
737# SPI GPIO expanders:
738#
700# CONFIG_W1 is not set 739# CONFIG_W1 is not set
701# CONFIG_POWER_SUPPLY is not set 740# CONFIG_POWER_SUPPLY is not set
702# CONFIG_HWMON is not set 741# CONFIG_HWMON is not set
703# CONFIG_THERMAL is not set 742# CONFIG_THERMAL is not set
704# CONFIG_THERMAL_HWMON is not set 743# CONFIG_THERMAL_HWMON is not set
705# CONFIG_WATCHDOG is not set 744# CONFIG_WATCHDOG is not set
745CONFIG_SSB_POSSIBLE=y
706 746
707# 747#
708# Sonics Silicon Backplane 748# Sonics Silicon Backplane
709# 749#
710CONFIG_SSB_POSSIBLE=y
711# CONFIG_SSB is not set 750# CONFIG_SSB is not set
712 751
713# 752#
@@ -716,10 +755,13 @@ CONFIG_SSB_POSSIBLE=y
716# CONFIG_MFD_CORE is not set 755# CONFIG_MFD_CORE is not set
717# CONFIG_MFD_SM501 is not set 756# CONFIG_MFD_SM501 is not set
718# CONFIG_HTC_PASIC3 is not set 757# CONFIG_HTC_PASIC3 is not set
758# CONFIG_TPS65010 is not set
759# CONFIG_TWL4030_CORE is not set
719# CONFIG_MFD_TMIO is not set 760# CONFIG_MFD_TMIO is not set
720# CONFIG_PMIC_DA903X is not set 761# CONFIG_PMIC_DA903X is not set
721# CONFIG_MFD_WM8400 is not set 762# CONFIG_MFD_WM8400 is not set
722# CONFIG_MFD_WM8350_I2C is not set 763# CONFIG_MFD_WM8350_I2C is not set
764# CONFIG_REGULATOR is not set
723 765
724# 766#
725# Multimedia devices 767# Multimedia devices
@@ -762,8 +804,11 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
762CONFIG_SOC_CAMERA=y 804CONFIG_SOC_CAMERA=y
763# CONFIG_SOC_CAMERA_MT9M001 is not set 805# CONFIG_SOC_CAMERA_MT9M001 is not set
764# CONFIG_SOC_CAMERA_MT9M111 is not set 806# CONFIG_SOC_CAMERA_MT9M111 is not set
807# CONFIG_SOC_CAMERA_MT9T031 is not set
765# CONFIG_SOC_CAMERA_MT9V022 is not set 808# CONFIG_SOC_CAMERA_MT9V022 is not set
809# CONFIG_SOC_CAMERA_TW9910 is not set
766CONFIG_SOC_CAMERA_PLATFORM=y 810CONFIG_SOC_CAMERA_PLATFORM=y
811# CONFIG_SOC_CAMERA_OV772X is not set
767CONFIG_VIDEO_SH_MOBILE_CEU=y 812CONFIG_VIDEO_SH_MOBILE_CEU=y
768# CONFIG_RADIO_ADAPTERS is not set 813# CONFIG_RADIO_ADAPTERS is not set
769# CONFIG_DAB is not set 814# CONFIG_DAB is not set
@@ -806,7 +851,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
806# CONFIG_USB_GADGET_MUSB_HDRC is not set 851# CONFIG_USB_GADGET_MUSB_HDRC is not set
807 852
808# 853#
809# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 854# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
810# 855#
811CONFIG_USB_GADGET=y 856CONFIG_USB_GADGET=y
812# CONFIG_USB_GADGET_DEBUG_FILES is not set 857# CONFIG_USB_GADGET_DEBUG_FILES is not set
@@ -872,6 +917,7 @@ CONFIG_RTC_DRV_RS5C372=y
872# CONFIG_RTC_DRV_M41T80 is not set 917# CONFIG_RTC_DRV_M41T80 is not set
873# CONFIG_RTC_DRV_S35390A is not set 918# CONFIG_RTC_DRV_S35390A is not set
874# CONFIG_RTC_DRV_FM3130 is not set 919# CONFIG_RTC_DRV_FM3130 is not set
920# CONFIG_RTC_DRV_RX8581 is not set
875 921
876# 922#
877# SPI RTC drivers 923# SPI RTC drivers
@@ -948,10 +994,7 @@ CONFIG_TMPFS=y
948# CONFIG_HUGETLBFS is not set 994# CONFIG_HUGETLBFS is not set
949# CONFIG_HUGETLB_PAGE is not set 995# CONFIG_HUGETLB_PAGE is not set
950# CONFIG_CONFIGFS_FS is not set 996# CONFIG_CONFIGFS_FS is not set
951 997CONFIG_MISC_FILESYSTEMS=y
952#
953# Miscellaneous filesystems
954#
955# CONFIG_ADFS_FS is not set 998# CONFIG_ADFS_FS is not set
956# CONFIG_AFFS_FS is not set 999# CONFIG_AFFS_FS is not set
957# CONFIG_HFS_FS is not set 1000# CONFIG_HFS_FS is not set
@@ -1008,19 +1051,29 @@ CONFIG_FRAME_WARN=1024
1008CONFIG_DEBUG_FS=y 1051CONFIG_DEBUG_FS=y
1009# CONFIG_HEADERS_CHECK is not set 1052# CONFIG_HEADERS_CHECK is not set
1010# CONFIG_DEBUG_KERNEL is not set 1053# CONFIG_DEBUG_KERNEL is not set
1054CONFIG_STACKTRACE=y
1011# CONFIG_DEBUG_BUGVERBOSE is not set 1055# CONFIG_DEBUG_BUGVERBOSE is not set
1012# CONFIG_DEBUG_MEMORY_INIT is not set 1056# CONFIG_DEBUG_MEMORY_INIT is not set
1013# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1057# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1014# CONFIG_LATENCYTOP is not set 1058# CONFIG_LATENCYTOP is not set
1015CONFIG_NOP_TRACER=y 1059CONFIG_NOP_TRACER=y
1016CONFIG_HAVE_FTRACE=y 1060CONFIG_HAVE_FUNCTION_TRACER=y
1061CONFIG_HAVE_DYNAMIC_FTRACE=y
1062CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1063CONFIG_RING_BUFFER=y
1064CONFIG_TRACING=y
1065
1066#
1067# Tracers
1068#
1017# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1069# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1018# CONFIG_SAMPLES is not set 1070# CONFIG_SAMPLES is not set
1071CONFIG_HAVE_ARCH_KGDB=y
1019# CONFIG_SH_STANDARD_BIOS is not set 1072# CONFIG_SH_STANDARD_BIOS is not set
1020CONFIG_EARLY_SCIF_CONSOLE=y 1073CONFIG_EARLY_SCIF_CONSOLE=y
1021CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000 1074CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000
1022CONFIG_EARLY_PRINTK=y 1075CONFIG_EARLY_PRINTK=y
1023# CONFIG_SH_KGDB is not set 1076# CONFIG_MORE_COMPILE_OPTIONS is not set
1024 1077
1025# 1078#
1026# Security options 1079# Security options
@@ -1035,12 +1088,13 @@ CONFIG_CRYPTO=y
1035# Crypto core or helper 1088# Crypto core or helper
1036# 1089#
1037# CONFIG_CRYPTO_FIPS is not set 1090# CONFIG_CRYPTO_FIPS is not set
1038CONFIG_CRYPTO_ALGAPI=y 1091CONFIG_CRYPTO_ALGAPI2=y
1039CONFIG_CRYPTO_AEAD=y 1092CONFIG_CRYPTO_AEAD2=y
1040CONFIG_CRYPTO_BLKCIPHER=y 1093CONFIG_CRYPTO_BLKCIPHER2=y
1041CONFIG_CRYPTO_HASH=y 1094CONFIG_CRYPTO_HASH2=y
1042CONFIG_CRYPTO_RNG=y 1095CONFIG_CRYPTO_RNG2=y
1043CONFIG_CRYPTO_MANAGER=y 1096CONFIG_CRYPTO_MANAGER=y
1097CONFIG_CRYPTO_MANAGER2=y
1044# CONFIG_CRYPTO_GF128MUL is not set 1098# CONFIG_CRYPTO_GF128MUL is not set
1045# CONFIG_CRYPTO_NULL is not set 1099# CONFIG_CRYPTO_NULL is not set
1046# CONFIG_CRYPTO_CRYPTD is not set 1100# CONFIG_CRYPTO_CRYPTD is not set
@@ -1123,6 +1177,7 @@ CONFIG_CRYPTO_MANAGER=y
1123# Library routines 1177# Library routines
1124# 1178#
1125CONFIG_BITREVERSE=y 1179CONFIG_BITREVERSE=y
1180CONFIG_GENERIC_FIND_LAST_BIT=y
1126# CONFIG_CRC_CCITT is not set 1181# CONFIG_CRC_CCITT is not set
1127# CONFIG_CRC16 is not set 1182# CONFIG_CRC16 is not set
1128CONFIG_CRC_T10DIF=y 1183CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig
index 2e65149e9502..5767770ef14d 100644
--- a/arch/sh/configs/r7780mp_defconfig
+++ b/arch/sh/configs/r7780mp_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 20:03:46 2008 4# Fri Jan 9 17:10:19 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -85,6 +87,7 @@ CONFIG_SLAB=y
85# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
86# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
87CONFIG_PROFILING=y 89CONFIG_PROFILING=y
90CONFIG_TRACEPOINTS=y
88# CONFIG_MARKERS is not set 91# CONFIG_MARKERS is not set
89CONFIG_OPROFILE=m 92CONFIG_OPROFILE=m
90CONFIG_HAVE_OPROFILE=y 93CONFIG_HAVE_OPROFILE=y
@@ -96,7 +99,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
96CONFIG_HAVE_CLK=y 99CONFIG_HAVE_CLK=y
97CONFIG_HAVE_GENERIC_DMA_COHERENT=y 100CONFIG_HAVE_GENERIC_DMA_COHERENT=y
98CONFIG_SLABINFO=y 101CONFIG_SLABINFO=y
99# CONFIG_TINY_SHMEM is not set
100CONFIG_BASE_SMALL=0 102CONFIG_BASE_SMALL=0
101CONFIG_MODULES=y 103CONFIG_MODULES=y
102# CONFIG_MODULE_FORCE_LOAD is not set 104# CONFIG_MODULE_FORCE_LOAD is not set
@@ -104,11 +106,9 @@ CONFIG_MODULE_UNLOAD=y
104# CONFIG_MODULE_FORCE_UNLOAD is not set 106# CONFIG_MODULE_FORCE_UNLOAD is not set
105# CONFIG_MODVERSIONS is not set 107# CONFIG_MODVERSIONS is not set
106# CONFIG_MODULE_SRCVERSION_ALL is not set 108# CONFIG_MODULE_SRCVERSION_ALL is not set
107CONFIG_KMOD=y
108CONFIG_BLOCK=y 109CONFIG_BLOCK=y
109# CONFIG_LBD is not set 110# CONFIG_LBD is not set
110# CONFIG_BLK_DEV_IO_TRACE is not set 111# CONFIG_BLK_DEV_IO_TRACE is not set
111# CONFIG_LSF is not set
112# CONFIG_BLK_DEV_BSG is not set 112# CONFIG_BLK_DEV_BSG is not set
113# CONFIG_BLK_DEV_INTEGRITY is not set 113# CONFIG_BLK_DEV_INTEGRITY is not set
114 114
@@ -125,6 +125,10 @@ CONFIG_IOSCHED_NOOP=y
125CONFIG_DEFAULT_NOOP=y 125CONFIG_DEFAULT_NOOP=y
126CONFIG_DEFAULT_IOSCHED="noop" 126CONFIG_DEFAULT_IOSCHED="noop"
127CONFIG_CLASSIC_RCU=y 127CONFIG_CLASSIC_RCU=y
128# CONFIG_TREE_RCU is not set
129# CONFIG_PREEMPT_RCU is not set
130# CONFIG_TREE_RCU_TRACE is not set
131# CONFIG_PREEMPT_RCU_TRACE is not set
128# CONFIG_FREEZER is not set 132# CONFIG_FREEZER is not set
129 133
130# 134#
@@ -133,6 +137,7 @@ CONFIG_CLASSIC_RCU=y
133CONFIG_CPU_SH4=y 137CONFIG_CPU_SH4=y
134CONFIG_CPU_SH4A=y 138CONFIG_CPU_SH4A=y
135# CONFIG_CPU_SUBTYPE_SH7619 is not set 139# CONFIG_CPU_SUBTYPE_SH7619 is not set
140# CONFIG_CPU_SUBTYPE_SH7201 is not set
136# CONFIG_CPU_SUBTYPE_SH7203 is not set 141# CONFIG_CPU_SUBTYPE_SH7203 is not set
137# CONFIG_CPU_SUBTYPE_SH7206 is not set 142# CONFIG_CPU_SUBTYPE_SH7206 is not set
138# CONFIG_CPU_SUBTYPE_SH7263 is not set 143# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -203,7 +208,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
203CONFIG_SPARSEMEM_STATIC=y 208CONFIG_SPARSEMEM_STATIC=y
204CONFIG_PAGEFLAGS_EXTENDED=y 209CONFIG_PAGEFLAGS_EXTENDED=y
205CONFIG_SPLIT_PTLOCK_CPUS=4 210CONFIG_SPLIT_PTLOCK_CPUS=4
206# CONFIG_RESOURCES_64BIT is not set
207# CONFIG_PHYS_ADDR_T_64BIT is not set 211# CONFIG_PHYS_ADDR_T_64BIT is not set
208CONFIG_ZONE_DMA_FLAG=0 212CONFIG_ZONE_DMA_FLAG=0
209CONFIG_NR_QUICK=2 213CONFIG_NR_QUICK=2
@@ -284,7 +288,6 @@ CONFIG_KEXEC=y
284# CONFIG_PREEMPT_NONE is not set 288# CONFIG_PREEMPT_NONE is not set
285# CONFIG_PREEMPT_VOLUNTARY is not set 289# CONFIG_PREEMPT_VOLUNTARY is not set
286CONFIG_PREEMPT=y 290CONFIG_PREEMPT=y
287# CONFIG_PREEMPT_RCU is not set
288CONFIG_GUSA=y 291CONFIG_GUSA=y
289 292
290# 293#
@@ -302,6 +305,7 @@ CONFIG_PCI=y
302CONFIG_SH_PCIDMA_NONCOHERENT=y 305CONFIG_SH_PCIDMA_NONCOHERENT=y
303CONFIG_PCI_AUTO=y 306CONFIG_PCI_AUTO=y
304CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 307CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
308# CONFIG_PCIEPORTBUS is not set
305# CONFIG_ARCH_SUPPORTS_MSI is not set 309# CONFIG_ARCH_SUPPORTS_MSI is not set
306CONFIG_PCI_LEGACY=y 310CONFIG_PCI_LEGACY=y
307# CONFIG_PCI_DEBUG is not set 311# CONFIG_PCI_DEBUG is not set
@@ -315,11 +319,18 @@ CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 319# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set 320# CONFIG_HAVE_AOUT is not set
317# CONFIG_BINFMT_MISC is not set 321# CONFIG_BINFMT_MISC is not set
322
323#
324# Power management options (EXPERIMENTAL)
325#
326# CONFIG_PM is not set
327# CONFIG_CPU_IDLE is not set
318CONFIG_NET=y 328CONFIG_NET=y
319 329
320# 330#
321# Networking options 331# Networking options
322# 332#
333CONFIG_COMPAT_NET_DEV_OPS=y
323CONFIG_PACKET=y 334CONFIG_PACKET=y
324# CONFIG_PACKET_MMAP is not set 335# CONFIG_PACKET_MMAP is not set
325CONFIG_UNIX=y 336CONFIG_UNIX=y
@@ -382,6 +393,7 @@ CONFIG_LLC=m
382# CONFIG_ECONET is not set 393# CONFIG_ECONET is not set
383# CONFIG_WAN_ROUTER is not set 394# CONFIG_WAN_ROUTER is not set
384# CONFIG_NET_SCHED is not set 395# CONFIG_NET_SCHED is not set
396# CONFIG_DCB is not set
385 397
386# 398#
387# Network testing 399# Network testing
@@ -398,8 +410,8 @@ CONFIG_WIRELESS=y
398# CONFIG_WIRELESS_OLD_REGULATORY is not set 410# CONFIG_WIRELESS_OLD_REGULATORY is not set
399CONFIG_WIRELESS_EXT=y 411CONFIG_WIRELESS_EXT=y
400CONFIG_WIRELESS_EXT_SYSFS=y 412CONFIG_WIRELESS_EXT_SYSFS=y
413# CONFIG_LIB80211 is not set
401# CONFIG_MAC80211 is not set 414# CONFIG_MAC80211 is not set
402# CONFIG_IEEE80211 is not set
403# CONFIG_RFKILL is not set 415# CONFIG_RFKILL is not set
404# CONFIG_NET_9P is not set 416# CONFIG_NET_9P is not set
405 417
@@ -442,8 +454,10 @@ CONFIG_MISC_DEVICES=y
442CONFIG_EEPROM_93CX6=y 454CONFIG_EEPROM_93CX6=y
443# CONFIG_SGI_IOC4 is not set 455# CONFIG_SGI_IOC4 is not set
444# CONFIG_TIFM_CORE is not set 456# CONFIG_TIFM_CORE is not set
457# CONFIG_ICS932S401 is not set
445# CONFIG_ENCLOSURE_SERVICES is not set 458# CONFIG_ENCLOSURE_SERVICES is not set
446# CONFIG_HP_ILO is not set 459# CONFIG_HP_ILO is not set
460# CONFIG_C2PORT is not set
447CONFIG_HAVE_IDE=y 461CONFIG_HAVE_IDE=y
448# CONFIG_IDE is not set 462# CONFIG_IDE is not set
449 463
@@ -486,6 +500,7 @@ CONFIG_SCSI_WAIT_SCAN=m
486# CONFIG_SCSI_SRP_ATTRS is not set 500# CONFIG_SCSI_SRP_ATTRS is not set
487CONFIG_SCSI_LOWLEVEL=y 501CONFIG_SCSI_LOWLEVEL=y
488# CONFIG_ISCSI_TCP is not set 502# CONFIG_ISCSI_TCP is not set
503# CONFIG_SCSI_CXGB3_ISCSI is not set
489# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 504# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
490# CONFIG_SCSI_3W_9XXX is not set 505# CONFIG_SCSI_3W_9XXX is not set
491# CONFIG_SCSI_ACARD is not set 506# CONFIG_SCSI_ACARD is not set
@@ -499,6 +514,8 @@ CONFIG_SCSI_LOWLEVEL=y
499# CONFIG_MEGARAID_LEGACY is not set 514# CONFIG_MEGARAID_LEGACY is not set
500# CONFIG_MEGARAID_SAS is not set 515# CONFIG_MEGARAID_SAS is not set
501# CONFIG_SCSI_HPTIOP is not set 516# CONFIG_SCSI_HPTIOP is not set
517# CONFIG_LIBFC is not set
518# CONFIG_FCOE is not set
502# CONFIG_SCSI_DMX3191D is not set 519# CONFIG_SCSI_DMX3191D is not set
503# CONFIG_SCSI_FUTURE_DOMAIN is not set 520# CONFIG_SCSI_FUTURE_DOMAIN is not set
504# CONFIG_SCSI_IPS is not set 521# CONFIG_SCSI_IPS is not set
@@ -611,6 +628,7 @@ CONFIG_AX88796_93CX6=y
611# CONFIG_NET_VENDOR_3COM is not set 628# CONFIG_NET_VENDOR_3COM is not set
612# CONFIG_SMC91X is not set 629# CONFIG_SMC91X is not set
613# CONFIG_SMC911X is not set 630# CONFIG_SMC911X is not set
631# CONFIG_SMSC911X is not set
614# CONFIG_NET_TULIP is not set 632# CONFIG_NET_TULIP is not set
615# CONFIG_HP100 is not set 633# CONFIG_HP100 is not set
616# CONFIG_IBM_NEW_EMAC_ZMII is not set 634# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -626,7 +644,6 @@ CONFIG_PCNET32=m
626# CONFIG_ADAPTEC_STARFIRE is not set 644# CONFIG_ADAPTEC_STARFIRE is not set
627# CONFIG_B44 is not set 645# CONFIG_B44 is not set
628# CONFIG_FORCEDETH is not set 646# CONFIG_FORCEDETH is not set
629# CONFIG_EEPRO100 is not set
630# CONFIG_E100 is not set 647# CONFIG_E100 is not set
631# CONFIG_FEALNX is not set 648# CONFIG_FEALNX is not set
632# CONFIG_NATSEMI is not set 649# CONFIG_NATSEMI is not set
@@ -640,6 +657,7 @@ CONFIG_8139TOO_8129=y
640# CONFIG_R6040 is not set 657# CONFIG_R6040 is not set
641# CONFIG_SIS900 is not set 658# CONFIG_SIS900 is not set
642# CONFIG_EPIC100 is not set 659# CONFIG_EPIC100 is not set
660# CONFIG_SMSC9420 is not set
643# CONFIG_SUNDANCE is not set 661# CONFIG_SUNDANCE is not set
644# CONFIG_TLAN is not set 662# CONFIG_TLAN is not set
645CONFIG_VIA_RHINE=m 663CONFIG_VIA_RHINE=m
@@ -669,6 +687,7 @@ CONFIG_R8169=y
669# CONFIG_JME is not set 687# CONFIG_JME is not set
670CONFIG_NETDEV_10000=y 688CONFIG_NETDEV_10000=y
671# CONFIG_CHELSIO_T1 is not set 689# CONFIG_CHELSIO_T1 is not set
690CONFIG_CHELSIO_T3_DEPENDS=y
672# CONFIG_CHELSIO_T3 is not set 691# CONFIG_CHELSIO_T3 is not set
673# CONFIG_ENIC is not set 692# CONFIG_ENIC is not set
674# CONFIG_IXGBE is not set 693# CONFIG_IXGBE is not set
@@ -677,6 +696,7 @@ CONFIG_NETDEV_10000=y
677# CONFIG_MYRI10GE is not set 696# CONFIG_MYRI10GE is not set
678# CONFIG_NETXEN_NIC is not set 697# CONFIG_NETXEN_NIC is not set
679# CONFIG_NIU is not set 698# CONFIG_NIU is not set
699# CONFIG_MLX4_EN is not set
680# CONFIG_MLX4_CORE is not set 700# CONFIG_MLX4_CORE is not set
681# CONFIG_TEHUTI is not set 701# CONFIG_TEHUTI is not set
682# CONFIG_BNX2X is not set 702# CONFIG_BNX2X is not set
@@ -771,6 +791,7 @@ CONFIG_SERIAL_CORE=y
771CONFIG_SERIAL_CORE_CONSOLE=y 791CONFIG_SERIAL_CORE_CONSOLE=y
772# CONFIG_SERIAL_JSM is not set 792# CONFIG_SERIAL_JSM is not set
773CONFIG_UNIX98_PTYS=y 793CONFIG_UNIX98_PTYS=y
794# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
774CONFIG_LEGACY_PTYS=y 795CONFIG_LEGACY_PTYS=y
775CONFIG_LEGACY_PTY_COUNT=256 796CONFIG_LEGACY_PTY_COUNT=256
776# CONFIG_IPMI_HANDLER is not set 797# CONFIG_IPMI_HANDLER is not set
@@ -861,6 +882,7 @@ CONFIG_HWMON=y
861# CONFIG_SENSORS_ADM1029 is not set 882# CONFIG_SENSORS_ADM1029 is not set
862# CONFIG_SENSORS_ADM1031 is not set 883# CONFIG_SENSORS_ADM1031 is not set
863# CONFIG_SENSORS_ADM9240 is not set 884# CONFIG_SENSORS_ADM9240 is not set
885# CONFIG_SENSORS_ADT7462 is not set
864# CONFIG_SENSORS_ADT7470 is not set 886# CONFIG_SENSORS_ADT7470 is not set
865# CONFIG_SENSORS_ADT7473 is not set 887# CONFIG_SENSORS_ADT7473 is not set
866# CONFIG_SENSORS_ATXP1 is not set 888# CONFIG_SENSORS_ATXP1 is not set
@@ -909,11 +931,11 @@ CONFIG_HWMON=y
909CONFIG_THERMAL=y 931CONFIG_THERMAL=y
910# CONFIG_THERMAL_HWMON is not set 932# CONFIG_THERMAL_HWMON is not set
911# CONFIG_WATCHDOG is not set 933# CONFIG_WATCHDOG is not set
934CONFIG_SSB_POSSIBLE=y
912 935
913# 936#
914# Sonics Silicon Backplane 937# Sonics Silicon Backplane
915# 938#
916CONFIG_SSB_POSSIBLE=y
917# CONFIG_SSB is not set 939# CONFIG_SSB is not set
918 940
919# 941#
@@ -922,9 +944,12 @@ CONFIG_SSB_POSSIBLE=y
922# CONFIG_MFD_CORE is not set 944# CONFIG_MFD_CORE is not set
923# CONFIG_MFD_SM501 is not set 945# CONFIG_MFD_SM501 is not set
924# CONFIG_HTC_PASIC3 is not set 946# CONFIG_HTC_PASIC3 is not set
947# CONFIG_TWL4030_CORE is not set
925# CONFIG_MFD_TMIO is not set 948# CONFIG_MFD_TMIO is not set
949# CONFIG_PMIC_DA903X is not set
926# CONFIG_MFD_WM8400 is not set 950# CONFIG_MFD_WM8400 is not set
927# CONFIG_MFD_WM8350_I2C is not set 951# CONFIG_MFD_WM8350_I2C is not set
952# CONFIG_REGULATOR is not set
928 953
929# 954#
930# Multimedia devices 955# Multimedia devices
@@ -982,9 +1007,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
982# 1007#
983 1008
984# 1009#
985# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1010# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
986# 1011#
987# CONFIG_USB_GADGET is not set 1012# CONFIG_USB_GADGET is not set
1013# CONFIG_UWB is not set
988# CONFIG_MMC is not set 1014# CONFIG_MMC is not set
989# CONFIG_MEMSTICK is not set 1015# CONFIG_MEMSTICK is not set
990# CONFIG_NEW_LEDS is not set 1016# CONFIG_NEW_LEDS is not set
@@ -1020,6 +1046,7 @@ CONFIG_RTC_DRV_RS5C372=y
1020# CONFIG_RTC_DRV_M41T80 is not set 1046# CONFIG_RTC_DRV_M41T80 is not set
1021# CONFIG_RTC_DRV_S35390A is not set 1047# CONFIG_RTC_DRV_S35390A is not set
1022# CONFIG_RTC_DRV_FM3130 is not set 1048# CONFIG_RTC_DRV_FM3130 is not set
1049# CONFIG_RTC_DRV_RX8581 is not set
1023 1050
1024# 1051#
1025# SPI RTC drivers 1052# SPI RTC drivers
@@ -1106,10 +1133,7 @@ CONFIG_TMPFS=y
1106CONFIG_HUGETLBFS=y 1133CONFIG_HUGETLBFS=y
1107CONFIG_HUGETLB_PAGE=y 1134CONFIG_HUGETLB_PAGE=y
1108CONFIG_CONFIGFS_FS=m 1135CONFIG_CONFIGFS_FS=m
1109 1136CONFIG_MISC_FILESYSTEMS=y
1110#
1111# Miscellaneous filesystems
1112#
1113# CONFIG_ADFS_FS is not set 1137# CONFIG_ADFS_FS is not set
1114# CONFIG_AFFS_FS is not set 1138# CONFIG_AFFS_FS is not set
1115# CONFIG_HFS_FS is not set 1139# CONFIG_HFS_FS is not set
@@ -1228,6 +1252,7 @@ CONFIG_SCHED_DEBUG=y
1228# CONFIG_LOCK_STAT is not set 1252# CONFIG_LOCK_STAT is not set
1229# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1253# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1230# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1254# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1255CONFIG_STACKTRACE=y
1231# CONFIG_DEBUG_KOBJECT is not set 1256# CONFIG_DEBUG_KOBJECT is not set
1232CONFIG_DEBUG_BUGVERBOSE=y 1257CONFIG_DEBUG_BUGVERBOSE=y
1233CONFIG_DEBUG_INFO=y 1258CONFIG_DEBUG_INFO=y
@@ -1236,6 +1261,7 @@ CONFIG_DEBUG_INFO=y
1236# CONFIG_DEBUG_MEMORY_INIT is not set 1261# CONFIG_DEBUG_MEMORY_INIT is not set
1237# CONFIG_DEBUG_LIST is not set 1262# CONFIG_DEBUG_LIST is not set
1238# CONFIG_DEBUG_SG is not set 1263# CONFIG_DEBUG_SG is not set
1264# CONFIG_DEBUG_NOTIFIERS is not set
1239# CONFIG_FRAME_POINTER is not set 1265# CONFIG_FRAME_POINTER is not set
1240# CONFIG_RCU_TORTURE_TEST is not set 1266# CONFIG_RCU_TORTURE_TEST is not set
1241# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1267# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -1244,16 +1270,28 @@ CONFIG_DEBUG_INFO=y
1244# CONFIG_FAULT_INJECTION is not set 1270# CONFIG_FAULT_INJECTION is not set
1245# CONFIG_LATENCYTOP is not set 1271# CONFIG_LATENCYTOP is not set
1246CONFIG_NOP_TRACER=y 1272CONFIG_NOP_TRACER=y
1247CONFIG_HAVE_FTRACE=y 1273CONFIG_HAVE_FUNCTION_TRACER=y
1248# CONFIG_FTRACE is not set 1274CONFIG_HAVE_DYNAMIC_FTRACE=y
1275CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1276CONFIG_RING_BUFFER=y
1277CONFIG_TRACING=y
1278
1279#
1280# Tracers
1281#
1282# CONFIG_FUNCTION_TRACER is not set
1249# CONFIG_IRQSOFF_TRACER is not set 1283# CONFIG_IRQSOFF_TRACER is not set
1250# CONFIG_PREEMPT_TRACER is not set 1284# CONFIG_PREEMPT_TRACER is not set
1251# CONFIG_SCHED_TRACER is not set 1285# CONFIG_SCHED_TRACER is not set
1252# CONFIG_CONTEXT_SWITCH_TRACER is not set 1286# CONFIG_CONTEXT_SWITCH_TRACER is not set
1253# CONFIG_BOOT_TRACER is not set 1287# CONFIG_BOOT_TRACER is not set
1288# CONFIG_TRACE_BRANCH_PROFILING is not set
1254# CONFIG_STACK_TRACER is not set 1289# CONFIG_STACK_TRACER is not set
1290# CONFIG_FTRACE_STARTUP_TEST is not set
1255# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1291# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1256# CONFIG_SAMPLES is not set 1292# CONFIG_SAMPLES is not set
1293CONFIG_HAVE_ARCH_KGDB=y
1294# CONFIG_KGDB is not set
1257CONFIG_SH_STANDARD_BIOS=y 1295CONFIG_SH_STANDARD_BIOS=y
1258# CONFIG_EARLY_SCIF_CONSOLE is not set 1296# CONFIG_EARLY_SCIF_CONSOLE is not set
1259CONFIG_EARLY_PRINTK=y 1297CONFIG_EARLY_PRINTK=y
@@ -1262,7 +1300,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1262# CONFIG_DEBUG_STACK_USAGE is not set 1300# CONFIG_DEBUG_STACK_USAGE is not set
1263# CONFIG_4KSTACKS is not set 1301# CONFIG_4KSTACKS is not set
1264# CONFIG_IRQSTACKS is not set 1302# CONFIG_IRQSTACKS is not set
1265# CONFIG_SH_KGDB is not set 1303CONFIG_DUMP_CODE=y
1304# CONFIG_SH_NO_BSS_INIT is not set
1305# CONFIG_MORE_COMPILE_OPTIONS is not set
1266 1306
1267# 1307#
1268# Security options 1308# Security options
@@ -1278,11 +1318,15 @@ CONFIG_CRYPTO=y
1278# 1318#
1279# CONFIG_CRYPTO_FIPS is not set 1319# CONFIG_CRYPTO_FIPS is not set
1280CONFIG_CRYPTO_ALGAPI=y 1320CONFIG_CRYPTO_ALGAPI=y
1281CONFIG_CRYPTO_AEAD=y 1321CONFIG_CRYPTO_ALGAPI2=y
1322CONFIG_CRYPTO_AEAD2=y
1282CONFIG_CRYPTO_BLKCIPHER=y 1323CONFIG_CRYPTO_BLKCIPHER=y
1324CONFIG_CRYPTO_BLKCIPHER2=y
1283CONFIG_CRYPTO_HASH=y 1325CONFIG_CRYPTO_HASH=y
1284CONFIG_CRYPTO_RNG=y 1326CONFIG_CRYPTO_HASH2=y
1327CONFIG_CRYPTO_RNG2=y
1285CONFIG_CRYPTO_MANAGER=y 1328CONFIG_CRYPTO_MANAGER=y
1329CONFIG_CRYPTO_MANAGER2=y
1286# CONFIG_CRYPTO_GF128MUL is not set 1330# CONFIG_CRYPTO_GF128MUL is not set
1287# CONFIG_CRYPTO_NULL is not set 1331# CONFIG_CRYPTO_NULL is not set
1288# CONFIG_CRYPTO_CRYPTD is not set 1332# CONFIG_CRYPTO_CRYPTD is not set
@@ -1366,6 +1410,7 @@ CONFIG_CRYPTO_HW=y
1366# Library routines 1410# Library routines
1367# 1411#
1368CONFIG_BITREVERSE=y 1412CONFIG_BITREVERSE=y
1413CONFIG_GENERIC_FIND_LAST_BIT=y
1369# CONFIG_CRC_CCITT is not set 1414# CONFIG_CRC_CCITT is not set
1370# CONFIG_CRC16 is not set 1415# CONFIG_CRC16 is not set
1371CONFIG_CRC_T10DIF=y 1416CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/r7785rp_defconfig b/arch/sh/configs/r7785rp_defconfig
index 043a8a509e09..ebdf0fc436e4 100644
--- a/arch/sh/configs/r7785rp_defconfig
+++ b/arch/sh/configs/r7785rp_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 16:25:30 2008 4# Fri Jan 9 17:14:41 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -13,9 +13,11 @@ CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_HARDIRQS=y 13CONFIG_GENERIC_HARDIRQS=y
14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 14CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
15CONFIG_GENERIC_IRQ_PROBE=y 15CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16CONFIG_GENERIC_GPIO=y
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_NUMA=y 21CONFIG_SYS_SUPPORTS_NUMA=y
20CONFIG_SYS_SUPPORTS_PCI=y 22CONFIG_SYS_SUPPORTS_PCI=y
21CONFIG_STACKTRACE_SUPPORT=y 23CONFIG_STACKTRACE_SUPPORT=y
@@ -63,6 +65,7 @@ CONFIG_UID16=y
63# CONFIG_SYSCTL_SYSCALL is not set 65# CONFIG_SYSCTL_SYSCALL is not set
64CONFIG_KALLSYMS=y 66CONFIG_KALLSYMS=y
65CONFIG_KALLSYMS_ALL=y 67CONFIG_KALLSYMS_ALL=y
68CONFIG_KALLSYMS_STRIP_GENERATED=y
66# CONFIG_KALLSYMS_EXTRA_PASS is not set 69# CONFIG_KALLSYMS_EXTRA_PASS is not set
67CONFIG_HOTPLUG=y 70CONFIG_HOTPLUG=y
68CONFIG_PRINTK=y 71CONFIG_PRINTK=y
@@ -84,6 +87,7 @@ CONFIG_SLAB=y
84# CONFIG_SLUB is not set 87# CONFIG_SLUB is not set
85# CONFIG_SLOB is not set 88# CONFIG_SLOB is not set
86CONFIG_PROFILING=y 89CONFIG_PROFILING=y
90CONFIG_TRACEPOINTS=y
87# CONFIG_MARKERS is not set 91# CONFIG_MARKERS is not set
88CONFIG_OPROFILE=y 92CONFIG_OPROFILE=y
89CONFIG_HAVE_OPROFILE=y 93CONFIG_HAVE_OPROFILE=y
@@ -97,7 +101,6 @@ CONFIG_HAVE_CLK=y
97CONFIG_HAVE_GENERIC_DMA_COHERENT=y 101CONFIG_HAVE_GENERIC_DMA_COHERENT=y
98CONFIG_SLABINFO=y 102CONFIG_SLABINFO=y
99CONFIG_RT_MUTEXES=y 103CONFIG_RT_MUTEXES=y
100# CONFIG_TINY_SHMEM is not set
101CONFIG_BASE_SMALL=0 104CONFIG_BASE_SMALL=0
102CONFIG_MODULES=y 105CONFIG_MODULES=y
103# CONFIG_MODULE_FORCE_LOAD is not set 106# CONFIG_MODULE_FORCE_LOAD is not set
@@ -105,11 +108,9 @@ CONFIG_MODULE_UNLOAD=y
105# CONFIG_MODULE_FORCE_UNLOAD is not set 108# CONFIG_MODULE_FORCE_UNLOAD is not set
106# CONFIG_MODVERSIONS is not set 109# CONFIG_MODVERSIONS is not set
107# CONFIG_MODULE_SRCVERSION_ALL is not set 110# CONFIG_MODULE_SRCVERSION_ALL is not set
108CONFIG_KMOD=y
109CONFIG_BLOCK=y 111CONFIG_BLOCK=y
110# CONFIG_LBD is not set 112# CONFIG_LBD is not set
111# CONFIG_BLK_DEV_IO_TRACE is not set 113# CONFIG_BLK_DEV_IO_TRACE is not set
112# CONFIG_LSF is not set
113# CONFIG_BLK_DEV_BSG is not set 114# CONFIG_BLK_DEV_BSG is not set
114# CONFIG_BLK_DEV_INTEGRITY is not set 115# CONFIG_BLK_DEV_INTEGRITY is not set
115 116
@@ -126,6 +127,11 @@ CONFIG_IOSCHED_NOOP=y
126CONFIG_DEFAULT_NOOP=y 127CONFIG_DEFAULT_NOOP=y
127CONFIG_DEFAULT_IOSCHED="noop" 128CONFIG_DEFAULT_IOSCHED="noop"
128# CONFIG_CLASSIC_RCU is not set 129# CONFIG_CLASSIC_RCU is not set
130# CONFIG_TREE_RCU is not set
131CONFIG_PREEMPT_RCU=y
132CONFIG_RCU_TRACE=y
133# CONFIG_TREE_RCU_TRACE is not set
134CONFIG_PREEMPT_RCU_TRACE=y
129# CONFIG_FREEZER is not set 135# CONFIG_FREEZER is not set
130 136
131# 137#
@@ -135,6 +141,7 @@ CONFIG_CPU_SH4=y
135CONFIG_CPU_SH4A=y 141CONFIG_CPU_SH4A=y
136CONFIG_CPU_SHX2=y 142CONFIG_CPU_SHX2=y
137# CONFIG_CPU_SUBTYPE_SH7619 is not set 143# CONFIG_CPU_SUBTYPE_SH7619 is not set
144# CONFIG_CPU_SUBTYPE_SH7201 is not set
138# CONFIG_CPU_SUBTYPE_SH7203 is not set 145# CONFIG_CPU_SUBTYPE_SH7203 is not set
139# CONFIG_CPU_SUBTYPE_SH7206 is not set 146# CONFIG_CPU_SUBTYPE_SH7206 is not set
140# CONFIG_CPU_SUBTYPE_SH7263 is not set 147# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -211,7 +218,6 @@ CONFIG_SPARSEMEM_STATIC=y
211CONFIG_PAGEFLAGS_EXTENDED=y 218CONFIG_PAGEFLAGS_EXTENDED=y
212CONFIG_SPLIT_PTLOCK_CPUS=4 219CONFIG_SPLIT_PTLOCK_CPUS=4
213CONFIG_MIGRATION=y 220CONFIG_MIGRATION=y
214# CONFIG_RESOURCES_64BIT is not set
215# CONFIG_PHYS_ADDR_T_64BIT is not set 221# CONFIG_PHYS_ADDR_T_64BIT is not set
216CONFIG_ZONE_DMA_FLAG=0 222CONFIG_ZONE_DMA_FLAG=0
217CONFIG_NR_QUICK=2 223CONFIG_NR_QUICK=2
@@ -307,8 +313,6 @@ CONFIG_KEXEC=y
307# CONFIG_PREEMPT_NONE is not set 313# CONFIG_PREEMPT_NONE is not set
308# CONFIG_PREEMPT_VOLUNTARY is not set 314# CONFIG_PREEMPT_VOLUNTARY is not set
309CONFIG_PREEMPT=y 315CONFIG_PREEMPT=y
310CONFIG_PREEMPT_RCU=y
311CONFIG_RCU_TRACE=y
312CONFIG_GUSA=y 316CONFIG_GUSA=y
313 317
314# 318#
@@ -326,6 +330,7 @@ CONFIG_PCI=y
326CONFIG_SH_PCIDMA_NONCOHERENT=y 330CONFIG_SH_PCIDMA_NONCOHERENT=y
327CONFIG_PCI_AUTO=y 331CONFIG_PCI_AUTO=y
328CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 332CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
333# CONFIG_PCIEPORTBUS is not set
329# CONFIG_ARCH_SUPPORTS_MSI is not set 334# CONFIG_ARCH_SUPPORTS_MSI is not set
330# CONFIG_PCI_LEGACY is not set 335# CONFIG_PCI_LEGACY is not set
331# CONFIG_PCI_DEBUG is not set 336# CONFIG_PCI_DEBUG is not set
@@ -339,11 +344,18 @@ CONFIG_BINFMT_ELF=y
339# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 344# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
340# CONFIG_HAVE_AOUT is not set 345# CONFIG_HAVE_AOUT is not set
341CONFIG_BINFMT_MISC=m 346CONFIG_BINFMT_MISC=m
347
348#
349# Power management options (EXPERIMENTAL)
350#
351# CONFIG_PM is not set
352# CONFIG_CPU_IDLE is not set
342CONFIG_NET=y 353CONFIG_NET=y
343 354
344# 355#
345# Networking options 356# Networking options
346# 357#
358CONFIG_COMPAT_NET_DEV_OPS=y
347CONFIG_PACKET=y 359CONFIG_PACKET=y
348# CONFIG_PACKET_MMAP is not set 360# CONFIG_PACKET_MMAP is not set
349CONFIG_UNIX=y 361CONFIG_UNIX=y
@@ -406,6 +418,7 @@ CONFIG_LLC=m
406# CONFIG_ECONET is not set 418# CONFIG_ECONET is not set
407# CONFIG_WAN_ROUTER is not set 419# CONFIG_WAN_ROUTER is not set
408# CONFIG_NET_SCHED is not set 420# CONFIG_NET_SCHED is not set
421# CONFIG_DCB is not set
409 422
410# 423#
411# Network testing 424# Network testing
@@ -423,8 +436,8 @@ CONFIG_WIRELESS=y
423# CONFIG_WIRELESS_OLD_REGULATORY is not set 436# CONFIG_WIRELESS_OLD_REGULATORY is not set
424CONFIG_WIRELESS_EXT=y 437CONFIG_WIRELESS_EXT=y
425CONFIG_WIRELESS_EXT_SYSFS=y 438CONFIG_WIRELESS_EXT_SYSFS=y
439# CONFIG_LIB80211 is not set
426# CONFIG_MAC80211 is not set 440# CONFIG_MAC80211 is not set
427# CONFIG_IEEE80211 is not set
428# CONFIG_RFKILL is not set 441# CONFIG_RFKILL is not set
429# CONFIG_NET_9P is not set 442# CONFIG_NET_9P is not set
430 443
@@ -467,8 +480,10 @@ CONFIG_MISC_DEVICES=y
467CONFIG_EEPROM_93CX6=y 480CONFIG_EEPROM_93CX6=y
468# CONFIG_SGI_IOC4 is not set 481# CONFIG_SGI_IOC4 is not set
469# CONFIG_TIFM_CORE is not set 482# CONFIG_TIFM_CORE is not set
483# CONFIG_ICS932S401 is not set
470# CONFIG_ENCLOSURE_SERVICES is not set 484# CONFIG_ENCLOSURE_SERVICES is not set
471# CONFIG_HP_ILO is not set 485# CONFIG_HP_ILO is not set
486# CONFIG_C2PORT is not set
472CONFIG_HAVE_IDE=y 487CONFIG_HAVE_IDE=y
473# CONFIG_IDE is not set 488# CONFIG_IDE is not set
474 489
@@ -511,6 +526,7 @@ CONFIG_SCSI_WAIT_SCAN=m
511# CONFIG_SCSI_SRP_ATTRS is not set 526# CONFIG_SCSI_SRP_ATTRS is not set
512CONFIG_SCSI_LOWLEVEL=y 527CONFIG_SCSI_LOWLEVEL=y
513# CONFIG_ISCSI_TCP is not set 528# CONFIG_ISCSI_TCP is not set
529# CONFIG_SCSI_CXGB3_ISCSI is not set
514# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 530# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
515# CONFIG_SCSI_3W_9XXX is not set 531# CONFIG_SCSI_3W_9XXX is not set
516# CONFIG_SCSI_ACARD is not set 532# CONFIG_SCSI_ACARD is not set
@@ -524,6 +540,8 @@ CONFIG_SCSI_LOWLEVEL=y
524# CONFIG_MEGARAID_LEGACY is not set 540# CONFIG_MEGARAID_LEGACY is not set
525# CONFIG_MEGARAID_SAS is not set 541# CONFIG_MEGARAID_SAS is not set
526# CONFIG_SCSI_HPTIOP is not set 542# CONFIG_SCSI_HPTIOP is not set
543# CONFIG_LIBFC is not set
544# CONFIG_FCOE is not set
527# CONFIG_SCSI_DMX3191D is not set 545# CONFIG_SCSI_DMX3191D is not set
528# CONFIG_SCSI_FUTURE_DOMAIN is not set 546# CONFIG_SCSI_FUTURE_DOMAIN is not set
529# CONFIG_SCSI_IPS is not set 547# CONFIG_SCSI_IPS is not set
@@ -636,6 +654,7 @@ CONFIG_AX88796_93CX6=y
636# CONFIG_NET_VENDOR_3COM is not set 654# CONFIG_NET_VENDOR_3COM is not set
637# CONFIG_SMC91X is not set 655# CONFIG_SMC91X is not set
638# CONFIG_SMC911X is not set 656# CONFIG_SMC911X is not set
657# CONFIG_SMSC911X is not set
639# CONFIG_NET_TULIP is not set 658# CONFIG_NET_TULIP is not set
640# CONFIG_HP100 is not set 659# CONFIG_HP100 is not set
641# CONFIG_IBM_NEW_EMAC_ZMII is not set 660# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -671,6 +690,7 @@ CONFIG_R8169=y
671# CONFIG_JME is not set 690# CONFIG_JME is not set
672CONFIG_NETDEV_10000=y 691CONFIG_NETDEV_10000=y
673# CONFIG_CHELSIO_T1 is not set 692# CONFIG_CHELSIO_T1 is not set
693CONFIG_CHELSIO_T3_DEPENDS=y
674# CONFIG_CHELSIO_T3 is not set 694# CONFIG_CHELSIO_T3 is not set
675# CONFIG_ENIC is not set 695# CONFIG_ENIC is not set
676# CONFIG_IXGBE is not set 696# CONFIG_IXGBE is not set
@@ -679,6 +699,7 @@ CONFIG_NETDEV_10000=y
679# CONFIG_MYRI10GE is not set 699# CONFIG_MYRI10GE is not set
680# CONFIG_NETXEN_NIC is not set 700# CONFIG_NETXEN_NIC is not set
681# CONFIG_NIU is not set 701# CONFIG_NIU is not set
702# CONFIG_MLX4_EN is not set
682# CONFIG_MLX4_CORE is not set 703# CONFIG_MLX4_CORE is not set
683# CONFIG_TEHUTI is not set 704# CONFIG_TEHUTI is not set
684# CONFIG_BNX2X is not set 705# CONFIG_BNX2X is not set
@@ -732,6 +753,7 @@ CONFIG_KEYBOARD_ATKBD=y
732# CONFIG_KEYBOARD_XTKBD is not set 753# CONFIG_KEYBOARD_XTKBD is not set
733# CONFIG_KEYBOARD_NEWTON is not set 754# CONFIG_KEYBOARD_NEWTON is not set
734# CONFIG_KEYBOARD_STOWAWAY is not set 755# CONFIG_KEYBOARD_STOWAWAY is not set
756# CONFIG_KEYBOARD_GPIO is not set
735# CONFIG_KEYBOARD_SH_KEYSC is not set 757# CONFIG_KEYBOARD_SH_KEYSC is not set
736# CONFIG_INPUT_MOUSE is not set 758# CONFIG_INPUT_MOUSE is not set
737# CONFIG_INPUT_JOYSTICK is not set 759# CONFIG_INPUT_JOYSTICK is not set
@@ -773,6 +795,7 @@ CONFIG_SERIAL_CORE=y
773CONFIG_SERIAL_CORE_CONSOLE=y 795CONFIG_SERIAL_CORE_CONSOLE=y
774# CONFIG_SERIAL_JSM is not set 796# CONFIG_SERIAL_JSM is not set
775CONFIG_UNIX98_PTYS=y 797CONFIG_UNIX98_PTYS=y
798# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
776CONFIG_LEGACY_PTYS=y 799CONFIG_LEGACY_PTYS=y
777CONFIG_LEGACY_PTY_COUNT=256 800CONFIG_LEGACY_PTY_COUNT=256
778# CONFIG_IPMI_HANDLER is not set 801# CONFIG_IPMI_HANDLER is not set
@@ -812,6 +835,7 @@ CONFIG_I2C_HELPER_AUTO=y
812# 835#
813# I2C system bus drivers (mostly embedded / system-on-chip) 836# I2C system bus drivers (mostly embedded / system-on-chip)
814# 837#
838# CONFIG_I2C_GPIO is not set
815CONFIG_I2C_HIGHLANDER=y 839CONFIG_I2C_HIGHLANDER=y
816# CONFIG_I2C_OCORES is not set 840# CONFIG_I2C_OCORES is not set
817# CONFIG_I2C_SH_MOBILE is not set 841# CONFIG_I2C_SH_MOBILE is not set
@@ -851,6 +875,30 @@ CONFIG_I2C_HIGHLANDER=y
851# CONFIG_I2C_DEBUG_BUS is not set 875# CONFIG_I2C_DEBUG_BUS is not set
852# CONFIG_I2C_DEBUG_CHIP is not set 876# CONFIG_I2C_DEBUG_CHIP is not set
853# CONFIG_SPI is not set 877# CONFIG_SPI is not set
878CONFIG_ARCH_REQUIRE_GPIOLIB=y
879CONFIG_GPIOLIB=y
880# CONFIG_DEBUG_GPIO is not set
881# CONFIG_GPIO_SYSFS is not set
882
883#
884# Memory mapped GPIO expanders:
885#
886
887#
888# I2C GPIO expanders:
889#
890# CONFIG_GPIO_MAX732X is not set
891# CONFIG_GPIO_PCA953X is not set
892# CONFIG_GPIO_PCF857X is not set
893
894#
895# PCI GPIO expanders:
896#
897# CONFIG_GPIO_BT8XX is not set
898
899#
900# SPI GPIO expanders:
901#
854# CONFIG_W1 is not set 902# CONFIG_W1 is not set
855# CONFIG_POWER_SUPPLY is not set 903# CONFIG_POWER_SUPPLY is not set
856CONFIG_HWMON=y 904CONFIG_HWMON=y
@@ -863,6 +911,7 @@ CONFIG_HWMON=y
863# CONFIG_SENSORS_ADM1029 is not set 911# CONFIG_SENSORS_ADM1029 is not set
864# CONFIG_SENSORS_ADM1031 is not set 912# CONFIG_SENSORS_ADM1031 is not set
865# CONFIG_SENSORS_ADM9240 is not set 913# CONFIG_SENSORS_ADM9240 is not set
914# CONFIG_SENSORS_ADT7462 is not set
866# CONFIG_SENSORS_ADT7470 is not set 915# CONFIG_SENSORS_ADT7470 is not set
867# CONFIG_SENSORS_ADT7473 is not set 916# CONFIG_SENSORS_ADT7473 is not set
868# CONFIG_SENSORS_ATXP1 is not set 917# CONFIG_SENSORS_ATXP1 is not set
@@ -911,11 +960,11 @@ CONFIG_HWMON=y
911# CONFIG_THERMAL is not set 960# CONFIG_THERMAL is not set
912# CONFIG_THERMAL_HWMON is not set 961# CONFIG_THERMAL_HWMON is not set
913# CONFIG_WATCHDOG is not set 962# CONFIG_WATCHDOG is not set
963CONFIG_SSB_POSSIBLE=y
914 964
915# 965#
916# Sonics Silicon Backplane 966# Sonics Silicon Backplane
917# 967#
918CONFIG_SSB_POSSIBLE=y
919# CONFIG_SSB is not set 968# CONFIG_SSB is not set
920 969
921# 970#
@@ -924,9 +973,13 @@ CONFIG_SSB_POSSIBLE=y
924# CONFIG_MFD_CORE is not set 973# CONFIG_MFD_CORE is not set
925# CONFIG_MFD_SM501 is not set 974# CONFIG_MFD_SM501 is not set
926# CONFIG_HTC_PASIC3 is not set 975# CONFIG_HTC_PASIC3 is not set
976# CONFIG_TPS65010 is not set
977# CONFIG_TWL4030_CORE is not set
927# CONFIG_MFD_TMIO is not set 978# CONFIG_MFD_TMIO is not set
979# CONFIG_PMIC_DA903X is not set
928# CONFIG_MFD_WM8400 is not set 980# CONFIG_MFD_WM8400 is not set
929# CONFIG_MFD_WM8350_I2C is not set 981# CONFIG_MFD_WM8350_I2C is not set
982# CONFIG_REGULATOR is not set
930 983
931# 984#
932# Multimedia devices 985# Multimedia devices
@@ -954,15 +1007,16 @@ CONFIG_FB=y
954# CONFIG_FIRMWARE_EDID is not set 1007# CONFIG_FIRMWARE_EDID is not set
955# CONFIG_FB_DDC is not set 1008# CONFIG_FB_DDC is not set
956# CONFIG_FB_BOOT_VESA_SUPPORT is not set 1009# CONFIG_FB_BOOT_VESA_SUPPORT is not set
957CONFIG_FB_CFB_FILLRECT=m 1010# CONFIG_FB_CFB_FILLRECT is not set
958CONFIG_FB_CFB_COPYAREA=m 1011# CONFIG_FB_CFB_COPYAREA is not set
959CONFIG_FB_CFB_IMAGEBLIT=m 1012# CONFIG_FB_CFB_IMAGEBLIT is not set
960# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 1013# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
961# CONFIG_FB_SYS_FILLRECT is not set 1014CONFIG_FB_SYS_FILLRECT=m
962# CONFIG_FB_SYS_COPYAREA is not set 1015CONFIG_FB_SYS_COPYAREA=m
963# CONFIG_FB_SYS_IMAGEBLIT is not set 1016CONFIG_FB_SYS_IMAGEBLIT=m
964# CONFIG_FB_FOREIGN_ENDIAN is not set 1017# CONFIG_FB_FOREIGN_ENDIAN is not set
965# CONFIG_FB_SYS_FOPS is not set 1018CONFIG_FB_SYS_FOPS=m
1019CONFIG_FB_DEFERRED_IO=y
966# CONFIG_FB_SVGALIB is not set 1020# CONFIG_FB_SVGALIB is not set
967# CONFIG_FB_MACMODES is not set 1021# CONFIG_FB_MACMODES is not set
968# CONFIG_FB_BACKLIGHT is not set 1022# CONFIG_FB_BACKLIGHT is not set
@@ -1000,6 +1054,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
1000CONFIG_FB_SH_MOBILE_LCDC=m 1054CONFIG_FB_SH_MOBILE_LCDC=m
1001# CONFIG_FB_VIRTUAL is not set 1055# CONFIG_FB_VIRTUAL is not set
1002# CONFIG_FB_METRONOME is not set 1056# CONFIG_FB_METRONOME is not set
1057# CONFIG_FB_MB862XX is not set
1003# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1058# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1004 1059
1005# 1060#
@@ -1034,9 +1089,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
1034# 1089#
1035 1090
1036# 1091#
1037# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1092# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1038# 1093#
1039# CONFIG_USB_GADGET is not set 1094# CONFIG_USB_GADGET is not set
1095# CONFIG_UWB is not set
1040# CONFIG_MMC is not set 1096# CONFIG_MMC is not set
1041# CONFIG_MEMSTICK is not set 1097# CONFIG_MEMSTICK is not set
1042# CONFIG_NEW_LEDS is not set 1098# CONFIG_NEW_LEDS is not set
@@ -1072,6 +1128,7 @@ CONFIG_RTC_DRV_RS5C372=y
1072# CONFIG_RTC_DRV_M41T80 is not set 1128# CONFIG_RTC_DRV_M41T80 is not set
1073# CONFIG_RTC_DRV_S35390A is not set 1129# CONFIG_RTC_DRV_S35390A is not set
1074# CONFIG_RTC_DRV_FM3130 is not set 1130# CONFIG_RTC_DRV_FM3130 is not set
1131# CONFIG_RTC_DRV_RX8581 is not set
1075 1132
1076# 1133#
1077# SPI RTC drivers 1134# SPI RTC drivers
@@ -1158,10 +1215,7 @@ CONFIG_TMPFS=y
1158CONFIG_HUGETLBFS=y 1215CONFIG_HUGETLBFS=y
1159CONFIG_HUGETLB_PAGE=y 1216CONFIG_HUGETLB_PAGE=y
1160CONFIG_CONFIGFS_FS=m 1217CONFIG_CONFIGFS_FS=m
1161 1218CONFIG_MISC_FILESYSTEMS=y
1162#
1163# Miscellaneous filesystems
1164#
1165# CONFIG_ADFS_FS is not set 1219# CONFIG_ADFS_FS is not set
1166# CONFIG_AFFS_FS is not set 1220# CONFIG_AFFS_FS is not set
1167# CONFIG_HFS_FS is not set 1221# CONFIG_HFS_FS is not set
@@ -1291,6 +1345,7 @@ CONFIG_DEBUG_INFO=y
1291# CONFIG_DEBUG_MEMORY_INIT is not set 1345# CONFIG_DEBUG_MEMORY_INIT is not set
1292# CONFIG_DEBUG_LIST is not set 1346# CONFIG_DEBUG_LIST is not set
1293# CONFIG_DEBUG_SG is not set 1347# CONFIG_DEBUG_SG is not set
1348# CONFIG_DEBUG_NOTIFIERS is not set
1294CONFIG_FRAME_POINTER=y 1349CONFIG_FRAME_POINTER=y
1295# CONFIG_RCU_TORTURE_TEST is not set 1350# CONFIG_RCU_TORTURE_TEST is not set
1296# CONFIG_KPROBES_SANITY_TEST is not set 1351# CONFIG_KPROBES_SANITY_TEST is not set
@@ -1300,16 +1355,28 @@ CONFIG_FRAME_POINTER=y
1300# CONFIG_FAULT_INJECTION is not set 1355# CONFIG_FAULT_INJECTION is not set
1301# CONFIG_LATENCYTOP is not set 1356# CONFIG_LATENCYTOP is not set
1302CONFIG_NOP_TRACER=y 1357CONFIG_NOP_TRACER=y
1303CONFIG_HAVE_FTRACE=y 1358CONFIG_HAVE_FUNCTION_TRACER=y
1304# CONFIG_FTRACE is not set 1359CONFIG_HAVE_DYNAMIC_FTRACE=y
1360CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1361CONFIG_RING_BUFFER=y
1362CONFIG_TRACING=y
1363
1364#
1365# Tracers
1366#
1367# CONFIG_FUNCTION_TRACER is not set
1305# CONFIG_IRQSOFF_TRACER is not set 1368# CONFIG_IRQSOFF_TRACER is not set
1306# CONFIG_PREEMPT_TRACER is not set 1369# CONFIG_PREEMPT_TRACER is not set
1307# CONFIG_SCHED_TRACER is not set 1370# CONFIG_SCHED_TRACER is not set
1308# CONFIG_CONTEXT_SWITCH_TRACER is not set 1371# CONFIG_CONTEXT_SWITCH_TRACER is not set
1309# CONFIG_BOOT_TRACER is not set 1372# CONFIG_BOOT_TRACER is not set
1373# CONFIG_TRACE_BRANCH_PROFILING is not set
1310# CONFIG_STACK_TRACER is not set 1374# CONFIG_STACK_TRACER is not set
1375# CONFIG_FTRACE_STARTUP_TEST is not set
1311# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1376# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1312# CONFIG_SAMPLES is not set 1377# CONFIG_SAMPLES is not set
1378CONFIG_HAVE_ARCH_KGDB=y
1379# CONFIG_KGDB is not set
1313CONFIG_SH_STANDARD_BIOS=y 1380CONFIG_SH_STANDARD_BIOS=y
1314# CONFIG_EARLY_SCIF_CONSOLE is not set 1381# CONFIG_EARLY_SCIF_CONSOLE is not set
1315CONFIG_EARLY_PRINTK=y 1382CONFIG_EARLY_PRINTK=y
@@ -1318,7 +1385,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1318CONFIG_DEBUG_STACK_USAGE=y 1385CONFIG_DEBUG_STACK_USAGE=y
1319CONFIG_4KSTACKS=y 1386CONFIG_4KSTACKS=y
1320# CONFIG_IRQSTACKS is not set 1387# CONFIG_IRQSTACKS is not set
1321# CONFIG_SH_KGDB is not set 1388CONFIG_DUMP_CODE=y
1389# CONFIG_SH_NO_BSS_INIT is not set
1390# CONFIG_MORE_COMPILE_OPTIONS is not set
1322 1391
1323# 1392#
1324# Security options 1393# Security options
@@ -1334,11 +1403,15 @@ CONFIG_CRYPTO=y
1334# 1403#
1335# CONFIG_CRYPTO_FIPS is not set 1404# CONFIG_CRYPTO_FIPS is not set
1336CONFIG_CRYPTO_ALGAPI=y 1405CONFIG_CRYPTO_ALGAPI=y
1337CONFIG_CRYPTO_AEAD=y 1406CONFIG_CRYPTO_ALGAPI2=y
1407CONFIG_CRYPTO_AEAD2=y
1338CONFIG_CRYPTO_BLKCIPHER=y 1408CONFIG_CRYPTO_BLKCIPHER=y
1409CONFIG_CRYPTO_BLKCIPHER2=y
1339CONFIG_CRYPTO_HASH=y 1410CONFIG_CRYPTO_HASH=y
1340CONFIG_CRYPTO_RNG=y 1411CONFIG_CRYPTO_HASH2=y
1412CONFIG_CRYPTO_RNG2=y
1341CONFIG_CRYPTO_MANAGER=y 1413CONFIG_CRYPTO_MANAGER=y
1414CONFIG_CRYPTO_MANAGER2=y
1342# CONFIG_CRYPTO_GF128MUL is not set 1415# CONFIG_CRYPTO_GF128MUL is not set
1343# CONFIG_CRYPTO_NULL is not set 1416# CONFIG_CRYPTO_NULL is not set
1344# CONFIG_CRYPTO_CRYPTD is not set 1417# CONFIG_CRYPTO_CRYPTD is not set
@@ -1422,6 +1495,7 @@ CONFIG_CRYPTO_HW=y
1422# Library routines 1495# Library routines
1423# 1496#
1424CONFIG_BITREVERSE=y 1497CONFIG_BITREVERSE=y
1498CONFIG_GENERIC_FIND_LAST_BIT=y
1425# CONFIG_CRC_CCITT is not set 1499# CONFIG_CRC_CCITT is not set
1426# CONFIG_CRC16 is not set 1500# CONFIG_CRC16 is not set
1427CONFIG_CRC_T10DIF=y 1501CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/rsk7201_defconfig b/arch/sh/configs/rsk7201_defconfig
index 014c18cbf46a..64ee69eef47c 100644
--- a/arch/sh/configs/rsk7201_defconfig
+++ b/arch/sh/configs/rsk7201_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.28-rc6 3# Linux kernel version: 2.6.28
4# Mon Dec 8 14:48:02 2008 4# Fri Jan 9 17:19:04 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -77,6 +77,7 @@ CONFIG_VM_EVENT_COUNTERS=y
77# CONFIG_SLUB is not set 77# CONFIG_SLUB is not set
78CONFIG_SLOB=y 78CONFIG_SLOB=y
79CONFIG_PROFILING=y 79CONFIG_PROFILING=y
80CONFIG_TRACEPOINTS=y
80# CONFIG_MARKERS is not set 81# CONFIG_MARKERS is not set
81CONFIG_OPROFILE=y 82CONFIG_OPROFILE=y
82CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
@@ -87,18 +88,15 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
87CONFIG_HAVE_CLK=y 88CONFIG_HAVE_CLK=y
88CONFIG_HAVE_GENERIC_DMA_COHERENT=y 89CONFIG_HAVE_GENERIC_DMA_COHERENT=y
89CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
90CONFIG_TINY_SHMEM=y
91CONFIG_BASE_SMALL=0 91CONFIG_BASE_SMALL=0
92CONFIG_MODULES=y 92CONFIG_MODULES=y
93# CONFIG_MODULE_FORCE_LOAD is not set 93# CONFIG_MODULE_FORCE_LOAD is not set
94# CONFIG_MODULE_UNLOAD is not set 94# CONFIG_MODULE_UNLOAD is not set
95# CONFIG_MODVERSIONS is not set 95# CONFIG_MODVERSIONS is not set
96# CONFIG_MODULE_SRCVERSION_ALL is not set 96# CONFIG_MODULE_SRCVERSION_ALL is not set
97CONFIG_KMOD=y
98CONFIG_BLOCK=y 97CONFIG_BLOCK=y
99# CONFIG_LBD is not set 98# CONFIG_LBD is not set
100# CONFIG_BLK_DEV_IO_TRACE is not set 99# CONFIG_BLK_DEV_IO_TRACE is not set
101# CONFIG_LSF is not set
102# CONFIG_BLK_DEV_BSG is not set 100# CONFIG_BLK_DEV_BSG is not set
103# CONFIG_BLK_DEV_INTEGRITY is not set 101# CONFIG_BLK_DEV_INTEGRITY is not set
104 102
@@ -115,6 +113,10 @@ CONFIG_IOSCHED_NOOP=y
115CONFIG_DEFAULT_NOOP=y 113CONFIG_DEFAULT_NOOP=y
116CONFIG_DEFAULT_IOSCHED="noop" 114CONFIG_DEFAULT_IOSCHED="noop"
117CONFIG_CLASSIC_RCU=y 115CONFIG_CLASSIC_RCU=y
116# CONFIG_TREE_RCU is not set
117# CONFIG_PREEMPT_RCU is not set
118# CONFIG_TREE_RCU_TRACE is not set
119# CONFIG_PREEMPT_RCU_TRACE is not set
118# CONFIG_FREEZER is not set 120# CONFIG_FREEZER is not set
119 121
120# 122#
@@ -185,7 +187,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
185CONFIG_SPARSEMEM_STATIC=y 187CONFIG_SPARSEMEM_STATIC=y
186CONFIG_PAGEFLAGS_EXTENDED=y 188CONFIG_PAGEFLAGS_EXTENDED=y
187CONFIG_SPLIT_PTLOCK_CPUS=4 189CONFIG_SPLIT_PTLOCK_CPUS=4
188# CONFIG_RESOURCES_64BIT is not set
189# CONFIG_PHYS_ADDR_T_64BIT is not set 190# CONFIG_PHYS_ADDR_T_64BIT is not set
190CONFIG_ZONE_DMA_FLAG=0 191CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=2 192CONFIG_NR_QUICK=2
@@ -563,7 +564,6 @@ CONFIG_RTC_DRV_SH=y
563# CONFIG_DMADEVICES is not set 564# CONFIG_DMADEVICES is not set
564# CONFIG_UIO is not set 565# CONFIG_UIO is not set
565# CONFIG_STAGING is not set 566# CONFIG_STAGING is not set
566CONFIG_STAGING_EXCLUDE_BUILD=y
567 567
568# 568#
569# File systems 569# File systems
@@ -606,10 +606,7 @@ CONFIG_SYSFS=y
606# CONFIG_TMPFS is not set 606# CONFIG_TMPFS is not set
607# CONFIG_HUGETLB_PAGE is not set 607# CONFIG_HUGETLB_PAGE is not set
608# CONFIG_CONFIGFS_FS is not set 608# CONFIG_CONFIGFS_FS is not set
609 609CONFIG_MISC_FILESYSTEMS=y
610#
611# Miscellaneous filesystems
612#
613# CONFIG_ADFS_FS is not set 610# CONFIG_ADFS_FS is not set
614# CONFIG_AFFS_FS is not set 611# CONFIG_AFFS_FS is not set
615# CONFIG_HFS_FS is not set 612# CONFIG_HFS_FS is not set
@@ -658,22 +655,28 @@ CONFIG_MAGIC_SYSRQ=y
658CONFIG_DEBUG_FS=y 655CONFIG_DEBUG_FS=y
659# CONFIG_HEADERS_CHECK is not set 656# CONFIG_HEADERS_CHECK is not set
660# CONFIG_DEBUG_KERNEL is not set 657# CONFIG_DEBUG_KERNEL is not set
658CONFIG_STACKTRACE=y
661# CONFIG_DEBUG_BUGVERBOSE is not set 659# CONFIG_DEBUG_BUGVERBOSE is not set
662# CONFIG_DEBUG_MEMORY_INIT is not set 660# CONFIG_DEBUG_MEMORY_INIT is not set
663# CONFIG_RCU_CPU_STALL_DETECTOR is not set 661# CONFIG_RCU_CPU_STALL_DETECTOR is not set
664# CONFIG_LATENCYTOP is not set 662# CONFIG_LATENCYTOP is not set
665CONFIG_SYSCTL_SYSCALL_CHECK=y 663CONFIG_SYSCTL_SYSCALL_CHECK=y
664CONFIG_NOP_TRACER=y
666CONFIG_HAVE_FUNCTION_TRACER=y 665CONFIG_HAVE_FUNCTION_TRACER=y
667CONFIG_HAVE_DYNAMIC_FTRACE=y 666CONFIG_HAVE_DYNAMIC_FTRACE=y
668CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 667CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
668CONFIG_RING_BUFFER=y
669CONFIG_TRACING=y
669 670
670# 671#
671# Tracers 672# Tracers
672# 673#
673# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 674# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
674# CONFIG_SAMPLES is not set 675# CONFIG_SAMPLES is not set
676CONFIG_HAVE_ARCH_KGDB=y
675# CONFIG_SH_STANDARD_BIOS is not set 677# CONFIG_SH_STANDARD_BIOS is not set
676# CONFIG_EARLY_SCIF_CONSOLE is not set 678# CONFIG_EARLY_SCIF_CONSOLE is not set
679# CONFIG_MORE_COMPILE_OPTIONS is not set
677 680
678# 681#
679# Security options 682# Security options
@@ -688,6 +691,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
688# Library routines 691# Library routines
689# 692#
690CONFIG_BITREVERSE=y 693CONFIG_BITREVERSE=y
694CONFIG_GENERIC_FIND_LAST_BIT=y
691# CONFIG_CRC_CCITT is not set 695# CONFIG_CRC_CCITT is not set
692# CONFIG_CRC16 is not set 696# CONFIG_CRC16 is not set
693# CONFIG_CRC_T10DIF is not set 697# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/rsk7203_defconfig b/arch/sh/configs/rsk7203_defconfig
index dcdef31cf19b..8d7a5972a86a 100644
--- a/arch/sh/configs/rsk7203_defconfig
+++ b/arch/sh/configs/rsk7203_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.28-rc6 3# Linux kernel version: 2.6.28
4# Mon Dec 8 14:35:03 2008 4# Fri Jan 9 17:20:31 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -62,6 +62,7 @@ CONFIG_UID16=y
62CONFIG_SYSCTL_SYSCALL=y 62CONFIG_SYSCTL_SYSCALL=y
63CONFIG_KALLSYMS=y 63CONFIG_KALLSYMS=y
64CONFIG_KALLSYMS_ALL=y 64CONFIG_KALLSYMS_ALL=y
65CONFIG_KALLSYMS_STRIP_GENERATED=y
65# CONFIG_KALLSYMS_EXTRA_PASS is not set 66# CONFIG_KALLSYMS_EXTRA_PASS is not set
66CONFIG_HOTPLUG=y 67CONFIG_HOTPLUG=y
67CONFIG_PRINTK=y 68CONFIG_PRINTK=y
@@ -81,6 +82,7 @@ CONFIG_VM_EVENT_COUNTERS=y
81# CONFIG_SLUB is not set 82# CONFIG_SLUB is not set
82CONFIG_SLOB=y 83CONFIG_SLOB=y
83CONFIG_PROFILING=y 84CONFIG_PROFILING=y
85CONFIG_TRACEPOINTS=y
84# CONFIG_MARKERS is not set 86# CONFIG_MARKERS is not set
85CONFIG_OPROFILE=y 87CONFIG_OPROFILE=y
86CONFIG_HAVE_OPROFILE=y 88CONFIG_HAVE_OPROFILE=y
@@ -91,18 +93,15 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
91CONFIG_HAVE_CLK=y 93CONFIG_HAVE_CLK=y
92CONFIG_HAVE_GENERIC_DMA_COHERENT=y 94CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_RT_MUTEXES=y 95CONFIG_RT_MUTEXES=y
94CONFIG_TINY_SHMEM=y
95CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
96CONFIG_MODULES=y 97CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set 98# CONFIG_MODULE_FORCE_LOAD is not set
98# CONFIG_MODULE_UNLOAD is not set 99# CONFIG_MODULE_UNLOAD is not set
99# CONFIG_MODVERSIONS is not set 100# CONFIG_MODVERSIONS is not set
100# CONFIG_MODULE_SRCVERSION_ALL is not set 101# CONFIG_MODULE_SRCVERSION_ALL is not set
101CONFIG_KMOD=y
102CONFIG_BLOCK=y 102CONFIG_BLOCK=y
103# CONFIG_LBD is not set 103# CONFIG_LBD is not set
104# CONFIG_BLK_DEV_IO_TRACE is not set 104# CONFIG_BLK_DEV_IO_TRACE is not set
105# CONFIG_LSF is not set
106# CONFIG_BLK_DEV_BSG is not set 105# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set 106# CONFIG_BLK_DEV_INTEGRITY is not set
108 107
@@ -119,6 +118,10 @@ CONFIG_IOSCHED_NOOP=y
119CONFIG_DEFAULT_NOOP=y 118CONFIG_DEFAULT_NOOP=y
120CONFIG_DEFAULT_IOSCHED="noop" 119CONFIG_DEFAULT_IOSCHED="noop"
121CONFIG_CLASSIC_RCU=y 120CONFIG_CLASSIC_RCU=y
121# CONFIG_TREE_RCU is not set
122# CONFIG_PREEMPT_RCU is not set
123# CONFIG_TREE_RCU_TRACE is not set
124# CONFIG_PREEMPT_RCU_TRACE is not set
122# CONFIG_FREEZER is not set 125# CONFIG_FREEZER is not set
123 126
124# 127#
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
189CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
190CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
191CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
192# CONFIG_RESOURCES_64BIT is not set
193# CONFIG_PHYS_ADDR_T_64BIT is not set 195# CONFIG_PHYS_ADDR_T_64BIT is not set
194CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
195CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
@@ -313,6 +315,8 @@ CONFIG_NET=y
313# 315#
314# Networking options 316# Networking options
315# 317#
318# CONFIG_NET_NS is not set
319CONFIG_COMPAT_NET_DEV_OPS=y
316# CONFIG_PACKET is not set 320# CONFIG_PACKET is not set
317# CONFIG_UNIX is not set 321# CONFIG_UNIX is not set
318# CONFIG_NET_KEY is not set 322# CONFIG_NET_KEY is not set
@@ -361,6 +365,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
361# CONFIG_ECONET is not set 365# CONFIG_ECONET is not set
362# CONFIG_WAN_ROUTER is not set 366# CONFIG_WAN_ROUTER is not set
363# CONFIG_NET_SCHED is not set 367# CONFIG_NET_SCHED is not set
368# CONFIG_DCB is not set
364 369
365# 370#
366# Network testing 371# Network testing
@@ -376,8 +381,8 @@ CONFIG_WIRELESS=y
376# CONFIG_CFG80211 is not set 381# CONFIG_CFG80211 is not set
377# CONFIG_WIRELESS_OLD_REGULATORY is not set 382# CONFIG_WIRELESS_OLD_REGULATORY is not set
378# CONFIG_WIRELESS_EXT is not set 383# CONFIG_WIRELESS_EXT is not set
384# CONFIG_LIB80211 is not set
379# CONFIG_MAC80211 is not set 385# CONFIG_MAC80211 is not set
380# CONFIG_IEEE80211 is not set
381# CONFIG_RFKILL is not set 386# CONFIG_RFKILL is not set
382# CONFIG_NET_9P is not set 387# CONFIG_NET_9P is not set
383 388
@@ -509,13 +514,33 @@ CONFIG_NETDEVICES=y
509# CONFIG_EQUALIZER is not set 514# CONFIG_EQUALIZER is not set
510# CONFIG_TUN is not set 515# CONFIG_TUN is not set
511# CONFIG_VETH is not set 516# CONFIG_VETH is not set
512# CONFIG_PHYLIB is not set 517CONFIG_PHYLIB=y
518
519#
520# MII PHY device drivers
521#
522# CONFIG_MARVELL_PHY is not set
523# CONFIG_DAVICOM_PHY is not set
524# CONFIG_QSEMI_PHY is not set
525# CONFIG_LXT_PHY is not set
526# CONFIG_CICADA_PHY is not set
527# CONFIG_VITESSE_PHY is not set
528CONFIG_SMSC_PHY=y
529# CONFIG_BROADCOM_PHY is not set
530# CONFIG_ICPLUS_PHY is not set
531# CONFIG_REALTEK_PHY is not set
532# CONFIG_NATIONAL_PHY is not set
533# CONFIG_STE10XP is not set
534# CONFIG_LSI_ET1011C_PHY is not set
535# CONFIG_FIXED_PHY is not set
536# CONFIG_MDIO_BITBANG is not set
513CONFIG_NET_ETHERNET=y 537CONFIG_NET_ETHERNET=y
514CONFIG_MII=y 538CONFIG_MII=y
515# CONFIG_AX88796 is not set 539# CONFIG_AX88796 is not set
516# CONFIG_STNIC is not set 540# CONFIG_STNIC is not set
517# CONFIG_SMC91X is not set 541# CONFIG_SMC91X is not set
518CONFIG_SMC911X=y 542# CONFIG_SMC911X is not set
543CONFIG_SMSC911X=y
519# CONFIG_IBM_NEW_EMAC_ZMII is not set 544# CONFIG_IBM_NEW_EMAC_ZMII is not set
520# CONFIG_IBM_NEW_EMAC_RGMII is not set 545# CONFIG_IBM_NEW_EMAC_RGMII is not set
521# CONFIG_IBM_NEW_EMAC_TAH is not set 546# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -611,6 +636,26 @@ CONFIG_SERIAL_CORE_CONSOLE=y
611# CONFIG_TCG_TPM is not set 636# CONFIG_TCG_TPM is not set
612# CONFIG_I2C is not set 637# CONFIG_I2C is not set
613# CONFIG_SPI is not set 638# CONFIG_SPI is not set
639CONFIG_ARCH_REQUIRE_GPIOLIB=y
640CONFIG_GPIOLIB=y
641# CONFIG_DEBUG_GPIO is not set
642# CONFIG_GPIO_SYSFS is not set
643
644#
645# Memory mapped GPIO expanders:
646#
647
648#
649# I2C GPIO expanders:
650#
651
652#
653# PCI GPIO expanders:
654#
655
656#
657# SPI GPIO expanders:
658#
614# CONFIG_W1 is not set 659# CONFIG_W1 is not set
615# CONFIG_POWER_SUPPLY is not set 660# CONFIG_POWER_SUPPLY is not set
616# CONFIG_HWMON is not set 661# CONFIG_HWMON is not set
@@ -685,11 +730,9 @@ CONFIG_HID_COMPAT=y
685CONFIG_HID_A4TECH=y 730CONFIG_HID_A4TECH=y
686CONFIG_HID_APPLE=y 731CONFIG_HID_APPLE=y
687CONFIG_HID_BELKIN=y 732CONFIG_HID_BELKIN=y
688CONFIG_HID_BRIGHT=y
689CONFIG_HID_CHERRY=y 733CONFIG_HID_CHERRY=y
690CONFIG_HID_CHICONY=y 734CONFIG_HID_CHICONY=y
691CONFIG_HID_CYPRESS=y 735CONFIG_HID_CYPRESS=y
692CONFIG_HID_DELL=y
693CONFIG_HID_EZKEY=y 736CONFIG_HID_EZKEY=y
694CONFIG_HID_GYRATION=y 737CONFIG_HID_GYRATION=y
695CONFIG_HID_LOGITECH=y 738CONFIG_HID_LOGITECH=y
@@ -697,12 +740,15 @@ CONFIG_HID_LOGITECH=y
697# CONFIG_LOGIRUMBLEPAD2_FF is not set 740# CONFIG_LOGIRUMBLEPAD2_FF is not set
698CONFIG_HID_MICROSOFT=y 741CONFIG_HID_MICROSOFT=y
699CONFIG_HID_MONTEREY=y 742CONFIG_HID_MONTEREY=y
743# CONFIG_HID_NTRIG is not set
700CONFIG_HID_PANTHERLORD=y 744CONFIG_HID_PANTHERLORD=y
701# CONFIG_PANTHERLORD_FF is not set 745# CONFIG_PANTHERLORD_FF is not set
702CONFIG_HID_PETALYNX=y 746CONFIG_HID_PETALYNX=y
703CONFIG_HID_SAMSUNG=y 747CONFIG_HID_SAMSUNG=y
704CONFIG_HID_SONY=y 748CONFIG_HID_SONY=y
705CONFIG_HID_SUNPLUS=y 749CONFIG_HID_SUNPLUS=y
750# CONFIG_GREENASIA_FF is not set
751# CONFIG_HID_TOPSEED is not set
706CONFIG_THRUSTMASTER_FF=m 752CONFIG_THRUSTMASTER_FF=m
707CONFIG_ZEROPLUS_FF=m 753CONFIG_ZEROPLUS_FF=m
708CONFIG_USB_SUPPORT=y 754CONFIG_USB_SUPPORT=y
@@ -847,7 +893,6 @@ CONFIG_RTC_DRV_SH=y
847# CONFIG_DMADEVICES is not set 893# CONFIG_DMADEVICES is not set
848# CONFIG_UIO is not set 894# CONFIG_UIO is not set
849# CONFIG_STAGING is not set 895# CONFIG_STAGING is not set
850CONFIG_STAGING_EXCLUDE_BUILD=y
851 896
852# 897#
853# File systems 898# File systems
@@ -890,10 +935,7 @@ CONFIG_SYSFS=y
890# CONFIG_TMPFS is not set 935# CONFIG_TMPFS is not set
891# CONFIG_HUGETLB_PAGE is not set 936# CONFIG_HUGETLB_PAGE is not set
892# CONFIG_CONFIGFS_FS is not set 937# CONFIG_CONFIGFS_FS is not set
893 938CONFIG_MISC_FILESYSTEMS=y
894#
895# Miscellaneous filesystems
896#
897# CONFIG_ADFS_FS is not set 939# CONFIG_ADFS_FS is not set
898# CONFIG_AFFS_FS is not set 940# CONFIG_AFFS_FS is not set
899# CONFIG_HFS_FS is not set 941# CONFIG_HFS_FS is not set
@@ -961,6 +1003,7 @@ CONFIG_DEBUG_OBJECTS=y
961# CONFIG_DEBUG_OBJECTS_SELFTEST is not set 1003# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
962# CONFIG_DEBUG_OBJECTS_FREE is not set 1004# CONFIG_DEBUG_OBJECTS_FREE is not set
963# CONFIG_DEBUG_OBJECTS_TIMERS is not set 1005# CONFIG_DEBUG_OBJECTS_TIMERS is not set
1006CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
964# CONFIG_DEBUG_RT_MUTEXES is not set 1007# CONFIG_DEBUG_RT_MUTEXES is not set
965# CONFIG_RT_MUTEX_TESTER is not set 1008# CONFIG_RT_MUTEX_TESTER is not set
966# CONFIG_DEBUG_SPINLOCK is not set 1009# CONFIG_DEBUG_SPINLOCK is not set
@@ -970,6 +1013,7 @@ CONFIG_DEBUG_MUTEXES=y
970# CONFIG_LOCK_STAT is not set 1013# CONFIG_LOCK_STAT is not set
971CONFIG_DEBUG_SPINLOCK_SLEEP=y 1014CONFIG_DEBUG_SPINLOCK_SLEEP=y
972# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1015# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1016CONFIG_STACKTRACE=y
973# CONFIG_DEBUG_KOBJECT is not set 1017# CONFIG_DEBUG_KOBJECT is not set
974CONFIG_DEBUG_BUGVERBOSE=y 1018CONFIG_DEBUG_BUGVERBOSE=y
975CONFIG_DEBUG_INFO=y 1019CONFIG_DEBUG_INFO=y
@@ -978,6 +1022,7 @@ CONFIG_DEBUG_WRITECOUNT=y
978# CONFIG_DEBUG_MEMORY_INIT is not set 1022# CONFIG_DEBUG_MEMORY_INIT is not set
979CONFIG_DEBUG_LIST=y 1023CONFIG_DEBUG_LIST=y
980CONFIG_DEBUG_SG=y 1024CONFIG_DEBUG_SG=y
1025# CONFIG_DEBUG_NOTIFIERS is not set
981CONFIG_FRAME_POINTER=y 1026CONFIG_FRAME_POINTER=y
982# CONFIG_RCU_TORTURE_TEST is not set 1027# CONFIG_RCU_TORTURE_TEST is not set
983# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1028# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -986,9 +1031,12 @@ CONFIG_FRAME_POINTER=y
986# CONFIG_FAULT_INJECTION is not set 1031# CONFIG_FAULT_INJECTION is not set
987# CONFIG_LATENCYTOP is not set 1032# CONFIG_LATENCYTOP is not set
988CONFIG_SYSCTL_SYSCALL_CHECK=y 1033CONFIG_SYSCTL_SYSCALL_CHECK=y
1034CONFIG_NOP_TRACER=y
989CONFIG_HAVE_FUNCTION_TRACER=y 1035CONFIG_HAVE_FUNCTION_TRACER=y
990CONFIG_HAVE_DYNAMIC_FTRACE=y 1036CONFIG_HAVE_DYNAMIC_FTRACE=y
991CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 1037CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1038CONFIG_RING_BUFFER=y
1039CONFIG_TRACING=y
992 1040
993# 1041#
994# Tracers 1042# Tracers
@@ -997,9 +1045,13 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
997# CONFIG_SCHED_TRACER is not set 1045# CONFIG_SCHED_TRACER is not set
998# CONFIG_CONTEXT_SWITCH_TRACER is not set 1046# CONFIG_CONTEXT_SWITCH_TRACER is not set
999# CONFIG_BOOT_TRACER is not set 1047# CONFIG_BOOT_TRACER is not set
1048# CONFIG_TRACE_BRANCH_PROFILING is not set
1000# CONFIG_STACK_TRACER is not set 1049# CONFIG_STACK_TRACER is not set
1050# CONFIG_FTRACE_STARTUP_TEST is not set
1001# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1051# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1002# CONFIG_SAMPLES is not set 1052# CONFIG_SAMPLES is not set
1053CONFIG_HAVE_ARCH_KGDB=y
1054# CONFIG_KGDB is not set
1003# CONFIG_SH_STANDARD_BIOS is not set 1055# CONFIG_SH_STANDARD_BIOS is not set
1004CONFIG_EARLY_SCIF_CONSOLE=y 1056CONFIG_EARLY_SCIF_CONSOLE=y
1005CONFIG_EARLY_SCIF_CONSOLE_PORT=0xfffe8000 1057CONFIG_EARLY_SCIF_CONSOLE_PORT=0xfffe8000
@@ -1008,6 +1060,9 @@ CONFIG_DEBUG_BOOTMEM=y
1008CONFIG_DEBUG_STACKOVERFLOW=y 1060CONFIG_DEBUG_STACKOVERFLOW=y
1009CONFIG_DEBUG_STACK_USAGE=y 1061CONFIG_DEBUG_STACK_USAGE=y
1010# CONFIG_IRQSTACKS is not set 1062# CONFIG_IRQSTACKS is not set
1063CONFIG_DUMP_CODE=y
1064# CONFIG_SH_NO_BSS_INIT is not set
1065# CONFIG_MORE_COMPILE_OPTIONS is not set
1011 1066
1012# 1067#
1013# Security options 1068# Security options
@@ -1022,6 +1077,7 @@ CONFIG_DEBUG_STACK_USAGE=y
1022# Library routines 1077# Library routines
1023# 1078#
1024CONFIG_BITREVERSE=y 1079CONFIG_BITREVERSE=y
1080CONFIG_GENERIC_FIND_LAST_BIT=y
1025# CONFIG_CRC_CCITT is not set 1081# CONFIG_CRC_CCITT is not set
1026# CONFIG_CRC16 is not set 1082# CONFIG_CRC16 is not set
1027# CONFIG_CRC_T10DIF is not set 1083# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/rts7751r2d1_defconfig b/arch/sh/configs/rts7751r2d1_defconfig
index 7d2a9e88838b..47ff060995b8 100644
--- a/arch/sh/configs/rts7751r2d1_defconfig
+++ b/arch/sh/configs/rts7751r2d1_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:44:36 2008 4# Fri Jan 9 17:23:15 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -77,6 +79,7 @@ CONFIG_SLAB=y
77# CONFIG_SLUB is not set 79# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 80# CONFIG_SLOB is not set
79CONFIG_PROFILING=y 81CONFIG_PROFILING=y
82CONFIG_TRACEPOINTS=y
80# CONFIG_MARKERS is not set 83# CONFIG_MARKERS is not set
81CONFIG_OPROFILE=y 84CONFIG_OPROFILE=y
82CONFIG_HAVE_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
@@ -89,18 +92,15 @@ CONFIG_HAVE_CLK=y
89CONFIG_HAVE_GENERIC_DMA_COHERENT=y 92CONFIG_HAVE_GENERIC_DMA_COHERENT=y
90CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
92# CONFIG_TINY_SHMEM is not set
93CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
94CONFIG_MODULES=y 96CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
96# CONFIG_MODULE_UNLOAD is not set 98# CONFIG_MODULE_UNLOAD is not set
97# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
98# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
99CONFIG_KMOD=y
100CONFIG_BLOCK=y 101CONFIG_BLOCK=y
101# CONFIG_LBD is not set 102# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set
104# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
105# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
106 106
@@ -117,6 +117,10 @@ CONFIG_DEFAULT_AS=y
117# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
118CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
119CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_TREE_RCU is not set
121# CONFIG_PREEMPT_RCU is not set
122# CONFIG_TREE_RCU_TRACE is not set
123# CONFIG_PREEMPT_RCU_TRACE is not set
120# CONFIG_FREEZER is not set 124# CONFIG_FREEZER is not set
121 125
122# 126#
@@ -124,6 +128,7 @@ CONFIG_CLASSIC_RCU=y
124# 128#
125CONFIG_CPU_SH4=y 129CONFIG_CPU_SH4=y
126# CONFIG_CPU_SUBTYPE_SH7619 is not set 130# CONFIG_CPU_SUBTYPE_SH7619 is not set
131# CONFIG_CPU_SUBTYPE_SH7201 is not set
127# CONFIG_CPU_SUBTYPE_SH7203 is not set 132# CONFIG_CPU_SUBTYPE_SH7203 is not set
128# CONFIG_CPU_SUBTYPE_SH7206 is not set 133# CONFIG_CPU_SUBTYPE_SH7206 is not set
129# CONFIG_CPU_SUBTYPE_SH7263 is not set 134# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -187,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
187CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
188CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
189CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
190# CONFIG_RESOURCES_64BIT is not set
191# CONFIG_PHYS_ADDR_T_64BIT is not set 195# CONFIG_PHYS_ADDR_T_64BIT is not set
192CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
193CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
@@ -293,6 +297,7 @@ CONFIG_PCI=y
293CONFIG_SH_PCIDMA_NONCOHERENT=y 297CONFIG_SH_PCIDMA_NONCOHERENT=y
294CONFIG_PCI_AUTO=y 298CONFIG_PCI_AUTO=y
295CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 299CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
300# CONFIG_PCIEPORTBUS is not set
296# CONFIG_ARCH_SUPPORTS_MSI is not set 301# CONFIG_ARCH_SUPPORTS_MSI is not set
297CONFIG_PCI_LEGACY=y 302CONFIG_PCI_LEGACY=y
298# CONFIG_PCCARD is not set 303# CONFIG_PCCARD is not set
@@ -308,11 +313,18 @@ CONFIG_BINFMT_ELF=y
308# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 313# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
309# CONFIG_HAVE_AOUT is not set 314# CONFIG_HAVE_AOUT is not set
310# CONFIG_BINFMT_MISC is not set 315# CONFIG_BINFMT_MISC is not set
316
317#
318# Power management options (EXPERIMENTAL)
319#
320# CONFIG_PM is not set
321# CONFIG_CPU_IDLE is not set
311CONFIG_NET=y 322CONFIG_NET=y
312 323
313# 324#
314# Networking options 325# Networking options
315# 326#
327CONFIG_COMPAT_NET_DEV_OPS=y
316CONFIG_PACKET=y 328CONFIG_PACKET=y
317# CONFIG_PACKET_MMAP is not set 329# CONFIG_PACKET_MMAP is not set
318CONFIG_UNIX=y 330CONFIG_UNIX=y
@@ -365,6 +377,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
365# CONFIG_ECONET is not set 377# CONFIG_ECONET is not set
366# CONFIG_WAN_ROUTER is not set 378# CONFIG_WAN_ROUTER is not set
367# CONFIG_NET_SCHED is not set 379# CONFIG_NET_SCHED is not set
380# CONFIG_DCB is not set
368 381
369# 382#
370# Network testing 383# Network testing
@@ -381,8 +394,8 @@ CONFIG_WIRELESS=y
381# CONFIG_WIRELESS_OLD_REGULATORY is not set 394# CONFIG_WIRELESS_OLD_REGULATORY is not set
382CONFIG_WIRELESS_EXT=y 395CONFIG_WIRELESS_EXT=y
383CONFIG_WIRELESS_EXT_SYSFS=y 396CONFIG_WIRELESS_EXT_SYSFS=y
397# CONFIG_LIB80211 is not set
384# CONFIG_MAC80211 is not set 398# CONFIG_MAC80211 is not set
385# CONFIG_IEEE80211 is not set
386# CONFIG_RFKILL is not set 399# CONFIG_RFKILL is not set
387# CONFIG_NET_9P is not set 400# CONFIG_NET_9P is not set
388 401
@@ -426,6 +439,7 @@ CONFIG_MISC_DEVICES=y
426# CONFIG_TIFM_CORE is not set 439# CONFIG_TIFM_CORE is not set
427# CONFIG_ENCLOSURE_SERVICES is not set 440# CONFIG_ENCLOSURE_SERVICES is not set
428# CONFIG_HP_ILO is not set 441# CONFIG_HP_ILO is not set
442# CONFIG_C2PORT is not set
429CONFIG_HAVE_IDE=y 443CONFIG_HAVE_IDE=y
430# CONFIG_IDE is not set 444# CONFIG_IDE is not set
431 445
@@ -468,6 +482,7 @@ CONFIG_SCSI_WAIT_SCAN=m
468# CONFIG_SCSI_SRP_ATTRS is not set 482# CONFIG_SCSI_SRP_ATTRS is not set
469CONFIG_SCSI_LOWLEVEL=y 483CONFIG_SCSI_LOWLEVEL=y
470# CONFIG_ISCSI_TCP is not set 484# CONFIG_ISCSI_TCP is not set
485# CONFIG_SCSI_CXGB3_ISCSI is not set
471# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 486# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
472# CONFIG_SCSI_3W_9XXX is not set 487# CONFIG_SCSI_3W_9XXX is not set
473# CONFIG_SCSI_ACARD is not set 488# CONFIG_SCSI_ACARD is not set
@@ -481,6 +496,8 @@ CONFIG_SCSI_LOWLEVEL=y
481# CONFIG_MEGARAID_LEGACY is not set 496# CONFIG_MEGARAID_LEGACY is not set
482# CONFIG_MEGARAID_SAS is not set 497# CONFIG_MEGARAID_SAS is not set
483# CONFIG_SCSI_HPTIOP is not set 498# CONFIG_SCSI_HPTIOP is not set
499# CONFIG_LIBFC is not set
500# CONFIG_FCOE is not set
484# CONFIG_SCSI_DMX3191D is not set 501# CONFIG_SCSI_DMX3191D is not set
485# CONFIG_SCSI_FUTURE_DOMAIN is not set 502# CONFIG_SCSI_FUTURE_DOMAIN is not set
486# CONFIG_SCSI_IPS is not set 503# CONFIG_SCSI_IPS is not set
@@ -593,6 +610,7 @@ CONFIG_MII=y
593# CONFIG_SMC91X is not set 610# CONFIG_SMC91X is not set
594# CONFIG_ENC28J60 is not set 611# CONFIG_ENC28J60 is not set
595# CONFIG_SMC911X is not set 612# CONFIG_SMC911X is not set
613# CONFIG_SMSC911X is not set
596# CONFIG_NET_TULIP is not set 614# CONFIG_NET_TULIP is not set
597# CONFIG_HP100 is not set 615# CONFIG_HP100 is not set
598# CONFIG_IBM_NEW_EMAC_ZMII is not set 616# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -608,7 +626,6 @@ CONFIG_NET_PCI=y
608# CONFIG_ADAPTEC_STARFIRE is not set 626# CONFIG_ADAPTEC_STARFIRE is not set
609# CONFIG_B44 is not set 627# CONFIG_B44 is not set
610# CONFIG_FORCEDETH is not set 628# CONFIG_FORCEDETH is not set
611# CONFIG_EEPRO100 is not set
612# CONFIG_E100 is not set 629# CONFIG_E100 is not set
613# CONFIG_FEALNX is not set 630# CONFIG_FEALNX is not set
614# CONFIG_NATSEMI is not set 631# CONFIG_NATSEMI is not set
@@ -622,6 +639,7 @@ CONFIG_8139TOO=y
622# CONFIG_R6040 is not set 639# CONFIG_R6040 is not set
623# CONFIG_SIS900 is not set 640# CONFIG_SIS900 is not set
624# CONFIG_EPIC100 is not set 641# CONFIG_EPIC100 is not set
642# CONFIG_SMSC9420 is not set
625# CONFIG_SUNDANCE is not set 643# CONFIG_SUNDANCE is not set
626# CONFIG_TLAN is not set 644# CONFIG_TLAN is not set
627# CONFIG_VIA_RHINE is not set 645# CONFIG_VIA_RHINE is not set
@@ -650,6 +668,7 @@ CONFIG_NETDEV_1000=y
650# CONFIG_JME is not set 668# CONFIG_JME is not set
651CONFIG_NETDEV_10000=y 669CONFIG_NETDEV_10000=y
652# CONFIG_CHELSIO_T1 is not set 670# CONFIG_CHELSIO_T1 is not set
671CONFIG_CHELSIO_T3_DEPENDS=y
653# CONFIG_CHELSIO_T3 is not set 672# CONFIG_CHELSIO_T3 is not set
654# CONFIG_ENIC is not set 673# CONFIG_ENIC is not set
655# CONFIG_IXGBE is not set 674# CONFIG_IXGBE is not set
@@ -658,6 +677,7 @@ CONFIG_NETDEV_10000=y
658# CONFIG_MYRI10GE is not set 677# CONFIG_MYRI10GE is not set
659# CONFIG_NETXEN_NIC is not set 678# CONFIG_NETXEN_NIC is not set
660# CONFIG_NIU is not set 679# CONFIG_NIU is not set
680# CONFIG_MLX4_EN is not set
661# CONFIG_MLX4_CORE is not set 681# CONFIG_MLX4_CORE is not set
662# CONFIG_TEHUTI is not set 682# CONFIG_TEHUTI is not set
663# CONFIG_BNX2X is not set 683# CONFIG_BNX2X is not set
@@ -755,6 +775,7 @@ CONFIG_SERIAL_CORE=y
755CONFIG_SERIAL_CORE_CONSOLE=y 775CONFIG_SERIAL_CORE_CONSOLE=y
756# CONFIG_SERIAL_JSM is not set 776# CONFIG_SERIAL_JSM is not set
757CONFIG_UNIX98_PTYS=y 777CONFIG_UNIX98_PTYS=y
778# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
758CONFIG_LEGACY_PTYS=y 779CONFIG_LEGACY_PTYS=y
759CONFIG_LEGACY_PTY_COUNT=256 780CONFIG_LEGACY_PTY_COUNT=256
760# CONFIG_IPMI_HANDLER is not set 781# CONFIG_IPMI_HANDLER is not set
@@ -805,11 +826,11 @@ CONFIG_HWMON=y
805# CONFIG_THERMAL is not set 826# CONFIG_THERMAL is not set
806# CONFIG_THERMAL_HWMON is not set 827# CONFIG_THERMAL_HWMON is not set
807# CONFIG_WATCHDOG is not set 828# CONFIG_WATCHDOG is not set
829CONFIG_SSB_POSSIBLE=y
808 830
809# 831#
810# Sonics Silicon Backplane 832# Sonics Silicon Backplane
811# 833#
812CONFIG_SSB_POSSIBLE=y
813# CONFIG_SSB is not set 834# CONFIG_SSB is not set
814 835
815# 836#
@@ -819,7 +840,7 @@ CONFIG_SSB_POSSIBLE=y
819CONFIG_MFD_SM501=y 840CONFIG_MFD_SM501=y
820# CONFIG_HTC_PASIC3 is not set 841# CONFIG_HTC_PASIC3 is not set
821# CONFIG_MFD_TMIO is not set 842# CONFIG_MFD_TMIO is not set
822# CONFIG_MFD_WM8400 is not set 843# CONFIG_REGULATOR is not set
823 844
824# 845#
825# Multimedia devices 846# Multimedia devices
@@ -852,11 +873,12 @@ CONFIG_FB_CFB_FILLRECT=y
852CONFIG_FB_CFB_COPYAREA=y 873CONFIG_FB_CFB_COPYAREA=y
853CONFIG_FB_CFB_IMAGEBLIT=y 874CONFIG_FB_CFB_IMAGEBLIT=y
854# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 875# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
855# CONFIG_FB_SYS_FILLRECT is not set 876CONFIG_FB_SYS_FILLRECT=m
856# CONFIG_FB_SYS_COPYAREA is not set 877CONFIG_FB_SYS_COPYAREA=m
857# CONFIG_FB_SYS_IMAGEBLIT is not set 878CONFIG_FB_SYS_IMAGEBLIT=m
858# CONFIG_FB_FOREIGN_ENDIAN is not set 879# CONFIG_FB_FOREIGN_ENDIAN is not set
859# CONFIG_FB_SYS_FOPS is not set 880CONFIG_FB_SYS_FOPS=m
881CONFIG_FB_DEFERRED_IO=y
860# CONFIG_FB_SVGALIB is not set 882# CONFIG_FB_SVGALIB is not set
861# CONFIG_FB_MACMODES is not set 883# CONFIG_FB_MACMODES is not set
862# CONFIG_FB_BACKLIGHT is not set 884# CONFIG_FB_BACKLIGHT is not set
@@ -895,6 +917,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m
895CONFIG_FB_SM501=y 917CONFIG_FB_SM501=y
896# CONFIG_FB_VIRTUAL is not set 918# CONFIG_FB_VIRTUAL is not set
897# CONFIG_FB_METRONOME is not set 919# CONFIG_FB_METRONOME is not set
920# CONFIG_FB_MB862XX is not set
898# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 921# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
899 922
900# 923#
@@ -1031,11 +1054,9 @@ CONFIG_HID_COMPAT=y
1031CONFIG_HID_A4TECH=y 1054CONFIG_HID_A4TECH=y
1032CONFIG_HID_APPLE=y 1055CONFIG_HID_APPLE=y
1033CONFIG_HID_BELKIN=y 1056CONFIG_HID_BELKIN=y
1034CONFIG_HID_BRIGHT=y
1035CONFIG_HID_CHERRY=y 1057CONFIG_HID_CHERRY=y
1036CONFIG_HID_CHICONY=y 1058CONFIG_HID_CHICONY=y
1037CONFIG_HID_CYPRESS=y 1059CONFIG_HID_CYPRESS=y
1038CONFIG_HID_DELL=y
1039CONFIG_HID_EZKEY=y 1060CONFIG_HID_EZKEY=y
1040CONFIG_HID_GYRATION=y 1061CONFIG_HID_GYRATION=y
1041CONFIG_HID_LOGITECH=y 1062CONFIG_HID_LOGITECH=y
@@ -1043,12 +1064,15 @@ CONFIG_HID_LOGITECH=y
1043# CONFIG_LOGIRUMBLEPAD2_FF is not set 1064# CONFIG_LOGIRUMBLEPAD2_FF is not set
1044CONFIG_HID_MICROSOFT=y 1065CONFIG_HID_MICROSOFT=y
1045CONFIG_HID_MONTEREY=y 1066CONFIG_HID_MONTEREY=y
1067# CONFIG_HID_NTRIG is not set
1046CONFIG_HID_PANTHERLORD=y 1068CONFIG_HID_PANTHERLORD=y
1047# CONFIG_PANTHERLORD_FF is not set 1069# CONFIG_PANTHERLORD_FF is not set
1048CONFIG_HID_PETALYNX=y 1070CONFIG_HID_PETALYNX=y
1049CONFIG_HID_SAMSUNG=y 1071CONFIG_HID_SAMSUNG=y
1050CONFIG_HID_SONY=y 1072CONFIG_HID_SONY=y
1051CONFIG_HID_SUNPLUS=y 1073CONFIG_HID_SUNPLUS=y
1074# CONFIG_GREENASIA_FF is not set
1075# CONFIG_HID_TOPSEED is not set
1052CONFIG_THRUSTMASTER_FF=m 1076CONFIG_THRUSTMASTER_FF=m
1053CONFIG_ZEROPLUS_FF=m 1077CONFIG_ZEROPLUS_FF=m
1054CONFIG_USB_SUPPORT=y 1078CONFIG_USB_SUPPORT=y
@@ -1069,6 +1093,8 @@ CONFIG_USB_DEVICE_CLASS=y
1069# CONFIG_USB_OTG_WHITELIST is not set 1093# CONFIG_USB_OTG_WHITELIST is not set
1070# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1094# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1071# CONFIG_USB_MON is not set 1095# CONFIG_USB_MON is not set
1096# CONFIG_USB_WUSB is not set
1097# CONFIG_USB_WUSB_CBAF is not set
1072 1098
1073# 1099#
1074# USB Host Controller Drivers 1100# USB Host Controller Drivers
@@ -1084,6 +1110,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1084# CONFIG_USB_UHCI_HCD is not set 1110# CONFIG_USB_UHCI_HCD is not set
1085# CONFIG_USB_SL811_HCD is not set 1111# CONFIG_USB_SL811_HCD is not set
1086# CONFIG_USB_R8A66597_HCD is not set 1112# CONFIG_USB_R8A66597_HCD is not set
1113# CONFIG_USB_WHCI_HCD is not set
1114# CONFIG_USB_HWA_HCD is not set
1087 1115
1088# 1116#
1089# USB Device Class drivers 1117# USB Device Class drivers
@@ -1094,11 +1122,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1094# CONFIG_USB_TMC is not set 1122# CONFIG_USB_TMC is not set
1095 1123
1096# 1124#
1097# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1125# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1098# 1126#
1099 1127
1100# 1128#
1101# may also be needed; see USB_STORAGE Help for more information 1129# see USB_STORAGE Help for more information
1102# 1130#
1103CONFIG_USB_STORAGE=y 1131CONFIG_USB_STORAGE=y
1104# CONFIG_USB_STORAGE_DEBUG is not set 1132# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1151,6 +1179,7 @@ CONFIG_USB_LIBUSUAL=y
1151# CONFIG_USB_ISIGHTFW is not set 1179# CONFIG_USB_ISIGHTFW is not set
1152# CONFIG_USB_VST is not set 1180# CONFIG_USB_VST is not set
1153# CONFIG_USB_GADGET is not set 1181# CONFIG_USB_GADGET is not set
1182# CONFIG_UWB is not set
1154# CONFIG_MMC is not set 1183# CONFIG_MMC is not set
1155# CONFIG_MEMSTICK is not set 1184# CONFIG_MEMSTICK is not set
1156# CONFIG_NEW_LEDS is not set 1185# CONFIG_NEW_LEDS is not set
@@ -1176,6 +1205,7 @@ CONFIG_RTC_INTF_DEV=y
1176# 1205#
1177# CONFIG_RTC_DRV_M41T94 is not set 1206# CONFIG_RTC_DRV_M41T94 is not set
1178# CONFIG_RTC_DRV_DS1305 is not set 1207# CONFIG_RTC_DRV_DS1305 is not set
1208# CONFIG_RTC_DRV_DS1390 is not set
1179# CONFIG_RTC_DRV_MAX6902 is not set 1209# CONFIG_RTC_DRV_MAX6902 is not set
1180CONFIG_RTC_DRV_R9701=y 1210CONFIG_RTC_DRV_R9701=y
1181# CONFIG_RTC_DRV_RS5C348 is not set 1211# CONFIG_RTC_DRV_RS5C348 is not set
@@ -1254,10 +1284,7 @@ CONFIG_TMPFS=y
1254# CONFIG_HUGETLBFS is not set 1284# CONFIG_HUGETLBFS is not set
1255# CONFIG_HUGETLB_PAGE is not set 1285# CONFIG_HUGETLB_PAGE is not set
1256# CONFIG_CONFIGFS_FS is not set 1286# CONFIG_CONFIGFS_FS is not set
1257 1287CONFIG_MISC_FILESYSTEMS=y
1258#
1259# Miscellaneous filesystems
1260#
1261# CONFIG_ADFS_FS is not set 1288# CONFIG_ADFS_FS is not set
1262# CONFIG_AFFS_FS is not set 1289# CONFIG_AFFS_FS is not set
1263# CONFIG_HFS_FS is not set 1290# CONFIG_HFS_FS is not set
@@ -1343,19 +1370,29 @@ CONFIG_FRAME_WARN=1024
1343CONFIG_DEBUG_FS=y 1370CONFIG_DEBUG_FS=y
1344# CONFIG_HEADERS_CHECK is not set 1371# CONFIG_HEADERS_CHECK is not set
1345# CONFIG_DEBUG_KERNEL is not set 1372# CONFIG_DEBUG_KERNEL is not set
1373CONFIG_STACKTRACE=y
1346# CONFIG_DEBUG_BUGVERBOSE is not set 1374# CONFIG_DEBUG_BUGVERBOSE is not set
1347# CONFIG_DEBUG_MEMORY_INIT is not set 1375# CONFIG_DEBUG_MEMORY_INIT is not set
1348# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1376# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1349# CONFIG_LATENCYTOP is not set 1377# CONFIG_LATENCYTOP is not set
1350CONFIG_NOP_TRACER=y 1378CONFIG_NOP_TRACER=y
1351CONFIG_HAVE_FTRACE=y 1379CONFIG_HAVE_FUNCTION_TRACER=y
1380CONFIG_HAVE_DYNAMIC_FTRACE=y
1381CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1382CONFIG_RING_BUFFER=y
1383CONFIG_TRACING=y
1384
1385#
1386# Tracers
1387#
1352# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1388# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1353# CONFIG_SAMPLES is not set 1389# CONFIG_SAMPLES is not set
1390CONFIG_HAVE_ARCH_KGDB=y
1354# CONFIG_SH_STANDARD_BIOS is not set 1391# CONFIG_SH_STANDARD_BIOS is not set
1355CONFIG_EARLY_SCIF_CONSOLE=y 1392CONFIG_EARLY_SCIF_CONSOLE=y
1356CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 1393CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
1357CONFIG_EARLY_PRINTK=y 1394CONFIG_EARLY_PRINTK=y
1358# CONFIG_SH_KGDB is not set 1395# CONFIG_MORE_COMPILE_OPTIONS is not set
1359 1396
1360# 1397#
1361# Security options 1398# Security options
@@ -1371,6 +1408,7 @@ CONFIG_CRYPTO=y
1371# 1408#
1372# CONFIG_CRYPTO_FIPS is not set 1409# CONFIG_CRYPTO_FIPS is not set
1373# CONFIG_CRYPTO_MANAGER is not set 1410# CONFIG_CRYPTO_MANAGER is not set
1411# CONFIG_CRYPTO_MANAGER2 is not set
1374# CONFIG_CRYPTO_GF128MUL is not set 1412# CONFIG_CRYPTO_GF128MUL is not set
1375# CONFIG_CRYPTO_NULL is not set 1413# CONFIG_CRYPTO_NULL is not set
1376# CONFIG_CRYPTO_CRYPTD is not set 1414# CONFIG_CRYPTO_CRYPTD is not set
@@ -1454,6 +1492,7 @@ CONFIG_CRYPTO_HW=y
1454# Library routines 1492# Library routines
1455# 1493#
1456CONFIG_BITREVERSE=y 1494CONFIG_BITREVERSE=y
1495CONFIG_GENERIC_FIND_LAST_BIT=y
1457# CONFIG_CRC_CCITT is not set 1496# CONFIG_CRC_CCITT is not set
1458# CONFIG_CRC16 is not set 1497# CONFIG_CRC16 is not set
1459CONFIG_CRC_T10DIF=y 1498CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig
index f680d3eecdfb..1566870dc805 100644
--- a/arch/sh/configs/rts7751r2dplus_defconfig
+++ b/arch/sh/configs/rts7751r2dplus_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:47:39 2008 4# Fri Jan 9 17:26:10 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -77,6 +79,7 @@ CONFIG_SLAB=y
77# CONFIG_SLUB is not set 79# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 80# CONFIG_SLOB is not set
79CONFIG_PROFILING=y 81CONFIG_PROFILING=y
82CONFIG_TRACEPOINTS=y
80# CONFIG_MARKERS is not set 83# CONFIG_MARKERS is not set
81CONFIG_OPROFILE=y 84CONFIG_OPROFILE=y
82CONFIG_HAVE_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
@@ -89,18 +92,15 @@ CONFIG_HAVE_CLK=y
89CONFIG_HAVE_GENERIC_DMA_COHERENT=y 92CONFIG_HAVE_GENERIC_DMA_COHERENT=y
90CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
92# CONFIG_TINY_SHMEM is not set
93CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
94CONFIG_MODULES=y 96CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
96# CONFIG_MODULE_UNLOAD is not set 98# CONFIG_MODULE_UNLOAD is not set
97# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
98# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
99CONFIG_KMOD=y
100CONFIG_BLOCK=y 101CONFIG_BLOCK=y
101# CONFIG_LBD is not set 102# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set
104# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
105# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
106 106
@@ -117,6 +117,10 @@ CONFIG_DEFAULT_AS=y
117# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
118CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
119CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_TREE_RCU is not set
121# CONFIG_PREEMPT_RCU is not set
122# CONFIG_TREE_RCU_TRACE is not set
123# CONFIG_PREEMPT_RCU_TRACE is not set
120# CONFIG_FREEZER is not set 124# CONFIG_FREEZER is not set
121 125
122# 126#
@@ -124,6 +128,7 @@ CONFIG_CLASSIC_RCU=y
124# 128#
125CONFIG_CPU_SH4=y 129CONFIG_CPU_SH4=y
126# CONFIG_CPU_SUBTYPE_SH7619 is not set 130# CONFIG_CPU_SUBTYPE_SH7619 is not set
131# CONFIG_CPU_SUBTYPE_SH7201 is not set
127# CONFIG_CPU_SUBTYPE_SH7203 is not set 132# CONFIG_CPU_SUBTYPE_SH7203 is not set
128# CONFIG_CPU_SUBTYPE_SH7206 is not set 133# CONFIG_CPU_SUBTYPE_SH7206 is not set
129# CONFIG_CPU_SUBTYPE_SH7263 is not set 134# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -187,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
187CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
188CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
189CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
190# CONFIG_RESOURCES_64BIT is not set
191# CONFIG_PHYS_ADDR_T_64BIT is not set 195# CONFIG_PHYS_ADDR_T_64BIT is not set
192CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
193CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
@@ -293,6 +297,7 @@ CONFIG_PCI=y
293CONFIG_SH_PCIDMA_NONCOHERENT=y 297CONFIG_SH_PCIDMA_NONCOHERENT=y
294CONFIG_PCI_AUTO=y 298CONFIG_PCI_AUTO=y
295CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 299CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
300# CONFIG_PCIEPORTBUS is not set
296# CONFIG_ARCH_SUPPORTS_MSI is not set 301# CONFIG_ARCH_SUPPORTS_MSI is not set
297CONFIG_PCI_LEGACY=y 302CONFIG_PCI_LEGACY=y
298# CONFIG_PCCARD is not set 303# CONFIG_PCCARD is not set
@@ -308,11 +313,18 @@ CONFIG_BINFMT_ELF=y
308# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 313# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
309# CONFIG_HAVE_AOUT is not set 314# CONFIG_HAVE_AOUT is not set
310# CONFIG_BINFMT_MISC is not set 315# CONFIG_BINFMT_MISC is not set
316
317#
318# Power management options (EXPERIMENTAL)
319#
320# CONFIG_PM is not set
321# CONFIG_CPU_IDLE is not set
311CONFIG_NET=y 322CONFIG_NET=y
312 323
313# 324#
314# Networking options 325# Networking options
315# 326#
327CONFIG_COMPAT_NET_DEV_OPS=y
316CONFIG_PACKET=y 328CONFIG_PACKET=y
317# CONFIG_PACKET_MMAP is not set 329# CONFIG_PACKET_MMAP is not set
318CONFIG_UNIX=y 330CONFIG_UNIX=y
@@ -365,6 +377,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
365# CONFIG_ECONET is not set 377# CONFIG_ECONET is not set
366# CONFIG_WAN_ROUTER is not set 378# CONFIG_WAN_ROUTER is not set
367# CONFIG_NET_SCHED is not set 379# CONFIG_NET_SCHED is not set
380# CONFIG_DCB is not set
368 381
369# 382#
370# Network testing 383# Network testing
@@ -381,8 +394,8 @@ CONFIG_WIRELESS=y
381# CONFIG_WIRELESS_OLD_REGULATORY is not set 394# CONFIG_WIRELESS_OLD_REGULATORY is not set
382CONFIG_WIRELESS_EXT=y 395CONFIG_WIRELESS_EXT=y
383CONFIG_WIRELESS_EXT_SYSFS=y 396CONFIG_WIRELESS_EXT_SYSFS=y
397# CONFIG_LIB80211 is not set
384# CONFIG_MAC80211 is not set 398# CONFIG_MAC80211 is not set
385# CONFIG_IEEE80211 is not set
386# CONFIG_RFKILL is not set 399# CONFIG_RFKILL is not set
387# CONFIG_NET_9P is not set 400# CONFIG_NET_9P is not set
388 401
@@ -426,6 +439,7 @@ CONFIG_MISC_DEVICES=y
426# CONFIG_TIFM_CORE is not set 439# CONFIG_TIFM_CORE is not set
427# CONFIG_ENCLOSURE_SERVICES is not set 440# CONFIG_ENCLOSURE_SERVICES is not set
428# CONFIG_HP_ILO is not set 441# CONFIG_HP_ILO is not set
442# CONFIG_C2PORT is not set
429CONFIG_HAVE_IDE=y 443CONFIG_HAVE_IDE=y
430# CONFIG_IDE is not set 444# CONFIG_IDE is not set
431 445
@@ -468,6 +482,7 @@ CONFIG_SCSI_WAIT_SCAN=m
468# CONFIG_SCSI_SRP_ATTRS is not set 482# CONFIG_SCSI_SRP_ATTRS is not set
469CONFIG_SCSI_LOWLEVEL=y 483CONFIG_SCSI_LOWLEVEL=y
470# CONFIG_ISCSI_TCP is not set 484# CONFIG_ISCSI_TCP is not set
485# CONFIG_SCSI_CXGB3_ISCSI is not set
471# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 486# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
472# CONFIG_SCSI_3W_9XXX is not set 487# CONFIG_SCSI_3W_9XXX is not set
473# CONFIG_SCSI_ACARD is not set 488# CONFIG_SCSI_ACARD is not set
@@ -481,6 +496,8 @@ CONFIG_SCSI_LOWLEVEL=y
481# CONFIG_MEGARAID_LEGACY is not set 496# CONFIG_MEGARAID_LEGACY is not set
482# CONFIG_MEGARAID_SAS is not set 497# CONFIG_MEGARAID_SAS is not set
483# CONFIG_SCSI_HPTIOP is not set 498# CONFIG_SCSI_HPTIOP is not set
499# CONFIG_LIBFC is not set
500# CONFIG_FCOE is not set
484# CONFIG_SCSI_DMX3191D is not set 501# CONFIG_SCSI_DMX3191D is not set
485# CONFIG_SCSI_FUTURE_DOMAIN is not set 502# CONFIG_SCSI_FUTURE_DOMAIN is not set
486# CONFIG_SCSI_IPS is not set 503# CONFIG_SCSI_IPS is not set
@@ -593,6 +610,7 @@ CONFIG_MII=y
593# CONFIG_SMC91X is not set 610# CONFIG_SMC91X is not set
594# CONFIG_ENC28J60 is not set 611# CONFIG_ENC28J60 is not set
595# CONFIG_SMC911X is not set 612# CONFIG_SMC911X is not set
613# CONFIG_SMSC911X is not set
596# CONFIG_NET_TULIP is not set 614# CONFIG_NET_TULIP is not set
597# CONFIG_HP100 is not set 615# CONFIG_HP100 is not set
598# CONFIG_IBM_NEW_EMAC_ZMII is not set 616# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -608,7 +626,6 @@ CONFIG_NET_PCI=y
608# CONFIG_ADAPTEC_STARFIRE is not set 626# CONFIG_ADAPTEC_STARFIRE is not set
609# CONFIG_B44 is not set 627# CONFIG_B44 is not set
610# CONFIG_FORCEDETH is not set 628# CONFIG_FORCEDETH is not set
611# CONFIG_EEPRO100 is not set
612# CONFIG_E100 is not set 629# CONFIG_E100 is not set
613# CONFIG_FEALNX is not set 630# CONFIG_FEALNX is not set
614# CONFIG_NATSEMI is not set 631# CONFIG_NATSEMI is not set
@@ -622,6 +639,7 @@ CONFIG_8139TOO=y
622# CONFIG_R6040 is not set 639# CONFIG_R6040 is not set
623# CONFIG_SIS900 is not set 640# CONFIG_SIS900 is not set
624# CONFIG_EPIC100 is not set 641# CONFIG_EPIC100 is not set
642# CONFIG_SMSC9420 is not set
625# CONFIG_SUNDANCE is not set 643# CONFIG_SUNDANCE is not set
626# CONFIG_TLAN is not set 644# CONFIG_TLAN is not set
627# CONFIG_VIA_RHINE is not set 645# CONFIG_VIA_RHINE is not set
@@ -650,6 +668,7 @@ CONFIG_NETDEV_1000=y
650# CONFIG_JME is not set 668# CONFIG_JME is not set
651CONFIG_NETDEV_10000=y 669CONFIG_NETDEV_10000=y
652# CONFIG_CHELSIO_T1 is not set 670# CONFIG_CHELSIO_T1 is not set
671CONFIG_CHELSIO_T3_DEPENDS=y
653# CONFIG_CHELSIO_T3 is not set 672# CONFIG_CHELSIO_T3 is not set
654# CONFIG_ENIC is not set 673# CONFIG_ENIC is not set
655# CONFIG_IXGBE is not set 674# CONFIG_IXGBE is not set
@@ -658,6 +677,7 @@ CONFIG_NETDEV_10000=y
658# CONFIG_MYRI10GE is not set 677# CONFIG_MYRI10GE is not set
659# CONFIG_NETXEN_NIC is not set 678# CONFIG_NETXEN_NIC is not set
660# CONFIG_NIU is not set 679# CONFIG_NIU is not set
680# CONFIG_MLX4_EN is not set
661# CONFIG_MLX4_CORE is not set 681# CONFIG_MLX4_CORE is not set
662# CONFIG_TEHUTI is not set 682# CONFIG_TEHUTI is not set
663# CONFIG_BNX2X is not set 683# CONFIG_BNX2X is not set
@@ -755,6 +775,7 @@ CONFIG_SERIAL_CORE=y
755CONFIG_SERIAL_CORE_CONSOLE=y 775CONFIG_SERIAL_CORE_CONSOLE=y
756# CONFIG_SERIAL_JSM is not set 776# CONFIG_SERIAL_JSM is not set
757CONFIG_UNIX98_PTYS=y 777CONFIG_UNIX98_PTYS=y
778# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
758CONFIG_LEGACY_PTYS=y 779CONFIG_LEGACY_PTYS=y
759CONFIG_LEGACY_PTY_COUNT=256 780CONFIG_LEGACY_PTY_COUNT=256
760# CONFIG_IPMI_HANDLER is not set 781# CONFIG_IPMI_HANDLER is not set
@@ -805,11 +826,11 @@ CONFIG_HWMON=y
805# CONFIG_THERMAL is not set 826# CONFIG_THERMAL is not set
806# CONFIG_THERMAL_HWMON is not set 827# CONFIG_THERMAL_HWMON is not set
807# CONFIG_WATCHDOG is not set 828# CONFIG_WATCHDOG is not set
829CONFIG_SSB_POSSIBLE=y
808 830
809# 831#
810# Sonics Silicon Backplane 832# Sonics Silicon Backplane
811# 833#
812CONFIG_SSB_POSSIBLE=y
813# CONFIG_SSB is not set 834# CONFIG_SSB is not set
814 835
815# 836#
@@ -819,7 +840,7 @@ CONFIG_SSB_POSSIBLE=y
819CONFIG_MFD_SM501=y 840CONFIG_MFD_SM501=y
820# CONFIG_HTC_PASIC3 is not set 841# CONFIG_HTC_PASIC3 is not set
821# CONFIG_MFD_TMIO is not set 842# CONFIG_MFD_TMIO is not set
822# CONFIG_MFD_WM8400 is not set 843# CONFIG_REGULATOR is not set
823 844
824# 845#
825# Multimedia devices 846# Multimedia devices
@@ -852,11 +873,12 @@ CONFIG_FB_CFB_FILLRECT=y
852CONFIG_FB_CFB_COPYAREA=y 873CONFIG_FB_CFB_COPYAREA=y
853CONFIG_FB_CFB_IMAGEBLIT=y 874CONFIG_FB_CFB_IMAGEBLIT=y
854# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 875# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
855# CONFIG_FB_SYS_FILLRECT is not set 876CONFIG_FB_SYS_FILLRECT=m
856# CONFIG_FB_SYS_COPYAREA is not set 877CONFIG_FB_SYS_COPYAREA=m
857# CONFIG_FB_SYS_IMAGEBLIT is not set 878CONFIG_FB_SYS_IMAGEBLIT=m
858# CONFIG_FB_FOREIGN_ENDIAN is not set 879# CONFIG_FB_FOREIGN_ENDIAN is not set
859# CONFIG_FB_SYS_FOPS is not set 880CONFIG_FB_SYS_FOPS=m
881CONFIG_FB_DEFERRED_IO=y
860# CONFIG_FB_SVGALIB is not set 882# CONFIG_FB_SVGALIB is not set
861# CONFIG_FB_MACMODES is not set 883# CONFIG_FB_MACMODES is not set
862# CONFIG_FB_BACKLIGHT is not set 884# CONFIG_FB_BACKLIGHT is not set
@@ -895,6 +917,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m
895CONFIG_FB_SM501=y 917CONFIG_FB_SM501=y
896# CONFIG_FB_VIRTUAL is not set 918# CONFIG_FB_VIRTUAL is not set
897# CONFIG_FB_METRONOME is not set 919# CONFIG_FB_METRONOME is not set
920# CONFIG_FB_MB862XX is not set
898# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 921# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
899 922
900# 923#
@@ -1031,11 +1054,9 @@ CONFIG_HID_COMPAT=y
1031CONFIG_HID_A4TECH=y 1054CONFIG_HID_A4TECH=y
1032CONFIG_HID_APPLE=y 1055CONFIG_HID_APPLE=y
1033CONFIG_HID_BELKIN=y 1056CONFIG_HID_BELKIN=y
1034CONFIG_HID_BRIGHT=y
1035CONFIG_HID_CHERRY=y 1057CONFIG_HID_CHERRY=y
1036CONFIG_HID_CHICONY=y 1058CONFIG_HID_CHICONY=y
1037CONFIG_HID_CYPRESS=y 1059CONFIG_HID_CYPRESS=y
1038CONFIG_HID_DELL=y
1039CONFIG_HID_EZKEY=y 1060CONFIG_HID_EZKEY=y
1040CONFIG_HID_GYRATION=y 1061CONFIG_HID_GYRATION=y
1041CONFIG_HID_LOGITECH=y 1062CONFIG_HID_LOGITECH=y
@@ -1043,12 +1064,15 @@ CONFIG_HID_LOGITECH=y
1043# CONFIG_LOGIRUMBLEPAD2_FF is not set 1064# CONFIG_LOGIRUMBLEPAD2_FF is not set
1044CONFIG_HID_MICROSOFT=y 1065CONFIG_HID_MICROSOFT=y
1045CONFIG_HID_MONTEREY=y 1066CONFIG_HID_MONTEREY=y
1067# CONFIG_HID_NTRIG is not set
1046CONFIG_HID_PANTHERLORD=y 1068CONFIG_HID_PANTHERLORD=y
1047# CONFIG_PANTHERLORD_FF is not set 1069# CONFIG_PANTHERLORD_FF is not set
1048CONFIG_HID_PETALYNX=y 1070CONFIG_HID_PETALYNX=y
1049CONFIG_HID_SAMSUNG=y 1071CONFIG_HID_SAMSUNG=y
1050CONFIG_HID_SONY=y 1072CONFIG_HID_SONY=y
1051CONFIG_HID_SUNPLUS=y 1073CONFIG_HID_SUNPLUS=y
1074# CONFIG_GREENASIA_FF is not set
1075# CONFIG_HID_TOPSEED is not set
1052CONFIG_THRUSTMASTER_FF=m 1076CONFIG_THRUSTMASTER_FF=m
1053CONFIG_ZEROPLUS_FF=m 1077CONFIG_ZEROPLUS_FF=m
1054CONFIG_USB_SUPPORT=y 1078CONFIG_USB_SUPPORT=y
@@ -1069,6 +1093,8 @@ CONFIG_USB_DEVICE_CLASS=y
1069# CONFIG_USB_OTG_WHITELIST is not set 1093# CONFIG_USB_OTG_WHITELIST is not set
1070# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1094# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1071# CONFIG_USB_MON is not set 1095# CONFIG_USB_MON is not set
1096# CONFIG_USB_WUSB is not set
1097# CONFIG_USB_WUSB_CBAF is not set
1072 1098
1073# 1099#
1074# USB Host Controller Drivers 1100# USB Host Controller Drivers
@@ -1084,6 +1110,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1084# CONFIG_USB_UHCI_HCD is not set 1110# CONFIG_USB_UHCI_HCD is not set
1085# CONFIG_USB_SL811_HCD is not set 1111# CONFIG_USB_SL811_HCD is not set
1086# CONFIG_USB_R8A66597_HCD is not set 1112# CONFIG_USB_R8A66597_HCD is not set
1113# CONFIG_USB_WHCI_HCD is not set
1114# CONFIG_USB_HWA_HCD is not set
1087 1115
1088# 1116#
1089# USB Device Class drivers 1117# USB Device Class drivers
@@ -1094,11 +1122,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1094# CONFIG_USB_TMC is not set 1122# CONFIG_USB_TMC is not set
1095 1123
1096# 1124#
1097# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1125# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1098# 1126#
1099 1127
1100# 1128#
1101# may also be needed; see USB_STORAGE Help for more information 1129# see USB_STORAGE Help for more information
1102# 1130#
1103CONFIG_USB_STORAGE=y 1131CONFIG_USB_STORAGE=y
1104# CONFIG_USB_STORAGE_DEBUG is not set 1132# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1151,6 +1179,7 @@ CONFIG_USB_LIBUSUAL=y
1151# CONFIG_USB_ISIGHTFW is not set 1179# CONFIG_USB_ISIGHTFW is not set
1152# CONFIG_USB_VST is not set 1180# CONFIG_USB_VST is not set
1153# CONFIG_USB_GADGET is not set 1181# CONFIG_USB_GADGET is not set
1182# CONFIG_UWB is not set
1154# CONFIG_MMC is not set 1183# CONFIG_MMC is not set
1155# CONFIG_MEMSTICK is not set 1184# CONFIG_MEMSTICK is not set
1156# CONFIG_NEW_LEDS is not set 1185# CONFIG_NEW_LEDS is not set
@@ -1176,6 +1205,7 @@ CONFIG_RTC_INTF_DEV=y
1176# 1205#
1177# CONFIG_RTC_DRV_M41T94 is not set 1206# CONFIG_RTC_DRV_M41T94 is not set
1178# CONFIG_RTC_DRV_DS1305 is not set 1207# CONFIG_RTC_DRV_DS1305 is not set
1208# CONFIG_RTC_DRV_DS1390 is not set
1179# CONFIG_RTC_DRV_MAX6902 is not set 1209# CONFIG_RTC_DRV_MAX6902 is not set
1180CONFIG_RTC_DRV_R9701=y 1210CONFIG_RTC_DRV_R9701=y
1181# CONFIG_RTC_DRV_RS5C348 is not set 1211# CONFIG_RTC_DRV_RS5C348 is not set
@@ -1254,10 +1284,7 @@ CONFIG_TMPFS=y
1254# CONFIG_HUGETLBFS is not set 1284# CONFIG_HUGETLBFS is not set
1255# CONFIG_HUGETLB_PAGE is not set 1285# CONFIG_HUGETLB_PAGE is not set
1256# CONFIG_CONFIGFS_FS is not set 1286# CONFIG_CONFIGFS_FS is not set
1257 1287CONFIG_MISC_FILESYSTEMS=y
1258#
1259# Miscellaneous filesystems
1260#
1261# CONFIG_ADFS_FS is not set 1288# CONFIG_ADFS_FS is not set
1262# CONFIG_AFFS_FS is not set 1289# CONFIG_AFFS_FS is not set
1263# CONFIG_HFS_FS is not set 1290# CONFIG_HFS_FS is not set
@@ -1343,19 +1370,29 @@ CONFIG_FRAME_WARN=1024
1343CONFIG_DEBUG_FS=y 1370CONFIG_DEBUG_FS=y
1344# CONFIG_HEADERS_CHECK is not set 1371# CONFIG_HEADERS_CHECK is not set
1345# CONFIG_DEBUG_KERNEL is not set 1372# CONFIG_DEBUG_KERNEL is not set
1373CONFIG_STACKTRACE=y
1346# CONFIG_DEBUG_BUGVERBOSE is not set 1374# CONFIG_DEBUG_BUGVERBOSE is not set
1347# CONFIG_DEBUG_MEMORY_INIT is not set 1375# CONFIG_DEBUG_MEMORY_INIT is not set
1348# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1376# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1349# CONFIG_LATENCYTOP is not set 1377# CONFIG_LATENCYTOP is not set
1350CONFIG_NOP_TRACER=y 1378CONFIG_NOP_TRACER=y
1351CONFIG_HAVE_FTRACE=y 1379CONFIG_HAVE_FUNCTION_TRACER=y
1380CONFIG_HAVE_DYNAMIC_FTRACE=y
1381CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1382CONFIG_RING_BUFFER=y
1383CONFIG_TRACING=y
1384
1385#
1386# Tracers
1387#
1352# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1388# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1353# CONFIG_SAMPLES is not set 1389# CONFIG_SAMPLES is not set
1390CONFIG_HAVE_ARCH_KGDB=y
1354# CONFIG_SH_STANDARD_BIOS is not set 1391# CONFIG_SH_STANDARD_BIOS is not set
1355CONFIG_EARLY_SCIF_CONSOLE=y 1392CONFIG_EARLY_SCIF_CONSOLE=y
1356CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 1393CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
1357CONFIG_EARLY_PRINTK=y 1394CONFIG_EARLY_PRINTK=y
1358# CONFIG_SH_KGDB is not set 1395# CONFIG_MORE_COMPILE_OPTIONS is not set
1359 1396
1360# 1397#
1361# Security options 1398# Security options
@@ -1371,6 +1408,7 @@ CONFIG_CRYPTO=y
1371# 1408#
1372# CONFIG_CRYPTO_FIPS is not set 1409# CONFIG_CRYPTO_FIPS is not set
1373# CONFIG_CRYPTO_MANAGER is not set 1410# CONFIG_CRYPTO_MANAGER is not set
1411# CONFIG_CRYPTO_MANAGER2 is not set
1374# CONFIG_CRYPTO_GF128MUL is not set 1412# CONFIG_CRYPTO_GF128MUL is not set
1375# CONFIG_CRYPTO_NULL is not set 1413# CONFIG_CRYPTO_NULL is not set
1376# CONFIG_CRYPTO_CRYPTD is not set 1414# CONFIG_CRYPTO_CRYPTD is not set
@@ -1454,6 +1492,7 @@ CONFIG_CRYPTO_HW=y
1454# Library routines 1492# Library routines
1455# 1493#
1456CONFIG_BITREVERSE=y 1494CONFIG_BITREVERSE=y
1495CONFIG_GENERIC_FIND_LAST_BIT=y
1457# CONFIG_CRC_CCITT is not set 1496# CONFIG_CRC_CCITT is not set
1458# CONFIG_CRC16 is not set 1497# CONFIG_CRC16 is not set
1459CONFIG_CRC_T10DIF=y 1498CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/sdk7780_defconfig b/arch/sh/configs/sdk7780_defconfig
index 543287b97a6a..5d6b06755ae7 100644
--- a/arch/sh/configs/sdk7780_defconfig
+++ b/arch/sh/configs/sdk7780_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:53:22 2008 4# Fri Jan 9 17:26:40 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -59,6 +61,7 @@ CONFIG_UID16=y
59CONFIG_SYSCTL_SYSCALL=y 61CONFIG_SYSCTL_SYSCALL=y
60CONFIG_KALLSYMS=y 62CONFIG_KALLSYMS=y
61CONFIG_KALLSYMS_ALL=y 63CONFIG_KALLSYMS_ALL=y
64CONFIG_KALLSYMS_STRIP_GENERATED=y
62# CONFIG_KALLSYMS_EXTRA_PASS is not set 65# CONFIG_KALLSYMS_EXTRA_PASS is not set
63CONFIG_HOTPLUG=y 66CONFIG_HOTPLUG=y
64CONFIG_PRINTK=y 67CONFIG_PRINTK=y
@@ -81,7 +84,6 @@ CONFIG_SLUB_DEBUG=y
81CONFIG_SLUB=y 84CONFIG_SLUB=y
82# CONFIG_SLOB is not set 85# CONFIG_SLOB is not set
83# CONFIG_PROFILING is not set 86# CONFIG_PROFILING is not set
84# CONFIG_MARKERS is not set
85CONFIG_HAVE_OPROFILE=y 87CONFIG_HAVE_OPROFILE=y
86# CONFIG_KPROBES is not set 88# CONFIG_KPROBES is not set
87CONFIG_HAVE_IOREMAP_PROT=y 89CONFIG_HAVE_IOREMAP_PROT=y
@@ -92,7 +94,6 @@ CONFIG_HAVE_CLK=y
92CONFIG_HAVE_GENERIC_DMA_COHERENT=y 94CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 95CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 96CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set
96CONFIG_BASE_SMALL=0 97CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 98CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set 99# CONFIG_MODULE_FORCE_LOAD is not set
@@ -100,11 +101,9 @@ CONFIG_MODULE_UNLOAD=y
100CONFIG_MODULE_FORCE_UNLOAD=y 101CONFIG_MODULE_FORCE_UNLOAD=y
101# CONFIG_MODVERSIONS is not set 102# CONFIG_MODVERSIONS is not set
102# CONFIG_MODULE_SRCVERSION_ALL is not set 103# CONFIG_MODULE_SRCVERSION_ALL is not set
103CONFIG_KMOD=y
104CONFIG_BLOCK=y 104CONFIG_BLOCK=y
105CONFIG_LBD=y 105CONFIG_LBD=y
106# CONFIG_BLK_DEV_IO_TRACE is not set 106# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 107# CONFIG_BLK_DEV_BSG is not set
109# CONFIG_BLK_DEV_INTEGRITY is not set 108# CONFIG_BLK_DEV_INTEGRITY is not set
110 109
@@ -121,6 +120,10 @@ CONFIG_DEFAULT_AS=y
121# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
123CONFIG_CLASSIC_RCU=y 122CONFIG_CLASSIC_RCU=y
123# CONFIG_TREE_RCU is not set
124# CONFIG_PREEMPT_RCU is not set
125# CONFIG_TREE_RCU_TRACE is not set
126# CONFIG_PREEMPT_RCU_TRACE is not set
124# CONFIG_FREEZER is not set 127# CONFIG_FREEZER is not set
125 128
126# 129#
@@ -129,6 +132,7 @@ CONFIG_CLASSIC_RCU=y
129CONFIG_CPU_SH4=y 132CONFIG_CPU_SH4=y
130CONFIG_CPU_SH4A=y 133CONFIG_CPU_SH4A=y
131# CONFIG_CPU_SUBTYPE_SH7619 is not set 134# CONFIG_CPU_SUBTYPE_SH7619 is not set
135# CONFIG_CPU_SUBTYPE_SH7201 is not set
132# CONFIG_CPU_SUBTYPE_SH7203 is not set 136# CONFIG_CPU_SUBTYPE_SH7203 is not set
133# CONFIG_CPU_SUBTYPE_SH7206 is not set 137# CONFIG_CPU_SUBTYPE_SH7206 is not set
134# CONFIG_CPU_SUBTYPE_SH7263 is not set 138# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -199,7 +203,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
199CONFIG_SPARSEMEM_STATIC=y 203CONFIG_SPARSEMEM_STATIC=y
200CONFIG_PAGEFLAGS_EXTENDED=y 204CONFIG_PAGEFLAGS_EXTENDED=y
201CONFIG_SPLIT_PTLOCK_CPUS=4 205CONFIG_SPLIT_PTLOCK_CPUS=4
202CONFIG_RESOURCES_64BIT=y
203# CONFIG_PHYS_ADDR_T_64BIT is not set 206# CONFIG_PHYS_ADDR_T_64BIT is not set
204CONFIG_ZONE_DMA_FLAG=0 207CONFIG_ZONE_DMA_FLAG=0
205CONFIG_NR_QUICK=2 208CONFIG_NR_QUICK=2
@@ -282,7 +285,6 @@ CONFIG_SCHED_HRTICK=y
282# CONFIG_PREEMPT_NONE is not set 285# CONFIG_PREEMPT_NONE is not set
283# CONFIG_PREEMPT_VOLUNTARY is not set 286# CONFIG_PREEMPT_VOLUNTARY is not set
284CONFIG_PREEMPT=y 287CONFIG_PREEMPT=y
285# CONFIG_PREEMPT_RCU is not set
286CONFIG_GUSA=y 288CONFIG_GUSA=y
287 289
288# 290#
@@ -300,6 +302,7 @@ CONFIG_PCI=y
300CONFIG_SH_PCIDMA_NONCOHERENT=y 302CONFIG_SH_PCIDMA_NONCOHERENT=y
301CONFIG_PCI_AUTO=y 303CONFIG_PCI_AUTO=y
302CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 304CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
305# CONFIG_PCIEPORTBUS is not set
303# CONFIG_ARCH_SUPPORTS_MSI is not set 306# CONFIG_ARCH_SUPPORTS_MSI is not set
304# CONFIG_PCI_LEGACY is not set 307# CONFIG_PCI_LEGACY is not set
305CONFIG_PCI_DEBUG=y 308CONFIG_PCI_DEBUG=y
@@ -334,11 +337,18 @@ CONFIG_BINFMT_ELF=y
334# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 337# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
335# CONFIG_HAVE_AOUT is not set 338# CONFIG_HAVE_AOUT is not set
336# CONFIG_BINFMT_MISC is not set 339# CONFIG_BINFMT_MISC is not set
340
341#
342# Power management options (EXPERIMENTAL)
343#
344# CONFIG_PM is not set
345# CONFIG_CPU_IDLE is not set
337CONFIG_NET=y 346CONFIG_NET=y
338 347
339# 348#
340# Networking options 349# Networking options
341# 350#
351CONFIG_COMPAT_NET_DEV_OPS=y
342CONFIG_PACKET=y 352CONFIG_PACKET=y
343# CONFIG_PACKET_MMAP is not set 353# CONFIG_PACKET_MMAP is not set
344CONFIG_UNIX=y 354CONFIG_UNIX=y
@@ -434,6 +444,7 @@ CONFIG_NET_SCHED=y
434# CONFIG_NET_SCH_GRED is not set 444# CONFIG_NET_SCH_GRED is not set
435# CONFIG_NET_SCH_DSMARK is not set 445# CONFIG_NET_SCH_DSMARK is not set
436# CONFIG_NET_SCH_NETEM is not set 446# CONFIG_NET_SCH_NETEM is not set
447# CONFIG_NET_SCH_DRR is not set
437 448
438# 449#
439# Classification 450# Classification
@@ -449,6 +460,7 @@ CONFIG_NET_SCHED=y
449# CONFIG_NET_EMATCH is not set 460# CONFIG_NET_EMATCH is not set
450# CONFIG_NET_CLS_ACT is not set 461# CONFIG_NET_CLS_ACT is not set
451CONFIG_NET_SCH_FIFO=y 462CONFIG_NET_SCH_FIFO=y
463# CONFIG_DCB is not set
452 464
453# 465#
454# Network testing 466# Network testing
@@ -464,8 +476,8 @@ CONFIG_WIRELESS=y
464# CONFIG_CFG80211 is not set 476# CONFIG_CFG80211 is not set
465# CONFIG_WIRELESS_OLD_REGULATORY is not set 477# CONFIG_WIRELESS_OLD_REGULATORY is not set
466# CONFIG_WIRELESS_EXT is not set 478# CONFIG_WIRELESS_EXT is not set
479# CONFIG_LIB80211 is not set
467# CONFIG_MAC80211 is not set 480# CONFIG_MAC80211 is not set
468# CONFIG_IEEE80211 is not set
469# CONFIG_RFKILL is not set 481# CONFIG_RFKILL is not set
470# CONFIG_NET_9P is not set 482# CONFIG_NET_9P is not set
471 483
@@ -516,6 +528,7 @@ CONFIG_IDE=y
516# 528#
517# Please see Documentation/ide/ide.txt for help/info on IDE drives 529# Please see Documentation/ide/ide.txt for help/info on IDE drives
518# 530#
531CONFIG_IDE_ATAPI=y
519# CONFIG_BLK_DEV_IDE_SATA is not set 532# CONFIG_BLK_DEV_IDE_SATA is not set
520CONFIG_IDE_GD=y 533CONFIG_IDE_GD=y
521CONFIG_IDE_GD_ATA=y 534CONFIG_IDE_GD_ATA=y
@@ -525,7 +538,6 @@ CONFIG_IDE_GD_ATA=y
525CONFIG_BLK_DEV_IDECD=y 538CONFIG_BLK_DEV_IDECD=y
526CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 539CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
527# CONFIG_BLK_DEV_IDETAPE is not set 540# CONFIG_BLK_DEV_IDETAPE is not set
528# CONFIG_BLK_DEV_IDESCSI is not set
529# CONFIG_IDE_TASK_IOCTL is not set 541# CONFIG_IDE_TASK_IOCTL is not set
530CONFIG_IDE_PROC_FS=y 542CONFIG_IDE_PROC_FS=y
531 543
@@ -553,6 +565,7 @@ CONFIG_BLK_DEV_GENERIC=y
553# CONFIG_BLK_DEV_JMICRON is not set 565# CONFIG_BLK_DEV_JMICRON is not set
554# CONFIG_BLK_DEV_SC1200 is not set 566# CONFIG_BLK_DEV_SC1200 is not set
555# CONFIG_BLK_DEV_PIIX is not set 567# CONFIG_BLK_DEV_PIIX is not set
568# CONFIG_BLK_DEV_IT8172 is not set
556# CONFIG_BLK_DEV_IT8213 is not set 569# CONFIG_BLK_DEV_IT8213 is not set
557# CONFIG_BLK_DEV_IT821X is not set 570# CONFIG_BLK_DEV_IT821X is not set
558# CONFIG_BLK_DEV_NS87415 is not set 571# CONFIG_BLK_DEV_NS87415 is not set
@@ -619,6 +632,8 @@ CONFIG_SCSI_LOWLEVEL=y
619# CONFIG_MEGARAID_LEGACY is not set 632# CONFIG_MEGARAID_LEGACY is not set
620# CONFIG_MEGARAID_SAS is not set 633# CONFIG_MEGARAID_SAS is not set
621# CONFIG_SCSI_HPTIOP is not set 634# CONFIG_SCSI_HPTIOP is not set
635# CONFIG_LIBFC is not set
636# CONFIG_FCOE is not set
622# CONFIG_SCSI_DMX3191D is not set 637# CONFIG_SCSI_DMX3191D is not set
623# CONFIG_SCSI_FUTURE_DOMAIN is not set 638# CONFIG_SCSI_FUTURE_DOMAIN is not set
624# CONFIG_SCSI_IPS is not set 639# CONFIG_SCSI_IPS is not set
@@ -742,6 +757,7 @@ CONFIG_MII=y
742# CONFIG_NET_VENDOR_3COM is not set 757# CONFIG_NET_VENDOR_3COM is not set
743CONFIG_SMC91X=y 758CONFIG_SMC91X=y
744# CONFIG_SMC911X is not set 759# CONFIG_SMC911X is not set
760# CONFIG_SMSC911X is not set
745# CONFIG_NET_TULIP is not set 761# CONFIG_NET_TULIP is not set
746# CONFIG_HP100 is not set 762# CONFIG_HP100 is not set
747# CONFIG_IBM_NEW_EMAC_ZMII is not set 763# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -826,6 +842,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y
826CONFIG_MOUSE_PS2_SYNAPTICS=y 842CONFIG_MOUSE_PS2_SYNAPTICS=y
827CONFIG_MOUSE_PS2_LIFEBOOK=y 843CONFIG_MOUSE_PS2_LIFEBOOK=y
828CONFIG_MOUSE_PS2_TRACKPOINT=y 844CONFIG_MOUSE_PS2_TRACKPOINT=y
845# CONFIG_MOUSE_PS2_ELANTECH is not set
829# CONFIG_MOUSE_PS2_TOUCHKIT is not set 846# CONFIG_MOUSE_PS2_TOUCHKIT is not set
830# CONFIG_MOUSE_SERIAL is not set 847# CONFIG_MOUSE_SERIAL is not set
831# CONFIG_MOUSE_APPLETOUCH is not set 848# CONFIG_MOUSE_APPLETOUCH is not set
@@ -875,6 +892,7 @@ CONFIG_SERIAL_CORE=y
875CONFIG_SERIAL_CORE_CONSOLE=y 892CONFIG_SERIAL_CORE_CONSOLE=y
876# CONFIG_SERIAL_JSM is not set 893# CONFIG_SERIAL_JSM is not set
877CONFIG_UNIX98_PTYS=y 894CONFIG_UNIX98_PTYS=y
895# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
878CONFIG_LEGACY_PTYS=y 896CONFIG_LEGACY_PTYS=y
879CONFIG_LEGACY_PTY_COUNT=256 897CONFIG_LEGACY_PTY_COUNT=256
880# CONFIG_PRINTER is not set 898# CONFIG_PRINTER is not set
@@ -905,11 +923,11 @@ CONFIG_POWER_SUPPLY=y
905# CONFIG_THERMAL is not set 923# CONFIG_THERMAL is not set
906# CONFIG_THERMAL_HWMON is not set 924# CONFIG_THERMAL_HWMON is not set
907# CONFIG_WATCHDOG is not set 925# CONFIG_WATCHDOG is not set
926CONFIG_SSB_POSSIBLE=y
908 927
909# 928#
910# Sonics Silicon Backplane 929# Sonics Silicon Backplane
911# 930#
912CONFIG_SSB_POSSIBLE=y
913CONFIG_SSB=y 931CONFIG_SSB=y
914CONFIG_SSB_SPROM=y 932CONFIG_SSB_SPROM=y
915CONFIG_SSB_PCIHOST_POSSIBLE=y 933CONFIG_SSB_PCIHOST_POSSIBLE=y
@@ -929,7 +947,7 @@ CONFIG_SSB_DRIVER_PCICORE=y
929# CONFIG_MFD_SM501 is not set 947# CONFIG_MFD_SM501 is not set
930# CONFIG_HTC_PASIC3 is not set 948# CONFIG_HTC_PASIC3 is not set
931# CONFIG_MFD_TMIO is not set 949# CONFIG_MFD_TMIO is not set
932# CONFIG_MFD_WM8400 is not set 950# CONFIG_REGULATOR is not set
933 951
934# 952#
935# Multimedia devices 953# Multimedia devices
@@ -957,15 +975,16 @@ CONFIG_FB=y
957# CONFIG_FIRMWARE_EDID is not set 975# CONFIG_FIRMWARE_EDID is not set
958# CONFIG_FB_DDC is not set 976# CONFIG_FB_DDC is not set
959# CONFIG_FB_BOOT_VESA_SUPPORT is not set 977# CONFIG_FB_BOOT_VESA_SUPPORT is not set
960CONFIG_FB_CFB_FILLRECT=m 978# CONFIG_FB_CFB_FILLRECT is not set
961CONFIG_FB_CFB_COPYAREA=m 979# CONFIG_FB_CFB_COPYAREA is not set
962CONFIG_FB_CFB_IMAGEBLIT=m 980# CONFIG_FB_CFB_IMAGEBLIT is not set
963# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 981# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
964# CONFIG_FB_SYS_FILLRECT is not set 982CONFIG_FB_SYS_FILLRECT=m
965# CONFIG_FB_SYS_COPYAREA is not set 983CONFIG_FB_SYS_COPYAREA=m
966# CONFIG_FB_SYS_IMAGEBLIT is not set 984CONFIG_FB_SYS_IMAGEBLIT=m
967# CONFIG_FB_FOREIGN_ENDIAN is not set 985# CONFIG_FB_FOREIGN_ENDIAN is not set
968# CONFIG_FB_SYS_FOPS is not set 986CONFIG_FB_SYS_FOPS=m
987CONFIG_FB_DEFERRED_IO=y
969# CONFIG_FB_SVGALIB is not set 988# CONFIG_FB_SVGALIB is not set
970# CONFIG_FB_MACMODES is not set 989# CONFIG_FB_MACMODES is not set
971# CONFIG_FB_BACKLIGHT is not set 990# CONFIG_FB_BACKLIGHT is not set
@@ -1003,6 +1022,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
1003CONFIG_FB_SH_MOBILE_LCDC=m 1022CONFIG_FB_SH_MOBILE_LCDC=m
1004# CONFIG_FB_VIRTUAL is not set 1023# CONFIG_FB_VIRTUAL is not set
1005# CONFIG_FB_METRONOME is not set 1024# CONFIG_FB_METRONOME is not set
1025# CONFIG_FB_MB862XX is not set
1006# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 1026# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1007 1027
1008# 1028#
@@ -1054,11 +1074,9 @@ CONFIG_HID_COMPAT=y
1054CONFIG_HID_A4TECH=y 1074CONFIG_HID_A4TECH=y
1055CONFIG_HID_APPLE=y 1075CONFIG_HID_APPLE=y
1056CONFIG_HID_BELKIN=y 1076CONFIG_HID_BELKIN=y
1057CONFIG_HID_BRIGHT=y
1058CONFIG_HID_CHERRY=y 1077CONFIG_HID_CHERRY=y
1059CONFIG_HID_CHICONY=y 1078CONFIG_HID_CHICONY=y
1060CONFIG_HID_CYPRESS=y 1079CONFIG_HID_CYPRESS=y
1061CONFIG_HID_DELL=y
1062CONFIG_HID_EZKEY=y 1080CONFIG_HID_EZKEY=y
1063CONFIG_HID_GYRATION=y 1081CONFIG_HID_GYRATION=y
1064CONFIG_HID_LOGITECH=y 1082CONFIG_HID_LOGITECH=y
@@ -1066,12 +1084,15 @@ CONFIG_HID_LOGITECH=y
1066# CONFIG_LOGIRUMBLEPAD2_FF is not set 1084# CONFIG_LOGIRUMBLEPAD2_FF is not set
1067CONFIG_HID_MICROSOFT=y 1085CONFIG_HID_MICROSOFT=y
1068CONFIG_HID_MONTEREY=y 1086CONFIG_HID_MONTEREY=y
1087# CONFIG_HID_NTRIG is not set
1069CONFIG_HID_PANTHERLORD=y 1088CONFIG_HID_PANTHERLORD=y
1070# CONFIG_PANTHERLORD_FF is not set 1089# CONFIG_PANTHERLORD_FF is not set
1071CONFIG_HID_PETALYNX=y 1090CONFIG_HID_PETALYNX=y
1072CONFIG_HID_SAMSUNG=y 1091CONFIG_HID_SAMSUNG=y
1073CONFIG_HID_SONY=y 1092CONFIG_HID_SONY=y
1074CONFIG_HID_SUNPLUS=y 1093CONFIG_HID_SUNPLUS=y
1094# CONFIG_GREENASIA_FF is not set
1095# CONFIG_HID_TOPSEED is not set
1075CONFIG_THRUSTMASTER_FF=m 1096CONFIG_THRUSTMASTER_FF=m
1076CONFIG_ZEROPLUS_FF=m 1097CONFIG_ZEROPLUS_FF=m
1077CONFIG_USB_SUPPORT=y 1098CONFIG_USB_SUPPORT=y
@@ -1092,6 +1113,8 @@ CONFIG_USB_DEVICEFS=y
1092# CONFIG_USB_OTG_WHITELIST is not set 1113# CONFIG_USB_OTG_WHITELIST is not set
1093# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1114# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1094CONFIG_USB_MON=y 1115CONFIG_USB_MON=y
1116# CONFIG_USB_WUSB is not set
1117# CONFIG_USB_WUSB_CBAF is not set
1095 1118
1096# 1119#
1097# USB Host Controller Drivers 1120# USB Host Controller Drivers
@@ -1106,6 +1129,8 @@ CONFIG_USB_EHCI_HCD=y
1106# CONFIG_USB_UHCI_HCD is not set 1129# CONFIG_USB_UHCI_HCD is not set
1107# CONFIG_USB_SL811_HCD is not set 1130# CONFIG_USB_SL811_HCD is not set
1108# CONFIG_USB_R8A66597_HCD is not set 1131# CONFIG_USB_R8A66597_HCD is not set
1132# CONFIG_USB_WHCI_HCD is not set
1133# CONFIG_USB_HWA_HCD is not set
1109 1134
1110# 1135#
1111# USB Device Class drivers 1136# USB Device Class drivers
@@ -1116,11 +1141,11 @@ CONFIG_USB_PRINTER=y
1116# CONFIG_USB_TMC is not set 1141# CONFIG_USB_TMC is not set
1117 1142
1118# 1143#
1119# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1144# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1120# 1145#
1121 1146
1122# 1147#
1123# may also be needed; see USB_STORAGE Help for more information 1148# see USB_STORAGE Help for more information
1124# 1149#
1125CONFIG_USB_STORAGE=y 1150CONFIG_USB_STORAGE=y
1126# CONFIG_USB_STORAGE_DEBUG is not set 1151# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1176,6 +1201,7 @@ CONFIG_USB_STORAGE=y
1176# CONFIG_USB_ISIGHTFW is not set 1201# CONFIG_USB_ISIGHTFW is not set
1177# CONFIG_USB_VST is not set 1202# CONFIG_USB_VST is not set
1178# CONFIG_USB_GADGET is not set 1203# CONFIG_USB_GADGET is not set
1204# CONFIG_UWB is not set
1179# CONFIG_MMC is not set 1205# CONFIG_MMC is not set
1180# CONFIG_MEMSTICK is not set 1206# CONFIG_MEMSTICK is not set
1181CONFIG_NEW_LEDS=y 1207CONFIG_NEW_LEDS=y
@@ -1260,10 +1286,7 @@ CONFIG_TMPFS_POSIX_ACL=y
1260CONFIG_HUGETLBFS=y 1286CONFIG_HUGETLBFS=y
1261CONFIG_HUGETLB_PAGE=y 1287CONFIG_HUGETLB_PAGE=y
1262# CONFIG_CONFIGFS_FS is not set 1288# CONFIG_CONFIGFS_FS is not set
1263 1289CONFIG_MISC_FILESYSTEMS=y
1264#
1265# Miscellaneous filesystems
1266#
1267# CONFIG_ADFS_FS is not set 1290# CONFIG_ADFS_FS is not set
1268# CONFIG_AFFS_FS is not set 1291# CONFIG_AFFS_FS is not set
1269# CONFIG_HFS_FS is not set 1292# CONFIG_HFS_FS is not set
@@ -1392,6 +1415,7 @@ CONFIG_DEBUG_INFO=y
1392# CONFIG_DEBUG_MEMORY_INIT is not set 1415# CONFIG_DEBUG_MEMORY_INIT is not set
1393# CONFIG_DEBUG_LIST is not set 1416# CONFIG_DEBUG_LIST is not set
1394# CONFIG_DEBUG_SG is not set 1417# CONFIG_DEBUG_SG is not set
1418# CONFIG_DEBUG_NOTIFIERS is not set
1395# CONFIG_FRAME_POINTER is not set 1419# CONFIG_FRAME_POINTER is not set
1396# CONFIG_RCU_TORTURE_TEST is not set 1420# CONFIG_RCU_TORTURE_TEST is not set
1397# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1421# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -1400,17 +1424,25 @@ CONFIG_DEBUG_INFO=y
1400# CONFIG_FAULT_INJECTION is not set 1424# CONFIG_FAULT_INJECTION is not set
1401# CONFIG_LATENCYTOP is not set 1425# CONFIG_LATENCYTOP is not set
1402CONFIG_SYSCTL_SYSCALL_CHECK=y 1426CONFIG_SYSCTL_SYSCALL_CHECK=y
1403CONFIG_NOP_TRACER=y 1427CONFIG_HAVE_FUNCTION_TRACER=y
1404CONFIG_HAVE_FTRACE=y 1428CONFIG_HAVE_DYNAMIC_FTRACE=y
1405# CONFIG_FTRACE is not set 1429CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1430
1431#
1432# Tracers
1433#
1434# CONFIG_FUNCTION_TRACER is not set
1406# CONFIG_IRQSOFF_TRACER is not set 1435# CONFIG_IRQSOFF_TRACER is not set
1407# CONFIG_PREEMPT_TRACER is not set 1436# CONFIG_PREEMPT_TRACER is not set
1408# CONFIG_SCHED_TRACER is not set 1437# CONFIG_SCHED_TRACER is not set
1409# CONFIG_CONTEXT_SWITCH_TRACER is not set 1438# CONFIG_CONTEXT_SWITCH_TRACER is not set
1410# CONFIG_BOOT_TRACER is not set 1439# CONFIG_BOOT_TRACER is not set
1440# CONFIG_TRACE_BRANCH_PROFILING is not set
1411# CONFIG_STACK_TRACER is not set 1441# CONFIG_STACK_TRACER is not set
1412# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1442# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1413# CONFIG_SAMPLES is not set 1443# CONFIG_SAMPLES is not set
1444CONFIG_HAVE_ARCH_KGDB=y
1445# CONFIG_KGDB is not set
1414CONFIG_SH_STANDARD_BIOS=y 1446CONFIG_SH_STANDARD_BIOS=y
1415# CONFIG_EARLY_SCIF_CONSOLE is not set 1447# CONFIG_EARLY_SCIF_CONSOLE is not set
1416# CONFIG_EARLY_PRINTK is not set 1448# CONFIG_EARLY_PRINTK is not set
@@ -1419,7 +1451,9 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1419# CONFIG_DEBUG_STACK_USAGE is not set 1451# CONFIG_DEBUG_STACK_USAGE is not set
1420# CONFIG_4KSTACKS is not set 1452# CONFIG_4KSTACKS is not set
1421# CONFIG_IRQSTACKS is not set 1453# CONFIG_IRQSTACKS is not set
1422# CONFIG_SH_KGDB is not set 1454CONFIG_DUMP_CODE=y
1455# CONFIG_SH_NO_BSS_INIT is not set
1456# CONFIG_MORE_COMPILE_OPTIONS is not set
1423 1457
1424# 1458#
1425# Security options 1459# Security options
@@ -1435,7 +1469,11 @@ CONFIG_CRYPTO=y
1435# 1469#
1436# CONFIG_CRYPTO_FIPS is not set 1470# CONFIG_CRYPTO_FIPS is not set
1437CONFIG_CRYPTO_ALGAPI=y 1471CONFIG_CRYPTO_ALGAPI=y
1472CONFIG_CRYPTO_ALGAPI2=y
1473CONFIG_CRYPTO_HASH=y
1474CONFIG_CRYPTO_HASH2=y
1438# CONFIG_CRYPTO_MANAGER is not set 1475# CONFIG_CRYPTO_MANAGER is not set
1476# CONFIG_CRYPTO_MANAGER2 is not set
1439# CONFIG_CRYPTO_GF128MUL is not set 1477# CONFIG_CRYPTO_GF128MUL is not set
1440# CONFIG_CRYPTO_NULL is not set 1478# CONFIG_CRYPTO_NULL is not set
1441# CONFIG_CRYPTO_CRYPTD is not set 1479# CONFIG_CRYPTO_CRYPTD is not set
@@ -1519,6 +1557,7 @@ CONFIG_CRYPTO_HW=y
1519# Library routines 1557# Library routines
1520# 1558#
1521CONFIG_BITREVERSE=y 1559CONFIG_BITREVERSE=y
1560CONFIG_GENERIC_FIND_LAST_BIT=y
1522# CONFIG_CRC_CCITT is not set 1561# CONFIG_CRC_CCITT is not set
1523# CONFIG_CRC16 is not set 1562# CONFIG_CRC16 is not set
1524CONFIG_CRC_T10DIF=y 1563CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/se7206_defconfig b/arch/sh/configs/se7206_defconfig
index 25717ff26ca9..e5b55b6f002d 100644
--- a/arch/sh/configs/se7206_defconfig
+++ b/arch/sh/configs/se7206_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 18:57:39 2008 4# Fri Jan 9 17:31:27 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17# CONFIG_GENERIC_TIME is not set 17# CONFIG_GENERIC_TIME is not set
18# CONFIG_GENERIC_CLOCKEVENTS is not set 18# CONFIG_GENERIC_CLOCKEVENTS is not set
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -69,6 +71,7 @@ CONFIG_EMBEDDED=y
69# CONFIG_SYSCTL_SYSCALL is not set 71# CONFIG_SYSCTL_SYSCALL is not set
70CONFIG_KALLSYMS=y 72CONFIG_KALLSYMS=y
71CONFIG_KALLSYMS_ALL=y 73CONFIG_KALLSYMS_ALL=y
74CONFIG_KALLSYMS_STRIP_GENERATED=y
72# CONFIG_KALLSYMS_EXTRA_PASS is not set 75# CONFIG_KALLSYMS_EXTRA_PASS is not set
73CONFIG_HOTPLUG=y 76CONFIG_HOTPLUG=y
74CONFIG_PRINTK=y 77CONFIG_PRINTK=y
@@ -84,11 +87,11 @@ CONFIG_TIMERFD=y
84CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
85CONFIG_AIO=y 88CONFIG_AIO=y
86CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
87CONFIG_PCI_QUIRKS=y
88# CONFIG_SLAB is not set 90# CONFIG_SLAB is not set
89# CONFIG_SLUB is not set 91# CONFIG_SLUB is not set
90CONFIG_SLOB=y 92CONFIG_SLOB=y
91CONFIG_PROFILING=y 93CONFIG_PROFILING=y
94CONFIG_TRACEPOINTS=y
92# CONFIG_MARKERS is not set 95# CONFIG_MARKERS is not set
93CONFIG_OPROFILE=y 96CONFIG_OPROFILE=y
94CONFIG_HAVE_OPROFILE=y 97CONFIG_HAVE_OPROFILE=y
@@ -99,7 +102,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
99CONFIG_HAVE_CLK=y 102CONFIG_HAVE_CLK=y
100CONFIG_HAVE_GENERIC_DMA_COHERENT=y 103CONFIG_HAVE_GENERIC_DMA_COHERENT=y
101CONFIG_RT_MUTEXES=y 104CONFIG_RT_MUTEXES=y
102CONFIG_TINY_SHMEM=y
103CONFIG_BASE_SMALL=0 105CONFIG_BASE_SMALL=0
104CONFIG_MODULES=y 106CONFIG_MODULES=y
105# CONFIG_MODULE_FORCE_LOAD is not set 107# CONFIG_MODULE_FORCE_LOAD is not set
@@ -107,11 +109,9 @@ CONFIG_MODULE_UNLOAD=y
107# CONFIG_MODULE_FORCE_UNLOAD is not set 109# CONFIG_MODULE_FORCE_UNLOAD is not set
108# CONFIG_MODVERSIONS is not set 110# CONFIG_MODVERSIONS is not set
109# CONFIG_MODULE_SRCVERSION_ALL is not set 111# CONFIG_MODULE_SRCVERSION_ALL is not set
110CONFIG_KMOD=y
111CONFIG_BLOCK=y 112CONFIG_BLOCK=y
112# CONFIG_LBD is not set 113# CONFIG_LBD is not set
113# CONFIG_BLK_DEV_IO_TRACE is not set 114# CONFIG_BLK_DEV_IO_TRACE is not set
114# CONFIG_LSF is not set
115# CONFIG_BLK_DEV_BSG is not set 115# CONFIG_BLK_DEV_BSG is not set
116# CONFIG_BLK_DEV_INTEGRITY is not set 116# CONFIG_BLK_DEV_INTEGRITY is not set
117 117
@@ -128,6 +128,11 @@ CONFIG_IOSCHED_NOOP=y
128CONFIG_DEFAULT_NOOP=y 128CONFIG_DEFAULT_NOOP=y
129CONFIG_DEFAULT_IOSCHED="noop" 129CONFIG_DEFAULT_IOSCHED="noop"
130# CONFIG_CLASSIC_RCU is not set 130# CONFIG_CLASSIC_RCU is not set
131# CONFIG_TREE_RCU is not set
132CONFIG_PREEMPT_RCU=y
133CONFIG_RCU_TRACE=y
134# CONFIG_TREE_RCU_TRACE is not set
135CONFIG_PREEMPT_RCU_TRACE=y
131# CONFIG_FREEZER is not set 136# CONFIG_FREEZER is not set
132 137
133# 138#
@@ -136,6 +141,7 @@ CONFIG_DEFAULT_IOSCHED="noop"
136CONFIG_CPU_SH2=y 141CONFIG_CPU_SH2=y
137CONFIG_CPU_SH2A=y 142CONFIG_CPU_SH2A=y
138# CONFIG_CPU_SUBTYPE_SH7619 is not set 143# CONFIG_CPU_SUBTYPE_SH7619 is not set
144# CONFIG_CPU_SUBTYPE_SH7201 is not set
139# CONFIG_CPU_SUBTYPE_SH7203 is not set 145# CONFIG_CPU_SUBTYPE_SH7203 is not set
140CONFIG_CPU_SUBTYPE_SH7206=y 146CONFIG_CPU_SUBTYPE_SH7206=y
141# CONFIG_CPU_SUBTYPE_SH7263 is not set 147# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -197,7 +203,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
197CONFIG_SPARSEMEM_STATIC=y 203CONFIG_SPARSEMEM_STATIC=y
198CONFIG_PAGEFLAGS_EXTENDED=y 204CONFIG_PAGEFLAGS_EXTENDED=y
199CONFIG_SPLIT_PTLOCK_CPUS=4 205CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set
201# CONFIG_PHYS_ADDR_T_64BIT is not set 206# CONFIG_PHYS_ADDR_T_64BIT is not set
202CONFIG_ZONE_DMA_FLAG=0 207CONFIG_ZONE_DMA_FLAG=0
203CONFIG_NR_QUICK=2 208CONFIG_NR_QUICK=2
@@ -281,8 +286,6 @@ CONFIG_KEXEC=y
281# CONFIG_PREEMPT_NONE is not set 286# CONFIG_PREEMPT_NONE is not set
282# CONFIG_PREEMPT_VOLUNTARY is not set 287# CONFIG_PREEMPT_VOLUNTARY is not set
283CONFIG_PREEMPT=y 288CONFIG_PREEMPT=y
284CONFIG_PREEMPT_RCU=y
285CONFIG_RCU_TRACE=y
286CONFIG_GUSA=y 289CONFIG_GUSA=y
287 290
288# 291#
@@ -296,10 +299,6 @@ CONFIG_CMDLINE="console=ttySC3,115200 ignore_loglevel earlyprintk=serial"
296# 299#
297# Bus options 300# Bus options
298# 301#
299CONFIG_CF_ENABLER=y
300# CONFIG_CF_AREA5 is not set
301CONFIG_CF_AREA6=y
302CONFIG_CF_BASE_ADDR=0xb8000000
303# CONFIG_ARCH_SUPPORTS_MSI is not set 302# CONFIG_ARCH_SUPPORTS_MSI is not set
304# CONFIG_PCCARD is not set 303# CONFIG_PCCARD is not set
305 304
@@ -312,11 +311,19 @@ CONFIG_BINFMT_ZFLAT=y
312CONFIG_BINFMT_SHARED_FLAT=y 311CONFIG_BINFMT_SHARED_FLAT=y
313# CONFIG_HAVE_AOUT is not set 312# CONFIG_HAVE_AOUT is not set
314CONFIG_BINFMT_MISC=y 313CONFIG_BINFMT_MISC=y
314
315#
316# Power management options (EXPERIMENTAL)
317#
318# CONFIG_PM is not set
319# CONFIG_CPU_IDLE is not set
315CONFIG_NET=y 320CONFIG_NET=y
316 321
317# 322#
318# Networking options 323# Networking options
319# 324#
325# CONFIG_NET_NS is not set
326CONFIG_COMPAT_NET_DEV_OPS=y
320CONFIG_PACKET=y 327CONFIG_PACKET=y
321# CONFIG_PACKET_MMAP is not set 328# CONFIG_PACKET_MMAP is not set
322CONFIG_UNIX=y 329CONFIG_UNIX=y
@@ -372,6 +379,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
372# CONFIG_ECONET is not set 379# CONFIG_ECONET is not set
373# CONFIG_WAN_ROUTER is not set 380# CONFIG_WAN_ROUTER is not set
374# CONFIG_NET_SCHED is not set 381# CONFIG_NET_SCHED is not set
382# CONFIG_DCB is not set
375 383
376# 384#
377# Network testing 385# Network testing
@@ -387,8 +395,8 @@ CONFIG_WIRELESS=y
387# CONFIG_CFG80211 is not set 395# CONFIG_CFG80211 is not set
388# CONFIG_WIRELESS_OLD_REGULATORY is not set 396# CONFIG_WIRELESS_OLD_REGULATORY is not set
389# CONFIG_WIRELESS_EXT is not set 397# CONFIG_WIRELESS_EXT is not set
398# CONFIG_LIB80211 is not set
390# CONFIG_MAC80211 is not set 399# CONFIG_MAC80211 is not set
391# CONFIG_IEEE80211 is not set
392# CONFIG_RFKILL is not set 400# CONFIG_RFKILL is not set
393# CONFIG_NET_9P is not set 401# CONFIG_NET_9P is not set
394 402
@@ -500,6 +508,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
500CONFIG_MISC_DEVICES=y 508CONFIG_MISC_DEVICES=y
501CONFIG_EEPROM_93CX6=y 509CONFIG_EEPROM_93CX6=y
502# CONFIG_ENCLOSURE_SERVICES is not set 510# CONFIG_ENCLOSURE_SERVICES is not set
511# CONFIG_C2PORT is not set
503CONFIG_HAVE_IDE=y 512CONFIG_HAVE_IDE=y
504# CONFIG_IDE is not set 513# CONFIG_IDE is not set
505 514
@@ -526,6 +535,7 @@ CONFIG_MII=y
526# CONFIG_STNIC is not set 535# CONFIG_STNIC is not set
527CONFIG_SMC91X=y 536CONFIG_SMC91X=y
528# CONFIG_SMC911X is not set 537# CONFIG_SMC911X is not set
538# CONFIG_SMSC911X is not set
529# CONFIG_IBM_NEW_EMAC_ZMII is not set 539# CONFIG_IBM_NEW_EMAC_ZMII is not set
530# CONFIG_IBM_NEW_EMAC_RGMII is not set 540# CONFIG_IBM_NEW_EMAC_RGMII is not set
531# CONFIG_IBM_NEW_EMAC_TAH is not set 541# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -598,11 +608,11 @@ CONFIG_SERIAL_CORE_CONSOLE=y
598# CONFIG_THERMAL is not set 608# CONFIG_THERMAL is not set
599# CONFIG_THERMAL_HWMON is not set 609# CONFIG_THERMAL_HWMON is not set
600# CONFIG_WATCHDOG is not set 610# CONFIG_WATCHDOG is not set
611CONFIG_SSB_POSSIBLE=y
601 612
602# 613#
603# Sonics Silicon Backplane 614# Sonics Silicon Backplane
604# 615#
605CONFIG_SSB_POSSIBLE=y
606# CONFIG_SSB is not set 616# CONFIG_SSB is not set
607 617
608# 618#
@@ -612,7 +622,7 @@ CONFIG_SSB_POSSIBLE=y
612# CONFIG_MFD_SM501 is not set 622# CONFIG_MFD_SM501 is not set
613# CONFIG_HTC_PASIC3 is not set 623# CONFIG_HTC_PASIC3 is not set
614# CONFIG_MFD_TMIO is not set 624# CONFIG_MFD_TMIO is not set
615# CONFIG_MFD_WM8400 is not set 625# CONFIG_REGULATOR is not set
616 626
617# 627#
618# Multimedia devices 628# Multimedia devices
@@ -732,10 +742,7 @@ CONFIG_TMPFS=y
732# CONFIG_TMPFS_POSIX_ACL is not set 742# CONFIG_TMPFS_POSIX_ACL is not set
733# CONFIG_HUGETLB_PAGE is not set 743# CONFIG_HUGETLB_PAGE is not set
734CONFIG_CONFIGFS_FS=y 744CONFIG_CONFIGFS_FS=y
735 745CONFIG_MISC_FILESYSTEMS=y
736#
737# Miscellaneous filesystems
738#
739# CONFIG_ADFS_FS is not set 746# CONFIG_ADFS_FS is not set
740# CONFIG_AFFS_FS is not set 747# CONFIG_AFFS_FS is not set
741# CONFIG_HFS_FS is not set 748# CONFIG_HFS_FS is not set
@@ -812,6 +819,7 @@ CONFIG_DEBUG_PREEMPT=y
812# CONFIG_LOCK_STAT is not set 819# CONFIG_LOCK_STAT is not set
813CONFIG_DEBUG_SPINLOCK_SLEEP=y 820CONFIG_DEBUG_SPINLOCK_SLEEP=y
814# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 821# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
822CONFIG_STACKTRACE=y
815# CONFIG_DEBUG_KOBJECT is not set 823# CONFIG_DEBUG_KOBJECT is not set
816CONFIG_DEBUG_BUGVERBOSE=y 824CONFIG_DEBUG_BUGVERBOSE=y
817# CONFIG_DEBUG_INFO is not set 825# CONFIG_DEBUG_INFO is not set
@@ -820,6 +828,7 @@ CONFIG_DEBUG_VM=y
820# CONFIG_DEBUG_MEMORY_INIT is not set 828# CONFIG_DEBUG_MEMORY_INIT is not set
821CONFIG_DEBUG_LIST=y 829CONFIG_DEBUG_LIST=y
822# CONFIG_DEBUG_SG is not set 830# CONFIG_DEBUG_SG is not set
831# CONFIG_DEBUG_NOTIFIERS is not set
823CONFIG_FRAME_POINTER=y 832CONFIG_FRAME_POINTER=y
824# CONFIG_RCU_TORTURE_TEST is not set 833# CONFIG_RCU_TORTURE_TEST is not set
825# CONFIG_BACKTRACE_SELF_TEST is not set 834# CONFIG_BACKTRACE_SELF_TEST is not set
@@ -827,20 +836,35 @@ CONFIG_FRAME_POINTER=y
827# CONFIG_FAULT_INJECTION is not set 836# CONFIG_FAULT_INJECTION is not set
828# CONFIG_LATENCYTOP is not set 837# CONFIG_LATENCYTOP is not set
829CONFIG_NOP_TRACER=y 838CONFIG_NOP_TRACER=y
830CONFIG_HAVE_FTRACE=y 839CONFIG_HAVE_FUNCTION_TRACER=y
831# CONFIG_FTRACE is not set 840CONFIG_HAVE_DYNAMIC_FTRACE=y
841CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
842CONFIG_RING_BUFFER=y
843CONFIG_TRACING=y
844
845#
846# Tracers
847#
848# CONFIG_FUNCTION_TRACER is not set
832# CONFIG_SCHED_TRACER is not set 849# CONFIG_SCHED_TRACER is not set
833# CONFIG_CONTEXT_SWITCH_TRACER is not set 850# CONFIG_CONTEXT_SWITCH_TRACER is not set
834# CONFIG_BOOT_TRACER is not set 851# CONFIG_BOOT_TRACER is not set
852# CONFIG_TRACE_BRANCH_PROFILING is not set
835# CONFIG_STACK_TRACER is not set 853# CONFIG_STACK_TRACER is not set
854# CONFIG_FTRACE_STARTUP_TEST is not set
836# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 855# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
837# CONFIG_SAMPLES is not set 856# CONFIG_SAMPLES is not set
857CONFIG_HAVE_ARCH_KGDB=y
858# CONFIG_KGDB is not set
838# CONFIG_SH_STANDARD_BIOS is not set 859# CONFIG_SH_STANDARD_BIOS is not set
839# CONFIG_EARLY_SCIF_CONSOLE is not set 860# CONFIG_EARLY_SCIF_CONSOLE is not set
840# CONFIG_DEBUG_BOOTMEM is not set 861# CONFIG_DEBUG_BOOTMEM is not set
841CONFIG_DEBUG_STACKOVERFLOW=y 862CONFIG_DEBUG_STACKOVERFLOW=y
842CONFIG_DEBUG_STACK_USAGE=y 863CONFIG_DEBUG_STACK_USAGE=y
843# CONFIG_IRQSTACKS is not set 864# CONFIG_IRQSTACKS is not set
865CONFIG_DUMP_CODE=y
866# CONFIG_SH_NO_BSS_INIT is not set
867# CONFIG_MORE_COMPILE_OPTIONS is not set
844 868
845# 869#
846# Security options 870# Security options
@@ -856,7 +880,11 @@ CONFIG_CRYPTO=y
856# 880#
857# CONFIG_CRYPTO_FIPS is not set 881# CONFIG_CRYPTO_FIPS is not set
858CONFIG_CRYPTO_ALGAPI=y 882CONFIG_CRYPTO_ALGAPI=y
883CONFIG_CRYPTO_ALGAPI2=y
884CONFIG_CRYPTO_HASH=y
885CONFIG_CRYPTO_HASH2=y
859# CONFIG_CRYPTO_MANAGER is not set 886# CONFIG_CRYPTO_MANAGER is not set
887# CONFIG_CRYPTO_MANAGER2 is not set
860# CONFIG_CRYPTO_GF128MUL is not set 888# CONFIG_CRYPTO_GF128MUL is not set
861# CONFIG_CRYPTO_NULL is not set 889# CONFIG_CRYPTO_NULL is not set
862# CONFIG_CRYPTO_CRYPTD is not set 890# CONFIG_CRYPTO_CRYPTD is not set
@@ -890,7 +918,7 @@ CONFIG_CRYPTO_ALGAPI=y
890# 918#
891# Digest 919# Digest
892# 920#
893# CONFIG_CRYPTO_CRC32C is not set 921CONFIG_CRYPTO_CRC32C=y
894# CONFIG_CRYPTO_MD4 is not set 922# CONFIG_CRYPTO_MD4 is not set
895# CONFIG_CRYPTO_MD5 is not set 923# CONFIG_CRYPTO_MD5 is not set
896# CONFIG_CRYPTO_MICHAEL_MIC is not set 924# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -939,6 +967,7 @@ CONFIG_CRYPTO_LZO=y
939# Library routines 967# Library routines
940# 968#
941CONFIG_BITREVERSE=y 969CONFIG_BITREVERSE=y
970CONFIG_GENERIC_FIND_LAST_BIT=y
942CONFIG_CRC_CCITT=y 971CONFIG_CRC_CCITT=y
943CONFIG_CRC16=y 972CONFIG_CRC16=y
944# CONFIG_CRC_T10DIF is not set 973# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7343_defconfig b/arch/sh/configs/se7343_defconfig
index be246f381507..1b93d442134c 100644
--- a/arch/sh/configs/se7343_defconfig
+++ b/arch/sh/configs/se7343_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.28-rc6 3# Linux kernel version: 2.6.28
4# Thu Dec 4 16:40:25 2008 4# Fri Jan 9 17:33:53 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -78,7 +80,6 @@ CONFIG_SLAB=y
78# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
79# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
80# CONFIG_PROFILING is not set 82# CONFIG_PROFILING is not set
81# CONFIG_MARKERS is not set
82CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
83# CONFIG_KPROBES is not set 84# CONFIG_KPROBES is not set
84CONFIG_HAVE_IOREMAP_PROT=y 85CONFIG_HAVE_IOREMAP_PROT=y
@@ -88,7 +89,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
88CONFIG_HAVE_CLK=y 89CONFIG_HAVE_CLK=y
89CONFIG_HAVE_GENERIC_DMA_COHERENT=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
90CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
91CONFIG_TINY_SHMEM=y
92CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
93CONFIG_MODULES=y 93CONFIG_MODULES=y
94# CONFIG_MODULE_FORCE_LOAD is not set 94# CONFIG_MODULE_FORCE_LOAD is not set
@@ -96,11 +96,9 @@ CONFIG_MODULE_UNLOAD=y
96CONFIG_MODULE_FORCE_UNLOAD=y 96CONFIG_MODULE_FORCE_UNLOAD=y
97# CONFIG_MODVERSIONS is not set 97# CONFIG_MODVERSIONS is not set
98# CONFIG_MODULE_SRCVERSION_ALL is not set 98# CONFIG_MODULE_SRCVERSION_ALL is not set
99CONFIG_KMOD=y
100CONFIG_BLOCK=y 99CONFIG_BLOCK=y
101# CONFIG_LBD is not set 100# CONFIG_LBD is not set
102# CONFIG_BLK_DEV_IO_TRACE is not set 101# CONFIG_BLK_DEV_IO_TRACE is not set
103# CONFIG_LSF is not set
104# CONFIG_BLK_DEV_BSG is not set 102# CONFIG_BLK_DEV_BSG is not set
105# CONFIG_BLK_DEV_INTEGRITY is not set 103# CONFIG_BLK_DEV_INTEGRITY is not set
106 104
@@ -117,6 +115,10 @@ CONFIG_DEFAULT_DEADLINE=y
117# CONFIG_DEFAULT_NOOP is not set 115# CONFIG_DEFAULT_NOOP is not set
118CONFIG_DEFAULT_IOSCHED="deadline" 116CONFIG_DEFAULT_IOSCHED="deadline"
119CONFIG_CLASSIC_RCU=y 117CONFIG_CLASSIC_RCU=y
118# CONFIG_TREE_RCU is not set
119# CONFIG_PREEMPT_RCU is not set
120# CONFIG_TREE_RCU_TRACE is not set
121# CONFIG_PREEMPT_RCU_TRACE is not set
120# CONFIG_FREEZER is not set 122# CONFIG_FREEZER is not set
121 123
122# 124#
@@ -190,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
190CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
191CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
192CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
193# CONFIG_RESOURCES_64BIT is not set
194# CONFIG_PHYS_ADDR_T_64BIT is not set 195# CONFIG_PHYS_ADDR_T_64BIT is not set
195CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
196CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
@@ -280,7 +281,6 @@ CONFIG_CMDLINE="console=ttySC0,115200"
280# 281#
281# Bus options 282# Bus options
282# 283#
283# CONFIG_CF_ENABLER is not set
284# CONFIG_ARCH_SUPPORTS_MSI is not set 284# CONFIG_ARCH_SUPPORTS_MSI is not set
285# CONFIG_PCCARD is not set 285# CONFIG_PCCARD is not set
286 286
@@ -291,11 +291,18 @@ CONFIG_BINFMT_ELF=y
291# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 291# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
292# CONFIG_HAVE_AOUT is not set 292# CONFIG_HAVE_AOUT is not set
293# CONFIG_BINFMT_MISC is not set 293# CONFIG_BINFMT_MISC is not set
294
295#
296# Power management options (EXPERIMENTAL)
297#
298# CONFIG_PM is not set
299# CONFIG_CPU_IDLE is not set
294CONFIG_NET=y 300CONFIG_NET=y
295 301
296# 302#
297# Networking options 303# Networking options
298# 304#
305CONFIG_COMPAT_NET_DEV_OPS=y
299CONFIG_PACKET=y 306CONFIG_PACKET=y
300CONFIG_PACKET_MMAP=y 307CONFIG_PACKET_MMAP=y
301CONFIG_UNIX=y 308CONFIG_UNIX=y
@@ -347,6 +354,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
347# CONFIG_ECONET is not set 354# CONFIG_ECONET is not set
348# CONFIG_WAN_ROUTER is not set 355# CONFIG_WAN_ROUTER is not set
349# CONFIG_NET_SCHED is not set 356# CONFIG_NET_SCHED is not set
357# CONFIG_DCB is not set
350 358
351# 359#
352# Network testing 360# Network testing
@@ -362,8 +370,8 @@ CONFIG_WIRELESS=y
362# CONFIG_CFG80211 is not set 370# CONFIG_CFG80211 is not set
363# CONFIG_WIRELESS_OLD_REGULATORY is not set 371# CONFIG_WIRELESS_OLD_REGULATORY is not set
364# CONFIG_WIRELESS_EXT is not set 372# CONFIG_WIRELESS_EXT is not set
373# CONFIG_LIB80211 is not set
365# CONFIG_MAC80211 is not set 374# CONFIG_MAC80211 is not set
366# CONFIG_IEEE80211 is not set
367# CONFIG_RFKILL is not set 375# CONFIG_RFKILL is not set
368# CONFIG_NET_9P is not set 376# CONFIG_NET_9P is not set
369 377
@@ -693,6 +701,7 @@ CONFIG_SSB_POSSIBLE=y
693# CONFIG_MFD_CORE is not set 701# CONFIG_MFD_CORE is not set
694# CONFIG_MFD_SM501 is not set 702# CONFIG_MFD_SM501 is not set
695# CONFIG_HTC_PASIC3 is not set 703# CONFIG_HTC_PASIC3 is not set
704# CONFIG_TWL4030_CORE is not set
696# CONFIG_MFD_TMIO is not set 705# CONFIG_MFD_TMIO is not set
697# CONFIG_PMIC_DA903X is not set 706# CONFIG_PMIC_DA903X is not set
698# CONFIG_MFD_WM8400 is not set 707# CONFIG_MFD_WM8400 is not set
@@ -743,11 +752,13 @@ CONFIG_V4L_USB_DRIVERS=y
743# CONFIG_USB_VIDEO_CLASS is not set 752# CONFIG_USB_VIDEO_CLASS is not set
744CONFIG_USB_GSPCA=m 753CONFIG_USB_GSPCA=m
745# CONFIG_USB_M5602 is not set 754# CONFIG_USB_M5602 is not set
755# CONFIG_USB_STV06XX is not set
746# CONFIG_USB_GSPCA_CONEX is not set 756# CONFIG_USB_GSPCA_CONEX is not set
747# CONFIG_USB_GSPCA_ETOMS is not set 757# CONFIG_USB_GSPCA_ETOMS is not set
748# CONFIG_USB_GSPCA_FINEPIX is not set 758# CONFIG_USB_GSPCA_FINEPIX is not set
749# CONFIG_USB_GSPCA_MARS is not set 759# CONFIG_USB_GSPCA_MARS is not set
750# CONFIG_USB_GSPCA_OV519 is not set 760# CONFIG_USB_GSPCA_OV519 is not set
761# CONFIG_USB_GSPCA_OV534 is not set
751# CONFIG_USB_GSPCA_PAC207 is not set 762# CONFIG_USB_GSPCA_PAC207 is not set
752# CONFIG_USB_GSPCA_PAC7311 is not set 763# CONFIG_USB_GSPCA_PAC7311 is not set
753# CONFIG_USB_GSPCA_SONIXB is not set 764# CONFIG_USB_GSPCA_SONIXB is not set
@@ -786,6 +797,7 @@ CONFIG_RADIO_ADAPTERS=y
786# CONFIG_USB_DSBR is not set 797# CONFIG_USB_DSBR is not set
787# CONFIG_USB_SI470X is not set 798# CONFIG_USB_SI470X is not set
788# CONFIG_USB_MR800 is not set 799# CONFIG_USB_MR800 is not set
800# CONFIG_RADIO_TEA5764 is not set
789# CONFIG_DAB is not set 801# CONFIG_DAB is not set
790 802
791# 803#
@@ -797,15 +809,16 @@ CONFIG_FB=y
797CONFIG_FIRMWARE_EDID=y 809CONFIG_FIRMWARE_EDID=y
798# CONFIG_FB_DDC is not set 810# CONFIG_FB_DDC is not set
799# CONFIG_FB_BOOT_VESA_SUPPORT is not set 811# CONFIG_FB_BOOT_VESA_SUPPORT is not set
800CONFIG_FB_CFB_FILLRECT=m 812# CONFIG_FB_CFB_FILLRECT is not set
801CONFIG_FB_CFB_COPYAREA=m 813# CONFIG_FB_CFB_COPYAREA is not set
802CONFIG_FB_CFB_IMAGEBLIT=m 814# CONFIG_FB_CFB_IMAGEBLIT is not set
803# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 815# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
804# CONFIG_FB_SYS_FILLRECT is not set 816CONFIG_FB_SYS_FILLRECT=m
805# CONFIG_FB_SYS_COPYAREA is not set 817CONFIG_FB_SYS_COPYAREA=m
806# CONFIG_FB_SYS_IMAGEBLIT is not set 818CONFIG_FB_SYS_IMAGEBLIT=m
807# CONFIG_FB_FOREIGN_ENDIAN is not set 819# CONFIG_FB_FOREIGN_ENDIAN is not set
808# CONFIG_FB_SYS_FOPS is not set 820CONFIG_FB_SYS_FOPS=m
821CONFIG_FB_DEFERRED_IO=y
809# CONFIG_FB_SVGALIB is not set 822# CONFIG_FB_SVGALIB is not set
810# CONFIG_FB_MACMODES is not set 823# CONFIG_FB_MACMODES is not set
811# CONFIG_FB_BACKLIGHT is not set 824# CONFIG_FB_BACKLIGHT is not set
@@ -881,11 +894,9 @@ CONFIG_HID_COMPAT=y
881CONFIG_HID_A4TECH=y 894CONFIG_HID_A4TECH=y
882CONFIG_HID_APPLE=y 895CONFIG_HID_APPLE=y
883CONFIG_HID_BELKIN=y 896CONFIG_HID_BELKIN=y
884CONFIG_HID_BRIGHT=y
885CONFIG_HID_CHERRY=y 897CONFIG_HID_CHERRY=y
886CONFIG_HID_CHICONY=y 898CONFIG_HID_CHICONY=y
887CONFIG_HID_CYPRESS=y 899CONFIG_HID_CYPRESS=y
888CONFIG_HID_DELL=y
889CONFIG_HID_EZKEY=y 900CONFIG_HID_EZKEY=y
890CONFIG_HID_GYRATION=y 901CONFIG_HID_GYRATION=y
891CONFIG_HID_LOGITECH=y 902CONFIG_HID_LOGITECH=y
@@ -893,12 +904,15 @@ CONFIG_HID_LOGITECH=y
893# CONFIG_LOGIRUMBLEPAD2_FF is not set 904# CONFIG_LOGIRUMBLEPAD2_FF is not set
894CONFIG_HID_MICROSOFT=y 905CONFIG_HID_MICROSOFT=y
895CONFIG_HID_MONTEREY=y 906CONFIG_HID_MONTEREY=y
907# CONFIG_HID_NTRIG is not set
896CONFIG_HID_PANTHERLORD=y 908CONFIG_HID_PANTHERLORD=y
897# CONFIG_PANTHERLORD_FF is not set 909# CONFIG_PANTHERLORD_FF is not set
898CONFIG_HID_PETALYNX=y 910CONFIG_HID_PETALYNX=y
899CONFIG_HID_SAMSUNG=y 911CONFIG_HID_SAMSUNG=y
900CONFIG_HID_SONY=y 912CONFIG_HID_SONY=y
901CONFIG_HID_SUNPLUS=y 913CONFIG_HID_SUNPLUS=y
914# CONFIG_GREENASIA_FF is not set
915# CONFIG_HID_TOPSEED is not set
902# CONFIG_THRUSTMASTER_FF is not set 916# CONFIG_THRUSTMASTER_FF is not set
903# CONFIG_ZEROPLUS_FF is not set 917# CONFIG_ZEROPLUS_FF is not set
904CONFIG_USB_SUPPORT=y 918CONFIG_USB_SUPPORT=y
@@ -997,7 +1011,6 @@ CONFIG_UIO=y
997# CONFIG_UIO_SMX is not set 1011# CONFIG_UIO_SMX is not set
998# CONFIG_UIO_SERCOS3 is not set 1012# CONFIG_UIO_SERCOS3 is not set
999# CONFIG_STAGING is not set 1013# CONFIG_STAGING is not set
1000CONFIG_STAGING_EXCLUDE_BUILD=y
1001 1014
1002# 1015#
1003# File systems 1016# File systems
@@ -1051,10 +1064,7 @@ CONFIG_TMPFS=y
1051# CONFIG_HUGETLBFS is not set 1064# CONFIG_HUGETLBFS is not set
1052# CONFIG_HUGETLB_PAGE is not set 1065# CONFIG_HUGETLB_PAGE is not set
1053# CONFIG_CONFIGFS_FS is not set 1066# CONFIG_CONFIGFS_FS is not set
1054 1067CONFIG_MISC_FILESYSTEMS=y
1055#
1056# Miscellaneous filesystems
1057#
1058# CONFIG_ADFS_FS is not set 1068# CONFIG_ADFS_FS is not set
1059# CONFIG_AFFS_FS is not set 1069# CONFIG_AFFS_FS is not set
1060# CONFIG_HFS_FS is not set 1070# CONFIG_HFS_FS is not set
@@ -1138,11 +1148,12 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1138# 1148#
1139# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1149# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1140# CONFIG_SAMPLES is not set 1150# CONFIG_SAMPLES is not set
1151CONFIG_HAVE_ARCH_KGDB=y
1141# CONFIG_SH_STANDARD_BIOS is not set 1152# CONFIG_SH_STANDARD_BIOS is not set
1142CONFIG_EARLY_SCIF_CONSOLE=y 1153CONFIG_EARLY_SCIF_CONSOLE=y
1143CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000 1154CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe00000
1144CONFIG_EARLY_PRINTK=y 1155CONFIG_EARLY_PRINTK=y
1145# CONFIG_SH_KGDB is not set 1156# CONFIG_MORE_COMPILE_OPTIONS is not set
1146 1157
1147# 1158#
1148# Security options 1159# Security options
@@ -1158,6 +1169,7 @@ CONFIG_CRYPTO=y
1158# 1169#
1159# CONFIG_CRYPTO_FIPS is not set 1170# CONFIG_CRYPTO_FIPS is not set
1160# CONFIG_CRYPTO_MANAGER is not set 1171# CONFIG_CRYPTO_MANAGER is not set
1172# CONFIG_CRYPTO_MANAGER2 is not set
1161# CONFIG_CRYPTO_GF128MUL is not set 1173# CONFIG_CRYPTO_GF128MUL is not set
1162# CONFIG_CRYPTO_NULL is not set 1174# CONFIG_CRYPTO_NULL is not set
1163# CONFIG_CRYPTO_CRYPTD is not set 1175# CONFIG_CRYPTO_CRYPTD is not set
@@ -1240,6 +1252,7 @@ CONFIG_CRYPTO_HW=y
1240# Library routines 1252# Library routines
1241# 1253#
1242CONFIG_BITREVERSE=y 1254CONFIG_BITREVERSE=y
1255CONFIG_GENERIC_FIND_LAST_BIT=y
1243# CONFIG_CRC_CCITT is not set 1256# CONFIG_CRC_CCITT is not set
1244# CONFIG_CRC16 is not set 1257# CONFIG_CRC16 is not set
1245# CONFIG_CRC_T10DIF is not set 1258# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7619_defconfig b/arch/sh/configs/se7619_defconfig
index db9cacd7c4e7..932b0235b1de 100644
--- a/arch/sh/configs/se7619_defconfig
+++ b/arch/sh/configs/se7619_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:03:29 2008 4# Fri Jan 9 17:36:46 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17# CONFIG_GENERIC_TIME is not set 17# CONFIG_GENERIC_TIME is not set
18# CONFIG_GENERIC_CLOCKEVENTS is not set 18# CONFIG_GENERIC_CLOCKEVENTS is not set
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -61,12 +63,10 @@ CONFIG_TIMERFD=y
61CONFIG_EVENTFD=y 63CONFIG_EVENTFD=y
62CONFIG_AIO=y 64CONFIG_AIO=y
63# CONFIG_VM_EVENT_COUNTERS is not set 65# CONFIG_VM_EVENT_COUNTERS is not set
64CONFIG_PCI_QUIRKS=y
65CONFIG_SLAB=y 66CONFIG_SLAB=y
66# CONFIG_SLUB is not set 67# CONFIG_SLUB is not set
67# CONFIG_SLOB is not set 68# CONFIG_SLOB is not set
68# CONFIG_PROFILING is not set 69# CONFIG_PROFILING is not set
69# CONFIG_MARKERS is not set
70CONFIG_HAVE_OPROFILE=y 70CONFIG_HAVE_OPROFILE=y
71CONFIG_HAVE_KPROBES=y 71CONFIG_HAVE_KPROBES=y
72CONFIG_HAVE_KRETPROBES=y 72CONFIG_HAVE_KRETPROBES=y
@@ -74,12 +74,10 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
74CONFIG_HAVE_CLK=y 74CONFIG_HAVE_CLK=y
75CONFIG_HAVE_GENERIC_DMA_COHERENT=y 75CONFIG_HAVE_GENERIC_DMA_COHERENT=y
76CONFIG_SLABINFO=y 76CONFIG_SLABINFO=y
77CONFIG_TINY_SHMEM=y
78CONFIG_BASE_SMALL=1 77CONFIG_BASE_SMALL=1
79# CONFIG_MODULES is not set 78# CONFIG_MODULES is not set
80CONFIG_BLOCK=y 79CONFIG_BLOCK=y
81# CONFIG_LBD is not set 80# CONFIG_LBD is not set
82# CONFIG_LSF is not set
83# CONFIG_BLK_DEV_BSG is not set 81# CONFIG_BLK_DEV_BSG is not set
84# CONFIG_BLK_DEV_INTEGRITY is not set 82# CONFIG_BLK_DEV_INTEGRITY is not set
85 83
@@ -96,6 +94,10 @@ CONFIG_IOSCHED_NOOP=y
96CONFIG_DEFAULT_NOOP=y 94CONFIG_DEFAULT_NOOP=y
97CONFIG_DEFAULT_IOSCHED="noop" 95CONFIG_DEFAULT_IOSCHED="noop"
98CONFIG_CLASSIC_RCU=y 96CONFIG_CLASSIC_RCU=y
97# CONFIG_TREE_RCU is not set
98# CONFIG_PREEMPT_RCU is not set
99# CONFIG_TREE_RCU_TRACE is not set
100# CONFIG_PREEMPT_RCU_TRACE is not set
99# CONFIG_FREEZER is not set 101# CONFIG_FREEZER is not set
100 102
101# 103#
@@ -103,6 +105,7 @@ CONFIG_CLASSIC_RCU=y
103# 105#
104CONFIG_CPU_SH2=y 106CONFIG_CPU_SH2=y
105CONFIG_CPU_SUBTYPE_SH7619=y 107CONFIG_CPU_SUBTYPE_SH7619=y
108# CONFIG_CPU_SUBTYPE_SH7201 is not set
106# CONFIG_CPU_SUBTYPE_SH7203 is not set 109# CONFIG_CPU_SUBTYPE_SH7203 is not set
107# CONFIG_CPU_SUBTYPE_SH7206 is not set 110# CONFIG_CPU_SUBTYPE_SH7206 is not set
108# CONFIG_CPU_SUBTYPE_SH7263 is not set 111# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -164,7 +167,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
164CONFIG_SPARSEMEM_STATIC=y 167CONFIG_SPARSEMEM_STATIC=y
165CONFIG_PAGEFLAGS_EXTENDED=y 168CONFIG_PAGEFLAGS_EXTENDED=y
166CONFIG_SPLIT_PTLOCK_CPUS=4 169CONFIG_SPLIT_PTLOCK_CPUS=4
167# CONFIG_RESOURCES_64BIT is not set
168# CONFIG_PHYS_ADDR_T_64BIT is not set 170# CONFIG_PHYS_ADDR_T_64BIT is not set
169CONFIG_ZONE_DMA_FLAG=0 171CONFIG_ZONE_DMA_FLAG=0
170CONFIG_NR_QUICK=2 172CONFIG_NR_QUICK=2
@@ -244,7 +246,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
244# 246#
245# Bus options 247# Bus options
246# 248#
247# CONFIG_CF_ENABLER is not set
248# CONFIG_ARCH_SUPPORTS_MSI is not set 249# CONFIG_ARCH_SUPPORTS_MSI is not set
249 250
250# 251#
@@ -256,6 +257,12 @@ CONFIG_BINFMT_ZFLAT=y
256# CONFIG_BINFMT_SHARED_FLAT is not set 257# CONFIG_BINFMT_SHARED_FLAT is not set
257# CONFIG_HAVE_AOUT is not set 258# CONFIG_HAVE_AOUT is not set
258# CONFIG_BINFMT_MISC is not set 259# CONFIG_BINFMT_MISC is not set
260
261#
262# Power management options (EXPERIMENTAL)
263#
264# CONFIG_PM is not set
265# CONFIG_CPU_IDLE is not set
259# CONFIG_NET is not set 266# CONFIG_NET is not set
260 267
261# 268#
@@ -359,6 +366,7 @@ CONFIG_BLK_DEV=y
359CONFIG_MISC_DEVICES=y 366CONFIG_MISC_DEVICES=y
360# CONFIG_EEPROM_93CX6 is not set 367# CONFIG_EEPROM_93CX6 is not set
361# CONFIG_ENCLOSURE_SERVICES is not set 368# CONFIG_ENCLOSURE_SERVICES is not set
369# CONFIG_C2PORT is not set
362CONFIG_HAVE_IDE=y 370CONFIG_HAVE_IDE=y
363# CONFIG_IDE is not set 371# CONFIG_IDE is not set
364 372
@@ -439,11 +447,11 @@ CONFIG_SERIAL_CORE_CONSOLE=y
439# CONFIG_THERMAL is not set 447# CONFIG_THERMAL is not set
440# CONFIG_THERMAL_HWMON is not set 448# CONFIG_THERMAL_HWMON is not set
441# CONFIG_WATCHDOG is not set 449# CONFIG_WATCHDOG is not set
450CONFIG_SSB_POSSIBLE=y
442 451
443# 452#
444# Sonics Silicon Backplane 453# Sonics Silicon Backplane
445# 454#
446CONFIG_SSB_POSSIBLE=y
447# CONFIG_SSB is not set 455# CONFIG_SSB is not set
448 456
449# 457#
@@ -453,7 +461,7 @@ CONFIG_SSB_POSSIBLE=y
453# CONFIG_MFD_SM501 is not set 461# CONFIG_MFD_SM501 is not set
454# CONFIG_HTC_PASIC3 is not set 462# CONFIG_HTC_PASIC3 is not set
455# CONFIG_MFD_TMIO is not set 463# CONFIG_MFD_TMIO is not set
456# CONFIG_MFD_WM8400 is not set 464# CONFIG_REGULATOR is not set
457 465
458# 466#
459# Multimedia devices 467# Multimedia devices
@@ -506,7 +514,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
506# 514#
507 515
508# 516#
509# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 517# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
510# 518#
511# CONFIG_USB_GADGET is not set 519# CONFIG_USB_GADGET is not set
512# CONFIG_MMC is not set 520# CONFIG_MMC is not set
@@ -557,10 +565,7 @@ CONFIG_PROC_SYSCTL=y
557# CONFIG_SYSFS is not set 565# CONFIG_SYSFS is not set
558# CONFIG_TMPFS is not set 566# CONFIG_TMPFS is not set
559# CONFIG_HUGETLB_PAGE is not set 567# CONFIG_HUGETLB_PAGE is not set
560 568CONFIG_MISC_FILESYSTEMS=y
561#
562# Miscellaneous filesystems
563#
564# CONFIG_ADFS_FS is not set 569# CONFIG_ADFS_FS is not set
565# CONFIG_AFFS_FS is not set 570# CONFIG_AFFS_FS is not set
566# CONFIG_HFS_FS is not set 571# CONFIG_HFS_FS is not set
@@ -602,12 +607,19 @@ CONFIG_FRAME_WARN=1024
602# CONFIG_DEBUG_MEMORY_INIT is not set 607# CONFIG_DEBUG_MEMORY_INIT is not set
603# CONFIG_RCU_CPU_STALL_DETECTOR is not set 608# CONFIG_RCU_CPU_STALL_DETECTOR is not set
604# CONFIG_LATENCYTOP is not set 609# CONFIG_LATENCYTOP is not set
605CONFIG_NOP_TRACER=y 610CONFIG_HAVE_FUNCTION_TRACER=y
606CONFIG_HAVE_FTRACE=y 611CONFIG_HAVE_DYNAMIC_FTRACE=y
612CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
613
614#
615# Tracers
616#
607# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 617# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
608# CONFIG_SAMPLES is not set 618# CONFIG_SAMPLES is not set
619CONFIG_HAVE_ARCH_KGDB=y
609# CONFIG_SH_STANDARD_BIOS is not set 620# CONFIG_SH_STANDARD_BIOS is not set
610# CONFIG_EARLY_SCIF_CONSOLE is not set 621# CONFIG_EARLY_SCIF_CONSOLE is not set
622# CONFIG_MORE_COMPILE_OPTIONS is not set
611 623
612# 624#
613# Security options 625# Security options
@@ -621,6 +633,7 @@ CONFIG_HAVE_FTRACE=y
621# Library routines 633# Library routines
622# 634#
623CONFIG_BITREVERSE=y 635CONFIG_BITREVERSE=y
636CONFIG_GENERIC_FIND_LAST_BIT=y
624# CONFIG_CRC_CCITT is not set 637# CONFIG_CRC_CCITT is not set
625# CONFIG_CRC16 is not set 638# CONFIG_CRC16 is not set
626# CONFIG_CRC_T10DIF is not set 639# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7705_defconfig b/arch/sh/configs/se7705_defconfig
index d88190fdd7c1..8574d6eb00a3 100644
--- a/arch/sh/configs/se7705_defconfig
+++ b/arch/sh/configs/se7705_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:04:52 2008 4# Fri Jan 9 17:37:50 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -68,12 +70,10 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 70CONFIG_SHMEM=y
69CONFIG_AIO=y 71CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 72CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y 73CONFIG_SLAB=y
73# CONFIG_SLUB is not set 74# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 75# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set 76# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y 77CONFIG_HAVE_OPROFILE=y
78CONFIG_HAVE_IOREMAP_PROT=y 78CONFIG_HAVE_IOREMAP_PROT=y
79CONFIG_HAVE_KPROBES=y 79CONFIG_HAVE_KPROBES=y
@@ -83,17 +83,14 @@ CONFIG_HAVE_CLK=y
83CONFIG_HAVE_GENERIC_DMA_COHERENT=y 83CONFIG_HAVE_GENERIC_DMA_COHERENT=y
84CONFIG_SLABINFO=y 84CONFIG_SLABINFO=y
85CONFIG_RT_MUTEXES=y 85CONFIG_RT_MUTEXES=y
86# CONFIG_TINY_SHMEM is not set
87CONFIG_BASE_SMALL=0 86CONFIG_BASE_SMALL=0
88CONFIG_MODULES=y 87CONFIG_MODULES=y
89# CONFIG_MODULE_FORCE_LOAD is not set 88# CONFIG_MODULE_FORCE_LOAD is not set
90# CONFIG_MODULE_UNLOAD is not set 89# CONFIG_MODULE_UNLOAD is not set
91# CONFIG_MODVERSIONS is not set 90# CONFIG_MODVERSIONS is not set
92# CONFIG_MODULE_SRCVERSION_ALL is not set 91# CONFIG_MODULE_SRCVERSION_ALL is not set
93CONFIG_KMOD=y
94CONFIG_BLOCK=y 92CONFIG_BLOCK=y
95# CONFIG_LBD is not set 93# CONFIG_LBD is not set
96# CONFIG_LSF is not set
97# CONFIG_BLK_DEV_BSG is not set 94# CONFIG_BLK_DEV_BSG is not set
98# CONFIG_BLK_DEV_INTEGRITY is not set 95# CONFIG_BLK_DEV_INTEGRITY is not set
99 96
@@ -110,6 +107,10 @@ CONFIG_DEFAULT_AS=y
110# CONFIG_DEFAULT_NOOP is not set 107# CONFIG_DEFAULT_NOOP is not set
111CONFIG_DEFAULT_IOSCHED="anticipatory" 108CONFIG_DEFAULT_IOSCHED="anticipatory"
112CONFIG_CLASSIC_RCU=y 109CONFIG_CLASSIC_RCU=y
110# CONFIG_TREE_RCU is not set
111# CONFIG_PREEMPT_RCU is not set
112# CONFIG_TREE_RCU_TRACE is not set
113# CONFIG_PREEMPT_RCU_TRACE is not set
113# CONFIG_FREEZER is not set 114# CONFIG_FREEZER is not set
114 115
115# 116#
@@ -117,6 +118,7 @@ CONFIG_CLASSIC_RCU=y
117# 118#
118CONFIG_CPU_SH3=y 119CONFIG_CPU_SH3=y
119# CONFIG_CPU_SUBTYPE_SH7619 is not set 120# CONFIG_CPU_SUBTYPE_SH7619 is not set
121# CONFIG_CPU_SUBTYPE_SH7201 is not set
120# CONFIG_CPU_SUBTYPE_SH7203 is not set 122# CONFIG_CPU_SUBTYPE_SH7203 is not set
121# CONFIG_CPU_SUBTYPE_SH7206 is not set 123# CONFIG_CPU_SUBTYPE_SH7206 is not set
122# CONFIG_CPU_SUBTYPE_SH7263 is not set 124# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -180,7 +182,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
180CONFIG_SPARSEMEM_STATIC=y 182CONFIG_SPARSEMEM_STATIC=y
181CONFIG_PAGEFLAGS_EXTENDED=y 183CONFIG_PAGEFLAGS_EXTENDED=y
182CONFIG_SPLIT_PTLOCK_CPUS=4 184CONFIG_SPLIT_PTLOCK_CPUS=4
183# CONFIG_RESOURCES_64BIT is not set
184# CONFIG_PHYS_ADDR_T_64BIT is not set 185# CONFIG_PHYS_ADDR_T_64BIT is not set
185CONFIG_ZONE_DMA_FLAG=0 186CONFIG_ZONE_DMA_FLAG=0
186CONFIG_NR_QUICK=2 187CONFIG_NR_QUICK=2
@@ -258,7 +259,6 @@ CONFIG_HZ=250
258# CONFIG_PREEMPT_NONE is not set 259# CONFIG_PREEMPT_NONE is not set
259# CONFIG_PREEMPT_VOLUNTARY is not set 260# CONFIG_PREEMPT_VOLUNTARY is not set
260CONFIG_PREEMPT=y 261CONFIG_PREEMPT=y
261# CONFIG_PREEMPT_RCU is not set
262CONFIG_GUSA=y 262CONFIG_GUSA=y
263# CONFIG_GUSA_RB is not set 263# CONFIG_GUSA_RB is not set
264 264
@@ -272,10 +272,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
272# 272#
273# Bus options 273# Bus options
274# 274#
275CONFIG_CF_ENABLER=y
276# CONFIG_CF_AREA5 is not set
277CONFIG_CF_AREA6=y
278CONFIG_CF_BASE_ADDR=0xb8000000
279# CONFIG_ARCH_SUPPORTS_MSI is not set 275# CONFIG_ARCH_SUPPORTS_MSI is not set
280 276
281# 277#
@@ -285,11 +281,18 @@ CONFIG_BINFMT_ELF=y
285# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 281# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
286# CONFIG_HAVE_AOUT is not set 282# CONFIG_HAVE_AOUT is not set
287# CONFIG_BINFMT_MISC is not set 283# CONFIG_BINFMT_MISC is not set
284
285#
286# Power management options (EXPERIMENTAL)
287#
288# CONFIG_PM is not set
289# CONFIG_CPU_IDLE is not set
288CONFIG_NET=y 290CONFIG_NET=y
289 291
290# 292#
291# Networking options 293# Networking options
292# 294#
295CONFIG_COMPAT_NET_DEV_OPS=y
293CONFIG_PACKET=y 296CONFIG_PACKET=y
294# CONFIG_PACKET_MMAP is not set 297# CONFIG_PACKET_MMAP is not set
295CONFIG_UNIX=y 298CONFIG_UNIX=y
@@ -345,6 +348,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
345# CONFIG_ECONET is not set 348# CONFIG_ECONET is not set
346# CONFIG_WAN_ROUTER is not set 349# CONFIG_WAN_ROUTER is not set
347# CONFIG_NET_SCHED is not set 350# CONFIG_NET_SCHED is not set
351# CONFIG_DCB is not set
348 352
349# 353#
350# Network testing 354# Network testing
@@ -360,8 +364,8 @@ CONFIG_WIRELESS=y
360# CONFIG_CFG80211 is not set 364# CONFIG_CFG80211 is not set
361# CONFIG_WIRELESS_OLD_REGULATORY is not set 365# CONFIG_WIRELESS_OLD_REGULATORY is not set
362# CONFIG_WIRELESS_EXT is not set 366# CONFIG_WIRELESS_EXT is not set
367# CONFIG_LIB80211 is not set
363# CONFIG_MAC80211 is not set 368# CONFIG_MAC80211 is not set
364# CONFIG_IEEE80211 is not set
365# CONFIG_RFKILL is not set 369# CONFIG_RFKILL is not set
366# CONFIG_NET_9P is not set 370# CONFIG_NET_9P is not set
367 371
@@ -465,6 +469,7 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
465CONFIG_MISC_DEVICES=y 469CONFIG_MISC_DEVICES=y
466# CONFIG_EEPROM_93CX6 is not set 470# CONFIG_EEPROM_93CX6 is not set
467# CONFIG_ENCLOSURE_SERVICES is not set 471# CONFIG_ENCLOSURE_SERVICES is not set
472# CONFIG_C2PORT is not set
468CONFIG_HAVE_IDE=y 473CONFIG_HAVE_IDE=y
469# CONFIG_IDE is not set 474# CONFIG_IDE is not set
470 475
@@ -491,6 +496,7 @@ CONFIG_NET_ETHERNET=y
491CONFIG_STNIC=y 496CONFIG_STNIC=y
492# CONFIG_SMC91X is not set 497# CONFIG_SMC91X is not set
493# CONFIG_SMC911X is not set 498# CONFIG_SMC911X is not set
499# CONFIG_SMSC911X is not set
494# CONFIG_IBM_NEW_EMAC_ZMII is not set 500# CONFIG_IBM_NEW_EMAC_ZMII is not set
495# CONFIG_IBM_NEW_EMAC_RGMII is not set 501# CONFIG_IBM_NEW_EMAC_RGMII is not set
496# CONFIG_IBM_NEW_EMAC_TAH is not set 502# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -583,6 +589,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
583CONFIG_SERIAL_CORE=y 589CONFIG_SERIAL_CORE=y
584CONFIG_SERIAL_CORE_CONSOLE=y 590CONFIG_SERIAL_CORE_CONSOLE=y
585CONFIG_UNIX98_PTYS=y 591CONFIG_UNIX98_PTYS=y
592# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
586# CONFIG_LEGACY_PTYS is not set 593# CONFIG_LEGACY_PTYS is not set
587# CONFIG_IPMI_HANDLER is not set 594# CONFIG_IPMI_HANDLER is not set
588CONFIG_HW_RANDOM=y 595CONFIG_HW_RANDOM=y
@@ -609,11 +616,11 @@ CONFIG_HWMON=y
609# CONFIG_THERMAL is not set 616# CONFIG_THERMAL is not set
610# CONFIG_THERMAL_HWMON is not set 617# CONFIG_THERMAL_HWMON is not set
611# CONFIG_WATCHDOG is not set 618# CONFIG_WATCHDOG is not set
619CONFIG_SSB_POSSIBLE=y
612 620
613# 621#
614# Sonics Silicon Backplane 622# Sonics Silicon Backplane
615# 623#
616CONFIG_SSB_POSSIBLE=y
617# CONFIG_SSB is not set 624# CONFIG_SSB is not set
618 625
619# 626#
@@ -623,7 +630,7 @@ CONFIG_SSB_POSSIBLE=y
623# CONFIG_MFD_SM501 is not set 630# CONFIG_MFD_SM501 is not set
624# CONFIG_HTC_PASIC3 is not set 631# CONFIG_HTC_PASIC3 is not set
625# CONFIG_MFD_TMIO is not set 632# CONFIG_MFD_TMIO is not set
626# CONFIG_MFD_WM8400 is not set 633# CONFIG_REGULATOR is not set
627 634
628# 635#
629# Multimedia devices 636# Multimedia devices
@@ -677,7 +684,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
677# 684#
678 685
679# 686#
680# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 687# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
681# 688#
682# CONFIG_USB_GADGET is not set 689# CONFIG_USB_GADGET is not set
683# CONFIG_MMC is not set 690# CONFIG_MMC is not set
@@ -734,10 +741,7 @@ CONFIG_PROC_PAGE_MONITOR=y
734# CONFIG_TMPFS is not set 741# CONFIG_TMPFS is not set
735# CONFIG_HUGETLBFS is not set 742# CONFIG_HUGETLBFS is not set
736# CONFIG_HUGETLB_PAGE is not set 743# CONFIG_HUGETLB_PAGE is not set
737 744CONFIG_MISC_FILESYSTEMS=y
738#
739# Miscellaneous filesystems
740#
741# CONFIG_ADFS_FS is not set 745# CONFIG_ADFS_FS is not set
742# CONFIG_AFFS_FS is not set 746# CONFIG_AFFS_FS is not set
743# CONFIG_HFS_FS is not set 747# CONFIG_HFS_FS is not set
@@ -806,13 +810,19 @@ CONFIG_FRAME_WARN=1024
806# CONFIG_DEBUG_MEMORY_INIT is not set 810# CONFIG_DEBUG_MEMORY_INIT is not set
807# CONFIG_RCU_CPU_STALL_DETECTOR is not set 811# CONFIG_RCU_CPU_STALL_DETECTOR is not set
808# CONFIG_LATENCYTOP is not set 812# CONFIG_LATENCYTOP is not set
809CONFIG_NOP_TRACER=y 813CONFIG_HAVE_FUNCTION_TRACER=y
810CONFIG_HAVE_FTRACE=y 814CONFIG_HAVE_DYNAMIC_FTRACE=y
815CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
816
817#
818# Tracers
819#
811# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 820# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
812# CONFIG_SAMPLES is not set 821# CONFIG_SAMPLES is not set
822CONFIG_HAVE_ARCH_KGDB=y
813# CONFIG_SH_STANDARD_BIOS is not set 823# CONFIG_SH_STANDARD_BIOS is not set
814# CONFIG_EARLY_SCIF_CONSOLE is not set 824# CONFIG_EARLY_SCIF_CONSOLE is not set
815# CONFIG_SH_KGDB is not set 825# CONFIG_MORE_COMPILE_OPTIONS is not set
816 826
817# 827#
818# Security options 828# Security options
@@ -827,6 +837,7 @@ CONFIG_CRYPTO=y
827# 837#
828# CONFIG_CRYPTO_FIPS is not set 838# CONFIG_CRYPTO_FIPS is not set
829# CONFIG_CRYPTO_MANAGER is not set 839# CONFIG_CRYPTO_MANAGER is not set
840# CONFIG_CRYPTO_MANAGER2 is not set
830# CONFIG_CRYPTO_GF128MUL is not set 841# CONFIG_CRYPTO_GF128MUL is not set
831# CONFIG_CRYPTO_NULL is not set 842# CONFIG_CRYPTO_NULL is not set
832# CONFIG_CRYPTO_CRYPTD is not set 843# CONFIG_CRYPTO_CRYPTD is not set
@@ -909,6 +920,7 @@ CONFIG_CRYPTO_HW=y
909# Library routines 920# Library routines
910# 921#
911CONFIG_BITREVERSE=y 922CONFIG_BITREVERSE=y
923CONFIG_GENERIC_FIND_LAST_BIT=y
912CONFIG_CRC_CCITT=y 924CONFIG_CRC_CCITT=y
913# CONFIG_CRC16 is not set 925# CONFIG_CRC16 is not set
914# CONFIG_CRC_T10DIF is not set 926# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7712_defconfig b/arch/sh/configs/se7712_defconfig
index 869ab1737deb..e31ea84f116d 100644
--- a/arch/sh/configs/se7712_defconfig
+++ b/arch/sh/configs/se7712_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:08:12 2008 4# Fri Jan 9 17:40:12 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -15,6 +15,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
15# CONFIG_GENERIC_GPIO is not set 15# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 17CONFIG_GENERIC_CLOCKEVENTS=y
18# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
19# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
18CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
20CONFIG_HAVE_LATENCYTOP_SUPPORT=y 22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -55,6 +57,7 @@ CONFIG_UID16=y
55CONFIG_SYSCTL_SYSCALL=y 57CONFIG_SYSCTL_SYSCALL=y
56CONFIG_KALLSYMS=y 58CONFIG_KALLSYMS=y
57CONFIG_KALLSYMS_ALL=y 59CONFIG_KALLSYMS_ALL=y
60CONFIG_KALLSYMS_STRIP_GENERATED=y
58# CONFIG_KALLSYMS_EXTRA_PASS is not set 61# CONFIG_KALLSYMS_EXTRA_PASS is not set
59CONFIG_HOTPLUG=y 62CONFIG_HOTPLUG=y
60CONFIG_PRINTK=y 63CONFIG_PRINTK=y
@@ -71,12 +74,10 @@ CONFIG_EVENTFD=y
71# CONFIG_SHMEM is not set 74# CONFIG_SHMEM is not set
72CONFIG_AIO=y 75CONFIG_AIO=y
73CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_PCI_QUIRKS=y
75CONFIG_SLAB=y 77CONFIG_SLAB=y
76# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
77# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
78# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
79# CONFIG_MARKERS is not set
80CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
81# CONFIG_KPROBES is not set 82# CONFIG_KPROBES is not set
82CONFIG_HAVE_IOREMAP_PROT=y 83CONFIG_HAVE_IOREMAP_PROT=y
@@ -87,18 +88,15 @@ CONFIG_HAVE_CLK=y
87CONFIG_HAVE_GENERIC_DMA_COHERENT=y 88CONFIG_HAVE_GENERIC_DMA_COHERENT=y
88CONFIG_SLABINFO=y 89CONFIG_SLABINFO=y
89CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
90CONFIG_TINY_SHMEM=y
91CONFIG_BASE_SMALL=1 91CONFIG_BASE_SMALL=1
92CONFIG_MODULES=y 92CONFIG_MODULES=y
93# CONFIG_MODULE_FORCE_LOAD is not set 93# CONFIG_MODULE_FORCE_LOAD is not set
94# CONFIG_MODULE_UNLOAD is not set 94# CONFIG_MODULE_UNLOAD is not set
95# CONFIG_MODVERSIONS is not set 95# CONFIG_MODVERSIONS is not set
96# CONFIG_MODULE_SRCVERSION_ALL is not set 96# CONFIG_MODULE_SRCVERSION_ALL is not set
97CONFIG_KMOD=y
98CONFIG_BLOCK=y 97CONFIG_BLOCK=y
99# CONFIG_LBD is not set 98# CONFIG_LBD is not set
100# CONFIG_BLK_DEV_IO_TRACE is not set 99# CONFIG_BLK_DEV_IO_TRACE is not set
101# CONFIG_LSF is not set
102# CONFIG_BLK_DEV_BSG is not set 100# CONFIG_BLK_DEV_BSG is not set
103# CONFIG_BLK_DEV_INTEGRITY is not set 101# CONFIG_BLK_DEV_INTEGRITY is not set
104 102
@@ -115,6 +113,10 @@ CONFIG_IOSCHED_NOOP=y
115CONFIG_DEFAULT_NOOP=y 113CONFIG_DEFAULT_NOOP=y
116CONFIG_DEFAULT_IOSCHED="noop" 114CONFIG_DEFAULT_IOSCHED="noop"
117CONFIG_CLASSIC_RCU=y 115CONFIG_CLASSIC_RCU=y
116# CONFIG_TREE_RCU is not set
117# CONFIG_PREEMPT_RCU is not set
118# CONFIG_TREE_RCU_TRACE is not set
119# CONFIG_PREEMPT_RCU_TRACE is not set
118# CONFIG_FREEZER is not set 120# CONFIG_FREEZER is not set
119 121
120# 122#
@@ -122,6 +124,7 @@ CONFIG_CLASSIC_RCU=y
122# 124#
123CONFIG_CPU_SH3=y 125CONFIG_CPU_SH3=y
124# CONFIG_CPU_SUBTYPE_SH7619 is not set 126# CONFIG_CPU_SUBTYPE_SH7619 is not set
127# CONFIG_CPU_SUBTYPE_SH7201 is not set
125# CONFIG_CPU_SUBTYPE_SH7203 is not set 128# CONFIG_CPU_SUBTYPE_SH7203 is not set
126# CONFIG_CPU_SUBTYPE_SH7206 is not set 129# CONFIG_CPU_SUBTYPE_SH7206 is not set
127# CONFIG_CPU_SUBTYPE_SH7263 is not set 130# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -185,7 +188,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
185CONFIG_SPARSEMEM_STATIC=y 188CONFIG_SPARSEMEM_STATIC=y
186CONFIG_PAGEFLAGS_EXTENDED=y 189CONFIG_PAGEFLAGS_EXTENDED=y
187CONFIG_SPLIT_PTLOCK_CPUS=4 190CONFIG_SPLIT_PTLOCK_CPUS=4
188# CONFIG_RESOURCES_64BIT is not set
189# CONFIG_PHYS_ADDR_T_64BIT is not set 191# CONFIG_PHYS_ADDR_T_64BIT is not set
190CONFIG_ZONE_DMA_FLAG=0 192CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=2 193CONFIG_NR_QUICK=2
@@ -277,10 +279,6 @@ CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1"
277# 279#
278# Bus options 280# Bus options
279# 281#
280CONFIG_CF_ENABLER=y
281# CONFIG_CF_AREA5 is not set
282CONFIG_CF_AREA6=y
283CONFIG_CF_BASE_ADDR=0xb8000000
284# CONFIG_ARCH_SUPPORTS_MSI is not set 282# CONFIG_ARCH_SUPPORTS_MSI is not set
285# CONFIG_PCCARD is not set 283# CONFIG_PCCARD is not set
286 284
@@ -291,11 +289,18 @@ CONFIG_BINFMT_ELF=y
291# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 289# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
292# CONFIG_HAVE_AOUT is not set 290# CONFIG_HAVE_AOUT is not set
293# CONFIG_BINFMT_MISC is not set 291# CONFIG_BINFMT_MISC is not set
292
293#
294# Power management options (EXPERIMENTAL)
295#
296# CONFIG_PM is not set
297# CONFIG_CPU_IDLE is not set
294CONFIG_NET=y 298CONFIG_NET=y
295 299
296# 300#
297# Networking options 301# Networking options
298# 302#
303CONFIG_COMPAT_NET_DEV_OPS=y
299CONFIG_PACKET=y 304CONFIG_PACKET=y
300CONFIG_PACKET_MMAP=y 305CONFIG_PACKET_MMAP=y
301CONFIG_UNIX=y 306CONFIG_UNIX=y
@@ -376,6 +381,7 @@ CONFIG_NET_SCH_TBF=y
376CONFIG_NET_SCH_GRED=y 381CONFIG_NET_SCH_GRED=y
377CONFIG_NET_SCH_DSMARK=y 382CONFIG_NET_SCH_DSMARK=y
378CONFIG_NET_SCH_NETEM=y 383CONFIG_NET_SCH_NETEM=y
384# CONFIG_NET_SCH_DRR is not set
379 385
380# 386#
381# Classification 387# Classification
@@ -394,6 +400,7 @@ CONFIG_NET_CLS_FW=y
394# CONFIG_NET_CLS_ACT is not set 400# CONFIG_NET_CLS_ACT is not set
395CONFIG_NET_CLS_IND=y 401CONFIG_NET_CLS_IND=y
396CONFIG_NET_SCH_FIFO=y 402CONFIG_NET_SCH_FIFO=y
403# CONFIG_DCB is not set
397 404
398# 405#
399# Network testing 406# Network testing
@@ -410,8 +417,8 @@ CONFIG_WIRELESS=y
410# CONFIG_CFG80211 is not set 417# CONFIG_CFG80211 is not set
411# CONFIG_WIRELESS_OLD_REGULATORY is not set 418# CONFIG_WIRELESS_OLD_REGULATORY is not set
412# CONFIG_WIRELESS_EXT is not set 419# CONFIG_WIRELESS_EXT is not set
420# CONFIG_LIB80211 is not set
413# CONFIG_MAC80211 is not set 421# CONFIG_MAC80211 is not set
414# CONFIG_IEEE80211 is not set
415# CONFIG_RFKILL is not set 422# CONFIG_RFKILL is not set
416# CONFIG_NET_9P is not set 423# CONFIG_NET_9P is not set
417 424
@@ -518,6 +525,7 @@ CONFIG_BLK_DEV=y
518CONFIG_MISC_DEVICES=y 525CONFIG_MISC_DEVICES=y
519# CONFIG_EEPROM_93CX6 is not set 526# CONFIG_EEPROM_93CX6 is not set
520# CONFIG_ENCLOSURE_SERVICES is not set 527# CONFIG_ENCLOSURE_SERVICES is not set
528# CONFIG_C2PORT is not set
521CONFIG_HAVE_IDE=y 529CONFIG_HAVE_IDE=y
522# CONFIG_IDE is not set 530# CONFIG_IDE is not set
523 531
@@ -560,6 +568,7 @@ CONFIG_SCSI_WAIT_SCAN=m
560# CONFIG_SCSI_SRP_ATTRS is not set 568# CONFIG_SCSI_SRP_ATTRS is not set
561CONFIG_SCSI_LOWLEVEL=y 569CONFIG_SCSI_LOWLEVEL=y
562# CONFIG_ISCSI_TCP is not set 570# CONFIG_ISCSI_TCP is not set
571# CONFIG_LIBFC is not set
563# CONFIG_SCSI_DEBUG is not set 572# CONFIG_SCSI_DEBUG is not set
564# CONFIG_SCSI_DH is not set 573# CONFIG_SCSI_DH is not set
565CONFIG_ATA=y 574CONFIG_ATA=y
@@ -591,6 +600,9 @@ CONFIG_PHYLIB=y
591# CONFIG_BROADCOM_PHY is not set 600# CONFIG_BROADCOM_PHY is not set
592# CONFIG_ICPLUS_PHY is not set 601# CONFIG_ICPLUS_PHY is not set
593# CONFIG_REALTEK_PHY is not set 602# CONFIG_REALTEK_PHY is not set
603# CONFIG_NATIONAL_PHY is not set
604# CONFIG_STE10XP is not set
605# CONFIG_LSI_ET1011C_PHY is not set
594# CONFIG_FIXED_PHY is not set 606# CONFIG_FIXED_PHY is not set
595CONFIG_MDIO_BITBANG=y 607CONFIG_MDIO_BITBANG=y
596CONFIG_NET_ETHERNET=y 608CONFIG_NET_ETHERNET=y
@@ -600,6 +612,7 @@ CONFIG_MII=y
600CONFIG_SH_ETH=y 612CONFIG_SH_ETH=y
601# CONFIG_SMC91X is not set 613# CONFIG_SMC91X is not set
602# CONFIG_SMC911X is not set 614# CONFIG_SMC911X is not set
615# CONFIG_SMSC911X is not set
603# CONFIG_IBM_NEW_EMAC_ZMII is not set 616# CONFIG_IBM_NEW_EMAC_ZMII is not set
604# CONFIG_IBM_NEW_EMAC_RGMII is not set 617# CONFIG_IBM_NEW_EMAC_RGMII is not set
605# CONFIG_IBM_NEW_EMAC_TAH is not set 618# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -658,6 +671,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
658CONFIG_SERIAL_CORE=y 671CONFIG_SERIAL_CORE=y
659CONFIG_SERIAL_CORE_CONSOLE=y 672CONFIG_SERIAL_CORE_CONSOLE=y
660CONFIG_UNIX98_PTYS=y 673CONFIG_UNIX98_PTYS=y
674# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
661# CONFIG_LEGACY_PTYS is not set 675# CONFIG_LEGACY_PTYS is not set
662# CONFIG_IPMI_HANDLER is not set 676# CONFIG_IPMI_HANDLER is not set
663CONFIG_HW_RANDOM=m 677CONFIG_HW_RANDOM=m
@@ -672,11 +686,11 @@ CONFIG_HW_RANDOM=m
672# CONFIG_THERMAL is not set 686# CONFIG_THERMAL is not set
673# CONFIG_THERMAL_HWMON is not set 687# CONFIG_THERMAL_HWMON is not set
674# CONFIG_WATCHDOG is not set 688# CONFIG_WATCHDOG is not set
689CONFIG_SSB_POSSIBLE=y
675 690
676# 691#
677# Sonics Silicon Backplane 692# Sonics Silicon Backplane
678# 693#
679CONFIG_SSB_POSSIBLE=y
680# CONFIG_SSB is not set 694# CONFIG_SSB is not set
681 695
682# 696#
@@ -686,7 +700,7 @@ CONFIG_SSB_POSSIBLE=y
686# CONFIG_MFD_SM501 is not set 700# CONFIG_MFD_SM501 is not set
687# CONFIG_HTC_PASIC3 is not set 701# CONFIG_HTC_PASIC3 is not set
688# CONFIG_MFD_TMIO is not set 702# CONFIG_MFD_TMIO is not set
689# CONFIG_MFD_WM8400 is not set 703# CONFIG_REGULATOR is not set
690 704
691# 705#
692# Multimedia devices 706# Multimedia devices
@@ -730,7 +744,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
730# 744#
731 745
732# 746#
733# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 747# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
734# 748#
735# CONFIG_USB_GADGET is not set 749# CONFIG_USB_GADGET is not set
736# CONFIG_MMC is not set 750# CONFIG_MMC is not set
@@ -748,6 +762,7 @@ CONFIG_LEDS_CLASS=y
748CONFIG_LEDS_TRIGGERS=y 762CONFIG_LEDS_TRIGGERS=y
749# CONFIG_LEDS_TRIGGER_TIMER is not set 763# CONFIG_LEDS_TRIGGER_TIMER is not set
750# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set 764# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
765# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
751# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 766# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
752# CONFIG_ACCESSIBILITY is not set 767# CONFIG_ACCESSIBILITY is not set
753# CONFIG_RTC_CLASS is not set 768# CONFIG_RTC_CLASS is not set
@@ -809,10 +824,7 @@ CONFIG_TMPFS=y
809# CONFIG_HUGETLBFS is not set 824# CONFIG_HUGETLBFS is not set
810# CONFIG_HUGETLB_PAGE is not set 825# CONFIG_HUGETLB_PAGE is not set
811# CONFIG_CONFIGFS_FS is not set 826# CONFIG_CONFIGFS_FS is not set
812 827CONFIG_MISC_FILESYSTEMS=y
813#
814# Miscellaneous filesystems
815#
816# CONFIG_ADFS_FS is not set 828# CONFIG_ADFS_FS is not set
817# CONFIG_AFFS_FS is not set 829# CONFIG_AFFS_FS is not set
818# CONFIG_HFS_FS is not set 830# CONFIG_HFS_FS is not set
@@ -902,6 +914,7 @@ CONFIG_DEBUG_INFO=y
902# CONFIG_DEBUG_MEMORY_INIT is not set 914# CONFIG_DEBUG_MEMORY_INIT is not set
903# CONFIG_DEBUG_LIST is not set 915# CONFIG_DEBUG_LIST is not set
904# CONFIG_DEBUG_SG is not set 916# CONFIG_DEBUG_SG is not set
917# CONFIG_DEBUG_NOTIFIERS is not set
905CONFIG_FRAME_POINTER=y 918CONFIG_FRAME_POINTER=y
906# CONFIG_RCU_TORTURE_TEST is not set 919# CONFIG_RCU_TORTURE_TEST is not set
907# CONFIG_RCU_CPU_STALL_DETECTOR is not set 920# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -910,16 +923,24 @@ CONFIG_FRAME_POINTER=y
910# CONFIG_FAULT_INJECTION is not set 923# CONFIG_FAULT_INJECTION is not set
911# CONFIG_LATENCYTOP is not set 924# CONFIG_LATENCYTOP is not set
912CONFIG_SYSCTL_SYSCALL_CHECK=y 925CONFIG_SYSCTL_SYSCALL_CHECK=y
913CONFIG_NOP_TRACER=y 926CONFIG_HAVE_FUNCTION_TRACER=y
914CONFIG_HAVE_FTRACE=y 927CONFIG_HAVE_DYNAMIC_FTRACE=y
915# CONFIG_FTRACE is not set 928CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
929
930#
931# Tracers
932#
933# CONFIG_FUNCTION_TRACER is not set
916# CONFIG_IRQSOFF_TRACER is not set 934# CONFIG_IRQSOFF_TRACER is not set
917# CONFIG_SCHED_TRACER is not set 935# CONFIG_SCHED_TRACER is not set
918# CONFIG_CONTEXT_SWITCH_TRACER is not set 936# CONFIG_CONTEXT_SWITCH_TRACER is not set
919# CONFIG_BOOT_TRACER is not set 937# CONFIG_BOOT_TRACER is not set
938# CONFIG_TRACE_BRANCH_PROFILING is not set
920# CONFIG_STACK_TRACER is not set 939# CONFIG_STACK_TRACER is not set
921# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 940# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
922# CONFIG_SAMPLES is not set 941# CONFIG_SAMPLES is not set
942CONFIG_HAVE_ARCH_KGDB=y
943# CONFIG_KGDB is not set
923# CONFIG_SH_STANDARD_BIOS is not set 944# CONFIG_SH_STANDARD_BIOS is not set
924# CONFIG_EARLY_SCIF_CONSOLE is not set 945# CONFIG_EARLY_SCIF_CONSOLE is not set
925# CONFIG_DEBUG_BOOTMEM is not set 946# CONFIG_DEBUG_BOOTMEM is not set
@@ -927,7 +948,9 @@ CONFIG_HAVE_FTRACE=y
927# CONFIG_DEBUG_STACK_USAGE is not set 948# CONFIG_DEBUG_STACK_USAGE is not set
928# CONFIG_4KSTACKS is not set 949# CONFIG_4KSTACKS is not set
929# CONFIG_IRQSTACKS is not set 950# CONFIG_IRQSTACKS is not set
930# CONFIG_SH_KGDB is not set 951# CONFIG_DUMP_CODE is not set
952# CONFIG_SH_NO_BSS_INIT is not set
953# CONFIG_MORE_COMPILE_OPTIONS is not set
931 954
932# 955#
933# Security options 956# Security options
@@ -943,11 +966,16 @@ CONFIG_CRYPTO=y
943# 966#
944# CONFIG_CRYPTO_FIPS is not set 967# CONFIG_CRYPTO_FIPS is not set
945CONFIG_CRYPTO_ALGAPI=y 968CONFIG_CRYPTO_ALGAPI=y
969CONFIG_CRYPTO_ALGAPI2=y
946CONFIG_CRYPTO_AEAD=y 970CONFIG_CRYPTO_AEAD=y
971CONFIG_CRYPTO_AEAD2=y
947CONFIG_CRYPTO_BLKCIPHER=y 972CONFIG_CRYPTO_BLKCIPHER=y
973CONFIG_CRYPTO_BLKCIPHER2=y
948CONFIG_CRYPTO_HASH=y 974CONFIG_CRYPTO_HASH=y
949CONFIG_CRYPTO_RNG=y 975CONFIG_CRYPTO_HASH2=y
976CONFIG_CRYPTO_RNG2=y
950CONFIG_CRYPTO_MANAGER=y 977CONFIG_CRYPTO_MANAGER=y
978CONFIG_CRYPTO_MANAGER2=y
951# CONFIG_CRYPTO_GF128MUL is not set 979# CONFIG_CRYPTO_GF128MUL is not set
952# CONFIG_CRYPTO_NULL is not set 980# CONFIG_CRYPTO_NULL is not set
953# CONFIG_CRYPTO_CRYPTD is not set 981# CONFIG_CRYPTO_CRYPTD is not set
@@ -1030,6 +1058,7 @@ CONFIG_CRYPTO_HW=y
1030# Library routines 1058# Library routines
1031# 1059#
1032CONFIG_BITREVERSE=y 1060CONFIG_BITREVERSE=y
1061CONFIG_GENERIC_FIND_LAST_BIT=y
1033CONFIG_CRC_CCITT=y 1062CONFIG_CRC_CCITT=y
1034# CONFIG_CRC16 is not set 1063# CONFIG_CRC16 is not set
1035# CONFIG_CRC_T10DIF is not set 1064# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7721_defconfig b/arch/sh/configs/se7721_defconfig
index b52be14074d8..ad1bace3ad46 100644
--- a/arch/sh/configs/se7721_defconfig
+++ b/arch/sh/configs/se7721_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:12:06 2008 4# Fri Jan 9 17:43:33 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -15,6 +15,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
15# CONFIG_GENERIC_GPIO is not set 15# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 17CONFIG_GENERIC_CLOCKEVENTS=y
18# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
19# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
18CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
20CONFIG_HAVE_LATENCYTOP_SUPPORT=y 22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -59,6 +61,7 @@ CONFIG_UID16=y
59CONFIG_SYSCTL_SYSCALL=y 61CONFIG_SYSCTL_SYSCALL=y
60CONFIG_KALLSYMS=y 62CONFIG_KALLSYMS=y
61CONFIG_KALLSYMS_ALL=y 63CONFIG_KALLSYMS_ALL=y
64CONFIG_KALLSYMS_STRIP_GENERATED=y
62# CONFIG_KALLSYMS_EXTRA_PASS is not set 65# CONFIG_KALLSYMS_EXTRA_PASS is not set
63CONFIG_HOTPLUG=y 66CONFIG_HOTPLUG=y
64CONFIG_PRINTK=y 67CONFIG_PRINTK=y
@@ -75,12 +78,10 @@ CONFIG_EVENTFD=y
75# CONFIG_SHMEM is not set 78# CONFIG_SHMEM is not set
76CONFIG_AIO=y 79CONFIG_AIO=y
77CONFIG_VM_EVENT_COUNTERS=y 80CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
79CONFIG_SLAB=y 81CONFIG_SLAB=y
80# CONFIG_SLUB is not set 82# CONFIG_SLUB is not set
81# CONFIG_SLOB is not set 83# CONFIG_SLOB is not set
82# CONFIG_PROFILING is not set 84# CONFIG_PROFILING is not set
83# CONFIG_MARKERS is not set
84CONFIG_HAVE_OPROFILE=y 85CONFIG_HAVE_OPROFILE=y
85# CONFIG_KPROBES is not set 86# CONFIG_KPROBES is not set
86CONFIG_HAVE_IOREMAP_PROT=y 87CONFIG_HAVE_IOREMAP_PROT=y
@@ -91,18 +92,15 @@ CONFIG_HAVE_CLK=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y 92CONFIG_HAVE_GENERIC_DMA_COHERENT=y
92CONFIG_SLABINFO=y 93CONFIG_SLABINFO=y
93CONFIG_RT_MUTEXES=y 94CONFIG_RT_MUTEXES=y
94CONFIG_TINY_SHMEM=y
95CONFIG_BASE_SMALL=1 95CONFIG_BASE_SMALL=1
96CONFIG_MODULES=y 96CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set 97# CONFIG_MODULE_FORCE_LOAD is not set
98# CONFIG_MODULE_UNLOAD is not set 98# CONFIG_MODULE_UNLOAD is not set
99# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
100# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
101CONFIG_KMOD=y
102CONFIG_BLOCK=y 101CONFIG_BLOCK=y
103# CONFIG_LBD is not set 102# CONFIG_LBD is not set
104# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
105# CONFIG_LSF is not set
106# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
108 106
@@ -119,6 +117,10 @@ CONFIG_IOSCHED_NOOP=y
119CONFIG_DEFAULT_NOOP=y 117CONFIG_DEFAULT_NOOP=y
120CONFIG_DEFAULT_IOSCHED="noop" 118CONFIG_DEFAULT_IOSCHED="noop"
121CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_TREE_RCU is not set
121# CONFIG_PREEMPT_RCU is not set
122# CONFIG_TREE_RCU_TRACE is not set
123# CONFIG_PREEMPT_RCU_TRACE is not set
122# CONFIG_FREEZER is not set 124# CONFIG_FREEZER is not set
123 125
124# 126#
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y
126# 128#
127CONFIG_CPU_SH3=y 129CONFIG_CPU_SH3=y
128# CONFIG_CPU_SUBTYPE_SH7619 is not set 130# CONFIG_CPU_SUBTYPE_SH7619 is not set
131# CONFIG_CPU_SUBTYPE_SH7201 is not set
129# CONFIG_CPU_SUBTYPE_SH7203 is not set 132# CONFIG_CPU_SUBTYPE_SH7203 is not set
130# CONFIG_CPU_SUBTYPE_SH7206 is not set 133# CONFIG_CPU_SUBTYPE_SH7206 is not set
131# CONFIG_CPU_SUBTYPE_SH7263 is not set 134# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
189CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
190CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
191CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
192# CONFIG_RESOURCES_64BIT is not set
193# CONFIG_PHYS_ADDR_T_64BIT is not set 195# CONFIG_PHYS_ADDR_T_64BIT is not set
194CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
195CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
@@ -280,10 +282,6 @@ CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda2"
280# 282#
281# Bus options 283# Bus options
282# 284#
283CONFIG_CF_ENABLER=y
284# CONFIG_CF_AREA5 is not set
285CONFIG_CF_AREA6=y
286CONFIG_CF_BASE_ADDR=0xb8000000
287# CONFIG_ARCH_SUPPORTS_MSI is not set 285# CONFIG_ARCH_SUPPORTS_MSI is not set
288# CONFIG_PCCARD is not set 286# CONFIG_PCCARD is not set
289 287
@@ -294,11 +292,18 @@ CONFIG_BINFMT_ELF=y
294# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 292# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
295# CONFIG_HAVE_AOUT is not set 293# CONFIG_HAVE_AOUT is not set
296# CONFIG_BINFMT_MISC is not set 294# CONFIG_BINFMT_MISC is not set
295
296#
297# Power management options (EXPERIMENTAL)
298#
299# CONFIG_PM is not set
300# CONFIG_CPU_IDLE is not set
297CONFIG_NET=y 301CONFIG_NET=y
298 302
299# 303#
300# Networking options 304# Networking options
301# 305#
306CONFIG_COMPAT_NET_DEV_OPS=y
302CONFIG_PACKET=y 307CONFIG_PACKET=y
303CONFIG_PACKET_MMAP=y 308CONFIG_PACKET_MMAP=y
304CONFIG_UNIX=y 309CONFIG_UNIX=y
@@ -379,6 +384,7 @@ CONFIG_NET_SCH_TBF=y
379CONFIG_NET_SCH_GRED=y 384CONFIG_NET_SCH_GRED=y
380CONFIG_NET_SCH_DSMARK=y 385CONFIG_NET_SCH_DSMARK=y
381CONFIG_NET_SCH_NETEM=y 386CONFIG_NET_SCH_NETEM=y
387# CONFIG_NET_SCH_DRR is not set
382 388
383# 389#
384# Classification 390# Classification
@@ -397,6 +403,7 @@ CONFIG_NET_CLS_FW=y
397# CONFIG_NET_CLS_ACT is not set 403# CONFIG_NET_CLS_ACT is not set
398CONFIG_NET_CLS_IND=y 404CONFIG_NET_CLS_IND=y
399CONFIG_NET_SCH_FIFO=y 405CONFIG_NET_SCH_FIFO=y
406# CONFIG_DCB is not set
400 407
401# 408#
402# Network testing 409# Network testing
@@ -413,8 +420,8 @@ CONFIG_WIRELESS=y
413# CONFIG_CFG80211 is not set 420# CONFIG_CFG80211 is not set
414# CONFIG_WIRELESS_OLD_REGULATORY is not set 421# CONFIG_WIRELESS_OLD_REGULATORY is not set
415# CONFIG_WIRELESS_EXT is not set 422# CONFIG_WIRELESS_EXT is not set
423# CONFIG_LIB80211 is not set
416# CONFIG_MAC80211 is not set 424# CONFIG_MAC80211 is not set
417# CONFIG_IEEE80211 is not set
418# CONFIG_RFKILL is not set 425# CONFIG_RFKILL is not set
419# CONFIG_NET_9P is not set 426# CONFIG_NET_9P is not set
420 427
@@ -522,6 +529,7 @@ CONFIG_BLK_DEV=y
522CONFIG_MISC_DEVICES=y 529CONFIG_MISC_DEVICES=y
523# CONFIG_EEPROM_93CX6 is not set 530# CONFIG_EEPROM_93CX6 is not set
524# CONFIG_ENCLOSURE_SERVICES is not set 531# CONFIG_ENCLOSURE_SERVICES is not set
532# CONFIG_C2PORT is not set
525CONFIG_HAVE_IDE=y 533CONFIG_HAVE_IDE=y
526# CONFIG_IDE is not set 534# CONFIG_IDE is not set
527 535
@@ -673,6 +681,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
673CONFIG_SERIAL_CORE=y 681CONFIG_SERIAL_CORE=y
674CONFIG_SERIAL_CORE_CONSOLE=y 682CONFIG_SERIAL_CORE_CONSOLE=y
675CONFIG_UNIX98_PTYS=y 683CONFIG_UNIX98_PTYS=y
684# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
676# CONFIG_LEGACY_PTYS is not set 685# CONFIG_LEGACY_PTYS is not set
677# CONFIG_IPMI_HANDLER is not set 686# CONFIG_IPMI_HANDLER is not set
678# CONFIG_HW_RANDOM is not set 687# CONFIG_HW_RANDOM is not set
@@ -686,11 +695,11 @@ CONFIG_UNIX98_PTYS=y
686# CONFIG_HWMON is not set 695# CONFIG_HWMON is not set
687CONFIG_THERMAL=y 696CONFIG_THERMAL=y
688# CONFIG_WATCHDOG is not set 697# CONFIG_WATCHDOG is not set
698CONFIG_SSB_POSSIBLE=y
689 699
690# 700#
691# Sonics Silicon Backplane 701# Sonics Silicon Backplane
692# 702#
693CONFIG_SSB_POSSIBLE=y
694# CONFIG_SSB is not set 703# CONFIG_SSB is not set
695 704
696# 705#
@@ -700,7 +709,7 @@ CONFIG_SSB_POSSIBLE=y
700# CONFIG_MFD_SM501 is not set 709# CONFIG_MFD_SM501 is not set
701# CONFIG_HTC_PASIC3 is not set 710# CONFIG_HTC_PASIC3 is not set
702# CONFIG_MFD_TMIO is not set 711# CONFIG_MFD_TMIO is not set
703# CONFIG_MFD_WM8400 is not set 712# CONFIG_REGULATOR is not set
704 713
705# 714#
706# Multimedia devices 715# Multimedia devices
@@ -750,11 +759,9 @@ CONFIG_HID_COMPAT=y
750CONFIG_HID_A4TECH=y 759CONFIG_HID_A4TECH=y
751CONFIG_HID_APPLE=y 760CONFIG_HID_APPLE=y
752CONFIG_HID_BELKIN=y 761CONFIG_HID_BELKIN=y
753CONFIG_HID_BRIGHT=y
754CONFIG_HID_CHERRY=y 762CONFIG_HID_CHERRY=y
755CONFIG_HID_CHICONY=y 763CONFIG_HID_CHICONY=y
756CONFIG_HID_CYPRESS=y 764CONFIG_HID_CYPRESS=y
757CONFIG_HID_DELL=y
758CONFIG_HID_EZKEY=y 765CONFIG_HID_EZKEY=y
759CONFIG_HID_GYRATION=y 766CONFIG_HID_GYRATION=y
760CONFIG_HID_LOGITECH=y 767CONFIG_HID_LOGITECH=y
@@ -762,12 +769,15 @@ CONFIG_HID_LOGITECH=y
762# CONFIG_LOGIRUMBLEPAD2_FF is not set 769# CONFIG_LOGIRUMBLEPAD2_FF is not set
763CONFIG_HID_MICROSOFT=y 770CONFIG_HID_MICROSOFT=y
764CONFIG_HID_MONTEREY=y 771CONFIG_HID_MONTEREY=y
772# CONFIG_HID_NTRIG is not set
765CONFIG_HID_PANTHERLORD=y 773CONFIG_HID_PANTHERLORD=y
766# CONFIG_PANTHERLORD_FF is not set 774# CONFIG_PANTHERLORD_FF is not set
767CONFIG_HID_PETALYNX=y 775CONFIG_HID_PETALYNX=y
768CONFIG_HID_SAMSUNG=y 776CONFIG_HID_SAMSUNG=y
769CONFIG_HID_SONY=y 777CONFIG_HID_SONY=y
770CONFIG_HID_SUNPLUS=y 778CONFIG_HID_SUNPLUS=y
779# CONFIG_GREENASIA_FF is not set
780# CONFIG_HID_TOPSEED is not set
771CONFIG_THRUSTMASTER_FF=m 781CONFIG_THRUSTMASTER_FF=m
772CONFIG_ZEROPLUS_FF=m 782CONFIG_ZEROPLUS_FF=m
773CONFIG_USB_SUPPORT=y 783CONFIG_USB_SUPPORT=y
@@ -788,19 +798,21 @@ CONFIG_USB_DEVICE_CLASS=y
788# CONFIG_USB_OTG_WHITELIST is not set 798# CONFIG_USB_OTG_WHITELIST is not set
789# CONFIG_USB_OTG_BLACKLIST_HUB is not set 799# CONFIG_USB_OTG_BLACKLIST_HUB is not set
790CONFIG_USB_MON=y 800CONFIG_USB_MON=y
801# CONFIG_USB_WUSB is not set
802# CONFIG_USB_WUSB_CBAF is not set
791 803
792# 804#
793# USB Host Controller Drivers 805# USB Host Controller Drivers
794# 806#
795# CONFIG_USB_C67X00_HCD is not set 807# CONFIG_USB_C67X00_HCD is not set
796# CONFIG_USB_ISP116X_HCD is not set 808# CONFIG_USB_ISP116X_HCD is not set
797# CONFIG_USB_ISP1760_HCD is not set
798CONFIG_USB_OHCI_HCD=y 809CONFIG_USB_OHCI_HCD=y
799# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 810# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
800# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 811# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
801CONFIG_USB_OHCI_LITTLE_ENDIAN=y 812CONFIG_USB_OHCI_LITTLE_ENDIAN=y
802# CONFIG_USB_SL811_HCD is not set 813# CONFIG_USB_SL811_HCD is not set
803# CONFIG_USB_R8A66597_HCD is not set 814# CONFIG_USB_R8A66597_HCD is not set
815# CONFIG_USB_HWA_HCD is not set
804 816
805# 817#
806# USB Device Class drivers 818# USB Device Class drivers
@@ -811,11 +823,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
811# CONFIG_USB_TMC is not set 823# CONFIG_USB_TMC is not set
812 824
813# 825#
814# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 826# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
815# 827#
816 828
817# 829#
818# may also be needed; see USB_STORAGE Help for more information 830# see USB_STORAGE Help for more information
819# 831#
820CONFIG_USB_STORAGE=y 832CONFIG_USB_STORAGE=y
821# CONFIG_USB_STORAGE_DEBUG is not set 833# CONFIG_USB_STORAGE_DEBUG is not set
@@ -883,6 +895,7 @@ CONFIG_LEDS_CLASS=y
883CONFIG_LEDS_TRIGGERS=y 895CONFIG_LEDS_TRIGGERS=y
884# CONFIG_LEDS_TRIGGER_TIMER is not set 896# CONFIG_LEDS_TRIGGER_TIMER is not set
885# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set 897# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
898# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
886# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 899# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
887# CONFIG_ACCESSIBILITY is not set 900# CONFIG_ACCESSIBILITY is not set
888# CONFIG_RTC_CLASS is not set 901# CONFIG_RTC_CLASS is not set
@@ -947,10 +960,7 @@ CONFIG_TMPFS=y
947# CONFIG_HUGETLBFS is not set 960# CONFIG_HUGETLBFS is not set
948# CONFIG_HUGETLB_PAGE is not set 961# CONFIG_HUGETLB_PAGE is not set
949# CONFIG_CONFIGFS_FS is not set 962# CONFIG_CONFIGFS_FS is not set
950 963CONFIG_MISC_FILESYSTEMS=y
951#
952# Miscellaneous filesystems
953#
954# CONFIG_ADFS_FS is not set 964# CONFIG_ADFS_FS is not set
955# CONFIG_AFFS_FS is not set 965# CONFIG_AFFS_FS is not set
956# CONFIG_HFS_FS is not set 966# CONFIG_HFS_FS is not set
@@ -1063,6 +1073,7 @@ CONFIG_DEBUG_INFO=y
1063# CONFIG_DEBUG_MEMORY_INIT is not set 1073# CONFIG_DEBUG_MEMORY_INIT is not set
1064# CONFIG_DEBUG_LIST is not set 1074# CONFIG_DEBUG_LIST is not set
1065# CONFIG_DEBUG_SG is not set 1075# CONFIG_DEBUG_SG is not set
1076# CONFIG_DEBUG_NOTIFIERS is not set
1066CONFIG_FRAME_POINTER=y 1077CONFIG_FRAME_POINTER=y
1067# CONFIG_RCU_TORTURE_TEST is not set 1078# CONFIG_RCU_TORTURE_TEST is not set
1068# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1079# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -1071,16 +1082,24 @@ CONFIG_FRAME_POINTER=y
1071# CONFIG_FAULT_INJECTION is not set 1082# CONFIG_FAULT_INJECTION is not set
1072# CONFIG_LATENCYTOP is not set 1083# CONFIG_LATENCYTOP is not set
1073# CONFIG_SYSCTL_SYSCALL_CHECK is not set 1084# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1074CONFIG_NOP_TRACER=y 1085CONFIG_HAVE_FUNCTION_TRACER=y
1075CONFIG_HAVE_FTRACE=y 1086CONFIG_HAVE_DYNAMIC_FTRACE=y
1076# CONFIG_FTRACE is not set 1087CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1088
1089#
1090# Tracers
1091#
1092# CONFIG_FUNCTION_TRACER is not set
1077# CONFIG_IRQSOFF_TRACER is not set 1093# CONFIG_IRQSOFF_TRACER is not set
1078# CONFIG_SCHED_TRACER is not set 1094# CONFIG_SCHED_TRACER is not set
1079# CONFIG_CONTEXT_SWITCH_TRACER is not set 1095# CONFIG_CONTEXT_SWITCH_TRACER is not set
1080# CONFIG_BOOT_TRACER is not set 1096# CONFIG_BOOT_TRACER is not set
1097# CONFIG_TRACE_BRANCH_PROFILING is not set
1081# CONFIG_STACK_TRACER is not set 1098# CONFIG_STACK_TRACER is not set
1082# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1099# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1083# CONFIG_SAMPLES is not set 1100# CONFIG_SAMPLES is not set
1101CONFIG_HAVE_ARCH_KGDB=y
1102# CONFIG_KGDB is not set
1084# CONFIG_SH_STANDARD_BIOS is not set 1103# CONFIG_SH_STANDARD_BIOS is not set
1085# CONFIG_EARLY_SCIF_CONSOLE is not set 1104# CONFIG_EARLY_SCIF_CONSOLE is not set
1086# CONFIG_DEBUG_BOOTMEM is not set 1105# CONFIG_DEBUG_BOOTMEM is not set
@@ -1088,7 +1107,9 @@ CONFIG_HAVE_FTRACE=y
1088# CONFIG_DEBUG_STACK_USAGE is not set 1107# CONFIG_DEBUG_STACK_USAGE is not set
1089# CONFIG_4KSTACKS is not set 1108# CONFIG_4KSTACKS is not set
1090# CONFIG_IRQSTACKS is not set 1109# CONFIG_IRQSTACKS is not set
1091# CONFIG_SH_KGDB is not set 1110# CONFIG_DUMP_CODE is not set
1111# CONFIG_SH_NO_BSS_INIT is not set
1112# CONFIG_MORE_COMPILE_OPTIONS is not set
1092 1113
1093# 1114#
1094# Security options 1115# Security options
@@ -1104,11 +1125,16 @@ CONFIG_CRYPTO=y
1104# 1125#
1105# CONFIG_CRYPTO_FIPS is not set 1126# CONFIG_CRYPTO_FIPS is not set
1106CONFIG_CRYPTO_ALGAPI=y 1127CONFIG_CRYPTO_ALGAPI=y
1128CONFIG_CRYPTO_ALGAPI2=y
1107CONFIG_CRYPTO_AEAD=y 1129CONFIG_CRYPTO_AEAD=y
1130CONFIG_CRYPTO_AEAD2=y
1108CONFIG_CRYPTO_BLKCIPHER=y 1131CONFIG_CRYPTO_BLKCIPHER=y
1132CONFIG_CRYPTO_BLKCIPHER2=y
1109CONFIG_CRYPTO_HASH=y 1133CONFIG_CRYPTO_HASH=y
1110CONFIG_CRYPTO_RNG=y 1134CONFIG_CRYPTO_HASH2=y
1135CONFIG_CRYPTO_RNG2=y
1111CONFIG_CRYPTO_MANAGER=y 1136CONFIG_CRYPTO_MANAGER=y
1137CONFIG_CRYPTO_MANAGER2=y
1112# CONFIG_CRYPTO_GF128MUL is not set 1138# CONFIG_CRYPTO_GF128MUL is not set
1113# CONFIG_CRYPTO_NULL is not set 1139# CONFIG_CRYPTO_NULL is not set
1114# CONFIG_CRYPTO_CRYPTD is not set 1140# CONFIG_CRYPTO_CRYPTD is not set
@@ -1191,6 +1217,7 @@ CONFIG_CRYPTO_HW=y
1191# Library routines 1217# Library routines
1192# 1218#
1193CONFIG_BITREVERSE=y 1219CONFIG_BITREVERSE=y
1220CONFIG_GENERIC_FIND_LAST_BIT=y
1194CONFIG_CRC_CCITT=y 1221CONFIG_CRC_CCITT=y
1195# CONFIG_CRC16 is not set 1222# CONFIG_CRC16 is not set
1196# CONFIG_CRC_T10DIF is not set 1223# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7722_defconfig b/arch/sh/configs/se7722_defconfig
index e6df51f098f0..abb189a1d314 100644
--- a/arch/sh/configs/se7722_defconfig
+++ b/arch/sh/configs/se7722_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:15:10 2008 4# Fri Jan 9 17:46:59 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_NUMA=y 21CONFIG_SYS_SUPPORTS_NUMA=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -75,13 +77,11 @@ CONFIG_EVENTFD=y
75CONFIG_SHMEM=y 77CONFIG_SHMEM=y
76CONFIG_AIO=y 78CONFIG_AIO=y
77CONFIG_VM_EVENT_COUNTERS=y 79CONFIG_VM_EVENT_COUNTERS=y
78CONFIG_PCI_QUIRKS=y
79CONFIG_SLUB_DEBUG=y 80CONFIG_SLUB_DEBUG=y
80# CONFIG_SLAB is not set 81# CONFIG_SLAB is not set
81CONFIG_SLUB=y 82CONFIG_SLUB=y
82# CONFIG_SLOB is not set 83# CONFIG_SLOB is not set
83CONFIG_PROFILING=y 84CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85# CONFIG_OPROFILE is not set 85# CONFIG_OPROFILE is not set
86CONFIG_HAVE_OPROFILE=y 86CONFIG_HAVE_OPROFILE=y
87# CONFIG_KPROBES is not set 87# CONFIG_KPROBES is not set
@@ -93,7 +93,6 @@ CONFIG_HAVE_CLK=y
93CONFIG_HAVE_GENERIC_DMA_COHERENT=y 93CONFIG_HAVE_GENERIC_DMA_COHERENT=y
94CONFIG_SLABINFO=y 94CONFIG_SLABINFO=y
95CONFIG_RT_MUTEXES=y 95CONFIG_RT_MUTEXES=y
96# CONFIG_TINY_SHMEM is not set
97CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
98CONFIG_MODULES=y 97CONFIG_MODULES=y
99# CONFIG_MODULE_FORCE_LOAD is not set 98# CONFIG_MODULE_FORCE_LOAD is not set
@@ -101,11 +100,9 @@ CONFIG_MODULE_UNLOAD=y
101# CONFIG_MODULE_FORCE_UNLOAD is not set 100# CONFIG_MODULE_FORCE_UNLOAD is not set
102# CONFIG_MODVERSIONS is not set 101# CONFIG_MODVERSIONS is not set
103# CONFIG_MODULE_SRCVERSION_ALL is not set 102# CONFIG_MODULE_SRCVERSION_ALL is not set
104CONFIG_KMOD=y
105CONFIG_BLOCK=y 103CONFIG_BLOCK=y
106# CONFIG_LBD is not set 104# CONFIG_LBD is not set
107# CONFIG_BLK_DEV_IO_TRACE is not set 105# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set
109# CONFIG_BLK_DEV_BSG is not set 106# CONFIG_BLK_DEV_BSG is not set
110# CONFIG_BLK_DEV_INTEGRITY is not set 107# CONFIG_BLK_DEV_INTEGRITY is not set
111 108
@@ -122,6 +119,10 @@ CONFIG_IOSCHED_NOOP=y
122CONFIG_DEFAULT_NOOP=y 119CONFIG_DEFAULT_NOOP=y
123CONFIG_DEFAULT_IOSCHED="noop" 120CONFIG_DEFAULT_IOSCHED="noop"
124CONFIG_CLASSIC_RCU=y 121CONFIG_CLASSIC_RCU=y
122# CONFIG_TREE_RCU is not set
123# CONFIG_PREEMPT_RCU is not set
124# CONFIG_TREE_RCU_TRACE is not set
125# CONFIG_PREEMPT_RCU_TRACE is not set
125# CONFIG_FREEZER is not set 126# CONFIG_FREEZER is not set
126 127
127# 128#
@@ -132,6 +133,7 @@ CONFIG_CPU_SH4A=y
132CONFIG_CPU_SH4AL_DSP=y 133CONFIG_CPU_SH4AL_DSP=y
133CONFIG_CPU_SHX2=y 134CONFIG_CPU_SHX2=y
134# CONFIG_CPU_SUBTYPE_SH7619 is not set 135# CONFIG_CPU_SUBTYPE_SH7619 is not set
136# CONFIG_CPU_SUBTYPE_SH7201 is not set
135# CONFIG_CPU_SUBTYPE_SH7203 is not set 137# CONFIG_CPU_SUBTYPE_SH7203 is not set
136# CONFIG_CPU_SUBTYPE_SH7206 is not set 138# CONFIG_CPU_SUBTYPE_SH7206 is not set
137# CONFIG_CPU_SUBTYPE_SH7263 is not set 139# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -207,7 +209,6 @@ CONFIG_SPARSEMEM_STATIC=y
207# CONFIG_MEMORY_HOTPLUG is not set 209# CONFIG_MEMORY_HOTPLUG is not set
208CONFIG_SPLIT_PTLOCK_CPUS=4 210CONFIG_SPLIT_PTLOCK_CPUS=4
209CONFIG_MIGRATION=y 211CONFIG_MIGRATION=y
210# CONFIG_RESOURCES_64BIT is not set
211# CONFIG_PHYS_ADDR_T_64BIT is not set 212# CONFIG_PHYS_ADDR_T_64BIT is not set
212CONFIG_ZONE_DMA_FLAG=0 213CONFIG_ZONE_DMA_FLAG=0
213CONFIG_NR_QUICK=2 214CONFIG_NR_QUICK=2
@@ -287,7 +288,6 @@ CONFIG_KEXEC=y
287# CONFIG_PREEMPT_NONE is not set 288# CONFIG_PREEMPT_NONE is not set
288# CONFIG_PREEMPT_VOLUNTARY is not set 289# CONFIG_PREEMPT_VOLUNTARY is not set
289CONFIG_PREEMPT=y 290CONFIG_PREEMPT=y
290# CONFIG_PREEMPT_RCU is not set
291CONFIG_GUSA=y 291CONFIG_GUSA=y
292 292
293# 293#
@@ -300,10 +300,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
300# 300#
301# Bus options 301# Bus options
302# 302#
303CONFIG_CF_ENABLER=y
304# CONFIG_CF_AREA5 is not set
305CONFIG_CF_AREA6=y
306CONFIG_CF_BASE_ADDR=0xb8000000
307# CONFIG_ARCH_SUPPORTS_MSI is not set 303# CONFIG_ARCH_SUPPORTS_MSI is not set
308# CONFIG_PCCARD is not set 304# CONFIG_PCCARD is not set
309 305
@@ -314,11 +310,18 @@ CONFIG_BINFMT_ELF=y
314# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 310# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
315# CONFIG_HAVE_AOUT is not set 311# CONFIG_HAVE_AOUT is not set
316# CONFIG_BINFMT_MISC is not set 312# CONFIG_BINFMT_MISC is not set
313
314#
315# Power management options (EXPERIMENTAL)
316#
317# CONFIG_PM is not set
318# CONFIG_CPU_IDLE is not set
317CONFIG_NET=y 319CONFIG_NET=y
318 320
319# 321#
320# Networking options 322# Networking options
321# 323#
324CONFIG_COMPAT_NET_DEV_OPS=y
322CONFIG_PACKET=y 325CONFIG_PACKET=y
323CONFIG_PACKET_MMAP=y 326CONFIG_PACKET_MMAP=y
324CONFIG_UNIX=y 327CONFIG_UNIX=y
@@ -371,6 +374,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
371# CONFIG_ECONET is not set 374# CONFIG_ECONET is not set
372# CONFIG_WAN_ROUTER is not set 375# CONFIG_WAN_ROUTER is not set
373# CONFIG_NET_SCHED is not set 376# CONFIG_NET_SCHED is not set
377# CONFIG_DCB is not set
374 378
375# 379#
376# Network testing 380# Network testing
@@ -386,8 +390,8 @@ CONFIG_WIRELESS=y
386# CONFIG_CFG80211 is not set 390# CONFIG_CFG80211 is not set
387# CONFIG_WIRELESS_OLD_REGULATORY is not set 391# CONFIG_WIRELESS_OLD_REGULATORY is not set
388# CONFIG_WIRELESS_EXT is not set 392# CONFIG_WIRELESS_EXT is not set
393# CONFIG_LIB80211 is not set
389# CONFIG_MAC80211 is not set 394# CONFIG_MAC80211 is not set
390# CONFIG_IEEE80211 is not set
391# CONFIG_RFKILL is not set 395# CONFIG_RFKILL is not set
392# CONFIG_NET_9P is not set 396# CONFIG_NET_9P is not set
393 397
@@ -420,6 +424,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
420CONFIG_MISC_DEVICES=y 424CONFIG_MISC_DEVICES=y
421# CONFIG_EEPROM_93CX6 is not set 425# CONFIG_EEPROM_93CX6 is not set
422# CONFIG_ENCLOSURE_SERVICES is not set 426# CONFIG_ENCLOSURE_SERVICES is not set
427# CONFIG_C2PORT is not set
423CONFIG_HAVE_IDE=y 428CONFIG_HAVE_IDE=y
424# CONFIG_IDE is not set 429# CONFIG_IDE is not set
425 430
@@ -462,6 +467,7 @@ CONFIG_SCSI_WAIT_SCAN=m
462# CONFIG_SCSI_SRP_ATTRS is not set 467# CONFIG_SCSI_SRP_ATTRS is not set
463CONFIG_SCSI_LOWLEVEL=y 468CONFIG_SCSI_LOWLEVEL=y
464# CONFIG_ISCSI_TCP is not set 469# CONFIG_ISCSI_TCP is not set
470# CONFIG_LIBFC is not set
465# CONFIG_SCSI_DEBUG is not set 471# CONFIG_SCSI_DEBUG is not set
466# CONFIG_SCSI_DH is not set 472# CONFIG_SCSI_DH is not set
467CONFIG_ATA=y 473CONFIG_ATA=y
@@ -485,6 +491,7 @@ CONFIG_MII=y
485# CONFIG_STNIC is not set 491# CONFIG_STNIC is not set
486CONFIG_SMC91X=y 492CONFIG_SMC91X=y
487# CONFIG_SMC911X is not set 493# CONFIG_SMC911X is not set
494# CONFIG_SMSC911X is not set
488# CONFIG_IBM_NEW_EMAC_ZMII is not set 495# CONFIG_IBM_NEW_EMAC_ZMII is not set
489# CONFIG_IBM_NEW_EMAC_RGMII is not set 496# CONFIG_IBM_NEW_EMAC_RGMII is not set
490# CONFIG_IBM_NEW_EMAC_TAH is not set 497# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -577,6 +584,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
577CONFIG_SERIAL_CORE=y 584CONFIG_SERIAL_CORE=y
578CONFIG_SERIAL_CORE_CONSOLE=y 585CONFIG_SERIAL_CORE_CONSOLE=y
579CONFIG_UNIX98_PTYS=y 586CONFIG_UNIX98_PTYS=y
587# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
580CONFIG_LEGACY_PTYS=y 588CONFIG_LEGACY_PTYS=y
581CONFIG_LEGACY_PTY_COUNT=256 589CONFIG_LEGACY_PTY_COUNT=256
582# CONFIG_IPMI_HANDLER is not set 590# CONFIG_IPMI_HANDLER is not set
@@ -604,11 +612,11 @@ CONFIG_HWMON=y
604# CONFIG_THERMAL is not set 612# CONFIG_THERMAL is not set
605# CONFIG_THERMAL_HWMON is not set 613# CONFIG_THERMAL_HWMON is not set
606# CONFIG_WATCHDOG is not set 614# CONFIG_WATCHDOG is not set
615CONFIG_SSB_POSSIBLE=y
607 616
608# 617#
609# Sonics Silicon Backplane 618# Sonics Silicon Backplane
610# 619#
611CONFIG_SSB_POSSIBLE=y
612# CONFIG_SSB is not set 620# CONFIG_SSB is not set
613 621
614# 622#
@@ -618,7 +626,7 @@ CONFIG_SSB_POSSIBLE=y
618# CONFIG_MFD_SM501 is not set 626# CONFIG_MFD_SM501 is not set
619# CONFIG_HTC_PASIC3 is not set 627# CONFIG_HTC_PASIC3 is not set
620# CONFIG_MFD_TMIO is not set 628# CONFIG_MFD_TMIO is not set
621# CONFIG_MFD_WM8400 is not set 629# CONFIG_REGULATOR is not set
622 630
623# 631#
624# Multimedia devices 632# Multimedia devices
@@ -672,7 +680,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
672# 680#
673 681
674# 682#
675# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 683# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
676# 684#
677# CONFIG_USB_GADGET is not set 685# CONFIG_USB_GADGET is not set
678# CONFIG_MMC is not set 686# CONFIG_MMC is not set
@@ -774,10 +782,7 @@ CONFIG_TMPFS=y
774CONFIG_HUGETLBFS=y 782CONFIG_HUGETLBFS=y
775CONFIG_HUGETLB_PAGE=y 783CONFIG_HUGETLB_PAGE=y
776# CONFIG_CONFIGFS_FS is not set 784# CONFIG_CONFIGFS_FS is not set
777 785CONFIG_MISC_FILESYSTEMS=y
778#
779# Miscellaneous filesystems
780#
781# CONFIG_ADFS_FS is not set 786# CONFIG_ADFS_FS is not set
782# CONFIG_AFFS_FS is not set 787# CONFIG_AFFS_FS is not set
783# CONFIG_HFS_FS is not set 788# CONFIG_HFS_FS is not set
@@ -831,14 +836,20 @@ CONFIG_DEBUG_FS=y
831# CONFIG_RCU_CPU_STALL_DETECTOR is not set 836# CONFIG_RCU_CPU_STALL_DETECTOR is not set
832# CONFIG_LATENCYTOP is not set 837# CONFIG_LATENCYTOP is not set
833# CONFIG_SYSCTL_SYSCALL_CHECK is not set 838# CONFIG_SYSCTL_SYSCALL_CHECK is not set
834CONFIG_NOP_TRACER=y 839CONFIG_HAVE_FUNCTION_TRACER=y
835CONFIG_HAVE_FTRACE=y 840CONFIG_HAVE_DYNAMIC_FTRACE=y
841CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
842
843#
844# Tracers
845#
836# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 846# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
837# CONFIG_SAMPLES is not set 847# CONFIG_SAMPLES is not set
848CONFIG_HAVE_ARCH_KGDB=y
838CONFIG_SH_STANDARD_BIOS=y 849CONFIG_SH_STANDARD_BIOS=y
839# CONFIG_EARLY_SCIF_CONSOLE is not set 850# CONFIG_EARLY_SCIF_CONSOLE is not set
840# CONFIG_EARLY_PRINTK is not set 851# CONFIG_EARLY_PRINTK is not set
841# CONFIG_SH_KGDB is not set 852# CONFIG_MORE_COMPILE_OPTIONS is not set
842 853
843# 854#
844# Security options 855# Security options
@@ -854,6 +865,7 @@ CONFIG_CRYPTO=y
854# 865#
855# CONFIG_CRYPTO_FIPS is not set 866# CONFIG_CRYPTO_FIPS is not set
856# CONFIG_CRYPTO_MANAGER is not set 867# CONFIG_CRYPTO_MANAGER is not set
868# CONFIG_CRYPTO_MANAGER2 is not set
857# CONFIG_CRYPTO_GF128MUL is not set 869# CONFIG_CRYPTO_GF128MUL is not set
858# CONFIG_CRYPTO_NULL is not set 870# CONFIG_CRYPTO_NULL is not set
859# CONFIG_CRYPTO_CRYPTD is not set 871# CONFIG_CRYPTO_CRYPTD is not set
@@ -936,6 +948,7 @@ CONFIG_CRYPTO_HW=y
936# Library routines 948# Library routines
937# 949#
938CONFIG_BITREVERSE=y 950CONFIG_BITREVERSE=y
951CONFIG_GENERIC_FIND_LAST_BIT=y
939# CONFIG_CRC_CCITT is not set 952# CONFIG_CRC_CCITT is not set
940# CONFIG_CRC16 is not set 953# CONFIG_CRC16 is not set
941# CONFIG_CRC_T10DIF is not set 954# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7750_defconfig b/arch/sh/configs/se7750_defconfig
index a577099c3247..ac874f63a625 100644
--- a/arch/sh/configs/se7750_defconfig
+++ b/arch/sh/configs/se7750_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:17:29 2008 4# Fri Jan 9 17:49:22 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -72,12 +74,10 @@ CONFIG_EVENTFD=y
72CONFIG_SHMEM=y 74CONFIG_SHMEM=y
73CONFIG_AIO=y 75CONFIG_AIO=y
74CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
76CONFIG_SLAB=y 77CONFIG_SLAB=y
77# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
82# CONFIG_KPROBES is not set 82# CONFIG_KPROBES is not set
83CONFIG_HAVE_IOREMAP_PROT=y 83CONFIG_HAVE_IOREMAP_PROT=y
@@ -88,18 +88,15 @@ CONFIG_HAVE_CLK=y
88CONFIG_HAVE_GENERIC_DMA_COHERENT=y 88CONFIG_HAVE_GENERIC_DMA_COHERENT=y
89CONFIG_SLABINFO=y 89CONFIG_SLABINFO=y
90CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
91# CONFIG_TINY_SHMEM is not set
92CONFIG_BASE_SMALL=0 91CONFIG_BASE_SMALL=0
93CONFIG_MODULES=y 92CONFIG_MODULES=y
94# CONFIG_MODULE_FORCE_LOAD is not set 93# CONFIG_MODULE_FORCE_LOAD is not set
95# CONFIG_MODULE_UNLOAD is not set 94# CONFIG_MODULE_UNLOAD is not set
96# CONFIG_MODVERSIONS is not set 95# CONFIG_MODVERSIONS is not set
97# CONFIG_MODULE_SRCVERSION_ALL is not set 96# CONFIG_MODULE_SRCVERSION_ALL is not set
98CONFIG_KMOD=y
99CONFIG_BLOCK=y 97CONFIG_BLOCK=y
100# CONFIG_LBD is not set 98# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 99# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set
103# CONFIG_BLK_DEV_BSG is not set 100# CONFIG_BLK_DEV_BSG is not set
104# CONFIG_BLK_DEV_INTEGRITY is not set 101# CONFIG_BLK_DEV_INTEGRITY is not set
105 102
@@ -116,6 +113,10 @@ CONFIG_DEFAULT_AS=y
116# CONFIG_DEFAULT_NOOP is not set 113# CONFIG_DEFAULT_NOOP is not set
117CONFIG_DEFAULT_IOSCHED="anticipatory" 114CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y 115CONFIG_CLASSIC_RCU=y
116# CONFIG_TREE_RCU is not set
117# CONFIG_PREEMPT_RCU is not set
118# CONFIG_TREE_RCU_TRACE is not set
119# CONFIG_PREEMPT_RCU_TRACE is not set
119# CONFIG_FREEZER is not set 120# CONFIG_FREEZER is not set
120 121
121# 122#
@@ -123,6 +124,7 @@ CONFIG_CLASSIC_RCU=y
123# 124#
124CONFIG_CPU_SH4=y 125CONFIG_CPU_SH4=y
125# CONFIG_CPU_SUBTYPE_SH7619 is not set 126# CONFIG_CPU_SUBTYPE_SH7619 is not set
127# CONFIG_CPU_SUBTYPE_SH7201 is not set
126# CONFIG_CPU_SUBTYPE_SH7203 is not set 128# CONFIG_CPU_SUBTYPE_SH7203 is not set
127# CONFIG_CPU_SUBTYPE_SH7206 is not set 129# CONFIG_CPU_SUBTYPE_SH7206 is not set
128# CONFIG_CPU_SUBTYPE_SH7263 is not set 130# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -186,7 +188,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
186CONFIG_SPARSEMEM_STATIC=y 188CONFIG_SPARSEMEM_STATIC=y
187CONFIG_PAGEFLAGS_EXTENDED=y 189CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 190CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set 191# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0 192CONFIG_ZONE_DMA_FLAG=0
192CONFIG_NR_QUICK=2 193CONFIG_NR_QUICK=2
@@ -278,10 +279,6 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
278# 279#
279# Bus options 280# Bus options
280# 281#
281CONFIG_CF_ENABLER=y
282# CONFIG_CF_AREA5 is not set
283CONFIG_CF_AREA6=y
284CONFIG_CF_BASE_ADDR=0xb8000000
285# CONFIG_ARCH_SUPPORTS_MSI is not set 282# CONFIG_ARCH_SUPPORTS_MSI is not set
286 283
287# 284#
@@ -291,11 +288,18 @@ CONFIG_BINFMT_ELF=y
291# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 288# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
292# CONFIG_HAVE_AOUT is not set 289# CONFIG_HAVE_AOUT is not set
293# CONFIG_BINFMT_MISC is not set 290# CONFIG_BINFMT_MISC is not set
291
292#
293# Power management options (EXPERIMENTAL)
294#
295# CONFIG_PM is not set
296# CONFIG_CPU_IDLE is not set
294CONFIG_NET=y 297CONFIG_NET=y
295 298
296# 299#
297# Networking options 300# Networking options
298# 301#
302CONFIG_COMPAT_NET_DEV_OPS=y
299CONFIG_PACKET=y 303CONFIG_PACKET=y
300# CONFIG_PACKET_MMAP is not set 304# CONFIG_PACKET_MMAP is not set
301CONFIG_UNIX=y 305CONFIG_UNIX=y
@@ -352,6 +356,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
352# CONFIG_ECONET is not set 356# CONFIG_ECONET is not set
353# CONFIG_WAN_ROUTER is not set 357# CONFIG_WAN_ROUTER is not set
354# CONFIG_NET_SCHED is not set 358# CONFIG_NET_SCHED is not set
359# CONFIG_DCB is not set
355 360
356# 361#
357# Network testing 362# Network testing
@@ -367,8 +372,8 @@ CONFIG_WIRELESS=y
367# CONFIG_CFG80211 is not set 372# CONFIG_CFG80211 is not set
368# CONFIG_WIRELESS_OLD_REGULATORY is not set 373# CONFIG_WIRELESS_OLD_REGULATORY is not set
369# CONFIG_WIRELESS_EXT is not set 374# CONFIG_WIRELESS_EXT is not set
375# CONFIG_LIB80211 is not set
370# CONFIG_MAC80211 is not set 376# CONFIG_MAC80211 is not set
371# CONFIG_IEEE80211 is not set
372# CONFIG_RFKILL is not set 377# CONFIG_RFKILL is not set
373# CONFIG_NET_9P is not set 378# CONFIG_NET_9P is not set
374 379
@@ -469,6 +474,7 @@ CONFIG_BLK_DEV=y
469CONFIG_MISC_DEVICES=y 474CONFIG_MISC_DEVICES=y
470# CONFIG_EEPROM_93CX6 is not set 475# CONFIG_EEPROM_93CX6 is not set
471# CONFIG_ENCLOSURE_SERVICES is not set 476# CONFIG_ENCLOSURE_SERVICES is not set
477# CONFIG_C2PORT is not set
472CONFIG_HAVE_IDE=y 478CONFIG_HAVE_IDE=y
473CONFIG_IDE=y 479CONFIG_IDE=y
474 480
@@ -481,7 +487,6 @@ CONFIG_IDE_GD_ATA=y
481# CONFIG_IDE_GD_ATAPI is not set 487# CONFIG_IDE_GD_ATAPI is not set
482# CONFIG_BLK_DEV_IDECD is not set 488# CONFIG_BLK_DEV_IDECD is not set
483# CONFIG_BLK_DEV_IDETAPE is not set 489# CONFIG_BLK_DEV_IDETAPE is not set
484# CONFIG_BLK_DEV_IDESCSI is not set
485# CONFIG_IDE_TASK_IOCTL is not set 490# CONFIG_IDE_TASK_IOCTL is not set
486CONFIG_IDE_PROC_FS=y 491CONFIG_IDE_PROC_FS=y
487 492
@@ -530,6 +535,7 @@ CONFIG_SCSI_WAIT_SCAN=m
530# CONFIG_SCSI_SRP_ATTRS is not set 535# CONFIG_SCSI_SRP_ATTRS is not set
531CONFIG_SCSI_LOWLEVEL=y 536CONFIG_SCSI_LOWLEVEL=y
532# CONFIG_ISCSI_TCP is not set 537# CONFIG_ISCSI_TCP is not set
538# CONFIG_LIBFC is not set
533# CONFIG_SCSI_DEBUG is not set 539# CONFIG_SCSI_DEBUG is not set
534# CONFIG_SCSI_DH is not set 540# CONFIG_SCSI_DH is not set
535# CONFIG_ATA is not set 541# CONFIG_ATA is not set
@@ -548,6 +554,7 @@ CONFIG_NET_ETHERNET=y
548CONFIG_STNIC=y 554CONFIG_STNIC=y
549# CONFIG_SMC91X is not set 555# CONFIG_SMC91X is not set
550# CONFIG_SMC911X is not set 556# CONFIG_SMC911X is not set
557# CONFIG_SMSC911X is not set
551# CONFIG_IBM_NEW_EMAC_ZMII is not set 558# CONFIG_IBM_NEW_EMAC_ZMII is not set
552# CONFIG_IBM_NEW_EMAC_RGMII is not set 559# CONFIG_IBM_NEW_EMAC_RGMII is not set
553# CONFIG_IBM_NEW_EMAC_TAH is not set 560# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -610,6 +617,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
610CONFIG_SERIAL_CORE=y 617CONFIG_SERIAL_CORE=y
611CONFIG_SERIAL_CORE_CONSOLE=y 618CONFIG_SERIAL_CORE_CONSOLE=y
612CONFIG_UNIX98_PTYS=y 619CONFIG_UNIX98_PTYS=y
620# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
613CONFIG_LEGACY_PTYS=y 621CONFIG_LEGACY_PTYS=y
614CONFIG_LEGACY_PTY_COUNT=256 622CONFIG_LEGACY_PTY_COUNT=256
615# CONFIG_IPMI_HANDLER is not set 623# CONFIG_IPMI_HANDLER is not set
@@ -645,11 +653,11 @@ CONFIG_WATCHDOG=y
645# CONFIG_SOFT_WATCHDOG is not set 653# CONFIG_SOFT_WATCHDOG is not set
646CONFIG_SH_WDT=y 654CONFIG_SH_WDT=y
647# CONFIG_SH_WDT_MMAP is not set 655# CONFIG_SH_WDT_MMAP is not set
656CONFIG_SSB_POSSIBLE=y
648 657
649# 658#
650# Sonics Silicon Backplane 659# Sonics Silicon Backplane
651# 660#
652CONFIG_SSB_POSSIBLE=y
653# CONFIG_SSB is not set 661# CONFIG_SSB is not set
654 662
655# 663#
@@ -659,7 +667,7 @@ CONFIG_SSB_POSSIBLE=y
659# CONFIG_MFD_SM501 is not set 667# CONFIG_MFD_SM501 is not set
660# CONFIG_HTC_PASIC3 is not set 668# CONFIG_HTC_PASIC3 is not set
661# CONFIG_MFD_TMIO is not set 669# CONFIG_MFD_TMIO is not set
662# CONFIG_MFD_WM8400 is not set 670# CONFIG_REGULATOR is not set
663 671
664# 672#
665# Multimedia devices 673# Multimedia devices
@@ -703,7 +711,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
703# 711#
704 712
705# 713#
706# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 714# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
707# 715#
708# CONFIG_USB_GADGET is not set 716# CONFIG_USB_GADGET is not set
709# CONFIG_MMC is not set 717# CONFIG_MMC is not set
@@ -761,10 +769,7 @@ CONFIG_TMPFS=y
761# CONFIG_HUGETLBFS is not set 769# CONFIG_HUGETLBFS is not set
762# CONFIG_HUGETLB_PAGE is not set 770# CONFIG_HUGETLB_PAGE is not set
763# CONFIG_CONFIGFS_FS is not set 771# CONFIG_CONFIGFS_FS is not set
764 772CONFIG_MISC_FILESYSTEMS=y
765#
766# Miscellaneous filesystems
767#
768# CONFIG_ADFS_FS is not set 773# CONFIG_ADFS_FS is not set
769# CONFIG_AFFS_FS is not set 774# CONFIG_AFFS_FS is not set
770# CONFIG_HFS_FS is not set 775# CONFIG_HFS_FS is not set
@@ -847,13 +852,19 @@ CONFIG_FRAME_WARN=1024
847# CONFIG_DEBUG_MEMORY_INIT is not set 852# CONFIG_DEBUG_MEMORY_INIT is not set
848# CONFIG_RCU_CPU_STALL_DETECTOR is not set 853# CONFIG_RCU_CPU_STALL_DETECTOR is not set
849# CONFIG_LATENCYTOP is not set 854# CONFIG_LATENCYTOP is not set
850CONFIG_NOP_TRACER=y 855CONFIG_HAVE_FUNCTION_TRACER=y
851CONFIG_HAVE_FTRACE=y 856CONFIG_HAVE_DYNAMIC_FTRACE=y
857CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
858
859#
860# Tracers
861#
852# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 862# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
853# CONFIG_SAMPLES is not set 863# CONFIG_SAMPLES is not set
864CONFIG_HAVE_ARCH_KGDB=y
854# CONFIG_SH_STANDARD_BIOS is not set 865# CONFIG_SH_STANDARD_BIOS is not set
855# CONFIG_EARLY_SCIF_CONSOLE is not set 866# CONFIG_EARLY_SCIF_CONSOLE is not set
856# CONFIG_SH_KGDB is not set 867# CONFIG_MORE_COMPILE_OPTIONS is not set
857 868
858# 869#
859# Security options 870# Security options
@@ -869,6 +880,7 @@ CONFIG_CRYPTO=y
869# 880#
870# CONFIG_CRYPTO_FIPS is not set 881# CONFIG_CRYPTO_FIPS is not set
871# CONFIG_CRYPTO_MANAGER is not set 882# CONFIG_CRYPTO_MANAGER is not set
883# CONFIG_CRYPTO_MANAGER2 is not set
872# CONFIG_CRYPTO_GF128MUL is not set 884# CONFIG_CRYPTO_GF128MUL is not set
873# CONFIG_CRYPTO_NULL is not set 885# CONFIG_CRYPTO_NULL is not set
874# CONFIG_CRYPTO_CRYPTD is not set 886# CONFIG_CRYPTO_CRYPTD is not set
@@ -951,6 +963,7 @@ CONFIG_CRYPTO_HW=y
951# Library routines 963# Library routines
952# 964#
953CONFIG_BITREVERSE=y 965CONFIG_BITREVERSE=y
966CONFIG_GENERIC_FIND_LAST_BIT=y
954# CONFIG_CRC_CCITT is not set 967# CONFIG_CRC_CCITT is not set
955# CONFIG_CRC16 is not set 968# CONFIG_CRC16 is not set
956# CONFIG_CRC_T10DIF is not set 969# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7751_defconfig b/arch/sh/configs/se7751_defconfig
index d99a6bdf410f..f54ae056f177 100644
--- a/arch/sh/configs/se7751_defconfig
+++ b/arch/sh/configs/se7751_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:21:12 2008 4# Fri Jan 9 17:51:47 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -72,12 +74,10 @@ CONFIG_EVENTFD=y
72CONFIG_SHMEM=y 74CONFIG_SHMEM=y
73CONFIG_AIO=y 75CONFIG_AIO=y
74CONFIG_VM_EVENT_COUNTERS=y 76CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_PCI_QUIRKS=y
76CONFIG_SLAB=y 77CONFIG_SLAB=y
77# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
78# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
79# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
80# CONFIG_MARKERS is not set
81CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
82# CONFIG_KPROBES is not set 82# CONFIG_KPROBES is not set
83CONFIG_HAVE_IOREMAP_PROT=y 83CONFIG_HAVE_IOREMAP_PROT=y
@@ -88,18 +88,15 @@ CONFIG_HAVE_CLK=y
88CONFIG_HAVE_GENERIC_DMA_COHERENT=y 88CONFIG_HAVE_GENERIC_DMA_COHERENT=y
89CONFIG_SLABINFO=y 89CONFIG_SLABINFO=y
90CONFIG_RT_MUTEXES=y 90CONFIG_RT_MUTEXES=y
91# CONFIG_TINY_SHMEM is not set
92CONFIG_BASE_SMALL=0 91CONFIG_BASE_SMALL=0
93CONFIG_MODULES=y 92CONFIG_MODULES=y
94# CONFIG_MODULE_FORCE_LOAD is not set 93# CONFIG_MODULE_FORCE_LOAD is not set
95# CONFIG_MODULE_UNLOAD is not set 94# CONFIG_MODULE_UNLOAD is not set
96# CONFIG_MODVERSIONS is not set 95# CONFIG_MODVERSIONS is not set
97# CONFIG_MODULE_SRCVERSION_ALL is not set 96# CONFIG_MODULE_SRCVERSION_ALL is not set
98CONFIG_KMOD=y
99CONFIG_BLOCK=y 97CONFIG_BLOCK=y
100# CONFIG_LBD is not set 98# CONFIG_LBD is not set
101# CONFIG_BLK_DEV_IO_TRACE is not set 99# CONFIG_BLK_DEV_IO_TRACE is not set
102# CONFIG_LSF is not set
103# CONFIG_BLK_DEV_BSG is not set 100# CONFIG_BLK_DEV_BSG is not set
104# CONFIG_BLK_DEV_INTEGRITY is not set 101# CONFIG_BLK_DEV_INTEGRITY is not set
105 102
@@ -116,6 +113,10 @@ CONFIG_DEFAULT_AS=y
116# CONFIG_DEFAULT_NOOP is not set 113# CONFIG_DEFAULT_NOOP is not set
117CONFIG_DEFAULT_IOSCHED="anticipatory" 114CONFIG_DEFAULT_IOSCHED="anticipatory"
118CONFIG_CLASSIC_RCU=y 115CONFIG_CLASSIC_RCU=y
116# CONFIG_TREE_RCU is not set
117# CONFIG_PREEMPT_RCU is not set
118# CONFIG_TREE_RCU_TRACE is not set
119# CONFIG_PREEMPT_RCU_TRACE is not set
119# CONFIG_FREEZER is not set 120# CONFIG_FREEZER is not set
120 121
121# 122#
@@ -123,6 +124,7 @@ CONFIG_CLASSIC_RCU=y
123# 124#
124CONFIG_CPU_SH4=y 125CONFIG_CPU_SH4=y
125# CONFIG_CPU_SUBTYPE_SH7619 is not set 126# CONFIG_CPU_SUBTYPE_SH7619 is not set
127# CONFIG_CPU_SUBTYPE_SH7201 is not set
126# CONFIG_CPU_SUBTYPE_SH7203 is not set 128# CONFIG_CPU_SUBTYPE_SH7203 is not set
127# CONFIG_CPU_SUBTYPE_SH7206 is not set 129# CONFIG_CPU_SUBTYPE_SH7206 is not set
128# CONFIG_CPU_SUBTYPE_SH7263 is not set 130# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -186,7 +188,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
186CONFIG_SPARSEMEM_STATIC=y 188CONFIG_SPARSEMEM_STATIC=y
187CONFIG_PAGEFLAGS_EXTENDED=y 189CONFIG_PAGEFLAGS_EXTENDED=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 190CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set
190# CONFIG_PHYS_ADDR_T_64BIT is not set 191# CONFIG_PHYS_ADDR_T_64BIT is not set
191CONFIG_ZONE_DMA_FLAG=0 192CONFIG_ZONE_DMA_FLAG=0
192CONFIG_NR_QUICK=2 193CONFIG_NR_QUICK=2
@@ -280,7 +281,6 @@ CONFIG_CMDLINE="console=ttySC1,38400"
280# 281#
281# Bus options 282# Bus options
282# 283#
283# CONFIG_CF_ENABLER is not set
284# CONFIG_ARCH_SUPPORTS_MSI is not set 284# CONFIG_ARCH_SUPPORTS_MSI is not set
285 285
286# 286#
@@ -290,11 +290,18 @@ CONFIG_BINFMT_ELF=y
290# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 290# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
291# CONFIG_HAVE_AOUT is not set 291# CONFIG_HAVE_AOUT is not set
292# CONFIG_BINFMT_MISC is not set 292# CONFIG_BINFMT_MISC is not set
293
294#
295# Power management options (EXPERIMENTAL)
296#
297# CONFIG_PM is not set
298# CONFIG_CPU_IDLE is not set
293CONFIG_NET=y 299CONFIG_NET=y
294 300
295# 301#
296# Networking options 302# Networking options
297# 303#
304CONFIG_COMPAT_NET_DEV_OPS=y
298CONFIG_PACKET=y 305CONFIG_PACKET=y
299# CONFIG_PACKET_MMAP is not set 306# CONFIG_PACKET_MMAP is not set
300CONFIG_UNIX=y 307CONFIG_UNIX=y
@@ -370,6 +377,7 @@ CONFIG_IP_NF_QUEUE=y
370# CONFIG_ECONET is not set 377# CONFIG_ECONET is not set
371# CONFIG_WAN_ROUTER is not set 378# CONFIG_WAN_ROUTER is not set
372# CONFIG_NET_SCHED is not set 379# CONFIG_NET_SCHED is not set
380# CONFIG_DCB is not set
373 381
374# 382#
375# Network testing 383# Network testing
@@ -385,8 +393,8 @@ CONFIG_WIRELESS=y
385# CONFIG_CFG80211 is not set 393# CONFIG_CFG80211 is not set
386# CONFIG_WIRELESS_OLD_REGULATORY is not set 394# CONFIG_WIRELESS_OLD_REGULATORY is not set
387# CONFIG_WIRELESS_EXT is not set 395# CONFIG_WIRELESS_EXT is not set
396# CONFIG_LIB80211 is not set
388# CONFIG_MAC80211 is not set 397# CONFIG_MAC80211 is not set
389# CONFIG_IEEE80211 is not set
390# CONFIG_RFKILL is not set 398# CONFIG_RFKILL is not set
391# CONFIG_NET_9P is not set 399# CONFIG_NET_9P is not set
392 400
@@ -490,6 +498,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
490CONFIG_MISC_DEVICES=y 498CONFIG_MISC_DEVICES=y
491# CONFIG_EEPROM_93CX6 is not set 499# CONFIG_EEPROM_93CX6 is not set
492# CONFIG_ENCLOSURE_SERVICES is not set 500# CONFIG_ENCLOSURE_SERVICES is not set
501# CONFIG_C2PORT is not set
493CONFIG_HAVE_IDE=y 502CONFIG_HAVE_IDE=y
494# CONFIG_IDE is not set 503# CONFIG_IDE is not set
495 504
@@ -516,6 +525,7 @@ CONFIG_MII=y
516# CONFIG_STNIC is not set 525# CONFIG_STNIC is not set
517# CONFIG_SMC91X is not set 526# CONFIG_SMC91X is not set
518# CONFIG_SMC911X is not set 527# CONFIG_SMC911X is not set
528# CONFIG_SMSC911X is not set
519# CONFIG_IBM_NEW_EMAC_ZMII is not set 529# CONFIG_IBM_NEW_EMAC_ZMII is not set
520# CONFIG_IBM_NEW_EMAC_RGMII is not set 530# CONFIG_IBM_NEW_EMAC_RGMII is not set
521# CONFIG_IBM_NEW_EMAC_TAH is not set 531# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -570,6 +580,7 @@ CONFIG_DEVKMEM=y
570# 580#
571# CONFIG_SERIAL_SH_SCI is not set 581# CONFIG_SERIAL_SH_SCI is not set
572CONFIG_UNIX98_PTYS=y 582CONFIG_UNIX98_PTYS=y
583# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
573CONFIG_LEGACY_PTYS=y 584CONFIG_LEGACY_PTYS=y
574CONFIG_LEGACY_PTY_COUNT=256 585CONFIG_LEGACY_PTY_COUNT=256
575# CONFIG_IPMI_HANDLER is not set 586# CONFIG_IPMI_HANDLER is not set
@@ -604,11 +615,11 @@ CONFIG_WATCHDOG=y
604# 615#
605# CONFIG_SOFT_WATCHDOG is not set 616# CONFIG_SOFT_WATCHDOG is not set
606# CONFIG_SH_WDT is not set 617# CONFIG_SH_WDT is not set
618CONFIG_SSB_POSSIBLE=y
607 619
608# 620#
609# Sonics Silicon Backplane 621# Sonics Silicon Backplane
610# 622#
611CONFIG_SSB_POSSIBLE=y
612# CONFIG_SSB is not set 623# CONFIG_SSB is not set
613 624
614# 625#
@@ -618,7 +629,7 @@ CONFIG_SSB_POSSIBLE=y
618# CONFIG_MFD_SM501 is not set 629# CONFIG_MFD_SM501 is not set
619# CONFIG_HTC_PASIC3 is not set 630# CONFIG_HTC_PASIC3 is not set
620# CONFIG_MFD_TMIO is not set 631# CONFIG_MFD_TMIO is not set
621# CONFIG_MFD_WM8400 is not set 632# CONFIG_REGULATOR is not set
622 633
623# 634#
624# Multimedia devices 635# Multimedia devices
@@ -662,7 +673,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
662# 673#
663 674
664# 675#
665# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 676# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
666# 677#
667# CONFIG_USB_GADGET is not set 678# CONFIG_USB_GADGET is not set
668# CONFIG_MMC is not set 679# CONFIG_MMC is not set
@@ -722,10 +733,7 @@ CONFIG_TMPFS=y
722# CONFIG_HUGETLBFS is not set 733# CONFIG_HUGETLBFS is not set
723# CONFIG_HUGETLB_PAGE is not set 734# CONFIG_HUGETLB_PAGE is not set
724# CONFIG_CONFIGFS_FS is not set 735# CONFIG_CONFIGFS_FS is not set
725 736CONFIG_MISC_FILESYSTEMS=y
726#
727# Miscellaneous filesystems
728#
729# CONFIG_ADFS_FS is not set 737# CONFIG_ADFS_FS is not set
730# CONFIG_AFFS_FS is not set 738# CONFIG_AFFS_FS is not set
731# CONFIG_HFS_FS is not set 739# CONFIG_HFS_FS is not set
@@ -787,13 +795,19 @@ CONFIG_FRAME_WARN=1024
787# CONFIG_DEBUG_MEMORY_INIT is not set 795# CONFIG_DEBUG_MEMORY_INIT is not set
788# CONFIG_RCU_CPU_STALL_DETECTOR is not set 796# CONFIG_RCU_CPU_STALL_DETECTOR is not set
789# CONFIG_LATENCYTOP is not set 797# CONFIG_LATENCYTOP is not set
790CONFIG_NOP_TRACER=y 798CONFIG_HAVE_FUNCTION_TRACER=y
791CONFIG_HAVE_FTRACE=y 799CONFIG_HAVE_DYNAMIC_FTRACE=y
800CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
801
802#
803# Tracers
804#
792# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 805# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
793# CONFIG_SAMPLES is not set 806# CONFIG_SAMPLES is not set
807CONFIG_HAVE_ARCH_KGDB=y
794# CONFIG_SH_STANDARD_BIOS is not set 808# CONFIG_SH_STANDARD_BIOS is not set
795# CONFIG_EARLY_SCIF_CONSOLE is not set 809# CONFIG_EARLY_SCIF_CONSOLE is not set
796# CONFIG_SH_KGDB is not set 810# CONFIG_MORE_COMPILE_OPTIONS is not set
797 811
798# 812#
799# Security options 813# Security options
@@ -809,6 +823,7 @@ CONFIG_CRYPTO=y
809# 823#
810# CONFIG_CRYPTO_FIPS is not set 824# CONFIG_CRYPTO_FIPS is not set
811# CONFIG_CRYPTO_MANAGER is not set 825# CONFIG_CRYPTO_MANAGER is not set
826# CONFIG_CRYPTO_MANAGER2 is not set
812# CONFIG_CRYPTO_GF128MUL is not set 827# CONFIG_CRYPTO_GF128MUL is not set
813# CONFIG_CRYPTO_NULL is not set 828# CONFIG_CRYPTO_NULL is not set
814# CONFIG_CRYPTO_CRYPTD is not set 829# CONFIG_CRYPTO_CRYPTD is not set
@@ -891,6 +906,7 @@ CONFIG_CRYPTO_HW=y
891# Library routines 906# Library routines
892# 907#
893CONFIG_BITREVERSE=y 908CONFIG_BITREVERSE=y
909CONFIG_GENERIC_FIND_LAST_BIT=y
894# CONFIG_CRC_CCITT is not set 910# CONFIG_CRC_CCITT is not set
895# CONFIG_CRC16 is not set 911# CONFIG_CRC16 is not set
896# CONFIG_CRC_T10DIF is not set 912# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
index ad95b80bb198..7504978e8747 100644
--- a/arch/sh/configs/se7780_defconfig
+++ b/arch/sh/configs/se7780_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:27:30 2008 4# Fri Jan 9 17:53:50 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -74,7 +76,6 @@ CONFIG_SLAB=y
74# CONFIG_SLUB is not set 76# CONFIG_SLUB is not set
75# CONFIG_SLOB is not set 77# CONFIG_SLOB is not set
76# CONFIG_PROFILING is not set 78# CONFIG_PROFILING is not set
77# CONFIG_MARKERS is not set
78CONFIG_HAVE_OPROFILE=y 79CONFIG_HAVE_OPROFILE=y
79CONFIG_HAVE_IOREMAP_PROT=y 80CONFIG_HAVE_IOREMAP_PROT=y
80CONFIG_HAVE_KPROBES=y 81CONFIG_HAVE_KPROBES=y
@@ -84,18 +85,15 @@ CONFIG_HAVE_CLK=y
84CONFIG_HAVE_GENERIC_DMA_COHERENT=y 85CONFIG_HAVE_GENERIC_DMA_COHERENT=y
85CONFIG_SLABINFO=y 86CONFIG_SLABINFO=y
86CONFIG_RT_MUTEXES=y 87CONFIG_RT_MUTEXES=y
87# CONFIG_TINY_SHMEM is not set
88CONFIG_BASE_SMALL=0 88CONFIG_BASE_SMALL=0
89CONFIG_MODULES=y 89CONFIG_MODULES=y
90# CONFIG_MODULE_FORCE_LOAD is not set 90# CONFIG_MODULE_FORCE_LOAD is not set
91CONFIG_MODULE_UNLOAD=y 91CONFIG_MODULE_UNLOAD=y
92# CONFIG_MODVERSIONS is not set 92# CONFIG_MODVERSIONS is not set
93# CONFIG_MODULE_SRCVERSION_ALL is not set 93# CONFIG_MODULE_SRCVERSION_ALL is not set
94CONFIG_KMOD=y
95CONFIG_BLOCK=y 94CONFIG_BLOCK=y
96# CONFIG_LBD is not set 95# CONFIG_LBD is not set
97# CONFIG_BLK_DEV_IO_TRACE is not set 96# CONFIG_BLK_DEV_IO_TRACE is not set
98# CONFIG_LSF is not set
99# CONFIG_BLK_DEV_INTEGRITY is not set 97# CONFIG_BLK_DEV_INTEGRITY is not set
100 98
101# 99#
@@ -111,6 +109,10 @@ CONFIG_DEFAULT_DEADLINE=y
111# CONFIG_DEFAULT_NOOP is not set 109# CONFIG_DEFAULT_NOOP is not set
112CONFIG_DEFAULT_IOSCHED="deadline" 110CONFIG_DEFAULT_IOSCHED="deadline"
113CONFIG_CLASSIC_RCU=y 111CONFIG_CLASSIC_RCU=y
112# CONFIG_TREE_RCU is not set
113# CONFIG_PREEMPT_RCU is not set
114# CONFIG_TREE_RCU_TRACE is not set
115# CONFIG_PREEMPT_RCU_TRACE is not set
114# CONFIG_FREEZER is not set 116# CONFIG_FREEZER is not set
115 117
116# 118#
@@ -119,6 +121,7 @@ CONFIG_CLASSIC_RCU=y
119CONFIG_CPU_SH4=y 121CONFIG_CPU_SH4=y
120CONFIG_CPU_SH4A=y 122CONFIG_CPU_SH4A=y
121# CONFIG_CPU_SUBTYPE_SH7619 is not set 123# CONFIG_CPU_SUBTYPE_SH7619 is not set
124# CONFIG_CPU_SUBTYPE_SH7201 is not set
122# CONFIG_CPU_SUBTYPE_SH7203 is not set 125# CONFIG_CPU_SUBTYPE_SH7203 is not set
123# CONFIG_CPU_SUBTYPE_SH7206 is not set 126# CONFIG_CPU_SUBTYPE_SH7206 is not set
124# CONFIG_CPU_SUBTYPE_SH7263 is not set 127# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -185,7 +188,6 @@ CONFIG_SPARSEMEM_STATIC=y
185CONFIG_PAGEFLAGS_EXTENDED=y 188CONFIG_PAGEFLAGS_EXTENDED=y
186CONFIG_SPLIT_PTLOCK_CPUS=4 189CONFIG_SPLIT_PTLOCK_CPUS=4
187CONFIG_MIGRATION=y 190CONFIG_MIGRATION=y
188# CONFIG_RESOURCES_64BIT is not set
189# CONFIG_PHYS_ADDR_T_64BIT is not set 191# CONFIG_PHYS_ADDR_T_64BIT is not set
190CONFIG_ZONE_DMA_FLAG=0 192CONFIG_ZONE_DMA_FLAG=0
191CONFIG_NR_QUICK=2 193CONFIG_NR_QUICK=2
@@ -274,11 +276,11 @@ CONFIG_CMDLINE="console=ttySC0.115200 root=/dev/sda1"
274# 276#
275# Bus options 277# Bus options
276# 278#
277# CONFIG_CF_ENABLER is not set
278CONFIG_PCI=y 279CONFIG_PCI=y
279CONFIG_SH_PCIDMA_NONCOHERENT=y 280CONFIG_SH_PCIDMA_NONCOHERENT=y
280CONFIG_PCI_AUTO=y 281CONFIG_PCI_AUTO=y
281CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 282CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
283# CONFIG_PCIEPORTBUS is not set
282# CONFIG_ARCH_SUPPORTS_MSI is not set 284# CONFIG_ARCH_SUPPORTS_MSI is not set
283CONFIG_PCI_LEGACY=y 285CONFIG_PCI_LEGACY=y
284 286
@@ -294,6 +296,7 @@ CONFIG_NET=y
294# 296#
295# Networking options 297# Networking options
296# 298#
299CONFIG_COMPAT_NET_DEV_OPS=y
297CONFIG_PACKET=y 300CONFIG_PACKET=y
298# CONFIG_PACKET_MMAP is not set 301# CONFIG_PACKET_MMAP is not set
299CONFIG_UNIX=y 302CONFIG_UNIX=y
@@ -349,6 +352,7 @@ CONFIG_IPV6=y
349# CONFIG_IPX is not set 352# CONFIG_IPX is not set
350# CONFIG_ATALK is not set 353# CONFIG_ATALK is not set
351# CONFIG_NET_SCHED is not set 354# CONFIG_NET_SCHED is not set
355# CONFIG_DCB is not set
352 356
353# 357#
354# Network testing 358# Network testing
@@ -363,8 +367,8 @@ CONFIG_WIRELESS=y
363# CONFIG_CFG80211 is not set 367# CONFIG_CFG80211 is not set
364# CONFIG_WIRELESS_OLD_REGULATORY is not set 368# CONFIG_WIRELESS_OLD_REGULATORY is not set
365# CONFIG_WIRELESS_EXT is not set 369# CONFIG_WIRELESS_EXT is not set
370# CONFIG_LIB80211 is not set
366# CONFIG_MAC80211 is not set 371# CONFIG_MAC80211 is not set
367# CONFIG_IEEE80211 is not set
368# CONFIG_RFKILL is not set 372# CONFIG_RFKILL is not set
369 373
370# 374#
@@ -533,6 +537,8 @@ CONFIG_SCSI_LOWLEVEL=y
533# CONFIG_MEGARAID_LEGACY is not set 537# CONFIG_MEGARAID_LEGACY is not set
534# CONFIG_MEGARAID_SAS is not set 538# CONFIG_MEGARAID_SAS is not set
535# CONFIG_SCSI_HPTIOP is not set 539# CONFIG_SCSI_HPTIOP is not set
540# CONFIG_LIBFC is not set
541# CONFIG_FCOE is not set
536# CONFIG_SCSI_DMX3191D is not set 542# CONFIG_SCSI_DMX3191D is not set
537# CONFIG_SCSI_FUTURE_DOMAIN is not set 543# CONFIG_SCSI_FUTURE_DOMAIN is not set
538# CONFIG_SCSI_IPS is not set 544# CONFIG_SCSI_IPS is not set
@@ -569,11 +575,13 @@ CONFIG_SATA_SIL=y
569# CONFIG_SATA_VIA is not set 575# CONFIG_SATA_VIA is not set
570# CONFIG_SATA_VITESSE is not set 576# CONFIG_SATA_VITESSE is not set
571# CONFIG_SATA_INIC162X is not set 577# CONFIG_SATA_INIC162X is not set
578# CONFIG_PATA_ALI is not set
572# CONFIG_PATA_AMD is not set 579# CONFIG_PATA_AMD is not set
573# CONFIG_PATA_ARTOP is not set 580# CONFIG_PATA_ARTOP is not set
574# CONFIG_PATA_ATIIXP is not set 581# CONFIG_PATA_ATIIXP is not set
575# CONFIG_PATA_CMD64X is not set 582# CONFIG_PATA_CMD64X is not set
576# CONFIG_PATA_CS5520 is not set 583# CONFIG_PATA_CS5520 is not set
584# CONFIG_PATA_CS5530 is not set
577# CONFIG_PATA_EFAR is not set 585# CONFIG_PATA_EFAR is not set
578# CONFIG_ATA_GENERIC is not set 586# CONFIG_ATA_GENERIC is not set
579# CONFIG_PATA_HPT366 is not set 587# CONFIG_PATA_HPT366 is not set
@@ -585,10 +593,15 @@ CONFIG_SATA_SIL=y
585# CONFIG_PATA_MPIIX is not set 593# CONFIG_PATA_MPIIX is not set
586# CONFIG_PATA_OLDPIIX is not set 594# CONFIG_PATA_OLDPIIX is not set
587# CONFIG_PATA_NETCELL is not set 595# CONFIG_PATA_NETCELL is not set
596# CONFIG_PATA_NS87410 is not set
597# CONFIG_PATA_NS87415 is not set
598# CONFIG_PATA_PDC_OLD is not set
588# CONFIG_PATA_RZ1000 is not set 599# CONFIG_PATA_RZ1000 is not set
600# CONFIG_PATA_SC1200 is not set
589# CONFIG_PATA_SERVERWORKS is not set 601# CONFIG_PATA_SERVERWORKS is not set
590# CONFIG_PATA_PDC2027X is not set 602# CONFIG_PATA_PDC2027X is not set
591# CONFIG_PATA_SIL680 is not set 603# CONFIG_PATA_SIL680 is not set
604# CONFIG_PATA_SIS is not set
592# CONFIG_PATA_VIA is not set 605# CONFIG_PATA_VIA is not set
593# CONFIG_PATA_WINBOND is not set 606# CONFIG_PATA_WINBOND is not set
594# CONFIG_PATA_PLATFORM is not set 607# CONFIG_PATA_PLATFORM is not set
@@ -627,6 +640,9 @@ CONFIG_SMSC_PHY=y
627# CONFIG_BROADCOM_PHY is not set 640# CONFIG_BROADCOM_PHY is not set
628# CONFIG_ICPLUS_PHY is not set 641# CONFIG_ICPLUS_PHY is not set
629# CONFIG_REALTEK_PHY is not set 642# CONFIG_REALTEK_PHY is not set
643# CONFIG_NATIONAL_PHY is not set
644# CONFIG_STE10XP is not set
645# CONFIG_LSI_ET1011C_PHY is not set
630# CONFIG_FIXED_PHY is not set 646# CONFIG_FIXED_PHY is not set
631# CONFIG_MDIO_BITBANG is not set 647# CONFIG_MDIO_BITBANG is not set
632CONFIG_NET_ETHERNET=y 648CONFIG_NET_ETHERNET=y
@@ -639,6 +655,7 @@ CONFIG_MII=y
639# CONFIG_NET_VENDOR_3COM is not set 655# CONFIG_NET_VENDOR_3COM is not set
640CONFIG_SMC91X=y 656CONFIG_SMC91X=y
641# CONFIG_SMC911X is not set 657# CONFIG_SMC911X is not set
658# CONFIG_SMSC911X is not set
642# CONFIG_NET_TULIP is not set 659# CONFIG_NET_TULIP is not set
643# CONFIG_HP100 is not set 660# CONFIG_HP100 is not set
644# CONFIG_IBM_NEW_EMAC_ZMII is not set 661# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -654,7 +671,6 @@ CONFIG_NET_PCI=y
654# CONFIG_ADAPTEC_STARFIRE is not set 671# CONFIG_ADAPTEC_STARFIRE is not set
655# CONFIG_B44 is not set 672# CONFIG_B44 is not set
656# CONFIG_FORCEDETH is not set 673# CONFIG_FORCEDETH is not set
657# CONFIG_EEPRO100 is not set
658# CONFIG_E100 is not set 674# CONFIG_E100 is not set
659# CONFIG_FEALNX is not set 675# CONFIG_FEALNX is not set
660# CONFIG_NATSEMI is not set 676# CONFIG_NATSEMI is not set
@@ -663,6 +679,7 @@ CONFIG_NET_PCI=y
663# CONFIG_R6040 is not set 679# CONFIG_R6040 is not set
664# CONFIG_SIS900 is not set 680# CONFIG_SIS900 is not set
665# CONFIG_EPIC100 is not set 681# CONFIG_EPIC100 is not set
682# CONFIG_SMSC9420 is not set
666# CONFIG_SUNDANCE is not set 683# CONFIG_SUNDANCE is not set
667# CONFIG_TLAN is not set 684# CONFIG_TLAN is not set
668# CONFIG_VIA_RHINE is not set 685# CONFIG_VIA_RHINE is not set
@@ -754,6 +771,7 @@ CONFIG_SERIAL_CORE=y
754CONFIG_SERIAL_CORE_CONSOLE=y 771CONFIG_SERIAL_CORE_CONSOLE=y
755# CONFIG_SERIAL_JSM is not set 772# CONFIG_SERIAL_JSM is not set
756CONFIG_UNIX98_PTYS=y 773CONFIG_UNIX98_PTYS=y
774# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
757# CONFIG_LEGACY_PTYS is not set 775# CONFIG_LEGACY_PTYS is not set
758# CONFIG_IPMI_HANDLER is not set 776# CONFIG_IPMI_HANDLER is not set
759# CONFIG_HW_RANDOM is not set 777# CONFIG_HW_RANDOM is not set
@@ -779,11 +797,11 @@ CONFIG_HWMON=y
779CONFIG_THERMAL=y 797CONFIG_THERMAL=y
780# CONFIG_THERMAL_HWMON is not set 798# CONFIG_THERMAL_HWMON is not set
781# CONFIG_WATCHDOG is not set 799# CONFIG_WATCHDOG is not set
800CONFIG_SSB_POSSIBLE=y
782 801
783# 802#
784# Sonics Silicon Backplane 803# Sonics Silicon Backplane
785# 804#
786CONFIG_SSB_POSSIBLE=y
787# CONFIG_SSB is not set 805# CONFIG_SSB is not set
788 806
789# 807#
@@ -793,7 +811,7 @@ CONFIG_SSB_POSSIBLE=y
793# CONFIG_MFD_SM501 is not set 811# CONFIG_MFD_SM501 is not set
794# CONFIG_HTC_PASIC3 is not set 812# CONFIG_HTC_PASIC3 is not set
795# CONFIG_MFD_TMIO is not set 813# CONFIG_MFD_TMIO is not set
796# CONFIG_MFD_WM8400 is not set 814# CONFIG_REGULATOR is not set
797 815
798# 816#
799# Multimedia devices 817# Multimedia devices
@@ -821,15 +839,16 @@ CONFIG_FB=y
821CONFIG_FIRMWARE_EDID=y 839CONFIG_FIRMWARE_EDID=y
822# CONFIG_FB_DDC is not set 840# CONFIG_FB_DDC is not set
823# CONFIG_FB_BOOT_VESA_SUPPORT is not set 841# CONFIG_FB_BOOT_VESA_SUPPORT is not set
824CONFIG_FB_CFB_FILLRECT=m 842# CONFIG_FB_CFB_FILLRECT is not set
825CONFIG_FB_CFB_COPYAREA=m 843# CONFIG_FB_CFB_COPYAREA is not set
826CONFIG_FB_CFB_IMAGEBLIT=m 844# CONFIG_FB_CFB_IMAGEBLIT is not set
827# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 845# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
828# CONFIG_FB_SYS_FILLRECT is not set 846CONFIG_FB_SYS_FILLRECT=m
829# CONFIG_FB_SYS_COPYAREA is not set 847CONFIG_FB_SYS_COPYAREA=m
830# CONFIG_FB_SYS_IMAGEBLIT is not set 848CONFIG_FB_SYS_IMAGEBLIT=m
831# CONFIG_FB_FOREIGN_ENDIAN is not set 849# CONFIG_FB_FOREIGN_ENDIAN is not set
832# CONFIG_FB_SYS_FOPS is not set 850CONFIG_FB_SYS_FOPS=m
851CONFIG_FB_DEFERRED_IO=y
833# CONFIG_FB_SVGALIB is not set 852# CONFIG_FB_SVGALIB is not set
834# CONFIG_FB_MACMODES is not set 853# CONFIG_FB_MACMODES is not set
835# CONFIG_FB_BACKLIGHT is not set 854# CONFIG_FB_BACKLIGHT is not set
@@ -865,6 +884,7 @@ CONFIG_FB_CFB_IMAGEBLIT=m
865CONFIG_FB_SH_MOBILE_LCDC=m 884CONFIG_FB_SH_MOBILE_LCDC=m
866# CONFIG_FB_VIRTUAL is not set 885# CONFIG_FB_VIRTUAL is not set
867# CONFIG_FB_METRONOME is not set 886# CONFIG_FB_METRONOME is not set
887# CONFIG_FB_MB862XX is not set
868# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 888# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
869 889
870# 890#
@@ -912,11 +932,9 @@ CONFIG_HID_COMPAT=y
912CONFIG_HID_A4TECH=y 932CONFIG_HID_A4TECH=y
913CONFIG_HID_APPLE=y 933CONFIG_HID_APPLE=y
914CONFIG_HID_BELKIN=y 934CONFIG_HID_BELKIN=y
915CONFIG_HID_BRIGHT=y
916CONFIG_HID_CHERRY=y 935CONFIG_HID_CHERRY=y
917CONFIG_HID_CHICONY=y 936CONFIG_HID_CHICONY=y
918CONFIG_HID_CYPRESS=y 937CONFIG_HID_CYPRESS=y
919CONFIG_HID_DELL=y
920CONFIG_HID_EZKEY=y 938CONFIG_HID_EZKEY=y
921CONFIG_HID_GYRATION=y 939CONFIG_HID_GYRATION=y
922CONFIG_HID_LOGITECH=y 940CONFIG_HID_LOGITECH=y
@@ -924,12 +942,15 @@ CONFIG_HID_LOGITECH=y
924# CONFIG_LOGIRUMBLEPAD2_FF is not set 942# CONFIG_LOGIRUMBLEPAD2_FF is not set
925CONFIG_HID_MICROSOFT=y 943CONFIG_HID_MICROSOFT=y
926CONFIG_HID_MONTEREY=y 944CONFIG_HID_MONTEREY=y
945# CONFIG_HID_NTRIG is not set
927CONFIG_HID_PANTHERLORD=y 946CONFIG_HID_PANTHERLORD=y
928# CONFIG_PANTHERLORD_FF is not set 947# CONFIG_PANTHERLORD_FF is not set
929CONFIG_HID_PETALYNX=y 948CONFIG_HID_PETALYNX=y
930CONFIG_HID_SAMSUNG=y 949CONFIG_HID_SAMSUNG=y
931CONFIG_HID_SONY=y 950CONFIG_HID_SONY=y
932CONFIG_HID_SUNPLUS=y 951CONFIG_HID_SUNPLUS=y
952# CONFIG_GREENASIA_FF is not set
953# CONFIG_HID_TOPSEED is not set
933CONFIG_THRUSTMASTER_FF=m 954CONFIG_THRUSTMASTER_FF=m
934CONFIG_ZEROPLUS_FF=m 955CONFIG_ZEROPLUS_FF=m
935CONFIG_USB_SUPPORT=y 956CONFIG_USB_SUPPORT=y
@@ -949,6 +970,7 @@ CONFIG_USB_DEVICEFS=y
949# CONFIG_USB_OTG_WHITELIST is not set 970# CONFIG_USB_OTG_WHITELIST is not set
950# CONFIG_USB_OTG_BLACKLIST_HUB is not set 971# CONFIG_USB_OTG_BLACKLIST_HUB is not set
951CONFIG_USB_MON=y 972CONFIG_USB_MON=y
973# CONFIG_USB_WUSB_CBAF is not set
952 974
953# 975#
954# USB Host Controller Drivers 976# USB Host Controller Drivers
@@ -974,11 +996,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
974# CONFIG_USB_TMC is not set 996# CONFIG_USB_TMC is not set
975 997
976# 998#
977# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 999# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
978# 1000#
979 1001
980# 1002#
981# may also be needed; see USB_STORAGE Help for more information 1003# see USB_STORAGE Help for more information
982# 1004#
983CONFIG_USB_STORAGE=y 1005CONFIG_USB_STORAGE=y
984# CONFIG_USB_STORAGE_DEBUG is not set 1006# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1094,10 +1116,7 @@ CONFIG_TMPFS=y
1094# CONFIG_HUGETLBFS is not set 1116# CONFIG_HUGETLBFS is not set
1095# CONFIG_HUGETLB_PAGE is not set 1117# CONFIG_HUGETLB_PAGE is not set
1096# CONFIG_CONFIGFS_FS is not set 1118# CONFIG_CONFIGFS_FS is not set
1097 1119CONFIG_MISC_FILESYSTEMS=y
1098#
1099# Miscellaneous filesystems
1100#
1101# CONFIG_HFSPLUS_FS is not set 1120# CONFIG_HFSPLUS_FS is not set
1102# CONFIG_JFFS2_FS is not set 1121# CONFIG_JFFS2_FS is not set
1103CONFIG_CRAMFS=y 1122CONFIG_CRAMFS=y
@@ -1188,13 +1207,19 @@ CONFIG_DEBUG_FS=y
1188# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1207# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1189# CONFIG_LATENCYTOP is not set 1208# CONFIG_LATENCYTOP is not set
1190# CONFIG_SYSCTL_SYSCALL_CHECK is not set 1209# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1191CONFIG_NOP_TRACER=y 1210CONFIG_HAVE_FUNCTION_TRACER=y
1192CONFIG_HAVE_FTRACE=y 1211CONFIG_HAVE_DYNAMIC_FTRACE=y
1212CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1213
1214#
1215# Tracers
1216#
1193# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1217# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1194# CONFIG_SAMPLES is not set 1218# CONFIG_SAMPLES is not set
1219CONFIG_HAVE_ARCH_KGDB=y
1195# CONFIG_SH_STANDARD_BIOS is not set 1220# CONFIG_SH_STANDARD_BIOS is not set
1196# CONFIG_EARLY_SCIF_CONSOLE is not set 1221# CONFIG_EARLY_SCIF_CONSOLE is not set
1197# CONFIG_SH_KGDB is not set 1222# CONFIG_MORE_COMPILE_OPTIONS is not set
1198 1223
1199# 1224#
1200# Security options 1225# Security options
@@ -1210,6 +1235,7 @@ CONFIG_CRYPTO=y
1210# 1235#
1211# CONFIG_CRYPTO_FIPS is not set 1236# CONFIG_CRYPTO_FIPS is not set
1212# CONFIG_CRYPTO_MANAGER is not set 1237# CONFIG_CRYPTO_MANAGER is not set
1238# CONFIG_CRYPTO_MANAGER2 is not set
1213# CONFIG_CRYPTO_NULL is not set 1239# CONFIG_CRYPTO_NULL is not set
1214# CONFIG_CRYPTO_CRYPTD is not set 1240# CONFIG_CRYPTO_CRYPTD is not set
1215# CONFIG_CRYPTO_AUTHENC is not set 1241# CONFIG_CRYPTO_AUTHENC is not set
@@ -1288,6 +1314,7 @@ CONFIG_CRYPTO_HW=y
1288# Library routines 1314# Library routines
1289# 1315#
1290CONFIG_BITREVERSE=y 1316CONFIG_BITREVERSE=y
1317CONFIG_GENERIC_FIND_LAST_BIT=y
1291# CONFIG_CRC_CCITT is not set 1318# CONFIG_CRC_CCITT is not set
1292# CONFIG_CRC16 is not set 1319# CONFIG_CRC16 is not set
1293# CONFIG_CRC_T10DIF is not set 1320# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/sh03_defconfig b/arch/sh/configs/sh03_defconfig
index 95f0f5d5b631..04bde1e96965 100644
--- a/arch/sh/configs/sh03_defconfig
+++ b/arch/sh/configs/sh03_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:31:54 2008 4# Fri Jan 9 17:56:46 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -79,6 +81,7 @@ CONFIG_SLAB=y
79# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
81CONFIG_PROFILING=y 83CONFIG_PROFILING=y
84CONFIG_TRACEPOINTS=y
82# CONFIG_MARKERS is not set 85# CONFIG_MARKERS is not set
83CONFIG_OPROFILE=m 86CONFIG_OPROFILE=m
84CONFIG_HAVE_OPROFILE=y 87CONFIG_HAVE_OPROFILE=y
@@ -91,7 +94,6 @@ CONFIG_HAVE_CLK=y
91CONFIG_HAVE_GENERIC_DMA_COHERENT=y 94CONFIG_HAVE_GENERIC_DMA_COHERENT=y
92CONFIG_SLABINFO=y 95CONFIG_SLABINFO=y
93CONFIG_RT_MUTEXES=y 96CONFIG_RT_MUTEXES=y
94# CONFIG_TINY_SHMEM is not set
95CONFIG_BASE_SMALL=0 97CONFIG_BASE_SMALL=0
96CONFIG_MODULES=y 98CONFIG_MODULES=y
97# CONFIG_MODULE_FORCE_LOAD is not set 99# CONFIG_MODULE_FORCE_LOAD is not set
@@ -99,11 +101,9 @@ CONFIG_MODULE_UNLOAD=y
99CONFIG_MODULE_FORCE_UNLOAD=y 101CONFIG_MODULE_FORCE_UNLOAD=y
100CONFIG_MODVERSIONS=y 102CONFIG_MODVERSIONS=y
101# CONFIG_MODULE_SRCVERSION_ALL is not set 103# CONFIG_MODULE_SRCVERSION_ALL is not set
102CONFIG_KMOD=y
103CONFIG_BLOCK=y 104CONFIG_BLOCK=y
104# CONFIG_LBD is not set 105# CONFIG_LBD is not set
105# CONFIG_BLK_DEV_IO_TRACE is not set 106# CONFIG_BLK_DEV_IO_TRACE is not set
106# CONFIG_LSF is not set
107# CONFIG_BLK_DEV_BSG is not set 107# CONFIG_BLK_DEV_BSG is not set
108# CONFIG_BLK_DEV_INTEGRITY is not set 108# CONFIG_BLK_DEV_INTEGRITY is not set
109 109
@@ -120,6 +120,10 @@ CONFIG_DEFAULT_AS=y
120# CONFIG_DEFAULT_NOOP is not set 120# CONFIG_DEFAULT_NOOP is not set
121CONFIG_DEFAULT_IOSCHED="anticipatory" 121CONFIG_DEFAULT_IOSCHED="anticipatory"
122CONFIG_CLASSIC_RCU=y 122CONFIG_CLASSIC_RCU=y
123# CONFIG_TREE_RCU is not set
124# CONFIG_PREEMPT_RCU is not set
125# CONFIG_TREE_RCU_TRACE is not set
126# CONFIG_PREEMPT_RCU_TRACE is not set
123# CONFIG_FREEZER is not set 127# CONFIG_FREEZER is not set
124 128
125# 129#
@@ -127,6 +131,7 @@ CONFIG_CLASSIC_RCU=y
127# 131#
128CONFIG_CPU_SH4=y 132CONFIG_CPU_SH4=y
129# CONFIG_CPU_SUBTYPE_SH7619 is not set 133# CONFIG_CPU_SUBTYPE_SH7619 is not set
134# CONFIG_CPU_SUBTYPE_SH7201 is not set
130# CONFIG_CPU_SUBTYPE_SH7203 is not set 135# CONFIG_CPU_SUBTYPE_SH7203 is not set
131# CONFIG_CPU_SUBTYPE_SH7206 is not set 136# CONFIG_CPU_SUBTYPE_SH7206 is not set
132# CONFIG_CPU_SUBTYPE_SH7263 is not set 137# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -190,7 +195,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
190CONFIG_SPARSEMEM_STATIC=y 195CONFIG_SPARSEMEM_STATIC=y
191CONFIG_PAGEFLAGS_EXTENDED=y 196CONFIG_PAGEFLAGS_EXTENDED=y
192CONFIG_SPLIT_PTLOCK_CPUS=4 197CONFIG_SPLIT_PTLOCK_CPUS=4
193# CONFIG_RESOURCES_64BIT is not set
194# CONFIG_PHYS_ADDR_T_64BIT is not set 198# CONFIG_PHYS_ADDR_T_64BIT is not set
195CONFIG_ZONE_DMA_FLAG=0 199CONFIG_ZONE_DMA_FLAG=0
196CONFIG_NR_QUICK=2 200CONFIG_NR_QUICK=2
@@ -268,7 +272,6 @@ CONFIG_HZ=250
268# CONFIG_PREEMPT_NONE is not set 272# CONFIG_PREEMPT_NONE is not set
269# CONFIG_PREEMPT_VOLUNTARY is not set 273# CONFIG_PREEMPT_VOLUNTARY is not set
270CONFIG_PREEMPT=y 274CONFIG_PREEMPT=y
271# CONFIG_PREEMPT_RCU is not set
272CONFIG_GUSA=y 275CONFIG_GUSA=y
273# CONFIG_GUSA_RB is not set 276# CONFIG_GUSA_RB is not set
274 277
@@ -284,14 +287,11 @@ CONFIG_CMDLINE="console=ttySC1,115200 mem=64M root=/dev/nfs"
284# 287#
285# Bus options 288# Bus options
286# 289#
287CONFIG_CF_ENABLER=y
288CONFIG_CF_AREA5=y
289# CONFIG_CF_AREA6 is not set
290CONFIG_CF_BASE_ADDR=0xb4000000
291CONFIG_PCI=y 290CONFIG_PCI=y
292CONFIG_SH_PCIDMA_NONCOHERENT=y 291CONFIG_SH_PCIDMA_NONCOHERENT=y
293CONFIG_PCI_AUTO=y 292CONFIG_PCI_AUTO=y
294CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 293CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
294# CONFIG_PCIEPORTBUS is not set
295# CONFIG_ARCH_SUPPORTS_MSI is not set 295# CONFIG_ARCH_SUPPORTS_MSI is not set
296CONFIG_PCI_LEGACY=y 296CONFIG_PCI_LEGACY=y
297# CONFIG_PCCARD is not set 297# CONFIG_PCCARD is not set
@@ -307,11 +307,18 @@ CONFIG_BINFMT_ELF=y
307# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 307# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
308# CONFIG_HAVE_AOUT is not set 308# CONFIG_HAVE_AOUT is not set
309CONFIG_BINFMT_MISC=y 309CONFIG_BINFMT_MISC=y
310
311#
312# Power management options (EXPERIMENTAL)
313#
314# CONFIG_PM is not set
315# CONFIG_CPU_IDLE is not set
310CONFIG_NET=y 316CONFIG_NET=y
311 317
312# 318#
313# Networking options 319# Networking options
314# 320#
321CONFIG_COMPAT_NET_DEV_OPS=y
315CONFIG_PACKET=y 322CONFIG_PACKET=y
316# CONFIG_PACKET_MMAP is not set 323# CONFIG_PACKET_MMAP is not set
317CONFIG_UNIX=y 324CONFIG_UNIX=y
@@ -369,6 +376,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_ECONET is not set 376# CONFIG_ECONET is not set
370# CONFIG_WAN_ROUTER is not set 377# CONFIG_WAN_ROUTER is not set
371# CONFIG_NET_SCHED is not set 378# CONFIG_NET_SCHED is not set
379# CONFIG_DCB is not set
372 380
373# 381#
374# Network testing 382# Network testing
@@ -384,8 +392,8 @@ CONFIG_WIRELESS=y
384# CONFIG_CFG80211 is not set 392# CONFIG_CFG80211 is not set
385# CONFIG_WIRELESS_OLD_REGULATORY is not set 393# CONFIG_WIRELESS_OLD_REGULATORY is not set
386# CONFIG_WIRELESS_EXT is not set 394# CONFIG_WIRELESS_EXT is not set
395# CONFIG_LIB80211 is not set
387# CONFIG_MAC80211 is not set 396# CONFIG_MAC80211 is not set
388# CONFIG_IEEE80211 is not set
389# CONFIG_RFKILL is not set 397# CONFIG_RFKILL is not set
390# CONFIG_NET_9P is not set 398# CONFIG_NET_9P is not set
391 399
@@ -427,6 +435,7 @@ CONFIG_MISC_DEVICES=y
427# CONFIG_TIFM_CORE is not set 435# CONFIG_TIFM_CORE is not set
428# CONFIG_ENCLOSURE_SERVICES is not set 436# CONFIG_ENCLOSURE_SERVICES is not set
429# CONFIG_HP_ILO is not set 437# CONFIG_HP_ILO is not set
438# CONFIG_C2PORT is not set
430CONFIG_HAVE_IDE=y 439CONFIG_HAVE_IDE=y
431CONFIG_IDE=y 440CONFIG_IDE=y
432 441
@@ -441,7 +450,6 @@ CONFIG_IDE_GD_ATA=y
441CONFIG_BLK_DEV_IDECD=m 450CONFIG_BLK_DEV_IDECD=m
442CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y 451CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
443CONFIG_BLK_DEV_IDETAPE=m 452CONFIG_BLK_DEV_IDETAPE=m
444# CONFIG_BLK_DEV_IDESCSI is not set
445# CONFIG_IDE_TASK_IOCTL is not set 453# CONFIG_IDE_TASK_IOCTL is not set
446CONFIG_IDE_PROC_FS=y 454CONFIG_IDE_PROC_FS=y
447 455
@@ -466,6 +474,7 @@ CONFIG_IDE_PROC_FS=y
466# CONFIG_BLK_DEV_JMICRON is not set 474# CONFIG_BLK_DEV_JMICRON is not set
467# CONFIG_BLK_DEV_SC1200 is not set 475# CONFIG_BLK_DEV_SC1200 is not set
468# CONFIG_BLK_DEV_PIIX is not set 476# CONFIG_BLK_DEV_PIIX is not set
477# CONFIG_BLK_DEV_IT8172 is not set
469# CONFIG_BLK_DEV_IT8213 is not set 478# CONFIG_BLK_DEV_IT8213 is not set
470# CONFIG_BLK_DEV_IT821X is not set 479# CONFIG_BLK_DEV_IT821X is not set
471# CONFIG_BLK_DEV_NS87415 is not set 480# CONFIG_BLK_DEV_NS87415 is not set
@@ -519,6 +528,7 @@ CONFIG_SCSI_WAIT_SCAN=m
519# CONFIG_SCSI_SRP_ATTRS is not set 528# CONFIG_SCSI_SRP_ATTRS is not set
520CONFIG_SCSI_LOWLEVEL=y 529CONFIG_SCSI_LOWLEVEL=y
521# CONFIG_ISCSI_TCP is not set 530# CONFIG_ISCSI_TCP is not set
531# CONFIG_SCSI_CXGB3_ISCSI is not set
522# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 532# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
523# CONFIG_SCSI_3W_9XXX is not set 533# CONFIG_SCSI_3W_9XXX is not set
524# CONFIG_SCSI_ACARD is not set 534# CONFIG_SCSI_ACARD is not set
@@ -532,6 +542,8 @@ CONFIG_SCSI_LOWLEVEL=y
532# CONFIG_MEGARAID_LEGACY is not set 542# CONFIG_MEGARAID_LEGACY is not set
533# CONFIG_MEGARAID_SAS is not set 543# CONFIG_MEGARAID_SAS is not set
534# CONFIG_SCSI_HPTIOP is not set 544# CONFIG_SCSI_HPTIOP is not set
545# CONFIG_LIBFC is not set
546# CONFIG_FCOE is not set
535# CONFIG_SCSI_DMX3191D is not set 547# CONFIG_SCSI_DMX3191D is not set
536# CONFIG_SCSI_FUTURE_DOMAIN is not set 548# CONFIG_SCSI_FUTURE_DOMAIN is not set
537# CONFIG_SCSI_IPS is not set 549# CONFIG_SCSI_IPS is not set
@@ -583,6 +595,7 @@ CONFIG_MII=y
583# CONFIG_NET_VENDOR_3COM is not set 595# CONFIG_NET_VENDOR_3COM is not set
584# CONFIG_SMC91X is not set 596# CONFIG_SMC91X is not set
585# CONFIG_SMC911X is not set 597# CONFIG_SMC911X is not set
598# CONFIG_SMSC911X is not set
586# CONFIG_NET_TULIP is not set 599# CONFIG_NET_TULIP is not set
587# CONFIG_HP100 is not set 600# CONFIG_HP100 is not set
588# CONFIG_IBM_NEW_EMAC_ZMII is not set 601# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -598,7 +611,6 @@ CONFIG_NET_PCI=y
598# CONFIG_ADAPTEC_STARFIRE is not set 611# CONFIG_ADAPTEC_STARFIRE is not set
599# CONFIG_B44 is not set 612# CONFIG_B44 is not set
600# CONFIG_FORCEDETH is not set 613# CONFIG_FORCEDETH is not set
601# CONFIG_EEPRO100 is not set
602# CONFIG_E100 is not set 614# CONFIG_E100 is not set
603# CONFIG_FEALNX is not set 615# CONFIG_FEALNX is not set
604# CONFIG_NATSEMI is not set 616# CONFIG_NATSEMI is not set
@@ -608,6 +620,7 @@ CONFIG_8139CP=y
608# CONFIG_R6040 is not set 620# CONFIG_R6040 is not set
609# CONFIG_SIS900 is not set 621# CONFIG_SIS900 is not set
610# CONFIG_EPIC100 is not set 622# CONFIG_EPIC100 is not set
623# CONFIG_SMSC9420 is not set
611# CONFIG_SUNDANCE is not set 624# CONFIG_SUNDANCE is not set
612# CONFIG_TLAN is not set 625# CONFIG_TLAN is not set
613# CONFIG_VIA_RHINE is not set 626# CONFIG_VIA_RHINE is not set
@@ -636,6 +649,7 @@ CONFIG_NETDEV_1000=y
636# CONFIG_JME is not set 649# CONFIG_JME is not set
637CONFIG_NETDEV_10000=y 650CONFIG_NETDEV_10000=y
638# CONFIG_CHELSIO_T1 is not set 651# CONFIG_CHELSIO_T1 is not set
652CONFIG_CHELSIO_T3_DEPENDS=y
639# CONFIG_CHELSIO_T3 is not set 653# CONFIG_CHELSIO_T3 is not set
640# CONFIG_ENIC is not set 654# CONFIG_ENIC is not set
641# CONFIG_IXGBE is not set 655# CONFIG_IXGBE is not set
@@ -644,6 +658,7 @@ CONFIG_NETDEV_10000=y
644# CONFIG_MYRI10GE is not set 658# CONFIG_MYRI10GE is not set
645# CONFIG_NETXEN_NIC is not set 659# CONFIG_NETXEN_NIC is not set
646# CONFIG_NIU is not set 660# CONFIG_NIU is not set
661# CONFIG_MLX4_EN is not set
647# CONFIG_MLX4_CORE is not set 662# CONFIG_MLX4_CORE is not set
648# CONFIG_TEHUTI is not set 663# CONFIG_TEHUTI is not set
649# CONFIG_BNX2X is not set 664# CONFIG_BNX2X is not set
@@ -734,6 +749,7 @@ CONFIG_SERIAL_CORE=y
734CONFIG_SERIAL_CORE_CONSOLE=y 749CONFIG_SERIAL_CORE_CONSOLE=y
735# CONFIG_SERIAL_JSM is not set 750# CONFIG_SERIAL_JSM is not set
736CONFIG_UNIX98_PTYS=y 751CONFIG_UNIX98_PTYS=y
752# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
737CONFIG_LEGACY_PTYS=y 753CONFIG_LEGACY_PTYS=y
738CONFIG_LEGACY_PTY_COUNT=256 754CONFIG_LEGACY_PTY_COUNT=256
739# CONFIG_IPMI_HANDLER is not set 755# CONFIG_IPMI_HANDLER is not set
@@ -782,11 +798,11 @@ CONFIG_SH_WDT=m
782# 798#
783# CONFIG_PCIPCWATCHDOG is not set 799# CONFIG_PCIPCWATCHDOG is not set
784# CONFIG_WDTPCI is not set 800# CONFIG_WDTPCI is not set
801CONFIG_SSB_POSSIBLE=y
785 802
786# 803#
787# Sonics Silicon Backplane 804# Sonics Silicon Backplane
788# 805#
789CONFIG_SSB_POSSIBLE=y
790# CONFIG_SSB is not set 806# CONFIG_SSB is not set
791 807
792# 808#
@@ -796,7 +812,7 @@ CONFIG_SSB_POSSIBLE=y
796# CONFIG_MFD_SM501 is not set 812# CONFIG_MFD_SM501 is not set
797# CONFIG_HTC_PASIC3 is not set 813# CONFIG_HTC_PASIC3 is not set
798# CONFIG_MFD_TMIO is not set 814# CONFIG_MFD_TMIO is not set
799# CONFIG_MFD_WM8400 is not set 815# CONFIG_REGULATOR is not set
800 816
801# 817#
802# Multimedia devices 818# Multimedia devices
@@ -856,9 +872,10 @@ CONFIG_USB_ARCH_HAS_EHCI=y
856# 872#
857 873
858# 874#
859# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 875# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
860# 876#
861# CONFIG_USB_GADGET is not set 877# CONFIG_USB_GADGET is not set
878# CONFIG_UWB is not set
862# CONFIG_MMC is not set 879# CONFIG_MMC is not set
863# CONFIG_MEMSTICK is not set 880# CONFIG_MEMSTICK is not set
864# CONFIG_NEW_LEDS is not set 881# CONFIG_NEW_LEDS is not set
@@ -883,6 +900,7 @@ CONFIG_EXT3_FS_POSIX_ACL=y
883# CONFIG_EXT3_FS_SECURITY is not set 900# CONFIG_EXT3_FS_SECURITY is not set
884# CONFIG_EXT4_FS is not set 901# CONFIG_EXT4_FS is not set
885CONFIG_JBD=y 902CONFIG_JBD=y
903# CONFIG_JBD_DEBUG is not set
886CONFIG_FS_MBCACHE=y 904CONFIG_FS_MBCACHE=y
887# CONFIG_REISERFS_FS is not set 905# CONFIG_REISERFS_FS is not set
888# CONFIG_JFS_FS is not set 906# CONFIG_JFS_FS is not set
@@ -930,10 +948,7 @@ CONFIG_TMPFS=y
930# CONFIG_HUGETLBFS is not set 948# CONFIG_HUGETLBFS is not set
931# CONFIG_HUGETLB_PAGE is not set 949# CONFIG_HUGETLB_PAGE is not set
932# CONFIG_CONFIGFS_FS is not set 950# CONFIG_CONFIGFS_FS is not set
933 951CONFIG_MISC_FILESYSTEMS=y
934#
935# Miscellaneous filesystems
936#
937# CONFIG_ADFS_FS is not set 952# CONFIG_ADFS_FS is not set
938# CONFIG_AFFS_FS is not set 953# CONFIG_AFFS_FS is not set
939# CONFIG_HFS_FS is not set 954# CONFIG_HFS_FS is not set
@@ -1048,21 +1063,31 @@ CONFIG_ENABLE_MUST_CHECK=y
1048CONFIG_FRAME_WARN=1024 1063CONFIG_FRAME_WARN=1024
1049# CONFIG_MAGIC_SYSRQ is not set 1064# CONFIG_MAGIC_SYSRQ is not set
1050# CONFIG_UNUSED_SYMBOLS is not set 1065# CONFIG_UNUSED_SYMBOLS is not set
1051# CONFIG_DEBUG_FS is not set 1066CONFIG_DEBUG_FS=y
1052# CONFIG_HEADERS_CHECK is not set 1067# CONFIG_HEADERS_CHECK is not set
1053# CONFIG_DEBUG_KERNEL is not set 1068# CONFIG_DEBUG_KERNEL is not set
1069CONFIG_STACKTRACE=y
1054# CONFIG_DEBUG_BUGVERBOSE is not set 1070# CONFIG_DEBUG_BUGVERBOSE is not set
1055# CONFIG_DEBUG_MEMORY_INIT is not set 1071# CONFIG_DEBUG_MEMORY_INIT is not set
1056# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1072# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1057# CONFIG_LATENCYTOP is not set 1073# CONFIG_LATENCYTOP is not set
1058CONFIG_NOP_TRACER=y 1074CONFIG_NOP_TRACER=y
1059CONFIG_HAVE_FTRACE=y 1075CONFIG_HAVE_FUNCTION_TRACER=y
1076CONFIG_HAVE_DYNAMIC_FTRACE=y
1077CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1078CONFIG_RING_BUFFER=y
1079CONFIG_TRACING=y
1080
1081#
1082# Tracers
1083#
1060# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1084# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1061# CONFIG_SAMPLES is not set 1085# CONFIG_SAMPLES is not set
1086CONFIG_HAVE_ARCH_KGDB=y
1062CONFIG_SH_STANDARD_BIOS=y 1087CONFIG_SH_STANDARD_BIOS=y
1063# CONFIG_EARLY_SCIF_CONSOLE is not set 1088# CONFIG_EARLY_SCIF_CONSOLE is not set
1064# CONFIG_EARLY_PRINTK is not set 1089# CONFIG_EARLY_PRINTK is not set
1065# CONFIG_SH_KGDB is not set 1090# CONFIG_MORE_COMPILE_OPTIONS is not set
1066 1091
1067# 1092#
1068# Security options 1093# Security options
@@ -1078,11 +1103,15 @@ CONFIG_CRYPTO=y
1078# 1103#
1079# CONFIG_CRYPTO_FIPS is not set 1104# CONFIG_CRYPTO_FIPS is not set
1080CONFIG_CRYPTO_ALGAPI=y 1105CONFIG_CRYPTO_ALGAPI=y
1081CONFIG_CRYPTO_AEAD=y 1106CONFIG_CRYPTO_ALGAPI2=y
1107CONFIG_CRYPTO_AEAD2=y
1082CONFIG_CRYPTO_BLKCIPHER=y 1108CONFIG_CRYPTO_BLKCIPHER=y
1109CONFIG_CRYPTO_BLKCIPHER2=y
1083CONFIG_CRYPTO_HASH=y 1110CONFIG_CRYPTO_HASH=y
1084CONFIG_CRYPTO_RNG=y 1111CONFIG_CRYPTO_HASH2=y
1112CONFIG_CRYPTO_RNG2=y
1085CONFIG_CRYPTO_MANAGER=y 1113CONFIG_CRYPTO_MANAGER=y
1114CONFIG_CRYPTO_MANAGER2=y
1086# CONFIG_CRYPTO_GF128MUL is not set 1115# CONFIG_CRYPTO_GF128MUL is not set
1087# CONFIG_CRYPTO_NULL is not set 1116# CONFIG_CRYPTO_NULL is not set
1088# CONFIG_CRYPTO_CRYPTD is not set 1117# CONFIG_CRYPTO_CRYPTD is not set
@@ -1166,6 +1195,7 @@ CONFIG_CRYPTO_HW=y
1166# Library routines 1195# Library routines
1167# 1196#
1168CONFIG_BITREVERSE=y 1197CONFIG_BITREVERSE=y
1198CONFIG_GENERIC_FIND_LAST_BIT=y
1169CONFIG_CRC_CCITT=y 1199CONFIG_CRC_CCITT=y
1170# CONFIG_CRC16 is not set 1200# CONFIG_CRC16 is not set
1171# CONFIG_CRC_T10DIF is not set 1201# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/sh7710voipgw_defconfig b/arch/sh/configs/sh7710voipgw_defconfig
index 9a768b28adcb..1b869f452ad1 100644
--- a/arch/sh/configs/sh7710voipgw_defconfig
+++ b/arch/sh/configs/sh7710voipgw_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:35:18 2008 4# Fri Jan 9 18:00:31 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -74,12 +76,10 @@ CONFIG_EVENTFD=y
74# CONFIG_SHMEM is not set 76# CONFIG_SHMEM is not set
75CONFIG_AIO=y 77CONFIG_AIO=y
76CONFIG_VM_EVENT_COUNTERS=y 78CONFIG_VM_EVENT_COUNTERS=y
77CONFIG_PCI_QUIRKS=y
78CONFIG_SLAB=y 79CONFIG_SLAB=y
79# CONFIG_SLUB is not set 80# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set 81# CONFIG_SLOB is not set
81# CONFIG_PROFILING is not set 82# CONFIG_PROFILING is not set
82# CONFIG_MARKERS is not set
83CONFIG_HAVE_OPROFILE=y 83CONFIG_HAVE_OPROFILE=y
84# CONFIG_KPROBES is not set 84# CONFIG_KPROBES is not set
85CONFIG_HAVE_IOREMAP_PROT=y 85CONFIG_HAVE_IOREMAP_PROT=y
@@ -89,7 +89,6 @@ CONFIG_HAVE_ARCH_TRACEHOOK=y
89CONFIG_HAVE_CLK=y 89CONFIG_HAVE_CLK=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y 90CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 91CONFIG_SLABINFO=y
92CONFIG_TINY_SHMEM=y
93CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
94CONFIG_MODULES=y 93CONFIG_MODULES=y
95# CONFIG_MODULE_FORCE_LOAD is not set 94# CONFIG_MODULE_FORCE_LOAD is not set
@@ -97,11 +96,9 @@ CONFIG_MODULE_UNLOAD=y
97CONFIG_MODULE_FORCE_UNLOAD=y 96CONFIG_MODULE_FORCE_UNLOAD=y
98# CONFIG_MODVERSIONS is not set 97# CONFIG_MODVERSIONS is not set
99# CONFIG_MODULE_SRCVERSION_ALL is not set 98# CONFIG_MODULE_SRCVERSION_ALL is not set
100CONFIG_KMOD=y
101CONFIG_BLOCK=y 99CONFIG_BLOCK=y
102# CONFIG_LBD is not set 100# CONFIG_LBD is not set
103# CONFIG_BLK_DEV_IO_TRACE is not set 101# CONFIG_BLK_DEV_IO_TRACE is not set
104# CONFIG_LSF is not set
105# CONFIG_BLK_DEV_BSG is not set 102# CONFIG_BLK_DEV_BSG is not set
106# CONFIG_BLK_DEV_INTEGRITY is not set 103# CONFIG_BLK_DEV_INTEGRITY is not set
107 104
@@ -118,6 +115,10 @@ CONFIG_DEFAULT_DEADLINE=y
118# CONFIG_DEFAULT_NOOP is not set 115# CONFIG_DEFAULT_NOOP is not set
119CONFIG_DEFAULT_IOSCHED="deadline" 116CONFIG_DEFAULT_IOSCHED="deadline"
120CONFIG_CLASSIC_RCU=y 117CONFIG_CLASSIC_RCU=y
118# CONFIG_TREE_RCU is not set
119# CONFIG_PREEMPT_RCU is not set
120# CONFIG_TREE_RCU_TRACE is not set
121# CONFIG_PREEMPT_RCU_TRACE is not set
121# CONFIG_FREEZER is not set 122# CONFIG_FREEZER is not set
122 123
123# 124#
@@ -125,6 +126,7 @@ CONFIG_CLASSIC_RCU=y
125# 126#
126CONFIG_CPU_SH3=y 127CONFIG_CPU_SH3=y
127# CONFIG_CPU_SUBTYPE_SH7619 is not set 128# CONFIG_CPU_SUBTYPE_SH7619 is not set
129# CONFIG_CPU_SUBTYPE_SH7201 is not set
128# CONFIG_CPU_SUBTYPE_SH7203 is not set 130# CONFIG_CPU_SUBTYPE_SH7203 is not set
129# CONFIG_CPU_SUBTYPE_SH7206 is not set 131# CONFIG_CPU_SUBTYPE_SH7206 is not set
130# CONFIG_CPU_SUBTYPE_SH7263 is not set 132# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -188,7 +190,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
188CONFIG_SPARSEMEM_STATIC=y 190CONFIG_SPARSEMEM_STATIC=y
189CONFIG_PAGEFLAGS_EXTENDED=y 191CONFIG_PAGEFLAGS_EXTENDED=y
190CONFIG_SPLIT_PTLOCK_CPUS=4 192CONFIG_SPLIT_PTLOCK_CPUS=4
191# CONFIG_RESOURCES_64BIT is not set
192# CONFIG_PHYS_ADDR_T_64BIT is not set 193# CONFIG_PHYS_ADDR_T_64BIT is not set
193CONFIG_ZONE_DMA_FLAG=0 194CONFIG_ZONE_DMA_FLAG=0
194CONFIG_NR_QUICK=2 195CONFIG_NR_QUICK=2
@@ -287,11 +288,18 @@ CONFIG_BINFMT_ELF=y
287# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 288# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
288# CONFIG_HAVE_AOUT is not set 289# CONFIG_HAVE_AOUT is not set
289# CONFIG_BINFMT_MISC is not set 290# CONFIG_BINFMT_MISC is not set
291
292#
293# Power management options (EXPERIMENTAL)
294#
295# CONFIG_PM is not set
296# CONFIG_CPU_IDLE is not set
290CONFIG_NET=y 297CONFIG_NET=y
291 298
292# 299#
293# Networking options 300# Networking options
294# 301#
302CONFIG_COMPAT_NET_DEV_OPS=y
295CONFIG_PACKET=y 303CONFIG_PACKET=y
296# CONFIG_PACKET_MMAP is not set 304# CONFIG_PACKET_MMAP is not set
297CONFIG_UNIX=y 305CONFIG_UNIX=y
@@ -378,6 +386,7 @@ CONFIG_NET_SCH_CBQ=y
378# CONFIG_NET_SCH_GRED is not set 386# CONFIG_NET_SCH_GRED is not set
379# CONFIG_NET_SCH_DSMARK is not set 387# CONFIG_NET_SCH_DSMARK is not set
380# CONFIG_NET_SCH_NETEM is not set 388# CONFIG_NET_SCH_NETEM is not set
389# CONFIG_NET_SCH_DRR is not set
381 390
382# 391#
383# Classification 392# Classification
@@ -398,6 +407,7 @@ CONFIG_NET_CLS_U32=y
398# CONFIG_NET_CLS_ACT is not set 407# CONFIG_NET_CLS_ACT is not set
399# CONFIG_NET_CLS_IND is not set 408# CONFIG_NET_CLS_IND is not set
400CONFIG_NET_SCH_FIFO=y 409CONFIG_NET_SCH_FIFO=y
410# CONFIG_DCB is not set
401 411
402# 412#
403# Network testing 413# Network testing
@@ -413,8 +423,8 @@ CONFIG_WIRELESS=y
413# CONFIG_CFG80211 is not set 423# CONFIG_CFG80211 is not set
414# CONFIG_WIRELESS_OLD_REGULATORY is not set 424# CONFIG_WIRELESS_OLD_REGULATORY is not set
415# CONFIG_WIRELESS_EXT is not set 425# CONFIG_WIRELESS_EXT is not set
426# CONFIG_LIB80211 is not set
416# CONFIG_MAC80211 is not set 427# CONFIG_MAC80211 is not set
417# CONFIG_IEEE80211 is not set
418# CONFIG_RFKILL is not set 428# CONFIG_RFKILL is not set
419# CONFIG_NET_9P is not set 429# CONFIG_NET_9P is not set
420 430
@@ -519,6 +529,7 @@ CONFIG_BLK_DEV=y
519CONFIG_MISC_DEVICES=y 529CONFIG_MISC_DEVICES=y
520# CONFIG_EEPROM_93CX6 is not set 530# CONFIG_EEPROM_93CX6 is not set
521# CONFIG_ENCLOSURE_SERVICES is not set 531# CONFIG_ENCLOSURE_SERVICES is not set
532# CONFIG_C2PORT is not set
522CONFIG_HAVE_IDE=y 533CONFIG_HAVE_IDE=y
523# CONFIG_IDE is not set 534# CONFIG_IDE is not set
524 535
@@ -546,6 +557,7 @@ CONFIG_NET_ETHERNET=y
546# CONFIG_SH_ETH is not set 557# CONFIG_SH_ETH is not set
547# CONFIG_SMC91X is not set 558# CONFIG_SMC91X is not set
548# CONFIG_SMC911X is not set 559# CONFIG_SMC911X is not set
560# CONFIG_SMSC911X is not set
549# CONFIG_IBM_NEW_EMAC_ZMII is not set 561# CONFIG_IBM_NEW_EMAC_ZMII is not set
550# CONFIG_IBM_NEW_EMAC_RGMII is not set 562# CONFIG_IBM_NEW_EMAC_RGMII is not set
551# CONFIG_IBM_NEW_EMAC_TAH is not set 563# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -638,11 +650,11 @@ CONFIG_HW_RANDOM=y
638# CONFIG_HWMON is not set 650# CONFIG_HWMON is not set
639CONFIG_THERMAL=y 651CONFIG_THERMAL=y
640# CONFIG_WATCHDOG is not set 652# CONFIG_WATCHDOG is not set
653CONFIG_SSB_POSSIBLE=y
641 654
642# 655#
643# Sonics Silicon Backplane 656# Sonics Silicon Backplane
644# 657#
645CONFIG_SSB_POSSIBLE=y
646# CONFIG_SSB is not set 658# CONFIG_SSB is not set
647 659
648# 660#
@@ -652,7 +664,7 @@ CONFIG_SSB_POSSIBLE=y
652# CONFIG_MFD_SM501 is not set 664# CONFIG_MFD_SM501 is not set
653# CONFIG_HTC_PASIC3 is not set 665# CONFIG_HTC_PASIC3 is not set
654# CONFIG_MFD_TMIO is not set 666# CONFIG_MFD_TMIO is not set
655# CONFIG_MFD_WM8400 is not set 667# CONFIG_REGULATOR is not set
656 668
657# 669#
658# Multimedia devices 670# Multimedia devices
@@ -706,7 +718,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
706# 718#
707 719
708# 720#
709# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 721# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
710# 722#
711# CONFIG_USB_GADGET is not set 723# CONFIG_USB_GADGET is not set
712# CONFIG_MMC is not set 724# CONFIG_MMC is not set
@@ -763,10 +775,7 @@ CONFIG_TMPFS=y
763# CONFIG_HUGETLBFS is not set 775# CONFIG_HUGETLBFS is not set
764# CONFIG_HUGETLB_PAGE is not set 776# CONFIG_HUGETLB_PAGE is not set
765# CONFIG_CONFIGFS_FS is not set 777# CONFIG_CONFIGFS_FS is not set
766 778CONFIG_MISC_FILESYSTEMS=y
767#
768# Miscellaneous filesystems
769#
770# CONFIG_ADFS_FS is not set 779# CONFIG_ADFS_FS is not set
771# CONFIG_AFFS_FS is not set 780# CONFIG_AFFS_FS is not set
772# CONFIG_HFS_FS is not set 781# CONFIG_HFS_FS is not set
@@ -828,13 +837,19 @@ CONFIG_DEBUG_FS=y
828# CONFIG_DEBUG_MEMORY_INIT is not set 837# CONFIG_DEBUG_MEMORY_INIT is not set
829# CONFIG_RCU_CPU_STALL_DETECTOR is not set 838# CONFIG_RCU_CPU_STALL_DETECTOR is not set
830# CONFIG_LATENCYTOP is not set 839# CONFIG_LATENCYTOP is not set
831CONFIG_NOP_TRACER=y 840CONFIG_HAVE_FUNCTION_TRACER=y
832CONFIG_HAVE_FTRACE=y 841CONFIG_HAVE_DYNAMIC_FTRACE=y
842CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
843
844#
845# Tracers
846#
833# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 847# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
834# CONFIG_SAMPLES is not set 848# CONFIG_SAMPLES is not set
849CONFIG_HAVE_ARCH_KGDB=y
835# CONFIG_SH_STANDARD_BIOS is not set 850# CONFIG_SH_STANDARD_BIOS is not set
836# CONFIG_EARLY_SCIF_CONSOLE is not set 851# CONFIG_EARLY_SCIF_CONSOLE is not set
837# CONFIG_SH_KGDB is not set 852# CONFIG_MORE_COMPILE_OPTIONS is not set
838 853
839# 854#
840# Security options 855# Security options
@@ -850,6 +865,7 @@ CONFIG_CRYPTO=y
850# 865#
851# CONFIG_CRYPTO_FIPS is not set 866# CONFIG_CRYPTO_FIPS is not set
852# CONFIG_CRYPTO_MANAGER is not set 867# CONFIG_CRYPTO_MANAGER is not set
868# CONFIG_CRYPTO_MANAGER2 is not set
853# CONFIG_CRYPTO_GF128MUL is not set 869# CONFIG_CRYPTO_GF128MUL is not set
854# CONFIG_CRYPTO_NULL is not set 870# CONFIG_CRYPTO_NULL is not set
855# CONFIG_CRYPTO_CRYPTD is not set 871# CONFIG_CRYPTO_CRYPTD is not set
@@ -932,6 +948,7 @@ CONFIG_CRYPTO_HW=y
932# Library routines 948# Library routines
933# 949#
934CONFIG_BITREVERSE=y 950CONFIG_BITREVERSE=y
951CONFIG_GENERIC_FIND_LAST_BIT=y
935# CONFIG_CRC_CCITT is not set 952# CONFIG_CRC_CCITT is not set
936# CONFIG_CRC16 is not set 953# CONFIG_CRC16 is not set
937# CONFIG_CRC_T10DIF is not set 954# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/sh7763rdp_defconfig b/arch/sh/configs/sh7763rdp_defconfig
index 6a77f691fb87..ba33aca75af6 100644
--- a/arch/sh/configs/sh7763rdp_defconfig
+++ b/arch/sh/configs/sh7763rdp_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:37:12 2008 4# Fri Jan 9 18:02:28 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -79,11 +81,11 @@ CONFIG_EVENTFD=y
79CONFIG_SHMEM=y 81CONFIG_SHMEM=y
80CONFIG_AIO=y 82CONFIG_AIO=y
81CONFIG_VM_EVENT_COUNTERS=y 83CONFIG_VM_EVENT_COUNTERS=y
82CONFIG_PCI_QUIRKS=y
83CONFIG_SLAB=y 84CONFIG_SLAB=y
84# CONFIG_SLUB is not set 85# CONFIG_SLUB is not set
85# CONFIG_SLOB is not set 86# CONFIG_SLOB is not set
86CONFIG_PROFILING=y 87CONFIG_PROFILING=y
88CONFIG_TRACEPOINTS=y
87# CONFIG_MARKERS is not set 89# CONFIG_MARKERS is not set
88CONFIG_OPROFILE=y 90CONFIG_OPROFILE=y
89CONFIG_HAVE_OPROFILE=y 91CONFIG_HAVE_OPROFILE=y
@@ -96,18 +98,15 @@ CONFIG_HAVE_CLK=y
96CONFIG_HAVE_GENERIC_DMA_COHERENT=y 98CONFIG_HAVE_GENERIC_DMA_COHERENT=y
97CONFIG_SLABINFO=y 99CONFIG_SLABINFO=y
98CONFIG_RT_MUTEXES=y 100CONFIG_RT_MUTEXES=y
99# CONFIG_TINY_SHMEM is not set
100CONFIG_BASE_SMALL=0 101CONFIG_BASE_SMALL=0
101CONFIG_MODULES=y 102CONFIG_MODULES=y
102# CONFIG_MODULE_FORCE_LOAD is not set 103# CONFIG_MODULE_FORCE_LOAD is not set
103# CONFIG_MODULE_UNLOAD is not set 104# CONFIG_MODULE_UNLOAD is not set
104# CONFIG_MODVERSIONS is not set 105# CONFIG_MODVERSIONS is not set
105# CONFIG_MODULE_SRCVERSION_ALL is not set 106# CONFIG_MODULE_SRCVERSION_ALL is not set
106CONFIG_KMOD=y
107CONFIG_BLOCK=y 107CONFIG_BLOCK=y
108# CONFIG_LBD is not set 108# CONFIG_LBD is not set
109# CONFIG_BLK_DEV_IO_TRACE is not set 109# CONFIG_BLK_DEV_IO_TRACE is not set
110# CONFIG_LSF is not set
111# CONFIG_BLK_DEV_BSG is not set 110# CONFIG_BLK_DEV_BSG is not set
112# CONFIG_BLK_DEV_INTEGRITY is not set 111# CONFIG_BLK_DEV_INTEGRITY is not set
113 112
@@ -124,6 +123,10 @@ CONFIG_DEFAULT_AS=y
124# CONFIG_DEFAULT_NOOP is not set 123# CONFIG_DEFAULT_NOOP is not set
125CONFIG_DEFAULT_IOSCHED="anticipatory" 124CONFIG_DEFAULT_IOSCHED="anticipatory"
126CONFIG_CLASSIC_RCU=y 125CONFIG_CLASSIC_RCU=y
126# CONFIG_TREE_RCU is not set
127# CONFIG_PREEMPT_RCU is not set
128# CONFIG_TREE_RCU_TRACE is not set
129# CONFIG_PREEMPT_RCU_TRACE is not set
127# CONFIG_FREEZER is not set 130# CONFIG_FREEZER is not set
128 131
129# 132#
@@ -132,6 +135,7 @@ CONFIG_CLASSIC_RCU=y
132CONFIG_CPU_SH4=y 135CONFIG_CPU_SH4=y
133CONFIG_CPU_SH4A=y 136CONFIG_CPU_SH4A=y
134# CONFIG_CPU_SUBTYPE_SH7619 is not set 137# CONFIG_CPU_SUBTYPE_SH7619 is not set
138# CONFIG_CPU_SUBTYPE_SH7201 is not set
135# CONFIG_CPU_SUBTYPE_SH7203 is not set 139# CONFIG_CPU_SUBTYPE_SH7203 is not set
136# CONFIG_CPU_SUBTYPE_SH7206 is not set 140# CONFIG_CPU_SUBTYPE_SH7206 is not set
137# CONFIG_CPU_SUBTYPE_SH7263 is not set 141# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -199,7 +203,6 @@ CONFIG_SPARSEMEM_STATIC=y
199CONFIG_PAGEFLAGS_EXTENDED=y 203CONFIG_PAGEFLAGS_EXTENDED=y
200CONFIG_SPLIT_PTLOCK_CPUS=4 204CONFIG_SPLIT_PTLOCK_CPUS=4
201CONFIG_MIGRATION=y 205CONFIG_MIGRATION=y
202# CONFIG_RESOURCES_64BIT is not set
203# CONFIG_PHYS_ADDR_T_64BIT is not set 206# CONFIG_PHYS_ADDR_T_64BIT is not set
204CONFIG_ZONE_DMA_FLAG=0 207CONFIG_ZONE_DMA_FLAG=0
205CONFIG_NR_QUICK=2 208CONFIG_NR_QUICK=2
@@ -297,11 +300,19 @@ CONFIG_BINFMT_ELF=y
297# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 300# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
298# CONFIG_HAVE_AOUT is not set 301# CONFIG_HAVE_AOUT is not set
299# CONFIG_BINFMT_MISC is not set 302# CONFIG_BINFMT_MISC is not set
303
304#
305# Power management options (EXPERIMENTAL)
306#
307# CONFIG_PM is not set
308# CONFIG_CPU_IDLE is not set
300CONFIG_NET=y 309CONFIG_NET=y
301 310
302# 311#
303# Networking options 312# Networking options
304# 313#
314# CONFIG_NET_NS is not set
315CONFIG_COMPAT_NET_DEV_OPS=y
305CONFIG_PACKET=y 316CONFIG_PACKET=y
306# CONFIG_PACKET_MMAP is not set 317# CONFIG_PACKET_MMAP is not set
307CONFIG_UNIX=y 318CONFIG_UNIX=y
@@ -357,6 +368,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
357# CONFIG_ECONET is not set 368# CONFIG_ECONET is not set
358# CONFIG_WAN_ROUTER is not set 369# CONFIG_WAN_ROUTER is not set
359# CONFIG_NET_SCHED is not set 370# CONFIG_NET_SCHED is not set
371# CONFIG_DCB is not set
360 372
361# 373#
362# Network testing 374# Network testing
@@ -373,8 +385,8 @@ CONFIG_WIRELESS=y
373# CONFIG_WIRELESS_OLD_REGULATORY is not set 385# CONFIG_WIRELESS_OLD_REGULATORY is not set
374CONFIG_WIRELESS_EXT=y 386CONFIG_WIRELESS_EXT=y
375CONFIG_WIRELESS_EXT_SYSFS=y 387CONFIG_WIRELESS_EXT_SYSFS=y
388# CONFIG_LIB80211 is not set
376# CONFIG_MAC80211 is not set 389# CONFIG_MAC80211 is not set
377# CONFIG_IEEE80211 is not set
378# CONFIG_RFKILL is not set 390# CONFIG_RFKILL is not set
379# CONFIG_NET_9P is not set 391# CONFIG_NET_9P is not set
380 392
@@ -529,6 +541,7 @@ CONFIG_SCSI_WAIT_SCAN=m
529# CONFIG_SCSI_SRP_ATTRS is not set 541# CONFIG_SCSI_SRP_ATTRS is not set
530CONFIG_SCSI_LOWLEVEL=y 542CONFIG_SCSI_LOWLEVEL=y
531# CONFIG_ISCSI_TCP is not set 543# CONFIG_ISCSI_TCP is not set
544# CONFIG_LIBFC is not set
532# CONFIG_SCSI_DEBUG is not set 545# CONFIG_SCSI_DEBUG is not set
533# CONFIG_SCSI_DH is not set 546# CONFIG_SCSI_DH is not set
534# CONFIG_ATA is not set 547# CONFIG_ATA is not set
@@ -555,6 +568,9 @@ CONFIG_PHYLIB=y
555# CONFIG_BROADCOM_PHY is not set 568# CONFIG_BROADCOM_PHY is not set
556# CONFIG_ICPLUS_PHY is not set 569# CONFIG_ICPLUS_PHY is not set
557# CONFIG_REALTEK_PHY is not set 570# CONFIG_REALTEK_PHY is not set
571# CONFIG_NATIONAL_PHY is not set
572# CONFIG_STE10XP is not set
573# CONFIG_LSI_ET1011C_PHY is not set
558# CONFIG_FIXED_PHY is not set 574# CONFIG_FIXED_PHY is not set
559CONFIG_MDIO_BITBANG=y 575CONFIG_MDIO_BITBANG=y
560CONFIG_NET_ETHERNET=y 576CONFIG_NET_ETHERNET=y
@@ -564,6 +580,7 @@ CONFIG_MII=y
564CONFIG_SH_ETH=y 580CONFIG_SH_ETH=y
565# CONFIG_SMC91X is not set 581# CONFIG_SMC91X is not set
566# CONFIG_SMC911X is not set 582# CONFIG_SMC911X is not set
583# CONFIG_SMSC911X is not set
567# CONFIG_IBM_NEW_EMAC_ZMII is not set 584# CONFIG_IBM_NEW_EMAC_ZMII is not set
568# CONFIG_IBM_NEW_EMAC_RGMII is not set 585# CONFIG_IBM_NEW_EMAC_RGMII is not set
569# CONFIG_IBM_NEW_EMAC_TAH is not set 586# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -655,6 +672,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
655CONFIG_SERIAL_CORE=y 672CONFIG_SERIAL_CORE=y
656CONFIG_SERIAL_CORE_CONSOLE=y 673CONFIG_SERIAL_CORE_CONSOLE=y
657CONFIG_UNIX98_PTYS=y 674CONFIG_UNIX98_PTYS=y
675# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
658CONFIG_LEGACY_PTYS=y 676CONFIG_LEGACY_PTYS=y
659CONFIG_LEGACY_PTY_COUNT=256 677CONFIG_LEGACY_PTY_COUNT=256
660# CONFIG_IPMI_HANDLER is not set 678# CONFIG_IPMI_HANDLER is not set
@@ -670,11 +688,11 @@ CONFIG_HW_RANDOM=y
670# CONFIG_THERMAL is not set 688# CONFIG_THERMAL is not set
671# CONFIG_THERMAL_HWMON is not set 689# CONFIG_THERMAL_HWMON is not set
672# CONFIG_WATCHDOG is not set 690# CONFIG_WATCHDOG is not set
691CONFIG_SSB_POSSIBLE=y
673 692
674# 693#
675# Sonics Silicon Backplane 694# Sonics Silicon Backplane
676# 695#
677CONFIG_SSB_POSSIBLE=y
678# CONFIG_SSB is not set 696# CONFIG_SSB is not set
679 697
680# 698#
@@ -684,7 +702,7 @@ CONFIG_SSB_POSSIBLE=y
684# CONFIG_MFD_SM501 is not set 702# CONFIG_MFD_SM501 is not set
685# CONFIG_HTC_PASIC3 is not set 703# CONFIG_HTC_PASIC3 is not set
686# CONFIG_MFD_TMIO is not set 704# CONFIG_MFD_TMIO is not set
687# CONFIG_MFD_WM8400 is not set 705# CONFIG_REGULATOR is not set
688 706
689# 707#
690# Multimedia devices 708# Multimedia devices
@@ -737,6 +755,7 @@ CONFIG_FB_BOTH_ENDIAN=y
737CONFIG_FB_SH7760=y 755CONFIG_FB_SH7760=y
738# CONFIG_FB_VIRTUAL is not set 756# CONFIG_FB_VIRTUAL is not set
739# CONFIG_FB_METRONOME is not set 757# CONFIG_FB_METRONOME is not set
758# CONFIG_FB_MB862XX is not set
740# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 759# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
741 760
742# 761#
@@ -781,19 +800,21 @@ CONFIG_USB_DEVICE_CLASS=y
781# CONFIG_USB_OTG_WHITELIST is not set 800# CONFIG_USB_OTG_WHITELIST is not set
782# CONFIG_USB_OTG_BLACKLIST_HUB is not set 801# CONFIG_USB_OTG_BLACKLIST_HUB is not set
783CONFIG_USB_MON=y 802CONFIG_USB_MON=y
803# CONFIG_USB_WUSB is not set
804# CONFIG_USB_WUSB_CBAF is not set
784 805
785# 806#
786# USB Host Controller Drivers 807# USB Host Controller Drivers
787# 808#
788# CONFIG_USB_C67X00_HCD is not set 809# CONFIG_USB_C67X00_HCD is not set
789# CONFIG_USB_ISP116X_HCD is not set 810# CONFIG_USB_ISP116X_HCD is not set
790# CONFIG_USB_ISP1760_HCD is not set
791CONFIG_USB_OHCI_HCD=y 811CONFIG_USB_OHCI_HCD=y
792# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 812# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
793# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set 813# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
794CONFIG_USB_OHCI_LITTLE_ENDIAN=y 814CONFIG_USB_OHCI_LITTLE_ENDIAN=y
795# CONFIG_USB_SL811_HCD is not set 815# CONFIG_USB_SL811_HCD is not set
796# CONFIG_USB_R8A66597_HCD is not set 816# CONFIG_USB_R8A66597_HCD is not set
817# CONFIG_USB_HWA_HCD is not set
797 818
798# 819#
799# USB Device Class drivers 820# USB Device Class drivers
@@ -804,11 +825,11 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
804# CONFIG_USB_TMC is not set 825# CONFIG_USB_TMC is not set
805 826
806# 827#
807# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 828# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
808# 829#
809 830
810# 831#
811# may also be needed; see USB_STORAGE Help for more information 832# see USB_STORAGE Help for more information
812# 833#
813CONFIG_USB_STORAGE=y 834CONFIG_USB_STORAGE=y
814# CONFIG_USB_STORAGE_DEBUG is not set 835# CONFIG_USB_STORAGE_DEBUG is not set
@@ -897,6 +918,7 @@ CONFIG_EXT3_FS_XATTR=y
897# CONFIG_EXT3_FS_SECURITY is not set 918# CONFIG_EXT3_FS_SECURITY is not set
898# CONFIG_EXT4_FS is not set 919# CONFIG_EXT4_FS is not set
899CONFIG_JBD=y 920CONFIG_JBD=y
921# CONFIG_JBD_DEBUG is not set
900CONFIG_FS_MBCACHE=y 922CONFIG_FS_MBCACHE=y
901# CONFIG_REISERFS_FS is not set 923# CONFIG_REISERFS_FS is not set
902# CONFIG_JFS_FS is not set 924# CONFIG_JFS_FS is not set
@@ -942,10 +964,7 @@ CONFIG_TMPFS_POSIX_ACL=y
942# CONFIG_HUGETLBFS is not set 964# CONFIG_HUGETLBFS is not set
943# CONFIG_HUGETLB_PAGE is not set 965# CONFIG_HUGETLB_PAGE is not set
944# CONFIG_CONFIGFS_FS is not set 966# CONFIG_CONFIGFS_FS is not set
945 967CONFIG_MISC_FILESYSTEMS=y
946#
947# Miscellaneous filesystems
948#
949# CONFIG_ADFS_FS is not set 968# CONFIG_ADFS_FS is not set
950# CONFIG_AFFS_FS is not set 969# CONFIG_AFFS_FS is not set
951# CONFIG_HFS_FS is not set 970# CONFIG_HFS_FS is not set
@@ -1038,20 +1057,30 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1038CONFIG_FRAME_WARN=1024 1057CONFIG_FRAME_WARN=1024
1039# CONFIG_MAGIC_SYSRQ is not set 1058# CONFIG_MAGIC_SYSRQ is not set
1040# CONFIG_UNUSED_SYMBOLS is not set 1059# CONFIG_UNUSED_SYMBOLS is not set
1041# CONFIG_DEBUG_FS is not set 1060CONFIG_DEBUG_FS=y
1042# CONFIG_HEADERS_CHECK is not set 1061# CONFIG_HEADERS_CHECK is not set
1043# CONFIG_DEBUG_KERNEL is not set 1062# CONFIG_DEBUG_KERNEL is not set
1063CONFIG_STACKTRACE=y
1044# CONFIG_DEBUG_BUGVERBOSE is not set 1064# CONFIG_DEBUG_BUGVERBOSE is not set
1045# CONFIG_DEBUG_MEMORY_INIT is not set 1065# CONFIG_DEBUG_MEMORY_INIT is not set
1046# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1066# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1047# CONFIG_LATENCYTOP is not set 1067# CONFIG_LATENCYTOP is not set
1048CONFIG_NOP_TRACER=y 1068CONFIG_NOP_TRACER=y
1049CONFIG_HAVE_FTRACE=y 1069CONFIG_HAVE_FUNCTION_TRACER=y
1070CONFIG_HAVE_DYNAMIC_FTRACE=y
1071CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1072CONFIG_RING_BUFFER=y
1073CONFIG_TRACING=y
1074
1075#
1076# Tracers
1077#
1050# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1078# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1051# CONFIG_SAMPLES is not set 1079# CONFIG_SAMPLES is not set
1080CONFIG_HAVE_ARCH_KGDB=y
1052# CONFIG_SH_STANDARD_BIOS is not set 1081# CONFIG_SH_STANDARD_BIOS is not set
1053# CONFIG_EARLY_SCIF_CONSOLE is not set 1082# CONFIG_EARLY_SCIF_CONSOLE is not set
1054# CONFIG_SH_KGDB is not set 1083# CONFIG_MORE_COMPILE_OPTIONS is not set
1055 1084
1056# 1085#
1057# Security options 1086# Security options
@@ -1067,6 +1096,7 @@ CONFIG_CRYPTO=y
1067# 1096#
1068# CONFIG_CRYPTO_FIPS is not set 1097# CONFIG_CRYPTO_FIPS is not set
1069# CONFIG_CRYPTO_MANAGER is not set 1098# CONFIG_CRYPTO_MANAGER is not set
1099# CONFIG_CRYPTO_MANAGER2 is not set
1070# CONFIG_CRYPTO_GF128MUL is not set 1100# CONFIG_CRYPTO_GF128MUL is not set
1071# CONFIG_CRYPTO_NULL is not set 1101# CONFIG_CRYPTO_NULL is not set
1072# CONFIG_CRYPTO_CRYPTD is not set 1102# CONFIG_CRYPTO_CRYPTD is not set
@@ -1149,6 +1179,7 @@ CONFIG_CRYPTO_HW=y
1149# Library routines 1179# Library routines
1150# 1180#
1151CONFIG_BITREVERSE=y 1181CONFIG_BITREVERSE=y
1182CONFIG_GENERIC_FIND_LAST_BIT=y
1152# CONFIG_CRC_CCITT is not set 1183# CONFIG_CRC_CCITT is not set
1153# CONFIG_CRC16 is not set 1184# CONFIG_CRC16 is not set
1154CONFIG_CRC_T10DIF=y 1185CONFIG_CRC_T10DIF=y
diff --git a/arch/sh/configs/sh7785lcr_defconfig b/arch/sh/configs/sh7785lcr_defconfig
index 07e33c285b93..7a10164ceddb 100644
--- a/arch/sh/configs/sh7785lcr_defconfig
+++ b/arch/sh/configs/sh7785lcr_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:49:23 2008 4# Fri Jan 9 18:05:18 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_NUMA=y 21CONFIG_SYS_SUPPORTS_NUMA=y
20CONFIG_SYS_SUPPORTS_PCI=y 22CONFIG_SYS_SUPPORTS_PCI=y
21CONFIG_STACKTRACE_SUPPORT=y 23CONFIG_STACKTRACE_SUPPORT=y
@@ -86,7 +88,6 @@ CONFIG_SLAB=y
86# CONFIG_SLUB is not set 88# CONFIG_SLUB is not set
87# CONFIG_SLOB is not set 89# CONFIG_SLOB is not set
88CONFIG_PROFILING=y 90CONFIG_PROFILING=y
89# CONFIG_MARKERS is not set
90# CONFIG_OPROFILE is not set 91# CONFIG_OPROFILE is not set
91CONFIG_HAVE_OPROFILE=y 92CONFIG_HAVE_OPROFILE=y
92# CONFIG_KPROBES is not set 93# CONFIG_KPROBES is not set
@@ -98,7 +99,6 @@ CONFIG_HAVE_CLK=y
98CONFIG_HAVE_GENERIC_DMA_COHERENT=y 99CONFIG_HAVE_GENERIC_DMA_COHERENT=y
99CONFIG_SLABINFO=y 100CONFIG_SLABINFO=y
100CONFIG_RT_MUTEXES=y 101CONFIG_RT_MUTEXES=y
101# CONFIG_TINY_SHMEM is not set
102CONFIG_BASE_SMALL=0 102CONFIG_BASE_SMALL=0
103CONFIG_MODULES=y 103CONFIG_MODULES=y
104# CONFIG_MODULE_FORCE_LOAD is not set 104# CONFIG_MODULE_FORCE_LOAD is not set
@@ -106,11 +106,9 @@ CONFIG_MODULE_UNLOAD=y
106# CONFIG_MODULE_FORCE_UNLOAD is not set 106# CONFIG_MODULE_FORCE_UNLOAD is not set
107# CONFIG_MODVERSIONS is not set 107# CONFIG_MODVERSIONS is not set
108# CONFIG_MODULE_SRCVERSION_ALL is not set 108# CONFIG_MODULE_SRCVERSION_ALL is not set
109CONFIG_KMOD=y
110CONFIG_BLOCK=y 109CONFIG_BLOCK=y
111# CONFIG_LBD is not set 110# CONFIG_LBD is not set
112# CONFIG_BLK_DEV_IO_TRACE is not set 111# CONFIG_BLK_DEV_IO_TRACE is not set
113# CONFIG_LSF is not set
114# CONFIG_BLK_DEV_BSG is not set 112# CONFIG_BLK_DEV_BSG is not set
115# CONFIG_BLK_DEV_INTEGRITY is not set 113# CONFIG_BLK_DEV_INTEGRITY is not set
116 114
@@ -127,6 +125,10 @@ CONFIG_DEFAULT_CFQ=y
127# CONFIG_DEFAULT_NOOP is not set 125# CONFIG_DEFAULT_NOOP is not set
128CONFIG_DEFAULT_IOSCHED="cfq" 126CONFIG_DEFAULT_IOSCHED="cfq"
129CONFIG_CLASSIC_RCU=y 127CONFIG_CLASSIC_RCU=y
128# CONFIG_TREE_RCU is not set
129# CONFIG_PREEMPT_RCU is not set
130# CONFIG_TREE_RCU_TRACE is not set
131# CONFIG_PREEMPT_RCU_TRACE is not set
130# CONFIG_FREEZER is not set 132# CONFIG_FREEZER is not set
131 133
132# 134#
@@ -136,6 +138,7 @@ CONFIG_CPU_SH4=y
136CONFIG_CPU_SH4A=y 138CONFIG_CPU_SH4A=y
137CONFIG_CPU_SHX2=y 139CONFIG_CPU_SHX2=y
138# CONFIG_CPU_SUBTYPE_SH7619 is not set 140# CONFIG_CPU_SUBTYPE_SH7619 is not set
141# CONFIG_CPU_SUBTYPE_SH7201 is not set
139# CONFIG_CPU_SUBTYPE_SH7203 is not set 142# CONFIG_CPU_SUBTYPE_SH7203 is not set
140# CONFIG_CPU_SUBTYPE_SH7206 is not set 143# CONFIG_CPU_SUBTYPE_SH7206 is not set
141# CONFIG_CPU_SUBTYPE_SH7263 is not set 144# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -206,7 +209,6 @@ CONFIG_SPARSEMEM_STATIC=y
206CONFIG_PAGEFLAGS_EXTENDED=y 209CONFIG_PAGEFLAGS_EXTENDED=y
207CONFIG_SPLIT_PTLOCK_CPUS=4 210CONFIG_SPLIT_PTLOCK_CPUS=4
208CONFIG_MIGRATION=y 211CONFIG_MIGRATION=y
209# CONFIG_RESOURCES_64BIT is not set
210# CONFIG_PHYS_ADDR_T_64BIT is not set 212# CONFIG_PHYS_ADDR_T_64BIT is not set
211CONFIG_ZONE_DMA_FLAG=0 213CONFIG_ZONE_DMA_FLAG=0
212CONFIG_NR_QUICK=2 214CONFIG_NR_QUICK=2
@@ -285,7 +287,6 @@ CONFIG_KEXEC=y
285# CONFIG_PREEMPT_NONE is not set 287# CONFIG_PREEMPT_NONE is not set
286# CONFIG_PREEMPT_VOLUNTARY is not set 288# CONFIG_PREEMPT_VOLUNTARY is not set
287CONFIG_PREEMPT=y 289CONFIG_PREEMPT=y
288# CONFIG_PREEMPT_RCU is not set
289CONFIG_GUSA=y 290CONFIG_GUSA=y
290 291
291# 292#
@@ -302,6 +303,7 @@ CONFIG_PCI=y
302CONFIG_SH_PCIDMA_NONCOHERENT=y 303CONFIG_SH_PCIDMA_NONCOHERENT=y
303CONFIG_PCI_AUTO=y 304CONFIG_PCI_AUTO=y
304CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 305CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
306# CONFIG_PCIEPORTBUS is not set
305# CONFIG_ARCH_SUPPORTS_MSI is not set 307# CONFIG_ARCH_SUPPORTS_MSI is not set
306CONFIG_PCI_LEGACY=y 308CONFIG_PCI_LEGACY=y
307# CONFIG_PCI_DEBUG is not set 309# CONFIG_PCI_DEBUG is not set
@@ -315,11 +317,18 @@ CONFIG_BINFMT_ELF=y
315# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 317# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
316# CONFIG_HAVE_AOUT is not set 318# CONFIG_HAVE_AOUT is not set
317# CONFIG_BINFMT_MISC is not set 319# CONFIG_BINFMT_MISC is not set
320
321#
322# Power management options (EXPERIMENTAL)
323#
324# CONFIG_PM is not set
325# CONFIG_CPU_IDLE is not set
318CONFIG_NET=y 326CONFIG_NET=y
319 327
320# 328#
321# Networking options 329# Networking options
322# 330#
331CONFIG_COMPAT_NET_DEV_OPS=y
323CONFIG_PACKET=y 332CONFIG_PACKET=y
324# CONFIG_PACKET_MMAP is not set 333# CONFIG_PACKET_MMAP is not set
325CONFIG_UNIX=y 334CONFIG_UNIX=y
@@ -380,6 +389,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
380# CONFIG_ECONET is not set 389# CONFIG_ECONET is not set
381# CONFIG_WAN_ROUTER is not set 390# CONFIG_WAN_ROUTER is not set
382# CONFIG_NET_SCHED is not set 391# CONFIG_NET_SCHED is not set
392# CONFIG_DCB is not set
383 393
384# 394#
385# Network testing 395# Network testing
@@ -396,8 +406,8 @@ CONFIG_WIRELESS=y
396# CONFIG_WIRELESS_OLD_REGULATORY is not set 406# CONFIG_WIRELESS_OLD_REGULATORY is not set
397CONFIG_WIRELESS_EXT=y 407CONFIG_WIRELESS_EXT=y
398CONFIG_WIRELESS_EXT_SYSFS=y 408CONFIG_WIRELESS_EXT_SYSFS=y
409# CONFIG_LIB80211 is not set
399# CONFIG_MAC80211 is not set 410# CONFIG_MAC80211 is not set
400# CONFIG_IEEE80211 is not set
401# CONFIG_RFKILL is not set 411# CONFIG_RFKILL is not set
402# CONFIG_NET_9P is not set 412# CONFIG_NET_9P is not set
403 413
@@ -757,6 +767,7 @@ CONFIG_SERIAL_CORE=y
757CONFIG_SERIAL_CORE_CONSOLE=y 767CONFIG_SERIAL_CORE_CONSOLE=y
758# CONFIG_SERIAL_JSM is not set 768# CONFIG_SERIAL_JSM is not set
759CONFIG_UNIX98_PTYS=y 769CONFIG_UNIX98_PTYS=y
770# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
760CONFIG_LEGACY_PTYS=y 771CONFIG_LEGACY_PTYS=y
761CONFIG_LEGACY_PTY_COUNT=256 772CONFIG_LEGACY_PTY_COUNT=256
762# CONFIG_IPMI_HANDLER is not set 773# CONFIG_IPMI_HANDLER is not set
@@ -842,11 +853,11 @@ CONFIG_I2C_PCA_PLATFORM=y
842# CONFIG_THERMAL is not set 853# CONFIG_THERMAL is not set
843# CONFIG_THERMAL_HWMON is not set 854# CONFIG_THERMAL_HWMON is not set
844# CONFIG_WATCHDOG is not set 855# CONFIG_WATCHDOG is not set
856CONFIG_SSB_POSSIBLE=y
845 857
846# 858#
847# Sonics Silicon Backplane 859# Sonics Silicon Backplane
848# 860#
849CONFIG_SSB_POSSIBLE=y
850# CONFIG_SSB is not set 861# CONFIG_SSB is not set
851 862
852# 863#
@@ -855,9 +866,12 @@ CONFIG_SSB_POSSIBLE=y
855# CONFIG_MFD_CORE is not set 866# CONFIG_MFD_CORE is not set
856CONFIG_MFD_SM501=y 867CONFIG_MFD_SM501=y
857# CONFIG_HTC_PASIC3 is not set 868# CONFIG_HTC_PASIC3 is not set
869# CONFIG_TWL4030_CORE is not set
858# CONFIG_MFD_TMIO is not set 870# CONFIG_MFD_TMIO is not set
871# CONFIG_PMIC_DA903X is not set
859# CONFIG_MFD_WM8400 is not set 872# CONFIG_MFD_WM8400 is not set
860# CONFIG_MFD_WM8350_I2C is not set 873# CONFIG_MFD_WM8350_I2C is not set
874# CONFIG_REGULATOR is not set
861 875
862# 876#
863# Multimedia devices 877# Multimedia devices
@@ -889,11 +903,12 @@ CONFIG_FB_CFB_FILLRECT=y
889CONFIG_FB_CFB_COPYAREA=y 903CONFIG_FB_CFB_COPYAREA=y
890CONFIG_FB_CFB_IMAGEBLIT=y 904CONFIG_FB_CFB_IMAGEBLIT=y
891# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set 905# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
892# CONFIG_FB_SYS_FILLRECT is not set 906CONFIG_FB_SYS_FILLRECT=m
893# CONFIG_FB_SYS_COPYAREA is not set 907CONFIG_FB_SYS_COPYAREA=m
894# CONFIG_FB_SYS_IMAGEBLIT is not set 908CONFIG_FB_SYS_IMAGEBLIT=m
895# CONFIG_FB_FOREIGN_ENDIAN is not set 909# CONFIG_FB_FOREIGN_ENDIAN is not set
896# CONFIG_FB_SYS_FOPS is not set 910CONFIG_FB_SYS_FOPS=m
911CONFIG_FB_DEFERRED_IO=y
897# CONFIG_FB_SVGALIB is not set 912# CONFIG_FB_SVGALIB is not set
898# CONFIG_FB_MACMODES is not set 913# CONFIG_FB_MACMODES is not set
899# CONFIG_FB_BACKLIGHT is not set 914# CONFIG_FB_BACKLIGHT is not set
@@ -932,6 +947,7 @@ CONFIG_FB_SH_MOBILE_LCDC=m
932CONFIG_FB_SM501=y 947CONFIG_FB_SM501=y
933# CONFIG_FB_VIRTUAL is not set 948# CONFIG_FB_VIRTUAL is not set
934# CONFIG_FB_METRONOME is not set 949# CONFIG_FB_METRONOME is not set
950# CONFIG_FB_MB862XX is not set
935# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 951# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
936 952
937# 953#
@@ -976,11 +992,9 @@ CONFIG_HID_COMPAT=y
976CONFIG_HID_A4TECH=y 992CONFIG_HID_A4TECH=y
977CONFIG_HID_APPLE=y 993CONFIG_HID_APPLE=y
978CONFIG_HID_BELKIN=y 994CONFIG_HID_BELKIN=y
979CONFIG_HID_BRIGHT=y
980CONFIG_HID_CHERRY=y 995CONFIG_HID_CHERRY=y
981CONFIG_HID_CHICONY=y 996CONFIG_HID_CHICONY=y
982CONFIG_HID_CYPRESS=y 997CONFIG_HID_CYPRESS=y
983CONFIG_HID_DELL=y
984CONFIG_HID_EZKEY=y 998CONFIG_HID_EZKEY=y
985CONFIG_HID_GYRATION=y 999CONFIG_HID_GYRATION=y
986CONFIG_HID_LOGITECH=y 1000CONFIG_HID_LOGITECH=y
@@ -988,12 +1002,15 @@ CONFIG_HID_LOGITECH=y
988# CONFIG_LOGIRUMBLEPAD2_FF is not set 1002# CONFIG_LOGIRUMBLEPAD2_FF is not set
989CONFIG_HID_MICROSOFT=y 1003CONFIG_HID_MICROSOFT=y
990CONFIG_HID_MONTEREY=y 1004CONFIG_HID_MONTEREY=y
1005# CONFIG_HID_NTRIG is not set
991CONFIG_HID_PANTHERLORD=y 1006CONFIG_HID_PANTHERLORD=y
992# CONFIG_PANTHERLORD_FF is not set 1007# CONFIG_PANTHERLORD_FF is not set
993CONFIG_HID_PETALYNX=y 1008CONFIG_HID_PETALYNX=y
994CONFIG_HID_SAMSUNG=y 1009CONFIG_HID_SAMSUNG=y
995CONFIG_HID_SONY=y 1010CONFIG_HID_SONY=y
996CONFIG_HID_SUNPLUS=y 1011CONFIG_HID_SUNPLUS=y
1012# CONFIG_GREENASIA_FF is not set
1013# CONFIG_HID_TOPSEED is not set
997CONFIG_THRUSTMASTER_FF=m 1014CONFIG_THRUSTMASTER_FF=m
998CONFIG_ZEROPLUS_FF=m 1015CONFIG_ZEROPLUS_FF=m
999CONFIG_USB_SUPPORT=y 1016CONFIG_USB_SUPPORT=y
@@ -1014,6 +1031,8 @@ CONFIG_USB_DEVICE_CLASS=y
1014# CONFIG_USB_OTG_WHITELIST is not set 1031# CONFIG_USB_OTG_WHITELIST is not set
1015# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1032# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1016CONFIG_USB_MON=y 1033CONFIG_USB_MON=y
1034# CONFIG_USB_WUSB is not set
1035# CONFIG_USB_WUSB_CBAF is not set
1017 1036
1018# 1037#
1019# USB Host Controller Drivers 1038# USB Host Controller Drivers
@@ -1031,6 +1050,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1031# CONFIG_USB_UHCI_HCD is not set 1050# CONFIG_USB_UHCI_HCD is not set
1032# CONFIG_USB_SL811_HCD is not set 1051# CONFIG_USB_SL811_HCD is not set
1033CONFIG_USB_R8A66597_HCD=y 1052CONFIG_USB_R8A66597_HCD=y
1053# CONFIG_USB_WHCI_HCD is not set
1054# CONFIG_USB_HWA_HCD is not set
1034 1055
1035# 1056#
1036# USB Device Class drivers 1057# USB Device Class drivers
@@ -1041,11 +1062,11 @@ CONFIG_USB_R8A66597_HCD=y
1041# CONFIG_USB_TMC is not set 1062# CONFIG_USB_TMC is not set
1042 1063
1043# 1064#
1044# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1065# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1045# 1066#
1046 1067
1047# 1068#
1048# may also be needed; see USB_STORAGE Help for more information 1069# see USB_STORAGE Help for more information
1049# 1070#
1050CONFIG_USB_STORAGE=y 1071CONFIG_USB_STORAGE=y
1051# CONFIG_USB_STORAGE_DEBUG is not set 1072# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1100,6 +1121,7 @@ CONFIG_USB_TEST=m
1100# CONFIG_USB_ISIGHTFW is not set 1121# CONFIG_USB_ISIGHTFW is not set
1101# CONFIG_USB_VST is not set 1122# CONFIG_USB_VST is not set
1102# CONFIG_USB_GADGET is not set 1123# CONFIG_USB_GADGET is not set
1124# CONFIG_UWB is not set
1103# CONFIG_MMC is not set 1125# CONFIG_MMC is not set
1104# CONFIG_MEMSTICK is not set 1126# CONFIG_MEMSTICK is not set
1105# CONFIG_NEW_LEDS is not set 1127# CONFIG_NEW_LEDS is not set
@@ -1135,6 +1157,7 @@ CONFIG_RTC_DRV_RS5C372=y
1135# CONFIG_RTC_DRV_M41T80 is not set 1157# CONFIG_RTC_DRV_M41T80 is not set
1136# CONFIG_RTC_DRV_S35390A is not set 1158# CONFIG_RTC_DRV_S35390A is not set
1137# CONFIG_RTC_DRV_FM3130 is not set 1159# CONFIG_RTC_DRV_FM3130 is not set
1160# CONFIG_RTC_DRV_RX8581 is not set
1138 1161
1139# 1162#
1140# SPI RTC drivers 1163# SPI RTC drivers
@@ -1220,10 +1243,7 @@ CONFIG_TMPFS=y
1220# CONFIG_HUGETLBFS is not set 1243# CONFIG_HUGETLBFS is not set
1221# CONFIG_HUGETLB_PAGE is not set 1244# CONFIG_HUGETLB_PAGE is not set
1222# CONFIG_CONFIGFS_FS is not set 1245# CONFIG_CONFIGFS_FS is not set
1223 1246CONFIG_MISC_FILESYSTEMS=y
1224#
1225# Miscellaneous filesystems
1226#
1227# CONFIG_ADFS_FS is not set 1247# CONFIG_ADFS_FS is not set
1228# CONFIG_AFFS_FS is not set 1248# CONFIG_AFFS_FS is not set
1229# CONFIG_HFS_FS is not set 1249# CONFIG_HFS_FS is not set
@@ -1353,6 +1373,7 @@ CONFIG_DEBUG_PREEMPT=y
1353# CONFIG_DEBUG_MEMORY_INIT is not set 1373# CONFIG_DEBUG_MEMORY_INIT is not set
1354# CONFIG_DEBUG_LIST is not set 1374# CONFIG_DEBUG_LIST is not set
1355# CONFIG_DEBUG_SG is not set 1375# CONFIG_DEBUG_SG is not set
1376# CONFIG_DEBUG_NOTIFIERS is not set
1356# CONFIG_FRAME_POINTER is not set 1377# CONFIG_FRAME_POINTER is not set
1357# CONFIG_RCU_TORTURE_TEST is not set 1378# CONFIG_RCU_TORTURE_TEST is not set
1358# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1379# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -1361,17 +1382,25 @@ CONFIG_DEBUG_PREEMPT=y
1361# CONFIG_FAULT_INJECTION is not set 1382# CONFIG_FAULT_INJECTION is not set
1362# CONFIG_LATENCYTOP is not set 1383# CONFIG_LATENCYTOP is not set
1363CONFIG_SYSCTL_SYSCALL_CHECK=y 1384CONFIG_SYSCTL_SYSCALL_CHECK=y
1364CONFIG_NOP_TRACER=y 1385CONFIG_HAVE_FUNCTION_TRACER=y
1365CONFIG_HAVE_FTRACE=y 1386CONFIG_HAVE_DYNAMIC_FTRACE=y
1366# CONFIG_FTRACE is not set 1387CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1388
1389#
1390# Tracers
1391#
1392# CONFIG_FUNCTION_TRACER is not set
1367# CONFIG_IRQSOFF_TRACER is not set 1393# CONFIG_IRQSOFF_TRACER is not set
1368# CONFIG_PREEMPT_TRACER is not set 1394# CONFIG_PREEMPT_TRACER is not set
1369# CONFIG_SCHED_TRACER is not set 1395# CONFIG_SCHED_TRACER is not set
1370# CONFIG_CONTEXT_SWITCH_TRACER is not set 1396# CONFIG_CONTEXT_SWITCH_TRACER is not set
1371# CONFIG_BOOT_TRACER is not set 1397# CONFIG_BOOT_TRACER is not set
1398# CONFIG_TRACE_BRANCH_PROFILING is not set
1372# CONFIG_STACK_TRACER is not set 1399# CONFIG_STACK_TRACER is not set
1373# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1400# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1374# CONFIG_SAMPLES is not set 1401# CONFIG_SAMPLES is not set
1402CONFIG_HAVE_ARCH_KGDB=y
1403# CONFIG_KGDB is not set
1375# CONFIG_SH_STANDARD_BIOS is not set 1404# CONFIG_SH_STANDARD_BIOS is not set
1376# CONFIG_EARLY_SCIF_CONSOLE is not set 1405# CONFIG_EARLY_SCIF_CONSOLE is not set
1377# CONFIG_DEBUG_BOOTMEM is not set 1406# CONFIG_DEBUG_BOOTMEM is not set
@@ -1379,7 +1408,9 @@ CONFIG_HAVE_FTRACE=y
1379# CONFIG_DEBUG_STACK_USAGE is not set 1408# CONFIG_DEBUG_STACK_USAGE is not set
1380# CONFIG_4KSTACKS is not set 1409# CONFIG_4KSTACKS is not set
1381# CONFIG_IRQSTACKS is not set 1410# CONFIG_IRQSTACKS is not set
1382# CONFIG_SH_KGDB is not set 1411# CONFIG_DUMP_CODE is not set
1412# CONFIG_SH_NO_BSS_INIT is not set
1413# CONFIG_MORE_COMPILE_OPTIONS is not set
1383 1414
1384# 1415#
1385# Security options 1416# Security options
@@ -1395,11 +1426,15 @@ CONFIG_CRYPTO=y
1395# 1426#
1396# CONFIG_CRYPTO_FIPS is not set 1427# CONFIG_CRYPTO_FIPS is not set
1397CONFIG_CRYPTO_ALGAPI=y 1428CONFIG_CRYPTO_ALGAPI=y
1398CONFIG_CRYPTO_AEAD=y 1429CONFIG_CRYPTO_ALGAPI2=y
1430CONFIG_CRYPTO_AEAD2=y
1399CONFIG_CRYPTO_BLKCIPHER=y 1431CONFIG_CRYPTO_BLKCIPHER=y
1432CONFIG_CRYPTO_BLKCIPHER2=y
1400CONFIG_CRYPTO_HASH=y 1433CONFIG_CRYPTO_HASH=y
1401CONFIG_CRYPTO_RNG=y 1434CONFIG_CRYPTO_HASH2=y
1435CONFIG_CRYPTO_RNG2=y
1402CONFIG_CRYPTO_MANAGER=y 1436CONFIG_CRYPTO_MANAGER=y
1437CONFIG_CRYPTO_MANAGER2=y
1403# CONFIG_CRYPTO_GF128MUL is not set 1438# CONFIG_CRYPTO_GF128MUL is not set
1404# CONFIG_CRYPTO_NULL is not set 1439# CONFIG_CRYPTO_NULL is not set
1405# CONFIG_CRYPTO_CRYPTD is not set 1440# CONFIG_CRYPTO_CRYPTD is not set
@@ -1482,6 +1517,7 @@ CONFIG_CRYPTO_DES=y
1482# Library routines 1517# Library routines
1483# 1518#
1484CONFIG_BITREVERSE=y 1519CONFIG_BITREVERSE=y
1520CONFIG_GENERIC_FIND_LAST_BIT=y
1485# CONFIG_CRC_CCITT is not set 1521# CONFIG_CRC_CCITT is not set
1486# CONFIG_CRC16 is not set 1522# CONFIG_CRC16 is not set
1487# CONFIG_CRC_T10DIF is not set 1523# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/shmin_defconfig b/arch/sh/configs/shmin_defconfig
index e2b38a334976..8ba10e1e08cd 100644
--- a/arch/sh/configs/shmin_defconfig
+++ b/arch/sh/configs/shmin_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:52:59 2008 4# Fri Jan 9 18:09:00 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -15,6 +15,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
15# CONFIG_GENERIC_GPIO is not set 15# CONFIG_GENERIC_GPIO is not set
16CONFIG_GENERIC_TIME=y 16CONFIG_GENERIC_TIME=y
17CONFIG_GENERIC_CLOCKEVENTS=y 17CONFIG_GENERIC_CLOCKEVENTS=y
18# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
19# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
18CONFIG_STACKTRACE_SUPPORT=y 20CONFIG_STACKTRACE_SUPPORT=y
19CONFIG_LOCKDEP_SUPPORT=y 21CONFIG_LOCKDEP_SUPPORT=y
20CONFIG_HAVE_LATENCYTOP_SUPPORT=y 22CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -65,12 +67,10 @@ CONFIG_EVENTFD=y
65# CONFIG_SHMEM is not set 67# CONFIG_SHMEM is not set
66CONFIG_AIO=y 68CONFIG_AIO=y
67CONFIG_VM_EVENT_COUNTERS=y 69CONFIG_VM_EVENT_COUNTERS=y
68CONFIG_PCI_QUIRKS=y
69# CONFIG_SLAB is not set 70# CONFIG_SLAB is not set
70# CONFIG_SLUB is not set 71# CONFIG_SLUB is not set
71CONFIG_SLOB=y 72CONFIG_SLOB=y
72# CONFIG_PROFILING is not set 73# CONFIG_PROFILING is not set
73# CONFIG_MARKERS is not set
74CONFIG_HAVE_OPROFILE=y 74CONFIG_HAVE_OPROFILE=y
75CONFIG_HAVE_IOREMAP_PROT=y 75CONFIG_HAVE_IOREMAP_PROT=y
76CONFIG_HAVE_KPROBES=y 76CONFIG_HAVE_KPROBES=y
@@ -78,12 +78,10 @@ CONFIG_HAVE_KRETPROBES=y
78CONFIG_HAVE_ARCH_TRACEHOOK=y 78CONFIG_HAVE_ARCH_TRACEHOOK=y
79CONFIG_HAVE_CLK=y 79CONFIG_HAVE_CLK=y
80CONFIG_HAVE_GENERIC_DMA_COHERENT=y 80CONFIG_HAVE_GENERIC_DMA_COHERENT=y
81CONFIG_TINY_SHMEM=y
82CONFIG_BASE_SMALL=1 81CONFIG_BASE_SMALL=1
83# CONFIG_MODULES is not set 82# CONFIG_MODULES is not set
84CONFIG_BLOCK=y 83CONFIG_BLOCK=y
85# CONFIG_LBD is not set 84# CONFIG_LBD is not set
86# CONFIG_LSF is not set
87# CONFIG_BLK_DEV_BSG is not set 85# CONFIG_BLK_DEV_BSG is not set
88# CONFIG_BLK_DEV_INTEGRITY is not set 86# CONFIG_BLK_DEV_INTEGRITY is not set
89 87
@@ -100,6 +98,10 @@ CONFIG_IOSCHED_NOOP=y
100CONFIG_DEFAULT_NOOP=y 98CONFIG_DEFAULT_NOOP=y
101CONFIG_DEFAULT_IOSCHED="noop" 99CONFIG_DEFAULT_IOSCHED="noop"
102CONFIG_CLASSIC_RCU=y 100CONFIG_CLASSIC_RCU=y
101# CONFIG_TREE_RCU is not set
102# CONFIG_PREEMPT_RCU is not set
103# CONFIG_TREE_RCU_TRACE is not set
104# CONFIG_PREEMPT_RCU_TRACE is not set
103# CONFIG_FREEZER is not set 105# CONFIG_FREEZER is not set
104 106
105# 107#
@@ -107,6 +109,7 @@ CONFIG_CLASSIC_RCU=y
107# 109#
108CONFIG_CPU_SH3=y 110CONFIG_CPU_SH3=y
109# CONFIG_CPU_SUBTYPE_SH7619 is not set 111# CONFIG_CPU_SUBTYPE_SH7619 is not set
112# CONFIG_CPU_SUBTYPE_SH7201 is not set
110# CONFIG_CPU_SUBTYPE_SH7203 is not set 113# CONFIG_CPU_SUBTYPE_SH7203 is not set
111# CONFIG_CPU_SUBTYPE_SH7206 is not set 114# CONFIG_CPU_SUBTYPE_SH7206 is not set
112# CONFIG_CPU_SUBTYPE_SH7263 is not set 115# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -170,7 +173,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
170CONFIG_SPARSEMEM_STATIC=y 173CONFIG_SPARSEMEM_STATIC=y
171CONFIG_PAGEFLAGS_EXTENDED=y 174CONFIG_PAGEFLAGS_EXTENDED=y
172CONFIG_SPLIT_PTLOCK_CPUS=4 175CONFIG_SPLIT_PTLOCK_CPUS=4
173# CONFIG_RESOURCES_64BIT is not set
174# CONFIG_PHYS_ADDR_T_64BIT is not set 176# CONFIG_PHYS_ADDR_T_64BIT is not set
175CONFIG_ZONE_DMA_FLAG=0 177CONFIG_ZONE_DMA_FLAG=0
176CONFIG_NR_QUICK=2 178CONFIG_NR_QUICK=2
@@ -268,11 +270,18 @@ CONFIG_BINFMT_ELF=y
268# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 270# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
269# CONFIG_HAVE_AOUT is not set 271# CONFIG_HAVE_AOUT is not set
270# CONFIG_BINFMT_MISC is not set 272# CONFIG_BINFMT_MISC is not set
273
274#
275# Power management options (EXPERIMENTAL)
276#
277# CONFIG_PM is not set
278# CONFIG_CPU_IDLE is not set
271CONFIG_NET=y 279CONFIG_NET=y
272 280
273# 281#
274# Networking options 282# Networking options
275# 283#
284CONFIG_COMPAT_NET_DEV_OPS=y
276# CONFIG_PACKET is not set 285# CONFIG_PACKET is not set
277CONFIG_UNIX=y 286CONFIG_UNIX=y
278CONFIG_XFRM=y 287CONFIG_XFRM=y
@@ -327,6 +336,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
327# CONFIG_ECONET is not set 336# CONFIG_ECONET is not set
328# CONFIG_WAN_ROUTER is not set 337# CONFIG_WAN_ROUTER is not set
329# CONFIG_NET_SCHED is not set 338# CONFIG_NET_SCHED is not set
339# CONFIG_DCB is not set
330 340
331# 341#
332# Network testing 342# Network testing
@@ -342,8 +352,8 @@ CONFIG_WIRELESS=y
342# CONFIG_CFG80211 is not set 352# CONFIG_CFG80211 is not set
343# CONFIG_WIRELESS_OLD_REGULATORY is not set 353# CONFIG_WIRELESS_OLD_REGULATORY is not set
344# CONFIG_WIRELESS_EXT is not set 354# CONFIG_WIRELESS_EXT is not set
355# CONFIG_LIB80211 is not set
345# CONFIG_MAC80211 is not set 356# CONFIG_MAC80211 is not set
346# CONFIG_IEEE80211 is not set
347# CONFIG_RFKILL is not set 357# CONFIG_RFKILL is not set
348# CONFIG_NET_9P is not set 358# CONFIG_NET_9P is not set
349 359
@@ -448,6 +458,7 @@ CONFIG_BLK_DEV_LOOP=y
448CONFIG_MISC_DEVICES=y 458CONFIG_MISC_DEVICES=y
449# CONFIG_EEPROM_93CX6 is not set 459# CONFIG_EEPROM_93CX6 is not set
450# CONFIG_ENCLOSURE_SERVICES is not set 460# CONFIG_ENCLOSURE_SERVICES is not set
461# CONFIG_C2PORT is not set
451CONFIG_HAVE_IDE=y 462CONFIG_HAVE_IDE=y
452# CONFIG_IDE is not set 463# CONFIG_IDE is not set
453 464
@@ -474,6 +485,7 @@ CONFIG_NET_ETHERNET=y
474# CONFIG_STNIC is not set 485# CONFIG_STNIC is not set
475# CONFIG_SMC91X is not set 486# CONFIG_SMC91X is not set
476# CONFIG_SMC911X is not set 487# CONFIG_SMC911X is not set
488# CONFIG_SMSC911X is not set
477# CONFIG_IBM_NEW_EMAC_ZMII is not set 489# CONFIG_IBM_NEW_EMAC_ZMII is not set
478# CONFIG_IBM_NEW_EMAC_RGMII is not set 490# CONFIG_IBM_NEW_EMAC_RGMII is not set
479# CONFIG_IBM_NEW_EMAC_TAH is not set 491# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -532,6 +544,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
532CONFIG_SERIAL_CORE=y 544CONFIG_SERIAL_CORE=y
533CONFIG_SERIAL_CORE_CONSOLE=y 545CONFIG_SERIAL_CORE_CONSOLE=y
534CONFIG_UNIX98_PTYS=y 546CONFIG_UNIX98_PTYS=y
547# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
535CONFIG_LEGACY_PTYS=y 548CONFIG_LEGACY_PTYS=y
536CONFIG_LEGACY_PTY_COUNT=256 549CONFIG_LEGACY_PTY_COUNT=256
537# CONFIG_IPMI_HANDLER is not set 550# CONFIG_IPMI_HANDLER is not set
@@ -547,11 +560,11 @@ CONFIG_HW_RANDOM=y
547# CONFIG_THERMAL is not set 560# CONFIG_THERMAL is not set
548# CONFIG_THERMAL_HWMON is not set 561# CONFIG_THERMAL_HWMON is not set
549# CONFIG_WATCHDOG is not set 562# CONFIG_WATCHDOG is not set
563CONFIG_SSB_POSSIBLE=y
550 564
551# 565#
552# Sonics Silicon Backplane 566# Sonics Silicon Backplane
553# 567#
554CONFIG_SSB_POSSIBLE=y
555# CONFIG_SSB is not set 568# CONFIG_SSB is not set
556 569
557# 570#
@@ -561,7 +574,7 @@ CONFIG_SSB_POSSIBLE=y
561# CONFIG_MFD_SM501 is not set 574# CONFIG_MFD_SM501 is not set
562# CONFIG_HTC_PASIC3 is not set 575# CONFIG_HTC_PASIC3 is not set
563# CONFIG_MFD_TMIO is not set 576# CONFIG_MFD_TMIO is not set
564# CONFIG_MFD_WM8400 is not set 577# CONFIG_REGULATOR is not set
565 578
566# 579#
567# Multimedia devices 580# Multimedia devices
@@ -605,7 +618,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
605# 618#
606 619
607# 620#
608# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 621# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
609# 622#
610# CONFIG_USB_GADGET is not set 623# CONFIG_USB_GADGET is not set
611# CONFIG_MMC is not set 624# CONFIG_MMC is not set
@@ -660,10 +673,7 @@ CONFIG_TMPFS=y
660# CONFIG_TMPFS_POSIX_ACL is not set 673# CONFIG_TMPFS_POSIX_ACL is not set
661# CONFIG_HUGETLBFS is not set 674# CONFIG_HUGETLBFS is not set
662# CONFIG_HUGETLB_PAGE is not set 675# CONFIG_HUGETLB_PAGE is not set
663 676CONFIG_MISC_FILESYSTEMS=y
664#
665# Miscellaneous filesystems
666#
667# CONFIG_ADFS_FS is not set 677# CONFIG_ADFS_FS is not set
668# CONFIG_AFFS_FS is not set 678# CONFIG_AFFS_FS is not set
669# CONFIG_HFS_FS is not set 679# CONFIG_HFS_FS is not set
@@ -723,14 +733,20 @@ CONFIG_FRAME_WARN=1024
723# CONFIG_DEBUG_MEMORY_INIT is not set 733# CONFIG_DEBUG_MEMORY_INIT is not set
724# CONFIG_RCU_CPU_STALL_DETECTOR is not set 734# CONFIG_RCU_CPU_STALL_DETECTOR is not set
725# CONFIG_LATENCYTOP is not set 735# CONFIG_LATENCYTOP is not set
726CONFIG_NOP_TRACER=y 736CONFIG_HAVE_FUNCTION_TRACER=y
727CONFIG_HAVE_FTRACE=y 737CONFIG_HAVE_DYNAMIC_FTRACE=y
738CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
739
740#
741# Tracers
742#
728# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 743# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
729# CONFIG_SAMPLES is not set 744# CONFIG_SAMPLES is not set
745CONFIG_HAVE_ARCH_KGDB=y
730CONFIG_SH_STANDARD_BIOS=y 746CONFIG_SH_STANDARD_BIOS=y
731# CONFIG_EARLY_SCIF_CONSOLE is not set 747# CONFIG_EARLY_SCIF_CONSOLE is not set
732CONFIG_EARLY_PRINTK=y 748CONFIG_EARLY_PRINTK=y
733# CONFIG_SH_KGDB is not set 749# CONFIG_MORE_COMPILE_OPTIONS is not set
734 750
735# 751#
736# Security options 752# Security options
@@ -745,6 +761,7 @@ CONFIG_CRYPTO=y
745# 761#
746# CONFIG_CRYPTO_FIPS is not set 762# CONFIG_CRYPTO_FIPS is not set
747# CONFIG_CRYPTO_MANAGER is not set 763# CONFIG_CRYPTO_MANAGER is not set
764# CONFIG_CRYPTO_MANAGER2 is not set
748# CONFIG_CRYPTO_GF128MUL is not set 765# CONFIG_CRYPTO_GF128MUL is not set
749# CONFIG_CRYPTO_NULL is not set 766# CONFIG_CRYPTO_NULL is not set
750# CONFIG_CRYPTO_CRYPTD is not set 767# CONFIG_CRYPTO_CRYPTD is not set
@@ -826,6 +843,7 @@ CONFIG_CRYPTO_HW=y
826# Library routines 843# Library routines
827# 844#
828CONFIG_BITREVERSE=y 845CONFIG_BITREVERSE=y
846CONFIG_GENERIC_FIND_LAST_BIT=y
829# CONFIG_CRC_CCITT is not set 847# CONFIG_CRC_CCITT is not set
830# CONFIG_CRC16 is not set 848# CONFIG_CRC16 is not set
831# CONFIG_CRC_T10DIF is not set 849# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig
index ae5cbe237fff..e0d7682e4f19 100644
--- a/arch/sh/configs/shx3_defconfig
+++ b/arch/sh/configs/shx3_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.27 3# Linux kernel version: 2.6.28
4# Tue Oct 21 12:16:25 2008 4# Fri Jan 9 18:10:57 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -18,6 +18,8 @@ CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y 19CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
20CONFIG_GENERIC_LOCKBREAK=y 20CONFIG_GENERIC_LOCKBREAK=y
21# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
22# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
21CONFIG_SYS_SUPPORTS_SMP=y 23CONFIG_SYS_SUPPORTS_SMP=y
22CONFIG_SYS_SUPPORTS_NUMA=y 24CONFIG_SYS_SUPPORTS_NUMA=y
23CONFIG_STACKTRACE_SUPPORT=y 25CONFIG_STACKTRACE_SUPPORT=y
@@ -79,6 +81,7 @@ CONFIG_UID16=y
79CONFIG_SYSCTL_SYSCALL=y 81CONFIG_SYSCTL_SYSCALL=y
80CONFIG_KALLSYMS=y 82CONFIG_KALLSYMS=y
81CONFIG_KALLSYMS_ALL=y 83CONFIG_KALLSYMS_ALL=y
84CONFIG_KALLSYMS_STRIP_GENERATED=y
82# CONFIG_KALLSYMS_EXTRA_PASS is not set 85# CONFIG_KALLSYMS_EXTRA_PASS is not set
83CONFIG_HOTPLUG=y 86CONFIG_HOTPLUG=y
84CONFIG_PRINTK=y 87CONFIG_PRINTK=y
@@ -95,11 +98,11 @@ CONFIG_EVENTFD=y
95CONFIG_SHMEM=y 98CONFIG_SHMEM=y
96CONFIG_AIO=y 99CONFIG_AIO=y
97CONFIG_VM_EVENT_COUNTERS=y 100CONFIG_VM_EVENT_COUNTERS=y
98CONFIG_PCI_QUIRKS=y
99# CONFIG_SLAB is not set 101# CONFIG_SLAB is not set
100# CONFIG_SLUB is not set 102# CONFIG_SLUB is not set
101CONFIG_SLOB=y 103CONFIG_SLOB=y
102CONFIG_PROFILING=y 104CONFIG_PROFILING=y
105CONFIG_TRACEPOINTS=y
103# CONFIG_MARKERS is not set 106# CONFIG_MARKERS is not set
104CONFIG_OPROFILE=y 107CONFIG_OPROFILE=y
105CONFIG_HAVE_OPROFILE=y 108CONFIG_HAVE_OPROFILE=y
@@ -113,7 +116,6 @@ CONFIG_USE_GENERIC_SMP_HELPERS=y
113CONFIG_HAVE_CLK=y 116CONFIG_HAVE_CLK=y
114CONFIG_HAVE_GENERIC_DMA_COHERENT=y 117CONFIG_HAVE_GENERIC_DMA_COHERENT=y
115CONFIG_RT_MUTEXES=y 118CONFIG_RT_MUTEXES=y
116# CONFIG_TINY_SHMEM is not set
117CONFIG_BASE_SMALL=0 119CONFIG_BASE_SMALL=0
118CONFIG_MODULES=y 120CONFIG_MODULES=y
119# CONFIG_MODULE_FORCE_LOAD is not set 121# CONFIG_MODULE_FORCE_LOAD is not set
@@ -121,12 +123,10 @@ CONFIG_MODULE_UNLOAD=y
121# CONFIG_MODULE_FORCE_UNLOAD is not set 123# CONFIG_MODULE_FORCE_UNLOAD is not set
122# CONFIG_MODVERSIONS is not set 124# CONFIG_MODVERSIONS is not set
123# CONFIG_MODULE_SRCVERSION_ALL is not set 125# CONFIG_MODULE_SRCVERSION_ALL is not set
124CONFIG_KMOD=y
125CONFIG_STOP_MACHINE=y 126CONFIG_STOP_MACHINE=y
126CONFIG_BLOCK=y 127CONFIG_BLOCK=y
127# CONFIG_LBD is not set 128# CONFIG_LBD is not set
128# CONFIG_BLK_DEV_IO_TRACE is not set 129# CONFIG_BLK_DEV_IO_TRACE is not set
129# CONFIG_LSF is not set
130# CONFIG_BLK_DEV_BSG is not set 130# CONFIG_BLK_DEV_BSG is not set
131# CONFIG_BLK_DEV_INTEGRITY is not set 131# CONFIG_BLK_DEV_INTEGRITY is not set
132 132
@@ -143,6 +143,11 @@ CONFIG_DEFAULT_AS=y
143# CONFIG_DEFAULT_NOOP is not set 143# CONFIG_DEFAULT_NOOP is not set
144CONFIG_DEFAULT_IOSCHED="anticipatory" 144CONFIG_DEFAULT_IOSCHED="anticipatory"
145# CONFIG_CLASSIC_RCU is not set 145# CONFIG_CLASSIC_RCU is not set
146# CONFIG_TREE_RCU is not set
147CONFIG_PREEMPT_RCU=y
148CONFIG_RCU_TRACE=y
149# CONFIG_TREE_RCU_TRACE is not set
150CONFIG_PREEMPT_RCU_TRACE=y
146CONFIG_FREEZER=y 151CONFIG_FREEZER=y
147 152
148# 153#
@@ -152,6 +157,7 @@ CONFIG_CPU_SH4=y
152CONFIG_CPU_SH4A=y 157CONFIG_CPU_SH4A=y
153CONFIG_CPU_SHX3=y 158CONFIG_CPU_SHX3=y
154# CONFIG_CPU_SUBTYPE_SH7619 is not set 159# CONFIG_CPU_SUBTYPE_SH7619 is not set
160# CONFIG_CPU_SUBTYPE_SH7201 is not set
155# CONFIG_CPU_SUBTYPE_SH7203 is not set 161# CONFIG_CPU_SUBTYPE_SH7203 is not set
156# CONFIG_CPU_SUBTYPE_SH7206 is not set 162# CONFIG_CPU_SUBTYPE_SH7206 is not set
157# CONFIG_CPU_SUBTYPE_SH7263 is not set 163# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -230,7 +236,6 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
230CONFIG_MEMORY_HOTREMOVE=y 236CONFIG_MEMORY_HOTREMOVE=y
231CONFIG_SPLIT_PTLOCK_CPUS=4 237CONFIG_SPLIT_PTLOCK_CPUS=4
232CONFIG_MIGRATION=y 238CONFIG_MIGRATION=y
233# CONFIG_RESOURCES_64BIT is not set
234# CONFIG_PHYS_ADDR_T_64BIT is not set 239# CONFIG_PHYS_ADDR_T_64BIT is not set
235CONFIG_ZONE_DMA_FLAG=0 240CONFIG_ZONE_DMA_FLAG=0
236CONFIG_NR_QUICK=2 241CONFIG_NR_QUICK=2
@@ -323,8 +328,6 @@ CONFIG_NR_CPUS=4
323# CONFIG_PREEMPT_NONE is not set 328# CONFIG_PREEMPT_NONE is not set
324# CONFIG_PREEMPT_VOLUNTARY is not set 329# CONFIG_PREEMPT_VOLUNTARY is not set
325CONFIG_PREEMPT=y 330CONFIG_PREEMPT=y
326CONFIG_PREEMPT_RCU=y
327CONFIG_RCU_TRACE=y
328 331
329# 332#
330# Boot options 333# Boot options
@@ -347,11 +350,19 @@ CONFIG_BINFMT_ELF=y
347# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 350# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
348# CONFIG_HAVE_AOUT is not set 351# CONFIG_HAVE_AOUT is not set
349CONFIG_BINFMT_MISC=y 352CONFIG_BINFMT_MISC=y
353
354#
355# Power management options (EXPERIMENTAL)
356#
357# CONFIG_PM is not set
358# CONFIG_CPU_IDLE is not set
350CONFIG_NET=y 359CONFIG_NET=y
351 360
352# 361#
353# Networking options 362# Networking options
354# 363#
364# CONFIG_NET_NS is not set
365CONFIG_COMPAT_NET_DEV_OPS=y
355# CONFIG_PACKET is not set 366# CONFIG_PACKET is not set
356# CONFIG_UNIX is not set 367# CONFIG_UNIX is not set
357CONFIG_XFRM=y 368CONFIG_XFRM=y
@@ -424,6 +435,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
424# CONFIG_ECONET is not set 435# CONFIG_ECONET is not set
425# CONFIG_WAN_ROUTER is not set 436# CONFIG_WAN_ROUTER is not set
426# CONFIG_NET_SCHED is not set 437# CONFIG_NET_SCHED is not set
438# CONFIG_DCB is not set
427 439
428# 440#
429# Network testing 441# Network testing
@@ -479,7 +491,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
479# CONFIG_BLK_DEV_HD is not set 491# CONFIG_BLK_DEV_HD is not set
480CONFIG_MISC_DEVICES=y 492CONFIG_MISC_DEVICES=y
481# CONFIG_EEPROM_93CX6 is not set 493# CONFIG_EEPROM_93CX6 is not set
494# CONFIG_ICS932S401 is not set
482# CONFIG_ENCLOSURE_SERVICES is not set 495# CONFIG_ENCLOSURE_SERVICES is not set
496# CONFIG_C2PORT is not set
483CONFIG_HAVE_IDE=y 497CONFIG_HAVE_IDE=y
484# CONFIG_IDE is not set 498# CONFIG_IDE is not set
485 499
@@ -522,6 +536,7 @@ CONFIG_SCSI_WAIT_SCAN=m
522# CONFIG_SCSI_SRP_ATTRS is not set 536# CONFIG_SCSI_SRP_ATTRS is not set
523CONFIG_SCSI_LOWLEVEL=y 537CONFIG_SCSI_LOWLEVEL=y
524# CONFIG_ISCSI_TCP is not set 538# CONFIG_ISCSI_TCP is not set
539# CONFIG_LIBFC is not set
525# CONFIG_SCSI_DEBUG is not set 540# CONFIG_SCSI_DEBUG is not set
526# CONFIG_SCSI_DH is not set 541# CONFIG_SCSI_DH is not set
527CONFIG_ATA=y 542CONFIG_ATA=y
@@ -546,6 +561,7 @@ CONFIG_MII=y
546CONFIG_SMC91X=y 561CONFIG_SMC91X=y
547# CONFIG_ENC28J60 is not set 562# CONFIG_ENC28J60 is not set
548# CONFIG_SMC911X is not set 563# CONFIG_SMC911X is not set
564# CONFIG_SMSC911X is not set
549# CONFIG_IBM_NEW_EMAC_ZMII is not set 565# CONFIG_IBM_NEW_EMAC_ZMII is not set
550# CONFIG_IBM_NEW_EMAC_RGMII is not set 566# CONFIG_IBM_NEW_EMAC_RGMII is not set
551# CONFIG_IBM_NEW_EMAC_TAH is not set 567# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -613,6 +629,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
613CONFIG_SERIAL_CORE=y 629CONFIG_SERIAL_CORE=y
614CONFIG_SERIAL_CORE_CONSOLE=y 630CONFIG_SERIAL_CORE_CONSOLE=y
615CONFIG_UNIX98_PTYS=y 631CONFIG_UNIX98_PTYS=y
632# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
616CONFIG_LEGACY_PTYS=y 633CONFIG_LEGACY_PTYS=y
617CONFIG_LEGACY_PTY_COUNT=256 634CONFIG_LEGACY_PTY_COUNT=256
618# CONFIG_IPMI_HANDLER is not set 635# CONFIG_IPMI_HANDLER is not set
@@ -699,11 +716,11 @@ CONFIG_WATCHDOG=y
699# USB-based Watchdog Cards 716# USB-based Watchdog Cards
700# 717#
701# CONFIG_USBPCWATCHDOG is not set 718# CONFIG_USBPCWATCHDOG is not set
719CONFIG_SSB_POSSIBLE=y
702 720
703# 721#
704# Sonics Silicon Backplane 722# Sonics Silicon Backplane
705# 723#
706CONFIG_SSB_POSSIBLE=y
707# CONFIG_SSB is not set 724# CONFIG_SSB is not set
708 725
709# 726#
@@ -715,6 +732,7 @@ CONFIG_SSB_POSSIBLE=y
715# CONFIG_MFD_TMIO is not set 732# CONFIG_MFD_TMIO is not set
716# CONFIG_MFD_WM8400 is not set 733# CONFIG_MFD_WM8400 is not set
717# CONFIG_MFD_WM8350_I2C is not set 734# CONFIG_MFD_WM8350_I2C is not set
735# CONFIG_REGULATOR is not set
718 736
719# 737#
720# Multimedia devices 738# Multimedia devices
@@ -763,15 +781,17 @@ CONFIG_USB_DEVICE_CLASS=y
763# CONFIG_USB_OTG_WHITELIST is not set 781# CONFIG_USB_OTG_WHITELIST is not set
764# CONFIG_USB_OTG_BLACKLIST_HUB is not set 782# CONFIG_USB_OTG_BLACKLIST_HUB is not set
765CONFIG_USB_MON=y 783CONFIG_USB_MON=y
784# CONFIG_USB_WUSB is not set
785# CONFIG_USB_WUSB_CBAF is not set
766 786
767# 787#
768# USB Host Controller Drivers 788# USB Host Controller Drivers
769# 789#
770# CONFIG_USB_C67X00_HCD is not set 790# CONFIG_USB_C67X00_HCD is not set
771# CONFIG_USB_ISP116X_HCD is not set 791# CONFIG_USB_ISP116X_HCD is not set
772# CONFIG_USB_ISP1760_HCD is not set
773# CONFIG_USB_SL811_HCD is not set 792# CONFIG_USB_SL811_HCD is not set
774CONFIG_USB_R8A66597_HCD=m 793CONFIG_USB_R8A66597_HCD=m
794# CONFIG_USB_HWA_HCD is not set
775# CONFIG_USB_GADGET_MUSB_HDRC is not set 795# CONFIG_USB_GADGET_MUSB_HDRC is not set
776 796
777# 797#
@@ -783,11 +803,11 @@ CONFIG_USB_R8A66597_HCD=m
783# CONFIG_USB_TMC is not set 803# CONFIG_USB_TMC is not set
784 804
785# 805#
786# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 806# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
787# 807#
788 808
789# 809#
790# may also be needed; see USB_STORAGE Help for more information 810# see USB_STORAGE Help for more information
791# 811#
792# CONFIG_USB_STORAGE is not set 812# CONFIG_USB_STORAGE is not set
793# CONFIG_USB_LIBUSUAL is not set 813# CONFIG_USB_LIBUSUAL is not set
@@ -890,12 +910,14 @@ CONFIG_RTC_INTF_DEV=y
890# CONFIG_RTC_DRV_M41T80 is not set 910# CONFIG_RTC_DRV_M41T80 is not set
891# CONFIG_RTC_DRV_S35390A is not set 911# CONFIG_RTC_DRV_S35390A is not set
892# CONFIG_RTC_DRV_FM3130 is not set 912# CONFIG_RTC_DRV_FM3130 is not set
913# CONFIG_RTC_DRV_RX8581 is not set
893 914
894# 915#
895# SPI RTC drivers 916# SPI RTC drivers
896# 917#
897# CONFIG_RTC_DRV_M41T94 is not set 918# CONFIG_RTC_DRV_M41T94 is not set
898# CONFIG_RTC_DRV_DS1305 is not set 919# CONFIG_RTC_DRV_DS1305 is not set
920# CONFIG_RTC_DRV_DS1390 is not set
899# CONFIG_RTC_DRV_MAX6902 is not set 921# CONFIG_RTC_DRV_MAX6902 is not set
900# CONFIG_RTC_DRV_R9701 is not set 922# CONFIG_RTC_DRV_R9701 is not set
901# CONFIG_RTC_DRV_RS5C348 is not set 923# CONFIG_RTC_DRV_RS5C348 is not set
@@ -981,10 +1003,7 @@ CONFIG_TMPFS=y
981CONFIG_HUGETLBFS=y 1003CONFIG_HUGETLBFS=y
982CONFIG_HUGETLB_PAGE=y 1004CONFIG_HUGETLB_PAGE=y
983# CONFIG_CONFIGFS_FS is not set 1005# CONFIG_CONFIGFS_FS is not set
984 1006CONFIG_MISC_FILESYSTEMS=y
985#
986# Miscellaneous filesystems
987#
988# CONFIG_ADFS_FS is not set 1007# CONFIG_ADFS_FS is not set
989# CONFIG_AFFS_FS is not set 1008# CONFIG_AFFS_FS is not set
990# CONFIG_HFS_FS is not set 1009# CONFIG_HFS_FS is not set
@@ -1049,6 +1068,7 @@ CONFIG_DEBUG_PREEMPT=y
1049# CONFIG_LOCK_STAT is not set 1068# CONFIG_LOCK_STAT is not set
1050# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1069# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1051# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1070# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1071CONFIG_STACKTRACE=y
1052# CONFIG_DEBUG_KOBJECT is not set 1072# CONFIG_DEBUG_KOBJECT is not set
1053CONFIG_DEBUG_BUGVERBOSE=y 1073CONFIG_DEBUG_BUGVERBOSE=y
1054# CONFIG_DEBUG_INFO is not set 1074# CONFIG_DEBUG_INFO is not set
@@ -1057,6 +1077,7 @@ CONFIG_DEBUG_VM=y
1057# CONFIG_DEBUG_MEMORY_INIT is not set 1077# CONFIG_DEBUG_MEMORY_INIT is not set
1058# CONFIG_DEBUG_LIST is not set 1078# CONFIG_DEBUG_LIST is not set
1059# CONFIG_DEBUG_SG is not set 1079# CONFIG_DEBUG_SG is not set
1080# CONFIG_DEBUG_NOTIFIERS is not set
1060CONFIG_FRAME_POINTER=y 1081CONFIG_FRAME_POINTER=y
1061# CONFIG_RCU_TORTURE_TEST is not set 1082# CONFIG_RCU_TORTURE_TEST is not set
1062# CONFIG_KPROBES_SANITY_TEST is not set 1083# CONFIG_KPROBES_SANITY_TEST is not set
@@ -1066,16 +1087,28 @@ CONFIG_FRAME_POINTER=y
1066# CONFIG_FAULT_INJECTION is not set 1087# CONFIG_FAULT_INJECTION is not set
1067# CONFIG_SYSCTL_SYSCALL_CHECK is not set 1088# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1068CONFIG_NOP_TRACER=y 1089CONFIG_NOP_TRACER=y
1069CONFIG_HAVE_FTRACE=y 1090CONFIG_HAVE_FUNCTION_TRACER=y
1070# CONFIG_FTRACE is not set 1091CONFIG_HAVE_DYNAMIC_FTRACE=y
1092CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1093CONFIG_RING_BUFFER=y
1094CONFIG_TRACING=y
1095
1096#
1097# Tracers
1098#
1099# CONFIG_FUNCTION_TRACER is not set
1071# CONFIG_IRQSOFF_TRACER is not set 1100# CONFIG_IRQSOFF_TRACER is not set
1072# CONFIG_PREEMPT_TRACER is not set 1101# CONFIG_PREEMPT_TRACER is not set
1073# CONFIG_SCHED_TRACER is not set 1102# CONFIG_SCHED_TRACER is not set
1074# CONFIG_CONTEXT_SWITCH_TRACER is not set 1103# CONFIG_CONTEXT_SWITCH_TRACER is not set
1075# CONFIG_BOOT_TRACER is not set 1104# CONFIG_BOOT_TRACER is not set
1105# CONFIG_TRACE_BRANCH_PROFILING is not set
1076# CONFIG_STACK_TRACER is not set 1106# CONFIG_STACK_TRACER is not set
1107# CONFIG_FTRACE_STARTUP_TEST is not set
1077# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1108# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1078# CONFIG_SAMPLES is not set 1109# CONFIG_SAMPLES is not set
1110CONFIG_HAVE_ARCH_KGDB=y
1111# CONFIG_KGDB is not set
1079CONFIG_SH_STANDARD_BIOS=y 1112CONFIG_SH_STANDARD_BIOS=y
1080# CONFIG_EARLY_SCIF_CONSOLE is not set 1113# CONFIG_EARLY_SCIF_CONSOLE is not set
1081CONFIG_EARLY_PRINTK=y 1114CONFIG_EARLY_PRINTK=y
@@ -1083,7 +1116,9 @@ CONFIG_EARLY_PRINTK=y
1083CONFIG_DEBUG_STACKOVERFLOW=y 1116CONFIG_DEBUG_STACKOVERFLOW=y
1084CONFIG_DEBUG_STACK_USAGE=y 1117CONFIG_DEBUG_STACK_USAGE=y
1085# CONFIG_IRQSTACKS is not set 1118# CONFIG_IRQSTACKS is not set
1086# CONFIG_SH_KGDB is not set 1119CONFIG_DUMP_CODE=y
1120# CONFIG_SH_NO_BSS_INIT is not set
1121# CONFIG_MORE_COMPILE_OPTIONS is not set
1087 1122
1088# 1123#
1089# Security options 1124# Security options
@@ -1099,6 +1134,7 @@ CONFIG_CRYPTO=y
1099# 1134#
1100# CONFIG_CRYPTO_FIPS is not set 1135# CONFIG_CRYPTO_FIPS is not set
1101# CONFIG_CRYPTO_MANAGER is not set 1136# CONFIG_CRYPTO_MANAGER is not set
1137# CONFIG_CRYPTO_MANAGER2 is not set
1102# CONFIG_CRYPTO_GF128MUL is not set 1138# CONFIG_CRYPTO_GF128MUL is not set
1103# CONFIG_CRYPTO_NULL is not set 1139# CONFIG_CRYPTO_NULL is not set
1104# CONFIG_CRYPTO_CRYPTD is not set 1140# CONFIG_CRYPTO_CRYPTD is not set
@@ -1181,6 +1217,7 @@ CONFIG_CRYPTO_HW=y
1181# Library routines 1217# Library routines
1182# 1218#
1183CONFIG_BITREVERSE=y 1219CONFIG_BITREVERSE=y
1220CONFIG_GENERIC_FIND_LAST_BIT=y
1184# CONFIG_CRC_CCITT is not set 1221# CONFIG_CRC_CCITT is not set
1185# CONFIG_CRC16 is not set 1222# CONFIG_CRC16 is not set
1186# CONFIG_CRC_T10DIF is not set 1223# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/snapgear_defconfig b/arch/sh/configs/snapgear_defconfig
index b4ca5110958f..98377e502650 100644
--- a/arch/sh/configs/snapgear_defconfig
+++ b/arch/sh/configs/snapgear_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:55:03 2008 4# Fri Jan 9 18:14:08 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -76,7 +78,6 @@ CONFIG_SLAB=y
76# CONFIG_SLUB is not set 78# CONFIG_SLUB is not set
77# CONFIG_SLOB is not set 79# CONFIG_SLOB is not set
78# CONFIG_PROFILING is not set 80# CONFIG_PROFILING is not set
79# CONFIG_MARKERS is not set
80CONFIG_HAVE_OPROFILE=y 81CONFIG_HAVE_OPROFILE=y
81CONFIG_HAVE_IOREMAP_PROT=y 82CONFIG_HAVE_IOREMAP_PROT=y
82CONFIG_HAVE_KPROBES=y 83CONFIG_HAVE_KPROBES=y
@@ -86,13 +87,11 @@ CONFIG_HAVE_CLK=y
86CONFIG_HAVE_GENERIC_DMA_COHERENT=y 87CONFIG_HAVE_GENERIC_DMA_COHERENT=y
87CONFIG_SLABINFO=y 88CONFIG_SLABINFO=y
88CONFIG_RT_MUTEXES=y 89CONFIG_RT_MUTEXES=y
89# CONFIG_TINY_SHMEM is not set
90CONFIG_BASE_SMALL=0 90CONFIG_BASE_SMALL=0
91# CONFIG_MODULES is not set 91# CONFIG_MODULES is not set
92CONFIG_BLOCK=y 92CONFIG_BLOCK=y
93# CONFIG_LBD is not set 93# CONFIG_LBD is not set
94# CONFIG_BLK_DEV_IO_TRACE is not set 94# CONFIG_BLK_DEV_IO_TRACE is not set
95# CONFIG_LSF is not set
96# CONFIG_BLK_DEV_BSG is not set 95# CONFIG_BLK_DEV_BSG is not set
97# CONFIG_BLK_DEV_INTEGRITY is not set 96# CONFIG_BLK_DEV_INTEGRITY is not set
98 97
@@ -109,6 +108,10 @@ CONFIG_DEFAULT_AS=y
109# CONFIG_DEFAULT_NOOP is not set 108# CONFIG_DEFAULT_NOOP is not set
110CONFIG_DEFAULT_IOSCHED="anticipatory" 109CONFIG_DEFAULT_IOSCHED="anticipatory"
111CONFIG_CLASSIC_RCU=y 110CONFIG_CLASSIC_RCU=y
111# CONFIG_TREE_RCU is not set
112# CONFIG_PREEMPT_RCU is not set
113# CONFIG_TREE_RCU_TRACE is not set
114# CONFIG_PREEMPT_RCU_TRACE is not set
112# CONFIG_FREEZER is not set 115# CONFIG_FREEZER is not set
113 116
114# 117#
@@ -116,6 +119,7 @@ CONFIG_CLASSIC_RCU=y
116# 119#
117CONFIG_CPU_SH4=y 120CONFIG_CPU_SH4=y
118# CONFIG_CPU_SUBTYPE_SH7619 is not set 121# CONFIG_CPU_SUBTYPE_SH7619 is not set
122# CONFIG_CPU_SUBTYPE_SH7201 is not set
119# CONFIG_CPU_SUBTYPE_SH7203 is not set 123# CONFIG_CPU_SUBTYPE_SH7203 is not set
120# CONFIG_CPU_SUBTYPE_SH7206 is not set 124# CONFIG_CPU_SUBTYPE_SH7206 is not set
121# CONFIG_CPU_SUBTYPE_SH7263 is not set 125# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -179,7 +183,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
179CONFIG_SPARSEMEM_STATIC=y 183CONFIG_SPARSEMEM_STATIC=y
180CONFIG_PAGEFLAGS_EXTENDED=y 184CONFIG_PAGEFLAGS_EXTENDED=y
181CONFIG_SPLIT_PTLOCK_CPUS=4 185CONFIG_SPLIT_PTLOCK_CPUS=4
182# CONFIG_RESOURCES_64BIT is not set
183# CONFIG_PHYS_ADDR_T_64BIT is not set 186# CONFIG_PHYS_ADDR_T_64BIT is not set
184CONFIG_ZONE_DMA_FLAG=0 187CONFIG_ZONE_DMA_FLAG=0
185CONFIG_NR_QUICK=2 188CONFIG_NR_QUICK=2
@@ -282,6 +285,7 @@ CONFIG_PCI=y
282CONFIG_SH_PCIDMA_NONCOHERENT=y 285CONFIG_SH_PCIDMA_NONCOHERENT=y
283CONFIG_PCI_AUTO=y 286CONFIG_PCI_AUTO=y
284CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 287CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
288# CONFIG_PCIEPORTBUS is not set
285# CONFIG_ARCH_SUPPORTS_MSI is not set 289# CONFIG_ARCH_SUPPORTS_MSI is not set
286CONFIG_PCI_LEGACY=y 290CONFIG_PCI_LEGACY=y
287 291
@@ -292,11 +296,18 @@ CONFIG_BINFMT_ELF=y
292# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 296# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
293# CONFIG_HAVE_AOUT is not set 297# CONFIG_HAVE_AOUT is not set
294# CONFIG_BINFMT_MISC is not set 298# CONFIG_BINFMT_MISC is not set
299
300#
301# Power management options (EXPERIMENTAL)
302#
303# CONFIG_PM is not set
304# CONFIG_CPU_IDLE is not set
295CONFIG_NET=y 305CONFIG_NET=y
296 306
297# 307#
298# Networking options 308# Networking options
299# 309#
310CONFIG_COMPAT_NET_DEV_OPS=y
300# CONFIG_PACKET is not set 311# CONFIG_PACKET is not set
301# CONFIG_UNIX is not set 312# CONFIG_UNIX is not set
302# CONFIG_NET_KEY is not set 313# CONFIG_NET_KEY is not set
@@ -342,6 +353,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
342# CONFIG_ECONET is not set 353# CONFIG_ECONET is not set
343# CONFIG_WAN_ROUTER is not set 354# CONFIG_WAN_ROUTER is not set
344# CONFIG_NET_SCHED is not set 355# CONFIG_NET_SCHED is not set
356# CONFIG_DCB is not set
345 357
346# 358#
347# Network testing 359# Network testing
@@ -357,8 +369,8 @@ CONFIG_WIRELESS=y
357# CONFIG_CFG80211 is not set 369# CONFIG_CFG80211 is not set
358# CONFIG_WIRELESS_OLD_REGULATORY is not set 370# CONFIG_WIRELESS_OLD_REGULATORY is not set
359# CONFIG_WIRELESS_EXT is not set 371# CONFIG_WIRELESS_EXT is not set
372# CONFIG_LIB80211 is not set
360# CONFIG_MAC80211 is not set 373# CONFIG_MAC80211 is not set
361# CONFIG_IEEE80211 is not set
362# CONFIG_RFKILL is not set 374# CONFIG_RFKILL is not set
363# CONFIG_NET_9P is not set 375# CONFIG_NET_9P is not set
364 376
@@ -515,6 +527,7 @@ CONFIG_MII=y
515# CONFIG_NET_VENDOR_3COM is not set 527# CONFIG_NET_VENDOR_3COM is not set
516# CONFIG_SMC91X is not set 528# CONFIG_SMC91X is not set
517# CONFIG_SMC911X is not set 529# CONFIG_SMC911X is not set
530# CONFIG_SMSC911X is not set
518# CONFIG_NET_TULIP is not set 531# CONFIG_NET_TULIP is not set
519# CONFIG_HP100 is not set 532# CONFIG_HP100 is not set
520# CONFIG_IBM_NEW_EMAC_ZMII is not set 533# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -530,7 +543,6 @@ CONFIG_NET_PCI=y
530# CONFIG_ADAPTEC_STARFIRE is not set 543# CONFIG_ADAPTEC_STARFIRE is not set
531# CONFIG_B44 is not set 544# CONFIG_B44 is not set
532# CONFIG_FORCEDETH is not set 545# CONFIG_FORCEDETH is not set
533# CONFIG_EEPRO100 is not set
534# CONFIG_E100 is not set 546# CONFIG_E100 is not set
535# CONFIG_FEALNX is not set 547# CONFIG_FEALNX is not set
536# CONFIG_NATSEMI is not set 548# CONFIG_NATSEMI is not set
@@ -544,6 +556,7 @@ CONFIG_8139TOO_PIO=y
544# CONFIG_R6040 is not set 556# CONFIG_R6040 is not set
545# CONFIG_SIS900 is not set 557# CONFIG_SIS900 is not set
546# CONFIG_EPIC100 is not set 558# CONFIG_EPIC100 is not set
559# CONFIG_SMSC9420 is not set
547# CONFIG_SUNDANCE is not set 560# CONFIG_SUNDANCE is not set
548# CONFIG_TLAN is not set 561# CONFIG_TLAN is not set
549# CONFIG_VIA_RHINE is not set 562# CONFIG_VIA_RHINE is not set
@@ -624,6 +637,7 @@ CONFIG_SERIAL_CORE=y
624CONFIG_SERIAL_CORE_CONSOLE=y 637CONFIG_SERIAL_CORE_CONSOLE=y
625# CONFIG_SERIAL_JSM is not set 638# CONFIG_SERIAL_JSM is not set
626CONFIG_UNIX98_PTYS=y 639CONFIG_UNIX98_PTYS=y
640# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
627CONFIG_LEGACY_PTYS=y 641CONFIG_LEGACY_PTYS=y
628CONFIG_LEGACY_PTY_COUNT=256 642CONFIG_LEGACY_PTY_COUNT=256
629# CONFIG_IPMI_HANDLER is not set 643# CONFIG_IPMI_HANDLER is not set
@@ -641,11 +655,11 @@ CONFIG_DEVPORT=y
641# CONFIG_THERMAL is not set 655# CONFIG_THERMAL is not set
642# CONFIG_THERMAL_HWMON is not set 656# CONFIG_THERMAL_HWMON is not set
643# CONFIG_WATCHDOG is not set 657# CONFIG_WATCHDOG is not set
658CONFIG_SSB_POSSIBLE=y
644 659
645# 660#
646# Sonics Silicon Backplane 661# Sonics Silicon Backplane
647# 662#
648CONFIG_SSB_POSSIBLE=y
649# CONFIG_SSB is not set 663# CONFIG_SSB is not set
650 664
651# 665#
@@ -655,7 +669,7 @@ CONFIG_SSB_POSSIBLE=y
655# CONFIG_MFD_SM501 is not set 669# CONFIG_MFD_SM501 is not set
656# CONFIG_HTC_PASIC3 is not set 670# CONFIG_HTC_PASIC3 is not set
657# CONFIG_MFD_TMIO is not set 671# CONFIG_MFD_TMIO is not set
658# CONFIG_MFD_WM8400 is not set 672# CONFIG_REGULATOR is not set
659 673
660# 674#
661# Multimedia devices 675# Multimedia devices
@@ -689,6 +703,7 @@ CONFIG_SSB_POSSIBLE=y
689# CONFIG_SOUND is not set 703# CONFIG_SOUND is not set
690# CONFIG_HID_SUPPORT is not set 704# CONFIG_HID_SUPPORT is not set
691# CONFIG_USB_SUPPORT is not set 705# CONFIG_USB_SUPPORT is not set
706# CONFIG_UWB is not set
692# CONFIG_MMC is not set 707# CONFIG_MMC is not set
693# CONFIG_MEMSTICK is not set 708# CONFIG_MEMSTICK is not set
694# CONFIG_NEW_LEDS is not set 709# CONFIG_NEW_LEDS is not set
@@ -746,10 +761,7 @@ CONFIG_TMPFS=y
746# CONFIG_HUGETLBFS is not set 761# CONFIG_HUGETLBFS is not set
747# CONFIG_HUGETLB_PAGE is not set 762# CONFIG_HUGETLB_PAGE is not set
748# CONFIG_CONFIGFS_FS is not set 763# CONFIG_CONFIGFS_FS is not set
749 764CONFIG_MISC_FILESYSTEMS=y
750#
751# Miscellaneous filesystems
752#
753# CONFIG_ADFS_FS is not set 765# CONFIG_ADFS_FS is not set
754# CONFIG_AFFS_FS is not set 766# CONFIG_AFFS_FS is not set
755# CONFIG_HFS_FS is not set 767# CONFIG_HFS_FS is not set
@@ -801,13 +813,19 @@ CONFIG_FRAME_WARN=1024
801# CONFIG_DEBUG_MEMORY_INIT is not set 813# CONFIG_DEBUG_MEMORY_INIT is not set
802# CONFIG_RCU_CPU_STALL_DETECTOR is not set 814# CONFIG_RCU_CPU_STALL_DETECTOR is not set
803# CONFIG_LATENCYTOP is not set 815# CONFIG_LATENCYTOP is not set
804CONFIG_NOP_TRACER=y 816CONFIG_HAVE_FUNCTION_TRACER=y
805CONFIG_HAVE_FTRACE=y 817CONFIG_HAVE_DYNAMIC_FTRACE=y
818CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
819
820#
821# Tracers
822#
806# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 823# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
807# CONFIG_SAMPLES is not set 824# CONFIG_SAMPLES is not set
825CONFIG_HAVE_ARCH_KGDB=y
808# CONFIG_SH_STANDARD_BIOS is not set 826# CONFIG_SH_STANDARD_BIOS is not set
809# CONFIG_EARLY_SCIF_CONSOLE is not set 827# CONFIG_EARLY_SCIF_CONSOLE is not set
810# CONFIG_SH_KGDB is not set 828# CONFIG_MORE_COMPILE_OPTIONS is not set
811 829
812# 830#
813# Security options 831# Security options
@@ -822,6 +840,7 @@ CONFIG_HAVE_FTRACE=y
822# Library routines 840# Library routines
823# 841#
824CONFIG_BITREVERSE=y 842CONFIG_BITREVERSE=y
843CONFIG_GENERIC_FIND_LAST_BIT=y
825# CONFIG_CRC_CCITT is not set 844# CONFIG_CRC_CCITT is not set
826# CONFIG_CRC16 is not set 845# CONFIG_CRC16 is not set
827# CONFIG_CRC_T10DIF is not set 846# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/systemh_defconfig b/arch/sh/configs/systemh_defconfig
index 1711f0f70d72..72703bf57afa 100644
--- a/arch/sh/configs/systemh_defconfig
+++ b/arch/sh/configs/systemh_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:56:48 2008 4# Fri Jan 9 18:15:56 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_STACKTRACE_SUPPORT=y 21CONFIG_STACKTRACE_SUPPORT=y
20CONFIG_LOCKDEP_SUPPORT=y 22CONFIG_LOCKDEP_SUPPORT=y
21CONFIG_HAVE_LATENCYTOP_SUPPORT=y 23CONFIG_HAVE_LATENCYTOP_SUPPORT=y
@@ -68,12 +70,10 @@ CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 70CONFIG_SHMEM=y
69CONFIG_AIO=y 71CONFIG_AIO=y
70CONFIG_VM_EVENT_COUNTERS=y 72CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_PCI_QUIRKS=y
72CONFIG_SLAB=y 73CONFIG_SLAB=y
73# CONFIG_SLUB is not set 74# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 75# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set 76# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y 77CONFIG_HAVE_OPROFILE=y
78# CONFIG_KPROBES is not set 78# CONFIG_KPROBES is not set
79CONFIG_HAVE_IOREMAP_PROT=y 79CONFIG_HAVE_IOREMAP_PROT=y
@@ -84,7 +84,6 @@ CONFIG_HAVE_CLK=y
84CONFIG_HAVE_GENERIC_DMA_COHERENT=y 84CONFIG_HAVE_GENERIC_DMA_COHERENT=y
85CONFIG_SLABINFO=y 85CONFIG_SLABINFO=y
86CONFIG_RT_MUTEXES=y 86CONFIG_RT_MUTEXES=y
87# CONFIG_TINY_SHMEM is not set
88CONFIG_BASE_SMALL=0 87CONFIG_BASE_SMALL=0
89CONFIG_MODULES=y 88CONFIG_MODULES=y
90# CONFIG_MODULE_FORCE_LOAD is not set 89# CONFIG_MODULE_FORCE_LOAD is not set
@@ -92,11 +91,9 @@ CONFIG_MODULE_UNLOAD=y
92# CONFIG_MODULE_FORCE_UNLOAD is not set 91# CONFIG_MODULE_FORCE_UNLOAD is not set
93# CONFIG_MODVERSIONS is not set 92# CONFIG_MODVERSIONS is not set
94# CONFIG_MODULE_SRCVERSION_ALL is not set 93# CONFIG_MODULE_SRCVERSION_ALL is not set
95CONFIG_KMOD=y
96CONFIG_BLOCK=y 94CONFIG_BLOCK=y
97# CONFIG_LBD is not set 95# CONFIG_LBD is not set
98# CONFIG_BLK_DEV_IO_TRACE is not set 96# CONFIG_BLK_DEV_IO_TRACE is not set
99# CONFIG_LSF is not set
100# CONFIG_BLK_DEV_BSG is not set 97# CONFIG_BLK_DEV_BSG is not set
101# CONFIG_BLK_DEV_INTEGRITY is not set 98# CONFIG_BLK_DEV_INTEGRITY is not set
102 99
@@ -113,6 +110,10 @@ CONFIG_DEFAULT_AS=y
113# CONFIG_DEFAULT_NOOP is not set 110# CONFIG_DEFAULT_NOOP is not set
114CONFIG_DEFAULT_IOSCHED="anticipatory" 111CONFIG_DEFAULT_IOSCHED="anticipatory"
115CONFIG_CLASSIC_RCU=y 112CONFIG_CLASSIC_RCU=y
113# CONFIG_TREE_RCU is not set
114# CONFIG_PREEMPT_RCU is not set
115# CONFIG_TREE_RCU_TRACE is not set
116# CONFIG_PREEMPT_RCU_TRACE is not set
116# CONFIG_FREEZER is not set 117# CONFIG_FREEZER is not set
117 118
118# 119#
@@ -120,6 +121,7 @@ CONFIG_CLASSIC_RCU=y
120# 121#
121CONFIG_CPU_SH4=y 122CONFIG_CPU_SH4=y
122# CONFIG_CPU_SUBTYPE_SH7619 is not set 123# CONFIG_CPU_SUBTYPE_SH7619 is not set
124# CONFIG_CPU_SUBTYPE_SH7201 is not set
123# CONFIG_CPU_SUBTYPE_SH7203 is not set 125# CONFIG_CPU_SUBTYPE_SH7203 is not set
124# CONFIG_CPU_SUBTYPE_SH7206 is not set 126# CONFIG_CPU_SUBTYPE_SH7206 is not set
125# CONFIG_CPU_SUBTYPE_SH7263 is not set 127# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -183,7 +185,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
183CONFIG_SPARSEMEM_STATIC=y 185CONFIG_SPARSEMEM_STATIC=y
184CONFIG_PAGEFLAGS_EXTENDED=y 186CONFIG_PAGEFLAGS_EXTENDED=y
185CONFIG_SPLIT_PTLOCK_CPUS=4 187CONFIG_SPLIT_PTLOCK_CPUS=4
186# CONFIG_RESOURCES_64BIT is not set
187# CONFIG_PHYS_ADDR_T_64BIT is not set 188# CONFIG_PHYS_ADDR_T_64BIT is not set
188CONFIG_ZONE_DMA_FLAG=0 189CONFIG_ZONE_DMA_FLAG=0
189CONFIG_NR_QUICK=2 190CONFIG_NR_QUICK=2
@@ -264,7 +265,6 @@ CONFIG_HZ=250
264# CONFIG_PREEMPT_NONE is not set 265# CONFIG_PREEMPT_NONE is not set
265# CONFIG_PREEMPT_VOLUNTARY is not set 266# CONFIG_PREEMPT_VOLUNTARY is not set
266CONFIG_PREEMPT=y 267CONFIG_PREEMPT=y
267# CONFIG_PREEMPT_RCU is not set
268CONFIG_GUSA=y 268CONFIG_GUSA=y
269# CONFIG_GUSA_RB is not set 269# CONFIG_GUSA_RB is not set
270 270
@@ -288,6 +288,12 @@ CONFIG_BINFMT_ELF=y
288# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 288# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
289# CONFIG_HAVE_AOUT is not set 289# CONFIG_HAVE_AOUT is not set
290# CONFIG_BINFMT_MISC is not set 290# CONFIG_BINFMT_MISC is not set
291
292#
293# Power management options (EXPERIMENTAL)
294#
295# CONFIG_PM is not set
296# CONFIG_CPU_IDLE is not set
291# CONFIG_NET is not set 297# CONFIG_NET is not set
292 298
293# 299#
@@ -314,6 +320,7 @@ CONFIG_BLK_DEV_RAM_SIZE=1024
314CONFIG_MISC_DEVICES=y 320CONFIG_MISC_DEVICES=y
315# CONFIG_EEPROM_93CX6 is not set 321# CONFIG_EEPROM_93CX6 is not set
316# CONFIG_ENCLOSURE_SERVICES is not set 322# CONFIG_ENCLOSURE_SERVICES is not set
323# CONFIG_C2PORT is not set
317CONFIG_HAVE_IDE=y 324CONFIG_HAVE_IDE=y
318# CONFIG_IDE is not set 325# CONFIG_IDE is not set
319 326
@@ -360,6 +367,7 @@ CONFIG_DEVKMEM=y
360# 367#
361# CONFIG_SERIAL_SH_SCI is not set 368# CONFIG_SERIAL_SH_SCI is not set
362CONFIG_UNIX98_PTYS=y 369CONFIG_UNIX98_PTYS=y
370# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
363CONFIG_LEGACY_PTYS=y 371CONFIG_LEGACY_PTYS=y
364CONFIG_LEGACY_PTY_COUNT=256 372CONFIG_LEGACY_PTY_COUNT=256
365# CONFIG_IPMI_HANDLER is not set 373# CONFIG_IPMI_HANDLER is not set
@@ -387,11 +395,11 @@ CONFIG_HWMON=y
387# CONFIG_THERMAL is not set 395# CONFIG_THERMAL is not set
388# CONFIG_THERMAL_HWMON is not set 396# CONFIG_THERMAL_HWMON is not set
389# CONFIG_WATCHDOG is not set 397# CONFIG_WATCHDOG is not set
398CONFIG_SSB_POSSIBLE=y
390 399
391# 400#
392# Sonics Silicon Backplane 401# Sonics Silicon Backplane
393# 402#
394CONFIG_SSB_POSSIBLE=y
395# CONFIG_SSB is not set 403# CONFIG_SSB is not set
396 404
397# 405#
@@ -401,7 +409,7 @@ CONFIG_SSB_POSSIBLE=y
401# CONFIG_MFD_SM501 is not set 409# CONFIG_MFD_SM501 is not set
402# CONFIG_HTC_PASIC3 is not set 410# CONFIG_HTC_PASIC3 is not set
403# CONFIG_MFD_TMIO is not set 411# CONFIG_MFD_TMIO is not set
404# CONFIG_MFD_WM8400 is not set 412# CONFIG_REGULATOR is not set
405 413
406# 414#
407# Multimedia devices 415# Multimedia devices
@@ -444,7 +452,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
444# 452#
445 453
446# 454#
447# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 455# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
448# 456#
449# CONFIG_USB_GADGET is not set 457# CONFIG_USB_GADGET is not set
450# CONFIG_MMC is not set 458# CONFIG_MMC is not set
@@ -501,10 +509,7 @@ CONFIG_TMPFS=y
501# CONFIG_HUGETLBFS is not set 509# CONFIG_HUGETLBFS is not set
502# CONFIG_HUGETLB_PAGE is not set 510# CONFIG_HUGETLB_PAGE is not set
503# CONFIG_CONFIGFS_FS is not set 511# CONFIG_CONFIGFS_FS is not set
504 512CONFIG_MISC_FILESYSTEMS=y
505#
506# Miscellaneous filesystems
507#
508# CONFIG_ADFS_FS is not set 513# CONFIG_ADFS_FS is not set
509# CONFIG_AFFS_FS is not set 514# CONFIG_AFFS_FS is not set
510# CONFIG_HFS_FS is not set 515# CONFIG_HFS_FS is not set
@@ -546,13 +551,19 @@ CONFIG_FRAME_WARN=1024
546# CONFIG_DEBUG_MEMORY_INIT is not set 551# CONFIG_DEBUG_MEMORY_INIT is not set
547# CONFIG_RCU_CPU_STALL_DETECTOR is not set 552# CONFIG_RCU_CPU_STALL_DETECTOR is not set
548# CONFIG_LATENCYTOP is not set 553# CONFIG_LATENCYTOP is not set
549CONFIG_NOP_TRACER=y 554CONFIG_HAVE_FUNCTION_TRACER=y
550CONFIG_HAVE_FTRACE=y 555CONFIG_HAVE_DYNAMIC_FTRACE=y
556CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
557
558#
559# Tracers
560#
551# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 561# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
552# CONFIG_SAMPLES is not set 562# CONFIG_SAMPLES is not set
563CONFIG_HAVE_ARCH_KGDB=y
553# CONFIG_SH_STANDARD_BIOS is not set 564# CONFIG_SH_STANDARD_BIOS is not set
554# CONFIG_EARLY_SCIF_CONSOLE is not set 565# CONFIG_EARLY_SCIF_CONSOLE is not set
555# CONFIG_SH_KGDB is not set 566# CONFIG_MORE_COMPILE_OPTIONS is not set
556 567
557# 568#
558# Security options 569# Security options
@@ -567,6 +578,7 @@ CONFIG_HAVE_FTRACE=y
567# Library routines 578# Library routines
568# 579#
569CONFIG_BITREVERSE=y 580CONFIG_BITREVERSE=y
581CONFIG_GENERIC_FIND_LAST_BIT=y
570# CONFIG_CRC_CCITT is not set 582# CONFIG_CRC_CCITT is not set
571# CONFIG_CRC16 is not set 583# CONFIG_CRC16 is not set
572# CONFIG_CRC_T10DIF is not set 584# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defconfig
index ea3c5e838fc3..01fc1defb33b 100644
--- a/arch/sh/configs/titan_defconfig
+++ b/arch/sh/configs/titan_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.27 3# Linux kernel version: 2.6.28
4# Wed Oct 22 19:58:12 2008 4# Fri Jan 9 18:17:19 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_PCI=y 21CONFIG_SYS_SUPPORTS_PCI=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -79,7 +81,6 @@ CONFIG_SLAB=y
79# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
80# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
81# CONFIG_PROFILING is not set 83# CONFIG_PROFILING is not set
82# CONFIG_MARKERS is not set
83CONFIG_HAVE_OPROFILE=y 84CONFIG_HAVE_OPROFILE=y
84# CONFIG_KPROBES is not set 85# CONFIG_KPROBES is not set
85CONFIG_HAVE_IOREMAP_PROT=y 86CONFIG_HAVE_IOREMAP_PROT=y
@@ -90,7 +91,6 @@ CONFIG_HAVE_CLK=y
90CONFIG_HAVE_GENERIC_DMA_COHERENT=y 91CONFIG_HAVE_GENERIC_DMA_COHERENT=y
91CONFIG_SLABINFO=y 92CONFIG_SLABINFO=y
92CONFIG_RT_MUTEXES=y 93CONFIG_RT_MUTEXES=y
93# CONFIG_TINY_SHMEM is not set
94CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
95CONFIG_MODULES=y 95CONFIG_MODULES=y
96# CONFIG_MODULE_FORCE_LOAD is not set 96# CONFIG_MODULE_FORCE_LOAD is not set
@@ -98,11 +98,9 @@ CONFIG_MODULE_UNLOAD=y
98CONFIG_MODULE_FORCE_UNLOAD=y 98CONFIG_MODULE_FORCE_UNLOAD=y
99# CONFIG_MODVERSIONS is not set 99# CONFIG_MODVERSIONS is not set
100# CONFIG_MODULE_SRCVERSION_ALL is not set 100# CONFIG_MODULE_SRCVERSION_ALL is not set
101CONFIG_KMOD=y
102CONFIG_BLOCK=y 101CONFIG_BLOCK=y
103# CONFIG_LBD is not set 102# CONFIG_LBD is not set
104# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
105# CONFIG_LSF is not set
106# CONFIG_BLK_DEV_BSG is not set 104# CONFIG_BLK_DEV_BSG is not set
107# CONFIG_BLK_DEV_INTEGRITY is not set 105# CONFIG_BLK_DEV_INTEGRITY is not set
108 106
@@ -119,6 +117,10 @@ CONFIG_DEFAULT_AS=y
119# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
120CONFIG_DEFAULT_IOSCHED="anticipatory" 118CONFIG_DEFAULT_IOSCHED="anticipatory"
121CONFIG_CLASSIC_RCU=y 119CONFIG_CLASSIC_RCU=y
120# CONFIG_TREE_RCU is not set
121# CONFIG_PREEMPT_RCU is not set
122# CONFIG_TREE_RCU_TRACE is not set
123# CONFIG_PREEMPT_RCU_TRACE is not set
122# CONFIG_FREEZER is not set 124# CONFIG_FREEZER is not set
123 125
124# 126#
@@ -126,6 +128,7 @@ CONFIG_CLASSIC_RCU=y
126# 128#
127CONFIG_CPU_SH4=y 129CONFIG_CPU_SH4=y
128# CONFIG_CPU_SUBTYPE_SH7619 is not set 130# CONFIG_CPU_SUBTYPE_SH7619 is not set
131# CONFIG_CPU_SUBTYPE_SH7201 is not set
129# CONFIG_CPU_SUBTYPE_SH7203 is not set 132# CONFIG_CPU_SUBTYPE_SH7203 is not set
130# CONFIG_CPU_SUBTYPE_SH7206 is not set 133# CONFIG_CPU_SUBTYPE_SH7206 is not set
131# CONFIG_CPU_SUBTYPE_SH7263 is not set 134# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -189,7 +192,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
189CONFIG_SPARSEMEM_STATIC=y 192CONFIG_SPARSEMEM_STATIC=y
190CONFIG_PAGEFLAGS_EXTENDED=y 193CONFIG_PAGEFLAGS_EXTENDED=y
191CONFIG_SPLIT_PTLOCK_CPUS=4 194CONFIG_SPLIT_PTLOCK_CPUS=4
192# CONFIG_RESOURCES_64BIT is not set
193# CONFIG_PHYS_ADDR_T_64BIT is not set 195# CONFIG_PHYS_ADDR_T_64BIT is not set
194CONFIG_ZONE_DMA_FLAG=0 196CONFIG_ZONE_DMA_FLAG=0
195CONFIG_NR_QUICK=2 197CONFIG_NR_QUICK=2
@@ -293,6 +295,7 @@ CONFIG_PCI=y
293CONFIG_SH_PCIDMA_NONCOHERENT=y 295CONFIG_SH_PCIDMA_NONCOHERENT=y
294CONFIG_PCI_AUTO=y 296CONFIG_PCI_AUTO=y
295CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 297CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
298# CONFIG_PCIEPORTBUS is not set
296# CONFIG_ARCH_SUPPORTS_MSI is not set 299# CONFIG_ARCH_SUPPORTS_MSI is not set
297CONFIG_PCI_LEGACY=y 300CONFIG_PCI_LEGACY=y
298# CONFIG_PCI_DEBUG is not set 301# CONFIG_PCI_DEBUG is not set
@@ -309,11 +312,18 @@ CONFIG_BINFMT_ELF=y
309# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 312# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
310# CONFIG_HAVE_AOUT is not set 313# CONFIG_HAVE_AOUT is not set
311# CONFIG_BINFMT_MISC is not set 314# CONFIG_BINFMT_MISC is not set
315
316#
317# Power management options (EXPERIMENTAL)
318#
319# CONFIG_PM is not set
320# CONFIG_CPU_IDLE is not set
312CONFIG_NET=y 321CONFIG_NET=y
313 322
314# 323#
315# Networking options 324# Networking options
316# 325#
326CONFIG_COMPAT_NET_DEV_OPS=y
317CONFIG_PACKET=y 327CONFIG_PACKET=y
318CONFIG_PACKET_MMAP=y 328CONFIG_PACKET_MMAP=y
319CONFIG_UNIX=y 329CONFIG_UNIX=y
@@ -507,6 +517,7 @@ CONFIG_NET_SCH_TBF=m
507CONFIG_NET_SCH_GRED=m 517CONFIG_NET_SCH_GRED=m
508CONFIG_NET_SCH_DSMARK=m 518CONFIG_NET_SCH_DSMARK=m
509CONFIG_NET_SCH_NETEM=m 519CONFIG_NET_SCH_NETEM=m
520# CONFIG_NET_SCH_DRR is not set
510CONFIG_NET_SCH_INGRESS=m 521CONFIG_NET_SCH_INGRESS=m
511 522
512# 523#
@@ -543,6 +554,7 @@ CONFIG_NET_ACT_PEDIT=m
543# CONFIG_NET_ACT_SKBEDIT is not set 554# CONFIG_NET_ACT_SKBEDIT is not set
544CONFIG_NET_CLS_IND=y 555CONFIG_NET_CLS_IND=y
545CONFIG_NET_SCH_FIFO=y 556CONFIG_NET_SCH_FIFO=y
557# CONFIG_DCB is not set
546 558
547# 559#
548# Network testing 560# Network testing
@@ -560,12 +572,8 @@ CONFIG_WIRELESS=y
560# CONFIG_WIRELESS_OLD_REGULATORY is not set 572# CONFIG_WIRELESS_OLD_REGULATORY is not set
561CONFIG_WIRELESS_EXT=y 573CONFIG_WIRELESS_EXT=y
562CONFIG_WIRELESS_EXT_SYSFS=y 574CONFIG_WIRELESS_EXT_SYSFS=y
575# CONFIG_LIB80211 is not set
563# CONFIG_MAC80211 is not set 576# CONFIG_MAC80211 is not set
564CONFIG_IEEE80211=y
565# CONFIG_IEEE80211_DEBUG is not set
566CONFIG_IEEE80211_CRYPT_WEP=y
567CONFIG_IEEE80211_CRYPT_CCMP=y
568CONFIG_IEEE80211_CRYPT_TKIP=y
569# CONFIG_RFKILL is not set 577# CONFIG_RFKILL is not set
570# CONFIG_NET_9P is not set 578# CONFIG_NET_9P is not set
571 579
@@ -695,6 +703,7 @@ CONFIG_MISC_DEVICES=y
695# CONFIG_TIFM_CORE is not set 703# CONFIG_TIFM_CORE is not set
696# CONFIG_ENCLOSURE_SERVICES is not set 704# CONFIG_ENCLOSURE_SERVICES is not set
697# CONFIG_HP_ILO is not set 705# CONFIG_HP_ILO is not set
706# CONFIG_C2PORT is not set
698CONFIG_HAVE_IDE=y 707CONFIG_HAVE_IDE=y
699# CONFIG_IDE is not set 708# CONFIG_IDE is not set
700 709
@@ -738,6 +747,7 @@ CONFIG_SCSI_WAIT_SCAN=m
738# CONFIG_SCSI_SRP_ATTRS is not set 747# CONFIG_SCSI_SRP_ATTRS is not set
739CONFIG_SCSI_LOWLEVEL=y 748CONFIG_SCSI_LOWLEVEL=y
740# CONFIG_ISCSI_TCP is not set 749# CONFIG_ISCSI_TCP is not set
750# CONFIG_SCSI_CXGB3_ISCSI is not set
741# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 751# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
742# CONFIG_SCSI_3W_9XXX is not set 752# CONFIG_SCSI_3W_9XXX is not set
743# CONFIG_SCSI_ACARD is not set 753# CONFIG_SCSI_ACARD is not set
@@ -751,6 +761,8 @@ CONFIG_SCSI_LOWLEVEL=y
751# CONFIG_MEGARAID_LEGACY is not set 761# CONFIG_MEGARAID_LEGACY is not set
752# CONFIG_MEGARAID_SAS is not set 762# CONFIG_MEGARAID_SAS is not set
753# CONFIG_SCSI_HPTIOP is not set 763# CONFIG_SCSI_HPTIOP is not set
764# CONFIG_LIBFC is not set
765# CONFIG_FCOE is not set
754# CONFIG_SCSI_DMX3191D is not set 766# CONFIG_SCSI_DMX3191D is not set
755# CONFIG_SCSI_FUTURE_DOMAIN is not set 767# CONFIG_SCSI_FUTURE_DOMAIN is not set
756# CONFIG_SCSI_IPS is not set 768# CONFIG_SCSI_IPS is not set
@@ -807,6 +819,9 @@ CONFIG_CICADA_PHY=m
807# CONFIG_BROADCOM_PHY is not set 819# CONFIG_BROADCOM_PHY is not set
808# CONFIG_ICPLUS_PHY is not set 820# CONFIG_ICPLUS_PHY is not set
809# CONFIG_REALTEK_PHY is not set 821# CONFIG_REALTEK_PHY is not set
822# CONFIG_NATIONAL_PHY is not set
823# CONFIG_STE10XP is not set
824# CONFIG_LSI_ET1011C_PHY is not set
810# CONFIG_MDIO_BITBANG is not set 825# CONFIG_MDIO_BITBANG is not set
811CONFIG_NET_ETHERNET=y 826CONFIG_NET_ETHERNET=y
812CONFIG_MII=y 827CONFIG_MII=y
@@ -818,6 +833,7 @@ CONFIG_MII=y
818# CONFIG_NET_VENDOR_3COM is not set 833# CONFIG_NET_VENDOR_3COM is not set
819# CONFIG_SMC91X is not set 834# CONFIG_SMC91X is not set
820# CONFIG_SMC911X is not set 835# CONFIG_SMC911X is not set
836# CONFIG_SMSC911X is not set
821# CONFIG_NET_TULIP is not set 837# CONFIG_NET_TULIP is not set
822# CONFIG_HP100 is not set 838# CONFIG_HP100 is not set
823# CONFIG_IBM_NEW_EMAC_ZMII is not set 839# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -833,7 +849,6 @@ CONFIG_NET_PCI=y
833# CONFIG_ADAPTEC_STARFIRE is not set 849# CONFIG_ADAPTEC_STARFIRE is not set
834# CONFIG_B44 is not set 850# CONFIG_B44 is not set
835# CONFIG_FORCEDETH is not set 851# CONFIG_FORCEDETH is not set
836# CONFIG_EEPRO100 is not set
837# CONFIG_E100 is not set 852# CONFIG_E100 is not set
838# CONFIG_FEALNX is not set 853# CONFIG_FEALNX is not set
839# CONFIG_NATSEMI is not set 854# CONFIG_NATSEMI is not set
@@ -847,6 +862,7 @@ CONFIG_8139_OLD_RX_RESET=y
847# CONFIG_R6040 is not set 862# CONFIG_R6040 is not set
848# CONFIG_SIS900 is not set 863# CONFIG_SIS900 is not set
849# CONFIG_EPIC100 is not set 864# CONFIG_EPIC100 is not set
865# CONFIG_SMSC9420 is not set
850# CONFIG_SUNDANCE is not set 866# CONFIG_SUNDANCE is not set
851# CONFIG_TLAN is not set 867# CONFIG_TLAN is not set
852# CONFIG_VIA_RHINE is not set 868# CONFIG_VIA_RHINE is not set
@@ -875,6 +891,7 @@ CONFIG_NETDEV_1000=y
875# CONFIG_JME is not set 891# CONFIG_JME is not set
876CONFIG_NETDEV_10000=y 892CONFIG_NETDEV_10000=y
877# CONFIG_CHELSIO_T1 is not set 893# CONFIG_CHELSIO_T1 is not set
894CONFIG_CHELSIO_T3_DEPENDS=y
878# CONFIG_CHELSIO_T3 is not set 895# CONFIG_CHELSIO_T3 is not set
879# CONFIG_ENIC is not set 896# CONFIG_ENIC is not set
880# CONFIG_IXGBE is not set 897# CONFIG_IXGBE is not set
@@ -883,6 +900,7 @@ CONFIG_NETDEV_10000=y
883# CONFIG_MYRI10GE is not set 900# CONFIG_MYRI10GE is not set
884# CONFIG_NETXEN_NIC is not set 901# CONFIG_NETXEN_NIC is not set
885# CONFIG_NIU is not set 902# CONFIG_NIU is not set
903# CONFIG_MLX4_EN is not set
886# CONFIG_MLX4_CORE is not set 904# CONFIG_MLX4_CORE is not set
887# CONFIG_TEHUTI is not set 905# CONFIG_TEHUTI is not set
888# CONFIG_BNX2X is not set 906# CONFIG_BNX2X is not set
@@ -1002,6 +1020,7 @@ CONFIG_SERIAL_CORE=y
1002CONFIG_SERIAL_CORE_CONSOLE=y 1020CONFIG_SERIAL_CORE_CONSOLE=y
1003# CONFIG_SERIAL_JSM is not set 1021# CONFIG_SERIAL_JSM is not set
1004CONFIG_UNIX98_PTYS=y 1022CONFIG_UNIX98_PTYS=y
1023# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
1005CONFIG_LEGACY_PTYS=y 1024CONFIG_LEGACY_PTYS=y
1006CONFIG_LEGACY_PTY_COUNT=256 1025CONFIG_LEGACY_PTY_COUNT=256
1007# CONFIG_IPMI_HANDLER is not set 1026# CONFIG_IPMI_HANDLER is not set
@@ -1055,11 +1074,11 @@ CONFIG_SH_WDT=m
1055# USB-based Watchdog Cards 1074# USB-based Watchdog Cards
1056# 1075#
1057# CONFIG_USBPCWATCHDOG is not set 1076# CONFIG_USBPCWATCHDOG is not set
1077CONFIG_SSB_POSSIBLE=y
1058 1078
1059# 1079#
1060# Sonics Silicon Backplane 1080# Sonics Silicon Backplane
1061# 1081#
1062CONFIG_SSB_POSSIBLE=y
1063# CONFIG_SSB is not set 1082# CONFIG_SSB is not set
1064 1083
1065# 1084#
@@ -1069,7 +1088,7 @@ CONFIG_SSB_POSSIBLE=y
1069# CONFIG_MFD_SM501 is not set 1088# CONFIG_MFD_SM501 is not set
1070# CONFIG_HTC_PASIC3 is not set 1089# CONFIG_HTC_PASIC3 is not set
1071# CONFIG_MFD_TMIO is not set 1090# CONFIG_MFD_TMIO is not set
1072# CONFIG_MFD_WM8400 is not set 1091# CONFIG_REGULATOR is not set
1073 1092
1074# 1093#
1075# Multimedia devices 1094# Multimedia devices
@@ -1145,6 +1164,8 @@ CONFIG_USB_DEVICE_CLASS=y
1145# CONFIG_USB_OTG_WHITELIST is not set 1164# CONFIG_USB_OTG_WHITELIST is not set
1146# CONFIG_USB_OTG_BLACKLIST_HUB is not set 1165# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1147CONFIG_USB_MON=y 1166CONFIG_USB_MON=y
1167# CONFIG_USB_WUSB is not set
1168# CONFIG_USB_WUSB_CBAF is not set
1148 1169
1149# 1170#
1150# USB Host Controller Drivers 1171# USB Host Controller Drivers
@@ -1162,6 +1183,8 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1162# CONFIG_USB_UHCI_HCD is not set 1183# CONFIG_USB_UHCI_HCD is not set
1163# CONFIG_USB_SL811_HCD is not set 1184# CONFIG_USB_SL811_HCD is not set
1164# CONFIG_USB_R8A66597_HCD is not set 1185# CONFIG_USB_R8A66597_HCD is not set
1186# CONFIG_USB_WHCI_HCD is not set
1187# CONFIG_USB_HWA_HCD is not set
1165 1188
1166# 1189#
1167# USB Device Class drivers 1190# USB Device Class drivers
@@ -1172,11 +1195,11 @@ CONFIG_USB_PRINTER=m
1172# CONFIG_USB_TMC is not set 1195# CONFIG_USB_TMC is not set
1173 1196
1174# 1197#
1175# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1198# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
1176# 1199#
1177 1200
1178# 1201#
1179# may also be needed; see USB_STORAGE Help for more information 1202# see USB_STORAGE Help for more information
1180# 1203#
1181CONFIG_USB_STORAGE=y 1204CONFIG_USB_STORAGE=y
1182# CONFIG_USB_STORAGE_DEBUG is not set 1205# CONFIG_USB_STORAGE_DEBUG is not set
@@ -1273,6 +1296,7 @@ CONFIG_USB_SERIAL_PL2303=m
1273# CONFIG_USB_ISIGHTFW is not set 1296# CONFIG_USB_ISIGHTFW is not set
1274# CONFIG_USB_VST is not set 1297# CONFIG_USB_VST is not set
1275# CONFIG_USB_GADGET is not set 1298# CONFIG_USB_GADGET is not set
1299# CONFIG_UWB is not set
1276# CONFIG_MMC is not set 1300# CONFIG_MMC is not set
1277# CONFIG_MEMSTICK is not set 1301# CONFIG_MEMSTICK is not set
1278# CONFIG_NEW_LEDS is not set 1302# CONFIG_NEW_LEDS is not set
@@ -1379,10 +1403,7 @@ CONFIG_TMPFS=y
1379# CONFIG_HUGETLBFS is not set 1403# CONFIG_HUGETLBFS is not set
1380# CONFIG_HUGETLB_PAGE is not set 1404# CONFIG_HUGETLB_PAGE is not set
1381CONFIG_CONFIGFS_FS=m 1405CONFIG_CONFIGFS_FS=m
1382 1406CONFIG_MISC_FILESYSTEMS=y
1383#
1384# Miscellaneous filesystems
1385#
1386# CONFIG_ADFS_FS is not set 1407# CONFIG_ADFS_FS is not set
1387# CONFIG_AFFS_FS is not set 1408# CONFIG_AFFS_FS is not set
1388# CONFIG_HFS_FS is not set 1409# CONFIG_HFS_FS is not set
@@ -1530,6 +1551,7 @@ CONFIG_SCHED_DEBUG=y
1530# CONFIG_DEBUG_MEMORY_INIT is not set 1551# CONFIG_DEBUG_MEMORY_INIT is not set
1531# CONFIG_DEBUG_LIST is not set 1552# CONFIG_DEBUG_LIST is not set
1532# CONFIG_DEBUG_SG is not set 1553# CONFIG_DEBUG_SG is not set
1554# CONFIG_DEBUG_NOTIFIERS is not set
1533# CONFIG_FRAME_POINTER is not set 1555# CONFIG_FRAME_POINTER is not set
1534# CONFIG_RCU_TORTURE_TEST is not set 1556# CONFIG_RCU_TORTURE_TEST is not set
1535# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1557# CONFIG_RCU_CPU_STALL_DETECTOR is not set
@@ -1537,16 +1559,24 @@ CONFIG_SCHED_DEBUG=y
1537# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 1559# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1538# CONFIG_FAULT_INJECTION is not set 1560# CONFIG_FAULT_INJECTION is not set
1539# CONFIG_LATENCYTOP is not set 1561# CONFIG_LATENCYTOP is not set
1540CONFIG_NOP_TRACER=y 1562CONFIG_HAVE_FUNCTION_TRACER=y
1541CONFIG_HAVE_FTRACE=y 1563CONFIG_HAVE_DYNAMIC_FTRACE=y
1542# CONFIG_FTRACE is not set 1564CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1565
1566#
1567# Tracers
1568#
1569# CONFIG_FUNCTION_TRACER is not set
1543# CONFIG_IRQSOFF_TRACER is not set 1570# CONFIG_IRQSOFF_TRACER is not set
1544# CONFIG_SCHED_TRACER is not set 1571# CONFIG_SCHED_TRACER is not set
1545# CONFIG_CONTEXT_SWITCH_TRACER is not set 1572# CONFIG_CONTEXT_SWITCH_TRACER is not set
1546# CONFIG_BOOT_TRACER is not set 1573# CONFIG_BOOT_TRACER is not set
1574# CONFIG_TRACE_BRANCH_PROFILING is not set
1547# CONFIG_STACK_TRACER is not set 1575# CONFIG_STACK_TRACER is not set
1548# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1576# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1549# CONFIG_SAMPLES is not set 1577# CONFIG_SAMPLES is not set
1578CONFIG_HAVE_ARCH_KGDB=y
1579# CONFIG_KGDB is not set
1550# CONFIG_SH_STANDARD_BIOS is not set 1580# CONFIG_SH_STANDARD_BIOS is not set
1551# CONFIG_EARLY_SCIF_CONSOLE is not set 1581# CONFIG_EARLY_SCIF_CONSOLE is not set
1552# CONFIG_DEBUG_BOOTMEM is not set 1582# CONFIG_DEBUG_BOOTMEM is not set
@@ -1554,7 +1584,9 @@ CONFIG_HAVE_FTRACE=y
1554# CONFIG_DEBUG_STACK_USAGE is not set 1584# CONFIG_DEBUG_STACK_USAGE is not set
1555# CONFIG_4KSTACKS is not set 1585# CONFIG_4KSTACKS is not set
1556# CONFIG_IRQSTACKS is not set 1586# CONFIG_IRQSTACKS is not set
1557# CONFIG_SH_KGDB is not set 1587# CONFIG_DUMP_CODE is not set
1588# CONFIG_SH_NO_BSS_INIT is not set
1589# CONFIG_MORE_COMPILE_OPTIONS is not set
1558 1590
1559# 1591#
1560# Security options 1592# Security options
@@ -1570,11 +1602,16 @@ CONFIG_CRYPTO=y
1570# 1602#
1571# CONFIG_CRYPTO_FIPS is not set 1603# CONFIG_CRYPTO_FIPS is not set
1572CONFIG_CRYPTO_ALGAPI=y 1604CONFIG_CRYPTO_ALGAPI=y
1605CONFIG_CRYPTO_ALGAPI2=y
1573CONFIG_CRYPTO_AEAD=y 1606CONFIG_CRYPTO_AEAD=y
1607CONFIG_CRYPTO_AEAD2=y
1574CONFIG_CRYPTO_BLKCIPHER=y 1608CONFIG_CRYPTO_BLKCIPHER=y
1609CONFIG_CRYPTO_BLKCIPHER2=y
1575CONFIG_CRYPTO_HASH=y 1610CONFIG_CRYPTO_HASH=y
1576CONFIG_CRYPTO_RNG=y 1611CONFIG_CRYPTO_HASH2=y
1612CONFIG_CRYPTO_RNG2=y
1577CONFIG_CRYPTO_MANAGER=y 1613CONFIG_CRYPTO_MANAGER=y
1614CONFIG_CRYPTO_MANAGER2=y
1578# CONFIG_CRYPTO_GF128MUL is not set 1615# CONFIG_CRYPTO_GF128MUL is not set
1579CONFIG_CRYPTO_NULL=m 1616CONFIG_CRYPTO_NULL=m
1580# CONFIG_CRYPTO_CRYPTD is not set 1617# CONFIG_CRYPTO_CRYPTD is not set
@@ -1659,6 +1696,7 @@ CONFIG_CRYPTO_HW=y
1659# Library routines 1696# Library routines
1660# 1697#
1661CONFIG_BITREVERSE=y 1698CONFIG_BITREVERSE=y
1699CONFIG_GENERIC_FIND_LAST_BIT=y
1662CONFIG_CRC_CCITT=m 1700CONFIG_CRC_CCITT=m
1663CONFIG_CRC16=m 1701CONFIG_CRC16=m
1664# CONFIG_CRC_T10DIF is not set 1702# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/configs/ul2_defconfig b/arch/sh/configs/ul2_defconfig
index 9afff67d9ff2..27f968a959f8 100644
--- a/arch/sh/configs/ul2_defconfig
+++ b/arch/sh/configs/ul2_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.28-rc2 3# Linux kernel version: 2.6.28
4# Tue Oct 28 17:35:17 2008 4# Fri Jan 9 18:22:53 2009
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y 7CONFIG_SUPERH32=y
@@ -16,6 +16,8 @@ CONFIG_GENERIC_IRQ_PROBE=y
16# CONFIG_GENERIC_GPIO is not set 16# CONFIG_GENERIC_GPIO is not set
17CONFIG_GENERIC_TIME=y 17CONFIG_GENERIC_TIME=y
18CONFIG_GENERIC_CLOCKEVENTS=y 18CONFIG_GENERIC_CLOCKEVENTS=y
19# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
20# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
19CONFIG_SYS_SUPPORTS_NUMA=y 21CONFIG_SYS_SUPPORTS_NUMA=y
20CONFIG_STACKTRACE_SUPPORT=y 22CONFIG_STACKTRACE_SUPPORT=y
21CONFIG_LOCKDEP_SUPPORT=y 23CONFIG_LOCKDEP_SUPPORT=y
@@ -80,7 +82,6 @@ CONFIG_SLUB_DEBUG=y
80CONFIG_SLUB=y 82CONFIG_SLUB=y
81# CONFIG_SLOB is not set 83# CONFIG_SLOB is not set
82CONFIG_PROFILING=y 84CONFIG_PROFILING=y
83# CONFIG_MARKERS is not set
84# CONFIG_OPROFILE is not set 85# CONFIG_OPROFILE is not set
85CONFIG_HAVE_OPROFILE=y 86CONFIG_HAVE_OPROFILE=y
86# CONFIG_KPROBES is not set 87# CONFIG_KPROBES is not set
@@ -92,7 +93,6 @@ CONFIG_HAVE_CLK=y
92CONFIG_HAVE_GENERIC_DMA_COHERENT=y 93CONFIG_HAVE_GENERIC_DMA_COHERENT=y
93CONFIG_SLABINFO=y 94CONFIG_SLABINFO=y
94CONFIG_RT_MUTEXES=y 95CONFIG_RT_MUTEXES=y
95# CONFIG_TINY_SHMEM is not set
96CONFIG_BASE_SMALL=0 96CONFIG_BASE_SMALL=0
97CONFIG_MODULES=y 97CONFIG_MODULES=y
98# CONFIG_MODULE_FORCE_LOAD is not set 98# CONFIG_MODULE_FORCE_LOAD is not set
@@ -100,11 +100,9 @@ CONFIG_MODULE_UNLOAD=y
100# CONFIG_MODULE_FORCE_UNLOAD is not set 100# CONFIG_MODULE_FORCE_UNLOAD is not set
101# CONFIG_MODVERSIONS is not set 101# CONFIG_MODVERSIONS is not set
102# CONFIG_MODULE_SRCVERSION_ALL is not set 102# CONFIG_MODULE_SRCVERSION_ALL is not set
103CONFIG_KMOD=y
104CONFIG_BLOCK=y 103CONFIG_BLOCK=y
105# CONFIG_LBD is not set 104# CONFIG_LBD is not set
106# CONFIG_BLK_DEV_IO_TRACE is not set 105# CONFIG_BLK_DEV_IO_TRACE is not set
107# CONFIG_LSF is not set
108# CONFIG_BLK_DEV_BSG is not set 106# CONFIG_BLK_DEV_BSG is not set
109# CONFIG_BLK_DEV_INTEGRITY is not set 107# CONFIG_BLK_DEV_INTEGRITY is not set
110 108
@@ -121,6 +119,10 @@ CONFIG_IOSCHED_NOOP=y
121CONFIG_DEFAULT_NOOP=y 119CONFIG_DEFAULT_NOOP=y
122CONFIG_DEFAULT_IOSCHED="noop" 120CONFIG_DEFAULT_IOSCHED="noop"
123CONFIG_CLASSIC_RCU=y 121CONFIG_CLASSIC_RCU=y
122# CONFIG_TREE_RCU is not set
123# CONFIG_PREEMPT_RCU is not set
124# CONFIG_TREE_RCU_TRACE is not set
125# CONFIG_PREEMPT_RCU_TRACE is not set
124# CONFIG_FREEZER is not set 126# CONFIG_FREEZER is not set
125 127
126# 128#
@@ -131,6 +133,7 @@ CONFIG_CPU_SH4A=y
131CONFIG_CPU_SH4AL_DSP=y 133CONFIG_CPU_SH4AL_DSP=y
132CONFIG_CPU_SHX2=y 134CONFIG_CPU_SHX2=y
133# CONFIG_CPU_SUBTYPE_SH7619 is not set 135# CONFIG_CPU_SUBTYPE_SH7619 is not set
136# CONFIG_CPU_SUBTYPE_SH7201 is not set
134# CONFIG_CPU_SUBTYPE_SH7203 is not set 137# CONFIG_CPU_SUBTYPE_SH7203 is not set
135# CONFIG_CPU_SUBTYPE_SH7206 is not set 138# CONFIG_CPU_SUBTYPE_SH7206 is not set
136# CONFIG_CPU_SUBTYPE_SH7263 is not set 139# CONFIG_CPU_SUBTYPE_SH7263 is not set
@@ -206,7 +209,6 @@ CONFIG_SPARSEMEM_STATIC=y
206# CONFIG_MEMORY_HOTPLUG is not set 209# CONFIG_MEMORY_HOTPLUG is not set
207CONFIG_SPLIT_PTLOCK_CPUS=4 210CONFIG_SPLIT_PTLOCK_CPUS=4
208# CONFIG_MIGRATION is not set 211# CONFIG_MIGRATION is not set
209# CONFIG_RESOURCES_64BIT is not set
210# CONFIG_PHYS_ADDR_T_64BIT is not set 212# CONFIG_PHYS_ADDR_T_64BIT is not set
211CONFIG_ZONE_DMA_FLAG=0 213CONFIG_ZONE_DMA_FLAG=0
212CONFIG_NR_QUICK=2 214CONFIG_NR_QUICK=2
@@ -283,7 +285,6 @@ CONFIG_KEXEC=y
283# CONFIG_PREEMPT_NONE is not set 285# CONFIG_PREEMPT_NONE is not set
284# CONFIG_PREEMPT_VOLUNTARY is not set 286# CONFIG_PREEMPT_VOLUNTARY is not set
285CONFIG_PREEMPT=y 287CONFIG_PREEMPT=y
286# CONFIG_PREEMPT_RCU is not set
287CONFIG_GUSA=y 288CONFIG_GUSA=y
288 289
289# 290#
@@ -307,11 +308,18 @@ CONFIG_BINFMT_ELF=y
307# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 308# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
308# CONFIG_HAVE_AOUT is not set 309# CONFIG_HAVE_AOUT is not set
309# CONFIG_BINFMT_MISC is not set 310# CONFIG_BINFMT_MISC is not set
311
312#
313# Power management options (EXPERIMENTAL)
314#
315# CONFIG_PM is not set
316# CONFIG_CPU_IDLE is not set
310CONFIG_NET=y 317CONFIG_NET=y
311 318
312# 319#
313# Networking options 320# Networking options
314# 321#
322CONFIG_COMPAT_NET_DEV_OPS=y
315CONFIG_PACKET=y 323CONFIG_PACKET=y
316CONFIG_PACKET_MMAP=y 324CONFIG_PACKET_MMAP=y
317CONFIG_UNIX=y 325CONFIG_UNIX=y
@@ -367,6 +375,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
367# CONFIG_ECONET is not set 375# CONFIG_ECONET is not set
368# CONFIG_WAN_ROUTER is not set 376# CONFIG_WAN_ROUTER is not set
369# CONFIG_NET_SCHED is not set 377# CONFIG_NET_SCHED is not set
378# CONFIG_DCB is not set
370 379
371# 380#
372# Network testing 381# Network testing
@@ -380,10 +389,12 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
380# CONFIG_PHONET is not set 389# CONFIG_PHONET is not set
381CONFIG_WIRELESS=y 390CONFIG_WIRELESS=y
382CONFIG_CFG80211=y 391CONFIG_CFG80211=y
392# CONFIG_CFG80211_REG_DEBUG is not set
383CONFIG_NL80211=y 393CONFIG_NL80211=y
384# CONFIG_WIRELESS_OLD_REGULATORY is not set 394# CONFIG_WIRELESS_OLD_REGULATORY is not set
385CONFIG_WIRELESS_EXT=y 395CONFIG_WIRELESS_EXT=y
386CONFIG_WIRELESS_EXT_SYSFS=y 396CONFIG_WIRELESS_EXT_SYSFS=y
397CONFIG_LIB80211=m
387CONFIG_MAC80211=y 398CONFIG_MAC80211=y
388 399
389# 400#
@@ -397,11 +408,6 @@ CONFIG_MAC80211_RC_DEFAULT="pid"
397# CONFIG_MAC80211_MESH is not set 408# CONFIG_MAC80211_MESH is not set
398# CONFIG_MAC80211_LEDS is not set 409# CONFIG_MAC80211_LEDS is not set
399# CONFIG_MAC80211_DEBUG_MENU is not set 410# CONFIG_MAC80211_DEBUG_MENU is not set
400CONFIG_IEEE80211=m
401CONFIG_IEEE80211_DEBUG=y
402CONFIG_IEEE80211_CRYPT_WEP=m
403CONFIG_IEEE80211_CRYPT_CCMP=m
404CONFIG_IEEE80211_CRYPT_TKIP=m
405# CONFIG_RFKILL is not set 411# CONFIG_RFKILL is not set
406# CONFIG_NET_9P is not set 412# CONFIG_NET_9P is not set
407 413
@@ -510,6 +516,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
510CONFIG_MISC_DEVICES=y 516CONFIG_MISC_DEVICES=y
511# CONFIG_EEPROM_93CX6 is not set 517# CONFIG_EEPROM_93CX6 is not set
512# CONFIG_ENCLOSURE_SERVICES is not set 518# CONFIG_ENCLOSURE_SERVICES is not set
519# CONFIG_C2PORT is not set
513CONFIG_HAVE_IDE=y 520CONFIG_HAVE_IDE=y
514# CONFIG_IDE is not set 521# CONFIG_IDE is not set
515 522
@@ -552,6 +559,7 @@ CONFIG_SCSI_WAIT_SCAN=m
552# CONFIG_SCSI_SRP_ATTRS is not set 559# CONFIG_SCSI_SRP_ATTRS is not set
553CONFIG_SCSI_LOWLEVEL=y 560CONFIG_SCSI_LOWLEVEL=y
554# CONFIG_ISCSI_TCP is not set 561# CONFIG_ISCSI_TCP is not set
562# CONFIG_LIBFC is not set
555# CONFIG_SCSI_DEBUG is not set 563# CONFIG_SCSI_DEBUG is not set
556# CONFIG_SCSI_DH is not set 564# CONFIG_SCSI_DH is not set
557CONFIG_ATA=y 565CONFIG_ATA=y
@@ -575,6 +583,7 @@ CONFIG_MII=y
575# CONFIG_STNIC is not set 583# CONFIG_STNIC is not set
576# CONFIG_SMC91X is not set 584# CONFIG_SMC91X is not set
577# CONFIG_SMC911X is not set 585# CONFIG_SMC911X is not set
586# CONFIG_SMSC911X is not set
578# CONFIG_IBM_NEW_EMAC_ZMII is not set 587# CONFIG_IBM_NEW_EMAC_ZMII is not set
579# CONFIG_IBM_NEW_EMAC_RGMII is not set 588# CONFIG_IBM_NEW_EMAC_RGMII is not set
580# CONFIG_IBM_NEW_EMAC_TAH is not set 589# CONFIG_IBM_NEW_EMAC_TAH is not set
@@ -714,11 +723,11 @@ CONFIG_HWMON=y
714# CONFIG_THERMAL is not set 723# CONFIG_THERMAL is not set
715# CONFIG_THERMAL_HWMON is not set 724# CONFIG_THERMAL_HWMON is not set
716# CONFIG_WATCHDOG is not set 725# CONFIG_WATCHDOG is not set
726CONFIG_SSB_POSSIBLE=y
717 727
718# 728#
719# Sonics Silicon Backplane 729# Sonics Silicon Backplane
720# 730#
721CONFIG_SSB_POSSIBLE=y
722# CONFIG_SSB is not set 731# CONFIG_SSB is not set
723 732
724# 733#
@@ -728,6 +737,7 @@ CONFIG_SSB_POSSIBLE=y
728# CONFIG_MFD_SM501 is not set 737# CONFIG_MFD_SM501 is not set
729# CONFIG_HTC_PASIC3 is not set 738# CONFIG_HTC_PASIC3 is not set
730# CONFIG_MFD_TMIO is not set 739# CONFIG_MFD_TMIO is not set
740# CONFIG_REGULATOR is not set
731 741
732# 742#
733# Multimedia devices 743# Multimedia devices
@@ -785,7 +795,6 @@ CONFIG_USB_MON=y
785# 795#
786# CONFIG_USB_C67X00_HCD is not set 796# CONFIG_USB_C67X00_HCD is not set
787# CONFIG_USB_ISP116X_HCD is not set 797# CONFIG_USB_ISP116X_HCD is not set
788# CONFIG_USB_ISP1760_HCD is not set
789# CONFIG_USB_SL811_HCD is not set 798# CONFIG_USB_SL811_HCD is not set
790CONFIG_USB_R8A66597_HCD=y 799CONFIG_USB_R8A66597_HCD=y
791# CONFIG_SUPERH_ON_CHIP_R8A66597 is not set 800# CONFIG_SUPERH_ON_CHIP_R8A66597 is not set
@@ -800,11 +809,11 @@ CONFIG_USB_R8A66597_HCD=y
800# CONFIG_USB_TMC is not set 809# CONFIG_USB_TMC is not set
801 810
802# 811#
803# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 812# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
804# 813#
805 814
806# 815#
807# may also be needed; see USB_STORAGE Help for more information 816# see USB_STORAGE Help for more information
808# 817#
809CONFIG_USB_STORAGE=y 818CONFIG_USB_STORAGE=y
810# CONFIG_USB_STORAGE_DEBUG is not set 819# CONFIG_USB_STORAGE_DEBUG is not set
@@ -937,10 +946,7 @@ CONFIG_TMPFS=y
937CONFIG_HUGETLBFS=y 946CONFIG_HUGETLBFS=y
938CONFIG_HUGETLB_PAGE=y 947CONFIG_HUGETLB_PAGE=y
939# CONFIG_CONFIGFS_FS is not set 948# CONFIG_CONFIGFS_FS is not set
940 949CONFIG_MISC_FILESYSTEMS=y
941#
942# Miscellaneous filesystems
943#
944# CONFIG_ADFS_FS is not set 950# CONFIG_ADFS_FS is not set
945# CONFIG_AFFS_FS is not set 951# CONFIG_AFFS_FS is not set
946# CONFIG_HFS_FS is not set 952# CONFIG_HFS_FS is not set
@@ -1046,13 +1052,19 @@ CONFIG_FRAME_WARN=1024
1046# CONFIG_RCU_CPU_STALL_DETECTOR is not set 1052# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1047# CONFIG_LATENCYTOP is not set 1053# CONFIG_LATENCYTOP is not set
1048# CONFIG_SYSCTL_SYSCALL_CHECK is not set 1054# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1049CONFIG_NOP_TRACER=y 1055CONFIG_HAVE_FUNCTION_TRACER=y
1050CONFIG_HAVE_FTRACE=y 1056CONFIG_HAVE_DYNAMIC_FTRACE=y
1057CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1058
1059#
1060# Tracers
1061#
1051# CONFIG_DYNAMIC_PRINTK_DEBUG is not set 1062# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
1052# CONFIG_SAMPLES is not set 1063# CONFIG_SAMPLES is not set
1064CONFIG_HAVE_ARCH_KGDB=y
1053# CONFIG_SH_STANDARD_BIOS is not set 1065# CONFIG_SH_STANDARD_BIOS is not set
1054# CONFIG_EARLY_SCIF_CONSOLE is not set 1066# CONFIG_EARLY_SCIF_CONSOLE is not set
1055# CONFIG_SH_KGDB is not set 1067# CONFIG_MORE_COMPILE_OPTIONS is not set
1056 1068
1057# 1069#
1058# Security options 1070# Security options
@@ -1068,11 +1080,15 @@ CONFIG_CRYPTO=y
1068# 1080#
1069# CONFIG_CRYPTO_FIPS is not set 1081# CONFIG_CRYPTO_FIPS is not set
1070CONFIG_CRYPTO_ALGAPI=y 1082CONFIG_CRYPTO_ALGAPI=y
1071CONFIG_CRYPTO_AEAD=y 1083CONFIG_CRYPTO_ALGAPI2=y
1084CONFIG_CRYPTO_AEAD2=y
1072CONFIG_CRYPTO_BLKCIPHER=y 1085CONFIG_CRYPTO_BLKCIPHER=y
1086CONFIG_CRYPTO_BLKCIPHER2=y
1073CONFIG_CRYPTO_HASH=y 1087CONFIG_CRYPTO_HASH=y
1074CONFIG_CRYPTO_RNG=y 1088CONFIG_CRYPTO_HASH2=y
1089CONFIG_CRYPTO_RNG2=y
1075CONFIG_CRYPTO_MANAGER=y 1090CONFIG_CRYPTO_MANAGER=y
1091CONFIG_CRYPTO_MANAGER2=y
1076# CONFIG_CRYPTO_GF128MUL is not set 1092# CONFIG_CRYPTO_GF128MUL is not set
1077# CONFIG_CRYPTO_NULL is not set 1093# CONFIG_CRYPTO_NULL is not set
1078# CONFIG_CRYPTO_CRYPTD is not set 1094# CONFIG_CRYPTO_CRYPTD is not set
@@ -1155,6 +1171,7 @@ CONFIG_CRYPTO_HW=y
1155# Library routines 1171# Library routines
1156# 1172#
1157CONFIG_BITREVERSE=y 1173CONFIG_BITREVERSE=y
1174CONFIG_GENERIC_FIND_LAST_BIT=y
1158# CONFIG_CRC_CCITT is not set 1175# CONFIG_CRC_CCITT is not set
1159# CONFIG_CRC16 is not set 1176# CONFIG_CRC16 is not set
1160# CONFIG_CRC_T10DIF is not set 1177# CONFIG_CRC_T10DIF is not set
diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild
index f1a2a0d1c79c..43910cdf78a5 100644
--- a/arch/sh/include/asm/Kbuild
+++ b/arch/sh/include/asm/Kbuild
@@ -6,4 +6,3 @@ unifdef-y += unistd_32.h
6unifdef-y += unistd_64.h 6unifdef-y += unistd_64.h
7unifdef-y += posix_types_32.h 7unifdef-y += posix_types_32.h
8unifdef-y += posix_types_64.h 8unifdef-y += posix_types_64.h
9unifdef-y += swab.h
diff --git a/arch/sh/include/asm/byteorder.h b/arch/sh/include/asm/byteorder.h
index e95c41a5c8cc..db2f5d7cb17d 100644
--- a/arch/sh/include/asm/byteorder.h
+++ b/arch/sh/include/asm/byteorder.h
@@ -1,8 +1,6 @@
1#ifndef __ASM_SH_BYTEORDER_H 1#ifndef __ASM_SH_BYTEORDER_H
2#define __ASM_SH_BYTEORDER_H 2#define __ASM_SH_BYTEORDER_H
3 3
4#include <asm/swab.h>
5
6#ifdef __LITTLE_ENDIAN__ 4#ifdef __LITTLE_ENDIAN__
7#include <linux/byteorder/little_endian.h> 5#include <linux/byteorder/little_endian.h>
8#else 6#else
diff --git a/arch/sh/include/asm/posix_types_32.h b/arch/sh/include/asm/posix_types_32.h
index 0a3d2f54ab27..2172732c55c8 100644
--- a/arch/sh/include/asm/posix_types_32.h
+++ b/arch/sh/include/asm/posix_types_32.h
@@ -39,14 +39,10 @@ typedef long long __kernel_loff_t;
39#endif 39#endif
40 40
41typedef struct { 41typedef struct {
42#if defined(__KERNEL__) || defined(__USE_ALL)
43 int val[2]; 42 int val[2];
44#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
45 int __val[2];
46#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
47} __kernel_fsid_t; 43} __kernel_fsid_t;
48 44
49#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 45#if defined(__KERNEL__)
50 46
51#undef __FD_SET 47#undef __FD_SET
52static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) 48static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
@@ -117,6 +113,6 @@ static __inline__ void __FD_ZERO(__kernel_fd_set *__p)
117 } 113 }
118} 114}
119 115
120#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */ 116#endif /* defined(__KERNEL__) */
121 117
122#endif /* __ASM_SH_POSIX_TYPES_H */ 118#endif /* __ASM_SH_POSIX_TYPES_H */
diff --git a/arch/sh/include/asm/posix_types_64.h b/arch/sh/include/asm/posix_types_64.h
index 0620317a6f0f..f83e9bd463d8 100644
--- a/arch/sh/include/asm/posix_types_64.h
+++ b/arch/sh/include/asm/posix_types_64.h
@@ -48,14 +48,10 @@ typedef long long __kernel_loff_t;
48#endif 48#endif
49 49
50typedef struct { 50typedef struct {
51#if defined(__KERNEL__) || defined(__USE_ALL)
52 int val[2]; 51 int val[2];
53#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
54 int __val[2];
55#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
56} __kernel_fsid_t; 52} __kernel_fsid_t;
57 53
58#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 54#if defined(__KERNEL__)
59 55
60#undef __FD_SET 56#undef __FD_SET
61static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) 57static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
@@ -126,6 +122,6 @@ static __inline__ void __FD_ZERO(__kernel_fd_set *__p)
126 } 122 }
127} 123}
128 124
129#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */ 125#endif /* defined(__KERNEL__) */
130 126
131#endif /* __ASM_SH64_POSIX_TYPES_H */ 127#endif /* __ASM_SH64_POSIX_TYPES_H */
diff --git a/arch/sh/include/asm/syscalls_32.h b/arch/sh/include/asm/syscalls_32.h
index 104c5e686106..8b30200305c3 100644
--- a/arch/sh/include/asm/syscalls_32.h
+++ b/arch/sh/include/asm/syscalls_32.h
@@ -36,9 +36,9 @@ asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5,
36asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5, 36asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5,
37 unsigned long r6, unsigned long r7, 37 unsigned long r6, unsigned long r7,
38 struct pt_regs __regs); 38 struct pt_regs __regs);
39asmlinkage int sys_pipe(unsigned long r4, unsigned long r5, 39asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
40 unsigned long r6, unsigned long r7, 40 unsigned long r6, unsigned long r7,
41 struct pt_regs __regs); 41 struct pt_regs __regs);
42asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf, 42asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf,
43 size_t count, long dummy, loff_t pos); 43 size_t count, long dummy, loff_t pos);
44asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf, 44asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf,
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c
index 0623e377f488..4ff4dc64520c 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c
@@ -112,6 +112,34 @@ static struct platform_device veu_device = {
112 .num_resources = ARRAY_SIZE(veu_resources), 112 .num_resources = ARRAY_SIZE(veu_resources),
113}; 113};
114 114
115static struct uio_info jpu_platform_data = {
116 .name = "JPU",
117 .version = "0",
118 .irq = 27,
119};
120
121static struct resource jpu_resources[] = {
122 [0] = {
123 .name = "JPU",
124 .start = 0xfea00000,
125 .end = 0xfea102d3,
126 .flags = IORESOURCE_MEM,
127 },
128 [1] = {
129 /* place holder for contiguous memory */
130 },
131};
132
133static struct platform_device jpu_device = {
134 .name = "uio_pdrv_genirq",
135 .id = 2,
136 .dev = {
137 .platform_data = &jpu_platform_data,
138 },
139 .resource = jpu_resources,
140 .num_resources = ARRAY_SIZE(jpu_resources),
141};
142
115static struct plat_sci_port sci_platform_data[] = { 143static struct plat_sci_port sci_platform_data[] = {
116 { 144 {
117 .mapbase = 0xffe00000, 145 .mapbase = 0xffe00000,
@@ -152,6 +180,7 @@ static struct platform_device *sh7343_devices[] __initdata = {
152 &sci_device, 180 &sci_device,
153 &vpu_device, 181 &vpu_device,
154 &veu_device, 182 &veu_device,
183 &jpu_device,
155}; 184};
156 185
157static int __init sh7343_devices_setup(void) 186static int __init sh7343_devices_setup(void)
@@ -160,9 +189,11 @@ static int __init sh7343_devices_setup(void)
160 clk_always_enable("xymem0"); /* XYMEM */ 189 clk_always_enable("xymem0"); /* XYMEM */
161 clk_always_enable("veu0"); /* VEU */ 190 clk_always_enable("veu0"); /* VEU */
162 clk_always_enable("vpu0"); /* VPU */ 191 clk_always_enable("vpu0"); /* VPU */
192 clk_always_enable("jpu0"); /* JPU */
163 193
164 platform_resource_setup_memory(&vpu_device, "vpu", 1 << 20); 194 platform_resource_setup_memory(&vpu_device, "vpu", 1 << 20);
165 platform_resource_setup_memory(&veu_device, "veu", 2 << 20); 195 platform_resource_setup_memory(&veu_device, "veu", 2 << 20);
196 platform_resource_setup_memory(&jpu_device, "jpu", 2 << 20);
166 197
167 return platform_add_devices(sh7343_devices, 198 return platform_add_devices(sh7343_devices,
168 ARRAY_SIZE(sh7343_devices)); 199 ARRAY_SIZE(sh7343_devices));
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
index 50cf6838ec41..5146afc156e0 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
@@ -158,7 +158,7 @@ static struct resource jpu_resources[] = {
158 [0] = { 158 [0] = {
159 .name = "JPU", 159 .name = "JPU",
160 .start = 0xfea00000, 160 .start = 0xfea00000,
161 .end = 0xfea102d0, 161 .end = 0xfea102d3,
162 .flags = IORESOURCE_MEM, 162 .flags = IORESOURCE_MEM,
163 }, 163 },
164 [1] = { 164 [1] = {
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c
index a7e5f2e74bac..c90c7e5e5fee 100644
--- a/arch/sh/kernel/process_64.c
+++ b/arch/sh/kernel/process_64.c
@@ -520,7 +520,6 @@ asmlinkage int sys_execve(char *ufilename, char **uargv,
520 int error; 520 int error;
521 char *filename; 521 char *filename;
522 522
523 lock_kernel();
524 filename = getname((char __user *)ufilename); 523 filename = getname((char __user *)ufilename);
525 error = PTR_ERR(filename); 524 error = PTR_ERR(filename);
526 if (IS_ERR(filename)) 525 if (IS_ERR(filename))
@@ -537,7 +536,6 @@ asmlinkage int sys_execve(char *ufilename, char **uargv,
537 } 536 }
538 putname(filename); 537 putname(filename);
539out: 538out:
540 unlock_kernel();
541 return error; 539 return error;
542} 540}
543 541
diff --git a/arch/sh/kernel/sys_sh32.c b/arch/sh/kernel/sys_sh32.c
index dbba1e1833d4..63ba12836eae 100644
--- a/arch/sh/kernel/sys_sh32.c
+++ b/arch/sh/kernel/sys_sh32.c
@@ -22,7 +22,7 @@
22 * sys_pipe() is the normal C calling standard for creating 22 * sys_pipe() is the normal C calling standard for creating
23 * a pipe. It's not the way Unix traditionally does this, though. 23 * a pipe. It's not the way Unix traditionally does this, though.
24 */ 24 */
25asmlinkage int sys_pipe(unsigned long r4, unsigned long r5, 25asmlinkage int sys_sh_pipe(unsigned long r4, unsigned long r5,
26 unsigned long r6, unsigned long r7, 26 unsigned long r6, unsigned long r7,
27 struct pt_regs __regs) 27 struct pt_regs __regs)
28{ 28{
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S
index 0af693e65764..e67c1733e1b9 100644
--- a/arch/sh/kernel/syscalls_32.S
+++ b/arch/sh/kernel/syscalls_32.S
@@ -58,7 +58,7 @@ ENTRY(sys_call_table)
58 .long sys_mkdir 58 .long sys_mkdir
59 .long sys_rmdir /* 40 */ 59 .long sys_rmdir /* 40 */
60 .long sys_dup 60 .long sys_dup
61 .long sys_pipe 61 .long sys_sh_pipe
62 .long sys_times 62 .long sys_times
63 .long sys_ni_syscall /* old prof syscall holder */ 63 .long sys_ni_syscall /* old prof syscall holder */
64 .long sys_brk /* 45 */ 64 .long sys_brk /* 45 */
@@ -105,7 +105,7 @@ ENTRY(sys_call_table)
105 .long sys_uselib 105 .long sys_uselib
106 .long sys_swapon 106 .long sys_swapon
107 .long sys_reboot 107 .long sys_reboot
108 .long old_readdir 108 .long sys_old_readdir
109 .long old_mmap /* 90 */ 109 .long old_mmap /* 90 */
110 .long sys_munmap 110 .long sys_munmap
111 .long sys_truncate 111 .long sys_truncate
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S
index 0b436aa3cad7..557cb91f5caf 100644
--- a/arch/sh/kernel/syscalls_64.S
+++ b/arch/sh/kernel/syscalls_64.S
@@ -109,7 +109,7 @@ sys_call_table:
109 .long sys_uselib 109 .long sys_uselib
110 .long sys_swapon 110 .long sys_swapon
111 .long sys_reboot 111 .long sys_reboot
112 .long old_readdir 112 .long sys_old_readdir
113 .long old_mmap /* 90 */ 113 .long old_mmap /* 90 */
114 .long sys_munmap 114 .long sys_munmap
115 .long sys_truncate 115 .long sys_truncate
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c
index c0aa3d83ec0e..60dcf87ed019 100644
--- a/arch/sh/kernel/traps_32.c
+++ b/arch/sh/kernel/traps_32.c
@@ -125,20 +125,18 @@ static inline void die_if_kernel(const char *str, struct pt_regs *regs,
125 * - userspace errors just cause EFAULT to be returned, resulting in SEGV 125 * - userspace errors just cause EFAULT to be returned, resulting in SEGV
126 * - kernel/userspace interfaces cause a jump to an appropriate handler 126 * - kernel/userspace interfaces cause a jump to an appropriate handler
127 * - other kernel errors are bad 127 * - other kernel errors are bad
128 * - return 0 if fixed-up, -EFAULT if non-fatal (to the kernel) fault
129 */ 128 */
130static int die_if_no_fixup(const char * str, struct pt_regs * regs, long err) 129static void die_if_no_fixup(const char * str, struct pt_regs * regs, long err)
131{ 130{
132 if (!user_mode(regs)) { 131 if (!user_mode(regs)) {
133 const struct exception_table_entry *fixup; 132 const struct exception_table_entry *fixup;
134 fixup = search_exception_tables(regs->pc); 133 fixup = search_exception_tables(regs->pc);
135 if (fixup) { 134 if (fixup) {
136 regs->pc = fixup->fixup; 135 regs->pc = fixup->fixup;
137 return 0; 136 return;
138 } 137 }
139 die(str, regs, err); 138 die(str, regs, err);
140 } 139 }
141 return -EFAULT;
142} 140}
143 141
144static inline void sign_extend(unsigned int count, unsigned char *dst) 142static inline void sign_extend(unsigned int count, unsigned char *dst)
@@ -314,7 +312,8 @@ static int handle_unaligned_ins(opcode_t instruction, struct pt_regs *regs,
314 /* Argh. Address not only misaligned but also non-existent. 312 /* Argh. Address not only misaligned but also non-existent.
315 * Raise an EFAULT and see if it's trapped 313 * Raise an EFAULT and see if it's trapped
316 */ 314 */
317 return die_if_no_fixup("Fault in unaligned fixup", regs, 0); 315 die_if_no_fixup("Fault in unaligned fixup", regs, 0);
316 return -EFAULT;
318} 317}
319 318
320/* 319/*
diff --git a/arch/sh/mm/ioremap_64.c b/arch/sh/mm/ioremap_64.c
index 6e0be24d26e2..31e1bb5effbe 100644
--- a/arch/sh/mm/ioremap_64.c
+++ b/arch/sh/mm/ioremap_64.c
@@ -71,9 +71,9 @@ void *__ioremap(unsigned long phys_addr, unsigned long size,
71 * Ok, go for it.. 71 * Ok, go for it..
72 */ 72 */
73 area = get_vm_area(size, VM_IOREMAP); 73 area = get_vm_area(size, VM_IOREMAP);
74 pr_debug("Get vm_area returns %p addr %p\n",area,area->addr);
75 if (!area) 74 if (!area)
76 return NULL; 75 return NULL;
76 pr_debug("Get vm_area returns %p addr %p\n", area, area->addr);
77 area->phys_addr = phys_addr; 77 area->phys_addr = phys_addr;
78 addr = area->addr; 78 addr = area->addr;
79 if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, 79 if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size,
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index de58c02633b4..c3ea215334f6 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -36,6 +36,7 @@ config SPARC64
36 select HAVE_KRETPROBES 36 select HAVE_KRETPROBES
37 select HAVE_KPROBES 37 select HAVE_KPROBES
38 select HAVE_LMB 38 select HAVE_LMB
39 select HAVE_SYSCALL_WRAPPERS
39 select USE_GENERIC_SMP_HELPERS if SMP 40 select USE_GENERIC_SMP_HELPERS if SMP
40 select RTC_DRV_CMOS 41 select RTC_DRV_CMOS
41 select RTC_DRV_BQ4802 42 select RTC_DRV_BQ4802
diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild
index 95e38a43dff0..deeb0fba8029 100644
--- a/arch/sparc/include/asm/Kbuild
+++ b/arch/sparc/include/asm/Kbuild
@@ -17,4 +17,3 @@ header-y += traps.h
17header-y += uctx.h 17header-y += uctx.h
18header-y += utrap.h 18header-y += utrap.h
19header-y += watchdog.h 19header-y += watchdog.h
20header-y += swab.h
diff --git a/arch/sparc/include/asm/byteorder.h b/arch/sparc/include/asm/byteorder.h
index 48a047cd6fa9..ccc1b6b7de6c 100644
--- a/arch/sparc/include/asm/byteorder.h
+++ b/arch/sparc/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _SPARC_BYTEORDER_H 1#ifndef _SPARC_BYTEORDER_H
2#define _SPARC_BYTEORDER_H 2#define _SPARC_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/big_endian.h> 4#include <linux/byteorder/big_endian.h>
6 5
7#endif /* _SPARC_BYTEORDER_H */ 6#endif /* _SPARC_BYTEORDER_H */
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c
index 05f1c916db06..f3b5466c389c 100644
--- a/arch/sparc/kernel/central.c
+++ b/arch/sparc/kernel/central.c
@@ -103,6 +103,7 @@ static int __devinit clock_board_probe(struct of_device *op,
103 p->leds_resource.name = "leds"; 103 p->leds_resource.name = "leds";
104 104
105 p->leds_pdev.name = "sunfire-clockboard-leds"; 105 p->leds_pdev.name = "sunfire-clockboard-leds";
106 p->leds_pdev.id = -1;
106 p->leds_pdev.resource = &p->leds_resource; 107 p->leds_pdev.resource = &p->leds_resource;
107 p->leds_pdev.num_resources = 1; 108 p->leds_pdev.num_resources = 1;
108 p->leds_pdev.dev.parent = &op->dev; 109 p->leds_pdev.dev.parent = &op->dev;
@@ -197,6 +198,7 @@ static int __devinit fhc_probe(struct of_device *op,
197 p->leds_resource.name = "leds"; 198 p->leds_resource.name = "leds";
198 199
199 p->leds_pdev.name = "sunfire-fhc-leds"; 200 p->leds_pdev.name = "sunfire-fhc-leds";
201 p->leds_pdev.id = p->board_num;
200 p->leds_pdev.resource = &p->leds_resource; 202 p->leds_pdev.resource = &p->leds_resource;
201 p->leds_pdev.num_resources = 1; 203 p->leds_pdev.num_resources = 1;
202 p->leds_pdev.dev.parent = &op->dev; 204 p->leds_pdev.dev.parent = &op->dev;
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
index f0b825505da5..32d32b4824f5 100644
--- a/arch/sparc/kernel/cpu.c
+++ b/arch/sparc/kernel/cpu.c
@@ -239,14 +239,26 @@ unsigned int fsr_storage;
239 239
240static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) 240static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers)
241{ 241{
242 const struct manufacturer_info *manuf;
243 int i;
244
242 sparc_cpu_type = NULL; 245 sparc_cpu_type = NULL;
243 sparc_fpu_type = NULL; 246 sparc_fpu_type = NULL;
244 if (psr_impl < ARRAY_SIZE(manufacturer_info)) 247 manuf = NULL;
248
249 for (i = 0; i < ARRAY_SIZE(manufacturer_info); i++)
250 {
251 if (psr_impl == manufacturer_info[i].psr_impl) {
252 manuf = &manufacturer_info[i];
253 break;
254 }
255 }
256 if (manuf != NULL)
245 { 257 {
246 const struct cpu_info *cpu; 258 const struct cpu_info *cpu;
247 const struct fpu_info *fpu; 259 const struct fpu_info *fpu;
248 260
249 cpu = &manufacturer_info[psr_impl].cpu_info[0]; 261 cpu = &manuf->cpu_info[0];
250 while (cpu->psr_vers != -1) 262 while (cpu->psr_vers != -1)
251 { 263 {
252 if (cpu->psr_vers == psr_vers) { 264 if (cpu->psr_vers == psr_vers) {
@@ -256,7 +268,7 @@ static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers)
256 } 268 }
257 cpu++; 269 cpu++;
258 } 270 }
259 fpu = &manufacturer_info[psr_impl].fpu_info[0]; 271 fpu = &manuf->fpu_info[0];
260 while (fpu->fp_vers != -1) 272 while (fpu->fp_vers != -1)
261 { 273 {
262 if (fpu->fp_vers == fpu_vers) { 274 if (fpu->fp_vers == fpu_vers) {
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
index faf9ccd9ef5d..f41ecc5ac0b4 100644
--- a/arch/sparc/kernel/entry.S
+++ b/arch/sparc/kernel/entry.S
@@ -1088,8 +1088,8 @@ sunos_execv:
1088 ld [%sp + STACKFRAME_SZ + PT_I0], %o0 1088 ld [%sp + STACKFRAME_SZ + PT_I0], %o0
1089 1089
1090 .align 4 1090 .align 4
1091 .globl sys_pipe 1091 .globl sys_sparc_pipe
1092sys_pipe: 1092sys_sparc_pipe:
1093 mov %o7, %l5 1093 mov %o7, %l5
1094 add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg 1094 add %sp, STACKFRAME_SZ, %o0 ! pt_regs *regs arg
1095 call sparc_pipe 1095 call sparc_pipe
diff --git a/arch/sparc/kernel/sparc_ksyms_64.c b/arch/sparc/kernel/sparc_ksyms_64.c
index da8f804feb49..0f26066a08d9 100644
--- a/arch/sparc/kernel/sparc_ksyms_64.c
+++ b/arch/sparc/kernel/sparc_ksyms_64.c
@@ -9,7 +9,6 @@
9#include <linux/pci.h> 9#include <linux/pci.h>
10#include <linux/init.h> 10#include <linux/init.h>
11 11
12#include <asm/spinlock.h>
13#include <asm/system.h> 12#include <asm/system.h>
14#include <asm/cpudata.h> 13#include <asm/cpudata.h>
15#include <asm/uaccess.h> 14#include <asm/uaccess.h>
@@ -23,16 +22,6 @@ struct poll {
23 short revents; 22 short revents;
24}; 23};
25 24
26/* used by various drivers */
27#ifdef CONFIG_SMP
28/* Out of line rw-locking implementation. */
29EXPORT_SYMBOL(__read_lock);
30EXPORT_SYMBOL(__read_unlock);
31EXPORT_SYMBOL(__write_lock);
32EXPORT_SYMBOL(__write_unlock);
33EXPORT_SYMBOL(__write_trylock);
34#endif /* CONFIG_SMP */
35
36/* from helpers.S */ 25/* from helpers.S */
37EXPORT_SYMBOL(__flushw_user); 26EXPORT_SYMBOL(__flushw_user);
38EXPORT_SYMBOL_GPL(real_hard_smp_processor_id); 27EXPORT_SYMBOL_GPL(real_hard_smp_processor_id);
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
index 09058fc39e73..e2d102447a43 100644
--- a/arch/sparc/kernel/sys_sparc_64.c
+++ b/arch/sparc/kernel/sys_sparc_64.c
@@ -399,7 +399,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
399 } 399 }
400} 400}
401 401
402asmlinkage unsigned long sparc_brk(unsigned long brk) 402SYSCALL_DEFINE1(sparc_brk, unsigned long, brk)
403{ 403{
404 /* People could try to be nasty and use ta 0x6d in 32bit programs */ 404 /* People could try to be nasty and use ta 0x6d in 32bit programs */
405 if (test_thread_flag(TIF_32BIT) && brk >= STACK_TOP32) 405 if (test_thread_flag(TIF_32BIT) && brk >= STACK_TOP32)
@@ -415,7 +415,7 @@ asmlinkage unsigned long sparc_brk(unsigned long brk)
415 * sys_pipe() is the normal C calling standard for creating 415 * sys_pipe() is the normal C calling standard for creating
416 * a pipe. It's not the way unix traditionally does this, though. 416 * a pipe. It's not the way unix traditionally does this, though.
417 */ 417 */
418asmlinkage long sparc_pipe(struct pt_regs *regs) 418SYSCALL_DEFINE1(sparc_pipe_real, struct pt_regs *, regs)
419{ 419{
420 int fd[2]; 420 int fd[2];
421 int error; 421 int error;
@@ -435,8 +435,8 @@ out:
435 * This is really horribly ugly. 435 * This is really horribly ugly.
436 */ 436 */
437 437
438asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second, 438SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
439 unsigned long third, void __user *ptr, long fifth) 439 unsigned long, third, void __user *, ptr, long, fifth)
440{ 440{
441 long err; 441 long err;
442 442
@@ -519,7 +519,7 @@ out:
519 return err; 519 return err;
520} 520}
521 521
522asmlinkage long sparc64_newuname(struct new_utsname __user *name) 522SYSCALL_DEFINE1(sparc64_newuname, struct new_utsname __user *, name)
523{ 523{
524 int ret = sys_newuname(name); 524 int ret = sys_newuname(name);
525 525
@@ -530,7 +530,7 @@ asmlinkage long sparc64_newuname(struct new_utsname __user *name)
530 return ret; 530 return ret;
531} 531}
532 532
533asmlinkage long sparc64_personality(unsigned long personality) 533SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality)
534{ 534{
535 int ret; 535 int ret;
536 536
@@ -564,9 +564,9 @@ int sparc_mmap_check(unsigned long addr, unsigned long len)
564} 564}
565 565
566/* Linux version of mmap */ 566/* Linux version of mmap */
567asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, 567SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
568 unsigned long prot, unsigned long flags, unsigned long fd, 568 unsigned long, prot, unsigned long, flags, unsigned long, fd,
569 unsigned long off) 569 unsigned long, off)
570{ 570{
571 struct file * file = NULL; 571 struct file * file = NULL;
572 unsigned long retval = -EBADF; 572 unsigned long retval = -EBADF;
@@ -589,7 +589,7 @@ out:
589 return retval; 589 return retval;
590} 590}
591 591
592asmlinkage long sys64_munmap(unsigned long addr, size_t len) 592SYSCALL_DEFINE2(64_munmap, unsigned long, addr, size_t, len)
593{ 593{
594 long ret; 594 long ret;
595 595
@@ -606,9 +606,9 @@ extern unsigned long do_mremap(unsigned long addr,
606 unsigned long old_len, unsigned long new_len, 606 unsigned long old_len, unsigned long new_len,
607 unsigned long flags, unsigned long new_addr); 607 unsigned long flags, unsigned long new_addr);
608 608
609asmlinkage unsigned long sys64_mremap(unsigned long addr, 609SYSCALL_DEFINE5(64_mremap, unsigned long, addr, unsigned long, old_len,
610 unsigned long old_len, unsigned long new_len, 610 unsigned long, new_len, unsigned long, flags,
611 unsigned long flags, unsigned long new_addr) 611 unsigned long, new_addr)
612{ 612{
613 unsigned long ret = -EINVAL; 613 unsigned long ret = -EINVAL;
614 614
@@ -671,7 +671,7 @@ asmlinkage void sparc_breakpoint(struct pt_regs *regs)
671 671
672extern void check_pending(int signum); 672extern void check_pending(int signum);
673 673
674asmlinkage long sys_getdomainname(char __user *name, int len) 674SYSCALL_DEFINE2(getdomainname, char __user *, name, int, len)
675{ 675{
676 int nlen, err; 676 int nlen, err;
677 677
@@ -694,11 +694,10 @@ out:
694 return err; 694 return err;
695} 695}
696 696
697asmlinkage long sys_utrap_install(utrap_entry_t type, 697SYSCALL_DEFINE5(utrap_install, utrap_entry_t, type,
698 utrap_handler_t new_p, 698 utrap_handler_t, new_p, utrap_handler_t, new_d,
699 utrap_handler_t new_d, 699 utrap_handler_t __user *, old_p,
700 utrap_handler_t __user *old_p, 700 utrap_handler_t __user *, old_d)
701 utrap_handler_t __user *old_d)
702{ 701{
703 if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31) 702 if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31)
704 return -EINVAL; 703 return -EINVAL;
@@ -764,11 +763,9 @@ asmlinkage long sparc_memory_ordering(unsigned long model,
764 return 0; 763 return 0;
765} 764}
766 765
767asmlinkage long sys_rt_sigaction(int sig, 766SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act,
768 const struct sigaction __user *act, 767 struct sigaction __user *, oact, void __user *, restorer,
769 struct sigaction __user *oact, 768 size_t, sigsetsize)
770 void __user *restorer,
771 size_t sigsetsize)
772{ 769{
773 struct k_sigaction new_ka, old_ka; 770 struct k_sigaction new_ka, old_ka;
774 int ret; 771 int ret;
@@ -808,7 +805,8 @@ asmlinkage void update_perfctrs(void)
808 reset_pic(); 805 reset_pic();
809} 806}
810 807
811asmlinkage long sys_perfctr(int opcode, unsigned long arg0, unsigned long arg1, unsigned long arg2) 808SYSCALL_DEFINE4(perfctr, int, opcode, unsigned long, arg0,
809 unsigned long, arg1, unsigned long, arg2)
812{ 810{
813 int err = 0; 811 int err = 0;
814 812
diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S
index 7a6786a71363..d150c2aa98d2 100644
--- a/arch/sparc/kernel/syscalls.S
+++ b/arch/sparc/kernel/syscalls.S
@@ -20,8 +20,8 @@ execve_merge:
20 add %sp, PTREGS_OFF, %o0 20 add %sp, PTREGS_OFF, %o0
21 21
22 .align 32 22 .align 32
23sys_pipe: 23sys_sparc_pipe:
24 ba,pt %xcc, sparc_pipe 24 ba,pt %xcc, sys_sparc_pipe_real
25 add %sp, PTREGS_OFF, %o0 25 add %sp, PTREGS_OFF, %o0
26sys_nis_syscall: 26sys_nis_syscall:
27 ba,pt %xcc, c_sys_nis_syscall 27 ba,pt %xcc, c_sys_nis_syscall
diff --git a/arch/sparc/kernel/systbls.h b/arch/sparc/kernel/systbls.h
index bc9f5dac4069..15c2d752b2bc 100644
--- a/arch/sparc/kernel/systbls.h
+++ b/arch/sparc/kernel/systbls.h
@@ -16,9 +16,6 @@ extern asmlinkage long sys_ipc(unsigned int call, int first,
16 void __user *ptr, long fifth); 16 void __user *ptr, long fifth);
17extern asmlinkage long sparc64_newuname(struct new_utsname __user *name); 17extern asmlinkage long sparc64_newuname(struct new_utsname __user *name);
18extern asmlinkage long sparc64_personality(unsigned long personality); 18extern asmlinkage long sparc64_personality(unsigned long personality);
19extern asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len,
20 unsigned long prot, unsigned long flags,
21 unsigned long fd, unsigned long off);
22extern asmlinkage long sys64_munmap(unsigned long addr, size_t len); 19extern asmlinkage long sys64_munmap(unsigned long addr, size_t len);
23extern asmlinkage unsigned long sys64_mremap(unsigned long addr, 20extern asmlinkage unsigned long sys64_mremap(unsigned long addr,
24 unsigned long old_len, 21 unsigned long old_len,
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S
index 7d0807586442..dccc95df0c7f 100644
--- a/arch/sparc/kernel/systbls_32.S
+++ b/arch/sparc/kernel/systbls_32.S
@@ -24,7 +24,7 @@ sys_call_table:
24/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause 24/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
25/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice 25/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
26/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile 26/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
27/*40*/ .long sys_newlstat, sys_dup, sys_pipe, sys_times, sys_getuid 27/*40*/ .long sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_getuid
28/*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16 28/*45*/ .long sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
29/*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl 29/*50*/ .long sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, sys_ioctl
30/*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve 30/*55*/ .long sys_reboot, sys_mmap2, sys_symlink, sys_readlink, sys_execve
@@ -56,7 +56,7 @@ sys_call_table:
56/*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname 56/*185*/ .long sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_newuname
57/*190*/ .long sys_init_module, sys_personality, sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl 57/*190*/ .long sys_init_module, sys_personality, sparc_remap_file_pages, sys_epoll_create, sys_epoll_ctl
58/*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sparc_sigaction, sys_sgetmask 58/*195*/ .long sys_epoll_wait, sys_ioprio_set, sys_getppid, sparc_sigaction, sys_sgetmask
59/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, old_readdir 59/*200*/ .long sys_ssetmask, sys_sigsuspend, sys_newlstat, sys_uselib, sys_old_readdir
60/*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 60/*205*/ .long sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
61/*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo 61/*210*/ .long sys_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys_sysinfo
62/*215*/ .long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex 62/*215*/ .long sys_ipc, sys_sigreturn, sys_clone, sys_ioprio_get, sys_adjtimex
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index 9fc78cf354bd..f93c42a2b522 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -21,12 +21,12 @@ sys_call_table32:
21/*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write 21/*0*/ .word sys_restart_syscall, sys32_exit, sys_fork, sys_read, sys_write
22/*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link 22/*5*/ .word sys32_open, sys_close, sys32_wait4, sys32_creat, sys_link
23/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod 23/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod
24/*15*/ .word sys_chmod, sys_lchown16, sparc_brk, sys32_perfctr, sys32_lseek 24/*15*/ .word sys_chmod, sys_lchown16, sys_sparc_brk, sys32_perfctr, sys32_lseek
25/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 25/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
26/*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause 26/*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, sys32_sigaltstack, sys_pause
27/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice 27/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice
28 .word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile 28 .word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile
29/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid 29/*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid
30 .word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16 30 .word sys32_umount, sys_setgid16, sys_getgid16, sys32_signal, sys_geteuid16
31/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl 31/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
32 .word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve 32 .word sys32_reboot, sys32_mmap2, sys_symlink, sys32_readlink, sys32_execve
@@ -55,8 +55,8 @@ sys_call_table32:
55/*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents 55/*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents
56 .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr 56 .word sys_setsid, sys_fchdir, sys32_fgetxattr, sys_listxattr, sys_llistxattr
57/*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall 57/*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall
58 .word sys32_setpgid, sys32_fremovexattr, sys32_tkill, sys32_exit_group, sparc64_newuname 58 .word sys32_setpgid, sys32_fremovexattr, sys32_tkill, sys32_exit_group, sys_sparc64_newuname
59/*190*/ .word sys32_init_module, sparc64_personality, sys_remap_file_pages, sys32_epoll_create, sys32_epoll_ctl 59/*190*/ .word sys32_init_module, sys_sparc64_personality, sys_remap_file_pages, sys32_epoll_create, sys32_epoll_ctl
60 .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask 60 .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask
61/*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir 61/*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
62 .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 62 .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64
@@ -95,18 +95,18 @@ sys_call_table:
95/*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write 95/*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write
96/*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link 96/*5*/ .word sys_open, sys_close, sys_wait4, sys_creat, sys_link
97/*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod 97/*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod
98/*15*/ .word sys_chmod, sys_lchown, sparc_brk, sys_perfctr, sys_lseek 98/*15*/ .word sys_chmod, sys_lchown, sys_sparc_brk, sys_perfctr, sys_lseek
99/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid 99/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid
100/*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall 100/*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall
101/*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice 101/*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice
102 .word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64 102 .word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64
103/*40*/ .word sys_newlstat, sys_dup, sys_pipe, sys_times, sys_nis_syscall 103/*40*/ .word sys_newlstat, sys_dup, sys_sparc_pipe, sys_times, sys_nis_syscall
104 .word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid 104 .word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid
105/*50*/ .word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl 105/*50*/ .word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl
106 .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve 106 .word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
107/*60*/ .word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize 107/*60*/ .word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize
108 .word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall 108 .word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall
109/*70*/ .word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys64_munmap, sys_mprotect 109/*70*/ .word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys_64_munmap, sys_mprotect
110 .word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups 110 .word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups
111/*80*/ .word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall 111/*80*/ .word sys_setgroups, sys_getpgrp, sys_nis_syscall, sys_setitimer, sys_nis_syscall
112 .word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall 112 .word sys_swapon, sys_getitimer, sys_nis_syscall, sys_sethostname, sys_nis_syscall
@@ -129,8 +129,8 @@ sys_call_table:
129/*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents 129/*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents
130 .word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr 130 .word sys_setsid, sys_fchdir, sys_fgetxattr, sys_listxattr, sys_llistxattr
131/*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall 131/*180*/ .word sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_nis_syscall, sys_ni_syscall
132 .word sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sparc64_newuname 132 .word sys_setpgid, sys_fremovexattr, sys_tkill, sys_exit_group, sys_sparc64_newuname
133/*190*/ .word sys_init_module, sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl 133/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl
134 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask 134 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, sys_nis_syscall, sys_sgetmask
135/*200*/ .word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall 135/*200*/ .word sys_ssetmask, sys_nis_syscall, sys_newlstat, sys_uselib, sys_nis_syscall
136 .word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64 136 .word sys_readahead, sys_socketcall, sys_syslog, sys_lookup_dcookie, sys_fadvise64
@@ -142,7 +142,7 @@ sys_call_table:
142 .word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall 142 .word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
143/*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler 143/*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
144 .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep 144 .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
145/*250*/ .word sys64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl 145/*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
146 .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep 146 .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
147/*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun 147/*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
148 .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy 148 .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c
index c2d153d46586..d809c4ebb48f 100644
--- a/arch/sparc/kernel/traps_64.c
+++ b/arch/sparc/kernel/traps_64.c
@@ -1,6 +1,6 @@
1/* arch/sparc64/kernel/traps.c 1/* arch/sparc64/kernel/traps.c
2 * 2 *
3 * Copyright (C) 1995,1997,2008 David S. Miller (davem@davemloft.net) 3 * Copyright (C) 1995,1997,2008,2009 David S. Miller (davem@davemloft.net)
4 * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com) 4 * Copyright (C) 1997,1999,2000 Jakub Jelinek (jakub@redhat.com)
5 */ 5 */
6 6
@@ -314,6 +314,21 @@ void sun4v_data_access_exception(struct pt_regs *regs, unsigned long addr, unsig
314 return; 314 return;
315 315
316 if (regs->tstate & TSTATE_PRIV) { 316 if (regs->tstate & TSTATE_PRIV) {
317 /* Test if this comes from uaccess places. */
318 const struct exception_table_entry *entry;
319
320 entry = search_exception_tables(regs->tpc);
321 if (entry) {
322 /* Ouch, somebody is trying VM hole tricks on us... */
323#ifdef DEBUG_EXCEPTIONS
324 printk("Exception: PC<%016lx> faddr<UNKNOWN>\n", regs->tpc);
325 printk("EX_TABLE: insn<%016lx> fixup<%016lx>\n",
326 regs->tpc, entry->fixup);
327#endif
328 regs->tpc = entry->fixup;
329 regs->tnpc = regs->tpc + 4;
330 return;
331 }
317 printk("sun4v_data_access_exception: ADDR[%016lx] " 332 printk("sun4v_data_access_exception: ADDR[%016lx] "
318 "CTX[%04x] TYPE[%04x], going.\n", 333 "CTX[%04x] TYPE[%04x], going.\n",
319 addr, ctx, type); 334 addr, ctx, type);
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
index 273fc85269fc..e75faf0e59ae 100644
--- a/arch/sparc/lib/Makefile
+++ b/arch/sparc/lib/Makefile
@@ -18,7 +18,7 @@ lib-$(CONFIG_SPARC32) += lshrdi3.o ashldi3.o
18lib-y += rwsem_$(BITS).o 18lib-y += rwsem_$(BITS).o
19lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o 19lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o
20 20
21lib-$(CONFIG_SPARC64) += PeeCeeI.o copy_page.o clear_page.o bzero.o 21lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o
22lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o 22lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o
23lib-$(CONFIG_SPARC64) += VISsave.o 23lib-$(CONFIG_SPARC64) += VISsave.o
24lib-$(CONFIG_SPARC64) += bitops.o 24lib-$(CONFIG_SPARC64) += bitops.o
@@ -43,3 +43,4 @@ lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o
43obj-y += iomap.o 43obj-y += iomap.o
44obj-$(CONFIG_SPARC32) += atomic32.o 44obj-$(CONFIG_SPARC32) += atomic32.o
45obj-y += ksyms.o 45obj-y += ksyms.o
46obj-$(CONFIG_SPARC64) += PeeCeeI.o
diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild
index a9f8a814a1f7..4a8e80cdcfa5 100644
--- a/arch/x86/include/asm/Kbuild
+++ b/arch/x86/include/asm/Kbuild
@@ -22,4 +22,3 @@ unifdef-y += unistd_32.h
22unifdef-y += unistd_64.h 22unifdef-y += unistd_64.h
23unifdef-y += vm86.h 23unifdef-y += vm86.h
24unifdef-y += vsyscall.h 24unifdef-y += vsyscall.h
25unifdef-y += swab.h
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
index e02a359d2aa5..02b47a603fc8 100644
--- a/arch/x86/include/asm/bitops.h
+++ b/arch/x86/include/asm/bitops.h
@@ -3,6 +3,9 @@
3 3
4/* 4/*
5 * Copyright 1992, Linus Torvalds. 5 * Copyright 1992, Linus Torvalds.
6 *
7 * Note: inlines with more than a single statement should be marked
8 * __always_inline to avoid problems with older gcc's inlining heuristics.
6 */ 9 */
7 10
8#ifndef _LINUX_BITOPS_H 11#ifndef _LINUX_BITOPS_H
@@ -53,7 +56,8 @@
53 * Note that @nr may be almost arbitrarily large; this function is not 56 * Note that @nr may be almost arbitrarily large; this function is not
54 * restricted to acting on a single-word quantity. 57 * restricted to acting on a single-word quantity.
55 */ 58 */
56static inline void set_bit(unsigned int nr, volatile unsigned long *addr) 59static __always_inline void
60set_bit(unsigned int nr, volatile unsigned long *addr)
57{ 61{
58 if (IS_IMMEDIATE(nr)) { 62 if (IS_IMMEDIATE(nr)) {
59 asm volatile(LOCK_PREFIX "orb %1,%0" 63 asm volatile(LOCK_PREFIX "orb %1,%0"
@@ -90,7 +94,8 @@ static inline void __set_bit(int nr, volatile unsigned long *addr)
90 * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit() 94 * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit()
91 * in order to ensure changes are visible on other processors. 95 * in order to ensure changes are visible on other processors.
92 */ 96 */
93static inline void clear_bit(int nr, volatile unsigned long *addr) 97static __always_inline void
98clear_bit(int nr, volatile unsigned long *addr)
94{ 99{
95 if (IS_IMMEDIATE(nr)) { 100 if (IS_IMMEDIATE(nr)) {
96 asm volatile(LOCK_PREFIX "andb %1,%0" 101 asm volatile(LOCK_PREFIX "andb %1,%0"
@@ -204,7 +209,8 @@ static inline int test_and_set_bit(int nr, volatile unsigned long *addr)
204 * 209 *
205 * This is the same as test_and_set_bit on x86. 210 * This is the same as test_and_set_bit on x86.
206 */ 211 */
207static inline int test_and_set_bit_lock(int nr, volatile unsigned long *addr) 212static __always_inline int
213test_and_set_bit_lock(int nr, volatile unsigned long *addr)
208{ 214{
209 return test_and_set_bit(nr, addr); 215 return test_and_set_bit(nr, addr);
210} 216}
@@ -300,7 +306,7 @@ static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
300 return oldbit; 306 return oldbit;
301} 307}
302 308
303static inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr) 309static __always_inline int constant_test_bit(unsigned int nr, const volatile unsigned long *addr)
304{ 310{
305 return ((1UL << (nr % BITS_PER_LONG)) & 311 return ((1UL << (nr % BITS_PER_LONG)) &
306 (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0; 312 (((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0;
diff --git a/arch/x86/include/asm/byteorder.h b/arch/x86/include/asm/byteorder.h
index 7c49917e3d9d..b13a7a88f3eb 100644
--- a/arch/x86/include/asm/byteorder.h
+++ b/arch/x86/include/asm/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _ASM_X86_BYTEORDER_H 1#ifndef _ASM_X86_BYTEORDER_H
2#define _ASM_X86_BYTEORDER_H 2#define _ASM_X86_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/little_endian.h> 4#include <linux/byteorder/little_endian.h>
6 5
7#endif /* _ASM_X86_BYTEORDER_H */ 6#endif /* _ASM_X86_BYTEORDER_H */
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index 05cfed4485fa..1dbbdf4be9b4 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -99,7 +99,6 @@ extern void __iomem *ioremap_wc(unsigned long offset, unsigned long size);
99 * A boot-time mapping is currently limited to at most 16 pages. 99 * A boot-time mapping is currently limited to at most 16 pages.
100 */ 100 */
101extern void early_ioremap_init(void); 101extern void early_ioremap_init(void);
102extern void early_ioremap_clear(void);
103extern void early_ioremap_reset(void); 102extern void early_ioremap_reset(void);
104extern void __iomem *early_ioremap(unsigned long offset, unsigned long size); 103extern void __iomem *early_ioremap(unsigned long offset, unsigned long size);
105extern void __iomem *early_memremap(unsigned long offset, unsigned long size); 104extern void __iomem *early_memremap(unsigned long offset, unsigned long size);
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index cb58643947b9..358acc59ae04 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -202,6 +202,35 @@
202#define MSR_IA32_THERM_STATUS 0x0000019c 202#define MSR_IA32_THERM_STATUS 0x0000019c
203#define MSR_IA32_MISC_ENABLE 0x000001a0 203#define MSR_IA32_MISC_ENABLE 0x000001a0
204 204
205/* MISC_ENABLE bits: architectural */
206#define MSR_IA32_MISC_ENABLE_FAST_STRING (1ULL << 0)
207#define MSR_IA32_MISC_ENABLE_TCC (1ULL << 1)
208#define MSR_IA32_MISC_ENABLE_EMON (1ULL << 7)
209#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL (1ULL << 11)
210#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL (1ULL << 12)
211#define MSR_IA32_MISC_ENABLE_ENHANCED_SPEEDSTEP (1ULL << 16)
212#define MSR_IA32_MISC_ENABLE_MWAIT (1ULL << 18)
213#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID (1ULL << 22)
214#define MSR_IA32_MISC_ENABLE_XTPR_DISABLE (1ULL << 23)
215#define MSR_IA32_MISC_ENABLE_XD_DISABLE (1ULL << 34)
216
217/* MISC_ENABLE bits: model-specific, meaning may vary from core to core */
218#define MSR_IA32_MISC_ENABLE_X87_COMPAT (1ULL << 2)
219#define MSR_IA32_MISC_ENABLE_TM1 (1ULL << 3)
220#define MSR_IA32_MISC_ENABLE_SPLIT_LOCK_DISABLE (1ULL << 4)
221#define MSR_IA32_MISC_ENABLE_L3CACHE_DISABLE (1ULL << 6)
222#define MSR_IA32_MISC_ENABLE_SUPPRESS_LOCK (1ULL << 8)
223#define MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE (1ULL << 9)
224#define MSR_IA32_MISC_ENABLE_FERR (1ULL << 10)
225#define MSR_IA32_MISC_ENABLE_FERR_MULTIPLEX (1ULL << 10)
226#define MSR_IA32_MISC_ENABLE_TM2 (1ULL << 13)
227#define MSR_IA32_MISC_ENABLE_ADJ_PREF_DISABLE (1ULL << 19)
228#define MSR_IA32_MISC_ENABLE_SPEEDSTEP_LOCK (1ULL << 20)
229#define MSR_IA32_MISC_ENABLE_L1D_CONTEXT (1ULL << 24)
230#define MSR_IA32_MISC_ENABLE_DCU_PREF_DISABLE (1ULL << 37)
231#define MSR_IA32_MISC_ENABLE_TURBO_DISABLE (1ULL << 38)
232#define MSR_IA32_MISC_ENABLE_IP_PREF_DISABLE (1ULL << 39)
233
205/* Intel Model 6 */ 234/* Intel Model 6 */
206#define MSR_P6_EVNTSEL0 0x00000186 235#define MSR_P6_EVNTSEL0 0x00000186
207#define MSR_P6_EVNTSEL1 0x00000187 236#define MSR_P6_EVNTSEL1 0x00000187
diff --git a/arch/x86/include/asm/pgalloc.h b/arch/x86/include/asm/pgalloc.h
index cb7c151a8bff..dd14c54ac718 100644
--- a/arch/x86/include/asm/pgalloc.h
+++ b/arch/x86/include/asm/pgalloc.h
@@ -42,6 +42,7 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
42 42
43static inline void pte_free(struct mm_struct *mm, struct page *pte) 43static inline void pte_free(struct mm_struct *mm, struct page *pte)
44{ 44{
45 pgtable_page_dtor(pte);
45 __free_page(pte); 46 __free_page(pte);
46} 47}
47 48
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
index 9c6797c3e56c..c0b0bda754ee 100644
--- a/arch/x86/include/asm/syscalls.h
+++ b/arch/x86/include/asm/syscalls.h
@@ -40,7 +40,7 @@ asmlinkage int sys_sigaction(int, const struct old_sigaction __user *,
40 struct old_sigaction __user *); 40 struct old_sigaction __user *);
41asmlinkage int sys_sigaltstack(unsigned long); 41asmlinkage int sys_sigaltstack(unsigned long);
42asmlinkage unsigned long sys_sigreturn(unsigned long); 42asmlinkage unsigned long sys_sigreturn(unsigned long);
43asmlinkage int sys_rt_sigreturn(struct pt_regs); 43asmlinkage int sys_rt_sigreturn(unsigned long);
44 44
45/* kernel/ioport.c */ 45/* kernel/ioport.c */
46asmlinkage long sys_iopl(unsigned long); 46asmlinkage long sys_iopl(unsigned long);
diff --git a/arch/x86/include/asm/timex.h b/arch/x86/include/asm/timex.h
index 1287dc1347d6..b5c9d45c981f 100644
--- a/arch/x86/include/asm/timex.h
+++ b/arch/x86/include/asm/timex.h
@@ -1,18 +1,13 @@
1/* x86 architecture timex specifications */
2#ifndef _ASM_X86_TIMEX_H 1#ifndef _ASM_X86_TIMEX_H
3#define _ASM_X86_TIMEX_H 2#define _ASM_X86_TIMEX_H
4 3
5#include <asm/processor.h> 4#include <asm/processor.h>
6#include <asm/tsc.h> 5#include <asm/tsc.h>
7 6
8#ifdef CONFIG_X86_ELAN 7/* The PIT ticks at this frequency (in HZ): */
9# define PIT_TICK_RATE 1189200 /* AMD Elan has different frequency! */ 8#define PIT_TICK_RATE 1193182
10#elif defined(CONFIG_X86_RDC321X) 9
11# define PIT_TICK_RATE 1041667 /* Underlying HZ for R8610 */ 10#define CLOCK_TICK_RATE PIT_TICK_RATE
12#else
13# define PIT_TICK_RATE 1193182 /* Underlying HZ */
14#endif
15#define CLOCK_TICK_RATE PIT_TICK_RATE
16 11
17#define ARCH_HAS_READ_CURRENT_TIMER 12#define ARCH_HAS_READ_CURRENT_TIMER
18 13
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c
index 0f830e4f5675..4b6df2469fe3 100644
--- a/arch/x86/kernel/apic.c
+++ b/arch/x86/kernel/apic.c
@@ -895,6 +895,10 @@ void disable_local_APIC(void)
895{ 895{
896 unsigned int value; 896 unsigned int value;
897 897
898 /* APIC hasn't been mapped yet */
899 if (!apic_phys)
900 return;
901
898 clear_local_APIC(); 902 clear_local_APIC();
899 903
900 /* 904 /*
@@ -1833,6 +1837,11 @@ void __cpuinit generic_processor_info(int apicid, int version)
1833 num_processors++; 1837 num_processors++;
1834 cpu = cpumask_next_zero(-1, cpu_present_mask); 1838 cpu = cpumask_next_zero(-1, cpu_present_mask);
1835 1839
1840 if (version != apic_version[boot_cpu_physical_apicid])
1841 WARN_ONCE(1,
1842 "ACPI: apic version mismatch, bootcpu: %x cpu %d: %x\n",
1843 apic_version[boot_cpu_physical_apicid], cpu, version);
1844
1836 physid_set(apicid, phys_cpu_present_map); 1845 physid_set(apicid, phys_cpu_present_map);
1837 if (apicid == boot_cpu_physical_apicid) { 1846 if (apicid == boot_cpu_physical_apicid) {
1838 /* 1847 /*
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index 6f11e029e8c5..4b1c319d30c3 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -145,13 +145,14 @@ typedef union {
145 145
146struct drv_cmd { 146struct drv_cmd {
147 unsigned int type; 147 unsigned int type;
148 cpumask_var_t mask; 148 const struct cpumask *mask;
149 drv_addr_union addr; 149 drv_addr_union addr;
150 u32 val; 150 u32 val;
151}; 151};
152 152
153static void do_drv_read(struct drv_cmd *cmd) 153static long do_drv_read(void *_cmd)
154{ 154{
155 struct drv_cmd *cmd = _cmd;
155 u32 h; 156 u32 h;
156 157
157 switch (cmd->type) { 158 switch (cmd->type) {
@@ -166,10 +167,12 @@ static void do_drv_read(struct drv_cmd *cmd)
166 default: 167 default:
167 break; 168 break;
168 } 169 }
170 return 0;
169} 171}
170 172
171static void do_drv_write(struct drv_cmd *cmd) 173static long do_drv_write(void *_cmd)
172{ 174{
175 struct drv_cmd *cmd = _cmd;
173 u32 lo, hi; 176 u32 lo, hi;
174 177
175 switch (cmd->type) { 178 switch (cmd->type) {
@@ -186,30 +189,23 @@ static void do_drv_write(struct drv_cmd *cmd)
186 default: 189 default:
187 break; 190 break;
188 } 191 }
192 return 0;
189} 193}
190 194
191static void drv_read(struct drv_cmd *cmd) 195static void drv_read(struct drv_cmd *cmd)
192{ 196{
193 cpumask_t saved_mask = current->cpus_allowed;
194 cmd->val = 0; 197 cmd->val = 0;
195 198
196 set_cpus_allowed_ptr(current, cmd->mask); 199 work_on_cpu(cpumask_any(cmd->mask), do_drv_read, cmd);
197 do_drv_read(cmd);
198 set_cpus_allowed_ptr(current, &saved_mask);
199} 200}
200 201
201static void drv_write(struct drv_cmd *cmd) 202static void drv_write(struct drv_cmd *cmd)
202{ 203{
203 cpumask_t saved_mask = current->cpus_allowed;
204 unsigned int i; 204 unsigned int i;
205 205
206 for_each_cpu(i, cmd->mask) { 206 for_each_cpu(i, cmd->mask) {
207 set_cpus_allowed_ptr(current, cpumask_of(i)); 207 work_on_cpu(i, do_drv_write, cmd);
208 do_drv_write(cmd);
209 } 208 }
210
211 set_cpus_allowed_ptr(current, &saved_mask);
212 return;
213} 209}
214 210
215static u32 get_cur_val(const struct cpumask *mask) 211static u32 get_cur_val(const struct cpumask *mask)
@@ -235,8 +231,7 @@ static u32 get_cur_val(const struct cpumask *mask)
235 return 0; 231 return 0;
236 } 232 }
237 233
238 cpumask_copy(cmd.mask, mask); 234 cmd.mask = mask;
239
240 drv_read(&cmd); 235 drv_read(&cmd);
241 236
242 dprintk("get_cur_val = %u\n", cmd.val); 237 dprintk("get_cur_val = %u\n", cmd.val);
@@ -368,7 +363,7 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu)
368 return freq; 363 return freq;
369} 364}
370 365
371static unsigned int check_freqs(const cpumask_t *mask, unsigned int freq, 366static unsigned int check_freqs(const struct cpumask *mask, unsigned int freq,
372 struct acpi_cpufreq_data *data) 367 struct acpi_cpufreq_data *data)
373{ 368{
374 unsigned int cur_freq; 369 unsigned int cur_freq;
@@ -403,9 +398,6 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
403 return -ENODEV; 398 return -ENODEV;
404 } 399 }
405 400
406 if (unlikely(!alloc_cpumask_var(&cmd.mask, GFP_KERNEL)))
407 return -ENOMEM;
408
409 perf = data->acpi_data; 401 perf = data->acpi_data;
410 result = cpufreq_frequency_table_target(policy, 402 result = cpufreq_frequency_table_target(policy,
411 data->freq_table, 403 data->freq_table,
@@ -450,9 +442,9 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
450 442
451 /* cpufreq holds the hotplug lock, so we are safe from here on */ 443 /* cpufreq holds the hotplug lock, so we are safe from here on */
452 if (policy->shared_type != CPUFREQ_SHARED_TYPE_ANY) 444 if (policy->shared_type != CPUFREQ_SHARED_TYPE_ANY)
453 cpumask_and(cmd.mask, cpu_online_mask, policy->cpus); 445 cmd.mask = policy->cpus;
454 else 446 else
455 cpumask_copy(cmd.mask, cpumask_of(policy->cpu)); 447 cmd.mask = cpumask_of(policy->cpu);
456 448
457 freqs.old = perf->states[perf->state].core_frequency * 1000; 449 freqs.old = perf->states[perf->state].core_frequency * 1000;
458 freqs.new = data->freq_table[next_state].frequency; 450 freqs.new = data->freq_table[next_state].frequency;
@@ -479,7 +471,6 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
479 perf->state = next_perf_state; 471 perf->state = next_perf_state;
480 472
481out: 473out:
482 free_cpumask_var(cmd.mask);
483 return result; 474 return result;
484} 475}
485 476
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index 8ea6929e974c..549f2ada55f5 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -29,6 +29,19 @@
29 29
30static void __cpuinit early_init_intel(struct cpuinfo_x86 *c) 30static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
31{ 31{
32 /* Unmask CPUID levels if masked: */
33 if (c->x86 == 6 && c->x86_model >= 15) {
34 u64 misc_enable;
35
36 rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
37
38 if (misc_enable & MSR_IA32_MISC_ENABLE_LIMIT_CPUID) {
39 misc_enable &= ~MSR_IA32_MISC_ENABLE_LIMIT_CPUID;
40 wrmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
41 c->cpuid_level = cpuid_eax(0);
42 }
43 }
44
32 if ((c->x86 == 0xf && c->x86_model >= 0x03) || 45 if ((c->x86 == 0xf && c->x86_model >= 0x03) ||
33 (c->x86 == 0x6 && c->x86_model >= 0x0e)) 46 (c->x86 == 0x6 && c->x86_model >= 0x0e))
34 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); 47 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c
index b59ddcc88cd8..0c0a455fe95c 100644
--- a/arch/x86/kernel/cpu/mtrr/generic.c
+++ b/arch/x86/kernel/cpu/mtrr/generic.c
@@ -33,11 +33,13 @@ u64 mtrr_tom2;
33struct mtrr_state_type mtrr_state = {}; 33struct mtrr_state_type mtrr_state = {};
34EXPORT_SYMBOL_GPL(mtrr_state); 34EXPORT_SYMBOL_GPL(mtrr_state);
35 35
36#undef MODULE_PARAM_PREFIX 36static int __initdata mtrr_show;
37#define MODULE_PARAM_PREFIX "mtrr." 37static int __init mtrr_debug(char *opt)
38 38{
39static int mtrr_show; 39 mtrr_show = 1;
40module_param_named(show, mtrr_show, bool, 0); 40 return 0;
41}
42early_param("mtrr.show", mtrr_debug);
41 43
42/* 44/*
43 * Returns the effective MTRR type for the region 45 * Returns the effective MTRR type for the region
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index cd759ad90690..64d5ad0b8add 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -628,11 +628,12 @@ static int hpet_cpuhp_notify(struct notifier_block *n,
628 628
629 switch (action & 0xf) { 629 switch (action & 0xf) {
630 case CPU_ONLINE: 630 case CPU_ONLINE:
631 INIT_DELAYED_WORK(&work.work, hpet_work); 631 INIT_DELAYED_WORK_ON_STACK(&work.work, hpet_work);
632 init_completion(&work.complete); 632 init_completion(&work.complete);
633 /* FIXME: add schedule_work_on() */ 633 /* FIXME: add schedule_work_on() */
634 schedule_delayed_work_on(cpu, &work.work, 0); 634 schedule_delayed_work_on(cpu, &work.work, 0);
635 wait_for_completion(&work.complete); 635 wait_for_completion(&work.complete);
636 destroy_timer_on_stack(&work.work.timer);
636 break; 637 break;
637 case CPU_DEAD: 638 case CPU_DEAD:
638 if (hdev) { 639 if (hdev) {
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
index 884d985b8b82..e948b28a5a9a 100644
--- a/arch/x86/kernel/kprobes.c
+++ b/arch/x86/kernel/kprobes.c
@@ -446,7 +446,7 @@ void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
446static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs, 446static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
447 struct kprobe_ctlblk *kcb) 447 struct kprobe_ctlblk *kcb)
448{ 448{
449#if !defined(CONFIG_PREEMPT) || defined(CONFIG_PM) 449#if !defined(CONFIG_PREEMPT) || defined(CONFIG_FREEZER)
450 if (p->ainsn.boostable == 1 && !p->post_handler) { 450 if (p->ainsn.boostable == 1 && !p->post_handler) {
451 /* Boost up -- we can execute copied instructions directly */ 451 /* Boost up -- we can execute copied instructions directly */
452 reset_current_kprobe(); 452 reset_current_kprobe();
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
index 55c46074eba0..01161077a49c 100644
--- a/arch/x86/kernel/setup_percpu.c
+++ b/arch/x86/kernel/setup_percpu.c
@@ -136,7 +136,7 @@ static void __init setup_cpu_pda_map(void)
136#ifdef CONFIG_X86_64 136#ifdef CONFIG_X86_64
137 137
138/* correctly size the local cpu masks */ 138/* correctly size the local cpu masks */
139static void setup_cpu_local_masks(void) 139static void __init setup_cpu_local_masks(void)
140{ 140{
141 alloc_bootmem_cpumask_var(&cpu_initialized_mask); 141 alloc_bootmem_cpumask_var(&cpu_initialized_mask);
142 alloc_bootmem_cpumask_var(&cpu_callin_mask); 142 alloc_bootmem_cpumask_var(&cpu_callin_mask);
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
index 89bb7668041d..df0587f24c54 100644
--- a/arch/x86/kernel/signal.c
+++ b/arch/x86/kernel/signal.c
@@ -632,9 +632,16 @@ badframe:
632} 632}
633 633
634#ifdef CONFIG_X86_32 634#ifdef CONFIG_X86_32
635asmlinkage int sys_rt_sigreturn(struct pt_regs regs) 635/*
636 * Note: do not pass in pt_regs directly as with tail-call optimization
637 * GCC will incorrectly stomp on the caller's frame and corrupt user-space
638 * register state:
639 */
640asmlinkage int sys_rt_sigreturn(unsigned long __unused)
636{ 641{
637 return do_rt_sigreturn(&regs); 642 struct pt_regs *regs = (struct pt_regs *)&__unused;
643
644 return do_rt_sigreturn(regs);
638} 645}
639#else /* !CONFIG_X86_32 */ 646#else /* !CONFIG_X86_32 */
640asmlinkage long sys_rt_sigreturn(struct pt_regs *regs) 647asmlinkage long sys_rt_sigreturn(struct pt_regs *regs)
diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S
index d44395ff34c3..e2e86a08f31d 100644
--- a/arch/x86/kernel/syscall_table_32.S
+++ b/arch/x86/kernel/syscall_table_32.S
@@ -88,7 +88,7 @@ ENTRY(sys_call_table)
88 .long sys_uselib 88 .long sys_uselib
89 .long sys_swapon 89 .long sys_swapon
90 .long sys_reboot 90 .long sys_reboot
91 .long old_readdir 91 .long sys_old_readdir
92 .long old_mmap /* 90 */ 92 .long old_mmap /* 90 */
93 .long sys_munmap 93 .long sys_munmap
94 .long sys_truncate 94 .long sys_truncate
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
index f885023167e0..6812b829ed83 100644
--- a/arch/x86/kernel/tlb_uv.c
+++ b/arch/x86/kernel/tlb_uv.c
@@ -200,6 +200,7 @@ static int uv_wait_completion(struct bau_desc *bau_desc,
200 destination_timeouts = 0; 200 destination_timeouts = 0;
201 } 201 }
202 } 202 }
203 cpu_relax();
203 } 204 }
204 return FLUSH_COMPLETE; 205 return FLUSH_COMPLETE;
205} 206}
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c
index 23206ba16874..1d3302cc2ddf 100644
--- a/arch/x86/kernel/vmi_32.c
+++ b/arch/x86/kernel/vmi_32.c
@@ -858,7 +858,7 @@ void __init vmi_init(void)
858#endif 858#endif
859} 859}
860 860
861void vmi_activate(void) 861void __init vmi_activate(void)
862{ 862{
863 unsigned long flags; 863 unsigned long flags;
864 864
diff --git a/arch/x86/lib/usercopy_32.c b/arch/x86/lib/usercopy_32.c
index 4a20b2f9a381..7c8ca91bb9ec 100644
--- a/arch/x86/lib/usercopy_32.c
+++ b/arch/x86/lib/usercopy_32.c
@@ -56,7 +56,7 @@ do { \
56 " jmp 2b\n" \ 56 " jmp 2b\n" \
57 ".previous\n" \ 57 ".previous\n" \
58 _ASM_EXTABLE(0b,3b) \ 58 _ASM_EXTABLE(0b,3b) \
59 : "=d"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \ 59 : "=&d"(res), "=&c"(count), "=&a" (__d0), "=&S" (__d1), \
60 "=&D" (__d2) \ 60 "=&D" (__d2) \
61 : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ 61 : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \
62 : "memory"); \ 62 : "memory"); \
@@ -218,7 +218,7 @@ long strnlen_user(const char __user *s, long n)
218 " .align 4\n" 218 " .align 4\n"
219 " .long 0b,2b\n" 219 " .long 0b,2b\n"
220 ".previous" 220 ".previous"
221 :"=r" (n), "=D" (s), "=a" (res), "=c" (tmp) 221 :"=&r" (n), "=&D" (s), "=&a" (res), "=&c" (tmp)
222 :"0" (n), "1" (s), "2" (0), "3" (mask) 222 :"0" (n), "1" (s), "2" (0), "3" (mask)
223 :"cc"); 223 :"cc");
224 return res & mask; 224 return res & mask;
diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c
index 64d6c84e6353..ec13cb5f17ed 100644
--- a/arch/x86/lib/usercopy_64.c
+++ b/arch/x86/lib/usercopy_64.c
@@ -32,7 +32,7 @@ do { \
32 " jmp 2b\n" \ 32 " jmp 2b\n" \
33 ".previous\n" \ 33 ".previous\n" \
34 _ASM_EXTABLE(0b,3b) \ 34 _ASM_EXTABLE(0b,3b) \
35 : "=r"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \ 35 : "=&r"(res), "=&c"(count), "=&a" (__d0), "=&S" (__d1), \
36 "=&D" (__d2) \ 36 "=&D" (__d2) \
37 : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ 37 : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \
38 : "memory"); \ 38 : "memory"); \
@@ -86,7 +86,7 @@ unsigned long __clear_user(void __user *addr, unsigned long size)
86 ".previous\n" 86 ".previous\n"
87 _ASM_EXTABLE(0b,3b) 87 _ASM_EXTABLE(0b,3b)
88 _ASM_EXTABLE(1b,2b) 88 _ASM_EXTABLE(1b,2b)
89 : [size8] "=c"(size), [dst] "=&D" (__d0) 89 : [size8] "=&c"(size), [dst] "=&D" (__d0)
90 : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr), 90 : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),
91 [zero] "r" (0UL), [eight] "r" (8UL)); 91 [zero] "r" (0UL), [eight] "r" (8UL));
92 return size; 92 return size;
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 88f1b10de3be..2cef05074413 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -138,6 +138,47 @@ static pte_t * __init one_page_table_init(pmd_t *pmd)
138 return pte_offset_kernel(pmd, 0); 138 return pte_offset_kernel(pmd, 0);
139} 139}
140 140
141static pte_t *__init page_table_kmap_check(pte_t *pte, pmd_t *pmd,
142 unsigned long vaddr, pte_t *lastpte)
143{
144#ifdef CONFIG_HIGHMEM
145 /*
146 * Something (early fixmap) may already have put a pte
147 * page here, which causes the page table allocation
148 * to become nonlinear. Attempt to fix it, and if it
149 * is still nonlinear then we have to bug.
150 */
151 int pmd_idx_kmap_begin = fix_to_virt(FIX_KMAP_END) >> PMD_SHIFT;
152 int pmd_idx_kmap_end = fix_to_virt(FIX_KMAP_BEGIN) >> PMD_SHIFT;
153
154 if (pmd_idx_kmap_begin != pmd_idx_kmap_end
155 && (vaddr >> PMD_SHIFT) >= pmd_idx_kmap_begin
156 && (vaddr >> PMD_SHIFT) <= pmd_idx_kmap_end
157 && ((__pa(pte) >> PAGE_SHIFT) < table_start
158 || (__pa(pte) >> PAGE_SHIFT) >= table_end)) {
159 pte_t *newpte;
160 int i;
161
162 BUG_ON(after_init_bootmem);
163 newpte = alloc_low_page();
164 for (i = 0; i < PTRS_PER_PTE; i++)
165 set_pte(newpte + i, pte[i]);
166
167 paravirt_alloc_pte(&init_mm, __pa(newpte) >> PAGE_SHIFT);
168 set_pmd(pmd, __pmd(__pa(newpte)|_PAGE_TABLE));
169 BUG_ON(newpte != pte_offset_kernel(pmd, 0));
170 __flush_tlb_all();
171
172 paravirt_release_pte(__pa(pte) >> PAGE_SHIFT);
173 pte = newpte;
174 }
175 BUG_ON(vaddr < fix_to_virt(FIX_KMAP_BEGIN - 1)
176 && vaddr > fix_to_virt(FIX_KMAP_END)
177 && lastpte && lastpte + PTRS_PER_PTE != pte);
178#endif
179 return pte;
180}
181
141/* 182/*
142 * This function initializes a certain range of kernel virtual memory 183 * This function initializes a certain range of kernel virtual memory
143 * with new bootmem page tables, everywhere page tables are missing in 184 * with new bootmem page tables, everywhere page tables are missing in
@@ -154,6 +195,7 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base)
154 unsigned long vaddr; 195 unsigned long vaddr;
155 pgd_t *pgd; 196 pgd_t *pgd;
156 pmd_t *pmd; 197 pmd_t *pmd;
198 pte_t *pte = NULL;
157 199
158 vaddr = start; 200 vaddr = start;
159 pgd_idx = pgd_index(vaddr); 201 pgd_idx = pgd_index(vaddr);
@@ -165,7 +207,8 @@ page_table_range_init(unsigned long start, unsigned long end, pgd_t *pgd_base)
165 pmd = pmd + pmd_index(vaddr); 207 pmd = pmd + pmd_index(vaddr);
166 for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end); 208 for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end);
167 pmd++, pmd_idx++) { 209 pmd++, pmd_idx++) {
168 one_page_table_init(pmd); 210 pte = page_table_kmap_check(one_page_table_init(pmd),
211 pmd, vaddr, pte);
169 212
170 vaddr += PMD_SIZE; 213 vaddr += PMD_SIZE;
171 } 214 }
@@ -508,7 +551,6 @@ static void __init early_ioremap_page_table_range_init(pgd_t *pgd_base)
508 * Fixed mappings, only the page table structure has to be 551 * Fixed mappings, only the page table structure has to be
509 * created - mappings will be set by set_fixmap(): 552 * created - mappings will be set by set_fixmap():
510 */ 553 */
511 early_ioremap_clear();
512 vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK; 554 vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
513 end = (FIXADDR_TOP + PMD_SIZE - 1) & PMD_MASK; 555 end = (FIXADDR_TOP + PMD_SIZE - 1) & PMD_MASK;
514 page_table_range_init(vaddr, end, pgd_base); 556 page_table_range_init(vaddr, end, pgd_base);
@@ -801,7 +843,7 @@ static void __init find_early_table_space(unsigned long end, int use_pse)
801 tables += PAGE_ALIGN(ptes * sizeof(pte_t)); 843 tables += PAGE_ALIGN(ptes * sizeof(pte_t));
802 844
803 /* for fixmap */ 845 /* for fixmap */
804 tables += PAGE_SIZE * 2; 846 tables += PAGE_ALIGN(__end_of_fixed_addresses * sizeof(pte_t));
805 847
806 /* 848 /*
807 * RED-PEN putting page tables only on node 0 could 849 * RED-PEN putting page tables only on node 0 could
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 23f68e77ad1f..e6d36b490250 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -596,7 +596,7 @@ static void __init init_gbpages(void)
596 direct_gbpages = 0; 596 direct_gbpages = 0;
597} 597}
598 598
599static unsigned long __init kernel_physical_mapping_init(unsigned long start, 599static unsigned long __meminit kernel_physical_mapping_init(unsigned long start,
600 unsigned long end, 600 unsigned long end,
601 unsigned long page_size_mask) 601 unsigned long page_size_mask)
602{ 602{
diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c
index d0151d8ce452..ca53224fc56c 100644
--- a/arch/x86/mm/iomap_32.c
+++ b/arch/x86/mm/iomap_32.c
@@ -17,6 +17,7 @@
17 */ 17 */
18 18
19#include <asm/iomap.h> 19#include <asm/iomap.h>
20#include <asm/pat.h>
20#include <linux/module.h> 21#include <linux/module.h>
21 22
22/* Map 'pfn' using fixed map 'type' and protections 'prot' 23/* Map 'pfn' using fixed map 'type' and protections 'prot'
@@ -29,6 +30,15 @@ iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot)
29 30
30 pagefault_disable(); 31 pagefault_disable();
31 32
33 /*
34 * For non-PAT systems, promote PAGE_KERNEL_WC to PAGE_KERNEL_UC_MINUS.
35 * PAGE_KERNEL_WC maps to PWT, which translates to uncached if the
36 * MTRR is UC or WC. UC_MINUS gets the real intention, of the
37 * user, which is "WC if the MTRR is WC, UC if you can't do that."
38 */
39 if (!pat_enabled && pgprot_val(prot) == pgprot_val(PAGE_KERNEL_WC))
40 prot = PAGE_KERNEL_UC_MINUS;
41
32 idx = type + KM_TYPE_NR*smp_processor_id(); 42 idx = type + KM_TYPE_NR*smp_processor_id();
33 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); 43 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
34 set_pte(kmap_pte-idx, pfn_pte(pfn, prot)); 44 set_pte(kmap_pte-idx, pfn_pte(pfn, prot));
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index bd85d42819e1..af750ab973b6 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -557,34 +557,9 @@ void __init early_ioremap_init(void)
557 } 557 }
558} 558}
559 559
560void __init early_ioremap_clear(void)
561{
562 pmd_t *pmd;
563
564 if (early_ioremap_debug)
565 printk(KERN_INFO "early_ioremap_clear()\n");
566
567 pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
568 pmd_clear(pmd);
569 paravirt_release_pte(__pa(bm_pte) >> PAGE_SHIFT);
570 __flush_tlb_all();
571}
572
573void __init early_ioremap_reset(void) 560void __init early_ioremap_reset(void)
574{ 561{
575 enum fixed_addresses idx;
576 unsigned long addr, phys;
577 pte_t *pte;
578
579 after_paging_init = 1; 562 after_paging_init = 1;
580 for (idx = FIX_BTMAP_BEGIN; idx >= FIX_BTMAP_END; idx--) {
581 addr = fix_to_virt(idx);
582 pte = early_ioremap_pte(addr);
583 if (pte_present(*pte)) {
584 phys = pte_val(*pte) & PAGE_MASK;
585 set_fixmap(idx, phys);
586 }
587 }
588} 563}
589 564
590static void __init __early_set_fixmap(enum fixed_addresses idx, 565static void __init __early_set_fixmap(enum fixed_addresses idx,
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 4cf30dee8161..84ba74820ad6 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -534,6 +534,36 @@ out_unlock:
534 return 0; 534 return 0;
535} 535}
536 536
537static int __cpa_process_fault(struct cpa_data *cpa, unsigned long vaddr,
538 int primary)
539{
540 /*
541 * Ignore all non primary paths.
542 */
543 if (!primary)
544 return 0;
545
546 /*
547 * Ignore the NULL PTE for kernel identity mapping, as it is expected
548 * to have holes.
549 * Also set numpages to '1' indicating that we processed cpa req for
550 * one virtual address page and its pfn. TBD: numpages can be set based
551 * on the initial value and the level returned by lookup_address().
552 */
553 if (within(vaddr, PAGE_OFFSET,
554 PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT))) {
555 cpa->numpages = 1;
556 cpa->pfn = __pa(vaddr) >> PAGE_SHIFT;
557 return 0;
558 } else {
559 WARN(1, KERN_WARNING "CPA: called for zero pte. "
560 "vaddr = %lx cpa->vaddr = %lx\n", vaddr,
561 *cpa->vaddr);
562
563 return -EFAULT;
564 }
565}
566
537static int __change_page_attr(struct cpa_data *cpa, int primary) 567static int __change_page_attr(struct cpa_data *cpa, int primary)
538{ 568{
539 unsigned long address; 569 unsigned long address;
@@ -549,19 +579,11 @@ static int __change_page_attr(struct cpa_data *cpa, int primary)
549repeat: 579repeat:
550 kpte = lookup_address(address, &level); 580 kpte = lookup_address(address, &level);
551 if (!kpte) 581 if (!kpte)
552 return 0; 582 return __cpa_process_fault(cpa, address, primary);
553 583
554 old_pte = *kpte; 584 old_pte = *kpte;
555 if (!pte_val(old_pte)) { 585 if (!pte_val(old_pte))
556 if (!primary) 586 return __cpa_process_fault(cpa, address, primary);
557 return 0;
558
559 /*
560 * Special error value returned, indicating that the mapping
561 * did not exist at this address.
562 */
563 return -EFAULT;
564 }
565 587
566 if (level == PG_LEVEL_4K) { 588 if (level == PG_LEVEL_4K) {
567 pte_t new_pte; 589 pte_t new_pte;
@@ -659,12 +681,7 @@ static int cpa_process_alias(struct cpa_data *cpa)
659 vaddr = *cpa->vaddr; 681 vaddr = *cpa->vaddr;
660 682
661 if (!(within(vaddr, PAGE_OFFSET, 683 if (!(within(vaddr, PAGE_OFFSET,
662 PAGE_OFFSET + (max_low_pfn_mapped << PAGE_SHIFT)) 684 PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT)))) {
663#ifdef CONFIG_X86_64
664 || within(vaddr, PAGE_OFFSET + (1UL<<32),
665 PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT))
666#endif
667 )) {
668 685
669 alias_cpa = *cpa; 686 alias_cpa = *cpa;
670 temp_cpa_vaddr = (unsigned long) __va(cpa->pfn << PAGE_SHIFT); 687 temp_cpa_vaddr = (unsigned long) __va(cpa->pfn << PAGE_SHIFT);
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index 160c42d3eb8f..7b61036427df 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -333,11 +333,23 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type,
333 req_type & _PAGE_CACHE_MASK); 333 req_type & _PAGE_CACHE_MASK);
334 } 334 }
335 335
336 is_range_ram = pagerange_is_ram(start, end); 336 if (new_type)
337 if (is_range_ram == 1) 337 *new_type = actual_type;
338 return reserve_ram_pages_type(start, end, req_type, new_type); 338
339 else if (is_range_ram < 0) 339 /*
340 return -EINVAL; 340 * For legacy reasons, some parts of the physical address range in the
341 * legacy 1MB region is treated as non-RAM (even when listed as RAM in
342 * the e820 tables). So we will track the memory attributes of this
343 * legacy 1MB region using the linear memtype_list always.
344 */
345 if (end >= ISA_END_ADDRESS) {
346 is_range_ram = pagerange_is_ram(start, end);
347 if (is_range_ram == 1)
348 return reserve_ram_pages_type(start, end, req_type,
349 new_type);
350 else if (is_range_ram < 0)
351 return -EINVAL;
352 }
341 353
342 new = kmalloc(sizeof(struct memtype), GFP_KERNEL); 354 new = kmalloc(sizeof(struct memtype), GFP_KERNEL);
343 if (!new) 355 if (!new)
@@ -347,9 +359,6 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type,
347 new->end = end; 359 new->end = end;
348 new->type = actual_type; 360 new->type = actual_type;
349 361
350 if (new_type)
351 *new_type = actual_type;
352
353 spin_lock(&memtype_lock); 362 spin_lock(&memtype_lock);
354 363
355 if (cached_entry && start >= cached_start) 364 if (cached_entry && start >= cached_start)
@@ -437,11 +446,19 @@ int free_memtype(u64 start, u64 end)
437 if (is_ISA_range(start, end - 1)) 446 if (is_ISA_range(start, end - 1))
438 return 0; 447 return 0;
439 448
440 is_range_ram = pagerange_is_ram(start, end); 449 /*
441 if (is_range_ram == 1) 450 * For legacy reasons, some parts of the physical address range in the
442 return free_ram_pages_type(start, end); 451 * legacy 1MB region is treated as non-RAM (even when listed as RAM in
443 else if (is_range_ram < 0) 452 * the e820 tables). So we will track the memory attributes of this
444 return -EINVAL; 453 * legacy 1MB region using the linear memtype_list always.
454 */
455 if (end >= ISA_END_ADDRESS) {
456 is_range_ram = pagerange_is_ram(start, end);
457 if (is_range_ram == 1)
458 return free_ram_pages_type(start, end);
459 else if (is_range_ram < 0)
460 return -EINVAL;
461 }
445 462
446 spin_lock(&memtype_lock); 463 spin_lock(&memtype_lock);
447 list_for_each_entry(entry, &memtype_list, nd) { 464 list_for_each_entry(entry, &memtype_list, nd) {
@@ -505,35 +522,6 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)
505} 522}
506#endif /* CONFIG_STRICT_DEVMEM */ 523#endif /* CONFIG_STRICT_DEVMEM */
507 524
508/*
509 * Change the memory type for the physial address range in kernel identity
510 * mapping space if that range is a part of identity map.
511 */
512static int kernel_map_sync_memtype(u64 base, unsigned long size,
513 unsigned long flags)
514{
515 unsigned long id_sz;
516 int ret;
517
518 if (!pat_enabled || base >= __pa(high_memory))
519 return 0;
520
521 id_sz = (__pa(high_memory) < base + size) ?
522 __pa(high_memory) - base :
523 size;
524
525 ret = ioremap_change_attr((unsigned long)__va(base), id_sz, flags);
526 /*
527 * -EFAULT return means that the addr was not valid and did not have
528 * any identity mapping. That case is a success for
529 * kernel_map_sync_memtype.
530 */
531 if (ret == -EFAULT)
532 ret = 0;
533
534 return ret;
535}
536
537int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, 525int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
538 unsigned long size, pgprot_t *vma_prot) 526 unsigned long size, pgprot_t *vma_prot)
539{ 527{
@@ -584,7 +572,9 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
584 if (retval < 0) 572 if (retval < 0)
585 return 0; 573 return 0;
586 574
587 if (kernel_map_sync_memtype(offset, size, flags)) { 575 if (((pfn < max_low_pfn_mapped) ||
576 (pfn >= (1UL<<(32 - PAGE_SHIFT)) && pfn < max_pfn_mapped)) &&
577 ioremap_change_attr((unsigned long)__va(offset), size, flags) < 0) {
588 free_memtype(offset, offset + size); 578 free_memtype(offset, offset + size);
589 printk(KERN_INFO 579 printk(KERN_INFO
590 "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n", 580 "%s:%d /dev/mem ioremap_change_attr failed %s for %Lx-%Lx\n",
@@ -632,7 +622,7 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
632 int strict_prot) 622 int strict_prot)
633{ 623{
634 int is_ram = 0; 624 int is_ram = 0;
635 int ret; 625 int id_sz, ret;
636 unsigned long flags; 626 unsigned long flags;
637 unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK); 627 unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK);
638 628
@@ -673,7 +663,15 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
673 flags); 663 flags);
674 } 664 }
675 665
676 if (kernel_map_sync_memtype(paddr, size, flags)) { 666 /* Need to keep identity mapping in sync */
667 if (paddr >= __pa(high_memory))
668 return 0;
669
670 id_sz = (__pa(high_memory) < paddr + size) ?
671 __pa(high_memory) - paddr :
672 size;
673
674 if (ioremap_change_attr((unsigned long)__va(paddr), id_sz, flags) < 0) {
677 free_memtype(paddr, paddr + size); 675 free_memtype(paddr, paddr + size);
678 printk(KERN_ERR 676 printk(KERN_ERR
679 "%s:%d reserve_pfn_range ioremap_change_attr failed %s " 677 "%s:%d reserve_pfn_range ioremap_change_attr failed %s "
diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild
index 58c02a454130..c68e1680da01 100644
--- a/arch/xtensa/include/asm/Kbuild
+++ b/arch/xtensa/include/asm/Kbuild
@@ -1,3 +1 @@
1include include/asm-generic/Kbuild.asm include include/asm-generic/Kbuild.asm
2
3unifdef-y += swab.h
diff --git a/arch/xtensa/include/asm/byteorder.h b/arch/xtensa/include/asm/byteorder.h
index 329b94591ca4..54eb6315349c 100644
--- a/arch/xtensa/include/asm/byteorder.h
+++ b/arch/xtensa/include/asm/byteorder.h
@@ -1,8 +1,6 @@
1#ifndef _XTENSA_BYTEORDER_H 1#ifndef _XTENSA_BYTEORDER_H
2#define _XTENSA_BYTEORDER_H 2#define _XTENSA_BYTEORDER_H
3 3
4#include <asm/swab.h>
5
6#ifdef __XTENSA_EL__ 4#ifdef __XTENSA_EL__
7#include <linux/byteorder/little_endian.h> 5#include <linux/byteorder/little_endian.h>
8#elif defined(__XTENSA_EB__) 6#elif defined(__XTENSA_EB__)
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index d80f4cc2e0da..65d90c720b5a 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -19,7 +19,7 @@ obj-y += osl.o utils.o reboot.o\
19 19
20# sleep related files 20# sleep related files
21obj-y += wakeup.o 21obj-y += wakeup.o
22obj-y += main.o 22obj-y += sleep.o
23obj-$(CONFIG_ACPI_SLEEP) += proc.o 23obj-$(CONFIG_ACPI_SLEEP) += proc.o
24 24
25 25
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 8dfcbb8aff73..a2b82c90a683 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -120,31 +120,6 @@ static struct acpi_ec {
120 spinlock_t curr_lock; 120 spinlock_t curr_lock;
121} *boot_ec, *first_ec; 121} *boot_ec, *first_ec;
122 122
123/*
124 * Some Asus system have exchanged ECDT data/command IO addresses.
125 */
126static int print_ecdt_error(const struct dmi_system_id *id)
127{
128 printk(KERN_NOTICE PREFIX "%s detected - "
129 "ECDT has exchanged control/data I/O address\n",
130 id->ident);
131 return 0;
132}
133
134static struct dmi_system_id __cpuinitdata ec_dmi_table[] = {
135 {
136 print_ecdt_error, "Asus L4R", {
137 DMI_MATCH(DMI_BIOS_VERSION, "1008.006"),
138 DMI_MATCH(DMI_PRODUCT_NAME, "L4R"),
139 DMI_MATCH(DMI_BOARD_NAME, "L4R") }, NULL},
140 {
141 print_ecdt_error, "Asus M6R", {
142 DMI_MATCH(DMI_BIOS_VERSION, "0207"),
143 DMI_MATCH(DMI_PRODUCT_NAME, "M6R"),
144 DMI_MATCH(DMI_BOARD_NAME, "M6R") }, NULL},
145 {},
146};
147
148/* -------------------------------------------------------------------------- 123/* --------------------------------------------------------------------------
149 Transaction Management 124 Transaction Management
150 -------------------------------------------------------------------------- */ 125 -------------------------------------------------------------------------- */
@@ -983,8 +958,8 @@ static const struct acpi_device_id ec_device_ids[] = {
983int __init acpi_ec_ecdt_probe(void) 958int __init acpi_ec_ecdt_probe(void)
984{ 959{
985 acpi_status status; 960 acpi_status status;
961 struct acpi_ec *saved_ec = NULL;
986 struct acpi_table_ecdt *ecdt_ptr; 962 struct acpi_table_ecdt *ecdt_ptr;
987 acpi_handle dummy;
988 963
989 boot_ec = make_acpi_ec(); 964 boot_ec = make_acpi_ec();
990 if (!boot_ec) 965 if (!boot_ec)
@@ -998,21 +973,16 @@ int __init acpi_ec_ecdt_probe(void)
998 pr_info(PREFIX "EC description table is found, configuring boot EC\n"); 973 pr_info(PREFIX "EC description table is found, configuring boot EC\n");
999 boot_ec->command_addr = ecdt_ptr->control.address; 974 boot_ec->command_addr = ecdt_ptr->control.address;
1000 boot_ec->data_addr = ecdt_ptr->data.address; 975 boot_ec->data_addr = ecdt_ptr->data.address;
1001 if (dmi_check_system(ec_dmi_table)) {
1002 /*
1003 * If the board falls into ec_dmi_table, it means
1004 * that ECDT table gives the incorrect command/status
1005 * & data I/O address. Just fix it.
1006 */
1007 boot_ec->data_addr = ecdt_ptr->control.address;
1008 boot_ec->command_addr = ecdt_ptr->data.address;
1009 }
1010 boot_ec->gpe = ecdt_ptr->gpe; 976 boot_ec->gpe = ecdt_ptr->gpe;
1011 boot_ec->handle = ACPI_ROOT_OBJECT; 977 boot_ec->handle = ACPI_ROOT_OBJECT;
1012 acpi_get_handle(ACPI_ROOT_OBJECT, ecdt_ptr->id, &boot_ec->handle); 978 acpi_get_handle(ACPI_ROOT_OBJECT, ecdt_ptr->id, &boot_ec->handle);
1013 /* Add some basic check against completely broken table */ 979 /* Don't trust ECDT, which comes from ASUSTek */
1014 if (boot_ec->data_addr != boot_ec->command_addr) 980 if (!dmi_name_in_vendors("ASUS"))
1015 goto install; 981 goto install;
982 saved_ec = kmalloc(sizeof(struct acpi_ec), GFP_KERNEL);
983 if (!saved_ec)
984 return -ENOMEM;
985 memcpy(&saved_ec, boot_ec, sizeof(saved_ec));
1016 /* fall through */ 986 /* fall through */
1017 } 987 }
1018 /* This workaround is needed only on some broken machines, 988 /* This workaround is needed only on some broken machines,
@@ -1023,12 +993,29 @@ int __init acpi_ec_ecdt_probe(void)
1023 /* Check that acpi_get_devices actually find something */ 993 /* Check that acpi_get_devices actually find something */
1024 if (ACPI_FAILURE(status) || !boot_ec->handle) 994 if (ACPI_FAILURE(status) || !boot_ec->handle)
1025 goto error; 995 goto error;
1026 /* We really need to limit this workaround, the only ASUS, 996 if (saved_ec) {
1027 * which needs it, has fake EC._INI method, so use it as flag. 997 /* try to find good ECDT from ASUSTek */
1028 * Keep boot_ec struct as it will be needed soon. 998 if (saved_ec->command_addr != boot_ec->command_addr ||
1029 */ 999 saved_ec->data_addr != boot_ec->data_addr ||
1030 if (ACPI_FAILURE(acpi_get_handle(boot_ec->handle, "_INI", &dummy))) 1000 saved_ec->gpe != boot_ec->gpe ||
1031 return -ENODEV; 1001 saved_ec->handle != boot_ec->handle)
1002 pr_info(PREFIX "ASUSTek keeps feeding us with broken "
1003 "ECDT tables, which are very hard to workaround. "
1004 "Trying to use DSDT EC info instead. Please send "
1005 "output of acpidump to linux-acpi@vger.kernel.org\n");
1006 kfree(saved_ec);
1007 saved_ec = NULL;
1008 } else {
1009 /* We really need to limit this workaround, the only ASUS,
1010 * which needs it, has fake EC._INI method, so use it as flag.
1011 * Keep boot_ec struct as it will be needed soon.
1012 */
1013 acpi_handle dummy;
1014 if (!dmi_name_in_vendors("ASUS") ||
1015 ACPI_FAILURE(acpi_get_handle(boot_ec->handle, "_INI",
1016 &dummy)))
1017 return -ENODEV;
1018 }
1032install: 1019install:
1033 if (!ec_install_handlers(boot_ec)) { 1020 if (!ec_install_handlers(boot_ec)) {
1034 first_ec = boot_ec; 1021 first_ec = boot_ec;
diff --git a/drivers/acpi/main.c b/drivers/acpi/sleep.c
index 7e3c609cbef2..7e3c609cbef2 100644
--- a/drivers/acpi/main.c
+++ b/drivers/acpi/sleep.c
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 073ff09218a9..99e6f1f8ea45 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -416,7 +416,8 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
416 } 416 }
417 417
418 /* Passive (optional) */ 418 /* Passive (optional) */
419 if (flag & ACPI_TRIPS_PASSIVE) { 419 if (((flag & ACPI_TRIPS_PASSIVE) && tz->trips.passive.flags.valid) ||
420 (flag == ACPI_TRIPS_INIT)) {
420 valid = tz->trips.passive.flags.valid; 421 valid = tz->trips.passive.flags.valid;
421 if (psv == -1) { 422 if (psv == -1) {
422 status = AE_SUPPORT; 423 status = AE_SUPPORT;
@@ -462,8 +463,11 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
462 memset(&devices, 0, sizeof(struct acpi_handle_list)); 463 memset(&devices, 0, sizeof(struct acpi_handle_list));
463 status = acpi_evaluate_reference(tz->device->handle, "_PSL", 464 status = acpi_evaluate_reference(tz->device->handle, "_PSL",
464 NULL, &devices); 465 NULL, &devices);
465 if (ACPI_FAILURE(status)) 466 if (ACPI_FAILURE(status)) {
467 printk(KERN_WARNING PREFIX
468 "Invalid passive threshold\n");
466 tz->trips.passive.flags.valid = 0; 469 tz->trips.passive.flags.valid = 0;
470 }
467 else 471 else
468 tz->trips.passive.flags.valid = 1; 472 tz->trips.passive.flags.valid = 1;
469 473
@@ -487,7 +491,8 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
487 if (act == -1) 491 if (act == -1)
488 break; /* disable all active trip points */ 492 break; /* disable all active trip points */
489 493
490 if (flag & ACPI_TRIPS_ACTIVE) { 494 if ((flag == ACPI_TRIPS_INIT) || ((flag & ACPI_TRIPS_ACTIVE) &&
495 tz->trips.active[i].flags.valid)) {
491 status = acpi_evaluate_integer(tz->device->handle, 496 status = acpi_evaluate_integer(tz->device->handle,
492 name, NULL, &tmp); 497 name, NULL, &tmp);
493 if (ACPI_FAILURE(status)) { 498 if (ACPI_FAILURE(status)) {
@@ -521,8 +526,11 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
521 memset(&devices, 0, sizeof(struct acpi_handle_list)); 526 memset(&devices, 0, sizeof(struct acpi_handle_list));
522 status = acpi_evaluate_reference(tz->device->handle, 527 status = acpi_evaluate_reference(tz->device->handle,
523 name, NULL, &devices); 528 name, NULL, &devices);
524 if (ACPI_FAILURE(status)) 529 if (ACPI_FAILURE(status)) {
530 printk(KERN_WARNING PREFIX
531 "Invalid active%d threshold\n", i);
525 tz->trips.active[i].flags.valid = 0; 532 tz->trips.active[i].flags.valid = 0;
533 }
526 else 534 else
527 tz->trips.active[i].flags.valid = 1; 535 tz->trips.active[i].flags.valid = 1;
528 536
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 1a7be96d627b..503a908afc80 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -698,6 +698,15 @@ config PATA_IXP4XX_CF
698 698
699 If unsure, say N. 699 If unsure, say N.
700 700
701config PATA_OCTEON_CF
702 tristate "OCTEON Boot Bus Compact Flash support"
703 depends on CPU_CAVIUM_OCTEON
704 help
705 This option enables a polled compact flash driver for use with
706 compact flash cards attached to the OCTEON boot bus.
707
708 If unsure, say N.
709
701config PATA_SCC 710config PATA_SCC
702 tristate "Toshiba's Cell Reference Set IDE support" 711 tristate "Toshiba's Cell Reference Set IDE support"
703 depends on PCI && PPC_CELLEB 712 depends on PCI && PPC_CELLEB
diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
index 674965fa326d..7f1ecf99528c 100644
--- a/drivers/ata/Makefile
+++ b/drivers/ata/Makefile
@@ -69,6 +69,7 @@ obj-$(CONFIG_PATA_IXP4XX_CF) += pata_ixp4xx_cf.o
69obj-$(CONFIG_PATA_SCC) += pata_scc.o 69obj-$(CONFIG_PATA_SCC) += pata_scc.o
70obj-$(CONFIG_PATA_SCH) += pata_sch.o 70obj-$(CONFIG_PATA_SCH) += pata_sch.o
71obj-$(CONFIG_PATA_BF54X) += pata_bf54x.o 71obj-$(CONFIG_PATA_BF54X) += pata_bf54x.o
72obj-$(CONFIG_PATA_OCTEON_CF) += pata_octeon_cf.o
72obj-$(CONFIG_PATA_PLATFORM) += pata_platform.o 73obj-$(CONFIG_PATA_PLATFORM) += pata_platform.o
73obj-$(CONFIG_PATA_OF_PLATFORM) += pata_of_platform.o 74obj-$(CONFIG_PATA_OF_PLATFORM) += pata_of_platform.o
74obj-$(CONFIG_PATA_ICSIDE) += pata_icside.o 75obj-$(CONFIG_PATA_ICSIDE) += pata_icside.o
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 71218d76d75e..88c242856dae 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3029,33 +3029,33 @@ int sata_set_spd(struct ata_link *link)
3029 */ 3029 */
3030 3030
3031static const struct ata_timing ata_timing[] = { 3031static const struct ata_timing ata_timing[] = {
3032/* { XFER_PIO_SLOW, 120, 290, 240, 960, 290, 240, 960, 0 }, */ 3032/* { XFER_PIO_SLOW, 120, 290, 240, 960, 290, 240, 0, 960, 0 }, */
3033 { XFER_PIO_0, 70, 290, 240, 600, 165, 150, 600, 0 }, 3033 { XFER_PIO_0, 70, 290, 240, 600, 165, 150, 0, 600, 0 },
3034 { XFER_PIO_1, 50, 290, 93, 383, 125, 100, 383, 0 }, 3034 { XFER_PIO_1, 50, 290, 93, 383, 125, 100, 0, 383, 0 },
3035 { XFER_PIO_2, 30, 290, 40, 330, 100, 90, 240, 0 }, 3035 { XFER_PIO_2, 30, 290, 40, 330, 100, 90, 0, 240, 0 },
3036 { XFER_PIO_3, 30, 80, 70, 180, 80, 70, 180, 0 }, 3036 { XFER_PIO_3, 30, 80, 70, 180, 80, 70, 0, 180, 0 },
3037 { XFER_PIO_4, 25, 70, 25, 120, 70, 25, 120, 0 }, 3037 { XFER_PIO_4, 25, 70, 25, 120, 70, 25, 0, 120, 0 },
3038 { XFER_PIO_5, 15, 65, 25, 100, 65, 25, 100, 0 }, 3038 { XFER_PIO_5, 15, 65, 25, 100, 65, 25, 0, 100, 0 },
3039 { XFER_PIO_6, 10, 55, 20, 80, 55, 20, 80, 0 }, 3039 { XFER_PIO_6, 10, 55, 20, 80, 55, 20, 0, 80, 0 },
3040 3040
3041 { XFER_SW_DMA_0, 120, 0, 0, 0, 480, 480, 960, 0 }, 3041 { XFER_SW_DMA_0, 120, 0, 0, 0, 480, 480, 50, 960, 0 },
3042 { XFER_SW_DMA_1, 90, 0, 0, 0, 240, 240, 480, 0 }, 3042 { XFER_SW_DMA_1, 90, 0, 0, 0, 240, 240, 30, 480, 0 },
3043 { XFER_SW_DMA_2, 60, 0, 0, 0, 120, 120, 240, 0 }, 3043 { XFER_SW_DMA_2, 60, 0, 0, 0, 120, 120, 20, 240, 0 },
3044 3044
3045 { XFER_MW_DMA_0, 60, 0, 0, 0, 215, 215, 480, 0 }, 3045 { XFER_MW_DMA_0, 60, 0, 0, 0, 215, 215, 20, 480, 0 },
3046 { XFER_MW_DMA_1, 45, 0, 0, 0, 80, 50, 150, 0 }, 3046 { XFER_MW_DMA_1, 45, 0, 0, 0, 80, 50, 5, 150, 0 },
3047 { XFER_MW_DMA_2, 25, 0, 0, 0, 70, 25, 120, 0 }, 3047 { XFER_MW_DMA_2, 25, 0, 0, 0, 70, 25, 5, 120, 0 },
3048 { XFER_MW_DMA_3, 25, 0, 0, 0, 65, 25, 100, 0 }, 3048 { XFER_MW_DMA_3, 25, 0, 0, 0, 65, 25, 5, 100, 0 },
3049 { XFER_MW_DMA_4, 25, 0, 0, 0, 55, 20, 80, 0 }, 3049 { XFER_MW_DMA_4, 25, 0, 0, 0, 55, 20, 5, 80, 0 },
3050 3050
3051/* { XFER_UDMA_SLOW, 0, 0, 0, 0, 0, 0, 0, 150 }, */ 3051/* { XFER_UDMA_SLOW, 0, 0, 0, 0, 0, 0, 0, 0, 150 }, */
3052 { XFER_UDMA_0, 0, 0, 0, 0, 0, 0, 0, 120 }, 3052 { XFER_UDMA_0, 0, 0, 0, 0, 0, 0, 0, 0, 120 },
3053 { XFER_UDMA_1, 0, 0, 0, 0, 0, 0, 0, 80 }, 3053 { XFER_UDMA_1, 0, 0, 0, 0, 0, 0, 0, 0, 80 },
3054 { XFER_UDMA_2, 0, 0, 0, 0, 0, 0, 0, 60 }, 3054 { XFER_UDMA_2, 0, 0, 0, 0, 0, 0, 0, 0, 60 },
3055 { XFER_UDMA_3, 0, 0, 0, 0, 0, 0, 0, 45 }, 3055 { XFER_UDMA_3, 0, 0, 0, 0, 0, 0, 0, 0, 45 },
3056 { XFER_UDMA_4, 0, 0, 0, 0, 0, 0, 0, 30 }, 3056 { XFER_UDMA_4, 0, 0, 0, 0, 0, 0, 0, 0, 30 },
3057 { XFER_UDMA_5, 0, 0, 0, 0, 0, 0, 0, 20 }, 3057 { XFER_UDMA_5, 0, 0, 0, 0, 0, 0, 0, 0, 20 },
3058 { XFER_UDMA_6, 0, 0, 0, 0, 0, 0, 0, 15 }, 3058 { XFER_UDMA_6, 0, 0, 0, 0, 0, 0, 0, 0, 15 },
3059 3059
3060 { 0xFF } 3060 { 0xFF }
3061}; 3061};
@@ -3065,14 +3065,15 @@ static const struct ata_timing ata_timing[] = {
3065 3065
3066static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q, int T, int UT) 3066static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q, int T, int UT)
3067{ 3067{
3068 q->setup = EZ(t->setup * 1000, T); 3068 q->setup = EZ(t->setup * 1000, T);
3069 q->act8b = EZ(t->act8b * 1000, T); 3069 q->act8b = EZ(t->act8b * 1000, T);
3070 q->rec8b = EZ(t->rec8b * 1000, T); 3070 q->rec8b = EZ(t->rec8b * 1000, T);
3071 q->cyc8b = EZ(t->cyc8b * 1000, T); 3071 q->cyc8b = EZ(t->cyc8b * 1000, T);
3072 q->active = EZ(t->active * 1000, T); 3072 q->active = EZ(t->active * 1000, T);
3073 q->recover = EZ(t->recover * 1000, T); 3073 q->recover = EZ(t->recover * 1000, T);
3074 q->cycle = EZ(t->cycle * 1000, T); 3074 q->dmack_hold = EZ(t->dmack_hold * 1000, T);
3075 q->udma = EZ(t->udma * 1000, UT); 3075 q->cycle = EZ(t->cycle * 1000, T);
3076 q->udma = EZ(t->udma * 1000, UT);
3076} 3077}
3077 3078
3078void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b, 3079void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b,
@@ -3084,6 +3085,7 @@ void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b,
3084 if (what & ATA_TIMING_CYC8B ) m->cyc8b = max(a->cyc8b, b->cyc8b); 3085 if (what & ATA_TIMING_CYC8B ) m->cyc8b = max(a->cyc8b, b->cyc8b);
3085 if (what & ATA_TIMING_ACTIVE ) m->active = max(a->active, b->active); 3086 if (what & ATA_TIMING_ACTIVE ) m->active = max(a->active, b->active);
3086 if (what & ATA_TIMING_RECOVER) m->recover = max(a->recover, b->recover); 3087 if (what & ATA_TIMING_RECOVER) m->recover = max(a->recover, b->recover);
3088 if (what & ATA_TIMING_DMACK_HOLD) m->dmack_hold = max(a->dmack_hold, b->dmack_hold);
3087 if (what & ATA_TIMING_CYCLE ) m->cycle = max(a->cycle, b->cycle); 3089 if (what & ATA_TIMING_CYCLE ) m->cycle = max(a->cycle, b->cycle);
3088 if (what & ATA_TIMING_UDMA ) m->udma = max(a->udma, b->udma); 3090 if (what & ATA_TIMING_UDMA ) m->udma = max(a->udma, b->udma);
3089} 3091}
@@ -6638,7 +6640,6 @@ EXPORT_SYMBOL_GPL(ata_dev_pair);
6638EXPORT_SYMBOL_GPL(ata_port_disable); 6640EXPORT_SYMBOL_GPL(ata_port_disable);
6639EXPORT_SYMBOL_GPL(ata_ratelimit); 6641EXPORT_SYMBOL_GPL(ata_ratelimit);
6640EXPORT_SYMBOL_GPL(ata_wait_register); 6642EXPORT_SYMBOL_GPL(ata_wait_register);
6641EXPORT_SYMBOL_GPL(ata_scsi_ioctl);
6642EXPORT_SYMBOL_GPL(ata_scsi_queuecmd); 6643EXPORT_SYMBOL_GPL(ata_scsi_queuecmd);
6643EXPORT_SYMBOL_GPL(ata_scsi_slave_config); 6644EXPORT_SYMBOL_GPL(ata_scsi_slave_config);
6644EXPORT_SYMBOL_GPL(ata_scsi_slave_destroy); 6645EXPORT_SYMBOL_GPL(ata_scsi_slave_destroy);
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 9e92107691f2..a1a6e6298c33 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -423,9 +423,9 @@ int ata_std_bios_param(struct scsi_device *sdev, struct block_device *bdev,
423 * RETURNS: 423 * RETURNS:
424 * Zero on success, negative errno on error. 424 * Zero on success, negative errno on error.
425 */ 425 */
426static int ata_get_identity(struct scsi_device *sdev, void __user *arg) 426static int ata_get_identity(struct ata_port *ap, struct scsi_device *sdev,
427 void __user *arg)
427{ 428{
428 struct ata_port *ap = ata_shost_to_port(sdev->host);
429 struct ata_device *dev = ata_scsi_find_dev(ap, sdev); 429 struct ata_device *dev = ata_scsi_find_dev(ap, sdev);
430 u16 __user *dst = arg; 430 u16 __user *dst = arg;
431 char buf[40]; 431 char buf[40];
@@ -645,7 +645,8 @@ int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg)
645 return rc; 645 return rc;
646} 646}
647 647
648int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg) 648int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *scsidev,
649 int cmd, void __user *arg)
649{ 650{
650 int val = -EINVAL, rc = -EINVAL; 651 int val = -EINVAL, rc = -EINVAL;
651 652
@@ -663,7 +664,7 @@ int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg)
663 return 0; 664 return 0;
664 665
665 case HDIO_GET_IDENTITY: 666 case HDIO_GET_IDENTITY:
666 return ata_get_identity(scsidev, arg); 667 return ata_get_identity(ap, scsidev, arg);
667 668
668 case HDIO_DRIVE_CMD: 669 case HDIO_DRIVE_CMD:
669 if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO)) 670 if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
@@ -682,6 +683,14 @@ int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg)
682 683
683 return rc; 684 return rc;
684} 685}
686EXPORT_SYMBOL_GPL(ata_sas_scsi_ioctl);
687
688int ata_scsi_ioctl(struct scsi_device *scsidev, int cmd, void __user *arg)
689{
690 return ata_sas_scsi_ioctl(ata_shost_to_port(scsidev->host),
691 scsidev, cmd, arg);
692}
693EXPORT_SYMBOL_GPL(ata_scsi_ioctl);
685 694
686/** 695/**
687 * ata_scsi_qc_new - acquire new ata_queued_cmd reference 696 * ata_scsi_qc_new - acquire new ata_queued_cmd reference
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c
index a7999c19f0c9..eb99dbe78081 100644
--- a/drivers/ata/pata_ali.c
+++ b/drivers/ata/pata_ali.c
@@ -41,7 +41,7 @@ static int ali_atapi_dma = 0;
41module_param_named(atapi_dma, ali_atapi_dma, int, 0644); 41module_param_named(atapi_dma, ali_atapi_dma, int, 0644);
42MODULE_PARM_DESC(atapi_dma, "Enable ATAPI DMA (0=disable, 1=enable)"); 42MODULE_PARM_DESC(atapi_dma, "Enable ATAPI DMA (0=disable, 1=enable)");
43 43
44static struct pci_dev *isa_bridge; 44static struct pci_dev *ali_isa_bridge;
45 45
46/* 46/*
47 * Cable special cases 47 * Cable special cases
@@ -346,13 +346,13 @@ static void ali_c2_c3_postreset(struct ata_link *link, unsigned int *classes)
346 int port_bit = 4 << link->ap->port_no; 346 int port_bit = 4 << link->ap->port_no;
347 347
348 /* If our bridge is an ALI 1533 then do the extra work */ 348 /* If our bridge is an ALI 1533 then do the extra work */
349 if (isa_bridge) { 349 if (ali_isa_bridge) {
350 /* Tristate and re-enable the bus signals */ 350 /* Tristate and re-enable the bus signals */
351 pci_read_config_byte(isa_bridge, 0x58, &r); 351 pci_read_config_byte(ali_isa_bridge, 0x58, &r);
352 r &= ~port_bit; 352 r &= ~port_bit;
353 pci_write_config_byte(isa_bridge, 0x58, r); 353 pci_write_config_byte(ali_isa_bridge, 0x58, r);
354 r |= port_bit; 354 r |= port_bit;
355 pci_write_config_byte(isa_bridge, 0x58, r); 355 pci_write_config_byte(ali_isa_bridge, 0x58, r);
356 } 356 }
357 ata_sff_postreset(link, classes); 357 ata_sff_postreset(link, classes);
358} 358}
@@ -467,14 +467,14 @@ static void ali_init_chipset(struct pci_dev *pdev)
467 pci_write_config_byte(pdev, 0x53, tmp); 467 pci_write_config_byte(pdev, 0x53, tmp);
468 } 468 }
469 north = pci_get_bus_and_slot(0, PCI_DEVFN(0,0)); 469 north = pci_get_bus_and_slot(0, PCI_DEVFN(0,0));
470 if (north && north->vendor == PCI_VENDOR_ID_AL && isa_bridge) { 470 if (north && north->vendor == PCI_VENDOR_ID_AL && ali_isa_bridge) {
471 /* Configure the ALi bridge logic. For non ALi rely on BIOS. 471 /* Configure the ALi bridge logic. For non ALi rely on BIOS.
472 Set the south bridge enable bit */ 472 Set the south bridge enable bit */
473 pci_read_config_byte(isa_bridge, 0x79, &tmp); 473 pci_read_config_byte(ali_isa_bridge, 0x79, &tmp);
474 if (pdev->revision == 0xC2) 474 if (pdev->revision == 0xC2)
475 pci_write_config_byte(isa_bridge, 0x79, tmp | 0x04); 475 pci_write_config_byte(ali_isa_bridge, 0x79, tmp | 0x04);
476 else if (pdev->revision > 0xC2 && pdev->revision < 0xC5) 476 else if (pdev->revision > 0xC2 && pdev->revision < 0xC5)
477 pci_write_config_byte(isa_bridge, 0x79, tmp | 0x02); 477 pci_write_config_byte(ali_isa_bridge, 0x79, tmp | 0x02);
478 } 478 }
479 pci_dev_put(north); 479 pci_dev_put(north);
480 ata_pci_bmdma_clear_simplex(pdev); 480 ata_pci_bmdma_clear_simplex(pdev);
@@ -571,9 +571,9 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
571 571
572 ali_init_chipset(pdev); 572 ali_init_chipset(pdev);
573 573
574 if (isa_bridge && pdev->revision >= 0x20 && pdev->revision < 0xC2) { 574 if (ali_isa_bridge && pdev->revision >= 0x20 && pdev->revision < 0xC2) {
575 /* Are we paired with a UDMA capable chip */ 575 /* Are we paired with a UDMA capable chip */
576 pci_read_config_byte(isa_bridge, 0x5E, &tmp); 576 pci_read_config_byte(ali_isa_bridge, 0x5E, &tmp);
577 if ((tmp & 0x1E) == 0x12) 577 if ((tmp & 0x1E) == 0x12)
578 ppi[0] = &info_20_udma; 578 ppi[0] = &info_20_udma;
579 } 579 }
@@ -617,11 +617,11 @@ static struct pci_driver ali_pci_driver = {
617static int __init ali_init(void) 617static int __init ali_init(void)
618{ 618{
619 int ret; 619 int ret;
620 isa_bridge = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); 620 ali_isa_bridge = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
621 621
622 ret = pci_register_driver(&ali_pci_driver); 622 ret = pci_register_driver(&ali_pci_driver);
623 if (ret < 0) 623 if (ret < 0)
624 pci_dev_put(isa_bridge); 624 pci_dev_put(ali_isa_bridge);
625 return ret; 625 return ret;
626} 626}
627 627
@@ -629,7 +629,7 @@ static int __init ali_init(void)
629static void __exit ali_exit(void) 629static void __exit ali_exit(void)
630{ 630{
631 pci_unregister_driver(&ali_pci_driver); 631 pci_unregister_driver(&ali_pci_driver);
632 pci_dev_put(isa_bridge); 632 pci_dev_put(ali_isa_bridge);
633} 633}
634 634
635 635
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c
index 0e2cde8f9973..506adde8ebb3 100644
--- a/drivers/ata/pata_atiixp.c
+++ b/drivers/ata/pata_atiixp.c
@@ -32,21 +32,6 @@ enum {
32 ATIIXP_IDE_UDMA_MODE = 0x56 32 ATIIXP_IDE_UDMA_MODE = 0x56
33}; 33};
34 34
35static int atiixp_pre_reset(struct ata_link *link, unsigned long deadline)
36{
37 struct ata_port *ap = link->ap;
38 static const struct pci_bits atiixp_enable_bits[] = {
39 { 0x48, 1, 0x01, 0x00 },
40 { 0x48, 1, 0x08, 0x00 }
41 };
42 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
43
44 if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no]))
45 return -ENOENT;
46
47 return ata_sff_prereset(link, deadline);
48}
49
50static int atiixp_cable_detect(struct ata_port *ap) 35static int atiixp_cable_detect(struct ata_port *ap)
51{ 36{
52 struct pci_dev *pdev = to_pci_dev(ap->host->dev); 37 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
@@ -229,10 +214,9 @@ static struct ata_port_operations atiixp_port_ops = {
229 .cable_detect = atiixp_cable_detect, 214 .cable_detect = atiixp_cable_detect,
230 .set_piomode = atiixp_set_piomode, 215 .set_piomode = atiixp_set_piomode,
231 .set_dmamode = atiixp_set_dmamode, 216 .set_dmamode = atiixp_set_dmamode,
232 .prereset = atiixp_pre_reset,
233}; 217};
234 218
235static int atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id) 219static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
236{ 220{
237 static const struct ata_port_info info = { 221 static const struct ata_port_info info = {
238 .flags = ATA_FLAG_SLAVE_POSS, 222 .flags = ATA_FLAG_SLAVE_POSS,
@@ -241,8 +225,18 @@ static int atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id)
241 .udma_mask = 0x3F, 225 .udma_mask = 0x3F,
242 .port_ops = &atiixp_port_ops 226 .port_ops = &atiixp_port_ops
243 }; 227 };
244 const struct ata_port_info *ppi[] = { &info, NULL }; 228 static const struct pci_bits atiixp_enable_bits[] = {
245 return ata_pci_sff_init_one(dev, ppi, &atiixp_sht, NULL); 229 { 0x48, 1, 0x01, 0x00 },
230 { 0x48, 1, 0x08, 0x00 }
231 };
232 const struct ata_port_info *ppi[] = { &info, &info };
233 int i;
234
235 for (i = 0; i < 2; i++)
236 if (!pci_test_config_bits(pdev, &atiixp_enable_bits[i]))
237 ppi[i] = &ata_dummy_port_info;
238
239 return ata_pci_sff_init_one(pdev, ppi, &atiixp_sht, NULL);
246} 240}
247 241
248static const struct pci_device_id atiixp[] = { 242static const struct pci_device_id atiixp[] = {
diff --git a/drivers/ata/pata_octeon_cf.c b/drivers/ata/pata_octeon_cf.c
new file mode 100644
index 000000000000..0fe4ef309c62
--- /dev/null
+++ b/drivers/ata/pata_octeon_cf.c
@@ -0,0 +1,965 @@
1/*
2 * Driver for the Octeon bootbus compact flash.
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 2005 - 2009 Cavium Networks
9 * Copyright (C) 2008 Wind River Systems
10 */
11
12#include <linux/kernel.h>
13#include <linux/module.h>
14#include <linux/libata.h>
15#include <linux/irq.h>
16#include <linux/platform_device.h>
17#include <linux/workqueue.h>
18#include <scsi/scsi_host.h>
19
20#include <asm/octeon/octeon.h>
21
22/*
23 * The Octeon bootbus compact flash interface is connected in at least
24 * 3 different configurations on various evaluation boards:
25 *
26 * -- 8 bits no irq, no DMA
27 * -- 16 bits no irq, no DMA
28 * -- 16 bits True IDE mode with DMA, but no irq.
29 *
30 * In the last case the DMA engine can generate an interrupt when the
31 * transfer is complete. For the first two cases only PIO is supported.
32 *
33 */
34
35#define DRV_NAME "pata_octeon_cf"
36#define DRV_VERSION "2.1"
37
38
39struct octeon_cf_port {
40 struct workqueue_struct *wq;
41 struct delayed_work delayed_finish;
42 struct ata_port *ap;
43 int dma_finished;
44};
45
46static struct scsi_host_template octeon_cf_sht = {
47 ATA_PIO_SHT(DRV_NAME),
48};
49
50/**
51 * Convert nanosecond based time to setting used in the
52 * boot bus timing register, based on timing multiple
53 */
54static unsigned int ns_to_tim_reg(unsigned int tim_mult, unsigned int nsecs)
55{
56 unsigned int val;
57
58 /*
59 * Compute # of eclock periods to get desired duration in
60 * nanoseconds.
61 */
62 val = DIV_ROUND_UP(nsecs * (octeon_get_clock_rate() / 1000000),
63 1000 * tim_mult);
64
65 return val;
66}
67
68static void octeon_cf_set_boot_reg_cfg(int cs)
69{
70 union cvmx_mio_boot_reg_cfgx reg_cfg;
71 reg_cfg.u64 = cvmx_read_csr(CVMX_MIO_BOOT_REG_CFGX(cs));
72 reg_cfg.s.dmack = 0; /* Don't assert DMACK on access */
73 reg_cfg.s.tim_mult = 2; /* Timing mutiplier 2x */
74 reg_cfg.s.rd_dly = 0; /* Sample on falling edge of BOOT_OE */
75 reg_cfg.s.sam = 0; /* Don't combine write and output enable */
76 reg_cfg.s.we_ext = 0; /* No write enable extension */
77 reg_cfg.s.oe_ext = 0; /* No read enable extension */
78 reg_cfg.s.en = 1; /* Enable this region */
79 reg_cfg.s.orbit = 0; /* Don't combine with previous region */
80 reg_cfg.s.ale = 0; /* Don't do address multiplexing */
81 cvmx_write_csr(CVMX_MIO_BOOT_REG_CFGX(cs), reg_cfg.u64);
82}
83
84/**
85 * Called after libata determines the needed PIO mode. This
86 * function programs the Octeon bootbus regions to support the
87 * timing requirements of the PIO mode.
88 *
89 * @ap: ATA port information
90 * @dev: ATA device
91 */
92static void octeon_cf_set_piomode(struct ata_port *ap, struct ata_device *dev)
93{
94 struct octeon_cf_data *ocd = ap->dev->platform_data;
95 union cvmx_mio_boot_reg_timx reg_tim;
96 int cs = ocd->base_region;
97 int T;
98 struct ata_timing timing;
99
100 int use_iordy;
101 int trh;
102 int pause;
103 /* These names are timing parameters from the ATA spec */
104 int t1;
105 int t2;
106 int t2i;
107
108 T = (int)(2000000000000LL / octeon_get_clock_rate());
109
110 if (ata_timing_compute(dev, dev->pio_mode, &timing, T, T))
111 BUG();
112
113 t1 = timing.setup;
114 if (t1)
115 t1--;
116 t2 = timing.active;
117 if (t2)
118 t2--;
119 t2i = timing.act8b;
120 if (t2i)
121 t2i--;
122
123 trh = ns_to_tim_reg(2, 20);
124 if (trh)
125 trh--;
126
127 pause = timing.cycle - timing.active - timing.setup - trh;
128 if (pause)
129 pause--;
130
131 octeon_cf_set_boot_reg_cfg(cs);
132 if (ocd->dma_engine >= 0)
133 /* True IDE mode, program both chip selects. */
134 octeon_cf_set_boot_reg_cfg(cs + 1);
135
136
137 use_iordy = ata_pio_need_iordy(dev);
138
139 reg_tim.u64 = cvmx_read_csr(CVMX_MIO_BOOT_REG_TIMX(cs));
140 /* Disable page mode */
141 reg_tim.s.pagem = 0;
142 /* Enable dynamic timing */
143 reg_tim.s.waitm = use_iordy;
144 /* Pages are disabled */
145 reg_tim.s.pages = 0;
146 /* We don't use multiplexed address mode */
147 reg_tim.s.ale = 0;
148 /* Not used */
149 reg_tim.s.page = 0;
150 /* Time after IORDY to coninue to assert the data */
151 reg_tim.s.wait = 0;
152 /* Time to wait to complete the cycle. */
153 reg_tim.s.pause = pause;
154 /* How long to hold after a write to de-assert CE. */
155 reg_tim.s.wr_hld = trh;
156 /* How long to wait after a read to de-assert CE. */
157 reg_tim.s.rd_hld = trh;
158 /* How long write enable is asserted */
159 reg_tim.s.we = t2;
160 /* How long read enable is asserted */
161 reg_tim.s.oe = t2;
162 /* Time after CE that read/write starts */
163 reg_tim.s.ce = ns_to_tim_reg(2, 5);
164 /* Time before CE that address is valid */
165 reg_tim.s.adr = 0;
166
167 /* Program the bootbus region timing for the data port chip select. */
168 cvmx_write_csr(CVMX_MIO_BOOT_REG_TIMX(cs), reg_tim.u64);
169 if (ocd->dma_engine >= 0)
170 /* True IDE mode, program both chip selects. */
171 cvmx_write_csr(CVMX_MIO_BOOT_REG_TIMX(cs + 1), reg_tim.u64);
172}
173
174static void octeon_cf_set_dmamode(struct ata_port *ap, struct ata_device *dev)
175{
176 struct octeon_cf_data *ocd = dev->link->ap->dev->platform_data;
177 union cvmx_mio_boot_dma_timx dma_tim;
178 unsigned int oe_a;
179 unsigned int oe_n;
180 unsigned int dma_ackh;
181 unsigned int dma_arq;
182 unsigned int pause;
183 unsigned int T0, Tkr, Td;
184 unsigned int tim_mult;
185
186 const struct ata_timing *timing;
187
188 timing = ata_timing_find_mode(dev->dma_mode);
189 T0 = timing->cycle;
190 Td = timing->active;
191 Tkr = timing->recover;
192 dma_ackh = timing->dmack_hold;
193
194 dma_tim.u64 = 0;
195 /* dma_tim.s.tim_mult = 0 --> 4x */
196 tim_mult = 4;
197
198 /* not spec'ed, value in eclocks, not affected by tim_mult */
199 dma_arq = 8;
200 pause = 25 - dma_arq * 1000 /
201 (octeon_get_clock_rate() / 1000000); /* Tz */
202
203 oe_a = Td;
204 /* Tkr from cf spec, lengthened to meet T0 */
205 oe_n = max(T0 - oe_a, Tkr);
206
207 dma_tim.s.dmack_pi = 1;
208
209 dma_tim.s.oe_n = ns_to_tim_reg(tim_mult, oe_n);
210 dma_tim.s.oe_a = ns_to_tim_reg(tim_mult, oe_a);
211
212 /*
213 * This is tI, C.F. spec. says 0, but Sony CF card requires
214 * more, we use 20 nS.
215 */
216 dma_tim.s.dmack_s = ns_to_tim_reg(tim_mult, 20);;
217 dma_tim.s.dmack_h = ns_to_tim_reg(tim_mult, dma_ackh);
218
219 dma_tim.s.dmarq = dma_arq;
220 dma_tim.s.pause = ns_to_tim_reg(tim_mult, pause);
221
222 dma_tim.s.rd_dly = 0; /* Sample right on edge */
223
224 /* writes only */
225 dma_tim.s.we_n = ns_to_tim_reg(tim_mult, oe_n);
226 dma_tim.s.we_a = ns_to_tim_reg(tim_mult, oe_a);
227
228 pr_debug("ns to ticks (mult %d) of %d is: %d\n", tim_mult, 60,
229 ns_to_tim_reg(tim_mult, 60));
230 pr_debug("oe_n: %d, oe_a: %d, dmack_s: %d, dmack_h: "
231 "%d, dmarq: %d, pause: %d\n",
232 dma_tim.s.oe_n, dma_tim.s.oe_a, dma_tim.s.dmack_s,
233 dma_tim.s.dmack_h, dma_tim.s.dmarq, dma_tim.s.pause);
234
235 cvmx_write_csr(CVMX_MIO_BOOT_DMA_TIMX(ocd->dma_engine),
236 dma_tim.u64);
237
238}
239
240/**
241 * Handle an 8 bit I/O request.
242 *
243 * @dev: Device to access
244 * @buffer: Data buffer
245 * @buflen: Length of the buffer.
246 * @rw: True to write.
247 */
248static unsigned int octeon_cf_data_xfer8(struct ata_device *dev,
249 unsigned char *buffer,
250 unsigned int buflen,
251 int rw)
252{
253 struct ata_port *ap = dev->link->ap;
254 void __iomem *data_addr = ap->ioaddr.data_addr;
255 unsigned long words;
256 int count;
257
258 words = buflen;
259 if (rw) {
260 count = 16;
261 while (words--) {
262 iowrite8(*buffer, data_addr);
263 buffer++;
264 /*
265 * Every 16 writes do a read so the bootbus
266 * FIFO doesn't fill up.
267 */
268 if (--count == 0) {
269 ioread8(ap->ioaddr.altstatus_addr);
270 count = 16;
271 }
272 }
273 } else {
274 ioread8_rep(data_addr, buffer, words);
275 }
276 return buflen;
277}
278
279/**
280 * Handle a 16 bit I/O request.
281 *
282 * @dev: Device to access
283 * @buffer: Data buffer
284 * @buflen: Length of the buffer.
285 * @rw: True to write.
286 */
287static unsigned int octeon_cf_data_xfer16(struct ata_device *dev,
288 unsigned char *buffer,
289 unsigned int buflen,
290 int rw)
291{
292 struct ata_port *ap = dev->link->ap;
293 void __iomem *data_addr = ap->ioaddr.data_addr;
294 unsigned long words;
295 int count;
296
297 words = buflen / 2;
298 if (rw) {
299 count = 16;
300 while (words--) {
301 iowrite16(*(uint16_t *)buffer, data_addr);
302 buffer += sizeof(uint16_t);
303 /*
304 * Every 16 writes do a read so the bootbus
305 * FIFO doesn't fill up.
306 */
307 if (--count == 0) {
308 ioread8(ap->ioaddr.altstatus_addr);
309 count = 16;
310 }
311 }
312 } else {
313 while (words--) {
314 *(uint16_t *)buffer = ioread16(data_addr);
315 buffer += sizeof(uint16_t);
316 }
317 }
318 /* Transfer trailing 1 byte, if any. */
319 if (unlikely(buflen & 0x01)) {
320 __le16 align_buf[1] = { 0 };
321
322 if (rw == READ) {
323 align_buf[0] = cpu_to_le16(ioread16(data_addr));
324 memcpy(buffer, align_buf, 1);
325 } else {
326 memcpy(align_buf, buffer, 1);
327 iowrite16(le16_to_cpu(align_buf[0]), data_addr);
328 }
329 words++;
330 }
331 return buflen;
332}
333
334/**
335 * Read the taskfile for 16bit non-True IDE only.
336 */
337static void octeon_cf_tf_read16(struct ata_port *ap, struct ata_taskfile *tf)
338{
339 u16 blob;
340 /* The base of the registers is at ioaddr.data_addr. */
341 void __iomem *base = ap->ioaddr.data_addr;
342
343 blob = __raw_readw(base + 0xc);
344 tf->feature = blob >> 8;
345
346 blob = __raw_readw(base + 2);
347 tf->nsect = blob & 0xff;
348 tf->lbal = blob >> 8;
349
350 blob = __raw_readw(base + 4);
351 tf->lbam = blob & 0xff;
352 tf->lbah = blob >> 8;
353
354 blob = __raw_readw(base + 6);
355 tf->device = blob & 0xff;
356 tf->command = blob >> 8;
357
358 if (tf->flags & ATA_TFLAG_LBA48) {
359 if (likely(ap->ioaddr.ctl_addr)) {
360 iowrite8(tf->ctl | ATA_HOB, ap->ioaddr.ctl_addr);
361
362 blob = __raw_readw(base + 0xc);
363 tf->hob_feature = blob >> 8;
364
365 blob = __raw_readw(base + 2);
366 tf->hob_nsect = blob & 0xff;
367 tf->hob_lbal = blob >> 8;
368
369 blob = __raw_readw(base + 4);
370 tf->hob_lbam = blob & 0xff;
371 tf->hob_lbah = blob >> 8;
372
373 iowrite8(tf->ctl, ap->ioaddr.ctl_addr);
374 ap->last_ctl = tf->ctl;
375 } else {
376 WARN_ON(1);
377 }
378 }
379}
380
381static u8 octeon_cf_check_status16(struct ata_port *ap)
382{
383 u16 blob;
384 void __iomem *base = ap->ioaddr.data_addr;
385
386 blob = __raw_readw(base + 6);
387 return blob >> 8;
388}
389
390static int octeon_cf_softreset16(struct ata_link *link, unsigned int *classes,
391 unsigned long deadline)
392{
393 struct ata_port *ap = link->ap;
394 void __iomem *base = ap->ioaddr.data_addr;
395 int rc;
396 u8 err;
397
398 DPRINTK("about to softreset\n");
399 __raw_writew(ap->ctl, base + 0xe);
400 udelay(20);
401 __raw_writew(ap->ctl | ATA_SRST, base + 0xe);
402 udelay(20);
403 __raw_writew(ap->ctl, base + 0xe);
404
405 rc = ata_sff_wait_after_reset(link, 1, deadline);
406 if (rc) {
407 ata_link_printk(link, KERN_ERR, "SRST failed (errno=%d)\n", rc);
408 return rc;
409 }
410
411 /* determine by signature whether we have ATA or ATAPI devices */
412 classes[0] = ata_sff_dev_classify(&link->device[0], 1, &err);
413 DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]);
414 return 0;
415}
416
417/**
418 * Load the taskfile for 16bit non-True IDE only. The device_addr is
419 * not loaded, we do this as part of octeon_cf_exec_command16.
420 */
421static void octeon_cf_tf_load16(struct ata_port *ap,
422 const struct ata_taskfile *tf)
423{
424 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR;
425 /* The base of the registers is at ioaddr.data_addr. */
426 void __iomem *base = ap->ioaddr.data_addr;
427
428 if (tf->ctl != ap->last_ctl) {
429 iowrite8(tf->ctl, ap->ioaddr.ctl_addr);
430 ap->last_ctl = tf->ctl;
431 ata_wait_idle(ap);
432 }
433 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) {
434 __raw_writew(tf->hob_feature << 8, base + 0xc);
435 __raw_writew(tf->hob_nsect | tf->hob_lbal << 8, base + 2);
436 __raw_writew(tf->hob_lbam | tf->hob_lbah << 8, base + 4);
437 VPRINTK("hob: feat 0x%X nsect 0x%X, lba 0x%X 0x%X 0x%X\n",
438 tf->hob_feature,
439 tf->hob_nsect,
440 tf->hob_lbal,
441 tf->hob_lbam,
442 tf->hob_lbah);
443 }
444 if (is_addr) {
445 __raw_writew(tf->feature << 8, base + 0xc);
446 __raw_writew(tf->nsect | tf->lbal << 8, base + 2);
447 __raw_writew(tf->lbam | tf->lbah << 8, base + 4);
448 VPRINTK("feat 0x%X nsect 0x%X, lba 0x%X 0x%X 0x%X\n",
449 tf->feature,
450 tf->nsect,
451 tf->lbal,
452 tf->lbam,
453 tf->lbah);
454 }
455 ata_wait_idle(ap);
456}
457
458
459static void octeon_cf_dev_select(struct ata_port *ap, unsigned int device)
460{
461/* There is only one device, do nothing. */
462 return;
463}
464
465/*
466 * Issue ATA command to host controller. The device_addr is also sent
467 * as it must be written in a combined write with the command.
468 */
469static void octeon_cf_exec_command16(struct ata_port *ap,
470 const struct ata_taskfile *tf)
471{
472 /* The base of the registers is at ioaddr.data_addr. */
473 void __iomem *base = ap->ioaddr.data_addr;
474 u16 blob;
475
476 if (tf->flags & ATA_TFLAG_DEVICE) {
477 VPRINTK("device 0x%X\n", tf->device);
478 blob = tf->device;
479 } else {
480 blob = 0;
481 }
482
483 DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);
484 blob |= (tf->command << 8);
485 __raw_writew(blob, base + 6);
486
487
488 ata_wait_idle(ap);
489}
490
491static u8 octeon_cf_irq_on(struct ata_port *ap)
492{
493 return 0;
494}
495
496static void octeon_cf_irq_clear(struct ata_port *ap)
497{
498 return;
499}
500
501static void octeon_cf_dma_setup(struct ata_queued_cmd *qc)
502{
503 struct ata_port *ap = qc->ap;
504 struct octeon_cf_port *cf_port;
505
506 cf_port = (struct octeon_cf_port *)ap->private_data;
507 DPRINTK("ENTER\n");
508 /* issue r/w command */
509 qc->cursg = qc->sg;
510 cf_port->dma_finished = 0;
511 ap->ops->sff_exec_command(ap, &qc->tf);
512 DPRINTK("EXIT\n");
513}
514
515/**
516 * Start a DMA transfer that was already setup
517 *
518 * @qc: Information about the DMA
519 */
520static void octeon_cf_dma_start(struct ata_queued_cmd *qc)
521{
522 struct octeon_cf_data *ocd = qc->ap->dev->platform_data;
523 union cvmx_mio_boot_dma_cfgx mio_boot_dma_cfg;
524 union cvmx_mio_boot_dma_intx mio_boot_dma_int;
525 struct scatterlist *sg;
526
527 VPRINTK("%d scatterlists\n", qc->n_elem);
528
529 /* Get the scatter list entry we need to DMA into */
530 sg = qc->cursg;
531 BUG_ON(!sg);
532
533 /*
534 * Clear the DMA complete status.
535 */
536 mio_boot_dma_int.u64 = 0;
537 mio_boot_dma_int.s.done = 1;
538 cvmx_write_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine),
539 mio_boot_dma_int.u64);
540
541 /* Enable the interrupt. */
542 cvmx_write_csr(CVMX_MIO_BOOT_DMA_INT_ENX(ocd->dma_engine),
543 mio_boot_dma_int.u64);
544
545 /* Set the direction of the DMA */
546 mio_boot_dma_cfg.u64 = 0;
547 mio_boot_dma_cfg.s.en = 1;
548 mio_boot_dma_cfg.s.rw = ((qc->tf.flags & ATA_TFLAG_WRITE) != 0);
549
550 /*
551 * Don't stop the DMA if the device deasserts DMARQ. Many
552 * compact flashes deassert DMARQ for a short time between
553 * sectors. Instead of stopping and restarting the DMA, we'll
554 * let the hardware do it. If the DMA is really stopped early
555 * due to an error condition, a later timeout will force us to
556 * stop.
557 */
558 mio_boot_dma_cfg.s.clr = 0;
559
560 /* Size is specified in 16bit words and minus one notation */
561 mio_boot_dma_cfg.s.size = sg_dma_len(sg) / 2 - 1;
562
563 /* We need to swap the high and low bytes of every 16 bits */
564 mio_boot_dma_cfg.s.swap8 = 1;
565
566 mio_boot_dma_cfg.s.adr = sg_dma_address(sg);
567
568 VPRINTK("%s %d bytes address=%p\n",
569 (mio_boot_dma_cfg.s.rw) ? "write" : "read", sg->length,
570 (void *)(unsigned long)mio_boot_dma_cfg.s.adr);
571
572 cvmx_write_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine),
573 mio_boot_dma_cfg.u64);
574}
575
576/**
577 *
578 * LOCKING:
579 * spin_lock_irqsave(host lock)
580 *
581 */
582static unsigned int octeon_cf_dma_finished(struct ata_port *ap,
583 struct ata_queued_cmd *qc)
584{
585 struct ata_eh_info *ehi = &ap->link.eh_info;
586 struct octeon_cf_data *ocd = ap->dev->platform_data;
587 union cvmx_mio_boot_dma_cfgx dma_cfg;
588 union cvmx_mio_boot_dma_intx dma_int;
589 struct octeon_cf_port *cf_port;
590 u8 status;
591
592 VPRINTK("ata%u: protocol %d task_state %d\n",
593 ap->print_id, qc->tf.protocol, ap->hsm_task_state);
594
595
596 if (ap->hsm_task_state != HSM_ST_LAST)
597 return 0;
598
599 cf_port = (struct octeon_cf_port *)ap->private_data;
600
601 dma_cfg.u64 = cvmx_read_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine));
602 if (dma_cfg.s.size != 0xfffff) {
603 /* Error, the transfer was not complete. */
604 qc->err_mask |= AC_ERR_HOST_BUS;
605 ap->hsm_task_state = HSM_ST_ERR;
606 }
607
608 /* Stop and clear the dma engine. */
609 dma_cfg.u64 = 0;
610 dma_cfg.s.size = -1;
611 cvmx_write_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine), dma_cfg.u64);
612
613 /* Disable the interrupt. */
614 dma_int.u64 = 0;
615 cvmx_write_csr(CVMX_MIO_BOOT_DMA_INT_ENX(ocd->dma_engine), dma_int.u64);
616
617 /* Clear the DMA complete status */
618 dma_int.s.done = 1;
619 cvmx_write_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine), dma_int.u64);
620
621 status = ap->ops->sff_check_status(ap);
622
623 ata_sff_hsm_move(ap, qc, status, 0);
624
625 if (unlikely(qc->err_mask) && (qc->tf.protocol == ATA_PROT_DMA))
626 ata_ehi_push_desc(ehi, "DMA stat 0x%x", status);
627
628 return 1;
629}
630
631/*
632 * Check if any queued commands have more DMAs, if so start the next
633 * transfer, else do end of transfer handling.
634 */
635static irqreturn_t octeon_cf_interrupt(int irq, void *dev_instance)
636{
637 struct ata_host *host = dev_instance;
638 struct octeon_cf_port *cf_port;
639 int i;
640 unsigned int handled = 0;
641 unsigned long flags;
642
643 spin_lock_irqsave(&host->lock, flags);
644
645 DPRINTK("ENTER\n");
646 for (i = 0; i < host->n_ports; i++) {
647 u8 status;
648 struct ata_port *ap;
649 struct ata_queued_cmd *qc;
650 union cvmx_mio_boot_dma_intx dma_int;
651 union cvmx_mio_boot_dma_cfgx dma_cfg;
652 struct octeon_cf_data *ocd;
653
654 ap = host->ports[i];
655 ocd = ap->dev->platform_data;
656 if (!ap || (ap->flags & ATA_FLAG_DISABLED))
657 continue;
658
659 ocd = ap->dev->platform_data;
660 cf_port = (struct octeon_cf_port *)ap->private_data;
661 dma_int.u64 =
662 cvmx_read_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine));
663 dma_cfg.u64 =
664 cvmx_read_csr(CVMX_MIO_BOOT_DMA_CFGX(ocd->dma_engine));
665
666 qc = ata_qc_from_tag(ap, ap->link.active_tag);
667
668 if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)) &&
669 (qc->flags & ATA_QCFLAG_ACTIVE)) {
670 if (dma_int.s.done && !dma_cfg.s.en) {
671 if (!sg_is_last(qc->cursg)) {
672 qc->cursg = sg_next(qc->cursg);
673 handled = 1;
674 octeon_cf_dma_start(qc);
675 continue;
676 } else {
677 cf_port->dma_finished = 1;
678 }
679 }
680 if (!cf_port->dma_finished)
681 continue;
682 status = ioread8(ap->ioaddr.altstatus_addr);
683 if (status & (ATA_BUSY | ATA_DRQ)) {
684 /*
685 * We are busy, try to handle it
686 * later. This is the DMA finished
687 * interrupt, and it could take a
688 * little while for the card to be
689 * ready for more commands.
690 */
691 /* Clear DMA irq. */
692 dma_int.u64 = 0;
693 dma_int.s.done = 1;
694 cvmx_write_csr(CVMX_MIO_BOOT_DMA_INTX(ocd->dma_engine),
695 dma_int.u64);
696
697 queue_delayed_work(cf_port->wq,
698 &cf_port->delayed_finish, 1);
699 handled = 1;
700 } else {
701 handled |= octeon_cf_dma_finished(ap, qc);
702 }
703 }
704 }
705 spin_unlock_irqrestore(&host->lock, flags);
706 DPRINTK("EXIT\n");
707 return IRQ_RETVAL(handled);
708}
709
710static void octeon_cf_delayed_finish(struct work_struct *work)
711{
712 struct octeon_cf_port *cf_port = container_of(work,
713 struct octeon_cf_port,
714 delayed_finish.work);
715 struct ata_port *ap = cf_port->ap;
716 struct ata_host *host = ap->host;
717 struct ata_queued_cmd *qc;
718 unsigned long flags;
719 u8 status;
720
721 spin_lock_irqsave(&host->lock, flags);
722
723 /*
724 * If the port is not waiting for completion, it must have
725 * handled it previously. The hsm_task_state is
726 * protected by host->lock.
727 */
728 if (ap->hsm_task_state != HSM_ST_LAST || !cf_port->dma_finished)
729 goto out;
730
731 status = ioread8(ap->ioaddr.altstatus_addr);
732 if (status & (ATA_BUSY | ATA_DRQ)) {
733 /* Still busy, try again. */
734 queue_delayed_work(cf_port->wq,
735 &cf_port->delayed_finish, 1);
736 goto out;
737 }
738 qc = ata_qc_from_tag(ap, ap->link.active_tag);
739 if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)) &&
740 (qc->flags & ATA_QCFLAG_ACTIVE))
741 octeon_cf_dma_finished(ap, qc);
742out:
743 spin_unlock_irqrestore(&host->lock, flags);
744}
745
746static void octeon_cf_dev_config(struct ata_device *dev)
747{
748 /*
749 * A maximum of 2^20 - 1 16 bit transfers are possible with
750 * the bootbus DMA. So we need to throttle max_sectors to
751 * (2^12 - 1 == 4095) to assure that this can never happen.
752 */
753 dev->max_sectors = min(dev->max_sectors, 4095U);
754}
755
756/*
757 * Trap if driver tries to do standard bmdma commands. They are not
758 * supported.
759 */
760static void unreachable_qc(struct ata_queued_cmd *qc)
761{
762 BUG();
763}
764
765static u8 unreachable_port(struct ata_port *ap)
766{
767 BUG();
768}
769
770/*
771 * We don't do ATAPI DMA so return 0.
772 */
773static int octeon_cf_check_atapi_dma(struct ata_queued_cmd *qc)
774{
775 return 0;
776}
777
778static unsigned int octeon_cf_qc_issue(struct ata_queued_cmd *qc)
779{
780 struct ata_port *ap = qc->ap;
781
782 switch (qc->tf.protocol) {
783 case ATA_PROT_DMA:
784 WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING);
785
786 ap->ops->sff_tf_load(ap, &qc->tf); /* load tf registers */
787 octeon_cf_dma_setup(qc); /* set up dma */
788 octeon_cf_dma_start(qc); /* initiate dma */
789 ap->hsm_task_state = HSM_ST_LAST;
790 break;
791
792 case ATAPI_PROT_DMA:
793 dev_err(ap->dev, "Error, ATAPI not supported\n");
794 BUG();
795
796 default:
797 return ata_sff_qc_issue(qc);
798 }
799
800 return 0;
801}
802
803static struct ata_port_operations octeon_cf_ops = {
804 .inherits = &ata_sff_port_ops,
805 .check_atapi_dma = octeon_cf_check_atapi_dma,
806 .qc_prep = ata_noop_qc_prep,
807 .qc_issue = octeon_cf_qc_issue,
808 .sff_dev_select = octeon_cf_dev_select,
809 .sff_irq_on = octeon_cf_irq_on,
810 .sff_irq_clear = octeon_cf_irq_clear,
811 .bmdma_setup = unreachable_qc,
812 .bmdma_start = unreachable_qc,
813 .bmdma_stop = unreachable_qc,
814 .bmdma_status = unreachable_port,
815 .cable_detect = ata_cable_40wire,
816 .set_piomode = octeon_cf_set_piomode,
817 .set_dmamode = octeon_cf_set_dmamode,
818 .dev_config = octeon_cf_dev_config,
819};
820
821static int __devinit octeon_cf_probe(struct platform_device *pdev)
822{
823 struct resource *res_cs0, *res_cs1;
824
825 void __iomem *cs0;
826 void __iomem *cs1 = NULL;
827 struct ata_host *host;
828 struct ata_port *ap;
829 struct octeon_cf_data *ocd;
830 int irq = 0;
831 irq_handler_t irq_handler = NULL;
832 void __iomem *base;
833 struct octeon_cf_port *cf_port;
834
835 res_cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0);
836
837 if (!res_cs0)
838 return -EINVAL;
839
840 ocd = pdev->dev.platform_data;
841
842 cs0 = devm_ioremap_nocache(&pdev->dev, res_cs0->start,
843 res_cs0->end - res_cs0->start + 1);
844
845 if (!cs0)
846 return -ENOMEM;
847
848 /* Determine from availability of DMA if True IDE mode or not */
849 if (ocd->dma_engine >= 0) {
850 res_cs1 = platform_get_resource(pdev, IORESOURCE_MEM, 1);
851 if (!res_cs1)
852 return -EINVAL;
853
854 cs1 = devm_ioremap_nocache(&pdev->dev, res_cs1->start,
855 res_cs0->end - res_cs1->start + 1);
856
857 if (!cs1)
858 return -ENOMEM;
859 }
860
861 cf_port = kzalloc(sizeof(*cf_port), GFP_KERNEL);
862 if (!cf_port)
863 return -ENOMEM;
864
865 /* allocate host */
866 host = ata_host_alloc(&pdev->dev, 1);
867 if (!host)
868 goto free_cf_port;
869
870 ap = host->ports[0];
871 ap->private_data = cf_port;
872 cf_port->ap = ap;
873 ap->ops = &octeon_cf_ops;
874 ap->pio_mask = 0x7f; /* Support PIO 0-6 */
875 ap->flags |= ATA_FLAG_MMIO | ATA_FLAG_NO_LEGACY
876 | ATA_FLAG_NO_ATAPI | ATA_FLAG_PIO_POLLING;
877
878 base = cs0 + ocd->base_region_bias;
879 if (!ocd->is16bit) {
880 ap->ioaddr.cmd_addr = base;
881 ata_sff_std_ports(&ap->ioaddr);
882
883 ap->ioaddr.altstatus_addr = base + 0xe;
884 ap->ioaddr.ctl_addr = base + 0xe;
885 octeon_cf_ops.sff_data_xfer = octeon_cf_data_xfer8;
886 } else if (cs1) {
887 /* Presence of cs1 indicates True IDE mode. */
888 ap->ioaddr.cmd_addr = base + (ATA_REG_CMD << 1) + 1;
889 ap->ioaddr.data_addr = base + (ATA_REG_DATA << 1);
890 ap->ioaddr.error_addr = base + (ATA_REG_ERR << 1) + 1;
891 ap->ioaddr.feature_addr = base + (ATA_REG_FEATURE << 1) + 1;
892 ap->ioaddr.nsect_addr = base + (ATA_REG_NSECT << 1) + 1;
893 ap->ioaddr.lbal_addr = base + (ATA_REG_LBAL << 1) + 1;
894 ap->ioaddr.lbam_addr = base + (ATA_REG_LBAM << 1) + 1;
895 ap->ioaddr.lbah_addr = base + (ATA_REG_LBAH << 1) + 1;
896 ap->ioaddr.device_addr = base + (ATA_REG_DEVICE << 1) + 1;
897 ap->ioaddr.status_addr = base + (ATA_REG_STATUS << 1) + 1;
898 ap->ioaddr.command_addr = base + (ATA_REG_CMD << 1) + 1;
899 ap->ioaddr.altstatus_addr = cs1 + (6 << 1) + 1;
900 ap->ioaddr.ctl_addr = cs1 + (6 << 1) + 1;
901 octeon_cf_ops.sff_data_xfer = octeon_cf_data_xfer16;
902
903 ap->mwdma_mask = 0x1f; /* Support MWDMA 0-4 */
904 irq = platform_get_irq(pdev, 0);
905 irq_handler = octeon_cf_interrupt;
906
907 /* True IDE mode needs delayed work to poll for not-busy. */
908 cf_port->wq = create_singlethread_workqueue(DRV_NAME);
909 if (!cf_port->wq)
910 goto free_cf_port;
911 INIT_DELAYED_WORK(&cf_port->delayed_finish,
912 octeon_cf_delayed_finish);
913
914 } else {
915 /* 16 bit but not True IDE */
916 octeon_cf_ops.sff_data_xfer = octeon_cf_data_xfer16;
917 octeon_cf_ops.softreset = octeon_cf_softreset16;
918 octeon_cf_ops.sff_check_status = octeon_cf_check_status16;
919 octeon_cf_ops.sff_tf_read = octeon_cf_tf_read16;
920 octeon_cf_ops.sff_tf_load = octeon_cf_tf_load16;
921 octeon_cf_ops.sff_exec_command = octeon_cf_exec_command16;
922
923 ap->ioaddr.data_addr = base + ATA_REG_DATA;
924 ap->ioaddr.nsect_addr = base + ATA_REG_NSECT;
925 ap->ioaddr.lbal_addr = base + ATA_REG_LBAL;
926 ap->ioaddr.ctl_addr = base + 0xe;
927 ap->ioaddr.altstatus_addr = base + 0xe;
928 }
929
930 ata_port_desc(ap, "cmd %p ctl %p", base, ap->ioaddr.ctl_addr);
931
932
933 dev_info(&pdev->dev, "version " DRV_VERSION" %d bit%s.\n",
934 (ocd->is16bit) ? 16 : 8,
935 (cs1) ? ", True IDE" : "");
936
937
938 return ata_host_activate(host, irq, irq_handler, 0, &octeon_cf_sht);
939
940free_cf_port:
941 kfree(cf_port);
942 return -ENOMEM;
943}
944
945static struct platform_driver octeon_cf_driver = {
946 .probe = octeon_cf_probe,
947 .driver = {
948 .name = DRV_NAME,
949 .owner = THIS_MODULE,
950 },
951};
952
953static int __init octeon_cf_init(void)
954{
955 return platform_driver_register(&octeon_cf_driver);
956}
957
958
959MODULE_AUTHOR("David Daney <ddaney@caviumnetworks.com>");
960MODULE_DESCRIPTION("low-level driver for Cavium OCTEON Compact Flash PATA");
961MODULE_LICENSE("GPL");
962MODULE_VERSION(DRV_VERSION);
963MODULE_ALIAS("platform:" DRV_NAME);
964
965module_init(octeon_cf_init);
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index 1a56db92ff7a..55bc88c1707b 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -1288,7 +1288,7 @@ static const struct ata_port_info sata_fsl_port_info[] = {
1288static int sata_fsl_probe(struct of_device *ofdev, 1288static int sata_fsl_probe(struct of_device *ofdev,
1289 const struct of_device_id *match) 1289 const struct of_device_id *match)
1290{ 1290{
1291 int retval = 0; 1291 int retval = -ENXIO;
1292 void __iomem *hcr_base = NULL; 1292 void __iomem *hcr_base = NULL;
1293 void __iomem *ssr_base = NULL; 1293 void __iomem *ssr_base = NULL;
1294 void __iomem *csr_base = NULL; 1294 void __iomem *csr_base = NULL;
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index c18935f0bda2..5c62da9cd491 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -92,6 +92,8 @@ static const struct pci_device_id svia_pci_tbl[] = {
92 { PCI_VDEVICE(VIA, 0x5372), vt6420 }, 92 { PCI_VDEVICE(VIA, 0x5372), vt6420 },
93 { PCI_VDEVICE(VIA, 0x7372), vt6420 }, 93 { PCI_VDEVICE(VIA, 0x7372), vt6420 },
94 { PCI_VDEVICE(VIA, 0x5287), vt8251 }, /* 2 sata chnls (Master/Slave) */ 94 { PCI_VDEVICE(VIA, 0x5287), vt8251 }, /* 2 sata chnls (Master/Slave) */
95 { PCI_VDEVICE(VIA, 0x9000), vt8251 },
96 { PCI_VDEVICE(VIA, 0x9040), vt8251 },
95 97
96 { } /* terminate list */ 98 { } /* terminate list */
97}; 99};
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 8079afca4972..55e530942ab0 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -777,10 +777,16 @@ static void device_remove_class_symlinks(struct device *dev)
777int dev_set_name(struct device *dev, const char *fmt, ...) 777int dev_set_name(struct device *dev, const char *fmt, ...)
778{ 778{
779 va_list vargs; 779 va_list vargs;
780 char *s;
780 781
781 va_start(vargs, fmt); 782 va_start(vargs, fmt);
782 vsnprintf(dev->bus_id, sizeof(dev->bus_id), fmt, vargs); 783 vsnprintf(dev->bus_id, sizeof(dev->bus_id), fmt, vargs);
783 va_end(vargs); 784 va_end(vargs);
785
786 /* ewww... some of these buggers have / in the name... */
787 while ((s = strchr(dev->bus_id, '/')))
788 *s = '!';
789
784 return 0; 790 return 0;
785} 791}
786EXPORT_SYMBOL_GPL(dev_set_name); 792EXPORT_SYMBOL_GPL(dev_set_name);
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 7bcc1d8bc967..34f80fa6fed1 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -406,6 +406,7 @@ static int nbd_do_it(struct nbd_device *lo)
406 ret = sysfs_create_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr); 406 ret = sysfs_create_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr);
407 if (ret) { 407 if (ret) {
408 printk(KERN_ERR "nbd: sysfs_create_file failed!"); 408 printk(KERN_ERR "nbd: sysfs_create_file failed!");
409 lo->pid = 0;
409 return ret; 410 return ret;
410 } 411 }
411 412
@@ -413,6 +414,7 @@ static int nbd_do_it(struct nbd_device *lo)
413 nbd_end_request(req); 414 nbd_end_request(req);
414 415
415 sysfs_remove_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr); 416 sysfs_remove_file(&disk_to_dev(lo->disk)->kobj, &pid_attr.attr);
417 lo->pid = 0;
416 return 0; 418 return 0;
417} 419}
418 420
@@ -648,6 +650,8 @@ static int nbd_ioctl(struct block_device *bdev, fmode_t mode,
648 set_capacity(lo->disk, lo->bytesize >> 9); 650 set_capacity(lo->disk, lo->bytesize >> 9);
649 return 0; 651 return 0;
650 case NBD_DO_IT: 652 case NBD_DO_IT:
653 if (lo->pid)
654 return -EBUSY;
651 if (!lo->file) 655 if (!lo->file)
652 return -EINVAL; 656 return -EINVAL;
653 thread = kthread_create(nbd_thread, lo, lo->disk->disk_name); 657 thread = kthread_create(nbd_thread, lo, lo->disk->disk_name);
diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c
index 936466f62afd..bccc42bb9212 100644
--- a/drivers/block/ps3disk.c
+++ b/drivers/block/ps3disk.c
@@ -141,7 +141,7 @@ static int ps3disk_submit_request_sg(struct ps3_storage_device *dev,
141 141
142 start_sector = req->sector * priv->blocking_factor; 142 start_sector = req->sector * priv->blocking_factor;
143 sectors = req->nr_sectors * priv->blocking_factor; 143 sectors = req->nr_sectors * priv->blocking_factor;
144 dev_dbg(&dev->sbd.core, "%s:%u: %s %lu sectors starting at %lu\n", 144 dev_dbg(&dev->sbd.core, "%s:%u: %s %llu sectors starting at %llu\n",
145 __func__, __LINE__, op, sectors, start_sector); 145 __func__, __LINE__, op, sectors, start_sector);
146 146
147 if (write) { 147 if (write) {
@@ -178,7 +178,7 @@ static int ps3disk_submit_flush_request(struct ps3_storage_device *dev,
178 LV1_STORAGE_ATA_HDDOUT, 0, 0, 0, 178 LV1_STORAGE_ATA_HDDOUT, 0, 0, 0,
179 0, &dev->tag); 179 0, &dev->tag);
180 if (res) { 180 if (res) {
181 dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%lx\n", 181 dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%llx\n",
182 __func__, __LINE__, res); 182 __func__, __LINE__, res);
183 end_request(req, 0); 183 end_request(req, 0);
184 return 0; 184 return 0;
@@ -238,11 +238,11 @@ static irqreturn_t ps3disk_interrupt(int irq, void *data)
238 238
239 if (tag != dev->tag) 239 if (tag != dev->tag)
240 dev_err(&dev->sbd.core, 240 dev_err(&dev->sbd.core,
241 "%s:%u: tag mismatch, got %lx, expected %lx\n", 241 "%s:%u: tag mismatch, got %llx, expected %llx\n",
242 __func__, __LINE__, tag, dev->tag); 242 __func__, __LINE__, tag, dev->tag);
243 243
244 if (res) { 244 if (res) {
245 dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%lx\n", 245 dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%llx\n",
246 __func__, __LINE__, res, status); 246 __func__, __LINE__, res, status);
247 return IRQ_HANDLED; 247 return IRQ_HANDLED;
248 } 248 }
@@ -269,7 +269,7 @@ static irqreturn_t ps3disk_interrupt(int irq, void *data)
269 op = read ? "read" : "write"; 269 op = read ? "read" : "write";
270 } 270 }
271 if (status) { 271 if (status) {
272 dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%lx\n", __func__, 272 dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%llx\n", __func__,
273 __LINE__, op, status); 273 __LINE__, op, status);
274 error = -EIO; 274 error = -EIO;
275 } else { 275 } else {
@@ -297,7 +297,7 @@ static int ps3disk_sync_cache(struct ps3_storage_device *dev)
297 297
298 res = ps3stor_send_command(dev, LV1_STORAGE_ATA_HDDOUT, 0, 0, 0, 0); 298 res = ps3stor_send_command(dev, LV1_STORAGE_ATA_HDDOUT, 0, 0, 0, 0);
299 if (res) { 299 if (res) {
300 dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%lx\n", 300 dev_err(&dev->sbd.core, "%s:%u: sync cache failed 0x%llx\n",
301 __func__, __LINE__, res); 301 __func__, __LINE__, res);
302 return -EIO; 302 return -EIO;
303 } 303 }
@@ -388,7 +388,7 @@ static int ps3disk_identify(struct ps3_storage_device *dev)
388 sizeof(ata_cmnd), ata_cmnd.buffer, 388 sizeof(ata_cmnd), ata_cmnd.buffer,
389 ata_cmnd.arglen); 389 ata_cmnd.arglen);
390 if (res) { 390 if (res) {
391 dev_err(&dev->sbd.core, "%s:%u: identify disk failed 0x%lx\n", 391 dev_err(&dev->sbd.core, "%s:%u: identify disk failed 0x%llx\n",
392 __func__, __LINE__, res); 392 __func__, __LINE__, res);
393 return -EIO; 393 return -EIO;
394 } 394 }
@@ -426,7 +426,7 @@ static int __devinit ps3disk_probe(struct ps3_system_bus_device *_dev)
426 426
427 if (dev->blk_size < 512) { 427 if (dev->blk_size < 512) {
428 dev_err(&dev->sbd.core, 428 dev_err(&dev->sbd.core,
429 "%s:%u: cannot handle block size %lu\n", __func__, 429 "%s:%u: cannot handle block size %llu\n", __func__,
430 __LINE__, dev->blk_size); 430 __LINE__, dev->blk_size);
431 return -EINVAL; 431 return -EINVAL;
432 } 432 }
@@ -512,7 +512,7 @@ static int __devinit ps3disk_probe(struct ps3_system_bus_device *_dev)
512 dev->regions[dev->region_idx].size*priv->blocking_factor); 512 dev->regions[dev->region_idx].size*priv->blocking_factor);
513 513
514 dev_info(&dev->sbd.core, 514 dev_info(&dev->sbd.core,
515 "%s is a %s (%lu MiB total, %lu MiB for OtherOS)\n", 515 "%s is a %s (%llu MiB total, %lu MiB for OtherOS)\n",
516 gendisk->disk_name, priv->model, priv->raw_capacity >> 11, 516 gendisk->disk_name, priv->model, priv->raw_capacity >> 11,
517 get_capacity(gendisk) >> 11); 517 get_capacity(gendisk) >> 11);
518 518
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 29e1dfafb7c6..381d686fc1a3 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -1206,6 +1206,7 @@ static struct of_device_id ace_of_match[] __devinitdata = {
1206 { .compatible = "xlnx,opb-sysace-1.00.b", }, 1206 { .compatible = "xlnx,opb-sysace-1.00.b", },
1207 { .compatible = "xlnx,opb-sysace-1.00.c", }, 1207 { .compatible = "xlnx,opb-sysace-1.00.c", },
1208 { .compatible = "xlnx,xps-sysace-1.00.a", }, 1208 { .compatible = "xlnx,xps-sysace-1.00.a", },
1209 { .compatible = "xlnx,sysace", },
1209 {}, 1210 {},
1210}; 1211};
1211MODULE_DEVICE_TABLE(of, ace_of_match); 1212MODULE_DEVICE_TABLE(of, ace_of_match);
diff --git a/drivers/char/bsr.c b/drivers/char/bsr.c
index 977dfb1096a0..f6094ae0ef33 100644
--- a/drivers/char/bsr.c
+++ b/drivers/char/bsr.c
@@ -103,7 +103,7 @@ static ssize_t
103bsr_len_show(struct device *dev, struct device_attribute *attr, char *buf) 103bsr_len_show(struct device *dev, struct device_attribute *attr, char *buf)
104{ 104{
105 struct bsr_dev *bsr_dev = dev_get_drvdata(dev); 105 struct bsr_dev *bsr_dev = dev_get_drvdata(dev);
106 return sprintf(buf, "%lu\n", bsr_dev->bsr_len); 106 return sprintf(buf, "%llu\n", bsr_dev->bsr_len);
107} 107}
108 108
109static struct device_attribute bsr_dev_attrs[] = { 109static struct device_attribute bsr_dev_attrs[] = {
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c
index 5a8a4c28c867..94e7e3c8c05a 100644
--- a/drivers/char/hvc_console.c
+++ b/drivers/char/hvc_console.c
@@ -318,7 +318,6 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
318 } /* else count == 0 */ 318 } /* else count == 0 */
319 319
320 tty->driver_data = hp; 320 tty->driver_data = hp;
321 tty->low_latency = 1; /* Makes flushes to ldisc synchronous. */
322 321
323 hp->tty = tty; 322 hp->tty = tty;
324 323
@@ -764,13 +763,11 @@ struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int data,
764 return ERR_PTR(err); 763 return ERR_PTR(err);
765 } 764 }
766 765
767 hp = kmalloc(ALIGN(sizeof(*hp), sizeof(long)) + outbuf_size, 766 hp = kzalloc(ALIGN(sizeof(*hp), sizeof(long)) + outbuf_size,
768 GFP_KERNEL); 767 GFP_KERNEL);
769 if (!hp) 768 if (!hp)
770 return ERR_PTR(-ENOMEM); 769 return ERR_PTR(-ENOMEM);
771 770
772 memset(hp, 0x00, sizeof(*hp));
773
774 hp->vtermno = vtermno; 771 hp->vtermno = vtermno;
775 hp->data = data; 772 hp->data = data;
776 hp->ops = ops; 773 hp->ops = ops;
@@ -876,8 +873,11 @@ static int hvc_init(void)
876 goto stop_thread; 873 goto stop_thread;
877 } 874 }
878 875
879 /* FIXME: This mb() seems completely random. Remove it. */ 876 /*
880 mb(); 877 * Make sure tty is fully registered before allowing it to be
878 * found by hvc_console_device.
879 */
880 smp_mb();
881 hvc_driver = drv; 881 hvc_driver = drv;
882 return 0; 882 return 0;
883 883
diff --git a/drivers/char/hvc_irq.c b/drivers/char/hvc_irq.c
index d09e5688d449..2623e177e8d6 100644
--- a/drivers/char/hvc_irq.c
+++ b/drivers/char/hvc_irq.c
@@ -37,7 +37,7 @@ int notifier_add_irq(struct hvc_struct *hp, int irq)
37 37
38void notifier_del_irq(struct hvc_struct *hp, int irq) 38void notifier_del_irq(struct hvc_struct *hp, int irq)
39{ 39{
40 if (!irq) 40 if (!hp->irq_requested)
41 return; 41 return;
42 free_irq(irq, hp); 42 free_irq(irq, hp);
43 hp->irq_requested = 0; 43 hp->irq_requested = 0;
diff --git a/drivers/char/ps3flash.c b/drivers/char/ps3flash.c
index 79b6f461be75..afbe45676d71 100644
--- a/drivers/char/ps3flash.c
+++ b/drivers/char/ps3flash.c
@@ -44,7 +44,7 @@ static ssize_t ps3flash_read_write_sectors(struct ps3_storage_device *dev,
44 u64 res = ps3stor_read_write_sectors(dev, lpar, start_sector, sectors, 44 u64 res = ps3stor_read_write_sectors(dev, lpar, start_sector, sectors,
45 write); 45 write);
46 if (res) { 46 if (res) {
47 dev_err(&dev->sbd.core, "%s:%u: %s failed 0x%lx\n", __func__, 47 dev_err(&dev->sbd.core, "%s:%u: %s failed 0x%llx\n", __func__,
48 __LINE__, write ? "write" : "read", res); 48 __LINE__, write ? "write" : "read", res);
49 return -EIO; 49 return -EIO;
50 } 50 }
@@ -59,7 +59,7 @@ static ssize_t ps3flash_read_sectors(struct ps3_storage_device *dev,
59 59
60 max_sectors = dev->bounce_size / dev->blk_size; 60 max_sectors = dev->bounce_size / dev->blk_size;
61 if (sectors > max_sectors) { 61 if (sectors > max_sectors) {
62 dev_dbg(&dev->sbd.core, "%s:%u Limiting sectors to %lu\n", 62 dev_dbg(&dev->sbd.core, "%s:%u Limiting sectors to %llu\n",
63 __func__, __LINE__, max_sectors); 63 __func__, __LINE__, max_sectors);
64 sectors = max_sectors; 64 sectors = max_sectors;
65 } 65 }
@@ -144,7 +144,7 @@ static ssize_t ps3flash_read(struct file *file, char __user *buf, size_t count,
144 goto fail; 144 goto fail;
145 } 145 }
146 146
147 n = min(remaining, sectors_read*dev->blk_size-offset); 147 n = min_t(u64, remaining, sectors_read*dev->blk_size-offset);
148 dev_dbg(&dev->sbd.core, 148 dev_dbg(&dev->sbd.core,
149 "%s:%u: copy %lu bytes from 0x%p to user 0x%p\n", 149 "%s:%u: copy %lu bytes from 0x%p to user 0x%p\n",
150 __func__, __LINE__, n, dev->bounce_buf+offset, buf); 150 __func__, __LINE__, n, dev->bounce_buf+offset, buf);
@@ -225,7 +225,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf,
225 if (end_read_sector >= start_read_sector) { 225 if (end_read_sector >= start_read_sector) {
226 /* Merge head and tail */ 226 /* Merge head and tail */
227 dev_dbg(&dev->sbd.core, 227 dev_dbg(&dev->sbd.core,
228 "Merged head and tail: %lu sectors at %lu\n", 228 "Merged head and tail: %llu sectors at %llu\n",
229 chunk_sectors, start_write_sector); 229 chunk_sectors, start_write_sector);
230 res = ps3flash_read_sectors(dev, start_write_sector, 230 res = ps3flash_read_sectors(dev, start_write_sector,
231 chunk_sectors, 0); 231 chunk_sectors, 0);
@@ -235,7 +235,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf,
235 if (head) { 235 if (head) {
236 /* Read head */ 236 /* Read head */
237 dev_dbg(&dev->sbd.core, 237 dev_dbg(&dev->sbd.core,
238 "head: %lu sectors at %lu\n", head, 238 "head: %llu sectors at %llu\n", head,
239 start_write_sector); 239 start_write_sector);
240 res = ps3flash_read_sectors(dev, 240 res = ps3flash_read_sectors(dev,
241 start_write_sector, 241 start_write_sector,
@@ -247,7 +247,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf,
247 start_write_sector+chunk_sectors) { 247 start_write_sector+chunk_sectors) {
248 /* Read tail */ 248 /* Read tail */
249 dev_dbg(&dev->sbd.core, 249 dev_dbg(&dev->sbd.core,
250 "tail: %lu sectors at %lu\n", tail, 250 "tail: %llu sectors at %llu\n", tail,
251 start_read_sector); 251 start_read_sector);
252 sec_off = start_read_sector-start_write_sector; 252 sec_off = start_read_sector-start_write_sector;
253 res = ps3flash_read_sectors(dev, 253 res = ps3flash_read_sectors(dev,
@@ -258,7 +258,7 @@ static ssize_t ps3flash_write(struct file *file, const char __user *buf,
258 } 258 }
259 } 259 }
260 260
261 n = min(remaining, dev->bounce_size-offset); 261 n = min_t(u64, remaining, dev->bounce_size-offset);
262 dev_dbg(&dev->sbd.core, 262 dev_dbg(&dev->sbd.core,
263 "%s:%u: copy %lu bytes from user 0x%p to 0x%p\n", 263 "%s:%u: copy %lu bytes from user 0x%p to 0x%p\n",
264 __func__, __LINE__, n, buf, dev->bounce_buf+offset); 264 __func__, __LINE__, n, buf, dev->bounce_buf+offset);
@@ -299,11 +299,11 @@ static irqreturn_t ps3flash_interrupt(int irq, void *data)
299 299
300 if (tag != dev->tag) 300 if (tag != dev->tag)
301 dev_err(&dev->sbd.core, 301 dev_err(&dev->sbd.core,
302 "%s:%u: tag mismatch, got %lx, expected %lx\n", 302 "%s:%u: tag mismatch, got %llx, expected %llx\n",
303 __func__, __LINE__, tag, dev->tag); 303 __func__, __LINE__, tag, dev->tag);
304 304
305 if (res) { 305 if (res) {
306 dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%lx\n", 306 dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%llx\n",
307 __func__, __LINE__, res, status); 307 __func__, __LINE__, res, status);
308 } else { 308 } else {
309 dev->lv1_status = status; 309 dev->lv1_status = status;
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c
index 53544e21f191..f329f459817c 100644
--- a/drivers/char/synclink_gt.c
+++ b/drivers/char/synclink_gt.c
@@ -1,6 +1,4 @@
1/* 1/*
2 * $Id: synclink_gt.c,v 4.50 2007/07/25 19:29:25 paulkf Exp $
3 *
4 * Device driver for Microgate SyncLink GT serial adapters. 2 * Device driver for Microgate SyncLink GT serial adapters.
5 * 3 *
6 * written by Paul Fulghum for Microgate Corporation 4 * written by Paul Fulghum for Microgate Corporation
@@ -91,7 +89,6 @@
91 * module identification 89 * module identification
92 */ 90 */
93static char *driver_name = "SyncLink GT"; 91static char *driver_name = "SyncLink GT";
94static char *driver_version = "$Revision: 4.50 $";
95static char *tty_driver_name = "synclink_gt"; 92static char *tty_driver_name = "synclink_gt";
96static char *tty_dev_prefix = "ttySLG"; 93static char *tty_dev_prefix = "ttySLG";
97MODULE_LICENSE("GPL"); 94MODULE_LICENSE("GPL");
@@ -1309,7 +1306,7 @@ static int read_proc(char *page, char **start, off_t off, int count,
1309 off_t begin = 0; 1306 off_t begin = 0;
1310 struct slgt_info *info; 1307 struct slgt_info *info;
1311 1308
1312 len += sprintf(page, "synclink_gt driver:%s\n", driver_version); 1309 len += sprintf(page, "synclink_gt driver\n");
1313 1310
1314 info = slgt_device_list; 1311 info = slgt_device_list;
1315 while( info ) { 1312 while( info ) {
@@ -2441,7 +2438,7 @@ static void program_hw(struct slgt_info *info)
2441 info->ri_chkcount = 0; 2438 info->ri_chkcount = 0;
2442 info->dsr_chkcount = 0; 2439 info->dsr_chkcount = 0;
2443 2440
2444 slgt_irq_on(info, IRQ_DCD | IRQ_CTS | IRQ_DSR); 2441 slgt_irq_on(info, IRQ_DCD | IRQ_CTS | IRQ_DSR | IRQ_RI);
2445 get_signals(info); 2442 get_signals(info);
2446 2443
2447 if (info->netcount || 2444 if (info->netcount ||
@@ -3576,7 +3573,7 @@ static void slgt_cleanup(void)
3576 struct slgt_info *info; 3573 struct slgt_info *info;
3577 struct slgt_info *tmp; 3574 struct slgt_info *tmp;
3578 3575
3579 printk("unload %s %s\n", driver_name, driver_version); 3576 printk(KERN_INFO "unload %s\n", driver_name);
3580 3577
3581 if (serial_driver) { 3578 if (serial_driver) {
3582 for (info=slgt_device_list ; info != NULL ; info=info->next_device) 3579 for (info=slgt_device_list ; info != NULL ; info=info->next_device)
@@ -3619,7 +3616,7 @@ static int __init slgt_init(void)
3619{ 3616{
3620 int rc; 3617 int rc;
3621 3618
3622 printk("%s %s\n", driver_name, driver_version); 3619 printk(KERN_INFO "%s\n", driver_name);
3623 3620
3624 serial_driver = alloc_tty_driver(MAX_DEVICES); 3621 serial_driver = alloc_tty_driver(MAX_DEVICES);
3625 if (!serial_driver) { 3622 if (!serial_driver) {
@@ -3650,9 +3647,8 @@ static int __init slgt_init(void)
3650 goto error; 3647 goto error;
3651 } 3648 }
3652 3649
3653 printk("%s %s, tty major#%d\n", 3650 printk(KERN_INFO "%s, tty major#%d\n",
3654 driver_name, driver_version, 3651 driver_name, serial_driver->major);
3655 serial_driver->major);
3656 3652
3657 slgt_device_count = 0; 3653 slgt_device_count = 0;
3658 if ((rc = pci_register_driver(&pci_driver)) < 0) { 3654 if ((rc = pci_register_driver(&pci_driver)) < 0) {
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
index d41b9f6f7903..33a9351c896d 100644
--- a/drivers/char/sysrq.c
+++ b/drivers/char/sysrq.c
@@ -473,6 +473,12 @@ void __handle_sysrq(int key, struct tty_struct *tty, int check_mask)
473 unsigned long flags; 473 unsigned long flags;
474 474
475 spin_lock_irqsave(&sysrq_key_table_lock, flags); 475 spin_lock_irqsave(&sysrq_key_table_lock, flags);
476 /*
477 * Raise the apparent loglevel to maximum so that the sysrq header
478 * is shown to provide the user with positive feedback. We do not
479 * simply emit this at KERN_EMERG as that would change message
480 * routing in the consumers of /proc/kmsg.
481 */
476 orig_log_level = console_loglevel; 482 orig_log_level = console_loglevel;
477 console_loglevel = 7; 483 console_loglevel = 7;
478 printk(KERN_INFO "SysRq : "); 484 printk(KERN_INFO "SysRq : ");
diff --git a/drivers/char/tty_ioctl.c b/drivers/char/tty_ioctl.c
index a408c8e487ec..6f4c7d0a53bf 100644
--- a/drivers/char/tty_ioctl.c
+++ b/drivers/char/tty_ioctl.c
@@ -1057,7 +1057,7 @@ int tty_perform_flush(struct tty_struct *tty, unsigned long arg)
1057 if (retval) 1057 if (retval)
1058 return retval; 1058 return retval;
1059 1059
1060 ld = tty_ldisc_ref(tty); 1060 ld = tty_ldisc_ref_wait(tty);
1061 switch (arg) { 1061 switch (arg) {
1062 case TCIFLUSH: 1062 case TCIFLUSH:
1063 if (ld && ld->ops->flush_buffer) 1063 if (ld && ld->ops->flush_buffer)
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index e34b06420816..48ea59e79672 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -62,6 +62,25 @@ config MV_XOR
62 ---help--- 62 ---help---
63 Enable support for the Marvell XOR engine. 63 Enable support for the Marvell XOR engine.
64 64
65config MX3_IPU
66 bool "MX3x Image Processing Unit support"
67 depends on ARCH_MX3
68 select DMA_ENGINE
69 default y
70 help
71 If you plan to use the Image Processing unit in the i.MX3x, say
72 Y here. If unsure, select Y.
73
74config MX3_IPU_IRQS
75 int "Number of dynamically mapped interrupts for IPU"
76 depends on MX3_IPU
77 range 2 137
78 default 4
79 help
80 Out of 137 interrupt sources on i.MX31 IPU only very few are used.
81 To avoid bloating the irq_desc[] array we allocate a sufficient
82 number of IRQ slots and map them dynamically to specific sources.
83
65config DMA_ENGINE 84config DMA_ENGINE
66 bool 85 bool
67 86
diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index 14f59527d4f6..2e5dc96700d2 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -7,3 +7,4 @@ obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o
7obj-$(CONFIG_FSL_DMA) += fsldma.o 7obj-$(CONFIG_FSL_DMA) += fsldma.o
8obj-$(CONFIG_MV_XOR) += mv_xor.o 8obj-$(CONFIG_MV_XOR) += mv_xor.o
9obj-$(CONFIG_DW_DMAC) += dw_dmac.o 9obj-$(CONFIG_DW_DMAC) += dw_dmac.o
10obj-$(CONFIG_MX3_IPU) += ipu/
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 403dbe781122..a58993011edb 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -329,9 +329,6 @@ struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type)
329 struct dma_chan *chan; 329 struct dma_chan *chan;
330 int cpu; 330 int cpu;
331 331
332 WARN_ONCE(dmaengine_ref_count == 0,
333 "client called %s without a reference", __func__);
334
335 cpu = get_cpu(); 332 cpu = get_cpu();
336 chan = per_cpu_ptr(channel_table[tx_type], cpu)->chan; 333 chan = per_cpu_ptr(channel_table[tx_type], cpu)->chan;
337 put_cpu(); 334 put_cpu();
@@ -348,9 +345,6 @@ void dma_issue_pending_all(void)
348 struct dma_device *device; 345 struct dma_device *device;
349 struct dma_chan *chan; 346 struct dma_chan *chan;
350 347
351 WARN_ONCE(dmaengine_ref_count == 0,
352 "client called %s without a reference", __func__);
353
354 rcu_read_lock(); 348 rcu_read_lock();
355 list_for_each_entry_rcu(device, &dma_device_list, global_node) { 349 list_for_each_entry_rcu(device, &dma_device_list, global_node) {
356 if (dma_has_cap(DMA_PRIVATE, device->cap_mask)) 350 if (dma_has_cap(DMA_PRIVATE, device->cap_mask))
@@ -961,6 +955,8 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx)
961 if (!dep) 955 if (!dep)
962 return; 956 return;
963 957
958 /* we'll submit tx->next now, so clear the link */
959 tx->next = NULL;
964 chan = dep->chan; 960 chan = dep->chan;
965 961
966 /* keep submitting up until a channel switch is detected 962 /* keep submitting up until a channel switch is detected
diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index 3603f1ea5b28..732fa1ec36ab 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -217,6 +217,10 @@ static int dmatest_func(void *data)
217 chan = thread->chan; 217 chan = thread->chan;
218 218
219 while (!kthread_should_stop()) { 219 while (!kthread_should_stop()) {
220 struct dma_device *dev = chan->device;
221 struct dma_async_tx_descriptor *tx;
222 dma_addr_t dma_src, dma_dest;
223
220 total_tests++; 224 total_tests++;
221 225
222 len = dmatest_random() % test_buf_size + 1; 226 len = dmatest_random() % test_buf_size + 1;
@@ -226,10 +230,30 @@ static int dmatest_func(void *data)
226 dmatest_init_srcbuf(thread->srcbuf, src_off, len); 230 dmatest_init_srcbuf(thread->srcbuf, src_off, len);
227 dmatest_init_dstbuf(thread->dstbuf, dst_off, len); 231 dmatest_init_dstbuf(thread->dstbuf, dst_off, len);
228 232
229 cookie = dma_async_memcpy_buf_to_buf(chan, 233 dma_src = dma_map_single(dev->dev, thread->srcbuf + src_off,
230 thread->dstbuf + dst_off, 234 len, DMA_TO_DEVICE);
231 thread->srcbuf + src_off, 235 /* map with DMA_BIDIRECTIONAL to force writeback/invalidate */
232 len); 236 dma_dest = dma_map_single(dev->dev, thread->dstbuf,
237 test_buf_size, DMA_BIDIRECTIONAL);
238
239 tx = dev->device_prep_dma_memcpy(chan, dma_dest + dst_off,
240 dma_src, len,
241 DMA_CTRL_ACK | DMA_COMPL_SKIP_DEST_UNMAP);
242 if (!tx) {
243 dma_unmap_single(dev->dev, dma_src, len, DMA_TO_DEVICE);
244 dma_unmap_single(dev->dev, dma_dest,
245 test_buf_size, DMA_BIDIRECTIONAL);
246 pr_warning("%s: #%u: prep error with src_off=0x%x "
247 "dst_off=0x%x len=0x%x\n",
248 thread_name, total_tests - 1,
249 src_off, dst_off, len);
250 msleep(100);
251 failed_tests++;
252 continue;
253 }
254 tx->callback = NULL;
255 cookie = tx->tx_submit(tx);
256
233 if (dma_submit_error(cookie)) { 257 if (dma_submit_error(cookie)) {
234 pr_warning("%s: #%u: submit error %d with src_off=0x%x " 258 pr_warning("%s: #%u: submit error %d with src_off=0x%x "
235 "dst_off=0x%x len=0x%x\n", 259 "dst_off=0x%x len=0x%x\n",
@@ -253,6 +277,9 @@ static int dmatest_func(void *data)
253 failed_tests++; 277 failed_tests++;
254 continue; 278 continue;
255 } 279 }
280 /* Unmap by myself (see DMA_COMPL_SKIP_DEST_UNMAP above) */
281 dma_unmap_single(dev->dev, dma_dest,
282 test_buf_size, DMA_BIDIRECTIONAL);
256 283
257 error_count = 0; 284 error_count = 0;
258 285
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
index ca70a21afc68..70126a606239 100644
--- a/drivers/dma/fsldma.c
+++ b/drivers/dma/fsldma.c
@@ -822,7 +822,7 @@ static int __devinit fsl_dma_chan_probe(struct fsl_dma_device *fdev,
822 */ 822 */
823 WARN_ON(fdev->feature != new_fsl_chan->feature); 823 WARN_ON(fdev->feature != new_fsl_chan->feature);
824 824
825 new_fsl_chan->dev = &new_fsl_chan->common.dev->device; 825 new_fsl_chan->dev = fdev->dev;
826 new_fsl_chan->reg_base = ioremap(new_fsl_chan->reg.start, 826 new_fsl_chan->reg_base = ioremap(new_fsl_chan->reg.start,
827 new_fsl_chan->reg.end - new_fsl_chan->reg.start + 1); 827 new_fsl_chan->reg.end - new_fsl_chan->reg.start + 1);
828 828
@@ -875,7 +875,8 @@ static int __devinit fsl_dma_chan_probe(struct fsl_dma_device *fdev,
875 } 875 }
876 876
877 dev_info(fdev->dev, "#%d (%s), irq %d\n", new_fsl_chan->id, 877 dev_info(fdev->dev, "#%d (%s), irq %d\n", new_fsl_chan->id,
878 compatible, new_fsl_chan->irq); 878 compatible,
879 new_fsl_chan->irq != NO_IRQ ? new_fsl_chan->irq : fdev->irq);
879 880
880 return 0; 881 return 0;
881 882
@@ -890,7 +891,8 @@ err_no_reg:
890 891
891static void fsl_dma_chan_remove(struct fsl_dma_chan *fchan) 892static void fsl_dma_chan_remove(struct fsl_dma_chan *fchan)
892{ 893{
893 free_irq(fchan->irq, fchan); 894 if (fchan->irq != NO_IRQ)
895 free_irq(fchan->irq, fchan);
894 list_del(&fchan->common.device_node); 896 list_del(&fchan->common.device_node);
895 iounmap(fchan->reg_base); 897 iounmap(fchan->reg_base);
896 kfree(fchan); 898 kfree(fchan);
diff --git a/drivers/dma/ipu/Makefile b/drivers/dma/ipu/Makefile
new file mode 100644
index 000000000000..6704cf48326d
--- /dev/null
+++ b/drivers/dma/ipu/Makefile
@@ -0,0 +1 @@
obj-y += ipu_irq.o ipu_idmac.o
diff --git a/drivers/dma/ipu/ipu_idmac.c b/drivers/dma/ipu/ipu_idmac.c
new file mode 100644
index 000000000000..1f154d08e98f
--- /dev/null
+++ b/drivers/dma/ipu/ipu_idmac.c
@@ -0,0 +1,1740 @@
1/*
2 * Copyright (C) 2008
3 * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de>
4 *
5 * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#include <linux/init.h>
13#include <linux/platform_device.h>
14#include <linux/err.h>
15#include <linux/spinlock.h>
16#include <linux/delay.h>
17#include <linux/list.h>
18#include <linux/clk.h>
19#include <linux/vmalloc.h>
20#include <linux/string.h>
21#include <linux/interrupt.h>
22#include <linux/io.h>
23
24#include <mach/ipu.h>
25
26#include "ipu_intern.h"
27
28#define FS_VF_IN_VALID 0x00000002
29#define FS_ENC_IN_VALID 0x00000001
30
31/*
32 * There can be only one, we could allocate it dynamically, but then we'd have
33 * to add an extra parameter to some functions, and use something as ugly as
34 * struct ipu *ipu = to_ipu(to_idmac(ichan->dma_chan.device));
35 * in the ISR
36 */
37static struct ipu ipu_data;
38
39#define to_ipu(id) container_of(id, struct ipu, idmac)
40
41static u32 __idmac_read_icreg(struct ipu *ipu, unsigned long reg)
42{
43 return __raw_readl(ipu->reg_ic + reg);
44}
45
46#define idmac_read_icreg(ipu, reg) __idmac_read_icreg(ipu, reg - IC_CONF)
47
48static void __idmac_write_icreg(struct ipu *ipu, u32 value, unsigned long reg)
49{
50 __raw_writel(value, ipu->reg_ic + reg);
51}
52
53#define idmac_write_icreg(ipu, v, reg) __idmac_write_icreg(ipu, v, reg - IC_CONF)
54
55static u32 idmac_read_ipureg(struct ipu *ipu, unsigned long reg)
56{
57 return __raw_readl(ipu->reg_ipu + reg);
58}
59
60static void idmac_write_ipureg(struct ipu *ipu, u32 value, unsigned long reg)
61{
62 __raw_writel(value, ipu->reg_ipu + reg);
63}
64
65/*****************************************************************************
66 * IPU / IC common functions
67 */
68static void dump_idmac_reg(struct ipu *ipu)
69{
70 dev_dbg(ipu->dev, "IDMAC_CONF 0x%x, IC_CONF 0x%x, IDMAC_CHA_EN 0x%x, "
71 "IDMAC_CHA_PRI 0x%x, IDMAC_CHA_BUSY 0x%x\n",
72 idmac_read_icreg(ipu, IDMAC_CONF),
73 idmac_read_icreg(ipu, IC_CONF),
74 idmac_read_icreg(ipu, IDMAC_CHA_EN),
75 idmac_read_icreg(ipu, IDMAC_CHA_PRI),
76 idmac_read_icreg(ipu, IDMAC_CHA_BUSY));
77 dev_dbg(ipu->dev, "BUF0_RDY 0x%x, BUF1_RDY 0x%x, CUR_BUF 0x%x, "
78 "DB_MODE 0x%x, TASKS_STAT 0x%x\n",
79 idmac_read_ipureg(ipu, IPU_CHA_BUF0_RDY),
80 idmac_read_ipureg(ipu, IPU_CHA_BUF1_RDY),
81 idmac_read_ipureg(ipu, IPU_CHA_CUR_BUF),
82 idmac_read_ipureg(ipu, IPU_CHA_DB_MODE_SEL),
83 idmac_read_ipureg(ipu, IPU_TASKS_STAT));
84}
85
86static uint32_t bytes_per_pixel(enum pixel_fmt fmt)
87{
88 switch (fmt) {
89 case IPU_PIX_FMT_GENERIC: /* generic data */
90 case IPU_PIX_FMT_RGB332:
91 case IPU_PIX_FMT_YUV420P:
92 case IPU_PIX_FMT_YUV422P:
93 default:
94 return 1;
95 case IPU_PIX_FMT_RGB565:
96 case IPU_PIX_FMT_YUYV:
97 case IPU_PIX_FMT_UYVY:
98 return 2;
99 case IPU_PIX_FMT_BGR24:
100 case IPU_PIX_FMT_RGB24:
101 return 3;
102 case IPU_PIX_FMT_GENERIC_32: /* generic data */
103 case IPU_PIX_FMT_BGR32:
104 case IPU_PIX_FMT_RGB32:
105 case IPU_PIX_FMT_ABGR32:
106 return 4;
107 }
108}
109
110/* Enable / disable direct write to memory by the Camera Sensor Interface */
111static void ipu_ic_enable_task(struct ipu *ipu, enum ipu_channel channel)
112{
113 uint32_t ic_conf, mask;
114
115 switch (channel) {
116 case IDMAC_IC_0:
117 mask = IC_CONF_PRPENC_EN;
118 break;
119 case IDMAC_IC_7:
120 mask = IC_CONF_RWS_EN | IC_CONF_PRPENC_EN;
121 break;
122 default:
123 return;
124 }
125 ic_conf = idmac_read_icreg(ipu, IC_CONF) | mask;
126 idmac_write_icreg(ipu, ic_conf, IC_CONF);
127}
128
129static void ipu_ic_disable_task(struct ipu *ipu, enum ipu_channel channel)
130{
131 uint32_t ic_conf, mask;
132
133 switch (channel) {
134 case IDMAC_IC_0:
135 mask = IC_CONF_PRPENC_EN;
136 break;
137 case IDMAC_IC_7:
138 mask = IC_CONF_RWS_EN | IC_CONF_PRPENC_EN;
139 break;
140 default:
141 return;
142 }
143 ic_conf = idmac_read_icreg(ipu, IC_CONF) & ~mask;
144 idmac_write_icreg(ipu, ic_conf, IC_CONF);
145}
146
147static uint32_t ipu_channel_status(struct ipu *ipu, enum ipu_channel channel)
148{
149 uint32_t stat = TASK_STAT_IDLE;
150 uint32_t task_stat_reg = idmac_read_ipureg(ipu, IPU_TASKS_STAT);
151
152 switch (channel) {
153 case IDMAC_IC_7:
154 stat = (task_stat_reg & TSTAT_CSI2MEM_MASK) >>
155 TSTAT_CSI2MEM_OFFSET;
156 break;
157 case IDMAC_IC_0:
158 case IDMAC_SDC_0:
159 case IDMAC_SDC_1:
160 default:
161 break;
162 }
163 return stat;
164}
165
166struct chan_param_mem_planar {
167 /* Word 0 */
168 u32 xv:10;
169 u32 yv:10;
170 u32 xb:12;
171
172 u32 yb:12;
173 u32 res1:2;
174 u32 nsb:1;
175 u32 lnpb:6;
176 u32 ubo_l:11;
177
178 u32 ubo_h:15;
179 u32 vbo_l:17;
180
181 u32 vbo_h:9;
182 u32 res2:3;
183 u32 fw:12;
184 u32 fh_l:8;
185
186 u32 fh_h:4;
187 u32 res3:28;
188
189 /* Word 1 */
190 u32 eba0;
191
192 u32 eba1;
193
194 u32 bpp:3;
195 u32 sl:14;
196 u32 pfs:3;
197 u32 bam:3;
198 u32 res4:2;
199 u32 npb:6;
200 u32 res5:1;
201
202 u32 sat:2;
203 u32 res6:30;
204} __attribute__ ((packed));
205
206struct chan_param_mem_interleaved {
207 /* Word 0 */
208 u32 xv:10;
209 u32 yv:10;
210 u32 xb:12;
211
212 u32 yb:12;
213 u32 sce:1;
214 u32 res1:1;
215 u32 nsb:1;
216 u32 lnpb:6;
217 u32 sx:10;
218 u32 sy_l:1;
219
220 u32 sy_h:9;
221 u32 ns:10;
222 u32 sm:10;
223 u32 sdx_l:3;
224
225 u32 sdx_h:2;
226 u32 sdy:5;
227 u32 sdrx:1;
228 u32 sdry:1;
229 u32 sdr1:1;
230 u32 res2:2;
231 u32 fw:12;
232 u32 fh_l:8;
233
234 u32 fh_h:4;
235 u32 res3:28;
236
237 /* Word 1 */
238 u32 eba0;
239
240 u32 eba1;
241
242 u32 bpp:3;
243 u32 sl:14;
244 u32 pfs:3;
245 u32 bam:3;
246 u32 res4:2;
247 u32 npb:6;
248 u32 res5:1;
249
250 u32 sat:2;
251 u32 scc:1;
252 u32 ofs0:5;
253 u32 ofs1:5;
254 u32 ofs2:5;
255 u32 ofs3:5;
256 u32 wid0:3;
257 u32 wid1:3;
258 u32 wid2:3;
259
260 u32 wid3:3;
261 u32 dec_sel:1;
262 u32 res6:28;
263} __attribute__ ((packed));
264
265union chan_param_mem {
266 struct chan_param_mem_planar pp;
267 struct chan_param_mem_interleaved ip;
268};
269
270static void ipu_ch_param_set_plane_offset(union chan_param_mem *params,
271 u32 u_offset, u32 v_offset)
272{
273 params->pp.ubo_l = u_offset & 0x7ff;
274 params->pp.ubo_h = u_offset >> 11;
275 params->pp.vbo_l = v_offset & 0x1ffff;
276 params->pp.vbo_h = v_offset >> 17;
277}
278
279static void ipu_ch_param_set_size(union chan_param_mem *params,
280 uint32_t pixel_fmt, uint16_t width,
281 uint16_t height, uint16_t stride)
282{
283 u32 u_offset;
284 u32 v_offset;
285
286 params->pp.fw = width - 1;
287 params->pp.fh_l = height - 1;
288 params->pp.fh_h = (height - 1) >> 8;
289 params->pp.sl = stride - 1;
290
291 switch (pixel_fmt) {
292 case IPU_PIX_FMT_GENERIC:
293 /*Represents 8-bit Generic data */
294 params->pp.bpp = 3;
295 params->pp.pfs = 7;
296 params->pp.npb = 31;
297 params->pp.sat = 2; /* SAT = use 32-bit access */
298 break;
299 case IPU_PIX_FMT_GENERIC_32:
300 /*Represents 32-bit Generic data */
301 params->pp.bpp = 0;
302 params->pp.pfs = 7;
303 params->pp.npb = 7;
304 params->pp.sat = 2; /* SAT = use 32-bit access */
305 break;
306 case IPU_PIX_FMT_RGB565:
307 params->ip.bpp = 2;
308 params->ip.pfs = 4;
309 params->ip.npb = 7;
310 params->ip.sat = 2; /* SAT = 32-bit access */
311 params->ip.ofs0 = 0; /* Red bit offset */
312 params->ip.ofs1 = 5; /* Green bit offset */
313 params->ip.ofs2 = 11; /* Blue bit offset */
314 params->ip.ofs3 = 16; /* Alpha bit offset */
315 params->ip.wid0 = 4; /* Red bit width - 1 */
316 params->ip.wid1 = 5; /* Green bit width - 1 */
317 params->ip.wid2 = 4; /* Blue bit width - 1 */
318 break;
319 case IPU_PIX_FMT_BGR24:
320 params->ip.bpp = 1; /* 24 BPP & RGB PFS */
321 params->ip.pfs = 4;
322 params->ip.npb = 7;
323 params->ip.sat = 2; /* SAT = 32-bit access */
324 params->ip.ofs0 = 0; /* Red bit offset */
325 params->ip.ofs1 = 8; /* Green bit offset */
326 params->ip.ofs2 = 16; /* Blue bit offset */
327 params->ip.ofs3 = 24; /* Alpha bit offset */
328 params->ip.wid0 = 7; /* Red bit width - 1 */
329 params->ip.wid1 = 7; /* Green bit width - 1 */
330 params->ip.wid2 = 7; /* Blue bit width - 1 */
331 break;
332 case IPU_PIX_FMT_RGB24:
333 params->ip.bpp = 1; /* 24 BPP & RGB PFS */
334 params->ip.pfs = 4;
335 params->ip.npb = 7;
336 params->ip.sat = 2; /* SAT = 32-bit access */
337 params->ip.ofs0 = 16; /* Red bit offset */
338 params->ip.ofs1 = 8; /* Green bit offset */
339 params->ip.ofs2 = 0; /* Blue bit offset */
340 params->ip.ofs3 = 24; /* Alpha bit offset */
341 params->ip.wid0 = 7; /* Red bit width - 1 */
342 params->ip.wid1 = 7; /* Green bit width - 1 */
343 params->ip.wid2 = 7; /* Blue bit width - 1 */
344 break;
345 case IPU_PIX_FMT_BGRA32:
346 case IPU_PIX_FMT_BGR32:
347 params->ip.bpp = 0;
348 params->ip.pfs = 4;
349 params->ip.npb = 7;
350 params->ip.sat = 2; /* SAT = 32-bit access */
351 params->ip.ofs0 = 8; /* Red bit offset */
352 params->ip.ofs1 = 16; /* Green bit offset */
353 params->ip.ofs2 = 24; /* Blue bit offset */
354 params->ip.ofs3 = 0; /* Alpha bit offset */
355 params->ip.wid0 = 7; /* Red bit width - 1 */
356 params->ip.wid1 = 7; /* Green bit width - 1 */
357 params->ip.wid2 = 7; /* Blue bit width - 1 */
358 params->ip.wid3 = 7; /* Alpha bit width - 1 */
359 break;
360 case IPU_PIX_FMT_RGBA32:
361 case IPU_PIX_FMT_RGB32:
362 params->ip.bpp = 0;
363 params->ip.pfs = 4;
364 params->ip.npb = 7;
365 params->ip.sat = 2; /* SAT = 32-bit access */
366 params->ip.ofs0 = 24; /* Red bit offset */
367 params->ip.ofs1 = 16; /* Green bit offset */
368 params->ip.ofs2 = 8; /* Blue bit offset */
369 params->ip.ofs3 = 0; /* Alpha bit offset */
370 params->ip.wid0 = 7; /* Red bit width - 1 */
371 params->ip.wid1 = 7; /* Green bit width - 1 */
372 params->ip.wid2 = 7; /* Blue bit width - 1 */
373 params->ip.wid3 = 7; /* Alpha bit width - 1 */
374 break;
375 case IPU_PIX_FMT_ABGR32:
376 params->ip.bpp = 0;
377 params->ip.pfs = 4;
378 params->ip.npb = 7;
379 params->ip.sat = 2; /* SAT = 32-bit access */
380 params->ip.ofs0 = 8; /* Red bit offset */
381 params->ip.ofs1 = 16; /* Green bit offset */
382 params->ip.ofs2 = 24; /* Blue bit offset */
383 params->ip.ofs3 = 0; /* Alpha bit offset */
384 params->ip.wid0 = 7; /* Red bit width - 1 */
385 params->ip.wid1 = 7; /* Green bit width - 1 */
386 params->ip.wid2 = 7; /* Blue bit width - 1 */
387 params->ip.wid3 = 7; /* Alpha bit width - 1 */
388 break;
389 case IPU_PIX_FMT_UYVY:
390 params->ip.bpp = 2;
391 params->ip.pfs = 6;
392 params->ip.npb = 7;
393 params->ip.sat = 2; /* SAT = 32-bit access */
394 break;
395 case IPU_PIX_FMT_YUV420P2:
396 case IPU_PIX_FMT_YUV420P:
397 params->ip.bpp = 3;
398 params->ip.pfs = 3;
399 params->ip.npb = 7;
400 params->ip.sat = 2; /* SAT = 32-bit access */
401 u_offset = stride * height;
402 v_offset = u_offset + u_offset / 4;
403 ipu_ch_param_set_plane_offset(params, u_offset, v_offset);
404 break;
405 case IPU_PIX_FMT_YVU422P:
406 params->ip.bpp = 3;
407 params->ip.pfs = 2;
408 params->ip.npb = 7;
409 params->ip.sat = 2; /* SAT = 32-bit access */
410 v_offset = stride * height;
411 u_offset = v_offset + v_offset / 2;
412 ipu_ch_param_set_plane_offset(params, u_offset, v_offset);
413 break;
414 case IPU_PIX_FMT_YUV422P:
415 params->ip.bpp = 3;
416 params->ip.pfs = 2;
417 params->ip.npb = 7;
418 params->ip.sat = 2; /* SAT = 32-bit access */
419 u_offset = stride * height;
420 v_offset = u_offset + u_offset / 2;
421 ipu_ch_param_set_plane_offset(params, u_offset, v_offset);
422 break;
423 default:
424 dev_err(ipu_data.dev,
425 "mxc ipu: unimplemented pixel format %d\n", pixel_fmt);
426 break;
427 }
428
429 params->pp.nsb = 1;
430}
431
432static void ipu_ch_param_set_burst_size(union chan_param_mem *params,
433 uint16_t burst_pixels)
434{
435 params->pp.npb = burst_pixels - 1;
436};
437
438static void ipu_ch_param_set_buffer(union chan_param_mem *params,
439 dma_addr_t buf0, dma_addr_t buf1)
440{
441 params->pp.eba0 = buf0;
442 params->pp.eba1 = buf1;
443};
444
445static void ipu_ch_param_set_rotation(union chan_param_mem *params,
446 enum ipu_rotate_mode rotate)
447{
448 params->pp.bam = rotate;
449};
450
451static void ipu_write_param_mem(uint32_t addr, uint32_t *data,
452 uint32_t num_words)
453{
454 for (; num_words > 0; num_words--) {
455 dev_dbg(ipu_data.dev,
456 "write param mem - addr = 0x%08X, data = 0x%08X\n",
457 addr, *data);
458 idmac_write_ipureg(&ipu_data, addr, IPU_IMA_ADDR);
459 idmac_write_ipureg(&ipu_data, *data++, IPU_IMA_DATA);
460 addr++;
461 if ((addr & 0x7) == 5) {
462 addr &= ~0x7; /* set to word 0 */
463 addr += 8; /* increment to next row */
464 }
465 }
466}
467
468static int calc_resize_coeffs(uint32_t in_size, uint32_t out_size,
469 uint32_t *resize_coeff,
470 uint32_t *downsize_coeff)
471{
472 uint32_t temp_size;
473 uint32_t temp_downsize;
474
475 *resize_coeff = 1 << 13;
476 *downsize_coeff = 1 << 13;
477
478 /* Cannot downsize more than 8:1 */
479 if (out_size << 3 < in_size)
480 return -EINVAL;
481
482 /* compute downsizing coefficient */
483 temp_downsize = 0;
484 temp_size = in_size;
485 while (temp_size >= out_size * 2 && temp_downsize < 2) {
486 temp_size >>= 1;
487 temp_downsize++;
488 }
489 *downsize_coeff = temp_downsize;
490
491 /*
492 * compute resizing coefficient using the following formula:
493 * resize_coeff = M*(SI -1)/(SO - 1)
494 * where M = 2^13, SI - input size, SO - output size
495 */
496 *resize_coeff = (8192L * (temp_size - 1)) / (out_size - 1);
497 if (*resize_coeff >= 16384L) {
498 dev_err(ipu_data.dev, "Warning! Overflow on resize coeff.\n");
499 *resize_coeff = 0x3FFF;
500 }
501
502 dev_dbg(ipu_data.dev, "resizing from %u -> %u pixels, "
503 "downsize=%u, resize=%u.%lu (reg=%u)\n", in_size, out_size,
504 *downsize_coeff, *resize_coeff >= 8192L ? 1 : 0,
505 ((*resize_coeff & 0x1FFF) * 10000L) / 8192L, *resize_coeff);
506
507 return 0;
508}
509
510static enum ipu_color_space format_to_colorspace(enum pixel_fmt fmt)
511{
512 switch (fmt) {
513 case IPU_PIX_FMT_RGB565:
514 case IPU_PIX_FMT_BGR24:
515 case IPU_PIX_FMT_RGB24:
516 case IPU_PIX_FMT_BGR32:
517 case IPU_PIX_FMT_RGB32:
518 return IPU_COLORSPACE_RGB;
519 default:
520 return IPU_COLORSPACE_YCBCR;
521 }
522}
523
524static int ipu_ic_init_prpenc(struct ipu *ipu,
525 union ipu_channel_param *params, bool src_is_csi)
526{
527 uint32_t reg, ic_conf;
528 uint32_t downsize_coeff, resize_coeff;
529 enum ipu_color_space in_fmt, out_fmt;
530
531 /* Setup vertical resizing */
532 calc_resize_coeffs(params->video.in_height,
533 params->video.out_height,
534 &resize_coeff, &downsize_coeff);
535 reg = (downsize_coeff << 30) | (resize_coeff << 16);
536
537 /* Setup horizontal resizing */
538 calc_resize_coeffs(params->video.in_width,
539 params->video.out_width,
540 &resize_coeff, &downsize_coeff);
541 reg |= (downsize_coeff << 14) | resize_coeff;
542
543 /* Setup color space conversion */
544 in_fmt = format_to_colorspace(params->video.in_pixel_fmt);
545 out_fmt = format_to_colorspace(params->video.out_pixel_fmt);
546
547 /*
548 * Colourspace conversion unsupported yet - see _init_csc() in
549 * Freescale sources
550 */
551 if (in_fmt != out_fmt) {
552 dev_err(ipu->dev, "Colourspace conversion unsupported!\n");
553 return -EOPNOTSUPP;
554 }
555
556 idmac_write_icreg(ipu, reg, IC_PRP_ENC_RSC);
557
558 ic_conf = idmac_read_icreg(ipu, IC_CONF);
559
560 if (src_is_csi)
561 ic_conf &= ~IC_CONF_RWS_EN;
562 else
563 ic_conf |= IC_CONF_RWS_EN;
564
565 idmac_write_icreg(ipu, ic_conf, IC_CONF);
566
567 return 0;
568}
569
570static uint32_t dma_param_addr(uint32_t dma_ch)
571{
572 /* Channel Parameter Memory */
573 return 0x10000 | (dma_ch << 4);
574};
575
576static void ipu_channel_set_priority(struct ipu *ipu, enum ipu_channel channel,
577 bool prio)
578{
579 u32 reg = idmac_read_icreg(ipu, IDMAC_CHA_PRI);
580
581 if (prio)
582 reg |= 1UL << channel;
583 else
584 reg &= ~(1UL << channel);
585
586 idmac_write_icreg(ipu, reg, IDMAC_CHA_PRI);
587
588 dump_idmac_reg(ipu);
589}
590
591static uint32_t ipu_channel_conf_mask(enum ipu_channel channel)
592{
593 uint32_t mask;
594
595 switch (channel) {
596 case IDMAC_IC_0:
597 case IDMAC_IC_7:
598 mask = IPU_CONF_CSI_EN | IPU_CONF_IC_EN;
599 break;
600 case IDMAC_SDC_0:
601 case IDMAC_SDC_1:
602 mask = IPU_CONF_SDC_EN | IPU_CONF_DI_EN;
603 break;
604 default:
605 mask = 0;
606 break;
607 }
608
609 return mask;
610}
611
612/**
613 * ipu_enable_channel() - enable an IPU channel.
614 * @channel: channel ID.
615 * @return: 0 on success or negative error code on failure.
616 */
617static int ipu_enable_channel(struct idmac *idmac, struct idmac_channel *ichan)
618{
619 struct ipu *ipu = to_ipu(idmac);
620 enum ipu_channel channel = ichan->dma_chan.chan_id;
621 uint32_t reg;
622 unsigned long flags;
623
624 spin_lock_irqsave(&ipu->lock, flags);
625
626 /* Reset to buffer 0 */
627 idmac_write_ipureg(ipu, 1UL << channel, IPU_CHA_CUR_BUF);
628 ichan->active_buffer = 0;
629 ichan->status = IPU_CHANNEL_ENABLED;
630
631 switch (channel) {
632 case IDMAC_SDC_0:
633 case IDMAC_SDC_1:
634 case IDMAC_IC_7:
635 ipu_channel_set_priority(ipu, channel, true);
636 default:
637 break;
638 }
639
640 reg = idmac_read_icreg(ipu, IDMAC_CHA_EN);
641
642 idmac_write_icreg(ipu, reg | (1UL << channel), IDMAC_CHA_EN);
643
644 ipu_ic_enable_task(ipu, channel);
645
646 spin_unlock_irqrestore(&ipu->lock, flags);
647 return 0;
648}
649
650/**
651 * ipu_init_channel_buffer() - initialize a buffer for logical IPU channel.
652 * @channel: channel ID.
653 * @pixel_fmt: pixel format of buffer. Pixel format is a FOURCC ASCII code.
654 * @width: width of buffer in pixels.
655 * @height: height of buffer in pixels.
656 * @stride: stride length of buffer in pixels.
657 * @rot_mode: rotation mode of buffer. A rotation setting other than
658 * IPU_ROTATE_VERT_FLIP should only be used for input buffers of
659 * rotation channels.
660 * @phyaddr_0: buffer 0 physical address.
661 * @phyaddr_1: buffer 1 physical address. Setting this to a value other than
662 * NULL enables double buffering mode.
663 * @return: 0 on success or negative error code on failure.
664 */
665static int ipu_init_channel_buffer(struct idmac_channel *ichan,
666 enum pixel_fmt pixel_fmt,
667 uint16_t width, uint16_t height,
668 uint32_t stride,
669 enum ipu_rotate_mode rot_mode,
670 dma_addr_t phyaddr_0, dma_addr_t phyaddr_1)
671{
672 enum ipu_channel channel = ichan->dma_chan.chan_id;
673 struct idmac *idmac = to_idmac(ichan->dma_chan.device);
674 struct ipu *ipu = to_ipu(idmac);
675 union chan_param_mem params = {};
676 unsigned long flags;
677 uint32_t reg;
678 uint32_t stride_bytes;
679
680 stride_bytes = stride * bytes_per_pixel(pixel_fmt);
681
682 if (stride_bytes % 4) {
683 dev_err(ipu->dev,
684 "Stride length must be 32-bit aligned, stride = %d, bytes = %d\n",
685 stride, stride_bytes);
686 return -EINVAL;
687 }
688
689 /* IC channel's stride must be a multiple of 8 pixels */
690 if ((channel <= 13) && (stride % 8)) {
691 dev_err(ipu->dev, "Stride must be 8 pixel multiple\n");
692 return -EINVAL;
693 }
694
695 /* Build parameter memory data for DMA channel */
696 ipu_ch_param_set_size(&params, pixel_fmt, width, height, stride_bytes);
697 ipu_ch_param_set_buffer(&params, phyaddr_0, phyaddr_1);
698 ipu_ch_param_set_rotation(&params, rot_mode);
699 /* Some channels (rotation) have restriction on burst length */
700 switch (channel) {
701 case IDMAC_IC_7: /* Hangs with burst 8, 16, other values
702 invalid - Table 44-30 */
703/*
704 ipu_ch_param_set_burst_size(&params, 8);
705 */
706 break;
707 case IDMAC_SDC_0:
708 case IDMAC_SDC_1:
709 /* In original code only IPU_PIX_FMT_RGB565 was setting burst */
710 ipu_ch_param_set_burst_size(&params, 16);
711 break;
712 case IDMAC_IC_0:
713 default:
714 break;
715 }
716
717 spin_lock_irqsave(&ipu->lock, flags);
718
719 ipu_write_param_mem(dma_param_addr(channel), (uint32_t *)&params, 10);
720
721 reg = idmac_read_ipureg(ipu, IPU_CHA_DB_MODE_SEL);
722
723 if (phyaddr_1)
724 reg |= 1UL << channel;
725 else
726 reg &= ~(1UL << channel);
727
728 idmac_write_ipureg(ipu, reg, IPU_CHA_DB_MODE_SEL);
729
730 ichan->status = IPU_CHANNEL_READY;
731
732 spin_unlock_irqrestore(ipu->lock, flags);
733
734 return 0;
735}
736
737/**
738 * ipu_select_buffer() - mark a channel's buffer as ready.
739 * @channel: channel ID.
740 * @buffer_n: buffer number to mark ready.
741 */
742static void ipu_select_buffer(enum ipu_channel channel, int buffer_n)
743{
744 /* No locking - this is a write-one-to-set register, cleared by IPU */
745 if (buffer_n == 0)
746 /* Mark buffer 0 as ready. */
747 idmac_write_ipureg(&ipu_data, 1UL << channel, IPU_CHA_BUF0_RDY);
748 else
749 /* Mark buffer 1 as ready. */
750 idmac_write_ipureg(&ipu_data, 1UL << channel, IPU_CHA_BUF1_RDY);
751}
752
753/**
754 * ipu_update_channel_buffer() - update physical address of a channel buffer.
755 * @channel: channel ID.
756 * @buffer_n: buffer number to update.
757 * 0 or 1 are the only valid values.
758 * @phyaddr: buffer physical address.
759 * @return: Returns 0 on success or negative error code on failure. This
760 * function will fail if the buffer is set to ready.
761 */
762/* Called under spin_lock(_irqsave)(&ichan->lock) */
763static int ipu_update_channel_buffer(enum ipu_channel channel,
764 int buffer_n, dma_addr_t phyaddr)
765{
766 uint32_t reg;
767 unsigned long flags;
768
769 spin_lock_irqsave(&ipu_data.lock, flags);
770
771 if (buffer_n == 0) {
772 reg = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF0_RDY);
773 if (reg & (1UL << channel)) {
774 spin_unlock_irqrestore(&ipu_data.lock, flags);
775 return -EACCES;
776 }
777
778 /* 44.3.3.1.9 - Row Number 1 (WORD1, offset 0) */
779 idmac_write_ipureg(&ipu_data, dma_param_addr(channel) +
780 0x0008UL, IPU_IMA_ADDR);
781 idmac_write_ipureg(&ipu_data, phyaddr, IPU_IMA_DATA);
782 } else {
783 reg = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF1_RDY);
784 if (reg & (1UL << channel)) {
785 spin_unlock_irqrestore(&ipu_data.lock, flags);
786 return -EACCES;
787 }
788
789 /* Check if double-buffering is already enabled */
790 reg = idmac_read_ipureg(&ipu_data, IPU_CHA_DB_MODE_SEL);
791
792 if (!(reg & (1UL << channel)))
793 idmac_write_ipureg(&ipu_data, reg | (1UL << channel),
794 IPU_CHA_DB_MODE_SEL);
795
796 /* 44.3.3.1.9 - Row Number 1 (WORD1, offset 1) */
797 idmac_write_ipureg(&ipu_data, dma_param_addr(channel) +
798 0x0009UL, IPU_IMA_ADDR);
799 idmac_write_ipureg(&ipu_data, phyaddr, IPU_IMA_DATA);
800 }
801
802 spin_unlock_irqrestore(&ipu_data.lock, flags);
803
804 return 0;
805}
806
807/* Called under spin_lock_irqsave(&ichan->lock) */
808static int ipu_submit_channel_buffers(struct idmac_channel *ichan,
809 struct idmac_tx_desc *desc)
810{
811 struct scatterlist *sg;
812 int i, ret = 0;
813
814 for (i = 0, sg = desc->sg; i < 2 && sg; i++) {
815 if (!ichan->sg[i]) {
816 ichan->sg[i] = sg;
817
818 /*
819 * On first invocation this shouldn't be necessary, the
820 * call to ipu_init_channel_buffer() above will set
821 * addresses for us, so we could make it conditional
822 * on status >= IPU_CHANNEL_ENABLED, but doing it again
823 * shouldn't hurt either.
824 */
825 ret = ipu_update_channel_buffer(ichan->dma_chan.chan_id, i,
826 sg_dma_address(sg));
827 if (ret < 0)
828 return ret;
829
830 ipu_select_buffer(ichan->dma_chan.chan_id, i);
831
832 sg = sg_next(sg);
833 }
834 }
835
836 return ret;
837}
838
839static dma_cookie_t idmac_tx_submit(struct dma_async_tx_descriptor *tx)
840{
841 struct idmac_tx_desc *desc = to_tx_desc(tx);
842 struct idmac_channel *ichan = to_idmac_chan(tx->chan);
843 struct idmac *idmac = to_idmac(tx->chan->device);
844 struct ipu *ipu = to_ipu(idmac);
845 dma_cookie_t cookie;
846 unsigned long flags;
847
848 /* Sanity check */
849 if (!list_empty(&desc->list)) {
850 /* The descriptor doesn't belong to client */
851 dev_err(&ichan->dma_chan.dev->device,
852 "Descriptor %p not prepared!\n", tx);
853 return -EBUSY;
854 }
855
856 mutex_lock(&ichan->chan_mutex);
857
858 if (ichan->status < IPU_CHANNEL_READY) {
859 struct idmac_video_param *video = &ichan->params.video;
860 /*
861 * Initial buffer assignment - the first two sg-entries from
862 * the descriptor will end up in the IDMAC buffers
863 */
864 dma_addr_t dma_1 = sg_is_last(desc->sg) ? 0 :
865 sg_dma_address(&desc->sg[1]);
866
867 WARN_ON(ichan->sg[0] || ichan->sg[1]);
868
869 cookie = ipu_init_channel_buffer(ichan,
870 video->out_pixel_fmt,
871 video->out_width,
872 video->out_height,
873 video->out_stride,
874 IPU_ROTATE_NONE,
875 sg_dma_address(&desc->sg[0]),
876 dma_1);
877 if (cookie < 0)
878 goto out;
879 }
880
881 /* ipu->lock can be taken under ichan->lock, but not v.v. */
882 spin_lock_irqsave(&ichan->lock, flags);
883
884 /* submit_buffers() atomically verifies and fills empty sg slots */
885 cookie = ipu_submit_channel_buffers(ichan, desc);
886
887 spin_unlock_irqrestore(&ichan->lock, flags);
888
889 if (cookie < 0)
890 goto out;
891
892 cookie = ichan->dma_chan.cookie;
893
894 if (++cookie < 0)
895 cookie = 1;
896
897 /* from dmaengine.h: "last cookie value returned to client" */
898 ichan->dma_chan.cookie = cookie;
899 tx->cookie = cookie;
900 spin_lock_irqsave(&ichan->lock, flags);
901 list_add_tail(&desc->list, &ichan->queue);
902 spin_unlock_irqrestore(&ichan->lock, flags);
903
904 if (ichan->status < IPU_CHANNEL_ENABLED) {
905 int ret = ipu_enable_channel(idmac, ichan);
906 if (ret < 0) {
907 cookie = ret;
908 spin_lock_irqsave(&ichan->lock, flags);
909 list_del_init(&desc->list);
910 spin_unlock_irqrestore(&ichan->lock, flags);
911 tx->cookie = cookie;
912 ichan->dma_chan.cookie = cookie;
913 }
914 }
915
916 dump_idmac_reg(ipu);
917
918out:
919 mutex_unlock(&ichan->chan_mutex);
920
921 return cookie;
922}
923
924/* Called with ichan->chan_mutex held */
925static int idmac_desc_alloc(struct idmac_channel *ichan, int n)
926{
927 struct idmac_tx_desc *desc = vmalloc(n * sizeof(struct idmac_tx_desc));
928 struct idmac *idmac = to_idmac(ichan->dma_chan.device);
929
930 if (!desc)
931 return -ENOMEM;
932
933 /* No interrupts, just disable the tasklet for a moment */
934 tasklet_disable(&to_ipu(idmac)->tasklet);
935
936 ichan->n_tx_desc = n;
937 ichan->desc = desc;
938 INIT_LIST_HEAD(&ichan->queue);
939 INIT_LIST_HEAD(&ichan->free_list);
940
941 while (n--) {
942 struct dma_async_tx_descriptor *txd = &desc->txd;
943
944 memset(txd, 0, sizeof(*txd));
945 dma_async_tx_descriptor_init(txd, &ichan->dma_chan);
946 txd->tx_submit = idmac_tx_submit;
947 txd->chan = &ichan->dma_chan;
948 INIT_LIST_HEAD(&txd->tx_list);
949
950 list_add(&desc->list, &ichan->free_list);
951
952 desc++;
953 }
954
955 tasklet_enable(&to_ipu(idmac)->tasklet);
956
957 return 0;
958}
959
960/**
961 * ipu_init_channel() - initialize an IPU channel.
962 * @idmac: IPU DMAC context.
963 * @ichan: pointer to the channel object.
964 * @return 0 on success or negative error code on failure.
965 */
966static int ipu_init_channel(struct idmac *idmac, struct idmac_channel *ichan)
967{
968 union ipu_channel_param *params = &ichan->params;
969 uint32_t ipu_conf;
970 enum ipu_channel channel = ichan->dma_chan.chan_id;
971 unsigned long flags;
972 uint32_t reg;
973 struct ipu *ipu = to_ipu(idmac);
974 int ret = 0, n_desc = 0;
975
976 dev_dbg(ipu->dev, "init channel = %d\n", channel);
977
978 if (channel != IDMAC_SDC_0 && channel != IDMAC_SDC_1 &&
979 channel != IDMAC_IC_7)
980 return -EINVAL;
981
982 spin_lock_irqsave(&ipu->lock, flags);
983
984 switch (channel) {
985 case IDMAC_IC_7:
986 n_desc = 16;
987 reg = idmac_read_icreg(ipu, IC_CONF);
988 idmac_write_icreg(ipu, reg & ~IC_CONF_CSI_MEM_WR_EN, IC_CONF);
989 break;
990 case IDMAC_IC_0:
991 n_desc = 16;
992 reg = idmac_read_ipureg(ipu, IPU_FS_PROC_FLOW);
993 idmac_write_ipureg(ipu, reg & ~FS_ENC_IN_VALID, IPU_FS_PROC_FLOW);
994 ret = ipu_ic_init_prpenc(ipu, params, true);
995 break;
996 case IDMAC_SDC_0:
997 case IDMAC_SDC_1:
998 n_desc = 4;
999 default:
1000 break;
1001 }
1002
1003 ipu->channel_init_mask |= 1L << channel;
1004
1005 /* Enable IPU sub module */
1006 ipu_conf = idmac_read_ipureg(ipu, IPU_CONF) |
1007 ipu_channel_conf_mask(channel);
1008 idmac_write_ipureg(ipu, ipu_conf, IPU_CONF);
1009
1010 spin_unlock_irqrestore(&ipu->lock, flags);
1011
1012 if (n_desc && !ichan->desc)
1013 ret = idmac_desc_alloc(ichan, n_desc);
1014
1015 dump_idmac_reg(ipu);
1016
1017 return ret;
1018}
1019
1020/**
1021 * ipu_uninit_channel() - uninitialize an IPU channel.
1022 * @idmac: IPU DMAC context.
1023 * @ichan: pointer to the channel object.
1024 */
1025static void ipu_uninit_channel(struct idmac *idmac, struct idmac_channel *ichan)
1026{
1027 enum ipu_channel channel = ichan->dma_chan.chan_id;
1028 unsigned long flags;
1029 uint32_t reg;
1030 unsigned long chan_mask = 1UL << channel;
1031 uint32_t ipu_conf;
1032 struct ipu *ipu = to_ipu(idmac);
1033
1034 spin_lock_irqsave(&ipu->lock, flags);
1035
1036 if (!(ipu->channel_init_mask & chan_mask)) {
1037 dev_err(ipu->dev, "Channel already uninitialized %d\n",
1038 channel);
1039 spin_unlock_irqrestore(&ipu->lock, flags);
1040 return;
1041 }
1042
1043 /* Reset the double buffer */
1044 reg = idmac_read_ipureg(ipu, IPU_CHA_DB_MODE_SEL);
1045 idmac_write_ipureg(ipu, reg & ~chan_mask, IPU_CHA_DB_MODE_SEL);
1046
1047 ichan->sec_chan_en = false;
1048
1049 switch (channel) {
1050 case IDMAC_IC_7:
1051 reg = idmac_read_icreg(ipu, IC_CONF);
1052 idmac_write_icreg(ipu, reg & ~(IC_CONF_RWS_EN | IC_CONF_PRPENC_EN),
1053 IC_CONF);
1054 break;
1055 case IDMAC_IC_0:
1056 reg = idmac_read_icreg(ipu, IC_CONF);
1057 idmac_write_icreg(ipu, reg & ~(IC_CONF_PRPENC_EN | IC_CONF_PRPENC_CSC1),
1058 IC_CONF);
1059 break;
1060 case IDMAC_SDC_0:
1061 case IDMAC_SDC_1:
1062 default:
1063 break;
1064 }
1065
1066 ipu->channel_init_mask &= ~(1L << channel);
1067
1068 ipu_conf = idmac_read_ipureg(ipu, IPU_CONF) &
1069 ~ipu_channel_conf_mask(channel);
1070 idmac_write_ipureg(ipu, ipu_conf, IPU_CONF);
1071
1072 spin_unlock_irqrestore(&ipu->lock, flags);
1073
1074 ichan->n_tx_desc = 0;
1075 vfree(ichan->desc);
1076 ichan->desc = NULL;
1077}
1078
1079/**
1080 * ipu_disable_channel() - disable an IPU channel.
1081 * @idmac: IPU DMAC context.
1082 * @ichan: channel object pointer.
1083 * @wait_for_stop: flag to set whether to wait for channel end of frame or
1084 * return immediately.
1085 * @return: 0 on success or negative error code on failure.
1086 */
1087static int ipu_disable_channel(struct idmac *idmac, struct idmac_channel *ichan,
1088 bool wait_for_stop)
1089{
1090 enum ipu_channel channel = ichan->dma_chan.chan_id;
1091 struct ipu *ipu = to_ipu(idmac);
1092 uint32_t reg;
1093 unsigned long flags;
1094 unsigned long chan_mask = 1UL << channel;
1095 unsigned int timeout;
1096
1097 if (wait_for_stop && channel != IDMAC_SDC_1 && channel != IDMAC_SDC_0) {
1098 timeout = 40;
1099 /* This waiting always fails. Related to spurious irq problem */
1100 while ((idmac_read_icreg(ipu, IDMAC_CHA_BUSY) & chan_mask) ||
1101 (ipu_channel_status(ipu, channel) == TASK_STAT_ACTIVE)) {
1102 timeout--;
1103 msleep(10);
1104
1105 if (!timeout) {
1106 dev_dbg(ipu->dev,
1107 "Warning: timeout waiting for channel %u to "
1108 "stop: buf0_rdy = 0x%08X, buf1_rdy = 0x%08X, "
1109 "busy = 0x%08X, tstat = 0x%08X\n", channel,
1110 idmac_read_ipureg(ipu, IPU_CHA_BUF0_RDY),
1111 idmac_read_ipureg(ipu, IPU_CHA_BUF1_RDY),
1112 idmac_read_icreg(ipu, IDMAC_CHA_BUSY),
1113 idmac_read_ipureg(ipu, IPU_TASKS_STAT));
1114 break;
1115 }
1116 }
1117 dev_dbg(ipu->dev, "timeout = %d * 10ms\n", 40 - timeout);
1118 }
1119 /* SDC BG and FG must be disabled before DMA is disabled */
1120 if (wait_for_stop && (channel == IDMAC_SDC_0 ||
1121 channel == IDMAC_SDC_1)) {
1122 for (timeout = 5;
1123 timeout && !ipu_irq_status(ichan->eof_irq); timeout--)
1124 msleep(5);
1125 }
1126
1127 spin_lock_irqsave(&ipu->lock, flags);
1128
1129 /* Disable IC task */
1130 ipu_ic_disable_task(ipu, channel);
1131
1132 /* Disable DMA channel(s) */
1133 reg = idmac_read_icreg(ipu, IDMAC_CHA_EN);
1134 idmac_write_icreg(ipu, reg & ~chan_mask, IDMAC_CHA_EN);
1135
1136 /*
1137 * Problem (observed with channel DMAIC_7): after enabling the channel
1138 * and initialising buffers, there comes an interrupt with current still
1139 * pointing at buffer 0, whereas it should use buffer 0 first and only
1140 * generate an interrupt when it is done, then current should already
1141 * point to buffer 1. This spurious interrupt also comes on channel
1142 * DMASDC_0. With DMAIC_7 normally, is we just leave the ISR after the
1143 * first interrupt, there comes the second with current correctly
1144 * pointing to buffer 1 this time. But sometimes this second interrupt
1145 * doesn't come and the channel hangs. Clearing BUFx_RDY when disabling
1146 * the channel seems to prevent the channel from hanging, but it doesn't
1147 * prevent the spurious interrupt. This might also be unsafe. Think
1148 * about the IDMAC controller trying to switch to a buffer, when we
1149 * clear the ready bit, and re-enable it a moment later.
1150 */
1151 reg = idmac_read_ipureg(ipu, IPU_CHA_BUF0_RDY);
1152 idmac_write_ipureg(ipu, 0, IPU_CHA_BUF0_RDY);
1153 idmac_write_ipureg(ipu, reg & ~(1UL << channel), IPU_CHA_BUF0_RDY);
1154
1155 reg = idmac_read_ipureg(ipu, IPU_CHA_BUF1_RDY);
1156 idmac_write_ipureg(ipu, 0, IPU_CHA_BUF1_RDY);
1157 idmac_write_ipureg(ipu, reg & ~(1UL << channel), IPU_CHA_BUF1_RDY);
1158
1159 spin_unlock_irqrestore(&ipu->lock, flags);
1160
1161 return 0;
1162}
1163
1164/*
1165 * We have several possibilities here:
1166 * current BUF next BUF
1167 *
1168 * not last sg next not last sg
1169 * not last sg next last sg
1170 * last sg first sg from next descriptor
1171 * last sg NULL
1172 *
1173 * Besides, the descriptor queue might be empty or not. We process all these
1174 * cases carefully.
1175 */
1176static irqreturn_t idmac_interrupt(int irq, void *dev_id)
1177{
1178 struct idmac_channel *ichan = dev_id;
1179 unsigned int chan_id = ichan->dma_chan.chan_id;
1180 struct scatterlist **sg, *sgnext, *sgnew = NULL;
1181 /* Next transfer descriptor */
1182 struct idmac_tx_desc *desc = NULL, *descnew;
1183 dma_async_tx_callback callback;
1184 void *callback_param;
1185 bool done = false;
1186 u32 ready0 = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF0_RDY),
1187 ready1 = idmac_read_ipureg(&ipu_data, IPU_CHA_BUF1_RDY),
1188 curbuf = idmac_read_ipureg(&ipu_data, IPU_CHA_CUR_BUF);
1189
1190 /* IDMAC has cleared the respective BUFx_RDY bit, we manage the buffer */
1191
1192 pr_debug("IDMAC irq %d\n", irq);
1193 /* Other interrupts do not interfere with this channel */
1194 spin_lock(&ichan->lock);
1195
1196 if (unlikely(chan_id != IDMAC_SDC_0 && chan_id != IDMAC_SDC_1 &&
1197 ((curbuf >> chan_id) & 1) == ichan->active_buffer)) {
1198 int i = 100;
1199
1200 /* This doesn't help. See comment in ipu_disable_channel() */
1201 while (--i) {
1202 curbuf = idmac_read_ipureg(&ipu_data, IPU_CHA_CUR_BUF);
1203 if (((curbuf >> chan_id) & 1) != ichan->active_buffer)
1204 break;
1205 cpu_relax();
1206 }
1207
1208 if (!i) {
1209 spin_unlock(&ichan->lock);
1210 dev_dbg(ichan->dma_chan.device->dev,
1211 "IRQ on active buffer on channel %x, active "
1212 "%d, ready %x, %x, current %x!\n", chan_id,
1213 ichan->active_buffer, ready0, ready1, curbuf);
1214 return IRQ_NONE;
1215 }
1216 }
1217
1218 if (unlikely((ichan->active_buffer && (ready1 >> chan_id) & 1) ||
1219 (!ichan->active_buffer && (ready0 >> chan_id) & 1)
1220 )) {
1221 spin_unlock(&ichan->lock);
1222 dev_dbg(ichan->dma_chan.device->dev,
1223 "IRQ with active buffer still ready on channel %x, "
1224 "active %d, ready %x, %x!\n", chan_id,
1225 ichan->active_buffer, ready0, ready1);
1226 return IRQ_NONE;
1227 }
1228
1229 if (unlikely(list_empty(&ichan->queue))) {
1230 spin_unlock(&ichan->lock);
1231 dev_err(ichan->dma_chan.device->dev,
1232 "IRQ without queued buffers on channel %x, active %d, "
1233 "ready %x, %x!\n", chan_id,
1234 ichan->active_buffer, ready0, ready1);
1235 return IRQ_NONE;
1236 }
1237
1238 /*
1239 * active_buffer is a software flag, it shows which buffer we are
1240 * currently expecting back from the hardware, IDMAC should be
1241 * processing the other buffer already
1242 */
1243 sg = &ichan->sg[ichan->active_buffer];
1244 sgnext = ichan->sg[!ichan->active_buffer];
1245
1246 /*
1247 * if sgnext == NULL sg must be the last element in a scatterlist and
1248 * queue must be empty
1249 */
1250 if (unlikely(!sgnext)) {
1251 if (unlikely(sg_next(*sg))) {
1252 dev_err(ichan->dma_chan.device->dev,
1253 "Broken buffer-update locking on channel %x!\n",
1254 chan_id);
1255 /* We'll let the user catch up */
1256 } else {
1257 /* Underrun */
1258 ipu_ic_disable_task(&ipu_data, chan_id);
1259 dev_dbg(ichan->dma_chan.device->dev,
1260 "Underrun on channel %x\n", chan_id);
1261 ichan->status = IPU_CHANNEL_READY;
1262 /* Continue to check for complete descriptor */
1263 }
1264 }
1265
1266 desc = list_entry(ichan->queue.next, struct idmac_tx_desc, list);
1267
1268 /* First calculate and submit the next sg element */
1269 if (likely(sgnext))
1270 sgnew = sg_next(sgnext);
1271
1272 if (unlikely(!sgnew)) {
1273 /* Start a new scatterlist, if any queued */
1274 if (likely(desc->list.next != &ichan->queue)) {
1275 descnew = list_entry(desc->list.next,
1276 struct idmac_tx_desc, list);
1277 sgnew = &descnew->sg[0];
1278 }
1279 }
1280
1281 if (unlikely(!sg_next(*sg)) || !sgnext) {
1282 /*
1283 * Last element in scatterlist done, remove from the queue,
1284 * _init for debugging
1285 */
1286 list_del_init(&desc->list);
1287 done = true;
1288 }
1289
1290 *sg = sgnew;
1291
1292 if (likely(sgnew)) {
1293 int ret;
1294
1295 ret = ipu_update_channel_buffer(chan_id, ichan->active_buffer,
1296 sg_dma_address(*sg));
1297 if (ret < 0)
1298 dev_err(ichan->dma_chan.device->dev,
1299 "Failed to update buffer on channel %x buffer %d!\n",
1300 chan_id, ichan->active_buffer);
1301 else
1302 ipu_select_buffer(chan_id, ichan->active_buffer);
1303 }
1304
1305 /* Flip the active buffer - even if update above failed */
1306 ichan->active_buffer = !ichan->active_buffer;
1307 if (done)
1308 ichan->completed = desc->txd.cookie;
1309
1310 callback = desc->txd.callback;
1311 callback_param = desc->txd.callback_param;
1312
1313 spin_unlock(&ichan->lock);
1314
1315 if (done && (desc->txd.flags & DMA_PREP_INTERRUPT) && callback)
1316 callback(callback_param);
1317
1318 return IRQ_HANDLED;
1319}
1320
1321static void ipu_gc_tasklet(unsigned long arg)
1322{
1323 struct ipu *ipu = (struct ipu *)arg;
1324 int i;
1325
1326 for (i = 0; i < IPU_CHANNELS_NUM; i++) {
1327 struct idmac_channel *ichan = ipu->channel + i;
1328 struct idmac_tx_desc *desc;
1329 unsigned long flags;
1330 int j;
1331
1332 for (j = 0; j < ichan->n_tx_desc; j++) {
1333 desc = ichan->desc + j;
1334 spin_lock_irqsave(&ichan->lock, flags);
1335 if (async_tx_test_ack(&desc->txd)) {
1336 list_move(&desc->list, &ichan->free_list);
1337 async_tx_clear_ack(&desc->txd);
1338 }
1339 spin_unlock_irqrestore(&ichan->lock, flags);
1340 }
1341 }
1342}
1343
1344/*
1345 * At the time .device_alloc_chan_resources() method is called, we cannot know,
1346 * whether the client will accept the channel. Thus we must only check, if we
1347 * can satisfy client's request but the only real criterion to verify, whether
1348 * the client has accepted our offer is the client_count. That's why we have to
1349 * perform the rest of our allocation tasks on the first call to this function.
1350 */
1351static struct dma_async_tx_descriptor *idmac_prep_slave_sg(struct dma_chan *chan,
1352 struct scatterlist *sgl, unsigned int sg_len,
1353 enum dma_data_direction direction, unsigned long tx_flags)
1354{
1355 struct idmac_channel *ichan = to_idmac_chan(chan);
1356 struct idmac_tx_desc *desc = NULL;
1357 struct dma_async_tx_descriptor *txd = NULL;
1358 unsigned long flags;
1359
1360 /* We only can handle these three channels so far */
1361 if (ichan->dma_chan.chan_id != IDMAC_SDC_0 && ichan->dma_chan.chan_id != IDMAC_SDC_1 &&
1362 ichan->dma_chan.chan_id != IDMAC_IC_7)
1363 return NULL;
1364
1365 if (direction != DMA_FROM_DEVICE && direction != DMA_TO_DEVICE) {
1366 dev_err(chan->device->dev, "Invalid DMA direction %d!\n", direction);
1367 return NULL;
1368 }
1369
1370 mutex_lock(&ichan->chan_mutex);
1371
1372 spin_lock_irqsave(&ichan->lock, flags);
1373 if (!list_empty(&ichan->free_list)) {
1374 desc = list_entry(ichan->free_list.next,
1375 struct idmac_tx_desc, list);
1376
1377 list_del_init(&desc->list);
1378
1379 desc->sg_len = sg_len;
1380 desc->sg = sgl;
1381 txd = &desc->txd;
1382 txd->flags = tx_flags;
1383 }
1384 spin_unlock_irqrestore(&ichan->lock, flags);
1385
1386 mutex_unlock(&ichan->chan_mutex);
1387
1388 tasklet_schedule(&to_ipu(to_idmac(chan->device))->tasklet);
1389
1390 return txd;
1391}
1392
1393/* Re-select the current buffer and re-activate the channel */
1394static void idmac_issue_pending(struct dma_chan *chan)
1395{
1396 struct idmac_channel *ichan = to_idmac_chan(chan);
1397 struct idmac *idmac = to_idmac(chan->device);
1398 struct ipu *ipu = to_ipu(idmac);
1399 unsigned long flags;
1400
1401 /* This is not always needed, but doesn't hurt either */
1402 spin_lock_irqsave(&ipu->lock, flags);
1403 ipu_select_buffer(ichan->dma_chan.chan_id, ichan->active_buffer);
1404 spin_unlock_irqrestore(&ipu->lock, flags);
1405
1406 /*
1407 * Might need to perform some parts of initialisation from
1408 * ipu_enable_channel(), but not all, we do not want to reset to buffer
1409 * 0, don't need to set priority again either, but re-enabling the task
1410 * and the channel might be a good idea.
1411 */
1412}
1413
1414static void __idmac_terminate_all(struct dma_chan *chan)
1415{
1416 struct idmac_channel *ichan = to_idmac_chan(chan);
1417 struct idmac *idmac = to_idmac(chan->device);
1418 unsigned long flags;
1419 int i;
1420
1421 ipu_disable_channel(idmac, ichan,
1422 ichan->status >= IPU_CHANNEL_ENABLED);
1423
1424 tasklet_disable(&to_ipu(idmac)->tasklet);
1425
1426 /* ichan->queue is modified in ISR, have to spinlock */
1427 spin_lock_irqsave(&ichan->lock, flags);
1428 list_splice_init(&ichan->queue, &ichan->free_list);
1429
1430 if (ichan->desc)
1431 for (i = 0; i < ichan->n_tx_desc; i++) {
1432 struct idmac_tx_desc *desc = ichan->desc + i;
1433 if (list_empty(&desc->list))
1434 /* Descriptor was prepared, but not submitted */
1435 list_add(&desc->list,
1436 &ichan->free_list);
1437
1438 async_tx_clear_ack(&desc->txd);
1439 }
1440
1441 ichan->sg[0] = NULL;
1442 ichan->sg[1] = NULL;
1443 spin_unlock_irqrestore(&ichan->lock, flags);
1444
1445 tasklet_enable(&to_ipu(idmac)->tasklet);
1446
1447 ichan->status = IPU_CHANNEL_INITIALIZED;
1448}
1449
1450static void idmac_terminate_all(struct dma_chan *chan)
1451{
1452 struct idmac_channel *ichan = to_idmac_chan(chan);
1453
1454 mutex_lock(&ichan->chan_mutex);
1455
1456 __idmac_terminate_all(chan);
1457
1458 mutex_unlock(&ichan->chan_mutex);
1459}
1460
1461static int idmac_alloc_chan_resources(struct dma_chan *chan)
1462{
1463 struct idmac_channel *ichan = to_idmac_chan(chan);
1464 struct idmac *idmac = to_idmac(chan->device);
1465 int ret;
1466
1467 /* dmaengine.c now guarantees to only offer free channels */
1468 BUG_ON(chan->client_count > 1);
1469 WARN_ON(ichan->status != IPU_CHANNEL_FREE);
1470
1471 chan->cookie = 1;
1472 ichan->completed = -ENXIO;
1473
1474 ret = ipu_irq_map(ichan->dma_chan.chan_id);
1475 if (ret < 0)
1476 goto eimap;
1477
1478 ichan->eof_irq = ret;
1479 ret = request_irq(ichan->eof_irq, idmac_interrupt, 0,
1480 ichan->eof_name, ichan);
1481 if (ret < 0)
1482 goto erirq;
1483
1484 ret = ipu_init_channel(idmac, ichan);
1485 if (ret < 0)
1486 goto eichan;
1487
1488 ichan->status = IPU_CHANNEL_INITIALIZED;
1489
1490 dev_dbg(&ichan->dma_chan.dev->device, "Found channel 0x%x, irq %d\n",
1491 ichan->dma_chan.chan_id, ichan->eof_irq);
1492
1493 return ret;
1494
1495eichan:
1496 free_irq(ichan->eof_irq, ichan);
1497erirq:
1498 ipu_irq_unmap(ichan->dma_chan.chan_id);
1499eimap:
1500 return ret;
1501}
1502
1503static void idmac_free_chan_resources(struct dma_chan *chan)
1504{
1505 struct idmac_channel *ichan = to_idmac_chan(chan);
1506 struct idmac *idmac = to_idmac(chan->device);
1507
1508 mutex_lock(&ichan->chan_mutex);
1509
1510 __idmac_terminate_all(chan);
1511
1512 if (ichan->status > IPU_CHANNEL_FREE) {
1513 free_irq(ichan->eof_irq, ichan);
1514 ipu_irq_unmap(ichan->dma_chan.chan_id);
1515 }
1516
1517 ichan->status = IPU_CHANNEL_FREE;
1518
1519 ipu_uninit_channel(idmac, ichan);
1520
1521 mutex_unlock(&ichan->chan_mutex);
1522
1523 tasklet_schedule(&to_ipu(idmac)->tasklet);
1524}
1525
1526static enum dma_status idmac_is_tx_complete(struct dma_chan *chan,
1527 dma_cookie_t cookie, dma_cookie_t *done, dma_cookie_t *used)
1528{
1529 struct idmac_channel *ichan = to_idmac_chan(chan);
1530
1531 if (done)
1532 *done = ichan->completed;
1533 if (used)
1534 *used = chan->cookie;
1535 if (cookie != chan->cookie)
1536 return DMA_ERROR;
1537 return DMA_SUCCESS;
1538}
1539
1540static int __init ipu_idmac_init(struct ipu *ipu)
1541{
1542 struct idmac *idmac = &ipu->idmac;
1543 struct dma_device *dma = &idmac->dma;
1544 int i;
1545
1546 dma_cap_set(DMA_SLAVE, dma->cap_mask);
1547 dma_cap_set(DMA_PRIVATE, dma->cap_mask);
1548
1549 /* Compulsory common fields */
1550 dma->dev = ipu->dev;
1551 dma->device_alloc_chan_resources = idmac_alloc_chan_resources;
1552 dma->device_free_chan_resources = idmac_free_chan_resources;
1553 dma->device_is_tx_complete = idmac_is_tx_complete;
1554 dma->device_issue_pending = idmac_issue_pending;
1555
1556 /* Compulsory for DMA_SLAVE fields */
1557 dma->device_prep_slave_sg = idmac_prep_slave_sg;
1558 dma->device_terminate_all = idmac_terminate_all;
1559
1560 INIT_LIST_HEAD(&dma->channels);
1561 for (i = 0; i < IPU_CHANNELS_NUM; i++) {
1562 struct idmac_channel *ichan = ipu->channel + i;
1563 struct dma_chan *dma_chan = &ichan->dma_chan;
1564
1565 spin_lock_init(&ichan->lock);
1566 mutex_init(&ichan->chan_mutex);
1567
1568 ichan->status = IPU_CHANNEL_FREE;
1569 ichan->sec_chan_en = false;
1570 ichan->completed = -ENXIO;
1571 snprintf(ichan->eof_name, sizeof(ichan->eof_name), "IDMAC EOF %d", i);
1572
1573 dma_chan->device = &idmac->dma;
1574 dma_chan->cookie = 1;
1575 dma_chan->chan_id = i;
1576 list_add_tail(&ichan->dma_chan.device_node, &dma->channels);
1577 }
1578
1579 idmac_write_icreg(ipu, 0x00000070, IDMAC_CONF);
1580
1581 return dma_async_device_register(&idmac->dma);
1582}
1583
1584static void ipu_idmac_exit(struct ipu *ipu)
1585{
1586 int i;
1587 struct idmac *idmac = &ipu->idmac;
1588
1589 for (i = 0; i < IPU_CHANNELS_NUM; i++) {
1590 struct idmac_channel *ichan = ipu->channel + i;
1591
1592 idmac_terminate_all(&ichan->dma_chan);
1593 idmac_prep_slave_sg(&ichan->dma_chan, NULL, 0, DMA_NONE, 0);
1594 }
1595
1596 dma_async_device_unregister(&idmac->dma);
1597}
1598
1599/*****************************************************************************
1600 * IPU common probe / remove
1601 */
1602
1603static int ipu_probe(struct platform_device *pdev)
1604{
1605 struct ipu_platform_data *pdata = pdev->dev.platform_data;
1606 struct resource *mem_ipu, *mem_ic;
1607 int ret;
1608
1609 spin_lock_init(&ipu_data.lock);
1610
1611 mem_ipu = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1612 mem_ic = platform_get_resource(pdev, IORESOURCE_MEM, 1);
1613 if (!pdata || !mem_ipu || !mem_ic)
1614 return -EINVAL;
1615
1616 ipu_data.dev = &pdev->dev;
1617
1618 platform_set_drvdata(pdev, &ipu_data);
1619
1620 ret = platform_get_irq(pdev, 0);
1621 if (ret < 0)
1622 goto err_noirq;
1623
1624 ipu_data.irq_fn = ret;
1625 ret = platform_get_irq(pdev, 1);
1626 if (ret < 0)
1627 goto err_noirq;
1628
1629 ipu_data.irq_err = ret;
1630 ipu_data.irq_base = pdata->irq_base;
1631
1632 dev_dbg(&pdev->dev, "fn irq %u, err irq %u, irq-base %u\n",
1633 ipu_data.irq_fn, ipu_data.irq_err, ipu_data.irq_base);
1634
1635 /* Remap IPU common registers */
1636 ipu_data.reg_ipu = ioremap(mem_ipu->start,
1637 mem_ipu->end - mem_ipu->start + 1);
1638 if (!ipu_data.reg_ipu) {
1639 ret = -ENOMEM;
1640 goto err_ioremap_ipu;
1641 }
1642
1643 /* Remap Image Converter and Image DMA Controller registers */
1644 ipu_data.reg_ic = ioremap(mem_ic->start,
1645 mem_ic->end - mem_ic->start + 1);
1646 if (!ipu_data.reg_ic) {
1647 ret = -ENOMEM;
1648 goto err_ioremap_ic;
1649 }
1650
1651 /* Get IPU clock */
1652 ipu_data.ipu_clk = clk_get(&pdev->dev, "ipu_clk");
1653 if (IS_ERR(ipu_data.ipu_clk)) {
1654 ret = PTR_ERR(ipu_data.ipu_clk);
1655 goto err_clk_get;
1656 }
1657
1658 /* Make sure IPU HSP clock is running */
1659 clk_enable(ipu_data.ipu_clk);
1660
1661 /* Disable all interrupts */
1662 idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_1);
1663 idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_2);
1664 idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_3);
1665 idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_4);
1666 idmac_write_ipureg(&ipu_data, 0, IPU_INT_CTRL_5);
1667
1668 dev_dbg(&pdev->dev, "%s @ 0x%08lx, fn irq %u, err irq %u\n", pdev->name,
1669 (unsigned long)mem_ipu->start, ipu_data.irq_fn, ipu_data.irq_err);
1670
1671 ret = ipu_irq_attach_irq(&ipu_data, pdev);
1672 if (ret < 0)
1673 goto err_attach_irq;
1674
1675 /* Initialize DMA engine */
1676 ret = ipu_idmac_init(&ipu_data);
1677 if (ret < 0)
1678 goto err_idmac_init;
1679
1680 tasklet_init(&ipu_data.tasklet, ipu_gc_tasklet, (unsigned long)&ipu_data);
1681
1682 ipu_data.dev = &pdev->dev;
1683
1684 dev_dbg(ipu_data.dev, "IPU initialized\n");
1685
1686 return 0;
1687
1688err_idmac_init:
1689err_attach_irq:
1690 ipu_irq_detach_irq(&ipu_data, pdev);
1691 clk_disable(ipu_data.ipu_clk);
1692 clk_put(ipu_data.ipu_clk);
1693err_clk_get:
1694 iounmap(ipu_data.reg_ic);
1695err_ioremap_ic:
1696 iounmap(ipu_data.reg_ipu);
1697err_ioremap_ipu:
1698err_noirq:
1699 dev_err(&pdev->dev, "Failed to probe IPU: %d\n", ret);
1700 return ret;
1701}
1702
1703static int ipu_remove(struct platform_device *pdev)
1704{
1705 struct ipu *ipu = platform_get_drvdata(pdev);
1706
1707 ipu_idmac_exit(ipu);
1708 ipu_irq_detach_irq(ipu, pdev);
1709 clk_disable(ipu->ipu_clk);
1710 clk_put(ipu->ipu_clk);
1711 iounmap(ipu->reg_ic);
1712 iounmap(ipu->reg_ipu);
1713 tasklet_kill(&ipu->tasklet);
1714 platform_set_drvdata(pdev, NULL);
1715
1716 return 0;
1717}
1718
1719/*
1720 * We need two MEM resources - with IPU-common and Image Converter registers,
1721 * including PF_CONF and IDMAC_* registers, and two IRQs - function and error
1722 */
1723static struct platform_driver ipu_platform_driver = {
1724 .driver = {
1725 .name = "ipu-core",
1726 .owner = THIS_MODULE,
1727 },
1728 .remove = ipu_remove,
1729};
1730
1731static int __init ipu_init(void)
1732{
1733 return platform_driver_probe(&ipu_platform_driver, ipu_probe);
1734}
1735subsys_initcall(ipu_init);
1736
1737MODULE_DESCRIPTION("IPU core driver");
1738MODULE_LICENSE("GPL v2");
1739MODULE_AUTHOR("Guennadi Liakhovetski <lg@denx.de>");
1740MODULE_ALIAS("platform:ipu-core");
diff --git a/drivers/dma/ipu/ipu_intern.h b/drivers/dma/ipu/ipu_intern.h
new file mode 100644
index 000000000000..545cf11a94ab
--- /dev/null
+++ b/drivers/dma/ipu/ipu_intern.h
@@ -0,0 +1,176 @@
1/*
2 * Copyright (C) 2008
3 * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de>
4 *
5 * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#ifndef _IPU_INTERN_H_
13#define _IPU_INTERN_H_
14
15#include <linux/dmaengine.h>
16#include <linux/platform_device.h>
17#include <linux/interrupt.h>
18
19/* IPU Common registers */
20#define IPU_CONF 0x00
21#define IPU_CHA_BUF0_RDY 0x04
22#define IPU_CHA_BUF1_RDY 0x08
23#define IPU_CHA_DB_MODE_SEL 0x0C
24#define IPU_CHA_CUR_BUF 0x10
25#define IPU_FS_PROC_FLOW 0x14
26#define IPU_FS_DISP_FLOW 0x18
27#define IPU_TASKS_STAT 0x1C
28#define IPU_IMA_ADDR 0x20
29#define IPU_IMA_DATA 0x24
30#define IPU_INT_CTRL_1 0x28
31#define IPU_INT_CTRL_2 0x2C
32#define IPU_INT_CTRL_3 0x30
33#define IPU_INT_CTRL_4 0x34
34#define IPU_INT_CTRL_5 0x38
35#define IPU_INT_STAT_1 0x3C
36#define IPU_INT_STAT_2 0x40
37#define IPU_INT_STAT_3 0x44
38#define IPU_INT_STAT_4 0x48
39#define IPU_INT_STAT_5 0x4C
40#define IPU_BRK_CTRL_1 0x50
41#define IPU_BRK_CTRL_2 0x54
42#define IPU_BRK_STAT 0x58
43#define IPU_DIAGB_CTRL 0x5C
44
45/* IPU_CONF Register bits */
46#define IPU_CONF_CSI_EN 0x00000001
47#define IPU_CONF_IC_EN 0x00000002
48#define IPU_CONF_ROT_EN 0x00000004
49#define IPU_CONF_PF_EN 0x00000008
50#define IPU_CONF_SDC_EN 0x00000010
51#define IPU_CONF_ADC_EN 0x00000020
52#define IPU_CONF_DI_EN 0x00000040
53#define IPU_CONF_DU_EN 0x00000080
54#define IPU_CONF_PXL_ENDIAN 0x00000100
55
56/* Image Converter Registers */
57#define IC_CONF 0x88
58#define IC_PRP_ENC_RSC 0x8C
59#define IC_PRP_VF_RSC 0x90
60#define IC_PP_RSC 0x94
61#define IC_CMBP_1 0x98
62#define IC_CMBP_2 0x9C
63#define PF_CONF 0xA0
64#define IDMAC_CONF 0xA4
65#define IDMAC_CHA_EN 0xA8
66#define IDMAC_CHA_PRI 0xAC
67#define IDMAC_CHA_BUSY 0xB0
68
69/* Image Converter Register bits */
70#define IC_CONF_PRPENC_EN 0x00000001
71#define IC_CONF_PRPENC_CSC1 0x00000002
72#define IC_CONF_PRPENC_ROT_EN 0x00000004
73#define IC_CONF_PRPVF_EN 0x00000100
74#define IC_CONF_PRPVF_CSC1 0x00000200
75#define IC_CONF_PRPVF_CSC2 0x00000400
76#define IC_CONF_PRPVF_CMB 0x00000800
77#define IC_CONF_PRPVF_ROT_EN 0x00001000
78#define IC_CONF_PP_EN 0x00010000
79#define IC_CONF_PP_CSC1 0x00020000
80#define IC_CONF_PP_CSC2 0x00040000
81#define IC_CONF_PP_CMB 0x00080000
82#define IC_CONF_PP_ROT_EN 0x00100000
83#define IC_CONF_IC_GLB_LOC_A 0x10000000
84#define IC_CONF_KEY_COLOR_EN 0x20000000
85#define IC_CONF_RWS_EN 0x40000000
86#define IC_CONF_CSI_MEM_WR_EN 0x80000000
87
88#define IDMA_CHAN_INVALID 0x000000FF
89#define IDMA_IC_0 0x00000001
90#define IDMA_IC_1 0x00000002
91#define IDMA_IC_2 0x00000004
92#define IDMA_IC_3 0x00000008
93#define IDMA_IC_4 0x00000010
94#define IDMA_IC_5 0x00000020
95#define IDMA_IC_6 0x00000040
96#define IDMA_IC_7 0x00000080
97#define IDMA_IC_8 0x00000100
98#define IDMA_IC_9 0x00000200
99#define IDMA_IC_10 0x00000400
100#define IDMA_IC_11 0x00000800
101#define IDMA_IC_12 0x00001000
102#define IDMA_IC_13 0x00002000
103#define IDMA_SDC_BG 0x00004000
104#define IDMA_SDC_FG 0x00008000
105#define IDMA_SDC_MASK 0x00010000
106#define IDMA_SDC_PARTIAL 0x00020000
107#define IDMA_ADC_SYS1_WR 0x00040000
108#define IDMA_ADC_SYS2_WR 0x00080000
109#define IDMA_ADC_SYS1_CMD 0x00100000
110#define IDMA_ADC_SYS2_CMD 0x00200000
111#define IDMA_ADC_SYS1_RD 0x00400000
112#define IDMA_ADC_SYS2_RD 0x00800000
113#define IDMA_PF_QP 0x01000000
114#define IDMA_PF_BSP 0x02000000
115#define IDMA_PF_Y_IN 0x04000000
116#define IDMA_PF_U_IN 0x08000000
117#define IDMA_PF_V_IN 0x10000000
118#define IDMA_PF_Y_OUT 0x20000000
119#define IDMA_PF_U_OUT 0x40000000
120#define IDMA_PF_V_OUT 0x80000000
121
122#define TSTAT_PF_H264_PAUSE 0x00000001
123#define TSTAT_CSI2MEM_MASK 0x0000000C
124#define TSTAT_CSI2MEM_OFFSET 2
125#define TSTAT_VF_MASK 0x00000600
126#define TSTAT_VF_OFFSET 9
127#define TSTAT_VF_ROT_MASK 0x000C0000
128#define TSTAT_VF_ROT_OFFSET 18
129#define TSTAT_ENC_MASK 0x00000180
130#define TSTAT_ENC_OFFSET 7
131#define TSTAT_ENC_ROT_MASK 0x00030000
132#define TSTAT_ENC_ROT_OFFSET 16
133#define TSTAT_PP_MASK 0x00001800
134#define TSTAT_PP_OFFSET 11
135#define TSTAT_PP_ROT_MASK 0x00300000
136#define TSTAT_PP_ROT_OFFSET 20
137#define TSTAT_PF_MASK 0x00C00000
138#define TSTAT_PF_OFFSET 22
139#define TSTAT_ADCSYS1_MASK 0x03000000
140#define TSTAT_ADCSYS1_OFFSET 24
141#define TSTAT_ADCSYS2_MASK 0x0C000000
142#define TSTAT_ADCSYS2_OFFSET 26
143
144#define TASK_STAT_IDLE 0
145#define TASK_STAT_ACTIVE 1
146#define TASK_STAT_WAIT4READY 2
147
148struct idmac {
149 struct dma_device dma;
150};
151
152struct ipu {
153 void __iomem *reg_ipu;
154 void __iomem *reg_ic;
155 unsigned int irq_fn; /* IPU Function IRQ to the CPU */
156 unsigned int irq_err; /* IPU Error IRQ to the CPU */
157 unsigned int irq_base; /* Beginning of the IPU IRQ range */
158 unsigned long channel_init_mask;
159 spinlock_t lock;
160 struct clk *ipu_clk;
161 struct device *dev;
162 struct idmac idmac;
163 struct idmac_channel channel[IPU_CHANNELS_NUM];
164 struct tasklet_struct tasklet;
165};
166
167#define to_idmac(d) container_of(d, struct idmac, dma)
168
169extern int ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev);
170extern void ipu_irq_detach_irq(struct ipu *ipu, struct platform_device *dev);
171
172extern bool ipu_irq_status(uint32_t irq);
173extern int ipu_irq_map(unsigned int source);
174extern int ipu_irq_unmap(unsigned int source);
175
176#endif
diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c
new file mode 100644
index 000000000000..83f532cc767f
--- /dev/null
+++ b/drivers/dma/ipu/ipu_irq.c
@@ -0,0 +1,413 @@
1/*
2 * Copyright (C) 2008
3 * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9
10#include <linux/init.h>
11#include <linux/err.h>
12#include <linux/spinlock.h>
13#include <linux/delay.h>
14#include <linux/clk.h>
15#include <linux/irq.h>
16#include <linux/io.h>
17
18#include <mach/ipu.h>
19
20#include "ipu_intern.h"
21
22/*
23 * Register read / write - shall be inlined by the compiler
24 */
25static u32 ipu_read_reg(struct ipu *ipu, unsigned long reg)
26{
27 return __raw_readl(ipu->reg_ipu + reg);
28}
29
30static void ipu_write_reg(struct ipu *ipu, u32 value, unsigned long reg)
31{
32 __raw_writel(value, ipu->reg_ipu + reg);
33}
34
35
36/*
37 * IPU IRQ chip driver
38 */
39
40#define IPU_IRQ_NR_FN_BANKS 3
41#define IPU_IRQ_NR_ERR_BANKS 2
42#define IPU_IRQ_NR_BANKS (IPU_IRQ_NR_FN_BANKS + IPU_IRQ_NR_ERR_BANKS)
43
44struct ipu_irq_bank {
45 unsigned int control;
46 unsigned int status;
47 spinlock_t lock;
48 struct ipu *ipu;
49};
50
51static struct ipu_irq_bank irq_bank[IPU_IRQ_NR_BANKS] = {
52 /* 3 groups of functional interrupts */
53 {
54 .control = IPU_INT_CTRL_1,
55 .status = IPU_INT_STAT_1,
56 }, {
57 .control = IPU_INT_CTRL_2,
58 .status = IPU_INT_STAT_2,
59 }, {
60 .control = IPU_INT_CTRL_3,
61 .status = IPU_INT_STAT_3,
62 },
63 /* 2 groups of error interrupts */
64 {
65 .control = IPU_INT_CTRL_4,
66 .status = IPU_INT_STAT_4,
67 }, {
68 .control = IPU_INT_CTRL_5,
69 .status = IPU_INT_STAT_5,
70 },
71};
72
73struct ipu_irq_map {
74 unsigned int irq;
75 int source;
76 struct ipu_irq_bank *bank;
77 struct ipu *ipu;
78};
79
80static struct ipu_irq_map irq_map[CONFIG_MX3_IPU_IRQS];
81/* Protects allocations from the above array of maps */
82static DEFINE_MUTEX(map_lock);
83/* Protects register accesses and individual mappings */
84static DEFINE_SPINLOCK(bank_lock);
85
86static struct ipu_irq_map *src2map(unsigned int src)
87{
88 int i;
89
90 for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++)
91 if (irq_map[i].source == src)
92 return irq_map + i;
93
94 return NULL;
95}
96
97static void ipu_irq_unmask(unsigned int irq)
98{
99 struct ipu_irq_map *map = get_irq_chip_data(irq);
100 struct ipu_irq_bank *bank;
101 uint32_t reg;
102 unsigned long lock_flags;
103
104 spin_lock_irqsave(&bank_lock, lock_flags);
105
106 bank = map->bank;
107 if (!bank) {
108 spin_unlock_irqrestore(&bank_lock, lock_flags);
109 pr_err("IPU: %s(%u) - unmapped!\n", __func__, irq);
110 return;
111 }
112
113 reg = ipu_read_reg(bank->ipu, bank->control);
114 reg |= (1UL << (map->source & 31));
115 ipu_write_reg(bank->ipu, reg, bank->control);
116
117 spin_unlock_irqrestore(&bank_lock, lock_flags);
118}
119
120static void ipu_irq_mask(unsigned int irq)
121{
122 struct ipu_irq_map *map = get_irq_chip_data(irq);
123 struct ipu_irq_bank *bank;
124 uint32_t reg;
125 unsigned long lock_flags;
126
127 spin_lock_irqsave(&bank_lock, lock_flags);
128
129 bank = map->bank;
130 if (!bank) {
131 spin_unlock_irqrestore(&bank_lock, lock_flags);
132 pr_err("IPU: %s(%u) - unmapped!\n", __func__, irq);
133 return;
134 }
135
136 reg = ipu_read_reg(bank->ipu, bank->control);
137 reg &= ~(1UL << (map->source & 31));
138 ipu_write_reg(bank->ipu, reg, bank->control);
139
140 spin_unlock_irqrestore(&bank_lock, lock_flags);
141}
142
143static void ipu_irq_ack(unsigned int irq)
144{
145 struct ipu_irq_map *map = get_irq_chip_data(irq);
146 struct ipu_irq_bank *bank;
147 unsigned long lock_flags;
148
149 spin_lock_irqsave(&bank_lock, lock_flags);
150
151 bank = map->bank;
152 if (!bank) {
153 spin_unlock_irqrestore(&bank_lock, lock_flags);
154 pr_err("IPU: %s(%u) - unmapped!\n", __func__, irq);
155 return;
156 }
157
158 ipu_write_reg(bank->ipu, 1UL << (map->source & 31), bank->status);
159 spin_unlock_irqrestore(&bank_lock, lock_flags);
160}
161
162/**
163 * ipu_irq_status() - returns the current interrupt status of the specified IRQ.
164 * @irq: interrupt line to get status for.
165 * @return: true if the interrupt is pending/asserted or false if the
166 * interrupt is not pending.
167 */
168bool ipu_irq_status(unsigned int irq)
169{
170 struct ipu_irq_map *map = get_irq_chip_data(irq);
171 struct ipu_irq_bank *bank;
172 unsigned long lock_flags;
173 bool ret;
174
175 spin_lock_irqsave(&bank_lock, lock_flags);
176 bank = map->bank;
177 ret = bank && ipu_read_reg(bank->ipu, bank->status) &
178 (1UL << (map->source & 31));
179 spin_unlock_irqrestore(&bank_lock, lock_flags);
180
181 return ret;
182}
183
184/**
185 * ipu_irq_map() - map an IPU interrupt source to an IRQ number
186 * @source: interrupt source bit position (see below)
187 * @return: mapped IRQ number or negative error code
188 *
189 * The source parameter has to be explained further. On i.MX31 IPU has 137 IRQ
190 * sources, they are broken down in 5 32-bit registers, like 32, 32, 24, 32, 17.
191 * However, the source argument of this function is not the sequence number of
192 * the possible IRQ, but rather its bit position. So, first interrupt in fourth
193 * register has source number 96, and not 88. This makes calculations easier,
194 * and also provides forward compatibility with any future IPU implementations
195 * with any interrupt bit assignments.
196 */
197int ipu_irq_map(unsigned int source)
198{
199 int i, ret = -ENOMEM;
200 struct ipu_irq_map *map;
201
202 might_sleep();
203
204 mutex_lock(&map_lock);
205 map = src2map(source);
206 if (map) {
207 pr_err("IPU: Source %u already mapped to IRQ %u\n", source, map->irq);
208 ret = -EBUSY;
209 goto out;
210 }
211
212 for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++) {
213 if (irq_map[i].source < 0) {
214 unsigned long lock_flags;
215
216 spin_lock_irqsave(&bank_lock, lock_flags);
217 irq_map[i].source = source;
218 irq_map[i].bank = irq_bank + source / 32;
219 spin_unlock_irqrestore(&bank_lock, lock_flags);
220
221 ret = irq_map[i].irq;
222 pr_debug("IPU: mapped source %u to IRQ %u\n",
223 source, ret);
224 break;
225 }
226 }
227out:
228 mutex_unlock(&map_lock);
229
230 if (ret < 0)
231 pr_err("IPU: couldn't map source %u: %d\n", source, ret);
232
233 return ret;
234}
235
236/**
237 * ipu_irq_map() - map an IPU interrupt source to an IRQ number
238 * @source: interrupt source bit position (see ipu_irq_map())
239 * @return: 0 or negative error code
240 */
241int ipu_irq_unmap(unsigned int source)
242{
243 int i, ret = -EINVAL;
244
245 might_sleep();
246
247 mutex_lock(&map_lock);
248 for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++) {
249 if (irq_map[i].source == source) {
250 unsigned long lock_flags;
251
252 pr_debug("IPU: unmapped source %u from IRQ %u\n",
253 source, irq_map[i].irq);
254
255 spin_lock_irqsave(&bank_lock, lock_flags);
256 irq_map[i].source = -EINVAL;
257 irq_map[i].bank = NULL;
258 spin_unlock_irqrestore(&bank_lock, lock_flags);
259
260 ret = 0;
261 break;
262 }
263 }
264 mutex_unlock(&map_lock);
265
266 return ret;
267}
268
269/* Chained IRQ handler for IPU error interrupt */
270static void ipu_irq_err(unsigned int irq, struct irq_desc *desc)
271{
272 struct ipu *ipu = get_irq_data(irq);
273 u32 status;
274 int i, line;
275
276 for (i = IPU_IRQ_NR_FN_BANKS; i < IPU_IRQ_NR_BANKS; i++) {
277 struct ipu_irq_bank *bank = irq_bank + i;
278
279 spin_lock(&bank_lock);
280 status = ipu_read_reg(ipu, bank->status);
281 /*
282 * Don't think we have to clear all interrupts here, they will
283 * be acked by ->handle_irq() (handle_level_irq). However, we
284 * might want to clear unhandled interrupts after the loop...
285 */
286 status &= ipu_read_reg(ipu, bank->control);
287 spin_unlock(&bank_lock);
288 while ((line = ffs(status))) {
289 struct ipu_irq_map *map;
290
291 line--;
292 status &= ~(1UL << line);
293
294 spin_lock(&bank_lock);
295 map = src2map(32 * i + line);
296 if (map)
297 irq = map->irq;
298 spin_unlock(&bank_lock);
299
300 if (!map) {
301 pr_err("IPU: Interrupt on unmapped source %u bank %d\n",
302 line, i);
303 continue;
304 }
305 generic_handle_irq(irq);
306 }
307 }
308}
309
310/* Chained IRQ handler for IPU function interrupt */
311static void ipu_irq_fn(unsigned int irq, struct irq_desc *desc)
312{
313 struct ipu *ipu = get_irq_data(irq);
314 u32 status;
315 int i, line;
316
317 for (i = 0; i < IPU_IRQ_NR_FN_BANKS; i++) {
318 struct ipu_irq_bank *bank = irq_bank + i;
319
320 spin_lock(&bank_lock);
321 status = ipu_read_reg(ipu, bank->status);
322 /* Not clearing all interrupts, see above */
323 status &= ipu_read_reg(ipu, bank->control);
324 spin_unlock(&bank_lock);
325 while ((line = ffs(status))) {
326 struct ipu_irq_map *map;
327
328 line--;
329 status &= ~(1UL << line);
330
331 spin_lock(&bank_lock);
332 map = src2map(32 * i + line);
333 if (map)
334 irq = map->irq;
335 spin_unlock(&bank_lock);
336
337 if (!map) {
338 pr_err("IPU: Interrupt on unmapped source %u bank %d\n",
339 line, i);
340 continue;
341 }
342 generic_handle_irq(irq);
343 }
344 }
345}
346
347static struct irq_chip ipu_irq_chip = {
348 .name = "ipu_irq",
349 .ack = ipu_irq_ack,
350 .mask = ipu_irq_mask,
351 .unmask = ipu_irq_unmask,
352};
353
354/* Install the IRQ handler */
355int ipu_irq_attach_irq(struct ipu *ipu, struct platform_device *dev)
356{
357 struct ipu_platform_data *pdata = dev->dev.platform_data;
358 unsigned int irq, irq_base, i;
359
360 irq_base = pdata->irq_base;
361
362 for (i = 0; i < IPU_IRQ_NR_BANKS; i++)
363 irq_bank[i].ipu = ipu;
364
365 for (i = 0; i < CONFIG_MX3_IPU_IRQS; i++) {
366 int ret;
367
368 irq = irq_base + i;
369 ret = set_irq_chip(irq, &ipu_irq_chip);
370 if (ret < 0)
371 return ret;
372 ret = set_irq_chip_data(irq, irq_map + i);
373 if (ret < 0)
374 return ret;
375 irq_map[i].ipu = ipu;
376 irq_map[i].irq = irq;
377 irq_map[i].source = -EINVAL;
378 set_irq_handler(irq, handle_level_irq);
379#ifdef CONFIG_ARM
380 set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
381#endif
382 }
383
384 set_irq_data(ipu->irq_fn, ipu);
385 set_irq_chained_handler(ipu->irq_fn, ipu_irq_fn);
386
387 set_irq_data(ipu->irq_err, ipu);
388 set_irq_chained_handler(ipu->irq_err, ipu_irq_err);
389
390 return 0;
391}
392
393void ipu_irq_detach_irq(struct ipu *ipu, struct platform_device *dev)
394{
395 struct ipu_platform_data *pdata = dev->dev.platform_data;
396 unsigned int irq, irq_base;
397
398 irq_base = pdata->irq_base;
399
400 set_irq_chained_handler(ipu->irq_fn, NULL);
401 set_irq_data(ipu->irq_fn, NULL);
402
403 set_irq_chained_handler(ipu->irq_err, NULL);
404 set_irq_data(ipu->irq_err, NULL);
405
406 for (irq = irq_base; irq < irq_base + CONFIG_MX3_IPU_IRQS; irq++) {
407#ifdef CONFIG_ARM
408 set_irq_flags(irq, 0);
409#endif
410 set_irq_chip(irq, NULL);
411 set_irq_chip_data(irq, NULL);
412 }
413}
diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c
index 13946ebd77d6..b4704e150b28 100644
--- a/drivers/firmware/dell_rbu.c
+++ b/drivers/firmware/dell_rbu.c
@@ -576,7 +576,7 @@ static ssize_t read_rbu_image_type(struct kobject *kobj,
576{ 576{
577 int size = 0; 577 int size = 0;
578 if (!pos) 578 if (!pos)
579 size = sprintf(buffer, "%s\n", image_type); 579 size = scnprintf(buffer, count, "%s\n", image_type);
580 return size; 580 return size;
581} 581}
582 582
@@ -648,7 +648,7 @@ static ssize_t read_rbu_packet_size(struct kobject *kobj,
648 int size = 0; 648 int size = 0;
649 if (!pos) { 649 if (!pos) {
650 spin_lock(&rbu_data.lock); 650 spin_lock(&rbu_data.lock);
651 size = sprintf(buffer, "%lu\n", rbu_data.packetsize); 651 size = scnprintf(buffer, count, "%lu\n", rbu_data.packetsize);
652 spin_unlock(&rbu_data.lock); 652 spin_unlock(&rbu_data.lock);
653 } 653 }
654 return size; 654 return size;
diff --git a/drivers/gpio/max7301.c b/drivers/gpio/max7301.c
index 8b24d784db93..3e7f4e06386e 100644
--- a/drivers/gpio/max7301.c
+++ b/drivers/gpio/max7301.c
@@ -217,8 +217,10 @@ static int __devinit max7301_probe(struct spi_device *spi)
217 int i, ret; 217 int i, ret;
218 218
219 pdata = spi->dev.platform_data; 219 pdata = spi->dev.platform_data;
220 if (!pdata || !pdata->base) 220 if (!pdata || !pdata->base) {
221 return -ENODEV; 221 dev_dbg(&spi->dev, "incorrect or missing platform data\n");
222 return -EINVAL;
223 }
222 224
223 /* 225 /*
224 * bits_per_word cannot be configured in platform data 226 * bits_per_word cannot be configured in platform data
diff --git a/drivers/gpio/max732x.c b/drivers/gpio/max732x.c
index 55ae9a41897a..f7868243af89 100644
--- a/drivers/gpio/max732x.c
+++ b/drivers/gpio/max732x.c
@@ -267,8 +267,10 @@ static int __devinit max732x_probe(struct i2c_client *client,
267 int ret, nr_port; 267 int ret, nr_port;
268 268
269 pdata = client->dev.platform_data; 269 pdata = client->dev.platform_data;
270 if (pdata == NULL) 270 if (pdata == NULL) {
271 return -ENODEV; 271 dev_dbg(&client->dev, "no platform data\n");
272 return -EINVAL;
273 }
272 274
273 chip = kzalloc(sizeof(struct max732x_chip), GFP_KERNEL); 275 chip = kzalloc(sizeof(struct max732x_chip), GFP_KERNEL);
274 if (chip == NULL) 276 if (chip == NULL)
diff --git a/drivers/gpio/mcp23s08.c b/drivers/gpio/mcp23s08.c
index 89c1d222e9d1..f6fae0e50e65 100644
--- a/drivers/gpio/mcp23s08.c
+++ b/drivers/gpio/mcp23s08.c
@@ -310,8 +310,10 @@ static int mcp23s08_probe(struct spi_device *spi)
310 unsigned base; 310 unsigned base;
311 311
312 pdata = spi->dev.platform_data; 312 pdata = spi->dev.platform_data;
313 if (!pdata || !gpio_is_valid(pdata->base)) 313 if (!pdata || !gpio_is_valid(pdata->base)) {
314 return -ENODEV; 314 dev_dbg(&spi->dev, "invalid or missing platform data\n");
315 return -EINVAL;
316 }
315 317
316 for (addr = 0; addr < 4; addr++) { 318 for (addr = 0; addr < 4; addr++) {
317 if (!pdata->chip[addr].is_present) 319 if (!pdata->chip[addr].is_present)
diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c
index 37f35388a2ae..8dc0164bd51e 100644
--- a/drivers/gpio/pca953x.c
+++ b/drivers/gpio/pca953x.c
@@ -202,8 +202,10 @@ static int __devinit pca953x_probe(struct i2c_client *client,
202 int ret; 202 int ret;
203 203
204 pdata = client->dev.platform_data; 204 pdata = client->dev.platform_data;
205 if (pdata == NULL) 205 if (pdata == NULL) {
206 return -ENODEV; 206 dev_dbg(&client->dev, "no platform data\n");
207 return -EINVAL;
208 }
207 209
208 chip = kzalloc(sizeof(struct pca953x_chip), GFP_KERNEL); 210 chip = kzalloc(sizeof(struct pca953x_chip), GFP_KERNEL);
209 if (chip == NULL) 211 if (chip == NULL)
diff --git a/drivers/gpio/pcf857x.c b/drivers/gpio/pcf857x.c
index 4bc2070dd4a1..9525724be731 100644
--- a/drivers/gpio/pcf857x.c
+++ b/drivers/gpio/pcf857x.c
@@ -188,8 +188,10 @@ static int pcf857x_probe(struct i2c_client *client,
188 int status; 188 int status;
189 189
190 pdata = client->dev.platform_data; 190 pdata = client->dev.platform_data;
191 if (!pdata) 191 if (!pdata) {
192 return -ENODEV; 192 dev_dbg(&client->dev, "no platform data\n");
193 return -EINVAL;
194 }
193 195
194 /* Allocate, initialize, and register this gpio_chip. */ 196 /* Allocate, initialize, and register this gpio_chip. */
195 gpio = kzalloc(sizeof *gpio, GFP_KERNEL); 197 gpio = kzalloc(sizeof *gpio, GFP_KERNEL);
@@ -248,8 +250,10 @@ static int pcf857x_probe(struct i2c_client *client,
248 else 250 else
249 status = i2c_read_le16(client); 251 status = i2c_read_le16(client);
250 252
251 } else 253 } else {
252 status = -ENODEV; 254 dev_dbg(&client->dev, "unsupported number of gpios\n");
255 status = -EINVAL;
256 }
253 257
254 if (status < 0) 258 if (status < 0)
255 goto fail; 259 goto fail;
diff --git a/drivers/gpu/drm/drm_agpsupport.c b/drivers/gpu/drm/drm_agpsupport.c
index 3d33b8252b58..14796594e5d9 100644
--- a/drivers/gpu/drm/drm_agpsupport.c
+++ b/drivers/gpu/drm/drm_agpsupport.c
@@ -33,10 +33,11 @@
33 33
34#include "drmP.h" 34#include "drmP.h"
35#include <linux/module.h> 35#include <linux/module.h>
36#include <asm/agp.h>
37 36
38#if __OS_HAS_AGP 37#if __OS_HAS_AGP
39 38
39#include <asm/agp.h>
40
40/** 41/**
41 * Get AGP information. 42 * Get AGP information.
42 * 43 *
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 5b2cbb778162..bfce0992fefb 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -194,7 +194,6 @@ char *drm_get_connector_status_name(enum drm_connector_status status)
194 * @type: object type 194 * @type: object type
195 * 195 *
196 * LOCKING: 196 * LOCKING:
197 * Caller must hold DRM mode_config lock.
198 * 197 *
199 * Create a unique identifier based on @ptr in @dev's identifier space. Used 198 * Create a unique identifier based on @ptr in @dev's identifier space. Used
200 * for tracking modes, CRTCs and connectors. 199 * for tracking modes, CRTCs and connectors.
@@ -209,15 +208,15 @@ static int drm_mode_object_get(struct drm_device *dev,
209 int new_id = 0; 208 int new_id = 0;
210 int ret; 209 int ret;
211 210
212 WARN(!mutex_is_locked(&dev->mode_config.mutex),
213 "%s called w/o mode_config lock\n", __func__);
214again: 211again:
215 if (idr_pre_get(&dev->mode_config.crtc_idr, GFP_KERNEL) == 0) { 212 if (idr_pre_get(&dev->mode_config.crtc_idr, GFP_KERNEL) == 0) {
216 DRM_ERROR("Ran out memory getting a mode number\n"); 213 DRM_ERROR("Ran out memory getting a mode number\n");
217 return -EINVAL; 214 return -EINVAL;
218 } 215 }
219 216
217 mutex_lock(&dev->mode_config.idr_mutex);
220 ret = idr_get_new_above(&dev->mode_config.crtc_idr, obj, 1, &new_id); 218 ret = idr_get_new_above(&dev->mode_config.crtc_idr, obj, 1, &new_id);
219 mutex_unlock(&dev->mode_config.idr_mutex);
221 if (ret == -EAGAIN) 220 if (ret == -EAGAIN)
222 goto again; 221 goto again;
223 222
@@ -239,16 +238,20 @@ again:
239static void drm_mode_object_put(struct drm_device *dev, 238static void drm_mode_object_put(struct drm_device *dev,
240 struct drm_mode_object *object) 239 struct drm_mode_object *object)
241{ 240{
241 mutex_lock(&dev->mode_config.idr_mutex);
242 idr_remove(&dev->mode_config.crtc_idr, object->id); 242 idr_remove(&dev->mode_config.crtc_idr, object->id);
243 mutex_unlock(&dev->mode_config.idr_mutex);
243} 244}
244 245
245void *drm_mode_object_find(struct drm_device *dev, uint32_t id, uint32_t type) 246void *drm_mode_object_find(struct drm_device *dev, uint32_t id, uint32_t type)
246{ 247{
247 struct drm_mode_object *obj; 248 struct drm_mode_object *obj = NULL;
248 249
250 mutex_lock(&dev->mode_config.idr_mutex);
249 obj = idr_find(&dev->mode_config.crtc_idr, id); 251 obj = idr_find(&dev->mode_config.crtc_idr, id);
250 if (!obj || (obj->type != type) || (obj->id != id)) 252 if (!obj || (obj->type != type) || (obj->id != id))
251 return NULL; 253 obj = NULL;
254 mutex_unlock(&dev->mode_config.idr_mutex);
252 255
253 return obj; 256 return obj;
254} 257}
@@ -786,6 +789,7 @@ EXPORT_SYMBOL(drm_mode_create_dithering_property);
786void drm_mode_config_init(struct drm_device *dev) 789void drm_mode_config_init(struct drm_device *dev)
787{ 790{
788 mutex_init(&dev->mode_config.mutex); 791 mutex_init(&dev->mode_config.mutex);
792 mutex_init(&dev->mode_config.idr_mutex);
789 INIT_LIST_HEAD(&dev->mode_config.fb_list); 793 INIT_LIST_HEAD(&dev->mode_config.fb_list);
790 INIT_LIST_HEAD(&dev->mode_config.fb_kernel_list); 794 INIT_LIST_HEAD(&dev->mode_config.fb_kernel_list);
791 INIT_LIST_HEAD(&dev->mode_config.crtc_list); 795 INIT_LIST_HEAD(&dev->mode_config.crtc_list);
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index d8a982b71296..964c5eb1fada 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -36,7 +36,7 @@
36/* 36/*
37 * Detailed mode info for 800x600@60Hz 37 * Detailed mode info for 800x600@60Hz
38 */ 38 */
39static struct drm_display_mode std_mode[] = { 39static struct drm_display_mode std_modes[] = {
40 { DRM_MODE("800x600", DRM_MODE_TYPE_DEFAULT, 40000, 800, 840, 40 { DRM_MODE("800x600", DRM_MODE_TYPE_DEFAULT, 40000, 800, 840,
41 968, 1056, 0, 600, 601, 605, 628, 0, 41 968, 1056, 0, 600, 601, 605, 628, 0,
42 DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, 42 DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
@@ -60,15 +60,18 @@ static struct drm_display_mode std_mode[] = {
60 * changes have occurred. 60 * changes have occurred.
61 * 61 *
62 * FIXME: take into account monitor limits 62 * FIXME: take into account monitor limits
63 *
64 * RETURNS:
65 * Number of modes found on @connector.
63 */ 66 */
64void drm_helper_probe_single_connector_modes(struct drm_connector *connector, 67int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
65 uint32_t maxX, uint32_t maxY) 68 uint32_t maxX, uint32_t maxY)
66{ 69{
67 struct drm_device *dev = connector->dev; 70 struct drm_device *dev = connector->dev;
68 struct drm_display_mode *mode, *t; 71 struct drm_display_mode *mode, *t;
69 struct drm_connector_helper_funcs *connector_funcs = 72 struct drm_connector_helper_funcs *connector_funcs =
70 connector->helper_private; 73 connector->helper_private;
71 int ret; 74 int count = 0;
72 75
73 DRM_DEBUG("%s\n", drm_get_connector_name(connector)); 76 DRM_DEBUG("%s\n", drm_get_connector_name(connector));
74 /* set all modes to the unverified state */ 77 /* set all modes to the unverified state */
@@ -81,14 +84,14 @@ void drm_helper_probe_single_connector_modes(struct drm_connector *connector,
81 DRM_DEBUG("%s is disconnected\n", 84 DRM_DEBUG("%s is disconnected\n",
82 drm_get_connector_name(connector)); 85 drm_get_connector_name(connector));
83 /* TODO set EDID to NULL */ 86 /* TODO set EDID to NULL */
84 return; 87 return 0;
85 } 88 }
86 89
87 ret = (*connector_funcs->get_modes)(connector); 90 count = (*connector_funcs->get_modes)(connector);
91 if (!count)
92 return 0;
88 93
89 if (ret) { 94 drm_mode_connector_list_update(connector);
90 drm_mode_connector_list_update(connector);
91 }
92 95
93 if (maxX && maxY) 96 if (maxX && maxY)
94 drm_mode_validate_size(dev, &connector->modes, maxX, 97 drm_mode_validate_size(dev, &connector->modes, maxX,
@@ -102,25 +105,8 @@ void drm_helper_probe_single_connector_modes(struct drm_connector *connector,
102 105
103 drm_mode_prune_invalid(dev, &connector->modes, true); 106 drm_mode_prune_invalid(dev, &connector->modes, true);
104 107
105 if (list_empty(&connector->modes)) { 108 if (list_empty(&connector->modes))
106 struct drm_display_mode *stdmode; 109 return 0;
107
108 DRM_DEBUG("No valid modes on %s\n",
109 drm_get_connector_name(connector));
110
111 /* Should we do this here ???
112 * When no valid EDID modes are available we end up
113 * here and bailed in the past, now we add a standard
114 * 640x480@60Hz mode and carry on.
115 */
116 stdmode = drm_mode_duplicate(dev, &std_mode[0]);
117 drm_mode_probed_add(connector, stdmode);
118 drm_mode_list_concat(&connector->probed_modes,
119 &connector->modes);
120
121 DRM_DEBUG("Adding standard 640x480 @ 60Hz to %s\n",
122 drm_get_connector_name(connector));
123 }
124 110
125 drm_mode_sort(&connector->modes); 111 drm_mode_sort(&connector->modes);
126 112
@@ -131,20 +117,58 @@ void drm_helper_probe_single_connector_modes(struct drm_connector *connector,
131 drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); 117 drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
132 drm_mode_debug_printmodeline(mode); 118 drm_mode_debug_printmodeline(mode);
133 } 119 }
120
121 return count;
134} 122}
135EXPORT_SYMBOL(drm_helper_probe_single_connector_modes); 123EXPORT_SYMBOL(drm_helper_probe_single_connector_modes);
136 124
137void drm_helper_probe_connector_modes(struct drm_device *dev, uint32_t maxX, 125int drm_helper_probe_connector_modes(struct drm_device *dev, uint32_t maxX,
138 uint32_t maxY) 126 uint32_t maxY)
139{ 127{
140 struct drm_connector *connector; 128 struct drm_connector *connector;
129 int count = 0;
141 130
142 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { 131 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
143 drm_helper_probe_single_connector_modes(connector, maxX, maxY); 132 count += drm_helper_probe_single_connector_modes(connector,
133 maxX, maxY);
144 } 134 }
135
136 return count;
145} 137}
146EXPORT_SYMBOL(drm_helper_probe_connector_modes); 138EXPORT_SYMBOL(drm_helper_probe_connector_modes);
147 139
140static void drm_helper_add_std_modes(struct drm_device *dev,
141 struct drm_connector *connector)
142{
143 struct drm_display_mode *mode, *t;
144 int i;
145
146 for (i = 0; i < ARRAY_SIZE(std_modes); i++) {
147 struct drm_display_mode *stdmode;
148
149 /*
150 * When no valid EDID modes are available we end up
151 * here and bailed in the past, now we add some standard
152 * modes and move on.
153 */
154 stdmode = drm_mode_duplicate(dev, &std_modes[i]);
155 drm_mode_probed_add(connector, stdmode);
156 drm_mode_list_concat(&connector->probed_modes,
157 &connector->modes);
158
159 DRM_DEBUG("Adding mode %s to %s\n", stdmode->name,
160 drm_get_connector_name(connector));
161 }
162 drm_mode_sort(&connector->modes);
163
164 DRM_DEBUG("Added std modes on %s\n", drm_get_connector_name(connector));
165 list_for_each_entry_safe(mode, t, &connector->modes, head) {
166 mode->vrefresh = drm_mode_vrefresh(mode);
167
168 drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
169 drm_mode_debug_printmodeline(mode);
170 }
171}
148 172
149/** 173/**
150 * drm_helper_crtc_in_use - check if a given CRTC is in a mode_config 174 * drm_helper_crtc_in_use - check if a given CRTC is in a mode_config
@@ -237,6 +261,8 @@ static void drm_enable_connectors(struct drm_device *dev, bool *enabled)
237 261
238 list_for_each_entry(connector, &dev->mode_config.connector_list, head) { 262 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
239 enabled[i] = drm_connector_enabled(connector, true); 263 enabled[i] = drm_connector_enabled(connector, true);
264 DRM_DEBUG("connector %d enabled? %s\n", connector->base.id,
265 enabled[i] ? "yes" : "no");
240 any_enabled |= enabled[i]; 266 any_enabled |= enabled[i];
241 i++; 267 i++;
242 } 268 }
@@ -265,11 +291,17 @@ static bool drm_target_preferred(struct drm_device *dev,
265 continue; 291 continue;
266 } 292 }
267 293
294 DRM_DEBUG("looking for preferred mode on connector %d\n",
295 connector->base.id);
296
268 modes[i] = drm_has_preferred_mode(connector, width, height); 297 modes[i] = drm_has_preferred_mode(connector, width, height);
269 if (!modes[i]) { 298 /* No preferred modes, pick one off the list */
299 if (!modes[i] && !list_empty(&connector->modes)) {
270 list_for_each_entry(modes[i], &connector->modes, head) 300 list_for_each_entry(modes[i], &connector->modes, head)
271 break; 301 break;
272 } 302 }
303 DRM_DEBUG("found mode %s\n", modes[i] ? modes[i]->name :
304 "none");
273 i++; 305 i++;
274 } 306 }
275 return true; 307 return true;
@@ -369,6 +401,8 @@ static void drm_setup_crtcs(struct drm_device *dev)
369 int width, height; 401 int width, height;
370 int i, ret; 402 int i, ret;
371 403
404 DRM_DEBUG("\n");
405
372 width = dev->mode_config.max_width; 406 width = dev->mode_config.max_width;
373 height = dev->mode_config.max_height; 407 height = dev->mode_config.max_height;
374 408
@@ -390,6 +424,8 @@ static void drm_setup_crtcs(struct drm_device *dev)
390 if (!ret) 424 if (!ret)
391 DRM_ERROR("Unable to find initial modes\n"); 425 DRM_ERROR("Unable to find initial modes\n");
392 426
427 DRM_DEBUG("picking CRTCs for %dx%d config\n", width, height);
428
393 drm_pick_crtcs(dev, crtcs, modes, 0, width, height); 429 drm_pick_crtcs(dev, crtcs, modes, 0, width, height);
394 430
395 i = 0; 431 i = 0;
@@ -403,6 +439,8 @@ static void drm_setup_crtcs(struct drm_device *dev)
403 } 439 }
404 440
405 if (mode && crtc) { 441 if (mode && crtc) {
442 DRM_DEBUG("desired mode %s set on crtc %d\n",
443 mode->name, crtc->base.id);
406 crtc->desired_mode = mode; 444 crtc->desired_mode = mode;
407 connector->encoder->crtc = crtc; 445 connector->encoder->crtc = crtc;
408 } else 446 } else
@@ -442,6 +480,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
442 int saved_x, saved_y; 480 int saved_x, saved_y;
443 struct drm_encoder *encoder; 481 struct drm_encoder *encoder;
444 bool ret = true; 482 bool ret = true;
483 bool depth_changed, bpp_changed;
445 484
446 adjusted_mode = drm_mode_duplicate(dev, mode); 485 adjusted_mode = drm_mode_duplicate(dev, mode);
447 486
@@ -450,6 +489,15 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
450 if (!crtc->enabled) 489 if (!crtc->enabled)
451 return true; 490 return true;
452 491
492 if (old_fb && crtc->fb) {
493 depth_changed = (old_fb->depth != crtc->fb->depth);
494 bpp_changed = (old_fb->bits_per_pixel !=
495 crtc->fb->bits_per_pixel);
496 } else {
497 depth_changed = true;
498 bpp_changed = true;
499 }
500
453 saved_mode = crtc->mode; 501 saved_mode = crtc->mode;
454 saved_x = crtc->x; 502 saved_x = crtc->x;
455 saved_y = crtc->y; 503 saved_y = crtc->y;
@@ -462,7 +510,8 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
462 crtc->y = y; 510 crtc->y = y;
463 511
464 if (drm_mode_equal(&saved_mode, &crtc->mode)) { 512 if (drm_mode_equal(&saved_mode, &crtc->mode)) {
465 if (saved_x != crtc->x || saved_y != crtc->y) { 513 if (saved_x != crtc->x || saved_y != crtc->y ||
514 depth_changed || bpp_changed) {
466 crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, 515 crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y,
467 old_fb); 516 old_fb);
468 goto done; 517 goto done;
@@ -568,8 +617,8 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
568 struct drm_encoder **save_encoders, *new_encoder; 617 struct drm_encoder **save_encoders, *new_encoder;
569 struct drm_framebuffer *old_fb; 618 struct drm_framebuffer *old_fb;
570 bool save_enabled; 619 bool save_enabled;
571 bool changed = false; 620 bool mode_changed = false;
572 bool flip_or_move = false; 621 bool fb_changed = false;
573 struct drm_connector *connector; 622 struct drm_connector *connector;
574 int count = 0, ro, fail = 0; 623 int count = 0, ro, fail = 0;
575 struct drm_crtc_helper_funcs *crtc_funcs; 624 struct drm_crtc_helper_funcs *crtc_funcs;
@@ -597,7 +646,10 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
597 /* save previous config */ 646 /* save previous config */
598 save_enabled = set->crtc->enabled; 647 save_enabled = set->crtc->enabled;
599 648
600 /* this is meant to be num_connector not num_crtc */ 649 /*
650 * We do mode_config.num_connectors here since we'll look at the
651 * CRTC and encoder associated with each connector later.
652 */
601 save_crtcs = kzalloc(dev->mode_config.num_connector * 653 save_crtcs = kzalloc(dev->mode_config.num_connector *
602 sizeof(struct drm_crtc *), GFP_KERNEL); 654 sizeof(struct drm_crtc *), GFP_KERNEL);
603 if (!save_crtcs) 655 if (!save_crtcs)
@@ -613,21 +665,25 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
613 /* We should be able to check here if the fb has the same properties 665 /* We should be able to check here if the fb has the same properties
614 * and then just flip_or_move it */ 666 * and then just flip_or_move it */
615 if (set->crtc->fb != set->fb) { 667 if (set->crtc->fb != set->fb) {
616 /* if we have no fb then its a change not a flip */ 668 /* If we have no fb then treat it as a full mode set */
617 if (set->crtc->fb == NULL) 669 if (set->crtc->fb == NULL)
618 changed = true; 670 mode_changed = true;
671 else if ((set->fb->bits_per_pixel !=
672 set->crtc->fb->bits_per_pixel) ||
673 set->fb->depth != set->crtc->fb->depth)
674 fb_changed = true;
619 else 675 else
620 flip_or_move = true; 676 fb_changed = true;
621 } 677 }
622 678
623 if (set->x != set->crtc->x || set->y != set->crtc->y) 679 if (set->x != set->crtc->x || set->y != set->crtc->y)
624 flip_or_move = true; 680 fb_changed = true;
625 681
626 if (set->mode && !drm_mode_equal(set->mode, &set->crtc->mode)) { 682 if (set->mode && !drm_mode_equal(set->mode, &set->crtc->mode)) {
627 DRM_DEBUG("modes are different\n"); 683 DRM_DEBUG("modes are different\n");
628 drm_mode_debug_printmodeline(&set->crtc->mode); 684 drm_mode_debug_printmodeline(&set->crtc->mode);
629 drm_mode_debug_printmodeline(set->mode); 685 drm_mode_debug_printmodeline(set->mode);
630 changed = true; 686 mode_changed = true;
631 } 687 }
632 688
633 /* a) traverse passed in connector list and get encoders for them */ 689 /* a) traverse passed in connector list and get encoders for them */
@@ -650,7 +706,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
650 } 706 }
651 707
652 if (new_encoder != connector->encoder) { 708 if (new_encoder != connector->encoder) {
653 changed = true; 709 mode_changed = true;
654 connector->encoder = new_encoder; 710 connector->encoder = new_encoder;
655 } 711 }
656 } 712 }
@@ -677,16 +733,16 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
677 new_crtc = set->crtc; 733 new_crtc = set->crtc;
678 } 734 }
679 if (new_crtc != connector->encoder->crtc) { 735 if (new_crtc != connector->encoder->crtc) {
680 changed = true; 736 mode_changed = true;
681 connector->encoder->crtc = new_crtc; 737 connector->encoder->crtc = new_crtc;
682 } 738 }
683 } 739 }
684 740
685 /* mode_set_base is not a required function */ 741 /* mode_set_base is not a required function */
686 if (flip_or_move && !crtc_funcs->mode_set_base) 742 if (fb_changed && !crtc_funcs->mode_set_base)
687 changed = true; 743 mode_changed = true;
688 744
689 if (changed) { 745 if (mode_changed) {
690 old_fb = set->crtc->fb; 746 old_fb = set->crtc->fb;
691 set->crtc->fb = set->fb; 747 set->crtc->fb = set->fb;
692 set->crtc->enabled = (set->mode != NULL); 748 set->crtc->enabled = (set->mode != NULL);
@@ -705,7 +761,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
705 set->crtc->desired_mode = set->mode; 761 set->crtc->desired_mode = set->mode;
706 } 762 }
707 drm_helper_disable_unused_functions(dev); 763 drm_helper_disable_unused_functions(dev);
708 } else if (flip_or_move) { 764 } else if (fb_changed) {
709 old_fb = set->crtc->fb; 765 old_fb = set->crtc->fb;
710 if (set->crtc->fb != set->fb) 766 if (set->crtc->fb != set->fb)
711 set->crtc->fb = set->fb; 767 set->crtc->fb = set->fb;
@@ -764,10 +820,31 @@ bool drm_helper_plugged_event(struct drm_device *dev)
764 */ 820 */
765bool drm_helper_initial_config(struct drm_device *dev, bool can_grow) 821bool drm_helper_initial_config(struct drm_device *dev, bool can_grow)
766{ 822{
767 int ret = false; 823 struct drm_connector *connector;
824 int count = 0;
768 825
769 drm_helper_plugged_event(dev); 826 count = drm_helper_probe_connector_modes(dev,
770 return ret; 827 dev->mode_config.max_width,
828 dev->mode_config.max_height);
829
830 /*
831 * None of the available connectors had any modes, so add some
832 * and try to light them up anyway
833 */
834 if (!count) {
835 DRM_ERROR("connectors have no modes, using standard modes\n");
836 list_for_each_entry(connector,
837 &dev->mode_config.connector_list,
838 head)
839 drm_helper_add_std_modes(dev, connector);
840 }
841
842 drm_setup_crtcs(dev);
843
844 /* alert the driver fb layer */
845 dev->mode_config.funcs->fb_changed(dev);
846
847 return 0;
771} 848}
772EXPORT_SYMBOL(drm_helper_initial_config); 849EXPORT_SYMBOL(drm_helper_initial_config);
773 850
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 5ff88d952226..14c7a23dc157 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -294,6 +294,7 @@ EXPORT_SYMBOL(drm_init);
294 */ 294 */
295static void drm_cleanup(struct drm_device * dev) 295static void drm_cleanup(struct drm_device * dev)
296{ 296{
297 struct drm_map_list *r_list, *list_temp;
297 DRM_DEBUG("\n"); 298 DRM_DEBUG("\n");
298 299
299 if (!dev) { 300 if (!dev) {
@@ -325,6 +326,9 @@ static void drm_cleanup(struct drm_device * dev)
325 drm_ht_remove(&dev->map_hash); 326 drm_ht_remove(&dev->map_hash);
326 drm_ctxbitmap_cleanup(dev); 327 drm_ctxbitmap_cleanup(dev);
327 328
329 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
330 drm_rmmap(dev, r_list->map);
331
328 if (drm_core_check_feature(dev, DRIVER_MODESET)) 332 if (drm_core_check_feature(dev, DRIVER_MODESET))
329 drm_put_minor(&dev->control); 333 drm_put_minor(&dev->control);
330 334
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 0fbb0da342cb..5a4d3244758a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -660,7 +660,7 @@ struct edid *drm_get_edid(struct drm_connector *connector,
660 660
661 edid = (struct edid *)drm_ddc_read(adapter); 661 edid = (struct edid *)drm_ddc_read(adapter);
662 if (!edid) { 662 if (!edid) {
663 dev_warn(&connector->dev->pdev->dev, "%s: no EDID data\n", 663 dev_info(&connector->dev->pdev->dev, "%s: no EDID data\n",
664 drm_get_connector_name(connector)); 664 drm_get_connector_name(connector));
665 return NULL; 665 return NULL;
666 } 666 }
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 724e505873cf..477caa1b1e4b 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -267,7 +267,8 @@ EXPORT_SYMBOL(drm_irq_install);
267 */ 267 */
268int drm_irq_uninstall(struct drm_device * dev) 268int drm_irq_uninstall(struct drm_device * dev)
269{ 269{
270 int irq_enabled; 270 unsigned long irqflags;
271 int irq_enabled, i;
271 272
272 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) 273 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
273 return -EINVAL; 274 return -EINVAL;
@@ -277,6 +278,16 @@ int drm_irq_uninstall(struct drm_device * dev)
277 dev->irq_enabled = 0; 278 dev->irq_enabled = 0;
278 mutex_unlock(&dev->struct_mutex); 279 mutex_unlock(&dev->struct_mutex);
279 280
281 /*
282 * Wake up any waiters so they don't hang.
283 */
284 spin_lock_irqsave(&dev->vbl_lock, irqflags);
285 for (i = 0; i < dev->num_crtcs; i++) {
286 DRM_WAKEUP(&dev->vbl_queue[i]);
287 dev->vblank_enabled[i] = 0;
288 }
289 spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
290
280 if (!irq_enabled) 291 if (!irq_enabled)
281 return -EINVAL; 292 return -EINVAL;
282 293
@@ -652,8 +663,9 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
652 vblwait->request.sequence, crtc); 663 vblwait->request.sequence, crtc);
653 dev->last_vblank_wait[crtc] = vblwait->request.sequence; 664 dev->last_vblank_wait[crtc] = vblwait->request.sequence;
654 DRM_WAIT_ON(ret, dev->vbl_queue[crtc], 3 * DRM_HZ, 665 DRM_WAIT_ON(ret, dev->vbl_queue[crtc], 3 * DRM_HZ,
655 ((drm_vblank_count(dev, crtc) 666 (((drm_vblank_count(dev, crtc) -
656 - vblwait->request.sequence) <= (1 << 23))); 667 vblwait->request.sequence) <= (1 << 23)) ||
668 !dev->irq_enabled));
657 669
658 if (ret != -EINTR) { 670 if (ret != -EINTR) {
659 struct timeval now; 671 struct timeval now;
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index 5ca132afa4f2..46bb923b097c 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -118,12 +118,20 @@ static void drm_master_destroy(struct kref *kref)
118 struct drm_master *master = container_of(kref, struct drm_master, refcount); 118 struct drm_master *master = container_of(kref, struct drm_master, refcount);
119 struct drm_magic_entry *pt, *next; 119 struct drm_magic_entry *pt, *next;
120 struct drm_device *dev = master->minor->dev; 120 struct drm_device *dev = master->minor->dev;
121 struct drm_map_list *r_list, *list_temp;
121 122
122 list_del(&master->head); 123 list_del(&master->head);
123 124
124 if (dev->driver->master_destroy) 125 if (dev->driver->master_destroy)
125 dev->driver->master_destroy(dev, master); 126 dev->driver->master_destroy(dev, master);
126 127
128 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) {
129 if (r_list->master == master) {
130 drm_rmmap_locked(dev, r_list->map);
131 r_list = NULL;
132 }
133 }
134
127 if (master->unique) { 135 if (master->unique) {
128 drm_free(master->unique, master->unique_size, DRM_MEM_DRIVER); 136 drm_free(master->unique, master->unique_size, DRM_MEM_DRIVER);
129 master->unique = NULL; 137 master->unique = NULL;
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 62a4bf7b49df..ee64b7301f67 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -177,6 +177,14 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init)
177 drm_i915_private_t *dev_priv = dev->dev_private; 177 drm_i915_private_t *dev_priv = dev->dev_private;
178 struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; 178 struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv;
179 179
180 master_priv->sarea = drm_getsarea(dev);
181 if (master_priv->sarea) {
182 master_priv->sarea_priv = (drm_i915_sarea_t *)
183 ((u8 *)master_priv->sarea->handle + init->sarea_priv_offset);
184 } else {
185 DRM_DEBUG("sarea not found assuming DRI2 userspace\n");
186 }
187
180 if (init->ring_size != 0) { 188 if (init->ring_size != 0) {
181 if (dev_priv->ring.ring_obj != NULL) { 189 if (dev_priv->ring.ring_obj != NULL) {
182 i915_dma_cleanup(dev); 190 i915_dma_cleanup(dev);
@@ -936,13 +944,14 @@ static int i915_load_modeset_init(struct drm_device *dev)
936 dev->mode_config.fb_base = drm_get_resource_start(dev, fb_bar) & 944 dev->mode_config.fb_base = drm_get_resource_start(dev, fb_bar) &
937 0xff000000; 945 0xff000000;
938 946
939 DRM_DEBUG("*** fb base 0x%08lx\n", dev->mode_config.fb_base); 947 if (IS_MOBILE(dev) || IS_I9XX(dev))
940
941 if (IS_MOBILE(dev) || (IS_I9XX(dev) && !IS_I965G(dev) && !IS_G33(dev)))
942 dev_priv->cursor_needs_physical = true; 948 dev_priv->cursor_needs_physical = true;
943 else 949 else
944 dev_priv->cursor_needs_physical = false; 950 dev_priv->cursor_needs_physical = false;
945 951
952 if (IS_I965G(dev) || IS_G33(dev))
953 dev_priv->cursor_needs_physical = false;
954
946 ret = i915_probe_agp(dev, &agp_size, &prealloc_size); 955 ret = i915_probe_agp(dev, &agp_size, &prealloc_size);
947 if (ret) 956 if (ret)
948 goto kfree_devname; 957 goto kfree_devname;
@@ -1152,6 +1161,8 @@ int i915_driver_unload(struct drm_device *dev)
1152 if (drm_core_check_feature(dev, DRIVER_MODESET)) { 1161 if (drm_core_check_feature(dev, DRIVER_MODESET)) {
1153 intel_modeset_cleanup(dev); 1162 intel_modeset_cleanup(dev);
1154 1163
1164 i915_gem_free_all_phys_object(dev);
1165
1155 mutex_lock(&dev->struct_mutex); 1166 mutex_lock(&dev->struct_mutex);
1156 i915_gem_cleanup_ringbuffer(dev); 1167 i915_gem_cleanup_ringbuffer(dev);
1157 mutex_unlock(&dev->struct_mutex); 1168 mutex_unlock(&dev->struct_mutex);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 563de18063fd..e13518252007 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -72,6 +72,18 @@ enum pipe {
72#define WATCH_INACTIVE 0 72#define WATCH_INACTIVE 0
73#define WATCH_PWRITE 0 73#define WATCH_PWRITE 0
74 74
75#define I915_GEM_PHYS_CURSOR_0 1
76#define I915_GEM_PHYS_CURSOR_1 2
77#define I915_GEM_PHYS_OVERLAY_REGS 3
78#define I915_MAX_PHYS_OBJECT (I915_GEM_PHYS_OVERLAY_REGS)
79
80struct drm_i915_gem_phys_object {
81 int id;
82 struct page **page_list;
83 drm_dma_handle_t *handle;
84 struct drm_gem_object *cur_obj;
85};
86
75typedef struct _drm_i915_ring_buffer { 87typedef struct _drm_i915_ring_buffer {
76 int tail_mask; 88 int tail_mask;
77 unsigned long Size; 89 unsigned long Size;
@@ -358,6 +370,9 @@ typedef struct drm_i915_private {
358 uint32_t bit_6_swizzle_x; 370 uint32_t bit_6_swizzle_x;
359 /** Bit 6 swizzling required for Y tiling */ 371 /** Bit 6 swizzling required for Y tiling */
360 uint32_t bit_6_swizzle_y; 372 uint32_t bit_6_swizzle_y;
373
374 /* storage for physical objects */
375 struct drm_i915_gem_phys_object *phys_objs[I915_MAX_PHYS_OBJECT];
361 } mm; 376 } mm;
362} drm_i915_private_t; 377} drm_i915_private_t;
363 378
@@ -436,6 +451,9 @@ struct drm_i915_gem_object {
436 /** User space pin count and filp owning the pin */ 451 /** User space pin count and filp owning the pin */
437 uint32_t user_pin_count; 452 uint32_t user_pin_count;
438 struct drm_file *pin_filp; 453 struct drm_file *pin_filp;
454
455 /** for phy allocated objects */
456 struct drm_i915_gem_phys_object *phys_obj;
439}; 457};
440 458
441/** 459/**
@@ -598,6 +616,11 @@ int i915_gem_do_init(struct drm_device *dev, unsigned long start,
598int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); 616int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
599int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj, 617int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj,
600 int write); 618 int write);
619int i915_gem_attach_phys_object(struct drm_device *dev,
620 struct drm_gem_object *obj, int id);
621void i915_gem_detach_phys_object(struct drm_device *dev,
622 struct drm_gem_object *obj);
623void i915_gem_free_all_phys_object(struct drm_device *dev);
601 624
602/* i915_gem_tiling.c */ 625/* i915_gem_tiling.c */
603void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); 626void i915_gem_detect_bit_6_swizzle(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 1384d6686555..debad5c04cc0 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -55,6 +55,9 @@ static int i915_gem_object_bind_to_gtt(struct drm_gem_object *obj,
55static void i915_gem_object_get_fence_reg(struct drm_gem_object *obj); 55static void i915_gem_object_get_fence_reg(struct drm_gem_object *obj);
56static void i915_gem_clear_fence_reg(struct drm_gem_object *obj); 56static void i915_gem_clear_fence_reg(struct drm_gem_object *obj);
57static int i915_gem_evict_something(struct drm_device *dev); 57static int i915_gem_evict_something(struct drm_device *dev);
58static int i915_gem_phys_pwrite(struct drm_device *dev, struct drm_gem_object *obj,
59 struct drm_i915_gem_pwrite *args,
60 struct drm_file *file_priv);
58 61
59int i915_gem_do_init(struct drm_device *dev, unsigned long start, 62int i915_gem_do_init(struct drm_device *dev, unsigned long start,
60 unsigned long end) 63 unsigned long end)
@@ -386,8 +389,10 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
386 * pread/pwrite currently are reading and writing from the CPU 389 * pread/pwrite currently are reading and writing from the CPU
387 * perspective, requiring manual detiling by the client. 390 * perspective, requiring manual detiling by the client.
388 */ 391 */
389 if (obj_priv->tiling_mode == I915_TILING_NONE && 392 if (obj_priv->phys_obj)
390 dev->gtt_total != 0) 393 ret = i915_gem_phys_pwrite(dev, obj, args, file_priv);
394 else if (obj_priv->tiling_mode == I915_TILING_NONE &&
395 dev->gtt_total != 0)
391 ret = i915_gem_gtt_pwrite(dev, obj, args, file_priv); 396 ret = i915_gem_gtt_pwrite(dev, obj, args, file_priv);
392 else 397 else
393 ret = i915_gem_shmem_pwrite(dev, obj, args, file_priv); 398 ret = i915_gem_shmem_pwrite(dev, obj, args, file_priv);
@@ -2858,6 +2863,9 @@ void i915_gem_free_object(struct drm_gem_object *obj)
2858 while (obj_priv->pin_count > 0) 2863 while (obj_priv->pin_count > 0)
2859 i915_gem_object_unpin(obj); 2864 i915_gem_object_unpin(obj);
2860 2865
2866 if (obj_priv->phys_obj)
2867 i915_gem_detach_phys_object(dev, obj);
2868
2861 i915_gem_object_unbind(obj); 2869 i915_gem_object_unbind(obj);
2862 2870
2863 list = &obj->map_list; 2871 list = &obj->map_list;
@@ -3293,3 +3301,180 @@ i915_gem_load(struct drm_device *dev)
3293 3301
3294 i915_gem_detect_bit_6_swizzle(dev); 3302 i915_gem_detect_bit_6_swizzle(dev);
3295} 3303}
3304
3305/*
3306 * Create a physically contiguous memory object for this object
3307 * e.g. for cursor + overlay regs
3308 */
3309int i915_gem_init_phys_object(struct drm_device *dev,
3310 int id, int size)
3311{
3312 drm_i915_private_t *dev_priv = dev->dev_private;
3313 struct drm_i915_gem_phys_object *phys_obj;
3314 int ret;
3315
3316 if (dev_priv->mm.phys_objs[id - 1] || !size)
3317 return 0;
3318
3319 phys_obj = drm_calloc(1, sizeof(struct drm_i915_gem_phys_object), DRM_MEM_DRIVER);
3320 if (!phys_obj)
3321 return -ENOMEM;
3322
3323 phys_obj->id = id;
3324
3325 phys_obj->handle = drm_pci_alloc(dev, size, 0, 0xffffffff);
3326 if (!phys_obj->handle) {
3327 ret = -ENOMEM;
3328 goto kfree_obj;
3329 }
3330#ifdef CONFIG_X86
3331 set_memory_wc((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE);
3332#endif
3333
3334 dev_priv->mm.phys_objs[id - 1] = phys_obj;
3335
3336 return 0;
3337kfree_obj:
3338 drm_free(phys_obj, sizeof(struct drm_i915_gem_phys_object), DRM_MEM_DRIVER);
3339 return ret;
3340}
3341
3342void i915_gem_free_phys_object(struct drm_device *dev, int id)
3343{
3344 drm_i915_private_t *dev_priv = dev->dev_private;
3345 struct drm_i915_gem_phys_object *phys_obj;
3346
3347 if (!dev_priv->mm.phys_objs[id - 1])
3348 return;
3349
3350 phys_obj = dev_priv->mm.phys_objs[id - 1];
3351 if (phys_obj->cur_obj) {
3352 i915_gem_detach_phys_object(dev, phys_obj->cur_obj);
3353 }
3354
3355#ifdef CONFIG_X86
3356 set_memory_wb((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE);
3357#endif
3358 drm_pci_free(dev, phys_obj->handle);
3359 kfree(phys_obj);
3360 dev_priv->mm.phys_objs[id - 1] = NULL;
3361}
3362
3363void i915_gem_free_all_phys_object(struct drm_device *dev)
3364{
3365 int i;
3366
3367 for (i = I915_GEM_PHYS_CURSOR_0; i <= I915_MAX_PHYS_OBJECT; i++)
3368 i915_gem_free_phys_object(dev, i);
3369}
3370
3371void i915_gem_detach_phys_object(struct drm_device *dev,
3372 struct drm_gem_object *obj)
3373{
3374 struct drm_i915_gem_object *obj_priv;
3375 int i;
3376 int ret;
3377 int page_count;
3378
3379 obj_priv = obj->driver_private;
3380 if (!obj_priv->phys_obj)
3381 return;
3382
3383 ret = i915_gem_object_get_page_list(obj);
3384 if (ret)
3385 goto out;
3386
3387 page_count = obj->size / PAGE_SIZE;
3388
3389 for (i = 0; i < page_count; i++) {
3390 char *dst = kmap_atomic(obj_priv->page_list[i], KM_USER0);
3391 char *src = obj_priv->phys_obj->handle->vaddr + (i * PAGE_SIZE);
3392
3393 memcpy(dst, src, PAGE_SIZE);
3394 kunmap_atomic(dst, KM_USER0);
3395 }
3396 drm_clflush_pages(obj_priv->page_list, page_count);
3397 drm_agp_chipset_flush(dev);
3398out:
3399 obj_priv->phys_obj->cur_obj = NULL;
3400 obj_priv->phys_obj = NULL;
3401}
3402
3403int
3404i915_gem_attach_phys_object(struct drm_device *dev,
3405 struct drm_gem_object *obj, int id)
3406{
3407 drm_i915_private_t *dev_priv = dev->dev_private;
3408 struct drm_i915_gem_object *obj_priv;
3409 int ret = 0;
3410 int page_count;
3411 int i;
3412
3413 if (id > I915_MAX_PHYS_OBJECT)
3414 return -EINVAL;
3415
3416 obj_priv = obj->driver_private;
3417
3418 if (obj_priv->phys_obj) {
3419 if (obj_priv->phys_obj->id == id)
3420 return 0;
3421 i915_gem_detach_phys_object(dev, obj);
3422 }
3423
3424
3425 /* create a new object */
3426 if (!dev_priv->mm.phys_objs[id - 1]) {
3427 ret = i915_gem_init_phys_object(dev, id,
3428 obj->size);
3429 if (ret) {
3430 DRM_ERROR("failed to init phys object %d size: %zu\n", id, obj->size);
3431 goto out;
3432 }
3433 }
3434
3435 /* bind to the object */
3436 obj_priv->phys_obj = dev_priv->mm.phys_objs[id - 1];
3437 obj_priv->phys_obj->cur_obj = obj;
3438
3439 ret = i915_gem_object_get_page_list(obj);
3440 if (ret) {
3441 DRM_ERROR("failed to get page list\n");
3442 goto out;
3443 }
3444
3445 page_count = obj->size / PAGE_SIZE;
3446
3447 for (i = 0; i < page_count; i++) {
3448 char *src = kmap_atomic(obj_priv->page_list[i], KM_USER0);
3449 char *dst = obj_priv->phys_obj->handle->vaddr + (i * PAGE_SIZE);
3450
3451 memcpy(dst, src, PAGE_SIZE);
3452 kunmap_atomic(src, KM_USER0);
3453 }
3454
3455 return 0;
3456out:
3457 return ret;
3458}
3459
3460static int
3461i915_gem_phys_pwrite(struct drm_device *dev, struct drm_gem_object *obj,
3462 struct drm_i915_gem_pwrite *args,
3463 struct drm_file *file_priv)
3464{
3465 struct drm_i915_gem_object *obj_priv = obj->driver_private;
3466 void *obj_addr;
3467 int ret;
3468 char __user *user_data;
3469
3470 user_data = (char __user *) (uintptr_t) args->data_ptr;
3471 obj_addr = obj_priv->phys_obj->handle->vaddr + args->offset;
3472
3473 DRM_ERROR("obj_addr %p, %lld\n", obj_addr, args->size);
3474 ret = copy_from_user(obj_addr, user_data, args->size);
3475 if (ret)
3476 return -EFAULT;
3477
3478 drm_agp_chipset_flush(dev);
3479 return 0;
3480}
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 0cadafbef411..6290219de6c8 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -411,6 +411,12 @@ int i915_enable_vblank(struct drm_device *dev, int pipe)
411{ 411{
412 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; 412 drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
413 unsigned long irqflags; 413 unsigned long irqflags;
414 int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF;
415 u32 pipeconf;
416
417 pipeconf = I915_READ(pipeconf_reg);
418 if (!(pipeconf & PIPEACONF_ENABLE))
419 return -EINVAL;
414 420
415 spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags); 421 spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags);
416 if (IS_I965G(dev)) 422 if (IS_I965G(dev))
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 8ccb9c3ab868..31c3732b7a69 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -401,6 +401,8 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
401 I915_WRITE(dspstride, crtc->fb->pitch); 401 I915_WRITE(dspstride, crtc->fb->pitch);
402 402
403 dspcntr = I915_READ(dspcntr_reg); 403 dspcntr = I915_READ(dspcntr_reg);
404 /* Mask out pixel format bits in case we change it */
405 dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
404 switch (crtc->fb->bits_per_pixel) { 406 switch (crtc->fb->bits_per_pixel) {
405 case 8: 407 case 8:
406 dspcntr |= DISPPLANE_8BPP; 408 dspcntr |= DISPPLANE_8BPP;
@@ -1014,21 +1016,25 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
1014 1016
1015 if (bo->size < width * height * 4) { 1017 if (bo->size < width * height * 4) {
1016 DRM_ERROR("buffer is to small\n"); 1018 DRM_ERROR("buffer is to small\n");
1017 drm_gem_object_unreference(bo); 1019 ret = -ENOMEM;
1018 return -ENOMEM; 1020 goto fail;
1019 } 1021 }
1020 1022
1021 if (dev_priv->cursor_needs_physical) { 1023 /* we only need to pin inside GTT if cursor is non-phy */
1022 addr = dev->agp->base + obj_priv->gtt_offset; 1024 if (!dev_priv->cursor_needs_physical) {
1023 } else { 1025 ret = i915_gem_object_pin(bo, PAGE_SIZE);
1026 if (ret) {
1027 DRM_ERROR("failed to pin cursor bo\n");
1028 goto fail;
1029 }
1024 addr = obj_priv->gtt_offset; 1030 addr = obj_priv->gtt_offset;
1025 } 1031 } else {
1026 1032 ret = i915_gem_attach_phys_object(dev, bo, (pipe == 0) ? I915_GEM_PHYS_CURSOR_0 : I915_GEM_PHYS_CURSOR_1);
1027 ret = i915_gem_object_pin(bo, PAGE_SIZE); 1033 if (ret) {
1028 if (ret) { 1034 DRM_ERROR("failed to attach phys object\n");
1029 DRM_ERROR("failed to pin cursor bo\n"); 1035 goto fail;
1030 drm_gem_object_unreference(bo); 1036 }
1031 return ret; 1037 addr = obj_priv->phys_obj->handle->busaddr;
1032 } 1038 }
1033 1039
1034 temp = 0; 1040 temp = 0;
@@ -1041,14 +1047,25 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
1041 I915_WRITE(base, addr); 1047 I915_WRITE(base, addr);
1042 1048
1043 if (intel_crtc->cursor_bo) { 1049 if (intel_crtc->cursor_bo) {
1044 i915_gem_object_unpin(intel_crtc->cursor_bo); 1050 if (dev_priv->cursor_needs_physical) {
1051 if (intel_crtc->cursor_bo != bo)
1052 i915_gem_detach_phys_object(dev, intel_crtc->cursor_bo);
1053 } else
1054 i915_gem_object_unpin(intel_crtc->cursor_bo);
1055 mutex_lock(&dev->struct_mutex);
1045 drm_gem_object_unreference(intel_crtc->cursor_bo); 1056 drm_gem_object_unreference(intel_crtc->cursor_bo);
1057 mutex_unlock(&dev->struct_mutex);
1046 } 1058 }
1047 1059
1048 intel_crtc->cursor_addr = addr; 1060 intel_crtc->cursor_addr = addr;
1049 intel_crtc->cursor_bo = bo; 1061 intel_crtc->cursor_bo = bo;
1050 1062
1051 return 0; 1063 return 0;
1064fail:
1065 mutex_lock(&dev->struct_mutex);
1066 drm_gem_object_unreference(bo);
1067 mutex_unlock(&dev->struct_mutex);
1068 return ret;
1052} 1069}
1053 1070
1054static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) 1071static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index ccecfaf6307b..6b1148fc2cbe 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -340,6 +340,18 @@ static void intel_lvds_destroy(struct drm_connector *connector)
340 kfree(connector); 340 kfree(connector);
341} 341}
342 342
343static int intel_lvds_set_property(struct drm_connector *connector,
344 struct drm_property *property,
345 uint64_t value)
346{
347 struct drm_device *dev = connector->dev;
348
349 if (property == dev->mode_config.dpms_property && connector->encoder)
350 intel_lvds_dpms(connector->encoder, (uint32_t)(value & 0xf));
351
352 return 0;
353}
354
343static const struct drm_encoder_helper_funcs intel_lvds_helper_funcs = { 355static const struct drm_encoder_helper_funcs intel_lvds_helper_funcs = {
344 .dpms = intel_lvds_dpms, 356 .dpms = intel_lvds_dpms,
345 .mode_fixup = intel_lvds_mode_fixup, 357 .mode_fixup = intel_lvds_mode_fixup,
@@ -359,6 +371,7 @@ static const struct drm_connector_funcs intel_lvds_connector_funcs = {
359 .restore = intel_lvds_restore, 371 .restore = intel_lvds_restore,
360 .detect = intel_lvds_detect, 372 .detect = intel_lvds_detect,
361 .fill_modes = drm_helper_probe_single_connector_modes, 373 .fill_modes = drm_helper_probe_single_connector_modes,
374 .set_property = intel_lvds_set_property,
362 .destroy = intel_lvds_destroy, 375 .destroy = intel_lvds_destroy,
363}; 376};
364 377
@@ -456,6 +469,13 @@ void intel_lvds_init(struct drm_device *dev)
456 dev_priv->panel_fixed_mode = 469 dev_priv->panel_fixed_mode =
457 drm_mode_duplicate(dev, dev_priv->vbt_mode); 470 drm_mode_duplicate(dev, dev_priv->vbt_mode);
458 mutex_unlock(&dev->mode_config.mutex); 471 mutex_unlock(&dev->mode_config.mutex);
472 if (dev_priv->panel_fixed_mode) {
473 dev_priv->panel_fixed_mode->type |=
474 DRM_MODE_TYPE_PREFERRED;
475 drm_mode_probed_add(connector,
476 dev_priv->panel_fixed_mode);
477 goto out;
478 }
459 } 479 }
460 480
461 /* 481 /*
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 4b33bc82cc24..b84bf066879b 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -189,6 +189,16 @@ config SENSORS_ADT7473
189 This driver can also be built as a module. If so, the module 189 This driver can also be built as a module. If so, the module
190 will be called adt7473. 190 will be called adt7473.
191 191
192config SENSORS_ADT7475
193 tristate "Analog Devices ADT7475"
194 depends on I2C && EXPERIMENTAL
195 help
196 If you say yes here you get support for the Analog Devices
197 ADT7475 hardware monitoring chips.
198
199 This driver can also be build as a module. If so, the module
200 will be called adt7475.
201
192config SENSORS_K8TEMP 202config SENSORS_K8TEMP
193 tristate "AMD Athlon64/FX or Opteron temperature sensor" 203 tristate "AMD Athlon64/FX or Opteron temperature sensor"
194 depends on X86 && PCI && EXPERIMENTAL 204 depends on X86 && PCI && EXPERIMENTAL
@@ -861,6 +871,8 @@ config SENSORS_HDAPS
861config SENSORS_LIS3LV02D 871config SENSORS_LIS3LV02D
862 tristate "STMicroeletronics LIS3LV02Dx three-axis digital accelerometer" 872 tristate "STMicroeletronics LIS3LV02Dx three-axis digital accelerometer"
863 depends on ACPI && INPUT 873 depends on ACPI && INPUT
874 select NEW_LEDS
875 select LEDS_CLASS
864 default n 876 default n
865 help 877 help
866 This driver provides support for the LIS3LV02Dx accelerometer. In 878 This driver provides support for the LIS3LV02Dx accelerometer. In
@@ -872,10 +884,16 @@ config SENSORS_LIS3LV02D
872 /sys/devices/platform/lis3lv02d. 884 /sys/devices/platform/lis3lv02d.
873 885
874 This driver also provides an absolute input class device, allowing 886 This driver also provides an absolute input class device, allowing
875 the laptop to act as a pinball machine-esque joystick. 887 the laptop to act as a pinball machine-esque joystick. On HP laptops,
888 if the led infrastructure is activated, support for a led indicating
889 disk protection will be provided as hp:red:hddprotection.
876 890
877 This driver can also be built as a module. If so, the module 891 This driver can also be built as modules. If so, the core module
878 will be called lis3lv02d. 892 will be called lis3lv02d and a specific module for HP laptops will be
893 called hp_accel.
894
895 Say Y here if you have an applicable laptop and want to experience
896 the awesome power of lis3lv02d.
879 897
880config SENSORS_APPLESMC 898config SENSORS_APPLESMC
881 tristate "Apple SMC (Motion sensor, light sensor, keyboard backlight)" 899 tristate "Apple SMC (Motion sensor, light sensor, keyboard backlight)"
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index 19cb1ace3eb4..2e80f37f39eb 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -28,6 +28,8 @@ obj-$(CONFIG_SENSORS_ADS7828) += ads7828.o
28obj-$(CONFIG_SENSORS_ADT7462) += adt7462.o 28obj-$(CONFIG_SENSORS_ADT7462) += adt7462.o
29obj-$(CONFIG_SENSORS_ADT7470) += adt7470.o 29obj-$(CONFIG_SENSORS_ADT7470) += adt7470.o
30obj-$(CONFIG_SENSORS_ADT7473) += adt7473.o 30obj-$(CONFIG_SENSORS_ADT7473) += adt7473.o
31obj-$(CONFIG_SENSORS_ADT7475) += adt7475.o
32
31obj-$(CONFIG_SENSORS_APPLESMC) += applesmc.o 33obj-$(CONFIG_SENSORS_APPLESMC) += applesmc.o
32obj-$(CONFIG_SENSORS_AMS) += ams/ 34obj-$(CONFIG_SENSORS_AMS) += ams/
33obj-$(CONFIG_SENSORS_ATXP1) += atxp1.o 35obj-$(CONFIG_SENSORS_ATXP1) += atxp1.o
diff --git a/drivers/hwmon/abituguru3.c b/drivers/hwmon/abituguru3.c
index 70bb854086df..e52b38806d03 100644
--- a/drivers/hwmon/abituguru3.c
+++ b/drivers/hwmon/abituguru3.c
@@ -279,7 +279,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
279 { "OTES1 Fan", 36, 2, 60, 1, 0 }, 279 { "OTES1 Fan", 36, 2, 60, 1, 0 },
280 { NULL, 0, 0, 0, 0, 0 } } 280 { NULL, 0, 0, 0, 0, 0 } }
281 }, 281 },
282 { 0x0011, "AT8 32X(ATI RD580-ULI M1575)", { 282 { 0x0011, "AT8 32X", {
283 { "CPU Core", 0, 0, 10, 1, 0 }, 283 { "CPU Core", 0, 0, 10, 1, 0 },
284 { "DDR", 1, 0, 20, 1, 0 }, 284 { "DDR", 1, 0, 20, 1, 0 },
285 { "DDR VTT", 2, 0, 10, 1, 0 }, 285 { "DDR VTT", 2, 0, 10, 1, 0 },
@@ -402,7 +402,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
402 { "AUX3 Fan", 36, 2, 60, 1, 0 }, 402 { "AUX3 Fan", 36, 2, 60, 1, 0 },
403 { NULL, 0, 0, 0, 0, 0 } } 403 { NULL, 0, 0, 0, 0, 0 } }
404 }, 404 },
405 { 0x0016, "AW9D-MAX (Intel i975-ICH7)", { 405 { 0x0016, "AW9D-MAX", {
406 { "CPU Core", 0, 0, 10, 1, 0 }, 406 { "CPU Core", 0, 0, 10, 1, 0 },
407 { "DDR2", 1, 0, 20, 1, 0 }, 407 { "DDR2", 1, 0, 20, 1, 0 },
408 { "DDR2 VTT", 2, 0, 10, 1, 0 }, 408 { "DDR2 VTT", 2, 0, 10, 1, 0 },
@@ -482,7 +482,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
482 { "AUX3 Fan", 36, 2, 60, 1, 0 }, 482 { "AUX3 Fan", 36, 2, 60, 1, 0 },
483 { NULL, 0, 0, 0, 0, 0 } } 483 { NULL, 0, 0, 0, 0, 0 } }
484 }, 484 },
485 { 0x0019, NULL /* Unknown, need DMI string */, { 485 { 0x0019, "IN9 32X MAX", {
486 { "CPU Core", 7, 0, 10, 1, 0 }, 486 { "CPU Core", 7, 0, 10, 1, 0 },
487 { "DDR2", 13, 0, 20, 1, 0 }, 487 { "DDR2", 13, 0, 20, 1, 0 },
488 { "DDR2 VTT", 14, 0, 10, 1, 0 }, 488 { "DDR2 VTT", 14, 0, 10, 1, 0 },
@@ -509,7 +509,7 @@ static const struct abituguru3_motherboard_info abituguru3_motherboards[] = {
509 { "AUX3 FAN", 36, 2, 60, 1, 0 }, 509 { "AUX3 FAN", 36, 2, 60, 1, 0 },
510 { NULL, 0, 0, 0, 0, 0 } } 510 { NULL, 0, 0, 0, 0, 0 } }
511 }, 511 },
512 { 0x001A, "IP35 Pro(Intel P35-ICH9R)", { 512 { 0x001A, "IP35 Pro", {
513 { "CPU Core", 0, 0, 10, 1, 0 }, 513 { "CPU Core", 0, 0, 10, 1, 0 },
514 { "DDR2", 1, 0, 20, 1, 0 }, 514 { "DDR2", 1, 0, 20, 1, 0 },
515 { "DDR2 VTT", 2, 0, 10, 1, 0 }, 515 { "DDR2 VTT", 2, 0, 10, 1, 0 },
@@ -1128,6 +1128,7 @@ static int __init abituguru3_dmi_detect(void)
1128{ 1128{
1129 const char *board_vendor, *board_name; 1129 const char *board_vendor, *board_name;
1130 int i, err = (force) ? 1 : -ENODEV; 1130 int i, err = (force) ? 1 : -ENODEV;
1131 size_t sublen;
1131 1132
1132 board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); 1133 board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR);
1133 if (!board_vendor || strcmp(board_vendor, "http://www.abit.com.tw/")) 1134 if (!board_vendor || strcmp(board_vendor, "http://www.abit.com.tw/"))
@@ -1137,9 +1138,20 @@ static int __init abituguru3_dmi_detect(void)
1137 if (!board_name) 1138 if (!board_name)
1138 return err; 1139 return err;
1139 1140
1141 /* At the moment, we don't care about the part of the vendor
1142 * DMI string contained in brackets. Truncate the string at
1143 * the first occurrence of a bracket. Trim any trailing space
1144 * from the substring.
1145 */
1146 sublen = strcspn(board_name, "(");
1147 while (sublen > 0 && board_name[sublen - 1] == ' ')
1148 sublen--;
1149
1140 for (i = 0; abituguru3_motherboards[i].id; i++) { 1150 for (i = 0; abituguru3_motherboards[i].id; i++) {
1141 const char *dmi_name = abituguru3_motherboards[i].dmi_name; 1151 const char *dmi_name = abituguru3_motherboards[i].dmi_name;
1142 if (dmi_name && !strcmp(dmi_name, board_name)) 1152 if (!dmi_name || strlen(dmi_name) != sublen)
1153 continue;
1154 if (!strncasecmp(board_name, dmi_name, sublen))
1143 break; 1155 break;
1144 } 1156 }
1145 1157
@@ -1153,7 +1165,7 @@ static int __init abituguru3_dmi_detect(void)
1153 1165
1154static inline int abituguru3_dmi_detect(void) 1166static inline int abituguru3_dmi_detect(void)
1155{ 1167{
1156 return -ENODEV; 1168 return 1;
1157} 1169}
1158 1170
1159#endif /* CONFIG_DMI */ 1171#endif /* CONFIG_DMI */
diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
new file mode 100644
index 000000000000..d39877a7da63
--- /dev/null
+++ b/drivers/hwmon/adt7475.c
@@ -0,0 +1,1221 @@
1/*
2 * adt7475 - Thermal sensor driver for the ADT7475 chip and derivatives
3 * Copyright (C) 2007-2008, Advanced Micro Devices, Inc.
4 * Copyright (C) 2008 Jordan Crouse <jordan@cosmicpenguin.net>
5 * Copyright (C) 2008 Hans de Goede <hdegoede@redhat.com>
6
7 * Derived from the lm83 driver by Jean Delvare
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12 */
13
14#include <linux/module.h>
15#include <linux/init.h>
16#include <linux/slab.h>
17#include <linux/i2c.h>
18#include <linux/hwmon.h>
19#include <linux/hwmon-sysfs.h>
20#include <linux/err.h>
21
22/* Indexes for the sysfs hooks */
23
24#define INPUT 0
25#define MIN 1
26#define MAX 2
27#define CONTROL 3
28#define OFFSET 3
29#define AUTOMIN 4
30#define THERM 5
31#define HYSTERSIS 6
32
33/* These are unique identifiers for the sysfs functions - unlike the
34 numbers above, these are not also indexes into an array
35*/
36
37#define ALARM 9
38#define FAULT 10
39
40/* 7475 Common Registers */
41
42#define REG_VOLTAGE_BASE 0x21
43#define REG_TEMP_BASE 0x25
44#define REG_TACH_BASE 0x28
45#define REG_PWM_BASE 0x30
46#define REG_PWM_MAX_BASE 0x38
47
48#define REG_DEVID 0x3D
49#define REG_VENDID 0x3E
50
51#define REG_STATUS1 0x41
52#define REG_STATUS2 0x42
53
54#define REG_VOLTAGE_MIN_BASE 0x46
55#define REG_VOLTAGE_MAX_BASE 0x47
56
57#define REG_TEMP_MIN_BASE 0x4E
58#define REG_TEMP_MAX_BASE 0x4F
59
60#define REG_TACH_MIN_BASE 0x54
61
62#define REG_PWM_CONFIG_BASE 0x5C
63
64#define REG_TEMP_TRANGE_BASE 0x5F
65
66#define REG_PWM_MIN_BASE 0x64
67
68#define REG_TEMP_TMIN_BASE 0x67
69#define REG_TEMP_THERM_BASE 0x6A
70
71#define REG_REMOTE1_HYSTERSIS 0x6D
72#define REG_REMOTE2_HYSTERSIS 0x6E
73
74#define REG_TEMP_OFFSET_BASE 0x70
75
76#define REG_EXTEND1 0x76
77#define REG_EXTEND2 0x77
78#define REG_CONFIG5 0x7C
79
80#define CONFIG5_TWOSCOMP 0x01
81#define CONFIG5_TEMPOFFSET 0x02
82
83/* ADT7475 Settings */
84
85#define ADT7475_VOLTAGE_COUNT 2
86#define ADT7475_TEMP_COUNT 3
87#define ADT7475_TACH_COUNT 4
88#define ADT7475_PWM_COUNT 3
89
90/* Macro to read the registers */
91
92#define adt7475_read(reg) i2c_smbus_read_byte_data(client, (reg))
93
94/* Macros to easily index the registers */
95
96#define TACH_REG(idx) (REG_TACH_BASE + ((idx) * 2))
97#define TACH_MIN_REG(idx) (REG_TACH_MIN_BASE + ((idx) * 2))
98
99#define PWM_REG(idx) (REG_PWM_BASE + (idx))
100#define PWM_MAX_REG(idx) (REG_PWM_MAX_BASE + (idx))
101#define PWM_MIN_REG(idx) (REG_PWM_MIN_BASE + (idx))
102#define PWM_CONFIG_REG(idx) (REG_PWM_CONFIG_BASE + (idx))
103
104#define VOLTAGE_REG(idx) (REG_VOLTAGE_BASE + (idx))
105#define VOLTAGE_MIN_REG(idx) (REG_VOLTAGE_MIN_BASE + ((idx) * 2))
106#define VOLTAGE_MAX_REG(idx) (REG_VOLTAGE_MAX_BASE + ((idx) * 2))
107
108#define TEMP_REG(idx) (REG_TEMP_BASE + (idx))
109#define TEMP_MIN_REG(idx) (REG_TEMP_MIN_BASE + ((idx) * 2))
110#define TEMP_MAX_REG(idx) (REG_TEMP_MAX_BASE + ((idx) * 2))
111#define TEMP_TMIN_REG(idx) (REG_TEMP_TMIN_BASE + (idx))
112#define TEMP_THERM_REG(idx) (REG_TEMP_THERM_BASE + (idx))
113#define TEMP_OFFSET_REG(idx) (REG_TEMP_OFFSET_BASE + (idx))
114#define TEMP_TRANGE_REG(idx) (REG_TEMP_TRANGE_BASE + (idx))
115
116static unsigned short normal_i2c[] = { 0x2e, I2C_CLIENT_END };
117
118I2C_CLIENT_INSMOD_1(adt7475);
119
120static const struct i2c_device_id adt7475_id[] = {
121 { "adt7475", adt7475 },
122 { }
123};
124MODULE_DEVICE_TABLE(i2c, adt7475_id);
125
126struct adt7475_data {
127 struct device *hwmon_dev;
128 struct mutex lock;
129
130 unsigned long measure_updated;
131 unsigned long limits_updated;
132 char valid;
133
134 u8 config5;
135 u16 alarms;
136 u16 voltage[3][3];
137 u16 temp[7][3];
138 u16 tach[2][4];
139 u8 pwm[4][3];
140 u8 range[3];
141 u8 pwmctl[3];
142 u8 pwmchan[3];
143};
144
145static struct i2c_driver adt7475_driver;
146static struct adt7475_data *adt7475_update_device(struct device *dev);
147static void adt7475_read_hystersis(struct i2c_client *client);
148static void adt7475_read_pwm(struct i2c_client *client, int index);
149
150/* Given a temp value, convert it to register value */
151
152static inline u16 temp2reg(struct adt7475_data *data, long val)
153{
154 u16 ret;
155
156 if (!(data->config5 & CONFIG5_TWOSCOMP)) {
157 val = SENSORS_LIMIT(val, -64000, 191000);
158 ret = (val + 64500) / 1000;
159 } else {
160 val = SENSORS_LIMIT(val, -128000, 127000);
161 if (val < -500)
162 ret = (256500 + val) / 1000;
163 else
164 ret = (val + 500) / 1000;
165 }
166
167 return ret << 2;
168}
169
170/* Given a register value, convert it to a real temp value */
171
172static inline int reg2temp(struct adt7475_data *data, u16 reg)
173{
174 if (data->config5 & CONFIG5_TWOSCOMP) {
175 if (reg >= 512)
176 return (reg - 1024) * 250;
177 else
178 return reg * 250;
179 } else
180 return (reg - 256) * 250;
181}
182
183static inline int tach2rpm(u16 tach)
184{
185 if (tach == 0 || tach == 0xFFFF)
186 return 0;
187
188 return (90000 * 60) / tach;
189}
190
191static inline u16 rpm2tach(unsigned long rpm)
192{
193 if (rpm == 0)
194 return 0;
195
196 return SENSORS_LIMIT((90000 * 60) / rpm, 1, 0xFFFF);
197}
198
199static inline int reg2vcc(u16 reg)
200{
201 return (4296 * reg) / 1000;
202}
203
204static inline int reg2vccp(u16 reg)
205{
206 return (2929 * reg) / 1000;
207}
208
209static inline u16 vcc2reg(long vcc)
210{
211 vcc = SENSORS_LIMIT(vcc, 0, 4396);
212 return (vcc * 1000) / 4296;
213}
214
215static inline u16 vccp2reg(long vcc)
216{
217 vcc = SENSORS_LIMIT(vcc, 0, 2998);
218 return (vcc * 1000) / 2929;
219}
220
221static u16 adt7475_read_word(struct i2c_client *client, int reg)
222{
223 u16 val;
224
225 val = i2c_smbus_read_byte_data(client, reg);
226 val |= (i2c_smbus_read_byte_data(client, reg + 1) << 8);
227
228 return val;
229}
230
231static void adt7475_write_word(struct i2c_client *client, int reg, u16 val)
232{
233 i2c_smbus_write_byte_data(client, reg + 1, val >> 8);
234 i2c_smbus_write_byte_data(client, reg, val & 0xFF);
235}
236
237/* Find the nearest value in a table - used for pwm frequency and
238 auto temp range */
239static int find_nearest(long val, const int *array, int size)
240{
241 int i;
242
243 if (val < array[0])
244 return 0;
245
246 if (val > array[size - 1])
247 return size - 1;
248
249 for (i = 0; i < size - 1; i++) {
250 int a, b;
251
252 if (val > array[i + 1])
253 continue;
254
255 a = val - array[i];
256 b = array[i + 1] - val;
257
258 return (a <= b) ? i : i + 1;
259 }
260
261 return 0;
262}
263
264static ssize_t show_voltage(struct device *dev, struct device_attribute *attr,
265 char *buf)
266{
267 struct adt7475_data *data = adt7475_update_device(dev);
268 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
269 unsigned short val;
270
271 switch (sattr->nr) {
272 case ALARM:
273 return sprintf(buf, "%d\n",
274 (data->alarms >> (sattr->index + 1)) & 1);
275 default:
276 val = data->voltage[sattr->nr][sattr->index];
277 return sprintf(buf, "%d\n",
278 sattr->index ==
279 0 ? reg2vccp(val) : reg2vcc(val));
280 }
281}
282
283static ssize_t set_voltage(struct device *dev, struct device_attribute *attr,
284 const char *buf, size_t count)
285{
286
287 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
288 struct i2c_client *client = to_i2c_client(dev);
289 struct adt7475_data *data = i2c_get_clientdata(client);
290 unsigned char reg;
291 long val;
292
293 if (strict_strtol(buf, 10, &val))
294 return -EINVAL;
295
296 mutex_lock(&data->lock);
297
298 data->voltage[sattr->nr][sattr->index] =
299 sattr->index ? vcc2reg(val) : vccp2reg(val);
300
301 if (sattr->nr == MIN)
302 reg = VOLTAGE_MIN_REG(sattr->index);
303 else
304 reg = VOLTAGE_MAX_REG(sattr->index);
305
306 i2c_smbus_write_byte_data(client, reg,
307 data->voltage[sattr->nr][sattr->index] >> 2);
308 mutex_unlock(&data->lock);
309
310 return count;
311}
312
313static ssize_t show_temp(struct device *dev, struct device_attribute *attr,
314 char *buf)
315{
316 struct adt7475_data *data = adt7475_update_device(dev);
317 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
318 int out;
319
320 switch (sattr->nr) {
321 case HYSTERSIS:
322 mutex_lock(&data->lock);
323 out = data->temp[sattr->nr][sattr->index];
324 if (sattr->index != 1)
325 out = (out >> 4) & 0xF;
326 else
327 out = (out & 0xF);
328 /* Show the value as an absolute number tied to
329 * THERM */
330 out = reg2temp(data, data->temp[THERM][sattr->index]) -
331 out * 1000;
332 mutex_unlock(&data->lock);
333 break;
334
335 case OFFSET:
336 /* Offset is always 2's complement, regardless of the
337 * setting in CONFIG5 */
338 mutex_lock(&data->lock);
339 out = (s8)data->temp[sattr->nr][sattr->index];
340 if (data->config5 & CONFIG5_TEMPOFFSET)
341 out *= 1000;
342 else
343 out *= 500;
344 mutex_unlock(&data->lock);
345 break;
346
347 case ALARM:
348 out = (data->alarms >> (sattr->index + 4)) & 1;
349 break;
350
351 case FAULT:
352 /* Note - only for remote1 and remote2 */
353 out = data->alarms & (sattr->index ? 0x8000 : 0x4000);
354 out = out ? 0 : 1;
355 break;
356
357 default:
358 /* All other temp values are in the configured format */
359 out = reg2temp(data, data->temp[sattr->nr][sattr->index]);
360 }
361
362 return sprintf(buf, "%d\n", out);
363}
364
365static ssize_t set_temp(struct device *dev, struct device_attribute *attr,
366 const char *buf, size_t count)
367{
368 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
369 struct i2c_client *client = to_i2c_client(dev);
370 struct adt7475_data *data = i2c_get_clientdata(client);
371 unsigned char reg = 0;
372 u8 out;
373 int temp;
374 long val;
375
376 if (strict_strtol(buf, 10, &val))
377 return -EINVAL;
378
379 mutex_lock(&data->lock);
380
381 /* We need the config register in all cases for temp <-> reg conv. */
382 data->config5 = adt7475_read(REG_CONFIG5);
383
384 switch (sattr->nr) {
385 case OFFSET:
386 if (data->config5 & CONFIG5_TEMPOFFSET) {
387 val = SENSORS_LIMIT(val, -63000, 127000);
388 out = data->temp[OFFSET][sattr->index] = val / 1000;
389 } else {
390 val = SENSORS_LIMIT(val, -63000, 64000);
391 out = data->temp[OFFSET][sattr->index] = val / 500;
392 }
393 break;
394
395 case HYSTERSIS:
396 /* The value will be given as an absolute value, turn it
397 into an offset based on THERM */
398
399 /* Read fresh THERM and HYSTERSIS values from the chip */
400 data->temp[THERM][sattr->index] =
401 adt7475_read(TEMP_THERM_REG(sattr->index)) << 2;
402 adt7475_read_hystersis(client);
403
404 temp = reg2temp(data, data->temp[THERM][sattr->index]);
405 val = SENSORS_LIMIT(val, temp - 15000, temp);
406 val = (temp - val) / 1000;
407
408 if (sattr->index != 1) {
409 data->temp[HYSTERSIS][sattr->index] &= 0xF0;
410 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF) << 4;
411 } else {
412 data->temp[HYSTERSIS][sattr->index] &= 0x0F;
413 data->temp[HYSTERSIS][sattr->index] |= (val & 0xF);
414 }
415
416 out = data->temp[HYSTERSIS][sattr->index];
417 break;
418
419 default:
420 data->temp[sattr->nr][sattr->index] = temp2reg(data, val);
421
422 /* We maintain an extra 2 digits of precision for simplicity
423 * - shift those back off before writing the value */
424 out = (u8) (data->temp[sattr->nr][sattr->index] >> 2);
425 }
426
427 switch (sattr->nr) {
428 case MIN:
429 reg = TEMP_MIN_REG(sattr->index);
430 break;
431 case MAX:
432 reg = TEMP_MAX_REG(sattr->index);
433 break;
434 case OFFSET:
435 reg = TEMP_OFFSET_REG(sattr->index);
436 break;
437 case AUTOMIN:
438 reg = TEMP_TMIN_REG(sattr->index);
439 break;
440 case THERM:
441 reg = TEMP_THERM_REG(sattr->index);
442 break;
443 case HYSTERSIS:
444 if (sattr->index != 2)
445 reg = REG_REMOTE1_HYSTERSIS;
446 else
447 reg = REG_REMOTE2_HYSTERSIS;
448
449 break;
450 }
451
452 i2c_smbus_write_byte_data(client, reg, out);
453
454 mutex_unlock(&data->lock);
455 return count;
456}
457
458/* Table of autorange values - the user will write the value in millidegrees,
459 and we'll convert it */
460static const int autorange_table[] = {
461 2000, 2500, 3330, 4000, 5000, 6670, 8000,
462 10000, 13330, 16000, 20000, 26670, 32000, 40000,
463 53330, 80000
464};
465
466static ssize_t show_point2(struct device *dev, struct device_attribute *attr,
467 char *buf)
468{
469 struct adt7475_data *data = adt7475_update_device(dev);
470 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
471 int out, val;
472
473 mutex_lock(&data->lock);
474 out = (data->range[sattr->index] >> 4) & 0x0F;
475 val = reg2temp(data, data->temp[AUTOMIN][sattr->index]);
476 mutex_unlock(&data->lock);
477
478 return sprintf(buf, "%d\n", val + autorange_table[out]);
479}
480
481static ssize_t set_point2(struct device *dev, struct device_attribute *attr,
482 const char *buf, size_t count)
483{
484 struct i2c_client *client = to_i2c_client(dev);
485 struct adt7475_data *data = i2c_get_clientdata(client);
486 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
487 int temp;
488 long val;
489
490 if (strict_strtol(buf, 10, &val))
491 return -EINVAL;
492
493 mutex_lock(&data->lock);
494
495 /* Get a fresh copy of the needed registers */
496 data->config5 = adt7475_read(REG_CONFIG5);
497 data->temp[AUTOMIN][sattr->index] =
498 adt7475_read(TEMP_TMIN_REG(sattr->index)) << 2;
499 data->range[sattr->index] =
500 adt7475_read(TEMP_TRANGE_REG(sattr->index));
501
502 /* The user will write an absolute value, so subtract the start point
503 to figure the range */
504 temp = reg2temp(data, data->temp[AUTOMIN][sattr->index]);
505 val = SENSORS_LIMIT(val, temp + autorange_table[0],
506 temp + autorange_table[ARRAY_SIZE(autorange_table) - 1]);
507 val -= temp;
508
509 /* Find the nearest table entry to what the user wrote */
510 val = find_nearest(val, autorange_table, ARRAY_SIZE(autorange_table));
511
512 data->range[sattr->index] &= ~0xF0;
513 data->range[sattr->index] |= val << 4;
514
515 i2c_smbus_write_byte_data(client, TEMP_TRANGE_REG(sattr->index),
516 data->range[sattr->index]);
517
518 mutex_unlock(&data->lock);
519 return count;
520}
521
522static ssize_t show_tach(struct device *dev, struct device_attribute *attr,
523 char *buf)
524{
525 struct adt7475_data *data = adt7475_update_device(dev);
526 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
527 int out;
528
529 if (sattr->nr == ALARM)
530 out = (data->alarms >> (sattr->index + 10)) & 1;
531 else
532 out = tach2rpm(data->tach[sattr->nr][sattr->index]);
533
534 return sprintf(buf, "%d\n", out);
535}
536
537static ssize_t set_tach(struct device *dev, struct device_attribute *attr,
538 const char *buf, size_t count)
539{
540
541 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
542 struct i2c_client *client = to_i2c_client(dev);
543 struct adt7475_data *data = i2c_get_clientdata(client);
544 unsigned long val;
545
546 if (strict_strtoul(buf, 10, &val))
547 return -EINVAL;
548
549 mutex_lock(&data->lock);
550
551 data->tach[MIN][sattr->index] = rpm2tach(val);
552
553 adt7475_write_word(client, TACH_MIN_REG(sattr->index),
554 data->tach[MIN][sattr->index]);
555
556 mutex_unlock(&data->lock);
557 return count;
558}
559
560static ssize_t show_pwm(struct device *dev, struct device_attribute *attr,
561 char *buf)
562{
563 struct adt7475_data *data = adt7475_update_device(dev);
564 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
565
566 return sprintf(buf, "%d\n", data->pwm[sattr->nr][sattr->index]);
567}
568
569static ssize_t show_pwmchan(struct device *dev, struct device_attribute *attr,
570 char *buf)
571{
572 struct adt7475_data *data = adt7475_update_device(dev);
573 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
574
575 return sprintf(buf, "%d\n", data->pwmchan[sattr->index]);
576}
577
578static ssize_t show_pwmctrl(struct device *dev, struct device_attribute *attr,
579 char *buf)
580{
581 struct adt7475_data *data = adt7475_update_device(dev);
582 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
583
584 return sprintf(buf, "%d\n", data->pwmctl[sattr->index]);
585}
586
587static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
588 const char *buf, size_t count)
589{
590
591 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
592 struct i2c_client *client = to_i2c_client(dev);
593 struct adt7475_data *data = i2c_get_clientdata(client);
594 unsigned char reg = 0;
595 long val;
596
597 if (strict_strtol(buf, 10, &val))
598 return -EINVAL;
599
600 mutex_lock(&data->lock);
601
602 switch (sattr->nr) {
603 case INPUT:
604 /* Get a fresh value for CONTROL */
605 data->pwm[CONTROL][sattr->index] =
606 adt7475_read(PWM_CONFIG_REG(sattr->index));
607
608 /* If we are not in manual mode, then we shouldn't allow
609 * the user to set the pwm speed */
610 if (((data->pwm[CONTROL][sattr->index] >> 5) & 7) != 7) {
611 mutex_unlock(&data->lock);
612 return count;
613 }
614
615 reg = PWM_REG(sattr->index);
616 break;
617
618 case MIN:
619 reg = PWM_MIN_REG(sattr->index);
620 break;
621
622 case MAX:
623 reg = PWM_MAX_REG(sattr->index);
624 break;
625 }
626
627 data->pwm[sattr->nr][sattr->index] = SENSORS_LIMIT(val, 0, 0xFF);
628 i2c_smbus_write_byte_data(client, reg,
629 data->pwm[sattr->nr][sattr->index]);
630
631 mutex_unlock(&data->lock);
632
633 return count;
634}
635
636/* Called by set_pwmctrl and set_pwmchan */
637
638static int hw_set_pwm(struct i2c_client *client, int index,
639 unsigned int pwmctl, unsigned int pwmchan)
640{
641 struct adt7475_data *data = i2c_get_clientdata(client);
642 long val = 0;
643
644 switch (pwmctl) {
645 case 0:
646 val = 0x03; /* Run at full speed */
647 break;
648 case 1:
649 val = 0x07; /* Manual mode */
650 break;
651 case 2:
652 switch (pwmchan) {
653 case 1:
654 /* Remote1 controls PWM */
655 val = 0x00;
656 break;
657 case 2:
658 /* local controls PWM */
659 val = 0x01;
660 break;
661 case 4:
662 /* remote2 controls PWM */
663 val = 0x02;
664 break;
665 case 6:
666 /* local/remote2 control PWM */
667 val = 0x05;
668 break;
669 case 7:
670 /* All three control PWM */
671 val = 0x06;
672 break;
673 default:
674 return -EINVAL;
675 }
676 break;
677 default:
678 return -EINVAL;
679 }
680
681 data->pwmctl[index] = pwmctl;
682 data->pwmchan[index] = pwmchan;
683
684 data->pwm[CONTROL][index] &= ~0xE0;
685 data->pwm[CONTROL][index] |= (val & 7) << 5;
686
687 i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
688 data->pwm[CONTROL][index]);
689
690 return 0;
691}
692
693static ssize_t set_pwmchan(struct device *dev, struct device_attribute *attr,
694 const char *buf, size_t count)
695{
696 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
697 struct i2c_client *client = to_i2c_client(dev);
698 struct adt7475_data *data = i2c_get_clientdata(client);
699 int r;
700 long val;
701
702 if (strict_strtol(buf, 10, &val))
703 return -EINVAL;
704
705 mutex_lock(&data->lock);
706 /* Read Modify Write PWM values */
707 adt7475_read_pwm(client, sattr->index);
708 r = hw_set_pwm(client, sattr->index, data->pwmctl[sattr->index], val);
709 if (r)
710 count = r;
711 mutex_unlock(&data->lock);
712
713 return count;
714}
715
716static ssize_t set_pwmctrl(struct device *dev, struct device_attribute *attr,
717 const char *buf, size_t count)
718{
719 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
720 struct i2c_client *client = to_i2c_client(dev);
721 struct adt7475_data *data = i2c_get_clientdata(client);
722 int r;
723 long val;
724
725 if (strict_strtol(buf, 10, &val))
726 return -EINVAL;
727
728 mutex_lock(&data->lock);
729 /* Read Modify Write PWM values */
730 adt7475_read_pwm(client, sattr->index);
731 r = hw_set_pwm(client, sattr->index, val, data->pwmchan[sattr->index]);
732 if (r)
733 count = r;
734 mutex_unlock(&data->lock);
735
736 return count;
737}
738
739/* List of frequencies for the PWM */
740static const int pwmfreq_table[] = {
741 11, 14, 22, 29, 35, 44, 58, 88
742};
743
744static ssize_t show_pwmfreq(struct device *dev, struct device_attribute *attr,
745 char *buf)
746{
747 struct adt7475_data *data = adt7475_update_device(dev);
748 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
749
750 return sprintf(buf, "%d\n",
751 pwmfreq_table[data->range[sattr->index] & 7]);
752}
753
754static ssize_t set_pwmfreq(struct device *dev, struct device_attribute *attr,
755 const char *buf, size_t count)
756{
757 struct sensor_device_attribute_2 *sattr = to_sensor_dev_attr_2(attr);
758 struct i2c_client *client = to_i2c_client(dev);
759 struct adt7475_data *data = i2c_get_clientdata(client);
760 int out;
761 long val;
762
763 if (strict_strtol(buf, 10, &val))
764 return -EINVAL;
765
766 out = find_nearest(val, pwmfreq_table, ARRAY_SIZE(pwmfreq_table));
767
768 mutex_lock(&data->lock);
769
770 data->range[sattr->index] =
771 adt7475_read(TEMP_TRANGE_REG(sattr->index));
772 data->range[sattr->index] &= ~7;
773 data->range[sattr->index] |= out;
774
775 i2c_smbus_write_byte_data(client, TEMP_TRANGE_REG(sattr->index),
776 data->range[sattr->index]);
777
778 mutex_unlock(&data->lock);
779 return count;
780}
781
782static SENSOR_DEVICE_ATTR_2(in1_input, S_IRUGO, show_voltage, NULL, INPUT, 0);
783static SENSOR_DEVICE_ATTR_2(in1_max, S_IRUGO | S_IWUSR, show_voltage,
784 set_voltage, MAX, 0);
785static SENSOR_DEVICE_ATTR_2(in1_min, S_IRUGO | S_IWUSR, show_voltage,
786 set_voltage, MIN, 0);
787static SENSOR_DEVICE_ATTR_2(in1_alarm, S_IRUGO, show_voltage, NULL, ALARM, 0);
788static SENSOR_DEVICE_ATTR_2(in2_input, S_IRUGO, show_voltage, NULL, INPUT, 1);
789static SENSOR_DEVICE_ATTR_2(in2_max, S_IRUGO | S_IWUSR, show_voltage,
790 set_voltage, MAX, 1);
791static SENSOR_DEVICE_ATTR_2(in2_min, S_IRUGO | S_IWUSR, show_voltage,
792 set_voltage, MIN, 1);
793static SENSOR_DEVICE_ATTR_2(in2_alarm, S_IRUGO, show_voltage, NULL, ALARM, 1);
794static SENSOR_DEVICE_ATTR_2(temp1_input, S_IRUGO, show_temp, NULL, INPUT, 0);
795static SENSOR_DEVICE_ATTR_2(temp1_alarm, S_IRUGO, show_temp, NULL, ALARM, 0);
796static SENSOR_DEVICE_ATTR_2(temp1_fault, S_IRUGO, show_temp, NULL, FAULT, 0);
797static SENSOR_DEVICE_ATTR_2(temp1_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
798 MAX, 0);
799static SENSOR_DEVICE_ATTR_2(temp1_min, S_IRUGO | S_IWUSR, show_temp, set_temp,
800 MIN, 0);
801static SENSOR_DEVICE_ATTR_2(temp1_offset, S_IRUGO | S_IWUSR, show_temp,
802 set_temp, OFFSET, 0);
803static SENSOR_DEVICE_ATTR_2(temp1_auto_point1_temp, S_IRUGO | S_IWUSR,
804 show_temp, set_temp, AUTOMIN, 0);
805static SENSOR_DEVICE_ATTR_2(temp1_auto_point2_temp, S_IRUGO | S_IWUSR,
806 show_point2, set_point2, 0, 0);
807static SENSOR_DEVICE_ATTR_2(temp1_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
808 THERM, 0);
809static SENSOR_DEVICE_ATTR_2(temp1_crit_hyst, S_IRUGO | S_IWUSR, show_temp,
810 set_temp, HYSTERSIS, 0);
811static SENSOR_DEVICE_ATTR_2(temp2_input, S_IRUGO, show_temp, NULL, INPUT, 1);
812static SENSOR_DEVICE_ATTR_2(temp2_alarm, S_IRUGO, show_temp, NULL, ALARM, 1);
813static SENSOR_DEVICE_ATTR_2(temp2_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
814 MAX, 1);
815static SENSOR_DEVICE_ATTR_2(temp2_min, S_IRUGO | S_IWUSR, show_temp, set_temp,
816 MIN, 1);
817static SENSOR_DEVICE_ATTR_2(temp2_offset, S_IRUGO | S_IWUSR, show_temp,
818 set_temp, OFFSET, 1);
819static SENSOR_DEVICE_ATTR_2(temp2_auto_point1_temp, S_IRUGO | S_IWUSR,
820 show_temp, set_temp, AUTOMIN, 1);
821static SENSOR_DEVICE_ATTR_2(temp2_auto_point2_temp, S_IRUGO | S_IWUSR,
822 show_point2, set_point2, 0, 1);
823static SENSOR_DEVICE_ATTR_2(temp2_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
824 THERM, 1);
825static SENSOR_DEVICE_ATTR_2(temp2_crit_hyst, S_IRUGO | S_IWUSR, show_temp,
826 set_temp, HYSTERSIS, 1);
827static SENSOR_DEVICE_ATTR_2(temp3_input, S_IRUGO, show_temp, NULL, INPUT, 2);
828static SENSOR_DEVICE_ATTR_2(temp3_alarm, S_IRUGO, show_temp, NULL, ALARM, 2);
829static SENSOR_DEVICE_ATTR_2(temp3_fault, S_IRUGO, show_temp, NULL, FAULT, 2);
830static SENSOR_DEVICE_ATTR_2(temp3_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
831 MAX, 2);
832static SENSOR_DEVICE_ATTR_2(temp3_min, S_IRUGO | S_IWUSR, show_temp, set_temp,
833 MIN, 2);
834static SENSOR_DEVICE_ATTR_2(temp3_offset, S_IRUGO | S_IWUSR, show_temp,
835 set_temp, OFFSET, 2);
836static SENSOR_DEVICE_ATTR_2(temp3_auto_point1_temp, S_IRUGO | S_IWUSR,
837 show_temp, set_temp, AUTOMIN, 2);
838static SENSOR_DEVICE_ATTR_2(temp3_auto_point2_temp, S_IRUGO | S_IWUSR,
839 show_point2, set_point2, 0, 2);
840static SENSOR_DEVICE_ATTR_2(temp3_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
841 THERM, 2);
842static SENSOR_DEVICE_ATTR_2(temp3_crit_hyst, S_IRUGO | S_IWUSR, show_temp,
843 set_temp, HYSTERSIS, 2);
844static SENSOR_DEVICE_ATTR_2(fan1_input, S_IRUGO, show_tach, NULL, INPUT, 0);
845static SENSOR_DEVICE_ATTR_2(fan1_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
846 MIN, 0);
847static SENSOR_DEVICE_ATTR_2(fan1_alarm, S_IRUGO, show_tach, NULL, ALARM, 0);
848static SENSOR_DEVICE_ATTR_2(fan2_input, S_IRUGO, show_tach, NULL, INPUT, 1);
849static SENSOR_DEVICE_ATTR_2(fan2_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
850 MIN, 1);
851static SENSOR_DEVICE_ATTR_2(fan2_alarm, S_IRUGO, show_tach, NULL, ALARM, 1);
852static SENSOR_DEVICE_ATTR_2(fan3_input, S_IRUGO, show_tach, NULL, INPUT, 2);
853static SENSOR_DEVICE_ATTR_2(fan3_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
854 MIN, 2);
855static SENSOR_DEVICE_ATTR_2(fan3_alarm, S_IRUGO, show_tach, NULL, ALARM, 2);
856static SENSOR_DEVICE_ATTR_2(fan4_input, S_IRUGO, show_tach, NULL, INPUT, 3);
857static SENSOR_DEVICE_ATTR_2(fan4_min, S_IRUGO | S_IWUSR, show_tach, set_tach,
858 MIN, 3);
859static SENSOR_DEVICE_ATTR_2(fan4_alarm, S_IRUGO, show_tach, NULL, ALARM, 3);
860static SENSOR_DEVICE_ATTR_2(pwm1, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT,
861 0);
862static SENSOR_DEVICE_ATTR_2(pwm1_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
863 set_pwmfreq, INPUT, 0);
864static SENSOR_DEVICE_ATTR_2(pwm1_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
865 set_pwmctrl, INPUT, 0);
866static SENSOR_DEVICE_ATTR_2(pwm1_auto_channel_temp, S_IRUGO | S_IWUSR,
867 show_pwmchan, set_pwmchan, INPUT, 0);
868static SENSOR_DEVICE_ATTR_2(pwm1_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
869 set_pwm, MIN, 0);
870static SENSOR_DEVICE_ATTR_2(pwm1_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm,
871 set_pwm, MAX, 0);
872static SENSOR_DEVICE_ATTR_2(pwm2, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT,
873 1);
874static SENSOR_DEVICE_ATTR_2(pwm2_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
875 set_pwmfreq, INPUT, 1);
876static SENSOR_DEVICE_ATTR_2(pwm2_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
877 set_pwmctrl, INPUT, 1);
878static SENSOR_DEVICE_ATTR_2(pwm2_auto_channel_temp, S_IRUGO | S_IWUSR,
879 show_pwmchan, set_pwmchan, INPUT, 1);
880static SENSOR_DEVICE_ATTR_2(pwm2_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
881 set_pwm, MIN, 1);
882static SENSOR_DEVICE_ATTR_2(pwm2_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm,
883 set_pwm, MAX, 1);
884static SENSOR_DEVICE_ATTR_2(pwm3, S_IRUGO | S_IWUSR, show_pwm, set_pwm, INPUT,
885 2);
886static SENSOR_DEVICE_ATTR_2(pwm3_freq, S_IRUGO | S_IWUSR, show_pwmfreq,
887 set_pwmfreq, INPUT, 2);
888static SENSOR_DEVICE_ATTR_2(pwm3_enable, S_IRUGO | S_IWUSR, show_pwmctrl,
889 set_pwmctrl, INPUT, 2);
890static SENSOR_DEVICE_ATTR_2(pwm3_auto_channel_temp, S_IRUGO | S_IWUSR,
891 show_pwmchan, set_pwmchan, INPUT, 2);
892static SENSOR_DEVICE_ATTR_2(pwm3_auto_point1_pwm, S_IRUGO | S_IWUSR, show_pwm,
893 set_pwm, MIN, 2);
894static SENSOR_DEVICE_ATTR_2(pwm3_auto_point2_pwm, S_IRUGO | S_IWUSR, show_pwm,
895 set_pwm, MAX, 2);
896
897static struct attribute *adt7475_attrs[] = {
898 &sensor_dev_attr_in1_input.dev_attr.attr,
899 &sensor_dev_attr_in1_max.dev_attr.attr,
900 &sensor_dev_attr_in1_min.dev_attr.attr,
901 &sensor_dev_attr_in1_alarm.dev_attr.attr,
902 &sensor_dev_attr_in2_input.dev_attr.attr,
903 &sensor_dev_attr_in2_max.dev_attr.attr,
904 &sensor_dev_attr_in2_min.dev_attr.attr,
905 &sensor_dev_attr_in2_alarm.dev_attr.attr,
906 &sensor_dev_attr_temp1_input.dev_attr.attr,
907 &sensor_dev_attr_temp1_alarm.dev_attr.attr,
908 &sensor_dev_attr_temp1_fault.dev_attr.attr,
909 &sensor_dev_attr_temp1_max.dev_attr.attr,
910 &sensor_dev_attr_temp1_min.dev_attr.attr,
911 &sensor_dev_attr_temp1_offset.dev_attr.attr,
912 &sensor_dev_attr_temp1_auto_point1_temp.dev_attr.attr,
913 &sensor_dev_attr_temp1_auto_point2_temp.dev_attr.attr,
914 &sensor_dev_attr_temp1_crit.dev_attr.attr,
915 &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr,
916 &sensor_dev_attr_temp2_input.dev_attr.attr,
917 &sensor_dev_attr_temp2_alarm.dev_attr.attr,
918 &sensor_dev_attr_temp2_max.dev_attr.attr,
919 &sensor_dev_attr_temp2_min.dev_attr.attr,
920 &sensor_dev_attr_temp2_offset.dev_attr.attr,
921 &sensor_dev_attr_temp2_auto_point1_temp.dev_attr.attr,
922 &sensor_dev_attr_temp2_auto_point2_temp.dev_attr.attr,
923 &sensor_dev_attr_temp2_crit.dev_attr.attr,
924 &sensor_dev_attr_temp2_crit_hyst.dev_attr.attr,
925 &sensor_dev_attr_temp3_input.dev_attr.attr,
926 &sensor_dev_attr_temp3_fault.dev_attr.attr,
927 &sensor_dev_attr_temp3_alarm.dev_attr.attr,
928 &sensor_dev_attr_temp3_max.dev_attr.attr,
929 &sensor_dev_attr_temp3_min.dev_attr.attr,
930 &sensor_dev_attr_temp3_offset.dev_attr.attr,
931 &sensor_dev_attr_temp3_auto_point1_temp.dev_attr.attr,
932 &sensor_dev_attr_temp3_auto_point2_temp.dev_attr.attr,
933 &sensor_dev_attr_temp3_crit.dev_attr.attr,
934 &sensor_dev_attr_temp3_crit_hyst.dev_attr.attr,
935 &sensor_dev_attr_fan1_input.dev_attr.attr,
936 &sensor_dev_attr_fan1_min.dev_attr.attr,
937 &sensor_dev_attr_fan1_alarm.dev_attr.attr,
938 &sensor_dev_attr_fan2_input.dev_attr.attr,
939 &sensor_dev_attr_fan2_min.dev_attr.attr,
940 &sensor_dev_attr_fan2_alarm.dev_attr.attr,
941 &sensor_dev_attr_fan3_input.dev_attr.attr,
942 &sensor_dev_attr_fan3_min.dev_attr.attr,
943 &sensor_dev_attr_fan3_alarm.dev_attr.attr,
944 &sensor_dev_attr_fan4_input.dev_attr.attr,
945 &sensor_dev_attr_fan4_min.dev_attr.attr,
946 &sensor_dev_attr_fan4_alarm.dev_attr.attr,
947 &sensor_dev_attr_pwm1.dev_attr.attr,
948 &sensor_dev_attr_pwm1_freq.dev_attr.attr,
949 &sensor_dev_attr_pwm1_enable.dev_attr.attr,
950 &sensor_dev_attr_pwm1_auto_channel_temp.dev_attr.attr,
951 &sensor_dev_attr_pwm1_auto_point1_pwm.dev_attr.attr,
952 &sensor_dev_attr_pwm1_auto_point2_pwm.dev_attr.attr,
953 &sensor_dev_attr_pwm2.dev_attr.attr,
954 &sensor_dev_attr_pwm2_freq.dev_attr.attr,
955 &sensor_dev_attr_pwm2_enable.dev_attr.attr,
956 &sensor_dev_attr_pwm2_auto_channel_temp.dev_attr.attr,
957 &sensor_dev_attr_pwm2_auto_point1_pwm.dev_attr.attr,
958 &sensor_dev_attr_pwm2_auto_point2_pwm.dev_attr.attr,
959 &sensor_dev_attr_pwm3.dev_attr.attr,
960 &sensor_dev_attr_pwm3_freq.dev_attr.attr,
961 &sensor_dev_attr_pwm3_enable.dev_attr.attr,
962 &sensor_dev_attr_pwm3_auto_channel_temp.dev_attr.attr,
963 &sensor_dev_attr_pwm3_auto_point1_pwm.dev_attr.attr,
964 &sensor_dev_attr_pwm3_auto_point2_pwm.dev_attr.attr,
965 NULL,
966};
967
968struct attribute_group adt7475_attr_group = { .attrs = adt7475_attrs };
969
970static int adt7475_detect(struct i2c_client *client, int kind,
971 struct i2c_board_info *info)
972{
973 struct i2c_adapter *adapter = client->adapter;
974
975 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
976 return -ENODEV;
977
978 if (kind <= 0) {
979 if (adt7475_read(REG_VENDID) != 0x41 ||
980 adt7475_read(REG_DEVID) != 0x75) {
981 dev_err(&adapter->dev,
982 "Couldn't detect a adt7475 part at 0x%02x\n",
983 (unsigned int)client->addr);
984 return -ENODEV;
985 }
986 }
987
988 strlcpy(info->type, adt7475_id[0].name, I2C_NAME_SIZE);
989
990 return 0;
991}
992
993static int adt7475_probe(struct i2c_client *client,
994 const struct i2c_device_id *id)
995{
996 struct adt7475_data *data;
997 int i, ret = 0;
998
999 data = kzalloc(sizeof(*data), GFP_KERNEL);
1000 if (data == NULL)
1001 return -ENOMEM;
1002
1003 mutex_init(&data->lock);
1004 i2c_set_clientdata(client, data);
1005
1006 /* Call adt7475_read_pwm for all pwm's as this will reprogram any
1007 pwm's which are disabled to manual mode with 0% duty cycle */
1008 for (i = 0; i < ADT7475_PWM_COUNT; i++)
1009 adt7475_read_pwm(client, i);
1010
1011 ret = sysfs_create_group(&client->dev.kobj, &adt7475_attr_group);
1012 if (ret)
1013 goto efree;
1014
1015 data->hwmon_dev = hwmon_device_register(&client->dev);
1016 if (IS_ERR(data->hwmon_dev)) {
1017 ret = PTR_ERR(data->hwmon_dev);
1018 goto eremove;
1019 }
1020
1021 return 0;
1022
1023eremove:
1024 sysfs_remove_group(&client->dev.kobj, &adt7475_attr_group);
1025efree:
1026 kfree(data);
1027 return ret;
1028}
1029
1030static int adt7475_remove(struct i2c_client *client)
1031{
1032 struct adt7475_data *data = i2c_get_clientdata(client);
1033
1034 hwmon_device_unregister(data->hwmon_dev);
1035 sysfs_remove_group(&client->dev.kobj, &adt7475_attr_group);
1036 kfree(data);
1037
1038 return 0;
1039}
1040
1041static struct i2c_driver adt7475_driver = {
1042 .class = I2C_CLASS_HWMON,
1043 .driver = {
1044 .name = "adt7475",
1045 },
1046 .probe = adt7475_probe,
1047 .remove = adt7475_remove,
1048 .id_table = adt7475_id,
1049 .detect = adt7475_detect,
1050 .address_data = &addr_data,
1051};
1052
1053static void adt7475_read_hystersis(struct i2c_client *client)
1054{
1055 struct adt7475_data *data = i2c_get_clientdata(client);
1056
1057 data->temp[HYSTERSIS][0] = (u16) adt7475_read(REG_REMOTE1_HYSTERSIS);
1058 data->temp[HYSTERSIS][1] = data->temp[HYSTERSIS][0];
1059 data->temp[HYSTERSIS][2] = (u16) adt7475_read(REG_REMOTE2_HYSTERSIS);
1060}
1061
1062static void adt7475_read_pwm(struct i2c_client *client, int index)
1063{
1064 struct adt7475_data *data = i2c_get_clientdata(client);
1065 unsigned int v;
1066
1067 data->pwm[CONTROL][index] = adt7475_read(PWM_CONFIG_REG(index));
1068
1069 /* Figure out the internal value for pwmctrl and pwmchan
1070 based on the current settings */
1071 v = (data->pwm[CONTROL][index] >> 5) & 7;
1072
1073 if (v == 3)
1074 data->pwmctl[index] = 0;
1075 else if (v == 7)
1076 data->pwmctl[index] = 1;
1077 else if (v == 4) {
1078 /* The fan is disabled - we don't want to
1079 support that, so change to manual mode and
1080 set the duty cycle to 0 instead
1081 */
1082 data->pwm[INPUT][index] = 0;
1083 data->pwm[CONTROL][index] &= ~0xE0;
1084 data->pwm[CONTROL][index] |= (7 << 5);
1085
1086 i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
1087 data->pwm[INPUT][index]);
1088
1089 i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
1090 data->pwm[CONTROL][index]);
1091
1092 data->pwmctl[index] = 1;
1093 } else {
1094 data->pwmctl[index] = 2;
1095
1096 switch (v) {
1097 case 0:
1098 data->pwmchan[index] = 1;
1099 break;
1100 case 1:
1101 data->pwmchan[index] = 2;
1102 break;
1103 case 2:
1104 data->pwmchan[index] = 4;
1105 break;
1106 case 5:
1107 data->pwmchan[index] = 6;
1108 break;
1109 case 6:
1110 data->pwmchan[index] = 7;
1111 break;
1112 }
1113 }
1114}
1115
1116static struct adt7475_data *adt7475_update_device(struct device *dev)
1117{
1118 struct i2c_client *client = to_i2c_client(dev);
1119 struct adt7475_data *data = i2c_get_clientdata(client);
1120 u8 ext;
1121 int i;
1122
1123 mutex_lock(&data->lock);
1124
1125 /* Measurement values update every 2 seconds */
1126 if (time_after(jiffies, data->measure_updated + HZ * 2) ||
1127 !data->valid) {
1128 data->alarms = adt7475_read(REG_STATUS2) << 8;
1129 data->alarms |= adt7475_read(REG_STATUS1);
1130
1131 ext = adt7475_read(REG_EXTEND1);
1132 for (i = 0; i < ADT7475_VOLTAGE_COUNT; i++)
1133 data->voltage[INPUT][i] =
1134 (adt7475_read(VOLTAGE_REG(i)) << 2) |
1135 ((ext >> ((i + 1) * 2)) & 3);
1136
1137 ext = adt7475_read(REG_EXTEND2);
1138 for (i = 0; i < ADT7475_TEMP_COUNT; i++)
1139 data->temp[INPUT][i] =
1140 (adt7475_read(TEMP_REG(i)) << 2) |
1141 ((ext >> ((i + 1) * 2)) & 3);
1142
1143 for (i = 0; i < ADT7475_TACH_COUNT; i++)
1144 data->tach[INPUT][i] =
1145 adt7475_read_word(client, TACH_REG(i));
1146
1147 /* Updated by hw when in auto mode */
1148 for (i = 0; i < ADT7475_PWM_COUNT; i++)
1149 data->pwm[INPUT][i] = adt7475_read(PWM_REG(i));
1150
1151 data->measure_updated = jiffies;
1152 }
1153
1154 /* Limits and settings, should never change update every 60 seconds */
1155 if (time_after(jiffies, data->limits_updated + HZ * 2) ||
1156 !data->valid) {
1157 data->config5 = adt7475_read(REG_CONFIG5);
1158
1159 for (i = 0; i < ADT7475_VOLTAGE_COUNT; i++) {
1160 /* Adjust values so they match the input precision */
1161 data->voltage[MIN][i] =
1162 adt7475_read(VOLTAGE_MIN_REG(i)) << 2;
1163 data->voltage[MAX][i] =
1164 adt7475_read(VOLTAGE_MAX_REG(i)) << 2;
1165 }
1166
1167 for (i = 0; i < ADT7475_TEMP_COUNT; i++) {
1168 /* Adjust values so they match the input precision */
1169 data->temp[MIN][i] =
1170 adt7475_read(TEMP_MIN_REG(i)) << 2;
1171 data->temp[MAX][i] =
1172 adt7475_read(TEMP_MAX_REG(i)) << 2;
1173 data->temp[AUTOMIN][i] =
1174 adt7475_read(TEMP_TMIN_REG(i)) << 2;
1175 data->temp[THERM][i] =
1176 adt7475_read(TEMP_THERM_REG(i)) << 2;
1177 data->temp[OFFSET][i] =
1178 adt7475_read(TEMP_OFFSET_REG(i));
1179 }
1180 adt7475_read_hystersis(client);
1181
1182 for (i = 0; i < ADT7475_TACH_COUNT; i++)
1183 data->tach[MIN][i] =
1184 adt7475_read_word(client, TACH_MIN_REG(i));
1185
1186 for (i = 0; i < ADT7475_PWM_COUNT; i++) {
1187 data->pwm[MAX][i] = adt7475_read(PWM_MAX_REG(i));
1188 data->pwm[MIN][i] = adt7475_read(PWM_MIN_REG(i));
1189 /* Set the channel and control information */
1190 adt7475_read_pwm(client, i);
1191 }
1192
1193 data->range[0] = adt7475_read(TEMP_TRANGE_REG(0));
1194 data->range[1] = adt7475_read(TEMP_TRANGE_REG(1));
1195 data->range[2] = adt7475_read(TEMP_TRANGE_REG(2));
1196
1197 data->limits_updated = jiffies;
1198 data->valid = 1;
1199 }
1200
1201 mutex_unlock(&data->lock);
1202
1203 return data;
1204}
1205
1206static int __init sensors_adt7475_init(void)
1207{
1208 return i2c_add_driver(&adt7475_driver);
1209}
1210
1211static void __exit sensors_adt7475_exit(void)
1212{
1213 i2c_del_driver(&adt7475_driver);
1214}
1215
1216MODULE_AUTHOR("Advanced Micro Devices, Inc");
1217MODULE_DESCRIPTION("adt7475 driver");
1218MODULE_LICENSE("GPL");
1219
1220module_init(sensors_adt7475_init);
1221module_exit(sensors_adt7475_exit);
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
index dca47a591baf..e30186236588 100644
--- a/drivers/hwmon/applesmc.c
+++ b/drivers/hwmon/applesmc.c
@@ -590,6 +590,11 @@ static ssize_t applesmc_light_show(struct device *dev,
590 } 590 }
591 591
592 ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, data_length); 592 ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, data_length);
593 /* newer macbooks report a single 10-bit bigendian value */
594 if (data_length == 10) {
595 left = be16_to_cpu(*(__be16 *)(buffer + 6)) >> 2;
596 goto out;
597 }
593 left = buffer[2]; 598 left = buffer[2];
594 if (ret) 599 if (ret)
595 goto out; 600 goto out;
diff --git a/drivers/hwmon/hp_accel.c b/drivers/hwmon/hp_accel.c
index bf8d40580577..03705240000f 100644
--- a/drivers/hwmon/hp_accel.c
+++ b/drivers/hwmon/hp_accel.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Copyright (C) 2007-2008 Yan Burman 4 * Copyright (C) 2007-2008 Yan Burman
5 * Copyright (C) 2008 Eric Piel 5 * Copyright (C) 2008 Eric Piel
6 * Copyright (C) 2008 Pavel Machek 6 * Copyright (C) 2008-2009 Pavel Machek
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
@@ -36,6 +36,7 @@
36#include <linux/freezer.h> 36#include <linux/freezer.h>
37#include <linux/version.h> 37#include <linux/version.h>
38#include <linux/uaccess.h> 38#include <linux/uaccess.h>
39#include <linux/leds.h>
39#include <acpi/acpi_drivers.h> 40#include <acpi/acpi_drivers.h>
40#include <asm/atomic.h> 41#include <asm/atomic.h>
41#include "lis3lv02d.h" 42#include "lis3lv02d.h"
@@ -43,6 +44,36 @@
43#define DRIVER_NAME "lis3lv02d" 44#define DRIVER_NAME "lis3lv02d"
44#define ACPI_MDPS_CLASS "accelerometer" 45#define ACPI_MDPS_CLASS "accelerometer"
45 46
47/* Delayed LEDs infrastructure ------------------------------------ */
48
49/* Special LED class that can defer work */
50struct delayed_led_classdev {
51 struct led_classdev led_classdev;
52 struct work_struct work;
53 enum led_brightness new_brightness;
54
55 unsigned int led; /* For driver */
56 void (*set_brightness)(struct delayed_led_classdev *data, enum led_brightness value);
57};
58
59static inline void delayed_set_status_worker(struct work_struct *work)
60{
61 struct delayed_led_classdev *data =
62 container_of(work, struct delayed_led_classdev, work);
63
64 data->set_brightness(data, data->new_brightness);
65}
66
67static inline void delayed_sysfs_set(struct led_classdev *led_cdev,
68 enum led_brightness brightness)
69{
70 struct delayed_led_classdev *data = container_of(led_cdev,
71 struct delayed_led_classdev, led_classdev);
72 data->new_brightness = brightness;
73 schedule_work(&data->work);
74}
75
76/* HP-specific accelerometer driver ------------------------------------ */
46 77
47/* For automatic insertion of the module */ 78/* For automatic insertion of the module */
48static struct acpi_device_id lis3lv02d_device_ids[] = { 79static struct acpi_device_id lis3lv02d_device_ids[] = {
@@ -154,10 +185,33 @@ static struct dmi_system_id lis3lv02d_dmi_ids[] = {
154 */ 185 */
155}; 186};
156 187
188static void hpled_set(struct delayed_led_classdev *led_cdev, enum led_brightness value)
189{
190 acpi_handle handle = adev.device->handle;
191 unsigned long long ret; /* Not used when writing */
192 union acpi_object in_obj[1];
193 struct acpi_object_list args = { 1, in_obj };
194
195 in_obj[0].type = ACPI_TYPE_INTEGER;
196 in_obj[0].integer.value = !!value;
197
198 acpi_evaluate_integer(handle, "ALED", &args, &ret);
199}
200
201static struct delayed_led_classdev hpled_led = {
202 .led_classdev = {
203 .name = "hp::hddprotect",
204 .default_trigger = "none",
205 .brightness_set = delayed_sysfs_set,
206 .flags = LED_CORE_SUSPENDRESUME,
207 },
208 .set_brightness = hpled_set,
209};
157 210
158static int lis3lv02d_add(struct acpi_device *device) 211static int lis3lv02d_add(struct acpi_device *device)
159{ 212{
160 u8 val; 213 u8 val;
214 int ret;
161 215
162 if (!device) 216 if (!device)
163 return -EINVAL; 217 return -EINVAL;
@@ -183,7 +237,19 @@ static int lis3lv02d_add(struct acpi_device *device)
183 adev.ac = lis3lv02d_axis_normal; 237 adev.ac = lis3lv02d_axis_normal;
184 } 238 }
185 239
186 return lis3lv02d_init_device(&adev); 240 INIT_WORK(&hpled_led.work, delayed_set_status_worker);
241 ret = led_classdev_register(NULL, &hpled_led.led_classdev);
242 if (ret)
243 return ret;
244
245 ret = lis3lv02d_init_device(&adev);
246 if (ret) {
247 flush_work(&hpled_led.work);
248 led_classdev_unregister(&hpled_led.led_classdev);
249 return ret;
250 }
251
252 return ret;
187} 253}
188 254
189static int lis3lv02d_remove(struct acpi_device *device, int type) 255static int lis3lv02d_remove(struct acpi_device *device, int type)
@@ -194,6 +260,9 @@ static int lis3lv02d_remove(struct acpi_device *device, int type)
194 lis3lv02d_joystick_disable(); 260 lis3lv02d_joystick_disable();
195 lis3lv02d_poweroff(device->handle); 261 lis3lv02d_poweroff(device->handle);
196 262
263 flush_work(&hpled_led.work);
264 led_classdev_unregister(&hpled_led.led_classdev);
265
197 return lis3lv02d_remove_fs(); 266 return lis3lv02d_remove_fs();
198} 267}
199 268
@@ -256,7 +325,7 @@ static void __exit lis3lv02d_exit_module(void)
256 acpi_bus_unregister_driver(&lis3lv02d_driver); 325 acpi_bus_unregister_driver(&lis3lv02d_driver);
257} 326}
258 327
259MODULE_DESCRIPTION("Glue between LIS3LV02Dx and HP ACPI BIOS"); 328MODULE_DESCRIPTION("Glue between LIS3LV02Dx and HP ACPI BIOS and support for disk protection LED.");
260MODULE_AUTHOR("Yan Burman, Eric Piel, Pavel Machek"); 329MODULE_AUTHOR("Yan Burman, Eric Piel, Pavel Machek");
261MODULE_LICENSE("GPL"); 330MODULE_LICENSE("GPL");
262 331
diff --git a/drivers/hwmon/k8temp.c b/drivers/hwmon/k8temp.c
index bd2bde0ef95e..1fe995111841 100644
--- a/drivers/hwmon/k8temp.c
+++ b/drivers/hwmon/k8temp.c
@@ -31,6 +31,7 @@
31#include <linux/hwmon-sysfs.h> 31#include <linux/hwmon-sysfs.h>
32#include <linux/err.h> 32#include <linux/err.h>
33#include <linux/mutex.h> 33#include <linux/mutex.h>
34#include <asm/processor.h>
34 35
35#define TEMP_FROM_REG(val) (((((val) >> 16) & 0xff) - 49) * 1000) 36#define TEMP_FROM_REG(val) (((((val) >> 16) & 0xff) - 49) * 1000)
36#define REG_TEMP 0xe4 37#define REG_TEMP 0xe4
@@ -47,6 +48,8 @@ struct k8temp_data {
47 /* registers values */ 48 /* registers values */
48 u8 sensorsp; /* sensor presence bits - SEL_CORE & SEL_PLACE */ 49 u8 sensorsp; /* sensor presence bits - SEL_CORE & SEL_PLACE */
49 u32 temp[2][2]; /* core, place */ 50 u32 temp[2][2]; /* core, place */
51 u8 swap_core_select; /* meaning of SEL_CORE is inverted */
52 u32 temp_offset;
50}; 53};
51 54
52static struct k8temp_data *k8temp_update_device(struct device *dev) 55static struct k8temp_data *k8temp_update_device(struct device *dev)
@@ -114,10 +117,15 @@ static ssize_t show_temp(struct device *dev,
114 to_sensor_dev_attr_2(devattr); 117 to_sensor_dev_attr_2(devattr);
115 int core = attr->nr; 118 int core = attr->nr;
116 int place = attr->index; 119 int place = attr->index;
120 int temp;
117 struct k8temp_data *data = k8temp_update_device(dev); 121 struct k8temp_data *data = k8temp_update_device(dev);
118 122
119 return sprintf(buf, "%d\n", 123 if (data->swap_core_select)
120 TEMP_FROM_REG(data->temp[core][place])); 124 core = core ? 0 : 1;
125
126 temp = TEMP_FROM_REG(data->temp[core][place]) + data->temp_offset;
127
128 return sprintf(buf, "%d\n", temp);
121} 129}
122 130
123/* core, place */ 131/* core, place */
@@ -141,20 +149,49 @@ static int __devinit k8temp_probe(struct pci_dev *pdev,
141 int err; 149 int err;
142 u8 scfg; 150 u8 scfg;
143 u32 temp; 151 u32 temp;
152 u8 model, stepping;
144 struct k8temp_data *data; 153 struct k8temp_data *data;
145 u32 cpuid = cpuid_eax(1);
146
147 /* this feature should be available since SH-C0 core */
148 if ((cpuid == 0xf40) || (cpuid == 0xf50) || (cpuid == 0xf51)) {
149 err = -ENODEV;
150 goto exit;
151 }
152 154
153 if (!(data = kzalloc(sizeof(struct k8temp_data), GFP_KERNEL))) { 155 if (!(data = kzalloc(sizeof(struct k8temp_data), GFP_KERNEL))) {
154 err = -ENOMEM; 156 err = -ENOMEM;
155 goto exit; 157 goto exit;
156 } 158 }
157 159
160 model = boot_cpu_data.x86_model;
161 stepping = boot_cpu_data.x86_mask;
162
163 switch (boot_cpu_data.x86) {
164 case 0xf:
165 /* feature available since SH-C0, exclude older revisions */
166 if (((model == 4) && (stepping == 0)) ||
167 ((model == 5) && (stepping <= 1))) {
168 err = -ENODEV;
169 goto exit_free;
170 }
171
172 /*
173 * AMD NPT family 0fh, i.e. RevF and RevG:
174 * meaning of SEL_CORE bit is inverted
175 */
176 if (model >= 0x40) {
177 data->swap_core_select = 1;
178 dev_warn(&pdev->dev, "Temperature readouts might be "
179 "wrong - check erratum #141\n");
180 }
181
182 if ((model >= 0x69) &&
183 !(model == 0xc1 || model == 0x6c || model == 0x7c)) {
184 /*
185 * RevG desktop CPUs (i.e. no socket S1G1 parts)
186 * need additional offset, otherwise reported
187 * temperature is below ambient temperature
188 */
189 data->temp_offset = 21000;
190 }
191
192 break;
193 }
194
158 pci_read_config_byte(pdev, REG_TEMP, &scfg); 195 pci_read_config_byte(pdev, REG_TEMP, &scfg);
159 scfg &= ~(SEL_PLACE | SEL_CORE); /* Select sensor 0, core0 */ 196 scfg &= ~(SEL_PLACE | SEL_CORE); /* Select sensor 0, core0 */
160 pci_write_config_byte(pdev, REG_TEMP, scfg); 197 pci_write_config_byte(pdev, REG_TEMP, scfg);
diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig
index 59c3d23f5bdc..b9bef04b7be4 100644
--- a/drivers/i2c/chips/Kconfig
+++ b/drivers/i2c/chips/Kconfig
@@ -139,15 +139,4 @@ config SENSORS_TSL2550
139 This driver can also be built as a module. If so, the module 139 This driver can also be built as a module. If so, the module
140 will be called tsl2550. 140 will be called tsl2550.
141 141
142config MCU_MPC8349EMITX
143 tristate "MPC8349E-mITX MCU driver"
144 depends on I2C && PPC_83xx
145 select GENERIC_GPIO
146 select ARCH_REQUIRE_GPIOLIB
147 help
148 Say Y here to enable soft power-off functionality on the Freescale
149 boards with the MPC8349E-mITX-compatible MCU chips. This driver will
150 also register MCU GPIOs with the generic GPIO API, so you'll able
151 to use MCU pins as GPIOs.
152
153endmenu 142endmenu
diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
index 83accaaf8164..00fcb5193ac2 100644
--- a/drivers/i2c/chips/Makefile
+++ b/drivers/i2c/chips/Makefile
@@ -19,7 +19,6 @@ obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o
19obj-$(CONFIG_PCF8575) += pcf8575.o 19obj-$(CONFIG_PCF8575) += pcf8575.o
20obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o 20obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
21obj-$(CONFIG_SENSORS_TSL2550) += tsl2550.o 21obj-$(CONFIG_SENSORS_TSL2550) += tsl2550.o
22obj-$(CONFIG_MCU_MPC8349EMITX) += mcu_mpc8349emitx.o
23 22
24ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) 23ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)
25EXTRA_CFLAGS += -DDEBUG 24EXTRA_CFLAGS += -DDEBUG
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index 3f9503867e6b..b1c6f68d98ce 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -701,11 +701,6 @@ config BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
701 depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX 701 depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX
702endchoice 702endchoice
703 703
704config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
705 int "Maximum transfer size (KB) per request (up to 128)"
706 default "128"
707 depends on BLK_DEV_IDE_AU1XXX
708
709config BLK_DEV_IDE_TX4938 704config BLK_DEV_IDE_TX4938
710 tristate "TX4938 internal IDE support" 705 tristate "TX4938 internal IDE support"
711 depends on SOC_TX4938 706 depends on SOC_TX4938
diff --git a/drivers/ide/falconide.c b/drivers/ide/falconide.c
index a5ba820d69bb..a638e952d67a 100644
--- a/drivers/ide/falconide.c
+++ b/drivers/ide/falconide.c
@@ -82,7 +82,7 @@ static const struct ide_tp_ops falconide_tp_ops = {
82 82
83static const struct ide_port_info falconide_port_info = { 83static const struct ide_port_info falconide_port_info = {
84 .tp_ops = &falconide_tp_ops, 84 .tp_ops = &falconide_tp_ops,
85 .host_flags = IDE_HFLAG_NO_DMA, 85 .host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_SERIALIZE,
86}; 86};
87 87
88static void __init falconide_setup_ports(hw_regs_t *hw) 88static void __init falconide_setup_ports(hw_regs_t *hw)
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index 4088a622873e..806760d24cef 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -633,7 +633,7 @@ static void ide_disk_setup(ide_drive_t *drive)
633 printk(KERN_INFO "%s: max request size: %dKiB\n", drive->name, 633 printk(KERN_INFO "%s: max request size: %dKiB\n", drive->name,
634 q->max_sectors / 2); 634 q->max_sectors / 2);
635 635
636 if (ata_id_is_ssd(id) || ata_id_is_cfa(id)) 636 if (ata_id_is_ssd(id))
637 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); 637 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q);
638 638
639 /* calculate drive capacity, and select LBA if possible */ 639 /* calculate drive capacity, and select LBA if possible */
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index e728cfe7273f..753b92ebe0ae 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -493,7 +493,7 @@ static int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, unsigned long ti
493 stat = tp_ops->read_status(hwif); 493 stat = tp_ops->read_status(hwif);
494 494
495 if (stat & ATA_BUSY) { 495 if (stat & ATA_BUSY) {
496 local_irq_save(flags); 496 local_save_flags(flags);
497 local_irq_enable_in_hardirq(); 497 local_irq_enable_in_hardirq();
498 timeout += jiffies; 498 timeout += jiffies;
499 while ((stat = tp_ops->read_status(hwif)) & ATA_BUSY) { 499 while ((stat = tp_ops->read_status(hwif)) & ATA_BUSY) {
diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c
index 4b3bf6a06b70..60538d9c84ee 100644
--- a/drivers/ide/ide-pm.c
+++ b/drivers/ide/ide-pm.c
@@ -186,12 +186,10 @@ void ide_complete_pm_request(ide_drive_t *drive, struct request *rq)
186 blk_pm_suspend_request(rq) ? "suspend" : "resume"); 186 blk_pm_suspend_request(rq) ? "suspend" : "resume");
187#endif 187#endif
188 spin_lock_irqsave(q->queue_lock, flags); 188 spin_lock_irqsave(q->queue_lock, flags);
189 if (blk_pm_suspend_request(rq)) { 189 if (blk_pm_suspend_request(rq))
190 blk_stop_queue(q); 190 blk_stop_queue(q);
191 } else { 191 else
192 drive->dev_flags &= ~IDE_DFLAG_BLOCKED; 192 drive->dev_flags &= ~IDE_DFLAG_BLOCKED;
193 blk_start_queue(q);
194 }
195 spin_unlock_irqrestore(q->queue_lock, flags); 193 spin_unlock_irqrestore(q->queue_lock, flags);
196 194
197 drive->hwif->rq = NULL; 195 drive->hwif->rq = NULL;
@@ -219,6 +217,8 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq)
219 * point. 217 * point.
220 */ 218 */
221 ide_hwif_t *hwif = drive->hwif; 219 ide_hwif_t *hwif = drive->hwif;
220 struct request_queue *q = drive->queue;
221 unsigned long flags;
222 int rc; 222 int rc;
223#ifdef DEBUG_PM 223#ifdef DEBUG_PM
224 printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name); 224 printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name);
@@ -231,5 +231,9 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq)
231 rc = ide_wait_not_busy(hwif, 100000); 231 rc = ide_wait_not_busy(hwif, 100000);
232 if (rc) 232 if (rc)
233 printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name); 233 printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name);
234
235 spin_lock_irqsave(q->queue_lock, flags);
236 blk_start_queue(q);
237 spin_unlock_irqrestore(q->queue_lock, flags);
234 } 238 }
235} 239}
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 0ccbb4459fb9..0db1ed9f5fc2 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -649,7 +649,8 @@ static int ide_register_port(ide_hwif_t *hwif)
649 /* register with global device tree */ 649 /* register with global device tree */
650 dev_set_name(&hwif->gendev, hwif->name); 650 dev_set_name(&hwif->gendev, hwif->name);
651 hwif->gendev.driver_data = hwif; 651 hwif->gendev.driver_data = hwif;
652 hwif->gendev.parent = hwif->dev; 652 if (hwif->gendev.parent == NULL)
653 hwif->gendev.parent = hwif->dev;
653 hwif->gendev.release = hwif_release_dev; 654 hwif->gendev.release = hwif_release_dev;
654 655
655 ret = device_register(&hwif->gendev); 656 ret = device_register(&hwif->gendev);
@@ -796,7 +797,7 @@ static int ide_probe_port(ide_hwif_t *hwif)
796 if (irqd) 797 if (irqd)
797 disable_irq(hwif->irq); 798 disable_irq(hwif->irq);
798 799
799 local_irq_save(flags); 800 local_save_flags(flags);
800 local_irq_enable_in_hardirq(); 801 local_irq_enable_in_hardirq();
801 802
802 if (ide_port_wait_ready(hwif) == -EBUSY) 803 if (ide_port_wait_ready(hwif) == -EBUSY)
diff --git a/drivers/ide/it821x.c b/drivers/ide/it821x.c
index 0be27ac1f077..e1c4f5437396 100644
--- a/drivers/ide/it821x.c
+++ b/drivers/ide/it821x.c
@@ -68,6 +68,8 @@
68 68
69#define DRV_NAME "it821x" 69#define DRV_NAME "it821x"
70 70
71#define QUIRK_VORTEX86 1
72
71struct it821x_dev 73struct it821x_dev
72{ 74{
73 unsigned int smart:1, /* Are we in smart raid mode */ 75 unsigned int smart:1, /* Are we in smart raid mode */
@@ -79,6 +81,7 @@ struct it821x_dev
79 u16 pio[2]; /* Cached PIO values */ 81 u16 pio[2]; /* Cached PIO values */
80 u16 mwdma[2]; /* Cached MWDMA values */ 82 u16 mwdma[2]; /* Cached MWDMA values */
81 u16 udma[2]; /* Cached UDMA values (per drive) */ 83 u16 udma[2]; /* Cached UDMA values (per drive) */
84 u16 quirks;
82}; 85};
83 86
84#define ATA_66 0 87#define ATA_66 0
@@ -557,8 +560,7 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
557 * this is necessary. 560 * this is necessary.
558 */ 561 */
559 562
560 pci_read_config_byte(dev, 0x08, &conf); 563 if (dev->revision == 0x10) {
561 if (conf == 0x10) {
562 idev->timing10 = 1; 564 idev->timing10 = 1;
563 hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA; 565 hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
564 if (idev->smart == 0) 566 if (idev->smart == 0)
@@ -577,6 +579,12 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif)
577 579
578 hwif->ultra_mask = ATA_UDMA6; 580 hwif->ultra_mask = ATA_UDMA6;
579 hwif->mwdma_mask = ATA_MWDMA2; 581 hwif->mwdma_mask = ATA_MWDMA2;
582
583 /* Vortex86SX quirk: prevent Ultra-DMA mode to fix BadCRC issue */
584 if (idev->quirks & QUIRK_VORTEX86) {
585 if (dev->revision == 0x11)
586 hwif->ultra_mask = 0;
587 }
580} 588}
581 589
582static void it8212_disable_raid(struct pci_dev *dev) 590static void it8212_disable_raid(struct pci_dev *dev)
@@ -649,6 +657,8 @@ static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_devic
649 return -ENOMEM; 657 return -ENOMEM;
650 } 658 }
651 659
660 itdevs->quirks = id->driver_data;
661
652 rc = ide_pci_init_one(dev, &it821x_chipset, itdevs); 662 rc = ide_pci_init_one(dev, &it821x_chipset, itdevs);
653 if (rc) 663 if (rc)
654 kfree(itdevs); 664 kfree(itdevs);
@@ -668,6 +678,7 @@ static void __devexit it821x_remove(struct pci_dev *dev)
668static const struct pci_device_id it821x_pci_tbl[] = { 678static const struct pci_device_id it821x_pci_tbl[] = {
669 { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), 0 }, 679 { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), 0 },
670 { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8212), 0 }, 680 { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8212), 0 },
681 { PCI_VDEVICE(RDC, PCI_DEVICE_ID_RDC_D1010), QUIRK_VORTEX86 },
671 { 0, }, 682 { 0, },
672}; 683};
673 684
diff --git a/drivers/ide/palm_bk3710.c b/drivers/ide/palm_bk3710.c
index a7ac490c9ae3..f38aac78044c 100644
--- a/drivers/ide/palm_bk3710.c
+++ b/drivers/ide/palm_bk3710.c
@@ -346,7 +346,8 @@ static int __init palm_bk3710_probe(struct platform_device *pdev)
346{ 346{
347 struct clk *clk; 347 struct clk *clk;
348 struct resource *mem, *irq; 348 struct resource *mem, *irq;
349 unsigned long base, rate; 349 void __iomem *base;
350 unsigned long rate;
350 int i, rc; 351 int i, rc;
351 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; 352 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
352 353
@@ -382,11 +383,13 @@ static int __init palm_bk3710_probe(struct platform_device *pdev)
382 base = IO_ADDRESS(mem->start); 383 base = IO_ADDRESS(mem->start);
383 384
384 /* Configure the Palm Chip controller */ 385 /* Configure the Palm Chip controller */
385 palm_bk3710_chipinit((void __iomem *)base); 386 palm_bk3710_chipinit(base);
386 387
387 for (i = 0; i < IDE_NR_PORTS - 2; i++) 388 for (i = 0; i < IDE_NR_PORTS - 2; i++)
388 hw.io_ports_array[i] = base + IDE_PALM_ATA_PRI_REG_OFFSET + i; 389 hw.io_ports_array[i] = (unsigned long)
389 hw.io_ports.ctl_addr = base + IDE_PALM_ATA_PRI_CTL_OFFSET; 390 (base + IDE_PALM_ATA_PRI_REG_OFFSET + i);
391 hw.io_ports.ctl_addr = (unsigned long)
392 (base + IDE_PALM_ATA_PRI_CTL_OFFSET);
390 hw.irq = irq->start; 393 hw.irq = irq->start;
391 hw.dev = &pdev->dev; 394 hw.dev = &pdev->dev;
392 hw.chipset = ide_palm3710; 395 hw.chipset = ide_palm3710;
diff --git a/drivers/ide/sl82c105.c b/drivers/ide/sl82c105.c
index 48cc748c5043..6297956507c0 100644
--- a/drivers/ide/sl82c105.c
+++ b/drivers/ide/sl82c105.c
@@ -310,10 +310,6 @@ static const struct ide_port_info sl82c105_chipset __devinitdata = {
310 .dma_ops = &sl82c105_dma_ops, 310 .dma_ops = &sl82c105_dma_ops,
311 .host_flags = IDE_HFLAG_IO_32BIT | 311 .host_flags = IDE_HFLAG_IO_32BIT |
312 IDE_HFLAG_UNMASK_IRQS | 312 IDE_HFLAG_UNMASK_IRQS |
313/* FIXME: check for Compatibility mode in generic IDE PCI code */
314#if defined(CONFIG_LOPEC) || defined(CONFIG_SANDPOINT)
315 IDE_HFLAG_FORCE_LEGACY_IRQS |
316#endif
317 IDE_HFLAG_SERIALIZE_DMA | 313 IDE_HFLAG_SERIALIZE_DMA |
318 IDE_HFLAG_NO_AUTODMA, 314 IDE_HFLAG_NO_AUTODMA,
319 .pio_mask = ATA_PIO5, 315 .pio_mask = ATA_PIO5,
diff --git a/drivers/ide/tx4938ide.c b/drivers/ide/tx4938ide.c
index b4ef218072cd..d9095345f7ca 100644
--- a/drivers/ide/tx4938ide.c
+++ b/drivers/ide/tx4938ide.c
@@ -202,7 +202,6 @@ static const struct ide_tp_ops tx4938ide_tp_ops = {
202 .exec_command = ide_exec_command, 202 .exec_command = ide_exec_command,
203 .read_status = ide_read_status, 203 .read_status = ide_read_status,
204 .read_altstatus = ide_read_altstatus, 204 .read_altstatus = ide_read_altstatus,
205 .read_sff_dma_status = ide_read_sff_dma_status,
206 205
207 .set_irq = ide_set_irq, 206 .set_irq = ide_set_irq,
208 207
diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c
index fecc0e03c3fc..703c3eeb20a8 100644
--- a/drivers/ide/via82cxxx.c
+++ b/drivers/ide/via82cxxx.c
@@ -432,8 +432,6 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
432 if (via_clock < 20000 || via_clock > 50000) { 432 if (via_clock < 20000 || via_clock > 50000) {
433 printk(KERN_WARNING DRV_NAME ": User given PCI clock speed " 433 printk(KERN_WARNING DRV_NAME ": User given PCI clock speed "
434 "impossible (%d), using 33 MHz instead.\n", via_clock); 434 "impossible (%d), using 33 MHz instead.\n", via_clock);
435 printk(KERN_WARNING DRV_NAME ": Use ide0=ata66 if you want "
436 "to assume 80-wire cable.\n");
437 via_clock = 33333; 435 via_clock = 33333;
438 } 436 }
439 437
diff --git a/drivers/infiniband/hw/ehca/ehca_cq.c b/drivers/infiniband/hw/ehca/ehca_cq.c
index 2f4c28a30271..97e4b231cdc4 100644
--- a/drivers/infiniband/hw/ehca/ehca_cq.c
+++ b/drivers/infiniband/hw/ehca/ehca_cq.c
@@ -196,7 +196,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
196 196
197 if (h_ret != H_SUCCESS) { 197 if (h_ret != H_SUCCESS) {
198 ehca_err(device, "hipz_h_alloc_resource_cq() failed " 198 ehca_err(device, "hipz_h_alloc_resource_cq() failed "
199 "h_ret=%li device=%p", h_ret, device); 199 "h_ret=%lli device=%p", h_ret, device);
200 cq = ERR_PTR(ehca2ib_return_code(h_ret)); 200 cq = ERR_PTR(ehca2ib_return_code(h_ret));
201 goto create_cq_exit2; 201 goto create_cq_exit2;
202 } 202 }
@@ -232,7 +232,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
232 232
233 if (h_ret < H_SUCCESS) { 233 if (h_ret < H_SUCCESS) {
234 ehca_err(device, "hipz_h_register_rpage_cq() failed " 234 ehca_err(device, "hipz_h_register_rpage_cq() failed "
235 "ehca_cq=%p cq_num=%x h_ret=%li counter=%i " 235 "ehca_cq=%p cq_num=%x h_ret=%lli counter=%i "
236 "act_pages=%i", my_cq, my_cq->cq_number, 236 "act_pages=%i", my_cq, my_cq->cq_number,
237 h_ret, counter, param.act_pages); 237 h_ret, counter, param.act_pages);
238 cq = ERR_PTR(-EINVAL); 238 cq = ERR_PTR(-EINVAL);
@@ -244,7 +244,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
244 if ((h_ret != H_SUCCESS) || vpage) { 244 if ((h_ret != H_SUCCESS) || vpage) {
245 ehca_err(device, "Registration of pages not " 245 ehca_err(device, "Registration of pages not "
246 "complete ehca_cq=%p cq_num=%x " 246 "complete ehca_cq=%p cq_num=%x "
247 "h_ret=%li", my_cq, my_cq->cq_number, 247 "h_ret=%lli", my_cq, my_cq->cq_number,
248 h_ret); 248 h_ret);
249 cq = ERR_PTR(-EAGAIN); 249 cq = ERR_PTR(-EAGAIN);
250 goto create_cq_exit4; 250 goto create_cq_exit4;
@@ -252,7 +252,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
252 } else { 252 } else {
253 if (h_ret != H_PAGE_REGISTERED) { 253 if (h_ret != H_PAGE_REGISTERED) {
254 ehca_err(device, "Registration of page failed " 254 ehca_err(device, "Registration of page failed "
255 "ehca_cq=%p cq_num=%x h_ret=%li " 255 "ehca_cq=%p cq_num=%x h_ret=%lli "
256 "counter=%i act_pages=%i", 256 "counter=%i act_pages=%i",
257 my_cq, my_cq->cq_number, 257 my_cq, my_cq->cq_number,
258 h_ret, counter, param.act_pages); 258 h_ret, counter, param.act_pages);
@@ -266,7 +266,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
266 266
267 gal = my_cq->galpas.kernel; 267 gal = my_cq->galpas.kernel;
268 cqx_fec = hipz_galpa_load(gal, CQTEMM_OFFSET(cqx_fec)); 268 cqx_fec = hipz_galpa_load(gal, CQTEMM_OFFSET(cqx_fec));
269 ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%lx", 269 ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%llx",
270 my_cq, my_cq->cq_number, cqx_fec); 270 my_cq, my_cq->cq_number, cqx_fec);
271 271
272 my_cq->ib_cq.cqe = my_cq->nr_of_entries = 272 my_cq->ib_cq.cqe = my_cq->nr_of_entries =
@@ -307,7 +307,7 @@ create_cq_exit3:
307 h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 1); 307 h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 1);
308 if (h_ret != H_SUCCESS) 308 if (h_ret != H_SUCCESS)
309 ehca_err(device, "hipz_h_destroy_cq() failed ehca_cq=%p " 309 ehca_err(device, "hipz_h_destroy_cq() failed ehca_cq=%p "
310 "cq_num=%x h_ret=%li", my_cq, my_cq->cq_number, h_ret); 310 "cq_num=%x h_ret=%lli", my_cq, my_cq->cq_number, h_ret);
311 311
312create_cq_exit2: 312create_cq_exit2:
313 write_lock_irqsave(&ehca_cq_idr_lock, flags); 313 write_lock_irqsave(&ehca_cq_idr_lock, flags);
@@ -355,7 +355,7 @@ int ehca_destroy_cq(struct ib_cq *cq)
355 h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 0); 355 h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 0);
356 if (h_ret == H_R_STATE) { 356 if (h_ret == H_R_STATE) {
357 /* cq in err: read err data and destroy it forcibly */ 357 /* cq in err: read err data and destroy it forcibly */
358 ehca_dbg(device, "ehca_cq=%p cq_num=%x ressource=%lx in err " 358 ehca_dbg(device, "ehca_cq=%p cq_num=%x resource=%llx in err "
359 "state. Try to delete it forcibly.", 359 "state. Try to delete it forcibly.",
360 my_cq, cq_num, my_cq->ipz_cq_handle.handle); 360 my_cq, cq_num, my_cq->ipz_cq_handle.handle);
361 ehca_error_data(shca, my_cq, my_cq->ipz_cq_handle.handle); 361 ehca_error_data(shca, my_cq, my_cq->ipz_cq_handle.handle);
@@ -365,7 +365,7 @@ int ehca_destroy_cq(struct ib_cq *cq)
365 cq_num); 365 cq_num);
366 } 366 }
367 if (h_ret != H_SUCCESS) { 367 if (h_ret != H_SUCCESS) {
368 ehca_err(device, "hipz_h_destroy_cq() failed h_ret=%li " 368 ehca_err(device, "hipz_h_destroy_cq() failed h_ret=%lli "
369 "ehca_cq=%p cq_num=%x", h_ret, my_cq, cq_num); 369 "ehca_cq=%p cq_num=%x", h_ret, my_cq, cq_num);
370 return ehca2ib_return_code(h_ret); 370 return ehca2ib_return_code(h_ret);
371 } 371 }
diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c
index 46288220cfbb..9209c5332dfe 100644
--- a/drivers/infiniband/hw/ehca/ehca_hca.c
+++ b/drivers/infiniband/hw/ehca/ehca_hca.c
@@ -393,7 +393,7 @@ int ehca_modify_port(struct ib_device *ibdev,
393 hret = hipz_h_modify_port(shca->ipz_hca_handle, port, 393 hret = hipz_h_modify_port(shca->ipz_hca_handle, port,
394 cap, props->init_type, port_modify_mask); 394 cap, props->init_type, port_modify_mask);
395 if (hret != H_SUCCESS) { 395 if (hret != H_SUCCESS) {
396 ehca_err(&shca->ib_device, "Modify port failed h_ret=%li", 396 ehca_err(&shca->ib_device, "Modify port failed h_ret=%lli",
397 hret); 397 hret);
398 ret = -EINVAL; 398 ret = -EINVAL;
399 } 399 }
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c
index 3128a5090dbd..99bcbd7ffb0a 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.c
+++ b/drivers/infiniband/hw/ehca/ehca_irq.c
@@ -99,7 +99,7 @@ static void print_error_data(struct ehca_shca *shca, void *data,
99 return; 99 return;
100 100
101 ehca_err(&shca->ib_device, 101 ehca_err(&shca->ib_device,
102 "QP 0x%x (resource=%lx) has errors.", 102 "QP 0x%x (resource=%llx) has errors.",
103 qp->ib_qp.qp_num, resource); 103 qp->ib_qp.qp_num, resource);
104 break; 104 break;
105 } 105 }
@@ -108,21 +108,21 @@ static void print_error_data(struct ehca_shca *shca, void *data,
108 struct ehca_cq *cq = (struct ehca_cq *)data; 108 struct ehca_cq *cq = (struct ehca_cq *)data;
109 109
110 ehca_err(&shca->ib_device, 110 ehca_err(&shca->ib_device,
111 "CQ 0x%x (resource=%lx) has errors.", 111 "CQ 0x%x (resource=%llx) has errors.",
112 cq->cq_number, resource); 112 cq->cq_number, resource);
113 break; 113 break;
114 } 114 }
115 default: 115 default:
116 ehca_err(&shca->ib_device, 116 ehca_err(&shca->ib_device,
117 "Unknown error type: %lx on %s.", 117 "Unknown error type: %llx on %s.",
118 type, shca->ib_device.name); 118 type, shca->ib_device.name);
119 break; 119 break;
120 } 120 }
121 121
122 ehca_err(&shca->ib_device, "Error data is available: %lx.", resource); 122 ehca_err(&shca->ib_device, "Error data is available: %llx.", resource);
123 ehca_err(&shca->ib_device, "EHCA ----- error data begin " 123 ehca_err(&shca->ib_device, "EHCA ----- error data begin "
124 "---------------------------------------------------"); 124 "---------------------------------------------------");
125 ehca_dmp(rblock, length, "resource=%lx", resource); 125 ehca_dmp(rblock, length, "resource=%llx", resource);
126 ehca_err(&shca->ib_device, "EHCA ----- error data end " 126 ehca_err(&shca->ib_device, "EHCA ----- error data end "
127 "----------------------------------------------------"); 127 "----------------------------------------------------");
128 128
@@ -152,7 +152,7 @@ int ehca_error_data(struct ehca_shca *shca, void *data,
152 152
153 if (ret == H_R_STATE) 153 if (ret == H_R_STATE)
154 ehca_err(&shca->ib_device, 154 ehca_err(&shca->ib_device,
155 "No error data is available: %lx.", resource); 155 "No error data is available: %llx.", resource);
156 else if (ret == H_SUCCESS) { 156 else if (ret == H_SUCCESS) {
157 int length; 157 int length;
158 158
@@ -164,7 +164,7 @@ int ehca_error_data(struct ehca_shca *shca, void *data,
164 print_error_data(shca, data, rblock, length); 164 print_error_data(shca, data, rblock, length);
165 } else 165 } else
166 ehca_err(&shca->ib_device, 166 ehca_err(&shca->ib_device,
167 "Error data could not be fetched: %lx", resource); 167 "Error data could not be fetched: %llx", resource);
168 168
169 ehca_free_fw_ctrlblock(rblock); 169 ehca_free_fw_ctrlblock(rblock);
170 170
@@ -514,7 +514,7 @@ static inline void process_eqe(struct ehca_shca *shca, struct ehca_eqe *eqe)
514 struct ehca_cq *cq; 514 struct ehca_cq *cq;
515 515
516 eqe_value = eqe->entry; 516 eqe_value = eqe->entry;
517 ehca_dbg(&shca->ib_device, "eqe_value=%lx", eqe_value); 517 ehca_dbg(&shca->ib_device, "eqe_value=%llx", eqe_value);
518 if (EHCA_BMASK_GET(EQE_COMPLETION_EVENT, eqe_value)) { 518 if (EHCA_BMASK_GET(EQE_COMPLETION_EVENT, eqe_value)) {
519 ehca_dbg(&shca->ib_device, "Got completion event"); 519 ehca_dbg(&shca->ib_device, "Got completion event");
520 token = EHCA_BMASK_GET(EQE_CQ_TOKEN, eqe_value); 520 token = EHCA_BMASK_GET(EQE_CQ_TOKEN, eqe_value);
@@ -603,7 +603,7 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq)
603 ret = hipz_h_eoi(eq->ist); 603 ret = hipz_h_eoi(eq->ist);
604 if (ret != H_SUCCESS) 604 if (ret != H_SUCCESS)
605 ehca_err(&shca->ib_device, 605 ehca_err(&shca->ib_device,
606 "bad return code EOI -rc = %ld\n", ret); 606 "bad return code EOI -rc = %lld\n", ret);
607 ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt); 607 ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt);
608 } 608 }
609 if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE)) 609 if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE))
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index c7b8a506af65..368311ce332b 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -304,7 +304,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
304 304
305 h_ret = hipz_h_query_hca(shca->ipz_hca_handle, rblock); 305 h_ret = hipz_h_query_hca(shca->ipz_hca_handle, rblock);
306 if (h_ret != H_SUCCESS) { 306 if (h_ret != H_SUCCESS) {
307 ehca_gen_err("Cannot query device properties. h_ret=%li", 307 ehca_gen_err("Cannot query device properties. h_ret=%lli",
308 h_ret); 308 h_ret);
309 ret = -EPERM; 309 ret = -EPERM;
310 goto sense_attributes1; 310 goto sense_attributes1;
@@ -391,7 +391,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
391 port = (struct hipz_query_port *)rblock; 391 port = (struct hipz_query_port *)rblock;
392 h_ret = hipz_h_query_port(shca->ipz_hca_handle, 1, port); 392 h_ret = hipz_h_query_port(shca->ipz_hca_handle, 1, port);
393 if (h_ret != H_SUCCESS) { 393 if (h_ret != H_SUCCESS) {
394 ehca_gen_err("Cannot query port properties. h_ret=%li", 394 ehca_gen_err("Cannot query port properties. h_ret=%lli",
395 h_ret); 395 h_ret);
396 ret = -EPERM; 396 ret = -EPERM;
397 goto sense_attributes1; 397 goto sense_attributes1;
@@ -682,7 +682,7 @@ static ssize_t ehca_show_adapter_handle(struct device *dev,
682{ 682{
683 struct ehca_shca *shca = dev->driver_data; 683 struct ehca_shca *shca = dev->driver_data;
684 684
685 return sprintf(buf, "%lx\n", shca->ipz_hca_handle.handle); 685 return sprintf(buf, "%llx\n", shca->ipz_hca_handle.handle);
686 686
687} 687}
688static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL); 688static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL);
diff --git a/drivers/infiniband/hw/ehca/ehca_mcast.c b/drivers/infiniband/hw/ehca/ehca_mcast.c
index e3ef0264ccc6..120aedf9f989 100644
--- a/drivers/infiniband/hw/ehca/ehca_mcast.c
+++ b/drivers/infiniband/hw/ehca/ehca_mcast.c
@@ -88,7 +88,7 @@ int ehca_attach_mcast(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
88 if (h_ret != H_SUCCESS) 88 if (h_ret != H_SUCCESS)
89 ehca_err(ibqp->device, 89 ehca_err(ibqp->device,
90 "ehca_qp=%p qp_num=%x hipz_h_attach_mcqp() failed " 90 "ehca_qp=%p qp_num=%x hipz_h_attach_mcqp() failed "
91 "h_ret=%li", my_qp, ibqp->qp_num, h_ret); 91 "h_ret=%lli", my_qp, ibqp->qp_num, h_ret);
92 92
93 return ehca2ib_return_code(h_ret); 93 return ehca2ib_return_code(h_ret);
94} 94}
@@ -125,7 +125,7 @@ int ehca_detach_mcast(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
125 if (h_ret != H_SUCCESS) 125 if (h_ret != H_SUCCESS)
126 ehca_err(ibqp->device, 126 ehca_err(ibqp->device,
127 "ehca_qp=%p qp_num=%x hipz_h_detach_mcqp() failed " 127 "ehca_qp=%p qp_num=%x hipz_h_detach_mcqp() failed "
128 "h_ret=%li", my_qp, ibqp->qp_num, h_ret); 128 "h_ret=%lli", my_qp, ibqp->qp_num, h_ret);
129 129
130 return ehca2ib_return_code(h_ret); 130 return ehca2ib_return_code(h_ret);
131} 131}
diff --git a/drivers/infiniband/hw/ehca/ehca_mrmw.c b/drivers/infiniband/hw/ehca/ehca_mrmw.c
index f974367cad40..72f83f7df614 100644
--- a/drivers/infiniband/hw/ehca/ehca_mrmw.c
+++ b/drivers/infiniband/hw/ehca/ehca_mrmw.c
@@ -204,7 +204,7 @@ struct ib_mr *ehca_reg_phys_mr(struct ib_pd *pd,
204 } 204 }
205 if ((size == 0) || 205 if ((size == 0) ||
206 (((u64)iova_start + size) < (u64)iova_start)) { 206 (((u64)iova_start + size) < (u64)iova_start)) {
207 ehca_err(pd->device, "bad input values: size=%lx iova_start=%p", 207 ehca_err(pd->device, "bad input values: size=%llx iova_start=%p",
208 size, iova_start); 208 size, iova_start);
209 ib_mr = ERR_PTR(-EINVAL); 209 ib_mr = ERR_PTR(-EINVAL);
210 goto reg_phys_mr_exit0; 210 goto reg_phys_mr_exit0;
@@ -309,8 +309,8 @@ struct ib_mr *ehca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
309 } 309 }
310 310
311 if (length == 0 || virt + length < virt) { 311 if (length == 0 || virt + length < virt) {
312 ehca_err(pd->device, "bad input values: length=%lx " 312 ehca_err(pd->device, "bad input values: length=%llx "
313 "virt_base=%lx", length, virt); 313 "virt_base=%llx", length, virt);
314 ib_mr = ERR_PTR(-EINVAL); 314 ib_mr = ERR_PTR(-EINVAL);
315 goto reg_user_mr_exit0; 315 goto reg_user_mr_exit0;
316 } 316 }
@@ -373,7 +373,7 @@ reg_user_mr_fallback:
373 &e_mr->ib.ib_mr.rkey); 373 &e_mr->ib.ib_mr.rkey);
374 if (ret == -EINVAL && pginfo.hwpage_size > PAGE_SIZE) { 374 if (ret == -EINVAL && pginfo.hwpage_size > PAGE_SIZE) {
375 ehca_warn(pd->device, "failed to register mr " 375 ehca_warn(pd->device, "failed to register mr "
376 "with hwpage_size=%lx", hwpage_size); 376 "with hwpage_size=%llx", hwpage_size);
377 ehca_info(pd->device, "try to register mr with " 377 ehca_info(pd->device, "try to register mr with "
378 "kpage_size=%lx", PAGE_SIZE); 378 "kpage_size=%lx", PAGE_SIZE);
379 /* 379 /*
@@ -509,7 +509,7 @@ int ehca_rereg_phys_mr(struct ib_mr *mr,
509 goto rereg_phys_mr_exit1; 509 goto rereg_phys_mr_exit1;
510 if ((new_size == 0) || 510 if ((new_size == 0) ||
511 (((u64)iova_start + new_size) < (u64)iova_start)) { 511 (((u64)iova_start + new_size) < (u64)iova_start)) {
512 ehca_err(mr->device, "bad input values: new_size=%lx " 512 ehca_err(mr->device, "bad input values: new_size=%llx "
513 "iova_start=%p", new_size, iova_start); 513 "iova_start=%p", new_size, iova_start);
514 ret = -EINVAL; 514 ret = -EINVAL;
515 goto rereg_phys_mr_exit1; 515 goto rereg_phys_mr_exit1;
@@ -580,8 +580,8 @@ int ehca_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr)
580 580
581 h_ret = hipz_h_query_mr(shca->ipz_hca_handle, e_mr, &hipzout); 581 h_ret = hipz_h_query_mr(shca->ipz_hca_handle, e_mr, &hipzout);
582 if (h_ret != H_SUCCESS) { 582 if (h_ret != H_SUCCESS) {
583 ehca_err(mr->device, "hipz_mr_query failed, h_ret=%li mr=%p " 583 ehca_err(mr->device, "hipz_mr_query failed, h_ret=%lli mr=%p "
584 "hca_hndl=%lx mr_hndl=%lx lkey=%x", 584 "hca_hndl=%llx mr_hndl=%llx lkey=%x",
585 h_ret, mr, shca->ipz_hca_handle.handle, 585 h_ret, mr, shca->ipz_hca_handle.handle,
586 e_mr->ipz_mr_handle.handle, mr->lkey); 586 e_mr->ipz_mr_handle.handle, mr->lkey);
587 ret = ehca2ib_return_code(h_ret); 587 ret = ehca2ib_return_code(h_ret);
@@ -630,8 +630,8 @@ int ehca_dereg_mr(struct ib_mr *mr)
630 /* TODO: BUSY: MR still has bound window(s) */ 630 /* TODO: BUSY: MR still has bound window(s) */
631 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); 631 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
632 if (h_ret != H_SUCCESS) { 632 if (h_ret != H_SUCCESS) {
633 ehca_err(mr->device, "hipz_free_mr failed, h_ret=%li shca=%p " 633 ehca_err(mr->device, "hipz_free_mr failed, h_ret=%lli shca=%p "
634 "e_mr=%p hca_hndl=%lx mr_hndl=%lx mr->lkey=%x", 634 "e_mr=%p hca_hndl=%llx mr_hndl=%llx mr->lkey=%x",
635 h_ret, shca, e_mr, shca->ipz_hca_handle.handle, 635 h_ret, shca, e_mr, shca->ipz_hca_handle.handle,
636 e_mr->ipz_mr_handle.handle, mr->lkey); 636 e_mr->ipz_mr_handle.handle, mr->lkey);
637 ret = ehca2ib_return_code(h_ret); 637 ret = ehca2ib_return_code(h_ret);
@@ -671,8 +671,8 @@ struct ib_mw *ehca_alloc_mw(struct ib_pd *pd)
671 h_ret = hipz_h_alloc_resource_mw(shca->ipz_hca_handle, e_mw, 671 h_ret = hipz_h_alloc_resource_mw(shca->ipz_hca_handle, e_mw,
672 e_pd->fw_pd, &hipzout); 672 e_pd->fw_pd, &hipzout);
673 if (h_ret != H_SUCCESS) { 673 if (h_ret != H_SUCCESS) {
674 ehca_err(pd->device, "hipz_mw_allocate failed, h_ret=%li " 674 ehca_err(pd->device, "hipz_mw_allocate failed, h_ret=%lli "
675 "shca=%p hca_hndl=%lx mw=%p", 675 "shca=%p hca_hndl=%llx mw=%p",
676 h_ret, shca, shca->ipz_hca_handle.handle, e_mw); 676 h_ret, shca, shca->ipz_hca_handle.handle, e_mw);
677 ib_mw = ERR_PTR(ehca2ib_return_code(h_ret)); 677 ib_mw = ERR_PTR(ehca2ib_return_code(h_ret));
678 goto alloc_mw_exit1; 678 goto alloc_mw_exit1;
@@ -713,8 +713,8 @@ int ehca_dealloc_mw(struct ib_mw *mw)
713 713
714 h_ret = hipz_h_free_resource_mw(shca->ipz_hca_handle, e_mw); 714 h_ret = hipz_h_free_resource_mw(shca->ipz_hca_handle, e_mw);
715 if (h_ret != H_SUCCESS) { 715 if (h_ret != H_SUCCESS) {
716 ehca_err(mw->device, "hipz_free_mw failed, h_ret=%li shca=%p " 716 ehca_err(mw->device, "hipz_free_mw failed, h_ret=%lli shca=%p "
717 "mw=%p rkey=%x hca_hndl=%lx mw_hndl=%lx", 717 "mw=%p rkey=%x hca_hndl=%llx mw_hndl=%llx",
718 h_ret, shca, mw, mw->rkey, shca->ipz_hca_handle.handle, 718 h_ret, shca, mw, mw->rkey, shca->ipz_hca_handle.handle,
719 e_mw->ipz_mw_handle.handle); 719 e_mw->ipz_mw_handle.handle);
720 return ehca2ib_return_code(h_ret); 720 return ehca2ib_return_code(h_ret);
@@ -840,7 +840,7 @@ int ehca_map_phys_fmr(struct ib_fmr *fmr,
840 goto map_phys_fmr_exit0; 840 goto map_phys_fmr_exit0;
841 if (iova % e_fmr->fmr_page_size) { 841 if (iova % e_fmr->fmr_page_size) {
842 /* only whole-numbered pages */ 842 /* only whole-numbered pages */
843 ehca_err(fmr->device, "bad iova, iova=%lx fmr_page_size=%x", 843 ehca_err(fmr->device, "bad iova, iova=%llx fmr_page_size=%x",
844 iova, e_fmr->fmr_page_size); 844 iova, e_fmr->fmr_page_size);
845 ret = -EINVAL; 845 ret = -EINVAL;
846 goto map_phys_fmr_exit0; 846 goto map_phys_fmr_exit0;
@@ -878,7 +878,7 @@ int ehca_map_phys_fmr(struct ib_fmr *fmr,
878map_phys_fmr_exit0: 878map_phys_fmr_exit0:
879 if (ret) 879 if (ret)
880 ehca_err(fmr->device, "ret=%i fmr=%p page_list=%p list_len=%x " 880 ehca_err(fmr->device, "ret=%i fmr=%p page_list=%p list_len=%x "
881 "iova=%lx", ret, fmr, page_list, list_len, iova); 881 "iova=%llx", ret, fmr, page_list, list_len, iova);
882 return ret; 882 return ret;
883} /* end ehca_map_phys_fmr() */ 883} /* end ehca_map_phys_fmr() */
884 884
@@ -964,8 +964,8 @@ int ehca_dealloc_fmr(struct ib_fmr *fmr)
964 964
965 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr); 965 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
966 if (h_ret != H_SUCCESS) { 966 if (h_ret != H_SUCCESS) {
967 ehca_err(fmr->device, "hipz_free_mr failed, h_ret=%li e_fmr=%p " 967 ehca_err(fmr->device, "hipz_free_mr failed, h_ret=%lli e_fmr=%p "
968 "hca_hndl=%lx fmr_hndl=%lx fmr->lkey=%x", 968 "hca_hndl=%llx fmr_hndl=%llx fmr->lkey=%x",
969 h_ret, e_fmr, shca->ipz_hca_handle.handle, 969 h_ret, e_fmr, shca->ipz_hca_handle.handle,
970 e_fmr->ipz_mr_handle.handle, fmr->lkey); 970 e_fmr->ipz_mr_handle.handle, fmr->lkey);
971 ret = ehca2ib_return_code(h_ret); 971 ret = ehca2ib_return_code(h_ret);
@@ -1007,8 +1007,8 @@ int ehca_reg_mr(struct ehca_shca *shca,
1007 (u64)iova_start, size, hipz_acl, 1007 (u64)iova_start, size, hipz_acl,
1008 e_pd->fw_pd, &hipzout); 1008 e_pd->fw_pd, &hipzout);
1009 if (h_ret != H_SUCCESS) { 1009 if (h_ret != H_SUCCESS) {
1010 ehca_err(&shca->ib_device, "hipz_alloc_mr failed, h_ret=%li " 1010 ehca_err(&shca->ib_device, "hipz_alloc_mr failed, h_ret=%lli "
1011 "hca_hndl=%lx", h_ret, shca->ipz_hca_handle.handle); 1011 "hca_hndl=%llx", h_ret, shca->ipz_hca_handle.handle);
1012 ret = ehca2ib_return_code(h_ret); 1012 ret = ehca2ib_return_code(h_ret);
1013 goto ehca_reg_mr_exit0; 1013 goto ehca_reg_mr_exit0;
1014 } 1014 }
@@ -1033,9 +1033,9 @@ int ehca_reg_mr(struct ehca_shca *shca,
1033ehca_reg_mr_exit1: 1033ehca_reg_mr_exit1:
1034 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); 1034 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
1035 if (h_ret != H_SUCCESS) { 1035 if (h_ret != H_SUCCESS) {
1036 ehca_err(&shca->ib_device, "h_ret=%li shca=%p e_mr=%p " 1036 ehca_err(&shca->ib_device, "h_ret=%lli shca=%p e_mr=%p "
1037 "iova_start=%p size=%lx acl=%x e_pd=%p lkey=%x " 1037 "iova_start=%p size=%llx acl=%x e_pd=%p lkey=%x "
1038 "pginfo=%p num_kpages=%lx num_hwpages=%lx ret=%i", 1038 "pginfo=%p num_kpages=%llx num_hwpages=%llx ret=%i",
1039 h_ret, shca, e_mr, iova_start, size, acl, e_pd, 1039 h_ret, shca, e_mr, iova_start, size, acl, e_pd,
1040 hipzout.lkey, pginfo, pginfo->num_kpages, 1040 hipzout.lkey, pginfo, pginfo->num_kpages,
1041 pginfo->num_hwpages, ret); 1041 pginfo->num_hwpages, ret);
@@ -1045,8 +1045,8 @@ ehca_reg_mr_exit1:
1045ehca_reg_mr_exit0: 1045ehca_reg_mr_exit0:
1046 if (ret) 1046 if (ret)
1047 ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p " 1047 ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p "
1048 "iova_start=%p size=%lx acl=%x e_pd=%p pginfo=%p " 1048 "iova_start=%p size=%llx acl=%x e_pd=%p pginfo=%p "
1049 "num_kpages=%lx num_hwpages=%lx", 1049 "num_kpages=%llx num_hwpages=%llx",
1050 ret, shca, e_mr, iova_start, size, acl, e_pd, pginfo, 1050 ret, shca, e_mr, iova_start, size, acl, e_pd, pginfo,
1051 pginfo->num_kpages, pginfo->num_hwpages); 1051 pginfo->num_kpages, pginfo->num_hwpages);
1052 return ret; 1052 return ret;
@@ -1116,8 +1116,8 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca,
1116 */ 1116 */
1117 if (h_ret != H_SUCCESS) { 1117 if (h_ret != H_SUCCESS) {
1118 ehca_err(&shca->ib_device, "last " 1118 ehca_err(&shca->ib_device, "last "
1119 "hipz_reg_rpage_mr failed, h_ret=%li " 1119 "hipz_reg_rpage_mr failed, h_ret=%lli "
1120 "e_mr=%p i=%x hca_hndl=%lx mr_hndl=%lx" 1120 "e_mr=%p i=%x hca_hndl=%llx mr_hndl=%llx"
1121 " lkey=%x", h_ret, e_mr, i, 1121 " lkey=%x", h_ret, e_mr, i,
1122 shca->ipz_hca_handle.handle, 1122 shca->ipz_hca_handle.handle,
1123 e_mr->ipz_mr_handle.handle, 1123 e_mr->ipz_mr_handle.handle,
@@ -1128,8 +1128,8 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca,
1128 ret = 0; 1128 ret = 0;
1129 } else if (h_ret != H_PAGE_REGISTERED) { 1129 } else if (h_ret != H_PAGE_REGISTERED) {
1130 ehca_err(&shca->ib_device, "hipz_reg_rpage_mr failed, " 1130 ehca_err(&shca->ib_device, "hipz_reg_rpage_mr failed, "
1131 "h_ret=%li e_mr=%p i=%x lkey=%x hca_hndl=%lx " 1131 "h_ret=%lli e_mr=%p i=%x lkey=%x hca_hndl=%llx "
1132 "mr_hndl=%lx", h_ret, e_mr, i, 1132 "mr_hndl=%llx", h_ret, e_mr, i,
1133 e_mr->ib.ib_mr.lkey, 1133 e_mr->ib.ib_mr.lkey,
1134 shca->ipz_hca_handle.handle, 1134 shca->ipz_hca_handle.handle,
1135 e_mr->ipz_mr_handle.handle); 1135 e_mr->ipz_mr_handle.handle);
@@ -1145,7 +1145,7 @@ ehca_reg_mr_rpages_exit1:
1145ehca_reg_mr_rpages_exit0: 1145ehca_reg_mr_rpages_exit0:
1146 if (ret) 1146 if (ret)
1147 ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p pginfo=%p " 1147 ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p pginfo=%p "
1148 "num_kpages=%lx num_hwpages=%lx", ret, shca, e_mr, 1148 "num_kpages=%llx num_hwpages=%llx", ret, shca, e_mr,
1149 pginfo, pginfo->num_kpages, pginfo->num_hwpages); 1149 pginfo, pginfo->num_kpages, pginfo->num_hwpages);
1150 return ret; 1150 return ret;
1151} /* end ehca_reg_mr_rpages() */ 1151} /* end ehca_reg_mr_rpages() */
@@ -1184,7 +1184,7 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca,
1184 ret = ehca_set_pagebuf(pginfo, pginfo->num_hwpages, kpage); 1184 ret = ehca_set_pagebuf(pginfo, pginfo->num_hwpages, kpage);
1185 if (ret) { 1185 if (ret) {
1186 ehca_err(&shca->ib_device, "set pagebuf failed, e_mr=%p " 1186 ehca_err(&shca->ib_device, "set pagebuf failed, e_mr=%p "
1187 "pginfo=%p type=%x num_kpages=%lx num_hwpages=%lx " 1187 "pginfo=%p type=%x num_kpages=%llx num_hwpages=%llx "
1188 "kpage=%p", e_mr, pginfo, pginfo->type, 1188 "kpage=%p", e_mr, pginfo, pginfo->type,
1189 pginfo->num_kpages, pginfo->num_hwpages, kpage); 1189 pginfo->num_kpages, pginfo->num_hwpages, kpage);
1190 goto ehca_rereg_mr_rereg1_exit1; 1190 goto ehca_rereg_mr_rereg1_exit1;
@@ -1205,13 +1205,13 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca,
1205 * (MW bound or MR is shared) 1205 * (MW bound or MR is shared)
1206 */ 1206 */
1207 ehca_warn(&shca->ib_device, "hipz_h_reregister_pmr failed " 1207 ehca_warn(&shca->ib_device, "hipz_h_reregister_pmr failed "
1208 "(Rereg1), h_ret=%li e_mr=%p", h_ret, e_mr); 1208 "(Rereg1), h_ret=%lli e_mr=%p", h_ret, e_mr);
1209 *pginfo = pginfo_save; 1209 *pginfo = pginfo_save;
1210 ret = -EAGAIN; 1210 ret = -EAGAIN;
1211 } else if ((u64 *)hipzout.vaddr != iova_start) { 1211 } else if ((u64 *)hipzout.vaddr != iova_start) {
1212 ehca_err(&shca->ib_device, "PHYP changed iova_start in " 1212 ehca_err(&shca->ib_device, "PHYP changed iova_start in "
1213 "rereg_pmr, iova_start=%p iova_start_out=%lx e_mr=%p " 1213 "rereg_pmr, iova_start=%p iova_start_out=%llx e_mr=%p "
1214 "mr_handle=%lx lkey=%x lkey_out=%x", iova_start, 1214 "mr_handle=%llx lkey=%x lkey_out=%x", iova_start,
1215 hipzout.vaddr, e_mr, e_mr->ipz_mr_handle.handle, 1215 hipzout.vaddr, e_mr, e_mr->ipz_mr_handle.handle,
1216 e_mr->ib.ib_mr.lkey, hipzout.lkey); 1216 e_mr->ib.ib_mr.lkey, hipzout.lkey);
1217 ret = -EFAULT; 1217 ret = -EFAULT;
@@ -1235,7 +1235,7 @@ ehca_rereg_mr_rereg1_exit1:
1235ehca_rereg_mr_rereg1_exit0: 1235ehca_rereg_mr_rereg1_exit0:
1236 if ( ret && (ret != -EAGAIN) ) 1236 if ( ret && (ret != -EAGAIN) )
1237 ehca_err(&shca->ib_device, "ret=%i lkey=%x rkey=%x " 1237 ehca_err(&shca->ib_device, "ret=%i lkey=%x rkey=%x "
1238 "pginfo=%p num_kpages=%lx num_hwpages=%lx", 1238 "pginfo=%p num_kpages=%llx num_hwpages=%llx",
1239 ret, *lkey, *rkey, pginfo, pginfo->num_kpages, 1239 ret, *lkey, *rkey, pginfo, pginfo->num_kpages,
1240 pginfo->num_hwpages); 1240 pginfo->num_hwpages);
1241 return ret; 1241 return ret;
@@ -1263,7 +1263,7 @@ int ehca_rereg_mr(struct ehca_shca *shca,
1263 (e_mr->num_hwpages > MAX_RPAGES) || 1263 (e_mr->num_hwpages > MAX_RPAGES) ||
1264 (pginfo->num_hwpages > e_mr->num_hwpages)) { 1264 (pginfo->num_hwpages > e_mr->num_hwpages)) {
1265 ehca_dbg(&shca->ib_device, "Rereg3 case, " 1265 ehca_dbg(&shca->ib_device, "Rereg3 case, "
1266 "pginfo->num_hwpages=%lx e_mr->num_hwpages=%x", 1266 "pginfo->num_hwpages=%llx e_mr->num_hwpages=%x",
1267 pginfo->num_hwpages, e_mr->num_hwpages); 1267 pginfo->num_hwpages, e_mr->num_hwpages);
1268 rereg_1_hcall = 0; 1268 rereg_1_hcall = 0;
1269 rereg_3_hcall = 1; 1269 rereg_3_hcall = 1;
@@ -1295,7 +1295,7 @@ int ehca_rereg_mr(struct ehca_shca *shca,
1295 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr); 1295 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
1296 if (h_ret != H_SUCCESS) { 1296 if (h_ret != H_SUCCESS) {
1297 ehca_err(&shca->ib_device, "hipz_free_mr failed, " 1297 ehca_err(&shca->ib_device, "hipz_free_mr failed, "
1298 "h_ret=%li e_mr=%p hca_hndl=%lx mr_hndl=%lx " 1298 "h_ret=%lli e_mr=%p hca_hndl=%llx mr_hndl=%llx "
1299 "mr->lkey=%x", 1299 "mr->lkey=%x",
1300 h_ret, e_mr, shca->ipz_hca_handle.handle, 1300 h_ret, e_mr, shca->ipz_hca_handle.handle,
1301 e_mr->ipz_mr_handle.handle, 1301 e_mr->ipz_mr_handle.handle,
@@ -1328,8 +1328,8 @@ int ehca_rereg_mr(struct ehca_shca *shca,
1328ehca_rereg_mr_exit0: 1328ehca_rereg_mr_exit0:
1329 if (ret) 1329 if (ret)
1330 ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p " 1330 ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p "
1331 "iova_start=%p size=%lx acl=%x e_pd=%p pginfo=%p " 1331 "iova_start=%p size=%llx acl=%x e_pd=%p pginfo=%p "
1332 "num_kpages=%lx lkey=%x rkey=%x rereg_1_hcall=%x " 1332 "num_kpages=%llx lkey=%x rkey=%x rereg_1_hcall=%x "
1333 "rereg_3_hcall=%x", ret, shca, e_mr, iova_start, size, 1333 "rereg_3_hcall=%x", ret, shca, e_mr, iova_start, size,
1334 acl, e_pd, pginfo, pginfo->num_kpages, *lkey, *rkey, 1334 acl, e_pd, pginfo, pginfo->num_kpages, *lkey, *rkey,
1335 rereg_1_hcall, rereg_3_hcall); 1335 rereg_1_hcall, rereg_3_hcall);
@@ -1371,8 +1371,8 @@ int ehca_unmap_one_fmr(struct ehca_shca *shca,
1371 * FMRs are not shared and no MW bound to FMRs 1371 * FMRs are not shared and no MW bound to FMRs
1372 */ 1372 */
1373 ehca_err(&shca->ib_device, "hipz_reregister_pmr failed " 1373 ehca_err(&shca->ib_device, "hipz_reregister_pmr failed "
1374 "(Rereg1), h_ret=%li e_fmr=%p hca_hndl=%lx " 1374 "(Rereg1), h_ret=%lli e_fmr=%p hca_hndl=%llx "
1375 "mr_hndl=%lx lkey=%x lkey_out=%x", 1375 "mr_hndl=%llx lkey=%x lkey_out=%x",
1376 h_ret, e_fmr, shca->ipz_hca_handle.handle, 1376 h_ret, e_fmr, shca->ipz_hca_handle.handle,
1377 e_fmr->ipz_mr_handle.handle, 1377 e_fmr->ipz_mr_handle.handle,
1378 e_fmr->ib.ib_fmr.lkey, hipzout.lkey); 1378 e_fmr->ib.ib_fmr.lkey, hipzout.lkey);
@@ -1383,7 +1383,7 @@ int ehca_unmap_one_fmr(struct ehca_shca *shca,
1383 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr); 1383 h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
1384 if (h_ret != H_SUCCESS) { 1384 if (h_ret != H_SUCCESS) {
1385 ehca_err(&shca->ib_device, "hipz_free_mr failed, " 1385 ehca_err(&shca->ib_device, "hipz_free_mr failed, "
1386 "h_ret=%li e_fmr=%p hca_hndl=%lx mr_hndl=%lx " 1386 "h_ret=%lli e_fmr=%p hca_hndl=%llx mr_hndl=%llx "
1387 "lkey=%x", 1387 "lkey=%x",
1388 h_ret, e_fmr, shca->ipz_hca_handle.handle, 1388 h_ret, e_fmr, shca->ipz_hca_handle.handle,
1389 e_fmr->ipz_mr_handle.handle, 1389 e_fmr->ipz_mr_handle.handle,
@@ -1447,9 +1447,9 @@ int ehca_reg_smr(struct ehca_shca *shca,
1447 (u64)iova_start, hipz_acl, e_pd->fw_pd, 1447 (u64)iova_start, hipz_acl, e_pd->fw_pd,
1448 &hipzout); 1448 &hipzout);
1449 if (h_ret != H_SUCCESS) { 1449 if (h_ret != H_SUCCESS) {
1450 ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%li " 1450 ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%lli "
1451 "shca=%p e_origmr=%p e_newmr=%p iova_start=%p acl=%x " 1451 "shca=%p e_origmr=%p e_newmr=%p iova_start=%p acl=%x "
1452 "e_pd=%p hca_hndl=%lx mr_hndl=%lx lkey=%x", 1452 "e_pd=%p hca_hndl=%llx mr_hndl=%llx lkey=%x",
1453 h_ret, shca, e_origmr, e_newmr, iova_start, acl, e_pd, 1453 h_ret, shca, e_origmr, e_newmr, iova_start, acl, e_pd,
1454 shca->ipz_hca_handle.handle, 1454 shca->ipz_hca_handle.handle,
1455 e_origmr->ipz_mr_handle.handle, 1455 e_origmr->ipz_mr_handle.handle,
@@ -1527,7 +1527,7 @@ int ehca_reg_internal_maxmr(
1527 &e_mr->ib.ib_mr.rkey); 1527 &e_mr->ib.ib_mr.rkey);
1528 if (ret) { 1528 if (ret) {
1529 ehca_err(&shca->ib_device, "reg of internal max MR failed, " 1529 ehca_err(&shca->ib_device, "reg of internal max MR failed, "
1530 "e_mr=%p iova_start=%p size_maxmr=%lx num_kpages=%x " 1530 "e_mr=%p iova_start=%p size_maxmr=%llx num_kpages=%x "
1531 "num_hwpages=%x", e_mr, iova_start, size_maxmr, 1531 "num_hwpages=%x", e_mr, iova_start, size_maxmr,
1532 num_kpages, num_hwpages); 1532 num_kpages, num_hwpages);
1533 goto ehca_reg_internal_maxmr_exit1; 1533 goto ehca_reg_internal_maxmr_exit1;
@@ -1573,8 +1573,8 @@ int ehca_reg_maxmr(struct ehca_shca *shca,
1573 (u64)iova_start, hipz_acl, e_pd->fw_pd, 1573 (u64)iova_start, hipz_acl, e_pd->fw_pd,
1574 &hipzout); 1574 &hipzout);
1575 if (h_ret != H_SUCCESS) { 1575 if (h_ret != H_SUCCESS) {
1576 ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%li " 1576 ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%lli "
1577 "e_origmr=%p hca_hndl=%lx mr_hndl=%lx lkey=%x", 1577 "e_origmr=%p hca_hndl=%llx mr_hndl=%llx lkey=%x",
1578 h_ret, e_origmr, shca->ipz_hca_handle.handle, 1578 h_ret, e_origmr, shca->ipz_hca_handle.handle,
1579 e_origmr->ipz_mr_handle.handle, 1579 e_origmr->ipz_mr_handle.handle,
1580 e_origmr->ib.ib_mr.lkey); 1580 e_origmr->ib.ib_mr.lkey);
@@ -1651,28 +1651,28 @@ int ehca_mr_chk_buf_and_calc_size(struct ib_phys_buf *phys_buf_array,
1651 /* check first buffer */ 1651 /* check first buffer */
1652 if (((u64)iova_start & ~PAGE_MASK) != (pbuf->addr & ~PAGE_MASK)) { 1652 if (((u64)iova_start & ~PAGE_MASK) != (pbuf->addr & ~PAGE_MASK)) {
1653 ehca_gen_err("iova_start/addr mismatch, iova_start=%p " 1653 ehca_gen_err("iova_start/addr mismatch, iova_start=%p "
1654 "pbuf->addr=%lx pbuf->size=%lx", 1654 "pbuf->addr=%llx pbuf->size=%llx",
1655 iova_start, pbuf->addr, pbuf->size); 1655 iova_start, pbuf->addr, pbuf->size);
1656 return -EINVAL; 1656 return -EINVAL;
1657 } 1657 }
1658 if (((pbuf->addr + pbuf->size) % PAGE_SIZE) && 1658 if (((pbuf->addr + pbuf->size) % PAGE_SIZE) &&
1659 (num_phys_buf > 1)) { 1659 (num_phys_buf > 1)) {
1660 ehca_gen_err("addr/size mismatch in 1st buf, pbuf->addr=%lx " 1660 ehca_gen_err("addr/size mismatch in 1st buf, pbuf->addr=%llx "
1661 "pbuf->size=%lx", pbuf->addr, pbuf->size); 1661 "pbuf->size=%llx", pbuf->addr, pbuf->size);
1662 return -EINVAL; 1662 return -EINVAL;
1663 } 1663 }
1664 1664
1665 for (i = 0; i < num_phys_buf; i++) { 1665 for (i = 0; i < num_phys_buf; i++) {
1666 if ((i > 0) && (pbuf->addr % PAGE_SIZE)) { 1666 if ((i > 0) && (pbuf->addr % PAGE_SIZE)) {
1667 ehca_gen_err("bad address, i=%x pbuf->addr=%lx " 1667 ehca_gen_err("bad address, i=%x pbuf->addr=%llx "
1668 "pbuf->size=%lx", 1668 "pbuf->size=%llx",
1669 i, pbuf->addr, pbuf->size); 1669 i, pbuf->addr, pbuf->size);
1670 return -EINVAL; 1670 return -EINVAL;
1671 } 1671 }
1672 if (((i > 0) && /* not 1st */ 1672 if (((i > 0) && /* not 1st */
1673 (i < (num_phys_buf - 1)) && /* not last */ 1673 (i < (num_phys_buf - 1)) && /* not last */
1674 (pbuf->size % PAGE_SIZE)) || (pbuf->size == 0)) { 1674 (pbuf->size % PAGE_SIZE)) || (pbuf->size == 0)) {
1675 ehca_gen_err("bad size, i=%x pbuf->size=%lx", 1675 ehca_gen_err("bad size, i=%x pbuf->size=%llx",
1676 i, pbuf->size); 1676 i, pbuf->size);
1677 return -EINVAL; 1677 return -EINVAL;
1678 } 1678 }
@@ -1705,7 +1705,7 @@ int ehca_fmr_check_page_list(struct ehca_mr *e_fmr,
1705 page = page_list; 1705 page = page_list;
1706 for (i = 0; i < list_len; i++) { 1706 for (i = 0; i < list_len; i++) {
1707 if (*page % e_fmr->fmr_page_size) { 1707 if (*page % e_fmr->fmr_page_size) {
1708 ehca_gen_err("bad page, i=%x *page=%lx page=%p fmr=%p " 1708 ehca_gen_err("bad page, i=%x *page=%llx page=%p fmr=%p "
1709 "fmr_page_size=%x", i, *page, page, e_fmr, 1709 "fmr_page_size=%x", i, *page, page, e_fmr,
1710 e_fmr->fmr_page_size); 1710 e_fmr->fmr_page_size);
1711 return -EINVAL; 1711 return -EINVAL;
@@ -1743,9 +1743,9 @@ static int ehca_set_pagebuf_user1(struct ehca_mr_pginfo *pginfo,
1743 (pginfo->next_hwpage * 1743 (pginfo->next_hwpage *
1744 pginfo->hwpage_size)); 1744 pginfo->hwpage_size));
1745 if ( !(*kpage) ) { 1745 if ( !(*kpage) ) {
1746 ehca_gen_err("pgaddr=%lx " 1746 ehca_gen_err("pgaddr=%llx "
1747 "chunk->page_list[i]=%lx " 1747 "chunk->page_list[i]=%llx "
1748 "i=%x next_hwpage=%lx", 1748 "i=%x next_hwpage=%llx",
1749 pgaddr, (u64)sg_dma_address( 1749 pgaddr, (u64)sg_dma_address(
1750 &chunk->page_list[i]), 1750 &chunk->page_list[i]),
1751 i, pginfo->next_hwpage); 1751 i, pginfo->next_hwpage);
@@ -1795,11 +1795,11 @@ static int ehca_check_kpages_per_ate(struct scatterlist *page_list,
1795 for (t = start_idx; t <= end_idx; t++) { 1795 for (t = start_idx; t <= end_idx; t++) {
1796 u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT; 1796 u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT;
1797 if (ehca_debug_level >= 3) 1797 if (ehca_debug_level >= 3)
1798 ehca_gen_dbg("chunk_page=%lx value=%016lx", pgaddr, 1798 ehca_gen_dbg("chunk_page=%llx value=%016llx", pgaddr,
1799 *(u64 *)abs_to_virt(phys_to_abs(pgaddr))); 1799 *(u64 *)abs_to_virt(phys_to_abs(pgaddr)));
1800 if (pgaddr - PAGE_SIZE != *prev_pgaddr) { 1800 if (pgaddr - PAGE_SIZE != *prev_pgaddr) {
1801 ehca_gen_err("uncontiguous page found pgaddr=%lx " 1801 ehca_gen_err("uncontiguous page found pgaddr=%llx "
1802 "prev_pgaddr=%lx page_list_i=%x", 1802 "prev_pgaddr=%llx page_list_i=%x",
1803 pgaddr, *prev_pgaddr, t); 1803 pgaddr, *prev_pgaddr, t);
1804 return -EINVAL; 1804 return -EINVAL;
1805 } 1805 }
@@ -1833,7 +1833,7 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
1833 << PAGE_SHIFT ); 1833 << PAGE_SHIFT );
1834 *kpage = phys_to_abs(pgaddr); 1834 *kpage = phys_to_abs(pgaddr);
1835 if ( !(*kpage) ) { 1835 if ( !(*kpage) ) {
1836 ehca_gen_err("pgaddr=%lx i=%x", 1836 ehca_gen_err("pgaddr=%llx i=%x",
1837 pgaddr, i); 1837 pgaddr, i);
1838 ret = -EFAULT; 1838 ret = -EFAULT;
1839 return ret; 1839 return ret;
@@ -1846,8 +1846,8 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
1846 if (pginfo->hwpage_cnt) { 1846 if (pginfo->hwpage_cnt) {
1847 ehca_gen_err( 1847 ehca_gen_err(
1848 "invalid alignment " 1848 "invalid alignment "
1849 "pgaddr=%lx i=%x " 1849 "pgaddr=%llx i=%x "
1850 "mr_pgsize=%lx", 1850 "mr_pgsize=%llx",
1851 pgaddr, i, 1851 pgaddr, i,
1852 pginfo->hwpage_size); 1852 pginfo->hwpage_size);
1853 ret = -EFAULT; 1853 ret = -EFAULT;
@@ -1866,8 +1866,8 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
1866 if (ehca_debug_level >= 3) { 1866 if (ehca_debug_level >= 3) {
1867 u64 val = *(u64 *)abs_to_virt( 1867 u64 val = *(u64 *)abs_to_virt(
1868 phys_to_abs(pgaddr)); 1868 phys_to_abs(pgaddr));
1869 ehca_gen_dbg("kpage=%lx chunk_page=%lx " 1869 ehca_gen_dbg("kpage=%llx chunk_page=%llx "
1870 "value=%016lx", 1870 "value=%016llx",
1871 *kpage, pgaddr, val); 1871 *kpage, pgaddr, val);
1872 } 1872 }
1873 prev_pgaddr = pgaddr; 1873 prev_pgaddr = pgaddr;
@@ -1944,9 +1944,9 @@ static int ehca_set_pagebuf_phys(struct ehca_mr_pginfo *pginfo,
1944 if ((pginfo->kpage_cnt >= pginfo->num_kpages) || 1944 if ((pginfo->kpage_cnt >= pginfo->num_kpages) ||
1945 (pginfo->hwpage_cnt >= pginfo->num_hwpages)) { 1945 (pginfo->hwpage_cnt >= pginfo->num_hwpages)) {
1946 ehca_gen_err("kpage_cnt >= num_kpages, " 1946 ehca_gen_err("kpage_cnt >= num_kpages, "
1947 "kpage_cnt=%lx num_kpages=%lx " 1947 "kpage_cnt=%llx num_kpages=%llx "
1948 "hwpage_cnt=%lx " 1948 "hwpage_cnt=%llx "
1949 "num_hwpages=%lx i=%x", 1949 "num_hwpages=%llx i=%x",
1950 pginfo->kpage_cnt, 1950 pginfo->kpage_cnt,
1951 pginfo->num_kpages, 1951 pginfo->num_kpages,
1952 pginfo->hwpage_cnt, 1952 pginfo->hwpage_cnt,
@@ -1957,8 +1957,8 @@ static int ehca_set_pagebuf_phys(struct ehca_mr_pginfo *pginfo,
1957 (pbuf->addr & ~(pginfo->hwpage_size - 1)) + 1957 (pbuf->addr & ~(pginfo->hwpage_size - 1)) +
1958 (pginfo->next_hwpage * pginfo->hwpage_size)); 1958 (pginfo->next_hwpage * pginfo->hwpage_size));
1959 if ( !(*kpage) && pbuf->addr ) { 1959 if ( !(*kpage) && pbuf->addr ) {
1960 ehca_gen_err("pbuf->addr=%lx pbuf->size=%lx " 1960 ehca_gen_err("pbuf->addr=%llx pbuf->size=%llx "
1961 "next_hwpage=%lx", pbuf->addr, 1961 "next_hwpage=%llx", pbuf->addr,
1962 pbuf->size, pginfo->next_hwpage); 1962 pbuf->size, pginfo->next_hwpage);
1963 return -EFAULT; 1963 return -EFAULT;
1964 } 1964 }
@@ -1996,8 +1996,8 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo,
1996 *kpage = phys_to_abs((*fmrlist & ~(pginfo->hwpage_size - 1)) + 1996 *kpage = phys_to_abs((*fmrlist & ~(pginfo->hwpage_size - 1)) +
1997 pginfo->next_hwpage * pginfo->hwpage_size); 1997 pginfo->next_hwpage * pginfo->hwpage_size);
1998 if ( !(*kpage) ) { 1998 if ( !(*kpage) ) {
1999 ehca_gen_err("*fmrlist=%lx fmrlist=%p " 1999 ehca_gen_err("*fmrlist=%llx fmrlist=%p "
2000 "next_listelem=%lx next_hwpage=%lx", 2000 "next_listelem=%llx next_hwpage=%llx",
2001 *fmrlist, fmrlist, 2001 *fmrlist, fmrlist,
2002 pginfo->u.fmr.next_listelem, 2002 pginfo->u.fmr.next_listelem,
2003 pginfo->next_hwpage); 2003 pginfo->next_hwpage);
@@ -2025,7 +2025,7 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo,
2025 ~(pginfo->hwpage_size - 1)); 2025 ~(pginfo->hwpage_size - 1));
2026 if (prev + pginfo->u.fmr.fmr_pgsize != p) { 2026 if (prev + pginfo->u.fmr.fmr_pgsize != p) {
2027 ehca_gen_err("uncontiguous fmr pages " 2027 ehca_gen_err("uncontiguous fmr pages "
2028 "found prev=%lx p=%lx " 2028 "found prev=%llx p=%llx "
2029 "idx=%x", prev, p, i + j); 2029 "idx=%x", prev, p, i + j);
2030 return -EINVAL; 2030 return -EINVAL;
2031 } 2031 }
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index f161cf173dbe..00c108159714 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -331,7 +331,7 @@ static inline int init_qp_queue(struct ehca_shca *shca,
331 if (cnt == (nr_q_pages - 1)) { /* last page! */ 331 if (cnt == (nr_q_pages - 1)) { /* last page! */
332 if (h_ret != expected_hret) { 332 if (h_ret != expected_hret) {
333 ehca_err(ib_dev, "hipz_qp_register_rpage() " 333 ehca_err(ib_dev, "hipz_qp_register_rpage() "
334 "h_ret=%li", h_ret); 334 "h_ret=%lli", h_ret);
335 ret = ehca2ib_return_code(h_ret); 335 ret = ehca2ib_return_code(h_ret);
336 goto init_qp_queue1; 336 goto init_qp_queue1;
337 } 337 }
@@ -345,7 +345,7 @@ static inline int init_qp_queue(struct ehca_shca *shca,
345 } else { 345 } else {
346 if (h_ret != H_PAGE_REGISTERED) { 346 if (h_ret != H_PAGE_REGISTERED) {
347 ehca_err(ib_dev, "hipz_qp_register_rpage() " 347 ehca_err(ib_dev, "hipz_qp_register_rpage() "
348 "h_ret=%li", h_ret); 348 "h_ret=%lli", h_ret);
349 ret = ehca2ib_return_code(h_ret); 349 ret = ehca2ib_return_code(h_ret);
350 goto init_qp_queue1; 350 goto init_qp_queue1;
351 } 351 }
@@ -709,7 +709,7 @@ static struct ehca_qp *internal_create_qp(
709 709
710 h_ret = hipz_h_alloc_resource_qp(shca->ipz_hca_handle, &parms); 710 h_ret = hipz_h_alloc_resource_qp(shca->ipz_hca_handle, &parms);
711 if (h_ret != H_SUCCESS) { 711 if (h_ret != H_SUCCESS) {
712 ehca_err(pd->device, "h_alloc_resource_qp() failed h_ret=%li", 712 ehca_err(pd->device, "h_alloc_resource_qp() failed h_ret=%lli",
713 h_ret); 713 h_ret);
714 ret = ehca2ib_return_code(h_ret); 714 ret = ehca2ib_return_code(h_ret);
715 goto create_qp_exit1; 715 goto create_qp_exit1;
@@ -1010,7 +1010,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
1010 mqpcb, my_qp->galpas.kernel); 1010 mqpcb, my_qp->galpas.kernel);
1011 if (hret != H_SUCCESS) { 1011 if (hret != H_SUCCESS) {
1012 ehca_err(pd->device, "Could not modify SRQ to INIT " 1012 ehca_err(pd->device, "Could not modify SRQ to INIT "
1013 "ehca_qp=%p qp_num=%x h_ret=%li", 1013 "ehca_qp=%p qp_num=%x h_ret=%lli",
1014 my_qp, my_qp->real_qp_num, hret); 1014 my_qp, my_qp->real_qp_num, hret);
1015 goto create_srq2; 1015 goto create_srq2;
1016 } 1016 }
@@ -1024,7 +1024,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
1024 mqpcb, my_qp->galpas.kernel); 1024 mqpcb, my_qp->galpas.kernel);
1025 if (hret != H_SUCCESS) { 1025 if (hret != H_SUCCESS) {
1026 ehca_err(pd->device, "Could not enable SRQ " 1026 ehca_err(pd->device, "Could not enable SRQ "
1027 "ehca_qp=%p qp_num=%x h_ret=%li", 1027 "ehca_qp=%p qp_num=%x h_ret=%lli",
1028 my_qp, my_qp->real_qp_num, hret); 1028 my_qp, my_qp->real_qp_num, hret);
1029 goto create_srq2; 1029 goto create_srq2;
1030 } 1030 }
@@ -1038,7 +1038,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
1038 mqpcb, my_qp->galpas.kernel); 1038 mqpcb, my_qp->galpas.kernel);
1039 if (hret != H_SUCCESS) { 1039 if (hret != H_SUCCESS) {
1040 ehca_err(pd->device, "Could not modify SRQ to RTR " 1040 ehca_err(pd->device, "Could not modify SRQ to RTR "
1041 "ehca_qp=%p qp_num=%x h_ret=%li", 1041 "ehca_qp=%p qp_num=%x h_ret=%lli",
1042 my_qp, my_qp->real_qp_num, hret); 1042 my_qp, my_qp->real_qp_num, hret);
1043 goto create_srq2; 1043 goto create_srq2;
1044 } 1044 }
@@ -1078,7 +1078,7 @@ static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca,
1078 &bad_send_wqe_p, NULL, 2); 1078 &bad_send_wqe_p, NULL, 2);
1079 if (h_ret != H_SUCCESS) { 1079 if (h_ret != H_SUCCESS) {
1080 ehca_err(&shca->ib_device, "hipz_h_disable_and_get_wqe() failed" 1080 ehca_err(&shca->ib_device, "hipz_h_disable_and_get_wqe() failed"
1081 " ehca_qp=%p qp_num=%x h_ret=%li", 1081 " ehca_qp=%p qp_num=%x h_ret=%lli",
1082 my_qp, qp_num, h_ret); 1082 my_qp, qp_num, h_ret);
1083 return ehca2ib_return_code(h_ret); 1083 return ehca2ib_return_code(h_ret);
1084 } 1084 }
@@ -1134,7 +1134,7 @@ static int calc_left_cqes(u64 wqe_p, struct ipz_queue *ipz_queue,
1134 1134
1135 if (ipz_queue_abs_to_offset(ipz_queue, wqe_p, &q_ofs)) { 1135 if (ipz_queue_abs_to_offset(ipz_queue, wqe_p, &q_ofs)) {
1136 ehca_gen_err("Invalid offset for calculating left cqes " 1136 ehca_gen_err("Invalid offset for calculating left cqes "
1137 "wqe_p=%#lx wqe_v=%p\n", wqe_p, wqe_v); 1137 "wqe_p=%#llx wqe_v=%p\n", wqe_p, wqe_v);
1138 return -EFAULT; 1138 return -EFAULT;
1139 } 1139 }
1140 1140
@@ -1168,7 +1168,7 @@ static int check_for_left_cqes(struct ehca_qp *my_qp, struct ehca_shca *shca)
1168 &send_wqe_p, &recv_wqe_p, 4); 1168 &send_wqe_p, &recv_wqe_p, 4);
1169 if (h_ret != H_SUCCESS) { 1169 if (h_ret != H_SUCCESS) {
1170 ehca_err(&shca->ib_device, "disable_and_get_wqe() " 1170 ehca_err(&shca->ib_device, "disable_and_get_wqe() "
1171 "failed ehca_qp=%p qp_num=%x h_ret=%li", 1171 "failed ehca_qp=%p qp_num=%x h_ret=%lli",
1172 my_qp, qp_num, h_ret); 1172 my_qp, qp_num, h_ret);
1173 return ehca2ib_return_code(h_ret); 1173 return ehca2ib_return_code(h_ret);
1174 } 1174 }
@@ -1261,7 +1261,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
1261 mqpcb, my_qp->galpas.kernel); 1261 mqpcb, my_qp->galpas.kernel);
1262 if (h_ret != H_SUCCESS) { 1262 if (h_ret != H_SUCCESS) {
1263 ehca_err(ibqp->device, "hipz_h_query_qp() failed " 1263 ehca_err(ibqp->device, "hipz_h_query_qp() failed "
1264 "ehca_qp=%p qp_num=%x h_ret=%li", 1264 "ehca_qp=%p qp_num=%x h_ret=%lli",
1265 my_qp, ibqp->qp_num, h_ret); 1265 my_qp, ibqp->qp_num, h_ret);
1266 ret = ehca2ib_return_code(h_ret); 1266 ret = ehca2ib_return_code(h_ret);
1267 goto modify_qp_exit1; 1267 goto modify_qp_exit1;
@@ -1690,7 +1690,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
1690 1690
1691 if (h_ret != H_SUCCESS) { 1691 if (h_ret != H_SUCCESS) {
1692 ret = ehca2ib_return_code(h_ret); 1692 ret = ehca2ib_return_code(h_ret);
1693 ehca_err(ibqp->device, "hipz_h_modify_qp() failed h_ret=%li " 1693 ehca_err(ibqp->device, "hipz_h_modify_qp() failed h_ret=%lli "
1694 "ehca_qp=%p qp_num=%x", h_ret, my_qp, ibqp->qp_num); 1694 "ehca_qp=%p qp_num=%x", h_ret, my_qp, ibqp->qp_num);
1695 goto modify_qp_exit2; 1695 goto modify_qp_exit2;
1696 } 1696 }
@@ -1723,7 +1723,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
1723 ret = ehca2ib_return_code(h_ret); 1723 ret = ehca2ib_return_code(h_ret);
1724 ehca_err(ibqp->device, "ENABLE in context of " 1724 ehca_err(ibqp->device, "ENABLE in context of "
1725 "RESET_2_INIT failed! Maybe you didn't get " 1725 "RESET_2_INIT failed! Maybe you didn't get "
1726 "a LID h_ret=%li ehca_qp=%p qp_num=%x", 1726 "a LID h_ret=%lli ehca_qp=%p qp_num=%x",
1727 h_ret, my_qp, ibqp->qp_num); 1727 h_ret, my_qp, ibqp->qp_num);
1728 goto modify_qp_exit2; 1728 goto modify_qp_exit2;
1729 } 1729 }
@@ -1909,7 +1909,7 @@ int ehca_query_qp(struct ib_qp *qp,
1909 if (h_ret != H_SUCCESS) { 1909 if (h_ret != H_SUCCESS) {
1910 ret = ehca2ib_return_code(h_ret); 1910 ret = ehca2ib_return_code(h_ret);
1911 ehca_err(qp->device, "hipz_h_query_qp() failed " 1911 ehca_err(qp->device, "hipz_h_query_qp() failed "
1912 "ehca_qp=%p qp_num=%x h_ret=%li", 1912 "ehca_qp=%p qp_num=%x h_ret=%lli",
1913 my_qp, qp->qp_num, h_ret); 1913 my_qp, qp->qp_num, h_ret);
1914 goto query_qp_exit1; 1914 goto query_qp_exit1;
1915 } 1915 }
@@ -2074,7 +2074,7 @@ int ehca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
2074 2074
2075 if (h_ret != H_SUCCESS) { 2075 if (h_ret != H_SUCCESS) {
2076 ret = ehca2ib_return_code(h_ret); 2076 ret = ehca2ib_return_code(h_ret);
2077 ehca_err(ibsrq->device, "hipz_h_modify_qp() failed h_ret=%li " 2077 ehca_err(ibsrq->device, "hipz_h_modify_qp() failed h_ret=%lli "
2078 "ehca_qp=%p qp_num=%x", 2078 "ehca_qp=%p qp_num=%x",
2079 h_ret, my_qp, my_qp->real_qp_num); 2079 h_ret, my_qp, my_qp->real_qp_num);
2080 } 2080 }
@@ -2108,7 +2108,7 @@ int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr)
2108 if (h_ret != H_SUCCESS) { 2108 if (h_ret != H_SUCCESS) {
2109 ret = ehca2ib_return_code(h_ret); 2109 ret = ehca2ib_return_code(h_ret);
2110 ehca_err(srq->device, "hipz_h_query_qp() failed " 2110 ehca_err(srq->device, "hipz_h_query_qp() failed "
2111 "ehca_qp=%p qp_num=%x h_ret=%li", 2111 "ehca_qp=%p qp_num=%x h_ret=%lli",
2112 my_qp, my_qp->real_qp_num, h_ret); 2112 my_qp, my_qp->real_qp_num, h_ret);
2113 goto query_srq_exit1; 2113 goto query_srq_exit1;
2114 } 2114 }
@@ -2179,7 +2179,7 @@ static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp,
2179 2179
2180 h_ret = hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp); 2180 h_ret = hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp);
2181 if (h_ret != H_SUCCESS) { 2181 if (h_ret != H_SUCCESS) {
2182 ehca_err(dev, "hipz_h_destroy_qp() failed h_ret=%li " 2182 ehca_err(dev, "hipz_h_destroy_qp() failed h_ret=%lli "
2183 "ehca_qp=%p qp_num=%x", h_ret, my_qp, qp_num); 2183 "ehca_qp=%p qp_num=%x", h_ret, my_qp, qp_num);
2184 return ehca2ib_return_code(h_ret); 2184 return ehca2ib_return_code(h_ret);
2185 } 2185 }
diff --git a/drivers/infiniband/hw/ehca/ehca_reqs.c b/drivers/infiniband/hw/ehca/ehca_reqs.c
index c7112686782f..5a3d96f84c79 100644
--- a/drivers/infiniband/hw/ehca/ehca_reqs.c
+++ b/drivers/infiniband/hw/ehca/ehca_reqs.c
@@ -822,7 +822,7 @@ static int generate_flush_cqes(struct ehca_qp *my_qp, struct ib_cq *cq,
822 offset = qmap->next_wqe_idx * ipz_queue->qe_size; 822 offset = qmap->next_wqe_idx * ipz_queue->qe_size;
823 wqe = (struct ehca_wqe *)ipz_qeit_calc(ipz_queue, offset); 823 wqe = (struct ehca_wqe *)ipz_qeit_calc(ipz_queue, offset);
824 if (!wqe) { 824 if (!wqe) {
825 ehca_err(cq->device, "Invalid wqe offset=%#lx on " 825 ehca_err(cq->device, "Invalid wqe offset=%#llx on "
826 "qp_num=%#x", offset, my_qp->real_qp_num); 826 "qp_num=%#x", offset, my_qp->real_qp_num);
827 return nr; 827 return nr;
828 } 828 }
diff --git a/drivers/infiniband/hw/ehca/ehca_sqp.c b/drivers/infiniband/hw/ehca/ehca_sqp.c
index 706d97ad5555..44447aaa5501 100644
--- a/drivers/infiniband/hw/ehca/ehca_sqp.c
+++ b/drivers/infiniband/hw/ehca/ehca_sqp.c
@@ -85,7 +85,7 @@ u64 ehca_define_sqp(struct ehca_shca *shca,
85 85
86 if (ret != H_SUCCESS) { 86 if (ret != H_SUCCESS) {
87 ehca_err(&shca->ib_device, 87 ehca_err(&shca->ib_device,
88 "Can't define AQP1 for port %x. h_ret=%li", 88 "Can't define AQP1 for port %x. h_ret=%lli",
89 port, ret); 89 port, ret);
90 return ret; 90 return ret;
91 } 91 }
diff --git a/drivers/infiniband/hw/ehca/ehca_tools.h b/drivers/infiniband/hw/ehca/ehca_tools.h
index 21f7d06f14ad..f09914cccf53 100644
--- a/drivers/infiniband/hw/ehca/ehca_tools.h
+++ b/drivers/infiniband/hw/ehca/ehca_tools.h
@@ -116,7 +116,7 @@ extern int ehca_debug_level;
116 unsigned char *deb = (unsigned char *)(adr); \ 116 unsigned char *deb = (unsigned char *)(adr); \
117 for (x = 0; x < l; x += 16) { \ 117 for (x = 0; x < l; x += 16) { \
118 printk(KERN_INFO "EHCA_DMP:%s " format \ 118 printk(KERN_INFO "EHCA_DMP:%s " format \
119 " adr=%p ofs=%04x %016lx %016lx\n", \ 119 " adr=%p ofs=%04x %016llx %016llx\n", \
120 __func__, ##args, deb, x, \ 120 __func__, ##args, deb, x, \
121 *((u64 *)&deb[0]), *((u64 *)&deb[8])); \ 121 *((u64 *)&deb[0]), *((u64 *)&deb[8])); \
122 deb += 16; \ 122 deb += 16; \
diff --git a/drivers/infiniband/hw/ehca/ehca_uverbs.c b/drivers/infiniband/hw/ehca/ehca_uverbs.c
index e43ed8f8a0c8..3cb688d29131 100644
--- a/drivers/infiniband/hw/ehca/ehca_uverbs.c
+++ b/drivers/infiniband/hw/ehca/ehca_uverbs.c
@@ -114,7 +114,7 @@ static int ehca_mmap_fw(struct vm_area_struct *vma, struct h_galpas *galpas,
114 114
115 physical = galpas->user.fw_handle; 115 physical = galpas->user.fw_handle;
116 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 116 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
117 ehca_gen_dbg("vsize=%lx physical=%lx", vsize, physical); 117 ehca_gen_dbg("vsize=%llx physical=%llx", vsize, physical);
118 /* VM_IO | VM_RESERVED are set by remap_pfn_range() */ 118 /* VM_IO | VM_RESERVED are set by remap_pfn_range() */
119 ret = remap_4k_pfn(vma, vma->vm_start, physical >> EHCA_PAGESHIFT, 119 ret = remap_4k_pfn(vma, vma->vm_start, physical >> EHCA_PAGESHIFT,
120 vma->vm_page_prot); 120 vma->vm_page_prot);
diff --git a/drivers/infiniband/hw/ehca/hcp_if.c b/drivers/infiniband/hw/ehca/hcp_if.c
index 415d3a465de6..d0ab0c0d5e91 100644
--- a/drivers/infiniband/hw/ehca/hcp_if.c
+++ b/drivers/infiniband/hw/ehca/hcp_if.c
@@ -226,7 +226,7 @@ u64 hipz_h_alloc_resource_eq(const struct ipz_adapter_handle adapter_handle,
226 u32 *eq_ist) 226 u32 *eq_ist)
227{ 227{
228 u64 ret; 228 u64 ret;
229 u64 outs[PLPAR_HCALL9_BUFSIZE]; 229 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
230 u64 allocate_controls; 230 u64 allocate_controls;
231 231
232 /* resource type */ 232 /* resource type */
@@ -249,7 +249,7 @@ u64 hipz_h_alloc_resource_eq(const struct ipz_adapter_handle adapter_handle,
249 *eq_ist = (u32)outs[5]; 249 *eq_ist = (u32)outs[5];
250 250
251 if (ret == H_NOT_ENOUGH_RESOURCES) 251 if (ret == H_NOT_ENOUGH_RESOURCES)
252 ehca_gen_err("Not enough resource - ret=%li ", ret); 252 ehca_gen_err("Not enough resource - ret=%lli ", ret);
253 253
254 return ret; 254 return ret;
255} 255}
@@ -270,7 +270,7 @@ u64 hipz_h_alloc_resource_cq(const struct ipz_adapter_handle adapter_handle,
270 struct ehca_alloc_cq_parms *param) 270 struct ehca_alloc_cq_parms *param)
271{ 271{
272 u64 ret; 272 u64 ret;
273 u64 outs[PLPAR_HCALL9_BUFSIZE]; 273 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
274 274
275 ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, 275 ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
276 adapter_handle.handle, /* r4 */ 276 adapter_handle.handle, /* r4 */
@@ -287,7 +287,7 @@ u64 hipz_h_alloc_resource_cq(const struct ipz_adapter_handle adapter_handle,
287 hcp_galpas_ctor(&cq->galpas, outs[5], outs[6]); 287 hcp_galpas_ctor(&cq->galpas, outs[5], outs[6]);
288 288
289 if (ret == H_NOT_ENOUGH_RESOURCES) 289 if (ret == H_NOT_ENOUGH_RESOURCES)
290 ehca_gen_err("Not enough resources. ret=%li", ret); 290 ehca_gen_err("Not enough resources. ret=%lli", ret);
291 291
292 return ret; 292 return ret;
293} 293}
@@ -297,7 +297,7 @@ u64 hipz_h_alloc_resource_qp(const struct ipz_adapter_handle adapter_handle,
297{ 297{
298 u64 ret; 298 u64 ret;
299 u64 allocate_controls, max_r10_reg, r11, r12; 299 u64 allocate_controls, max_r10_reg, r11, r12;
300 u64 outs[PLPAR_HCALL9_BUFSIZE]; 300 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
301 301
302 allocate_controls = 302 allocate_controls =
303 EHCA_BMASK_SET(H_ALL_RES_QP_ENHANCED_OPS, parms->ext_type) 303 EHCA_BMASK_SET(H_ALL_RES_QP_ENHANCED_OPS, parms->ext_type)
@@ -362,7 +362,7 @@ u64 hipz_h_alloc_resource_qp(const struct ipz_adapter_handle adapter_handle,
362 hcp_galpas_ctor(&parms->galpas, outs[6], outs[6]); 362 hcp_galpas_ctor(&parms->galpas, outs[6], outs[6]);
363 363
364 if (ret == H_NOT_ENOUGH_RESOURCES) 364 if (ret == H_NOT_ENOUGH_RESOURCES)
365 ehca_gen_err("Not enough resources. ret=%li", ret); 365 ehca_gen_err("Not enough resources. ret=%lli", ret);
366 366
367 return ret; 367 return ret;
368} 368}
@@ -454,7 +454,7 @@ u64 hipz_h_register_rpage_eq(const struct ipz_adapter_handle adapter_handle,
454 const u64 count) 454 const u64 count)
455{ 455{
456 if (count != 1) { 456 if (count != 1) {
457 ehca_gen_err("Ppage counter=%lx", count); 457 ehca_gen_err("Ppage counter=%llx", count);
458 return H_PARAMETER; 458 return H_PARAMETER;
459 } 459 }
460 return hipz_h_register_rpage(adapter_handle, 460 return hipz_h_register_rpage(adapter_handle,
@@ -489,7 +489,7 @@ u64 hipz_h_register_rpage_cq(const struct ipz_adapter_handle adapter_handle,
489 const struct h_galpa gal) 489 const struct h_galpa gal)
490{ 490{
491 if (count != 1) { 491 if (count != 1) {
492 ehca_gen_err("Page counter=%lx", count); 492 ehca_gen_err("Page counter=%llx", count);
493 return H_PARAMETER; 493 return H_PARAMETER;
494 } 494 }
495 495
@@ -508,7 +508,7 @@ u64 hipz_h_register_rpage_qp(const struct ipz_adapter_handle adapter_handle,
508 const struct h_galpa galpa) 508 const struct h_galpa galpa)
509{ 509{
510 if (count > 1) { 510 if (count > 1) {
511 ehca_gen_err("Page counter=%lx", count); 511 ehca_gen_err("Page counter=%llx", count);
512 return H_PARAMETER; 512 return H_PARAMETER;
513 } 513 }
514 514
@@ -525,7 +525,7 @@ u64 hipz_h_disable_and_get_wqe(const struct ipz_adapter_handle adapter_handle,
525 int dis_and_get_function_code) 525 int dis_and_get_function_code)
526{ 526{
527 u64 ret; 527 u64 ret;
528 u64 outs[PLPAR_HCALL9_BUFSIZE]; 528 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
529 529
530 ret = ehca_plpar_hcall9(H_DISABLE_AND_GETC, outs, 530 ret = ehca_plpar_hcall9(H_DISABLE_AND_GETC, outs,
531 adapter_handle.handle, /* r4 */ 531 adapter_handle.handle, /* r4 */
@@ -548,7 +548,7 @@ u64 hipz_h_modify_qp(const struct ipz_adapter_handle adapter_handle,
548 struct h_galpa gal) 548 struct h_galpa gal)
549{ 549{
550 u64 ret; 550 u64 ret;
551 u64 outs[PLPAR_HCALL9_BUFSIZE]; 551 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
552 ret = ehca_plpar_hcall9(H_MODIFY_QP, outs, 552 ret = ehca_plpar_hcall9(H_MODIFY_QP, outs,
553 adapter_handle.handle, /* r4 */ 553 adapter_handle.handle, /* r4 */
554 qp_handle.handle, /* r5 */ 554 qp_handle.handle, /* r5 */
@@ -557,7 +557,7 @@ u64 hipz_h_modify_qp(const struct ipz_adapter_handle adapter_handle,
557 0, 0, 0, 0, 0); 557 0, 0, 0, 0, 0);
558 558
559 if (ret == H_NOT_ENOUGH_RESOURCES) 559 if (ret == H_NOT_ENOUGH_RESOURCES)
560 ehca_gen_err("Insufficient resources ret=%li", ret); 560 ehca_gen_err("Insufficient resources ret=%lli", ret);
561 561
562 return ret; 562 return ret;
563} 563}
@@ -579,7 +579,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle,
579 struct ehca_qp *qp) 579 struct ehca_qp *qp)
580{ 580{
581 u64 ret; 581 u64 ret;
582 u64 outs[PLPAR_HCALL9_BUFSIZE]; 582 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
583 583
584 ret = hcp_galpas_dtor(&qp->galpas); 584 ret = hcp_galpas_dtor(&qp->galpas);
585 if (ret) { 585 if (ret) {
@@ -593,7 +593,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle,
593 qp->ipz_qp_handle.handle, /* r6 */ 593 qp->ipz_qp_handle.handle, /* r6 */
594 0, 0, 0, 0, 0, 0); 594 0, 0, 0, 0, 0, 0);
595 if (ret == H_HARDWARE) 595 if (ret == H_HARDWARE)
596 ehca_gen_err("HCA not operational. ret=%li", ret); 596 ehca_gen_err("HCA not operational. ret=%lli", ret);
597 597
598 ret = ehca_plpar_hcall_norets(H_FREE_RESOURCE, 598 ret = ehca_plpar_hcall_norets(H_FREE_RESOURCE,
599 adapter_handle.handle, /* r4 */ 599 adapter_handle.handle, /* r4 */
@@ -601,7 +601,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle,
601 0, 0, 0, 0, 0); 601 0, 0, 0, 0, 0);
602 602
603 if (ret == H_RESOURCE) 603 if (ret == H_RESOURCE)
604 ehca_gen_err("Resource still in use. ret=%li", ret); 604 ehca_gen_err("Resource still in use. ret=%lli", ret);
605 605
606 return ret; 606 return ret;
607} 607}
@@ -625,7 +625,7 @@ u64 hipz_h_define_aqp1(const struct ipz_adapter_handle adapter_handle,
625 u32 * bma_qp_nr) 625 u32 * bma_qp_nr)
626{ 626{
627 u64 ret; 627 u64 ret;
628 u64 outs[PLPAR_HCALL9_BUFSIZE]; 628 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
629 629
630 ret = ehca_plpar_hcall9(H_DEFINE_AQP1, outs, 630 ret = ehca_plpar_hcall9(H_DEFINE_AQP1, outs,
631 adapter_handle.handle, /* r4 */ 631 adapter_handle.handle, /* r4 */
@@ -636,7 +636,7 @@ u64 hipz_h_define_aqp1(const struct ipz_adapter_handle adapter_handle,
636 *bma_qp_nr = (u32)outs[1]; 636 *bma_qp_nr = (u32)outs[1];
637 637
638 if (ret == H_ALIAS_EXIST) 638 if (ret == H_ALIAS_EXIST)
639 ehca_gen_err("AQP1 already exists. ret=%li", ret); 639 ehca_gen_err("AQP1 already exists. ret=%lli", ret);
640 640
641 return ret; 641 return ret;
642} 642}
@@ -658,7 +658,7 @@ u64 hipz_h_attach_mcqp(const struct ipz_adapter_handle adapter_handle,
658 0, 0); 658 0, 0);
659 659
660 if (ret == H_NOT_ENOUGH_RESOURCES) 660 if (ret == H_NOT_ENOUGH_RESOURCES)
661 ehca_gen_err("Not enough resources. ret=%li", ret); 661 ehca_gen_err("Not enough resources. ret=%lli", ret);
662 662
663 return ret; 663 return ret;
664} 664}
@@ -697,7 +697,7 @@ u64 hipz_h_destroy_cq(const struct ipz_adapter_handle adapter_handle,
697 0, 0, 0, 0); 697 0, 0, 0, 0);
698 698
699 if (ret == H_RESOURCE) 699 if (ret == H_RESOURCE)
700 ehca_gen_err("H_FREE_RESOURCE failed ret=%li ", ret); 700 ehca_gen_err("H_FREE_RESOURCE failed ret=%lli ", ret);
701 701
702 return ret; 702 return ret;
703} 703}
@@ -719,7 +719,7 @@ u64 hipz_h_destroy_eq(const struct ipz_adapter_handle adapter_handle,
719 0, 0, 0, 0, 0); 719 0, 0, 0, 0, 0);
720 720
721 if (ret == H_RESOURCE) 721 if (ret == H_RESOURCE)
722 ehca_gen_err("Resource in use. ret=%li ", ret); 722 ehca_gen_err("Resource in use. ret=%lli ", ret);
723 723
724 return ret; 724 return ret;
725} 725}
@@ -733,7 +733,7 @@ u64 hipz_h_alloc_resource_mr(const struct ipz_adapter_handle adapter_handle,
733 struct ehca_mr_hipzout_parms *outparms) 733 struct ehca_mr_hipzout_parms *outparms)
734{ 734{
735 u64 ret; 735 u64 ret;
736 u64 outs[PLPAR_HCALL9_BUFSIZE]; 736 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
737 737
738 ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, 738 ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
739 adapter_handle.handle, /* r4 */ 739 adapter_handle.handle, /* r4 */
@@ -774,9 +774,9 @@ u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle,
774 774
775 if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) { 775 if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) {
776 ehca_gen_err("logical_address_of_page not on a 4k boundary " 776 ehca_gen_err("logical_address_of_page not on a 4k boundary "
777 "adapter_handle=%lx mr=%p mr_handle=%lx " 777 "adapter_handle=%llx mr=%p mr_handle=%llx "
778 "pagesize=%x queue_type=%x " 778 "pagesize=%x queue_type=%x "
779 "logical_address_of_page=%lx count=%lx", 779 "logical_address_of_page=%llx count=%llx",
780 adapter_handle.handle, mr, 780 adapter_handle.handle, mr,
781 mr->ipz_mr_handle.handle, pagesize, queue_type, 781 mr->ipz_mr_handle.handle, pagesize, queue_type,
782 logical_address_of_page, count); 782 logical_address_of_page, count);
@@ -794,7 +794,7 @@ u64 hipz_h_query_mr(const struct ipz_adapter_handle adapter_handle,
794 struct ehca_mr_hipzout_parms *outparms) 794 struct ehca_mr_hipzout_parms *outparms)
795{ 795{
796 u64 ret; 796 u64 ret;
797 u64 outs[PLPAR_HCALL9_BUFSIZE]; 797 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
798 798
799 ret = ehca_plpar_hcall9(H_QUERY_MR, outs, 799 ret = ehca_plpar_hcall9(H_QUERY_MR, outs,
800 adapter_handle.handle, /* r4 */ 800 adapter_handle.handle, /* r4 */
@@ -828,7 +828,7 @@ u64 hipz_h_reregister_pmr(const struct ipz_adapter_handle adapter_handle,
828 struct ehca_mr_hipzout_parms *outparms) 828 struct ehca_mr_hipzout_parms *outparms)
829{ 829{
830 u64 ret; 830 u64 ret;
831 u64 outs[PLPAR_HCALL9_BUFSIZE]; 831 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
832 832
833 ret = ehca_plpar_hcall9(H_REREGISTER_PMR, outs, 833 ret = ehca_plpar_hcall9(H_REREGISTER_PMR, outs,
834 adapter_handle.handle, /* r4 */ 834 adapter_handle.handle, /* r4 */
@@ -855,7 +855,7 @@ u64 hipz_h_register_smr(const struct ipz_adapter_handle adapter_handle,
855 struct ehca_mr_hipzout_parms *outparms) 855 struct ehca_mr_hipzout_parms *outparms)
856{ 856{
857 u64 ret; 857 u64 ret;
858 u64 outs[PLPAR_HCALL9_BUFSIZE]; 858 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
859 859
860 ret = ehca_plpar_hcall9(H_REGISTER_SMR, outs, 860 ret = ehca_plpar_hcall9(H_REGISTER_SMR, outs,
861 adapter_handle.handle, /* r4 */ 861 adapter_handle.handle, /* r4 */
@@ -877,7 +877,7 @@ u64 hipz_h_alloc_resource_mw(const struct ipz_adapter_handle adapter_handle,
877 struct ehca_mw_hipzout_parms *outparms) 877 struct ehca_mw_hipzout_parms *outparms)
878{ 878{
879 u64 ret; 879 u64 ret;
880 u64 outs[PLPAR_HCALL9_BUFSIZE]; 880 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
881 881
882 ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, 882 ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
883 adapter_handle.handle, /* r4 */ 883 adapter_handle.handle, /* r4 */
@@ -895,7 +895,7 @@ u64 hipz_h_query_mw(const struct ipz_adapter_handle adapter_handle,
895 struct ehca_mw_hipzout_parms *outparms) 895 struct ehca_mw_hipzout_parms *outparms)
896{ 896{
897 u64 ret; 897 u64 ret;
898 u64 outs[PLPAR_HCALL9_BUFSIZE]; 898 unsigned long outs[PLPAR_HCALL9_BUFSIZE];
899 899
900 ret = ehca_plpar_hcall9(H_QUERY_MW, outs, 900 ret = ehca_plpar_hcall9(H_QUERY_MW, outs,
901 adapter_handle.handle, /* r4 */ 901 adapter_handle.handle, /* r4 */
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 39167a797f99..a91cb4c3fa5c 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1462,7 +1462,8 @@ static void __set_data_seg(struct mlx4_wqe_data_seg *dseg, struct ib_sge *sg)
1462} 1462}
1463 1463
1464static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr, 1464static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr,
1465 struct mlx4_ib_qp *qp, unsigned *lso_seg_len) 1465 struct mlx4_ib_qp *qp, unsigned *lso_seg_len,
1466 __be32 *lso_hdr_sz)
1466{ 1467{
1467 unsigned halign = ALIGN(sizeof *wqe + wr->wr.ud.hlen, 16); 1468 unsigned halign = ALIGN(sizeof *wqe + wr->wr.ud.hlen, 16);
1468 1469
@@ -1479,12 +1480,8 @@ static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr,
1479 1480
1480 memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen); 1481 memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen);
1481 1482
1482 /* make sure LSO header is written before overwriting stamping */ 1483 *lso_hdr_sz = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 |
1483 wmb(); 1484 wr->wr.ud.hlen);
1484
1485 wqe->mss_hdr_size = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 |
1486 wr->wr.ud.hlen);
1487
1488 *lso_seg_len = halign; 1485 *lso_seg_len = halign;
1489 return 0; 1486 return 0;
1490} 1487}
@@ -1518,6 +1515,9 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
1518 int uninitialized_var(stamp); 1515 int uninitialized_var(stamp);
1519 int uninitialized_var(size); 1516 int uninitialized_var(size);
1520 unsigned uninitialized_var(seglen); 1517 unsigned uninitialized_var(seglen);
1518 __be32 dummy;
1519 __be32 *lso_wqe;
1520 __be32 uninitialized_var(lso_hdr_sz);
1521 int i; 1521 int i;
1522 1522
1523 spin_lock_irqsave(&qp->sq.lock, flags); 1523 spin_lock_irqsave(&qp->sq.lock, flags);
@@ -1525,6 +1525,8 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
1525 ind = qp->sq_next_wqe; 1525 ind = qp->sq_next_wqe;
1526 1526
1527 for (nreq = 0; wr; ++nreq, wr = wr->next) { 1527 for (nreq = 0; wr; ++nreq, wr = wr->next) {
1528 lso_wqe = &dummy;
1529
1528 if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) { 1530 if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) {
1529 err = -ENOMEM; 1531 err = -ENOMEM;
1530 *bad_wr = wr; 1532 *bad_wr = wr;
@@ -1606,11 +1608,12 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
1606 size += sizeof (struct mlx4_wqe_datagram_seg) / 16; 1608 size += sizeof (struct mlx4_wqe_datagram_seg) / 16;
1607 1609
1608 if (wr->opcode == IB_WR_LSO) { 1610 if (wr->opcode == IB_WR_LSO) {
1609 err = build_lso_seg(wqe, wr, qp, &seglen); 1611 err = build_lso_seg(wqe, wr, qp, &seglen, &lso_hdr_sz);
1610 if (unlikely(err)) { 1612 if (unlikely(err)) {
1611 *bad_wr = wr; 1613 *bad_wr = wr;
1612 goto out; 1614 goto out;
1613 } 1615 }
1616 lso_wqe = (__be32 *) wqe;
1614 wqe += seglen; 1617 wqe += seglen;
1615 size += seglen / 16; 1618 size += seglen / 16;
1616 } 1619 }
@@ -1652,6 +1655,14 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
1652 for (i = wr->num_sge - 1; i >= 0; --i, --dseg) 1655 for (i = wr->num_sge - 1; i >= 0; --i, --dseg)
1653 set_data_seg(dseg, wr->sg_list + i); 1656 set_data_seg(dseg, wr->sg_list + i);
1654 1657
1658 /*
1659 * Possibly overwrite stamping in cacheline with LSO
1660 * segment only after making sure all data segments
1661 * are written.
1662 */
1663 wmb();
1664 *lso_wqe = lso_hdr_sz;
1665
1655 ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ? 1666 ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ?
1656 MLX4_WQE_CTRL_FENCE : 0) | size; 1667 MLX4_WQE_CTRL_FENCE : 0) | size;
1657 1668
@@ -1686,7 +1697,6 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
1686 stamp_send_wqe(qp, stamp, size * 16); 1697 stamp_send_wqe(qp, stamp, size * 16);
1687 ind = pad_wraparound(qp, ind); 1698 ind = pad_wraparound(qp, ind);
1688 } 1699 }
1689
1690 } 1700 }
1691 1701
1692out: 1702out:
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index dce0443f9d69..0bd2a4ff0842 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -106,23 +106,17 @@ int ipoib_open(struct net_device *dev)
106 106
107 ipoib_dbg(priv, "bringing up interface\n"); 107 ipoib_dbg(priv, "bringing up interface\n");
108 108
109 set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags); 109 if (!test_and_set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
110 napi_enable(&priv->napi);
110 111
111 if (ipoib_pkey_dev_delay_open(dev)) 112 if (ipoib_pkey_dev_delay_open(dev))
112 return 0; 113 return 0;
113 114
114 napi_enable(&priv->napi); 115 if (ipoib_ib_dev_open(dev))
116 goto err_disable;
115 117
116 if (ipoib_ib_dev_open(dev)) { 118 if (ipoib_ib_dev_up(dev))
117 napi_disable(&priv->napi); 119 goto err_stop;
118 return -EINVAL;
119 }
120
121 if (ipoib_ib_dev_up(dev)) {
122 ipoib_ib_dev_stop(dev, 1);
123 napi_disable(&priv->napi);
124 return -EINVAL;
125 }
126 120
127 if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) { 121 if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) {
128 struct ipoib_dev_priv *cpriv; 122 struct ipoib_dev_priv *cpriv;
@@ -144,6 +138,15 @@ int ipoib_open(struct net_device *dev)
144 netif_start_queue(dev); 138 netif_start_queue(dev);
145 139
146 return 0; 140 return 0;
141
142err_stop:
143 ipoib_ib_dev_stop(dev, 1);
144
145err_disable:
146 napi_disable(&priv->napi);
147 clear_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags);
148
149 return -EINVAL;
147} 150}
148 151
149static int ipoib_stop(struct net_device *dev) 152static int ipoib_stop(struct net_device *dev)
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 59d02e0b8df1..425e31112ed7 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -409,7 +409,7 @@ static int ipoib_mcast_join_complete(int status,
409 } 409 }
410 410
411 if (mcast->logcount++ < 20) { 411 if (mcast->logcount++ < 20) {
412 if (status == -ETIMEDOUT) { 412 if (status == -ETIMEDOUT || status == -EAGAIN) {
413 ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n", 413 ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n",
414 mcast->mcmember.mgid.raw, status); 414 mcast->mcmember.mgid.raw, status);
415 } else { 415 } else {
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
index 2cf1a4088718..5a76a5510350 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_vlan.c
@@ -61,6 +61,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
61 61
62 ppriv = netdev_priv(pdev); 62 ppriv = netdev_priv(pdev);
63 63
64 rtnl_lock();
64 mutex_lock(&ppriv->vlan_mutex); 65 mutex_lock(&ppriv->vlan_mutex);
65 66
66 /* 67 /*
@@ -111,7 +112,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
111 goto device_init_failed; 112 goto device_init_failed;
112 } 113 }
113 114
114 result = register_netdev(priv->dev); 115 result = register_netdevice(priv->dev);
115 if (result) { 116 if (result) {
116 ipoib_warn(priv, "failed to initialize; error %i", result); 117 ipoib_warn(priv, "failed to initialize; error %i", result);
117 goto register_failed; 118 goto register_failed;
@@ -134,12 +135,13 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
134 list_add_tail(&priv->list, &ppriv->child_intfs); 135 list_add_tail(&priv->list, &ppriv->child_intfs);
135 136
136 mutex_unlock(&ppriv->vlan_mutex); 137 mutex_unlock(&ppriv->vlan_mutex);
138 rtnl_unlock();
137 139
138 return 0; 140 return 0;
139 141
140sysfs_failed: 142sysfs_failed:
141 ipoib_delete_debug_files(priv->dev); 143 ipoib_delete_debug_files(priv->dev);
142 unregister_netdev(priv->dev); 144 unregister_netdevice(priv->dev);
143 145
144register_failed: 146register_failed:
145 ipoib_dev_cleanup(priv->dev); 147 ipoib_dev_cleanup(priv->dev);
@@ -149,6 +151,7 @@ device_init_failed:
149 151
150err: 152err:
151 mutex_unlock(&ppriv->vlan_mutex); 153 mutex_unlock(&ppriv->vlan_mutex);
154 rtnl_unlock();
152 return result; 155 return result;
153} 156}
154 157
@@ -162,10 +165,11 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
162 165
163 ppriv = netdev_priv(pdev); 166 ppriv = netdev_priv(pdev);
164 167
168 rtnl_lock();
165 mutex_lock(&ppriv->vlan_mutex); 169 mutex_lock(&ppriv->vlan_mutex);
166 list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) { 170 list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) {
167 if (priv->pkey == pkey) { 171 if (priv->pkey == pkey) {
168 unregister_netdev(priv->dev); 172 unregister_netdevice(priv->dev);
169 ipoib_dev_cleanup(priv->dev); 173 ipoib_dev_cleanup(priv->dev);
170 list_del(&priv->list); 174 list_del(&priv->list);
171 free_netdev(priv->dev); 175 free_netdev(priv->dev);
@@ -175,6 +179,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
175 } 179 }
176 } 180 }
177 mutex_unlock(&ppriv->vlan_mutex); 181 mutex_unlock(&ppriv->vlan_mutex);
182 rtnl_unlock();
178 183
179 return ret; 184 return ret;
180} 185}
diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
index 7c5f97033b9f..cb8943da4f12 100644
--- a/drivers/isdn/i4l/isdn_net.c
+++ b/drivers/isdn/i4l/isdn_net.c
@@ -292,7 +292,9 @@ isdn_net_unbind_channel(isdn_net_local * lp)
292 lp->dialstate = 0; 292 lp->dialstate = 0;
293 dev->rx_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL; 293 dev->rx_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL;
294 dev->st_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL; 294 dev->st_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL;
295 isdn_free_channel(lp->isdn_device, lp->isdn_channel, ISDN_USAGE_NET); 295 if (lp->isdn_device != -1 && lp->isdn_channel != -1)
296 isdn_free_channel(lp->isdn_device, lp->isdn_channel,
297 ISDN_USAGE_NET);
296 lp->flags &= ~ISDN_NET_CONNECTED; 298 lp->flags &= ~ISDN_NET_CONNECTED;
297 lp->isdn_device = -1; 299 lp->isdn_device = -1;
298 lp->isdn_channel = -1; 300 lp->isdn_channel = -1;
@@ -2513,7 +2515,6 @@ static const struct net_device_ops isdn_netdev_ops = {
2513 .ndo_stop = isdn_net_close, 2515 .ndo_stop = isdn_net_close,
2514 .ndo_do_ioctl = isdn_net_ioctl, 2516 .ndo_do_ioctl = isdn_net_ioctl,
2515 2517
2516 .ndo_validate_addr = NULL,
2517 .ndo_start_xmit = isdn_net_start_xmit, 2518 .ndo_start_xmit = isdn_net_start_xmit,
2518 .ndo_get_stats = isdn_net_get_stats, 2519 .ndo_get_stats = isdn_net_get_stats,
2519 .ndo_tx_timeout = isdn_net_tx_timeout, 2520 .ndo_tx_timeout = isdn_net_tx_timeout,
@@ -2528,12 +2529,8 @@ static void _isdn_setup(struct net_device *dev)
2528 2529
2529 ether_setup(dev); 2530 ether_setup(dev);
2530 2531
2531 dev->flags = IFF_NOARP | IFF_POINTOPOINT;
2532 /* Setup the generic properties */ 2532 /* Setup the generic properties */
2533 dev->mtu = 1500;
2534 dev->flags = IFF_NOARP|IFF_POINTOPOINT; 2533 dev->flags = IFF_NOARP|IFF_POINTOPOINT;
2535 dev->type = ARPHRD_ETHER;
2536 dev->addr_len = ETH_ALEN;
2537 dev->header_ops = NULL; 2534 dev->header_ops = NULL;
2538 dev->netdev_ops = &isdn_netdev_ops; 2535 dev->netdev_ops = &isdn_netdev_ops;
2539 2536
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c
index a3551dd0324d..aa30b5cb3513 100644
--- a/drivers/isdn/i4l/isdn_ppp.c
+++ b/drivers/isdn/i4l/isdn_ppp.c
@@ -431,6 +431,7 @@ set_arg(void __user *b, void *val,int len)
431 return 0; 431 return 0;
432} 432}
433 433
434#ifdef CONFIG_IPPP_FILTER
434static int get_filter(void __user *arg, struct sock_filter **p) 435static int get_filter(void __user *arg, struct sock_filter **p)
435{ 436{
436 struct sock_fprog uprog; 437 struct sock_fprog uprog;
@@ -465,6 +466,7 @@ static int get_filter(void __user *arg, struct sock_filter **p)
465 *p = code; 466 *p = code;
466 return uprog.len; 467 return uprog.len;
467} 468}
469#endif /* CONFIG_IPPP_FILTER */
468 470
469/* 471/*
470 * ippp device ioctl 472 * ippp device ioctl
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index a4a1ae214630..742713611bc5 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -119,13 +119,6 @@ config LEDS_GPIO
119 outputs. To be useful the particular board must have LEDs 119 outputs. To be useful the particular board must have LEDs
120 and they must be connected to the GPIO lines. 120 and they must be connected to the GPIO lines.
121 121
122config LEDS_HP_DISK
123 tristate "LED Support for disk protection LED on HP notebooks"
124 depends on LEDS_CLASS && ACPI
125 help
126 This option enable support for disk protection LED, found on
127 newer HP notebooks.
128
129config LEDS_CLEVO_MAIL 122config LEDS_CLEVO_MAIL
130 tristate "Mail LED on Clevo notebook (EXPERIMENTAL)" 123 tristate "Mail LED on Clevo notebook (EXPERIMENTAL)"
131 depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI && EXPERIMENTAL 124 depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI && EXPERIMENTAL
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index bc247cb02e82..9d76f0f160a4 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -23,7 +23,6 @@ obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.o
23obj-$(CONFIG_LEDS_FSG) += leds-fsg.o 23obj-$(CONFIG_LEDS_FSG) += leds-fsg.o
24obj-$(CONFIG_LEDS_PCA955X) += leds-pca955x.o 24obj-$(CONFIG_LEDS_PCA955X) += leds-pca955x.o
25obj-$(CONFIG_LEDS_DA903X) += leds-da903x.o 25obj-$(CONFIG_LEDS_DA903X) += leds-da903x.o
26obj-$(CONFIG_LEDS_HP_DISK) += leds-hp-disk.o
27obj-$(CONFIG_LEDS_WM8350) += leds-wm8350.o 26obj-$(CONFIG_LEDS_WM8350) += leds-wm8350.o
28 27
29# LED Triggers 28# LED Triggers
diff --git a/drivers/leds/leds-hp-disk.c b/drivers/leds/leds-hp-disk.c
deleted file mode 100644
index d786adc8c5e3..000000000000
--- a/drivers/leds/leds-hp-disk.c
+++ /dev/null
@@ -1,137 +0,0 @@
1/*
2 * leds-hp-disk.c - driver for HP "hard disk protection" LED
3 *
4 * Copyright (C) 2008 Pavel Machek
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#include <linux/kernel.h>
22#include <linux/init.h>
23#include <linux/dmi.h>
24#include <linux/module.h>
25#include <linux/types.h>
26#include <linux/platform_device.h>
27#include <linux/interrupt.h>
28#include <linux/input.h>
29#include <linux/kthread.h>
30#include <linux/leds.h>
31#include <acpi/acpi_drivers.h>
32
33#define DRIVER_NAME "leds-hp-disk"
34#define ACPI_MDPS_CLASS "led"
35
36/* For automatic insertion of the module */
37static struct acpi_device_id hpled_device_ids[] = {
38 {"HPQ0004", 0}, /* HP Mobile Data Protection System PNP */
39 {"", 0},
40};
41MODULE_DEVICE_TABLE(acpi, hpled_device_ids);
42
43struct acpi_hpled {
44 struct acpi_device *device; /* The ACPI device */
45};
46
47static struct acpi_hpled adev;
48
49static acpi_status hpled_acpi_write(acpi_handle handle, int reg)
50{
51 unsigned long long ret; /* Not used when writing */
52 union acpi_object in_obj[1];
53 struct acpi_object_list args = { 1, in_obj };
54
55 in_obj[0].type = ACPI_TYPE_INTEGER;
56 in_obj[0].integer.value = reg;
57
58 return acpi_evaluate_integer(handle, "ALED", &args, &ret);
59}
60
61static void hpled_set(struct led_classdev *led_cdev,
62 enum led_brightness value)
63{
64 hpled_acpi_write(adev.device->handle, !!value);
65}
66
67static struct led_classdev hpled_led = {
68 .name = "hp:red:hddprotection",
69 .default_trigger = "heartbeat",
70 .brightness_set = hpled_set,
71 .flags = LED_CORE_SUSPENDRESUME,
72};
73
74static int hpled_add(struct acpi_device *device)
75{
76 int ret;
77
78 if (!device)
79 return -EINVAL;
80
81 adev.device = device;
82 strcpy(acpi_device_name(device), DRIVER_NAME);
83 strcpy(acpi_device_class(device), ACPI_MDPS_CLASS);
84 device->driver_data = &adev;
85
86 ret = led_classdev_register(NULL, &hpled_led);
87 return ret;
88}
89
90static int hpled_remove(struct acpi_device *device, int type)
91{
92 if (!device)
93 return -EINVAL;
94
95 led_classdev_unregister(&hpled_led);
96 return 0;
97}
98
99
100
101static struct acpi_driver leds_hp_driver = {
102 .name = DRIVER_NAME,
103 .class = ACPI_MDPS_CLASS,
104 .ids = hpled_device_ids,
105 .ops = {
106 .add = hpled_add,
107 .remove = hpled_remove,
108 }
109};
110
111static int __init hpled_init_module(void)
112{
113 int ret;
114
115 if (acpi_disabled)
116 return -ENODEV;
117
118 ret = acpi_bus_register_driver(&leds_hp_driver);
119 if (ret < 0)
120 return ret;
121
122 printk(KERN_INFO DRIVER_NAME " driver loaded.\n");
123
124 return 0;
125}
126
127static void __exit hpled_exit_module(void)
128{
129 acpi_bus_unregister_driver(&leds_hp_driver);
130}
131
132MODULE_DESCRIPTION("Driver for HP disk protection LED");
133MODULE_AUTHOR("Pavel Machek <pavel@suse.cz>");
134MODULE_LICENSE("GPL");
135
136module_init(hpled_init_module);
137module_exit(hpled_exit_module);
diff --git a/drivers/message/fusion/lsi/mpi.h b/drivers/message/fusion/lsi/mpi.h
index 10b6ef758725..11c0f461320e 100644
--- a/drivers/message/fusion/lsi/mpi.h
+++ b/drivers/message/fusion/lsi/mpi.h
@@ -6,7 +6,7 @@
6 * Title: MPI Message independent structures and definitions 6 * Title: MPI Message independent structures and definitions
7 * Creation Date: July 27, 2000 7 * Creation Date: July 27, 2000
8 * 8 *
9 * mpi.h Version: 01.05.13 9 * mpi.h Version: 01.05.16
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
@@ -79,6 +79,9 @@
79 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. 79 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
80 * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT. 80 * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT.
81 * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT. 81 * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT.
82 * 08-07-07 01.05.14 Bumped MPI_HEADER_VERSION_UNIT.
83 * 01-15-08 01.05.15 Bumped MPI_HEADER_VERSION_UNIT.
84 * 03-28-08 01.05.16 Bumped MPI_HEADER_VERSION_UNIT.
82 * -------------------------------------------------------------------------- 85 * --------------------------------------------------------------------------
83 */ 86 */
84 87
@@ -109,7 +112,7 @@
109/* Note: The major versions of 0xe0 through 0xff are reserved */ 112/* Note: The major versions of 0xe0 through 0xff are reserved */
110 113
111/* versioning for this MPI header set */ 114/* versioning for this MPI header set */
112#define MPI_HEADER_VERSION_UNIT (0x10) 115#define MPI_HEADER_VERSION_UNIT (0x13)
113#define MPI_HEADER_VERSION_DEV (0x00) 116#define MPI_HEADER_VERSION_DEV (0x00)
114#define MPI_HEADER_VERSION_UNIT_MASK (0xFF00) 117#define MPI_HEADER_VERSION_UNIT_MASK (0xFF00)
115#define MPI_HEADER_VERSION_UNIT_SHIFT (8) 118#define MPI_HEADER_VERSION_UNIT_SHIFT (8)
diff --git a/drivers/message/fusion/lsi/mpi_cnfg.h b/drivers/message/fusion/lsi/mpi_cnfg.h
index b2db3330c591..013c7d881948 100644
--- a/drivers/message/fusion/lsi/mpi_cnfg.h
+++ b/drivers/message/fusion/lsi/mpi_cnfg.h
@@ -6,7 +6,7 @@
6 * Title: MPI Config message, structures, and Pages 6 * Title: MPI Config message, structures, and Pages
7 * Creation Date: July 27, 2000 7 * Creation Date: July 27, 2000
8 * 8 *
9 * mpi_cnfg.h Version: 01.05.15 9 * mpi_cnfg.h Version: 01.05.18
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
@@ -308,6 +308,20 @@
308 * Expander Page 0 Flags field. 308 * Expander Page 0 Flags field.
309 * Fixed define for 309 * Fixed define for
310 * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED. 310 * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED.
311 * 08-07-07 01.05.16 Added MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT
312 * define.
313 * Added BIOS Page 4 structure.
314 * Added MPI_RAID_PHYS_DISK1_PATH_MAX define for RAID
315 * Physcial Disk Page 1.
316 * 01-15-07 01.05.17 Added additional bit defines for ExtFlags field of
317 * Manufacturing Page 4.
318 * Added Solid State Drives Supported bit to IOC Page 6
319 * Capabilities Flags.
320 * Added new value for AccessStatus field of SAS Device
321 * Page 0 (_SATA_NEEDS_INITIALIZATION).
322 * 03-28-08 01.05.18 Defined new bits in Manufacturing Page 4 ExtFlags field
323 * to control coercion size and the mixing of SAS and SATA
324 * SSD drives.
311 * -------------------------------------------------------------------------- 325 * --------------------------------------------------------------------------
312 */ 326 */
313 327
@@ -686,6 +700,14 @@ typedef struct _CONFIG_PAGE_MANUFACTURING_4
686#define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01) 700#define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01)
687 701
688/* defines for the ExtFlags field */ 702/* defines for the ExtFlags field */
703#define MPI_MANPAGE4_EXTFLAGS_MASK_COERCION_SIZE (0x0180)
704#define MPI_MANPAGE4_EXTFLAGS_SHIFT_COERCION_SIZE (7)
705#define MPI_MANPAGE4_EXTFLAGS_1GB_COERCION_SIZE (0)
706#define MPI_MANPAGE4_EXTFLAGS_128MB_COERCION_SIZE (1)
707
708#define MPI_MANPAGE4_EXTFLAGS_NO_MIX_SSD_SAS_SATA (0x0040)
709#define MPI_MANPAGE4_EXTFLAGS_MIX_SSD_AND_NON_SSD (0x0020)
710#define MPI_MANPAGE4_EXTFLAGS_DUAL_PORT_SUPPORT (0x0010)
689#define MPI_MANPAGE4_EXTFLAGS_HIDE_NON_IR_METADATA (0x0008) 711#define MPI_MANPAGE4_EXTFLAGS_HIDE_NON_IR_METADATA (0x0008)
690#define MPI_MANPAGE4_EXTFLAGS_SAS_CACHE_DISABLE (0x0004) 712#define MPI_MANPAGE4_EXTFLAGS_SAS_CACHE_DISABLE (0x0004)
691#define MPI_MANPAGE4_EXTFLAGS_SATA_CACHE_DISABLE (0x0002) 713#define MPI_MANPAGE4_EXTFLAGS_SATA_CACHE_DISABLE (0x0002)
@@ -1159,6 +1181,8 @@ typedef struct _CONFIG_PAGE_IOC_6
1159 1181
1160/* IOC Page 6 Capabilities Flags */ 1182/* IOC Page 6 Capabilities Flags */
1161 1183
1184#define MPI_IOCPAGE6_CAP_FLAGS_SSD_SUPPORT (0x00000020)
1185#define MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT (0x00000010)
1162#define MPI_IOCPAGE6_CAP_FLAGS_DISABLE_SMART_POLLING (0x00000008) 1186#define MPI_IOCPAGE6_CAP_FLAGS_DISABLE_SMART_POLLING (0x00000008)
1163 1187
1164#define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006) 1188#define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006)
@@ -1428,6 +1452,15 @@ typedef struct _CONFIG_PAGE_BIOS_2
1428#define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05) 1452#define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05)
1429#define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06) 1453#define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06)
1430 1454
1455typedef struct _CONFIG_PAGE_BIOS_4
1456{
1457 CONFIG_PAGE_HEADER Header; /* 00h */
1458 U64 ReassignmentBaseWWID; /* 04h */
1459} CONFIG_PAGE_BIOS_4, MPI_POINTER PTR_CONFIG_PAGE_BIOS_4,
1460 BIOSPage4_t, MPI_POINTER pBIOSPage4_t;
1461
1462#define MPI_BIOSPAGE4_PAGEVERSION (0x00)
1463
1431 1464
1432/**************************************************************************** 1465/****************************************************************************
1433* SCSI Port Config Pages 1466* SCSI Port Config Pages
@@ -2419,6 +2452,15 @@ typedef struct _RAID_PHYS_DISK1_PATH
2419#define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002) 2452#define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002)
2420#define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001) 2453#define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001)
2421 2454
2455
2456/*
2457 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
2458 * one and check Header.PageLength or NumPhysDiskPaths at runtime.
2459 */
2460#ifndef MPI_RAID_PHYS_DISK1_PATH_MAX
2461#define MPI_RAID_PHYS_DISK1_PATH_MAX (1)
2462#endif
2463
2422typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1 2464typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1
2423{ 2465{
2424 CONFIG_PAGE_HEADER Header; /* 00h */ 2466 CONFIG_PAGE_HEADER Header; /* 00h */
@@ -2426,7 +2468,7 @@ typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1
2426 U8 PhysDiskNum; /* 05h */ 2468 U8 PhysDiskNum; /* 05h */
2427 U16 Reserved2; /* 06h */ 2469 U16 Reserved2; /* 06h */
2428 U32 Reserved1; /* 08h */ 2470 U32 Reserved1; /* 08h */
2429 RAID_PHYS_DISK1_PATH Path[1]; /* 0Ch */ 2471 RAID_PHYS_DISK1_PATH Path[MPI_RAID_PHYS_DISK1_PATH_MAX];/* 0Ch */
2430} CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1, 2472} CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1,
2431 RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t; 2473 RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t;
2432 2474
@@ -2844,6 +2886,7 @@ typedef struct _CONFIG_PAGE_SAS_DEVICE_0
2844#define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01) 2886#define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01)
2845#define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02) 2887#define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02)
2846#define MPI_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03) 2888#define MPI_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03)
2889#define MPI_SAS_DEVICE0_ASTATUS_SATA_NEEDS_INITIALIZATION (0x04)
2847/* specific values for SATA Init failures */ 2890/* specific values for SATA Init failures */
2848#define MPI_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10) 2891#define MPI_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10)
2849#define MPI_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11) 2892#define MPI_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11)
diff --git a/drivers/message/fusion/lsi/mpi_fc.h b/drivers/message/fusion/lsi/mpi_fc.h
index 627acfbb8623..7d663ce76f8c 100644
--- a/drivers/message/fusion/lsi/mpi_fc.h
+++ b/drivers/message/fusion/lsi/mpi_fc.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2000-2004 LSI Corporation. 2 * Copyright (c) 2000-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_fc.h 5 * Name: mpi_fc.h
diff --git a/drivers/message/fusion/lsi/mpi_history.txt b/drivers/message/fusion/lsi/mpi_history.txt
index 3f15fcfe4a2e..693e4b511354 100644
--- a/drivers/message/fusion/lsi/mpi_history.txt
+++ b/drivers/message/fusion/lsi/mpi_history.txt
@@ -3,28 +3,28 @@
3 MPI Header File Change History 3 MPI Header File Change History
4 ============================== 4 ==============================
5 5
6 Copyright (c) 2000-2007 LSI Corporation. 6 Copyright (c) 2000-2008 LSI Corporation.
7 7
8 --------------------------------------- 8 ---------------------------------------
9 Header Set Release Version: 01.05.16 9 Header Set Release Version: 01.05.19
10 Header Set Release Date: 05-24-07 10 Header Set Release Date: 03-28-08
11 --------------------------------------- 11 ---------------------------------------
12 12
13 Filename Current version Prior version 13 Filename Current version Prior version
14 ---------- --------------- ------------- 14 ---------- --------------- -------------
15 mpi.h 01.05.13 01.05.12 15 mpi.h 01.05.16 01.05.15
16 mpi_ioc.h 01.05.14 01.05.13 16 mpi_ioc.h 01.05.16 01.05.15
17 mpi_cnfg.h 01.05.15 01.05.14 17 mpi_cnfg.h 01.05.18 01.05.17
18 mpi_init.h 01.05.09 01.05.09 18 mpi_init.h 01.05.09 01.05.09
19 mpi_targ.h 01.05.06 01.05.06 19 mpi_targ.h 01.05.06 01.05.06
20 mpi_fc.h 01.05.01 01.05.01 20 mpi_fc.h 01.05.01 01.05.01
21 mpi_lan.h 01.05.01 01.05.01 21 mpi_lan.h 01.05.01 01.05.01
22 mpi_raid.h 01.05.03 01.05.03 22 mpi_raid.h 01.05.05 01.05.05
23 mpi_tool.h 01.05.03 01.05.03 23 mpi_tool.h 01.05.03 01.05.03
24 mpi_inb.h 01.05.01 01.05.01 24 mpi_inb.h 01.05.01 01.05.01
25 mpi_sas.h 01.05.04 01.05.04 25 mpi_sas.h 01.05.05 01.05.05
26 mpi_type.h 01.05.02 01.05.02 26 mpi_type.h 01.05.02 01.05.02
27 mpi_history.txt 01.05.14 01.05.14 27 mpi_history.txt 01.05.19 01.05.18
28 28
29 29
30 * Date Version Description 30 * Date Version Description
@@ -96,6 +96,9 @@ mpi.h
96 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. 96 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
97 * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT. 97 * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT.
98 * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT. 98 * 05-24-07 01.05.13 Bumped MPI_HEADER_VERSION_UNIT.
99 * 08-07-07 01.05.14 Bumped MPI_HEADER_VERSION_UNIT.
100 * 01-15-08 01.05.15 Bumped MPI_HEADER_VERSION_UNIT.
101 * 03-28-08 01.05.16 Bumped MPI_HEADER_VERSION_UNIT.
99 * -------------------------------------------------------------------------- 102 * --------------------------------------------------------------------------
100 103
101mpi_ioc.h 104mpi_ioc.h
@@ -127,7 +130,7 @@ mpi_ioc.h
127 * 08-08-01 01.02.01 Original release for v1.2 work. 130 * 08-08-01 01.02.01 Original release for v1.2 work.
128 * New format for FWVersion and ProductId in 131 * New format for FWVersion and ProductId in
129 * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER. 132 * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER.
130 * 08-31-01 01.02.02 Added event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and 133 * 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and
131 * related structure and defines. 134 * related structure and defines.
132 * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED. 135 * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED.
133 * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE. 136 * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE.
@@ -187,7 +190,7 @@ mpi_ioc.h
187 * 10-11-06 01.05.12 Added MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED. 190 * 10-11-06 01.05.12 Added MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED.
188 * Added MaxInitiators field to PortFacts reply. 191 * Added MaxInitiators field to PortFacts reply.
189 * Added SAS Device Status Change ReasonCode for 192 * Added SAS Device Status Change ReasonCode for
190 * asynchronous notification. 193 * asynchronous notificaiton.
191 * Added MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE and event 194 * Added MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE and event
192 * data structure. 195 * data structure.
193 * Added new ImageType values for FWDownload and FWUpload 196 * Added new ImageType values for FWDownload and FWUpload
@@ -199,6 +202,16 @@ mpi_ioc.h
199 * added _MULTI_PORT_DOMAIN. 202 * added _MULTI_PORT_DOMAIN.
200 * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request. 203 * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request.
201 * Added Common Boot Block type to FWUpload Request. 204 * Added Common Boot Block type to FWUpload Request.
205 * 08-07-07 01.05.15 Added MPI_EVENT_SAS_INIT_RC_REMOVED define.
206 * Added MPI_EVENT_IR2_RC_DUAL_PORT_ADDED and
207 * MPI_EVENT_IR2_RC_DUAL_PORT_REMOVED for IR2 event data.
208 * Added SASAddress field to SAS Initiator Device Table
209 * Overflow event data structure.
210 * 03-28-08 01.05.16 Added two new ReasonCode values to SAS Device Status
211 * Change Event data to indicate completion of internally
212 * generated task management.
213 * Added MPI_EVENT_DSCVRY_ERR_DS_SATA_INIT_FAILURE define.
214 * Added MPI_EVENT_SAS_INIT_RC_INACCESSIBLE define.
202 * -------------------------------------------------------------------------- 215 * --------------------------------------------------------------------------
203 216
204mpi_cnfg.h 217mpi_cnfg.h
@@ -213,7 +226,7 @@ mpi_cnfg.h
213 * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1 226 * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1
214 * page and updated the page version. 227 * page and updated the page version.
215 * Added Information field and _INFO_PARAMS_NEGOTIATED 228 * Added Information field and _INFO_PARAMS_NEGOTIATED
216 * definition to SCSI_DEVICE_0 page. 229 * definitionto SCSI_DEVICE_0 page.
217 * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the 230 * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the
218 * page version. 231 * page version.
219 * Added BucketsRemaining to LAN_1 page, redefined the 232 * Added BucketsRemaining to LAN_1 page, redefined the
@@ -496,6 +509,20 @@ mpi_cnfg.h
496 * Expander Page 0 Flags field. 509 * Expander Page 0 Flags field.
497 * Fixed define for 510 * Fixed define for
498 * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED. 511 * MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED.
512 * 08-07-07 01.05.16 Added MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT
513 * define.
514 * Added BIOS Page 4 structure.
515 * Added MPI_RAID_PHYS_DISK1_PATH_MAX define for RAID
516 * Physcial Disk Page 1.
517 * 01-15-07 01.05.17 Added additional bit defines for ExtFlags field of
518 * Manufacturing Page 4.
519 * Added Solid State Drives Supported bit to IOC Page 6
520 * Capabilities Flags.
521 * Added new value for AccessStatus field of SAS Device
522 * Page 0 (_SATA_NEEDS_INITIALIZATION).
523 * 03-28-08 01.05.18 Defined new bits in Manufacturing Page 4 ExtFlags field
524 * to control coercion size and the mixing of SAS and SATA
525 * SSD drives.
499 * -------------------------------------------------------------------------- 526 * --------------------------------------------------------------------------
500 527
501mpi_init.h 528mpi_init.h
@@ -661,6 +688,9 @@ mpi_raid.h
661 * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE. 688 * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE.
662 * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and 689 * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and
663 * associated defines. 690 * associated defines.
691 * 08-07-07 01.05.04 Added Disable Full Rebuild bit to the ActionDataWord
692 * for the RAID Action MPI_RAID_ACTION_DISABLE_VOLUME.
693 * 01-15-08 01.05.05 Added define for MPI_RAID_ACTION_SET_VOLUME_NAME.
664 * -------------------------------------------------------------------------- 694 * --------------------------------------------------------------------------
665 695
666mpi_tool.h 696mpi_tool.h
@@ -694,6 +724,10 @@ mpi_sas.h
694 * reply. 724 * reply.
695 * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO 725 * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO
696 * Unit Control request. 726 * Unit Control request.
727 * 01-15-08 01.05.05 Added support for MPI_SAS_OP_SET_IOC_PARAMETER,
728 * including adding IOCParameter and IOCParameter value
729 * fields to SAS IO Unit Control Request.
730 * Added MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC define.
697 * -------------------------------------------------------------------------- 731 * --------------------------------------------------------------------------
698 732
699mpi_type.h 733mpi_type.h
@@ -709,20 +743,20 @@ mpi_type.h
709 743
710mpi_history.txt Parts list history 744mpi_history.txt Parts list history
711 745
712Filename 01.05.15 01.05.15 746Filename 01.05.19 01.05.18 01.05.17 01.05.16 01.05.15
713---------- -------- -------- 747---------- -------- -------- -------- -------- --------
714mpi.h 01.05.12 01.05.13 748mpi.h 01.05.16 01.05.15 01.05.14 01.05.13 01.05.12
715mpi_ioc.h 01.05.13 01.05.14 749mpi_ioc.h 01.05.16 01.05.15 01.05.15 01.05.14 01.05.13
716mpi_cnfg.h 01.05.14 01.05.15 750mpi_cnfg.h 01.05.18 01.05.17 01.05.16 01.05.15 01.05.14
717mpi_init.h 01.05.09 01.05.09 751mpi_init.h 01.05.09 01.05.09 01.05.09 01.05.09 01.05.09
718mpi_targ.h 01.05.06 01.05.06 752mpi_targ.h 01.05.06 01.05.06 01.05.06 01.05.06 01.05.06
719mpi_fc.h 01.05.01 01.05.01 753mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
720mpi_lan.h 01.05.01 01.05.01 754mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
721mpi_raid.h 01.05.03 01.05.03 755mpi_raid.h 01.05.05 01.05.05 01.05.04 01.05.03 01.05.03
722mpi_tool.h 01.05.03 01.05.03 756mpi_tool.h 01.05.03 01.05.03 01.05.03 01.05.03 01.05.03
723mpi_inb.h 01.05.01 01.05.01 757mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
724mpi_sas.h 01.05.04 01.05.04 758mpi_sas.h 01.05.05 01.05.05 01.05.04 01.05.04 01.05.04
725mpi_type.h 01.05.02 01.05.02 759mpi_type.h 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02
726 760
727Filename 01.05.14 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09 761Filename 01.05.14 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09
728---------- -------- -------- -------- -------- -------- -------- 762---------- -------- -------- -------- -------- -------- --------
diff --git a/drivers/message/fusion/lsi/mpi_init.h b/drivers/message/fusion/lsi/mpi_init.h
index a9e3693601a7..4295d062caa7 100644
--- a/drivers/message/fusion/lsi/mpi_init.h
+++ b/drivers/message/fusion/lsi/mpi_init.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2000-2007 LSI Corporation. 2 * Copyright (c) 2000-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_init.h 5 * Name: mpi_init.h
diff --git a/drivers/message/fusion/lsi/mpi_ioc.h b/drivers/message/fusion/lsi/mpi_ioc.h
index 5cbb6bd048e1..8faa4fab7b89 100644
--- a/drivers/message/fusion/lsi/mpi_ioc.h
+++ b/drivers/message/fusion/lsi/mpi_ioc.h
@@ -1,12 +1,12 @@
1/* 1/*
2 * Copyright (c) 2000-2007 LSI Corporation. 2 * Copyright (c) 2000-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_ioc.h 5 * Name: mpi_ioc.h
6 * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages 6 * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
7 * Creation Date: August 11, 2000 7 * Creation Date: August 11, 2000
8 * 8 *
9 * mpi_ioc.h Version: 01.05.14 9 * mpi_ioc.h Version: 01.05.16
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
@@ -113,6 +113,16 @@
113 * added _MULTI_PORT_DOMAIN. 113 * added _MULTI_PORT_DOMAIN.
114 * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request. 114 * 05-24-07 01.05.14 Added Common Boot Block type to FWDownload Request.
115 * Added Common Boot Block type to FWUpload Request. 115 * Added Common Boot Block type to FWUpload Request.
116 * 08-07-07 01.05.15 Added MPI_EVENT_SAS_INIT_RC_REMOVED define.
117 * Added MPI_EVENT_IR2_RC_DUAL_PORT_ADDED and
118 * MPI_EVENT_IR2_RC_DUAL_PORT_REMOVED for IR2 event data.
119 * Added SASAddress field to SAS Initiator Device Table
120 * Overflow event data structure.
121 * 03-28-08 01.05.16 Added two new ReasonCode values to SAS Device Status
122 * Change Event data to indicate completion of internally
123 * generated task management.
124 * Added MPI_EVENT_DSCVRY_ERR_DS_SATA_INIT_FAILURE define.
125 * Added MPI_EVENT_SAS_INIT_RC_INACCESSIBLE define.
116 * -------------------------------------------------------------------------- 126 * --------------------------------------------------------------------------
117 */ 127 */
118 128
@@ -612,6 +622,8 @@ typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
612#define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B) 622#define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B)
613#define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C) 623#define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C)
614#define MPI_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D) 624#define MPI_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D)
625#define MPI_EVENT_SAS_DEV_STAT_RC_CMPL_INTERNAL_DEV_RESET (0x0E)
626#define MPI_EVENT_SAS_DEV_STAT_RC_CMPL_TASK_ABORT_INTERNAL (0x0F)
615 627
616 628
617/* SCSI Event data for Queue Full event */ 629/* SCSI Event data for Queue Full event */
@@ -708,6 +720,8 @@ typedef struct _MPI_EVENT_DATA_IR2
708#define MPI_EVENT_IR2_RC_PD_REMOVED (0x05) 720#define MPI_EVENT_IR2_RC_PD_REMOVED (0x05)
709#define MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED (0x06) 721#define MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED (0x06)
710#define MPI_EVENT_IR2_RC_REBUILD_MEDIUM_ERROR (0x07) 722#define MPI_EVENT_IR2_RC_REBUILD_MEDIUM_ERROR (0x07)
723#define MPI_EVENT_IR2_RC_DUAL_PORT_ADDED (0x08)
724#define MPI_EVENT_IR2_RC_DUAL_PORT_REMOVED (0x09)
711 725
712/* defines for logical disk states */ 726/* defines for logical disk states */
713#define MPI_LD_STATE_OPTIMAL (0x00) 727#define MPI_LD_STATE_OPTIMAL (0x00)
@@ -867,6 +881,7 @@ typedef struct _EVENT_DATA_DISCOVERY_ERROR
867#define MPI_EVENT_DSCVRY_ERR_DS_UNSUPPORTED_DEVICE (0x00000800) 881#define MPI_EVENT_DSCVRY_ERR_DS_UNSUPPORTED_DEVICE (0x00000800)
868#define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000) 882#define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000)
869#define MPI_EVENT_DSCVRY_ERR_DS_MULTI_PORT_DOMAIN (0x00002000) 883#define MPI_EVENT_DSCVRY_ERR_DS_MULTI_PORT_DOMAIN (0x00002000)
884#define MPI_EVENT_DSCVRY_ERR_DS_SATA_INIT_FAILURE (0x00004000)
870 885
871/* SAS SMP Error Event data */ 886/* SAS SMP Error Event data */
872 887
@@ -902,6 +917,8 @@ typedef struct _EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE
902 917
903/* defines for the ReasonCode field of the SAS Initiator Device Status Change event */ 918/* defines for the ReasonCode field of the SAS Initiator Device Status Change event */
904#define MPI_EVENT_SAS_INIT_RC_ADDED (0x01) 919#define MPI_EVENT_SAS_INIT_RC_ADDED (0x01)
920#define MPI_EVENT_SAS_INIT_RC_REMOVED (0x02)
921#define MPI_EVENT_SAS_INIT_RC_INACCESSIBLE (0x03)
905 922
906/* SAS Initiator Device Table Overflow Event data */ 923/* SAS Initiator Device Table Overflow Event data */
907 924
@@ -910,6 +927,7 @@ typedef struct _EVENT_DATA_SAS_INIT_TABLE_OVERFLOW
910 U8 MaxInit; /* 00h */ 927 U8 MaxInit; /* 00h */
911 U8 CurrentInit; /* 01h */ 928 U8 CurrentInit; /* 01h */
912 U16 Reserved1; /* 02h */ 929 U16 Reserved1; /* 02h */
930 U64 SASAddress; /* 04h */
913} EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, 931} EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
914 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, 932 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
915 MpiEventDataSasInitTableOverflow_t, 933 MpiEventDataSasInitTableOverflow_t,
diff --git a/drivers/message/fusion/lsi/mpi_lan.h b/drivers/message/fusion/lsi/mpi_lan.h
index 03253b53b785..f41fcb69b359 100644
--- a/drivers/message/fusion/lsi/mpi_lan.h
+++ b/drivers/message/fusion/lsi/mpi_lan.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2000-2004 LSI Corporation. 2 * Copyright (c) 2000-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_lan.h 5 * Name: mpi_lan.h
diff --git a/drivers/message/fusion/lsi/mpi_log_fc.h b/drivers/message/fusion/lsi/mpi_log_fc.h
index e4dafcefeecd..face6e7acc72 100644
--- a/drivers/message/fusion/lsi/mpi_log_fc.h
+++ b/drivers/message/fusion/lsi/mpi_log_fc.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2000-2001 LSI Corporation. All rights reserved. 2 * Copyright (c) 2000-2008 LSI Corporation. All rights reserved.
3 * 3 *
4 * NAME: fc_log.h 4 * NAME: fc_log.h
5 * SUMMARY: MPI IocLogInfo definitions for the SYMFC9xx chips 5 * SUMMARY: MPI IocLogInfo definitions for the SYMFC9xx chips
diff --git a/drivers/message/fusion/lsi/mpi_log_sas.h b/drivers/message/fusion/lsi/mpi_log_sas.h
index af9da03e95e5..691620dbedd2 100644
--- a/drivers/message/fusion/lsi/mpi_log_sas.h
+++ b/drivers/message/fusion/lsi/mpi_log_sas.h
@@ -1,6 +1,6 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * Copyright 2003 LSI Corporation. All rights reserved. * 3 * Copyright (c) 2000-2008 LSI Corporation. All rights reserved. *
4 * * 4 * *
5 * Description * 5 * Description *
6 * ------------ * 6 * ------------ *
@@ -73,6 +73,8 @@
73#define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO (0x00070004) 73#define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO (0x00070004)
74#define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO_REQ (0x00070005) 74#define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO_REQ (0x00070005)
75 75
76#define IOP_LOGINFO_CODE_LOG_TIMESTAMP_EVENT (0x00080000)
77
76/****************************************************************************/ 78/****************************************************************************/
77/* PL LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = PL */ 79/* PL LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = PL */
78/****************************************************************************/ 80/****************************************************************************/
@@ -92,7 +94,7 @@
92#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_OPEN_TIMEOUT_EXP (0x0000000C) 94#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_OPEN_TIMEOUT_EXP (0x0000000C)
93#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_UNUSED_0D (0x0000000D) 95#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_UNUSED_0D (0x0000000D)
94#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_DVTBLE_ACCSS_FAIL (0x0000000E) 96#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_DVTBLE_ACCSS_FAIL (0x0000000E)
95#define PL_LOGINFO_SUB CODE_OPEN_FAIL_BAD_DEST (0x00000011) 97#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_BAD_DEST (0x00000011)
96#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RATE_NOT_SUPP (0x00000012) 98#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RATE_NOT_SUPP (0x00000012)
97#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_PROT_NOT_SUPP (0x00000013) 99#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_PROT_NOT_SUPP (0x00000013)
98#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON0 (0x00000014) 100#define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON0 (0x00000014)
@@ -159,10 +161,11 @@
159 161
160#define PL_LOGINFO_SUB_CODE_INVALID_SGL (0x00000200) 162#define PL_LOGINFO_SUB_CODE_INVALID_SGL (0x00000200)
161#define PL_LOGINFO_SUB_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00000300) 163#define PL_LOGINFO_SUB_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00000300)
162#define PL_LOGINFO_SUB_CODE_FRAME_XFER_ERROR (0x00000400) /* Bits 0-3 encode Transport Status Register (offset 0x08) */ 164#define PL_LOGINFO_SUB_CODE_FRAME_XFER_ERROR (0x00000400)
163 /* Bit 0 is Status Bit 0: FrameXferErr */ 165/* Bits 0-3 encode Transport Status Register (offset 0x08) */
164 /* Bit 1 & 2 are Status Bits 16 and 17: FrameXmitErrStatus */ 166/* Bit 0 is Status Bit 0: FrameXferErr */
165 /* Bit 3 is Status Bit 18 WriteDataLengthGTDataLengthErr */ 167/* Bit 1 & 2 are Status Bits 16 and 17: FrameXmitErrStatus */
168/* Bit 3 is Status Bit 18 WriteDataLenghtGTDataLengthErr */
166 169
167#define PL_LOGINFO_SUB_CODE_TX_FM_CONNECTED_LOW (0x00000500) 170#define PL_LOGINFO_SUB_CODE_TX_FM_CONNECTED_LOW (0x00000500)
168#define PL_LOGINFO_SUB_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00000600) 171#define PL_LOGINFO_SUB_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00000600)
@@ -177,6 +180,11 @@
177#define PL_LOGINFO_SUB_CODE_DISCOVERY_REMOTE_SEP_RESET (0x00000E01) 180#define PL_LOGINFO_SUB_CODE_DISCOVERY_REMOTE_SEP_RESET (0x00000E01)
178#define PL_LOGINFO_SUB_CODE_SECOND_OPEN (0x00000F00) 181#define PL_LOGINFO_SUB_CODE_SECOND_OPEN (0x00000F00)
179#define PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00001000) 182#define PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00001000)
183#define PL_LOGINFO_SUB_CODE_BREAK_ON_SATA_CONNECTION (0x00002000)
184/* not currently used in mainline */
185#define PL_LOGINFO_SUB_CODE_BREAK_ON_STUCK_LINK (0x00003000)
186#define PL_LOGINFO_SUB_CODE_BREAK_ON_STUCK_LINK_AIP (0x00004000)
187#define PL_LOGINFO_SUB_CODE_BREAK_ON_INCOMPLETE_BREAK_RCVD (0x00005000)
180 188
181#define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_FAILURE (0x00200000) /* Can't get SMP Frame */ 189#define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_FAILURE (0x00200000) /* Can't get SMP Frame */
182#define PL_LOGINFO_CODE_ENCL_MGMT_SMP_READ_ERROR (0x00200010) /* Error occured on SMP Read */ 190#define PL_LOGINFO_CODE_ENCL_MGMT_SMP_READ_ERROR (0x00200010) /* Error occured on SMP Read */
@@ -243,6 +251,8 @@
243#define IR_LOGINFO_VOLUME_ACTIVATE_VOLUME_FAILED (0x00010014) 251#define IR_LOGINFO_VOLUME_ACTIVATE_VOLUME_FAILED (0x00010014)
244/* Activation failed trying to import the volume */ 252/* Activation failed trying to import the volume */
245#define IR_LOGINFO_VOLUME_ACTIVATING_IMPORT_VOLUME_FAILED (0x00010015) 253#define IR_LOGINFO_VOLUME_ACTIVATING_IMPORT_VOLUME_FAILED (0x00010015)
254/* Activation failed trying to import the volume */
255#define IR_LOGINFO_VOLUME_ACTIVATING_TOO_MANY_PHYS_DISKS (0x00010016)
246 256
247/* Phys Disk failed, too many phys disks */ 257/* Phys Disk failed, too many phys disks */
248#define IR_LOGINFO_PHYSDISK_CREATE_TOO_MANY_DISKS (0x00010020) 258#define IR_LOGINFO_PHYSDISK_CREATE_TOO_MANY_DISKS (0x00010020)
@@ -285,6 +295,21 @@
285/* Compatibility Error : IME size limited to < 2TB */ 295/* Compatibility Error : IME size limited to < 2TB */
286#define IR_LOGINFO_COMPAT_ERROR_IME_VOL_NOT_CURRENTLY_SUPPORTED (0x0001003D) 296#define IR_LOGINFO_COMPAT_ERROR_IME_VOL_NOT_CURRENTLY_SUPPORTED (0x0001003D)
287 297
298/* Device Firmware Update: DFU can only be started once */
299#define IR_LOGINFO_DEV_FW_UPDATE_ERR_DFU_IN_PROGRESS (0x00010050)
300/* Device Firmware Update: Volume must be Optimal/Active/non-Quiesced */
301#define IR_LOGINFO_DEV_FW_UPDATE_ERR_DEVICE_IN_INVALID_STATE (0x00010051)
302/* Device Firmware Update: DFU Timeout cannot be zero */
303#define IR_LOGINFO_DEV_FW_UPDATE_ERR_INVALID_TIMEOUT (0x00010052)
304/* Device Firmware Update: CREATE TIMER FAILED */
305#define IR_LOGINFO_DEV_FW_UPDATE_ERR_NO_TIMERS (0x00010053)
306/* Device Firmware Update: Failed to read SAS_IO_UNIT_PG_1 */
307#define IR_LOGINFO_DEV_FW_UPDATE_ERR_READING_CFG_PAGE (0x00010054)
308/* Device Firmware Update: Invalid SAS_IO_UNIT_PG_1 value(s) */
309#define IR_LOGINFO_DEV_FW_UPDATE_ERR_PORT_IO_TIMEOUTS_REQUIRED (0x00010055)
310/* Device Firmware Update: Unable to allocate memory for page */
311#define IR_LOGINFO_DEV_FW_UPDATE_ERR_ALLOC_CFG_PAGE (0x00010056)
312
288 313
289/****************************************************************************/ 314/****************************************************************************/
290/* Defines for convenience */ 315/* Defines for convenience */
diff --git a/drivers/message/fusion/lsi/mpi_raid.h b/drivers/message/fusion/lsi/mpi_raid.h
index 2856108421d7..add60cc85be1 100644
--- a/drivers/message/fusion/lsi/mpi_raid.h
+++ b/drivers/message/fusion/lsi/mpi_raid.h
@@ -1,12 +1,12 @@
1/* 1/*
2 * Copyright (c) 2001-2007 LSI Corporation. 2 * Copyright (c) 2001-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_raid.h 5 * Name: mpi_raid.h
6 * Title: MPI RAID message and structures 6 * Title: MPI RAID message and structures
7 * Creation Date: February 27, 2001 7 * Creation Date: February 27, 2001
8 * 8 *
9 * mpi_raid.h Version: 01.05.03 9 * mpi_raid.h Version: 01.05.05
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
@@ -34,6 +34,9 @@
34 * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE. 34 * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE.
35 * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and 35 * 02-28-07 01.05.03 Added new RAID Action, Device FW Update Mode, and
36 * associated defines. 36 * associated defines.
37 * 08-07-07 01.05.04 Added Disable Full Rebuild bit to the ActionDataWord
38 * for the RAID Action MPI_RAID_ACTION_DISABLE_VOLUME.
39 * 01-15-08 01.05.05 Added define for MPI_RAID_ACTION_SET_VOLUME_NAME.
37 * -------------------------------------------------------------------------- 40 * --------------------------------------------------------------------------
38 */ 41 */
39 42
@@ -93,6 +96,7 @@ typedef struct _MSG_RAID_ACTION
93#define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13) 96#define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13)
94#define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14) 97#define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14)
95#define MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15) 98#define MPI_RAID_ACTION_DEVICE_FW_UPDATE_MODE (0x15)
99#define MPI_RAID_ACTION_SET_VOLUME_NAME (0x16)
96 100
97/* ActionDataWord defines for use with MPI_RAID_ACTION_CREATE_VOLUME action */ 101/* ActionDataWord defines for use with MPI_RAID_ACTION_CREATE_VOLUME action */
98#define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001) 102#define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001)
@@ -105,6 +109,9 @@ typedef struct _MSG_RAID_ACTION
105#define MPI_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000) 109#define MPI_RAID_ACTION_ADATA_KEEP_LBA0 (0x00000000)
106#define MPI_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000002) 110#define MPI_RAID_ACTION_ADATA_ZERO_LBA0 (0x00000002)
107 111
112/* ActionDataWord defines for use with MPI_RAID_ACTION_DISABLE_VOLUME action */
113#define MPI_RAID_ACTION_ADATA_DISABLE_FULL_REBUILD (0x00000001)
114
108/* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */ 115/* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */
109#define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001) 116#define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001)
110 117
diff --git a/drivers/message/fusion/lsi/mpi_sas.h b/drivers/message/fusion/lsi/mpi_sas.h
index 33fca83cefc2..ab410036bbfc 100644
--- a/drivers/message/fusion/lsi/mpi_sas.h
+++ b/drivers/message/fusion/lsi/mpi_sas.h
@@ -1,12 +1,12 @@
1/* 1/*
2 * Copyright (c) 2004-2006 LSI Corporation. 2 * Copyright (c) 2004-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_sas.h 5 * Name: mpi_sas.h
6 * Title: MPI Serial Attached SCSI structures and definitions 6 * Title: MPI Serial Attached SCSI structures and definitions
7 * Creation Date: August 19, 2004 7 * Creation Date: August 19, 2004
8 * 8 *
9 * mpi_sas.h Version: 01.05.04 9 * mpi_sas.h Version: 01.05.05
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
@@ -23,6 +23,10 @@
23 * reply. 23 * reply.
24 * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO 24 * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO
25 * Unit Control request. 25 * Unit Control request.
26 * 01-15-08 01.05.05 Added support for MPI_SAS_OP_SET_IOC_PARAMETER,
27 * including adding IOCParameter and IOCParameter value
28 * fields to SAS IO Unit Control Request.
29 * Added MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC define.
26 * -------------------------------------------------------------------------- 30 * --------------------------------------------------------------------------
27 */ 31 */
28 32
@@ -60,6 +64,8 @@
60 * Values for the SAS DeviceInfo field used in SAS Device Status Change Event 64 * Values for the SAS DeviceInfo field used in SAS Device Status Change Event
61 * data and SAS IO Unit Configuration pages. 65 * data and SAS IO Unit Configuration pages.
62 */ 66 */
67#define MPI_SAS_DEVICE_INFO_PRODUCT_SPECIFIC (0xF0000000)
68
63#define MPI_SAS_DEVICE_INFO_SEP (0x00004000) 69#define MPI_SAS_DEVICE_INFO_SEP (0x00004000)
64#define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000) 70#define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000)
65#define MPI_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000) 71#define MPI_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000)
@@ -216,7 +222,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
216 U8 ChainOffset; /* 02h */ 222 U8 ChainOffset; /* 02h */
217 U8 Function; /* 03h */ 223 U8 Function; /* 03h */
218 U16 DevHandle; /* 04h */ 224 U16 DevHandle; /* 04h */
219 U8 Reserved3; /* 06h */ 225 U8 IOCParameter; /* 06h */
220 U8 MsgFlags; /* 07h */ 226 U8 MsgFlags; /* 07h */
221 U32 MsgContext; /* 08h */ 227 U32 MsgContext; /* 08h */
222 U8 TargetID; /* 0Ch */ 228 U8 TargetID; /* 0Ch */
@@ -225,7 +231,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
225 U8 PrimFlags; /* 0Fh */ 231 U8 PrimFlags; /* 0Fh */
226 U32 Primitive; /* 10h */ 232 U32 Primitive; /* 10h */
227 U64 SASAddress; /* 14h */ 233 U64 SASAddress; /* 14h */
228 U32 Reserved4; /* 1Ch */ 234 U32 IOCParameterValue; /* 1Ch */
229} MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST, 235} MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST,
230 SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t; 236 SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t;
231 237
@@ -241,6 +247,8 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
241#define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C) 247#define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C)
242#define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE (0x0D) /* obsolete name */ 248#define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE (0x0D) /* obsolete name */
243#define MPI_SAS_OP_REMOVE_DEVICE (0x0D) 249#define MPI_SAS_OP_REMOVE_DEVICE (0x0D)
250#define MPI_SAS_OP_SET_IOC_PARAMETER (0x0E)
251#define MPI_SAS_OP_PRODUCT_SPECIFIC_MIN (0x80)
244 252
245/* values for the PrimFlags field */ 253/* values for the PrimFlags field */
246#define MPI_SAS_PRIMFLAGS_SINGLE (0x08) 254#define MPI_SAS_PRIMFLAGS_SINGLE (0x08)
@@ -256,7 +264,7 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REPLY
256 U8 MsgLength; /* 02h */ 264 U8 MsgLength; /* 02h */
257 U8 Function; /* 03h */ 265 U8 Function; /* 03h */
258 U16 DevHandle; /* 04h */ 266 U16 DevHandle; /* 04h */
259 U8 Reserved3; /* 06h */ 267 U8 IOCParameter; /* 06h */
260 U8 MsgFlags; /* 07h */ 268 U8 MsgFlags; /* 07h */
261 U32 MsgContext; /* 08h */ 269 U32 MsgContext; /* 08h */
262 U16 Reserved4; /* 0Ch */ 270 U16 Reserved4; /* 0Ch */
diff --git a/drivers/message/fusion/lsi/mpi_targ.h b/drivers/message/fusion/lsi/mpi_targ.h
index ff8c37d3fdcb..c3dea7f6909d 100644
--- a/drivers/message/fusion/lsi/mpi_targ.h
+++ b/drivers/message/fusion/lsi/mpi_targ.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2000-2004 LSI Corporation. 2 * Copyright (c) 2000-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_targ.h 5 * Name: mpi_targ.h
diff --git a/drivers/message/fusion/lsi/mpi_tool.h b/drivers/message/fusion/lsi/mpi_tool.h
index 8834ae6ce0f2..53cd715aa7e4 100644
--- a/drivers/message/fusion/lsi/mpi_tool.h
+++ b/drivers/message/fusion/lsi/mpi_tool.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2001-2005 LSI Corporation. 2 * Copyright (c) 2001-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_tool.h 5 * Name: mpi_tool.h
diff --git a/drivers/message/fusion/lsi/mpi_type.h b/drivers/message/fusion/lsi/mpi_type.h
index 08dad9c1e446..888b26dbc413 100644
--- a/drivers/message/fusion/lsi/mpi_type.h
+++ b/drivers/message/fusion/lsi/mpi_type.h
@@ -1,12 +1,12 @@
1/* 1/*
2 * Copyright (c) 2000-2004 LSI Corporation. 2 * Copyright (c) 2000-2008 LSI Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_type.h 5 * Name: mpi_type.h
6 * Title: MPI Basic type definitions 6 * Title: MPI Basic type definitions
7 * Creation Date: June 6, 2000 7 * Creation Date: June 6, 2000
8 * 8 *
9 * mpi_type.h Version: 01.05.01 9 * mpi_type.h Version: 01.05.02
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index c4e8b9aa3827..96ac88317b8e 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -79,9 +79,22 @@ MODULE_VERSION(my_VERSION);
79/* 79/*
80 * cmd line parameters 80 * cmd line parameters
81 */ 81 */
82static int mpt_msi_enable = -1; 82
83module_param(mpt_msi_enable, int, 0); 83static int mpt_msi_enable_spi;
84MODULE_PARM_DESC(mpt_msi_enable, " MSI Support Enable (default=0)"); 84module_param(mpt_msi_enable_spi, int, 0);
85MODULE_PARM_DESC(mpt_msi_enable_spi, " Enable MSI Support for SPI \
86 controllers (default=0)");
87
88static int mpt_msi_enable_fc;
89module_param(mpt_msi_enable_fc, int, 0);
90MODULE_PARM_DESC(mpt_msi_enable_fc, " Enable MSI Support for FC \
91 controllers (default=0)");
92
93static int mpt_msi_enable_sas;
94module_param(mpt_msi_enable_sas, int, 1);
95MODULE_PARM_DESC(mpt_msi_enable_sas, " Enable MSI Support for SAS \
96 controllers (default=1)");
97
85 98
86static int mpt_channel_mapping; 99static int mpt_channel_mapping;
87module_param(mpt_channel_mapping, int, 0); 100module_param(mpt_channel_mapping, int, 0);
@@ -91,7 +104,17 @@ static int mpt_debug_level;
91static int mpt_set_debug_level(const char *val, struct kernel_param *kp); 104static int mpt_set_debug_level(const char *val, struct kernel_param *kp);
92module_param_call(mpt_debug_level, mpt_set_debug_level, param_get_int, 105module_param_call(mpt_debug_level, mpt_set_debug_level, param_get_int,
93 &mpt_debug_level, 0600); 106 &mpt_debug_level, 0600);
94MODULE_PARM_DESC(mpt_debug_level, " debug level - refer to mptdebug.h - (default=0)"); 107MODULE_PARM_DESC(mpt_debug_level, " debug level - refer to mptdebug.h \
108 - (default=0)");
109
110int mpt_fwfault_debug;
111EXPORT_SYMBOL(mpt_fwfault_debug);
112module_param_call(mpt_fwfault_debug, param_set_int, param_get_int,
113 &mpt_fwfault_debug, 0600);
114MODULE_PARM_DESC(mpt_fwfault_debug, "Enable detection of Firmware fault"
115 " and halt Firmware on fault - (default=0)");
116
117
95 118
96#ifdef MFCNT 119#ifdef MFCNT
97static int mfcounter = 0; 120static int mfcounter = 0;
@@ -1751,16 +1774,25 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1751 ioc->bus_type = SAS; 1774 ioc->bus_type = SAS;
1752 } 1775 }
1753 1776
1754 if (mpt_msi_enable == -1) {
1755 /* Enable on SAS, disable on FC and SPI */
1756 if (ioc->bus_type == SAS)
1757 ioc->msi_enable = 1;
1758 else
1759 ioc->msi_enable = 0;
1760 } else
1761 /* follow flag: 0 - disable; 1 - enable */
1762 ioc->msi_enable = mpt_msi_enable;
1763 1777
1778 switch (ioc->bus_type) {
1779
1780 case SAS:
1781 ioc->msi_enable = mpt_msi_enable_sas;
1782 break;
1783
1784 case SPI:
1785 ioc->msi_enable = mpt_msi_enable_spi;
1786 break;
1787
1788 case FC:
1789 ioc->msi_enable = mpt_msi_enable_fc;
1790 break;
1791
1792 default:
1793 ioc->msi_enable = 0;
1794 break;
1795 }
1764 if (ioc->errata_flag_1064) 1796 if (ioc->errata_flag_1064)
1765 pci_disable_io_access(pdev); 1797 pci_disable_io_access(pdev);
1766 1798
@@ -6313,6 +6345,33 @@ mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buffer, int *size, int len, int sh
6313 *size = y; 6345 *size = y;
6314} 6346}
6315 6347
6348
6349/**
6350 * mpt_halt_firmware - Halts the firmware if it is operational and panic
6351 * the kernel
6352 * @ioc: Pointer to MPT_ADAPTER structure
6353 *
6354 **/
6355void
6356mpt_halt_firmware(MPT_ADAPTER *ioc)
6357{
6358 u32 ioc_raw_state;
6359
6360 ioc_raw_state = mpt_GetIocState(ioc, 0);
6361
6362 if ((ioc_raw_state & MPI_IOC_STATE_MASK) == MPI_IOC_STATE_FAULT) {
6363 printk(MYIOC_s_ERR_FMT "IOC is in FAULT state (%04xh)!!!\n",
6364 ioc->name, ioc_raw_state & MPI_DOORBELL_DATA_MASK);
6365 panic("%s: IOC Fault (%04xh)!!!\n", ioc->name,
6366 ioc_raw_state & MPI_DOORBELL_DATA_MASK);
6367 } else {
6368 CHIPREG_WRITE32(&ioc->chip->Doorbell, 0xC0FFEE00);
6369 panic("%s: Firmware is halted due to command timeout\n",
6370 ioc->name);
6371 }
6372}
6373EXPORT_SYMBOL(mpt_halt_firmware);
6374
6316/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 6375/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
6317/* 6376/*
6318 * Reset Handling 6377 * Reset Handling
@@ -6345,6 +6404,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag)
6345 printk(MYIOC_s_INFO_FMT "HardResetHandler Entered!\n", ioc->name); 6404 printk(MYIOC_s_INFO_FMT "HardResetHandler Entered!\n", ioc->name);
6346 printk("MF count 0x%x !\n", ioc->mfcnt); 6405 printk("MF count 0x%x !\n", ioc->mfcnt);
6347#endif 6406#endif
6407 if (mpt_fwfault_debug)
6408 mpt_halt_firmware(ioc);
6348 6409
6349 /* Reset the adapter. Prevent more than 1 call to 6410 /* Reset the adapter. Prevent more than 1 call to
6350 * mpt_do_ioc_recovery at any instant in time. 6411 * mpt_do_ioc_recovery at any instant in time.
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h
index dff048cfa101..b3e981d2a506 100644
--- a/drivers/message/fusion/mptbase.h
+++ b/drivers/message/fusion/mptbase.h
@@ -922,11 +922,14 @@ extern void mpt_free_fw_memory(MPT_ADAPTER *ioc);
922extern int mpt_findImVolumes(MPT_ADAPTER *ioc); 922extern int mpt_findImVolumes(MPT_ADAPTER *ioc);
923extern int mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode); 923extern int mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode);
924extern int mpt_raid_phys_disk_pg0(MPT_ADAPTER *ioc, u8 phys_disk_num, pRaidPhysDiskPage0_t phys_disk); 924extern int mpt_raid_phys_disk_pg0(MPT_ADAPTER *ioc, u8 phys_disk_num, pRaidPhysDiskPage0_t phys_disk);
925extern void mpt_halt_firmware(MPT_ADAPTER *ioc);
926
925 927
926/* 928/*
927 * Public data decl's... 929 * Public data decl's...
928 */ 930 */
929extern struct list_head ioc_list; 931extern struct list_head ioc_list;
932extern int mpt_fwfault_debug;
930 933
931/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 934/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
932#endif /* } __KERNEL__ */ 935#endif /* } __KERNEL__ */
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index ee090413e598..e62c6bc4ad33 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -1846,6 +1846,9 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
1846 if (hd->timeouts < -1) 1846 if (hd->timeouts < -1)
1847 hd->timeouts++; 1847 hd->timeouts++;
1848 1848
1849 if (mpt_fwfault_debug)
1850 mpt_halt_firmware(ioc);
1851
1849 /* Most important! Set TaskMsgContext to SCpnt's MsgContext! 1852 /* Most important! Set TaskMsgContext to SCpnt's MsgContext!
1850 * (the IO to be ABORT'd) 1853 * (the IO to be ABORT'd)
1851 * 1854 *
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index 9cf8ae6e4b39..d5749a7bc777 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -10,7 +10,6 @@ obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib.o
10obj-$(CONFIG_ICS932S401) += ics932s401.o 10obj-$(CONFIG_ICS932S401) += ics932s401.o
11obj-$(CONFIG_LKDTM) += lkdtm.o 11obj-$(CONFIG_LKDTM) += lkdtm.o
12obj-$(CONFIG_TIFM_CORE) += tifm_core.o 12obj-$(CONFIG_TIFM_CORE) += tifm_core.o
13obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o
14obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o 13obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o
15obj-$(CONFIG_PHANTOM) += phantom.o 14obj-$(CONFIG_PHANTOM) += phantom.o
16obj-$(CONFIG_SGI_IOC4) += ioc4.o 15obj-$(CONFIG_SGI_IOC4) += ioc4.o
diff --git a/drivers/misc/sgi-xp/xpc_sn2.c b/drivers/misc/sgi-xp/xpc_sn2.c
index 73b7fb8de47a..82fb9958f22f 100644
--- a/drivers/misc/sgi-xp/xpc_sn2.c
+++ b/drivers/misc/sgi-xp/xpc_sn2.c
@@ -899,7 +899,7 @@ xpc_update_partition_info_sn2(struct xpc_partition *part, u8 remote_rp_version,
899 dev_dbg(xpc_part, " remote_vars_pa = 0x%016lx\n", 899 dev_dbg(xpc_part, " remote_vars_pa = 0x%016lx\n",
900 part_sn2->remote_vars_pa); 900 part_sn2->remote_vars_pa);
901 901
902 part->last_heartbeat = remote_vars->heartbeat; 902 part->last_heartbeat = remote_vars->heartbeat - 1;
903 dev_dbg(xpc_part, " last_heartbeat = 0x%016lx\n", 903 dev_dbg(xpc_part, " last_heartbeat = 0x%016lx\n",
904 part->last_heartbeat); 904 part->last_heartbeat);
905 905
diff --git a/drivers/net/arm/etherh.c b/drivers/net/arm/etherh.c
index 745ac188babe..d15d8b79d8e5 100644
--- a/drivers/net/arm/etherh.c
+++ b/drivers/net/arm/etherh.c
@@ -646,7 +646,7 @@ static const struct net_device_ops etherh_netdev_ops = {
646 .ndo_get_stats = ei_get_stats, 646 .ndo_get_stats = ei_get_stats,
647 .ndo_set_multicast_list = ei_set_multicast_list, 647 .ndo_set_multicast_list = ei_set_multicast_list,
648 .ndo_validate_addr = eth_validate_addr, 648 .ndo_validate_addr = eth_validate_addr,
649 .ndo_set_mac_addr = eth_set_mac_addr, 649 .ndo_set_mac_address = eth_set_mac_addr,
650 .ndo_change_mtu = eth_change_mtu, 650 .ndo_change_mtu = eth_change_mtu,
651#ifdef CONFIG_NET_POLL_CONTROLLER 651#ifdef CONFIG_NET_POLL_CONTROLLER
652 .ndo_poll_controller = ei_poll, 652 .ndo_poll_controller = ei_poll,
diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c
index 337488ec707c..a4eb6c40678c 100644
--- a/drivers/net/ax88796.c
+++ b/drivers/net/ax88796.c
@@ -37,7 +37,10 @@ static int phy_debug = 0;
37#define __ei_open ax_ei_open 37#define __ei_open ax_ei_open
38#define __ei_close ax_ei_close 38#define __ei_close ax_ei_close
39#define __ei_poll ax_ei_poll 39#define __ei_poll ax_ei_poll
40#define __ei_start_xmit ax_ei_start_xmit
40#define __ei_tx_timeout ax_ei_tx_timeout 41#define __ei_tx_timeout ax_ei_tx_timeout
42#define __ei_get_stats ax_ei_get_stats
43#define __ei_set_multicast_list ax_ei_set_multicast_list
41#define __ei_interrupt ax_ei_interrupt 44#define __ei_interrupt ax_ei_interrupt
42#define ____alloc_ei_netdev ax__alloc_ei_netdev 45#define ____alloc_ei_netdev ax__alloc_ei_netdev
43#define __NS8390_init ax_NS8390_init 46#define __NS8390_init ax_NS8390_init
@@ -623,6 +626,23 @@ static void ax_eeprom_register_write(struct eeprom_93cx6 *eeprom)
623} 626}
624#endif 627#endif
625 628
629static const struct net_device_ops ax_netdev_ops = {
630 .ndo_open = ax_open,
631 .ndo_stop = ax_close,
632 .ndo_do_ioctl = ax_ioctl,
633
634 .ndo_start_xmit = ax_ei_start_xmit,
635 .ndo_tx_timeout = ax_ei_tx_timeout,
636 .ndo_get_stats = ax_ei_get_stats,
637 .ndo_set_multicast_list = ax_ei_set_multicast_list,
638 .ndo_validate_addr = eth_validate_addr,
639 .ndo_set_mac_address = eth_mac_addr,
640 .ndo_change_mtu = eth_change_mtu,
641#ifdef CONFIG_NET_POLL_CONTROLLER
642 .ndo_poll_controller = ax_ei_poll,
643#endif
644};
645
626/* setup code */ 646/* setup code */
627 647
628static void ax_initial_setup(struct net_device *dev, struct ei_device *ei_local) 648static void ax_initial_setup(struct net_device *dev, struct ei_device *ei_local)
@@ -738,9 +758,7 @@ static int ax_init_dev(struct net_device *dev, int first_init)
738 ei_status.get_8390_hdr = &ax_get_8390_hdr; 758 ei_status.get_8390_hdr = &ax_get_8390_hdr;
739 ei_status.priv = 0; 759 ei_status.priv = 0;
740 760
741 dev->open = ax_open; 761 dev->netdev_ops = &ax_netdev_ops;
742 dev->stop = ax_close;
743 dev->do_ioctl = ax_ioctl;
744 dev->ethtool_ops = &ax_ethtool_ops; 762 dev->ethtool_ops = &ax_ethtool_ops;
745 763
746 ax->msg_enable = NETIF_MSG_LINK; 764 ax->msg_enable = NETIF_MSG_LINK;
@@ -753,9 +771,6 @@ static int ax_init_dev(struct net_device *dev, int first_init)
753 ax->mii.mdio_write = ax_phy_write; 771 ax->mii.mdio_write = ax_phy_write;
754 ax->mii.dev = dev; 772 ax->mii.dev = dev;
755 773
756#ifdef CONFIG_NET_POLL_CONTROLLER
757 dev->poll_controller = ax_ei_poll;
758#endif
759 ax_NS8390_init(dev, 0); 774 ax_NS8390_init(dev, 0);
760 775
761 if (first_init) 776 if (first_init)
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index 5ae131c147f9..c38512ebcea6 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -679,6 +679,7 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
679 dev_kfree_skb_any(skb); 679 dev_kfree_skb_any(skb);
680 return -ENOMEM; 680 return -ENOMEM;
681 } 681 }
682 bp->force_copybreak = 1;
682 } 683 }
683 684
684 rh = (struct rx_header *) skb->data; 685 rh = (struct rx_header *) skb->data;
@@ -800,7 +801,7 @@ static int b44_rx(struct b44 *bp, int budget)
800 /* Omit CRC. */ 801 /* Omit CRC. */
801 len -= 4; 802 len -= 4;
802 803
803 if (len > RX_COPY_THRESHOLD) { 804 if (!bp->force_copybreak && len > RX_COPY_THRESHOLD) {
804 int skb_size; 805 int skb_size;
805 skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); 806 skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);
806 if (skb_size < 0) 807 if (skb_size < 0)
@@ -2152,6 +2153,7 @@ static int __devinit b44_init_one(struct ssb_device *sdev,
2152 bp = netdev_priv(dev); 2153 bp = netdev_priv(dev);
2153 bp->sdev = sdev; 2154 bp->sdev = sdev;
2154 bp->dev = dev; 2155 bp->dev = dev;
2156 bp->force_copybreak = 0;
2155 2157
2156 bp->msg_enable = netif_msg_init(b44_debug, B44_DEF_MSG_ENABLE); 2158 bp->msg_enable = netif_msg_init(b44_debug, B44_DEF_MSG_ENABLE);
2157 2159
diff --git a/drivers/net/b44.h b/drivers/net/b44.h
index 7db0c84a7950..e678498de6db 100644
--- a/drivers/net/b44.h
+++ b/drivers/net/b44.h
@@ -395,7 +395,7 @@ struct b44 {
395 u32 rx_pending; 395 u32 rx_pending;
396 u32 tx_pending; 396 u32 tx_pending;
397 u8 phy_addr; 397 u8 phy_addr;
398 398 u8 force_copybreak;
399 struct mii_if_info mii_if; 399 struct mii_if_info mii_if;
400}; 400};
401 401
diff --git a/drivers/net/bnx2x.h b/drivers/net/bnx2x.h
index fd705d1295a7..15a5cf0f676b 100644
--- a/drivers/net/bnx2x.h
+++ b/drivers/net/bnx2x.h
@@ -1,6 +1,6 @@
1/* bnx2x.h: Broadcom Everest network driver. 1/* bnx2x.h: Broadcom Everest network driver.
2 * 2 *
3 * Copyright (c) 2007-2008 Broadcom Corporation 3 * Copyright (c) 2007-2009 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -20,6 +20,11 @@
20 * (you will need to reboot afterwards) */ 20 * (you will need to reboot afterwards) */
21/* #define BNX2X_STOP_ON_ERROR */ 21/* #define BNX2X_STOP_ON_ERROR */
22 22
23#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
24#define BCM_VLAN 1
25#endif
26
27
23/* error/debug prints */ 28/* error/debug prints */
24 29
25#define DRV_MODULE_NAME "bnx2x" 30#define DRV_MODULE_NAME "bnx2x"
@@ -78,11 +83,6 @@
78#endif 83#endif
79 84
80 85
81#ifdef NETIF_F_HW_VLAN_TX
82#define BCM_VLAN 1
83#endif
84
85
86#define U64_LO(x) (u32)(((u64)(x)) & 0xffffffff) 86#define U64_LO(x) (u32)(((u64)(x)) & 0xffffffff)
87#define U64_HI(x) (u32)(((u64)(x)) >> 32) 87#define U64_HI(x) (u32)(((u64)(x)) >> 32)
88#define HILO_U64(hi, lo) ((((u64)(hi)) << 32) + (lo)) 88#define HILO_U64(hi, lo) ((((u64)(hi)) << 32) + (lo))
@@ -150,6 +150,9 @@ struct sw_rx_page {
150 150
151#define PAGES_PER_SGE_SHIFT 0 151#define PAGES_PER_SGE_SHIFT 0
152#define PAGES_PER_SGE (1 << PAGES_PER_SGE_SHIFT) 152#define PAGES_PER_SGE (1 << PAGES_PER_SGE_SHIFT)
153#define SGE_PAGE_SIZE PAGE_SIZE
154#define SGE_PAGE_SHIFT PAGE_SHIFT
155#define SGE_PAGE_ALIGN(addr) PAGE_ALIGN(addr)
153 156
154#define BCM_RX_ETH_PAYLOAD_ALIGN 64 157#define BCM_RX_ETH_PAYLOAD_ALIGN 64
155 158
@@ -268,14 +271,7 @@ struct bnx2x_fastpath {
268 271
269#define bnx2x_fp(bp, nr, var) (bp->fp[nr].var) 272#define bnx2x_fp(bp, nr, var) (bp->fp[nr].var)
270 273
271#define BNX2X_HAS_TX_WORK(fp) \ 274#define BNX2X_HAS_WORK(fp) (bnx2x_has_rx_work(fp) || bnx2x_has_tx_work(fp))
272 ((fp->tx_pkt_prod != le16_to_cpu(*fp->tx_cons_sb)) || \
273 (fp->tx_pkt_prod != fp->tx_pkt_cons))
274
275#define BNX2X_HAS_RX_WORK(fp) \
276 (fp->rx_comp_cons != rx_cons_sb)
277
278#define BNX2X_HAS_WORK(fp) (BNX2X_HAS_RX_WORK(fp) || BNX2X_HAS_TX_WORK(fp))
279 275
280 276
281/* MC hsi */ 277/* MC hsi */
@@ -736,7 +732,7 @@ struct bnx2x {
736 struct bnx2x_fastpath fp[MAX_CONTEXT]; 732 struct bnx2x_fastpath fp[MAX_CONTEXT];
737 void __iomem *regview; 733 void __iomem *regview;
738 void __iomem *doorbells; 734 void __iomem *doorbells;
739#define BNX2X_DB_SIZE (16*2048) 735#define BNX2X_DB_SIZE (16*BCM_PAGE_SIZE)
740 736
741 struct net_device *dev; 737 struct net_device *dev;
742 struct pci_dev *pdev; 738 struct pci_dev *pdev;
@@ -801,6 +797,8 @@ struct bnx2x {
801#define TPA_ENABLE_FLAG 0x80 797#define TPA_ENABLE_FLAG 0x80
802#define NO_MCP_FLAG 0x100 798#define NO_MCP_FLAG 0x100
803#define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG) 799#define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG)
800#define HW_VLAN_TX_FLAG 0x400
801#define HW_VLAN_RX_FLAG 0x800
804 802
805 int func; 803 int func;
806#define BP_PORT(bp) (bp->func % PORT_MAX) 804#define BP_PORT(bp) (bp->func % PORT_MAX)
@@ -811,7 +809,7 @@ struct bnx2x {
811 int pm_cap; 809 int pm_cap;
812 int pcie_cap; 810 int pcie_cap;
813 811
814 struct work_struct sp_task; 812 struct delayed_work sp_task;
815 struct work_struct reset_task; 813 struct work_struct reset_task;
816 814
817 struct timer_list timer; 815 struct timer_list timer;
diff --git a/drivers/net/bnx2x_link.c b/drivers/net/bnx2x_link.c
index fefa6ab13064..aea26b4dc453 100644
--- a/drivers/net/bnx2x_link.c
+++ b/drivers/net/bnx2x_link.c
@@ -1,4 +1,4 @@
1/* Copyright 2008 Broadcom Corporation 1/* Copyright 2008-2009 Broadcom Corporation
2 * 2 *
3 * Unless you and Broadcom execute a separate written software license 3 * Unless you and Broadcom execute a separate written software license
4 * agreement governing use of this software, this software is licensed to you 4 * agreement governing use of this software, this software is licensed to you
@@ -317,6 +317,9 @@ static u8 bnx2x_emac_enable(struct link_params *params,
317 val &= ~0x810; 317 val &= ~0x810;
318 EMAC_WR(bp, EMAC_REG_EMAC_MODE, val); 318 EMAC_WR(bp, EMAC_REG_EMAC_MODE, val);
319 319
320 /* enable emac */
321 REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 1);
322
320 /* enable emac for jumbo packets */ 323 /* enable emac for jumbo packets */
321 EMAC_WR(bp, EMAC_REG_EMAC_RX_MTU_SIZE, 324 EMAC_WR(bp, EMAC_REG_EMAC_RX_MTU_SIZE,
322 (EMAC_RX_MTU_SIZE_JUMBO_ENA | 325 (EMAC_RX_MTU_SIZE_JUMBO_ENA |
@@ -1609,7 +1612,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params,
1609 u32 gp_status) 1612 u32 gp_status)
1610{ 1613{
1611 struct bnx2x *bp = params->bp; 1614 struct bnx2x *bp = params->bp;
1612 1615 u16 new_line_speed;
1613 u8 rc = 0; 1616 u8 rc = 0;
1614 vars->link_status = 0; 1617 vars->link_status = 0;
1615 1618
@@ -1629,7 +1632,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params,
1629 1632
1630 switch (gp_status & GP_STATUS_SPEED_MASK) { 1633 switch (gp_status & GP_STATUS_SPEED_MASK) {
1631 case GP_STATUS_10M: 1634 case GP_STATUS_10M:
1632 vars->line_speed = SPEED_10; 1635 new_line_speed = SPEED_10;
1633 if (vars->duplex == DUPLEX_FULL) 1636 if (vars->duplex == DUPLEX_FULL)
1634 vars->link_status |= LINK_10TFD; 1637 vars->link_status |= LINK_10TFD;
1635 else 1638 else
@@ -1637,7 +1640,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params,
1637 break; 1640 break;
1638 1641
1639 case GP_STATUS_100M: 1642 case GP_STATUS_100M:
1640 vars->line_speed = SPEED_100; 1643 new_line_speed = SPEED_100;
1641 if (vars->duplex == DUPLEX_FULL) 1644 if (vars->duplex == DUPLEX_FULL)
1642 vars->link_status |= LINK_100TXFD; 1645 vars->link_status |= LINK_100TXFD;
1643 else 1646 else
@@ -1646,7 +1649,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params,
1646 1649
1647 case GP_STATUS_1G: 1650 case GP_STATUS_1G:
1648 case GP_STATUS_1G_KX: 1651 case GP_STATUS_1G_KX:
1649 vars->line_speed = SPEED_1000; 1652 new_line_speed = SPEED_1000;
1650 if (vars->duplex == DUPLEX_FULL) 1653 if (vars->duplex == DUPLEX_FULL)
1651 vars->link_status |= LINK_1000TFD; 1654 vars->link_status |= LINK_1000TFD;
1652 else 1655 else
@@ -1654,7 +1657,7 @@ static u8 bnx2x_link_settings_status(struct link_params *params,
1654 break; 1657 break;
1655 1658
1656 case GP_STATUS_2_5G: 1659 case GP_STATUS_2_5G:
1657 vars->line_speed = SPEED_2500; 1660 new_line_speed = SPEED_2500;
1658 if (vars->duplex == DUPLEX_FULL) 1661 if (vars->duplex == DUPLEX_FULL)
1659 vars->link_status |= LINK_2500TFD; 1662 vars->link_status |= LINK_2500TFD;
1660 else 1663 else
@@ -1671,32 +1674,32 @@ static u8 bnx2x_link_settings_status(struct link_params *params,
1671 case GP_STATUS_10G_KX4: 1674 case GP_STATUS_10G_KX4:
1672 case GP_STATUS_10G_HIG: 1675 case GP_STATUS_10G_HIG:
1673 case GP_STATUS_10G_CX4: 1676 case GP_STATUS_10G_CX4:
1674 vars->line_speed = SPEED_10000; 1677 new_line_speed = SPEED_10000;
1675 vars->link_status |= LINK_10GTFD; 1678 vars->link_status |= LINK_10GTFD;
1676 break; 1679 break;
1677 1680
1678 case GP_STATUS_12G_HIG: 1681 case GP_STATUS_12G_HIG:
1679 vars->line_speed = SPEED_12000; 1682 new_line_speed = SPEED_12000;
1680 vars->link_status |= LINK_12GTFD; 1683 vars->link_status |= LINK_12GTFD;
1681 break; 1684 break;
1682 1685
1683 case GP_STATUS_12_5G: 1686 case GP_STATUS_12_5G:
1684 vars->line_speed = SPEED_12500; 1687 new_line_speed = SPEED_12500;
1685 vars->link_status |= LINK_12_5GTFD; 1688 vars->link_status |= LINK_12_5GTFD;
1686 break; 1689 break;
1687 1690
1688 case GP_STATUS_13G: 1691 case GP_STATUS_13G:
1689 vars->line_speed = SPEED_13000; 1692 new_line_speed = SPEED_13000;
1690 vars->link_status |= LINK_13GTFD; 1693 vars->link_status |= LINK_13GTFD;
1691 break; 1694 break;
1692 1695
1693 case GP_STATUS_15G: 1696 case GP_STATUS_15G:
1694 vars->line_speed = SPEED_15000; 1697 new_line_speed = SPEED_15000;
1695 vars->link_status |= LINK_15GTFD; 1698 vars->link_status |= LINK_15GTFD;
1696 break; 1699 break;
1697 1700
1698 case GP_STATUS_16G: 1701 case GP_STATUS_16G:
1699 vars->line_speed = SPEED_16000; 1702 new_line_speed = SPEED_16000;
1700 vars->link_status |= LINK_16GTFD; 1703 vars->link_status |= LINK_16GTFD;
1701 break; 1704 break;
1702 1705
@@ -1708,6 +1711,15 @@ static u8 bnx2x_link_settings_status(struct link_params *params,
1708 break; 1711 break;
1709 } 1712 }
1710 1713
1714 /* Upon link speed change set the NIG into drain mode.
1715 Comes to deals with possible FIFO glitch due to clk change
1716 when speed is decreased without link down indicator */
1717 if (new_line_speed != vars->line_speed) {
1718 REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE
1719 + params->port*4, 0);
1720 msleep(1);
1721 }
1722 vars->line_speed = new_line_speed;
1711 vars->link_status |= LINK_STATUS_SERDES_LINK; 1723 vars->link_status |= LINK_STATUS_SERDES_LINK;
1712 1724
1713 if ((params->req_line_speed == SPEED_AUTO_NEG) && 1725 if ((params->req_line_speed == SPEED_AUTO_NEG) &&
@@ -3571,7 +3583,7 @@ static void bnx2x_set_xgxs_loopback(struct link_params *params,
3571 (MDIO_REG_BANK_CL73_IEEEB0 + 3583 (MDIO_REG_BANK_CL73_IEEEB0 +
3572 (MDIO_CL73_IEEEB0_CL73_AN_CONTROL & 0xf)), 3584 (MDIO_CL73_IEEEB0_CL73_AN_CONTROL & 0xf)),
3573 0x6041); 3585 0x6041);
3574 3586 msleep(200);
3575 /* set aer mmd back */ 3587 /* set aer mmd back */
3576 bnx2x_set_aer_mmd(params, vars); 3588 bnx2x_set_aer_mmd(params, vars);
3577 3589
@@ -3870,9 +3882,15 @@ static u8 bnx2x_link_initialize(struct link_params *params,
3870 } 3882 }
3871 3883
3872 if (vars->phy_flags & PHY_XGXS_FLAG) { 3884 if (vars->phy_flags & PHY_XGXS_FLAG) {
3873 if (params->req_line_speed && 3885 if ((params->req_line_speed &&
3874 ((params->req_line_speed == SPEED_100) || 3886 ((params->req_line_speed == SPEED_100) ||
3875 (params->req_line_speed == SPEED_10))) { 3887 (params->req_line_speed == SPEED_10))) ||
3888 (!params->req_line_speed &&
3889 (params->speed_cap_mask >=
3890 PORT_HW_CFG_SPEED_CAPABILITY_D0_10M_FULL) &&
3891 (params->speed_cap_mask <
3892 PORT_HW_CFG_SPEED_CAPABILITY_D0_1G)
3893 )) {
3876 vars->phy_flags |= PHY_SGMII_FLAG; 3894 vars->phy_flags |= PHY_SGMII_FLAG;
3877 } else { 3895 } else {
3878 vars->phy_flags &= ~PHY_SGMII_FLAG; 3896 vars->phy_flags &= ~PHY_SGMII_FLAG;
@@ -4194,6 +4212,11 @@ static u8 bnx2x_update_link_down(struct link_params *params,
4194 /* activate nig drain */ 4212 /* activate nig drain */
4195 REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1); 4213 REG_WR(bp, NIG_REG_EGRESS_DRAIN0_MODE + port*4, 1);
4196 4214
4215 /* disable emac */
4216 REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0);
4217
4218 msleep(10);
4219
4197 /* reset BigMac */ 4220 /* reset BigMac */
4198 bnx2x_bmac_rx_disable(bp, params->port); 4221 bnx2x_bmac_rx_disable(bp, params->port);
4199 REG_WR(bp, GRCBASE_MISC + 4222 REG_WR(bp, GRCBASE_MISC +
@@ -4238,6 +4261,7 @@ static u8 bnx2x_update_link_up(struct link_params *params,
4238 4261
4239 /* update shared memory */ 4262 /* update shared memory */
4240 bnx2x_update_mng(params, vars->link_status); 4263 bnx2x_update_mng(params, vars->link_status);
4264 msleep(20);
4241 return rc; 4265 return rc;
4242} 4266}
4243/* This function should called upon link interrupt */ 4267/* This function should called upon link interrupt */
@@ -4276,6 +4300,9 @@ u8 bnx2x_link_update(struct link_params *params, struct link_vars *vars)
4276 REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68), 4300 REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK10G + port*0x68),
4277 REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68)); 4301 REG_RD(bp, NIG_REG_XGXS0_STATUS_LINK_STATUS + port*0x68));
4278 4302
4303 /* disable emac */
4304 REG_WR(bp, NIG_REG_NIG_EMAC0_EN + port*4, 0);
4305
4279 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config); 4306 ext_phy_type = XGXS_EXT_PHY_TYPE(params->ext_phy_config);
4280 4307
4281 /* Check external link change only for non-direct */ 4308 /* Check external link change only for non-direct */
@@ -4377,10 +4404,11 @@ static u8 bnx2x_8073_common_init_phy(struct bnx2x *bp, u32 shmem_base)
4377 ext_phy_addr[port], 4404 ext_phy_addr[port],
4378 MDIO_PMA_DEVAD, 4405 MDIO_PMA_DEVAD,
4379 MDIO_PMA_REG_ROM_VER1, &fw_ver1); 4406 MDIO_PMA_REG_ROM_VER1, &fw_ver1);
4380 if (fw_ver1 == 0) { 4407 if (fw_ver1 == 0 || fw_ver1 == 0x4321) {
4381 DP(NETIF_MSG_LINK, 4408 DP(NETIF_MSG_LINK,
4382 "bnx2x_8073_common_init_phy port %x " 4409 "bnx2x_8073_common_init_phy port %x:"
4383 "fw Download failed\n", port); 4410 "Download failed. fw version = 0x%x\n",
4411 port, fw_ver1);
4384 return -EINVAL; 4412 return -EINVAL;
4385 } 4413 }
4386 4414
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c
index 4be05847f86f..d3e7775a9ccf 100644
--- a/drivers/net/bnx2x_main.c
+++ b/drivers/net/bnx2x_main.c
@@ -1,6 +1,6 @@
1/* bnx2x_main.c: Broadcom Everest network driver. 1/* bnx2x_main.c: Broadcom Everest network driver.
2 * 2 *
3 * Copyright (c) 2007-2008 Broadcom Corporation 3 * Copyright (c) 2007-2009 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -38,9 +38,7 @@
38#include <linux/time.h> 38#include <linux/time.h>
39#include <linux/ethtool.h> 39#include <linux/ethtool.h>
40#include <linux/mii.h> 40#include <linux/mii.h>
41#ifdef NETIF_F_HW_VLAN_TX 41#include <linux/if_vlan.h>
42 #include <linux/if_vlan.h>
43#endif
44#include <net/ip.h> 42#include <net/ip.h>
45#include <net/tcp.h> 43#include <net/tcp.h>
46#include <net/checksum.h> 44#include <net/checksum.h>
@@ -59,8 +57,8 @@
59#include "bnx2x.h" 57#include "bnx2x.h"
60#include "bnx2x_init.h" 58#include "bnx2x_init.h"
61 59
62#define DRV_MODULE_VERSION "1.45.23" 60#define DRV_MODULE_VERSION "1.45.26"
63#define DRV_MODULE_RELDATE "2008/11/03" 61#define DRV_MODULE_RELDATE "2009/01/26"
64#define BNX2X_BC_VER 0x040200 62#define BNX2X_BC_VER 0x040200
65 63
66/* Time in jiffies before concluding the transmitter is hung */ 64/* Time in jiffies before concluding the transmitter is hung */
@@ -71,7 +69,7 @@ static char version[] __devinitdata =
71 DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; 69 DRV_MODULE_NAME " " DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
72 70
73MODULE_AUTHOR("Eliezer Tamir"); 71MODULE_AUTHOR("Eliezer Tamir");
74MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710 Driver"); 72MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710/57711/57711E Driver");
75MODULE_LICENSE("GPL"); 73MODULE_LICENSE("GPL");
76MODULE_VERSION(DRV_MODULE_VERSION); 74MODULE_VERSION(DRV_MODULE_VERSION);
77 75
@@ -95,6 +93,7 @@ MODULE_PARM_DESC(debug, "default debug msglevel");
95module_param(use_multi, int, 0); 93module_param(use_multi, int, 0);
96MODULE_PARM_DESC(use_multi, "use per-CPU queues"); 94MODULE_PARM_DESC(use_multi, "use per-CPU queues");
97#endif 95#endif
96static struct workqueue_struct *bnx2x_wq;
98 97
99enum bnx2x_board_type { 98enum bnx2x_board_type {
100 BCM57710 = 0, 99 BCM57710 = 0,
@@ -671,7 +670,8 @@ static void bnx2x_int_disable_sync(struct bnx2x *bp, int disable_hw)
671 synchronize_irq(bp->pdev->irq); 670 synchronize_irq(bp->pdev->irq);
672 671
673 /* make sure sp_task is not running */ 672 /* make sure sp_task is not running */
674 cancel_work_sync(&bp->sp_task); 673 cancel_delayed_work(&bp->sp_task);
674 flush_workqueue(bnx2x_wq);
675} 675}
676 676
677/* fast path */ 677/* fast path */
@@ -733,6 +733,24 @@ static u16 bnx2x_ack_int(struct bnx2x *bp)
733 * fast path service functions 733 * fast path service functions
734 */ 734 */
735 735
736static inline int bnx2x_has_tx_work(struct bnx2x_fastpath *fp)
737{
738 u16 tx_cons_sb;
739
740 /* Tell compiler that status block fields can change */
741 barrier();
742 tx_cons_sb = le16_to_cpu(*fp->tx_cons_sb);
743 return (fp->tx_pkt_cons != tx_cons_sb);
744}
745
746static inline int bnx2x_has_tx_work_unload(struct bnx2x_fastpath *fp)
747{
748 /* Tell compiler that consumer and producer can change */
749 barrier();
750 return (fp->tx_pkt_prod != fp->tx_pkt_cons);
751
752}
753
736/* free skb in the packet ring at pos idx 754/* free skb in the packet ring at pos idx
737 * return idx of last bd freed 755 * return idx of last bd freed
738 */ 756 */
@@ -972,7 +990,7 @@ static inline void bnx2x_free_rx_sge(struct bnx2x *bp,
972 return; 990 return;
973 991
974 pci_unmap_page(bp->pdev, pci_unmap_addr(sw_buf, mapping), 992 pci_unmap_page(bp->pdev, pci_unmap_addr(sw_buf, mapping),
975 BCM_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); 993 SGE_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE);
976 __free_pages(page, PAGES_PER_SGE_SHIFT); 994 __free_pages(page, PAGES_PER_SGE_SHIFT);
977 995
978 sw_buf->page = NULL; 996 sw_buf->page = NULL;
@@ -1000,7 +1018,7 @@ static inline int bnx2x_alloc_rx_sge(struct bnx2x *bp,
1000 if (unlikely(page == NULL)) 1018 if (unlikely(page == NULL))
1001 return -ENOMEM; 1019 return -ENOMEM;
1002 1020
1003 mapping = pci_map_page(bp->pdev, page, 0, BCM_PAGE_SIZE*PAGES_PER_SGE, 1021 mapping = pci_map_page(bp->pdev, page, 0, SGE_PAGE_SIZE*PAGES_PER_SGE,
1004 PCI_DMA_FROMDEVICE); 1022 PCI_DMA_FROMDEVICE);
1005 if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) { 1023 if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) {
1006 __free_pages(page, PAGES_PER_SGE_SHIFT); 1024 __free_pages(page, PAGES_PER_SGE_SHIFT);
@@ -1096,9 +1114,9 @@ static void bnx2x_update_sge_prod(struct bnx2x_fastpath *fp,
1096 struct eth_fast_path_rx_cqe *fp_cqe) 1114 struct eth_fast_path_rx_cqe *fp_cqe)
1097{ 1115{
1098 struct bnx2x *bp = fp->bp; 1116 struct bnx2x *bp = fp->bp;
1099 u16 sge_len = BCM_PAGE_ALIGN(le16_to_cpu(fp_cqe->pkt_len) - 1117 u16 sge_len = SGE_PAGE_ALIGN(le16_to_cpu(fp_cqe->pkt_len) -
1100 le16_to_cpu(fp_cqe->len_on_bd)) >> 1118 le16_to_cpu(fp_cqe->len_on_bd)) >>
1101 BCM_PAGE_SHIFT; 1119 SGE_PAGE_SHIFT;
1102 u16 last_max, last_elem, first_elem; 1120 u16 last_max, last_elem, first_elem;
1103 u16 delta = 0; 1121 u16 delta = 0;
1104 u16 i; 1122 u16 i;
@@ -1203,22 +1221,22 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp,
1203 u16 cqe_idx) 1221 u16 cqe_idx)
1204{ 1222{
1205 struct sw_rx_page *rx_pg, old_rx_pg; 1223 struct sw_rx_page *rx_pg, old_rx_pg;
1206 struct page *sge;
1207 u16 len_on_bd = le16_to_cpu(fp_cqe->len_on_bd); 1224 u16 len_on_bd = le16_to_cpu(fp_cqe->len_on_bd);
1208 u32 i, frag_len, frag_size, pages; 1225 u32 i, frag_len, frag_size, pages;
1209 int err; 1226 int err;
1210 int j; 1227 int j;
1211 1228
1212 frag_size = le16_to_cpu(fp_cqe->pkt_len) - len_on_bd; 1229 frag_size = le16_to_cpu(fp_cqe->pkt_len) - len_on_bd;
1213 pages = BCM_PAGE_ALIGN(frag_size) >> BCM_PAGE_SHIFT; 1230 pages = SGE_PAGE_ALIGN(frag_size) >> SGE_PAGE_SHIFT;
1214 1231
1215 /* This is needed in order to enable forwarding support */ 1232 /* This is needed in order to enable forwarding support */
1216 if (frag_size) 1233 if (frag_size)
1217 skb_shinfo(skb)->gso_size = min((u32)BCM_PAGE_SIZE, 1234 skb_shinfo(skb)->gso_size = min((u32)SGE_PAGE_SIZE,
1218 max(frag_size, (u32)len_on_bd)); 1235 max(frag_size, (u32)len_on_bd));
1219 1236
1220#ifdef BNX2X_STOP_ON_ERROR 1237#ifdef BNX2X_STOP_ON_ERROR
1221 if (pages > 8*PAGES_PER_SGE) { 1238 if (pages >
1239 min((u32)8, (u32)MAX_SKB_FRAGS) * SGE_PAGE_SIZE * PAGES_PER_SGE) {
1222 BNX2X_ERR("SGL length is too long: %d. CQE index is %d\n", 1240 BNX2X_ERR("SGL length is too long: %d. CQE index is %d\n",
1223 pages, cqe_idx); 1241 pages, cqe_idx);
1224 BNX2X_ERR("fp_cqe->pkt_len = %d fp_cqe->len_on_bd = %d\n", 1242 BNX2X_ERR("fp_cqe->pkt_len = %d fp_cqe->len_on_bd = %d\n",
@@ -1234,9 +1252,8 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp,
1234 1252
1235 /* FW gives the indices of the SGE as if the ring is an array 1253 /* FW gives the indices of the SGE as if the ring is an array
1236 (meaning that "next" element will consume 2 indices) */ 1254 (meaning that "next" element will consume 2 indices) */
1237 frag_len = min(frag_size, (u32)(BCM_PAGE_SIZE*PAGES_PER_SGE)); 1255 frag_len = min(frag_size, (u32)(SGE_PAGE_SIZE*PAGES_PER_SGE));
1238 rx_pg = &fp->rx_page_ring[sge_idx]; 1256 rx_pg = &fp->rx_page_ring[sge_idx];
1239 sge = rx_pg->page;
1240 old_rx_pg = *rx_pg; 1257 old_rx_pg = *rx_pg;
1241 1258
1242 /* If we fail to allocate a substitute page, we simply stop 1259 /* If we fail to allocate a substitute page, we simply stop
@@ -1249,7 +1266,7 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp,
1249 1266
1250 /* Unmap the page as we r going to pass it to the stack */ 1267 /* Unmap the page as we r going to pass it to the stack */
1251 pci_unmap_page(bp->pdev, pci_unmap_addr(&old_rx_pg, mapping), 1268 pci_unmap_page(bp->pdev, pci_unmap_addr(&old_rx_pg, mapping),
1252 BCM_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE); 1269 SGE_PAGE_SIZE*PAGES_PER_SGE, PCI_DMA_FROMDEVICE);
1253 1270
1254 /* Add one frag and update the appropriate fields in the skb */ 1271 /* Add one frag and update the appropriate fields in the skb */
1255 skb_fill_page_desc(skb, j, old_rx_pg.page, 0, frag_len); 1272 skb_fill_page_desc(skb, j, old_rx_pg.page, 0, frag_len);
@@ -1282,6 +1299,13 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
1282 if (likely(new_skb)) { 1299 if (likely(new_skb)) {
1283 /* fix ip xsum and give it to the stack */ 1300 /* fix ip xsum and give it to the stack */
1284 /* (no need to map the new skb) */ 1301 /* (no need to map the new skb) */
1302#ifdef BCM_VLAN
1303 int is_vlan_cqe =
1304 (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
1305 PARSING_FLAGS_VLAN);
1306 int is_not_hwaccel_vlan_cqe =
1307 (is_vlan_cqe && (!(bp->flags & HW_VLAN_RX_FLAG)));
1308#endif
1285 1309
1286 prefetch(skb); 1310 prefetch(skb);
1287 prefetch(((char *)(skb)) + 128); 1311 prefetch(((char *)(skb)) + 128);
@@ -1306,6 +1330,12 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
1306 struct iphdr *iph; 1330 struct iphdr *iph;
1307 1331
1308 iph = (struct iphdr *)skb->data; 1332 iph = (struct iphdr *)skb->data;
1333#ifdef BCM_VLAN
1334 /* If there is no Rx VLAN offloading -
1335 take VLAN tag into an account */
1336 if (unlikely(is_not_hwaccel_vlan_cqe))
1337 iph = (struct iphdr *)((u8 *)iph + VLAN_HLEN);
1338#endif
1309 iph->check = 0; 1339 iph->check = 0;
1310 iph->check = ip_fast_csum((u8 *)iph, iph->ihl); 1340 iph->check = ip_fast_csum((u8 *)iph, iph->ihl);
1311 } 1341 }
@@ -1313,9 +1343,8 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
1313 if (!bnx2x_fill_frag_skb(bp, fp, skb, 1343 if (!bnx2x_fill_frag_skb(bp, fp, skb,
1314 &cqe->fast_path_cqe, cqe_idx)) { 1344 &cqe->fast_path_cqe, cqe_idx)) {
1315#ifdef BCM_VLAN 1345#ifdef BCM_VLAN
1316 if ((bp->vlgrp != NULL) && 1346 if ((bp->vlgrp != NULL) && is_vlan_cqe &&
1317 (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & 1347 (!is_not_hwaccel_vlan_cqe))
1318 PARSING_FLAGS_VLAN))
1319 vlan_hwaccel_receive_skb(skb, bp->vlgrp, 1348 vlan_hwaccel_receive_skb(skb, bp->vlgrp,
1320 le16_to_cpu(cqe->fast_path_cqe. 1349 le16_to_cpu(cqe->fast_path_cqe.
1321 vlan_tag)); 1350 vlan_tag));
@@ -1355,11 +1384,23 @@ static inline void bnx2x_update_rx_prod(struct bnx2x *bp,
1355 rx_prods.cqe_prod = rx_comp_prod; 1384 rx_prods.cqe_prod = rx_comp_prod;
1356 rx_prods.sge_prod = rx_sge_prod; 1385 rx_prods.sge_prod = rx_sge_prod;
1357 1386
1387 /*
1388 * Make sure that the BD and SGE data is updated before updating the
1389 * producers since FW might read the BD/SGE right after the producer
1390 * is updated.
1391 * This is only applicable for weak-ordered memory model archs such
1392 * as IA-64. The following barrier is also mandatory since FW will
1393 * assumes BDs must have buffers.
1394 */
1395 wmb();
1396
1358 for (i = 0; i < sizeof(struct tstorm_eth_rx_producers)/4; i++) 1397 for (i = 0; i < sizeof(struct tstorm_eth_rx_producers)/4; i++)
1359 REG_WR(bp, BAR_TSTRORM_INTMEM + 1398 REG_WR(bp, BAR_TSTRORM_INTMEM +
1360 TSTORM_RX_PRODS_OFFSET(BP_PORT(bp), FP_CL_ID(fp)) + i*4, 1399 TSTORM_RX_PRODS_OFFSET(BP_PORT(bp), FP_CL_ID(fp)) + i*4,
1361 ((u32 *)&rx_prods)[i]); 1400 ((u32 *)&rx_prods)[i]);
1362 1401
1402 mmiowb(); /* keep prod updates ordered */
1403
1363 DP(NETIF_MSG_RX_STATUS, 1404 DP(NETIF_MSG_RX_STATUS,
1364 "Wrote: bd_prod %u cqe_prod %u sge_prod %u\n", 1405 "Wrote: bd_prod %u cqe_prod %u sge_prod %u\n",
1365 bd_prod, rx_comp_prod, rx_sge_prod); 1406 bd_prod, rx_comp_prod, rx_sge_prod);
@@ -1415,7 +1456,7 @@ static int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
1415 DP(NETIF_MSG_RX_STATUS, "CQE type %x err %x status %x" 1456 DP(NETIF_MSG_RX_STATUS, "CQE type %x err %x status %x"
1416 " queue %x vlan %x len %u\n", CQE_TYPE(cqe_fp_flags), 1457 " queue %x vlan %x len %u\n", CQE_TYPE(cqe_fp_flags),
1417 cqe_fp_flags, cqe->fast_path_cqe.status_flags, 1458 cqe_fp_flags, cqe->fast_path_cqe.status_flags,
1418 cqe->fast_path_cqe.rss_hash_result, 1459 le32_to_cpu(cqe->fast_path_cqe.rss_hash_result),
1419 le16_to_cpu(cqe->fast_path_cqe.vlan_tag), 1460 le16_to_cpu(cqe->fast_path_cqe.vlan_tag),
1420 le16_to_cpu(cqe->fast_path_cqe.pkt_len)); 1461 le16_to_cpu(cqe->fast_path_cqe.pkt_len));
1421 1462
@@ -1547,7 +1588,7 @@ reuse_rx:
1547 } 1588 }
1548 1589
1549#ifdef BCM_VLAN 1590#ifdef BCM_VLAN
1550 if ((bp->vlgrp != NULL) && 1591 if ((bp->vlgrp != NULL) && (bp->flags & HW_VLAN_RX_FLAG) &&
1551 (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) & 1592 (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
1552 PARSING_FLAGS_VLAN)) 1593 PARSING_FLAGS_VLAN))
1553 vlan_hwaccel_receive_skb(skb, bp->vlgrp, 1594 vlan_hwaccel_receive_skb(skb, bp->vlgrp,
@@ -1580,7 +1621,6 @@ next_cqe:
1580 /* Update producers */ 1621 /* Update producers */
1581 bnx2x_update_rx_prod(bp, fp, bd_prod_fw, sw_comp_prod, 1622 bnx2x_update_rx_prod(bp, fp, bd_prod_fw, sw_comp_prod,
1582 fp->rx_sge_prod); 1623 fp->rx_sge_prod);
1583 mmiowb(); /* keep prod updates ordered */
1584 1624
1585 fp->rx_pkt += rx_pkt; 1625 fp->rx_pkt += rx_pkt;
1586 fp->rx_calls++; 1626 fp->rx_calls++;
@@ -1660,7 +1700,7 @@ static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance)
1660 1700
1661 1701
1662 if (unlikely(status & 0x1)) { 1702 if (unlikely(status & 0x1)) {
1663 schedule_work(&bp->sp_task); 1703 queue_delayed_work(bnx2x_wq, &bp->sp_task, 0);
1664 1704
1665 status &= ~0x1; 1705 status &= ~0x1;
1666 if (!status) 1706 if (!status)
@@ -1887,7 +1927,8 @@ static int bnx2x_set_spio(struct bnx2x *bp, int spio_num, u32 mode)
1887 1927
1888static void bnx2x_calc_fc_adv(struct bnx2x *bp) 1928static void bnx2x_calc_fc_adv(struct bnx2x *bp)
1889{ 1929{
1890 switch (bp->link_vars.ieee_fc) { 1930 switch (bp->link_vars.ieee_fc &
1931 MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) {
1891 case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE: 1932 case MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_NONE:
1892 bp->port.advertising &= ~(ADVERTISED_Asym_Pause | 1933 bp->port.advertising &= ~(ADVERTISED_Asym_Pause |
1893 ADVERTISED_Pause); 1934 ADVERTISED_Pause);
@@ -1957,10 +1998,11 @@ static u8 bnx2x_initial_phy_init(struct bnx2x *bp)
1957 rc = bnx2x_phy_init(&bp->link_params, &bp->link_vars); 1998 rc = bnx2x_phy_init(&bp->link_params, &bp->link_vars);
1958 bnx2x_release_phy_lock(bp); 1999 bnx2x_release_phy_lock(bp);
1959 2000
2001 bnx2x_calc_fc_adv(bp);
2002
1960 if (bp->link_vars.link_up) 2003 if (bp->link_vars.link_up)
1961 bnx2x_link_report(bp); 2004 bnx2x_link_report(bp);
1962 2005
1963 bnx2x_calc_fc_adv(bp);
1964 2006
1965 return rc; 2007 return rc;
1966 } 2008 }
@@ -2220,9 +2262,7 @@ static void bnx2x_link_attn(struct bnx2x *bp)
2220 /* Make sure that we are synced with the current statistics */ 2262 /* Make sure that we are synced with the current statistics */
2221 bnx2x_stats_handle(bp, STATS_EVENT_STOP); 2263 bnx2x_stats_handle(bp, STATS_EVENT_STOP);
2222 2264
2223 bnx2x_acquire_phy_lock(bp);
2224 bnx2x_link_update(&bp->link_params, &bp->link_vars); 2265 bnx2x_link_update(&bp->link_params, &bp->link_vars);
2225 bnx2x_release_phy_lock(bp);
2226 2266
2227 if (bp->link_vars.link_up) { 2267 if (bp->link_vars.link_up) {
2228 2268
@@ -2471,6 +2511,8 @@ static void bnx2x_attn_int_asserted(struct bnx2x *bp, u32 asserted)
2471 if (asserted & ATTN_HARD_WIRED_MASK) { 2511 if (asserted & ATTN_HARD_WIRED_MASK) {
2472 if (asserted & ATTN_NIG_FOR_FUNC) { 2512 if (asserted & ATTN_NIG_FOR_FUNC) {
2473 2513
2514 bnx2x_acquire_phy_lock(bp);
2515
2474 /* save nig interrupt mask */ 2516 /* save nig interrupt mask */
2475 bp->nig_mask = REG_RD(bp, nig_int_mask_addr); 2517 bp->nig_mask = REG_RD(bp, nig_int_mask_addr);
2476 REG_WR(bp, nig_int_mask_addr, 0); 2518 REG_WR(bp, nig_int_mask_addr, 0);
@@ -2526,8 +2568,10 @@ static void bnx2x_attn_int_asserted(struct bnx2x *bp, u32 asserted)
2526 REG_WR(bp, hc_addr, asserted); 2568 REG_WR(bp, hc_addr, asserted);
2527 2569
2528 /* now set back the mask */ 2570 /* now set back the mask */
2529 if (asserted & ATTN_NIG_FOR_FUNC) 2571 if (asserted & ATTN_NIG_FOR_FUNC) {
2530 REG_WR(bp, nig_int_mask_addr, bp->nig_mask); 2572 REG_WR(bp, nig_int_mask_addr, bp->nig_mask);
2573 bnx2x_release_phy_lock(bp);
2574 }
2531} 2575}
2532 2576
2533static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn) 2577static inline void bnx2x_attn_int_deasserted0(struct bnx2x *bp, u32 attn)
@@ -2795,8 +2839,10 @@ static void bnx2x_attn_int_deasserted(struct bnx2x *bp, u32 deasserted)
2795static void bnx2x_attn_int(struct bnx2x *bp) 2839static void bnx2x_attn_int(struct bnx2x *bp)
2796{ 2840{
2797 /* read local copy of bits */ 2841 /* read local copy of bits */
2798 u32 attn_bits = bp->def_status_blk->atten_status_block.attn_bits; 2842 u32 attn_bits = le32_to_cpu(bp->def_status_blk->atten_status_block.
2799 u32 attn_ack = bp->def_status_blk->atten_status_block.attn_bits_ack; 2843 attn_bits);
2844 u32 attn_ack = le32_to_cpu(bp->def_status_blk->atten_status_block.
2845 attn_bits_ack);
2800 u32 attn_state = bp->attn_state; 2846 u32 attn_state = bp->attn_state;
2801 2847
2802 /* look for changed bits */ 2848 /* look for changed bits */
@@ -2820,7 +2866,7 @@ static void bnx2x_attn_int(struct bnx2x *bp)
2820 2866
2821static void bnx2x_sp_task(struct work_struct *work) 2867static void bnx2x_sp_task(struct work_struct *work)
2822{ 2868{
2823 struct bnx2x *bp = container_of(work, struct bnx2x, sp_task); 2869 struct bnx2x *bp = container_of(work, struct bnx2x, sp_task.work);
2824 u16 status; 2870 u16 status;
2825 2871
2826 2872
@@ -2844,7 +2890,7 @@ static void bnx2x_sp_task(struct work_struct *work)
2844 if (status & 0x2) 2890 if (status & 0x2)
2845 bp->stats_pending = 0; 2891 bp->stats_pending = 0;
2846 2892
2847 bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, bp->def_att_idx, 2893 bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, le16_to_cpu(bp->def_att_idx),
2848 IGU_INT_NOP, 1); 2894 IGU_INT_NOP, 1);
2849 bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx), 2895 bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx),
2850 IGU_INT_NOP, 1); 2896 IGU_INT_NOP, 1);
@@ -2875,7 +2921,7 @@ static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance)
2875 return IRQ_HANDLED; 2921 return IRQ_HANDLED;
2876#endif 2922#endif
2877 2923
2878 schedule_work(&bp->sp_task); 2924 queue_delayed_work(bnx2x_wq, &bp->sp_task, 0);
2879 2925
2880 return IRQ_HANDLED; 2926 return IRQ_HANDLED;
2881} 2927}
@@ -2892,7 +2938,7 @@ static irqreturn_t bnx2x_msix_sp_int(int irq, void *dev_instance)
2892#define ADD_64(s_hi, a_hi, s_lo, a_lo) \ 2938#define ADD_64(s_hi, a_hi, s_lo, a_lo) \
2893 do { \ 2939 do { \
2894 s_lo += a_lo; \ 2940 s_lo += a_lo; \
2895 s_hi += a_hi + (s_lo < a_lo) ? 1 : 0; \ 2941 s_hi += a_hi + ((s_lo < a_lo) ? 1 : 0); \
2896 } while (0) 2942 } while (0)
2897 2943
2898/* difference = minuend - subtrahend */ 2944/* difference = minuend - subtrahend */
@@ -4496,7 +4542,7 @@ static void bnx2x_init_context(struct bnx2x *bp)
4496 4542
4497static void bnx2x_init_ind_table(struct bnx2x *bp) 4543static void bnx2x_init_ind_table(struct bnx2x *bp)
4498{ 4544{
4499 int port = BP_PORT(bp); 4545 int func = BP_FUNC(bp);
4500 int i; 4546 int i;
4501 4547
4502 if (!is_multi(bp)) 4548 if (!is_multi(bp))
@@ -4505,10 +4551,8 @@ static void bnx2x_init_ind_table(struct bnx2x *bp)
4505 DP(NETIF_MSG_IFUP, "Initializing indirection table\n"); 4551 DP(NETIF_MSG_IFUP, "Initializing indirection table\n");
4506 for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++) 4552 for (i = 0; i < TSTORM_INDIRECTION_TABLE_SIZE; i++)
4507 REG_WR8(bp, BAR_TSTRORM_INTMEM + 4553 REG_WR8(bp, BAR_TSTRORM_INTMEM +
4508 TSTORM_INDIRECTION_TABLE_OFFSET(port) + i, 4554 TSTORM_INDIRECTION_TABLE_OFFSET(func) + i,
4509 i % bp->num_queues); 4555 BP_CL_ID(bp) + (i % bp->num_queues));
4510
4511 REG_WR(bp, PRS_REG_A_PRSU_20, 0xf);
4512} 4556}
4513 4557
4514static void bnx2x_set_client_config(struct bnx2x *bp) 4558static void bnx2x_set_client_config(struct bnx2x *bp)
@@ -4517,12 +4561,12 @@ static void bnx2x_set_client_config(struct bnx2x *bp)
4517 int port = BP_PORT(bp); 4561 int port = BP_PORT(bp);
4518 int i; 4562 int i;
4519 4563
4520 tstorm_client.mtu = bp->dev->mtu + ETH_OVREHEAD; 4564 tstorm_client.mtu = bp->dev->mtu;
4521 tstorm_client.statistics_counter_id = BP_CL_ID(bp); 4565 tstorm_client.statistics_counter_id = BP_CL_ID(bp);
4522 tstorm_client.config_flags = 4566 tstorm_client.config_flags =
4523 TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE; 4567 TSTORM_ETH_CLIENT_CONFIG_STATSITICS_ENABLE;
4524#ifdef BCM_VLAN 4568#ifdef BCM_VLAN
4525 if (bp->rx_mode && bp->vlgrp) { 4569 if (bp->rx_mode && bp->vlgrp && (bp->flags & HW_VLAN_RX_FLAG)) {
4526 tstorm_client.config_flags |= 4570 tstorm_client.config_flags |=
4527 TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE; 4571 TSTORM_ETH_CLIENT_CONFIG_VLAN_REMOVAL_ENABLE;
4528 DP(NETIF_MSG_IFUP, "vlan removal enabled\n"); 4572 DP(NETIF_MSG_IFUP, "vlan removal enabled\n");
@@ -4531,7 +4575,7 @@ static void bnx2x_set_client_config(struct bnx2x *bp)
4531 4575
4532 if (bp->flags & TPA_ENABLE_FLAG) { 4576 if (bp->flags & TPA_ENABLE_FLAG) {
4533 tstorm_client.max_sges_for_packet = 4577 tstorm_client.max_sges_for_packet =
4534 BCM_PAGE_ALIGN(tstorm_client.mtu) >> BCM_PAGE_SHIFT; 4578 SGE_PAGE_ALIGN(tstorm_client.mtu) >> SGE_PAGE_SHIFT;
4535 tstorm_client.max_sges_for_packet = 4579 tstorm_client.max_sges_for_packet =
4536 ((tstorm_client.max_sges_for_packet + 4580 ((tstorm_client.max_sges_for_packet +
4537 PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >> 4581 PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >>
@@ -4714,10 +4758,11 @@ static void bnx2x_init_internal_func(struct bnx2x *bp)
4714 bp->e1hov); 4758 bp->e1hov);
4715 } 4759 }
4716 4760
4717 /* Init CQ ring mapping and aggregation size */ 4761 /* Init CQ ring mapping and aggregation size, the FW limit is 8 frags */
4718 max_agg_size = min((u32)(bp->rx_buf_size + 4762 max_agg_size =
4719 8*BCM_PAGE_SIZE*PAGES_PER_SGE), 4763 min((u32)(min((u32)8, (u32)MAX_SKB_FRAGS) *
4720 (u32)0xffff); 4764 SGE_PAGE_SIZE * PAGES_PER_SGE),
4765 (u32)0xffff);
4721 for_each_queue(bp, i) { 4766 for_each_queue(bp, i) {
4722 struct bnx2x_fastpath *fp = &bp->fp[i]; 4767 struct bnx2x_fastpath *fp = &bp->fp[i];
4723 4768
@@ -4785,6 +4830,15 @@ static void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
4785 bnx2x_init_context(bp); 4830 bnx2x_init_context(bp);
4786 bnx2x_init_internal(bp, load_code); 4831 bnx2x_init_internal(bp, load_code);
4787 bnx2x_init_ind_table(bp); 4832 bnx2x_init_ind_table(bp);
4833 bnx2x_stats_init(bp);
4834
4835 /* At this point, we are ready for interrupts */
4836 atomic_set(&bp->intr_sem, 0);
4837
4838 /* flush all before enabling interrupts */
4839 mb();
4840 mmiowb();
4841
4788 bnx2x_int_enable(bp); 4842 bnx2x_int_enable(bp);
4789} 4843}
4790 4844
@@ -5101,12 +5155,21 @@ static void enable_blocks_attention(struct bnx2x *bp)
5101} 5155}
5102 5156
5103 5157
5158static void bnx2x_reset_common(struct bnx2x *bp)
5159{
5160 /* reset_common */
5161 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
5162 0xd3ffff7f);
5163 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, 0x1403);
5164}
5165
5104static int bnx2x_init_common(struct bnx2x *bp) 5166static int bnx2x_init_common(struct bnx2x *bp)
5105{ 5167{
5106 u32 val, i; 5168 u32 val, i;
5107 5169
5108 DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_FUNC(bp)); 5170 DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_FUNC(bp));
5109 5171
5172 bnx2x_reset_common(bp);
5110 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff); 5173 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff);
5111 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 0xfffc); 5174 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 0xfffc);
5112 5175
@@ -5134,7 +5197,6 @@ static int bnx2x_init_common(struct bnx2x *bp)
5134 REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1); 5197 REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1);
5135 REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1); 5198 REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1);
5136 REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1); 5199 REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1);
5137 REG_WR(bp, PXP2_REG_RQ_HC_ENDIAN_M, 1);
5138 5200
5139/* REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */ 5201/* REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */
5140 REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1); 5202 REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1);
@@ -5212,6 +5274,7 @@ static int bnx2x_init_common(struct bnx2x *bp)
5212 } 5274 }
5213 5275
5214 bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END); 5276 bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
5277 REG_WR(bp, PRS_REG_A_PRSU_20, 0xf);
5215 /* set NIC mode */ 5278 /* set NIC mode */
5216 REG_WR(bp, PRS_REG_NIC_MODE, 1); 5279 REG_WR(bp, PRS_REG_NIC_MODE, 1);
5217 if (CHIP_IS_E1H(bp)) 5280 if (CHIP_IS_E1H(bp))
@@ -6087,8 +6150,8 @@ static void bnx2x_netif_start(struct bnx2x *bp)
6087static void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw) 6150static void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw)
6088{ 6151{
6089 bnx2x_int_disable_sync(bp, disable_hw); 6152 bnx2x_int_disable_sync(bp, disable_hw);
6153 bnx2x_napi_disable(bp);
6090 if (netif_running(bp->dev)) { 6154 if (netif_running(bp->dev)) {
6091 bnx2x_napi_disable(bp);
6092 netif_tx_disable(bp->dev); 6155 netif_tx_disable(bp->dev);
6093 bp->dev->trans_start = jiffies; /* prevent tx timeout */ 6156 bp->dev->trans_start = jiffies; /* prevent tx timeout */
6094 } 6157 }
@@ -6108,7 +6171,7 @@ static void bnx2x_set_mac_addr_e1(struct bnx2x *bp, int set)
6108 * multicast 64-127:port0 128-191:port1 6171 * multicast 64-127:port0 128-191:port1
6109 */ 6172 */
6110 config->hdr.length_6b = 2; 6173 config->hdr.length_6b = 2;
6111 config->hdr.offset = port ? 31 : 0; 6174 config->hdr.offset = port ? 32 : 0;
6112 config->hdr.client_id = BP_CL_ID(bp); 6175 config->hdr.client_id = BP_CL_ID(bp);
6113 config->hdr.reserved1 = 0; 6176 config->hdr.reserved1 = 0;
6114 6177
@@ -6272,7 +6335,7 @@ static void bnx2x_set_rx_mode(struct net_device *dev);
6272static int bnx2x_nic_load(struct bnx2x *bp, int load_mode) 6335static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6273{ 6336{
6274 u32 load_code; 6337 u32 load_code;
6275 int i, rc; 6338 int i, rc = 0;
6276#ifdef BNX2X_STOP_ON_ERROR 6339#ifdef BNX2X_STOP_ON_ERROR
6277 if (unlikely(bp->panic)) 6340 if (unlikely(bp->panic))
6278 return -EPERM; 6341 return -EPERM;
@@ -6280,48 +6343,6 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6280 6343
6281 bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD; 6344 bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD;
6282 6345
6283 /* Send LOAD_REQUEST command to MCP
6284 Returns the type of LOAD command:
6285 if it is the first port to be initialized
6286 common blocks should be initialized, otherwise - not
6287 */
6288 if (!BP_NOMCP(bp)) {
6289 load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ);
6290 if (!load_code) {
6291 BNX2X_ERR("MCP response failure, aborting\n");
6292 return -EBUSY;
6293 }
6294 if (load_code == FW_MSG_CODE_DRV_LOAD_REFUSED)
6295 return -EBUSY; /* other port in diagnostic mode */
6296
6297 } else {
6298 int port = BP_PORT(bp);
6299
6300 DP(NETIF_MSG_IFUP, "NO MCP load counts before us %d, %d, %d\n",
6301 load_count[0], load_count[1], load_count[2]);
6302 load_count[0]++;
6303 load_count[1 + port]++;
6304 DP(NETIF_MSG_IFUP, "NO MCP new load counts %d, %d, %d\n",
6305 load_count[0], load_count[1], load_count[2]);
6306 if (load_count[0] == 1)
6307 load_code = FW_MSG_CODE_DRV_LOAD_COMMON;
6308 else if (load_count[1 + port] == 1)
6309 load_code = FW_MSG_CODE_DRV_LOAD_PORT;
6310 else
6311 load_code = FW_MSG_CODE_DRV_LOAD_FUNCTION;
6312 }
6313
6314 if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) ||
6315 (load_code == FW_MSG_CODE_DRV_LOAD_PORT))
6316 bp->port.pmf = 1;
6317 else
6318 bp->port.pmf = 0;
6319 DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf);
6320
6321 /* if we can't use MSI-X we only need one fp,
6322 * so try to enable MSI-X with the requested number of fp's
6323 * and fallback to inta with one fp
6324 */
6325 if (use_inta) { 6346 if (use_inta) {
6326 bp->num_queues = 1; 6347 bp->num_queues = 1;
6327 6348
@@ -6336,7 +6357,15 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6336 else 6357 else
6337 bp->num_queues = 1; 6358 bp->num_queues = 1;
6338 6359
6339 if (bnx2x_enable_msix(bp)) { 6360 DP(NETIF_MSG_IFUP,
6361 "set number of queues to %d\n", bp->num_queues);
6362
6363 /* if we can't use MSI-X we only need one fp,
6364 * so try to enable MSI-X with the requested number of fp's
6365 * and fallback to MSI or legacy INTx with one fp
6366 */
6367 rc = bnx2x_enable_msix(bp);
6368 if (rc) {
6340 /* failed to enable MSI-X */ 6369 /* failed to enable MSI-X */
6341 bp->num_queues = 1; 6370 bp->num_queues = 1;
6342 if (use_multi) 6371 if (use_multi)
@@ -6344,8 +6373,6 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6344 " to enable MSI-X\n"); 6373 " to enable MSI-X\n");
6345 } 6374 }
6346 } 6375 }
6347 DP(NETIF_MSG_IFUP,
6348 "set number of queues to %d\n", bp->num_queues);
6349 6376
6350 if (bnx2x_alloc_mem(bp)) 6377 if (bnx2x_alloc_mem(bp))
6351 return -ENOMEM; 6378 return -ENOMEM;
@@ -6354,30 +6381,85 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6354 bnx2x_fp(bp, i, disable_tpa) = 6381 bnx2x_fp(bp, i, disable_tpa) =
6355 ((bp->flags & TPA_ENABLE_FLAG) == 0); 6382 ((bp->flags & TPA_ENABLE_FLAG) == 0);
6356 6383
6384 for_each_queue(bp, i)
6385 netif_napi_add(bp->dev, &bnx2x_fp(bp, i, napi),
6386 bnx2x_poll, 128);
6387
6388#ifdef BNX2X_STOP_ON_ERROR
6389 for_each_queue(bp, i) {
6390 struct bnx2x_fastpath *fp = &bp->fp[i];
6391
6392 fp->poll_no_work = 0;
6393 fp->poll_calls = 0;
6394 fp->poll_max_calls = 0;
6395 fp->poll_complete = 0;
6396 fp->poll_exit = 0;
6397 }
6398#endif
6399 bnx2x_napi_enable(bp);
6400
6357 if (bp->flags & USING_MSIX_FLAG) { 6401 if (bp->flags & USING_MSIX_FLAG) {
6358 rc = bnx2x_req_msix_irqs(bp); 6402 rc = bnx2x_req_msix_irqs(bp);
6359 if (rc) { 6403 if (rc) {
6360 pci_disable_msix(bp->pdev); 6404 pci_disable_msix(bp->pdev);
6361 goto load_error; 6405 goto load_error1;
6362 } 6406 }
6407 printk(KERN_INFO PFX "%s: using MSI-X\n", bp->dev->name);
6363 } else { 6408 } else {
6364 bnx2x_ack_int(bp); 6409 bnx2x_ack_int(bp);
6365 rc = bnx2x_req_irq(bp); 6410 rc = bnx2x_req_irq(bp);
6366 if (rc) { 6411 if (rc) {
6367 BNX2X_ERR("IRQ request failed, aborting\n"); 6412 BNX2X_ERR("IRQ request failed rc %d, aborting\n", rc);
6368 goto load_error; 6413 goto load_error1;
6369 } 6414 }
6370 } 6415 }
6371 6416
6372 for_each_queue(bp, i) 6417 /* Send LOAD_REQUEST command to MCP
6373 netif_napi_add(bp->dev, &bnx2x_fp(bp, i, napi), 6418 Returns the type of LOAD command:
6374 bnx2x_poll, 128); 6419 if it is the first port to be initialized
6420 common blocks should be initialized, otherwise - not
6421 */
6422 if (!BP_NOMCP(bp)) {
6423 load_code = bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_REQ);
6424 if (!load_code) {
6425 BNX2X_ERR("MCP response failure, aborting\n");
6426 rc = -EBUSY;
6427 goto load_error2;
6428 }
6429 if (load_code == FW_MSG_CODE_DRV_LOAD_REFUSED) {
6430 rc = -EBUSY; /* other port in diagnostic mode */
6431 goto load_error2;
6432 }
6433
6434 } else {
6435 int port = BP_PORT(bp);
6436
6437 DP(NETIF_MSG_IFUP, "NO MCP load counts before us %d, %d, %d\n",
6438 load_count[0], load_count[1], load_count[2]);
6439 load_count[0]++;
6440 load_count[1 + port]++;
6441 DP(NETIF_MSG_IFUP, "NO MCP new load counts %d, %d, %d\n",
6442 load_count[0], load_count[1], load_count[2]);
6443 if (load_count[0] == 1)
6444 load_code = FW_MSG_CODE_DRV_LOAD_COMMON;
6445 else if (load_count[1 + port] == 1)
6446 load_code = FW_MSG_CODE_DRV_LOAD_PORT;
6447 else
6448 load_code = FW_MSG_CODE_DRV_LOAD_FUNCTION;
6449 }
6450
6451 if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) ||
6452 (load_code == FW_MSG_CODE_DRV_LOAD_PORT))
6453 bp->port.pmf = 1;
6454 else
6455 bp->port.pmf = 0;
6456 DP(NETIF_MSG_LINK, "pmf %d\n", bp->port.pmf);
6375 6457
6376 /* Initialize HW */ 6458 /* Initialize HW */
6377 rc = bnx2x_init_hw(bp, load_code); 6459 rc = bnx2x_init_hw(bp, load_code);
6378 if (rc) { 6460 if (rc) {
6379 BNX2X_ERR("HW init failed, aborting\n"); 6461 BNX2X_ERR("HW init failed, aborting\n");
6380 goto load_int_disable; 6462 goto load_error2;
6381 } 6463 }
6382 6464
6383 /* Setup NIC internals and enable interrupts */ 6465 /* Setup NIC internals and enable interrupts */
@@ -6389,25 +6471,16 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6389 if (!load_code) { 6471 if (!load_code) {
6390 BNX2X_ERR("MCP response failure, aborting\n"); 6472 BNX2X_ERR("MCP response failure, aborting\n");
6391 rc = -EBUSY; 6473 rc = -EBUSY;
6392 goto load_rings_free; 6474 goto load_error3;
6393 } 6475 }
6394 } 6476 }
6395 6477
6396 bnx2x_stats_init(bp);
6397
6398 bp->state = BNX2X_STATE_OPENING_WAIT4_PORT; 6478 bp->state = BNX2X_STATE_OPENING_WAIT4_PORT;
6399 6479
6400 /* Enable Rx interrupt handling before sending the ramrod
6401 as it's completed on Rx FP queue */
6402 bnx2x_napi_enable(bp);
6403
6404 /* Enable interrupt handling */
6405 atomic_set(&bp->intr_sem, 0);
6406
6407 rc = bnx2x_setup_leading(bp); 6480 rc = bnx2x_setup_leading(bp);
6408 if (rc) { 6481 if (rc) {
6409 BNX2X_ERR("Setup leading failed!\n"); 6482 BNX2X_ERR("Setup leading failed!\n");
6410 goto load_netif_stop; 6483 goto load_error3;
6411 } 6484 }
6412 6485
6413 if (CHIP_IS_E1H(bp)) 6486 if (CHIP_IS_E1H(bp))
@@ -6420,7 +6493,7 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6420 for_each_nondefault_queue(bp, i) { 6493 for_each_nondefault_queue(bp, i) {
6421 rc = bnx2x_setup_multi(bp, i); 6494 rc = bnx2x_setup_multi(bp, i);
6422 if (rc) 6495 if (rc)
6423 goto load_netif_stop; 6496 goto load_error3;
6424 } 6497 }
6425 6498
6426 if (CHIP_IS_E1(bp)) 6499 if (CHIP_IS_E1(bp))
@@ -6436,18 +6509,18 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6436 case LOAD_NORMAL: 6509 case LOAD_NORMAL:
6437 /* Tx queue should be only reenabled */ 6510 /* Tx queue should be only reenabled */
6438 netif_wake_queue(bp->dev); 6511 netif_wake_queue(bp->dev);
6512 /* Initialize the receive filter. */
6439 bnx2x_set_rx_mode(bp->dev); 6513 bnx2x_set_rx_mode(bp->dev);
6440 break; 6514 break;
6441 6515
6442 case LOAD_OPEN: 6516 case LOAD_OPEN:
6443 netif_start_queue(bp->dev); 6517 netif_start_queue(bp->dev);
6518 /* Initialize the receive filter. */
6444 bnx2x_set_rx_mode(bp->dev); 6519 bnx2x_set_rx_mode(bp->dev);
6445 if (bp->flags & USING_MSIX_FLAG)
6446 printk(KERN_INFO PFX "%s: using MSI-X\n",
6447 bp->dev->name);
6448 break; 6520 break;
6449 6521
6450 case LOAD_DIAG: 6522 case LOAD_DIAG:
6523 /* Initialize the receive filter. */
6451 bnx2x_set_rx_mode(bp->dev); 6524 bnx2x_set_rx_mode(bp->dev);
6452 bp->state = BNX2X_STATE_DIAG; 6525 bp->state = BNX2X_STATE_DIAG;
6453 break; 6526 break;
@@ -6465,20 +6538,25 @@ static int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
6465 6538
6466 return 0; 6539 return 0;
6467 6540
6468load_netif_stop: 6541load_error3:
6469 bnx2x_napi_disable(bp); 6542 bnx2x_int_disable_sync(bp, 1);
6470load_rings_free: 6543 if (!BP_NOMCP(bp)) {
6544 bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP);
6545 bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE);
6546 }
6547 bp->port.pmf = 0;
6471 /* Free SKBs, SGEs, TPA pool and driver internals */ 6548 /* Free SKBs, SGEs, TPA pool and driver internals */
6472 bnx2x_free_skbs(bp); 6549 bnx2x_free_skbs(bp);
6473 for_each_queue(bp, i) 6550 for_each_queue(bp, i)
6474 bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); 6551 bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE);
6475load_int_disable: 6552load_error2:
6476 bnx2x_int_disable_sync(bp, 1);
6477 /* Release IRQs */ 6553 /* Release IRQs */
6478 bnx2x_free_irq(bp); 6554 bnx2x_free_irq(bp);
6479load_error: 6555load_error1:
6556 bnx2x_napi_disable(bp);
6557 for_each_queue(bp, i)
6558 netif_napi_del(&bnx2x_fp(bp, i, napi));
6480 bnx2x_free_mem(bp); 6559 bnx2x_free_mem(bp);
6481 bp->port.pmf = 0;
6482 6560
6483 /* TBD we really need to reset the chip 6561 /* TBD we really need to reset the chip
6484 if we want to recover from this */ 6562 if we want to recover from this */
@@ -6551,6 +6629,7 @@ static int bnx2x_stop_leading(struct bnx2x *bp)
6551 } 6629 }
6552 cnt--; 6630 cnt--;
6553 msleep(1); 6631 msleep(1);
6632 rmb(); /* Refresh the dsb_sp_prod */
6554 } 6633 }
6555 bp->state = BNX2X_STATE_CLOSING_WAIT4_UNLOAD; 6634 bp->state = BNX2X_STATE_CLOSING_WAIT4_UNLOAD;
6556 bp->fp[0].state = BNX2X_FP_STATE_CLOSED; 6635 bp->fp[0].state = BNX2X_FP_STATE_CLOSED;
@@ -6602,14 +6681,6 @@ static void bnx2x_reset_port(struct bnx2x *bp)
6602 /* TODO: Close Doorbell port? */ 6681 /* TODO: Close Doorbell port? */
6603} 6682}
6604 6683
6605static void bnx2x_reset_common(struct bnx2x *bp)
6606{
6607 /* reset_common */
6608 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
6609 0xd3ffff7f);
6610 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_CLEAR, 0x1403);
6611}
6612
6613static void bnx2x_reset_chip(struct bnx2x *bp, u32 reset_code) 6684static void bnx2x_reset_chip(struct bnx2x *bp, u32 reset_code)
6614{ 6685{
6615 DP(BNX2X_MSG_MCP, "function %d reset_code %x\n", 6686 DP(BNX2X_MSG_MCP, "function %d reset_code %x\n",
@@ -6650,20 +6721,22 @@ static int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode)
6650 bnx2x_set_storm_rx_mode(bp); 6721 bnx2x_set_storm_rx_mode(bp);
6651 6722
6652 bnx2x_netif_stop(bp, 1); 6723 bnx2x_netif_stop(bp, 1);
6653 if (!netif_running(bp->dev)) 6724
6654 bnx2x_napi_disable(bp);
6655 del_timer_sync(&bp->timer); 6725 del_timer_sync(&bp->timer);
6656 SHMEM_WR(bp, func_mb[BP_FUNC(bp)].drv_pulse_mb, 6726 SHMEM_WR(bp, func_mb[BP_FUNC(bp)].drv_pulse_mb,
6657 (DRV_PULSE_ALWAYS_ALIVE | bp->fw_drv_pulse_wr_seq)); 6727 (DRV_PULSE_ALWAYS_ALIVE | bp->fw_drv_pulse_wr_seq));
6658 bnx2x_stats_handle(bp, STATS_EVENT_STOP); 6728 bnx2x_stats_handle(bp, STATS_EVENT_STOP);
6659 6729
6730 /* Release IRQs */
6731 bnx2x_free_irq(bp);
6732
6660 /* Wait until tx fast path tasks complete */ 6733 /* Wait until tx fast path tasks complete */
6661 for_each_queue(bp, i) { 6734 for_each_queue(bp, i) {
6662 struct bnx2x_fastpath *fp = &bp->fp[i]; 6735 struct bnx2x_fastpath *fp = &bp->fp[i];
6663 6736
6664 cnt = 1000; 6737 cnt = 1000;
6665 smp_rmb(); 6738 smp_rmb();
6666 while (BNX2X_HAS_TX_WORK(fp)) { 6739 while (bnx2x_has_tx_work_unload(fp)) {
6667 6740
6668 bnx2x_tx_int(fp, 1000); 6741 bnx2x_tx_int(fp, 1000);
6669 if (!cnt) { 6742 if (!cnt) {
@@ -6684,9 +6757,6 @@ static int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode)
6684 /* Give HW time to discard old tx messages */ 6757 /* Give HW time to discard old tx messages */
6685 msleep(1); 6758 msleep(1);
6686 6759
6687 /* Release IRQs */
6688 bnx2x_free_irq(bp);
6689
6690 if (CHIP_IS_E1(bp)) { 6760 if (CHIP_IS_E1(bp)) {
6691 struct mac_configuration_cmd *config = 6761 struct mac_configuration_cmd *config =
6692 bnx2x_sp(bp, mcast_config); 6762 bnx2x_sp(bp, mcast_config);
@@ -6795,6 +6865,8 @@ unload_error:
6795 bnx2x_free_skbs(bp); 6865 bnx2x_free_skbs(bp);
6796 for_each_queue(bp, i) 6866 for_each_queue(bp, i)
6797 bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); 6867 bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE);
6868 for_each_queue(bp, i)
6869 netif_napi_del(&bnx2x_fp(bp, i, napi));
6798 bnx2x_free_mem(bp); 6870 bnx2x_free_mem(bp);
6799 6871
6800 bp->state = BNX2X_STATE_CLOSED; 6872 bp->state = BNX2X_STATE_CLOSED;
@@ -6847,10 +6919,6 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp)
6847 */ 6919 */
6848 bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); 6920 bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
6849 val = REG_RD(bp, DORQ_REG_NORM_CID_OFST); 6921 val = REG_RD(bp, DORQ_REG_NORM_CID_OFST);
6850 if (val == 0x7)
6851 REG_WR(bp, DORQ_REG_NORM_CID_OFST, 0);
6852 bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
6853
6854 if (val == 0x7) { 6922 if (val == 0x7) {
6855 u32 reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS; 6923 u32 reset_code = DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS;
6856 /* save our func */ 6924 /* save our func */
@@ -6858,6 +6926,9 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp)
6858 u32 swap_en; 6926 u32 swap_en;
6859 u32 swap_val; 6927 u32 swap_val;
6860 6928
6929 /* clear the UNDI indication */
6930 REG_WR(bp, DORQ_REG_NORM_CID_OFST, 0);
6931
6861 BNX2X_DEV_INFO("UNDI is active! reset device\n"); 6932 BNX2X_DEV_INFO("UNDI is active! reset device\n");
6862 6933
6863 /* try unload UNDI on port 0 */ 6934 /* try unload UNDI on port 0 */
@@ -6883,6 +6954,9 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp)
6883 bnx2x_fw_command(bp, reset_code); 6954 bnx2x_fw_command(bp, reset_code);
6884 } 6955 }
6885 6956
6957 /* now it's safe to release the lock */
6958 bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
6959
6886 REG_WR(bp, (BP_PORT(bp) ? HC_REG_CONFIG_1 : 6960 REG_WR(bp, (BP_PORT(bp) ? HC_REG_CONFIG_1 :
6887 HC_REG_CONFIG_0), 0x1000); 6961 HC_REG_CONFIG_0), 0x1000);
6888 6962
@@ -6927,7 +7001,9 @@ static void __devinit bnx2x_undi_unload(struct bnx2x *bp)
6927 bp->fw_seq = 7001 bp->fw_seq =
6928 (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) & 7002 (SHMEM_RD(bp, func_mb[bp->func].drv_mb_header) &
6929 DRV_MSG_SEQ_NUMBER_MASK); 7003 DRV_MSG_SEQ_NUMBER_MASK);
6930 } 7004
7005 } else
7006 bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
6931 } 7007 }
6932} 7008}
6933 7009
@@ -6944,7 +7020,7 @@ static void __devinit bnx2x_get_common_hwinfo(struct bnx2x *bp)
6944 id |= ((val & 0xf) << 12); 7020 id |= ((val & 0xf) << 12);
6945 val = REG_RD(bp, MISC_REG_CHIP_METAL); 7021 val = REG_RD(bp, MISC_REG_CHIP_METAL);
6946 id |= ((val & 0xff) << 4); 7022 id |= ((val & 0xff) << 4);
6947 REG_RD(bp, MISC_REG_BOND_ID); 7023 val = REG_RD(bp, MISC_REG_BOND_ID);
6948 id |= (val & 0xf); 7024 id |= (val & 0xf);
6949 bp->common.chip_id = id; 7025 bp->common.chip_id = id;
6950 bp->link_params.chip_id = bp->common.chip_id; 7026 bp->link_params.chip_id = bp->common.chip_id;
@@ -7501,7 +7577,7 @@ static int __devinit bnx2x_init_bp(struct bnx2x *bp)
7501 7577
7502 mutex_init(&bp->port.phy_mutex); 7578 mutex_init(&bp->port.phy_mutex);
7503 7579
7504 INIT_WORK(&bp->sp_task, bnx2x_sp_task); 7580 INIT_DELAYED_WORK(&bp->sp_task, bnx2x_sp_task);
7505 INIT_WORK(&bp->reset_task, bnx2x_reset_task); 7581 INIT_WORK(&bp->reset_task, bnx2x_reset_task);
7506 7582
7507 rc = bnx2x_get_hwinfo(bp); 7583 rc = bnx2x_get_hwinfo(bp);
@@ -8076,6 +8152,9 @@ static int bnx2x_get_eeprom(struct net_device *dev,
8076 struct bnx2x *bp = netdev_priv(dev); 8152 struct bnx2x *bp = netdev_priv(dev);
8077 int rc; 8153 int rc;
8078 8154
8155 if (!netif_running(dev))
8156 return -EAGAIN;
8157
8079 DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n" 8158 DP(BNX2X_MSG_NVM, "ethtool_eeprom: cmd %d\n"
8080 DP_LEVEL " magic 0x%x offset 0x%x (%d) len 0x%x (%d)\n", 8159 DP_LEVEL " magic 0x%x offset 0x%x (%d) len 0x%x (%d)\n",
8081 eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset, 8160 eeprom->cmd, eeprom->magic, eeprom->offset, eeprom->offset,
@@ -8678,18 +8757,17 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up)
8678 8757
8679 if (loopback_mode == BNX2X_MAC_LOOPBACK) { 8758 if (loopback_mode == BNX2X_MAC_LOOPBACK) {
8680 bp->link_params.loopback_mode = LOOPBACK_BMAC; 8759 bp->link_params.loopback_mode = LOOPBACK_BMAC;
8681 bnx2x_acquire_phy_lock(bp);
8682 bnx2x_phy_init(&bp->link_params, &bp->link_vars); 8760 bnx2x_phy_init(&bp->link_params, &bp->link_vars);
8683 bnx2x_release_phy_lock(bp);
8684 8761
8685 } else if (loopback_mode == BNX2X_PHY_LOOPBACK) { 8762 } else if (loopback_mode == BNX2X_PHY_LOOPBACK) {
8763 u16 cnt = 1000;
8686 bp->link_params.loopback_mode = LOOPBACK_XGXS_10; 8764 bp->link_params.loopback_mode = LOOPBACK_XGXS_10;
8687 bnx2x_acquire_phy_lock(bp);
8688 bnx2x_phy_init(&bp->link_params, &bp->link_vars); 8765 bnx2x_phy_init(&bp->link_params, &bp->link_vars);
8689 bnx2x_release_phy_lock(bp);
8690 /* wait until link state is restored */ 8766 /* wait until link state is restored */
8691 bnx2x_wait_for_link(bp, link_up); 8767 if (link_up)
8692 8768 while (cnt-- && bnx2x_test_link(&bp->link_params,
8769 &bp->link_vars))
8770 msleep(10);
8693 } else 8771 } else
8694 return -EINVAL; 8772 return -EINVAL;
8695 8773
@@ -8727,6 +8805,8 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode, u8 link_up)
8727 tx_bd->general_data = ((UNICAST_ADDRESS << 8805 tx_bd->general_data = ((UNICAST_ADDRESS <<
8728 ETH_TX_BD_ETH_ADDR_TYPE_SHIFT) | 1); 8806 ETH_TX_BD_ETH_ADDR_TYPE_SHIFT) | 1);
8729 8807
8808 wmb();
8809
8730 fp->hw_tx_prods->bds_prod = 8810 fp->hw_tx_prods->bds_prod =
8731 cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + 1); 8811 cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + 1);
8732 mb(); /* FW restriction: must not reorder writing nbd and packets */ 8812 mb(); /* FW restriction: must not reorder writing nbd and packets */
@@ -8778,7 +8858,6 @@ test_loopback_rx_exit:
8778 /* Update producers */ 8858 /* Update producers */
8779 bnx2x_update_rx_prod(bp, fp, fp->rx_bd_prod, fp->rx_comp_prod, 8859 bnx2x_update_rx_prod(bp, fp, fp->rx_bd_prod, fp->rx_comp_prod,
8780 fp->rx_sge_prod); 8860 fp->rx_sge_prod);
8781 mmiowb(); /* keep prod updates ordered */
8782 8861
8783test_loopback_exit: 8862test_loopback_exit:
8784 bp->link_params.loopback_mode = LOOPBACK_NONE; 8863 bp->link_params.loopback_mode = LOOPBACK_NONE;
@@ -8794,6 +8873,7 @@ static int bnx2x_test_loopback(struct bnx2x *bp, u8 link_up)
8794 return BNX2X_LOOPBACK_FAILED; 8873 return BNX2X_LOOPBACK_FAILED;
8795 8874
8796 bnx2x_netif_stop(bp, 1); 8875 bnx2x_netif_stop(bp, 1);
8876 bnx2x_acquire_phy_lock(bp);
8797 8877
8798 if (bnx2x_run_loopback(bp, BNX2X_MAC_LOOPBACK, link_up)) { 8878 if (bnx2x_run_loopback(bp, BNX2X_MAC_LOOPBACK, link_up)) {
8799 DP(NETIF_MSG_PROBE, "MAC loopback failed\n"); 8879 DP(NETIF_MSG_PROBE, "MAC loopback failed\n");
@@ -8805,6 +8885,7 @@ static int bnx2x_test_loopback(struct bnx2x *bp, u8 link_up)
8805 rc |= BNX2X_PHY_LOOPBACK_FAILED; 8885 rc |= BNX2X_PHY_LOOPBACK_FAILED;
8806 } 8886 }
8807 8887
8888 bnx2x_release_phy_lock(bp);
8808 bnx2x_netif_start(bp); 8889 bnx2x_netif_start(bp);
8809 8890
8810 return rc; 8891 return rc;
@@ -8878,7 +8959,10 @@ static int bnx2x_test_intr(struct bnx2x *bp)
8878 return -ENODEV; 8959 return -ENODEV;
8879 8960
8880 config->hdr.length_6b = 0; 8961 config->hdr.length_6b = 0;
8881 config->hdr.offset = 0; 8962 if (CHIP_IS_E1(bp))
8963 config->hdr.offset = (BP_PORT(bp) ? 32 : 0);
8964 else
8965 config->hdr.offset = BP_FUNC(bp);
8882 config->hdr.client_id = BP_CL_ID(bp); 8966 config->hdr.client_id = BP_CL_ID(bp);
8883 config->hdr.reserved1 = 0; 8967 config->hdr.reserved1 = 0;
8884 8968
@@ -9243,6 +9327,18 @@ static int bnx2x_set_power_state(struct bnx2x *bp, pci_power_t state)
9243 return 0; 9327 return 0;
9244} 9328}
9245 9329
9330static inline int bnx2x_has_rx_work(struct bnx2x_fastpath *fp)
9331{
9332 u16 rx_cons_sb;
9333
9334 /* Tell compiler that status block fields can change */
9335 barrier();
9336 rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb);
9337 if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT)
9338 rx_cons_sb++;
9339 return (fp->rx_comp_cons != rx_cons_sb);
9340}
9341
9246/* 9342/*
9247 * net_device service functions 9343 * net_device service functions
9248 */ 9344 */
@@ -9253,7 +9349,6 @@ static int bnx2x_poll(struct napi_struct *napi, int budget)
9253 napi); 9349 napi);
9254 struct bnx2x *bp = fp->bp; 9350 struct bnx2x *bp = fp->bp;
9255 int work_done = 0; 9351 int work_done = 0;
9256 u16 rx_cons_sb;
9257 9352
9258#ifdef BNX2X_STOP_ON_ERROR 9353#ifdef BNX2X_STOP_ON_ERROR
9259 if (unlikely(bp->panic)) 9354 if (unlikely(bp->panic))
@@ -9266,19 +9361,12 @@ static int bnx2x_poll(struct napi_struct *napi, int budget)
9266 9361
9267 bnx2x_update_fpsb_idx(fp); 9362 bnx2x_update_fpsb_idx(fp);
9268 9363
9269 if (BNX2X_HAS_TX_WORK(fp)) 9364 if (bnx2x_has_tx_work(fp))
9270 bnx2x_tx_int(fp, budget); 9365 bnx2x_tx_int(fp, budget);
9271 9366
9272 rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb); 9367 if (bnx2x_has_rx_work(fp))
9273 if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT)
9274 rx_cons_sb++;
9275 if (BNX2X_HAS_RX_WORK(fp))
9276 work_done = bnx2x_rx_int(fp, budget); 9368 work_done = bnx2x_rx_int(fp, budget);
9277
9278 rmb(); /* BNX2X_HAS_WORK() reads the status block */ 9369 rmb(); /* BNX2X_HAS_WORK() reads the status block */
9279 rx_cons_sb = le16_to_cpu(*fp->rx_cons_sb);
9280 if ((rx_cons_sb & MAX_RCQ_DESC_CNT) == MAX_RCQ_DESC_CNT)
9281 rx_cons_sb++;
9282 9370
9283 /* must not complete if we consumed full budget */ 9371 /* must not complete if we consumed full budget */
9284 if ((work_done < budget) && !BNX2X_HAS_WORK(fp)) { 9372 if ((work_done < budget) && !BNX2X_HAS_WORK(fp)) {
@@ -9389,6 +9477,7 @@ static inline u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb)
9389 return rc; 9477 return rc;
9390} 9478}
9391 9479
9480#if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3)
9392/* check if packet requires linearization (packet is too fragmented) */ 9481/* check if packet requires linearization (packet is too fragmented) */
9393static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb, 9482static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb,
9394 u32 xmit_type) 9483 u32 xmit_type)
@@ -9466,6 +9555,7 @@ exit_lbl:
9466 9555
9467 return to_copy; 9556 return to_copy;
9468} 9557}
9558#endif
9469 9559
9470/* called with netif_tx_lock 9560/* called with netif_tx_lock
9471 * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call 9561 * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call
@@ -9506,6 +9596,7 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
9506 skb->ip_summed, skb->protocol, ipv6_hdr(skb)->nexthdr, 9596 skb->ip_summed, skb->protocol, ipv6_hdr(skb)->nexthdr,
9507 ip_hdr(skb)->protocol, skb_shinfo(skb)->gso_type, xmit_type); 9597 ip_hdr(skb)->protocol, skb_shinfo(skb)->gso_type, xmit_type);
9508 9598
9599#if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3)
9509 /* First, check if we need to linearize the skb 9600 /* First, check if we need to linearize the skb
9510 (due to FW restrictions) */ 9601 (due to FW restrictions) */
9511 if (bnx2x_pkt_req_lin(bp, skb, xmit_type)) { 9602 if (bnx2x_pkt_req_lin(bp, skb, xmit_type)) {
@@ -9518,6 +9609,7 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
9518 return NETDEV_TX_OK; 9609 return NETDEV_TX_OK;
9519 } 9610 }
9520 } 9611 }
9612#endif
9521 9613
9522 /* 9614 /*
9523 Please read carefully. First we use one BD which we mark as start, 9615 Please read carefully. First we use one BD which we mark as start,
@@ -9549,11 +9641,14 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
9549 "sending pkt %u @%p next_idx %u bd %u @%p\n", 9641 "sending pkt %u @%p next_idx %u bd %u @%p\n",
9550 pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_bd); 9642 pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_bd);
9551 9643
9552 if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb)) { 9644#ifdef BCM_VLAN
9645 if ((bp->vlgrp != NULL) && vlan_tx_tag_present(skb) &&
9646 (bp->flags & HW_VLAN_TX_FLAG)) {
9553 tx_bd->vlan = cpu_to_le16(vlan_tx_tag_get(skb)); 9647 tx_bd->vlan = cpu_to_le16(vlan_tx_tag_get(skb));
9554 tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_VLAN_TAG; 9648 tx_bd->bd_flags.as_bitfield |= ETH_TX_BD_FLAGS_VLAN_TAG;
9555 vlan_off += 4; 9649 vlan_off += 4;
9556 } else 9650 } else
9651#endif
9557 tx_bd->vlan = cpu_to_le16(pkt_prod); 9652 tx_bd->vlan = cpu_to_le16(pkt_prod);
9558 9653
9559 if (xmit_type) { 9654 if (xmit_type) {
@@ -9705,6 +9800,15 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
9705 9800
9706 DP(NETIF_MSG_TX_QUEUED, "doorbell: nbd %d bd %u\n", nbd, bd_prod); 9801 DP(NETIF_MSG_TX_QUEUED, "doorbell: nbd %d bd %u\n", nbd, bd_prod);
9707 9802
9803 /*
9804 * Make sure that the BD data is updated before updating the producer
9805 * since FW might read the BD right after the producer is updated.
9806 * This is only applicable for weak-ordered memory model archs such
9807 * as IA-64. The following barrier is also mandatory since FW will
9808 * assumes packets must have BDs.
9809 */
9810 wmb();
9811
9708 fp->hw_tx_prods->bds_prod = 9812 fp->hw_tx_prods->bds_prod =
9709 cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + nbd); 9813 cpu_to_le16(le16_to_cpu(fp->hw_tx_prods->bds_prod) + nbd);
9710 mb(); /* FW restriction: must not reorder writing nbd and packets */ 9814 mb(); /* FW restriction: must not reorder writing nbd and packets */
@@ -9718,6 +9822,9 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
9718 dev->trans_start = jiffies; 9822 dev->trans_start = jiffies;
9719 9823
9720 if (unlikely(bnx2x_tx_avail(fp) < MAX_SKB_FRAGS + 3)) { 9824 if (unlikely(bnx2x_tx_avail(fp) < MAX_SKB_FRAGS + 3)) {
9825 /* We want bnx2x_tx_int to "see" the updated tx_bd_prod
9826 if we put Tx into XOFF state. */
9827 smp_mb();
9721 netif_stop_queue(dev); 9828 netif_stop_queue(dev);
9722 bp->eth_stats.driver_xoff++; 9829 bp->eth_stats.driver_xoff++;
9723 if (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3) 9830 if (bnx2x_tx_avail(fp) >= MAX_SKB_FRAGS + 3)
@@ -9733,6 +9840,8 @@ static int bnx2x_open(struct net_device *dev)
9733{ 9840{
9734 struct bnx2x *bp = netdev_priv(dev); 9841 struct bnx2x *bp = netdev_priv(dev);
9735 9842
9843 netif_carrier_off(dev);
9844
9736 bnx2x_set_power_state(bp, PCI_D0); 9845 bnx2x_set_power_state(bp, PCI_D0);
9737 9846
9738 return bnx2x_nic_load(bp, LOAD_OPEN); 9847 return bnx2x_nic_load(bp, LOAD_OPEN);
@@ -9816,7 +9925,7 @@ static void bnx2x_set_rx_mode(struct net_device *dev)
9816 for (; i < old; i++) { 9925 for (; i < old; i++) {
9817 if (CAM_IS_INVALID(config-> 9926 if (CAM_IS_INVALID(config->
9818 config_table[i])) { 9927 config_table[i])) {
9819 i--; /* already invalidated */ 9928 /* already invalidated */
9820 break; 9929 break;
9821 } 9930 }
9822 /* invalidate */ 9931 /* invalidate */
@@ -9987,6 +10096,16 @@ static void bnx2x_vlan_rx_register(struct net_device *dev,
9987 struct bnx2x *bp = netdev_priv(dev); 10096 struct bnx2x *bp = netdev_priv(dev);
9988 10097
9989 bp->vlgrp = vlgrp; 10098 bp->vlgrp = vlgrp;
10099
10100 /* Set flags according to the required capabilities */
10101 bp->flags &= ~(HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG);
10102
10103 if (dev->features & NETIF_F_HW_VLAN_TX)
10104 bp->flags |= HW_VLAN_TX_FLAG;
10105
10106 if (dev->features & NETIF_F_HW_VLAN_RX)
10107 bp->flags |= HW_VLAN_RX_FLAG;
10108
9990 if (netif_running(dev)) 10109 if (netif_running(dev))
9991 bnx2x_set_client_config(bp); 10110 bnx2x_set_client_config(bp);
9992} 10111}
@@ -10143,6 +10262,7 @@ static int __devinit bnx2x_init_dev(struct pci_dev *pdev,
10143 dev->features |= NETIF_F_HIGHDMA; 10262 dev->features |= NETIF_F_HIGHDMA;
10144#ifdef BCM_VLAN 10263#ifdef BCM_VLAN
10145 dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX); 10264 dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
10265 bp->flags |= (HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG);
10146#endif 10266#endif
10147 dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN); 10267 dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
10148 dev->features |= NETIF_F_TSO6; 10268 dev->features |= NETIF_F_TSO6;
@@ -10215,22 +10335,18 @@ static int __devinit bnx2x_init_one(struct pci_dev *pdev,
10215 return rc; 10335 return rc;
10216 } 10336 }
10217 10337
10218 rc = register_netdev(dev);
10219 if (rc) {
10220 dev_err(&pdev->dev, "Cannot register net device\n");
10221 goto init_one_exit;
10222 }
10223
10224 pci_set_drvdata(pdev, dev); 10338 pci_set_drvdata(pdev, dev);
10225 10339
10226 rc = bnx2x_init_bp(bp); 10340 rc = bnx2x_init_bp(bp);
10341 if (rc)
10342 goto init_one_exit;
10343
10344 rc = register_netdev(dev);
10227 if (rc) { 10345 if (rc) {
10228 unregister_netdev(dev); 10346 dev_err(&pdev->dev, "Cannot register net device\n");
10229 goto init_one_exit; 10347 goto init_one_exit;
10230 } 10348 }
10231 10349
10232 netif_carrier_off(dev);
10233
10234 bp->common.name = board_info[ent->driver_data].name; 10350 bp->common.name = board_info[ent->driver_data].name;
10235 printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx," 10351 printk(KERN_INFO "%s: %s (%c%d) PCI-E x%d %s found at mem %lx,"
10236 " IRQ %d, ", dev->name, bp->common.name, 10352 " IRQ %d, ", dev->name, bp->common.name,
@@ -10378,6 +10494,8 @@ static int bnx2x_eeh_nic_unload(struct bnx2x *bp)
10378 bnx2x_free_skbs(bp); 10494 bnx2x_free_skbs(bp);
10379 for_each_queue(bp, i) 10495 for_each_queue(bp, i)
10380 bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE); 10496 bnx2x_free_rx_sge_range(bp, bp->fp + i, NUM_RX_SGE);
10497 for_each_queue(bp, i)
10498 netif_napi_del(&bnx2x_fp(bp, i, napi));
10381 bnx2x_free_mem(bp); 10499 bnx2x_free_mem(bp);
10382 10500
10383 bp->state = BNX2X_STATE_CLOSED; 10501 bp->state = BNX2X_STATE_CLOSED;
@@ -10519,12 +10637,20 @@ static struct pci_driver bnx2x_pci_driver = {
10519 10637
10520static int __init bnx2x_init(void) 10638static int __init bnx2x_init(void)
10521{ 10639{
10640 bnx2x_wq = create_singlethread_workqueue("bnx2x");
10641 if (bnx2x_wq == NULL) {
10642 printk(KERN_ERR PFX "Cannot create workqueue\n");
10643 return -ENOMEM;
10644 }
10645
10522 return pci_register_driver(&bnx2x_pci_driver); 10646 return pci_register_driver(&bnx2x_pci_driver);
10523} 10647}
10524 10648
10525static void __exit bnx2x_cleanup(void) 10649static void __exit bnx2x_cleanup(void)
10526{ 10650{
10527 pci_unregister_driver(&bnx2x_pci_driver); 10651 pci_unregister_driver(&bnx2x_pci_driver);
10652
10653 destroy_workqueue(bnx2x_wq);
10528} 10654}
10529 10655
10530module_init(bnx2x_init); 10656module_init(bnx2x_init);
diff --git a/drivers/net/bnx2x_reg.h b/drivers/net/bnx2x_reg.h
index a67b0c358ae4..d084e5fc4b51 100644
--- a/drivers/net/bnx2x_reg.h
+++ b/drivers/net/bnx2x_reg.h
@@ -1,6 +1,6 @@
1/* bnx2x_reg.h: Broadcom Everest network driver. 1/* bnx2x_reg.h: Broadcom Everest network driver.
2 * 2 *
3 * Copyright (c) 2007-2008 Broadcom Corporation 3 * Copyright (c) 2007-2009 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c
index 14f9fb3e8795..379a1324db4e 100644
--- a/drivers/net/cxgb3/sge.c
+++ b/drivers/net/cxgb3/sge.c
@@ -2104,6 +2104,7 @@ static void init_lro_mgr(struct sge_qset *qs, struct net_lro_mgr *lro_mgr)
2104{ 2104{
2105 lro_mgr->dev = qs->netdev; 2105 lro_mgr->dev = qs->netdev;
2106 lro_mgr->features = LRO_F_NAPI; 2106 lro_mgr->features = LRO_F_NAPI;
2107 lro_mgr->frag_align_pad = NET_IP_ALIGN;
2107 lro_mgr->ip_summed = CHECKSUM_UNNECESSARY; 2108 lro_mgr->ip_summed = CHECKSUM_UNNECESSARY;
2108 lro_mgr->ip_summed_aggr = CHECKSUM_UNNECESSARY; 2109 lro_mgr->ip_summed_aggr = CHECKSUM_UNNECESSARY;
2109 lro_mgr->max_desc = T3_MAX_LRO_SES; 2110 lro_mgr->max_desc = T3_MAX_LRO_SES;
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c
index cf43ee743b3c..0890162953e9 100644
--- a/drivers/net/e1000e/82571.c
+++ b/drivers/net/e1000e/82571.c
@@ -981,11 +981,15 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
981 ew32(PBA_ECC, reg); 981 ew32(PBA_ECC, reg);
982 } 982 }
983 983
984 /* PCI-Ex Control Register */ 984 /* PCI-Ex Control Registers */
985 if (hw->mac.type == e1000_82574) { 985 if (hw->mac.type == e1000_82574) {
986 reg = er32(GCR); 986 reg = er32(GCR);
987 reg |= (1 << 22); 987 reg |= (1 << 22);
988 ew32(GCR, reg); 988 ew32(GCR, reg);
989
990 reg = er32(GCR2);
991 reg |= 1;
992 ew32(GCR2, reg);
989 } 993 }
990 994
991 return; 995 return;
diff --git a/drivers/net/e1000e/hw.h b/drivers/net/e1000e/hw.h
index f25e961c6b3b..2d4ce0492df0 100644
--- a/drivers/net/e1000e/hw.h
+++ b/drivers/net/e1000e/hw.h
@@ -206,6 +206,7 @@ enum e1e_registers {
206 E1000_MANC2H = 0x05860, /* Management Control To Host - RW */ 206 E1000_MANC2H = 0x05860, /* Management Control To Host - RW */
207 E1000_SW_FW_SYNC = 0x05B5C, /* Software-Firmware Synchronization - RW */ 207 E1000_SW_FW_SYNC = 0x05B5C, /* Software-Firmware Synchronization - RW */
208 E1000_GCR = 0x05B00, /* PCI-Ex Control */ 208 E1000_GCR = 0x05B00, /* PCI-Ex Control */
209 E1000_GCR2 = 0x05B64, /* PCI-Ex Control #2 */
209 E1000_FACTPS = 0x05B30, /* Function Active and Power State to MNG */ 210 E1000_FACTPS = 0x05B30, /* Function Active and Power State to MNG */
210 E1000_SWSM = 0x05B50, /* SW Semaphore */ 211 E1000_SWSM = 0x05B50, /* SW Semaphore */
211 E1000_FWSM = 0x05B54, /* FW Semaphore */ 212 E1000_FWSM = 0x05B54, /* FW Semaphore */
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index e3131ea629cd..dfe92264e825 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -132,7 +132,7 @@ void ehea_dump(void *adr, int len, char *msg)
132 int x; 132 int x;
133 unsigned char *deb = adr; 133 unsigned char *deb = adr;
134 for (x = 0; x < len; x += 16) { 134 for (x = 0; x < len; x += 16) {
135 printk(DRV_NAME " %s adr=%p ofs=%04x %016lx %016lx\n", msg, 135 printk(DRV_NAME " %s adr=%p ofs=%04x %016llx %016llx\n", msg,
136 deb, x, *((u64 *)&deb[0]), *((u64 *)&deb[8])); 136 deb, x, *((u64 *)&deb[0]), *((u64 *)&deb[8]));
137 deb += 16; 137 deb += 16;
138 } 138 }
@@ -883,7 +883,7 @@ static irqreturn_t ehea_qp_aff_irq_handler(int irq, void *param)
883 883
884 while (eqe) { 884 while (eqe) {
885 qp_token = EHEA_BMASK_GET(EHEA_EQE_QP_TOKEN, eqe->entry); 885 qp_token = EHEA_BMASK_GET(EHEA_EQE_QP_TOKEN, eqe->entry);
886 ehea_error("QP aff_err: entry=0x%lx, token=0x%x", 886 ehea_error("QP aff_err: entry=0x%llx, token=0x%x",
887 eqe->entry, qp_token); 887 eqe->entry, qp_token);
888 888
889 qp = port->port_res[qp_token].qp; 889 qp = port->port_res[qp_token].qp;
@@ -1159,7 +1159,7 @@ static void ehea_parse_eqe(struct ehea_adapter *adapter, u64 eqe)
1159 netif_stop_queue(port->netdev); 1159 netif_stop_queue(port->netdev);
1160 break; 1160 break;
1161 default: 1161 default:
1162 ehea_error("unknown event code %x, eqe=0x%lX", ec, eqe); 1162 ehea_error("unknown event code %x, eqe=0x%llX", ec, eqe);
1163 break; 1163 break;
1164 } 1164 }
1165} 1165}
@@ -1971,7 +1971,7 @@ static void ehea_set_multicast_list(struct net_device *dev)
1971 } 1971 }
1972 1972
1973 if (dev->mc_count > port->adapter->max_mc_mac) { 1973 if (dev->mc_count > port->adapter->max_mc_mac) {
1974 ehea_info("Mcast registration limit reached (0x%lx). " 1974 ehea_info("Mcast registration limit reached (0x%llx). "
1975 "Use ALLMULTI!", 1975 "Use ALLMULTI!",
1976 port->adapter->max_mc_mac); 1976 port->adapter->max_mc_mac);
1977 goto out; 1977 goto out;
diff --git a/drivers/net/ehea/ehea_qmr.c b/drivers/net/ehea/ehea_qmr.c
index 225c692b5d99..49d766ebbcf4 100644
--- a/drivers/net/ehea/ehea_qmr.c
+++ b/drivers/net/ehea/ehea_qmr.c
@@ -168,7 +168,7 @@ struct ehea_cq *ehea_create_cq(struct ehea_adapter *adapter,
168 cq->fw_handle, rpage, 1); 168 cq->fw_handle, rpage, 1);
169 if (hret < H_SUCCESS) { 169 if (hret < H_SUCCESS) {
170 ehea_error("register_rpage_cq failed ehea_cq=%p " 170 ehea_error("register_rpage_cq failed ehea_cq=%p "
171 "hret=%lx counter=%i act_pages=%i", 171 "hret=%llx counter=%i act_pages=%i",
172 cq, hret, counter, cq->attr.nr_pages); 172 cq, hret, counter, cq->attr.nr_pages);
173 goto out_kill_hwq; 173 goto out_kill_hwq;
174 } 174 }
@@ -178,13 +178,13 @@ struct ehea_cq *ehea_create_cq(struct ehea_adapter *adapter,
178 178
179 if ((hret != H_SUCCESS) || (vpage)) { 179 if ((hret != H_SUCCESS) || (vpage)) {
180 ehea_error("registration of pages not " 180 ehea_error("registration of pages not "
181 "complete hret=%lx\n", hret); 181 "complete hret=%llx\n", hret);
182 goto out_kill_hwq; 182 goto out_kill_hwq;
183 } 183 }
184 } else { 184 } else {
185 if (hret != H_PAGE_REGISTERED) { 185 if (hret != H_PAGE_REGISTERED) {
186 ehea_error("CQ: registration of page failed " 186 ehea_error("CQ: registration of page failed "
187 "hret=%lx\n", hret); 187 "hret=%llx\n", hret);
188 goto out_kill_hwq; 188 goto out_kill_hwq;
189 } 189 }
190 } 190 }
@@ -986,15 +986,15 @@ void print_error_data(u64 *data)
986 length = EHEA_PAGESIZE; 986 length = EHEA_PAGESIZE;
987 987
988 if (type == 0x8) /* Queue Pair */ 988 if (type == 0x8) /* Queue Pair */
989 ehea_error("QP (resource=%lX) state: AER=0x%lX, AERR=0x%lX, " 989 ehea_error("QP (resource=%llX) state: AER=0x%llX, AERR=0x%llX, "
990 "port=%lX", resource, data[6], data[12], data[22]); 990 "port=%llX", resource, data[6], data[12], data[22]);
991 991
992 if (type == 0x4) /* Completion Queue */ 992 if (type == 0x4) /* Completion Queue */
993 ehea_error("CQ (resource=%lX) state: AER=0x%lX", resource, 993 ehea_error("CQ (resource=%llX) state: AER=0x%llX", resource,
994 data[6]); 994 data[6]);
995 995
996 if (type == 0x3) /* Event Queue */ 996 if (type == 0x3) /* Event Queue */
997 ehea_error("EQ (resource=%lX) state: AER=0x%lX", resource, 997 ehea_error("EQ (resource=%llX) state: AER=0x%llX", resource,
998 data[6]); 998 data[6]);
999 999
1000 ehea_dump(data, length, "error data"); 1000 ehea_dump(data, length, "error data");
@@ -1016,11 +1016,11 @@ void ehea_error_data(struct ehea_adapter *adapter, u64 res_handle)
1016 rblock); 1016 rblock);
1017 1017
1018 if (ret == H_R_STATE) 1018 if (ret == H_R_STATE)
1019 ehea_error("No error data is available: %lX.", res_handle); 1019 ehea_error("No error data is available: %llX.", res_handle);
1020 else if (ret == H_SUCCESS) 1020 else if (ret == H_SUCCESS)
1021 print_error_data(rblock); 1021 print_error_data(rblock);
1022 else 1022 else
1023 ehea_error("Error data could not be fetched: %lX", res_handle); 1023 ehea_error("Error data could not be fetched: %llX", res_handle);
1024 1024
1025 kfree(rblock); 1025 kfree(rblock);
1026} 1026}
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c
index 4e6a9195fe5f..ce900e54d8d1 100644
--- a/drivers/net/fs_enet/fs_enet-main.c
+++ b/drivers/net/fs_enet/fs_enet-main.c
@@ -795,6 +795,7 @@ static int fs_enet_open(struct net_device *dev)
795 795
796 err = fs_init_phy(dev); 796 err = fs_init_phy(dev);
797 if (err) { 797 if (err) {
798 free_irq(fep->interrupt, dev);
798 if (fep->fpi->use_napi) 799 if (fep->fpi->use_napi)
799 napi_disable(&fep->napi); 800 napi_disable(&fep->napi);
800 return err; 801 return err;
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index efcbeb6c8673..3f7eab42aef1 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -1423,15 +1423,11 @@ static void gfar_vlan_rx_register(struct net_device *dev,
1423{ 1423{
1424 struct gfar_private *priv = netdev_priv(dev); 1424 struct gfar_private *priv = netdev_priv(dev);
1425 unsigned long flags; 1425 unsigned long flags;
1426 struct vlan_group *old_grp;
1427 u32 tempval; 1426 u32 tempval;
1428 1427
1429 spin_lock_irqsave(&priv->rxlock, flags); 1428 spin_lock_irqsave(&priv->rxlock, flags);
1430 1429
1431 old_grp = priv->vlgrp; 1430 priv->vlgrp = grp;
1432
1433 if (old_grp == grp)
1434 return;
1435 1431
1436 if (grp) { 1432 if (grp) {
1437 /* Enable VLAN tag insertion */ 1433 /* Enable VLAN tag insertion */
@@ -1622,10 +1618,18 @@ static int gfar_clean_tx_ring(struct net_device *dev)
1622static void gfar_schedule_cleanup(struct net_device *dev) 1618static void gfar_schedule_cleanup(struct net_device *dev)
1623{ 1619{
1624 struct gfar_private *priv = netdev_priv(dev); 1620 struct gfar_private *priv = netdev_priv(dev);
1621 unsigned long flags;
1622
1623 spin_lock_irqsave(&priv->txlock, flags);
1624 spin_lock(&priv->rxlock);
1625
1625 if (netif_rx_schedule_prep(&priv->napi)) { 1626 if (netif_rx_schedule_prep(&priv->napi)) {
1626 gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED); 1627 gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED);
1627 __netif_rx_schedule(&priv->napi); 1628 __netif_rx_schedule(&priv->napi);
1628 } 1629 }
1630
1631 spin_unlock(&priv->rxlock);
1632 spin_unlock_irqrestore(&priv->txlock, flags);
1629} 1633}
1630 1634
1631/* Interrupt Handler for Transmit complete */ 1635/* Interrupt Handler for Transmit complete */
diff --git a/drivers/net/ibm_newemac/mal.c b/drivers/net/ibm_newemac/mal.c
index ecf9798987fa..2a2fc17b2878 100644
--- a/drivers/net/ibm_newemac/mal.c
+++ b/drivers/net/ibm_newemac/mal.c
@@ -613,7 +613,9 @@ static int __devinit mal_probe(struct of_device *ofdev,
613 INIT_LIST_HEAD(&mal->list); 613 INIT_LIST_HEAD(&mal->list);
614 spin_lock_init(&mal->lock); 614 spin_lock_init(&mal->lock);
615 615
616 netif_napi_add(NULL, &mal->napi, mal_poll, 616 init_dummy_netdev(&mal->dummy_dev);
617
618 netif_napi_add(&mal->dummy_dev, &mal->napi, mal_poll,
617 CONFIG_IBM_NEW_EMAC_POLL_WEIGHT); 619 CONFIG_IBM_NEW_EMAC_POLL_WEIGHT);
618 620
619 /* Load power-on reset defaults */ 621 /* Load power-on reset defaults */
diff --git a/drivers/net/ibm_newemac/mal.h b/drivers/net/ibm_newemac/mal.h
index 2f0a87360844..9ededfbf0726 100644
--- a/drivers/net/ibm_newemac/mal.h
+++ b/drivers/net/ibm_newemac/mal.h
@@ -214,6 +214,8 @@ struct mal_instance {
214 int index; 214 int index;
215 spinlock_t lock; 215 spinlock_t lock;
216 216
217 struct net_device dummy_dev;
218
217 unsigned int features; 219 unsigned int features;
218}; 220};
219 221
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
index ca3bb9f7321b..dfa6348ac1dc 100644
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -602,7 +602,7 @@ static int ibmveth_open(struct net_device *netdev)
602 602
603 if(lpar_rc != H_SUCCESS) { 603 if(lpar_rc != H_SUCCESS) {
604 ibmveth_error_printk("h_register_logical_lan failed with %ld\n", lpar_rc); 604 ibmveth_error_printk("h_register_logical_lan failed with %ld\n", lpar_rc);
605 ibmveth_error_printk("buffer TCE:0x%lx filter TCE:0x%lx rxq desc:0x%lx MAC:0x%lx\n", 605 ibmveth_error_printk("buffer TCE:0x%llx filter TCE:0x%llx rxq desc:0x%llx MAC:0x%llx\n",
606 adapter->buffer_list_dma, 606 adapter->buffer_list_dma,
607 adapter->filter_list_dma, 607 adapter->filter_list_dma,
608 rxq_desc.desc, 608 rxq_desc.desc,
@@ -1378,13 +1378,13 @@ static int ibmveth_show(struct seq_file *seq, void *v)
1378 seq_printf(seq, "Firmware MAC: %pM\n", firmware_mac); 1378 seq_printf(seq, "Firmware MAC: %pM\n", firmware_mac);
1379 1379
1380 seq_printf(seq, "\nAdapter Statistics:\n"); 1380 seq_printf(seq, "\nAdapter Statistics:\n");
1381 seq_printf(seq, " TX: vio_map_single failres: %ld\n", adapter->tx_map_failed); 1381 seq_printf(seq, " TX: vio_map_single failres: %lld\n", adapter->tx_map_failed);
1382 seq_printf(seq, " send failures: %ld\n", adapter->tx_send_failed); 1382 seq_printf(seq, " send failures: %lld\n", adapter->tx_send_failed);
1383 seq_printf(seq, " RX: replenish task cycles: %ld\n", adapter->replenish_task_cycles); 1383 seq_printf(seq, " RX: replenish task cycles: %lld\n", adapter->replenish_task_cycles);
1384 seq_printf(seq, " alloc_skb_failures: %ld\n", adapter->replenish_no_mem); 1384 seq_printf(seq, " alloc_skb_failures: %lld\n", adapter->replenish_no_mem);
1385 seq_printf(seq, " add buffer failures: %ld\n", adapter->replenish_add_buff_failure); 1385 seq_printf(seq, " add buffer failures: %lld\n", adapter->replenish_add_buff_failure);
1386 seq_printf(seq, " invalid buffers: %ld\n", adapter->rx_invalid_buffer); 1386 seq_printf(seq, " invalid buffers: %lld\n", adapter->rx_invalid_buffer);
1387 seq_printf(seq, " no buffers: %ld\n", adapter->rx_no_buffer); 1387 seq_printf(seq, " no buffers: %lld\n", adapter->rx_no_buffer);
1388 1388
1389 return 0; 1389 return 0;
1390} 1390}
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index 29118f58a141..3a22dc41b656 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -1073,7 +1073,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
1073{ 1073{
1074 unsigned int i; 1074 unsigned int i;
1075 int ret; 1075 int ret;
1076 char stir421x_fw_name[11]; 1076 char stir421x_fw_name[12];
1077 const struct firmware *fw; 1077 const struct firmware *fw;
1078 const unsigned char *fw_version_ptr; /* pointer to version string */ 1078 const unsigned char *fw_version_ptr; /* pointer to version string */
1079 unsigned long fw_version = 0; 1079 unsigned long fw_version = 0;
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c
index c7457f97259d..cb793c2bade2 100644
--- a/drivers/net/iseries_veth.c
+++ b/drivers/net/iseries_veth.c
@@ -429,7 +429,7 @@ SIMPLE_PORT_ATTR(promiscuous);
429SIMPLE_PORT_ATTR(num_mcast); 429SIMPLE_PORT_ATTR(num_mcast);
430CUSTOM_PORT_ATTR(lpar_map, "0x%X\n", port->lpar_map); 430CUSTOM_PORT_ATTR(lpar_map, "0x%X\n", port->lpar_map);
431CUSTOM_PORT_ATTR(stopped_map, "0x%X\n", port->stopped_map); 431CUSTOM_PORT_ATTR(stopped_map, "0x%X\n", port->stopped_map);
432CUSTOM_PORT_ATTR(mac_addr, "0x%lX\n", port->mac_addr); 432CUSTOM_PORT_ATTR(mac_addr, "0x%llX\n", port->mac_addr);
433 433
434#define GET_PORT_ATTR(_name) (&veth_port_attr_##_name.attr) 434#define GET_PORT_ATTR(_name) (&veth_port_attr_##_name.attr)
435static struct attribute *veth_port_default_attrs[] = { 435static struct attribute *veth_port_default_attrs[] = {
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index acef3c65cd2c..d2f4d5f508b7 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -318,6 +318,9 @@ static void ixgbe_update_rx_dca(struct ixgbe_adapter *adapter,
318 rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu); 318 rxctrl |= dca3_get_tag(&adapter->pdev->dev, cpu);
319 rxctrl |= IXGBE_DCA_RXCTRL_DESC_DCA_EN; 319 rxctrl |= IXGBE_DCA_RXCTRL_DESC_DCA_EN;
320 rxctrl |= IXGBE_DCA_RXCTRL_HEAD_DCA_EN; 320 rxctrl |= IXGBE_DCA_RXCTRL_HEAD_DCA_EN;
321 rxctrl &= ~(IXGBE_DCA_RXCTRL_DESC_RRO_EN);
322 rxctrl &= ~(IXGBE_DCA_RXCTRL_DESC_WRO_EN |
323 IXGBE_DCA_RXCTRL_DESC_HSRO_EN);
321 IXGBE_WRITE_REG(&adapter->hw, IXGBE_DCA_RXCTRL(q), rxctrl); 324 IXGBE_WRITE_REG(&adapter->hw, IXGBE_DCA_RXCTRL(q), rxctrl);
322 rx_ring->cpu = cpu; 325 rx_ring->cpu = cpu;
323 } 326 }
@@ -1741,6 +1744,32 @@ static void ixgbe_configure_rx(struct ixgbe_adapter *adapter)
1741 IXGBE_WRITE_REG(hw, IXGBE_RXCSUM, rxcsum); 1744 IXGBE_WRITE_REG(hw, IXGBE_RXCSUM, rxcsum);
1742} 1745}
1743 1746
1747static void ixgbe_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
1748{
1749 struct ixgbe_adapter *adapter = netdev_priv(netdev);
1750 struct ixgbe_hw *hw = &adapter->hw;
1751
1752 /* add VID to filter table */
1753 hw->mac.ops.set_vfta(&adapter->hw, vid, 0, true);
1754}
1755
1756static void ixgbe_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
1757{
1758 struct ixgbe_adapter *adapter = netdev_priv(netdev);
1759 struct ixgbe_hw *hw = &adapter->hw;
1760
1761 if (!test_bit(__IXGBE_DOWN, &adapter->state))
1762 ixgbe_irq_disable(adapter);
1763
1764 vlan_group_set_device(adapter->vlgrp, vid, NULL);
1765
1766 if (!test_bit(__IXGBE_DOWN, &adapter->state))
1767 ixgbe_irq_enable(adapter);
1768
1769 /* remove VID from filter table */
1770 hw->mac.ops.set_vfta(&adapter->hw, vid, 0, false);
1771}
1772
1744static void ixgbe_vlan_rx_register(struct net_device *netdev, 1773static void ixgbe_vlan_rx_register(struct net_device *netdev,
1745 struct vlan_group *grp) 1774 struct vlan_group *grp)
1746{ 1775{
@@ -1760,6 +1789,7 @@ static void ixgbe_vlan_rx_register(struct net_device *netdev,
1760 ctrl |= IXGBE_VLNCTRL_VME; 1789 ctrl |= IXGBE_VLNCTRL_VME;
1761 ctrl &= ~IXGBE_VLNCTRL_CFIEN; 1790 ctrl &= ~IXGBE_VLNCTRL_CFIEN;
1762 IXGBE_WRITE_REG(&adapter->hw, IXGBE_VLNCTRL, ctrl); 1791 IXGBE_WRITE_REG(&adapter->hw, IXGBE_VLNCTRL, ctrl);
1792 ixgbe_vlan_rx_add_vid(netdev, 0);
1763 1793
1764 if (grp) { 1794 if (grp) {
1765 /* enable VLAN tag insert/strip */ 1795 /* enable VLAN tag insert/strip */
@@ -1773,32 +1803,6 @@ static void ixgbe_vlan_rx_register(struct net_device *netdev,
1773 ixgbe_irq_enable(adapter); 1803 ixgbe_irq_enable(adapter);
1774} 1804}
1775 1805
1776static void ixgbe_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
1777{
1778 struct ixgbe_adapter *adapter = netdev_priv(netdev);
1779 struct ixgbe_hw *hw = &adapter->hw;
1780
1781 /* add VID to filter table */
1782 hw->mac.ops.set_vfta(&adapter->hw, vid, 0, true);
1783}
1784
1785static void ixgbe_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
1786{
1787 struct ixgbe_adapter *adapter = netdev_priv(netdev);
1788 struct ixgbe_hw *hw = &adapter->hw;
1789
1790 if (!test_bit(__IXGBE_DOWN, &adapter->state))
1791 ixgbe_irq_disable(adapter);
1792
1793 vlan_group_set_device(adapter->vlgrp, vid, NULL);
1794
1795 if (!test_bit(__IXGBE_DOWN, &adapter->state))
1796 ixgbe_irq_enable(adapter);
1797
1798 /* remove VID from filter table */
1799 hw->mac.ops.set_vfta(&adapter->hw, vid, 0, false);
1800}
1801
1802static void ixgbe_restore_vlan(struct ixgbe_adapter *adapter) 1806static void ixgbe_restore_vlan(struct ixgbe_adapter *adapter)
1803{ 1807{
1804 ixgbe_vlan_rx_register(adapter->netdev, adapter->vlgrp); 1808 ixgbe_vlan_rx_register(adapter->netdev, adapter->vlgrp);
@@ -2074,6 +2078,9 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter)
2074 2078
2075 ixgbe_irq_enable(adapter); 2079 ixgbe_irq_enable(adapter);
2076 2080
2081 /* enable transmits */
2082 netif_tx_start_all_queues(netdev);
2083
2077 /* bring the link up in the watchdog, this could race with our first 2084 /* bring the link up in the watchdog, this could race with our first
2078 * link up interrupt but shouldn't be a problem */ 2085 * link up interrupt but shouldn't be a problem */
2079 adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE; 2086 adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE;
@@ -3475,7 +3482,6 @@ static void ixgbe_watchdog_task(struct work_struct *work)
3475 (FLOW_TX ? "TX" : "None")))); 3482 (FLOW_TX ? "TX" : "None"))));
3476 3483
3477 netif_carrier_on(netdev); 3484 netif_carrier_on(netdev);
3478 netif_tx_wake_all_queues(netdev);
3479 } else { 3485 } else {
3480 /* Force detection of hung controller */ 3486 /* Force detection of hung controller */
3481 adapter->detect_tx_hung = true; 3487 adapter->detect_tx_hung = true;
@@ -3487,7 +3493,6 @@ static void ixgbe_watchdog_task(struct work_struct *work)
3487 printk(KERN_INFO "ixgbe: %s NIC Link is Down\n", 3493 printk(KERN_INFO "ixgbe: %s NIC Link is Down\n",
3488 netdev->name); 3494 netdev->name);
3489 netif_carrier_off(netdev); 3495 netif_carrier_off(netdev);
3490 netif_tx_stop_all_queues(netdev);
3491 } 3496 }
3492 } 3497 }
3493 3498
@@ -4218,7 +4223,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
4218 } 4223 }
4219 4224
4220 netif_carrier_off(netdev); 4225 netif_carrier_off(netdev);
4221 netif_tx_stop_all_queues(netdev);
4222 4226
4223 strcpy(netdev->name, "eth%d"); 4227 strcpy(netdev->name, "eth%d");
4224 err = register_netdev(netdev); 4228 err = register_netdev(netdev);
diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/ixgbe/ixgbe_type.h
index 83a11ff9ffd1..f011c57c9205 100644
--- a/drivers/net/ixgbe/ixgbe_type.h
+++ b/drivers/net/ixgbe/ixgbe_type.h
@@ -404,6 +404,9 @@
404#define IXGBE_DCA_RXCTRL_DESC_DCA_EN (1 << 5) /* DCA Rx Desc enable */ 404#define IXGBE_DCA_RXCTRL_DESC_DCA_EN (1 << 5) /* DCA Rx Desc enable */
405#define IXGBE_DCA_RXCTRL_HEAD_DCA_EN (1 << 6) /* DCA Rx Desc header enable */ 405#define IXGBE_DCA_RXCTRL_HEAD_DCA_EN (1 << 6) /* DCA Rx Desc header enable */
406#define IXGBE_DCA_RXCTRL_DATA_DCA_EN (1 << 7) /* DCA Rx Desc payload enable */ 406#define IXGBE_DCA_RXCTRL_DATA_DCA_EN (1 << 7) /* DCA Rx Desc payload enable */
407#define IXGBE_DCA_RXCTRL_DESC_RRO_EN (1 << 9) /* DCA Rx rd Desc Relax Order */
408#define IXGBE_DCA_RXCTRL_DESC_WRO_EN (1 << 13) /* DCA Rx wr Desc Relax Order */
409#define IXGBE_DCA_RXCTRL_DESC_HSRO_EN (1 << 15) /* DCA Rx Split Header RO */
407 410
408#define IXGBE_DCA_TXCTRL_CPUID_MASK 0x0000001F /* Tx CPUID Mask */ 411#define IXGBE_DCA_TXCTRL_CPUID_MASK 0x0000001F /* Tx CPUID Mask */
409#define IXGBE_DCA_TXCTRL_DESC_DCA_EN (1 << 5) /* DCA Tx Desc enable */ 412#define IXGBE_DCA_TXCTRL_DESC_DCA_EN (1 << 5) /* DCA Tx Desc enable */
diff --git a/drivers/net/korina.c b/drivers/net/korina.c
index 4a5580c1126a..75010cac76ac 100644
--- a/drivers/net/korina.c
+++ b/drivers/net/korina.c
@@ -84,7 +84,10 @@
84#define KORINA_NUM_RDS 64 /* number of receive descriptors */ 84#define KORINA_NUM_RDS 64 /* number of receive descriptors */
85#define KORINA_NUM_TDS 64 /* number of transmit descriptors */ 85#define KORINA_NUM_TDS 64 /* number of transmit descriptors */
86 86
87#define KORINA_RBSIZE 536 /* size of one resource buffer = Ether MTU */ 87/* KORINA_RBSIZE is the hardware's default maximum receive
88 * frame size in bytes. Having this hardcoded means that there
89 * is no support for MTU sizes greater than 1500. */
90#define KORINA_RBSIZE 1536 /* size of one resource buffer = Ether MTU */
88#define KORINA_RDS_MASK (KORINA_NUM_RDS - 1) 91#define KORINA_RDS_MASK (KORINA_NUM_RDS - 1)
89#define KORINA_TDS_MASK (KORINA_NUM_TDS - 1) 92#define KORINA_TDS_MASK (KORINA_NUM_TDS - 1)
90#define RD_RING_SIZE (KORINA_NUM_RDS * sizeof(struct dma_desc)) 93#define RD_RING_SIZE (KORINA_NUM_RDS * sizeof(struct dma_desc))
@@ -196,7 +199,7 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev)
196 struct korina_private *lp = netdev_priv(dev); 199 struct korina_private *lp = netdev_priv(dev);
197 unsigned long flags; 200 unsigned long flags;
198 u32 length; 201 u32 length;
199 u32 chain_index; 202 u32 chain_prev, chain_next;
200 struct dma_desc *td; 203 struct dma_desc *td;
201 204
202 spin_lock_irqsave(&lp->lock, flags); 205 spin_lock_irqsave(&lp->lock, flags);
@@ -228,8 +231,8 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev)
228 /* Setup the transmit descriptor. */ 231 /* Setup the transmit descriptor. */
229 dma_cache_inv((u32) td, sizeof(*td)); 232 dma_cache_inv((u32) td, sizeof(*td));
230 td->ca = CPHYSADDR(skb->data); 233 td->ca = CPHYSADDR(skb->data);
231 chain_index = (lp->tx_chain_tail - 1) & 234 chain_prev = (lp->tx_chain_tail - 1) & KORINA_TDS_MASK;
232 KORINA_TDS_MASK; 235 chain_next = (lp->tx_chain_tail + 1) & KORINA_TDS_MASK;
233 236
234 if (readl(&(lp->tx_dma_regs->dmandptr)) == 0) { 237 if (readl(&(lp->tx_dma_regs->dmandptr)) == 0) {
235 if (lp->tx_chain_status == desc_empty) { 238 if (lp->tx_chain_status == desc_empty) {
@@ -237,7 +240,7 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev)
237 td->control = DMA_COUNT(length) | 240 td->control = DMA_COUNT(length) |
238 DMA_DESC_COF | DMA_DESC_IOF; 241 DMA_DESC_COF | DMA_DESC_IOF;
239 /* Move tail */ 242 /* Move tail */
240 lp->tx_chain_tail = chain_index; 243 lp->tx_chain_tail = chain_next;
241 /* Write to NDPTR */ 244 /* Write to NDPTR */
242 writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), 245 writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]),
243 &lp->tx_dma_regs->dmandptr); 246 &lp->tx_dma_regs->dmandptr);
@@ -248,12 +251,12 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev)
248 td->control = DMA_COUNT(length) | 251 td->control = DMA_COUNT(length) |
249 DMA_DESC_COF | DMA_DESC_IOF; 252 DMA_DESC_COF | DMA_DESC_IOF;
250 /* Link to prev */ 253 /* Link to prev */
251 lp->td_ring[chain_index].control &= 254 lp->td_ring[chain_prev].control &=
252 ~DMA_DESC_COF; 255 ~DMA_DESC_COF;
253 /* Link to prev */ 256 /* Link to prev */
254 lp->td_ring[chain_index].link = CPHYSADDR(td); 257 lp->td_ring[chain_prev].link = CPHYSADDR(td);
255 /* Move tail */ 258 /* Move tail */
256 lp->tx_chain_tail = chain_index; 259 lp->tx_chain_tail = chain_next;
257 /* Write to NDPTR */ 260 /* Write to NDPTR */
258 writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), 261 writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]),
259 &(lp->tx_dma_regs->dmandptr)); 262 &(lp->tx_dma_regs->dmandptr));
@@ -267,17 +270,16 @@ static int korina_send_packet(struct sk_buff *skb, struct net_device *dev)
267 td->control = DMA_COUNT(length) | 270 td->control = DMA_COUNT(length) |
268 DMA_DESC_COF | DMA_DESC_IOF; 271 DMA_DESC_COF | DMA_DESC_IOF;
269 /* Move tail */ 272 /* Move tail */
270 lp->tx_chain_tail = chain_index; 273 lp->tx_chain_tail = chain_next;
271 lp->tx_chain_status = desc_filled; 274 lp->tx_chain_status = desc_filled;
272 netif_stop_queue(dev);
273 } else { 275 } else {
274 /* Update tail */ 276 /* Update tail */
275 td->control = DMA_COUNT(length) | 277 td->control = DMA_COUNT(length) |
276 DMA_DESC_COF | DMA_DESC_IOF; 278 DMA_DESC_COF | DMA_DESC_IOF;
277 lp->td_ring[chain_index].control &= 279 lp->td_ring[chain_prev].control &=
278 ~DMA_DESC_COF; 280 ~DMA_DESC_COF;
279 lp->td_ring[chain_index].link = CPHYSADDR(td); 281 lp->td_ring[chain_prev].link = CPHYSADDR(td);
280 lp->tx_chain_tail = chain_index; 282 lp->tx_chain_tail = chain_next;
281 } 283 }
282 } 284 }
283 dma_cache_wback((u32) td, sizeof(*td)); 285 dma_cache_wback((u32) td, sizeof(*td));
@@ -327,13 +329,13 @@ static irqreturn_t korina_rx_dma_interrupt(int irq, void *dev_id)
327 329
328 dmas = readl(&lp->rx_dma_regs->dmas); 330 dmas = readl(&lp->rx_dma_regs->dmas);
329 if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) { 331 if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) {
330 netif_rx_schedule_prep(&lp->napi);
331
332 dmasm = readl(&lp->rx_dma_regs->dmasm); 332 dmasm = readl(&lp->rx_dma_regs->dmasm);
333 writel(dmasm | (DMA_STAT_DONE | 333 writel(dmasm | (DMA_STAT_DONE |
334 DMA_STAT_HALT | DMA_STAT_ERR), 334 DMA_STAT_HALT | DMA_STAT_ERR),
335 &lp->rx_dma_regs->dmasm); 335 &lp->rx_dma_regs->dmasm);
336 336
337 netif_rx_schedule(&lp->napi);
338
337 if (dmas & DMA_STAT_ERR) 339 if (dmas & DMA_STAT_ERR)
338 printk(KERN_ERR DRV_NAME "%s: DMA error\n", dev->name); 340 printk(KERN_ERR DRV_NAME "%s: DMA error\n", dev->name);
339 341
@@ -350,15 +352,20 @@ static int korina_rx(struct net_device *dev, int limit)
350 struct dma_desc *rd = &lp->rd_ring[lp->rx_next_done]; 352 struct dma_desc *rd = &lp->rd_ring[lp->rx_next_done];
351 struct sk_buff *skb, *skb_new; 353 struct sk_buff *skb, *skb_new;
352 u8 *pkt_buf; 354 u8 *pkt_buf;
353 u32 devcs, pkt_len, dmas, rx_free_desc; 355 u32 devcs, pkt_len, dmas;
354 int count; 356 int count;
355 357
356 dma_cache_inv((u32)rd, sizeof(*rd)); 358 dma_cache_inv((u32)rd, sizeof(*rd));
357 359
358 for (count = 0; count < limit; count++) { 360 for (count = 0; count < limit; count++) {
361 skb = lp->rx_skb[lp->rx_next_done];
362 skb_new = NULL;
359 363
360 devcs = rd->devcs; 364 devcs = rd->devcs;
361 365
366 if ((KORINA_RBSIZE - (u32)DMA_COUNT(rd->control)) == 0)
367 break;
368
362 /* Update statistics counters */ 369 /* Update statistics counters */
363 if (devcs & ETH_RX_CRC) 370 if (devcs & ETH_RX_CRC)
364 dev->stats.rx_crc_errors++; 371 dev->stats.rx_crc_errors++;
@@ -381,63 +388,58 @@ static int korina_rx(struct net_device *dev, int limit)
381 * in Rc32434 (errata ref #077) */ 388 * in Rc32434 (errata ref #077) */
382 dev->stats.rx_errors++; 389 dev->stats.rx_errors++;
383 dev->stats.rx_dropped++; 390 dev->stats.rx_dropped++;
384 } 391 } else if ((devcs & ETH_RX_ROK)) {
385
386 while ((rx_free_desc = KORINA_RBSIZE - (u32)DMA_COUNT(rd->control)) != 0) {
387 /* init the var. used for the later
388 * operations within the while loop */
389 skb_new = NULL;
390 pkt_len = RCVPKT_LENGTH(devcs); 392 pkt_len = RCVPKT_LENGTH(devcs);
391 skb = lp->rx_skb[lp->rx_next_done]; 393
392 394 /* must be the (first and) last
393 if ((devcs & ETH_RX_ROK)) { 395 * descriptor then */
394 /* must be the (first and) last 396 pkt_buf = (u8 *)lp->rx_skb[lp->rx_next_done]->data;
395 * descriptor then */ 397
396 pkt_buf = (u8 *)lp->rx_skb[lp->rx_next_done]->data; 398 /* invalidate the cache */
397 399 dma_cache_inv((unsigned long)pkt_buf, pkt_len - 4);
398 /* invalidate the cache */ 400
399 dma_cache_inv((unsigned long)pkt_buf, pkt_len - 4); 401 /* Malloc up new buffer. */
400 402 skb_new = netdev_alloc_skb(dev, KORINA_RBSIZE + 2);
401 /* Malloc up new buffer. */ 403
402 skb_new = netdev_alloc_skb(dev, KORINA_RBSIZE + 2); 404 if (!skb_new)
403 405 break;
404 if (!skb_new) 406 /* Do not count the CRC */
405 break; 407 skb_put(skb, pkt_len - 4);
406 /* Do not count the CRC */ 408 skb->protocol = eth_type_trans(skb, dev);
407 skb_put(skb, pkt_len - 4); 409
408 skb->protocol = eth_type_trans(skb, dev); 410 /* Pass the packet to upper layers */
409 411 netif_receive_skb(skb);
410 /* Pass the packet to upper layers */ 412 dev->stats.rx_packets++;
411 netif_receive_skb(skb); 413 dev->stats.rx_bytes += pkt_len;
412 dev->stats.rx_packets++; 414
413 dev->stats.rx_bytes += pkt_len; 415 /* Update the mcast stats */
414 416 if (devcs & ETH_RX_MP)
415 /* Update the mcast stats */ 417 dev->stats.multicast++;
416 if (devcs & ETH_RX_MP) 418
417 dev->stats.multicast++; 419 /* 16 bit align */
418 420 skb_reserve(skb_new, 2);
419 lp->rx_skb[lp->rx_next_done] = skb_new; 421
420 } 422 lp->rx_skb[lp->rx_next_done] = skb_new;
421
422 rd->devcs = 0;
423
424 /* Restore descriptor's curr_addr */
425 if (skb_new)
426 rd->ca = CPHYSADDR(skb_new->data);
427 else
428 rd->ca = CPHYSADDR(skb->data);
429
430 rd->control = DMA_COUNT(KORINA_RBSIZE) |
431 DMA_DESC_COD | DMA_DESC_IOD;
432 lp->rd_ring[(lp->rx_next_done - 1) &
433 KORINA_RDS_MASK].control &=
434 ~DMA_DESC_COD;
435
436 lp->rx_next_done = (lp->rx_next_done + 1) & KORINA_RDS_MASK;
437 dma_cache_wback((u32)rd, sizeof(*rd));
438 rd = &lp->rd_ring[lp->rx_next_done];
439 writel(~DMA_STAT_DONE, &lp->rx_dma_regs->dmas);
440 } 423 }
424
425 rd->devcs = 0;
426
427 /* Restore descriptor's curr_addr */
428 if (skb_new)
429 rd->ca = CPHYSADDR(skb_new->data);
430 else
431 rd->ca = CPHYSADDR(skb->data);
432
433 rd->control = DMA_COUNT(KORINA_RBSIZE) |
434 DMA_DESC_COD | DMA_DESC_IOD;
435 lp->rd_ring[(lp->rx_next_done - 1) &
436 KORINA_RDS_MASK].control &=
437 ~DMA_DESC_COD;
438
439 lp->rx_next_done = (lp->rx_next_done + 1) & KORINA_RDS_MASK;
440 dma_cache_wback((u32)rd, sizeof(*rd));
441 rd = &lp->rd_ring[lp->rx_next_done];
442 writel(~DMA_STAT_DONE, &lp->rx_dma_regs->dmas);
441 } 443 }
442 444
443 dmas = readl(&lp->rx_dma_regs->dmas); 445 dmas = readl(&lp->rx_dma_regs->dmas);
@@ -623,12 +625,12 @@ korina_tx_dma_interrupt(int irq, void *dev_id)
623 dmas = readl(&lp->tx_dma_regs->dmas); 625 dmas = readl(&lp->tx_dma_regs->dmas);
624 626
625 if (dmas & (DMA_STAT_FINI | DMA_STAT_ERR)) { 627 if (dmas & (DMA_STAT_FINI | DMA_STAT_ERR)) {
626 korina_tx(dev);
627
628 dmasm = readl(&lp->tx_dma_regs->dmasm); 628 dmasm = readl(&lp->tx_dma_regs->dmasm);
629 writel(dmasm | (DMA_STAT_FINI | DMA_STAT_ERR), 629 writel(dmasm | (DMA_STAT_FINI | DMA_STAT_ERR),
630 &lp->tx_dma_regs->dmasm); 630 &lp->tx_dma_regs->dmasm);
631 631
632 korina_tx(dev);
633
632 if (lp->tx_chain_status == desc_filled && 634 if (lp->tx_chain_status == desc_filled &&
633 (readl(&(lp->tx_dma_regs->dmandptr)) == 0)) { 635 (readl(&(lp->tx_dma_regs->dmandptr)) == 0)) {
634 writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]), 636 writel(CPHYSADDR(&lp->td_ring[lp->tx_chain_head]),
@@ -741,6 +743,7 @@ static struct ethtool_ops netdev_ethtool_ops = {
741static void korina_alloc_ring(struct net_device *dev) 743static void korina_alloc_ring(struct net_device *dev)
742{ 744{
743 struct korina_private *lp = netdev_priv(dev); 745 struct korina_private *lp = netdev_priv(dev);
746 struct sk_buff *skb;
744 int i; 747 int i;
745 748
746 /* Initialize the transmit descriptors */ 749 /* Initialize the transmit descriptors */
@@ -756,8 +759,6 @@ static void korina_alloc_ring(struct net_device *dev)
756 759
757 /* Initialize the receive descriptors */ 760 /* Initialize the receive descriptors */
758 for (i = 0; i < KORINA_NUM_RDS; i++) { 761 for (i = 0; i < KORINA_NUM_RDS; i++) {
759 struct sk_buff *skb = lp->rx_skb[i];
760
761 skb = dev_alloc_skb(KORINA_RBSIZE + 2); 762 skb = dev_alloc_skb(KORINA_RBSIZE + 2);
762 if (!skb) 763 if (!skb)
763 break; 764 break;
@@ -770,11 +771,12 @@ static void korina_alloc_ring(struct net_device *dev)
770 lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[i+1]); 771 lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[i+1]);
771 } 772 }
772 773
773 /* loop back */ 774 /* loop back receive descriptors, so the last
774 lp->rd_ring[i].link = CPHYSADDR(&lp->rd_ring[0]); 775 * descriptor points to the first one */
775 lp->rx_next_done = 0; 776 lp->rd_ring[i - 1].link = CPHYSADDR(&lp->rd_ring[0]);
777 lp->rd_ring[i - 1].control |= DMA_DESC_COD;
776 778
777 lp->rd_ring[i].control |= DMA_DESC_COD; 779 lp->rx_next_done = 0;
778 lp->rx_chain_head = 0; 780 lp->rx_chain_head = 0;
779 lp->rx_chain_tail = 0; 781 lp->rx_chain_tail = 0;
780 lp->rx_chain_status = desc_empty; 782 lp->rx_chain_status = desc_empty;
@@ -901,6 +903,8 @@ static int korina_restart(struct net_device *dev)
901 903
902 korina_free_ring(dev); 904 korina_free_ring(dev);
903 905
906 napi_disable(&lp->napi);
907
904 ret = korina_init(dev); 908 ret = korina_init(dev);
905 if (ret < 0) { 909 if (ret < 0) {
906 printk(KERN_ERR DRV_NAME "%s: cannot restart device\n", 910 printk(KERN_ERR DRV_NAME "%s: cannot restart device\n",
@@ -999,14 +1003,14 @@ static int korina_open(struct net_device *dev)
999 * that handles the Done Finished 1003 * that handles the Done Finished
1000 * Ovr and Und Events */ 1004 * Ovr and Und Events */
1001 ret = request_irq(lp->rx_irq, &korina_rx_dma_interrupt, 1005 ret = request_irq(lp->rx_irq, &korina_rx_dma_interrupt,
1002 IRQF_SHARED | IRQF_DISABLED, "Korina ethernet Rx", dev); 1006 IRQF_DISABLED, "Korina ethernet Rx", dev);
1003 if (ret < 0) { 1007 if (ret < 0) {
1004 printk(KERN_ERR DRV_NAME "%s: unable to get Rx DMA IRQ %d\n", 1008 printk(KERN_ERR DRV_NAME "%s: unable to get Rx DMA IRQ %d\n",
1005 dev->name, lp->rx_irq); 1009 dev->name, lp->rx_irq);
1006 goto err_release; 1010 goto err_release;
1007 } 1011 }
1008 ret = request_irq(lp->tx_irq, &korina_tx_dma_interrupt, 1012 ret = request_irq(lp->tx_irq, &korina_tx_dma_interrupt,
1009 IRQF_SHARED | IRQF_DISABLED, "Korina ethernet Tx", dev); 1013 IRQF_DISABLED, "Korina ethernet Tx", dev);
1010 if (ret < 0) { 1014 if (ret < 0) {
1011 printk(KERN_ERR DRV_NAME "%s: unable to get Tx DMA IRQ %d\n", 1015 printk(KERN_ERR DRV_NAME "%s: unable to get Tx DMA IRQ %d\n",
1012 dev->name, lp->tx_irq); 1016 dev->name, lp->tx_irq);
@@ -1015,7 +1019,7 @@ static int korina_open(struct net_device *dev)
1015 1019
1016 /* Install handler for overrun error. */ 1020 /* Install handler for overrun error. */
1017 ret = request_irq(lp->ovr_irq, &korina_ovr_interrupt, 1021 ret = request_irq(lp->ovr_irq, &korina_ovr_interrupt,
1018 IRQF_SHARED | IRQF_DISABLED, "Ethernet Overflow", dev); 1022 IRQF_DISABLED, "Ethernet Overflow", dev);
1019 if (ret < 0) { 1023 if (ret < 0) {
1020 printk(KERN_ERR DRV_NAME"%s: unable to get OVR IRQ %d\n", 1024 printk(KERN_ERR DRV_NAME"%s: unable to get OVR IRQ %d\n",
1021 dev->name, lp->ovr_irq); 1025 dev->name, lp->ovr_irq);
@@ -1024,7 +1028,7 @@ static int korina_open(struct net_device *dev)
1024 1028
1025 /* Install handler for underflow error. */ 1029 /* Install handler for underflow error. */
1026 ret = request_irq(lp->und_irq, &korina_und_interrupt, 1030 ret = request_irq(lp->und_irq, &korina_und_interrupt,
1027 IRQF_SHARED | IRQF_DISABLED, "Ethernet Underflow", dev); 1031 IRQF_DISABLED, "Ethernet Underflow", dev);
1028 if (ret < 0) { 1032 if (ret < 0) {
1029 printk(KERN_ERR DRV_NAME "%s: unable to get UND IRQ %d\n", 1033 printk(KERN_ERR DRV_NAME "%s: unable to get UND IRQ %d\n",
1030 dev->name, lp->und_irq); 1034 dev->name, lp->und_irq);
@@ -1067,6 +1071,8 @@ static int korina_close(struct net_device *dev)
1067 1071
1068 korina_free_ring(dev); 1072 korina_free_ring(dev);
1069 1073
1074 napi_disable(&lp->napi);
1075
1070 free_irq(lp->rx_irq, dev); 1076 free_irq(lp->rx_irq, dev);
1071 free_irq(lp->tx_irq, dev); 1077 free_irq(lp->tx_irq, dev);
1072 free_irq(lp->ovr_irq, dev); 1078 free_irq(lp->ovr_irq, dev);
@@ -1089,7 +1095,6 @@ static int korina_probe(struct platform_device *pdev)
1089 return -ENOMEM; 1095 return -ENOMEM;
1090 } 1096 }
1091 SET_NETDEV_DEV(dev, &pdev->dev); 1097 SET_NETDEV_DEV(dev, &pdev->dev);
1092 platform_set_drvdata(pdev, dev);
1093 lp = netdev_priv(dev); 1098 lp = netdev_priv(dev);
1094 1099
1095 bif->dev = dev; 1100 bif->dev = dev;
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index a04da4ecaa88..f6c4936e2fa8 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -321,6 +321,10 @@ static void macb_tx(struct macb *bp)
321 printk(KERN_ERR "%s: TX underrun, resetting buffers\n", 321 printk(KERN_ERR "%s: TX underrun, resetting buffers\n",
322 bp->dev->name); 322 bp->dev->name);
323 323
324 /* Transfer ongoing, disable transmitter, to avoid confusion */
325 if (status & MACB_BIT(TGO))
326 macb_writel(bp, NCR, macb_readl(bp, NCR) & ~MACB_BIT(TE));
327
324 head = bp->tx_head; 328 head = bp->tx_head;
325 329
326 /*Mark all the buffer as used to avoid sending a lost buffer*/ 330 /*Mark all the buffer as used to avoid sending a lost buffer*/
@@ -343,6 +347,10 @@ static void macb_tx(struct macb *bp)
343 } 347 }
344 348
345 bp->tx_head = bp->tx_tail = 0; 349 bp->tx_head = bp->tx_tail = 0;
350
351 /* Enable the transmitter again */
352 if (status & MACB_BIT(TGO))
353 macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TE));
346 } 354 }
347 355
348 if (!(status & MACB_BIT(COMP))) 356 if (!(status & MACB_BIT(COMP)))
diff --git a/drivers/net/mlx4/profile.c b/drivers/net/mlx4/profile.c
index 919fb9eb1b62..cebdf3243ca1 100644
--- a/drivers/net/mlx4/profile.c
+++ b/drivers/net/mlx4/profile.c
@@ -107,9 +107,9 @@ u64 mlx4_make_profile(struct mlx4_dev *dev,
107 profile[MLX4_RES_AUXC].num = request->num_qp; 107 profile[MLX4_RES_AUXC].num = request->num_qp;
108 profile[MLX4_RES_SRQ].num = request->num_srq; 108 profile[MLX4_RES_SRQ].num = request->num_srq;
109 profile[MLX4_RES_CQ].num = request->num_cq; 109 profile[MLX4_RES_CQ].num = request->num_cq;
110 profile[MLX4_RES_EQ].num = min(dev_cap->max_eqs, 110 profile[MLX4_RES_EQ].num = min_t(unsigned, dev_cap->max_eqs,
111 dev_cap->reserved_eqs + 111 dev_cap->reserved_eqs +
112 num_possible_cpus() + 1); 112 num_possible_cpus() + 1);
113 profile[MLX4_RES_DMPT].num = request->num_mpt; 113 profile[MLX4_RES_DMPT].num = request->num_mpt;
114 profile[MLX4_RES_CMPT].num = MLX4_NUM_CMPTS; 114 profile[MLX4_RES_CMPT].num = MLX4_NUM_CMPTS;
115 profile[MLX4_RES_MTT].num = request->num_mtt; 115 profile[MLX4_RES_MTT].num = request->num_mtt;
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index 7253a499d9c8..5f31bbb614af 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -136,21 +136,23 @@ static char mv643xx_eth_driver_version[] = "1.4";
136/* 136/*
137 * SDMA configuration register. 137 * SDMA configuration register.
138 */ 138 */
139#define RX_BURST_SIZE_4_64BIT (2 << 1)
139#define RX_BURST_SIZE_16_64BIT (4 << 1) 140#define RX_BURST_SIZE_16_64BIT (4 << 1)
140#define BLM_RX_NO_SWAP (1 << 4) 141#define BLM_RX_NO_SWAP (1 << 4)
141#define BLM_TX_NO_SWAP (1 << 5) 142#define BLM_TX_NO_SWAP (1 << 5)
143#define TX_BURST_SIZE_4_64BIT (2 << 22)
142#define TX_BURST_SIZE_16_64BIT (4 << 22) 144#define TX_BURST_SIZE_16_64BIT (4 << 22)
143 145
144#if defined(__BIG_ENDIAN) 146#if defined(__BIG_ENDIAN)
145#define PORT_SDMA_CONFIG_DEFAULT_VALUE \ 147#define PORT_SDMA_CONFIG_DEFAULT_VALUE \
146 (RX_BURST_SIZE_16_64BIT | \ 148 (RX_BURST_SIZE_4_64BIT | \
147 TX_BURST_SIZE_16_64BIT) 149 TX_BURST_SIZE_4_64BIT)
148#elif defined(__LITTLE_ENDIAN) 150#elif defined(__LITTLE_ENDIAN)
149#define PORT_SDMA_CONFIG_DEFAULT_VALUE \ 151#define PORT_SDMA_CONFIG_DEFAULT_VALUE \
150 (RX_BURST_SIZE_16_64BIT | \ 152 (RX_BURST_SIZE_4_64BIT | \
151 BLM_RX_NO_SWAP | \ 153 BLM_RX_NO_SWAP | \
152 BLM_TX_NO_SWAP | \ 154 BLM_TX_NO_SWAP | \
153 TX_BURST_SIZE_16_64BIT) 155 TX_BURST_SIZE_4_64BIT)
154#else 156#else
155#error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined 157#error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined
156#endif 158#endif
@@ -1594,7 +1596,7 @@ oom:
1594 entry = addr_crc(a); 1596 entry = addr_crc(a);
1595 } 1597 }
1596 1598
1597 table[entry >> 2] |= 1 << (entry & 3); 1599 table[entry >> 2] |= 1 << (8 * (entry & 3));
1598 } 1600 }
1599 1601
1600 for (i = 0; i < 0x100; i += 4) { 1602 for (i = 0; i < 0x100; i += 4) {
@@ -2210,6 +2212,7 @@ static int mv643xx_eth_stop(struct net_device *dev)
2210 struct mv643xx_eth_private *mp = netdev_priv(dev); 2212 struct mv643xx_eth_private *mp = netdev_priv(dev);
2211 int i; 2213 int i;
2212 2214
2215 wrlp(mp, INT_MASK_EXT, 0x00000000);
2213 wrlp(mp, INT_MASK, 0x00000000); 2216 wrlp(mp, INT_MASK, 0x00000000);
2214 rdlp(mp, INT_MASK); 2217 rdlp(mp, INT_MASK);
2215 2218
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 6bb71b687f7b..e9c1296b267e 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -1,7 +1,7 @@
1/************************************************************************* 1/*************************************************************************
2 * myri10ge.c: Myricom Myri-10G Ethernet driver. 2 * myri10ge.c: Myricom Myri-10G Ethernet driver.
3 * 3 *
4 * Copyright (C) 2005 - 2007 Myricom, Inc. 4 * Copyright (C) 2005 - 2009 Myricom, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
@@ -75,7 +75,7 @@
75#include "myri10ge_mcp.h" 75#include "myri10ge_mcp.h"
76#include "myri10ge_mcp_gen_header.h" 76#include "myri10ge_mcp_gen_header.h"
77 77
78#define MYRI10GE_VERSION_STR "1.4.4-1.398" 78#define MYRI10GE_VERSION_STR "1.4.4-1.401"
79 79
80MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); 80MODULE_DESCRIPTION("Myricom 10G driver (10GbE)");
81MODULE_AUTHOR("Maintainer: help@myri.com"); 81MODULE_AUTHOR("Maintainer: help@myri.com");
@@ -3786,7 +3786,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3786 if (status != 0) { 3786 if (status != 0) {
3787 dev_err(&pdev->dev, "Error %d writing PCI_EXP_DEVCTL\n", 3787 dev_err(&pdev->dev, "Error %d writing PCI_EXP_DEVCTL\n",
3788 status); 3788 status);
3789 goto abort_with_netdev; 3789 goto abort_with_enabled;
3790 } 3790 }
3791 3791
3792 pci_set_master(pdev); 3792 pci_set_master(pdev);
@@ -3801,13 +3801,13 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3801 } 3801 }
3802 if (status != 0) { 3802 if (status != 0) {
3803 dev_err(&pdev->dev, "Error %d setting DMA mask\n", status); 3803 dev_err(&pdev->dev, "Error %d setting DMA mask\n", status);
3804 goto abort_with_netdev; 3804 goto abort_with_enabled;
3805 } 3805 }
3806 (void)pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); 3806 (void)pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK);
3807 mgp->cmd = dma_alloc_coherent(&pdev->dev, sizeof(*mgp->cmd), 3807 mgp->cmd = dma_alloc_coherent(&pdev->dev, sizeof(*mgp->cmd),
3808 &mgp->cmd_bus, GFP_KERNEL); 3808 &mgp->cmd_bus, GFP_KERNEL);
3809 if (mgp->cmd == NULL) 3809 if (mgp->cmd == NULL)
3810 goto abort_with_netdev; 3810 goto abort_with_enabled;
3811 3811
3812 mgp->board_span = pci_resource_len(pdev, 0); 3812 mgp->board_span = pci_resource_len(pdev, 0);
3813 mgp->iomem_base = pci_resource_start(pdev, 0); 3813 mgp->iomem_base = pci_resource_start(pdev, 0);
@@ -3943,8 +3943,10 @@ abort_with_mtrr:
3943 dma_free_coherent(&pdev->dev, sizeof(*mgp->cmd), 3943 dma_free_coherent(&pdev->dev, sizeof(*mgp->cmd),
3944 mgp->cmd, mgp->cmd_bus); 3944 mgp->cmd, mgp->cmd_bus);
3945 3945
3946abort_with_netdev: 3946abort_with_enabled:
3947 pci_disable_device(pdev);
3947 3948
3949abort_with_netdev:
3948 free_netdev(netdev); 3950 free_netdev(netdev);
3949 return status; 3951 return status;
3950} 3952}
@@ -3990,6 +3992,7 @@ static void myri10ge_remove(struct pci_dev *pdev)
3990 mgp->cmd, mgp->cmd_bus); 3992 mgp->cmd, mgp->cmd_bus);
3991 3993
3992 free_netdev(netdev); 3994 free_netdev(netdev);
3995 pci_disable_device(pdev);
3993 pci_set_drvdata(pdev, NULL); 3996 pci_set_drvdata(pdev, NULL);
3994} 3997}
3995 3998
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index f8e601c51da7..a75a31005fd3 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -146,7 +146,7 @@
146 146
147#define MAX_RX_BUFFER_LENGTH 1760 147#define MAX_RX_BUFFER_LENGTH 1760
148#define MAX_RX_JUMBO_BUFFER_LENGTH 8062 148#define MAX_RX_JUMBO_BUFFER_LENGTH 8062
149#define MAX_RX_LRO_BUFFER_LENGTH ((48*1024)-512) 149#define MAX_RX_LRO_BUFFER_LENGTH (8062)
150#define RX_DMA_MAP_LEN (MAX_RX_BUFFER_LENGTH - 2) 150#define RX_DMA_MAP_LEN (MAX_RX_BUFFER_LENGTH - 2)
151#define RX_JUMBO_DMA_MAP_LEN \ 151#define RX_JUMBO_DMA_MAP_LEN \
152 (MAX_RX_JUMBO_BUFFER_LENGTH - 2) 152 (MAX_RX_JUMBO_BUFFER_LENGTH - 2)
@@ -207,11 +207,11 @@
207 207
208#define MAX_CMD_DESCRIPTORS 4096 208#define MAX_CMD_DESCRIPTORS 4096
209#define MAX_RCV_DESCRIPTORS 16384 209#define MAX_RCV_DESCRIPTORS 16384
210#define MAX_CMD_DESCRIPTORS_HOST (MAX_CMD_DESCRIPTORS / 4) 210#define MAX_CMD_DESCRIPTORS_HOST 1024
211#define MAX_RCV_DESCRIPTORS_1G (MAX_RCV_DESCRIPTORS / 4) 211#define MAX_RCV_DESCRIPTORS_1G 2048
212#define MAX_RCV_DESCRIPTORS_10G 8192 212#define MAX_RCV_DESCRIPTORS_10G 4096
213#define MAX_JUMBO_RCV_DESCRIPTORS 1024 213#define MAX_JUMBO_RCV_DESCRIPTORS 512
214#define MAX_LRO_RCV_DESCRIPTORS 64 214#define MAX_LRO_RCV_DESCRIPTORS 8
215#define MAX_RCVSTATUS_DESCRIPTORS MAX_RCV_DESCRIPTORS 215#define MAX_RCVSTATUS_DESCRIPTORS MAX_RCV_DESCRIPTORS
216#define MAX_JUMBO_RCV_DESC MAX_JUMBO_RCV_DESCRIPTORS 216#define MAX_JUMBO_RCV_DESC MAX_JUMBO_RCV_DESCRIPTORS
217#define MAX_RCV_DESC MAX_RCV_DESCRIPTORS 217#define MAX_RCV_DESC MAX_RCV_DESCRIPTORS
@@ -308,27 +308,16 @@ struct netxen_ring_ctx {
308#define netxen_set_cmd_desc_ctxid(cmd_desc, var) \ 308#define netxen_set_cmd_desc_ctxid(cmd_desc, var) \
309 ((cmd_desc)->port_ctxid |= ((var) << 4 & 0xF0)) 309 ((cmd_desc)->port_ctxid |= ((var) << 4 & 0xF0))
310 310
311#define netxen_set_cmd_desc_flags(cmd_desc, val) \ 311#define netxen_set_tx_port(_desc, _port) \
312 (cmd_desc)->flags_opcode = ((cmd_desc)->flags_opcode & \ 312 (_desc)->port_ctxid = ((_port) & 0xf) | (((_port) << 4) & 0xf0)
313 ~cpu_to_le16(0x7f)) | cpu_to_le16((val) & 0x7f) 313
314#define netxen_set_cmd_desc_opcode(cmd_desc, val) \ 314#define netxen_set_tx_flags_opcode(_desc, _flags, _opcode) \
315 (cmd_desc)->flags_opcode = ((cmd_desc)->flags_opcode & \ 315 (_desc)->flags_opcode = \
316 ~cpu_to_le16((u16)0x3f << 7)) | cpu_to_le16(((val) & 0x3f) << 7) 316 cpu_to_le16(((_flags) & 0x7f) | (((_opcode) & 0x3f) << 7))
317 317
318#define netxen_set_cmd_desc_num_of_buff(cmd_desc, val) \ 318#define netxen_set_tx_frags_len(_desc, _frags, _len) \
319 (cmd_desc)->num_of_buffers_total_length = \ 319 (_desc)->num_of_buffers_total_length = \
320 ((cmd_desc)->num_of_buffers_total_length & \ 320 cpu_to_le32(((_frags) & 0xff) | (((_len) & 0xffffff) << 8))
321 ~cpu_to_le32(0xff)) | cpu_to_le32((val) & 0xff)
322#define netxen_set_cmd_desc_totallength(cmd_desc, val) \
323 (cmd_desc)->num_of_buffers_total_length = \
324 ((cmd_desc)->num_of_buffers_total_length & \
325 ~cpu_to_le32((u32)0xffffff << 8)) | \
326 cpu_to_le32(((val) & 0xffffff) << 8)
327
328#define netxen_get_cmd_desc_opcode(cmd_desc) \
329 ((le16_to_cpu((cmd_desc)->flags_opcode) >> 7) & 0x003f)
330#define netxen_get_cmd_desc_totallength(cmd_desc) \
331 ((le32_to_cpu((cmd_desc)->num_of_buffers_total_length) >> 8) & 0xffffff)
332 321
333struct cmd_desc_type0 { 322struct cmd_desc_type0 {
334 u8 tcp_hdr_offset; /* For LSO only */ 323 u8 tcp_hdr_offset; /* For LSO only */
@@ -510,7 +499,8 @@ typedef enum {
510 NETXEN_BRDTYPE_P3_10G_SFP_CT = 0x002a, 499 NETXEN_BRDTYPE_P3_10G_SFP_CT = 0x002a,
511 NETXEN_BRDTYPE_P3_10G_SFP_QT = 0x002b, 500 NETXEN_BRDTYPE_P3_10G_SFP_QT = 0x002b,
512 NETXEN_BRDTYPE_P3_10G_CX4 = 0x0031, 501 NETXEN_BRDTYPE_P3_10G_CX4 = 0x0031,
513 NETXEN_BRDTYPE_P3_10G_XFP = 0x0032 502 NETXEN_BRDTYPE_P3_10G_XFP = 0x0032,
503 NETXEN_BRDTYPE_P3_10G_TP = 0x0080
514 504
515} netxen_brdtype_t; 505} netxen_brdtype_t;
516 506
@@ -757,7 +747,7 @@ extern char netxen_nic_driver_name[];
757 */ 747 */
758struct netxen_skb_frag { 748struct netxen_skb_frag {
759 u64 dma; 749 u64 dma;
760 u32 length; 750 ulong length;
761}; 751};
762 752
763#define _netxen_set_bits(config_word, start, bits, val) {\ 753#define _netxen_set_bits(config_word, start, bits, val) {\
@@ -783,13 +773,7 @@ struct netxen_skb_frag {
783struct netxen_cmd_buffer { 773struct netxen_cmd_buffer {
784 struct sk_buff *skb; 774 struct sk_buff *skb;
785 struct netxen_skb_frag frag_array[MAX_BUFFERS_PER_CMD + 1]; 775 struct netxen_skb_frag frag_array[MAX_BUFFERS_PER_CMD + 1];
786 u32 total_length; 776 u32 frag_count;
787 u32 mss;
788 u16 port;
789 u8 cmd;
790 u8 frag_count;
791 unsigned long time_stamp;
792 u32 state;
793}; 777};
794 778
795/* In rx_buffer, we do not need multiple fragments as is a single buffer */ 779/* In rx_buffer, we do not need multiple fragments as is a single buffer */
@@ -876,7 +860,6 @@ struct nx_host_rds_ring {
876 u32 skb_size; 860 u32 skb_size;
877 struct netxen_rx_buffer *rx_buf_arr; /* rx buffers for receive */ 861 struct netxen_rx_buffer *rx_buf_arr; /* rx buffers for receive */
878 struct list_head free_list; 862 struct list_head free_list;
879 int begin_alloc;
880}; 863};
881 864
882/* 865/*
@@ -995,31 +978,31 @@ struct netxen_recv_context {
995 */ 978 */
996 979
997typedef struct { 980typedef struct {
998 u64 host_phys_addr; /* Ring base addr */ 981 __le64 host_phys_addr; /* Ring base addr */
999 u32 ring_size; /* Ring entries */ 982 __le32 ring_size; /* Ring entries */
1000 u16 msi_index; 983 __le16 msi_index;
1001 u16 rsvd; /* Padding */ 984 __le16 rsvd; /* Padding */
1002} nx_hostrq_sds_ring_t; 985} nx_hostrq_sds_ring_t;
1003 986
1004typedef struct { 987typedef struct {
1005 u64 host_phys_addr; /* Ring base addr */ 988 __le64 host_phys_addr; /* Ring base addr */
1006 u64 buff_size; /* Packet buffer size */ 989 __le64 buff_size; /* Packet buffer size */
1007 u32 ring_size; /* Ring entries */ 990 __le32 ring_size; /* Ring entries */
1008 u32 ring_kind; /* Class of ring */ 991 __le32 ring_kind; /* Class of ring */
1009} nx_hostrq_rds_ring_t; 992} nx_hostrq_rds_ring_t;
1010 993
1011typedef struct { 994typedef struct {
1012 u64 host_rsp_dma_addr; /* Response dma'd here */ 995 __le64 host_rsp_dma_addr; /* Response dma'd here */
1013 u32 capabilities[4]; /* Flag bit vector */ 996 __le32 capabilities[4]; /* Flag bit vector */
1014 u32 host_int_crb_mode; /* Interrupt crb usage */ 997 __le32 host_int_crb_mode; /* Interrupt crb usage */
1015 u32 host_rds_crb_mode; /* RDS crb usage */ 998 __le32 host_rds_crb_mode; /* RDS crb usage */
1016 /* These ring offsets are relative to data[0] below */ 999 /* These ring offsets are relative to data[0] below */
1017 u32 rds_ring_offset; /* Offset to RDS config */ 1000 __le32 rds_ring_offset; /* Offset to RDS config */
1018 u32 sds_ring_offset; /* Offset to SDS config */ 1001 __le32 sds_ring_offset; /* Offset to SDS config */
1019 u16 num_rds_rings; /* Count of RDS rings */ 1002 __le16 num_rds_rings; /* Count of RDS rings */
1020 u16 num_sds_rings; /* Count of SDS rings */ 1003 __le16 num_sds_rings; /* Count of SDS rings */
1021 u16 rsvd1; /* Padding */ 1004 __le16 rsvd1; /* Padding */
1022 u16 rsvd2; /* Padding */ 1005 __le16 rsvd2; /* Padding */
1023 u8 reserved[128]; /* reserve space for future expansion*/ 1006 u8 reserved[128]; /* reserve space for future expansion*/
1024 /* MUST BE 64-bit aligned. 1007 /* MUST BE 64-bit aligned.
1025 The following is packed: 1008 The following is packed:
@@ -1029,24 +1012,24 @@ typedef struct {
1029} nx_hostrq_rx_ctx_t; 1012} nx_hostrq_rx_ctx_t;
1030 1013
1031typedef struct { 1014typedef struct {
1032 u32 host_producer_crb; /* Crb to use */ 1015 __le32 host_producer_crb; /* Crb to use */
1033 u32 rsvd1; /* Padding */ 1016 __le32 rsvd1; /* Padding */
1034} nx_cardrsp_rds_ring_t; 1017} nx_cardrsp_rds_ring_t;
1035 1018
1036typedef struct { 1019typedef struct {
1037 u32 host_consumer_crb; /* Crb to use */ 1020 __le32 host_consumer_crb; /* Crb to use */
1038 u32 interrupt_crb; /* Crb to use */ 1021 __le32 interrupt_crb; /* Crb to use */
1039} nx_cardrsp_sds_ring_t; 1022} nx_cardrsp_sds_ring_t;
1040 1023
1041typedef struct { 1024typedef struct {
1042 /* These ring offsets are relative to data[0] below */ 1025 /* These ring offsets are relative to data[0] below */
1043 u32 rds_ring_offset; /* Offset to RDS config */ 1026 __le32 rds_ring_offset; /* Offset to RDS config */
1044 u32 sds_ring_offset; /* Offset to SDS config */ 1027 __le32 sds_ring_offset; /* Offset to SDS config */
1045 u32 host_ctx_state; /* Starting State */ 1028 __le32 host_ctx_state; /* Starting State */
1046 u32 num_fn_per_port; /* How many PCI fn share the port */ 1029 __le32 num_fn_per_port; /* How many PCI fn share the port */
1047 u16 num_rds_rings; /* Count of RDS rings */ 1030 __le16 num_rds_rings; /* Count of RDS rings */
1048 u16 num_sds_rings; /* Count of SDS rings */ 1031 __le16 num_sds_rings; /* Count of SDS rings */
1049 u16 context_id; /* Handle for context */ 1032 __le16 context_id; /* Handle for context */
1050 u8 phys_port; /* Physical id of port */ 1033 u8 phys_port; /* Physical id of port */
1051 u8 virt_port; /* Virtual/Logical id of port */ 1034 u8 virt_port; /* Virtual/Logical id of port */
1052 u8 reserved[128]; /* save space for future expansion */ 1035 u8 reserved[128]; /* save space for future expansion */
@@ -1072,34 +1055,34 @@ typedef struct {
1072 */ 1055 */
1073 1056
1074typedef struct { 1057typedef struct {
1075 u64 host_phys_addr; /* Ring base addr */ 1058 __le64 host_phys_addr; /* Ring base addr */
1076 u32 ring_size; /* Ring entries */ 1059 __le32 ring_size; /* Ring entries */
1077 u32 rsvd; /* Padding */ 1060 __le32 rsvd; /* Padding */
1078} nx_hostrq_cds_ring_t; 1061} nx_hostrq_cds_ring_t;
1079 1062
1080typedef struct { 1063typedef struct {
1081 u64 host_rsp_dma_addr; /* Response dma'd here */ 1064 __le64 host_rsp_dma_addr; /* Response dma'd here */
1082 u64 cmd_cons_dma_addr; /* */ 1065 __le64 cmd_cons_dma_addr; /* */
1083 u64 dummy_dma_addr; /* */ 1066 __le64 dummy_dma_addr; /* */
1084 u32 capabilities[4]; /* Flag bit vector */ 1067 __le32 capabilities[4]; /* Flag bit vector */
1085 u32 host_int_crb_mode; /* Interrupt crb usage */ 1068 __le32 host_int_crb_mode; /* Interrupt crb usage */
1086 u32 rsvd1; /* Padding */ 1069 __le32 rsvd1; /* Padding */
1087 u16 rsvd2; /* Padding */ 1070 __le16 rsvd2; /* Padding */
1088 u16 interrupt_ctl; 1071 __le16 interrupt_ctl;
1089 u16 msi_index; 1072 __le16 msi_index;
1090 u16 rsvd3; /* Padding */ 1073 __le16 rsvd3; /* Padding */
1091 nx_hostrq_cds_ring_t cds_ring; /* Desc of cds ring */ 1074 nx_hostrq_cds_ring_t cds_ring; /* Desc of cds ring */
1092 u8 reserved[128]; /* future expansion */ 1075 u8 reserved[128]; /* future expansion */
1093} nx_hostrq_tx_ctx_t; 1076} nx_hostrq_tx_ctx_t;
1094 1077
1095typedef struct { 1078typedef struct {
1096 u32 host_producer_crb; /* Crb to use */ 1079 __le32 host_producer_crb; /* Crb to use */
1097 u32 interrupt_crb; /* Crb to use */ 1080 __le32 interrupt_crb; /* Crb to use */
1098} nx_cardrsp_cds_ring_t; 1081} nx_cardrsp_cds_ring_t;
1099 1082
1100typedef struct { 1083typedef struct {
1101 u32 host_ctx_state; /* Starting state */ 1084 __le32 host_ctx_state; /* Starting state */
1102 u16 context_id; /* Handle for context */ 1085 __le16 context_id; /* Handle for context */
1103 u8 phys_port; /* Physical id of port */ 1086 u8 phys_port; /* Physical id of port */
1104 u8 virt_port; /* Virtual/Logical id of port */ 1087 u8 virt_port; /* Virtual/Logical id of port */
1105 nx_cardrsp_cds_ring_t cds_ring; /* Card cds settings */ 1088 nx_cardrsp_cds_ring_t cds_ring; /* Card cds settings */
@@ -1202,9 +1185,9 @@ enum {
1202#define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */ 1185#define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */
1203 1186
1204typedef struct { 1187typedef struct {
1205 u64 qhdr; 1188 __le64 qhdr;
1206 u64 req_hdr; 1189 __le64 req_hdr;
1207 u64 words[6]; 1190 __le64 words[6];
1208} nx_nic_req_t; 1191} nx_nic_req_t;
1209 1192
1210typedef struct { 1193typedef struct {
@@ -1486,8 +1469,6 @@ void netxen_release_tx_buffers(struct netxen_adapter *adapter);
1486 1469
1487void netxen_initialize_adapter_ops(struct netxen_adapter *adapter); 1470void netxen_initialize_adapter_ops(struct netxen_adapter *adapter);
1488int netxen_init_firmware(struct netxen_adapter *adapter); 1471int netxen_init_firmware(struct netxen_adapter *adapter);
1489void netxen_tso_check(struct netxen_adapter *adapter,
1490 struct cmd_desc_type0 *desc, struct sk_buff *skb);
1491void netxen_nic_clear_stats(struct netxen_adapter *adapter); 1472void netxen_nic_clear_stats(struct netxen_adapter *adapter);
1492void netxen_watchdog_task(struct work_struct *work); 1473void netxen_watchdog_task(struct work_struct *work);
1493void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, 1474void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx,
@@ -1496,6 +1477,7 @@ int netxen_process_cmd_ring(struct netxen_adapter *adapter);
1496u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); 1477u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max);
1497void netxen_p2_nic_set_multi(struct net_device *netdev); 1478void netxen_p2_nic_set_multi(struct net_device *netdev);
1498void netxen_p3_nic_set_multi(struct net_device *netdev); 1479void netxen_p3_nic_set_multi(struct net_device *netdev);
1480void netxen_p3_free_mac_list(struct netxen_adapter *adapter);
1499int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32); 1481int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32);
1500int netxen_config_intr_coalesce(struct netxen_adapter *adapter); 1482int netxen_config_intr_coalesce(struct netxen_adapter *adapter);
1501 1483
diff --git a/drivers/net/netxen/netxen_nic_ctx.c b/drivers/net/netxen/netxen_nic_ctx.c
index 64b51643c626..746bdb470418 100644
--- a/drivers/net/netxen/netxen_nic_ctx.c
+++ b/drivers/net/netxen/netxen_nic_ctx.c
@@ -76,7 +76,7 @@ netxen_api_unlock(struct netxen_adapter *adapter)
76static u32 76static u32
77netxen_poll_rsp(struct netxen_adapter *adapter) 77netxen_poll_rsp(struct netxen_adapter *adapter)
78{ 78{
79 u32 raw_rsp, rsp = NX_CDRP_RSP_OK; 79 u32 rsp = NX_CDRP_RSP_OK;
80 int timeout = 0; 80 int timeout = 0;
81 81
82 do { 82 do {
@@ -86,10 +86,7 @@ netxen_poll_rsp(struct netxen_adapter *adapter)
86 if (++timeout > NX_OS_CRB_RETRY_COUNT) 86 if (++timeout > NX_OS_CRB_RETRY_COUNT)
87 return NX_CDRP_RSP_TIMEOUT; 87 return NX_CDRP_RSP_TIMEOUT;
88 88
89 netxen_nic_read_w1(adapter, NX_CDRP_CRB_OFFSET, 89 netxen_nic_read_w1(adapter, NX_CDRP_CRB_OFFSET, &rsp);
90 &raw_rsp);
91
92 rsp = le32_to_cpu(raw_rsp);
93 } while (!NX_CDRP_IS_RSP(rsp)); 90 } while (!NX_CDRP_IS_RSP(rsp));
94 91
95 return rsp; 92 return rsp;
@@ -109,20 +106,16 @@ netxen_issue_cmd(struct netxen_adapter *adapter,
109 if (netxen_api_lock(adapter)) 106 if (netxen_api_lock(adapter))
110 return NX_RCODE_TIMEOUT; 107 return NX_RCODE_TIMEOUT;
111 108
112 netxen_nic_write_w1(adapter, NX_SIGN_CRB_OFFSET, 109 netxen_nic_write_w1(adapter, NX_SIGN_CRB_OFFSET, signature);
113 cpu_to_le32(signature));
114 110
115 netxen_nic_write_w1(adapter, NX_ARG1_CRB_OFFSET, 111 netxen_nic_write_w1(adapter, NX_ARG1_CRB_OFFSET, arg1);
116 cpu_to_le32(arg1));
117 112
118 netxen_nic_write_w1(adapter, NX_ARG2_CRB_OFFSET, 113 netxen_nic_write_w1(adapter, NX_ARG2_CRB_OFFSET, arg2);
119 cpu_to_le32(arg2));
120 114
121 netxen_nic_write_w1(adapter, NX_ARG3_CRB_OFFSET, 115 netxen_nic_write_w1(adapter, NX_ARG3_CRB_OFFSET, arg3);
122 cpu_to_le32(arg3));
123 116
124 netxen_nic_write_w1(adapter, NX_CDRP_CRB_OFFSET, 117 netxen_nic_write_w1(adapter, NX_CDRP_CRB_OFFSET,
125 cpu_to_le32(NX_CDRP_FORM_CMD(cmd))); 118 NX_CDRP_FORM_CMD(cmd));
126 119
127 rsp = netxen_poll_rsp(adapter); 120 rsp = netxen_poll_rsp(adapter);
128 121
@@ -133,7 +126,6 @@ netxen_issue_cmd(struct netxen_adapter *adapter,
133 rcode = NX_RCODE_TIMEOUT; 126 rcode = NX_RCODE_TIMEOUT;
134 } else if (rsp == NX_CDRP_RSP_FAIL) { 127 } else if (rsp == NX_CDRP_RSP_FAIL) {
135 netxen_nic_read_w1(adapter, NX_ARG1_CRB_OFFSET, &rcode); 128 netxen_nic_read_w1(adapter, NX_ARG1_CRB_OFFSET, &rcode);
136 rcode = le32_to_cpu(rcode);
137 129
138 printk(KERN_ERR "%s: failed card response code:0x%x\n", 130 printk(KERN_ERR "%s: failed card response code:0x%x\n",
139 netxen_nic_driver_name, rcode); 131 netxen_nic_driver_name, rcode);
@@ -183,7 +175,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter)
183 175
184 int i, nrds_rings, nsds_rings; 176 int i, nrds_rings, nsds_rings;
185 size_t rq_size, rsp_size; 177 size_t rq_size, rsp_size;
186 u32 cap, reg; 178 u32 cap, reg, val;
187 179
188 int err; 180 int err;
189 181
@@ -225,11 +217,14 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter)
225 217
226 prq->num_rds_rings = cpu_to_le16(nrds_rings); 218 prq->num_rds_rings = cpu_to_le16(nrds_rings);
227 prq->num_sds_rings = cpu_to_le16(nsds_rings); 219 prq->num_sds_rings = cpu_to_le16(nsds_rings);
228 prq->rds_ring_offset = 0; 220 prq->rds_ring_offset = cpu_to_le32(0);
229 prq->sds_ring_offset = prq->rds_ring_offset + 221
222 val = le32_to_cpu(prq->rds_ring_offset) +
230 (sizeof(nx_hostrq_rds_ring_t) * nrds_rings); 223 (sizeof(nx_hostrq_rds_ring_t) * nrds_rings);
224 prq->sds_ring_offset = cpu_to_le32(val);
231 225
232 prq_rds = (nx_hostrq_rds_ring_t *)(prq->data + prq->rds_ring_offset); 226 prq_rds = (nx_hostrq_rds_ring_t *)(prq->data +
227 le32_to_cpu(prq->rds_ring_offset));
233 228
234 for (i = 0; i < nrds_rings; i++) { 229 for (i = 0; i < nrds_rings; i++) {
235 230
@@ -241,17 +236,14 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter)
241 prq_rds[i].buff_size = cpu_to_le64(rds_ring->dma_size); 236 prq_rds[i].buff_size = cpu_to_le64(rds_ring->dma_size);
242 } 237 }
243 238
244 prq_sds = (nx_hostrq_sds_ring_t *)(prq->data + prq->sds_ring_offset); 239 prq_sds = (nx_hostrq_sds_ring_t *)(prq->data +
240 le32_to_cpu(prq->sds_ring_offset));
245 241
246 prq_sds[0].host_phys_addr = 242 prq_sds[0].host_phys_addr =
247 cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr); 243 cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr);
248 prq_sds[0].ring_size = cpu_to_le32(adapter->max_rx_desc_count); 244 prq_sds[0].ring_size = cpu_to_le32(adapter->max_rx_desc_count);
249 /* only one msix vector for now */ 245 /* only one msix vector for now */
250 prq_sds[0].msi_index = cpu_to_le32(0); 246 prq_sds[0].msi_index = cpu_to_le16(0);
251
252 /* now byteswap offsets */
253 prq->rds_ring_offset = cpu_to_le32(prq->rds_ring_offset);
254 prq->sds_ring_offset = cpu_to_le32(prq->sds_ring_offset);
255 247
256 phys_addr = hostrq_phys_addr; 248 phys_addr = hostrq_phys_addr;
257 err = netxen_issue_cmd(adapter, 249 err = netxen_issue_cmd(adapter,
@@ -269,9 +261,9 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter)
269 261
270 262
271 prsp_rds = ((nx_cardrsp_rds_ring_t *) 263 prsp_rds = ((nx_cardrsp_rds_ring_t *)
272 &prsp->data[prsp->rds_ring_offset]); 264 &prsp->data[le32_to_cpu(prsp->rds_ring_offset)]);
273 265
274 for (i = 0; i < le32_to_cpu(prsp->num_rds_rings); i++) { 266 for (i = 0; i < le16_to_cpu(prsp->num_rds_rings); i++) {
275 rds_ring = &recv_ctx->rds_rings[i]; 267 rds_ring = &recv_ctx->rds_rings[i];
276 268
277 reg = le32_to_cpu(prsp_rds[i].host_producer_crb); 269 reg = le32_to_cpu(prsp_rds[i].host_producer_crb);
@@ -279,7 +271,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter)
279 } 271 }
280 272
281 prsp_sds = ((nx_cardrsp_sds_ring_t *) 273 prsp_sds = ((nx_cardrsp_sds_ring_t *)
282 &prsp->data[prsp->sds_ring_offset]); 274 &prsp->data[le32_to_cpu(prsp->sds_ring_offset)]);
283 reg = le32_to_cpu(prsp_sds[0].host_consumer_crb); 275 reg = le32_to_cpu(prsp_sds[0].host_consumer_crb);
284 recv_ctx->crb_sts_consumer = NETXEN_NIC_REG(reg - 0x200); 276 recv_ctx->crb_sts_consumer = NETXEN_NIC_REG(reg - 0x200);
285 277
@@ -288,7 +280,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_adapter *adapter)
288 280
289 recv_ctx->state = le32_to_cpu(prsp->host_ctx_state); 281 recv_ctx->state = le32_to_cpu(prsp->host_ctx_state);
290 recv_ctx->context_id = le16_to_cpu(prsp->context_id); 282 recv_ctx->context_id = le16_to_cpu(prsp->context_id);
291 recv_ctx->virt_port = le16_to_cpu(prsp->virt_port); 283 recv_ctx->virt_port = prsp->virt_port;
292 284
293out_free_rsp: 285out_free_rsp:
294 pci_free_consistent(adapter->pdev, rsp_size, prsp, cardrsp_phys_addr); 286 pci_free_consistent(adapter->pdev, rsp_size, prsp, cardrsp_phys_addr);
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c
index e45ce2951729..0894a7be0225 100644
--- a/drivers/net/netxen/netxen_nic_ethtool.c
+++ b/drivers/net/netxen/netxen_nic_ethtool.c
@@ -136,11 +136,9 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
136 136
137 ecmd->port = PORT_TP; 137 ecmd->port = PORT_TP;
138 138
139 if (netif_running(dev)) { 139 ecmd->speed = adapter->link_speed;
140 ecmd->speed = adapter->link_speed; 140 ecmd->duplex = adapter->link_duplex;
141 ecmd->duplex = adapter->link_duplex; 141 ecmd->autoneg = adapter->link_autoneg;
142 ecmd->autoneg = adapter->link_autoneg;
143 }
144 142
145 } else if (adapter->ahw.board_type == NETXEN_NIC_XGBE) { 143 } else if (adapter->ahw.board_type == NETXEN_NIC_XGBE) {
146 u32 val; 144 u32 val;
@@ -171,7 +169,7 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
171 } else 169 } else
172 return -EIO; 170 return -EIO;
173 171
174 ecmd->phy_address = adapter->portnum; 172 ecmd->phy_address = adapter->physical_port;
175 ecmd->transceiver = XCVR_EXTERNAL; 173 ecmd->transceiver = XCVR_EXTERNAL;
176 174
177 switch ((netxen_brdtype_t) boardinfo->board_type) { 175 switch ((netxen_brdtype_t) boardinfo->board_type) {
@@ -180,13 +178,13 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
180 case NETXEN_BRDTYPE_P3_REF_QG: 178 case NETXEN_BRDTYPE_P3_REF_QG:
181 case NETXEN_BRDTYPE_P3_4_GB: 179 case NETXEN_BRDTYPE_P3_4_GB:
182 case NETXEN_BRDTYPE_P3_4_GB_MM: 180 case NETXEN_BRDTYPE_P3_4_GB_MM:
183 case NETXEN_BRDTYPE_P3_10000_BASE_T:
184 181
185 ecmd->supported |= SUPPORTED_Autoneg; 182 ecmd->supported |= SUPPORTED_Autoneg;
186 ecmd->advertising |= ADVERTISED_Autoneg; 183 ecmd->advertising |= ADVERTISED_Autoneg;
187 case NETXEN_BRDTYPE_P2_SB31_10G_CX4: 184 case NETXEN_BRDTYPE_P2_SB31_10G_CX4:
188 case NETXEN_BRDTYPE_P3_10G_CX4: 185 case NETXEN_BRDTYPE_P3_10G_CX4:
189 case NETXEN_BRDTYPE_P3_10G_CX4_LP: 186 case NETXEN_BRDTYPE_P3_10G_CX4_LP:
187 case NETXEN_BRDTYPE_P3_10000_BASE_T:
190 ecmd->supported |= SUPPORTED_TP; 188 ecmd->supported |= SUPPORTED_TP;
191 ecmd->advertising |= ADVERTISED_TP; 189 ecmd->advertising |= ADVERTISED_TP;
192 ecmd->port = PORT_TP; 190 ecmd->port = PORT_TP;
@@ -204,16 +202,33 @@ netxen_nic_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
204 ecmd->port = PORT_FIBRE; 202 ecmd->port = PORT_FIBRE;
205 ecmd->autoneg = AUTONEG_DISABLE; 203 ecmd->autoneg = AUTONEG_DISABLE;
206 break; 204 break;
207 case NETXEN_BRDTYPE_P2_SB31_10G:
208 case NETXEN_BRDTYPE_P3_10G_SFP_PLUS: 205 case NETXEN_BRDTYPE_P3_10G_SFP_PLUS:
209 case NETXEN_BRDTYPE_P3_10G_SFP_CT: 206 case NETXEN_BRDTYPE_P3_10G_SFP_CT:
210 case NETXEN_BRDTYPE_P3_10G_SFP_QT: 207 case NETXEN_BRDTYPE_P3_10G_SFP_QT:
208 ecmd->advertising |= ADVERTISED_TP;
209 ecmd->supported |= SUPPORTED_TP;
210 case NETXEN_BRDTYPE_P2_SB31_10G:
211 case NETXEN_BRDTYPE_P3_10G_XFP: 211 case NETXEN_BRDTYPE_P3_10G_XFP:
212 ecmd->supported |= SUPPORTED_FIBRE; 212 ecmd->supported |= SUPPORTED_FIBRE;
213 ecmd->advertising |= ADVERTISED_FIBRE; 213 ecmd->advertising |= ADVERTISED_FIBRE;
214 ecmd->port = PORT_FIBRE; 214 ecmd->port = PORT_FIBRE;
215 ecmd->autoneg = AUTONEG_DISABLE; 215 ecmd->autoneg = AUTONEG_DISABLE;
216 break; 216 break;
217 case NETXEN_BRDTYPE_P3_10G_TP:
218 if (adapter->ahw.board_type == NETXEN_NIC_XGBE) {
219 ecmd->autoneg = AUTONEG_DISABLE;
220 ecmd->supported |= (SUPPORTED_FIBRE | SUPPORTED_TP);
221 ecmd->advertising |=
222 (ADVERTISED_FIBRE | ADVERTISED_TP);
223 ecmd->port = PORT_FIBRE;
224 } else {
225 ecmd->autoneg = AUTONEG_ENABLE;
226 ecmd->supported |= (SUPPORTED_TP |SUPPORTED_Autoneg);
227 ecmd->advertising |=
228 (ADVERTISED_TP | ADVERTISED_Autoneg);
229 ecmd->port = PORT_TP;
230 }
231 break;
217 default: 232 default:
218 printk(KERN_ERR "netxen-nic: Unsupported board model %d\n", 233 printk(KERN_ERR "netxen-nic: Unsupported board model %d\n",
219 (netxen_brdtype_t) boardinfo->board_type); 234 (netxen_brdtype_t) boardinfo->board_type);
@@ -546,7 +561,10 @@ netxen_nic_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring)
546 } 561 }
547 ring->tx_pending = adapter->max_tx_desc_count; 562 ring->tx_pending = adapter->max_tx_desc_count;
548 563
549 ring->rx_max_pending = MAX_RCV_DESCRIPTORS; 564 if (adapter->ahw.board_type == NETXEN_NIC_GBE)
565 ring->rx_max_pending = MAX_RCV_DESCRIPTORS_1G;
566 else
567 ring->rx_max_pending = MAX_RCV_DESCRIPTORS_10G;
550 ring->tx_max_pending = MAX_CMD_DESCRIPTORS_HOST; 568 ring->tx_max_pending = MAX_CMD_DESCRIPTORS_HOST;
551 ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS; 569 ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS;
552 ring->rx_mini_max_pending = 0; 570 ring->rx_mini_max_pending = 0;
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c
index aa6e603bfcbf..821cff68b3f3 100644
--- a/drivers/net/netxen/netxen_nic_hw.c
+++ b/drivers/net/netxen/netxen_nic_hw.c
@@ -503,17 +503,15 @@ netxen_send_cmd_descs(struct netxen_adapter *adapter,
503 503
504 i = 0; 504 i = 0;
505 505
506 netif_tx_lock_bh(adapter->netdev);
507
506 producer = adapter->cmd_producer; 508 producer = adapter->cmd_producer;
507 do { 509 do {
508 cmd_desc = &cmd_desc_arr[i]; 510 cmd_desc = &cmd_desc_arr[i];
509 511
510 pbuf = &adapter->cmd_buf_arr[producer]; 512 pbuf = &adapter->cmd_buf_arr[producer];
511 pbuf->mss = 0;
512 pbuf->total_length = 0;
513 pbuf->skb = NULL; 513 pbuf->skb = NULL;
514 pbuf->cmd = 0;
515 pbuf->frag_count = 0; 514 pbuf->frag_count = 0;
516 pbuf->port = 0;
517 515
518 /* adapter->ahw.cmd_desc_head[producer] = *cmd_desc; */ 516 /* adapter->ahw.cmd_desc_head[producer] = *cmd_desc; */
519 memcpy(&adapter->ahw.cmd_desc_head[producer], 517 memcpy(&adapter->ahw.cmd_desc_head[producer],
@@ -531,6 +529,8 @@ netxen_send_cmd_descs(struct netxen_adapter *adapter,
531 529
532 netxen_nic_update_cmd_producer(adapter, adapter->cmd_producer); 530 netxen_nic_update_cmd_producer(adapter, adapter->cmd_producer);
533 531
532 netif_tx_unlock_bh(adapter->netdev);
533
534 return 0; 534 return 0;
535} 535}
536 536
@@ -539,16 +539,19 @@ static int nx_p3_sre_macaddr_change(struct net_device *dev,
539{ 539{
540 struct netxen_adapter *adapter = netdev_priv(dev); 540 struct netxen_adapter *adapter = netdev_priv(dev);
541 nx_nic_req_t req; 541 nx_nic_req_t req;
542 nx_mac_req_t mac_req; 542 nx_mac_req_t *mac_req;
543 u64 word;
543 int rv; 544 int rv;
544 545
545 memset(&req, 0, sizeof(nx_nic_req_t)); 546 memset(&req, 0, sizeof(nx_nic_req_t));
546 req.qhdr |= (NX_NIC_REQUEST << 23); 547 req.qhdr = cpu_to_le64(NX_NIC_REQUEST << 23);
547 req.req_hdr |= NX_MAC_EVENT; 548
548 req.req_hdr |= ((u64)adapter->portnum << 16); 549 word = NX_MAC_EVENT | ((u64)adapter->portnum << 16);
549 mac_req.op = op; 550 req.req_hdr = cpu_to_le64(word);
550 memcpy(&mac_req.mac_addr, addr, 6); 551
551 req.words[0] = cpu_to_le64(*(u64 *)&mac_req); 552 mac_req = (nx_mac_req_t *)&req.words[0];
553 mac_req->op = op;
554 memcpy(mac_req->mac_addr, addr, 6);
552 555
553 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); 556 rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1);
554 if (rv != 0) { 557 if (rv != 0) {
@@ -612,18 +615,35 @@ send_fw_cmd:
612int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode) 615int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode)
613{ 616{
614 nx_nic_req_t req; 617 nx_nic_req_t req;
618 u64 word;
615 619
616 memset(&req, 0, sizeof(nx_nic_req_t)); 620 memset(&req, 0, sizeof(nx_nic_req_t));
617 621
618 req.qhdr |= (NX_HOST_REQUEST << 23); 622 req.qhdr = cpu_to_le64(NX_HOST_REQUEST << 23);
619 req.req_hdr |= NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE; 623
620 req.req_hdr |= ((u64)adapter->portnum << 16); 624 word = NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE |
625 ((u64)adapter->portnum << 16);
626 req.req_hdr = cpu_to_le64(word);
627
621 req.words[0] = cpu_to_le64(mode); 628 req.words[0] = cpu_to_le64(mode);
622 629
623 return netxen_send_cmd_descs(adapter, 630 return netxen_send_cmd_descs(adapter,
624 (struct cmd_desc_type0 *)&req, 1); 631 (struct cmd_desc_type0 *)&req, 1);
625} 632}
626 633
634void netxen_p3_free_mac_list(struct netxen_adapter *adapter)
635{
636 nx_mac_list_t *cur, *next;
637
638 cur = adapter->mac_list;
639
640 while (cur) {
641 next = cur->next;
642 kfree(cur);
643 cur = next;
644 }
645}
646
627#define NETXEN_CONFIG_INTR_COALESCE 3 647#define NETXEN_CONFIG_INTR_COALESCE 3
628 648
629/* 649/*
@@ -632,13 +652,15 @@ int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode)
632int netxen_config_intr_coalesce(struct netxen_adapter *adapter) 652int netxen_config_intr_coalesce(struct netxen_adapter *adapter)
633{ 653{
634 nx_nic_req_t req; 654 nx_nic_req_t req;
655 u64 word;
635 int rv; 656 int rv;
636 657
637 memset(&req, 0, sizeof(nx_nic_req_t)); 658 memset(&req, 0, sizeof(nx_nic_req_t));
638 659
639 req.qhdr |= (NX_NIC_REQUEST << 23); 660 req.qhdr = cpu_to_le64(NX_NIC_REQUEST << 23);
640 req.req_hdr |= NETXEN_CONFIG_INTR_COALESCE; 661
641 req.req_hdr |= ((u64)adapter->portnum << 16); 662 word = NETXEN_CONFIG_INTR_COALESCE | ((u64)adapter->portnum << 16);
663 req.req_hdr = cpu_to_le64(word);
642 664
643 memcpy(&req.words[0], &adapter->coal, sizeof(adapter->coal)); 665 memcpy(&req.words[0], &adapter->coal, sizeof(adapter->coal));
644 666
@@ -772,13 +794,10 @@ int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, __le64 *mac)
772 adapter->hw_read_wx(adapter, crbaddr, &mac_lo, 4); 794 adapter->hw_read_wx(adapter, crbaddr, &mac_lo, 4);
773 adapter->hw_read_wx(adapter, crbaddr+4, &mac_hi, 4); 795 adapter->hw_read_wx(adapter, crbaddr+4, &mac_hi, 4);
774 796
775 mac_hi = cpu_to_le32(mac_hi);
776 mac_lo = cpu_to_le32(mac_lo);
777
778 if (pci_func & 1) 797 if (pci_func & 1)
779 *mac = ((mac_lo >> 16) | ((u64)mac_hi << 16)); 798 *mac = le64_to_cpu((mac_lo >> 16) | ((u64)mac_hi << 16));
780 else 799 else
781 *mac = ((mac_lo) | ((u64)mac_hi << 32)); 800 *mac = le64_to_cpu((u64)mac_lo | ((u64)mac_hi << 32));
782 801
783 return 0; 802 return 0;
784} 803}
@@ -937,7 +956,7 @@ int netxen_load_firmware(struct netxen_adapter *adapter)
937{ 956{
938 int i; 957 int i;
939 u32 data, size = 0; 958 u32 data, size = 0;
940 u32 flashaddr = NETXEN_BOOTLD_START, memaddr = NETXEN_BOOTLD_START; 959 u32 flashaddr = NETXEN_BOOTLD_START;
941 960
942 size = (NETXEN_IMAGE_START - NETXEN_BOOTLD_START)/4; 961 size = (NETXEN_IMAGE_START - NETXEN_BOOTLD_START)/4;
943 962
@@ -949,10 +968,8 @@ int netxen_load_firmware(struct netxen_adapter *adapter)
949 if (netxen_rom_fast_read(adapter, flashaddr, (int *)&data) != 0) 968 if (netxen_rom_fast_read(adapter, flashaddr, (int *)&data) != 0)
950 return -EIO; 969 return -EIO;
951 970
952 adapter->pci_mem_write(adapter, memaddr, &data, 4); 971 adapter->pci_mem_write(adapter, flashaddr, &data, 4);
953 flashaddr += 4; 972 flashaddr += 4;
954 memaddr += 4;
955 cond_resched();
956 } 973 }
957 msleep(1); 974 msleep(1);
958 975
@@ -2034,7 +2051,13 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter)
2034 rv = -1; 2051 rv = -1;
2035 } 2052 }
2036 2053
2037 DPRINTK(INFO, "Discovered board type:0x%x ", boardinfo->board_type); 2054 if (boardinfo->board_type == NETXEN_BRDTYPE_P3_4_GB_MM) {
2055 u32 gpio = netxen_nic_reg_read(adapter,
2056 NETXEN_ROMUSB_GLB_PAD_GPIO_I);
2057 if ((gpio & 0x8000) == 0)
2058 boardinfo->board_type = NETXEN_BRDTYPE_P3_10G_TP;
2059 }
2060
2038 switch ((netxen_brdtype_t) boardinfo->board_type) { 2061 switch ((netxen_brdtype_t) boardinfo->board_type) {
2039 case NETXEN_BRDTYPE_P2_SB35_4G: 2062 case NETXEN_BRDTYPE_P2_SB35_4G:
2040 adapter->ahw.board_type = NETXEN_NIC_GBE; 2063 adapter->ahw.board_type = NETXEN_NIC_GBE;
@@ -2053,7 +2076,6 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter)
2053 case NETXEN_BRDTYPE_P3_10G_SFP_QT: 2076 case NETXEN_BRDTYPE_P3_10G_SFP_QT:
2054 case NETXEN_BRDTYPE_P3_10G_XFP: 2077 case NETXEN_BRDTYPE_P3_10G_XFP:
2055 case NETXEN_BRDTYPE_P3_10000_BASE_T: 2078 case NETXEN_BRDTYPE_P3_10000_BASE_T:
2056
2057 adapter->ahw.board_type = NETXEN_NIC_XGBE; 2079 adapter->ahw.board_type = NETXEN_NIC_XGBE;
2058 break; 2080 break;
2059 case NETXEN_BRDTYPE_P1_BD: 2081 case NETXEN_BRDTYPE_P1_BD:
@@ -2063,9 +2085,12 @@ int netxen_nic_get_board_info(struct netxen_adapter *adapter)
2063 case NETXEN_BRDTYPE_P3_REF_QG: 2085 case NETXEN_BRDTYPE_P3_REF_QG:
2064 case NETXEN_BRDTYPE_P3_4_GB: 2086 case NETXEN_BRDTYPE_P3_4_GB:
2065 case NETXEN_BRDTYPE_P3_4_GB_MM: 2087 case NETXEN_BRDTYPE_P3_4_GB_MM:
2066
2067 adapter->ahw.board_type = NETXEN_NIC_GBE; 2088 adapter->ahw.board_type = NETXEN_NIC_GBE;
2068 break; 2089 break;
2090 case NETXEN_BRDTYPE_P3_10G_TP:
2091 adapter->ahw.board_type = (adapter->portnum < 2) ?
2092 NETXEN_NIC_XGBE : NETXEN_NIC_GBE;
2093 break;
2069 default: 2094 default:
2070 printk("%s: Unknown(%x)\n", netxen_nic_driver_name, 2095 printk("%s: Unknown(%x)\n", netxen_nic_driver_name,
2071 boardinfo->board_type); 2096 boardinfo->board_type);
@@ -2110,12 +2135,16 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
2110{ 2135{
2111 __u32 status; 2136 __u32 status;
2112 __u32 autoneg; 2137 __u32 autoneg;
2113 __u32 mode;
2114 __u32 port_mode; 2138 __u32 port_mode;
2115 2139
2116 netxen_nic_read_w0(adapter, NETXEN_NIU_MODE, &mode); 2140 if (!netif_carrier_ok(adapter->netdev)) {
2117 if (netxen_get_niu_enable_ge(mode)) { /* Gb 10/100/1000 Mbps mode */ 2141 adapter->link_speed = 0;
2142 adapter->link_duplex = -1;
2143 adapter->link_autoneg = AUTONEG_ENABLE;
2144 return;
2145 }
2118 2146
2147 if (adapter->ahw.board_type == NETXEN_NIC_GBE) {
2119 adapter->hw_read_wx(adapter, 2148 adapter->hw_read_wx(adapter,
2120 NETXEN_PORT_MODE_ADDR, &port_mode, 4); 2149 NETXEN_PORT_MODE_ADDR, &port_mode, 4);
2121 if (port_mode == NETXEN_PORT_MODE_802_3_AP) { 2150 if (port_mode == NETXEN_PORT_MODE_802_3_AP) {
@@ -2141,7 +2170,7 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
2141 adapter->link_speed = SPEED_1000; 2170 adapter->link_speed = SPEED_1000;
2142 break; 2171 break;
2143 default: 2172 default:
2144 adapter->link_speed = -1; 2173 adapter->link_speed = 0;
2145 break; 2174 break;
2146 } 2175 }
2147 switch (netxen_get_phy_duplex(status)) { 2176 switch (netxen_get_phy_duplex(status)) {
@@ -2164,7 +2193,7 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
2164 goto link_down; 2193 goto link_down;
2165 } else { 2194 } else {
2166 link_down: 2195 link_down:
2167 adapter->link_speed = -1; 2196 adapter->link_speed = 0;
2168 adapter->link_duplex = -1; 2197 adapter->link_duplex = -1;
2169 } 2198 }
2170 } 2199 }
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index d924468e506e..ca7c8d8050c9 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -308,7 +308,6 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter)
308 } 308 }
309 memset(rds_ring->rx_buf_arr, 0, RCV_BUFFSIZE); 309 memset(rds_ring->rx_buf_arr, 0, RCV_BUFFSIZE);
310 INIT_LIST_HEAD(&rds_ring->free_list); 310 INIT_LIST_HEAD(&rds_ring->free_list);
311 rds_ring->begin_alloc = 0;
312 /* 311 /*
313 * Now go through all of them, set reference handles 312 * Now go through all of them, set reference handles
314 * and put them in the queues. 313 * and put them in the queues.
@@ -439,6 +438,8 @@ static int netxen_wait_rom_done(struct netxen_adapter *adapter)
439 long timeout = 0; 438 long timeout = 0;
440 long done = 0; 439 long done = 0;
441 440
441 cond_resched();
442
442 while (done == 0) { 443 while (done == 0) {
443 done = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_GLB_STATUS); 444 done = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_GLB_STATUS);
444 done &= 2; 445 done &= 2;
@@ -533,12 +534,9 @@ static int do_rom_fast_write(struct netxen_adapter *adapter, int addr,
533static int do_rom_fast_read(struct netxen_adapter *adapter, 534static int do_rom_fast_read(struct netxen_adapter *adapter,
534 int addr, int *valp) 535 int addr, int *valp)
535{ 536{
536 cond_resched();
537
538 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ADDRESS, addr); 537 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ADDRESS, addr);
539 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 3);
540 udelay(100); /* prevent bursting on CRB */
541 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0); 538 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0);
539 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 3);
542 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_INSTR_OPCODE, 0xb); 540 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_INSTR_OPCODE, 0xb);
543 if (netxen_wait_rom_done(adapter)) { 541 if (netxen_wait_rom_done(adapter)) {
544 printk("Error waiting for rom done\n"); 542 printk("Error waiting for rom done\n");
@@ -546,7 +544,7 @@ static int do_rom_fast_read(struct netxen_adapter *adapter,
546 } 544 }
547 /* reset abyte_cnt and dummy_byte_cnt */ 545 /* reset abyte_cnt and dummy_byte_cnt */
548 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 0); 546 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_ABYTE_CNT, 0);
549 udelay(100); /* prevent bursting on CRB */ 547 udelay(10);
550 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0); 548 netxen_nic_reg_write(adapter, NETXEN_ROMUSB_ROM_DUMMY_BYTE_CNT, 0);
551 549
552 *valp = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_ROM_RDATA); 550 *valp = netxen_nic_reg_read(adapter, NETXEN_ROMUSB_ROM_RDATA);
@@ -884,14 +882,16 @@ int netxen_flash_unlock(struct netxen_adapter *adapter)
884int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose) 882int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
885{ 883{
886 int addr, val; 884 int addr, val;
887 int i, init_delay = 0; 885 int i, n, init_delay = 0;
888 struct crb_addr_pair *buf; 886 struct crb_addr_pair *buf;
889 unsigned offset, n; 887 unsigned offset;
890 u32 off; 888 u32 off;
891 889
892 /* resetall */ 890 /* resetall */
891 rom_lock(adapter);
893 netxen_crb_writelit_adapter(adapter, NETXEN_ROMUSB_GLB_SW_RESET, 892 netxen_crb_writelit_adapter(adapter, NETXEN_ROMUSB_GLB_SW_RESET,
894 0xffffffff); 893 0xffffffff);
894 netxen_rom_unlock(adapter);
895 895
896 if (verbose) { 896 if (verbose) {
897 if (netxen_rom_fast_read(adapter, NETXEN_BOARDTYPE, &val) == 0) 897 if (netxen_rom_fast_read(adapter, NETXEN_BOARDTYPE, &val) == 0)
@@ -910,7 +910,7 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
910 910
911 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { 911 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
912 if (netxen_rom_fast_read(adapter, 0, &n) != 0 || 912 if (netxen_rom_fast_read(adapter, 0, &n) != 0 ||
913 (n != 0xcafecafeUL) || 913 (n != 0xcafecafe) ||
914 netxen_rom_fast_read(adapter, 4, &n) != 0) { 914 netxen_rom_fast_read(adapter, 4, &n) != 0) {
915 printk(KERN_ERR "%s: ERROR Reading crb_init area: " 915 printk(KERN_ERR "%s: ERROR Reading crb_init area: "
916 "n: %08x\n", netxen_nic_driver_name, n); 916 "n: %08x\n", netxen_nic_driver_name, n);
@@ -975,6 +975,14 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
975 /* do not reset PCI */ 975 /* do not reset PCI */
976 if (off == (ROMUSB_GLB + 0xbc)) 976 if (off == (ROMUSB_GLB + 0xbc))
977 continue; 977 continue;
978 if (off == (ROMUSB_GLB + 0xa8))
979 continue;
980 if (off == (ROMUSB_GLB + 0xc8)) /* core clock */
981 continue;
982 if (off == (ROMUSB_GLB + 0x24)) /* MN clock */
983 continue;
984 if (off == (ROMUSB_GLB + 0x1c)) /* MS clock */
985 continue;
978 if (off == (NETXEN_CRB_PEG_NET_1 + 0x18)) 986 if (off == (NETXEN_CRB_PEG_NET_1 + 0x18))
979 buf[i].data = 0x1020; 987 buf[i].data = 0x1020;
980 /* skip the function enable register */ 988 /* skip the function enable register */
@@ -992,23 +1000,21 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
992 continue; 1000 continue;
993 } 1001 }
994 1002
1003 init_delay = 1;
995 /* After writing this register, HW needs time for CRB */ 1004 /* After writing this register, HW needs time for CRB */
996 /* to quiet down (else crb_window returns 0xffffffff) */ 1005 /* to quiet down (else crb_window returns 0xffffffff) */
997 if (off == NETXEN_ROMUSB_GLB_SW_RESET) { 1006 if (off == NETXEN_ROMUSB_GLB_SW_RESET) {
998 init_delay = 1; 1007 init_delay = 1000;
999 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { 1008 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
1000 /* hold xdma in reset also */ 1009 /* hold xdma in reset also */
1001 buf[i].data = NETXEN_NIC_XDMA_RESET; 1010 buf[i].data = NETXEN_NIC_XDMA_RESET;
1011 buf[i].data = 0x8000ff;
1002 } 1012 }
1003 } 1013 }
1004 1014
1005 adapter->hw_write_wx(adapter, off, &buf[i].data, 4); 1015 adapter->hw_write_wx(adapter, off, &buf[i].data, 4);
1006 1016
1007 if (init_delay == 1) { 1017 msleep(init_delay);
1008 msleep(1000);
1009 init_delay = 0;
1010 }
1011 msleep(1);
1012 } 1018 }
1013 kfree(buf); 1019 kfree(buf);
1014 1020
@@ -1277,7 +1283,7 @@ static void netxen_process_rcv(struct netxen_adapter *adapter, int ctxid,
1277 1283
1278 dev_kfree_skb_any(skb); 1284 dev_kfree_skb_any(skb);
1279 for (i = 0; i < nr_frags; i++) { 1285 for (i = 0; i < nr_frags; i++) {
1280 index = frag_desc->frag_handles[i]; 1286 index = le16_to_cpu(frag_desc->frag_handles[i]);
1281 skb = netxen_process_rxbuf(adapter, 1287 skb = netxen_process_rxbuf(adapter,
1282 rds_ring, index, cksum); 1288 rds_ring, index, cksum);
1283 if (skb) 1289 if (skb)
@@ -1428,7 +1434,6 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
1428 struct rcv_desc *pdesc; 1434 struct rcv_desc *pdesc;
1429 struct netxen_rx_buffer *buffer; 1435 struct netxen_rx_buffer *buffer;
1430 int count = 0; 1436 int count = 0;
1431 int index = 0;
1432 netxen_ctx_msg msg = 0; 1437 netxen_ctx_msg msg = 0;
1433 dma_addr_t dma; 1438 dma_addr_t dma;
1434 struct list_head *head; 1439 struct list_head *head;
@@ -1436,7 +1441,6 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
1436 rds_ring = &recv_ctx->rds_rings[ringid]; 1441 rds_ring = &recv_ctx->rds_rings[ringid];
1437 1442
1438 producer = rds_ring->producer; 1443 producer = rds_ring->producer;
1439 index = rds_ring->begin_alloc;
1440 head = &rds_ring->free_list; 1444 head = &rds_ring->free_list;
1441 1445
1442 /* We can start writing rx descriptors into the phantom memory. */ 1446 /* We can start writing rx descriptors into the phantom memory. */
@@ -1444,39 +1448,37 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid)
1444 1448
1445 skb = dev_alloc_skb(rds_ring->skb_size); 1449 skb = dev_alloc_skb(rds_ring->skb_size);
1446 if (unlikely(!skb)) { 1450 if (unlikely(!skb)) {
1447 rds_ring->begin_alloc = index;
1448 break; 1451 break;
1449 } 1452 }
1450 1453
1454 if (!adapter->ahw.cut_through)
1455 skb_reserve(skb, 2);
1456
1457 dma = pci_map_single(pdev, skb->data,
1458 rds_ring->dma_size, PCI_DMA_FROMDEVICE);
1459 if (pci_dma_mapping_error(pdev, dma)) {
1460 dev_kfree_skb_any(skb);
1461 break;
1462 }
1463
1464 count++;
1451 buffer = list_entry(head->next, struct netxen_rx_buffer, list); 1465 buffer = list_entry(head->next, struct netxen_rx_buffer, list);
1452 list_del(&buffer->list); 1466 list_del(&buffer->list);
1453 1467
1454 count++; /* now there should be no failure */
1455 pdesc = &rds_ring->desc_head[producer];
1456
1457 if (!adapter->ahw.cut_through)
1458 skb_reserve(skb, 2);
1459 /* This will be setup when we receive the
1460 * buffer after it has been filled FSL TBD TBD
1461 * skb->dev = netdev;
1462 */
1463 dma = pci_map_single(pdev, skb->data, rds_ring->dma_size,
1464 PCI_DMA_FROMDEVICE);
1465 pdesc->addr_buffer = cpu_to_le64(dma);
1466 buffer->skb = skb; 1468 buffer->skb = skb;
1467 buffer->state = NETXEN_BUFFER_BUSY; 1469 buffer->state = NETXEN_BUFFER_BUSY;
1468 buffer->dma = dma; 1470 buffer->dma = dma;
1471
1469 /* make a rcv descriptor */ 1472 /* make a rcv descriptor */
1473 pdesc = &rds_ring->desc_head[producer];
1474 pdesc->addr_buffer = cpu_to_le64(dma);
1470 pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); 1475 pdesc->reference_handle = cpu_to_le16(buffer->ref_handle);
1471 pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size); 1476 pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size);
1472 DPRINTK(INFO, "done writing descripter\n"); 1477
1473 producer = 1478 producer = get_next_index(producer, rds_ring->max_rx_desc_count);
1474 get_next_index(producer, rds_ring->max_rx_desc_count);
1475 index = get_next_index(index, rds_ring->max_rx_desc_count);
1476 } 1479 }
1477 /* if we did allocate buffers, then write the count to Phantom */ 1480 /* if we did allocate buffers, then write the count to Phantom */
1478 if (count) { 1481 if (count) {
1479 rds_ring->begin_alloc = index;
1480 rds_ring->producer = producer; 1482 rds_ring->producer = producer;
1481 /* Window = 1 */ 1483 /* Window = 1 */
1482 adapter->pci_write_normalize(adapter, 1484 adapter->pci_write_normalize(adapter,
@@ -1515,49 +1517,50 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter,
1515 struct rcv_desc *pdesc; 1517 struct rcv_desc *pdesc;
1516 struct netxen_rx_buffer *buffer; 1518 struct netxen_rx_buffer *buffer;
1517 int count = 0; 1519 int count = 0;
1518 int index = 0;
1519 struct list_head *head; 1520 struct list_head *head;
1521 dma_addr_t dma;
1520 1522
1521 rds_ring = &recv_ctx->rds_rings[ringid]; 1523 rds_ring = &recv_ctx->rds_rings[ringid];
1522 1524
1523 producer = rds_ring->producer; 1525 producer = rds_ring->producer;
1524 index = rds_ring->begin_alloc;
1525 head = &rds_ring->free_list; 1526 head = &rds_ring->free_list;
1526 /* We can start writing rx descriptors into the phantom memory. */ 1527 /* We can start writing rx descriptors into the phantom memory. */
1527 while (!list_empty(head)) { 1528 while (!list_empty(head)) {
1528 1529
1529 skb = dev_alloc_skb(rds_ring->skb_size); 1530 skb = dev_alloc_skb(rds_ring->skb_size);
1530 if (unlikely(!skb)) { 1531 if (unlikely(!skb)) {
1531 rds_ring->begin_alloc = index;
1532 break; 1532 break;
1533 } 1533 }
1534 1534
1535 if (!adapter->ahw.cut_through)
1536 skb_reserve(skb, 2);
1537
1538 dma = pci_map_single(pdev, skb->data,
1539 rds_ring->dma_size, PCI_DMA_FROMDEVICE);
1540 if (pci_dma_mapping_error(pdev, dma)) {
1541 dev_kfree_skb_any(skb);
1542 break;
1543 }
1544
1545 count++;
1535 buffer = list_entry(head->next, struct netxen_rx_buffer, list); 1546 buffer = list_entry(head->next, struct netxen_rx_buffer, list);
1536 list_del(&buffer->list); 1547 list_del(&buffer->list);
1537 1548
1538 count++; /* now there should be no failure */
1539 pdesc = &rds_ring->desc_head[producer];
1540 if (!adapter->ahw.cut_through)
1541 skb_reserve(skb, 2);
1542 buffer->skb = skb; 1549 buffer->skb = skb;
1543 buffer->state = NETXEN_BUFFER_BUSY; 1550 buffer->state = NETXEN_BUFFER_BUSY;
1544 buffer->dma = pci_map_single(pdev, skb->data, 1551 buffer->dma = dma;
1545 rds_ring->dma_size,
1546 PCI_DMA_FROMDEVICE);
1547 1552
1548 /* make a rcv descriptor */ 1553 /* make a rcv descriptor */
1554 pdesc = &rds_ring->desc_head[producer];
1549 pdesc->reference_handle = cpu_to_le16(buffer->ref_handle); 1555 pdesc->reference_handle = cpu_to_le16(buffer->ref_handle);
1550 pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size); 1556 pdesc->buffer_length = cpu_to_le32(rds_ring->dma_size);
1551 pdesc->addr_buffer = cpu_to_le64(buffer->dma); 1557 pdesc->addr_buffer = cpu_to_le64(buffer->dma);
1552 producer = 1558
1553 get_next_index(producer, rds_ring->max_rx_desc_count); 1559 producer = get_next_index(producer, rds_ring->max_rx_desc_count);
1554 index = get_next_index(index, rds_ring->max_rx_desc_count);
1555 buffer = &rds_ring->rx_buf_arr[index];
1556 } 1560 }
1557 1561
1558 /* if we did allocate buffers, then write the count to Phantom */ 1562 /* if we did allocate buffers, then write the count to Phantom */
1559 if (count) { 1563 if (count) {
1560 rds_ring->begin_alloc = index;
1561 rds_ring->producer = producer; 1564 rds_ring->producer = producer;
1562 /* Window = 1 */ 1565 /* Window = 1 */
1563 adapter->pci_write_normalize(adapter, 1566 adapter->pci_write_normalize(adapter,
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index ba01524b5531..645d384fe87e 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -39,7 +39,9 @@
39#include "netxen_nic_phan_reg.h" 39#include "netxen_nic_phan_reg.h"
40 40
41#include <linux/dma-mapping.h> 41#include <linux/dma-mapping.h>
42#include <linux/if_vlan.h>
42#include <net/ip.h> 43#include <net/ip.h>
44#include <linux/ipv6.h>
43 45
44MODULE_DESCRIPTION("NetXen Multi port (1/10) Gigabit Network Driver"); 46MODULE_DESCRIPTION("NetXen Multi port (1/10) Gigabit Network Driver");
45MODULE_LICENSE("GPL"); 47MODULE_LICENSE("GPL");
@@ -242,7 +244,7 @@ static void netxen_check_options(struct netxen_adapter *adapter)
242 case NETXEN_BRDTYPE_P3_4_GB: 244 case NETXEN_BRDTYPE_P3_4_GB:
243 case NETXEN_BRDTYPE_P3_4_GB_MM: 245 case NETXEN_BRDTYPE_P3_4_GB_MM:
244 adapter->msix_supported = !!use_msi_x; 246 adapter->msix_supported = !!use_msi_x;
245 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_10G; 247 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G;
246 break; 248 break;
247 249
248 case NETXEN_BRDTYPE_P2_SB35_4G: 250 case NETXEN_BRDTYPE_P2_SB35_4G:
@@ -251,6 +253,14 @@ static void netxen_check_options(struct netxen_adapter *adapter)
251 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; 253 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G;
252 break; 254 break;
253 255
256 case NETXEN_BRDTYPE_P3_10G_TP:
257 adapter->msix_supported = !!use_msi_x;
258 if (adapter->ahw.board_type == NETXEN_NIC_XGBE)
259 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_10G;
260 else
261 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G;
262 break;
263
254 default: 264 default:
255 adapter->msix_supported = 0; 265 adapter->msix_supported = 0;
256 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G; 266 adapter->max_rx_desc_count = MAX_RCV_DESCRIPTORS_1G;
@@ -271,10 +281,15 @@ static void netxen_check_options(struct netxen_adapter *adapter)
271static int 281static int
272netxen_check_hw_init(struct netxen_adapter *adapter, int first_boot) 282netxen_check_hw_init(struct netxen_adapter *adapter, int first_boot)
273{ 283{
274 int ret = 0; 284 u32 val, timeout;
275 285
276 if (first_boot == 0x55555555) { 286 if (first_boot == 0x55555555) {
277 /* This is the first boot after power up */ 287 /* This is the first boot after power up */
288 adapter->pci_write_normalize(adapter,
289 NETXEN_CAM_RAM(0x1fc), NETXEN_BDINFO_MAGIC);
290
291 if (!NX_IS_REVISION_P2(adapter->ahw.revision_id))
292 return 0;
278 293
279 /* PCI bus master workaround */ 294 /* PCI bus master workaround */
280 adapter->hw_read_wx(adapter, 295 adapter->hw_read_wx(adapter,
@@ -294,18 +309,26 @@ netxen_check_hw_init(struct netxen_adapter *adapter, int first_boot)
294 /* clear the register for future unloads/loads */ 309 /* clear the register for future unloads/loads */
295 adapter->pci_write_normalize(adapter, 310 adapter->pci_write_normalize(adapter,
296 NETXEN_CAM_RAM(0x1fc), 0); 311 NETXEN_CAM_RAM(0x1fc), 0);
297 ret = -1; 312 return -EIO;
298 } 313 }
299 314
300 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { 315 /* Start P2 boot loader */
301 /* Start P2 boot loader */ 316 val = adapter->pci_read_normalize(adapter,
302 adapter->pci_write_normalize(adapter, 317 NETXEN_ROMUSB_GLB_PEGTUNE_DONE);
303 NETXEN_CAM_RAM(0x1fc), NETXEN_BDINFO_MAGIC); 318 adapter->pci_write_normalize(adapter,
304 adapter->pci_write_normalize(adapter, 319 NETXEN_ROMUSB_GLB_PEGTUNE_DONE, val | 0x1);
305 NETXEN_ROMUSB_GLB_PEGTUNE_DONE, 1); 320 timeout = 0;
306 } 321 do {
322 msleep(1);
323 val = adapter->pci_read_normalize(adapter,
324 NETXEN_CAM_RAM(0x1fc));
325
326 if (++timeout > 5000)
327 return -EIO;
328
329 } while (val == NETXEN_BDINFO_MAGIC);
307 } 330 }
308 return ret; 331 return 0;
309} 332}
310 333
311static void netxen_set_port_mode(struct netxen_adapter *adapter) 334static void netxen_set_port_mode(struct netxen_adapter *adapter)
@@ -712,17 +735,18 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
712 735
713 SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops); 736 SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops);
714 737
715 /* ScatterGather support */ 738 netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO);
716 netdev->features = NETIF_F_SG; 739 netdev->vlan_features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO);
717 netdev->features |= NETIF_F_IP_CSUM; 740
718 netdev->features |= NETIF_F_TSO;
719 if (NX_IS_REVISION_P3(revision_id)) { 741 if (NX_IS_REVISION_P3(revision_id)) {
720 netdev->features |= NETIF_F_IPV6_CSUM; 742 netdev->features |= (NETIF_F_IPV6_CSUM | NETIF_F_TSO6);
721 netdev->features |= NETIF_F_TSO6; 743 netdev->vlan_features |= (NETIF_F_IPV6_CSUM | NETIF_F_TSO6);
722 } 744 }
723 745
724 if (adapter->pci_using_dac) 746 if (adapter->pci_using_dac) {
725 netdev->features |= NETIF_F_HIGHDMA; 747 netdev->features |= NETIF_F_HIGHDMA;
748 netdev->vlan_features |= NETIF_F_HIGHDMA;
749 }
726 750
727 /* 751 /*
728 * Set the CRB window to invalid. If any register in window 0 is 752 * Set the CRB window to invalid. If any register in window 0 is
@@ -784,8 +808,8 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
784 CRB_CMDPEG_STATE, 0); 808 CRB_CMDPEG_STATE, 0);
785 netxen_pinit_from_rom(adapter, 0); 809 netxen_pinit_from_rom(adapter, 0);
786 msleep(1); 810 msleep(1);
787 netxen_load_firmware(adapter);
788 } 811 }
812 netxen_load_firmware(adapter);
789 813
790 if (NX_IS_REVISION_P3(revision_id)) 814 if (NX_IS_REVISION_P3(revision_id))
791 netxen_pcie_strap_init(adapter); 815 netxen_pcie_strap_init(adapter);
@@ -801,13 +825,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
801 825
802 } 826 }
803 827
804 if ((first_boot == 0x55555555) &&
805 (NX_IS_REVISION_P2(revision_id))) {
806 /* Unlock the HW, prompting the boot sequence */
807 adapter->pci_write_normalize(adapter,
808 NETXEN_ROMUSB_GLB_PEGTUNE_DONE, 1);
809 }
810
811 err = netxen_initialize_adapter_offload(adapter); 828 err = netxen_initialize_adapter_offload(adapter);
812 if (err) 829 if (err)
813 goto err_out_iounmap; 830 goto err_out_iounmap;
@@ -821,7 +838,9 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
821 adapter->pci_write_normalize(adapter, CRB_DRIVER_VERSION, i); 838 adapter->pci_write_normalize(adapter, CRB_DRIVER_VERSION, i);
822 839
823 /* Handshake with the card before we register the devices. */ 840 /* Handshake with the card before we register the devices. */
824 netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE); 841 err = netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
842 if (err)
843 goto err_out_free_offload;
825 844
826 } /* first_driver */ 845 } /* first_driver */
827 846
@@ -925,6 +944,7 @@ err_out_disable_msi:
925 if (adapter->flags & NETXEN_NIC_MSI_ENABLED) 944 if (adapter->flags & NETXEN_NIC_MSI_ENABLED)
926 pci_disable_msi(pdev); 945 pci_disable_msi(pdev);
927 946
947err_out_free_offload:
928 if (first_driver) 948 if (first_driver)
929 netxen_free_adapter_offload(adapter); 949 netxen_free_adapter_offload(adapter);
930 950
@@ -968,6 +988,9 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
968 netxen_free_hw_resources(adapter); 988 netxen_free_hw_resources(adapter);
969 netxen_release_rx_buffers(adapter); 989 netxen_release_rx_buffers(adapter);
970 netxen_free_sw_resources(adapter); 990 netxen_free_sw_resources(adapter);
991
992 if (NX_IS_REVISION_P3(adapter->ahw.revision_id))
993 netxen_p3_free_mac_list(adapter);
971 } 994 }
972 995
973 if (adapter->portnum == 0) 996 if (adapter->portnum == 0)
@@ -983,8 +1006,10 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
983 1006
984 iounmap(adapter->ahw.db_base); 1007 iounmap(adapter->ahw.db_base);
985 iounmap(adapter->ahw.pci_base0); 1008 iounmap(adapter->ahw.pci_base0);
986 iounmap(adapter->ahw.pci_base1); 1009 if (adapter->ahw.pci_base1 != NULL)
987 iounmap(adapter->ahw.pci_base2); 1010 iounmap(adapter->ahw.pci_base1);
1011 if (adapter->ahw.pci_base2 != NULL)
1012 iounmap(adapter->ahw.pci_base2);
988 1013
989 pci_release_regions(pdev); 1014 pci_release_regions(pdev);
990 pci_disable_device(pdev); 1015 pci_disable_device(pdev);
@@ -1137,29 +1162,72 @@ static int netxen_nic_close(struct net_device *netdev)
1137 return 0; 1162 return 0;
1138} 1163}
1139 1164
1140void netxen_tso_check(struct netxen_adapter *adapter, 1165static bool netxen_tso_check(struct net_device *netdev,
1141 struct cmd_desc_type0 *desc, struct sk_buff *skb) 1166 struct cmd_desc_type0 *desc, struct sk_buff *skb)
1142{ 1167{
1143 if (desc->mss) { 1168 bool tso = false;
1144 desc->total_hdr_length = (sizeof(struct ethhdr) + 1169 u8 opcode = TX_ETHER_PKT;
1145 ip_hdrlen(skb) + tcp_hdrlen(skb)); 1170 __be16 protocol = skb->protocol;
1171 u16 flags = 0;
1172
1173 if (protocol == __constant_htons(ETH_P_8021Q)) {
1174 struct vlan_ethhdr *vh = (struct vlan_ethhdr *)skb->data;
1175 protocol = vh->h_vlan_encapsulated_proto;
1176 flags = FLAGS_VLAN_TAGGED;
1177 }
1146 1178
1147 if ((NX_IS_REVISION_P3(adapter->ahw.revision_id)) && 1179 if ((netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) &&
1148 (skb->protocol == htons(ETH_P_IPV6))) 1180 skb_shinfo(skb)->gso_size > 0) {
1149 netxen_set_cmd_desc_opcode(desc, TX_TCP_LSO6); 1181
1150 else 1182 desc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
1151 netxen_set_cmd_desc_opcode(desc, TX_TCP_LSO); 1183 desc->total_hdr_length =
1184 skb_transport_offset(skb) + tcp_hdrlen(skb);
1185
1186 opcode = (protocol == __constant_htons(ETH_P_IPV6)) ?
1187 TX_TCP_LSO6 : TX_TCP_LSO;
1188 tso = true;
1152 1189
1153 } else if (skb->ip_summed == CHECKSUM_PARTIAL) { 1190 } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
1154 if (ip_hdr(skb)->protocol == IPPROTO_TCP) 1191 u8 l4proto;
1155 netxen_set_cmd_desc_opcode(desc, TX_TCP_PKT); 1192
1156 else if (ip_hdr(skb)->protocol == IPPROTO_UDP) 1193 if (protocol == __constant_htons(ETH_P_IP)) {
1157 netxen_set_cmd_desc_opcode(desc, TX_UDP_PKT); 1194 l4proto = ip_hdr(skb)->protocol;
1158 else 1195
1159 return; 1196 if (l4proto == IPPROTO_TCP)
1197 opcode = TX_TCP_PKT;
1198 else if(l4proto == IPPROTO_UDP)
1199 opcode = TX_UDP_PKT;
1200 } else if (protocol == __constant_htons(ETH_P_IPV6)) {
1201 l4proto = ipv6_hdr(skb)->nexthdr;
1202
1203 if (l4proto == IPPROTO_TCP)
1204 opcode = TX_TCPV6_PKT;
1205 else if(l4proto == IPPROTO_UDP)
1206 opcode = TX_UDPV6_PKT;
1207 }
1160 } 1208 }
1161 desc->tcp_hdr_offset = skb_transport_offset(skb); 1209 desc->tcp_hdr_offset = skb_transport_offset(skb);
1162 desc->ip_hdr_offset = skb_network_offset(skb); 1210 desc->ip_hdr_offset = skb_network_offset(skb);
1211 netxen_set_tx_flags_opcode(desc, flags, opcode);
1212 return tso;
1213}
1214
1215static void
1216netxen_clean_tx_dma_mapping(struct pci_dev *pdev,
1217 struct netxen_cmd_buffer *pbuf, int last)
1218{
1219 int k;
1220 struct netxen_skb_frag *buffrag;
1221
1222 buffrag = &pbuf->frag_array[0];
1223 pci_unmap_single(pdev, buffrag->dma,
1224 buffrag->length, PCI_DMA_TODEVICE);
1225
1226 for (k = 1; k < last; k++) {
1227 buffrag = &pbuf->frag_array[k];
1228 pci_unmap_page(pdev, buffrag->dma,
1229 buffrag->length, PCI_DMA_TODEVICE);
1230 }
1163} 1231}
1164 1232
1165static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) 1233static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
@@ -1167,33 +1235,22 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1167 struct netxen_adapter *adapter = netdev_priv(netdev); 1235 struct netxen_adapter *adapter = netdev_priv(netdev);
1168 struct netxen_hardware_context *hw = &adapter->ahw; 1236 struct netxen_hardware_context *hw = &adapter->ahw;
1169 unsigned int first_seg_len = skb->len - skb->data_len; 1237 unsigned int first_seg_len = skb->len - skb->data_len;
1238 struct netxen_cmd_buffer *pbuf;
1170 struct netxen_skb_frag *buffrag; 1239 struct netxen_skb_frag *buffrag;
1171 unsigned int i; 1240 struct cmd_desc_type0 *hwdesc;
1241 struct pci_dev *pdev = adapter->pdev;
1242 dma_addr_t temp_dma;
1243 int i, k;
1172 1244
1173 u32 producer, consumer; 1245 u32 producer, consumer;
1174 u32 saved_producer = 0; 1246 int frag_count, no_of_desc;
1175 struct cmd_desc_type0 *hwdesc;
1176 int k;
1177 struct netxen_cmd_buffer *pbuf = NULL;
1178 int frag_count;
1179 int no_of_desc;
1180 u32 num_txd = adapter->max_tx_desc_count; 1247 u32 num_txd = adapter->max_tx_desc_count;
1248 bool is_tso = false;
1181 1249
1182 frag_count = skb_shinfo(skb)->nr_frags + 1; 1250 frag_count = skb_shinfo(skb)->nr_frags + 1;
1183 1251
1184 /* There 4 fragments per descriptor */ 1252 /* There 4 fragments per descriptor */
1185 no_of_desc = (frag_count + 3) >> 2; 1253 no_of_desc = (frag_count + 3) >> 2;
1186 if (netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) {
1187 if (skb_shinfo(skb)->gso_size > 0) {
1188
1189 no_of_desc++;
1190 if ((ip_hdrlen(skb) + tcp_hdrlen(skb) +
1191 sizeof(struct ethhdr)) >
1192 (sizeof(struct cmd_desc_type0) - 2)) {
1193 no_of_desc++;
1194 }
1195 }
1196 }
1197 1254
1198 producer = adapter->cmd_producer; 1255 producer = adapter->cmd_producer;
1199 smp_mb(); 1256 smp_mb();
@@ -1205,34 +1262,26 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1205 } 1262 }
1206 1263
1207 /* Copy the descriptors into the hardware */ 1264 /* Copy the descriptors into the hardware */
1208 saved_producer = producer;
1209 hwdesc = &hw->cmd_desc_head[producer]; 1265 hwdesc = &hw->cmd_desc_head[producer];
1210 memset(hwdesc, 0, sizeof(struct cmd_desc_type0)); 1266 memset(hwdesc, 0, sizeof(struct cmd_desc_type0));
1211 /* Take skb->data itself */ 1267 /* Take skb->data itself */
1212 pbuf = &adapter->cmd_buf_arr[producer]; 1268 pbuf = &adapter->cmd_buf_arr[producer];
1213 if ((netdev->features & (NETIF_F_TSO | NETIF_F_TSO6)) && 1269
1214 skb_shinfo(skb)->gso_size > 0) { 1270 is_tso = netxen_tso_check(netdev, hwdesc, skb);
1215 pbuf->mss = skb_shinfo(skb)->gso_size; 1271
1216 hwdesc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size);
1217 } else {
1218 pbuf->mss = 0;
1219 hwdesc->mss = 0;
1220 }
1221 pbuf->total_length = skb->len;
1222 pbuf->skb = skb; 1272 pbuf->skb = skb;
1223 pbuf->cmd = TX_ETHER_PKT;
1224 pbuf->frag_count = frag_count; 1273 pbuf->frag_count = frag_count;
1225 pbuf->port = adapter->portnum;
1226 buffrag = &pbuf->frag_array[0]; 1274 buffrag = &pbuf->frag_array[0];
1227 buffrag->dma = pci_map_single(adapter->pdev, skb->data, first_seg_len, 1275 temp_dma = pci_map_single(pdev, skb->data, first_seg_len,
1228 PCI_DMA_TODEVICE); 1276 PCI_DMA_TODEVICE);
1277 if (pci_dma_mapping_error(pdev, temp_dma))
1278 goto drop_packet;
1279
1280 buffrag->dma = temp_dma;
1229 buffrag->length = first_seg_len; 1281 buffrag->length = first_seg_len;
1230 netxen_set_cmd_desc_totallength(hwdesc, skb->len); 1282 netxen_set_tx_frags_len(hwdesc, frag_count, skb->len);
1231 netxen_set_cmd_desc_num_of_buff(hwdesc, frag_count); 1283 netxen_set_tx_port(hwdesc, adapter->portnum);
1232 netxen_set_cmd_desc_opcode(hwdesc, TX_ETHER_PKT);
1233 1284
1234 netxen_set_cmd_desc_port(hwdesc, adapter->portnum);
1235 netxen_set_cmd_desc_ctxid(hwdesc, adapter->portnum);
1236 hwdesc->buffer1_length = cpu_to_le16(first_seg_len); 1285 hwdesc->buffer1_length = cpu_to_le16(first_seg_len);
1237 hwdesc->addr_buffer1 = cpu_to_le64(buffrag->dma); 1286 hwdesc->addr_buffer1 = cpu_to_le64(buffrag->dma);
1238 1287
@@ -1240,7 +1289,6 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1240 struct skb_frag_struct *frag; 1289 struct skb_frag_struct *frag;
1241 int len, temp_len; 1290 int len, temp_len;
1242 unsigned long offset; 1291 unsigned long offset;
1243 dma_addr_t temp_dma;
1244 1292
1245 /* move to next desc. if there is a need */ 1293 /* move to next desc. if there is a need */
1246 if ((i & 0x3) == 0) { 1294 if ((i & 0x3) == 0) {
@@ -1256,8 +1304,12 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1256 offset = frag->page_offset; 1304 offset = frag->page_offset;
1257 1305
1258 temp_len = len; 1306 temp_len = len;
1259 temp_dma = pci_map_page(adapter->pdev, frag->page, offset, 1307 temp_dma = pci_map_page(pdev, frag->page, offset,
1260 len, PCI_DMA_TODEVICE); 1308 len, PCI_DMA_TODEVICE);
1309 if (pci_dma_mapping_error(pdev, temp_dma)) {
1310 netxen_clean_tx_dma_mapping(pdev, pbuf, i);
1311 goto drop_packet;
1312 }
1261 1313
1262 buffrag++; 1314 buffrag++;
1263 buffrag->dma = temp_dma; 1315 buffrag->dma = temp_dma;
@@ -1285,16 +1337,12 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1285 } 1337 }
1286 producer = get_next_index(producer, num_txd); 1338 producer = get_next_index(producer, num_txd);
1287 1339
1288 /* might change opcode to TX_TCP_LSO */
1289 netxen_tso_check(adapter, &hw->cmd_desc_head[saved_producer], skb);
1290
1291 /* For LSO, we need to copy the MAC/IP/TCP headers into 1340 /* For LSO, we need to copy the MAC/IP/TCP headers into
1292 * the descriptor ring 1341 * the descriptor ring
1293 */ 1342 */
1294 if (netxen_get_cmd_desc_opcode(&hw->cmd_desc_head[saved_producer]) 1343 if (is_tso) {
1295 == TX_TCP_LSO) {
1296 int hdr_len, first_hdr_len, more_hdr; 1344 int hdr_len, first_hdr_len, more_hdr;
1297 hdr_len = hw->cmd_desc_head[saved_producer].total_hdr_length; 1345 hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
1298 if (hdr_len > (sizeof(struct cmd_desc_type0) - 2)) { 1346 if (hdr_len > (sizeof(struct cmd_desc_type0) - 2)) {
1299 first_hdr_len = sizeof(struct cmd_desc_type0) - 2; 1347 first_hdr_len = sizeof(struct cmd_desc_type0) - 2;
1300 more_hdr = 1; 1348 more_hdr = 1;
@@ -1336,6 +1384,11 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
1336 netdev->trans_start = jiffies; 1384 netdev->trans_start = jiffies;
1337 1385
1338 return NETDEV_TX_OK; 1386 return NETDEV_TX_OK;
1387
1388drop_packet:
1389 adapter->stats.txdropped++;
1390 dev_kfree_skb_any(skb);
1391 return NETDEV_TX_OK;
1339} 1392}
1340 1393
1341static int netxen_nic_check_temp(struct netxen_adapter *adapter) 1394static int netxen_nic_check_temp(struct netxen_adapter *adapter)
@@ -1407,6 +1460,8 @@ static void netxen_nic_handle_phy_intr(struct netxen_adapter *adapter)
1407 netif_carrier_off(netdev); 1460 netif_carrier_off(netdev);
1408 netif_stop_queue(netdev); 1461 netif_stop_queue(netdev);
1409 } 1462 }
1463
1464 netxen_nic_set_link_parameters(adapter);
1410 } else if (!adapter->ahw.linkup && linkup) { 1465 } else if (!adapter->ahw.linkup && linkup) {
1411 printk(KERN_INFO "%s: %s NIC Link is up\n", 1466 printk(KERN_INFO "%s: %s NIC Link is up\n",
1412 netxen_nic_driver_name, netdev->name); 1467 netxen_nic_driver_name, netdev->name);
@@ -1415,6 +1470,8 @@ static void netxen_nic_handle_phy_intr(struct netxen_adapter *adapter)
1415 netif_carrier_on(netdev); 1470 netif_carrier_on(netdev);
1416 netif_wake_queue(netdev); 1471 netif_wake_queue(netdev);
1417 } 1472 }
1473
1474 netxen_nic_set_link_parameters(adapter);
1418 } 1475 }
1419} 1476}
1420 1477
diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c
index 5b7a574ce571..d0349e7d73ea 100644
--- a/drivers/net/pasemi_mac.c
+++ b/drivers/net/pasemi_mac.c
@@ -712,7 +712,7 @@ static inline void pasemi_mac_rx_error(const struct pasemi_mac *mac,
712 rcmdsta = read_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if)); 712 rcmdsta = read_dma_reg(PAS_DMA_RXINT_RCMDSTA(mac->dma_if));
713 ccmdsta = read_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(chan->chno)); 713 ccmdsta = read_dma_reg(PAS_DMA_RXCHAN_CCMDSTA(chan->chno));
714 714
715 printk(KERN_ERR "pasemi_mac: rx error. macrx %016lx, rx status %lx\n", 715 printk(KERN_ERR "pasemi_mac: rx error. macrx %016llx, rx status %llx\n",
716 macrx, *chan->status); 716 macrx, *chan->status);
717 717
718 printk(KERN_ERR "pasemi_mac: rcmdsta %08x ccmdsta %08x\n", 718 printk(KERN_ERR "pasemi_mac: rcmdsta %08x ccmdsta %08x\n",
@@ -730,8 +730,8 @@ static inline void pasemi_mac_tx_error(const struct pasemi_mac *mac,
730 730
731 cmdsta = read_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(chan->chno)); 731 cmdsta = read_dma_reg(PAS_DMA_TXCHAN_TCMDSTA(chan->chno));
732 732
733 printk(KERN_ERR "pasemi_mac: tx error. mactx 0x%016lx, "\ 733 printk(KERN_ERR "pasemi_mac: tx error. mactx 0x%016llx, "\
734 "tx status 0x%016lx\n", mactx, *chan->status); 734 "tx status 0x%016llx\n", mactx, *chan->status);
735 735
736 printk(KERN_ERR "pasemi_mac: tcmdsta 0x%08x\n", cmdsta); 736 printk(KERN_ERR "pasemi_mac: tcmdsta 0x%08x\n", cmdsta);
737} 737}
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index 11adf6ed4628..811a637695ca 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -296,9 +296,8 @@ static int mdio_bus_suspend(struct device * dev, pm_message_t state)
296 struct phy_driver *phydrv = to_phy_driver(drv); 296 struct phy_driver *phydrv = to_phy_driver(drv);
297 struct phy_device *phydev = to_phy_device(dev); 297 struct phy_device *phydev = to_phy_device(dev);
298 298
299 if ((!device_may_wakeup(phydev->dev.parent)) && 299 if (drv && phydrv->suspend && !device_may_wakeup(phydev->dev.parent))
300 (phydrv && phydrv->suspend)) 300 ret = phydrv->suspend(phydev);
301 ret = phydrv->suspend(phydev);
302 301
303 return ret; 302 return ret;
304} 303}
@@ -310,8 +309,7 @@ static int mdio_bus_resume(struct device * dev)
310 struct phy_driver *phydrv = to_phy_driver(drv); 309 struct phy_driver *phydrv = to_phy_driver(drv);
311 struct phy_device *phydev = to_phy_device(dev); 310 struct phy_device *phydev = to_phy_device(dev);
312 311
313 if ((!device_may_wakeup(phydev->dev.parent)) && 312 if (drv && phydrv->resume && !device_may_wakeup(phydev->dev.parent))
314 (phydrv && phydrv->resume))
315 ret = phydrv->resume(phydev); 313 ret = phydrv->resume(phydev);
316 314
317 return ret; 315 return ret;
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index e35460165bf7..0a06e4fd37d9 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -231,15 +231,6 @@ struct phy_device * get_phy_device(struct mii_bus *bus, int addr)
231 if ((phy_id & 0x1fffffff) == 0x1fffffff) 231 if ((phy_id & 0x1fffffff) == 0x1fffffff)
232 return NULL; 232 return NULL;
233 233
234 /*
235 * Broken hardware is sometimes missing the pull-up resistor on the
236 * MDIO line, which results in reads to non-existent devices returning
237 * 0 rather than 0xffff. Catch this here and treat 0 as a non-existent
238 * device as well.
239 */
240 if (phy_id == 0)
241 return NULL;
242
243 dev = phy_device_create(bus, addr, phy_id); 234 dev = phy_device_create(bus, addr, phy_id);
244 235
245 return dev; 236 return dev;
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
index c05d38d46350..1387187543e4 100644
--- a/drivers/net/phy/smsc.c
+++ b/drivers/net/phy/smsc.c
@@ -81,6 +81,9 @@ static struct phy_driver lan83c185_driver = {
81 .ack_interrupt = smsc_phy_ack_interrupt, 81 .ack_interrupt = smsc_phy_ack_interrupt,
82 .config_intr = smsc_phy_config_intr, 82 .config_intr = smsc_phy_config_intr,
83 83
84 .suspend = genphy_suspend,
85 .resume = genphy_resume,
86
84 .driver = { .owner = THIS_MODULE, } 87 .driver = { .owner = THIS_MODULE, }
85}; 88};
86 89
@@ -102,6 +105,9 @@ static struct phy_driver lan8187_driver = {
102 .ack_interrupt = smsc_phy_ack_interrupt, 105 .ack_interrupt = smsc_phy_ack_interrupt,
103 .config_intr = smsc_phy_config_intr, 106 .config_intr = smsc_phy_config_intr,
104 107
108 .suspend = genphy_suspend,
109 .resume = genphy_resume,
110
105 .driver = { .owner = THIS_MODULE, } 111 .driver = { .owner = THIS_MODULE, }
106}; 112};
107 113
@@ -123,6 +129,9 @@ static struct phy_driver lan8700_driver = {
123 .ack_interrupt = smsc_phy_ack_interrupt, 129 .ack_interrupt = smsc_phy_ack_interrupt,
124 .config_intr = smsc_phy_config_intr, 130 .config_intr = smsc_phy_config_intr,
125 131
132 .suspend = genphy_suspend,
133 .resume = genphy_resume,
134
126 .driver = { .owner = THIS_MODULE, } 135 .driver = { .owner = THIS_MODULE, }
127}; 136};
128 137
@@ -144,6 +153,9 @@ static struct phy_driver lan911x_int_driver = {
144 .ack_interrupt = smsc_phy_ack_interrupt, 153 .ack_interrupt = smsc_phy_ack_interrupt,
145 .config_intr = smsc_phy_config_intr, 154 .config_intr = smsc_phy_config_intr,
146 155
156 .suspend = genphy_suspend,
157 .resume = genphy_resume,
158
147 .driver = { .owner = THIS_MODULE, } 159 .driver = { .owner = THIS_MODULE, }
148}; 160};
149 161
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
index 06b448285eb5..7b2728b8f1b7 100644
--- a/drivers/net/ppp_generic.c
+++ b/drivers/net/ppp_generic.c
@@ -250,6 +250,7 @@ static int ppp_connect_channel(struct channel *pch, int unit);
250static int ppp_disconnect_channel(struct channel *pch); 250static int ppp_disconnect_channel(struct channel *pch);
251static void ppp_destroy_channel(struct channel *pch); 251static void ppp_destroy_channel(struct channel *pch);
252static int unit_get(struct idr *p, void *ptr); 252static int unit_get(struct idr *p, void *ptr);
253static int unit_set(struct idr *p, void *ptr, int n);
253static void unit_put(struct idr *p, int n); 254static void unit_put(struct idr *p, int n);
254static void *unit_find(struct idr *p, int n); 255static void *unit_find(struct idr *p, int n);
255 256
@@ -2432,11 +2433,18 @@ ppp_create_interface(int unit, int *retp)
2432 } else { 2433 } else {
2433 if (unit_find(&ppp_units_idr, unit)) 2434 if (unit_find(&ppp_units_idr, unit))
2434 goto out2; /* unit already exists */ 2435 goto out2; /* unit already exists */
2435 else { 2436 /*
2436 /* darn, someone is cheating us? */ 2437 * if caller need a specified unit number
2437 *retp = -EINVAL; 2438 * lets try to satisfy him, otherwise --
2439 * he should better ask us for new unit number
2440 *
2441 * NOTE: yes I know that returning EEXIST it's not
2442 * fair but at least pppd will ask us to allocate
2443 * new unit in this case so user is happy :)
2444 */
2445 unit = unit_set(&ppp_units_idr, ppp, unit);
2446 if (unit < 0)
2438 goto out2; 2447 goto out2;
2439 }
2440 } 2448 }
2441 2449
2442 /* Initialize the new ppp unit */ 2450 /* Initialize the new ppp unit */
@@ -2677,14 +2685,37 @@ static void __exit ppp_cleanup(void)
2677 * by holding all_ppp_mutex 2685 * by holding all_ppp_mutex
2678 */ 2686 */
2679 2687
2688/* associate pointer with specified number */
2689static int unit_set(struct idr *p, void *ptr, int n)
2690{
2691 int unit, err;
2692
2693again:
2694 if (!idr_pre_get(p, GFP_KERNEL)) {
2695 printk(KERN_ERR "PPP: No free memory for idr\n");
2696 return -ENOMEM;
2697 }
2698
2699 err = idr_get_new_above(p, ptr, n, &unit);
2700 if (err == -EAGAIN)
2701 goto again;
2702
2703 if (unit != n) {
2704 idr_remove(p, unit);
2705 return -EINVAL;
2706 }
2707
2708 return unit;
2709}
2710
2680/* get new free unit number and associate pointer with it */ 2711/* get new free unit number and associate pointer with it */
2681static int unit_get(struct idr *p, void *ptr) 2712static int unit_get(struct idr *p, void *ptr)
2682{ 2713{
2683 int unit, err; 2714 int unit, err;
2684 2715
2685again: 2716again:
2686 if (idr_pre_get(p, GFP_KERNEL) == 0) { 2717 if (!idr_pre_get(p, GFP_KERNEL)) {
2687 printk(KERN_ERR "Out of memory expanding drawable idr\n"); 2718 printk(KERN_ERR "PPP: No free memory for idr\n");
2688 return -ENOMEM; 2719 return -ENOMEM;
2689 } 2720 }
2690 2721
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
index 6cbefcae9ac2..be4465bc0a69 100644
--- a/drivers/net/sis900.c
+++ b/drivers/net/sis900.c
@@ -509,10 +509,10 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev,
509 else 509 else
510 ret = sis900_get_mac_addr(pci_dev, net_dev); 510 ret = sis900_get_mac_addr(pci_dev, net_dev);
511 511
512 if (ret == 0) { 512 if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) {
513 printk(KERN_WARNING "%s: Cannot read MAC address.\n", dev_name); 513 random_ether_addr(net_dev->dev_addr);
514 ret = -ENODEV; 514 printk(KERN_WARNING "%s: Unreadable or invalid MAC address,"
515 goto err_unmap_rx; 515 "using random generated one\n", dev_name);
516 } 516 }
517 517
518 /* 630ET : set the mii access mode as software-mode */ 518 /* 630ET : set the mii access mode as software-mode */
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 5e2dbaee125b..8b3f84685387 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -7535,11 +7535,58 @@ static int tg3_test_msi(struct tg3 *tp)
7535 return err; 7535 return err;
7536} 7536}
7537 7537
7538static int tg3_request_firmware(struct tg3 *tp)
7539{
7540 const __be32 *fw_data;
7541
7542 if (request_firmware(&tp->fw, tp->fw_needed, &tp->pdev->dev)) {
7543 printk(KERN_ERR "%s: Failed to load firmware \"%s\"\n",
7544 tp->dev->name, tp->fw_needed);
7545 return -ENOENT;
7546 }
7547
7548 fw_data = (void *)tp->fw->data;
7549
7550 /* Firmware blob starts with version numbers, followed by
7551 * start address and _full_ length including BSS sections
7552 * (which must be longer than the actual data, of course
7553 */
7554
7555 tp->fw_len = be32_to_cpu(fw_data[2]); /* includes bss */
7556 if (tp->fw_len < (tp->fw->size - 12)) {
7557 printk(KERN_ERR "%s: bogus length %d in \"%s\"\n",
7558 tp->dev->name, tp->fw_len, tp->fw_needed);
7559 release_firmware(tp->fw);
7560 tp->fw = NULL;
7561 return -EINVAL;
7562 }
7563
7564 /* We no longer need firmware; we have it. */
7565 tp->fw_needed = NULL;
7566 return 0;
7567}
7568
7538static int tg3_open(struct net_device *dev) 7569static int tg3_open(struct net_device *dev)
7539{ 7570{
7540 struct tg3 *tp = netdev_priv(dev); 7571 struct tg3 *tp = netdev_priv(dev);
7541 int err; 7572 int err;
7542 7573
7574 if (tp->fw_needed) {
7575 err = tg3_request_firmware(tp);
7576 if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0) {
7577 if (err)
7578 return err;
7579 } else if (err) {
7580 printk(KERN_WARNING "%s: TSO capability disabled.\n",
7581 tp->dev->name);
7582 tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE;
7583 } else if (!(tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE)) {
7584 printk(KERN_NOTICE "%s: TSO capability restored.\n",
7585 tp->dev->name);
7586 tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE;
7587 }
7588 }
7589
7543 netif_carrier_off(tp->dev); 7590 netif_carrier_off(tp->dev);
7544 7591
7545 err = tg3_set_power_state(tp, PCI_D0); 7592 err = tg3_set_power_state(tp, PCI_D0);
@@ -12934,7 +12981,6 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
12934 struct net_device *dev; 12981 struct net_device *dev;
12935 struct tg3 *tp; 12982 struct tg3 *tp;
12936 int err, pm_cap; 12983 int err, pm_cap;
12937 const char *fw_name = NULL;
12938 char str[40]; 12984 char str[40];
12939 u64 dma_mask, persist_dma_mask; 12985 u64 dma_mask, persist_dma_mask;
12940 12986
@@ -13091,7 +13137,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
13091 tg3_init_bufmgr_config(tp); 13137 tg3_init_bufmgr_config(tp);
13092 13138
13093 if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0) 13139 if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0)
13094 fw_name = FIRMWARE_TG3; 13140 tp->fw_needed = FIRMWARE_TG3;
13095 13141
13096 if (tp->tg3_flags2 & TG3_FLG2_HW_TSO) { 13142 if (tp->tg3_flags2 & TG3_FLG2_HW_TSO) {
13097 tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE; 13143 tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE;
@@ -13104,37 +13150,10 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
13104 tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE; 13150 tp->tg3_flags2 &= ~TG3_FLG2_TSO_CAPABLE;
13105 } else { 13151 } else {
13106 tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE | TG3_FLG2_TSO_BUG; 13152 tp->tg3_flags2 |= TG3_FLG2_TSO_CAPABLE | TG3_FLG2_TSO_BUG;
13107 }
13108 if (tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE) {
13109 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) 13153 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705)
13110 fw_name = FIRMWARE_TG3TSO5; 13154 tp->fw_needed = FIRMWARE_TG3TSO5;
13111 else 13155 else
13112 fw_name = FIRMWARE_TG3TSO; 13156 tp->fw_needed = FIRMWARE_TG3TSO;
13113 }
13114
13115 if (fw_name) {
13116 const __be32 *fw_data;
13117
13118 err = request_firmware(&tp->fw, fw_name, &tp->pdev->dev);
13119 if (err) {
13120 printk(KERN_ERR "tg3: Failed to load firmware \"%s\"\n",
13121 fw_name);
13122 goto err_out_iounmap;
13123 }
13124
13125 fw_data = (void *)tp->fw->data;
13126
13127 /* Firmware blob starts with version numbers, followed by
13128 start address and _full_ length including BSS sections
13129 (which must be longer than the actual data, of course */
13130
13131 tp->fw_len = be32_to_cpu(fw_data[2]); /* includes bss */
13132 if (tp->fw_len < (tp->fw->size - 12)) {
13133 printk(KERN_ERR "tg3: bogus length %d in \"%s\"\n",
13134 tp->fw_len, fw_name);
13135 err = -EINVAL;
13136 goto err_out_fw;
13137 }
13138 } 13157 }
13139 13158
13140 /* TSO is on by default on chips that support hardware TSO. 13159 /* TSO is on by default on chips that support hardware TSO.
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index ae5da603c6af..508def3e077f 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -2764,6 +2764,7 @@ struct tg3 {
2764 struct ethtool_coalesce coal; 2764 struct ethtool_coalesce coal;
2765 2765
2766 /* firmware info */ 2766 /* firmware info */
2767 const char *fw_needed;
2767 const struct firmware *fw; 2768 const struct firmware *fw;
2768 u32 fw_len; /* includes BSS */ 2769 u32 fw_len; /* includes BSS */
2769}; 2770};
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index c4918b86ed19..0d0fa91c0251 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -1297,6 +1297,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
1297 /* setup */ 1297 /* setup */
1298 spin_lock_irq(&serial->serial_lock); 1298 spin_lock_irq(&serial->serial_lock);
1299 tty->driver_data = serial; 1299 tty->driver_data = serial;
1300 tty_kref_put(serial->tty);
1300 serial->tty = tty_kref_get(tty); 1301 serial->tty = tty_kref_get(tty);
1301 spin_unlock_irq(&serial->serial_lock); 1302 spin_unlock_irq(&serial->serial_lock);
1302 1303
@@ -1792,8 +1793,8 @@ static int mux_device_request(struct hso_serial *serial, u8 type, u16 port,
1792 1793
1793 /* initialize */ 1794 /* initialize */
1794 ctrl_req->wValue = 0; 1795 ctrl_req->wValue = 0;
1795 ctrl_req->wIndex = hso_port_to_mux(port); 1796 ctrl_req->wIndex = cpu_to_le16(hso_port_to_mux(port));
1796 ctrl_req->wLength = size; 1797 ctrl_req->wLength = cpu_to_le16(size);
1797 1798
1798 if (type == USB_CDC_GET_ENCAPSULATED_RESPONSE) { 1799 if (type == USB_CDC_GET_ENCAPSULATED_RESPONSE) {
1799 /* Reading command */ 1800 /* Reading command */
@@ -2043,9 +2044,8 @@ static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial)
2043 return -2; 2044 return -2;
2044 } 2045 }
2045 2046
2046 spin_lock(&serial->serial_lock); 2047 /* All callers to put_rxbuf_data hold serial_lock */
2047 tty = tty_kref_get(serial->tty); 2048 tty = tty_kref_get(serial->tty);
2048 spin_unlock(&serial->serial_lock);
2049 2049
2050 /* Push data to tty */ 2050 /* Push data to tty */
2051 if (tty) { 2051 if (tty) {
@@ -2053,8 +2053,10 @@ static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial)
2053 serial->curr_rx_urb_offset; 2053 serial->curr_rx_urb_offset;
2054 D1("data to push to tty"); 2054 D1("data to push to tty");
2055 while (write_length_remaining) { 2055 while (write_length_remaining) {
2056 if (test_bit(TTY_THROTTLED, &tty->flags)) 2056 if (test_bit(TTY_THROTTLED, &tty->flags)) {
2057 tty_kref_put(tty);
2057 return -1; 2058 return -1;
2059 }
2058 curr_write_len = tty_insert_flip_string 2060 curr_write_len = tty_insert_flip_string
2059 (tty, urb->transfer_buffer + 2061 (tty, urb->transfer_buffer +
2060 serial->curr_rx_urb_offset, 2062 serial->curr_rx_urb_offset,
diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c
index 5385d66b306e..ced8f36ebd01 100644
--- a/drivers/net/usb/mcs7830.c
+++ b/drivers/net/usb/mcs7830.c
@@ -94,10 +94,18 @@ static int mcs7830_get_reg(struct usbnet *dev, u16 index, u16 size, void *data)
94{ 94{
95 struct usb_device *xdev = dev->udev; 95 struct usb_device *xdev = dev->udev;
96 int ret; 96 int ret;
97 void *buffer;
98
99 buffer = kmalloc(size, GFP_NOIO);
100 if (buffer == NULL)
101 return -ENOMEM;
97 102
98 ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ, 103 ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ,
99 MCS7830_RD_BMREQ, 0x0000, index, data, 104 MCS7830_RD_BMREQ, 0x0000, index, buffer,
100 size, MCS7830_CTRL_TIMEOUT); 105 size, MCS7830_CTRL_TIMEOUT);
106 memcpy(data, buffer, size);
107 kfree(buffer);
108
101 return ret; 109 return ret;
102} 110}
103 111
@@ -105,10 +113,18 @@ static int mcs7830_set_reg(struct usbnet *dev, u16 index, u16 size, void *data)
105{ 113{
106 struct usb_device *xdev = dev->udev; 114 struct usb_device *xdev = dev->udev;
107 int ret; 115 int ret;
116 void *buffer;
117
118 buffer = kmalloc(size, GFP_NOIO);
119 if (buffer == NULL)
120 return -ENOMEM;
121
122 memcpy(buffer, data, size);
108 123
109 ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ, 124 ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ,
110 MCS7830_WR_BMREQ, 0x0000, index, data, 125 MCS7830_WR_BMREQ, 0x0000, index, buffer,
111 size, MCS7830_CTRL_TIMEOUT); 126 size, MCS7830_CTRL_TIMEOUT);
127 kfree(buffer);
112 return ret; 128 return ret;
113} 129}
114 130
diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
index a75f91dc3153..c5691fdb7079 100644
--- a/drivers/net/via-velocity.c
+++ b/drivers/net/via-velocity.c
@@ -1302,7 +1302,7 @@ static void velocity_free_rd_ring(struct velocity_info *vptr)
1302static int velocity_init_td_ring(struct velocity_info *vptr) 1302static int velocity_init_td_ring(struct velocity_info *vptr)
1303{ 1303{
1304 dma_addr_t curr; 1304 dma_addr_t curr;
1305 unsigned int j; 1305 int j;
1306 1306
1307 /* Init the TD ring entries */ 1307 /* Init the TD ring entries */
1308 for (j = 0; j < vptr->tx.numq; j++) { 1308 for (j = 0; j < vptr->tx.numq; j++) {
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 43f6523c40be..63ef2a8905fb 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -24,6 +24,7 @@
24#include <linux/virtio.h> 24#include <linux/virtio.h>
25#include <linux/virtio_net.h> 25#include <linux/virtio_net.h>
26#include <linux/scatterlist.h> 26#include <linux/scatterlist.h>
27#include <linux/if_vlan.h>
27 28
28static int napi_weight = 128; 29static int napi_weight = 128;
29module_param(napi_weight, int, 0444); 30module_param(napi_weight, int, 0444);
@@ -33,7 +34,7 @@ module_param(csum, bool, 0444);
33module_param(gso, bool, 0444); 34module_param(gso, bool, 0444);
34 35
35/* FIXME: MTU in config. */ 36/* FIXME: MTU in config. */
36#define MAX_PACKET_LEN (ETH_HLEN+ETH_DATA_LEN) 37#define MAX_PACKET_LEN (ETH_HLEN + VLAN_HLEN + ETH_DATA_LEN)
37#define GOOD_COPY_LEN 128 38#define GOOD_COPY_LEN 128
38 39
39struct virtnet_info 40struct virtnet_info
diff --git a/drivers/net/wan/ixp4xx_hss.c b/drivers/net/wan/ixp4xx_hss.c
index 2dc241689d37..0dbd85b0162d 100644
--- a/drivers/net/wan/ixp4xx_hss.c
+++ b/drivers/net/wan/ixp4xx_hss.c
@@ -622,7 +622,7 @@ static void hss_hdlc_rx_irq(void *pdev)
622 printk(KERN_DEBUG "%s: hss_hdlc_rx_irq\n", dev->name); 622 printk(KERN_DEBUG "%s: hss_hdlc_rx_irq\n", dev->name);
623#endif 623#endif
624 qmgr_disable_irq(queue_ids[port->id].rx); 624 qmgr_disable_irq(queue_ids[port->id].rx);
625 netif_rx_schedule(dev, &port->napi); 625 netif_rx_schedule(&port->napi);
626} 626}
627 627
628static int hss_hdlc_poll(struct napi_struct *napi, int budget) 628static int hss_hdlc_poll(struct napi_struct *napi, int budget)
@@ -651,7 +651,7 @@ static int hss_hdlc_poll(struct napi_struct *napi, int budget)
651 printk(KERN_DEBUG "%s: hss_hdlc_poll" 651 printk(KERN_DEBUG "%s: hss_hdlc_poll"
652 " netif_rx_complete\n", dev->name); 652 " netif_rx_complete\n", dev->name);
653#endif 653#endif
654 netif_rx_complete(dev, napi); 654 netif_rx_complete(napi);
655 qmgr_enable_irq(rxq); 655 qmgr_enable_irq(rxq);
656 if (!qmgr_stat_empty(rxq) && 656 if (!qmgr_stat_empty(rxq) &&
657 netif_rx_reschedule(napi)) { 657 netif_rx_reschedule(napi)) {
@@ -1069,7 +1069,7 @@ static int hss_hdlc_open(struct net_device *dev)
1069 hss_start_hdlc(port); 1069 hss_start_hdlc(port);
1070 1070
1071 /* we may already have RX data, enables IRQ */ 1071 /* we may already have RX data, enables IRQ */
1072 netif_rx_schedule(dev, &port->napi); 1072 netif_rx_schedule(&port->napi);
1073 return 0; 1073 return 0;
1074 1074
1075err_unlock: 1075err_unlock:
diff --git a/drivers/net/wimax/i2400m/control.c b/drivers/net/wimax/i2400m/control.c
index d3d37fed6893..15d9f51b292c 100644
--- a/drivers/net/wimax/i2400m/control.c
+++ b/drivers/net/wimax/i2400m/control.c
@@ -609,7 +609,7 @@ void i2400m_msg_to_dev_cancel_wait(struct i2400m *i2400m, int code)
609 spin_lock_irqsave(&i2400m->rx_lock, flags); 609 spin_lock_irqsave(&i2400m->rx_lock, flags);
610 ack_skb = i2400m->ack_skb; 610 ack_skb = i2400m->ack_skb;
611 if (ack_skb && !IS_ERR(ack_skb)) 611 if (ack_skb && !IS_ERR(ack_skb))
612 kfree(ack_skb); 612 kfree_skb(ack_skb);
613 i2400m->ack_skb = ERR_PTR(code); 613 i2400m->ack_skb = ERR_PTR(code);
614 spin_unlock_irqrestore(&i2400m->rx_lock, flags); 614 spin_unlock_irqrestore(&i2400m->rx_lock, flags);
615} 615}
diff --git a/drivers/net/wimax/i2400m/usb-rx.c b/drivers/net/wimax/i2400m/usb-rx.c
index 074cc1f89853..a314799967cf 100644
--- a/drivers/net/wimax/i2400m/usb-rx.c
+++ b/drivers/net/wimax/i2400m/usb-rx.c
@@ -184,6 +184,8 @@ void i2400mu_rx_size_maybe_shrink(struct i2400mu *i2400mu)
184 * NOTE: this function might realloc the skb (if it is too small), 184 * NOTE: this function might realloc the skb (if it is too small),
185 * so always update with the one returned. 185 * so always update with the one returned.
186 * ERR_PTR() is < 0 on error. 186 * ERR_PTR() is < 0 on error.
187 * Will return NULL if it cannot reallocate -- this can be
188 * considered a transient retryable error.
187 */ 189 */
188static 190static
189struct sk_buff *i2400mu_rx(struct i2400mu *i2400mu, struct sk_buff *rx_skb) 191struct sk_buff *i2400mu_rx(struct i2400mu *i2400mu, struct sk_buff *rx_skb)
@@ -243,8 +245,8 @@ retry:
243 if (printk_ratelimit()) 245 if (printk_ratelimit())
244 dev_err(dev, "RX: Can't reallocate skb to %d; " 246 dev_err(dev, "RX: Can't reallocate skb to %d; "
245 "RX dropped\n", rx_size); 247 "RX dropped\n", rx_size);
246 kfree(rx_skb); 248 kfree_skb(rx_skb);
247 result = 0; 249 rx_skb = NULL;
248 goto out; /* drop it...*/ 250 goto out; /* drop it...*/
249 } 251 }
250 kfree_skb(rx_skb); 252 kfree_skb(rx_skb);
@@ -344,7 +346,8 @@ int i2400mu_rxd(void *_i2400mu)
344 if (IS_ERR(rx_skb)) 346 if (IS_ERR(rx_skb))
345 goto out; 347 goto out;
346 atomic_dec(&i2400mu->rx_pending_count); 348 atomic_dec(&i2400mu->rx_pending_count);
347 if (rx_skb->len == 0) { /* some ignorable condition */ 349 if (rx_skb == NULL || rx_skb->len == 0) {
350 /* some "ignorable" condition */
348 kfree_skb(rx_skb); 351 kfree_skb(rx_skb);
349 continue; 352 continue;
350 } 353 }
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index ea543fcf2687..e4f9f747de88 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -111,7 +111,7 @@ config WLAN_80211
111 lets you choose drivers. 111 lets you choose drivers.
112 112
113config PCMCIA_RAYCS 113config PCMCIA_RAYCS
114 tristate "Aviator/Raytheon 2.4MHz wireless support" 114 tristate "Aviator/Raytheon 2.4GHz wireless support"
115 depends on PCMCIA && WLAN_80211 115 depends on PCMCIA && WLAN_80211
116 select WIRELESS_EXT 116 select WIRELESS_EXT
117 ---help--- 117 ---help---
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index 4af2607deec0..8ef87356e083 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -2644,7 +2644,7 @@ ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
2644 if (skb_headroom(skb) < padsize) { 2644 if (skb_headroom(skb) < padsize) {
2645 ATH5K_ERR(sc, "tx hdrlen not %%4: %d not enough" 2645 ATH5K_ERR(sc, "tx hdrlen not %%4: %d not enough"
2646 " headroom to pad %d\n", hdrlen, padsize); 2646 " headroom to pad %d\n", hdrlen, padsize);
2647 return -1; 2647 return NETDEV_TX_BUSY;
2648 } 2648 }
2649 skb_push(skb, padsize); 2649 skb_push(skb, padsize);
2650 memmove(skb->data, skb->data+padsize, hdrlen); 2650 memmove(skb->data, skb->data+padsize, hdrlen);
@@ -2655,7 +2655,7 @@ ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
2655 ATH5K_ERR(sc, "no further txbuf available, dropping packet\n"); 2655 ATH5K_ERR(sc, "no further txbuf available, dropping packet\n");
2656 spin_unlock_irqrestore(&sc->txbuflock, flags); 2656 spin_unlock_irqrestore(&sc->txbuflock, flags);
2657 ieee80211_stop_queue(hw, skb_get_queue_mapping(skb)); 2657 ieee80211_stop_queue(hw, skb_get_queue_mapping(skb));
2658 return -1; 2658 return NETDEV_TX_BUSY;
2659 } 2659 }
2660 bf = list_first_entry(&sc->txbuf, struct ath5k_buf, list); 2660 bf = list_first_entry(&sc->txbuf, struct ath5k_buf, list);
2661 list_del(&bf->list); 2661 list_del(&bf->list);
@@ -2673,10 +2673,10 @@ ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
2673 sc->txbuf_len++; 2673 sc->txbuf_len++;
2674 spin_unlock_irqrestore(&sc->txbuflock, flags); 2674 spin_unlock_irqrestore(&sc->txbuflock, flags);
2675 dev_kfree_skb_any(skb); 2675 dev_kfree_skb_any(skb);
2676 return 0; 2676 return NETDEV_TX_OK;
2677 } 2677 }
2678 2678
2679 return 0; 2679 return NETDEV_TX_OK;
2680} 2680}
2681 2681
2682static int 2682static int
diff --git a/drivers/net/wireless/ath5k/pcu.c b/drivers/net/wireless/ath5k/pcu.c
index 0cac05c6a9ce..75eb9f43c741 100644
--- a/drivers/net/wireless/ath5k/pcu.c
+++ b/drivers/net/wireless/ath5k/pcu.c
@@ -65,7 +65,7 @@ int ath5k_hw_set_opmode(struct ath5k_hw *ah)
65 if (ah->ah_version == AR5K_AR5210) 65 if (ah->ah_version == AR5K_AR5210)
66 pcu_reg |= AR5K_STA_ID1_NO_PSPOLL; 66 pcu_reg |= AR5K_STA_ID1_NO_PSPOLL;
67 else 67 else
68 AR5K_REG_DISABLE_BITS(ah, AR5K_CFG, AR5K_CFG_ADHOC); 68 AR5K_REG_ENABLE_BITS(ah, AR5K_CFG, AR5K_CFG_IBSS);
69 break; 69 break;
70 70
71 case NL80211_IFTYPE_AP: 71 case NL80211_IFTYPE_AP:
@@ -75,7 +75,7 @@ int ath5k_hw_set_opmode(struct ath5k_hw *ah)
75 if (ah->ah_version == AR5K_AR5210) 75 if (ah->ah_version == AR5K_AR5210)
76 pcu_reg |= AR5K_STA_ID1_NO_PSPOLL; 76 pcu_reg |= AR5K_STA_ID1_NO_PSPOLL;
77 else 77 else
78 AR5K_REG_ENABLE_BITS(ah, AR5K_CFG, AR5K_CFG_ADHOC); 78 AR5K_REG_DISABLE_BITS(ah, AR5K_CFG, AR5K_CFG_IBSS);
79 break; 79 break;
80 80
81 case NL80211_IFTYPE_STATION: 81 case NL80211_IFTYPE_STATION:
diff --git a/drivers/net/wireless/ath5k/reg.h b/drivers/net/wireless/ath5k/reg.h
index 91aaeaf88199..9189ab13286c 100644
--- a/drivers/net/wireless/ath5k/reg.h
+++ b/drivers/net/wireless/ath5k/reg.h
@@ -73,7 +73,7 @@
73#define AR5K_CFG_SWRD 0x00000004 /* Byte-swap RX descriptor */ 73#define AR5K_CFG_SWRD 0x00000004 /* Byte-swap RX descriptor */
74#define AR5K_CFG_SWRB 0x00000008 /* Byte-swap RX buffer */ 74#define AR5K_CFG_SWRB 0x00000008 /* Byte-swap RX buffer */
75#define AR5K_CFG_SWRG 0x00000010 /* Byte-swap Register access */ 75#define AR5K_CFG_SWRG 0x00000010 /* Byte-swap Register access */
76#define AR5K_CFG_ADHOC 0x00000020 /* AP/Adhoc indication [5211+] */ 76#define AR5K_CFG_IBSS 0x00000020 /* 0-BSS, 1-IBSS [5211+] */
77#define AR5K_CFG_PHY_OK 0x00000100 /* [5211+] */ 77#define AR5K_CFG_PHY_OK 0x00000100 /* [5211+] */
78#define AR5K_CFG_EEBS 0x00000200 /* EEPROM is busy */ 78#define AR5K_CFG_EEBS 0x00000200 /* EEPROM is busy */
79#define AR5K_CFG_CLKGD 0x00000400 /* Clock gated (Disable dynamic clock) */ 79#define AR5K_CFG_CLKGD 0x00000400 /* Clock gated (Disable dynamic clock) */
diff --git a/drivers/net/wireless/ath9k/Kconfig b/drivers/net/wireless/ath9k/Kconfig
index c43bd321f97f..90a8dd873786 100644
--- a/drivers/net/wireless/ath9k/Kconfig
+++ b/drivers/net/wireless/ath9k/Kconfig
@@ -1,6 +1,7 @@
1config ATH9K 1config ATH9K
2 tristate "Atheros 802.11n wireless cards support" 2 tristate "Atheros 802.11n wireless cards support"
3 depends on PCI && MAC80211 && WLAN_80211 3 depends on PCI && MAC80211 && WLAN_80211
4 depends on RFKILL || RFKILL=n
4 select MAC80211_LEDS 5 select MAC80211_LEDS
5 select LEDS_CLASS 6 select LEDS_CLASS
6 select NEW_LEDS 7 select NEW_LEDS
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index 191eec50dc75..727f067aca4f 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
@@ -2164,13 +2164,13 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
2164 conf->ht.channel_type); 2164 conf->ht.channel_type);
2165 } 2165 }
2166 2166
2167 ath_update_chainmask(sc, conf->ht.enabled);
2168
2167 if (ath_set_channel(sc, &sc->sc_ah->ah_channels[pos]) < 0) { 2169 if (ath_set_channel(sc, &sc->sc_ah->ah_channels[pos]) < 0) {
2168 DPRINTF(sc, ATH_DBG_FATAL, "Unable to set channel\n"); 2170 DPRINTF(sc, ATH_DBG_FATAL, "Unable to set channel\n");
2169 mutex_unlock(&sc->mutex); 2171 mutex_unlock(&sc->mutex);
2170 return -EINVAL; 2172 return -EINVAL;
2171 } 2173 }
2172
2173 ath_update_chainmask(sc, conf->ht.enabled);
2174 } 2174 }
2175 2175
2176 if (changed & IEEE80211_CONF_CHANGE_POWER) 2176 if (changed & IEEE80211_CONF_CHANGE_POWER)
diff --git a/drivers/net/wireless/ath9k/rc.c b/drivers/net/wireless/ath9k/rc.c
index 04ab457a8faa..1b71b934bb5e 100644
--- a/drivers/net/wireless/ath9k/rc.c
+++ b/drivers/net/wireless/ath9k/rc.c
@@ -490,7 +490,7 @@ static inline int ath_rc_get_nextvalid_txrate(struct ath_rate_table *rate_table,
490 490
491static int ath_rc_valid_phyrate(u32 phy, u32 capflag, int ignore_cw) 491static int ath_rc_valid_phyrate(u32 phy, u32 capflag, int ignore_cw)
492{ 492{
493 if (WLAN_RC_PHY_HT(phy) & !(capflag & WLAN_RC_HT_FLAG)) 493 if (WLAN_RC_PHY_HT(phy) && !(capflag & WLAN_RC_HT_FLAG))
494 return 0; 494 return 0;
495 if (WLAN_RC_PHY_DS(phy) && !(capflag & WLAN_RC_DS_FLAG)) 495 if (WLAN_RC_PHY_DS(phy) && !(capflag & WLAN_RC_DS_FLAG))
496 return 0; 496 return 0;
diff --git a/drivers/net/wireless/ath9k/regd_common.h b/drivers/net/wireless/ath9k/regd_common.h
index 9112c030b1e8..6df1b3b77c25 100644
--- a/drivers/net/wireless/ath9k/regd_common.h
+++ b/drivers/net/wireless/ath9k/regd_common.h
@@ -228,7 +228,7 @@ enum {
228}; 228};
229 229
230#define REG_DOMAIN_2GHZ_MASK (REQ_MASK & \ 230#define REG_DOMAIN_2GHZ_MASK (REQ_MASK & \
231 (!(ADHOC_NO_11A | DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB))) 231 (~(ADHOC_NO_11A | DISALLOW_ADHOC_11A | DISALLOW_ADHOC_11A_TURB)))
232#define REG_DOMAIN_5GHZ_MASK REQ_MASK 232#define REG_DOMAIN_5GHZ_MASK REQ_MASK
233 233
234static struct reg_dmn_pair_mapping regDomainPairs[] = { 234static struct reg_dmn_pair_mapping regDomainPairs[] = {
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
index 3bfc3b90f256..c92f0c6e4adc 100644
--- a/drivers/net/wireless/ath9k/xmit.c
+++ b/drivers/net/wireless/ath9k/xmit.c
@@ -126,15 +126,7 @@ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb,
126 tx_info->flags |= IEEE80211_TX_STAT_ACK; 126 tx_info->flags |= IEEE80211_TX_STAT_ACK;
127 } 127 }
128 128
129 tx_info->status.rates[0].count = tx_status->retries; 129 tx_info->status.rates[0].count = tx_status->retries + 1;
130 if (tx_info->status.rates[0].flags & IEEE80211_TX_RC_MCS) {
131 /* Change idx from internal table index to MCS index */
132 int idx = tx_info->status.rates[0].idx;
133 struct ath_rate_table *rate_table = sc->cur_rate_table;
134 if (idx >= 0 && idx < rate_table->rate_cnt)
135 tx_info->status.rates[0].idx =
136 rate_table->info[idx].ratecode & 0x7f;
137 }
138 130
139 hdrlen = ieee80211_get_hdrlen_from_skb(skb); 131 hdrlen = ieee80211_get_hdrlen_from_skb(skb);
140 padsize = hdrlen & 3; 132 padsize = hdrlen & 3;
@@ -264,25 +256,22 @@ static void assign_aggr_tid_seqno(struct sk_buff *skb,
264 } 256 }
265 257
266 /* Get seqno */ 258 /* Get seqno */
267 259 /* For HT capable stations, we save tidno for later use.
268 if (ieee80211_is_data(fc) && !is_pae(skb)) { 260 * We also override seqno set by upper layer with the one
269 /* For HT capable stations, we save tidno for later use. 261 * in tx aggregation state.
270 * We also override seqno set by upper layer with the one 262 *
271 * in tx aggregation state. 263 * If fragmentation is on, the sequence number is
272 * 264 * not overridden, since it has been
273 * If fragmentation is on, the sequence number is 265 * incremented by the fragmentation routine.
274 * not overridden, since it has been 266 *
275 * incremented by the fragmentation routine. 267 * FIXME: check if the fragmentation threshold exceeds
276 * 268 * IEEE80211 max.
277 * FIXME: check if the fragmentation threshold exceeds 269 */
278 * IEEE80211 max. 270 tid = ATH_AN_2_TID(an, bf->bf_tidno);
279 */ 271 hdr->seq_ctrl = cpu_to_le16(tid->seq_next <<
280 tid = ATH_AN_2_TID(an, bf->bf_tidno); 272 IEEE80211_SEQ_SEQ_SHIFT);
281 hdr->seq_ctrl = cpu_to_le16(tid->seq_next << 273 bf->bf_seqno = tid->seq_next;
282 IEEE80211_SEQ_SEQ_SHIFT); 274 INCR(tid->seq_next, IEEE80211_SEQ_MAX);
283 bf->bf_seqno = tid->seq_next;
284 INCR(tid->seq_next, IEEE80211_SEQ_MAX);
285 }
286} 275}
287 276
288static int setup_tx_flags(struct ath_softc *sc, struct sk_buff *skb, 277static int setup_tx_flags(struct ath_softc *sc, struct sk_buff *skb,
@@ -1718,11 +1707,10 @@ static int ath_tx_setup_buffer(struct ath_softc *sc, struct ath_buf *bf,
1718 1707
1719 /* Assign seqno, tidno */ 1708 /* Assign seqno, tidno */
1720 1709
1721 if (bf_isht(bf) && (sc->sc_flags & SC_OP_TXAGGR)) 1710 if (ieee80211_is_data_qos(fc) && (sc->sc_flags & SC_OP_TXAGGR))
1722 assign_aggr_tid_seqno(skb, bf); 1711 assign_aggr_tid_seqno(skb, bf);
1723 1712
1724 /* DMA setup */ 1713 /* DMA setup */
1725
1726 bf->bf_mpdu = skb; 1714 bf->bf_mpdu = skb;
1727 1715
1728 bf->bf_dmacontext = pci_map_single(sc->pdev, skb->data, 1716 bf->bf_dmacontext = pci_map_single(sc->pdev, skb->data,
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 7b31a327b24a..c788bad10661 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -3261,7 +3261,7 @@ static int b43_switch_band(struct b43_wl *wl, struct ieee80211_channel *chan)
3261 struct b43_wldev *down_dev; 3261 struct b43_wldev *down_dev;
3262 struct b43_wldev *d; 3262 struct b43_wldev *d;
3263 int err; 3263 int err;
3264 bool gmode; 3264 bool uninitialized_var(gmode);
3265 int prev_status; 3265 int prev_status;
3266 3266
3267 /* Find a device and PHY which supports the band. */ 3267 /* Find a device and PHY which supports the band. */
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c
index c1324e31d2f6..fb996c27a19b 100644
--- a/drivers/net/wireless/b43legacy/main.c
+++ b/drivers/net/wireless/b43legacy/main.c
@@ -2465,7 +2465,7 @@ static void b43legacy_put_phy_into_reset(struct b43legacy_wldev *dev)
2465static int b43legacy_switch_phymode(struct b43legacy_wl *wl, 2465static int b43legacy_switch_phymode(struct b43legacy_wl *wl,
2466 unsigned int new_mode) 2466 unsigned int new_mode)
2467{ 2467{
2468 struct b43legacy_wldev *up_dev; 2468 struct b43legacy_wldev *uninitialized_var(up_dev);
2469 struct b43legacy_wldev *down_dev; 2469 struct b43legacy_wldev *down_dev;
2470 int err; 2470 int err;
2471 bool gmode = 0; 2471 bool gmode = 0;
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
index 9b60a0c5de5f..21c841847d88 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
@@ -638,12 +638,16 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
638 s8 scale_action = 0; 638 s8 scale_action = 0;
639 unsigned long flags; 639 unsigned long flags;
640 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; 640 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
641 u16 fc, rate_mask; 641 u16 fc;
642 u16 rate_mask = 0;
642 struct iwl3945_priv *priv = (struct iwl3945_priv *)priv_r; 643 struct iwl3945_priv *priv = (struct iwl3945_priv *)priv_r;
643 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 644 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
644 645
645 IWL_DEBUG_RATE("enter\n"); 646 IWL_DEBUG_RATE("enter\n");
646 647
648 if (sta)
649 rate_mask = sta->supp_rates[sband->band];
650
647 /* Send management frames and broadcast/multicast data using lowest 651 /* Send management frames and broadcast/multicast data using lowest
648 * rate. */ 652 * rate. */
649 fc = le16_to_cpu(hdr->frame_control); 653 fc = le16_to_cpu(hdr->frame_control);
@@ -651,11 +655,15 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
651 is_multicast_ether_addr(hdr->addr1) || 655 is_multicast_ether_addr(hdr->addr1) ||
652 !sta || !priv_sta) { 656 !sta || !priv_sta) {
653 IWL_DEBUG_RATE("leave: No STA priv data to update!\n"); 657 IWL_DEBUG_RATE("leave: No STA priv data to update!\n");
654 info->control.rates[0].idx = rate_lowest_index(sband, sta); 658 if (!rate_mask)
659 info->control.rates[0].idx =
660 rate_lowest_index(sband, NULL);
661 else
662 info->control.rates[0].idx =
663 rate_lowest_index(sband, sta);
655 return; 664 return;
656 } 665 }
657 666
658 rate_mask = sta->supp_rates[sband->band];
659 index = min(rs_sta->last_txrate_idx & 0xffff, IWL_RATE_COUNT - 1); 667 index = min(rs_sta->last_txrate_idx & 0xffff, IWL_RATE_COUNT - 1);
660 668
661 if (sband->band == IEEE80211_BAND_5GHZ) 669 if (sband->band == IEEE80211_BAND_5GHZ)
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 8fdb34222c0a..45cfa1cf194a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -2219,7 +2219,7 @@ int iwl3945_txpower_set_from_eeprom(struct iwl3945_priv *priv)
2219 /* set tx power value for all OFDM rates */ 2219 /* set tx power value for all OFDM rates */
2220 for (rate_index = 0; rate_index < IWL_OFDM_RATES; 2220 for (rate_index = 0; rate_index < IWL_OFDM_RATES;
2221 rate_index++) { 2221 rate_index++) {
2222 s32 power_idx; 2222 s32 uninitialized_var(power_idx);
2223 int rc; 2223 int rc;
2224 2224
2225 /* use channel group's clip-power table, 2225 /* use channel group's clip-power table,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index f3f17929ca0b..27f50471aed8 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -944,7 +944,8 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband,
944 } 944 }
945 945
946 /* See if there's a better rate or modulation mode to try. */ 946 /* See if there's a better rate or modulation mode to try. */
947 rs_rate_scale_perform(priv, hdr, sta, lq_sta); 947 if (sta && sta->supp_rates[sband->band])
948 rs_rate_scale_perform(priv, hdr, sta, lq_sta);
948out: 949out:
949 return; 950 return;
950} 951}
@@ -2101,14 +2102,23 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, void *priv_sta,
2101 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 2102 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
2102 struct iwl_lq_sta *lq_sta = priv_sta; 2103 struct iwl_lq_sta *lq_sta = priv_sta;
2103 int rate_idx; 2104 int rate_idx;
2105 u64 mask_bit = 0;
2104 2106
2105 IWL_DEBUG_RATE_LIMIT("rate scale calculate new rate for skb\n"); 2107 IWL_DEBUG_RATE_LIMIT("rate scale calculate new rate for skb\n");
2106 2108
2109 if (sta)
2110 mask_bit = sta->supp_rates[sband->band];
2111
2107 /* Send management frames and broadcast/multicast data using lowest 2112 /* Send management frames and broadcast/multicast data using lowest
2108 * rate. */ 2113 * rate. */
2109 if (!ieee80211_is_data(hdr->frame_control) || 2114 if (!ieee80211_is_data(hdr->frame_control) ||
2110 is_multicast_ether_addr(hdr->addr1) || !sta || !lq_sta) { 2115 is_multicast_ether_addr(hdr->addr1) || !sta || !lq_sta) {
2111 info->control.rates[0].idx = rate_lowest_index(sband, sta); 2116 if (!mask_bit)
2117 info->control.rates[0].idx =
2118 rate_lowest_index(sband, NULL);
2119 else
2120 info->control.rates[0].idx =
2121 rate_lowest_index(sband, sta);
2112 return; 2122 return;
2113 } 2123 }
2114 2124
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 5da6b35cd26d..0dc8eed16404 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2482,7 +2482,7 @@ static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
2482 dev_kfree_skb_any(skb); 2482 dev_kfree_skb_any(skb);
2483 2483
2484 IWL_DEBUG_MACDUMP("leave\n"); 2484 IWL_DEBUG_MACDUMP("leave\n");
2485 return 0; 2485 return NETDEV_TX_OK;
2486} 2486}
2487 2487
2488static int iwl_mac_add_interface(struct ieee80211_hw *hw, 2488static int iwl_mac_add_interface(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 52966ffbef6e..ba997204c8d4 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -255,7 +255,7 @@ struct iwl_cmd_header {
255 * 0x3) 54 Mbps 255 * 0x3) 54 Mbps
256 * 256 *
257 * Legacy CCK rate format for bits 7:0 (bit 8 must be "0", bit 9 "1"): 257 * Legacy CCK rate format for bits 7:0 (bit 8 must be "0", bit 9 "1"):
258 * 3-0: 10) 1 Mbps 258 * 6-0: 10) 1 Mbps
259 * 20) 2 Mbps 259 * 20) 2 Mbps
260 * 55) 5.5 Mbps 260 * 55) 5.5 Mbps
261 * 110) 11 Mbps 261 * 110) 11 Mbps
diff --git a/drivers/net/wireless/iwlwifi/iwl-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
index 01a2169cecec..4b35b30e493e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
@@ -51,6 +51,7 @@ const char *get_cmd_string(u8 cmd)
51 IWL_CMD(REPLY_REMOVE_STA); 51 IWL_CMD(REPLY_REMOVE_STA);
52 IWL_CMD(REPLY_REMOVE_ALL_STA); 52 IWL_CMD(REPLY_REMOVE_ALL_STA);
53 IWL_CMD(REPLY_WEPKEY); 53 IWL_CMD(REPLY_WEPKEY);
54 IWL_CMD(REPLY_3945_RX);
54 IWL_CMD(REPLY_TX); 55 IWL_CMD(REPLY_TX);
55 IWL_CMD(REPLY_RATE_SCALE); 56 IWL_CMD(REPLY_RATE_SCALE);
56 IWL_CMD(REPLY_LEDS_CMD); 57 IWL_CMD(REPLY_LEDS_CMD);
@@ -223,7 +224,7 @@ int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
223 IWL_ERROR("Error: Response NULL in '%s'\n", 224 IWL_ERROR("Error: Response NULL in '%s'\n",
224 get_cmd_string(cmd->id)); 225 get_cmd_string(cmd->id));
225 ret = -EIO; 226 ret = -EIO;
226 goto out; 227 goto cancel;
227 } 228 }
228 229
229 ret = 0; 230 ret = 0;
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index d64580805d6e..95d01984c80e 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -745,7 +745,7 @@ static int iwl3945_send_cmd_sync(struct iwl3945_priv *priv, struct iwl3945_host_
745 IWL_ERROR("Error: Response NULL in '%s'\n", 745 IWL_ERROR("Error: Response NULL in '%s'\n",
746 get_cmd_string(cmd->id)); 746 get_cmd_string(cmd->id));
747 ret = -EIO; 747 ret = -EIO;
748 goto out; 748 goto cancel;
749 } 749 }
750 750
751 ret = 0; 751 ret = 0;
@@ -6538,7 +6538,7 @@ static int iwl3945_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
6538 dev_kfree_skb_any(skb); 6538 dev_kfree_skb_any(skb);
6539 6539
6540 IWL_DEBUG_MAC80211("leave\n"); 6540 IWL_DEBUG_MAC80211("leave\n");
6541 return 0; 6541 return NETDEV_TX_OK;
6542} 6542}
6543 6543
6544static int iwl3945_mac_add_interface(struct ieee80211_hw *hw, 6544static int iwl3945_mac_add_interface(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h
index e173b1b46c23..f6a79a653b7b 100644
--- a/drivers/net/wireless/libertas/hostcmd.h
+++ b/drivers/net/wireless/libertas/hostcmd.h
@@ -32,7 +32,7 @@ struct txpd {
32 u8 pktdelay_2ms; 32 u8 pktdelay_2ms;
33 /* reserved */ 33 /* reserved */
34 u8 reserved1; 34 u8 reserved1;
35}; 35} __attribute__ ((packed));
36 36
37/* RxPD Descriptor */ 37/* RxPD Descriptor */
38struct rxpd { 38struct rxpd {
@@ -63,7 +63,7 @@ struct rxpd {
63 /* Pkt Priority */ 63 /* Pkt Priority */
64 u8 priority; 64 u8 priority;
65 u8 reserved[3]; 65 u8 reserved[3];
66}; 66} __attribute__ ((packed));
67 67
68struct cmd_header { 68struct cmd_header {
69 __le16 command; 69 __le16 command;
@@ -97,7 +97,7 @@ struct enc_key {
97struct lbs_offset_value { 97struct lbs_offset_value {
98 u32 offset; 98 u32 offset;
99 u32 value; 99 u32 value;
100}; 100} __attribute__ ((packed));
101 101
102/* Define general data structure */ 102/* Define general data structure */
103/* cmd_DS_GEN */ 103/* cmd_DS_GEN */
@@ -107,7 +107,7 @@ struct cmd_ds_gen {
107 __le16 seqnum; 107 __le16 seqnum;
108 __le16 result; 108 __le16 result;
109 void *cmdresp[0]; 109 void *cmdresp[0];
110}; 110} __attribute__ ((packed));
111 111
112#define S_DS_GEN sizeof(struct cmd_ds_gen) 112#define S_DS_GEN sizeof(struct cmd_ds_gen)
113 113
@@ -163,7 +163,7 @@ struct cmd_ds_802_11_subscribe_event {
163 * bump this up a bit. 163 * bump this up a bit.
164 */ 164 */
165 uint8_t tlv[128]; 165 uint8_t tlv[128];
166}; 166} __attribute__ ((packed));
167 167
168/* 168/*
169 * This scan handle Country Information IE(802.11d compliant) 169 * This scan handle Country Information IE(802.11d compliant)
@@ -180,7 +180,7 @@ struct cmd_ds_802_11_scan {
180 mrvlietypes_chanlistparamset_t ChanListParamSet; 180 mrvlietypes_chanlistparamset_t ChanListParamSet;
181 mrvlietypes_ratesparamset_t OpRateSet; 181 mrvlietypes_ratesparamset_t OpRateSet;
182#endif 182#endif
183}; 183} __attribute__ ((packed));
184 184
185struct cmd_ds_802_11_scan_rsp { 185struct cmd_ds_802_11_scan_rsp {
186 struct cmd_header hdr; 186 struct cmd_header hdr;
@@ -188,7 +188,7 @@ struct cmd_ds_802_11_scan_rsp {
188 __le16 bssdescriptsize; 188 __le16 bssdescriptsize;
189 uint8_t nr_sets; 189 uint8_t nr_sets;
190 uint8_t bssdesc_and_tlvbuffer[0]; 190 uint8_t bssdesc_and_tlvbuffer[0];
191}; 191} __attribute__ ((packed));
192 192
193struct cmd_ds_802_11_get_log { 193struct cmd_ds_802_11_get_log {
194 struct cmd_header hdr; 194 struct cmd_header hdr;
@@ -206,33 +206,33 @@ struct cmd_ds_802_11_get_log {
206 __le32 fcserror; 206 __le32 fcserror;
207 __le32 txframe; 207 __le32 txframe;
208 __le32 wepundecryptable; 208 __le32 wepundecryptable;
209}; 209} __attribute__ ((packed));
210 210
211struct cmd_ds_mac_control { 211struct cmd_ds_mac_control {
212 struct cmd_header hdr; 212 struct cmd_header hdr;
213 __le16 action; 213 __le16 action;
214 u16 reserved; 214 u16 reserved;
215}; 215} __attribute__ ((packed));
216 216
217struct cmd_ds_mac_multicast_adr { 217struct cmd_ds_mac_multicast_adr {
218 struct cmd_header hdr; 218 struct cmd_header hdr;
219 __le16 action; 219 __le16 action;
220 __le16 nr_of_adrs; 220 __le16 nr_of_adrs;
221 u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE]; 221 u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];
222}; 222} __attribute__ ((packed));
223 223
224struct cmd_ds_802_11_authenticate { 224struct cmd_ds_802_11_authenticate {
225 u8 macaddr[ETH_ALEN]; 225 u8 macaddr[ETH_ALEN];
226 u8 authtype; 226 u8 authtype;
227 u8 reserved[10]; 227 u8 reserved[10];
228}; 228} __attribute__ ((packed));
229 229
230struct cmd_ds_802_11_deauthenticate { 230struct cmd_ds_802_11_deauthenticate {
231 struct cmd_header hdr; 231 struct cmd_header hdr;
232 232
233 u8 macaddr[ETH_ALEN]; 233 u8 macaddr[ETH_ALEN];
234 __le16 reasoncode; 234 __le16 reasoncode;
235}; 235} __attribute__ ((packed));
236 236
237struct cmd_ds_802_11_associate { 237struct cmd_ds_802_11_associate {
238 u8 peerstaaddr[6]; 238 u8 peerstaaddr[6];
@@ -251,7 +251,7 @@ struct cmd_ds_802_11_associate {
251 251
252struct cmd_ds_802_11_associate_rsp { 252struct cmd_ds_802_11_associate_rsp {
253 struct ieeetypes_assocrsp assocRsp; 253 struct ieeetypes_assocrsp assocRsp;
254}; 254} __attribute__ ((packed));
255 255
256struct cmd_ds_802_11_set_wep { 256struct cmd_ds_802_11_set_wep {
257 struct cmd_header hdr; 257 struct cmd_header hdr;
@@ -265,7 +265,7 @@ struct cmd_ds_802_11_set_wep {
265 /* 40, 128bit or TXWEP */ 265 /* 40, 128bit or TXWEP */
266 uint8_t keytype[4]; 266 uint8_t keytype[4];
267 uint8_t keymaterial[4][16]; 267 uint8_t keymaterial[4][16];
268}; 268} __attribute__ ((packed));
269 269
270struct cmd_ds_802_3_get_stat { 270struct cmd_ds_802_3_get_stat {
271 __le32 xmitok; 271 __le32 xmitok;
@@ -274,7 +274,7 @@ struct cmd_ds_802_3_get_stat {
274 __le32 rcverror; 274 __le32 rcverror;
275 __le32 rcvnobuffer; 275 __le32 rcvnobuffer;
276 __le32 rcvcrcerror; 276 __le32 rcvcrcerror;
277}; 277} __attribute__ ((packed));
278 278
279struct cmd_ds_802_11_get_stat { 279struct cmd_ds_802_11_get_stat {
280 __le32 txfragmentcnt; 280 __le32 txfragmentcnt;
@@ -294,7 +294,7 @@ struct cmd_ds_802_11_get_stat {
294 __le32 txbeacon; 294 __le32 txbeacon;
295 __le32 rxbeacon; 295 __le32 rxbeacon;
296 __le32 wepundecryptable; 296 __le32 wepundecryptable;
297}; 297} __attribute__ ((packed));
298 298
299struct cmd_ds_802_11_snmp_mib { 299struct cmd_ds_802_11_snmp_mib {
300 struct cmd_header hdr; 300 struct cmd_header hdr;
@@ -303,58 +303,58 @@ struct cmd_ds_802_11_snmp_mib {
303 __le16 oid; 303 __le16 oid;
304 __le16 bufsize; 304 __le16 bufsize;
305 u8 value[128]; 305 u8 value[128];
306}; 306} __attribute__ ((packed));
307 307
308struct cmd_ds_mac_reg_map { 308struct cmd_ds_mac_reg_map {
309 __le16 buffersize; 309 __le16 buffersize;
310 u8 regmap[128]; 310 u8 regmap[128];
311 __le16 reserved; 311 __le16 reserved;
312}; 312} __attribute__ ((packed));
313 313
314struct cmd_ds_bbp_reg_map { 314struct cmd_ds_bbp_reg_map {
315 __le16 buffersize; 315 __le16 buffersize;
316 u8 regmap[128]; 316 u8 regmap[128];
317 __le16 reserved; 317 __le16 reserved;
318}; 318} __attribute__ ((packed));
319 319
320struct cmd_ds_rf_reg_map { 320struct cmd_ds_rf_reg_map {
321 __le16 buffersize; 321 __le16 buffersize;
322 u8 regmap[64]; 322 u8 regmap[64];
323 __le16 reserved; 323 __le16 reserved;
324}; 324} __attribute__ ((packed));
325 325
326struct cmd_ds_mac_reg_access { 326struct cmd_ds_mac_reg_access {
327 __le16 action; 327 __le16 action;
328 __le16 offset; 328 __le16 offset;
329 __le32 value; 329 __le32 value;
330}; 330} __attribute__ ((packed));
331 331
332struct cmd_ds_bbp_reg_access { 332struct cmd_ds_bbp_reg_access {
333 __le16 action; 333 __le16 action;
334 __le16 offset; 334 __le16 offset;
335 u8 value; 335 u8 value;
336 u8 reserved[3]; 336 u8 reserved[3];
337}; 337} __attribute__ ((packed));
338 338
339struct cmd_ds_rf_reg_access { 339struct cmd_ds_rf_reg_access {
340 __le16 action; 340 __le16 action;
341 __le16 offset; 341 __le16 offset;
342 u8 value; 342 u8 value;
343 u8 reserved[3]; 343 u8 reserved[3];
344}; 344} __attribute__ ((packed));
345 345
346struct cmd_ds_802_11_radio_control { 346struct cmd_ds_802_11_radio_control {
347 struct cmd_header hdr; 347 struct cmd_header hdr;
348 348
349 __le16 action; 349 __le16 action;
350 __le16 control; 350 __le16 control;
351}; 351} __attribute__ ((packed));
352 352
353struct cmd_ds_802_11_beacon_control { 353struct cmd_ds_802_11_beacon_control {
354 __le16 action; 354 __le16 action;
355 __le16 beacon_enable; 355 __le16 beacon_enable;
356 __le16 beacon_period; 356 __le16 beacon_period;
357}; 357} __attribute__ ((packed));
358 358
359struct cmd_ds_802_11_sleep_params { 359struct cmd_ds_802_11_sleep_params {
360 struct cmd_header hdr; 360 struct cmd_header hdr;
@@ -379,7 +379,7 @@ struct cmd_ds_802_11_sleep_params {
379 379
380 /* reserved field, should be set to zero */ 380 /* reserved field, should be set to zero */
381 __le16 reserved; 381 __le16 reserved;
382}; 382} __attribute__ ((packed));
383 383
384struct cmd_ds_802_11_inactivity_timeout { 384struct cmd_ds_802_11_inactivity_timeout {
385 struct cmd_header hdr; 385 struct cmd_header hdr;
@@ -389,7 +389,7 @@ struct cmd_ds_802_11_inactivity_timeout {
389 389
390 /* Inactivity timeout in msec */ 390 /* Inactivity timeout in msec */
391 __le16 timeout; 391 __le16 timeout;
392}; 392} __attribute__ ((packed));
393 393
394struct cmd_ds_802_11_rf_channel { 394struct cmd_ds_802_11_rf_channel {
395 struct cmd_header hdr; 395 struct cmd_header hdr;
@@ -399,7 +399,7 @@ struct cmd_ds_802_11_rf_channel {
399 __le16 rftype; /* unused */ 399 __le16 rftype; /* unused */
400 __le16 reserved; /* unused */ 400 __le16 reserved; /* unused */
401 u8 channellist[32]; /* unused */ 401 u8 channellist[32]; /* unused */
402}; 402} __attribute__ ((packed));
403 403
404struct cmd_ds_802_11_rssi { 404struct cmd_ds_802_11_rssi {
405 /* weighting factor */ 405 /* weighting factor */
@@ -408,21 +408,21 @@ struct cmd_ds_802_11_rssi {
408 __le16 reserved_0; 408 __le16 reserved_0;
409 __le16 reserved_1; 409 __le16 reserved_1;
410 __le16 reserved_2; 410 __le16 reserved_2;
411}; 411} __attribute__ ((packed));
412 412
413struct cmd_ds_802_11_rssi_rsp { 413struct cmd_ds_802_11_rssi_rsp {
414 __le16 SNR; 414 __le16 SNR;
415 __le16 noisefloor; 415 __le16 noisefloor;
416 __le16 avgSNR; 416 __le16 avgSNR;
417 __le16 avgnoisefloor; 417 __le16 avgnoisefloor;
418}; 418} __attribute__ ((packed));
419 419
420struct cmd_ds_802_11_mac_address { 420struct cmd_ds_802_11_mac_address {
421 struct cmd_header hdr; 421 struct cmd_header hdr;
422 422
423 __le16 action; 423 __le16 action;
424 u8 macadd[ETH_ALEN]; 424 u8 macadd[ETH_ALEN];
425}; 425} __attribute__ ((packed));
426 426
427struct cmd_ds_802_11_rf_tx_power { 427struct cmd_ds_802_11_rf_tx_power {
428 struct cmd_header hdr; 428 struct cmd_header hdr;
@@ -431,7 +431,7 @@ struct cmd_ds_802_11_rf_tx_power {
431 __le16 curlevel; 431 __le16 curlevel;
432 s8 maxlevel; 432 s8 maxlevel;
433 s8 minlevel; 433 s8 minlevel;
434}; 434} __attribute__ ((packed));
435 435
436struct cmd_ds_802_11_rf_antenna { 436struct cmd_ds_802_11_rf_antenna {
437 __le16 action; 437 __le16 action;
@@ -439,33 +439,33 @@ struct cmd_ds_802_11_rf_antenna {
439 /* Number of antennas or 0xffff(diversity) */ 439 /* Number of antennas or 0xffff(diversity) */
440 __le16 antennamode; 440 __le16 antennamode;
441 441
442}; 442} __attribute__ ((packed));
443 443
444struct cmd_ds_802_11_monitor_mode { 444struct cmd_ds_802_11_monitor_mode {
445 __le16 action; 445 __le16 action;
446 __le16 mode; 446 __le16 mode;
447}; 447} __attribute__ ((packed));
448 448
449struct cmd_ds_set_boot2_ver { 449struct cmd_ds_set_boot2_ver {
450 struct cmd_header hdr; 450 struct cmd_header hdr;
451 451
452 __le16 action; 452 __le16 action;
453 __le16 version; 453 __le16 version;
454}; 454} __attribute__ ((packed));
455 455
456struct cmd_ds_802_11_fw_wake_method { 456struct cmd_ds_802_11_fw_wake_method {
457 struct cmd_header hdr; 457 struct cmd_header hdr;
458 458
459 __le16 action; 459 __le16 action;
460 __le16 method; 460 __le16 method;
461}; 461} __attribute__ ((packed));
462 462
463struct cmd_ds_802_11_sleep_period { 463struct cmd_ds_802_11_sleep_period {
464 struct cmd_header hdr; 464 struct cmd_header hdr;
465 465
466 __le16 action; 466 __le16 action;
467 __le16 period; 467 __le16 period;
468}; 468} __attribute__ ((packed));
469 469
470struct cmd_ds_802_11_ps_mode { 470struct cmd_ds_802_11_ps_mode {
471 __le16 action; 471 __le16 action;
@@ -473,7 +473,7 @@ struct cmd_ds_802_11_ps_mode {
473 __le16 multipledtim; 473 __le16 multipledtim;
474 __le16 reserved; 474 __le16 reserved;
475 __le16 locallisteninterval; 475 __le16 locallisteninterval;
476}; 476} __attribute__ ((packed));
477 477
478struct cmd_confirm_sleep { 478struct cmd_confirm_sleep {
479 struct cmd_header hdr; 479 struct cmd_header hdr;
@@ -483,7 +483,7 @@ struct cmd_confirm_sleep {
483 __le16 multipledtim; 483 __le16 multipledtim;
484 __le16 reserved; 484 __le16 reserved;
485 __le16 locallisteninterval; 485 __le16 locallisteninterval;
486}; 486} __attribute__ ((packed));
487 487
488struct cmd_ds_802_11_data_rate { 488struct cmd_ds_802_11_data_rate {
489 struct cmd_header hdr; 489 struct cmd_header hdr;
@@ -491,14 +491,14 @@ struct cmd_ds_802_11_data_rate {
491 __le16 action; 491 __le16 action;
492 __le16 reserved; 492 __le16 reserved;
493 u8 rates[MAX_RATES]; 493 u8 rates[MAX_RATES];
494}; 494} __attribute__ ((packed));
495 495
496struct cmd_ds_802_11_rate_adapt_rateset { 496struct cmd_ds_802_11_rate_adapt_rateset {
497 struct cmd_header hdr; 497 struct cmd_header hdr;
498 __le16 action; 498 __le16 action;
499 __le16 enablehwauto; 499 __le16 enablehwauto;
500 __le16 bitmap; 500 __le16 bitmap;
501}; 501} __attribute__ ((packed));
502 502
503struct cmd_ds_802_11_ad_hoc_start { 503struct cmd_ds_802_11_ad_hoc_start {
504 struct cmd_header hdr; 504 struct cmd_header hdr;
@@ -520,7 +520,7 @@ struct cmd_ds_802_11_ad_hoc_result {
520 520
521 u8 pad[3]; 521 u8 pad[3];
522 u8 bssid[ETH_ALEN]; 522 u8 bssid[ETH_ALEN];
523}; 523} __attribute__ ((packed));
524 524
525struct adhoc_bssdesc { 525struct adhoc_bssdesc {
526 u8 bssid[ETH_ALEN]; 526 u8 bssid[ETH_ALEN];
@@ -578,7 +578,7 @@ struct MrvlIEtype_keyParamSet {
578 578
579 /* key material of size keylen */ 579 /* key material of size keylen */
580 u8 key[32]; 580 u8 key[32];
581}; 581} __attribute__ ((packed));
582 582
583#define MAX_WOL_RULES 16 583#define MAX_WOL_RULES 16
584 584
@@ -590,7 +590,7 @@ struct host_wol_rule {
590 __le16 reserve; 590 __le16 reserve;
591 __be32 sig_mask; 591 __be32 sig_mask;
592 __be32 signature; 592 __be32 signature;
593}; 593} __attribute__ ((packed));
594 594
595struct wol_config { 595struct wol_config {
596 uint8_t action; 596 uint8_t action;
@@ -598,8 +598,7 @@ struct wol_config {
598 uint8_t no_rules_in_cmd; 598 uint8_t no_rules_in_cmd;
599 uint8_t result; 599 uint8_t result;
600 struct host_wol_rule rule[MAX_WOL_RULES]; 600 struct host_wol_rule rule[MAX_WOL_RULES];
601}; 601} __attribute__ ((packed));
602
603 602
604struct cmd_ds_host_sleep { 603struct cmd_ds_host_sleep {
605 struct cmd_header hdr; 604 struct cmd_header hdr;
diff --git a/drivers/net/wireless/libertas_tf/main.c b/drivers/net/wireless/libertas_tf/main.c
index d1fc305de5fe..e7289e2e7f16 100644
--- a/drivers/net/wireless/libertas_tf/main.c
+++ b/drivers/net/wireless/libertas_tf/main.c
@@ -206,7 +206,7 @@ static int lbtf_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
206 * there are no buffered multicast frames to send 206 * there are no buffered multicast frames to send
207 */ 207 */
208 ieee80211_stop_queues(priv->hw); 208 ieee80211_stop_queues(priv->hw);
209 return 0; 209 return NETDEV_TX_OK;
210} 210}
211 211
212static void lbtf_tx_work(struct work_struct *work) 212static void lbtf_tx_work(struct work_struct *work)
diff --git a/drivers/net/wireless/orinoco/orinoco.c b/drivers/net/wireless/orinoco/orinoco.c
index bc84e2792f8a..45a04faa7818 100644
--- a/drivers/net/wireless/orinoco/orinoco.c
+++ b/drivers/net/wireless/orinoco/orinoco.c
@@ -1610,6 +1610,16 @@ static void orinoco_rx_isr_tasklet(unsigned long data)
1610 struct orinoco_rx_data *rx_data, *temp; 1610 struct orinoco_rx_data *rx_data, *temp;
1611 struct hermes_rx_descriptor *desc; 1611 struct hermes_rx_descriptor *desc;
1612 struct sk_buff *skb; 1612 struct sk_buff *skb;
1613 unsigned long flags;
1614
1615 /* orinoco_rx requires the driver lock, and we also need to
1616 * protect priv->rx_list, so just hold the lock over the
1617 * lot.
1618 *
1619 * If orinoco_lock fails, we've unplugged the card. In this
1620 * case just abort. */
1621 if (orinoco_lock(priv, &flags) != 0)
1622 return;
1613 1623
1614 /* extract desc and skb from queue */ 1624 /* extract desc and skb from queue */
1615 list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { 1625 list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) {
@@ -1622,6 +1632,8 @@ static void orinoco_rx_isr_tasklet(unsigned long data)
1622 1632
1623 kfree(desc); 1633 kfree(desc);
1624 } 1634 }
1635
1636 orinoco_unlock(priv, &flags);
1625} 1637}
1626 1638
1627/********************************************************************/ 1639/********************************************************************/
@@ -1661,7 +1673,7 @@ static void print_linkstatus(struct net_device *dev, u16 status)
1661 s = "UNKNOWN"; 1673 s = "UNKNOWN";
1662 } 1674 }
1663 1675
1664 printk(KERN_INFO "%s: New link status: %s (%04x)\n", 1676 printk(KERN_DEBUG "%s: New link status: %s (%04x)\n",
1665 dev->name, s, status); 1677 dev->name, s, status);
1666} 1678}
1667 1679
@@ -3645,12 +3657,22 @@ struct net_device
3645void free_orinocodev(struct net_device *dev) 3657void free_orinocodev(struct net_device *dev)
3646{ 3658{
3647 struct orinoco_private *priv = netdev_priv(dev); 3659 struct orinoco_private *priv = netdev_priv(dev);
3660 struct orinoco_rx_data *rx_data, *temp;
3648 3661
3649 /* No need to empty priv->rx_list: if the tasklet is scheduled 3662 /* If the tasklet is scheduled when we call tasklet_kill it
3650 * when we call tasklet_kill it will run one final time, 3663 * will run one final time. However the tasklet will only
3651 * emptying the list */ 3664 * drain priv->rx_list if the hw is still available. */
3652 tasklet_kill(&priv->rx_tasklet); 3665 tasklet_kill(&priv->rx_tasklet);
3653 3666
3667 /* Explicitly drain priv->rx_list */
3668 list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) {
3669 list_del(&rx_data->list);
3670
3671 dev_kfree_skb(rx_data->skb);
3672 kfree(rx_data->desc);
3673 kfree(rx_data);
3674 }
3675
3654 unregister_pm_notifier(&priv->pm_notifier); 3676 unregister_pm_notifier(&priv->pm_notifier);
3655 orinoco_uncache_fw(priv); 3677 orinoco_uncache_fw(priv);
3656 3678
@@ -5046,33 +5068,30 @@ static int orinoco_ioctl_set_genie(struct net_device *dev,
5046 struct orinoco_private *priv = netdev_priv(dev); 5068 struct orinoco_private *priv = netdev_priv(dev);
5047 u8 *buf; 5069 u8 *buf;
5048 unsigned long flags; 5070 unsigned long flags;
5049 int err = 0;
5050 5071
5051 /* cut off at IEEE80211_MAX_DATA_LEN */ 5072 /* cut off at IEEE80211_MAX_DATA_LEN */
5052 if ((wrqu->data.length > IEEE80211_MAX_DATA_LEN) || 5073 if ((wrqu->data.length > IEEE80211_MAX_DATA_LEN) ||
5053 (wrqu->data.length && (extra == NULL))) 5074 (wrqu->data.length && (extra == NULL)))
5054 return -EINVAL; 5075 return -EINVAL;
5055 5076
5056 if (orinoco_lock(priv, &flags) != 0)
5057 return -EBUSY;
5058
5059 if (wrqu->data.length) { 5077 if (wrqu->data.length) {
5060 buf = kmalloc(wrqu->data.length, GFP_KERNEL); 5078 buf = kmalloc(wrqu->data.length, GFP_KERNEL);
5061 if (buf == NULL) { 5079 if (buf == NULL)
5062 err = -ENOMEM; 5080 return -ENOMEM;
5063 goto out;
5064 }
5065 5081
5066 memcpy(buf, extra, wrqu->data.length); 5082 memcpy(buf, extra, wrqu->data.length);
5067 kfree(priv->wpa_ie); 5083 } else
5068 priv->wpa_ie = buf; 5084 buf = NULL;
5069 priv->wpa_ie_len = wrqu->data.length; 5085
5070 } else { 5086 if (orinoco_lock(priv, &flags) != 0) {
5071 kfree(priv->wpa_ie); 5087 kfree(buf);
5072 priv->wpa_ie = NULL; 5088 return -EBUSY;
5073 priv->wpa_ie_len = 0;
5074 } 5089 }
5075 5090
5091 kfree(priv->wpa_ie);
5092 priv->wpa_ie = buf;
5093 priv->wpa_ie_len = wrqu->data.length;
5094
5076 if (priv->wpa_ie) { 5095 if (priv->wpa_ie) {
5077 /* Looks like wl_lkm wants to check the auth alg, and 5096 /* Looks like wl_lkm wants to check the auth alg, and
5078 * somehow pass it to the firmware. 5097 * somehow pass it to the firmware.
@@ -5081,9 +5100,8 @@ static int orinoco_ioctl_set_genie(struct net_device *dev,
5081 */ 5100 */
5082 } 5101 }
5083 5102
5084out:
5085 orinoco_unlock(priv, &flags); 5103 orinoco_unlock(priv, &flags);
5086 return err; 5104 return 0;
5087} 5105}
5088 5106
5089static int orinoco_ioctl_get_genie(struct net_device *dev, 5107static int orinoco_ioctl_get_genie(struct net_device *dev,
diff --git a/drivers/net/wireless/orinoco/orinoco_cs.c b/drivers/net/wireless/orinoco/orinoco_cs.c
index f127602670ec..0b32215d3f5d 100644
--- a/drivers/net/wireless/orinoco/orinoco_cs.c
+++ b/drivers/net/wireless/orinoco/orinoco_cs.c
@@ -435,6 +435,7 @@ static struct pcmcia_device_id orinoco_cs_ids[] = {
435 PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */ 435 PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */
436 PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */ 436 PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */
437 PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */ 437 PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */
438 PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0003), /* ARtem Onair Comcard 11 */
438 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */ 439 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */
439 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */ 440 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */
440 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */ 441 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
index 82354b974a04..34561e6e816b 100644
--- a/drivers/net/wireless/p54/p54common.c
+++ b/drivers/net/wireless/p54/p54common.c
@@ -138,6 +138,7 @@ int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw)
138 u8 *fw_version = NULL; 138 u8 *fw_version = NULL;
139 size_t len; 139 size_t len;
140 int i; 140 int i;
141 int maxlen;
141 142
142 if (priv->rx_start) 143 if (priv->rx_start)
143 return 0; 144 return 0;
@@ -195,6 +196,16 @@ int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw)
195 else 196 else
196 priv->rx_mtu = (size_t) 197 priv->rx_mtu = (size_t)
197 0x620 - priv->tx_hdr_len; 198 0x620 - priv->tx_hdr_len;
199 maxlen = priv->tx_hdr_len + /* USB devices */
200 sizeof(struct p54_rx_data) +
201 4 + /* rx alignment */
202 IEEE80211_MAX_FRAG_THRESHOLD;
203 if (priv->rx_mtu > maxlen && PAGE_SIZE == 4096) {
204 printk(KERN_INFO "p54: rx_mtu reduced from %d "
205 "to %d\n", priv->rx_mtu,
206 maxlen);
207 priv->rx_mtu = maxlen;
208 }
198 break; 209 break;
199 } 210 }
200 case BR_CODE_EXPOSED_IF: 211 case BR_CODE_EXPOSED_IF:
@@ -440,8 +451,8 @@ static int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
440 } 451 }
441 if (err) 452 if (err)
442 goto err; 453 goto err;
443 454 }
444 } 455 break;
445 case PDR_PRISM_ZIF_TX_IQ_CALIBRATION: 456 case PDR_PRISM_ZIF_TX_IQ_CALIBRATION:
446 priv->iq_autocal = kmalloc(data_len, GFP_KERNEL); 457 priv->iq_autocal = kmalloc(data_len, GFP_KERNEL);
447 if (!priv->iq_autocal) { 458 if (!priv->iq_autocal) {
@@ -575,6 +586,7 @@ static int p54_rx_data(struct ieee80211_hw *dev, struct sk_buff *skb)
575 u16 freq = le16_to_cpu(hdr->freq); 586 u16 freq = le16_to_cpu(hdr->freq);
576 size_t header_len = sizeof(*hdr); 587 size_t header_len = sizeof(*hdr);
577 u32 tsf32; 588 u32 tsf32;
589 u8 rate = hdr->rate & 0xf;
578 590
579 /* 591 /*
580 * If the device is in a unspecified state we have to 592 * If the device is in a unspecified state we have to
@@ -603,8 +615,11 @@ static int p54_rx_data(struct ieee80211_hw *dev, struct sk_buff *skb)
603 rx_status.qual = (100 * hdr->rssi) / 127; 615 rx_status.qual = (100 * hdr->rssi) / 127;
604 if (hdr->rate & 0x10) 616 if (hdr->rate & 0x10)
605 rx_status.flag |= RX_FLAG_SHORTPRE; 617 rx_status.flag |= RX_FLAG_SHORTPRE;
606 rx_status.rate_idx = (dev->conf.channel->band == IEEE80211_BAND_2GHZ ? 618 if (dev->conf.channel->band == IEEE80211_BAND_5GHZ)
607 hdr->rate : (hdr->rate - 4)) & 0xf; 619 rx_status.rate_idx = (rate < 4) ? 0 : rate - 4;
620 else
621 rx_status.rate_idx = rate;
622
608 rx_status.freq = freq; 623 rx_status.freq = freq;
609 rx_status.band = dev->conf.channel->band; 624 rx_status.band = dev->conf.channel->band;
610 rx_status.antenna = hdr->antenna; 625 rx_status.antenna = hdr->antenna;
@@ -730,7 +745,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
730 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(entry); 745 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(entry);
731 struct p54_hdr *entry_hdr; 746 struct p54_hdr *entry_hdr;
732 struct p54_tx_data *entry_data; 747 struct p54_tx_data *entry_data;
733 int pad = 0; 748 unsigned int pad = 0, frame_len;
734 749
735 range = (void *)info->rate_driver_data; 750 range = (void *)info->rate_driver_data;
736 if (range->start_addr != addr) { 751 if (range->start_addr != addr) {
@@ -753,6 +768,7 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
753 __skb_unlink(entry, &priv->tx_queue); 768 __skb_unlink(entry, &priv->tx_queue);
754 spin_unlock_irqrestore(&priv->tx_queue.lock, flags); 769 spin_unlock_irqrestore(&priv->tx_queue.lock, flags);
755 770
771 frame_len = entry->len;
756 entry_hdr = (struct p54_hdr *) entry->data; 772 entry_hdr = (struct p54_hdr *) entry->data;
757 entry_data = (struct p54_tx_data *) entry_hdr->data; 773 entry_data = (struct p54_tx_data *) entry_hdr->data;
758 priv->tx_stats[entry_data->hw_queue].len--; 774 priv->tx_stats[entry_data->hw_queue].len--;
@@ -798,6 +814,29 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb)
798 info->flags |= IEEE80211_TX_STAT_TX_FILTERED; 814 info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
799 info->status.ack_signal = p54_rssi_to_dbm(dev, 815 info->status.ack_signal = p54_rssi_to_dbm(dev,
800 (int)payload->ack_rssi); 816 (int)payload->ack_rssi);
817
818 /* Undo all changes to the frame. */
819 switch (entry_data->key_type) {
820 case P54_CRYPTO_TKIPMICHAEL: {
821 u8 *iv = (u8 *)(entry_data->align + pad +
822 entry_data->crypt_offset);
823
824 /* Restore the original TKIP IV. */
825 iv[2] = iv[0];
826 iv[0] = iv[1];
827 iv[1] = (iv[0] | 0x20) & 0x7f; /* WEPSeed - 8.3.2.2 */
828
829 frame_len -= 12; /* remove TKIP_MMIC + TKIP_ICV */
830 break;
831 }
832 case P54_CRYPTO_AESCCMP:
833 frame_len -= 8; /* remove CCMP_MIC */
834 break;
835 case P54_CRYPTO_WEP:
836 frame_len -= 4; /* remove WEP_ICV */
837 break;
838 }
839 skb_trim(entry, frame_len);
801 skb_pull(entry, sizeof(*hdr) + pad + sizeof(*entry_data)); 840 skb_pull(entry, sizeof(*hdr) + pad + sizeof(*entry_data));
802 ieee80211_tx_status_irqsafe(dev, entry); 841 ieee80211_tx_status_irqsafe(dev, entry);
803 goto out; 842 goto out;
@@ -1122,7 +1161,7 @@ static int p54_set_tim(struct ieee80211_hw *dev, struct ieee80211_sta *sta,
1122 1161
1123 skb = p54_alloc_skb(dev, P54_HDR_FLAG_CONTROL_OPSET, 1162 skb = p54_alloc_skb(dev, P54_HDR_FLAG_CONTROL_OPSET,
1124 sizeof(struct p54_hdr) + sizeof(*tim), 1163 sizeof(struct p54_hdr) + sizeof(*tim),
1125 P54_CONTROL_TYPE_TIM, GFP_KERNEL); 1164 P54_CONTROL_TYPE_TIM, GFP_ATOMIC);
1126 if (!skb) 1165 if (!skb)
1127 return -ENOMEM; 1166 return -ENOMEM;
1128 1167
@@ -1383,7 +1422,6 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
1383 hdr->tries = ridx; 1422 hdr->tries = ridx;
1384 txhdr->rts_rate_idx = 0; 1423 txhdr->rts_rate_idx = 0;
1385 if (info->control.hw_key) { 1424 if (info->control.hw_key) {
1386 crypt_offset += info->control.hw_key->iv_len;
1387 txhdr->key_type = p54_convert_algo(info->control.hw_key->alg); 1425 txhdr->key_type = p54_convert_algo(info->control.hw_key->alg);
1388 txhdr->key_len = min((u8)16, info->control.hw_key->keylen); 1426 txhdr->key_len = min((u8)16, info->control.hw_key->keylen);
1389 memcpy(txhdr->key, info->control.hw_key->key, txhdr->key_len); 1427 memcpy(txhdr->key, info->control.hw_key->key, txhdr->key_len);
@@ -1397,6 +1435,8 @@ static int p54_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
1397 } 1435 }
1398 /* reserve some space for ICV */ 1436 /* reserve some space for ICV */
1399 len += info->control.hw_key->icv_len; 1437 len += info->control.hw_key->icv_len;
1438 memset(skb_put(skb, info->control.hw_key->icv_len), 0,
1439 info->control.hw_key->icv_len);
1400 } else { 1440 } else {
1401 txhdr->key_type = 0; 1441 txhdr->key_type = 0;
1402 txhdr->key_len = 0; 1442 txhdr->key_len = 0;
@@ -1584,7 +1624,7 @@ static int p54_scan(struct ieee80211_hw *dev, u16 mode, u16 dwell)
1584 1624
1585 err: 1625 err:
1586 printk(KERN_ERR "%s: frequency change failed\n", wiphy_name(dev->wiphy)); 1626 printk(KERN_ERR "%s: frequency change failed\n", wiphy_name(dev->wiphy));
1587 kfree_skb(skb); 1627 p54_free_skb(dev, skb);
1588 return -EINVAL; 1628 return -EINVAL;
1589} 1629}
1590 1630
@@ -1824,7 +1864,7 @@ static void p54_remove_interface(struct ieee80211_hw *dev,
1824 1864
1825static int p54_config(struct ieee80211_hw *dev, u32 changed) 1865static int p54_config(struct ieee80211_hw *dev, u32 changed)
1826{ 1866{
1827 int ret; 1867 int ret = 0;
1828 struct p54_common *priv = dev->priv; 1868 struct p54_common *priv = dev->priv;
1829 struct ieee80211_conf *conf = &dev->conf; 1869 struct ieee80211_conf *conf = &dev->conf;
1830 1870
@@ -2051,7 +2091,7 @@ static int p54_set_key(struct ieee80211_hw *dev, enum set_key_cmd cmd,
2051 algo = P54_CRYPTO_AESCCMP; 2091 algo = P54_CRYPTO_AESCCMP;
2052 break; 2092 break;
2053 default: 2093 default:
2054 return -EINVAL; 2094 return -EOPNOTSUPP;
2055 } 2095 }
2056 } 2096 }
2057 2097
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c
index c44a200059d2..5de2ebfb28c7 100644
--- a/drivers/net/wireless/p54/p54usb.c
+++ b/drivers/net/wireless/p54/p54usb.c
@@ -56,6 +56,7 @@ static struct usb_device_id p54u_table[] __devinitdata = {
56 {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */ 56 {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */
57 {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */ 57 {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */
58 {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */ 58 {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */
59 {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */
59 {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ 60 {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */
60 {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ 61 {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */
61 {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */ 62 {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */
@@ -143,11 +144,8 @@ static void p54u_tx_cb(struct urb *urb)
143 struct sk_buff *skb = urb->context; 144 struct sk_buff *skb = urb->context;
144 struct ieee80211_hw *dev = (struct ieee80211_hw *) 145 struct ieee80211_hw *dev = (struct ieee80211_hw *)
145 usb_get_intfdata(usb_ifnum_to_if(urb->dev, 0)); 146 usb_get_intfdata(usb_ifnum_to_if(urb->dev, 0));
146 struct p54u_priv *priv = dev->priv;
147 147
148 skb_pull(skb, priv->common.tx_hdr_len); 148 p54_free_skb(dev, skb);
149 if (FREE_AFTER_TX(skb))
150 p54_free_skb(dev, skb);
151} 149}
152 150
153static void p54u_tx_dummy_cb(struct urb *urb) { } 151static void p54u_tx_dummy_cb(struct urb *urb) { }
@@ -229,7 +227,10 @@ static void p54u_tx_3887(struct ieee80211_hw *dev, struct sk_buff *skb)
229 p54u_tx_dummy_cb, dev); 227 p54u_tx_dummy_cb, dev);
230 usb_fill_bulk_urb(data_urb, priv->udev, 228 usb_fill_bulk_urb(data_urb, priv->udev,
231 usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), 229 usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA),
232 skb->data, skb->len, p54u_tx_cb, skb); 230 skb->data, skb->len, FREE_AFTER_TX(skb) ?
231 p54u_tx_cb : p54u_tx_dummy_cb, skb);
232 addr_urb->transfer_flags |= URB_ZERO_PACKET;
233 data_urb->transfer_flags |= URB_ZERO_PACKET;
233 234
234 usb_anchor_urb(addr_urb, &priv->submitted); 235 usb_anchor_urb(addr_urb, &priv->submitted);
235 err = usb_submit_urb(addr_urb, GFP_ATOMIC); 236 err = usb_submit_urb(addr_urb, GFP_ATOMIC);
@@ -238,7 +239,7 @@ static void p54u_tx_3887(struct ieee80211_hw *dev, struct sk_buff *skb)
238 goto out; 239 goto out;
239 } 240 }
240 241
241 usb_anchor_urb(addr_urb, &priv->submitted); 242 usb_anchor_urb(data_urb, &priv->submitted);
242 err = usb_submit_urb(data_urb, GFP_ATOMIC); 243 err = usb_submit_urb(data_urb, GFP_ATOMIC);
243 if (err) 244 if (err)
244 usb_unanchor_urb(data_urb); 245 usb_unanchor_urb(data_urb);
@@ -268,27 +269,24 @@ static void p54u_tx_lm87(struct ieee80211_hw *dev, struct sk_buff *skb)
268{ 269{
269 struct p54u_priv *priv = dev->priv; 270 struct p54u_priv *priv = dev->priv;
270 struct urb *data_urb; 271 struct urb *data_urb;
271 struct lm87_tx_hdr *hdr; 272 struct lm87_tx_hdr *hdr = (void *)skb->data - sizeof(*hdr);
272 __le32 checksum;
273 __le32 addr = ((struct p54_hdr *)skb->data)->req_id;
274 273
275 data_urb = usb_alloc_urb(0, GFP_ATOMIC); 274 data_urb = usb_alloc_urb(0, GFP_ATOMIC);
276 if (!data_urb) 275 if (!data_urb)
277 return; 276 return;
278 277
279 checksum = p54u_lm87_chksum((__le32 *)skb->data, skb->len); 278 hdr->chksum = p54u_lm87_chksum((__le32 *)skb->data, skb->len);
280 hdr = (struct lm87_tx_hdr *)skb_push(skb, sizeof(*hdr)); 279 hdr->device_addr = ((struct p54_hdr *)skb->data)->req_id;
281 hdr->chksum = checksum;
282 hdr->device_addr = addr;
283 280
284 usb_fill_bulk_urb(data_urb, priv->udev, 281 usb_fill_bulk_urb(data_urb, priv->udev,
285 usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), 282 usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA),
286 skb->data, skb->len, p54u_tx_cb, skb); 283 hdr, skb->len + sizeof(*hdr), FREE_AFTER_TX(skb) ?
284 p54u_tx_cb : p54u_tx_dummy_cb, skb);
285 data_urb->transfer_flags |= URB_ZERO_PACKET;
287 286
288 usb_anchor_urb(data_urb, &priv->submitted); 287 usb_anchor_urb(data_urb, &priv->submitted);
289 if (usb_submit_urb(data_urb, GFP_ATOMIC)) { 288 if (usb_submit_urb(data_urb, GFP_ATOMIC)) {
290 usb_unanchor_urb(data_urb); 289 usb_unanchor_urb(data_urb);
291 skb_pull(skb, sizeof(*hdr));
292 p54_free_skb(dev, skb); 290 p54_free_skb(dev, skb);
293 } 291 }
294 usb_free_urb(data_urb); 292 usb_free_urb(data_urb);
@@ -298,11 +296,9 @@ static void p54u_tx_net2280(struct ieee80211_hw *dev, struct sk_buff *skb)
298{ 296{
299 struct p54u_priv *priv = dev->priv; 297 struct p54u_priv *priv = dev->priv;
300 struct urb *int_urb, *data_urb; 298 struct urb *int_urb, *data_urb;
301 struct net2280_tx_hdr *hdr; 299 struct net2280_tx_hdr *hdr = (void *)skb->data - sizeof(*hdr);
302 struct net2280_reg_write *reg; 300 struct net2280_reg_write *reg;
303 int err = 0; 301 int err = 0;
304 __le32 addr = ((struct p54_hdr *) skb->data)->req_id;
305 __le16 len = cpu_to_le16(skb->len);
306 302
307 reg = kmalloc(sizeof(*reg), GFP_ATOMIC); 303 reg = kmalloc(sizeof(*reg), GFP_ATOMIC);
308 if (!reg) 304 if (!reg)
@@ -325,10 +321,9 @@ static void p54u_tx_net2280(struct ieee80211_hw *dev, struct sk_buff *skb)
325 reg->addr = cpu_to_le32(P54U_DEV_BASE); 321 reg->addr = cpu_to_le32(P54U_DEV_BASE);
326 reg->val = cpu_to_le32(ISL38XX_DEV_INT_DATA); 322 reg->val = cpu_to_le32(ISL38XX_DEV_INT_DATA);
327 323
328 hdr = (void *)skb_push(skb, sizeof(*hdr));
329 memset(hdr, 0, sizeof(*hdr)); 324 memset(hdr, 0, sizeof(*hdr));
330 hdr->len = len; 325 hdr->len = cpu_to_le16(skb->len);
331 hdr->device_addr = addr; 326 hdr->device_addr = ((struct p54_hdr *) skb->data)->req_id;
332 327
333 usb_fill_bulk_urb(int_urb, priv->udev, 328 usb_fill_bulk_urb(int_urb, priv->udev,
334 usb_sndbulkpipe(priv->udev, P54U_PIPE_DEV), reg, sizeof(*reg), 329 usb_sndbulkpipe(priv->udev, P54U_PIPE_DEV), reg, sizeof(*reg),
@@ -339,11 +334,13 @@ static void p54u_tx_net2280(struct ieee80211_hw *dev, struct sk_buff *skb)
339 * free what's inside the transfer_buffer after the callback routine 334 * free what's inside the transfer_buffer after the callback routine
340 * has completed. 335 * has completed.
341 */ 336 */
342 int_urb->transfer_flags |= URB_FREE_BUFFER; 337 int_urb->transfer_flags |= URB_FREE_BUFFER | URB_ZERO_PACKET;
343 338
344 usb_fill_bulk_urb(data_urb, priv->udev, 339 usb_fill_bulk_urb(data_urb, priv->udev,
345 usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA), 340 usb_sndbulkpipe(priv->udev, P54U_PIPE_DATA),
346 skb->data, skb->len, p54u_tx_cb, skb); 341 hdr, skb->len + sizeof(*hdr), FREE_AFTER_TX(skb) ?
342 p54u_tx_cb : p54u_tx_dummy_cb, skb);
343 data_urb->transfer_flags |= URB_ZERO_PACKET;
347 344
348 usb_anchor_urb(int_urb, &priv->submitted); 345 usb_anchor_urb(int_urb, &priv->submitted);
349 err = usb_submit_urb(int_urb, GFP_ATOMIC); 346 err = usb_submit_urb(int_urb, GFP_ATOMIC);
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 607ce9f61b54..ed93ac41297f 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -1649,9 +1649,7 @@ static char *rndis_translate_scan(struct net_device *dev,
1649 char *end_buf, 1649 char *end_buf,
1650 struct ndis_80211_bssid_ex *bssid) 1650 struct ndis_80211_bssid_ex *bssid)
1651{ 1651{
1652#ifdef DEBUG
1653 struct usbnet *usbdev = netdev_priv(dev); 1652 struct usbnet *usbdev = netdev_priv(dev);
1654#endif
1655 u8 *ie; 1653 u8 *ie;
1656 char *current_val; 1654 char *current_val;
1657 int bssid_len, ie_len, i; 1655 int bssid_len, ie_len, i;
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 30028e2422fc..af6b5847be5c 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -38,7 +38,7 @@
38/* 38/*
39 * Allow hardware encryption to be disabled. 39 * Allow hardware encryption to be disabled.
40 */ 40 */
41static int modparam_nohwcrypt = 1; 41static int modparam_nohwcrypt = 0;
42module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO); 42module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO);
43MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption."); 43MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
44 44
@@ -376,11 +376,11 @@ static int rt2500usb_config_key(struct rt2x00_dev *rt2x00dev,
376 376
377 /* 377 /*
378 * The driver does not support the IV/EIV generation 378 * The driver does not support the IV/EIV generation
379 * in hardware. However it doesn't support the IV/EIV 379 * in hardware. However it demands the data to be provided
380 * inside the ieee80211 frame either, but requires it 380 * both seperately as well as inside the frame.
381 * to be provided seperately for the descriptor. 381 * We already provided the CONFIG_CRYPTO_COPY_IV to rt2x00lib
382 * rt2x00lib will cut the IV/EIV data out of all frames 382 * to ensure rt2x00lib will not strip the data from the
383 * given to us by mac80211, but we must tell mac80211 383 * frame after the copy, now we must tell mac80211
384 * to generate the IV/EIV data. 384 * to generate the IV/EIV data.
385 */ 385 */
386 key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; 386 key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
@@ -1181,7 +1181,7 @@ static void rt2500usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
1181 test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags)); 1181 test_bit(ENTRY_TXD_FIRST_FRAGMENT, &txdesc->flags));
1182 rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs); 1182 rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->ifs);
1183 rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len); 1183 rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, skb->len);
1184 rt2x00_set_field32(&word, TXD_W0_CIPHER, txdesc->cipher); 1184 rt2x00_set_field32(&word, TXD_W0_CIPHER, !!txdesc->cipher);
1185 rt2x00_set_field32(&word, TXD_W0_KEY_ID, txdesc->key_idx); 1185 rt2x00_set_field32(&word, TXD_W0_KEY_ID, txdesc->key_idx);
1186 rt2x00_desc_write(txd, 0, word); 1186 rt2x00_desc_write(txd, 0, word);
1187} 1187}
@@ -1334,14 +1334,7 @@ static void rt2500usb_fill_rxdone(struct queue_entry *entry,
1334 1334
1335 /* ICV is located at the end of frame */ 1335 /* ICV is located at the end of frame */
1336 1336
1337 /* 1337 rxdesc->flags |= RX_FLAG_MMIC_STRIPPED;
1338 * Hardware has stripped IV/EIV data from 802.11 frame during
1339 * decryption. It has provided the data seperately but rt2x00lib
1340 * should decide if it should be reinserted.
1341 */
1342 rxdesc->flags |= RX_FLAG_IV_STRIPPED;
1343 if (rxdesc->cipher != CIPHER_TKIP)
1344 rxdesc->flags |= RX_FLAG_MMIC_STRIPPED;
1345 if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) 1338 if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS)
1346 rxdesc->flags |= RX_FLAG_DECRYPTED; 1339 rxdesc->flags |= RX_FLAG_DECRYPTED;
1347 else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) 1340 else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC)
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 6d92542fcf0d..87c0f2c83077 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -807,13 +807,11 @@ static void rt2x00lib_rate(struct ieee80211_rate *entry,
807{ 807{
808 entry->flags = 0; 808 entry->flags = 0;
809 entry->bitrate = rate->bitrate; 809 entry->bitrate = rate->bitrate;
810 entry->hw_value = rt2x00_create_rate_hw_value(index, 0); 810 entry->hw_value =index;
811 entry->hw_value_short = entry->hw_value; 811 entry->hw_value_short = index;
812 812
813 if (rate->flags & DEV_RATE_SHORT_PREAMBLE) { 813 if (rate->flags & DEV_RATE_SHORT_PREAMBLE)
814 entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE; 814 entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE;
815 entry->hw_value_short |= rt2x00_create_rate_hw_value(index, 1);
816 }
817} 815}
818 816
819static int rt2x00lib_probe_hw_modes(struct rt2x00_dev *rt2x00dev, 817static int rt2x00lib_probe_hw_modes(struct rt2x00_dev *rt2x00dev,
diff --git a/drivers/net/wireless/rt2x00/rt2x00leds.c b/drivers/net/wireless/rt2x00/rt2x00leds.c
index 68f4e0fc35b9..a0cd35b6beb5 100644
--- a/drivers/net/wireless/rt2x00/rt2x00leds.c
+++ b/drivers/net/wireless/rt2x00/rt2x00leds.c
@@ -97,7 +97,7 @@ void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled)
97 97
98void rt2x00leds_led_radio(struct rt2x00_dev *rt2x00dev, bool enabled) 98void rt2x00leds_led_radio(struct rt2x00_dev *rt2x00dev, bool enabled)
99{ 99{
100 if (rt2x00dev->led_radio.type == LED_TYPE_ASSOC) 100 if (rt2x00dev->led_radio.type == LED_TYPE_RADIO)
101 rt2x00led_led_simple(&rt2x00dev->led_radio, enabled); 101 rt2x00led_led_simple(&rt2x00dev->led_radio, enabled);
102} 102}
103 103
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h
index 03024327767b..86cd26fbf769 100644
--- a/drivers/net/wireless/rt2x00/rt2x00lib.h
+++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
@@ -52,22 +52,11 @@ struct rt2x00_rate {
52 52
53extern const struct rt2x00_rate rt2x00_supported_rates[12]; 53extern const struct rt2x00_rate rt2x00_supported_rates[12];
54 54
55static inline u16 rt2x00_create_rate_hw_value(const u16 index,
56 const u16 short_preamble)
57{
58 return (short_preamble << 8) | (index & 0xff);
59}
60
61static inline const struct rt2x00_rate *rt2x00_get_rate(const u16 hw_value) 55static inline const struct rt2x00_rate *rt2x00_get_rate(const u16 hw_value)
62{ 56{
63 return &rt2x00_supported_rates[hw_value & 0xff]; 57 return &rt2x00_supported_rates[hw_value & 0xff];
64} 58}
65 59
66static inline int rt2x00_get_rate_preamble(const u16 hw_value)
67{
68 return (hw_value & 0xff00);
69}
70
71/* 60/*
72 * Radio control handlers. 61 * Radio control handlers.
73 */ 62 */
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
index eaec6bd93ed5..0709decec9c2 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -154,6 +154,7 @@ static void rt2x00queue_create_tx_descriptor(struct queue_entry *entry,
154 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; 154 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
155 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb); 155 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb);
156 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)entry->skb->data; 156 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)entry->skb->data;
157 struct ieee80211_tx_rate *txrate = &tx_info->control.rates[0];
157 struct ieee80211_rate *rate = 158 struct ieee80211_rate *rate =
158 ieee80211_get_tx_rate(rt2x00dev->hw, tx_info); 159 ieee80211_get_tx_rate(rt2x00dev->hw, tx_info);
159 const struct rt2x00_rate *hwrate; 160 const struct rt2x00_rate *hwrate;
@@ -313,7 +314,7 @@ static void rt2x00queue_create_tx_descriptor(struct queue_entry *entry,
313 * When preamble is enabled we should set the 314 * When preamble is enabled we should set the
314 * preamble bit for the signal. 315 * preamble bit for the signal.
315 */ 316 */
316 if (rt2x00_get_rate_preamble(rate->hw_value)) 317 if (txrate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
317 txdesc->signal |= 0x08; 318 txdesc->signal |= 0x08;
318 } 319 }
319} 320}
diff --git a/drivers/net/wireless/rt2x00/rt2x00rfkill.c b/drivers/net/wireless/rt2x00/rt2x00rfkill.c
index c3f53a92180a..3298cae1e12d 100644
--- a/drivers/net/wireless/rt2x00/rt2x00rfkill.c
+++ b/drivers/net/wireless/rt2x00/rt2x00rfkill.c
@@ -162,7 +162,7 @@ void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev)
162 162
163void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) 163void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev)
164{ 164{
165 if (!test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->flags)) 165 if (!test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state))
166 return; 166 return;
167 167
168 cancel_delayed_work_sync(&rt2x00dev->rfkill_work); 168 cancel_delayed_work_sync(&rt2x00dev->rfkill_work);
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index 83df312ac56f..0b29d767a258 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -434,11 +434,11 @@ static int rt2x00usb_find_endpoints(struct rt2x00_dev *rt2x00dev)
434 434
435 if (usb_endpoint_is_bulk_in(ep_desc)) { 435 if (usb_endpoint_is_bulk_in(ep_desc)) {
436 rt2x00usb_assign_endpoint(rt2x00dev->rx, ep_desc); 436 rt2x00usb_assign_endpoint(rt2x00dev->rx, ep_desc);
437 } else if (usb_endpoint_is_bulk_out(ep_desc)) { 437 } else if (usb_endpoint_is_bulk_out(ep_desc) &&
438 (queue != queue_end(rt2x00dev))) {
438 rt2x00usb_assign_endpoint(queue, ep_desc); 439 rt2x00usb_assign_endpoint(queue, ep_desc);
440 queue = queue_next(queue);
439 441
440 if (queue != queue_end(rt2x00dev))
441 queue = queue_next(queue);
442 tx_ep_desc = ep_desc; 442 tx_ep_desc = ep_desc;
443 } 443 }
444 } 444 }
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index d638a8a59370..96a8d69f8790 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -2321,6 +2321,7 @@ static struct usb_device_id rt73usb_device_table[] = {
2321 /* Linksys */ 2321 /* Linksys */
2322 { USB_DEVICE(0x13b1, 0x0020), USB_DEVICE_DATA(&rt73usb_ops) }, 2322 { USB_DEVICE(0x13b1, 0x0020), USB_DEVICE_DATA(&rt73usb_ops) },
2323 { USB_DEVICE(0x13b1, 0x0023), USB_DEVICE_DATA(&rt73usb_ops) }, 2323 { USB_DEVICE(0x13b1, 0x0023), USB_DEVICE_DATA(&rt73usb_ops) },
2324 { USB_DEVICE(0x13b1, 0x0028), USB_DEVICE_DATA(&rt73usb_ops) },
2324 /* MSI */ 2325 /* MSI */
2325 { USB_DEVICE(0x0db0, 0x6877), USB_DEVICE_DATA(&rt73usb_ops) }, 2326 { USB_DEVICE(0x0db0, 0x6877), USB_DEVICE_DATA(&rt73usb_ops) },
2326 { USB_DEVICE(0x0db0, 0x6874), USB_DEVICE_DATA(&rt73usb_ops) }, 2327 { USB_DEVICE(0x0db0, 0x6874), USB_DEVICE_DATA(&rt73usb_ops) },
diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c
index 5f887fb137a9..387c133ec0f2 100644
--- a/drivers/net/wireless/rtl818x/rtl8180_dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c
@@ -897,6 +897,7 @@ static int __devinit rtl8180_probe(struct pci_dev *pdev,
897 dev->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | 897 dev->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING |
898 IEEE80211_HW_RX_INCLUDES_FCS | 898 IEEE80211_HW_RX_INCLUDES_FCS |
899 IEEE80211_HW_SIGNAL_UNSPEC; 899 IEEE80211_HW_SIGNAL_UNSPEC;
900 dev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
900 dev->queues = 1; 901 dev->queues = 1;
901 dev->max_signal = 65; 902 dev->max_signal = 65;
902 903
diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c
index 00ce3ef39abe..22bc07ef2f37 100644
--- a/drivers/net/wireless/rtl818x/rtl8187_dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c
@@ -213,7 +213,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
213 urb = usb_alloc_urb(0, GFP_ATOMIC); 213 urb = usb_alloc_urb(0, GFP_ATOMIC);
214 if (!urb) { 214 if (!urb) {
215 kfree_skb(skb); 215 kfree_skb(skb);
216 return -ENOMEM; 216 return NETDEV_TX_OK;
217 } 217 }
218 218
219 flags = skb->len; 219 flags = skb->len;
@@ -273,6 +273,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
273 273
274 usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, ep), 274 usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, ep),
275 buf, skb->len, rtl8187_tx_cb, skb); 275 buf, skb->len, rtl8187_tx_cb, skb);
276 urb->transfer_flags |= URB_ZERO_PACKET;
276 usb_anchor_urb(urb, &priv->anchored); 277 usb_anchor_urb(urb, &priv->anchored);
277 rc = usb_submit_urb(urb, GFP_ATOMIC); 278 rc = usb_submit_urb(urb, GFP_ATOMIC);
278 if (rc < 0) { 279 if (rc < 0) {
@@ -281,7 +282,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
281 } 282 }
282 usb_free_urb(urb); 283 usb_free_urb(urb);
283 284
284 return rc; 285 return NETDEV_TX_OK;
285} 286}
286 287
287static void rtl8187_rx_cb(struct urb *urb) 288static void rtl8187_rx_cb(struct urb *urb)
@@ -1471,6 +1472,7 @@ static void __devexit rtl8187_disconnect(struct usb_interface *intf)
1471 ieee80211_unregister_hw(dev); 1472 ieee80211_unregister_hw(dev);
1472 1473
1473 priv = dev->priv; 1474 priv = dev->priv;
1475 usb_reset_device(priv->udev);
1474 usb_put_dev(interface_to_usbdev(intf)); 1476 usb_put_dev(interface_to_usbdev(intf));
1475 ieee80211_free_hw(dev); 1477 ieee80211_free_hw(dev);
1476} 1478}
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index b5db57d2fcf5..17527f765b39 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -84,6 +84,7 @@ static struct usb_device_id usb_ids[] = {
84 { USB_DEVICE(0x0586, 0x340a), .driver_info = DEVICE_ZD1211B }, 84 { USB_DEVICE(0x0586, 0x340a), .driver_info = DEVICE_ZD1211B },
85 { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, 85 { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B },
86 { USB_DEVICE(0x07fa, 0x1196), .driver_info = DEVICE_ZD1211B }, 86 { USB_DEVICE(0x07fa, 0x1196), .driver_info = DEVICE_ZD1211B },
87 { USB_DEVICE(0x0df6, 0x0036), .driver_info = DEVICE_ZD1211B },
87 /* "Driverless" devices that need ejecting */ 88 /* "Driverless" devices that need ejecting */
88 { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER }, 89 { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER },
89 { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER }, 90 { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER },
diff --git a/drivers/of/of_i2c.c b/drivers/of/of_i2c.c
index e1b0ad6e918f..fa65a2b2ae2e 100644
--- a/drivers/of/of_i2c.c
+++ b/drivers/of/of_i2c.c
@@ -66,4 +66,23 @@ void of_register_i2c_devices(struct i2c_adapter *adap,
66} 66}
67EXPORT_SYMBOL(of_register_i2c_devices); 67EXPORT_SYMBOL(of_register_i2c_devices);
68 68
69static int of_dev_node_match(struct device *dev, void *data)
70{
71 return dev_archdata_get_node(&dev->archdata) == data;
72}
73
74/* must call put_device() when done with returned i2c_client device */
75struct i2c_client *of_find_i2c_device_by_node(struct device_node *node)
76{
77 struct device *dev;
78
79 dev = bus_find_device(&i2c_bus_type, NULL, node,
80 of_dev_node_match);
81 if (!dev)
82 return NULL;
83
84 return to_i2c_client(dev);
85}
86EXPORT_SYMBOL(of_find_i2c_device_by_node);
87
69MODULE_LICENSE("GPL"); 88MODULE_LICENSE("GPL");
diff --git a/drivers/oprofile/cpu_buffer.c b/drivers/oprofile/cpu_buffer.c
index 2e03b6d796d3..e76d715e4342 100644
--- a/drivers/oprofile/cpu_buffer.c
+++ b/drivers/oprofile/cpu_buffer.c
@@ -393,16 +393,21 @@ oprofile_write_reserve(struct op_entry *entry, struct pt_regs * const regs,
393 return; 393 return;
394 394
395fail: 395fail:
396 entry->event = NULL;
396 cpu_buf->sample_lost_overflow++; 397 cpu_buf->sample_lost_overflow++;
397} 398}
398 399
399int oprofile_add_data(struct op_entry *entry, unsigned long val) 400int oprofile_add_data(struct op_entry *entry, unsigned long val)
400{ 401{
402 if (!entry->event)
403 return 0;
401 return op_cpu_buffer_add_data(entry, val); 404 return op_cpu_buffer_add_data(entry, val);
402} 405}
403 406
404int oprofile_write_commit(struct op_entry *entry) 407int oprofile_write_commit(struct op_entry *entry)
405{ 408{
409 if (!entry->event)
410 return -EINVAL;
406 return op_cpu_buffer_write_commit(entry); 411 return op_cpu_buffer_write_commit(entry);
407} 412}
408 413
diff --git a/drivers/oprofile/cpu_buffer.h b/drivers/oprofile/cpu_buffer.h
index 63f81c44846a..272995d20293 100644
--- a/drivers/oprofile/cpu_buffer.h
+++ b/drivers/oprofile/cpu_buffer.h
@@ -66,6 +66,13 @@ static inline void op_cpu_buffer_reset(int cpu)
66 cpu_buf->last_task = NULL; 66 cpu_buf->last_task = NULL;
67} 67}
68 68
69/*
70 * op_cpu_buffer_add_data() and op_cpu_buffer_write_commit() may be
71 * called only if op_cpu_buffer_write_reserve() did not return NULL or
72 * entry->event != NULL, otherwise entry->size or entry->event will be
73 * used uninitialized.
74 */
75
69struct op_sample 76struct op_sample
70*op_cpu_buffer_write_reserve(struct op_entry *entry, unsigned long size); 77*op_cpu_buffer_write_reserve(struct op_entry *entry, unsigned long size);
71int op_cpu_buffer_write_commit(struct op_entry *entry); 78int op_cpu_buffer_write_commit(struct op_entry *entry);
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index f09b1010d477..803d9ddd6e75 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -266,6 +266,8 @@ static int detect_ejectable_slots(struct pci_bus *pbus)
266 int found = acpi_pci_detect_ejectable(pbus); 266 int found = acpi_pci_detect_ejectable(pbus);
267 if (!found) { 267 if (!found) {
268 acpi_handle bridge_handle = acpi_pci_get_bridge_handle(pbus); 268 acpi_handle bridge_handle = acpi_pci_get_bridge_handle(pbus);
269 if (!bridge_handle)
270 return 0;
269 acpi_walk_namespace(ACPI_TYPE_DEVICE, bridge_handle, (u32)1, 271 acpi_walk_namespace(ACPI_TYPE_DEVICE, bridge_handle, (u32)1,
270 is_pci_dock_device, (void *)&found, NULL); 272 is_pci_dock_device, (void *)&found, NULL);
271 } 273 }
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
index 5482d4ed8256..c2485542f543 100644
--- a/drivers/pci/hotplug/pciehp_core.c
+++ b/drivers/pci/hotplug/pciehp_core.c
@@ -126,8 +126,10 @@ static int set_lock_status(struct hotplug_slot *hotplug_slot, u8 status)
126 mutex_lock(&slot->ctrl->crit_sect); 126 mutex_lock(&slot->ctrl->crit_sect);
127 127
128 /* has it been >1 sec since our last toggle? */ 128 /* has it been >1 sec since our last toggle? */
129 if ((get_seconds() - slot->last_emi_toggle) < 1) 129 if ((get_seconds() - slot->last_emi_toggle) < 1) {
130 mutex_unlock(&slot->ctrl->crit_sect);
130 return -EINVAL; 131 return -EINVAL;
132 }
131 133
132 /* see what our current state is */ 134 /* see what our current state is */
133 retval = get_lock_status(hotplug_slot, &value); 135 retval = get_lock_status(hotplug_slot, &value);
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index b4a90badd0a6..896a15d70f5b 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -398,21 +398,19 @@ static int msi_capability_init(struct pci_dev *dev)
398 entry->msi_attrib.masked = 1; 398 entry->msi_attrib.masked = 1;
399 entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */ 399 entry->msi_attrib.default_irq = dev->irq; /* Save IOAPIC IRQ */
400 entry->msi_attrib.pos = pos; 400 entry->msi_attrib.pos = pos;
401 if (entry->msi_attrib.maskbit) {
402 entry->mask_base = (void __iomem *)(long)msi_mask_bits_reg(pos,
403 entry->msi_attrib.is_64);
404 }
405 entry->dev = dev; 401 entry->dev = dev;
406 if (entry->msi_attrib.maskbit) { 402 if (entry->msi_attrib.maskbit) {
407 unsigned int maskbits, temp; 403 unsigned int base, maskbits, temp;
404
405 base = msi_mask_bits_reg(pos, entry->msi_attrib.is_64);
406 entry->mask_base = (void __iomem *)(long)base;
407
408 /* All MSIs are unmasked by default, Mask them all */ 408 /* All MSIs are unmasked by default, Mask them all */
409 pci_read_config_dword(dev, 409 pci_read_config_dword(dev, base, &maskbits);
410 msi_mask_bits_reg(pos, entry->msi_attrib.is_64),
411 &maskbits);
412 temp = (1 << multi_msi_capable(control)); 410 temp = (1 << multi_msi_capable(control));
413 temp = ((temp - 1) & ~temp); 411 temp = ((temp - 1) & ~temp);
414 maskbits |= temp; 412 maskbits |= temp;
415 pci_write_config_dword(dev, entry->msi_attrib.is_64, maskbits); 413 pci_write_config_dword(dev, base, maskbits);
416 entry->msi_attrib.maskbits_mask = temp; 414 entry->msi_attrib.maskbits_mask = temp;
417 } 415 }
418 list_add_tail(&entry->list, &dev->msi_list); 416 list_add_tail(&entry->list, &dev->msi_list);
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index c697f2680856..9de07b75b993 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -355,17 +355,27 @@ static int pci_legacy_suspend(struct device *dev, pm_message_t state)
355 int i = 0; 355 int i = 0;
356 356
357 if (drv && drv->suspend) { 357 if (drv && drv->suspend) {
358 pci_dev->state_saved = false;
359
358 i = drv->suspend(pci_dev, state); 360 i = drv->suspend(pci_dev, state);
359 suspend_report_result(drv->suspend, i); 361 suspend_report_result(drv->suspend, i);
360 } else { 362 if (i)
361 pci_save_state(pci_dev); 363 return i;
362 /* 364
363 * This is for compatibility with existing code with legacy PM 365 if (pci_dev->state_saved)
364 * support. 366 goto Fixup;
365 */ 367
366 pci_pm_set_unknown_state(pci_dev); 368 if (WARN_ON_ONCE(pci_dev->current_state != PCI_D0))
369 goto Fixup;
367 } 370 }
368 371
372 pci_save_state(pci_dev);
373 /*
374 * This is for compatibility with existing code with legacy PM support.
375 */
376 pci_pm_set_unknown_state(pci_dev);
377
378 Fixup:
369 pci_fixup_device(pci_fixup_suspend, pci_dev); 379 pci_fixup_device(pci_fixup_suspend, pci_dev);
370 380
371 return i; 381 return i;
@@ -386,81 +396,34 @@ static int pci_legacy_suspend_late(struct device *dev, pm_message_t state)
386 396
387static int pci_legacy_resume_early(struct device *dev) 397static int pci_legacy_resume_early(struct device *dev)
388{ 398{
389 int error = 0;
390 struct pci_dev * pci_dev = to_pci_dev(dev); 399 struct pci_dev * pci_dev = to_pci_dev(dev);
391 struct pci_driver * drv = pci_dev->driver; 400 struct pci_driver * drv = pci_dev->driver;
392 401
393 pci_fixup_device(pci_fixup_resume_early, pci_dev); 402 return drv && drv->resume_early ?
394 403 drv->resume_early(pci_dev) : 0;
395 if (drv && drv->resume_early)
396 error = drv->resume_early(pci_dev);
397 return error;
398} 404}
399 405
400static int pci_legacy_resume(struct device *dev) 406static int pci_legacy_resume(struct device *dev)
401{ 407{
402 int error;
403 struct pci_dev * pci_dev = to_pci_dev(dev); 408 struct pci_dev * pci_dev = to_pci_dev(dev);
404 struct pci_driver * drv = pci_dev->driver; 409 struct pci_driver * drv = pci_dev->driver;
405 410
406 pci_fixup_device(pci_fixup_resume, pci_dev); 411 pci_fixup_device(pci_fixup_resume, pci_dev);
407 412
408 if (drv && drv->resume) { 413 return drv && drv->resume ?
409 error = drv->resume(pci_dev); 414 drv->resume(pci_dev) : pci_pm_reenable_device(pci_dev);
410 } else {
411 /* restore the PCI config space */
412 pci_restore_state(pci_dev);
413 error = pci_pm_reenable_device(pci_dev);
414 }
415 return error;
416} 415}
417 416
418/* Auxiliary functions used by the new power management framework */ 417/* Auxiliary functions used by the new power management framework */
419 418
420static int pci_restore_standard_config(struct pci_dev *pci_dev)
421{
422 struct pci_dev *parent = pci_dev->bus->self;
423 int error = 0;
424
425 /* Check if the device's bus is operational */
426 if (!parent || parent->current_state == PCI_D0) {
427 pci_restore_state(pci_dev);
428 pci_update_current_state(pci_dev, PCI_D0);
429 } else {
430 dev_warn(&pci_dev->dev, "unable to restore config, "
431 "bridge %s in low power state D%d\n", pci_name(parent),
432 parent->current_state);
433 pci_dev->current_state = PCI_UNKNOWN;
434 error = -EAGAIN;
435 }
436
437 return error;
438}
439
440static bool pci_is_bridge(struct pci_dev *pci_dev)
441{
442 return !!(pci_dev->subordinate);
443}
444
445static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev) 419static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev)
446{ 420{
447 if (pci_restore_standard_config(pci_dev)) 421 pci_restore_standard_config(pci_dev);
448 pci_fixup_device(pci_fixup_resume_early, pci_dev); 422 pci_fixup_device(pci_fixup_resume_early, pci_dev);
449} 423}
450 424
451static int pci_pm_default_resume(struct pci_dev *pci_dev) 425static int pci_pm_default_resume(struct pci_dev *pci_dev)
452{ 426{
453 /*
454 * pci_restore_standard_config() should have been called once already,
455 * but it would have failed if the device's parent bridge had not been
456 * in power state D0 at that time. Check it and try again if necessary.
457 */
458 if (pci_dev->current_state == PCI_UNKNOWN) {
459 int error = pci_restore_standard_config(pci_dev);
460 if (error)
461 return error;
462 }
463
464 pci_fixup_device(pci_fixup_resume, pci_dev); 427 pci_fixup_device(pci_fixup_resume, pci_dev);
465 428
466 if (!pci_is_bridge(pci_dev)) 429 if (!pci_is_bridge(pci_dev))
@@ -575,11 +538,11 @@ static int pci_pm_resume_noirq(struct device *dev)
575 struct device_driver *drv = dev->driver; 538 struct device_driver *drv = dev->driver;
576 int error = 0; 539 int error = 0;
577 540
541 pci_pm_default_resume_noirq(pci_dev);
542
578 if (pci_has_legacy_pm_support(pci_dev)) 543 if (pci_has_legacy_pm_support(pci_dev))
579 return pci_legacy_resume_early(dev); 544 return pci_legacy_resume_early(dev);
580 545
581 pci_pm_default_resume_noirq(pci_dev);
582
583 if (drv && drv->pm && drv->pm->resume_noirq) 546 if (drv && drv->pm && drv->pm->resume_noirq)
584 error = drv->pm->resume_noirq(dev); 547 error = drv->pm->resume_noirq(dev);
585 548
@@ -730,11 +693,11 @@ static int pci_pm_restore_noirq(struct device *dev)
730 struct device_driver *drv = dev->driver; 693 struct device_driver *drv = dev->driver;
731 int error = 0; 694 int error = 0;
732 695
696 pci_pm_default_resume_noirq(pci_dev);
697
733 if (pci_has_legacy_pm_support(pci_dev)) 698 if (pci_has_legacy_pm_support(pci_dev))
734 return pci_legacy_resume_early(dev); 699 return pci_legacy_resume_early(dev);
735 700
736 pci_pm_default_resume_noirq(pci_dev);
737
738 if (drv && drv->pm && drv->pm->restore_noirq) 701 if (drv && drv->pm && drv->pm->restore_noirq)
739 error = drv->pm->restore_noirq(dev); 702 error = drv->pm->restore_noirq(dev);
740 703
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index c12f6c790698..17bd9325a245 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -22,7 +22,7 @@
22#include <asm/dma.h> /* isa_dma_bridge_buggy */ 22#include <asm/dma.h> /* isa_dma_bridge_buggy */
23#include "pci.h" 23#include "pci.h"
24 24
25unsigned int pci_pm_d3_delay = 10; 25unsigned int pci_pm_d3_delay = PCI_PM_D3_WAIT;
26 26
27#ifdef CONFIG_PCI_DOMAINS 27#ifdef CONFIG_PCI_DOMAINS
28int pci_domains_supported = 1; 28int pci_domains_supported = 1;
@@ -426,6 +426,7 @@ static inline int platform_pci_sleep_wake(struct pci_dev *dev, bool enable)
426 * given PCI device 426 * given PCI device
427 * @dev: PCI device to handle. 427 * @dev: PCI device to handle.
428 * @state: PCI power state (D0, D1, D2, D3hot) to put the device into. 428 * @state: PCI power state (D0, D1, D2, D3hot) to put the device into.
429 * @wait: If 'true', wait for the device to change its power state
429 * 430 *
430 * RETURN VALUE: 431 * RETURN VALUE:
431 * -EINVAL if the requested state is invalid. 432 * -EINVAL if the requested state is invalid.
@@ -435,7 +436,7 @@ static inline int platform_pci_sleep_wake(struct pci_dev *dev, bool enable)
435 * 0 if device's power state has been successfully changed. 436 * 0 if device's power state has been successfully changed.
436 */ 437 */
437static int 438static int
438pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state) 439pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state, bool wait)
439{ 440{
440 u16 pmcsr; 441 u16 pmcsr;
441 bool need_restore = false; 442 bool need_restore = false;
@@ -480,8 +481,10 @@ pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
480 break; 481 break;
481 case PCI_UNKNOWN: /* Boot-up */ 482 case PCI_UNKNOWN: /* Boot-up */
482 if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot 483 if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot
483 && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET)) 484 && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET)) {
484 need_restore = true; 485 need_restore = true;
486 wait = true;
487 }
485 /* Fall-through: force to D0 */ 488 /* Fall-through: force to D0 */
486 default: 489 default:
487 pmcsr = 0; 490 pmcsr = 0;
@@ -491,12 +494,15 @@ pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
491 /* enter specified state */ 494 /* enter specified state */
492 pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, pmcsr); 495 pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, pmcsr);
493 496
497 if (!wait)
498 return 0;
499
494 /* Mandatory power management transition delays */ 500 /* Mandatory power management transition delays */
495 /* see PCI PM 1.1 5.6.1 table 18 */ 501 /* see PCI PM 1.1 5.6.1 table 18 */
496 if (state == PCI_D3hot || dev->current_state == PCI_D3hot) 502 if (state == PCI_D3hot || dev->current_state == PCI_D3hot)
497 msleep(pci_pm_d3_delay); 503 msleep(pci_pm_d3_delay);
498 else if (state == PCI_D2 || dev->current_state == PCI_D2) 504 else if (state == PCI_D2 || dev->current_state == PCI_D2)
499 udelay(200); 505 udelay(PCI_PM_D2_DELAY);
500 506
501 dev->current_state = state; 507 dev->current_state = state;
502 508
@@ -515,7 +521,7 @@ pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
515 if (need_restore) 521 if (need_restore)
516 pci_restore_bars(dev); 522 pci_restore_bars(dev);
517 523
518 if (dev->bus->self) 524 if (wait && dev->bus->self)
519 pcie_aspm_pm_state_change(dev->bus->self); 525 pcie_aspm_pm_state_change(dev->bus->self);
520 526
521 return 0; 527 return 0;
@@ -585,7 +591,7 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
585 if (state == PCI_D3hot && (dev->dev_flags & PCI_DEV_FLAGS_NO_D3)) 591 if (state == PCI_D3hot && (dev->dev_flags & PCI_DEV_FLAGS_NO_D3))
586 return 0; 592 return 0;
587 593
588 error = pci_raw_set_power_state(dev, state); 594 error = pci_raw_set_power_state(dev, state, true);
589 595
590 if (state > PCI_D0 && platform_pci_power_manageable(dev)) { 596 if (state > PCI_D0 && platform_pci_power_manageable(dev)) {
591 /* Allow the platform to finalize the transition */ 597 /* Allow the platform to finalize the transition */
@@ -730,6 +736,7 @@ pci_save_state(struct pci_dev *dev)
730 /* XXX: 100% dword access ok here? */ 736 /* XXX: 100% dword access ok here? */
731 for (i = 0; i < 16; i++) 737 for (i = 0; i < 16; i++)
732 pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]); 738 pci_read_config_dword(dev, i * 4,&dev->saved_config_space[i]);
739 dev->state_saved = true;
733 if ((i = pci_save_pcie_state(dev)) != 0) 740 if ((i = pci_save_pcie_state(dev)) != 0)
734 return i; 741 return i;
735 if ((i = pci_save_pcix_state(dev)) != 0) 742 if ((i = pci_save_pcix_state(dev)) != 0)
@@ -1260,15 +1267,14 @@ void pci_pm_init(struct pci_dev *dev)
1260 /* find PCI PM capability in list */ 1267 /* find PCI PM capability in list */
1261 pm = pci_find_capability(dev, PCI_CAP_ID_PM); 1268 pm = pci_find_capability(dev, PCI_CAP_ID_PM);
1262 if (!pm) 1269 if (!pm)
1263 goto Exit; 1270 return;
1264
1265 /* Check device's ability to generate PME# */ 1271 /* Check device's ability to generate PME# */
1266 pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc); 1272 pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc);
1267 1273
1268 if ((pmc & PCI_PM_CAP_VER_MASK) > 3) { 1274 if ((pmc & PCI_PM_CAP_VER_MASK) > 3) {
1269 dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n", 1275 dev_err(&dev->dev, "unsupported PM cap regs version (%u)\n",
1270 pmc & PCI_PM_CAP_VER_MASK); 1276 pmc & PCI_PM_CAP_VER_MASK);
1271 goto Exit; 1277 return;
1272 } 1278 }
1273 1279
1274 dev->pm_cap = pm; 1280 dev->pm_cap = pm;
@@ -1307,9 +1313,6 @@ void pci_pm_init(struct pci_dev *dev)
1307 } else { 1313 } else {
1308 dev->pme_support = 0; 1314 dev->pme_support = 0;
1309 } 1315 }
1310
1311 Exit:
1312 pci_update_current_state(dev, PCI_D0);
1313} 1316}
1314 1317
1315/** 1318/**
@@ -1378,6 +1381,50 @@ void pci_allocate_cap_save_buffers(struct pci_dev *dev)
1378} 1381}
1379 1382
1380/** 1383/**
1384 * pci_restore_standard_config - restore standard config registers of PCI device
1385 * @dev: PCI device to handle
1386 *
1387 * This function assumes that the device's configuration space is accessible.
1388 * If the device needs to be powered up, the function will wait for it to
1389 * change the state.
1390 */
1391int pci_restore_standard_config(struct pci_dev *dev)
1392{
1393 pci_power_t prev_state;
1394 int error;
1395
1396 pci_restore_state(dev);
1397 pci_update_current_state(dev, PCI_D0);
1398
1399 prev_state = dev->current_state;
1400 if (prev_state == PCI_D0)
1401 return 0;
1402
1403 error = pci_raw_set_power_state(dev, PCI_D0, false);
1404 if (error)
1405 return error;
1406
1407 if (pci_is_bridge(dev)) {
1408 if (prev_state > PCI_D1)
1409 mdelay(PCI_PM_BUS_WAIT);
1410 } else {
1411 switch(prev_state) {
1412 case PCI_D3cold:
1413 case PCI_D3hot:
1414 mdelay(pci_pm_d3_delay);
1415 break;
1416 case PCI_D2:
1417 udelay(PCI_PM_D2_DELAY);
1418 break;
1419 }
1420 }
1421
1422 dev->current_state = PCI_D0;
1423
1424 return 0;
1425}
1426
1427/**
1381 * pci_enable_ari - enable ARI forwarding if hardware support it 1428 * pci_enable_ari - enable ARI forwarding if hardware support it
1382 * @dev: the PCI device 1429 * @dev: the PCI device
1383 */ 1430 */
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index 1351bb4addde..26ddf78ac300 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -49,6 +49,12 @@ extern void pci_disable_enabled_device(struct pci_dev *dev);
49extern void pci_pm_init(struct pci_dev *dev); 49extern void pci_pm_init(struct pci_dev *dev);
50extern void platform_pci_wakeup_init(struct pci_dev *dev); 50extern void platform_pci_wakeup_init(struct pci_dev *dev);
51extern void pci_allocate_cap_save_buffers(struct pci_dev *dev); 51extern void pci_allocate_cap_save_buffers(struct pci_dev *dev);
52extern int pci_restore_standard_config(struct pci_dev *dev);
53
54static inline bool pci_is_bridge(struct pci_dev *pci_dev)
55{
56 return !!(pci_dev->subordinate);
57}
52 58
53extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); 59extern int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val);
54extern int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val); 60extern int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val);
diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
index 645d7a60e412..ec22284eed30 100644
--- a/drivers/pci/syscall.c
+++ b/drivers/pci/syscall.c
@@ -14,10 +14,8 @@
14#include <asm/uaccess.h> 14#include <asm/uaccess.h>
15#include "pci.h" 15#include "pci.h"
16 16
17asmlinkage long 17SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
18sys_pciconfig_read(unsigned long bus, unsigned long dfn, 18 unsigned long, off, unsigned long, len, void __user *, buf)
19 unsigned long off, unsigned long len,
20 void __user *buf)
21{ 19{
22 struct pci_dev *dev; 20 struct pci_dev *dev;
23 u8 byte; 21 u8 byte;
@@ -86,10 +84,8 @@ error:
86 return err; 84 return err;
87} 85}
88 86
89asmlinkage long 87SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn,
90sys_pciconfig_write(unsigned long bus, unsigned long dfn, 88 unsigned long, off, unsigned long, len, void __user *, buf)
91 unsigned long off, unsigned long len,
92 void __user *buf)
93{ 89{
94 struct pci_dev *dev; 90 struct pci_dev *dev;
95 u8 byte; 91 u8 byte;
diff --git a/drivers/pcmcia/electra_cf.c b/drivers/pcmcia/electra_cf.c
index a34284b1482a..d187ba4c5e0e 100644
--- a/drivers/pcmcia/electra_cf.c
+++ b/drivers/pcmcia/electra_cf.c
@@ -297,7 +297,7 @@ static int __devinit electra_cf_probe(struct of_device *ofdev,
297 goto fail3; 297 goto fail3;
298 } 298 }
299 299
300 dev_info(device, "at mem 0x%lx io 0x%lx irq %d\n", 300 dev_info(device, "at mem 0x%lx io 0x%llx irq %d\n",
301 cf->mem_phys, io.start, cf->irq); 301 cf->mem_phys, io.start, cf->irq);
302 302
303 cf->active = 1; 303 cf->active = 1;
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index e65448e99b48..1a266d4ab5f1 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -54,6 +54,18 @@ config ASUS_LAPTOP
54 54
55 If you have an ACPI-compatible ASUS laptop, say Y or M here. 55 If you have an ACPI-compatible ASUS laptop, say Y or M here.
56 56
57config DELL_LAPTOP
58 tristate "Dell Laptop Extras (EXPERIMENTAL)"
59 depends on X86
60 depends on DCDBAS
61 depends on EXPERIMENTAL
62 depends on BACKLIGHT_CLASS_DEVICE
63 depends on RFKILL
64 default n
65 ---help---
66 This driver adds support for rfkill and backlight control to Dell
67 laptops.
68
57config FUJITSU_LAPTOP 69config FUJITSU_LAPTOP
58 tristate "Fujitsu Laptop Extras" 70 tristate "Fujitsu Laptop Extras"
59 depends on ACPI 71 depends on ACPI
@@ -192,6 +204,17 @@ config THINKPAD_ACPI
192 204
193 If you have an IBM or Lenovo ThinkPad laptop, say Y or M here. 205 If you have an IBM or Lenovo ThinkPad laptop, say Y or M here.
194 206
207config THINKPAD_ACPI_DEBUGFACILITIES
208 bool "Maintainer debug facilities"
209 depends on THINKPAD_ACPI
210 default n
211 ---help---
212 Enables extra stuff in the thinkpad-acpi which is completely useless
213 for normal use. Read the driver source to find out what it does.
214
215 Say N here, unless you were told by a kernel maintainer to do
216 otherwise.
217
195config THINKPAD_ACPI_DEBUG 218config THINKPAD_ACPI_DEBUG
196 bool "Verbose debug mode" 219 bool "Verbose debug mode"
197 depends on THINKPAD_ACPI 220 depends on THINKPAD_ACPI
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index 1e9de2ae0de5..e29065120be9 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -6,6 +6,7 @@ obj-$(CONFIG_ASUS_LAPTOP) += asus-laptop.o
6obj-$(CONFIG_EEEPC_LAPTOP) += eeepc-laptop.o 6obj-$(CONFIG_EEEPC_LAPTOP) += eeepc-laptop.o
7obj-$(CONFIG_MSI_LAPTOP) += msi-laptop.o 7obj-$(CONFIG_MSI_LAPTOP) += msi-laptop.o
8obj-$(CONFIG_COMPAL_LAPTOP) += compal-laptop.o 8obj-$(CONFIG_COMPAL_LAPTOP) += compal-laptop.o
9obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o
9obj-$(CONFIG_ACER_WMI) += acer-wmi.o 10obj-$(CONFIG_ACER_WMI) += acer-wmi.o
10obj-$(CONFIG_HP_WMI) += hp-wmi.o 11obj-$(CONFIG_HP_WMI) += hp-wmi.o
11obj-$(CONFIG_TC1100_WMI) += tc1100-wmi.o 12obj-$(CONFIG_TC1100_WMI) += tc1100-wmi.o
diff --git a/drivers/misc/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
index 4d33a2068b7a..16e11c2ee19a 100644
--- a/drivers/misc/dell-laptop.c
+++ b/drivers/platform/x86/dell-laptop.c
@@ -22,7 +22,7 @@
22#include <linux/rfkill.h> 22#include <linux/rfkill.h>
23#include <linux/power_supply.h> 23#include <linux/power_supply.h>
24#include <linux/acpi.h> 24#include <linux/acpi.h>
25#include "../firmware/dcdbas.h" 25#include "../../firmware/dcdbas.h"
26 26
27#define BRIGHTNESS_TOKEN 0x7d 27#define BRIGHTNESS_TOKEN 0x7d
28 28
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
index 02fe2b8b8939..9d93cb971e59 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -90,7 +90,7 @@ enum {
90}; 90};
91 91
92static const char *cm_getv[] = { 92static const char *cm_getv[] = {
93 "WLDG", NULL, NULL, NULL, 93 "WLDG", "BTHG", NULL, NULL,
94 "CAMG", NULL, NULL, NULL, 94 "CAMG", NULL, NULL, NULL,
95 NULL, "PBLG", NULL, NULL, 95 NULL, "PBLG", NULL, NULL,
96 "CFVG", NULL, NULL, NULL, 96 "CFVG", NULL, NULL, NULL,
@@ -99,7 +99,7 @@ static const char *cm_getv[] = {
99}; 99};
100 100
101static const char *cm_setv[] = { 101static const char *cm_setv[] = {
102 "WLDS", NULL, NULL, NULL, 102 "WLDS", "BTHS", NULL, NULL,
103 "CAMS", NULL, NULL, NULL, 103 "CAMS", NULL, NULL, NULL,
104 "SDSP", "PBLS", "HDPS", NULL, 104 "SDSP", "PBLS", "HDPS", NULL,
105 "CFVS", NULL, NULL, NULL, 105 "CFVS", NULL, NULL, NULL,
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index 3478453eba7a..bcbc05107ba8 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -21,7 +21,7 @@
21 * 02110-1301, USA. 21 * 02110-1301, USA.
22 */ 22 */
23 23
24#define TPACPI_VERSION "0.21" 24#define TPACPI_VERSION "0.22"
25#define TPACPI_SYSFS_VERSION 0x020200 25#define TPACPI_SYSFS_VERSION 0x020200
26 26
27/* 27/*
@@ -122,6 +122,27 @@ enum {
122#define TPACPI_HKEY_INPUT_PRODUCT 0x5054 /* "TP" */ 122#define TPACPI_HKEY_INPUT_PRODUCT 0x5054 /* "TP" */
123#define TPACPI_HKEY_INPUT_VERSION 0x4101 123#define TPACPI_HKEY_INPUT_VERSION 0x4101
124 124
125/* ACPI \WGSV commands */
126enum {
127 TP_ACPI_WGSV_GET_STATE = 0x01, /* Get state information */
128 TP_ACPI_WGSV_PWR_ON_ON_RESUME = 0x02, /* Resume WWAN powered on */
129 TP_ACPI_WGSV_PWR_OFF_ON_RESUME = 0x03, /* Resume WWAN powered off */
130 TP_ACPI_WGSV_SAVE_STATE = 0x04, /* Save state for S4/S5 */
131};
132
133/* TP_ACPI_WGSV_GET_STATE bits */
134enum {
135 TP_ACPI_WGSV_STATE_WWANEXIST = 0x0001, /* WWAN hw available */
136 TP_ACPI_WGSV_STATE_WWANPWR = 0x0002, /* WWAN radio enabled */
137 TP_ACPI_WGSV_STATE_WWANPWRRES = 0x0004, /* WWAN state at resume */
138 TP_ACPI_WGSV_STATE_WWANBIOSOFF = 0x0008, /* WWAN disabled in BIOS */
139 TP_ACPI_WGSV_STATE_BLTHEXIST = 0x0001, /* BLTH hw available */
140 TP_ACPI_WGSV_STATE_BLTHPWR = 0x0002, /* BLTH radio enabled */
141 TP_ACPI_WGSV_STATE_BLTHPWRRES = 0x0004, /* BLTH state at resume */
142 TP_ACPI_WGSV_STATE_BLTHBIOSOFF = 0x0008, /* BLTH disabled in BIOS */
143 TP_ACPI_WGSV_STATE_UWBEXIST = 0x0010, /* UWB hw available */
144 TP_ACPI_WGSV_STATE_UWBPWR = 0x0020, /* UWB radio enabled */
145};
125 146
126/**************************************************************************** 147/****************************************************************************
127 * Main driver 148 * Main driver
@@ -148,14 +169,17 @@ enum {
148enum { 169enum {
149 TPACPI_RFK_BLUETOOTH_SW_ID = 0, 170 TPACPI_RFK_BLUETOOTH_SW_ID = 0,
150 TPACPI_RFK_WWAN_SW_ID, 171 TPACPI_RFK_WWAN_SW_ID,
172 TPACPI_RFK_UWB_SW_ID,
151}; 173};
152 174
153/* Debugging */ 175/* Debugging */
154#define TPACPI_LOG TPACPI_FILE ": " 176#define TPACPI_LOG TPACPI_FILE ": "
155#define TPACPI_ERR KERN_ERR TPACPI_LOG 177#define TPACPI_ALERT KERN_ALERT TPACPI_LOG
156#define TPACPI_NOTICE KERN_NOTICE TPACPI_LOG 178#define TPACPI_CRIT KERN_CRIT TPACPI_LOG
157#define TPACPI_INFO KERN_INFO TPACPI_LOG 179#define TPACPI_ERR KERN_ERR TPACPI_LOG
158#define TPACPI_DEBUG KERN_DEBUG TPACPI_LOG 180#define TPACPI_NOTICE KERN_NOTICE TPACPI_LOG
181#define TPACPI_INFO KERN_INFO TPACPI_LOG
182#define TPACPI_DEBUG KERN_DEBUG TPACPI_LOG
159 183
160#define TPACPI_DBG_ALL 0xffff 184#define TPACPI_DBG_ALL 0xffff
161#define TPACPI_DBG_INIT 0x0001 185#define TPACPI_DBG_INIT 0x0001
@@ -201,6 +225,7 @@ struct ibm_struct {
201 void (*exit) (void); 225 void (*exit) (void);
202 void (*resume) (void); 226 void (*resume) (void);
203 void (*suspend) (pm_message_t state); 227 void (*suspend) (pm_message_t state);
228 void (*shutdown) (void);
204 229
205 struct list_head all_drivers; 230 struct list_head all_drivers;
206 231
@@ -239,6 +264,7 @@ static struct {
239 u32 bright_16levels:1; 264 u32 bright_16levels:1;
240 u32 bright_acpimode:1; 265 u32 bright_acpimode:1;
241 u32 wan:1; 266 u32 wan:1;
267 u32 uwb:1;
242 u32 fan_ctrl_status_undef:1; 268 u32 fan_ctrl_status_undef:1;
243 u32 input_device_registered:1; 269 u32 input_device_registered:1;
244 u32 platform_drv_registered:1; 270 u32 platform_drv_registered:1;
@@ -288,6 +314,18 @@ struct tpacpi_led_classdev {
288 unsigned int led; 314 unsigned int led;
289}; 315};
290 316
317#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
318static int dbg_wlswemul;
319static int tpacpi_wlsw_emulstate;
320static int dbg_bluetoothemul;
321static int tpacpi_bluetooth_emulstate;
322static int dbg_wwanemul;
323static int tpacpi_wwan_emulstate;
324static int dbg_uwbemul;
325static int tpacpi_uwb_emulstate;
326#endif
327
328
291/**************************************************************************** 329/****************************************************************************
292 **************************************************************************** 330 ****************************************************************************
293 * 331 *
@@ -728,6 +766,18 @@ static int tpacpi_resume_handler(struct platform_device *pdev)
728 return 0; 766 return 0;
729} 767}
730 768
769static void tpacpi_shutdown_handler(struct platform_device *pdev)
770{
771 struct ibm_struct *ibm, *itmp;
772
773 list_for_each_entry_safe(ibm, itmp,
774 &tpacpi_all_drivers,
775 all_drivers) {
776 if (ibm->shutdown)
777 (ibm->shutdown)();
778 }
779}
780
731static struct platform_driver tpacpi_pdriver = { 781static struct platform_driver tpacpi_pdriver = {
732 .driver = { 782 .driver = {
733 .name = TPACPI_DRVR_NAME, 783 .name = TPACPI_DRVR_NAME,
@@ -735,6 +785,7 @@ static struct platform_driver tpacpi_pdriver = {
735 }, 785 },
736 .suspend = tpacpi_suspend_handler, 786 .suspend = tpacpi_suspend_handler,
737 .resume = tpacpi_resume_handler, 787 .resume = tpacpi_resume_handler,
788 .shutdown = tpacpi_shutdown_handler,
738}; 789};
739 790
740static struct platform_driver tpacpi_hwmon_pdriver = { 791static struct platform_driver tpacpi_hwmon_pdriver = {
@@ -922,11 +973,27 @@ static int __init tpacpi_new_rfkill(const unsigned int id,
922 struct rfkill **rfk, 973 struct rfkill **rfk,
923 const enum rfkill_type rfktype, 974 const enum rfkill_type rfktype,
924 const char *name, 975 const char *name,
976 const bool set_default,
925 int (*toggle_radio)(void *, enum rfkill_state), 977 int (*toggle_radio)(void *, enum rfkill_state),
926 int (*get_state)(void *, enum rfkill_state *)) 978 int (*get_state)(void *, enum rfkill_state *))
927{ 979{
928 int res; 980 int res;
929 enum rfkill_state initial_state; 981 enum rfkill_state initial_state = RFKILL_STATE_SOFT_BLOCKED;
982
983 res = get_state(NULL, &initial_state);
984 if (res < 0) {
985 printk(TPACPI_ERR
986 "failed to read initial state for %s, error %d; "
987 "will turn radio off\n", name, res);
988 } else if (set_default) {
989 /* try to set the initial state as the default for the rfkill
990 * type, since we ask the firmware to preserve it across S5 in
991 * NVRAM */
992 rfkill_set_default(rfktype,
993 (initial_state == RFKILL_STATE_UNBLOCKED) ?
994 RFKILL_STATE_UNBLOCKED :
995 RFKILL_STATE_SOFT_BLOCKED);
996 }
930 997
931 *rfk = rfkill_allocate(&tpacpi_pdev->dev, rfktype); 998 *rfk = rfkill_allocate(&tpacpi_pdev->dev, rfktype);
932 if (!*rfk) { 999 if (!*rfk) {
@@ -938,9 +1005,7 @@ static int __init tpacpi_new_rfkill(const unsigned int id,
938 (*rfk)->name = name; 1005 (*rfk)->name = name;
939 (*rfk)->get_state = get_state; 1006 (*rfk)->get_state = get_state;
940 (*rfk)->toggle_radio = toggle_radio; 1007 (*rfk)->toggle_radio = toggle_radio;
941 1008 (*rfk)->state = initial_state;
942 if (!get_state(NULL, &initial_state))
943 (*rfk)->state = initial_state;
944 1009
945 res = rfkill_register(*rfk); 1010 res = rfkill_register(*rfk);
946 if (res < 0) { 1011 if (res < 0) {
@@ -1006,6 +1071,119 @@ static DRIVER_ATTR(version, S_IRUGO,
1006 1071
1007/* --------------------------------------------------------------------- */ 1072/* --------------------------------------------------------------------- */
1008 1073
1074#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
1075
1076static void tpacpi_send_radiosw_update(void);
1077
1078/* wlsw_emulstate ------------------------------------------------------ */
1079static ssize_t tpacpi_driver_wlsw_emulstate_show(struct device_driver *drv,
1080 char *buf)
1081{
1082 return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_wlsw_emulstate);
1083}
1084
1085static ssize_t tpacpi_driver_wlsw_emulstate_store(struct device_driver *drv,
1086 const char *buf, size_t count)
1087{
1088 unsigned long t;
1089
1090 if (parse_strtoul(buf, 1, &t))
1091 return -EINVAL;
1092
1093 if (tpacpi_wlsw_emulstate != t) {
1094 tpacpi_wlsw_emulstate = !!t;
1095 tpacpi_send_radiosw_update();
1096 } else
1097 tpacpi_wlsw_emulstate = !!t;
1098
1099 return count;
1100}
1101
1102static DRIVER_ATTR(wlsw_emulstate, S_IWUSR | S_IRUGO,
1103 tpacpi_driver_wlsw_emulstate_show,
1104 tpacpi_driver_wlsw_emulstate_store);
1105
1106/* bluetooth_emulstate ------------------------------------------------- */
1107static ssize_t tpacpi_driver_bluetooth_emulstate_show(
1108 struct device_driver *drv,
1109 char *buf)
1110{
1111 return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_bluetooth_emulstate);
1112}
1113
1114static ssize_t tpacpi_driver_bluetooth_emulstate_store(
1115 struct device_driver *drv,
1116 const char *buf, size_t count)
1117{
1118 unsigned long t;
1119
1120 if (parse_strtoul(buf, 1, &t))
1121 return -EINVAL;
1122
1123 tpacpi_bluetooth_emulstate = !!t;
1124
1125 return count;
1126}
1127
1128static DRIVER_ATTR(bluetooth_emulstate, S_IWUSR | S_IRUGO,
1129 tpacpi_driver_bluetooth_emulstate_show,
1130 tpacpi_driver_bluetooth_emulstate_store);
1131
1132/* wwan_emulstate ------------------------------------------------- */
1133static ssize_t tpacpi_driver_wwan_emulstate_show(
1134 struct device_driver *drv,
1135 char *buf)
1136{
1137 return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_wwan_emulstate);
1138}
1139
1140static ssize_t tpacpi_driver_wwan_emulstate_store(
1141 struct device_driver *drv,
1142 const char *buf, size_t count)
1143{
1144 unsigned long t;
1145
1146 if (parse_strtoul(buf, 1, &t))
1147 return -EINVAL;
1148
1149 tpacpi_wwan_emulstate = !!t;
1150
1151 return count;
1152}
1153
1154static DRIVER_ATTR(wwan_emulstate, S_IWUSR | S_IRUGO,
1155 tpacpi_driver_wwan_emulstate_show,
1156 tpacpi_driver_wwan_emulstate_store);
1157
1158/* uwb_emulstate ------------------------------------------------- */
1159static ssize_t tpacpi_driver_uwb_emulstate_show(
1160 struct device_driver *drv,
1161 char *buf)
1162{
1163 return snprintf(buf, PAGE_SIZE, "%d\n", !!tpacpi_uwb_emulstate);
1164}
1165
1166static ssize_t tpacpi_driver_uwb_emulstate_store(
1167 struct device_driver *drv,
1168 const char *buf, size_t count)
1169{
1170 unsigned long t;
1171
1172 if (parse_strtoul(buf, 1, &t))
1173 return -EINVAL;
1174
1175 tpacpi_uwb_emulstate = !!t;
1176
1177 return count;
1178}
1179
1180static DRIVER_ATTR(uwb_emulstate, S_IWUSR | S_IRUGO,
1181 tpacpi_driver_uwb_emulstate_show,
1182 tpacpi_driver_uwb_emulstate_store);
1183#endif
1184
1185/* --------------------------------------------------------------------- */
1186
1009static struct driver_attribute *tpacpi_driver_attributes[] = { 1187static struct driver_attribute *tpacpi_driver_attributes[] = {
1010 &driver_attr_debug_level, &driver_attr_version, 1188 &driver_attr_debug_level, &driver_attr_version,
1011 &driver_attr_interface_version, 1189 &driver_attr_interface_version,
@@ -1022,6 +1200,17 @@ static int __init tpacpi_create_driver_attributes(struct device_driver *drv)
1022 i++; 1200 i++;
1023 } 1201 }
1024 1202
1203#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
1204 if (!res && dbg_wlswemul)
1205 res = driver_create_file(drv, &driver_attr_wlsw_emulstate);
1206 if (!res && dbg_bluetoothemul)
1207 res = driver_create_file(drv, &driver_attr_bluetooth_emulstate);
1208 if (!res && dbg_wwanemul)
1209 res = driver_create_file(drv, &driver_attr_wwan_emulstate);
1210 if (!res && dbg_uwbemul)
1211 res = driver_create_file(drv, &driver_attr_uwb_emulstate);
1212#endif
1213
1025 return res; 1214 return res;
1026} 1215}
1027 1216
@@ -1031,6 +1220,13 @@ static void tpacpi_remove_driver_attributes(struct device_driver *drv)
1031 1220
1032 for (i = 0; i < ARRAY_SIZE(tpacpi_driver_attributes); i++) 1221 for (i = 0; i < ARRAY_SIZE(tpacpi_driver_attributes); i++)
1033 driver_remove_file(drv, tpacpi_driver_attributes[i]); 1222 driver_remove_file(drv, tpacpi_driver_attributes[i]);
1223
1224#ifdef THINKPAD_ACPI_DEBUGFACILITIES
1225 driver_remove_file(drv, &driver_attr_wlsw_emulstate);
1226 driver_remove_file(drv, &driver_attr_bluetooth_emulstate);
1227 driver_remove_file(drv, &driver_attr_wwan_emulstate);
1228 driver_remove_file(drv, &driver_attr_uwb_emulstate);
1229#endif
1034} 1230}
1035 1231
1036/**************************************************************************** 1232/****************************************************************************
@@ -1216,6 +1412,12 @@ static struct attribute_set *hotkey_dev_attributes;
1216 1412
1217static int hotkey_get_wlsw(int *status) 1413static int hotkey_get_wlsw(int *status)
1218{ 1414{
1415#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
1416 if (dbg_wlswemul) {
1417 *status = !!tpacpi_wlsw_emulstate;
1418 return 0;
1419 }
1420#endif
1219 if (!acpi_evalf(hkey_handle, status, "WLSW", "d")) 1421 if (!acpi_evalf(hkey_handle, status, "WLSW", "d"))
1220 return -EIO; 1422 return -EIO;
1221 return 0; 1423 return 0;
@@ -1678,7 +1880,7 @@ static ssize_t hotkey_mask_show(struct device *dev,
1678{ 1880{
1679 int res; 1881 int res;
1680 1882
1681 if (mutex_lock_interruptible(&hotkey_mutex)) 1883 if (mutex_lock_killable(&hotkey_mutex))
1682 return -ERESTARTSYS; 1884 return -ERESTARTSYS;
1683 res = hotkey_mask_get(); 1885 res = hotkey_mask_get();
1684 mutex_unlock(&hotkey_mutex); 1886 mutex_unlock(&hotkey_mutex);
@@ -1697,7 +1899,7 @@ static ssize_t hotkey_mask_store(struct device *dev,
1697 if (parse_strtoul(buf, 0xffffffffUL, &t)) 1899 if (parse_strtoul(buf, 0xffffffffUL, &t))
1698 return -EINVAL; 1900 return -EINVAL;
1699 1901
1700 if (mutex_lock_interruptible(&hotkey_mutex)) 1902 if (mutex_lock_killable(&hotkey_mutex))
1701 return -ERESTARTSYS; 1903 return -ERESTARTSYS;
1702 1904
1703 res = hotkey_mask_set(t); 1905 res = hotkey_mask_set(t);
@@ -1783,7 +1985,7 @@ static ssize_t hotkey_source_mask_store(struct device *dev,
1783 ((t & ~TPACPI_HKEY_NVRAM_KNOWN_MASK) != 0)) 1985 ((t & ~TPACPI_HKEY_NVRAM_KNOWN_MASK) != 0))
1784 return -EINVAL; 1986 return -EINVAL;
1785 1987
1786 if (mutex_lock_interruptible(&hotkey_mutex)) 1988 if (mutex_lock_killable(&hotkey_mutex))
1787 return -ERESTARTSYS; 1989 return -ERESTARTSYS;
1788 1990
1789 HOTKEY_CONFIG_CRITICAL_START 1991 HOTKEY_CONFIG_CRITICAL_START
@@ -1818,7 +2020,7 @@ static ssize_t hotkey_poll_freq_store(struct device *dev,
1818 if (parse_strtoul(buf, 25, &t)) 2020 if (parse_strtoul(buf, 25, &t))
1819 return -EINVAL; 2021 return -EINVAL;
1820 2022
1821 if (mutex_lock_interruptible(&hotkey_mutex)) 2023 if (mutex_lock_killable(&hotkey_mutex))
1822 return -ERESTARTSYS; 2024 return -ERESTARTSYS;
1823 2025
1824 hotkey_poll_freq = t; 2026 hotkey_poll_freq = t;
@@ -1958,6 +2160,7 @@ static struct attribute *hotkey_mask_attributes[] __initdata = {
1958 2160
1959static void bluetooth_update_rfk(void); 2161static void bluetooth_update_rfk(void);
1960static void wan_update_rfk(void); 2162static void wan_update_rfk(void);
2163static void uwb_update_rfk(void);
1961static void tpacpi_send_radiosw_update(void) 2164static void tpacpi_send_radiosw_update(void)
1962{ 2165{
1963 int wlsw; 2166 int wlsw;
@@ -1967,6 +2170,8 @@ static void tpacpi_send_radiosw_update(void)
1967 bluetooth_update_rfk(); 2170 bluetooth_update_rfk();
1968 if (tp_features.wan) 2171 if (tp_features.wan)
1969 wan_update_rfk(); 2172 wan_update_rfk();
2173 if (tp_features.uwb)
2174 uwb_update_rfk();
1970 2175
1971 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&wlsw)) { 2176 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&wlsw)) {
1972 mutex_lock(&tpacpi_inputdev_send_mutex); 2177 mutex_lock(&tpacpi_inputdev_send_mutex);
@@ -2222,6 +2427,13 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
2222 hotkey_source_mask, hotkey_poll_freq); 2427 hotkey_source_mask, hotkey_poll_freq);
2223#endif 2428#endif
2224 2429
2430#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
2431 if (dbg_wlswemul) {
2432 tp_features.hotkey_wlsw = 1;
2433 printk(TPACPI_INFO
2434 "radio switch emulation enabled\n");
2435 } else
2436#endif
2225 /* Not all thinkpads have a hardware radio switch */ 2437 /* Not all thinkpads have a hardware radio switch */
2226 if (acpi_evalf(hkey_handle, &status, "WLSW", "qd")) { 2438 if (acpi_evalf(hkey_handle, &status, "WLSW", "qd")) {
2227 tp_features.hotkey_wlsw = 1; 2439 tp_features.hotkey_wlsw = 1;
@@ -2361,13 +2573,154 @@ err_exit:
2361 return (res < 0)? res : 1; 2573 return (res < 0)? res : 1;
2362} 2574}
2363 2575
2576static bool hotkey_notify_hotkey(const u32 hkey,
2577 bool *send_acpi_ev,
2578 bool *ignore_acpi_ev)
2579{
2580 /* 0x1000-0x1FFF: key presses */
2581 unsigned int scancode = hkey & 0xfff;
2582 *send_acpi_ev = true;
2583 *ignore_acpi_ev = false;
2584
2585 if (scancode > 0 && scancode < 0x21) {
2586 scancode--;
2587 if (!(hotkey_source_mask & (1 << scancode))) {
2588 tpacpi_input_send_key(scancode);
2589 *send_acpi_ev = false;
2590 } else {
2591 *ignore_acpi_ev = true;
2592 }
2593 return true;
2594 }
2595 return false;
2596}
2597
2598static bool hotkey_notify_wakeup(const u32 hkey,
2599 bool *send_acpi_ev,
2600 bool *ignore_acpi_ev)
2601{
2602 /* 0x2000-0x2FFF: Wakeup reason */
2603 *send_acpi_ev = true;
2604 *ignore_acpi_ev = false;
2605
2606 switch (hkey) {
2607 case 0x2304: /* suspend, undock */
2608 case 0x2404: /* hibernation, undock */
2609 hotkey_wakeup_reason = TP_ACPI_WAKEUP_UNDOCK;
2610 *ignore_acpi_ev = true;
2611 break;
2612
2613 case 0x2305: /* suspend, bay eject */
2614 case 0x2405: /* hibernation, bay eject */
2615 hotkey_wakeup_reason = TP_ACPI_WAKEUP_BAYEJ;
2616 *ignore_acpi_ev = true;
2617 break;
2618
2619 case 0x2313: /* Battery on critical low level (S3) */
2620 case 0x2413: /* Battery on critical low level (S4) */
2621 printk(TPACPI_ALERT
2622 "EMERGENCY WAKEUP: battery almost empty\n");
2623 /* how to auto-heal: */
2624 /* 2313: woke up from S3, go to S4/S5 */
2625 /* 2413: woke up from S4, go to S5 */
2626 break;
2627
2628 default:
2629 return false;
2630 }
2631
2632 if (hotkey_wakeup_reason != TP_ACPI_WAKEUP_NONE) {
2633 printk(TPACPI_INFO
2634 "woke up due to a hot-unplug "
2635 "request...\n");
2636 hotkey_wakeup_reason_notify_change();
2637 }
2638 return true;
2639}
2640
2641static bool hotkey_notify_usrevent(const u32 hkey,
2642 bool *send_acpi_ev,
2643 bool *ignore_acpi_ev)
2644{
2645 /* 0x5000-0x5FFF: human interface helpers */
2646 *send_acpi_ev = true;
2647 *ignore_acpi_ev = false;
2648
2649 switch (hkey) {
2650 case 0x5010: /* Lenovo new BIOS: brightness changed */
2651 case 0x500b: /* X61t: tablet pen inserted into bay */
2652 case 0x500c: /* X61t: tablet pen removed from bay */
2653 return true;
2654
2655 case 0x5009: /* X41t-X61t: swivel up (tablet mode) */
2656 case 0x500a: /* X41t-X61t: swivel down (normal mode) */
2657 tpacpi_input_send_tabletsw();
2658 hotkey_tablet_mode_notify_change();
2659 *send_acpi_ev = false;
2660 return true;
2661
2662 case 0x5001:
2663 case 0x5002:
2664 /* LID switch events. Do not propagate */
2665 *ignore_acpi_ev = true;
2666 return true;
2667
2668 default:
2669 return false;
2670 }
2671}
2672
2673static bool hotkey_notify_thermal(const u32 hkey,
2674 bool *send_acpi_ev,
2675 bool *ignore_acpi_ev)
2676{
2677 /* 0x6000-0x6FFF: thermal alarms */
2678 *send_acpi_ev = true;
2679 *ignore_acpi_ev = false;
2680
2681 switch (hkey) {
2682 case 0x6011:
2683 printk(TPACPI_CRIT
2684 "THERMAL ALARM: battery is too hot!\n");
2685 /* recommended action: warn user through gui */
2686 return true;
2687 case 0x6012:
2688 printk(TPACPI_ALERT
2689 "THERMAL EMERGENCY: battery is extremely hot!\n");
2690 /* recommended action: immediate sleep/hibernate */
2691 return true;
2692 case 0x6021:
2693 printk(TPACPI_CRIT
2694 "THERMAL ALARM: "
2695 "a sensor reports something is too hot!\n");
2696 /* recommended action: warn user through gui, that */
2697 /* some internal component is too hot */
2698 return true;
2699 case 0x6022:
2700 printk(TPACPI_ALERT
2701 "THERMAL EMERGENCY: "
2702 "a sensor reports something is extremely hot!\n");
2703 /* recommended action: immediate sleep/hibernate */
2704 return true;
2705 case 0x6030:
2706 printk(TPACPI_INFO
2707 "EC reports that Thermal Table has changed\n");
2708 /* recommended action: do nothing, we don't have
2709 * Lenovo ATM information */
2710 return true;
2711 default:
2712 printk(TPACPI_ALERT
2713 "THERMAL ALERT: unknown thermal alarm received\n");
2714 return false;
2715 }
2716}
2717
2364static void hotkey_notify(struct ibm_struct *ibm, u32 event) 2718static void hotkey_notify(struct ibm_struct *ibm, u32 event)
2365{ 2719{
2366 u32 hkey; 2720 u32 hkey;
2367 unsigned int scancode; 2721 bool send_acpi_ev;
2368 int send_acpi_ev; 2722 bool ignore_acpi_ev;
2369 int ignore_acpi_ev; 2723 bool known_ev;
2370 int unk_ev;
2371 2724
2372 if (event != 0x80) { 2725 if (event != 0x80) {
2373 printk(TPACPI_ERR 2726 printk(TPACPI_ERR
@@ -2375,7 +2728,7 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
2375 /* forward it to userspace, maybe it knows how to handle it */ 2728 /* forward it to userspace, maybe it knows how to handle it */
2376 acpi_bus_generate_netlink_event( 2729 acpi_bus_generate_netlink_event(
2377 ibm->acpi->device->pnp.device_class, 2730 ibm->acpi->device->pnp.device_class,
2378 ibm->acpi->device->dev.bus_id, 2731 dev_name(&ibm->acpi->device->dev),
2379 event, 0); 2732 event, 0);
2380 return; 2733 return;
2381 } 2734 }
@@ -2391,107 +2744,72 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
2391 return; 2744 return;
2392 } 2745 }
2393 2746
2394 send_acpi_ev = 1; 2747 send_acpi_ev = true;
2395 ignore_acpi_ev = 0; 2748 ignore_acpi_ev = false;
2396 unk_ev = 0;
2397 2749
2398 switch (hkey >> 12) { 2750 switch (hkey >> 12) {
2399 case 1: 2751 case 1:
2400 /* 0x1000-0x1FFF: key presses */ 2752 /* 0x1000-0x1FFF: key presses */
2401 scancode = hkey & 0xfff; 2753 known_ev = hotkey_notify_hotkey(hkey, &send_acpi_ev,
2402 if (scancode > 0 && scancode < 0x21) { 2754 &ignore_acpi_ev);
2403 scancode--;
2404 if (!(hotkey_source_mask & (1 << scancode))) {
2405 tpacpi_input_send_key(scancode);
2406 send_acpi_ev = 0;
2407 } else {
2408 ignore_acpi_ev = 1;
2409 }
2410 } else {
2411 unk_ev = 1;
2412 }
2413 break; 2755 break;
2414 case 2: 2756 case 2:
2415 /* Wakeup reason */ 2757 /* 0x2000-0x2FFF: Wakeup reason */
2416 switch (hkey) { 2758 known_ev = hotkey_notify_wakeup(hkey, &send_acpi_ev,
2417 case 0x2304: /* suspend, undock */ 2759 &ignore_acpi_ev);
2418 case 0x2404: /* hibernation, undock */
2419 hotkey_wakeup_reason = TP_ACPI_WAKEUP_UNDOCK;
2420 ignore_acpi_ev = 1;
2421 break;
2422 case 0x2305: /* suspend, bay eject */
2423 case 0x2405: /* hibernation, bay eject */
2424 hotkey_wakeup_reason = TP_ACPI_WAKEUP_BAYEJ;
2425 ignore_acpi_ev = 1;
2426 break;
2427 default:
2428 unk_ev = 1;
2429 }
2430 if (hotkey_wakeup_reason != TP_ACPI_WAKEUP_NONE) {
2431 printk(TPACPI_INFO
2432 "woke up due to a hot-unplug "
2433 "request...\n");
2434 hotkey_wakeup_reason_notify_change();
2435 }
2436 break; 2760 break;
2437 case 3: 2761 case 3:
2438 /* bay-related wakeups */ 2762 /* 0x3000-0x3FFF: bay-related wakeups */
2439 if (hkey == 0x3003) { 2763 if (hkey == 0x3003) {
2440 hotkey_autosleep_ack = 1; 2764 hotkey_autosleep_ack = 1;
2441 printk(TPACPI_INFO 2765 printk(TPACPI_INFO
2442 "bay ejected\n"); 2766 "bay ejected\n");
2443 hotkey_wakeup_hotunplug_complete_notify_change(); 2767 hotkey_wakeup_hotunplug_complete_notify_change();
2768 known_ev = true;
2444 } else { 2769 } else {
2445 unk_ev = 1; 2770 known_ev = false;
2446 } 2771 }
2447 break; 2772 break;
2448 case 4: 2773 case 4:
2449 /* dock-related wakeups */ 2774 /* 0x4000-0x4FFF: dock-related wakeups */
2450 if (hkey == 0x4003) { 2775 if (hkey == 0x4003) {
2451 hotkey_autosleep_ack = 1; 2776 hotkey_autosleep_ack = 1;
2452 printk(TPACPI_INFO 2777 printk(TPACPI_INFO
2453 "undocked\n"); 2778 "undocked\n");
2454 hotkey_wakeup_hotunplug_complete_notify_change(); 2779 hotkey_wakeup_hotunplug_complete_notify_change();
2780 known_ev = true;
2455 } else { 2781 } else {
2456 unk_ev = 1; 2782 known_ev = false;
2457 } 2783 }
2458 break; 2784 break;
2459 case 5: 2785 case 5:
2460 /* 0x5000-0x5FFF: human interface helpers */ 2786 /* 0x5000-0x5FFF: human interface helpers */
2461 switch (hkey) { 2787 known_ev = hotkey_notify_usrevent(hkey, &send_acpi_ev,
2462 case 0x5010: /* Lenovo new BIOS: brightness changed */ 2788 &ignore_acpi_ev);
2463 case 0x500b: /* X61t: tablet pen inserted into bay */ 2789 break;
2464 case 0x500c: /* X61t: tablet pen removed from bay */ 2790 case 6:
2465 break; 2791 /* 0x6000-0x6FFF: thermal alarms */
2466 case 0x5009: /* X41t-X61t: swivel up (tablet mode) */ 2792 known_ev = hotkey_notify_thermal(hkey, &send_acpi_ev,
2467 case 0x500a: /* X41t-X61t: swivel down (normal mode) */ 2793 &ignore_acpi_ev);
2468 tpacpi_input_send_tabletsw();
2469 hotkey_tablet_mode_notify_change();
2470 send_acpi_ev = 0;
2471 break;
2472 case 0x5001:
2473 case 0x5002:
2474 /* LID switch events. Do not propagate */
2475 ignore_acpi_ev = 1;
2476 break;
2477 default:
2478 unk_ev = 1;
2479 }
2480 break; 2794 break;
2481 case 7: 2795 case 7:
2482 /* 0x7000-0x7FFF: misc */ 2796 /* 0x7000-0x7FFF: misc */
2483 if (tp_features.hotkey_wlsw && hkey == 0x7000) { 2797 if (tp_features.hotkey_wlsw && hkey == 0x7000) {
2484 tpacpi_send_radiosw_update(); 2798 tpacpi_send_radiosw_update();
2485 send_acpi_ev = 0; 2799 send_acpi_ev = 0;
2800 known_ev = true;
2486 break; 2801 break;
2487 } 2802 }
2488 /* fallthrough to default */ 2803 /* fallthrough to default */
2489 default: 2804 default:
2490 unk_ev = 1; 2805 known_ev = false;
2491 } 2806 }
2492 if (unk_ev) { 2807 if (!known_ev) {
2493 printk(TPACPI_NOTICE 2808 printk(TPACPI_NOTICE
2494 "unhandled HKEY event 0x%04x\n", hkey); 2809 "unhandled HKEY event 0x%04x\n", hkey);
2810 printk(TPACPI_NOTICE
2811 "please report the conditions when this "
2812 "event happened to %s\n", TPACPI_MAIL);
2495 } 2813 }
2496 2814
2497 /* Legacy events */ 2815 /* Legacy events */
@@ -2505,7 +2823,7 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
2505 if (!ignore_acpi_ev && send_acpi_ev) { 2823 if (!ignore_acpi_ev && send_acpi_ev) {
2506 acpi_bus_generate_netlink_event( 2824 acpi_bus_generate_netlink_event(
2507 ibm->acpi->device->pnp.device_class, 2825 ibm->acpi->device->pnp.device_class,
2508 ibm->acpi->device->dev.bus_id, 2826 dev_name(&ibm->acpi->device->dev),
2509 event, hkey); 2827 event, hkey);
2510 } 2828 }
2511 } 2829 }
@@ -2544,7 +2862,7 @@ static int hotkey_read(char *p)
2544 return len; 2862 return len;
2545 } 2863 }
2546 2864
2547 if (mutex_lock_interruptible(&hotkey_mutex)) 2865 if (mutex_lock_killable(&hotkey_mutex))
2548 return -ERESTARTSYS; 2866 return -ERESTARTSYS;
2549 res = hotkey_status_get(&status); 2867 res = hotkey_status_get(&status);
2550 if (!res) 2868 if (!res)
@@ -2575,7 +2893,7 @@ static int hotkey_write(char *buf)
2575 if (!tp_features.hotkey) 2893 if (!tp_features.hotkey)
2576 return -ENODEV; 2894 return -ENODEV;
2577 2895
2578 if (mutex_lock_interruptible(&hotkey_mutex)) 2896 if (mutex_lock_killable(&hotkey_mutex))
2579 return -ERESTARTSYS; 2897 return -ERESTARTSYS;
2580 2898
2581 status = -1; 2899 status = -1;
@@ -2640,11 +2958,28 @@ enum {
2640 /* ACPI GBDC/SBDC bits */ 2958 /* ACPI GBDC/SBDC bits */
2641 TP_ACPI_BLUETOOTH_HWPRESENT = 0x01, /* Bluetooth hw available */ 2959 TP_ACPI_BLUETOOTH_HWPRESENT = 0x01, /* Bluetooth hw available */
2642 TP_ACPI_BLUETOOTH_RADIOSSW = 0x02, /* Bluetooth radio enabled */ 2960 TP_ACPI_BLUETOOTH_RADIOSSW = 0x02, /* Bluetooth radio enabled */
2643 TP_ACPI_BLUETOOTH_UNK = 0x04, /* unknown function */ 2961 TP_ACPI_BLUETOOTH_RESUMECTRL = 0x04, /* Bluetooth state at resume:
2962 off / last state */
2963};
2964
2965enum {
2966 /* ACPI \BLTH commands */
2967 TP_ACPI_BLTH_GET_ULTRAPORT_ID = 0x00, /* Get Ultraport BT ID */
2968 TP_ACPI_BLTH_GET_PWR_ON_RESUME = 0x01, /* Get power-on-resume state */
2969 TP_ACPI_BLTH_PWR_ON_ON_RESUME = 0x02, /* Resume powered on */
2970 TP_ACPI_BLTH_PWR_OFF_ON_RESUME = 0x03, /* Resume powered off */
2971 TP_ACPI_BLTH_SAVE_STATE = 0x05, /* Save state for S4/S5 */
2644}; 2972};
2645 2973
2646static struct rfkill *tpacpi_bluetooth_rfkill; 2974static struct rfkill *tpacpi_bluetooth_rfkill;
2647 2975
2976static void bluetooth_suspend(pm_message_t state)
2977{
2978 /* Try to make sure radio will resume powered off */
2979 acpi_evalf(NULL, NULL, "\\BLTH", "vd",
2980 TP_ACPI_BLTH_PWR_OFF_ON_RESUME);
2981}
2982
2648static int bluetooth_get_radiosw(void) 2983static int bluetooth_get_radiosw(void)
2649{ 2984{
2650 int status; 2985 int status;
@@ -2656,6 +2991,12 @@ static int bluetooth_get_radiosw(void)
2656 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status) 2991 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status)
2657 return RFKILL_STATE_HARD_BLOCKED; 2992 return RFKILL_STATE_HARD_BLOCKED;
2658 2993
2994#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
2995 if (dbg_bluetoothemul)
2996 return (tpacpi_bluetooth_emulstate) ?
2997 RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED;
2998#endif
2999
2659 if (!acpi_evalf(hkey_handle, &status, "GBDC", "d")) 3000 if (!acpi_evalf(hkey_handle, &status, "GBDC", "d"))
2660 return -EIO; 3001 return -EIO;
2661 3002
@@ -2689,12 +3030,20 @@ static int bluetooth_set_radiosw(int radio_on, int update_rfk)
2689 && radio_on) 3030 && radio_on)
2690 return -EPERM; 3031 return -EPERM;
2691 3032
2692 if (!acpi_evalf(hkey_handle, &status, "GBDC", "d")) 3033#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
2693 return -EIO; 3034 if (dbg_bluetoothemul) {
3035 tpacpi_bluetooth_emulstate = !!radio_on;
3036 if (update_rfk)
3037 bluetooth_update_rfk();
3038 return 0;
3039 }
3040#endif
3041
3042 /* We make sure to keep TP_ACPI_BLUETOOTH_RESUMECTRL off */
2694 if (radio_on) 3043 if (radio_on)
2695 status |= TP_ACPI_BLUETOOTH_RADIOSSW; 3044 status = TP_ACPI_BLUETOOTH_RADIOSSW;
2696 else 3045 else
2697 status &= ~TP_ACPI_BLUETOOTH_RADIOSSW; 3046 status = 0;
2698 if (!acpi_evalf(hkey_handle, NULL, "SBDC", "vd", status)) 3047 if (!acpi_evalf(hkey_handle, NULL, "SBDC", "vd", status))
2699 return -EIO; 3048 return -EIO;
2700 3049
@@ -2765,8 +3114,19 @@ static int tpacpi_bluetooth_rfk_set(void *data, enum rfkill_state state)
2765 return bluetooth_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0); 3114 return bluetooth_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0);
2766} 3115}
2767 3116
3117static void bluetooth_shutdown(void)
3118{
3119 /* Order firmware to save current state to NVRAM */
3120 if (!acpi_evalf(NULL, NULL, "\\BLTH", "vd",
3121 TP_ACPI_BLTH_SAVE_STATE))
3122 printk(TPACPI_NOTICE
3123 "failed to save bluetooth state to NVRAM\n");
3124}
3125
2768static void bluetooth_exit(void) 3126static void bluetooth_exit(void)
2769{ 3127{
3128 bluetooth_shutdown();
3129
2770 if (tpacpi_bluetooth_rfkill) 3130 if (tpacpi_bluetooth_rfkill)
2771 rfkill_unregister(tpacpi_bluetooth_rfkill); 3131 rfkill_unregister(tpacpi_bluetooth_rfkill);
2772 3132
@@ -2792,6 +3152,13 @@ static int __init bluetooth_init(struct ibm_init_struct *iibm)
2792 str_supported(tp_features.bluetooth), 3152 str_supported(tp_features.bluetooth),
2793 status); 3153 status);
2794 3154
3155#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
3156 if (dbg_bluetoothemul) {
3157 tp_features.bluetooth = 1;
3158 printk(TPACPI_INFO
3159 "bluetooth switch emulation enabled\n");
3160 } else
3161#endif
2795 if (tp_features.bluetooth && 3162 if (tp_features.bluetooth &&
2796 !(status & TP_ACPI_BLUETOOTH_HWPRESENT)) { 3163 !(status & TP_ACPI_BLUETOOTH_HWPRESENT)) {
2797 /* no bluetooth hardware present in system */ 3164 /* no bluetooth hardware present in system */
@@ -2812,6 +3179,7 @@ static int __init bluetooth_init(struct ibm_init_struct *iibm)
2812 &tpacpi_bluetooth_rfkill, 3179 &tpacpi_bluetooth_rfkill,
2813 RFKILL_TYPE_BLUETOOTH, 3180 RFKILL_TYPE_BLUETOOTH,
2814 "tpacpi_bluetooth_sw", 3181 "tpacpi_bluetooth_sw",
3182 true,
2815 tpacpi_bluetooth_rfk_set, 3183 tpacpi_bluetooth_rfk_set,
2816 tpacpi_bluetooth_rfk_get); 3184 tpacpi_bluetooth_rfk_get);
2817 if (res) { 3185 if (res) {
@@ -2864,6 +3232,8 @@ static struct ibm_struct bluetooth_driver_data = {
2864 .read = bluetooth_read, 3232 .read = bluetooth_read,
2865 .write = bluetooth_write, 3233 .write = bluetooth_write,
2866 .exit = bluetooth_exit, 3234 .exit = bluetooth_exit,
3235 .suspend = bluetooth_suspend,
3236 .shutdown = bluetooth_shutdown,
2867}; 3237};
2868 3238
2869/************************************************************************* 3239/*************************************************************************
@@ -2874,11 +3244,19 @@ enum {
2874 /* ACPI GWAN/SWAN bits */ 3244 /* ACPI GWAN/SWAN bits */
2875 TP_ACPI_WANCARD_HWPRESENT = 0x01, /* Wan hw available */ 3245 TP_ACPI_WANCARD_HWPRESENT = 0x01, /* Wan hw available */
2876 TP_ACPI_WANCARD_RADIOSSW = 0x02, /* Wan radio enabled */ 3246 TP_ACPI_WANCARD_RADIOSSW = 0x02, /* Wan radio enabled */
2877 TP_ACPI_WANCARD_UNK = 0x04, /* unknown function */ 3247 TP_ACPI_WANCARD_RESUMECTRL = 0x04, /* Wan state at resume:
3248 off / last state */
2878}; 3249};
2879 3250
2880static struct rfkill *tpacpi_wan_rfkill; 3251static struct rfkill *tpacpi_wan_rfkill;
2881 3252
3253static void wan_suspend(pm_message_t state)
3254{
3255 /* Try to make sure radio will resume powered off */
3256 acpi_evalf(NULL, NULL, "\\WGSV", "qvd",
3257 TP_ACPI_WGSV_PWR_OFF_ON_RESUME);
3258}
3259
2882static int wan_get_radiosw(void) 3260static int wan_get_radiosw(void)
2883{ 3261{
2884 int status; 3262 int status;
@@ -2890,6 +3268,12 @@ static int wan_get_radiosw(void)
2890 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status) 3268 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status)
2891 return RFKILL_STATE_HARD_BLOCKED; 3269 return RFKILL_STATE_HARD_BLOCKED;
2892 3270
3271#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
3272 if (dbg_wwanemul)
3273 return (tpacpi_wwan_emulstate) ?
3274 RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED;
3275#endif
3276
2893 if (!acpi_evalf(hkey_handle, &status, "GWAN", "d")) 3277 if (!acpi_evalf(hkey_handle, &status, "GWAN", "d"))
2894 return -EIO; 3278 return -EIO;
2895 3279
@@ -2923,12 +3307,20 @@ static int wan_set_radiosw(int radio_on, int update_rfk)
2923 && radio_on) 3307 && radio_on)
2924 return -EPERM; 3308 return -EPERM;
2925 3309
2926 if (!acpi_evalf(hkey_handle, &status, "GWAN", "d")) 3310#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
2927 return -EIO; 3311 if (dbg_wwanemul) {
3312 tpacpi_wwan_emulstate = !!radio_on;
3313 if (update_rfk)
3314 wan_update_rfk();
3315 return 0;
3316 }
3317#endif
3318
3319 /* We make sure to keep TP_ACPI_WANCARD_RESUMECTRL off */
2928 if (radio_on) 3320 if (radio_on)
2929 status |= TP_ACPI_WANCARD_RADIOSSW; 3321 status = TP_ACPI_WANCARD_RADIOSSW;
2930 else 3322 else
2931 status &= ~TP_ACPI_WANCARD_RADIOSSW; 3323 status = 0;
2932 if (!acpi_evalf(hkey_handle, NULL, "SWAN", "vd", status)) 3324 if (!acpi_evalf(hkey_handle, NULL, "SWAN", "vd", status))
2933 return -EIO; 3325 return -EIO;
2934 3326
@@ -2999,8 +3391,19 @@ static int tpacpi_wan_rfk_set(void *data, enum rfkill_state state)
2999 return wan_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0); 3391 return wan_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0);
3000} 3392}
3001 3393
3394static void wan_shutdown(void)
3395{
3396 /* Order firmware to save current state to NVRAM */
3397 if (!acpi_evalf(NULL, NULL, "\\WGSV", "vd",
3398 TP_ACPI_WGSV_SAVE_STATE))
3399 printk(TPACPI_NOTICE
3400 "failed to save WWAN state to NVRAM\n");
3401}
3402
3002static void wan_exit(void) 3403static void wan_exit(void)
3003{ 3404{
3405 wan_shutdown();
3406
3004 if (tpacpi_wan_rfkill) 3407 if (tpacpi_wan_rfkill)
3005 rfkill_unregister(tpacpi_wan_rfkill); 3408 rfkill_unregister(tpacpi_wan_rfkill);
3006 3409
@@ -3024,6 +3427,13 @@ static int __init wan_init(struct ibm_init_struct *iibm)
3024 str_supported(tp_features.wan), 3427 str_supported(tp_features.wan),
3025 status); 3428 status);
3026 3429
3430#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
3431 if (dbg_wwanemul) {
3432 tp_features.wan = 1;
3433 printk(TPACPI_INFO
3434 "wwan switch emulation enabled\n");
3435 } else
3436#endif
3027 if (tp_features.wan && 3437 if (tp_features.wan &&
3028 !(status & TP_ACPI_WANCARD_HWPRESENT)) { 3438 !(status & TP_ACPI_WANCARD_HWPRESENT)) {
3029 /* no wan hardware present in system */ 3439 /* no wan hardware present in system */
@@ -3044,6 +3454,7 @@ static int __init wan_init(struct ibm_init_struct *iibm)
3044 &tpacpi_wan_rfkill, 3454 &tpacpi_wan_rfkill,
3045 RFKILL_TYPE_WWAN, 3455 RFKILL_TYPE_WWAN,
3046 "tpacpi_wwan_sw", 3456 "tpacpi_wwan_sw",
3457 true,
3047 tpacpi_wan_rfk_set, 3458 tpacpi_wan_rfk_set,
3048 tpacpi_wan_rfk_get); 3459 tpacpi_wan_rfk_get);
3049 if (res) { 3460 if (res) {
@@ -3096,6 +3507,164 @@ static struct ibm_struct wan_driver_data = {
3096 .read = wan_read, 3507 .read = wan_read,
3097 .write = wan_write, 3508 .write = wan_write,
3098 .exit = wan_exit, 3509 .exit = wan_exit,
3510 .suspend = wan_suspend,
3511 .shutdown = wan_shutdown,
3512};
3513
3514/*************************************************************************
3515 * UWB subdriver
3516 */
3517
3518enum {
3519 /* ACPI GUWB/SUWB bits */
3520 TP_ACPI_UWB_HWPRESENT = 0x01, /* UWB hw available */
3521 TP_ACPI_UWB_RADIOSSW = 0x02, /* UWB radio enabled */
3522};
3523
3524static struct rfkill *tpacpi_uwb_rfkill;
3525
3526static int uwb_get_radiosw(void)
3527{
3528 int status;
3529
3530 if (!tp_features.uwb)
3531 return -ENODEV;
3532
3533 /* WLSW overrides UWB in firmware/hardware, reflect that */
3534 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status)
3535 return RFKILL_STATE_HARD_BLOCKED;
3536
3537#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
3538 if (dbg_uwbemul)
3539 return (tpacpi_uwb_emulstate) ?
3540 RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED;
3541#endif
3542
3543 if (!acpi_evalf(hkey_handle, &status, "GUWB", "d"))
3544 return -EIO;
3545
3546 return ((status & TP_ACPI_UWB_RADIOSSW) != 0) ?
3547 RFKILL_STATE_UNBLOCKED : RFKILL_STATE_SOFT_BLOCKED;
3548}
3549
3550static void uwb_update_rfk(void)
3551{
3552 int status;
3553
3554 if (!tpacpi_uwb_rfkill)
3555 return;
3556
3557 status = uwb_get_radiosw();
3558 if (status < 0)
3559 return;
3560 rfkill_force_state(tpacpi_uwb_rfkill, status);
3561}
3562
3563static int uwb_set_radiosw(int radio_on, int update_rfk)
3564{
3565 int status;
3566
3567 if (!tp_features.uwb)
3568 return -ENODEV;
3569
3570 /* WLSW overrides UWB in firmware/hardware, but there is no
3571 * reason to risk weird behaviour. */
3572 if (tp_features.hotkey_wlsw && !hotkey_get_wlsw(&status) && !status
3573 && radio_on)
3574 return -EPERM;
3575
3576#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
3577 if (dbg_uwbemul) {
3578 tpacpi_uwb_emulstate = !!radio_on;
3579 if (update_rfk)
3580 uwb_update_rfk();
3581 return 0;
3582 }
3583#endif
3584
3585 status = (radio_on) ? TP_ACPI_UWB_RADIOSSW : 0;
3586 if (!acpi_evalf(hkey_handle, NULL, "SUWB", "vd", status))
3587 return -EIO;
3588
3589 if (update_rfk)
3590 uwb_update_rfk();
3591
3592 return 0;
3593}
3594
3595/* --------------------------------------------------------------------- */
3596
3597static int tpacpi_uwb_rfk_get(void *data, enum rfkill_state *state)
3598{
3599 int uwbs = uwb_get_radiosw();
3600
3601 if (uwbs < 0)
3602 return uwbs;
3603
3604 *state = uwbs;
3605 return 0;
3606}
3607
3608static int tpacpi_uwb_rfk_set(void *data, enum rfkill_state state)
3609{
3610 return uwb_set_radiosw((state == RFKILL_STATE_UNBLOCKED), 0);
3611}
3612
3613static void uwb_exit(void)
3614{
3615 if (tpacpi_uwb_rfkill)
3616 rfkill_unregister(tpacpi_uwb_rfkill);
3617}
3618
3619static int __init uwb_init(struct ibm_init_struct *iibm)
3620{
3621 int res;
3622 int status = 0;
3623
3624 vdbg_printk(TPACPI_DBG_INIT, "initializing uwb subdriver\n");
3625
3626 TPACPI_ACPIHANDLE_INIT(hkey);
3627
3628 tp_features.uwb = hkey_handle &&
3629 acpi_evalf(hkey_handle, &status, "GUWB", "qd");
3630
3631 vdbg_printk(TPACPI_DBG_INIT, "uwb is %s, status 0x%02x\n",
3632 str_supported(tp_features.uwb),
3633 status);
3634
3635#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
3636 if (dbg_uwbemul) {
3637 tp_features.uwb = 1;
3638 printk(TPACPI_INFO
3639 "uwb switch emulation enabled\n");
3640 } else
3641#endif
3642 if (tp_features.uwb &&
3643 !(status & TP_ACPI_UWB_HWPRESENT)) {
3644 /* no uwb hardware present in system */
3645 tp_features.uwb = 0;
3646 dbg_printk(TPACPI_DBG_INIT,
3647 "uwb hardware not installed\n");
3648 }
3649
3650 if (!tp_features.uwb)
3651 return 1;
3652
3653 res = tpacpi_new_rfkill(TPACPI_RFK_UWB_SW_ID,
3654 &tpacpi_uwb_rfkill,
3655 RFKILL_TYPE_UWB,
3656 "tpacpi_uwb_sw",
3657 false,
3658 tpacpi_uwb_rfk_set,
3659 tpacpi_uwb_rfk_get);
3660
3661 return res;
3662}
3663
3664static struct ibm_struct uwb_driver_data = {
3665 .name = "uwb",
3666 .exit = uwb_exit,
3667 .flags.experimental = 1,
3099}; 3668};
3100 3669
3101/************************************************************************* 3670/*************************************************************************
@@ -3724,7 +4293,7 @@ static void dock_notify(struct ibm_struct *ibm, u32 event)
3724 } 4293 }
3725 acpi_bus_generate_proc_event(ibm->acpi->device, event, data); 4294 acpi_bus_generate_proc_event(ibm->acpi->device, event, data);
3726 acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class, 4295 acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class,
3727 ibm->acpi->device->dev.bus_id, 4296 dev_name(&ibm->acpi->device->dev),
3728 event, data); 4297 event, data);
3729} 4298}
3730 4299
@@ -3826,7 +4395,7 @@ static void bay_notify(struct ibm_struct *ibm, u32 event)
3826{ 4395{
3827 acpi_bus_generate_proc_event(ibm->acpi->device, event, 0); 4396 acpi_bus_generate_proc_event(ibm->acpi->device, event, 0);
3828 acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class, 4397 acpi_bus_generate_netlink_event(ibm->acpi->device->pnp.device_class,
3829 ibm->acpi->device->dev.bus_id, 4398 dev_name(&ibm->acpi->device->dev),
3830 event, 0); 4399 event, 0);
3831} 4400}
3832 4401
@@ -4850,7 +5419,7 @@ static int brightness_set(int value)
4850 value < 0) 5419 value < 0)
4851 return -EINVAL; 5420 return -EINVAL;
4852 5421
4853 res = mutex_lock_interruptible(&brightness_mutex); 5422 res = mutex_lock_killable(&brightness_mutex);
4854 if (res < 0) 5423 if (res < 0)
4855 return res; 5424 return res;
4856 5425
@@ -5334,6 +5903,60 @@ TPACPI_HANDLE(sfan, ec, "SFAN", /* 570 */
5334 ); /* all others */ 5903 ); /* all others */
5335 5904
5336/* 5905/*
5906 * Unitialized HFSP quirk: ACPI DSDT and EC fail to initialize the
5907 * HFSP register at boot, so it contains 0x07 but the Thinkpad could
5908 * be in auto mode (0x80).
5909 *
5910 * This is corrected by any write to HFSP either by the driver, or
5911 * by the firmware.
5912 *
5913 * We assume 0x07 really means auto mode while this quirk is active,
5914 * as this is far more likely than the ThinkPad being in level 7,
5915 * which is only used by the firmware during thermal emergencies.
5916 */
5917
5918static void fan_quirk1_detect(void)
5919{
5920 /* In some ThinkPads, neither the EC nor the ACPI
5921 * DSDT initialize the HFSP register, and it ends up
5922 * being initially set to 0x07 when it *could* be
5923 * either 0x07 or 0x80.
5924 *
5925 * Enable for TP-1Y (T43), TP-78 (R51e),
5926 * TP-76 (R52), TP-70 (T43, R52), which are known
5927 * to be buggy. */
5928 if (fan_control_initial_status == 0x07) {
5929 switch (thinkpad_id.ec_model) {
5930 case 0x5931: /* TP-1Y */
5931 case 0x3837: /* TP-78 */
5932 case 0x3637: /* TP-76 */
5933 case 0x3037: /* TP-70 */
5934 printk(TPACPI_NOTICE
5935 "fan_init: initial fan status is unknown, "
5936 "assuming it is in auto mode\n");
5937 tp_features.fan_ctrl_status_undef = 1;
5938 ;;
5939 }
5940 }
5941}
5942
5943static void fan_quirk1_handle(u8 *fan_status)
5944{
5945 if (unlikely(tp_features.fan_ctrl_status_undef)) {
5946 if (*fan_status != fan_control_initial_status) {
5947 /* something changed the HFSP regisnter since
5948 * driver init time, so it is not undefined
5949 * anymore */
5950 tp_features.fan_ctrl_status_undef = 0;
5951 } else {
5952 /* Return most likely status. In fact, it
5953 * might be the only possible status */
5954 *fan_status = TP_EC_FAN_AUTO;
5955 }
5956 }
5957}
5958
5959/*
5337 * Call with fan_mutex held 5960 * Call with fan_mutex held
5338 */ 5961 */
5339static void fan_update_desired_level(u8 status) 5962static void fan_update_desired_level(u8 status)
@@ -5371,8 +5994,10 @@ static int fan_get_status(u8 *status)
5371 if (unlikely(!acpi_ec_read(fan_status_offset, &s))) 5994 if (unlikely(!acpi_ec_read(fan_status_offset, &s)))
5372 return -EIO; 5995 return -EIO;
5373 5996
5374 if (likely(status)) 5997 if (likely(status)) {
5375 *status = s; 5998 *status = s;
5999 fan_quirk1_handle(status);
6000 }
5376 6001
5377 break; 6002 break;
5378 6003
@@ -5388,7 +6013,7 @@ static int fan_get_status_safe(u8 *status)
5388 int rc; 6013 int rc;
5389 u8 s; 6014 u8 s;
5390 6015
5391 if (mutex_lock_interruptible(&fan_mutex)) 6016 if (mutex_lock_killable(&fan_mutex))
5392 return -ERESTARTSYS; 6017 return -ERESTARTSYS;
5393 rc = fan_get_status(&s); 6018 rc = fan_get_status(&s);
5394 if (!rc) 6019 if (!rc)
@@ -5471,7 +6096,7 @@ static int fan_set_level_safe(int level)
5471 if (!fan_control_allowed) 6096 if (!fan_control_allowed)
5472 return -EPERM; 6097 return -EPERM;
5473 6098
5474 if (mutex_lock_interruptible(&fan_mutex)) 6099 if (mutex_lock_killable(&fan_mutex))
5475 return -ERESTARTSYS; 6100 return -ERESTARTSYS;
5476 6101
5477 if (level == TPACPI_FAN_LAST_LEVEL) 6102 if (level == TPACPI_FAN_LAST_LEVEL)
@@ -5493,7 +6118,7 @@ static int fan_set_enable(void)
5493 if (!fan_control_allowed) 6118 if (!fan_control_allowed)
5494 return -EPERM; 6119 return -EPERM;
5495 6120
5496 if (mutex_lock_interruptible(&fan_mutex)) 6121 if (mutex_lock_killable(&fan_mutex))
5497 return -ERESTARTSYS; 6122 return -ERESTARTSYS;
5498 6123
5499 switch (fan_control_access_mode) { 6124 switch (fan_control_access_mode) {
@@ -5548,7 +6173,7 @@ static int fan_set_disable(void)
5548 if (!fan_control_allowed) 6173 if (!fan_control_allowed)
5549 return -EPERM; 6174 return -EPERM;
5550 6175
5551 if (mutex_lock_interruptible(&fan_mutex)) 6176 if (mutex_lock_killable(&fan_mutex))
5552 return -ERESTARTSYS; 6177 return -ERESTARTSYS;
5553 6178
5554 rc = 0; 6179 rc = 0;
@@ -5586,7 +6211,7 @@ static int fan_set_speed(int speed)
5586 if (!fan_control_allowed) 6211 if (!fan_control_allowed)
5587 return -EPERM; 6212 return -EPERM;
5588 6213
5589 if (mutex_lock_interruptible(&fan_mutex)) 6214 if (mutex_lock_killable(&fan_mutex))
5590 return -ERESTARTSYS; 6215 return -ERESTARTSYS;
5591 6216
5592 rc = 0; 6217 rc = 0;
@@ -5682,16 +6307,6 @@ static ssize_t fan_pwm1_enable_show(struct device *dev,
5682 if (res) 6307 if (res)
5683 return res; 6308 return res;
5684 6309
5685 if (unlikely(tp_features.fan_ctrl_status_undef)) {
5686 if (status != fan_control_initial_status) {
5687 tp_features.fan_ctrl_status_undef = 0;
5688 } else {
5689 /* Return most likely status. In fact, it
5690 * might be the only possible status */
5691 status = TP_EC_FAN_AUTO;
5692 }
5693 }
5694
5695 if (status & TP_EC_FAN_FULLSPEED) { 6310 if (status & TP_EC_FAN_FULLSPEED) {
5696 mode = 0; 6311 mode = 0;
5697 } else if (status & TP_EC_FAN_AUTO) { 6312 } else if (status & TP_EC_FAN_AUTO) {
@@ -5756,14 +6371,6 @@ static ssize_t fan_pwm1_show(struct device *dev,
5756 if (res) 6371 if (res)
5757 return res; 6372 return res;
5758 6373
5759 if (unlikely(tp_features.fan_ctrl_status_undef)) {
5760 if (status != fan_control_initial_status) {
5761 tp_features.fan_ctrl_status_undef = 0;
5762 } else {
5763 status = TP_EC_FAN_AUTO;
5764 }
5765 }
5766
5767 if ((status & 6374 if ((status &
5768 (TP_EC_FAN_AUTO | TP_EC_FAN_FULLSPEED)) != 0) 6375 (TP_EC_FAN_AUTO | TP_EC_FAN_FULLSPEED)) != 0)
5769 status = fan_control_desired_level; 6376 status = fan_control_desired_level;
@@ -5788,7 +6395,7 @@ static ssize_t fan_pwm1_store(struct device *dev,
5788 /* scale down from 0-255 to 0-7 */ 6395 /* scale down from 0-255 to 0-7 */
5789 newlevel = (s >> 5) & 0x07; 6396 newlevel = (s >> 5) & 0x07;
5790 6397
5791 if (mutex_lock_interruptible(&fan_mutex)) 6398 if (mutex_lock_killable(&fan_mutex))
5792 return -ERESTARTSYS; 6399 return -ERESTARTSYS;
5793 6400
5794 rc = fan_get_status(&status); 6401 rc = fan_get_status(&status);
@@ -5895,29 +6502,7 @@ static int __init fan_init(struct ibm_init_struct *iibm)
5895 if (likely(acpi_ec_read(fan_status_offset, 6502 if (likely(acpi_ec_read(fan_status_offset,
5896 &fan_control_initial_status))) { 6503 &fan_control_initial_status))) {
5897 fan_status_access_mode = TPACPI_FAN_RD_TPEC; 6504 fan_status_access_mode = TPACPI_FAN_RD_TPEC;
5898 6505 fan_quirk1_detect();
5899 /* In some ThinkPads, neither the EC nor the ACPI
5900 * DSDT initialize the fan status, and it ends up
5901 * being set to 0x07 when it *could* be either
5902 * 0x07 or 0x80.
5903 *
5904 * Enable for TP-1Y (T43), TP-78 (R51e),
5905 * TP-76 (R52), TP-70 (T43, R52), which are known
5906 * to be buggy. */
5907 if (fan_control_initial_status == 0x07) {
5908 switch (thinkpad_id.ec_model) {
5909 case 0x5931: /* TP-1Y */
5910 case 0x3837: /* TP-78 */
5911 case 0x3637: /* TP-76 */
5912 case 0x3037: /* TP-70 */
5913 printk(TPACPI_NOTICE
5914 "fan_init: initial fan status "
5915 "is unknown, assuming it is "
5916 "in auto mode\n");
5917 tp_features.fan_ctrl_status_undef = 1;
5918 ;;
5919 }
5920 }
5921 } else { 6506 } else {
5922 printk(TPACPI_ERR 6507 printk(TPACPI_ERR
5923 "ThinkPad ACPI EC access misbehaving, " 6508 "ThinkPad ACPI EC access misbehaving, "
@@ -6106,15 +6691,6 @@ static int fan_read(char *p)
6106 if (rc < 0) 6691 if (rc < 0)
6107 return rc; 6692 return rc;
6108 6693
6109 if (unlikely(tp_features.fan_ctrl_status_undef)) {
6110 if (status != fan_control_initial_status)
6111 tp_features.fan_ctrl_status_undef = 0;
6112 else
6113 /* Return most likely status. In fact, it
6114 * might be the only possible status */
6115 status = TP_EC_FAN_AUTO;
6116 }
6117
6118 len += sprintf(p + len, "status:\t\t%s\n", 6694 len += sprintf(p + len, "status:\t\t%s\n",
6119 (status != 0) ? "enabled" : "disabled"); 6695 (status != 0) ? "enabled" : "disabled");
6120 6696
@@ -6563,6 +7139,10 @@ static struct ibm_init_struct ibms_init[] __initdata = {
6563 .init = wan_init, 7139 .init = wan_init,
6564 .data = &wan_driver_data, 7140 .data = &wan_driver_data,
6565 }, 7141 },
7142 {
7143 .init = uwb_init,
7144 .data = &uwb_driver_data,
7145 },
6566#ifdef CONFIG_THINKPAD_ACPI_VIDEO 7146#ifdef CONFIG_THINKPAD_ACPI_VIDEO
6567 { 7147 {
6568 .init = video_init, 7148 .init = video_init,
@@ -6701,6 +7281,32 @@ TPACPI_PARAM(brightness);
6701TPACPI_PARAM(volume); 7281TPACPI_PARAM(volume);
6702TPACPI_PARAM(fan); 7282TPACPI_PARAM(fan);
6703 7283
7284#ifdef CONFIG_THINKPAD_ACPI_DEBUGFACILITIES
7285module_param(dbg_wlswemul, uint, 0);
7286MODULE_PARM_DESC(dbg_wlswemul, "Enables WLSW emulation");
7287module_param_named(wlsw_state, tpacpi_wlsw_emulstate, bool, 0);
7288MODULE_PARM_DESC(wlsw_state,
7289 "Initial state of the emulated WLSW switch");
7290
7291module_param(dbg_bluetoothemul, uint, 0);
7292MODULE_PARM_DESC(dbg_bluetoothemul, "Enables bluetooth switch emulation");
7293module_param_named(bluetooth_state, tpacpi_bluetooth_emulstate, bool, 0);
7294MODULE_PARM_DESC(bluetooth_state,
7295 "Initial state of the emulated bluetooth switch");
7296
7297module_param(dbg_wwanemul, uint, 0);
7298MODULE_PARM_DESC(dbg_wwanemul, "Enables WWAN switch emulation");
7299module_param_named(wwan_state, tpacpi_wwan_emulstate, bool, 0);
7300MODULE_PARM_DESC(wwan_state,
7301 "Initial state of the emulated WWAN switch");
7302
7303module_param(dbg_uwbemul, uint, 0);
7304MODULE_PARM_DESC(dbg_uwbemul, "Enables UWB switch emulation");
7305module_param_named(uwb_state, tpacpi_uwb_emulstate, bool, 0);
7306MODULE_PARM_DESC(uwb_state,
7307 "Initial state of the emulated UWB switch");
7308#endif
7309
6704static void thinkpad_acpi_module_exit(void) 7310static void thinkpad_acpi_module_exit(void)
6705{ 7311{
6706 struct ibm_struct *ibm, *itmp; 7312 struct ibm_struct *ibm, *itmp;
diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c
index d30bb766fcef..b56a704409d2 100644
--- a/drivers/power/pda_power.c
+++ b/drivers/power/pda_power.c
@@ -20,7 +20,7 @@
20 20
21static inline unsigned int get_irq_flags(struct resource *res) 21static inline unsigned int get_irq_flags(struct resource *res)
22{ 22{
23 unsigned int flags = IRQF_DISABLED | IRQF_SHARED; 23 unsigned int flags = IRQF_SAMPLE_RANDOM | IRQF_SHARED;
24 24
25 flags |= res->flags & IRQF_TRIGGER_MASK; 25 flags |= res->flags & IRQF_TRIGGER_MASK;
26 26
diff --git a/drivers/ps3/ps3-lpm.c b/drivers/ps3/ps3-lpm.c
index 204158cf7a55..fe96793e3f08 100644
--- a/drivers/ps3/ps3-lpm.c
+++ b/drivers/ps3/ps3-lpm.c
@@ -732,7 +732,7 @@ static u64 pm_signal_group_to_ps3_lv1_signal_group(u64 group)
732 case 8: 732 case 8:
733 return pm_translate_signal_group_number_on_island8(subgroup); 733 return pm_translate_signal_group_number_on_island8(subgroup);
734 default: 734 default:
735 dev_dbg(sbd_core(), "%s:%u: island not found: %lu\n", __func__, 735 dev_dbg(sbd_core(), "%s:%u: island not found: %llu\n", __func__,
736 __LINE__, group); 736 __LINE__, group);
737 BUG(); 737 BUG();
738 break; 738 break;
@@ -765,7 +765,7 @@ static int __ps3_set_signal(u64 lv1_signal_group, u64 bus_select,
765 signal_select, attr1, attr2, attr3); 765 signal_select, attr1, attr2, attr3);
766 if (ret) 766 if (ret)
767 dev_err(sbd_core(), 767 dev_err(sbd_core(),
768 "%s:%u: error:%d 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n", 768 "%s:%u: error:%d 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx\n",
769 __func__, __LINE__, ret, lv1_signal_group, bus_select, 769 __func__, __LINE__, ret, lv1_signal_group, bus_select,
770 signal_select, attr1, attr2, attr3); 770 signal_select, attr1, attr2, attr3);
771 771
@@ -908,7 +908,7 @@ void ps3_disable_pm(u32 cpu)
908 908
909 lpm_priv->tb_count = tmp; 909 lpm_priv->tb_count = tmp;
910 910
911 dev_dbg(sbd_core(), "%s:%u: tb_count %lu (%lxh)\n", __func__, __LINE__, 911 dev_dbg(sbd_core(), "%s:%u: tb_count %llu (%llxh)\n", __func__, __LINE__,
912 lpm_priv->tb_count, lpm_priv->tb_count); 912 lpm_priv->tb_count, lpm_priv->tb_count);
913} 913}
914EXPORT_SYMBOL_GPL(ps3_disable_pm); 914EXPORT_SYMBOL_GPL(ps3_disable_pm);
@@ -938,7 +938,7 @@ int ps3_lpm_copy_tb(unsigned long offset, void *buf, unsigned long count,
938 if (offset >= lpm_priv->tb_count) 938 if (offset >= lpm_priv->tb_count)
939 return 0; 939 return 0;
940 940
941 count = min(count, lpm_priv->tb_count - offset); 941 count = min_t(u64, count, lpm_priv->tb_count - offset);
942 942
943 while (*bytes_copied < count) { 943 while (*bytes_copied < count) {
944 const unsigned long request = count - *bytes_copied; 944 const unsigned long request = count - *bytes_copied;
@@ -993,7 +993,7 @@ int ps3_lpm_copy_tb_to_user(unsigned long offset, void __user *buf,
993 if (offset >= lpm_priv->tb_count) 993 if (offset >= lpm_priv->tb_count)
994 return 0; 994 return 0;
995 995
996 count = min(count, lpm_priv->tb_count - offset); 996 count = min_t(u64, count, lpm_priv->tb_count - offset);
997 997
998 while (*bytes_copied < count) { 998 while (*bytes_copied < count) {
999 const unsigned long request = count - *bytes_copied; 999 const unsigned long request = count - *bytes_copied;
@@ -1013,7 +1013,7 @@ int ps3_lpm_copy_tb_to_user(unsigned long offset, void __user *buf,
1013 result = copy_to_user(buf, lpm_priv->tb_cache, tmp); 1013 result = copy_to_user(buf, lpm_priv->tb_cache, tmp);
1014 1014
1015 if (result) { 1015 if (result) {
1016 dev_dbg(sbd_core(), "%s:%u: 0x%lx bytes at 0x%p\n", 1016 dev_dbg(sbd_core(), "%s:%u: 0x%llx bytes at 0x%p\n",
1017 __func__, __LINE__, tmp, buf); 1017 __func__, __LINE__, tmp, buf);
1018 dev_err(sbd_core(), "%s:%u: copy_to_user failed: %d\n", 1018 dev_err(sbd_core(), "%s:%u: copy_to_user failed: %d\n",
1019 __func__, __LINE__, result); 1019 __func__, __LINE__, result);
@@ -1148,8 +1148,8 @@ int ps3_lpm_open(enum ps3_lpm_tb_type tb_type, void *tb_cache,
1148 lpm_priv->shadow.group_control = PS3_LPM_SHADOW_REG_INIT; 1148 lpm_priv->shadow.group_control = PS3_LPM_SHADOW_REG_INIT;
1149 lpm_priv->shadow.debug_bus_control = PS3_LPM_SHADOW_REG_INIT; 1149 lpm_priv->shadow.debug_bus_control = PS3_LPM_SHADOW_REG_INIT;
1150 1150
1151 dev_dbg(sbd_core(), "%s:%u: lpm_id 0x%lx, outlet_id 0x%lx, " 1151 dev_dbg(sbd_core(), "%s:%u: lpm_id 0x%llx, outlet_id 0x%llx, "
1152 "tb_size 0x%lx\n", __func__, __LINE__, lpm_priv->lpm_id, 1152 "tb_size 0x%llx\n", __func__, __LINE__, lpm_priv->lpm_id,
1153 lpm_priv->outlet_id, tb_size); 1153 lpm_priv->outlet_id, tb_size);
1154 1154
1155 return 0; 1155 return 0;
diff --git a/drivers/ps3/ps3-vuart.c b/drivers/ps3/ps3-vuart.c
index 90c097a7a47a..e4ad5ba5d0a3 100644
--- a/drivers/ps3/ps3-vuart.c
+++ b/drivers/ps3/ps3-vuart.c
@@ -114,7 +114,7 @@ struct ports_bmp {
114static void __maybe_unused _dump_ports_bmp( 114static void __maybe_unused _dump_ports_bmp(
115 const struct ports_bmp *bmp, const char *func, int line) 115 const struct ports_bmp *bmp, const char *func, int line)
116{ 116{
117 pr_debug("%s:%d: ports_bmp: %016lxh\n", func, line, bmp->status); 117 pr_debug("%s:%d: ports_bmp: %016llxh\n", func, line, bmp->status);
118} 118}
119 119
120#define dump_port_params(_b) _dump_port_params(_b, __func__, __LINE__) 120#define dump_port_params(_b) _dump_port_params(_b, __func__, __LINE__)
@@ -159,11 +159,13 @@ int ps3_vuart_get_triggers(struct ps3_system_bus_device *dev,
159 struct vuart_triggers *trig) 159 struct vuart_triggers *trig)
160{ 160{
161 int result; 161 int result;
162 unsigned long size; 162 u64 size;
163 unsigned long val; 163 u64 val;
164 u64 tx;
164 165
165 result = lv1_get_virtual_uart_param(dev->port_number, 166 result = lv1_get_virtual_uart_param(dev->port_number,
166 PARAM_TX_TRIGGER, &trig->tx); 167 PARAM_TX_TRIGGER, &tx);
168 trig->tx = tx;
167 169
168 if (result) { 170 if (result) {
169 dev_dbg(&dev->core, "%s:%d: tx_trigger failed: %s\n", 171 dev_dbg(&dev->core, "%s:%d: tx_trigger failed: %s\n",
@@ -201,7 +203,7 @@ int ps3_vuart_set_triggers(struct ps3_system_bus_device *dev, unsigned int tx,
201 unsigned int rx) 203 unsigned int rx)
202{ 204{
203 int result; 205 int result;
204 unsigned long size; 206 u64 size;
205 207
206 result = lv1_set_virtual_uart_param(dev->port_number, 208 result = lv1_set_virtual_uart_param(dev->port_number,
207 PARAM_TX_TRIGGER, tx); 209 PARAM_TX_TRIGGER, tx);
@@ -248,7 +250,7 @@ static int ps3_vuart_get_rx_bytes_waiting(struct ps3_system_bus_device *dev,
248 dev_dbg(&dev->core, "%s:%d: rx_bytes failed: %s\n", 250 dev_dbg(&dev->core, "%s:%d: rx_bytes failed: %s\n",
249 __func__, __LINE__, ps3_result(result)); 251 __func__, __LINE__, ps3_result(result));
250 252
251 dev_dbg(&dev->core, "%s:%d: %lxh\n", __func__, __LINE__, 253 dev_dbg(&dev->core, "%s:%d: %llxh\n", __func__, __LINE__,
252 *bytes_waiting); 254 *bytes_waiting);
253 return result; 255 return result;
254} 256}
@@ -295,7 +297,7 @@ static int ps3_vuart_get_interrupt_status(struct ps3_system_bus_device *dev,
295 297
296 *status = tmp & priv->interrupt_mask; 298 *status = tmp & priv->interrupt_mask;
297 299
298 dev_dbg(&dev->core, "%s:%d: m %lxh, s %lxh, m&s %lxh\n", 300 dev_dbg(&dev->core, "%s:%d: m %llxh, s %llxh, m&s %lxh\n",
299 __func__, __LINE__, priv->interrupt_mask, tmp, *status); 301 __func__, __LINE__, priv->interrupt_mask, tmp, *status);
300 302
301 return result; 303 return result;
@@ -363,7 +365,7 @@ int ps3_vuart_disable_interrupt_disconnect(struct ps3_system_bus_device *dev)
363 */ 365 */
364 366
365static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev, 367static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev,
366 const void *buf, unsigned int bytes, unsigned long *bytes_written) 368 const void *buf, unsigned int bytes, u64 *bytes_written)
367{ 369{
368 int result; 370 int result;
369 struct ps3_vuart_port_priv *priv = to_port_priv(dev); 371 struct ps3_vuart_port_priv *priv = to_port_priv(dev);
@@ -379,7 +381,7 @@ static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev,
379 381
380 priv->stats.bytes_written += *bytes_written; 382 priv->stats.bytes_written += *bytes_written;
381 383
382 dev_dbg(&dev->core, "%s:%d: wrote %lxh/%xh=>%lxh\n", __func__, __LINE__, 384 dev_dbg(&dev->core, "%s:%d: wrote %llxh/%xh=>%lxh\n", __func__, __LINE__,
383 *bytes_written, bytes, priv->stats.bytes_written); 385 *bytes_written, bytes, priv->stats.bytes_written);
384 386
385 return result; 387 return result;
@@ -393,7 +395,7 @@ static int ps3_vuart_raw_write(struct ps3_system_bus_device *dev,
393 */ 395 */
394 396
395static int ps3_vuart_raw_read(struct ps3_system_bus_device *dev, void *buf, 397static int ps3_vuart_raw_read(struct ps3_system_bus_device *dev, void *buf,
396 unsigned int bytes, unsigned long *bytes_read) 398 unsigned int bytes, u64 *bytes_read)
397{ 399{
398 int result; 400 int result;
399 struct ps3_vuart_port_priv *priv = to_port_priv(dev); 401 struct ps3_vuart_port_priv *priv = to_port_priv(dev);
@@ -411,7 +413,7 @@ static int ps3_vuart_raw_read(struct ps3_system_bus_device *dev, void *buf,
411 413
412 priv->stats.bytes_read += *bytes_read; 414 priv->stats.bytes_read += *bytes_read;
413 415
414 dev_dbg(&dev->core, "%s:%d: read %lxh/%xh=>%lxh\n", __func__, __LINE__, 416 dev_dbg(&dev->core, "%s:%d: read %llxh/%xh=>%lxh\n", __func__, __LINE__,
415 *bytes_read, bytes, priv->stats.bytes_read); 417 *bytes_read, bytes, priv->stats.bytes_read);
416 418
417 return result; 419 return result;
@@ -500,7 +502,7 @@ int ps3_vuart_write(struct ps3_system_bus_device *dev, const void *buf,
500 spin_lock_irqsave(&priv->tx_list.lock, flags); 502 spin_lock_irqsave(&priv->tx_list.lock, flags);
501 503
502 if (list_empty(&priv->tx_list.head)) { 504 if (list_empty(&priv->tx_list.head)) {
503 unsigned long bytes_written; 505 u64 bytes_written;
504 506
505 result = ps3_vuart_raw_write(dev, buf, bytes, &bytes_written); 507 result = ps3_vuart_raw_write(dev, buf, bytes, &bytes_written);
506 508
@@ -592,7 +594,7 @@ static int ps3_vuart_queue_rx_bytes(struct ps3_system_bus_device *dev,
592 list_add_tail(&lb->link, &priv->rx_list.head); 594 list_add_tail(&lb->link, &priv->rx_list.head);
593 priv->rx_list.bytes_held += bytes; 595 priv->rx_list.bytes_held += bytes;
594 596
595 dev_dbg(&dev->core, "%s:%d: buf_%lu: queued %lxh bytes\n", 597 dev_dbg(&dev->core, "%s:%d: buf_%lu: queued %llxh bytes\n",
596 __func__, __LINE__, lb->dbg_number, bytes); 598 __func__, __LINE__, lb->dbg_number, bytes);
597 599
598 *bytes_queued = bytes; 600 *bytes_queued = bytes;
@@ -745,7 +747,7 @@ static int ps3_vuart_handle_interrupt_tx(struct ps3_system_bus_device *dev)
745 747
746 list_for_each_entry_safe(lb, n, &priv->tx_list.head, link) { 748 list_for_each_entry_safe(lb, n, &priv->tx_list.head, link) {
747 749
748 unsigned long bytes_written; 750 u64 bytes_written;
749 751
750 result = ps3_vuart_raw_write(dev, lb->head, lb->tail - lb->head, 752 result = ps3_vuart_raw_write(dev, lb->head, lb->tail - lb->head,
751 &bytes_written); 753 &bytes_written);
@@ -762,7 +764,7 @@ static int ps3_vuart_handle_interrupt_tx(struct ps3_system_bus_device *dev)
762 if (bytes_written < lb->tail - lb->head) { 764 if (bytes_written < lb->tail - lb->head) {
763 lb->head += bytes_written; 765 lb->head += bytes_written;
764 dev_dbg(&dev->core, 766 dev_dbg(&dev->core,
765 "%s:%d cleared buf_%lu, %lxh bytes\n", 767 "%s:%d cleared buf_%lu, %llxh bytes\n",
766 __func__, __LINE__, lb->dbg_number, 768 __func__, __LINE__, lb->dbg_number,
767 bytes_written); 769 bytes_written);
768 goto port_full; 770 goto port_full;
diff --git a/drivers/ps3/ps3stor_lib.c b/drivers/ps3/ps3stor_lib.c
index 55955f16ad91..18066d555397 100644
--- a/drivers/ps3/ps3stor_lib.c
+++ b/drivers/ps3/ps3stor_lib.c
@@ -70,7 +70,7 @@ static int ps3stor_probe_access(struct ps3_storage_device *dev)
70 __func__, __LINE__, n); 70 __func__, __LINE__, n);
71 dev->region_idx = __ffs(dev->accessible_regions); 71 dev->region_idx = __ffs(dev->accessible_regions);
72 dev_info(&dev->sbd.core, 72 dev_info(&dev->sbd.core,
73 "First accessible region has index %u start %lu size %lu\n", 73 "First accessible region has index %u start %llu size %llu\n",
74 dev->region_idx, dev->regions[dev->region_idx].start, 74 dev->region_idx, dev->regions[dev->region_idx].start,
75 dev->regions[dev->region_idx].size); 75 dev->regions[dev->region_idx].size);
76 76
@@ -220,7 +220,7 @@ u64 ps3stor_read_write_sectors(struct ps3_storage_device *dev, u64 lpar,
220 const char *op = write ? "write" : "read"; 220 const char *op = write ? "write" : "read";
221 int res; 221 int res;
222 222
223 dev_dbg(&dev->sbd.core, "%s:%u: %s %lu sectors starting at %lu\n", 223 dev_dbg(&dev->sbd.core, "%s:%u: %s %llu sectors starting at %llu\n",
224 __func__, __LINE__, op, sectors, start_sector); 224 __func__, __LINE__, op, sectors, start_sector);
225 225
226 init_completion(&dev->done); 226 init_completion(&dev->done);
@@ -238,7 +238,7 @@ u64 ps3stor_read_write_sectors(struct ps3_storage_device *dev, u64 lpar,
238 238
239 wait_for_completion(&dev->done); 239 wait_for_completion(&dev->done);
240 if (dev->lv1_status) { 240 if (dev->lv1_status) {
241 dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%lx\n", __func__, 241 dev_dbg(&dev->sbd.core, "%s:%u: %s failed 0x%llx\n", __func__,
242 __LINE__, op, dev->lv1_status); 242 __LINE__, op, dev->lv1_status);
243 return dev->lv1_status; 243 return dev->lv1_status;
244 } 244 }
@@ -268,7 +268,7 @@ u64 ps3stor_send_command(struct ps3_storage_device *dev, u64 cmd, u64 arg1,
268{ 268{
269 int res; 269 int res;
270 270
271 dev_dbg(&dev->sbd.core, "%s:%u: send device command 0x%lx\n", __func__, 271 dev_dbg(&dev->sbd.core, "%s:%u: send device command 0x%llx\n", __func__,
272 __LINE__, cmd); 272 __LINE__, cmd);
273 273
274 init_completion(&dev->done); 274 init_completion(&dev->done);
@@ -277,19 +277,19 @@ u64 ps3stor_send_command(struct ps3_storage_device *dev, u64 cmd, u64 arg1,
277 arg2, arg3, arg4, &dev->tag); 277 arg2, arg3, arg4, &dev->tag);
278 if (res) { 278 if (res) {
279 dev_err(&dev->sbd.core, 279 dev_err(&dev->sbd.core,
280 "%s:%u: send_device_command 0x%lx failed %d\n", 280 "%s:%u: send_device_command 0x%llx failed %d\n",
281 __func__, __LINE__, cmd, res); 281 __func__, __LINE__, cmd, res);
282 return -1; 282 return -1;
283 } 283 }
284 284
285 wait_for_completion(&dev->done); 285 wait_for_completion(&dev->done);
286 if (dev->lv1_status) { 286 if (dev->lv1_status) {
287 dev_dbg(&dev->sbd.core, "%s:%u: command 0x%lx failed 0x%lx\n", 287 dev_dbg(&dev->sbd.core, "%s:%u: command 0x%llx failed 0x%llx\n",
288 __func__, __LINE__, cmd, dev->lv1_status); 288 __func__, __LINE__, cmd, dev->lv1_status);
289 return dev->lv1_status; 289 return dev->lv1_status;
290 } 290 }
291 291
292 dev_dbg(&dev->sbd.core, "%s:%u: command 0x%lx completed\n", __func__, 292 dev_dbg(&dev->sbd.core, "%s:%u: command 0x%llx completed\n", __func__,
293 __LINE__, cmd); 293 __LINE__, cmd);
294 294
295 return 0; 295 return 0;
diff --git a/drivers/regulator/wm8400-regulator.c b/drivers/regulator/wm8400-regulator.c
index 48b372e038a8..56e23d44ba59 100644
--- a/drivers/regulator/wm8400-regulator.c
+++ b/drivers/regulator/wm8400-regulator.c
@@ -289,7 +289,7 @@ static struct regulator_desc regulators[] = {
289 }, 289 },
290}; 290};
291 291
292static int __init wm8400_regulator_probe(struct platform_device *pdev) 292static int __devinit wm8400_regulator_probe(struct platform_device *pdev)
293{ 293{
294 struct regulator_dev *rdev; 294 struct regulator_dev *rdev;
295 295
diff --git a/drivers/rtc/rtc-pxa.c b/drivers/rtc/rtc-pxa.c
index cc7eb8767b82..bd56a033bfd0 100644
--- a/drivers/rtc/rtc-pxa.c
+++ b/drivers/rtc/rtc-pxa.c
@@ -27,6 +27,8 @@
27#include <linux/interrupt.h> 27#include <linux/interrupt.h>
28#include <linux/io.h> 28#include <linux/io.h>
29 29
30#include <mach/hardware.h>
31
30#define TIMER_FREQ CLOCK_TICK_RATE 32#define TIMER_FREQ CLOCK_TICK_RATE
31#define RTC_DEF_DIVIDER (32768 - 1) 33#define RTC_DEF_DIVIDER (32768 - 1)
32#define RTC_DEF_TRIM 0 34#define RTC_DEF_TRIM 0
diff --git a/drivers/rtc/rtc-twl4030.c b/drivers/rtc/rtc-twl4030.c
index 8ce5f74ee45b..ad35f76c46b7 100644
--- a/drivers/rtc/rtc-twl4030.c
+++ b/drivers/rtc/rtc-twl4030.c
@@ -120,7 +120,7 @@ static int twl4030_rtc_write_u8(u8 data, u8 reg)
120static unsigned char rtc_irq_bits; 120static unsigned char rtc_irq_bits;
121 121
122/* 122/*
123 * Enable timer and/or alarm interrupts. 123 * Enable 1/second update and/or alarm interrupts.
124 */ 124 */
125static int set_rtc_irq_bit(unsigned char bit) 125static int set_rtc_irq_bit(unsigned char bit)
126{ 126{
@@ -128,6 +128,7 @@ static int set_rtc_irq_bit(unsigned char bit)
128 int ret; 128 int ret;
129 129
130 val = rtc_irq_bits | bit; 130 val = rtc_irq_bits | bit;
131 val &= ~BIT_RTC_INTERRUPTS_REG_EVERY_M;
131 ret = twl4030_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG); 132 ret = twl4030_rtc_write_u8(val, REG_RTC_INTERRUPTS_REG);
132 if (ret == 0) 133 if (ret == 0)
133 rtc_irq_bits = val; 134 rtc_irq_bits = val;
@@ -136,7 +137,7 @@ static int set_rtc_irq_bit(unsigned char bit)
136} 137}
137 138
138/* 139/*
139 * Disable timer and/or alarm interrupts. 140 * Disable update and/or alarm interrupts.
140 */ 141 */
141static int mask_rtc_irq_bit(unsigned char bit) 142static int mask_rtc_irq_bit(unsigned char bit)
142{ 143{
@@ -151,7 +152,7 @@ static int mask_rtc_irq_bit(unsigned char bit)
151 return ret; 152 return ret;
152} 153}
153 154
154static inline int twl4030_rtc_alarm_irq_set_state(int enabled) 155static int twl4030_rtc_alarm_irq_enable(struct device *dev, unsigned enabled)
155{ 156{
156 int ret; 157 int ret;
157 158
@@ -163,7 +164,7 @@ static inline int twl4030_rtc_alarm_irq_set_state(int enabled)
163 return ret; 164 return ret;
164} 165}
165 166
166static inline int twl4030_rtc_irq_set_state(int enabled) 167static int twl4030_rtc_update_irq_enable(struct device *dev, unsigned enabled)
167{ 168{
168 int ret; 169 int ret;
169 170
@@ -292,7 +293,7 @@ static int twl4030_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
292 unsigned char alarm_data[ALL_TIME_REGS + 1]; 293 unsigned char alarm_data[ALL_TIME_REGS + 1];
293 int ret; 294 int ret;
294 295
295 ret = twl4030_rtc_alarm_irq_set_state(0); 296 ret = twl4030_rtc_alarm_irq_enable(dev, 0);
296 if (ret) 297 if (ret)
297 goto out; 298 goto out;
298 299
@@ -312,35 +313,11 @@ static int twl4030_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
312 } 313 }
313 314
314 if (alm->enabled) 315 if (alm->enabled)
315 ret = twl4030_rtc_alarm_irq_set_state(1); 316 ret = twl4030_rtc_alarm_irq_enable(dev, 1);
316out: 317out:
317 return ret; 318 return ret;
318} 319}
319 320
320#ifdef CONFIG_RTC_INTF_DEV
321
322static int twl4030_rtc_ioctl(struct device *dev, unsigned int cmd,
323 unsigned long arg)
324{
325 switch (cmd) {
326 case RTC_AIE_OFF:
327 return twl4030_rtc_alarm_irq_set_state(0);
328 case RTC_AIE_ON:
329 return twl4030_rtc_alarm_irq_set_state(1);
330 case RTC_UIE_OFF:
331 return twl4030_rtc_irq_set_state(0);
332 case RTC_UIE_ON:
333 return twl4030_rtc_irq_set_state(1);
334
335 default:
336 return -ENOIOCTLCMD;
337 }
338}
339
340#else
341#define twl4030_rtc_ioctl NULL
342#endif
343
344static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc) 321static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc)
345{ 322{
346 unsigned long events = 0; 323 unsigned long events = 0;
@@ -400,11 +377,12 @@ out:
400} 377}
401 378
402static struct rtc_class_ops twl4030_rtc_ops = { 379static struct rtc_class_ops twl4030_rtc_ops = {
403 .ioctl = twl4030_rtc_ioctl,
404 .read_time = twl4030_rtc_read_time, 380 .read_time = twl4030_rtc_read_time,
405 .set_time = twl4030_rtc_set_time, 381 .set_time = twl4030_rtc_set_time,
406 .read_alarm = twl4030_rtc_read_alarm, 382 .read_alarm = twl4030_rtc_read_alarm,
407 .set_alarm = twl4030_rtc_set_alarm, 383 .set_alarm = twl4030_rtc_set_alarm,
384 .alarm_irq_enable = twl4030_rtc_alarm_irq_enable,
385 .update_irq_enable = twl4030_rtc_update_irq_enable,
408}; 386};
409 387
410/*----------------------------------------------------------------------*/ 388/*----------------------------------------------------------------------*/
@@ -422,7 +400,7 @@ static int __devinit twl4030_rtc_probe(struct platform_device *pdev)
422 rtc = rtc_device_register(pdev->name, 400 rtc = rtc_device_register(pdev->name,
423 &pdev->dev, &twl4030_rtc_ops, THIS_MODULE); 401 &pdev->dev, &twl4030_rtc_ops, THIS_MODULE);
424 if (IS_ERR(rtc)) { 402 if (IS_ERR(rtc)) {
425 ret = -EINVAL; 403 ret = PTR_ERR(rtc);
426 dev_err(&pdev->dev, "can't register RTC device, err %ld\n", 404 dev_err(&pdev->dev, "can't register RTC device, err %ld\n",
427 PTR_ERR(rtc)); 405 PTR_ERR(rtc));
428 goto out0; 406 goto out0;
@@ -432,7 +410,6 @@ static int __devinit twl4030_rtc_probe(struct platform_device *pdev)
432 platform_set_drvdata(pdev, rtc); 410 platform_set_drvdata(pdev, rtc);
433 411
434 ret = twl4030_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG); 412 ret = twl4030_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG);
435
436 if (ret < 0) 413 if (ret < 0)
437 goto out1; 414 goto out1;
438 415
@@ -475,7 +452,6 @@ static int __devinit twl4030_rtc_probe(struct platform_device *pdev)
475 452
476 return ret; 453 return ret;
477 454
478
479out2: 455out2:
480 free_irq(irq, rtc); 456 free_irq(irq, rtc);
481out1: 457out1:
@@ -506,8 +482,9 @@ static int __devexit twl4030_rtc_remove(struct platform_device *pdev)
506 482
507static void twl4030_rtc_shutdown(struct platform_device *pdev) 483static void twl4030_rtc_shutdown(struct platform_device *pdev)
508{ 484{
509 mask_rtc_irq_bit(BIT_RTC_INTERRUPTS_REG_IT_TIMER_M | 485 /* mask timer interrupts, but leave alarm interrupts on to enable
510 BIT_RTC_INTERRUPTS_REG_IT_ALARM_M); 486 power-on when alarm is triggered */
487 mask_rtc_irq_bit(BIT_RTC_INTERRUPTS_REG_IT_TIMER_M);
511} 488}
512 489
513#ifdef CONFIG_PM 490#ifdef CONFIG_PM
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index acca6678cb2b..49c3bfa1afd7 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -70,7 +70,9 @@ static char debug_buffer[255];
70static void lcs_tasklet(unsigned long); 70static void lcs_tasklet(unsigned long);
71static void lcs_start_kernel_thread(struct work_struct *); 71static void lcs_start_kernel_thread(struct work_struct *);
72static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *); 72static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *);
73#ifdef CONFIG_IP_MULTICAST
73static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *); 74static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *);
75#endif /* CONFIG_IP_MULTICAST */
74static int lcs_recovery(void *ptr); 76static int lcs_recovery(void *ptr);
75 77
76/** 78/**
@@ -1285,6 +1287,8 @@ out:
1285 lcs_clear_thread_running_bit(card, LCS_SET_MC_THREAD); 1287 lcs_clear_thread_running_bit(card, LCS_SET_MC_THREAD);
1286 return 0; 1288 return 0;
1287} 1289}
1290#endif /* CONFIG_IP_MULTICAST */
1291
1288/** 1292/**
1289 * function called by net device to 1293 * function called by net device to
1290 * handle multicast address relevant things 1294 * handle multicast address relevant things
@@ -1292,6 +1296,7 @@ out:
1292static void 1296static void
1293lcs_set_multicast_list(struct net_device *dev) 1297lcs_set_multicast_list(struct net_device *dev)
1294{ 1298{
1299#ifdef CONFIG_IP_MULTICAST
1295 struct lcs_card *card; 1300 struct lcs_card *card;
1296 1301
1297 LCS_DBF_TEXT(4, trace, "setmulti"); 1302 LCS_DBF_TEXT(4, trace, "setmulti");
@@ -1299,9 +1304,8 @@ lcs_set_multicast_list(struct net_device *dev)
1299 1304
1300 if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD)) 1305 if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD))
1301 schedule_work(&card->kernel_thread_starter); 1306 schedule_work(&card->kernel_thread_starter);
1302}
1303
1304#endif /* CONFIG_IP_MULTICAST */ 1307#endif /* CONFIG_IP_MULTICAST */
1308}
1305 1309
1306static long 1310static long
1307lcs_check_irb_error(struct ccw_device *cdev, struct irb *irb) 1311lcs_check_irb_error(struct ccw_device *cdev, struct irb *irb)
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
index ee0739b217b6..91ef669d98f6 100644
--- a/drivers/scsi/ibmvscsi/ibmvfc.c
+++ b/drivers/scsi/ibmvscsi/ibmvfc.c
@@ -933,7 +933,7 @@ static void ibmvfc_get_host_speed(struct Scsi_Host *shost)
933 fc_host_speed(shost) = FC_PORTSPEED_16GBIT; 933 fc_host_speed(shost) = FC_PORTSPEED_16GBIT;
934 break; 934 break;
935 default: 935 default:
936 ibmvfc_log(vhost, 3, "Unknown port speed: %ld Gbit\n", 936 ibmvfc_log(vhost, 3, "Unknown port speed: %lld Gbit\n",
937 vhost->login_buf->resp.link_speed / 100); 937 vhost->login_buf->resp.link_speed / 100);
938 fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; 938 fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN;
939 break; 939 break;
@@ -2149,8 +2149,8 @@ static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
2149{ 2149{
2150 const char *desc = ibmvfc_get_ae_desc(crq->event); 2150 const char *desc = ibmvfc_get_ae_desc(crq->event);
2151 2151
2152 ibmvfc_log(vhost, 3, "%s event received. scsi_id: %lx, wwpn: %lx," 2152 ibmvfc_log(vhost, 3, "%s event received. scsi_id: %llx, wwpn: %llx,"
2153 " node_name: %lx\n", desc, crq->scsi_id, crq->wwpn, crq->node_name); 2153 " node_name: %llx\n", desc, crq->scsi_id, crq->wwpn, crq->node_name);
2154 2154
2155 switch (crq->event) { 2155 switch (crq->event) {
2156 case IBMVFC_AE_LINK_UP: 2156 case IBMVFC_AE_LINK_UP:
@@ -2184,7 +2184,7 @@ static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
2184 ibmvfc_link_down(vhost, IBMVFC_HALTED); 2184 ibmvfc_link_down(vhost, IBMVFC_HALTED);
2185 break; 2185 break;
2186 default: 2186 default:
2187 dev_err(vhost->dev, "Unknown async event received: %ld\n", crq->event); 2187 dev_err(vhost->dev, "Unknown async event received: %lld\n", crq->event);
2188 break; 2188 break;
2189 }; 2189 };
2190} 2190}
@@ -2261,13 +2261,13 @@ static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost)
2261 * actually sent 2261 * actually sent
2262 */ 2262 */
2263 if (unlikely(!ibmvfc_valid_event(&vhost->pool, evt))) { 2263 if (unlikely(!ibmvfc_valid_event(&vhost->pool, evt))) {
2264 dev_err(vhost->dev, "Returned correlation_token 0x%08lx is invalid!\n", 2264 dev_err(vhost->dev, "Returned correlation_token 0x%08llx is invalid!\n",
2265 crq->ioba); 2265 crq->ioba);
2266 return; 2266 return;
2267 } 2267 }
2268 2268
2269 if (unlikely(atomic_read(&evt->free))) { 2269 if (unlikely(atomic_read(&evt->free))) {
2270 dev_err(vhost->dev, "Received duplicate correlation_token 0x%08lx!\n", 2270 dev_err(vhost->dev, "Received duplicate correlation_token 0x%08llx!\n",
2271 crq->ioba); 2271 crq->ioba);
2272 return; 2272 return;
2273 } 2273 }
@@ -3259,7 +3259,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost, u64 scsi_id)
3259 3259
3260 tgt = mempool_alloc(vhost->tgt_pool, GFP_KERNEL); 3260 tgt = mempool_alloc(vhost->tgt_pool, GFP_KERNEL);
3261 if (!tgt) { 3261 if (!tgt) {
3262 dev_err(vhost->dev, "Target allocation failure for scsi id %08lx\n", 3262 dev_err(vhost->dev, "Target allocation failure for scsi id %08llx\n",
3263 scsi_id); 3263 scsi_id);
3264 return -ENOMEM; 3264 return -ENOMEM;
3265 } 3265 }
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.h b/drivers/scsi/ibmvscsi/ibmvfc.h
index babdf3db59df..87dafd0f8d44 100644
--- a/drivers/scsi/ibmvscsi/ibmvfc.h
+++ b/drivers/scsi/ibmvscsi/ibmvfc.h
@@ -691,13 +691,13 @@ struct ibmvfc_host {
691#define DBG_CMD(CMD) do { if (ibmvfc_debug) CMD; } while (0) 691#define DBG_CMD(CMD) do { if (ibmvfc_debug) CMD; } while (0)
692 692
693#define tgt_dbg(t, fmt, ...) \ 693#define tgt_dbg(t, fmt, ...) \
694 DBG_CMD(dev_info((t)->vhost->dev, "%lX: " fmt, (t)->scsi_id, ##__VA_ARGS__)) 694 DBG_CMD(dev_info((t)->vhost->dev, "%llX: " fmt, (t)->scsi_id, ##__VA_ARGS__))
695 695
696#define tgt_info(t, fmt, ...) \ 696#define tgt_info(t, fmt, ...) \
697 dev_info((t)->vhost->dev, "%lX: " fmt, (t)->scsi_id, ##__VA_ARGS__) 697 dev_info((t)->vhost->dev, "%llX: " fmt, (t)->scsi_id, ##__VA_ARGS__)
698 698
699#define tgt_err(t, fmt, ...) \ 699#define tgt_err(t, fmt, ...) \
700 dev_err((t)->vhost->dev, "%lX: " fmt, (t)->scsi_id, ##__VA_ARGS__) 700 dev_err((t)->vhost->dev, "%llX: " fmt, (t)->scsi_id, ##__VA_ARGS__)
701 701
702#define ibmvfc_dbg(vhost, ...) \ 702#define ibmvfc_dbg(vhost, ...) \
703 DBG_CMD(dev_info((vhost)->dev, ##__VA_ARGS__)) 703 DBG_CMD(dev_info((vhost)->dev, ##__VA_ARGS__))
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
index 5c541f7850f9..74d07d137dae 100644
--- a/drivers/scsi/ibmvscsi/ibmvscsi.c
+++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
@@ -1061,7 +1061,7 @@ static int ibmvscsi_eh_abort_handler(struct scsi_cmnd *cmd)
1061 } 1061 }
1062 1062
1063 sdev_printk(KERN_INFO, cmd->device, 1063 sdev_printk(KERN_INFO, cmd->device,
1064 "aborting command. lun 0x%lx, tag 0x%lx\n", 1064 "aborting command. lun 0x%llx, tag 0x%llx\n",
1065 (((u64) lun) << 48), (u64) found_evt); 1065 (((u64) lun) << 48), (u64) found_evt);
1066 1066
1067 wait_for_completion(&evt->comp); 1067 wait_for_completion(&evt->comp);
@@ -1082,7 +1082,7 @@ static int ibmvscsi_eh_abort_handler(struct scsi_cmnd *cmd)
1082 if (rsp_rc) { 1082 if (rsp_rc) {
1083 if (printk_ratelimit()) 1083 if (printk_ratelimit())
1084 sdev_printk(KERN_WARNING, cmd->device, 1084 sdev_printk(KERN_WARNING, cmd->device,
1085 "abort code %d for task tag 0x%lx\n", 1085 "abort code %d for task tag 0x%llx\n",
1086 rsp_rc, tsk_mgmt->task_tag); 1086 rsp_rc, tsk_mgmt->task_tag);
1087 return FAILED; 1087 return FAILED;
1088 } 1088 }
@@ -1102,12 +1102,12 @@ static int ibmvscsi_eh_abort_handler(struct scsi_cmnd *cmd)
1102 1102
1103 if (found_evt == NULL) { 1103 if (found_evt == NULL) {
1104 spin_unlock_irqrestore(hostdata->host->host_lock, flags); 1104 spin_unlock_irqrestore(hostdata->host->host_lock, flags);
1105 sdev_printk(KERN_INFO, cmd->device, "aborted task tag 0x%lx completed\n", 1105 sdev_printk(KERN_INFO, cmd->device, "aborted task tag 0x%llx completed\n",
1106 tsk_mgmt->task_tag); 1106 tsk_mgmt->task_tag);
1107 return SUCCESS; 1107 return SUCCESS;
1108 } 1108 }
1109 1109
1110 sdev_printk(KERN_INFO, cmd->device, "successfully aborted task tag 0x%lx\n", 1110 sdev_printk(KERN_INFO, cmd->device, "successfully aborted task tag 0x%llx\n",
1111 tsk_mgmt->task_tag); 1111 tsk_mgmt->task_tag);
1112 1112
1113 cmd->result = (DID_ABORT << 16); 1113 cmd->result = (DID_ABORT << 16);
@@ -1182,7 +1182,7 @@ static int ibmvscsi_eh_device_reset_handler(struct scsi_cmnd *cmd)
1182 return FAILED; 1182 return FAILED;
1183 } 1183 }
1184 1184
1185 sdev_printk(KERN_INFO, cmd->device, "resetting device. lun 0x%lx\n", 1185 sdev_printk(KERN_INFO, cmd->device, "resetting device. lun 0x%llx\n",
1186 (((u64) lun) << 48)); 1186 (((u64) lun) << 48));
1187 1187
1188 wait_for_completion(&evt->comp); 1188 wait_for_completion(&evt->comp);
@@ -1203,7 +1203,7 @@ static int ibmvscsi_eh_device_reset_handler(struct scsi_cmnd *cmd)
1203 if (rsp_rc) { 1203 if (rsp_rc) {
1204 if (printk_ratelimit()) 1204 if (printk_ratelimit())
1205 sdev_printk(KERN_WARNING, cmd->device, 1205 sdev_printk(KERN_WARNING, cmd->device,
1206 "reset code %d for task tag 0x%lx\n", 1206 "reset code %d for task tag 0x%llx\n",
1207 rsp_rc, tsk_mgmt->task_tag); 1207 rsp_rc, tsk_mgmt->task_tag);
1208 return FAILED; 1208 return FAILED;
1209 } 1209 }
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 841f460edbc4..07829009a8be 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -4912,7 +4912,7 @@ static int ipr_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
4912 if (res && ipr_is_gata(res)) { 4912 if (res && ipr_is_gata(res)) {
4913 if (cmd == HDIO_GET_IDENTITY) 4913 if (cmd == HDIO_GET_IDENTITY)
4914 return -ENOTTY; 4914 return -ENOTTY;
4915 return ata_scsi_ioctl(sdev, cmd, arg); 4915 return ata_sas_scsi_ioctl(res->sata_port->ap, sdev, cmd, arg);
4916 } 4916 }
4917 4917
4918 return -EINVAL; 4918 return -EINVAL;
diff --git a/drivers/scsi/libiscsi_tcp.c b/drivers/scsi/libiscsi_tcp.c
index a745f91d2928..e7705d3532c9 100644
--- a/drivers/scsi/libiscsi_tcp.c
+++ b/drivers/scsi/libiscsi_tcp.c
@@ -177,7 +177,6 @@ int iscsi_tcp_segment_done(struct iscsi_tcp_conn *tcp_conn,
177 struct iscsi_segment *segment, int recv, 177 struct iscsi_segment *segment, int recv,
178 unsigned copied) 178 unsigned copied)
179{ 179{
180 static unsigned char padbuf[ISCSI_PAD_LEN];
181 struct scatterlist sg; 180 struct scatterlist sg;
182 unsigned int pad; 181 unsigned int pad;
183 182
@@ -233,7 +232,7 @@ int iscsi_tcp_segment_done(struct iscsi_tcp_conn *tcp_conn,
233 debug_tcp("consume %d pad bytes\n", pad); 232 debug_tcp("consume %d pad bytes\n", pad);
234 segment->total_size += pad; 233 segment->total_size += pad;
235 segment->size = pad; 234 segment->size = pad;
236 segment->data = padbuf; 235 segment->data = segment->padbuf;
237 return 0; 236 return 0;
238 } 237 }
239 } 238 }
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
index 744838780ada..1c558d3bce18 100644
--- a/drivers/scsi/libsas/sas_scsi_host.c
+++ b/drivers/scsi/libsas/sas_scsi_host.c
@@ -717,7 +717,7 @@ int sas_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
717 struct domain_device *dev = sdev_to_domain_dev(sdev); 717 struct domain_device *dev = sdev_to_domain_dev(sdev);
718 718
719 if (dev_is_sata(dev)) 719 if (dev_is_sata(dev))
720 return ata_scsi_ioctl(sdev, cmd, arg); 720 return ata_sas_scsi_ioctl(dev->sata_dev.ap, sdev, cmd, arg);
721 721
722 return -EINVAL; 722 return -EINVAL;
723} 723}
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c
index ce48e2d0193c..ca0dd33497ec 100644
--- a/drivers/scsi/ps3rom.c
+++ b/drivers/scsi/ps3rom.c
@@ -290,11 +290,11 @@ static irqreturn_t ps3rom_interrupt(int irq, void *data)
290 290
291 if (tag != dev->tag) 291 if (tag != dev->tag)
292 dev_err(&dev->sbd.core, 292 dev_err(&dev->sbd.core,
293 "%s:%u: tag mismatch, got %lx, expected %lx\n", 293 "%s:%u: tag mismatch, got %llx, expected %llx\n",
294 __func__, __LINE__, tag, dev->tag); 294 __func__, __LINE__, tag, dev->tag);
295 295
296 if (res) { 296 if (res) {
297 dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%lx\n", 297 dev_err(&dev->sbd.core, "%s:%u: res=%d status=0x%llx\n",
298 __func__, __LINE__, res, status); 298 __func__, __LINE__, res, status);
299 return IRQ_HANDLED; 299 return IRQ_HANDLED;
300 } 300 }
@@ -364,7 +364,7 @@ static int __devinit ps3rom_probe(struct ps3_system_bus_device *_dev)
364 364
365 if (dev->blk_size != CD_FRAMESIZE) { 365 if (dev->blk_size != CD_FRAMESIZE) {
366 dev_err(&dev->sbd.core, 366 dev_err(&dev->sbd.core,
367 "%s:%u: cannot handle block size %lu\n", __func__, 367 "%s:%u: cannot handle block size %llu\n", __func__,
368 __LINE__, dev->blk_size); 368 __LINE__, dev->blk_size);
369 return -EINVAL; 369 return -EINVAL;
370 } 370 }
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 2d4f32b4df5c..9ad4d0968e5c 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1258,35 +1258,48 @@ qla2x00_init_rings(scsi_qla_host_t *vha)
1258{ 1258{
1259 int rval; 1259 int rval;
1260 unsigned long flags = 0; 1260 unsigned long flags = 0;
1261 int cnt; 1261 int cnt, que;
1262 struct qla_hw_data *ha = vha->hw; 1262 struct qla_hw_data *ha = vha->hw;
1263 struct req_que *req = ha->req_q_map[0]; 1263 struct req_que *req;
1264 struct rsp_que *rsp = ha->rsp_q_map[0]; 1264 struct rsp_que *rsp;
1265 struct scsi_qla_host *vp;
1265 struct mid_init_cb_24xx *mid_init_cb = 1266 struct mid_init_cb_24xx *mid_init_cb =
1266 (struct mid_init_cb_24xx *) ha->init_cb; 1267 (struct mid_init_cb_24xx *) ha->init_cb;
1267 1268
1268 spin_lock_irqsave(&ha->hardware_lock, flags); 1269 spin_lock_irqsave(&ha->hardware_lock, flags);
1269 1270
1270 /* Clear outstanding commands array. */ 1271 /* Clear outstanding commands array. */
1271 for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) 1272 for (que = 0; que < ha->max_queues; que++) {
1272 req->outstanding_cmds[cnt] = NULL; 1273 req = ha->req_q_map[que];
1274 if (!req)
1275 continue;
1276 for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS; cnt++)
1277 req->outstanding_cmds[cnt] = NULL;
1273 1278
1274 req->current_outstanding_cmd = 0; 1279 req->current_outstanding_cmd = 0;
1275 1280
1276 /* Clear RSCN queue. */ 1281 /* Initialize firmware. */
1277 vha->rscn_in_ptr = 0; 1282 req->ring_ptr = req->ring;
1278 vha->rscn_out_ptr = 0; 1283 req->ring_index = 0;
1284 req->cnt = req->length;
1285 }
1279 1286
1280 /* Initialize firmware. */ 1287 for (que = 0; que < ha->max_queues; que++) {
1281 req->ring_ptr = req->ring; 1288 rsp = ha->rsp_q_map[que];
1282 req->ring_index = 0; 1289 if (!rsp)
1283 req->cnt = req->length; 1290 continue;
1284 rsp->ring_ptr = rsp->ring; 1291 rsp->ring_ptr = rsp->ring;
1285 rsp->ring_index = 0; 1292 rsp->ring_index = 0;
1286 1293
1287 /* Initialize response queue entries */ 1294 /* Initialize response queue entries */
1288 qla2x00_init_response_q_entries(rsp); 1295 qla2x00_init_response_q_entries(rsp);
1296 }
1289 1297
1298 /* Clear RSCN queue. */
1299 list_for_each_entry(vp, &ha->vp_list, list) {
1300 vp->rscn_in_ptr = 0;
1301 vp->rscn_out_ptr = 0;
1302 }
1290 ha->isp_ops->config_rings(vha); 1303 ha->isp_ops->config_rings(vha);
1291 1304
1292 spin_unlock_irqrestore(&ha->hardware_lock, flags); 1305 spin_unlock_irqrestore(&ha->hardware_lock, flags);
@@ -3212,8 +3225,8 @@ qla2x00_loop_resync(scsi_qla_host_t *vha)
3212 int rval = QLA_SUCCESS; 3225 int rval = QLA_SUCCESS;
3213 uint32_t wait_time; 3226 uint32_t wait_time;
3214 struct qla_hw_data *ha = vha->hw; 3227 struct qla_hw_data *ha = vha->hw;
3215 struct req_que *req = ha->req_q_map[0]; 3228 struct req_que *req = ha->req_q_map[vha->req_ques[0]];
3216 struct rsp_que *rsp = ha->rsp_q_map[0]; 3229 struct rsp_que *rsp = req->rsp;
3217 3230
3218 atomic_set(&vha->loop_state, LOOP_UPDATE); 3231 atomic_set(&vha->loop_state, LOOP_UPDATE);
3219 clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); 3232 clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags);
@@ -3492,6 +3505,7 @@ qla25xx_init_queues(struct qla_hw_data *ha)
3492 } 3505 }
3493 req = ha->req_q_map[i]; 3506 req = ha->req_q_map[i];
3494 if (req) { 3507 if (req) {
3508 /* Clear outstanding commands array. */
3495 req->options &= ~BIT_0; 3509 req->options &= ~BIT_0;
3496 ret = qla25xx_init_req_que(base_vha, req, req->options); 3510 ret = qla25xx_init_req_que(base_vha, req, req->options);
3497 if (ret != QLA_SUCCESS) 3511 if (ret != QLA_SUCCESS)
@@ -3500,7 +3514,7 @@ qla25xx_init_queues(struct qla_hw_data *ha)
3500 req->id)); 3514 req->id));
3501 else 3515 else
3502 DEBUG2_17(printk(KERN_WARNING 3516 DEBUG2_17(printk(KERN_WARNING
3503 "%s Rsp que:%d inited\n", __func__, 3517 "%s Req que:%d inited\n", __func__,
3504 req->id)); 3518 req->id));
3505 } 3519 }
3506 } 3520 }
@@ -4151,8 +4165,8 @@ qla24xx_configure_vhba(scsi_qla_host_t *vha)
4151 uint16_t mb[MAILBOX_REGISTER_COUNT]; 4165 uint16_t mb[MAILBOX_REGISTER_COUNT];
4152 struct qla_hw_data *ha = vha->hw; 4166 struct qla_hw_data *ha = vha->hw;
4153 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); 4167 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
4154 struct req_que *req = ha->req_q_map[0]; 4168 struct req_que *req = ha->req_q_map[vha->req_ques[0]];
4155 struct rsp_que *rsp = ha->rsp_q_map[0]; 4169 struct rsp_que *rsp = req->rsp;
4156 4170
4157 if (!vha->vp_idx) 4171 if (!vha->vp_idx)
4158 return -EINVAL; 4172 return -EINVAL;
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c
index 886323130fcc..f53179c46423 100644
--- a/drivers/scsi/qla2xxx/qla_mid.c
+++ b/drivers/scsi/qla2xxx/qla_mid.c
@@ -629,6 +629,7 @@ qla25xx_create_req_que(struct qla_hw_data *ha, uint16_t options,
629 req->ring_index = 0; 629 req->ring_index = 0;
630 req->cnt = req->length; 630 req->cnt = req->length;
631 req->id = que_id; 631 req->id = que_id;
632 req->max_q_depth = ha->req_q_map[0]->max_q_depth;
632 mutex_unlock(&ha->vport_lock); 633 mutex_unlock(&ha->vport_lock);
633 634
634 ret = qla25xx_init_req_que(base_vha, req, options); 635 ret = qla25xx_init_req_que(base_vha, req, options);
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 4a71f522f925..cf32653fe01a 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -1158,8 +1158,8 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res)
1158 struct req_que *req; 1158 struct req_que *req;
1159 1159
1160 spin_lock_irqsave(&ha->hardware_lock, flags); 1160 spin_lock_irqsave(&ha->hardware_lock, flags);
1161 for (que = 0; que < QLA_MAX_HOST_QUES; que++) { 1161 for (que = 0; que < ha->max_queues; que++) {
1162 req = ha->req_q_map[vha->req_ques[que]]; 1162 req = ha->req_q_map[que];
1163 if (!req) 1163 if (!req)
1164 continue; 1164 continue;
1165 for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) { 1165 for (cnt = 1; cnt < MAX_OUTSTANDING_COMMANDS; cnt++) {
@@ -1193,7 +1193,7 @@ qla2xxx_slave_configure(struct scsi_device *sdev)
1193 scsi_qla_host_t *vha = shost_priv(sdev->host); 1193 scsi_qla_host_t *vha = shost_priv(sdev->host);
1194 struct qla_hw_data *ha = vha->hw; 1194 struct qla_hw_data *ha = vha->hw;
1195 struct fc_rport *rport = starget_to_rport(sdev->sdev_target); 1195 struct fc_rport *rport = starget_to_rport(sdev->sdev_target);
1196 struct req_que *req = ha->req_q_map[0]; 1196 struct req_que *req = ha->req_q_map[vha->req_ques[0]];
1197 1197
1198 if (sdev->tagged_supported) 1198 if (sdev->tagged_supported)
1199 scsi_activate_tcq(sdev, req->max_q_depth); 1199 scsi_activate_tcq(sdev, req->max_q_depth);
@@ -1998,7 +1998,6 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
1998 return 0; 1998 return 0;
1999 1999
2000probe_failed: 2000probe_failed:
2001 qla2x00_free_que(ha, req, rsp);
2002 qla2x00_free_device(base_vha); 2001 qla2x00_free_device(base_vha);
2003 2002
2004 scsi_host_put(base_vha->host); 2003 scsi_host_put(base_vha->host);
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 42e72a2c1f98..cbcd3f681b62 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -1095,7 +1095,8 @@ EXPORT_SYMBOL(__starget_for_each_device);
1095 * Description: Looks up the scsi_device with the specified @lun for a given 1095 * Description: Looks up the scsi_device with the specified @lun for a given
1096 * @starget. The returned scsi_device does not have an additional 1096 * @starget. The returned scsi_device does not have an additional
1097 * reference. You must hold the host's host_lock over this call and 1097 * reference. You must hold the host's host_lock over this call and
1098 * any access to the returned scsi_device. 1098 * any access to the returned scsi_device. A scsi_device in state
1099 * SDEV_DEL is skipped.
1099 * 1100 *
1100 * Note: The only reason why drivers should use this is because 1101 * Note: The only reason why drivers should use this is because
1101 * they need to access the device list in irq context. Otherwise you 1102 * they need to access the device list in irq context. Otherwise you
@@ -1107,6 +1108,8 @@ struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget,
1107 struct scsi_device *sdev; 1108 struct scsi_device *sdev;
1108 1109
1109 list_for_each_entry(sdev, &starget->devices, same_target_siblings) { 1110 list_for_each_entry(sdev, &starget->devices, same_target_siblings) {
1111 if (sdev->sdev_state == SDEV_DEL)
1112 continue;
1110 if (sdev->lun ==lun) 1113 if (sdev->lun ==lun)
1111 return sdev; 1114 return sdev;
1112 } 1115 }
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index 4969e4ec75ea..099b5455bbce 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -224,6 +224,7 @@ static struct {
224 {"SGI", "TP9100", "*", BLIST_REPORTLUN2}, 224 {"SGI", "TP9100", "*", BLIST_REPORTLUN2},
225 {"SGI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, 225 {"SGI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
226 {"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, 226 {"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
227 {"SUN", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
227 {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36}, 228 {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36},
228 {"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN}, 229 {"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN},
229 {"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */ 230 {"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index c088146b7513..2a3671233b15 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -602,6 +602,10 @@ static int pci_netmos_init(struct pci_dev *dev)
602 /* subdevice 0x00PS means <P> parallel, <S> serial */ 602 /* subdevice 0x00PS means <P> parallel, <S> serial */
603 unsigned int num_serial = dev->subsystem_device & 0xf; 603 unsigned int num_serial = dev->subsystem_device & 0xf;
604 604
605 if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM &&
606 dev->subsystem_device == 0x0299)
607 return 0;
608
605 if (num_serial == 0) 609 if (num_serial == 0)
606 return -ENODEV; 610 return -ENODEV;
607 return num_serial; 611 return num_serial;
@@ -3096,6 +3100,10 @@ static struct pci_device_id serial_pci_tbl[] = {
3096 0, 3100 0,
3097 pbn_b0_8_115200 }, 3101 pbn_b0_8_115200 },
3098 3102
3103 { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835,
3104 PCI_VENDOR_ID_IBM, 0x0299,
3105 0, 0, pbn_b0_bt_2_115200 },
3106
3099 /* 3107 /*
3100 * These entries match devices with class COMMUNICATION_SERIAL, 3108 * These entries match devices with class COMMUNICATION_SERIAL,
3101 * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL 3109 * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c
index fde7f9ccf57e..bbcfc26a3b6d 100644
--- a/drivers/serial/8250_pnp.c
+++ b/drivers/serial/8250_pnp.c
@@ -270,6 +270,8 @@ static const struct pnp_device_id pnp_dev_table[] = {
270 { "RSS0250", 0 }, 270 { "RSS0250", 0 },
271 /* SupraExpress 28.8 Data/Fax PnP modem */ 271 /* SupraExpress 28.8 Data/Fax PnP modem */
272 { "SUP1310", 0 }, 272 { "SUP1310", 0 },
273 /* SupraExpress 336i PnP Voice Modem */
274 { "SUP1381", 0 },
273 /* SupraExpress 33.6 Data/Fax PnP modem */ 275 /* SupraExpress 33.6 Data/Fax PnP modem */
274 { "SUP1421", 0 }, 276 { "SUP1421", 0 },
275 /* SupraExpress 33.6 Data/Fax PnP modem */ 277 /* SupraExpress 33.6 Data/Fax PnP modem */
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c
index d5efd6c77904..89362d733d62 100644
--- a/drivers/serial/atmel_serial.c
+++ b/drivers/serial/atmel_serial.c
@@ -579,7 +579,7 @@ static void atmel_tx_dma(struct uart_port *port)
579 /* disable PDC transmit */ 579 /* disable PDC transmit */
580 UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); 580 UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS);
581 581
582 if (!uart_circ_empty(xmit)) { 582 if (!uart_circ_empty(xmit) && !uart_tx_stopped(port)) {
583 dma_sync_single_for_device(port->dev, 583 dma_sync_single_for_device(port->dev,
584 pdc->dma_addr, 584 pdc->dma_addr,
585 pdc->dma_size, 585 pdc->dma_size,
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
index a821e3a3d664..14f8fa9135be 100644
--- a/drivers/serial/of_serial.c
+++ b/drivers/serial/of_serial.c
@@ -163,6 +163,7 @@ static struct of_device_id __devinitdata of_platform_serial_table[] = {
163 { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, }, 163 { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, },
164 { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, }, 164 { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, },
165 { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, }, 165 { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, },
166 { .type = "serial", .compatible = "ns16850", .data = (void *)PORT_16850, },
166#ifdef CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL 167#ifdef CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL
167 { .type = "serial", .compatible = "ibm,qpace-nwp-serial", 168 { .type = "serial", .compatible = "ibm,qpace-nwp-serial",
168 .data = (void *)PORT_NWPSERIAL, }, 169 .data = (void *)PORT_NWPSERIAL, },
diff --git a/drivers/serial/pnx8xxx_uart.c b/drivers/serial/pnx8xxx_uart.c
index 22e30d21225e..1bb8f1b45767 100644
--- a/drivers/serial/pnx8xxx_uart.c
+++ b/drivers/serial/pnx8xxx_uart.c
@@ -187,7 +187,7 @@ static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport)
187 status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) | 187 status = FIFO_TO_SM(serial_in(sport, PNX8XXX_FIFO)) |
188 ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT)); 188 ISTAT_TO_SM(serial_in(sport, PNX8XXX_ISTAT));
189 while (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFIFO)) { 189 while (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFIFO)) {
190 ch = serial_in(sport, PNX8XXX_FIFO); 190 ch = serial_in(sport, PNX8XXX_FIFO) & 0xff;
191 191
192 sport->port.icount.rx++; 192 sport->port.icount.rx++;
193 193
@@ -198,9 +198,16 @@ static void pnx8xxx_rx_chars(struct pnx8xxx_port *sport)
198 * out of the main execution path 198 * out of the main execution path
199 */ 199 */
200 if (status & (FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE | 200 if (status & (FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE |
201 PNX8XXX_UART_FIFO_RXPAR) | 201 PNX8XXX_UART_FIFO_RXPAR |
202 PNX8XXX_UART_FIFO_RXBRK) |
202 ISTAT_TO_SM(PNX8XXX_UART_INT_RXOVRN))) { 203 ISTAT_TO_SM(PNX8XXX_UART_INT_RXOVRN))) {
203 if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXPAR)) 204 if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXBRK)) {
205 status &= ~(FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE) |
206 FIFO_TO_SM(PNX8XXX_UART_FIFO_RXPAR));
207 sport->port.icount.brk++;
208 if (uart_handle_break(&sport->port))
209 goto ignore_char;
210 } else if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXPAR))
204 sport->port.icount.parity++; 211 sport->port.icount.parity++;
205 else if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE)) 212 else if (status & FIFO_TO_SM(PNX8XXX_UART_FIFO_RXFE))
206 sport->port.icount.frame++; 213 sport->port.icount.frame++;
@@ -284,14 +291,8 @@ static irqreturn_t pnx8xxx_int(int irq, void *dev_id)
284 /* Get the interrupts */ 291 /* Get the interrupts */
285 status = serial_in(sport, PNX8XXX_ISTAT) & serial_in(sport, PNX8XXX_IEN); 292 status = serial_in(sport, PNX8XXX_ISTAT) & serial_in(sport, PNX8XXX_IEN);
286 293
287 /* Break signal received */ 294 /* Byte or break signal received */
288 if (status & PNX8XXX_UART_INT_BREAK) { 295 if (status & (PNX8XXX_UART_INT_RX | PNX8XXX_UART_INT_BREAK))
289 sport->port.icount.brk++;
290 uart_handle_break(&sport->port);
291 }
292
293 /* Byte received */
294 if (status & PNX8XXX_UART_INT_RX)
295 pnx8xxx_rx_chars(sport); 296 pnx8xxx_rx_chars(sport);
296 297
297 /* TX holding register empty - transmit a byte */ 298 /* TX holding register empty - transmit a byte */
diff --git a/drivers/serial/sh-sci.h b/drivers/serial/sh-sci.h
index 38c600c0dbbf..3599828b9766 100644
--- a/drivers/serial/sh-sci.h
+++ b/drivers/serial/sh-sci.h
@@ -32,7 +32,9 @@
32#elif defined(CONFIG_CPU_SUBTYPE_SH7720) || \ 32#elif defined(CONFIG_CPU_SUBTYPE_SH7720) || \
33 defined(CONFIG_CPU_SUBTYPE_SH7721) 33 defined(CONFIG_CPU_SUBTYPE_SH7721)
34# define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */ 34# define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */
35#define SCIF_ORER 0x0200 /* overrun error bit */ 35# define PORT_PTCR 0xA405011EUL
36# define PORT_PVCR 0xA4050122UL
37# define SCIF_ORER 0x0200 /* overrun error bit */
36#elif defined(CONFIG_SH_RTS7751R2D) 38#elif defined(CONFIG_SH_RTS7751R2D)
37# define SCSPTR1 0xFFE0001C /* 8 bit SCIF */ 39# define SCSPTR1 0xFFE0001C /* 8 bit SCIF */
38# define SCSPTR2 0xFFE80020 /* 16 bit SCIF */ 40# define SCSPTR2 0xFFE80020 /* 16 bit SCIF */
@@ -393,6 +395,7 @@ SCIx_FNS(SCSCR, 0x08, 16, 0x08, 16)
393SCIx_FNS(SCxTDR, 0x20, 8, 0x0c, 8) 395SCIx_FNS(SCxTDR, 0x20, 8, 0x0c, 8)
394SCIx_FNS(SCxSR, 0x14, 16, 0x10, 16) 396SCIx_FNS(SCxSR, 0x14, 16, 0x10, 16)
395SCIx_FNS(SCxRDR, 0x24, 8, 0x14, 8) 397SCIx_FNS(SCxRDR, 0x24, 8, 0x14, 8)
398SCIx_FNS(SCSPTR, 0, 0, 0, 0)
396SCIF_FNS(SCTDSR, 0x0c, 8) 399SCIF_FNS(SCTDSR, 0x0c, 8)
397SCIF_FNS(SCFER, 0x10, 16) 400SCIF_FNS(SCFER, 0x10, 16)
398SCIF_FNS(SCFCR, 0x18, 16) 401SCIF_FNS(SCFCR, 0x18, 16)
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index 5e39bac9c51b..56ff3e6864ea 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -670,8 +670,7 @@ static int atmel_spi_transfer(struct spi_device *spi, struct spi_message *msg)
670 dev_dbg(controller, "new message %p submitted for %s\n", 670 dev_dbg(controller, "new message %p submitted for %s\n",
671 msg, spi->dev.bus_id); 671 msg, spi->dev.bus_id);
672 672
673 if (unlikely(list_empty(&msg->transfers) 673 if (unlikely(list_empty(&msg->transfers)))
674 || !spi->max_speed_hz))
675 return -EINVAL; 674 return -EINVAL;
676 675
677 if (as->stopping) 676 if (as->stopping)
diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c
index 68d6f4988fb5..fe7e5f35e5d0 100644
--- a/drivers/spi/xilinx_spi.c
+++ b/drivers/spi/xilinx_spi.c
@@ -15,12 +15,15 @@
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/interrupt.h> 16#include <linux/interrupt.h>
17#include <linux/platform_device.h> 17#include <linux/platform_device.h>
18
19#include <linux/of_platform.h>
20#include <linux/of_device.h>
21#include <linux/of_spi.h>
22
18#include <linux/spi/spi.h> 23#include <linux/spi/spi.h>
19#include <linux/spi/spi_bitbang.h> 24#include <linux/spi/spi_bitbang.h>
20#include <linux/io.h> 25#include <linux/io.h>
21 26
22#include <syslib/virtex_devices.h>
23
24#define XILINX_SPI_NAME "xilinx_spi" 27#define XILINX_SPI_NAME "xilinx_spi"
25 28
26/* Register definitions as per "OPB Serial Peripheral Interface (SPI) (v1.00e) 29/* Register definitions as per "OPB Serial Peripheral Interface (SPI) (v1.00e)
@@ -144,23 +147,14 @@ static int xilinx_spi_setup_transfer(struct spi_device *spi,
144 struct spi_transfer *t) 147 struct spi_transfer *t)
145{ 148{
146 u8 bits_per_word; 149 u8 bits_per_word;
147 u32 hz;
148 struct xilinx_spi *xspi = spi_master_get_devdata(spi->master);
149 150
150 bits_per_word = (t) ? t->bits_per_word : spi->bits_per_word; 151 bits_per_word = (t) ? t->bits_per_word : spi->bits_per_word;
151 hz = (t) ? t->speed_hz : spi->max_speed_hz;
152 if (bits_per_word != 8) { 152 if (bits_per_word != 8) {
153 dev_err(&spi->dev, "%s, unsupported bits_per_word=%d\n", 153 dev_err(&spi->dev, "%s, unsupported bits_per_word=%d\n",
154 __func__, bits_per_word); 154 __func__, bits_per_word);
155 return -EINVAL; 155 return -EINVAL;
156 } 156 }
157 157
158 if (hz && xspi->speed_hz > hz) {
159 dev_err(&spi->dev, "%s, unsupported clock rate %uHz\n",
160 __func__, hz);
161 return -EINVAL;
162 }
163
164 return 0; 158 return 0;
165} 159}
166 160
@@ -304,32 +298,38 @@ static irqreturn_t xilinx_spi_irq(int irq, void *dev_id)
304 return IRQ_HANDLED; 298 return IRQ_HANDLED;
305} 299}
306 300
307static int __init xilinx_spi_probe(struct platform_device *dev) 301static int __init xilinx_spi_of_probe(struct of_device *ofdev,
302 const struct of_device_id *match)
308{ 303{
309 int ret = 0;
310 struct spi_master *master; 304 struct spi_master *master;
311 struct xilinx_spi *xspi; 305 struct xilinx_spi *xspi;
312 struct xspi_platform_data *pdata; 306 struct resource r_irq_struct;
313 struct resource *r; 307 struct resource r_mem_struct;
308
309 struct resource *r_irq = &r_irq_struct;
310 struct resource *r_mem = &r_mem_struct;
311 int rc = 0;
312 const u32 *prop;
313 int len;
314 314
315 /* Get resources(memory, IRQ) associated with the device */ 315 /* Get resources(memory, IRQ) associated with the device */
316 master = spi_alloc_master(&dev->dev, sizeof(struct xilinx_spi)); 316 master = spi_alloc_master(&ofdev->dev, sizeof(struct xilinx_spi));
317 317
318 if (master == NULL) { 318 if (master == NULL) {
319 return -ENOMEM; 319 return -ENOMEM;
320 } 320 }
321 321
322 platform_set_drvdata(dev, master); 322 dev_set_drvdata(&ofdev->dev, master);
323 pdata = dev->dev.platform_data;
324 323
325 if (pdata == NULL) { 324 rc = of_address_to_resource(ofdev->node, 0, r_mem);
326 ret = -ENODEV; 325 if (rc) {
326 dev_warn(&ofdev->dev, "invalid address\n");
327 goto put_master; 327 goto put_master;
328 } 328 }
329 329
330 r = platform_get_resource(dev, IORESOURCE_MEM, 0); 330 rc = of_irq_to_resource(ofdev->node, 0, r_irq);
331 if (r == NULL) { 331 if (rc == NO_IRQ) {
332 ret = -ENODEV; 332 dev_warn(&ofdev->dev, "no IRQ found\n");
333 goto put_master; 333 goto put_master;
334 } 334 }
335 335
@@ -341,47 +341,57 @@ static int __init xilinx_spi_probe(struct platform_device *dev)
341 xspi->bitbang.master->setup = xilinx_spi_setup; 341 xspi->bitbang.master->setup = xilinx_spi_setup;
342 init_completion(&xspi->done); 342 init_completion(&xspi->done);
343 343
344 if (!request_mem_region(r->start, 344 xspi->irq = r_irq->start;
345 r->end - r->start + 1, XILINX_SPI_NAME)) { 345
346 ret = -ENXIO; 346 if (!request_mem_region(r_mem->start,
347 r_mem->end - r_mem->start + 1, XILINX_SPI_NAME)) {
348 rc = -ENXIO;
349 dev_warn(&ofdev->dev, "memory request failure\n");
347 goto put_master; 350 goto put_master;
348 } 351 }
349 352
350 xspi->regs = ioremap(r->start, r->end - r->start + 1); 353 xspi->regs = ioremap(r_mem->start, r_mem->end - r_mem->start + 1);
351 if (xspi->regs == NULL) { 354 if (xspi->regs == NULL) {
352 ret = -ENOMEM; 355 rc = -ENOMEM;
356 dev_warn(&ofdev->dev, "ioremap failure\n");
353 goto put_master; 357 goto put_master;
354 } 358 }
359 xspi->irq = r_irq->start;
355 360
356 ret = platform_get_irq(dev, 0); 361 /* dynamic bus assignment */
357 if (ret < 0) { 362 master->bus_num = -1;
358 ret = -ENXIO;
359 goto unmap_io;
360 }
361 xspi->irq = ret;
362 363
363 master->bus_num = pdata->bus_num; 364 /* number of slave select bits is required */
364 master->num_chipselect = pdata->num_chipselect; 365 prop = of_get_property(ofdev->node, "xlnx,num-ss-bits", &len);
365 xspi->speed_hz = pdata->speed_hz; 366 if (!prop || len < sizeof(*prop)) {
367 dev_warn(&ofdev->dev, "no 'xlnx,num-ss-bits' property\n");
368 goto put_master;
369 }
370 master->num_chipselect = *prop;
366 371
367 /* SPI controller initializations */ 372 /* SPI controller initializations */
368 xspi_init_hw(xspi->regs); 373 xspi_init_hw(xspi->regs);
369 374
370 /* Register for SPI Interrupt */ 375 /* Register for SPI Interrupt */
371 ret = request_irq(xspi->irq, xilinx_spi_irq, 0, XILINX_SPI_NAME, xspi); 376 rc = request_irq(xspi->irq, xilinx_spi_irq, 0, XILINX_SPI_NAME, xspi);
372 if (ret != 0) 377 if (rc != 0) {
378 dev_warn(&ofdev->dev, "irq request failure: %d\n", xspi->irq);
373 goto unmap_io; 379 goto unmap_io;
380 }
374 381
375 ret = spi_bitbang_start(&xspi->bitbang); 382 rc = spi_bitbang_start(&xspi->bitbang);
376 if (ret != 0) { 383 if (rc != 0) {
377 dev_err(&dev->dev, "spi_bitbang_start FAILED\n"); 384 dev_err(&ofdev->dev, "spi_bitbang_start FAILED\n");
378 goto free_irq; 385 goto free_irq;
379 } 386 }
380 387
381 dev_info(&dev->dev, "at 0x%08X mapped to 0x%08X, irq=%d\n", 388 dev_info(&ofdev->dev, "at 0x%08X mapped to 0x%08X, irq=%d\n",
382 r->start, (u32)xspi->regs, xspi->irq); 389 (unsigned int)r_mem->start, (u32)xspi->regs, xspi->irq);
383 390
384 return ret; 391 /* Add any subnodes on the SPI bus */
392 of_register_spi_devices(master, ofdev->node);
393
394 return rc;
385 395
386free_irq: 396free_irq:
387 free_irq(xspi->irq, xspi); 397 free_irq(xspi->irq, xspi);
@@ -389,21 +399,21 @@ unmap_io:
389 iounmap(xspi->regs); 399 iounmap(xspi->regs);
390put_master: 400put_master:
391 spi_master_put(master); 401 spi_master_put(master);
392 return ret; 402 return rc;
393} 403}
394 404
395static int __devexit xilinx_spi_remove(struct platform_device *dev) 405static int __devexit xilinx_spi_remove(struct of_device *ofdev)
396{ 406{
397 struct xilinx_spi *xspi; 407 struct xilinx_spi *xspi;
398 struct spi_master *master; 408 struct spi_master *master;
399 409
400 master = platform_get_drvdata(dev); 410 master = platform_get_drvdata(ofdev);
401 xspi = spi_master_get_devdata(master); 411 xspi = spi_master_get_devdata(master);
402 412
403 spi_bitbang_stop(&xspi->bitbang); 413 spi_bitbang_stop(&xspi->bitbang);
404 free_irq(xspi->irq, xspi); 414 free_irq(xspi->irq, xspi);
405 iounmap(xspi->regs); 415 iounmap(xspi->regs);
406 platform_set_drvdata(dev, 0); 416 dev_set_drvdata(&ofdev->dev, 0);
407 spi_master_put(xspi->bitbang.master); 417 spi_master_put(xspi->bitbang.master);
408 418
409 return 0; 419 return 0;
@@ -412,27 +422,42 @@ static int __devexit xilinx_spi_remove(struct platform_device *dev)
412/* work with hotplug and coldplug */ 422/* work with hotplug and coldplug */
413MODULE_ALIAS("platform:" XILINX_SPI_NAME); 423MODULE_ALIAS("platform:" XILINX_SPI_NAME);
414 424
415static struct platform_driver xilinx_spi_driver = { 425static int __exit xilinx_spi_of_remove(struct of_device *op)
416 .probe = xilinx_spi_probe, 426{
417 .remove = __devexit_p(xilinx_spi_remove), 427 return xilinx_spi_remove(op);
428}
429
430static struct of_device_id xilinx_spi_of_match[] = {
431 { .compatible = "xlnx,xps-spi-2.00.a", },
432 { .compatible = "xlnx,xps-spi-2.00.b", },
433 {}
434};
435
436MODULE_DEVICE_TABLE(of, xilinx_spi_of_match);
437
438static struct of_platform_driver xilinx_spi_of_driver = {
439 .owner = THIS_MODULE,
440 .name = "xilinx-xps-spi",
441 .match_table = xilinx_spi_of_match,
442 .probe = xilinx_spi_of_probe,
443 .remove = __exit_p(xilinx_spi_of_remove),
418 .driver = { 444 .driver = {
419 .name = XILINX_SPI_NAME, 445 .name = "xilinx-xps-spi",
420 .owner = THIS_MODULE, 446 .owner = THIS_MODULE,
421 }, 447 },
422}; 448};
423 449
424static int __init xilinx_spi_init(void) 450static int __init xilinx_spi_init(void)
425{ 451{
426 return platform_driver_register(&xilinx_spi_driver); 452 return of_register_platform_driver(&xilinx_spi_of_driver);
427} 453}
428module_init(xilinx_spi_init); 454module_init(xilinx_spi_init);
429 455
430static void __exit xilinx_spi_exit(void) 456static void __exit xilinx_spi_exit(void)
431{ 457{
432 platform_driver_unregister(&xilinx_spi_driver); 458 of_unregister_platform_driver(&xilinx_spi_of_driver);
433} 459}
434module_exit(xilinx_spi_exit); 460module_exit(xilinx_spi_exit);
435
436MODULE_AUTHOR("MontaVista Software, Inc. <source@mvista.com>"); 461MODULE_AUTHOR("MontaVista Software, Inc. <source@mvista.com>");
437MODULE_DESCRIPTION("Xilinx SPI driver"); 462MODULE_DESCRIPTION("Xilinx SPI driver");
438MODULE_LICENSE("GPL"); 463MODULE_LICENSE("GPL");
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index d5d0e40b1e2d..94d5ee263c20 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -1554,7 +1554,7 @@ static int usb_configure_device_otg(struct usb_device *udev)
1554 * (Includes HNP test device.) 1554 * (Includes HNP test device.)
1555 */ 1555 */
1556 if (udev->bus->b_hnp_enable || udev->bus->is_b_host) { 1556 if (udev->bus->b_hnp_enable || udev->bus->is_b_host) {
1557 err = usb_port_suspend(udev); 1557 err = usb_port_suspend(udev, PMSG_SUSPEND);
1558 if (err < 0) 1558 if (err < 0)
1559 dev_dbg(&udev->dev, "HNP fail, %d\n", err); 1559 dev_dbg(&udev->dev, "HNP fail, %d\n", err);
1560 } 1560 }
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index ef6cfa5a447f..c70a8f667d85 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -2030,7 +2030,7 @@ static void ftdi_process_read(struct work_struct *work)
2030 spin_unlock_irqrestore(&priv->rx_lock, flags); 2030 spin_unlock_irqrestore(&priv->rx_lock, flags);
2031 dbg("%s - deferring remainder until unthrottled", 2031 dbg("%s - deferring remainder until unthrottled",
2032 __func__); 2032 __func__);
2033 return; 2033 goto out;
2034 } 2034 }
2035 spin_unlock_irqrestore(&priv->rx_lock, flags); 2035 spin_unlock_irqrestore(&priv->rx_lock, flags);
2036 /* if the port is closed stop trying to read */ 2036 /* if the port is closed stop trying to read */
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 6372f8b17b45..c94f71980c1b 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -2123,6 +2123,18 @@ config FB_PRE_INIT_FB
2123 Select this option if display contents should be inherited as set by 2123 Select this option if display contents should be inherited as set by
2124 the bootloader. 2124 the bootloader.
2125 2125
2126config FB_MX3
2127 tristate "MX3 Framebuffer support"
2128 depends on FB && MX3_IPU
2129 select FB_CFB_FILLRECT
2130 select FB_CFB_COPYAREA
2131 select FB_CFB_IMAGEBLIT
2132 default y
2133 help
2134 This is a framebuffer device for the i.MX31 LCD Controller. So
2135 far only synchronous displays are supported. If you plan to use
2136 an LCD display with your i.MX31 system, say Y here.
2137
2126source "drivers/video/omap/Kconfig" 2138source "drivers/video/omap/Kconfig"
2127 2139
2128source "drivers/video/backlight/Kconfig" 2140source "drivers/video/backlight/Kconfig"
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index be2b657546ef..2a998ca6181d 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -132,6 +132,7 @@ obj-$(CONFIG_FB_VGA16) += vga16fb.o
132obj-$(CONFIG_FB_OF) += offb.o 132obj-$(CONFIG_FB_OF) += offb.o
133obj-$(CONFIG_FB_BF54X_LQ043) += bf54x-lq043fb.o 133obj-$(CONFIG_FB_BF54X_LQ043) += bf54x-lq043fb.o
134obj-$(CONFIG_FB_BFIN_T350MCQB) += bfin-t350mcqb-fb.o 134obj-$(CONFIG_FB_BFIN_T350MCQB) += bfin-t350mcqb-fb.o
135obj-$(CONFIG_FB_MX3) += mx3fb.o
135 136
136# the test framebuffer is last 137# the test framebuffer is last
137obj-$(CONFIG_FB_VIRTUAL) += vfb.o 138obj-$(CONFIG_FB_VIRTUAL) += vfb.o
diff --git a/drivers/video/bf54x-lq043fb.c b/drivers/video/bf54x-lq043fb.c
index 7644ed249564..37e60b1d2ed9 100644
--- a/drivers/video/bf54x-lq043fb.c
+++ b/drivers/video/bf54x-lq043fb.c
@@ -335,7 +335,20 @@ static int bfin_bf54x_fb_check_var(struct fb_var_screeninfo *var,
335 struct fb_info *info) 335 struct fb_info *info)
336{ 336{
337 337
338 if (var->bits_per_pixel != LCD_BPP) { 338 switch (var->bits_per_pixel) {
339 case 24:/* TRUECOLOUR, 16m */
340 var->red.offset = 16;
341 var->green.offset = 8;
342 var->blue.offset = 0;
343 var->red.length = var->green.length = var->blue.length = 8;
344 var->transp.offset = 0;
345 var->transp.length = 0;
346 var->transp.msb_right = 0;
347 var->red.msb_right = 0;
348 var->green.msb_right = 0;
349 var->blue.msb_right = 0;
350 break;
351 default:
339 pr_debug("%s: depth not supported: %u BPP\n", __func__, 352 pr_debug("%s: depth not supported: %u BPP\n", __func__,
340 var->bits_per_pixel); 353 var->bits_per_pixel);
341 return -EINVAL; 354 return -EINVAL;
diff --git a/drivers/video/bfin-t350mcqb-fb.c b/drivers/video/bfin-t350mcqb-fb.c
index a9b3ada05d99..2a423d3a2a8e 100644
--- a/drivers/video/bfin-t350mcqb-fb.c
+++ b/drivers/video/bfin-t350mcqb-fb.c
@@ -254,7 +254,20 @@ static int bfin_t350mcqb_fb_check_var(struct fb_var_screeninfo *var,
254 struct fb_info *info) 254 struct fb_info *info)
255{ 255{
256 256
257 if (var->bits_per_pixel != LCD_BPP) { 257 switch (var->bits_per_pixel) {
258 case 24:/* TRUECOLOUR, 16m */
259 var->red.offset = 0;
260 var->green.offset = 8;
261 var->blue.offset = 16;
262 var->red.length = var->green.length = var->blue.length = 8;
263 var->transp.offset = 0;
264 var->transp.length = 0;
265 var->transp.msb_right = 0;
266 var->red.msb_right = 0;
267 var->green.msb_right = 0;
268 var->blue.msb_right = 0;
269 break;
270 default:
258 pr_debug("%s: depth not supported: %u BPP\n", __func__, 271 pr_debug("%s: depth not supported: %u BPP\n", __func__,
259 var->bits_per_pixel); 272 var->bits_per_pixel);
260 return -EINVAL; 273 return -EINVAL;
diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
new file mode 100644
index 000000000000..8a75d05f4334
--- /dev/null
+++ b/drivers/video/mx3fb.c
@@ -0,0 +1,1555 @@
1/*
2 * Copyright (C) 2008
3 * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de>
4 *
5 * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#include <linux/module.h>
13#include <linux/kernel.h>
14#include <linux/platform_device.h>
15#include <linux/sched.h>
16#include <linux/errno.h>
17#include <linux/string.h>
18#include <linux/interrupt.h>
19#include <linux/slab.h>
20#include <linux/fb.h>
21#include <linux/delay.h>
22#include <linux/init.h>
23#include <linux/ioport.h>
24#include <linux/dma-mapping.h>
25#include <linux/dmaengine.h>
26#include <linux/console.h>
27#include <linux/clk.h>
28#include <linux/mutex.h>
29
30#include <mach/hardware.h>
31#include <mach/ipu.h>
32#include <mach/mx3fb.h>
33
34#include <asm/io.h>
35#include <asm/uaccess.h>
36
37#define MX3FB_NAME "mx3_sdc_fb"
38
39#define MX3FB_REG_OFFSET 0xB4
40
41/* SDC Registers */
42#define SDC_COM_CONF (0xB4 - MX3FB_REG_OFFSET)
43#define SDC_GW_CTRL (0xB8 - MX3FB_REG_OFFSET)
44#define SDC_FG_POS (0xBC - MX3FB_REG_OFFSET)
45#define SDC_BG_POS (0xC0 - MX3FB_REG_OFFSET)
46#define SDC_CUR_POS (0xC4 - MX3FB_REG_OFFSET)
47#define SDC_PWM_CTRL (0xC8 - MX3FB_REG_OFFSET)
48#define SDC_CUR_MAP (0xCC - MX3FB_REG_OFFSET)
49#define SDC_HOR_CONF (0xD0 - MX3FB_REG_OFFSET)
50#define SDC_VER_CONF (0xD4 - MX3FB_REG_OFFSET)
51#define SDC_SHARP_CONF_1 (0xD8 - MX3FB_REG_OFFSET)
52#define SDC_SHARP_CONF_2 (0xDC - MX3FB_REG_OFFSET)
53
54/* Register bits */
55#define SDC_COM_TFT_COLOR 0x00000001UL
56#define SDC_COM_FG_EN 0x00000010UL
57#define SDC_COM_GWSEL 0x00000020UL
58#define SDC_COM_GLB_A 0x00000040UL
59#define SDC_COM_KEY_COLOR_G 0x00000080UL
60#define SDC_COM_BG_EN 0x00000200UL
61#define SDC_COM_SHARP 0x00001000UL
62
63#define SDC_V_SYNC_WIDTH_L 0x00000001UL
64
65/* Display Interface registers */
66#define DI_DISP_IF_CONF (0x0124 - MX3FB_REG_OFFSET)
67#define DI_DISP_SIG_POL (0x0128 - MX3FB_REG_OFFSET)
68#define DI_SER_DISP1_CONF (0x012C - MX3FB_REG_OFFSET)
69#define DI_SER_DISP2_CONF (0x0130 - MX3FB_REG_OFFSET)
70#define DI_HSP_CLK_PER (0x0134 - MX3FB_REG_OFFSET)
71#define DI_DISP0_TIME_CONF_1 (0x0138 - MX3FB_REG_OFFSET)
72#define DI_DISP0_TIME_CONF_2 (0x013C - MX3FB_REG_OFFSET)
73#define DI_DISP0_TIME_CONF_3 (0x0140 - MX3FB_REG_OFFSET)
74#define DI_DISP1_TIME_CONF_1 (0x0144 - MX3FB_REG_OFFSET)
75#define DI_DISP1_TIME_CONF_2 (0x0148 - MX3FB_REG_OFFSET)
76#define DI_DISP1_TIME_CONF_3 (0x014C - MX3FB_REG_OFFSET)
77#define DI_DISP2_TIME_CONF_1 (0x0150 - MX3FB_REG_OFFSET)
78#define DI_DISP2_TIME_CONF_2 (0x0154 - MX3FB_REG_OFFSET)
79#define DI_DISP2_TIME_CONF_3 (0x0158 - MX3FB_REG_OFFSET)
80#define DI_DISP3_TIME_CONF (0x015C - MX3FB_REG_OFFSET)
81#define DI_DISP0_DB0_MAP (0x0160 - MX3FB_REG_OFFSET)
82#define DI_DISP0_DB1_MAP (0x0164 - MX3FB_REG_OFFSET)
83#define DI_DISP0_DB2_MAP (0x0168 - MX3FB_REG_OFFSET)
84#define DI_DISP0_CB0_MAP (0x016C - MX3FB_REG_OFFSET)
85#define DI_DISP0_CB1_MAP (0x0170 - MX3FB_REG_OFFSET)
86#define DI_DISP0_CB2_MAP (0x0174 - MX3FB_REG_OFFSET)
87#define DI_DISP1_DB0_MAP (0x0178 - MX3FB_REG_OFFSET)
88#define DI_DISP1_DB1_MAP (0x017C - MX3FB_REG_OFFSET)
89#define DI_DISP1_DB2_MAP (0x0180 - MX3FB_REG_OFFSET)
90#define DI_DISP1_CB0_MAP (0x0184 - MX3FB_REG_OFFSET)
91#define DI_DISP1_CB1_MAP (0x0188 - MX3FB_REG_OFFSET)
92#define DI_DISP1_CB2_MAP (0x018C - MX3FB_REG_OFFSET)
93#define DI_DISP2_DB0_MAP (0x0190 - MX3FB_REG_OFFSET)
94#define DI_DISP2_DB1_MAP (0x0194 - MX3FB_REG_OFFSET)
95#define DI_DISP2_DB2_MAP (0x0198 - MX3FB_REG_OFFSET)
96#define DI_DISP2_CB0_MAP (0x019C - MX3FB_REG_OFFSET)
97#define DI_DISP2_CB1_MAP (0x01A0 - MX3FB_REG_OFFSET)
98#define DI_DISP2_CB2_MAP (0x01A4 - MX3FB_REG_OFFSET)
99#define DI_DISP3_B0_MAP (0x01A8 - MX3FB_REG_OFFSET)
100#define DI_DISP3_B1_MAP (0x01AC - MX3FB_REG_OFFSET)
101#define DI_DISP3_B2_MAP (0x01B0 - MX3FB_REG_OFFSET)
102#define DI_DISP_ACC_CC (0x01B4 - MX3FB_REG_OFFSET)
103#define DI_DISP_LLA_CONF (0x01B8 - MX3FB_REG_OFFSET)
104#define DI_DISP_LLA_DATA (0x01BC - MX3FB_REG_OFFSET)
105
106/* DI_DISP_SIG_POL bits */
107#define DI_D3_VSYNC_POL_SHIFT 28
108#define DI_D3_HSYNC_POL_SHIFT 27
109#define DI_D3_DRDY_SHARP_POL_SHIFT 26
110#define DI_D3_CLK_POL_SHIFT 25
111#define DI_D3_DATA_POL_SHIFT 24
112
113/* DI_DISP_IF_CONF bits */
114#define DI_D3_CLK_IDLE_SHIFT 26
115#define DI_D3_CLK_SEL_SHIFT 25
116#define DI_D3_DATAMSK_SHIFT 24
117
118enum ipu_panel {
119 IPU_PANEL_SHARP_TFT,
120 IPU_PANEL_TFT,
121};
122
123struct ipu_di_signal_cfg {
124 unsigned datamask_en:1;
125 unsigned clksel_en:1;
126 unsigned clkidle_en:1;
127 unsigned data_pol:1; /* true = inverted */
128 unsigned clk_pol:1; /* true = rising edge */
129 unsigned enable_pol:1;
130 unsigned Hsync_pol:1; /* true = active high */
131 unsigned Vsync_pol:1;
132};
133
134static const struct fb_videomode mx3fb_modedb[] = {
135 {
136 /* 240x320 @ 60 Hz */
137 .name = "Sharp-QVGA",
138 .refresh = 60,
139 .xres = 240,
140 .yres = 320,
141 .pixclock = 185925,
142 .left_margin = 9,
143 .right_margin = 16,
144 .upper_margin = 7,
145 .lower_margin = 9,
146 .hsync_len = 1,
147 .vsync_len = 1,
148 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_SHARP_MODE |
149 FB_SYNC_CLK_INVERT | FB_SYNC_DATA_INVERT |
150 FB_SYNC_CLK_IDLE_EN,
151 .vmode = FB_VMODE_NONINTERLACED,
152 .flag = 0,
153 }, {
154 /* 240x33 @ 60 Hz */
155 .name = "Sharp-CLI",
156 .refresh = 60,
157 .xres = 240,
158 .yres = 33,
159 .pixclock = 185925,
160 .left_margin = 9,
161 .right_margin = 16,
162 .upper_margin = 7,
163 .lower_margin = 9 + 287,
164 .hsync_len = 1,
165 .vsync_len = 1,
166 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_SHARP_MODE |
167 FB_SYNC_CLK_INVERT | FB_SYNC_DATA_INVERT |
168 FB_SYNC_CLK_IDLE_EN,
169 .vmode = FB_VMODE_NONINTERLACED,
170 .flag = 0,
171 }, {
172 /* 640x480 @ 60 Hz */
173 .name = "NEC-VGA",
174 .refresh = 60,
175 .xres = 640,
176 .yres = 480,
177 .pixclock = 38255,
178 .left_margin = 144,
179 .right_margin = 0,
180 .upper_margin = 34,
181 .lower_margin = 40,
182 .hsync_len = 1,
183 .vsync_len = 1,
184 .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_OE_ACT_HIGH,
185 .vmode = FB_VMODE_NONINTERLACED,
186 .flag = 0,
187 }, {
188 /* NTSC TV output */
189 .name = "TV-NTSC",
190 .refresh = 60,
191 .xres = 640,
192 .yres = 480,
193 .pixclock = 37538,
194 .left_margin = 38,
195 .right_margin = 858 - 640 - 38 - 3,
196 .upper_margin = 36,
197 .lower_margin = 518 - 480 - 36 - 1,
198 .hsync_len = 3,
199 .vsync_len = 1,
200 .sync = 0,
201 .vmode = FB_VMODE_NONINTERLACED,
202 .flag = 0,
203 }, {
204 /* PAL TV output */
205 .name = "TV-PAL",
206 .refresh = 50,
207 .xres = 640,
208 .yres = 480,
209 .pixclock = 37538,
210 .left_margin = 38,
211 .right_margin = 960 - 640 - 38 - 32,
212 .upper_margin = 32,
213 .lower_margin = 555 - 480 - 32 - 3,
214 .hsync_len = 32,
215 .vsync_len = 3,
216 .sync = 0,
217 .vmode = FB_VMODE_NONINTERLACED,
218 .flag = 0,
219 }, {
220 /* TV output VGA mode, 640x480 @ 65 Hz */
221 .name = "TV-VGA",
222 .refresh = 60,
223 .xres = 640,
224 .yres = 480,
225 .pixclock = 40574,
226 .left_margin = 35,
227 .right_margin = 45,
228 .upper_margin = 9,
229 .lower_margin = 1,
230 .hsync_len = 46,
231 .vsync_len = 5,
232 .sync = 0,
233 .vmode = FB_VMODE_NONINTERLACED,
234 .flag = 0,
235 },
236};
237
238struct mx3fb_data {
239 struct fb_info *fbi;
240 int backlight_level;
241 void __iomem *reg_base;
242 spinlock_t lock;
243 struct device *dev;
244
245 uint32_t h_start_width;
246 uint32_t v_start_width;
247};
248
249struct dma_chan_request {
250 struct mx3fb_data *mx3fb;
251 enum ipu_channel id;
252};
253
254/* MX3 specific framebuffer information. */
255struct mx3fb_info {
256 int blank;
257 enum ipu_channel ipu_ch;
258 uint32_t cur_ipu_buf;
259
260 u32 pseudo_palette[16];
261
262 struct completion flip_cmpl;
263 struct mutex mutex; /* Protects fb-ops */
264 struct mx3fb_data *mx3fb;
265 struct idmac_channel *idmac_channel;
266 struct dma_async_tx_descriptor *txd;
267 dma_cookie_t cookie;
268 struct scatterlist sg[2];
269
270 u32 sync; /* preserve var->sync flags */
271};
272
273static void mx3fb_dma_done(void *);
274
275/* Used fb-mode and bpp. Can be set on kernel command line, therefore file-static. */
276static const char *fb_mode;
277static unsigned long default_bpp = 16;
278
279static u32 mx3fb_read_reg(struct mx3fb_data *mx3fb, unsigned long reg)
280{
281 return __raw_readl(mx3fb->reg_base + reg);
282}
283
284static void mx3fb_write_reg(struct mx3fb_data *mx3fb, u32 value, unsigned long reg)
285{
286 __raw_writel(value, mx3fb->reg_base + reg);
287}
288
289static const uint32_t di_mappings[] = {
290 0x1600AAAA, 0x00E05555, 0x00070000, 3, /* RGB888 */
291 0x0005000F, 0x000B000F, 0x0011000F, 1, /* RGB666 */
292 0x0011000F, 0x000B000F, 0x0005000F, 1, /* BGR666 */
293 0x0004003F, 0x000A000F, 0x000F003F, 1 /* RGB565 */
294};
295
296static void sdc_fb_init(struct mx3fb_info *fbi)
297{
298 struct mx3fb_data *mx3fb = fbi->mx3fb;
299 uint32_t reg;
300
301 reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF);
302
303 mx3fb_write_reg(mx3fb, reg | SDC_COM_BG_EN, SDC_COM_CONF);
304}
305
306/* Returns enabled flag before uninit */
307static uint32_t sdc_fb_uninit(struct mx3fb_info *fbi)
308{
309 struct mx3fb_data *mx3fb = fbi->mx3fb;
310 uint32_t reg;
311
312 reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF);
313
314 mx3fb_write_reg(mx3fb, reg & ~SDC_COM_BG_EN, SDC_COM_CONF);
315
316 return reg & SDC_COM_BG_EN;
317}
318
319static void sdc_enable_channel(struct mx3fb_info *mx3_fbi)
320{
321 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb;
322 struct idmac_channel *ichan = mx3_fbi->idmac_channel;
323 struct dma_chan *dma_chan = &ichan->dma_chan;
324 unsigned long flags;
325 dma_cookie_t cookie;
326
327 dev_dbg(mx3fb->dev, "mx3fbi %p, desc %p, sg %p\n", mx3_fbi,
328 to_tx_desc(mx3_fbi->txd), to_tx_desc(mx3_fbi->txd)->sg);
329
330 /* This enables the channel */
331 if (mx3_fbi->cookie < 0) {
332 mx3_fbi->txd = dma_chan->device->device_prep_slave_sg(dma_chan,
333 &mx3_fbi->sg[0], 1, DMA_TO_DEVICE, DMA_PREP_INTERRUPT);
334 if (!mx3_fbi->txd) {
335 dev_err(mx3fb->dev, "Cannot allocate descriptor on %d\n",
336 dma_chan->chan_id);
337 return;
338 }
339
340 mx3_fbi->txd->callback_param = mx3_fbi->txd;
341 mx3_fbi->txd->callback = mx3fb_dma_done;
342
343 cookie = mx3_fbi->txd->tx_submit(mx3_fbi->txd);
344 dev_dbg(mx3fb->dev, "%d: Submit %p #%d [%c]\n", __LINE__,
345 mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+');
346 } else {
347 if (!mx3_fbi->txd || !mx3_fbi->txd->tx_submit) {
348 dev_err(mx3fb->dev, "Cannot enable channel %d\n",
349 dma_chan->chan_id);
350 return;
351 }
352
353 /* Just re-activate the same buffer */
354 dma_async_issue_pending(dma_chan);
355 cookie = mx3_fbi->cookie;
356 dev_dbg(mx3fb->dev, "%d: Re-submit %p #%d [%c]\n", __LINE__,
357 mx3_fbi->txd, cookie, list_empty(&ichan->queue) ? '-' : '+');
358 }
359
360 if (cookie >= 0) {
361 spin_lock_irqsave(&mx3fb->lock, flags);
362 sdc_fb_init(mx3_fbi);
363 mx3_fbi->cookie = cookie;
364 spin_unlock_irqrestore(&mx3fb->lock, flags);
365 }
366
367 /*
368 * Attention! Without this msleep the channel keeps generating
369 * interrupts. Next sdc_set_brightness() is going to be called
370 * from mx3fb_blank().
371 */
372 msleep(2);
373}
374
375static void sdc_disable_channel(struct mx3fb_info *mx3_fbi)
376{
377 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb;
378 uint32_t enabled;
379 unsigned long flags;
380
381 spin_lock_irqsave(&mx3fb->lock, flags);
382
383 enabled = sdc_fb_uninit(mx3_fbi);
384
385 spin_unlock_irqrestore(&mx3fb->lock, flags);
386
387 mx3_fbi->txd->chan->device->device_terminate_all(mx3_fbi->txd->chan);
388 mx3_fbi->txd = NULL;
389 mx3_fbi->cookie = -EINVAL;
390}
391
392/**
393 * sdc_set_window_pos() - set window position of the respective plane.
394 * @mx3fb: mx3fb context.
395 * @channel: IPU DMAC channel ID.
396 * @x_pos: X coordinate relative to the top left corner to place window at.
397 * @y_pos: Y coordinate relative to the top left corner to place window at.
398 * @return: 0 on success or negative error code on failure.
399 */
400static int sdc_set_window_pos(struct mx3fb_data *mx3fb, enum ipu_channel channel,
401 int16_t x_pos, int16_t y_pos)
402{
403 x_pos += mx3fb->h_start_width;
404 y_pos += mx3fb->v_start_width;
405
406 if (channel != IDMAC_SDC_0)
407 return -EINVAL;
408
409 mx3fb_write_reg(mx3fb, (x_pos << 16) | y_pos, SDC_BG_POS);
410 return 0;
411}
412
413/**
414 * sdc_init_panel() - initialize a synchronous LCD panel.
415 * @mx3fb: mx3fb context.
416 * @panel: panel type.
417 * @pixel_clk: desired pixel clock frequency in Hz.
418 * @width: width of panel in pixels.
419 * @height: height of panel in pixels.
420 * @pixel_fmt: pixel format of buffer as FOURCC ASCII code.
421 * @h_start_width: number of pixel clocks between the HSYNC signal pulse
422 * and the start of valid data.
423 * @h_sync_width: width of the HSYNC signal in units of pixel clocks.
424 * @h_end_width: number of pixel clocks between the end of valid data
425 * and the HSYNC signal for next line.
426 * @v_start_width: number of lines between the VSYNC signal pulse and the
427 * start of valid data.
428 * @v_sync_width: width of the VSYNC signal in units of lines
429 * @v_end_width: number of lines between the end of valid data and the
430 * VSYNC signal for next frame.
431 * @sig: bitfield of signal polarities for LCD interface.
432 * @return: 0 on success or negative error code on failure.
433 */
434static int sdc_init_panel(struct mx3fb_data *mx3fb, enum ipu_panel panel,
435 uint32_t pixel_clk,
436 uint16_t width, uint16_t height,
437 enum pixel_fmt pixel_fmt,
438 uint16_t h_start_width, uint16_t h_sync_width,
439 uint16_t h_end_width, uint16_t v_start_width,
440 uint16_t v_sync_width, uint16_t v_end_width,
441 struct ipu_di_signal_cfg sig)
442{
443 unsigned long lock_flags;
444 uint32_t reg;
445 uint32_t old_conf;
446 uint32_t div;
447 struct clk *ipu_clk;
448
449 dev_dbg(mx3fb->dev, "panel size = %d x %d", width, height);
450
451 if (v_sync_width == 0 || h_sync_width == 0)
452 return -EINVAL;
453
454 /* Init panel size and blanking periods */
455 reg = ((uint32_t) (h_sync_width - 1) << 26) |
456 ((uint32_t) (width + h_start_width + h_end_width - 1) << 16);
457 mx3fb_write_reg(mx3fb, reg, SDC_HOR_CONF);
458
459#ifdef DEBUG
460 printk(KERN_CONT " hor_conf %x,", reg);
461#endif
462
463 reg = ((uint32_t) (v_sync_width - 1) << 26) | SDC_V_SYNC_WIDTH_L |
464 ((uint32_t) (height + v_start_width + v_end_width - 1) << 16);
465 mx3fb_write_reg(mx3fb, reg, SDC_VER_CONF);
466
467#ifdef DEBUG
468 printk(KERN_CONT " ver_conf %x\n", reg);
469#endif
470
471 mx3fb->h_start_width = h_start_width;
472 mx3fb->v_start_width = v_start_width;
473
474 switch (panel) {
475 case IPU_PANEL_SHARP_TFT:
476 mx3fb_write_reg(mx3fb, 0x00FD0102L, SDC_SHARP_CONF_1);
477 mx3fb_write_reg(mx3fb, 0x00F500F4L, SDC_SHARP_CONF_2);
478 mx3fb_write_reg(mx3fb, SDC_COM_SHARP | SDC_COM_TFT_COLOR, SDC_COM_CONF);
479 break;
480 case IPU_PANEL_TFT:
481 mx3fb_write_reg(mx3fb, SDC_COM_TFT_COLOR, SDC_COM_CONF);
482 break;
483 default:
484 return -EINVAL;
485 }
486
487 /* Init clocking */
488
489 /*
490 * Calculate divider: fractional part is 4 bits so simply multiple by
491 * 24 to get fractional part, as long as we stay under ~250MHz and on
492 * i.MX31 it (HSP_CLK) is <= 178MHz. Currently 128.267MHz
493 */
494 dev_dbg(mx3fb->dev, "pixel clk = %d\n", pixel_clk);
495
496 ipu_clk = clk_get(mx3fb->dev, "ipu_clk");
497 div = clk_get_rate(ipu_clk) * 16 / pixel_clk;
498 clk_put(ipu_clk);
499
500 if (div < 0x40) { /* Divider less than 4 */
501 dev_dbg(mx3fb->dev,
502 "InitPanel() - Pixel clock divider less than 4\n");
503 div = 0x40;
504 }
505
506 spin_lock_irqsave(&mx3fb->lock, lock_flags);
507
508 /*
509 * DISP3_IF_CLK_DOWN_WR is half the divider value and 2 fraction bits
510 * fewer. Subtract 1 extra from DISP3_IF_CLK_DOWN_WR based on timing
511 * debug. DISP3_IF_CLK_UP_WR is 0
512 */
513 mx3fb_write_reg(mx3fb, (((div / 8) - 1) << 22) | div, DI_DISP3_TIME_CONF);
514
515 /* DI settings */
516 old_conf = mx3fb_read_reg(mx3fb, DI_DISP_IF_CONF) & 0x78FFFFFF;
517 old_conf |= sig.datamask_en << DI_D3_DATAMSK_SHIFT |
518 sig.clksel_en << DI_D3_CLK_SEL_SHIFT |
519 sig.clkidle_en << DI_D3_CLK_IDLE_SHIFT;
520 mx3fb_write_reg(mx3fb, old_conf, DI_DISP_IF_CONF);
521
522 old_conf = mx3fb_read_reg(mx3fb, DI_DISP_SIG_POL) & 0xE0FFFFFF;
523 old_conf |= sig.data_pol << DI_D3_DATA_POL_SHIFT |
524 sig.clk_pol << DI_D3_CLK_POL_SHIFT |
525 sig.enable_pol << DI_D3_DRDY_SHARP_POL_SHIFT |
526 sig.Hsync_pol << DI_D3_HSYNC_POL_SHIFT |
527 sig.Vsync_pol << DI_D3_VSYNC_POL_SHIFT;
528 mx3fb_write_reg(mx3fb, old_conf, DI_DISP_SIG_POL);
529
530 switch (pixel_fmt) {
531 case IPU_PIX_FMT_RGB24:
532 mx3fb_write_reg(mx3fb, di_mappings[0], DI_DISP3_B0_MAP);
533 mx3fb_write_reg(mx3fb, di_mappings[1], DI_DISP3_B1_MAP);
534 mx3fb_write_reg(mx3fb, di_mappings[2], DI_DISP3_B2_MAP);
535 mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) |
536 ((di_mappings[3] - 1) << 12), DI_DISP_ACC_CC);
537 break;
538 case IPU_PIX_FMT_RGB666:
539 mx3fb_write_reg(mx3fb, di_mappings[4], DI_DISP3_B0_MAP);
540 mx3fb_write_reg(mx3fb, di_mappings[5], DI_DISP3_B1_MAP);
541 mx3fb_write_reg(mx3fb, di_mappings[6], DI_DISP3_B2_MAP);
542 mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) |
543 ((di_mappings[7] - 1) << 12), DI_DISP_ACC_CC);
544 break;
545 case IPU_PIX_FMT_BGR666:
546 mx3fb_write_reg(mx3fb, di_mappings[8], DI_DISP3_B0_MAP);
547 mx3fb_write_reg(mx3fb, di_mappings[9], DI_DISP3_B1_MAP);
548 mx3fb_write_reg(mx3fb, di_mappings[10], DI_DISP3_B2_MAP);
549 mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) |
550 ((di_mappings[11] - 1) << 12), DI_DISP_ACC_CC);
551 break;
552 default:
553 mx3fb_write_reg(mx3fb, di_mappings[12], DI_DISP3_B0_MAP);
554 mx3fb_write_reg(mx3fb, di_mappings[13], DI_DISP3_B1_MAP);
555 mx3fb_write_reg(mx3fb, di_mappings[14], DI_DISP3_B2_MAP);
556 mx3fb_write_reg(mx3fb, mx3fb_read_reg(mx3fb, DI_DISP_ACC_CC) |
557 ((di_mappings[15] - 1) << 12), DI_DISP_ACC_CC);
558 break;
559 }
560
561 spin_unlock_irqrestore(&mx3fb->lock, lock_flags);
562
563 dev_dbg(mx3fb->dev, "DI_DISP_IF_CONF = 0x%08X\n",
564 mx3fb_read_reg(mx3fb, DI_DISP_IF_CONF));
565 dev_dbg(mx3fb->dev, "DI_DISP_SIG_POL = 0x%08X\n",
566 mx3fb_read_reg(mx3fb, DI_DISP_SIG_POL));
567 dev_dbg(mx3fb->dev, "DI_DISP3_TIME_CONF = 0x%08X\n",
568 mx3fb_read_reg(mx3fb, DI_DISP3_TIME_CONF));
569
570 return 0;
571}
572
573/**
574 * sdc_set_color_key() - set the transparent color key for SDC graphic plane.
575 * @mx3fb: mx3fb context.
576 * @channel: IPU DMAC channel ID.
577 * @enable: boolean to enable or disable color keyl.
578 * @color_key: 24-bit RGB color to use as transparent color key.
579 * @return: 0 on success or negative error code on failure.
580 */
581static int sdc_set_color_key(struct mx3fb_data *mx3fb, enum ipu_channel channel,
582 bool enable, uint32_t color_key)
583{
584 uint32_t reg, sdc_conf;
585 unsigned long lock_flags;
586
587 spin_lock_irqsave(&mx3fb->lock, lock_flags);
588
589 sdc_conf = mx3fb_read_reg(mx3fb, SDC_COM_CONF);
590 if (channel == IDMAC_SDC_0)
591 sdc_conf &= ~SDC_COM_GWSEL;
592 else
593 sdc_conf |= SDC_COM_GWSEL;
594
595 if (enable) {
596 reg = mx3fb_read_reg(mx3fb, SDC_GW_CTRL) & 0xFF000000L;
597 mx3fb_write_reg(mx3fb, reg | (color_key & 0x00FFFFFFL),
598 SDC_GW_CTRL);
599
600 sdc_conf |= SDC_COM_KEY_COLOR_G;
601 } else {
602 sdc_conf &= ~SDC_COM_KEY_COLOR_G;
603 }
604 mx3fb_write_reg(mx3fb, sdc_conf, SDC_COM_CONF);
605
606 spin_unlock_irqrestore(&mx3fb->lock, lock_flags);
607
608 return 0;
609}
610
611/**
612 * sdc_set_global_alpha() - set global alpha blending modes.
613 * @mx3fb: mx3fb context.
614 * @enable: boolean to enable or disable global alpha blending. If disabled,
615 * per pixel blending is used.
616 * @alpha: global alpha value.
617 * @return: 0 on success or negative error code on failure.
618 */
619static int sdc_set_global_alpha(struct mx3fb_data *mx3fb, bool enable, uint8_t alpha)
620{
621 uint32_t reg;
622 unsigned long lock_flags;
623
624 spin_lock_irqsave(&mx3fb->lock, lock_flags);
625
626 if (enable) {
627 reg = mx3fb_read_reg(mx3fb, SDC_GW_CTRL) & 0x00FFFFFFL;
628 mx3fb_write_reg(mx3fb, reg | ((uint32_t) alpha << 24), SDC_GW_CTRL);
629
630 reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF);
631 mx3fb_write_reg(mx3fb, reg | SDC_COM_GLB_A, SDC_COM_CONF);
632 } else {
633 reg = mx3fb_read_reg(mx3fb, SDC_COM_CONF);
634 mx3fb_write_reg(mx3fb, reg & ~SDC_COM_GLB_A, SDC_COM_CONF);
635 }
636
637 spin_unlock_irqrestore(&mx3fb->lock, lock_flags);
638
639 return 0;
640}
641
642static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value)
643{
644 /* This might be board-specific */
645 mx3fb_write_reg(mx3fb, 0x03000000UL | value << 16, SDC_PWM_CTRL);
646 return;
647}
648
649static uint32_t bpp_to_pixfmt(int bpp)
650{
651 uint32_t pixfmt = 0;
652 switch (bpp) {
653 case 24:
654 pixfmt = IPU_PIX_FMT_BGR24;
655 break;
656 case 32:
657 pixfmt = IPU_PIX_FMT_BGR32;
658 break;
659 case 16:
660 pixfmt = IPU_PIX_FMT_RGB565;
661 break;
662 }
663 return pixfmt;
664}
665
666static int mx3fb_blank(int blank, struct fb_info *fbi);
667static int mx3fb_map_video_memory(struct fb_info *fbi);
668static int mx3fb_unmap_video_memory(struct fb_info *fbi);
669
670/**
671 * mx3fb_set_fix() - set fixed framebuffer parameters from variable settings.
672 * @info: framebuffer information pointer
673 * @return: 0 on success or negative error code on failure.
674 */
675static int mx3fb_set_fix(struct fb_info *fbi)
676{
677 struct fb_fix_screeninfo *fix = &fbi->fix;
678 struct fb_var_screeninfo *var = &fbi->var;
679
680 strncpy(fix->id, "DISP3 BG", 8);
681
682 fix->line_length = var->xres_virtual * var->bits_per_pixel / 8;
683
684 fix->type = FB_TYPE_PACKED_PIXELS;
685 fix->accel = FB_ACCEL_NONE;
686 fix->visual = FB_VISUAL_TRUECOLOR;
687 fix->xpanstep = 1;
688 fix->ypanstep = 1;
689
690 return 0;
691}
692
693static void mx3fb_dma_done(void *arg)
694{
695 struct idmac_tx_desc *tx_desc = to_tx_desc(arg);
696 struct dma_chan *chan = tx_desc->txd.chan;
697 struct idmac_channel *ichannel = to_idmac_chan(chan);
698 struct mx3fb_data *mx3fb = ichannel->client;
699 struct mx3fb_info *mx3_fbi = mx3fb->fbi->par;
700
701 dev_dbg(mx3fb->dev, "irq %d callback\n", ichannel->eof_irq);
702
703 /* We only need one interrupt, it will be re-enabled as needed */
704 disable_irq(ichannel->eof_irq);
705
706 complete(&mx3_fbi->flip_cmpl);
707}
708
709/**
710 * mx3fb_set_par() - set framebuffer parameters and change the operating mode.
711 * @fbi: framebuffer information pointer.
712 * @return: 0 on success or negative error code on failure.
713 */
714static int mx3fb_set_par(struct fb_info *fbi)
715{
716 u32 mem_len;
717 struct ipu_di_signal_cfg sig_cfg;
718 enum ipu_panel mode = IPU_PANEL_TFT;
719 struct mx3fb_info *mx3_fbi = fbi->par;
720 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb;
721 struct idmac_channel *ichan = mx3_fbi->idmac_channel;
722 struct idmac_video_param *video = &ichan->params.video;
723 struct scatterlist *sg = mx3_fbi->sg;
724 size_t screen_size;
725
726 dev_dbg(mx3fb->dev, "%s [%c]\n", __func__, list_empty(&ichan->queue) ? '-' : '+');
727
728 mutex_lock(&mx3_fbi->mutex);
729
730 /* Total cleanup */
731 if (mx3_fbi->txd)
732 sdc_disable_channel(mx3_fbi);
733
734 mx3fb_set_fix(fbi);
735
736 mem_len = fbi->var.yres_virtual * fbi->fix.line_length;
737 if (mem_len > fbi->fix.smem_len) {
738 if (fbi->fix.smem_start)
739 mx3fb_unmap_video_memory(fbi);
740
741 fbi->fix.smem_len = mem_len;
742 if (mx3fb_map_video_memory(fbi) < 0) {
743 mutex_unlock(&mx3_fbi->mutex);
744 return -ENOMEM;
745 }
746 }
747
748 screen_size = fbi->fix.line_length * fbi->var.yres;
749
750 sg_init_table(&sg[0], 1);
751 sg_init_table(&sg[1], 1);
752
753 sg_dma_address(&sg[0]) = fbi->fix.smem_start;
754 sg_set_page(&sg[0], virt_to_page(fbi->screen_base),
755 fbi->fix.smem_len,
756 offset_in_page(fbi->screen_base));
757
758 if (mx3_fbi->ipu_ch == IDMAC_SDC_0) {
759 memset(&sig_cfg, 0, sizeof(sig_cfg));
760 if (fbi->var.sync & FB_SYNC_HOR_HIGH_ACT)
761 sig_cfg.Hsync_pol = true;
762 if (fbi->var.sync & FB_SYNC_VERT_HIGH_ACT)
763 sig_cfg.Vsync_pol = true;
764 if (fbi->var.sync & FB_SYNC_CLK_INVERT)
765 sig_cfg.clk_pol = true;
766 if (fbi->var.sync & FB_SYNC_DATA_INVERT)
767 sig_cfg.data_pol = true;
768 if (fbi->var.sync & FB_SYNC_OE_ACT_HIGH)
769 sig_cfg.enable_pol = true;
770 if (fbi->var.sync & FB_SYNC_CLK_IDLE_EN)
771 sig_cfg.clkidle_en = true;
772 if (fbi->var.sync & FB_SYNC_CLK_SEL_EN)
773 sig_cfg.clksel_en = true;
774 if (fbi->var.sync & FB_SYNC_SHARP_MODE)
775 mode = IPU_PANEL_SHARP_TFT;
776
777 dev_dbg(fbi->device, "pixclock = %ul Hz\n",
778 (u32) (PICOS2KHZ(fbi->var.pixclock) * 1000UL));
779
780 if (sdc_init_panel(mx3fb, mode,
781 (PICOS2KHZ(fbi->var.pixclock)) * 1000UL,
782 fbi->var.xres, fbi->var.yres,
783 (fbi->var.sync & FB_SYNC_SWAP_RGB) ?
784 IPU_PIX_FMT_BGR666 : IPU_PIX_FMT_RGB666,
785 fbi->var.left_margin,
786 fbi->var.hsync_len,
787 fbi->var.right_margin +
788 fbi->var.hsync_len,
789 fbi->var.upper_margin,
790 fbi->var.vsync_len,
791 fbi->var.lower_margin +
792 fbi->var.vsync_len, sig_cfg) != 0) {
793 mutex_unlock(&mx3_fbi->mutex);
794 dev_err(fbi->device,
795 "mx3fb: Error initializing panel.\n");
796 return -EINVAL;
797 }
798 }
799
800 sdc_set_window_pos(mx3fb, mx3_fbi->ipu_ch, 0, 0);
801
802 mx3_fbi->cur_ipu_buf = 0;
803
804 video->out_pixel_fmt = bpp_to_pixfmt(fbi->var.bits_per_pixel);
805 video->out_width = fbi->var.xres;
806 video->out_height = fbi->var.yres;
807 video->out_stride = fbi->var.xres_virtual;
808
809 if (mx3_fbi->blank == FB_BLANK_UNBLANK)
810 sdc_enable_channel(mx3_fbi);
811
812 mutex_unlock(&mx3_fbi->mutex);
813
814 return 0;
815}
816
817/**
818 * mx3fb_check_var() - check and adjust framebuffer variable parameters.
819 * @var: framebuffer variable parameters
820 * @fbi: framebuffer information pointer
821 */
822static int mx3fb_check_var(struct fb_var_screeninfo *var, struct fb_info *fbi)
823{
824 struct mx3fb_info *mx3_fbi = fbi->par;
825 u32 vtotal;
826 u32 htotal;
827
828 dev_dbg(fbi->device, "%s\n", __func__);
829
830 if (var->xres_virtual < var->xres)
831 var->xres_virtual = var->xres;
832 if (var->yres_virtual < var->yres)
833 var->yres_virtual = var->yres;
834
835 if ((var->bits_per_pixel != 32) && (var->bits_per_pixel != 24) &&
836 (var->bits_per_pixel != 16))
837 var->bits_per_pixel = default_bpp;
838
839 switch (var->bits_per_pixel) {
840 case 16:
841 var->red.length = 5;
842 var->red.offset = 11;
843 var->red.msb_right = 0;
844
845 var->green.length = 6;
846 var->green.offset = 5;
847 var->green.msb_right = 0;
848
849 var->blue.length = 5;
850 var->blue.offset = 0;
851 var->blue.msb_right = 0;
852
853 var->transp.length = 0;
854 var->transp.offset = 0;
855 var->transp.msb_right = 0;
856 break;
857 case 24:
858 var->red.length = 8;
859 var->red.offset = 16;
860 var->red.msb_right = 0;
861
862 var->green.length = 8;
863 var->green.offset = 8;
864 var->green.msb_right = 0;
865
866 var->blue.length = 8;
867 var->blue.offset = 0;
868 var->blue.msb_right = 0;
869
870 var->transp.length = 0;
871 var->transp.offset = 0;
872 var->transp.msb_right = 0;
873 break;
874 case 32:
875 var->red.length = 8;
876 var->red.offset = 16;
877 var->red.msb_right = 0;
878
879 var->green.length = 8;
880 var->green.offset = 8;
881 var->green.msb_right = 0;
882
883 var->blue.length = 8;
884 var->blue.offset = 0;
885 var->blue.msb_right = 0;
886
887 var->transp.length = 8;
888 var->transp.offset = 24;
889 var->transp.msb_right = 0;
890 break;
891 }
892
893 if (var->pixclock < 1000) {
894 htotal = var->xres + var->right_margin + var->hsync_len +
895 var->left_margin;
896 vtotal = var->yres + var->lower_margin + var->vsync_len +
897 var->upper_margin;
898 var->pixclock = (vtotal * htotal * 6UL) / 100UL;
899 var->pixclock = KHZ2PICOS(var->pixclock);
900 dev_dbg(fbi->device, "pixclock set for 60Hz refresh = %u ps\n",
901 var->pixclock);
902 }
903
904 var->height = -1;
905 var->width = -1;
906 var->grayscale = 0;
907
908 /* Preserve sync flags */
909 var->sync |= mx3_fbi->sync;
910 mx3_fbi->sync |= var->sync;
911
912 return 0;
913}
914
915static u32 chan_to_field(unsigned int chan, struct fb_bitfield *bf)
916{
917 chan &= 0xffff;
918 chan >>= 16 - bf->length;
919 return chan << bf->offset;
920}
921
922static int mx3fb_setcolreg(unsigned int regno, unsigned int red,
923 unsigned int green, unsigned int blue,
924 unsigned int trans, struct fb_info *fbi)
925{
926 struct mx3fb_info *mx3_fbi = fbi->par;
927 u32 val;
928 int ret = 1;
929
930 dev_dbg(fbi->device, "%s\n", __func__);
931
932 mutex_lock(&mx3_fbi->mutex);
933 /*
934 * If greyscale is true, then we convert the RGB value
935 * to greyscale no matter what visual we are using.
936 */
937 if (fbi->var.grayscale)
938 red = green = blue = (19595 * red + 38470 * green +
939 7471 * blue) >> 16;
940 switch (fbi->fix.visual) {
941 case FB_VISUAL_TRUECOLOR:
942 /*
943 * 16-bit True Colour. We encode the RGB value
944 * according to the RGB bitfield information.
945 */
946 if (regno < 16) {
947 u32 *pal = fbi->pseudo_palette;
948
949 val = chan_to_field(red, &fbi->var.red);
950 val |= chan_to_field(green, &fbi->var.green);
951 val |= chan_to_field(blue, &fbi->var.blue);
952
953 pal[regno] = val;
954
955 ret = 0;
956 }
957 break;
958
959 case FB_VISUAL_STATIC_PSEUDOCOLOR:
960 case FB_VISUAL_PSEUDOCOLOR:
961 break;
962 }
963 mutex_unlock(&mx3_fbi->mutex);
964
965 return ret;
966}
967
968/**
969 * mx3fb_blank() - blank the display.
970 */
971static int mx3fb_blank(int blank, struct fb_info *fbi)
972{
973 struct mx3fb_info *mx3_fbi = fbi->par;
974 struct mx3fb_data *mx3fb = mx3_fbi->mx3fb;
975
976 dev_dbg(fbi->device, "%s\n", __func__);
977
978 dev_dbg(fbi->device, "blank = %d\n", blank);
979
980 if (mx3_fbi->blank == blank)
981 return 0;
982
983 mutex_lock(&mx3_fbi->mutex);
984 mx3_fbi->blank = blank;
985
986 switch (blank) {
987 case FB_BLANK_POWERDOWN:
988 case FB_BLANK_VSYNC_SUSPEND:
989 case FB_BLANK_HSYNC_SUSPEND:
990 case FB_BLANK_NORMAL:
991 sdc_disable_channel(mx3_fbi);
992 sdc_set_brightness(mx3fb, 0);
993 break;
994 case FB_BLANK_UNBLANK:
995 sdc_enable_channel(mx3_fbi);
996 sdc_set_brightness(mx3fb, mx3fb->backlight_level);
997 break;
998 }
999 mutex_unlock(&mx3_fbi->mutex);
1000
1001 return 0;
1002}
1003
1004/**
1005 * mx3fb_pan_display() - pan or wrap the display
1006 * @var: variable screen buffer information.
1007 * @info: framebuffer information pointer.
1008 *
1009 * We look only at xoffset, yoffset and the FB_VMODE_YWRAP flag
1010 */
1011static int mx3fb_pan_display(struct fb_var_screeninfo *var,
1012 struct fb_info *fbi)
1013{
1014 struct mx3fb_info *mx3_fbi = fbi->par;
1015 u32 y_bottom;
1016 unsigned long base;
1017 off_t offset;
1018 dma_cookie_t cookie;
1019 struct scatterlist *sg = mx3_fbi->sg;
1020 struct dma_chan *dma_chan = &mx3_fbi->idmac_channel->dma_chan;
1021 struct dma_async_tx_descriptor *txd;
1022 int ret;
1023
1024 dev_dbg(fbi->device, "%s [%c]\n", __func__,
1025 list_empty(&mx3_fbi->idmac_channel->queue) ? '-' : '+');
1026
1027 if (var->xoffset > 0) {
1028 dev_dbg(fbi->device, "x panning not supported\n");
1029 return -EINVAL;
1030 }
1031
1032 if (fbi->var.xoffset == var->xoffset &&
1033 fbi->var.yoffset == var->yoffset)
1034 return 0; /* No change, do nothing */
1035
1036 y_bottom = var->yoffset;
1037
1038 if (!(var->vmode & FB_VMODE_YWRAP))
1039 y_bottom += var->yres;
1040
1041 if (y_bottom > fbi->var.yres_virtual)
1042 return -EINVAL;
1043
1044 mutex_lock(&mx3_fbi->mutex);
1045
1046 offset = (var->yoffset * var->xres_virtual + var->xoffset) *
1047 (var->bits_per_pixel / 8);
1048 base = fbi->fix.smem_start + offset;
1049
1050 dev_dbg(fbi->device, "Updating SDC BG buf %d address=0x%08lX\n",
1051 mx3_fbi->cur_ipu_buf, base);
1052
1053 /*
1054 * We enable the End of Frame interrupt, which will free a tx-descriptor,
1055 * which we will need for the next device_prep_slave_sg(). The
1056 * IRQ-handler will disable the IRQ again.
1057 */
1058 init_completion(&mx3_fbi->flip_cmpl);
1059 enable_irq(mx3_fbi->idmac_channel->eof_irq);
1060
1061 ret = wait_for_completion_timeout(&mx3_fbi->flip_cmpl, HZ / 10);
1062 if (ret <= 0) {
1063 mutex_unlock(&mx3_fbi->mutex);
1064 dev_info(fbi->device, "Panning failed due to %s\n", ret < 0 ?
1065 "user interrupt" : "timeout");
1066 return ret ? : -ETIMEDOUT;
1067 }
1068
1069 mx3_fbi->cur_ipu_buf = !mx3_fbi->cur_ipu_buf;
1070
1071 sg_dma_address(&sg[mx3_fbi->cur_ipu_buf]) = base;
1072 sg_set_page(&sg[mx3_fbi->cur_ipu_buf],
1073 virt_to_page(fbi->screen_base + offset), fbi->fix.smem_len,
1074 offset_in_page(fbi->screen_base + offset));
1075
1076 txd = dma_chan->device->device_prep_slave_sg(dma_chan, sg +
1077 mx3_fbi->cur_ipu_buf, 1, DMA_TO_DEVICE, DMA_PREP_INTERRUPT);
1078 if (!txd) {
1079 dev_err(fbi->device,
1080 "Error preparing a DMA transaction descriptor.\n");
1081 mutex_unlock(&mx3_fbi->mutex);
1082 return -EIO;
1083 }
1084
1085 txd->callback_param = txd;
1086 txd->callback = mx3fb_dma_done;
1087
1088 /*
1089 * Emulate original mx3fb behaviour: each new call to idmac_tx_submit()
1090 * should switch to another buffer
1091 */
1092 cookie = txd->tx_submit(txd);
1093 dev_dbg(fbi->device, "%d: Submit %p #%d\n", __LINE__, txd, cookie);
1094 if (cookie < 0) {
1095 dev_err(fbi->device,
1096 "Error updating SDC buf %d to address=0x%08lX\n",
1097 mx3_fbi->cur_ipu_buf, base);
1098 mutex_unlock(&mx3_fbi->mutex);
1099 return -EIO;
1100 }
1101
1102 if (mx3_fbi->txd)
1103 async_tx_ack(mx3_fbi->txd);
1104 mx3_fbi->txd = txd;
1105
1106 fbi->var.xoffset = var->xoffset;
1107 fbi->var.yoffset = var->yoffset;
1108
1109 if (var->vmode & FB_VMODE_YWRAP)
1110 fbi->var.vmode |= FB_VMODE_YWRAP;
1111 else
1112 fbi->var.vmode &= ~FB_VMODE_YWRAP;
1113
1114 mutex_unlock(&mx3_fbi->mutex);
1115
1116 dev_dbg(fbi->device, "Update complete\n");
1117
1118 return 0;
1119}
1120
1121/*
1122 * This structure contains the pointers to the control functions that are
1123 * invoked by the core framebuffer driver to perform operations like
1124 * blitting, rectangle filling, copy regions and cursor definition.
1125 */
1126static struct fb_ops mx3fb_ops = {
1127 .owner = THIS_MODULE,
1128 .fb_set_par = mx3fb_set_par,
1129 .fb_check_var = mx3fb_check_var,
1130 .fb_setcolreg = mx3fb_setcolreg,
1131 .fb_pan_display = mx3fb_pan_display,
1132 .fb_fillrect = cfb_fillrect,
1133 .fb_copyarea = cfb_copyarea,
1134 .fb_imageblit = cfb_imageblit,
1135 .fb_blank = mx3fb_blank,
1136};
1137
1138#ifdef CONFIG_PM
1139/*
1140 * Power management hooks. Note that we won't be called from IRQ context,
1141 * unlike the blank functions above, so we may sleep.
1142 */
1143
1144/*
1145 * Suspends the framebuffer and blanks the screen. Power management support
1146 */
1147static int mx3fb_suspend(struct platform_device *pdev, pm_message_t state)
1148{
1149 struct mx3fb_data *drv_data = platform_get_drvdata(pdev);
1150 struct mx3fb_info *mx3_fbi = drv_data->fbi->par;
1151
1152 acquire_console_sem();
1153 fb_set_suspend(drv_data->fbi, 1);
1154 release_console_sem();
1155
1156 if (mx3_fbi->blank == FB_BLANK_UNBLANK) {
1157 sdc_disable_channel(mx3_fbi);
1158 sdc_set_brightness(mx3fb, 0);
1159
1160 }
1161 return 0;
1162}
1163
1164/*
1165 * Resumes the framebuffer and unblanks the screen. Power management support
1166 */
1167static int mx3fb_resume(struct platform_device *pdev)
1168{
1169 struct mx3fb_data *drv_data = platform_get_drvdata(pdev);
1170 struct mx3fb_info *mx3_fbi = drv_data->fbi->par;
1171
1172 if (mx3_fbi->blank == FB_BLANK_UNBLANK) {
1173 sdc_enable_channel(mx3_fbi);
1174 sdc_set_brightness(mx3fb, drv_data->backlight_level);
1175 }
1176
1177 acquire_console_sem();
1178 fb_set_suspend(drv_data->fbi, 0);
1179 release_console_sem();
1180
1181 return 0;
1182}
1183#else
1184#define mx3fb_suspend NULL
1185#define mx3fb_resume NULL
1186#endif
1187
1188/*
1189 * Main framebuffer functions
1190 */
1191
1192/**
1193 * mx3fb_map_video_memory() - allocates the DRAM memory for the frame buffer.
1194 * @fbi: framebuffer information pointer
1195 * @return: Error code indicating success or failure
1196 *
1197 * This buffer is remapped into a non-cached, non-buffered, memory region to
1198 * allow palette and pixel writes to occur without flushing the cache. Once this
1199 * area is remapped, all virtual memory access to the video memory should occur
1200 * at the new region.
1201 */
1202static int mx3fb_map_video_memory(struct fb_info *fbi)
1203{
1204 int retval = 0;
1205 dma_addr_t addr;
1206
1207 fbi->screen_base = dma_alloc_writecombine(fbi->device,
1208 fbi->fix.smem_len,
1209 &addr, GFP_DMA);
1210
1211 if (!fbi->screen_base) {
1212 dev_err(fbi->device, "Cannot allocate %u bytes framebuffer memory\n",
1213 fbi->fix.smem_len);
1214 retval = -EBUSY;
1215 goto err0;
1216 }
1217
1218 fbi->fix.smem_start = addr;
1219
1220 dev_dbg(fbi->device, "allocated fb @ p=0x%08x, v=0x%p, size=%d.\n",
1221 (uint32_t) fbi->fix.smem_start, fbi->screen_base, fbi->fix.smem_len);
1222
1223 fbi->screen_size = fbi->fix.smem_len;
1224
1225 /* Clear the screen */
1226 memset((char *)fbi->screen_base, 0, fbi->fix.smem_len);
1227
1228 return 0;
1229
1230err0:
1231 fbi->fix.smem_len = 0;
1232 fbi->fix.smem_start = 0;
1233 fbi->screen_base = NULL;
1234 return retval;
1235}
1236
1237/**
1238 * mx3fb_unmap_video_memory() - de-allocate frame buffer memory.
1239 * @fbi: framebuffer information pointer
1240 * @return: error code indicating success or failure
1241 */
1242static int mx3fb_unmap_video_memory(struct fb_info *fbi)
1243{
1244 dma_free_writecombine(fbi->device, fbi->fix.smem_len,
1245 fbi->screen_base, fbi->fix.smem_start);
1246
1247 fbi->screen_base = 0;
1248 fbi->fix.smem_start = 0;
1249 fbi->fix.smem_len = 0;
1250 return 0;
1251}
1252
1253/**
1254 * mx3fb_init_fbinfo() - initialize framebuffer information object.
1255 * @return: initialized framebuffer structure.
1256 */
1257static struct fb_info *mx3fb_init_fbinfo(struct device *dev, struct fb_ops *ops)
1258{
1259 struct fb_info *fbi;
1260 struct mx3fb_info *mx3fbi;
1261 int ret;
1262
1263 /* Allocate sufficient memory for the fb structure */
1264 fbi = framebuffer_alloc(sizeof(struct mx3fb_info), dev);
1265 if (!fbi)
1266 return NULL;
1267
1268 mx3fbi = fbi->par;
1269 mx3fbi->cookie = -EINVAL;
1270 mx3fbi->cur_ipu_buf = 0;
1271
1272 fbi->var.activate = FB_ACTIVATE_NOW;
1273
1274 fbi->fbops = ops;
1275 fbi->flags = FBINFO_FLAG_DEFAULT;
1276 fbi->pseudo_palette = mx3fbi->pseudo_palette;
1277
1278 mutex_init(&mx3fbi->mutex);
1279
1280 /* Allocate colormap */
1281 ret = fb_alloc_cmap(&fbi->cmap, 16, 0);
1282 if (ret < 0) {
1283 framebuffer_release(fbi);
1284 return NULL;
1285 }
1286
1287 return fbi;
1288}
1289
1290static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
1291{
1292 struct device *dev = mx3fb->dev;
1293 struct mx3fb_platform_data *mx3fb_pdata = dev->platform_data;
1294 const char *name = mx3fb_pdata->name;
1295 unsigned int irq;
1296 struct fb_info *fbi;
1297 struct mx3fb_info *mx3fbi;
1298 const struct fb_videomode *mode;
1299 int ret, num_modes;
1300
1301 ichan->client = mx3fb;
1302 irq = ichan->eof_irq;
1303
1304 if (ichan->dma_chan.chan_id != IDMAC_SDC_0)
1305 return -EINVAL;
1306
1307 fbi = mx3fb_init_fbinfo(dev, &mx3fb_ops);
1308 if (!fbi)
1309 return -ENOMEM;
1310
1311 if (!fb_mode)
1312 fb_mode = name;
1313
1314 if (!fb_mode) {
1315 ret = -EINVAL;
1316 goto emode;
1317 }
1318
1319 if (mx3fb_pdata->mode && mx3fb_pdata->num_modes) {
1320 mode = mx3fb_pdata->mode;
1321 num_modes = mx3fb_pdata->num_modes;
1322 } else {
1323 mode = mx3fb_modedb;
1324 num_modes = ARRAY_SIZE(mx3fb_modedb);
1325 }
1326
1327 if (!fb_find_mode(&fbi->var, fbi, fb_mode, mode,
1328 num_modes, NULL, default_bpp)) {
1329 ret = -EBUSY;
1330 goto emode;
1331 }
1332
1333 fb_videomode_to_modelist(mode, num_modes, &fbi->modelist);
1334
1335 /* Default Y virtual size is 2x panel size */
1336 fbi->var.yres_virtual = fbi->var.yres * 2;
1337
1338 mx3fb->fbi = fbi;
1339
1340 /* set Display Interface clock period */
1341 mx3fb_write_reg(mx3fb, 0x00100010L, DI_HSP_CLK_PER);
1342 /* Might need to trigger HSP clock change - see 44.3.3.8.5 */
1343
1344 sdc_set_brightness(mx3fb, 255);
1345 sdc_set_global_alpha(mx3fb, true, 0xFF);
1346 sdc_set_color_key(mx3fb, IDMAC_SDC_0, false, 0);
1347
1348 mx3fbi = fbi->par;
1349 mx3fbi->idmac_channel = ichan;
1350 mx3fbi->ipu_ch = ichan->dma_chan.chan_id;
1351 mx3fbi->mx3fb = mx3fb;
1352 mx3fbi->blank = FB_BLANK_NORMAL;
1353
1354 init_completion(&mx3fbi->flip_cmpl);
1355 disable_irq(ichan->eof_irq);
1356 dev_dbg(mx3fb->dev, "disabling irq %d\n", ichan->eof_irq);
1357 ret = mx3fb_set_par(fbi);
1358 if (ret < 0)
1359 goto esetpar;
1360
1361 mx3fb_blank(FB_BLANK_UNBLANK, fbi);
1362
1363 dev_info(dev, "mx3fb: fb registered, using mode %s\n", fb_mode);
1364
1365 ret = register_framebuffer(fbi);
1366 if (ret < 0)
1367 goto erfb;
1368
1369 return 0;
1370
1371erfb:
1372esetpar:
1373emode:
1374 fb_dealloc_cmap(&fbi->cmap);
1375 framebuffer_release(fbi);
1376
1377 return ret;
1378}
1379
1380static bool chan_filter(struct dma_chan *chan, void *arg)
1381{
1382 struct dma_chan_request *rq = arg;
1383 struct device *dev;
1384 struct mx3fb_platform_data *mx3fb_pdata;
1385
1386 if (!rq)
1387 return false;
1388
1389 dev = rq->mx3fb->dev;
1390 mx3fb_pdata = dev->platform_data;
1391
1392 return rq->id == chan->chan_id &&
1393 mx3fb_pdata->dma_dev == chan->device->dev;
1394}
1395
1396static void release_fbi(struct fb_info *fbi)
1397{
1398 mx3fb_unmap_video_memory(fbi);
1399
1400 fb_dealloc_cmap(&fbi->cmap);
1401
1402 unregister_framebuffer(fbi);
1403 framebuffer_release(fbi);
1404}
1405
1406static int mx3fb_probe(struct platform_device *pdev)
1407{
1408 struct device *dev = &pdev->dev;
1409 int ret;
1410 struct resource *sdc_reg;
1411 struct mx3fb_data *mx3fb;
1412 dma_cap_mask_t mask;
1413 struct dma_chan *chan;
1414 struct dma_chan_request rq;
1415
1416 /*
1417 * Display Interface (DI) and Synchronous Display Controller (SDC)
1418 * registers
1419 */
1420 sdc_reg = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1421 if (!sdc_reg)
1422 return -EINVAL;
1423
1424 mx3fb = kzalloc(sizeof(*mx3fb), GFP_KERNEL);
1425 if (!mx3fb)
1426 return -ENOMEM;
1427
1428 spin_lock_init(&mx3fb->lock);
1429
1430 mx3fb->reg_base = ioremap(sdc_reg->start, resource_size(sdc_reg));
1431 if (!mx3fb->reg_base) {
1432 ret = -ENOMEM;
1433 goto eremap;
1434 }
1435
1436 pr_debug("Remapped %x to %x at %p\n", sdc_reg->start, sdc_reg->end,
1437 mx3fb->reg_base);
1438
1439 /* IDMAC interface */
1440 dmaengine_get();
1441
1442 mx3fb->dev = dev;
1443 platform_set_drvdata(pdev, mx3fb);
1444
1445 rq.mx3fb = mx3fb;
1446
1447 dma_cap_zero(mask);
1448 dma_cap_set(DMA_SLAVE, mask);
1449 dma_cap_set(DMA_PRIVATE, mask);
1450 rq.id = IDMAC_SDC_0;
1451 chan = dma_request_channel(mask, chan_filter, &rq);
1452 if (!chan) {
1453 ret = -EBUSY;
1454 goto ersdc0;
1455 }
1456
1457 ret = init_fb_chan(mx3fb, to_idmac_chan(chan));
1458 if (ret < 0)
1459 goto eisdc0;
1460
1461 mx3fb->backlight_level = 255;
1462
1463 return 0;
1464
1465eisdc0:
1466 dma_release_channel(chan);
1467ersdc0:
1468 dmaengine_put();
1469 iounmap(mx3fb->reg_base);
1470eremap:
1471 kfree(mx3fb);
1472 dev_err(dev, "mx3fb: failed to register fb\n");
1473 return ret;
1474}
1475
1476static int mx3fb_remove(struct platform_device *dev)
1477{
1478 struct mx3fb_data *mx3fb = platform_get_drvdata(dev);
1479 struct fb_info *fbi = mx3fb->fbi;
1480 struct mx3fb_info *mx3_fbi = fbi->par;
1481 struct dma_chan *chan;
1482
1483 chan = &mx3_fbi->idmac_channel->dma_chan;
1484 release_fbi(fbi);
1485
1486 dma_release_channel(chan);
1487 dmaengine_put();
1488
1489 iounmap(mx3fb->reg_base);
1490 kfree(mx3fb);
1491 return 0;
1492}
1493
1494static struct platform_driver mx3fb_driver = {
1495 .driver = {
1496 .name = MX3FB_NAME,
1497 },
1498 .probe = mx3fb_probe,
1499 .remove = mx3fb_remove,
1500 .suspend = mx3fb_suspend,
1501 .resume = mx3fb_resume,
1502};
1503
1504/*
1505 * Parse user specified options (`video=mx3fb:')
1506 * example:
1507 * video=mx3fb:bpp=16
1508 */
1509static int mx3fb_setup(void)
1510{
1511#ifndef MODULE
1512 char *opt, *options = NULL;
1513
1514 if (fb_get_options("mx3fb", &options))
1515 return -ENODEV;
1516
1517 if (!options || !*options)
1518 return 0;
1519
1520 while ((opt = strsep(&options, ",")) != NULL) {
1521 if (!*opt)
1522 continue;
1523 if (!strncmp(opt, "bpp=", 4))
1524 default_bpp = simple_strtoul(opt + 4, NULL, 0);
1525 else
1526 fb_mode = opt;
1527 }
1528#endif
1529
1530 return 0;
1531}
1532
1533static int __init mx3fb_init(void)
1534{
1535 int ret = mx3fb_setup();
1536
1537 if (ret < 0)
1538 return ret;
1539
1540 ret = platform_driver_register(&mx3fb_driver);
1541 return ret;
1542}
1543
1544static void __exit mx3fb_exit(void)
1545{
1546 platform_driver_unregister(&mx3fb_driver);
1547}
1548
1549module_init(mx3fb_init);
1550module_exit(mx3fb_exit);
1551
1552MODULE_AUTHOR("Freescale Semiconductor, Inc.");
1553MODULE_DESCRIPTION("MX3 framebuffer driver");
1554MODULE_ALIAS("platform:" MX3FB_NAME);
1555MODULE_LICENSE("GPL v2");
diff --git a/drivers/video/ps3fb.c b/drivers/video/ps3fb.c
index 38ac805db97d..87f826e4c958 100644
--- a/drivers/video/ps3fb.c
+++ b/drivers/video/ps3fb.c
@@ -1006,7 +1006,7 @@ static int ps3fb_xdr_settings(u64 xdr_lpar, struct device *dev)
1006 __func__, status); 1006 __func__, status);
1007 return -ENXIO; 1007 return -ENXIO;
1008 } 1008 }
1009 dev_dbg(dev, "video:%p ioif:%lx lpar:%lx size:%lx\n", 1009 dev_dbg(dev, "video:%p ioif:%lx lpar:%llx size:%lx\n",
1010 ps3fb_videomemory.address, GPU_IOIF, xdr_lpar, 1010 ps3fb_videomemory.address, GPU_IOIF, xdr_lpar,
1011 ps3fb_videomemory.size); 1011 ps3fb_videomemory.size);
1012 1012
@@ -1133,7 +1133,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
1133 __func__, status); 1133 __func__, status);
1134 goto err; 1134 goto err;
1135 } 1135 }
1136 dev_dbg(&dev->core, "ddr:lpar:0x%lx\n", ddr_lpar); 1136 dev_dbg(&dev->core, "ddr:lpar:0x%llx\n", ddr_lpar);
1137 1137
1138 status = lv1_gpu_context_allocate(ps3fb.memory_handle, 0, 1138 status = lv1_gpu_context_allocate(ps3fb.memory_handle, 0,
1139 &ps3fb.context_handle, 1139 &ps3fb.context_handle,
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index 8dc7109d61b7..2ba8f95516a0 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -298,6 +298,14 @@ static int decrease_reservation(unsigned long nr_pages)
298 frame_list[i] = pfn_to_mfn(pfn); 298 frame_list[i] = pfn_to_mfn(pfn);
299 299
300 scrub_page(page); 300 scrub_page(page);
301
302 if (!PageHighMem(page)) {
303 ret = HYPERVISOR_update_va_mapping(
304 (unsigned long)__va(pfn << PAGE_SHIFT),
305 __pte_ma(0), 0);
306 BUG_ON(ret);
307 }
308
301 } 309 }
302 310
303 /* Ensure that ballooned highmem pages don't have kmaps. */ 311 /* Ensure that ballooned highmem pages don't have kmaps. */
diff --git a/drivers/xen/xenfs/xenbus.c b/drivers/xen/xenfs/xenbus.c
index 875a4c59c594..a9592d981b10 100644
--- a/drivers/xen/xenfs/xenbus.c
+++ b/drivers/xen/xenfs/xenbus.c
@@ -291,7 +291,7 @@ static void watch_fired(struct xenbus_watch *watch,
291static int xenbus_write_transaction(unsigned msg_type, 291static int xenbus_write_transaction(unsigned msg_type,
292 struct xenbus_file_priv *u) 292 struct xenbus_file_priv *u)
293{ 293{
294 int rc, ret; 294 int rc;
295 void *reply; 295 void *reply;
296 struct xenbus_transaction_holder *trans = NULL; 296 struct xenbus_transaction_holder *trans = NULL;
297 LIST_HEAD(staging_q); 297 LIST_HEAD(staging_q);
@@ -326,15 +326,14 @@ static int xenbus_write_transaction(unsigned msg_type,
326 } 326 }
327 327
328 mutex_lock(&u->reply_mutex); 328 mutex_lock(&u->reply_mutex);
329 ret = queue_reply(&staging_q, &u->u.msg, sizeof(u->u.msg)); 329 rc = queue_reply(&staging_q, &u->u.msg, sizeof(u->u.msg));
330 if (!ret) 330 if (!rc)
331 ret = queue_reply(&staging_q, reply, u->u.msg.len); 331 rc = queue_reply(&staging_q, reply, u->u.msg.len);
332 if (!ret) { 332 if (!rc) {
333 list_splice_tail(&staging_q, &u->read_buffers); 333 list_splice_tail(&staging_q, &u->read_buffers);
334 wake_up(&u->read_waitq); 334 wake_up(&u->read_waitq);
335 } else { 335 } else {
336 queue_cleanup(&staging_q); 336 queue_cleanup(&staging_q);
337 rc = ret;
338 } 337 }
339 mutex_unlock(&u->reply_mutex); 338 mutex_unlock(&u->reply_mutex);
340 339
diff --git a/fs/9p/Kconfig b/fs/9p/Kconfig
new file mode 100644
index 000000000000..74e0723e90bc
--- /dev/null
+++ b/fs/9p/Kconfig
@@ -0,0 +1,10 @@
1config 9P_FS
2 tristate "Plan 9 Resource Sharing Support (9P2000) (Experimental)"
3 depends on INET && NET_9P && EXPERIMENTAL
4 help
5 If you say Y here, you will get experimental support for
6 Plan 9 resource sharing via the 9P2000 protocol.
7
8 See <http://v9fs.sf.net> for more information.
9
10 If unsure, say N.
diff --git a/fs/Kconfig b/fs/Kconfig
index 51307b0fdf0f..93945dd0b1ae 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -27,141 +27,8 @@ config FS_MBCACHE
27 default y if EXT4_FS=y && EXT4_FS_XATTR 27 default y if EXT4_FS=y && EXT4_FS_XATTR
28 default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR 28 default m if EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR
29 29
30config REISERFS_FS 30source "fs/reiserfs/Kconfig"
31 tristate "Reiserfs support" 31source "fs/jfs/Kconfig"
32 help
33 Stores not just filenames but the files themselves in a balanced
34 tree. Uses journalling.
35
36 Balanced trees are more efficient than traditional file system
37 architectural foundations.
38
39 In general, ReiserFS is as fast as ext2, but is very efficient with
40 large directories and small files. Additional patches are needed
41 for NFS and quotas, please see <http://www.namesys.com/> for links.
42
43 It is more easily extended to have features currently found in
44 database and keyword search systems than block allocation based file
45 systems are. The next version will be so extended, and will support
46 plugins consistent with our motto ``It takes more than a license to
47 make source code open.''
48
49 Read <http://www.namesys.com/> to learn more about reiserfs.
50
51 Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com.
52
53 If you like it, you can pay us to add new features to it that you
54 need, buy a support contract, or pay us to port it to another OS.
55
56config REISERFS_CHECK
57 bool "Enable reiserfs debug mode"
58 depends on REISERFS_FS
59 help
60 If you set this to Y, then ReiserFS will perform every check it can
61 possibly imagine of its internal consistency throughout its
62 operation. It will also go substantially slower. More than once we
63 have forgotten that this was on, and then gone despondent over the
64 latest benchmarks.:-) Use of this option allows our team to go all
65 out in checking for consistency when debugging without fear of its
66 effect on end users. If you are on the verge of sending in a bug
67 report, say Y and you might get a useful error message. Almost
68 everyone should say N.
69
70config REISERFS_PROC_INFO
71 bool "Stats in /proc/fs/reiserfs"
72 depends on REISERFS_FS && PROC_FS
73 help
74 Create under /proc/fs/reiserfs a hierarchy of files, displaying
75 various ReiserFS statistics and internal data at the expense of
76 making your kernel or module slightly larger (+8 KB). This also
77 increases the amount of kernel memory required for each mount.
78 Almost everyone but ReiserFS developers and people fine-tuning
79 reiserfs or tracing problems should say N.
80
81config REISERFS_FS_XATTR
82 bool "ReiserFS extended attributes"
83 depends on REISERFS_FS
84 help
85 Extended attributes are name:value pairs associated with inodes by
86 the kernel or by users (see the attr(5) manual page, or visit
87 <http://acl.bestbits.at/> for details).
88
89 If unsure, say N.
90
91config REISERFS_FS_POSIX_ACL
92 bool "ReiserFS POSIX Access Control Lists"
93 depends on REISERFS_FS_XATTR
94 select FS_POSIX_ACL
95 help
96 Posix Access Control Lists (ACLs) support permissions for users and
97 groups beyond the owner/group/world scheme.
98
99 To learn more about Access Control Lists, visit the Posix ACLs for
100 Linux website <http://acl.bestbits.at/>.
101
102 If you don't know what Access Control Lists are, say N
103
104config REISERFS_FS_SECURITY
105 bool "ReiserFS Security Labels"
106 depends on REISERFS_FS_XATTR
107 help
108 Security labels support alternative access control models
109 implemented by security modules like SELinux. This option
110 enables an extended attribute handler for file security
111 labels in the ReiserFS filesystem.
112
113 If you are not using a security module that requires using
114 extended attributes for file security labels, say N.
115
116config JFS_FS
117 tristate "JFS filesystem support"
118 select NLS
119 help
120 This is a port of IBM's Journaled Filesystem . More information is
121 available in the file <file:Documentation/filesystems/jfs.txt>.
122
123 If you do not intend to use the JFS filesystem, say N.
124
125config JFS_POSIX_ACL
126 bool "JFS POSIX Access Control Lists"
127 depends on JFS_FS
128 select FS_POSIX_ACL
129 help
130 Posix Access Control Lists (ACLs) support permissions for users and
131 groups beyond the owner/group/world scheme.
132
133 To learn more about Access Control Lists, visit the Posix ACLs for
134 Linux website <http://acl.bestbits.at/>.
135
136 If you don't know what Access Control Lists are, say N
137
138config JFS_SECURITY
139 bool "JFS Security Labels"
140 depends on JFS_FS
141 help
142 Security labels support alternative access control models
143 implemented by security modules like SELinux. This option
144 enables an extended attribute handler for file security
145 labels in the jfs filesystem.
146
147 If you are not using a security module that requires using
148 extended attributes for file security labels, say N.
149
150config JFS_DEBUG
151 bool "JFS debugging"
152 depends on JFS_FS
153 help
154 If you are experiencing any problems with the JFS filesystem, say
155 Y here. This will result in additional debugging messages to be
156 written to the system log. Under normal circumstances, this
157 results in very little overhead.
158
159config JFS_STATISTICS
160 bool "JFS statistics"
161 depends on JFS_FS
162 help
163 Enabling this option will cause statistics from the JFS file system
164 to be made available to the user in the /proc/fs/jfs/ directory.
165 32
166config FS_POSIX_ACL 33config FS_POSIX_ACL
167# Posix ACL utility routines (for now, only ext2/ext3/jfs/reiserfs/nfs4) 34# Posix ACL utility routines (for now, only ext2/ext3/jfs/reiserfs/nfs4)
@@ -182,111 +49,8 @@ config FILE_LOCKING
182 49
183source "fs/xfs/Kconfig" 50source "fs/xfs/Kconfig"
184source "fs/gfs2/Kconfig" 51source "fs/gfs2/Kconfig"
185 52source "fs/ocfs2/Kconfig"
186config OCFS2_FS 53source "fs/btrfs/Kconfig"
187 tristate "OCFS2 file system support"
188 depends on NET && SYSFS
189 select CONFIGFS_FS
190 select JBD2
191 select CRC32
192 select QUOTA
193 select QUOTA_TREE
194 help
195 OCFS2 is a general purpose extent based shared disk cluster file
196 system with many similarities to ext3. It supports 64 bit inode
197 numbers, and has automatically extending metadata groups which may
198 also make it attractive for non-clustered use.
199
200 You'll want to install the ocfs2-tools package in order to at least
201 get "mount.ocfs2".
202
203 Project web page: http://oss.oracle.com/projects/ocfs2
204 Tools web page: http://oss.oracle.com/projects/ocfs2-tools
205 OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/
206
207 For more information on OCFS2, see the file
208 <file:Documentation/filesystems/ocfs2.txt>.
209
210config OCFS2_FS_O2CB
211 tristate "O2CB Kernelspace Clustering"
212 depends on OCFS2_FS
213 default y
214 help
215 OCFS2 includes a simple kernelspace clustering package, the OCFS2
216 Cluster Base. It only requires a very small userspace component
217 to configure it. This comes with the standard ocfs2-tools package.
218 O2CB is limited to maintaining a cluster for OCFS2 file systems.
219 It cannot manage any other cluster applications.
220
221 It is always safe to say Y here, as the clustering method is
222 run-time selectable.
223
224config OCFS2_FS_USERSPACE_CLUSTER
225 tristate "OCFS2 Userspace Clustering"
226 depends on OCFS2_FS && DLM
227 default y
228 help
229 This option will allow OCFS2 to use userspace clustering services
230 in conjunction with the DLM in fs/dlm. If you are using a
231 userspace cluster manager, say Y here.
232
233 It is safe to say Y, as the clustering method is run-time
234 selectable.
235
236config OCFS2_FS_STATS
237 bool "OCFS2 statistics"
238 depends on OCFS2_FS
239 default y
240 help
241 This option allows some fs statistics to be captured. Enabling
242 this option may increase the memory consumption.
243
244config OCFS2_DEBUG_MASKLOG
245 bool "OCFS2 logging support"
246 depends on OCFS2_FS
247 default y
248 help
249 The ocfs2 filesystem has an extensive logging system. The system
250 allows selection of events to log via files in /sys/o2cb/logmask/.
251 This option will enlarge your kernel, but it allows debugging of
252 ocfs2 filesystem issues.
253
254config OCFS2_DEBUG_FS
255 bool "OCFS2 expensive checks"
256 depends on OCFS2_FS
257 default n
258 help
259 This option will enable expensive consistency checks. Enable
260 this option for debugging only as it is likely to decrease
261 performance of the filesystem.
262
263config OCFS2_FS_POSIX_ACL
264 bool "OCFS2 POSIX Access Control Lists"
265 depends on OCFS2_FS
266 select FS_POSIX_ACL
267 default n
268 help
269 Posix Access Control Lists (ACLs) support permissions for users and
270 groups beyond the owner/group/world scheme.
271
272config BTRFS_FS
273 tristate "Btrfs filesystem (EXPERIMENTAL) Unstable disk format"
274 depends on EXPERIMENTAL
275 select LIBCRC32C
276 select ZLIB_INFLATE
277 select ZLIB_DEFLATE
278 help
279 Btrfs is a new filesystem with extents, writable snapshotting,
280 support for multiple devices and many more features.
281
282 Btrfs is highly experimental, and THE DISK FORMAT IS NOT YET
283 FINALIZED. You should say N here unless you are interested in
284 testing Btrfs with non-critical data.
285
286 To compile this file system support as a module, choose M here. The
287 module will be called btrfs.
288
289 If unsure, say N.
290 54
291endif # BLOCK 55endif # BLOCK
292 56
@@ -348,64 +112,9 @@ config QUOTACTL
348 depends on XFS_QUOTA || QUOTA 112 depends on XFS_QUOTA || QUOTA
349 default y 113 default y
350 114
351config AUTOFS_FS 115source "fs/autofs/Kconfig"
352 tristate "Kernel automounter support" 116source "fs/autofs4/Kconfig"
353 help 117source "fs/fuse/Kconfig"
354 The automounter is a tool to automatically mount remote file systems
355 on demand. This implementation is partially kernel-based to reduce
356 overhead in the already-mounted case; this is unlike the BSD
357 automounter (amd), which is a pure user space daemon.
358
359 To use the automounter you need the user-space tools from the autofs
360 package; you can find the location in <file:Documentation/Changes>.
361 You also want to answer Y to "NFS file system support", below.
362
363 If you want to use the newer version of the automounter with more
364 features, say N here and say Y to "Kernel automounter v4 support",
365 below.
366
367 To compile this support as a module, choose M here: the module will be
368 called autofs.
369
370 If you are not a part of a fairly large, distributed network, you
371 probably do not need an automounter, and can say N here.
372
373config AUTOFS4_FS
374 tristate "Kernel automounter version 4 support (also supports v3)"
375 help
376 The automounter is a tool to automatically mount remote file systems
377 on demand. This implementation is partially kernel-based to reduce
378 overhead in the already-mounted case; this is unlike the BSD
379 automounter (amd), which is a pure user space daemon.
380
381 To use the automounter you need the user-space tools from
382 <ftp://ftp.kernel.org/pub/linux/daemons/autofs/v4/>; you also
383 want to answer Y to "NFS file system support", below.
384
385 To compile this support as a module, choose M here: the module will be
386 called autofs4. You will need to add "alias autofs autofs4" to your
387 modules configuration file.
388
389 If you are not a part of a fairly large, distributed network or
390 don't have a laptop which needs to dynamically reconfigure to the
391 local network, you probably do not need an automounter, and can say
392 N here.
393
394config FUSE_FS
395 tristate "FUSE (Filesystem in Userspace) support"
396 help
397 With FUSE it is possible to implement a fully functional filesystem
398 in a userspace program.
399
400 There's also companion library: libfuse. This library along with
401 utilities is available from the FUSE homepage:
402 <http://fuse.sourceforge.net/>
403
404 See <file:Documentation/filesystems/fuse.txt> for more information.
405 See <file:Documentation/Changes> for needed library/utility version.
406
407 If you want to develop a userspace FS, or if you want to use
408 a filesystem based on FUSE, answer Y or M.
409 118
410config GENERIC_ACL 119config GENERIC_ACL
411 bool 120 bool
@@ -414,64 +123,8 @@ config GENERIC_ACL
414if BLOCK 123if BLOCK
415menu "CD-ROM/DVD Filesystems" 124menu "CD-ROM/DVD Filesystems"
416 125
417config ISO9660_FS 126source "fs/isofs/Kconfig"
418 tristate "ISO 9660 CDROM file system support" 127source "fs/udf/Kconfig"
419 help
420 This is the standard file system used on CD-ROMs. It was previously
421 known as "High Sierra File System" and is called "hsfs" on other
422 Unix systems. The so-called Rock-Ridge extensions which allow for
423 long Unix filenames and symbolic links are also supported by this
424 driver. If you have a CD-ROM drive and want to do more with it than
425 just listen to audio CDs and watch its LEDs, say Y (and read
426 <file:Documentation/filesystems/isofs.txt> and the CD-ROM-HOWTO,
427 available from <http://www.tldp.org/docs.html#howto>), thereby
428 enlarging your kernel by about 27 KB; otherwise say N.
429
430 To compile this file system support as a module, choose M here: the
431 module will be called isofs.
432
433config JOLIET
434 bool "Microsoft Joliet CDROM extensions"
435 depends on ISO9660_FS
436 select NLS
437 help
438 Joliet is a Microsoft extension for the ISO 9660 CD-ROM file system
439 which allows for long filenames in unicode format (unicode is the
440 new 16 bit character code, successor to ASCII, which encodes the
441 characters of almost all languages of the world; see
442 <http://www.unicode.org/> for more information). Say Y here if you
443 want to be able to read Joliet CD-ROMs under Linux.
444
445config ZISOFS
446 bool "Transparent decompression extension"
447 depends on ISO9660_FS
448 select ZLIB_INFLATE
449 help
450 This is a Linux-specific extension to RockRidge which lets you store
451 data in compressed form on a CD-ROM and have it transparently
452 decompressed when the CD-ROM is accessed. See
453 <http://www.kernel.org/pub/linux/utils/fs/zisofs/> for the tools
454 necessary to create such a filesystem. Say Y here if you want to be
455 able to read such compressed CD-ROMs.
456
457config UDF_FS
458 tristate "UDF file system support"
459 select CRC_ITU_T
460 help
461 This is the new file system used on some CD-ROMs and DVDs. Say Y if
462 you intend to mount DVD discs or CDRW's written in packet mode, or
463 if written to by other UDF utilities, such as DirectCD.
464 Please read <file:Documentation/filesystems/udf.txt>.
465
466 To compile this file system support as a module, choose M here: the
467 module will be called udf.
468
469 If unsure, say N.
470
471config UDF_NLS
472 bool
473 default y
474 depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y)
475 128
476endmenu 129endmenu
477endif # BLOCK 130endif # BLOCK
@@ -479,182 +132,8 @@ endif # BLOCK
479if BLOCK 132if BLOCK
480menu "DOS/FAT/NT Filesystems" 133menu "DOS/FAT/NT Filesystems"
481 134
482config FAT_FS 135source "fs/fat/Kconfig"
483 tristate 136source "fs/ntfs/Kconfig"
484 select NLS
485 help
486 If you want to use one of the FAT-based file systems (the MS-DOS and
487 VFAT (Windows 95) file systems), then you must say Y or M here
488 to include FAT support. You will then be able to mount partitions or
489 diskettes with FAT-based file systems and transparently access the
490 files on them, i.e. MSDOS files will look and behave just like all
491 other Unix files.
492
493 This FAT support is not a file system in itself, it only provides
494 the foundation for the other file systems. You will have to say Y or
495 M to at least one of "MSDOS fs support" or "VFAT fs support" in
496 order to make use of it.
497
498 Another way to read and write MSDOS floppies and hard drive
499 partitions from within Linux (but not transparently) is with the
500 mtools ("man mtools") program suite. You don't need to say Y here in
501 order to do that.
502
503 If you need to move large files on floppies between a DOS and a
504 Linux box, say Y here, mount the floppy under Linux with an MSDOS
505 file system and use GNU tar's M option. GNU tar is a program
506 available for Unix and DOS ("man tar" or "info tar").
507
508 The FAT support will enlarge your kernel by about 37 KB. If unsure,
509 say Y.
510
511 To compile this as a module, choose M here: the module will be called
512 fat. Note that if you compile the FAT support as a module, you
513 cannot compile any of the FAT-based file systems into the kernel
514 -- they will have to be modules as well.
515
516config MSDOS_FS
517 tristate "MSDOS fs support"
518 select FAT_FS
519 help
520 This allows you to mount MSDOS partitions of your hard drive (unless
521 they are compressed; to access compressed MSDOS partitions under
522 Linux, you can either use the DOS emulator DOSEMU, described in the
523 DOSEMU-HOWTO, available from
524 <http://www.tldp.org/docs.html#howto>, or try dmsdosfs in
525 <ftp://ibiblio.org/pub/Linux/system/filesystems/dosfs/>. If you
526 intend to use dosemu with a non-compressed MSDOS partition, say Y
527 here) and MSDOS floppies. This means that file access becomes
528 transparent, i.e. the MSDOS files look and behave just like all
529 other Unix files.
530
531 If you have Windows 95 or Windows NT installed on your MSDOS
532 partitions, you should use the VFAT file system (say Y to "VFAT fs
533 support" below), or you will not be able to see the long filenames
534 generated by Windows 95 / Windows NT.
535
536 This option will enlarge your kernel by about 7 KB. If unsure,
537 answer Y. This will only work if you said Y to "DOS FAT fs support"
538 as well. To compile this as a module, choose M here: the module will
539 be called msdos.
540
541config VFAT_FS
542 tristate "VFAT (Windows-95) fs support"
543 select FAT_FS
544 help
545 This option provides support for normal Windows file systems with
546 long filenames. That includes non-compressed FAT-based file systems
547 used by Windows 95, Windows 98, Windows NT 4.0, and the Unix
548 programs from the mtools package.
549
550 The VFAT support enlarges your kernel by about 10 KB and it only
551 works if you said Y to the "DOS FAT fs support" above. Please read
552 the file <file:Documentation/filesystems/vfat.txt> for details. If
553 unsure, say Y.
554
555 To compile this as a module, choose M here: the module will be called
556 vfat.
557
558config FAT_DEFAULT_CODEPAGE
559 int "Default codepage for FAT"
560 depends on MSDOS_FS || VFAT_FS
561 default 437
562 help
563 This option should be set to the codepage of your FAT filesystems.
564 It can be overridden with the "codepage" mount option.
565 See <file:Documentation/filesystems/vfat.txt> for more information.
566
567config FAT_DEFAULT_IOCHARSET
568 string "Default iocharset for FAT"
569 depends on VFAT_FS
570 default "iso8859-1"
571 help
572 Set this to the default input/output character set you'd
573 like FAT to use. It should probably match the character set
574 that most of your FAT filesystems use, and can be overridden
575 with the "iocharset" mount option for FAT filesystems.
576 Note that "utf8" is not recommended for FAT filesystems.
577 If unsure, you shouldn't set "utf8" here.
578 See <file:Documentation/filesystems/vfat.txt> for more information.
579
580config NTFS_FS
581 tristate "NTFS file system support"
582 select NLS
583 help
584 NTFS is the file system of Microsoft Windows NT, 2000, XP and 2003.
585
586 Saying Y or M here enables read support. There is partial, but
587 safe, write support available. For write support you must also
588 say Y to "NTFS write support" below.
589
590 There are also a number of user-space tools available, called
591 ntfsprogs. These include ntfsundelete and ntfsresize, that work
592 without NTFS support enabled in the kernel.
593
594 This is a rewrite from scratch of Linux NTFS support and replaced
595 the old NTFS code starting with Linux 2.5.11. A backport to
596 the Linux 2.4 kernel series is separately available as a patch
597 from the project web site.
598
599 For more information see <file:Documentation/filesystems/ntfs.txt>
600 and <http://www.linux-ntfs.org/>.
601
602 To compile this file system support as a module, choose M here: the
603 module will be called ntfs.
604
605 If you are not using Windows NT, 2000, XP or 2003 in addition to
606 Linux on your computer it is safe to say N.
607
608config NTFS_DEBUG
609 bool "NTFS debugging support"
610 depends on NTFS_FS
611 help
612 If you are experiencing any problems with the NTFS file system, say
613 Y here. This will result in additional consistency checks to be
614 performed by the driver as well as additional debugging messages to
615 be written to the system log. Note that debugging messages are
616 disabled by default. To enable them, supply the option debug_msgs=1
617 at the kernel command line when booting the kernel or as an option
618 to insmod when loading the ntfs module. Once the driver is active,
619 you can enable debugging messages by doing (as root):
620 echo 1 > /proc/sys/fs/ntfs-debug
621 Replacing the "1" with "0" would disable debug messages.
622
623 If you leave debugging messages disabled, this results in little
624 overhead, but enabling debug messages results in very significant
625 slowdown of the system.
626
627 When reporting bugs, please try to have available a full dump of
628 debugging messages while the misbehaviour was occurring.
629
630config NTFS_RW
631 bool "NTFS write support"
632 depends on NTFS_FS
633 help
634 This enables the partial, but safe, write support in the NTFS driver.
635
636 The only supported operation is overwriting existing files, without
637 changing the file length. No file or directory creation, deletion or
638 renaming is possible. Note only non-resident files can be written to
639 so you may find that some very small files (<500 bytes or so) cannot
640 be written to.
641
642 While we cannot guarantee that it will not damage any data, we have
643 so far not received a single report where the driver would have
644 damaged someones data so we assume it is perfectly safe to use.
645
646 Note: While write support is safe in this version (a rewrite from
647 scratch of the NTFS support), it should be noted that the old NTFS
648 write support, included in Linux 2.5.10 and before (since 1997),
649 is not safe.
650
651 This is currently useful with TopologiLinux. TopologiLinux is run
652 on top of any DOS/Microsoft Windows system without partitioning your
653 hard disk. Unlike other Linux distributions TopologiLinux does not
654 need its own partition. For more information see
655 <http://topologi-linux.sourceforge.net/>
656
657 It is perfectly safe to say N here.
658 137
659endmenu 138endmenu
660endif # BLOCK 139endif # BLOCK
@@ -662,30 +141,7 @@ endif # BLOCK
662menu "Pseudo filesystems" 141menu "Pseudo filesystems"
663 142
664source "fs/proc/Kconfig" 143source "fs/proc/Kconfig"
665 144source "fs/sysfs/Kconfig"
666config SYSFS
667 bool "sysfs file system support" if EMBEDDED
668 default y
669 help
670 The sysfs filesystem is a virtual filesystem that the kernel uses to
671 export internal kernel objects, their attributes, and their
672 relationships to one another.
673
674 Users can use sysfs to ascertain useful information about the running
675 kernel, such as the devices the kernel has discovered on each bus and
676 which driver each is bound to. sysfs can also be used to tune devices
677 and other kernel subsystems.
678
679 Some system agents rely on the information in sysfs to operate.
680 /sbin/hotplug uses device and object attributes in sysfs to assist in
681 delegating policy decisions, like persistently naming devices.
682
683 sysfs is currently used by the block subsystem to mount the root
684 partition. If sysfs is disabled you must specify the boot device on
685 the kernel boot command line via its major and minor numbers. For
686 example, "root=03:01" for /dev/hda1.
687
688 Designers of embedded systems may wish to say N here to conserve space.
689 145
690config TMPFS 146config TMPFS
691 bool "Virtual memory file system support (former shm fs)" 147 bool "Virtual memory file system support (former shm fs)"
@@ -726,17 +182,7 @@ config HUGETLBFS
726config HUGETLB_PAGE 182config HUGETLB_PAGE
727 def_bool HUGETLBFS 183 def_bool HUGETLBFS
728 184
729config CONFIGFS_FS 185source "fs/configfs/Kconfig"
730 tristate "Userspace-driven configuration filesystem"
731 depends on SYSFS
732 help
733 configfs is a ram-based filesystem that provides the converse
734 of sysfs's functionality. Where sysfs is a filesystem-based
735 view of kernel objects, configfs is a filesystem-based manager
736 of kernel objects, or config_items.
737
738 Both sysfs and configfs can and should exist together on the
739 same system. One is not a replacement for the other.
740 186
741endmenu 187endmenu
742 188
@@ -755,425 +201,27 @@ menuconfig MISC_FILESYSTEMS
755 201
756if MISC_FILESYSTEMS 202if MISC_FILESYSTEMS
757 203
758config ADFS_FS 204source "fs/adfs/Kconfig"
759 tristate "ADFS file system support (EXPERIMENTAL)" 205source "fs/affs/Kconfig"
760 depends on BLOCK && EXPERIMENTAL 206source "fs/ecryptfs/Kconfig"
761 help 207source "fs/hfs/Kconfig"
762 The Acorn Disc Filing System is the standard file system of the 208source "fs/hfsplus/Kconfig"
763 RiscOS operating system which runs on Acorn's ARM-based Risc PC 209source "fs/befs/Kconfig"
764 systems and the Acorn Archimedes range of machines. If you say Y 210source "fs/bfs/Kconfig"
765 here, Linux will be able to read from ADFS partitions on hard drives 211source "fs/efs/Kconfig"
766 and from ADFS-formatted floppy discs. If you also want to be able to
767 write to those devices, say Y to "ADFS write support" below.
768
769 The ADFS partition should be the first partition (i.e.,
770 /dev/[hs]d?1) on each of your drives. Please read the file
771 <file:Documentation/filesystems/adfs.txt> for further details.
772
773 To compile this code as a module, choose M here: the module will be
774 called adfs.
775
776 If unsure, say N.
777
778config ADFS_FS_RW
779 bool "ADFS write support (DANGEROUS)"
780 depends on ADFS_FS
781 help
782 If you say Y here, you will be able to write to ADFS partitions on
783 hard drives and ADFS-formatted floppy disks. This is experimental
784 codes, so if you're unsure, say N.
785
786config AFFS_FS
787 tristate "Amiga FFS file system support (EXPERIMENTAL)"
788 depends on BLOCK && EXPERIMENTAL
789 help
790 The Fast File System (FFS) is the common file system used on hard
791 disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y
792 if you want to be able to read and write files from and to an Amiga
793 FFS partition on your hard drive. Amiga floppies however cannot be
794 read with this driver due to an incompatibility of the floppy
795 controller used in an Amiga and the standard floppy controller in
796 PCs and workstations. Read <file:Documentation/filesystems/affs.txt>
797 and <file:fs/affs/Changes>.
798
799 With this driver you can also mount disk files used by Bernd
800 Schmidt's Un*X Amiga Emulator
801 (<http://www.freiburg.linux.de/~uae/>).
802 If you want to do this, you will also need to say Y or M to "Loop
803 device support", above.
804
805 To compile this file system support as a module, choose M here: the
806 module will be called affs. If unsure, say N.
807
808config ECRYPT_FS
809 tristate "eCrypt filesystem layer support (EXPERIMENTAL)"
810 depends on EXPERIMENTAL && KEYS && CRYPTO && NET
811 help
812 Encrypted filesystem that operates on the VFS layer. See
813 <file:Documentation/filesystems/ecryptfs.txt> to learn more about
814 eCryptfs. Userspace components are required and can be
815 obtained from <http://ecryptfs.sf.net>.
816
817 To compile this file system support as a module, choose M here: the
818 module will be called ecryptfs.
819
820config HFS_FS
821 tristate "Apple Macintosh file system support (EXPERIMENTAL)"
822 depends on BLOCK && EXPERIMENTAL
823 select NLS
824 help
825 If you say Y here, you will be able to mount Macintosh-formatted
826 floppy disks and hard drive partitions with full read-write access.
827 Please read <file:Documentation/filesystems/hfs.txt> to learn about
828 the available mount options.
829
830 To compile this file system support as a module, choose M here: the
831 module will be called hfs.
832
833config HFSPLUS_FS
834 tristate "Apple Extended HFS file system support"
835 depends on BLOCK
836 select NLS
837 select NLS_UTF8
838 help
839 If you say Y here, you will be able to mount extended format
840 Macintosh-formatted hard drive partitions with full read-write access.
841
842 This file system is often called HFS+ and was introduced with
843 MacOS 8. It includes all Mac specific filesystem data such as
844 data forks and creator codes, but it also has several UNIX
845 style features such as file ownership and permissions.
846
847config BEFS_FS
848 tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)"
849 depends on BLOCK && EXPERIMENTAL
850 select NLS
851 help
852 The BeOS File System (BeFS) is the native file system of Be, Inc's
853 BeOS. Notable features include support for arbitrary attributes
854 on files and directories, and database-like indices on selected
855 attributes. (Also note that this driver doesn't make those features
856 available at this time). It is a 64 bit filesystem, so it supports
857 extremely large volumes and files.
858
859 If you use this filesystem, you should also say Y to at least one
860 of the NLS (native language support) options below.
861
862 If you don't know what this is about, say N.
863
864 To compile this as a module, choose M here: the module will be
865 called befs.
866
867config BEFS_DEBUG
868 bool "Debug BeFS"
869 depends on BEFS_FS
870 help
871 If you say Y here, you can use the 'debug' mount option to enable
872 debugging output from the driver.
873
874config BFS_FS
875 tristate "BFS file system support (EXPERIMENTAL)"
876 depends on BLOCK && EXPERIMENTAL
877 help
878 Boot File System (BFS) is a file system used under SCO UnixWare to
879 allow the bootloader access to the kernel image and other important
880 files during the boot process. It is usually mounted under /stand
881 and corresponds to the slice marked as "STAND" in the UnixWare
882 partition. You should say Y if you want to read or write the files
883 on your /stand slice from within Linux. You then also need to say Y
884 to "UnixWare slices support", below. More information about the BFS
885 file system is contained in the file
886 <file:Documentation/filesystems/bfs.txt>.
887
888 If you don't know what this is about, say N.
889
890 To compile this as a module, choose M here: the module will be called
891 bfs. Note that the file system of your root partition (the one
892 containing the directory /) cannot be compiled as a module.
893
894
895
896config EFS_FS
897 tristate "EFS file system support (read only) (EXPERIMENTAL)"
898 depends on BLOCK && EXPERIMENTAL
899 help
900 EFS is an older file system used for non-ISO9660 CD-ROMs and hard
901 disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer
902 uses the XFS file system for hard disk partitions however).
903
904 This implementation only offers read-only access. If you don't know
905 what all this is about, it's safe to say N. For more information
906 about EFS see its home page at <http://aeschi.ch.eu.org/efs/>.
907
908 To compile the EFS file system support as a module, choose M here: the
909 module will be called efs.
910
911source "fs/jffs2/Kconfig" 212source "fs/jffs2/Kconfig"
912# UBIFS File system configuration 213# UBIFS File system configuration
913source "fs/ubifs/Kconfig" 214source "fs/ubifs/Kconfig"
914 215source "fs/cramfs/Kconfig"
915config CRAMFS 216source "fs/squashfs/Kconfig"
916 tristate "Compressed ROM file system support (cramfs)" 217source "fs/freevxfs/Kconfig"
917 depends on BLOCK 218source "fs/minix/Kconfig"
918 select ZLIB_INFLATE 219source "fs/omfs/Kconfig"
919 help 220source "fs/hpfs/Kconfig"
920 Saying Y here includes support for CramFs (Compressed ROM File 221source "fs/qnx4/Kconfig"
921 System). CramFs is designed to be a simple, small, and compressed 222source "fs/romfs/Kconfig"
922 file system for ROM based embedded systems. CramFs is read-only, 223source "fs/sysv/Kconfig"
923 limited to 256MB file systems (with 16MB files), and doesn't support 224source "fs/ufs/Kconfig"
924 16/32 bits uid/gid, hard links and timestamps.
925
926 See <file:Documentation/filesystems/cramfs.txt> and
927 <file:fs/cramfs/README> for further information.
928
929 To compile this as a module, choose M here: the module will be called
930 cramfs. Note that the root file system (the one containing the
931 directory /) cannot be compiled as a module.
932
933 If unsure, say N.
934
935config SQUASHFS
936 tristate "SquashFS 4.0 - Squashed file system support"
937 depends on BLOCK
938 select ZLIB_INFLATE
939 help
940 Saying Y here includes support for SquashFS 4.0 (a Compressed
941 Read-Only File System). Squashfs is a highly compressed read-only
942 filesystem for Linux. It uses zlib compression to compress both
943 files, inodes and directories. Inodes in the system are very small
944 and all blocks are packed to minimise data overhead. Block sizes
945 greater than 4K are supported up to a maximum of 1 Mbytes (default
946 block size 128K). SquashFS 4.0 supports 64 bit filesystems and files
947 (larger than 4GB), full uid/gid information, hard links and
948 timestamps.
949
950 Squashfs is intended for general read-only filesystem use, for
951 archival use (i.e. in cases where a .tar.gz file may be used), and in
952 embedded systems where low overhead is needed. Further information
953 and tools are available from http://squashfs.sourceforge.net.
954
955 If you want to compile this as a module ( = code which can be
956 inserted in and removed from the running kernel whenever you want),
957 say M here and read <file:Documentation/modules.txt>. The module
958 will be called squashfs. Note that the root file system (the one
959 containing the directory /) cannot be compiled as a module.
960
961 If unsure, say N.
962
963config SQUASHFS_EMBEDDED
964
965 bool "Additional option for memory-constrained systems"
966 depends on SQUASHFS
967 default n
968 help
969 Saying Y here allows you to specify cache size.
970
971 If unsure, say N.
972
973config SQUASHFS_FRAGMENT_CACHE_SIZE
974 int "Number of fragments cached" if SQUASHFS_EMBEDDED
975 depends on SQUASHFS
976 default "3"
977 help
978 By default SquashFS caches the last 3 fragments read from
979 the filesystem. Increasing this amount may mean SquashFS
980 has to re-read fragments less often from disk, at the expense
981 of extra system memory. Decreasing this amount will mean
982 SquashFS uses less memory at the expense of extra reads from disk.
983
984 Note there must be at least one cached fragment. Anything
985 much more than three will probably not make much difference.
986
987config VXFS_FS
988 tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
989 depends on BLOCK
990 help
991 FreeVxFS is a file system driver that support the VERITAS VxFS(TM)
992 file system format. VERITAS VxFS(TM) is the standard file system
993 of SCO UnixWare (and possibly others) and optionally available
994 for Sunsoft Solaris, HP-UX and many other operating systems.
995 Currently only readonly access is supported.
996
997 NOTE: the file system type as used by mount(1), mount(2) and
998 fstab(5) is 'vxfs' as it describes the file system format, not
999 the actual driver.
1000
1001 To compile this as a module, choose M here: the module will be
1002 called freevxfs. If unsure, say N.
1003
1004config MINIX_FS
1005 tristate "Minix file system support"
1006 depends on BLOCK
1007 help
1008 Minix is a simple operating system used in many classes about OS's.
1009 The minix file system (method to organize files on a hard disk
1010 partition or a floppy disk) was the original file system for Linux,
1011 but has been superseded by the second extended file system ext2fs.
1012 You don't want to use the minix file system on your hard disk
1013 because of certain built-in restrictions, but it is sometimes found
1014 on older Linux floppy disks. This option will enlarge your kernel
1015 by about 28 KB. If unsure, say N.
1016
1017 To compile this file system support as a module, choose M here: the
1018 module will be called minix. Note that the file system of your root
1019 partition (the one containing the directory /) cannot be compiled as
1020 a module.
1021
1022config OMFS_FS
1023 tristate "SonicBlue Optimized MPEG File System support"
1024 depends on BLOCK
1025 select CRC_ITU_T
1026 help
1027 This is the proprietary file system used by the Rio Karma music
1028 player and ReplayTV DVR. Despite the name, this filesystem is not
1029 more efficient than a standard FS for MPEG files, in fact likely
1030 the opposite is true. Say Y if you have either of these devices
1031 and wish to mount its disk.
1032
1033 To compile this file system support as a module, choose M here: the
1034 module will be called omfs. If unsure, say N.
1035
1036config HPFS_FS
1037 tristate "OS/2 HPFS file system support"
1038 depends on BLOCK
1039 help
1040 OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS
1041 is the file system used for organizing files on OS/2 hard disk
1042 partitions. Say Y if you want to be able to read files from and
1043 write files to an OS/2 HPFS partition on your hard drive. OS/2
1044 floppies however are in regular MSDOS format, so you don't need this
1045 option in order to be able to read them. Read
1046 <file:Documentation/filesystems/hpfs.txt>.
1047
1048 To compile this file system support as a module, choose M here: the
1049 module will be called hpfs. If unsure, say N.
1050
1051
1052config QNX4FS_FS
1053 tristate "QNX4 file system support (read only)"
1054 depends on BLOCK
1055 help
1056 This is the file system used by the real-time operating systems
1057 QNX 4 and QNX 6 (the latter is also called QNX RTP).
1058 Further information is available at <http://www.qnx.com/>.
1059 Say Y if you intend to mount QNX hard disks or floppies.
1060 Unless you say Y to "QNX4FS read-write support" below, you will
1061 only be able to read these file systems.
1062
1063 To compile this file system support as a module, choose M here: the
1064 module will be called qnx4.
1065
1066 If you don't know whether you need it, then you don't need it:
1067 answer N.
1068
1069config QNX4FS_RW
1070 bool "QNX4FS write support (DANGEROUS)"
1071 depends on QNX4FS_FS && EXPERIMENTAL && BROKEN
1072 help
1073 Say Y if you want to test write support for QNX4 file systems.
1074
1075 It's currently broken, so for now:
1076 answer N.
1077
1078config ROMFS_FS
1079 tristate "ROM file system support"
1080 depends on BLOCK
1081 ---help---
1082 This is a very small read-only file system mainly intended for
1083 initial ram disks of installation disks, but it could be used for
1084 other read-only media as well. Read
1085 <file:Documentation/filesystems/romfs.txt> for details.
1086
1087 To compile this file system support as a module, choose M here: the
1088 module will be called romfs. Note that the file system of your
1089 root partition (the one containing the directory /) cannot be a
1090 module.
1091
1092 If you don't know whether you need it, then you don't need it:
1093 answer N.
1094
1095
1096config SYSV_FS
1097 tristate "System V/Xenix/V7/Coherent file system support"
1098 depends on BLOCK
1099 help
1100 SCO, Xenix and Coherent are commercial Unix systems for Intel
1101 machines, and Version 7 was used on the DEC PDP-11. Saying Y
1102 here would allow you to read from their floppies and hard disk
1103 partitions.
1104
1105 If you have floppies or hard disk partitions like that, it is likely
1106 that they contain binaries from those other Unix systems; in order
1107 to run these binaries, you will want to install linux-abi which is
1108 a set of kernel modules that lets you run SCO, Xenix, Wyse,
1109 UnixWare, Dell Unix and System V programs under Linux. It is
1110 available via FTP (user: ftp) from
1111 <ftp://ftp.openlinux.org/pub/people/hch/linux-abi/>).
1112 NOTE: that will work only for binaries from Intel-based systems;
1113 PDP ones will have to wait until somebody ports Linux to -11 ;-)
1114
1115 If you only intend to mount files from some other Unix over the
1116 network using NFS, you don't need the System V file system support
1117 (but you need NFS file system support obviously).
1118
1119 Note that this option is generally not needed for floppies, since a
1120 good portable way to transport files and directories between unixes
1121 (and even other operating systems) is given by the tar program ("man
1122 tar" or preferably "info tar"). Note also that this option has
1123 nothing whatsoever to do with the option "System V IPC". Read about
1124 the System V file system in
1125 <file:Documentation/filesystems/sysv-fs.txt>.
1126 Saying Y here will enlarge your kernel by about 27 KB.
1127
1128 To compile this as a module, choose M here: the module will be called
1129 sysv.
1130
1131 If you haven't heard about all of this before, it's safe to say N.
1132
1133
1134config UFS_FS
1135 tristate "UFS file system support (read only)"
1136 depends on BLOCK
1137 help
1138 BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD,
1139 OpenBSD and NeXTstep) use a file system called UFS. Some System V
1140 Unixes can create and mount hard disk partitions and diskettes using
1141 this file system as well. Saying Y here will allow you to read from
1142 these partitions; if you also want to write to them, say Y to the
1143 experimental "UFS file system write support", below. Please read the
1144 file <file:Documentation/filesystems/ufs.txt> for more information.
1145
1146 The recently released UFS2 variant (used in FreeBSD 5.x) is
1147 READ-ONLY supported.
1148
1149 Note that this option is generally not needed for floppies, since a
1150 good portable way to transport files and directories between unixes
1151 (and even other operating systems) is given by the tar program ("man
1152 tar" or preferably "info tar").
1153
1154 When accessing NeXTstep files, you may need to convert them from the
1155 NeXT character set to the Latin1 character set; use the program
1156 recode ("info recode") for this purpose.
1157
1158 To compile the UFS file system support as a module, choose M here: the
1159 module will be called ufs.
1160
1161 If you haven't heard about all of this before, it's safe to say N.
1162
1163config UFS_FS_WRITE
1164 bool "UFS file system write support (DANGEROUS)"
1165 depends on UFS_FS && EXPERIMENTAL
1166 help
1167 Say Y here if you want to try writing to UFS partitions. This is
1168 experimental, so you should back up your UFS partitions beforehand.
1169
1170config UFS_DEBUG
1171 bool "UFS debugging"
1172 depends on UFS_FS
1173 help
1174 If you are experiencing any problems with the UFS filesystem, say
1175 Y here. This will result in _many_ additional debugging messages to be
1176 written to the system log.
1177 225
1178endif # MISC_FILESYSTEMS 226endif # MISC_FILESYSTEMS
1179 227
@@ -1193,173 +241,8 @@ menuconfig NETWORK_FILESYSTEMS
1193 241
1194if NETWORK_FILESYSTEMS 242if NETWORK_FILESYSTEMS
1195 243
1196config NFS_FS 244source "fs/nfs/Kconfig"
1197 tristate "NFS client support" 245source "fs/nfsd/Kconfig"
1198 depends on INET
1199 select LOCKD
1200 select SUNRPC
1201 select NFS_ACL_SUPPORT if NFS_V3_ACL
1202 help
1203 Choose Y here if you want to access files residing on other
1204 computers using Sun's Network File System protocol. To compile
1205 this file system support as a module, choose M here: the module
1206 will be called nfs.
1207
1208 To mount file systems exported by NFS servers, you also need to
1209 install the user space mount.nfs command which can be found in
1210 the Linux nfs-utils package, available from http://linux-nfs.org/.
1211 Information about using the mount command is available in the
1212 mount(8) man page. More detail about the Linux NFS client
1213 implementation is available via the nfs(5) man page.
1214
1215 Below you can choose which versions of the NFS protocol are
1216 available in the kernel to mount NFS servers. Support for NFS
1217 version 2 (RFC 1094) is always available when NFS_FS is selected.
1218
1219 To configure a system which mounts its root file system via NFS
1220 at boot time, say Y here, select "Kernel level IP
1221 autoconfiguration" in the NETWORK menu, and select "Root file
1222 system on NFS" below. You cannot compile this file system as a
1223 module in this case.
1224
1225 If unsure, say N.
1226
1227config NFS_V3
1228 bool "NFS client support for NFS version 3"
1229 depends on NFS_FS
1230 help
1231 This option enables support for version 3 of the NFS protocol
1232 (RFC 1813) in the kernel's NFS client.
1233
1234 If unsure, say Y.
1235
1236config NFS_V3_ACL
1237 bool "NFS client support for the NFSv3 ACL protocol extension"
1238 depends on NFS_V3
1239 help
1240 Some NFS servers support an auxiliary NFSv3 ACL protocol that
1241 Sun added to Solaris but never became an official part of the
1242 NFS version 3 protocol. This protocol extension allows
1243 applications on NFS clients to manipulate POSIX Access Control
1244 Lists on files residing on NFS servers. NFS servers enforce
1245 ACLs on local files whether this protocol is available or not.
1246
1247 Choose Y here if your NFS server supports the Solaris NFSv3 ACL
1248 protocol extension and you want your NFS client to allow
1249 applications to access and modify ACLs on files on the server.
1250
1251 Most NFS servers don't support the Solaris NFSv3 ACL protocol
1252 extension. You can choose N here or specify the "noacl" mount
1253 option to prevent your NFS client from trying to use the NFSv3
1254 ACL protocol.
1255
1256 If unsure, say N.
1257
1258config NFS_V4
1259 bool "NFS client support for NFS version 4 (EXPERIMENTAL)"
1260 depends on NFS_FS && EXPERIMENTAL
1261 select RPCSEC_GSS_KRB5
1262 help
1263 This option enables support for version 4 of the NFS protocol
1264 (RFC 3530) in the kernel's NFS client.
1265
1266 To mount NFS servers using NFSv4, you also need to install user
1267 space programs which can be found in the Linux nfs-utils package,
1268 available from http://linux-nfs.org/.
1269
1270 If unsure, say N.
1271
1272config ROOT_NFS
1273 bool "Root file system on NFS"
1274 depends on NFS_FS=y && IP_PNP
1275 help
1276 If you want your system to mount its root file system via NFS,
1277 choose Y here. This is common practice for managing systems
1278 without local permanent storage. For details, read
1279 <file:Documentation/filesystems/nfsroot.txt>.
1280
1281 Most people say N here.
1282
1283config NFSD
1284 tristate "NFS server support"
1285 depends on INET
1286 select LOCKD
1287 select SUNRPC
1288 select EXPORTFS
1289 select NFS_ACL_SUPPORT if NFSD_V2_ACL
1290 help
1291 Choose Y here if you want to allow other computers to access
1292 files residing on this system using Sun's Network File System
1293 protocol. To compile the NFS server support as a module,
1294 choose M here: the module will be called nfsd.
1295
1296 You may choose to use a user-space NFS server instead, in which
1297 case you can choose N here.
1298
1299 To export local file systems using NFS, you also need to install
1300 user space programs which can be found in the Linux nfs-utils
1301 package, available from http://linux-nfs.org/. More detail about
1302 the Linux NFS server implementation is available via the
1303 exports(5) man page.
1304
1305 Below you can choose which versions of the NFS protocol are
1306 available to clients mounting the NFS server on this system.
1307 Support for NFS version 2 (RFC 1094) is always available when
1308 CONFIG_NFSD is selected.
1309
1310 If unsure, say N.
1311
1312config NFSD_V2_ACL
1313 bool
1314 depends on NFSD
1315
1316config NFSD_V3
1317 bool "NFS server support for NFS version 3"
1318 depends on NFSD
1319 help
1320 This option enables support in your system's NFS server for
1321 version 3 of the NFS protocol (RFC 1813).
1322
1323 If unsure, say Y.
1324
1325config NFSD_V3_ACL
1326 bool "NFS server support for the NFSv3 ACL protocol extension"
1327 depends on NFSD_V3
1328 select NFSD_V2_ACL
1329 help
1330 Solaris NFS servers support an auxiliary NFSv3 ACL protocol that
1331 never became an official part of the NFS version 3 protocol.
1332 This protocol extension allows applications on NFS clients to
1333 manipulate POSIX Access Control Lists on files residing on NFS
1334 servers. NFS servers enforce POSIX ACLs on local files whether
1335 this protocol is available or not.
1336
1337 This option enables support in your system's NFS server for the
1338 NFSv3 ACL protocol extension allowing NFS clients to manipulate
1339 POSIX ACLs on files exported by your system's NFS server. NFS
1340 clients which support the Solaris NFSv3 ACL protocol can then
1341 access and modify ACLs on your NFS server.
1342
1343 To store ACLs on your NFS server, you also need to enable ACL-
1344 related CONFIG options for your local file systems of choice.
1345
1346 If unsure, say N.
1347
1348config NFSD_V4
1349 bool "NFS server support for NFS version 4 (EXPERIMENTAL)"
1350 depends on NFSD && PROC_FS && EXPERIMENTAL
1351 select NFSD_V3
1352 select FS_POSIX_ACL
1353 select RPCSEC_GSS_KRB5
1354 help
1355 This option enables support in your system's NFS server for
1356 version 4 of the NFS protocol (RFC 3530).
1357
1358 To export files using NFSv4, you need to install additional user
1359 space programs which can be found in the Linux nfs-utils package,
1360 available from http://linux-nfs.org/.
1361
1362 If unsure, say N.
1363 246
1364config LOCKD 247config LOCKD
1365 tristate 248 tristate
@@ -1381,221 +264,13 @@ config NFS_COMMON
1381 depends on NFSD || NFS_FS 264 depends on NFSD || NFS_FS
1382 default y 265 default y
1383 266
1384config SUNRPC 267source "net/sunrpc/Kconfig"
1385 tristate 268source "fs/smbfs/Kconfig"
1386
1387config SUNRPC_GSS
1388 tristate
1389
1390config SUNRPC_XPRT_RDMA
1391 tristate
1392 depends on SUNRPC && INFINIBAND && EXPERIMENTAL
1393 default SUNRPC && INFINIBAND
1394 help
1395 This option enables an RPC client transport capability that
1396 allows the NFS client to mount servers via an RDMA-enabled
1397 transport.
1398
1399 To compile RPC client RDMA transport support as a module,
1400 choose M here: the module will be called xprtrdma.
1401
1402 If unsure, say N.
1403
1404config SUNRPC_REGISTER_V4
1405 bool "Register local RPC services via rpcbind v4 (EXPERIMENTAL)"
1406 depends on SUNRPC && EXPERIMENTAL
1407 default n
1408 help
1409 Sun added support for registering RPC services at an IPv6
1410 address by creating two new versions of the rpcbind protocol
1411 (RFC 1833).
1412
1413 This option enables support in the kernel RPC server for
1414 registering kernel RPC services via version 4 of the rpcbind
1415 protocol. If you enable this option, you must run a portmapper
1416 daemon that supports rpcbind protocol version 4.
1417
1418 Serving NFS over IPv6 from knfsd (the kernel's NFS server)
1419 requires that you enable this option and use a portmapper that
1420 supports rpcbind version 4.
1421
1422 If unsure, say N to get traditional behavior (register kernel
1423 RPC services using only rpcbind version 2). Distributions
1424 using the legacy Linux portmapper daemon must say N here.
1425
1426config RPCSEC_GSS_KRB5
1427 tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)"
1428 depends on SUNRPC && EXPERIMENTAL
1429 select SUNRPC_GSS
1430 select CRYPTO
1431 select CRYPTO_MD5
1432 select CRYPTO_DES
1433 select CRYPTO_CBC
1434 help
1435 Choose Y here to enable Secure RPC using the Kerberos version 5
1436 GSS-API mechanism (RFC 1964).
1437
1438 Secure RPC calls with Kerberos require an auxiliary user-space
1439 daemon which may be found in the Linux nfs-utils package
1440 available from http://linux-nfs.org/. In addition, user-space
1441 Kerberos support should be installed.
1442
1443 If unsure, say N.
1444
1445config RPCSEC_GSS_SPKM3
1446 tristate "Secure RPC: SPKM3 mechanism (EXPERIMENTAL)"
1447 depends on SUNRPC && EXPERIMENTAL
1448 select SUNRPC_GSS
1449 select CRYPTO
1450 select CRYPTO_MD5
1451 select CRYPTO_DES
1452 select CRYPTO_CAST5
1453 select CRYPTO_CBC
1454 help
1455 Choose Y here to enable Secure RPC using the SPKM3 public key
1456 GSS-API mechansim (RFC 2025).
1457
1458 Secure RPC calls with SPKM3 require an auxiliary userspace
1459 daemon which may be found in the Linux nfs-utils package
1460 available from http://linux-nfs.org/.
1461
1462 If unsure, say N.
1463
1464config SMB_FS
1465 tristate "SMB file system support (OBSOLETE, please use CIFS)"
1466 depends on INET
1467 select NLS
1468 help
1469 SMB (Server Message Block) is the protocol Windows for Workgroups
1470 (WfW), Windows 95/98, Windows NT and OS/2 Lan Manager use to share
1471 files and printers over local networks. Saying Y here allows you to
1472 mount their file systems (often called "shares" in this context) and
1473 access them just like any other Unix directory. Currently, this
1474 works only if the Windows machines use TCP/IP as the underlying
1475 transport protocol, and not NetBEUI. For details, read
1476 <file:Documentation/filesystems/smbfs.txt> and the SMB-HOWTO,
1477 available from <http://www.tldp.org/docs.html#howto>.
1478
1479 Note: if you just want your box to act as an SMB *server* and make
1480 files and printing services available to Windows clients (which need
1481 to have a TCP/IP stack), you don't need to say Y here; you can use
1482 the program SAMBA (available from <ftp://ftp.samba.org/pub/samba/>)
1483 for that.
1484
1485 General information about how to connect Linux, Windows machines and
1486 Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>.
1487
1488 To compile the SMB support as a module, choose M here:
1489 the module will be called smbfs. Most people say N, however.
1490
1491config SMB_NLS_DEFAULT
1492 bool "Use a default NLS"
1493 depends on SMB_FS
1494 help
1495 Enabling this will make smbfs use nls translations by default. You
1496 need to specify the local charset (CONFIG_NLS_DEFAULT) in the nls
1497 settings and you need to give the default nls for the SMB server as
1498 CONFIG_SMB_NLS_REMOTE.
1499
1500 The nls settings can be changed at mount time, if your smbmount
1501 supports that, using the codepage and iocharset parameters.
1502
1503 smbmount from samba 2.2.0 or later supports this.
1504
1505config SMB_NLS_REMOTE
1506 string "Default Remote NLS Option"
1507 depends on SMB_NLS_DEFAULT
1508 default "cp437"
1509 help
1510 This setting allows you to specify a default value for which
1511 codepage the server uses. If this field is left blank no
1512 translations will be done by default. The local codepage/charset
1513 default to CONFIG_NLS_DEFAULT.
1514
1515 The nls settings can be changed at mount time, if your smbmount
1516 supports that, using the codepage and iocharset parameters.
1517
1518 smbmount from samba 2.2.0 or later supports this.
1519
1520source "fs/cifs/Kconfig" 269source "fs/cifs/Kconfig"
1521
1522config NCP_FS
1523 tristate "NCP file system support (to mount NetWare volumes)"
1524 depends on IPX!=n || INET
1525 help
1526 NCP (NetWare Core Protocol) is a protocol that runs over IPX and is
1527 used by Novell NetWare clients to talk to file servers. It is to
1528 IPX what NFS is to TCP/IP, if that helps. Saying Y here allows you
1529 to mount NetWare file server volumes and to access them just like
1530 any other Unix directory. For details, please read the file
1531 <file:Documentation/filesystems/ncpfs.txt> in the kernel source and
1532 the IPX-HOWTO from <http://www.tldp.org/docs.html#howto>.
1533
1534 You do not have to say Y here if you want your Linux box to act as a
1535 file *server* for Novell NetWare clients.
1536
1537 General information about how to connect Linux, Windows machines and
1538 Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>.
1539
1540 To compile this as a module, choose M here: the module will be called
1541 ncpfs. Say N unless you are connected to a Novell network.
1542
1543source "fs/ncpfs/Kconfig" 270source "fs/ncpfs/Kconfig"
1544 271source "fs/coda/Kconfig"
1545config CODA_FS 272source "fs/afs/Kconfig"
1546 tristate "Coda file system support (advanced network fs)" 273source "fs/9p/Kconfig"
1547 depends on INET
1548 help
1549 Coda is an advanced network file system, similar to NFS in that it
1550 enables you to mount file systems of a remote server and access them
1551 with regular Unix commands as if they were sitting on your hard
1552 disk. Coda has several advantages over NFS: support for
1553 disconnected operation (e.g. for laptops), read/write server
1554 replication, security model for authentication and encryption,
1555 persistent client caches and write back caching.
1556
1557 If you say Y here, your Linux box will be able to act as a Coda
1558 *client*. You will need user level code as well, both for the
1559 client and server. Servers are currently user level, i.e. they need
1560 no kernel support. Please read
1561 <file:Documentation/filesystems/coda.txt> and check out the Coda
1562 home page <http://www.coda.cs.cmu.edu/>.
1563
1564 To compile the coda client support as a module, choose M here: the
1565 module will be called coda.
1566
1567config AFS_FS
1568 tristate "Andrew File System support (AFS) (EXPERIMENTAL)"
1569 depends on INET && EXPERIMENTAL
1570 select AF_RXRPC
1571 help
1572 If you say Y here, you will get an experimental Andrew File System
1573 driver. It currently only supports unsecured read-only AFS access.
1574
1575 See <file:Documentation/filesystems/afs.txt> for more information.
1576
1577 If unsure, say N.
1578
1579config AFS_DEBUG
1580 bool "AFS dynamic debugging"
1581 depends on AFS_FS
1582 help
1583 Say Y here to make runtime controllable debugging messages appear.
1584
1585 See <file:Documentation/filesystems/afs.txt> for more information.
1586
1587 If unsure, say N.
1588
1589config 9P_FS
1590 tristate "Plan 9 Resource Sharing Support (9P2000) (Experimental)"
1591 depends on INET && NET_9P && EXPERIMENTAL
1592 help
1593 If you say Y here, you will get experimental support for
1594 Plan 9 resource sharing via the 9P2000 protocol.
1595
1596 See <http://v9fs.sf.net> for more information.
1597
1598 If unsure, say N.
1599 274
1600endif # NETWORK_FILESYSTEMS 275endif # NETWORK_FILESYSTEMS
1601 276
diff --git a/fs/adfs/Kconfig b/fs/adfs/Kconfig
new file mode 100644
index 000000000000..e55182a74605
--- /dev/null
+++ b/fs/adfs/Kconfig
@@ -0,0 +1,27 @@
1config ADFS_FS
2 tristate "ADFS file system support (EXPERIMENTAL)"
3 depends on BLOCK && EXPERIMENTAL
4 help
5 The Acorn Disc Filing System is the standard file system of the
6 RiscOS operating system which runs on Acorn's ARM-based Risc PC
7 systems and the Acorn Archimedes range of machines. If you say Y
8 here, Linux will be able to read from ADFS partitions on hard drives
9 and from ADFS-formatted floppy discs. If you also want to be able to
10 write to those devices, say Y to "ADFS write support" below.
11
12 The ADFS partition should be the first partition (i.e.,
13 /dev/[hs]d?1) on each of your drives. Please read the file
14 <file:Documentation/filesystems/adfs.txt> for further details.
15
16 To compile this code as a module, choose M here: the module will be
17 called adfs.
18
19 If unsure, say N.
20
21config ADFS_FS_RW
22 bool "ADFS write support (DANGEROUS)"
23 depends on ADFS_FS
24 help
25 If you say Y here, you will be able to write to ADFS partitions on
26 hard drives and ADFS-formatted floppy disks. This is experimental
27 codes, so if you're unsure, say N.
diff --git a/fs/affs/Kconfig b/fs/affs/Kconfig
new file mode 100644
index 000000000000..cfad9afb4762
--- /dev/null
+++ b/fs/affs/Kconfig
@@ -0,0 +1,21 @@
1config AFFS_FS
2 tristate "Amiga FFS file system support (EXPERIMENTAL)"
3 depends on BLOCK && EXPERIMENTAL
4 help
5 The Fast File System (FFS) is the common file system used on hard
6 disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y
7 if you want to be able to read and write files from and to an Amiga
8 FFS partition on your hard drive. Amiga floppies however cannot be
9 read with this driver due to an incompatibility of the floppy
10 controller used in an Amiga and the standard floppy controller in
11 PCs and workstations. Read <file:Documentation/filesystems/affs.txt>
12 and <file:fs/affs/Changes>.
13
14 With this driver you can also mount disk files used by Bernd
15 Schmidt's Un*X Amiga Emulator
16 (<http://www.freiburg.linux.de/~uae/>).
17 If you want to do this, you will also need to say Y or M to "Loop
18 device support", above.
19
20 To compile this file system support as a module, choose M here: the
21 module will be called affs. If unsure, say N.
diff --git a/fs/afs/Kconfig b/fs/afs/Kconfig
new file mode 100644
index 000000000000..e7b522fe15e1
--- /dev/null
+++ b/fs/afs/Kconfig
@@ -0,0 +1,21 @@
1config AFS_FS
2 tristate "Andrew File System support (AFS) (EXPERIMENTAL)"
3 depends on INET && EXPERIMENTAL
4 select AF_RXRPC
5 help
6 If you say Y here, you will get an experimental Andrew File System
7 driver. It currently only supports unsecured read-only AFS access.
8
9 See <file:Documentation/filesystems/afs.txt> for more information.
10
11 If unsure, say N.
12
13config AFS_DEBUG
14 bool "AFS dynamic debugging"
15 depends on AFS_FS
16 help
17 Say Y here to make runtime controllable debugging messages appear.
18
19 See <file:Documentation/filesystems/afs.txt> for more information.
20
21 If unsure, say N.
diff --git a/fs/aio.c b/fs/aio.c
index d6f89d3c15e8..8fa77e233944 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1270,7 +1270,7 @@ static void io_destroy(struct kioctx *ioctx)
1270 * pointer is passed for ctxp. Will fail with -ENOSYS if not 1270 * pointer is passed for ctxp. Will fail with -ENOSYS if not
1271 * implemented. 1271 * implemented.
1272 */ 1272 */
1273asmlinkage long sys_io_setup(unsigned nr_events, aio_context_t __user *ctxp) 1273SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp)
1274{ 1274{
1275 struct kioctx *ioctx = NULL; 1275 struct kioctx *ioctx = NULL;
1276 unsigned long ctx; 1276 unsigned long ctx;
@@ -1308,7 +1308,7 @@ out:
1308 * implemented. May fail with -EFAULT if the context pointed to 1308 * implemented. May fail with -EFAULT if the context pointed to
1309 * is invalid. 1309 * is invalid.
1310 */ 1310 */
1311asmlinkage long sys_io_destroy(aio_context_t ctx) 1311SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx)
1312{ 1312{
1313 struct kioctx *ioctx = lookup_ioctx(ctx); 1313 struct kioctx *ioctx = lookup_ioctx(ctx);
1314 if (likely(NULL != ioctx)) { 1314 if (likely(NULL != ioctx)) {
@@ -1662,8 +1662,8 @@ out_put_req:
1662 * are available to queue any iocbs. Will return 0 if nr is 0. Will 1662 * are available to queue any iocbs. Will return 0 if nr is 0. Will
1663 * fail with -ENOSYS if not implemented. 1663 * fail with -ENOSYS if not implemented.
1664 */ 1664 */
1665asmlinkage long sys_io_submit(aio_context_t ctx_id, long nr, 1665SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr,
1666 struct iocb __user * __user *iocbpp) 1666 struct iocb __user * __user *, iocbpp)
1667{ 1667{
1668 struct kioctx *ctx; 1668 struct kioctx *ctx;
1669 long ret = 0; 1669 long ret = 0;
@@ -1737,8 +1737,8 @@ static struct kiocb *lookup_kiocb(struct kioctx *ctx, struct iocb __user *iocb,
1737 * invalid. May fail with -EAGAIN if the iocb specified was not 1737 * invalid. May fail with -EAGAIN if the iocb specified was not
1738 * cancelled. Will fail with -ENOSYS if not implemented. 1738 * cancelled. Will fail with -ENOSYS if not implemented.
1739 */ 1739 */
1740asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb, 1740SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb,
1741 struct io_event __user *result) 1741 struct io_event __user *, result)
1742{ 1742{
1743 int (*cancel)(struct kiocb *iocb, struct io_event *res); 1743 int (*cancel)(struct kiocb *iocb, struct io_event *res);
1744 struct kioctx *ctx; 1744 struct kioctx *ctx;
@@ -1799,11 +1799,11 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
1799 * will be updated if not NULL and the operation blocks. Will fail 1799 * will be updated if not NULL and the operation blocks. Will fail
1800 * with -ENOSYS if not implemented. 1800 * with -ENOSYS if not implemented.
1801 */ 1801 */
1802asmlinkage long sys_io_getevents(aio_context_t ctx_id, 1802SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id,
1803 long min_nr, 1803 long, min_nr,
1804 long nr, 1804 long, nr,
1805 struct io_event __user *events, 1805 struct io_event __user *, events,
1806 struct timespec __user *timeout) 1806 struct timespec __user *, timeout)
1807{ 1807{
1808 struct kioctx *ioctx = lookup_ioctx(ctx_id); 1808 struct kioctx *ioctx = lookup_ioctx(ctx_id);
1809 long ret = -EINVAL; 1809 long ret = -EINVAL;
diff --git a/fs/autofs/Kconfig b/fs/autofs/Kconfig
new file mode 100644
index 000000000000..5f3bea90911e
--- /dev/null
+++ b/fs/autofs/Kconfig
@@ -0,0 +1,21 @@
1config AUTOFS_FS
2 tristate "Kernel automounter support"
3 help
4 The automounter is a tool to automatically mount remote file systems
5 on demand. This implementation is partially kernel-based to reduce
6 overhead in the already-mounted case; this is unlike the BSD
7 automounter (amd), which is a pure user space daemon.
8
9 To use the automounter you need the user-space tools from the autofs
10 package; you can find the location in <file:Documentation/Changes>.
11 You also want to answer Y to "NFS file system support", below.
12
13 If you want to use the newer version of the automounter with more
14 features, say N here and say Y to "Kernel automounter v4 support",
15 below.
16
17 To compile this support as a module, choose M here: the module will be
18 called autofs.
19
20 If you are not a part of a fairly large, distributed network, you
21 probably do not need an automounter, and can say N here.
diff --git a/fs/autofs4/Kconfig b/fs/autofs4/Kconfig
new file mode 100644
index 000000000000..1204d6384d39
--- /dev/null
+++ b/fs/autofs4/Kconfig
@@ -0,0 +1,20 @@
1config AUTOFS4_FS
2 tristate "Kernel automounter version 4 support (also supports v3)"
3 help
4 The automounter is a tool to automatically mount remote file systems
5 on demand. This implementation is partially kernel-based to reduce
6 overhead in the already-mounted case; this is unlike the BSD
7 automounter (amd), which is a pure user space daemon.
8
9 To use the automounter you need the user-space tools from
10 <ftp://ftp.kernel.org/pub/linux/daemons/autofs/v4/>; you also
11 want to answer Y to "NFS file system support", below.
12
13 To compile this support as a module, choose M here: the module will be
14 called autofs4. You will need to add "alias autofs autofs4" to your
15 modules configuration file.
16
17 If you are not a part of a fairly large, distributed network or
18 don't have a laptop which needs to dynamically reconfigure to the
19 local network, you probably do not need an automounter, and can say
20 N here.
diff --git a/fs/befs/Kconfig b/fs/befs/Kconfig
new file mode 100644
index 000000000000..7835d30f211f
--- /dev/null
+++ b/fs/befs/Kconfig
@@ -0,0 +1,26 @@
1config BEFS_FS
2 tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)"
3 depends on BLOCK && EXPERIMENTAL
4 select NLS
5 help
6 The BeOS File System (BeFS) is the native file system of Be, Inc's
7 BeOS. Notable features include support for arbitrary attributes
8 on files and directories, and database-like indices on selected
9 attributes. (Also note that this driver doesn't make those features
10 available at this time). It is a 64 bit filesystem, so it supports
11 extremely large volumes and files.
12
13 If you use this filesystem, you should also say Y to at least one
14 of the NLS (native language support) options below.
15
16 If you don't know what this is about, say N.
17
18 To compile this as a module, choose M here: the module will be
19 called befs.
20
21config BEFS_DEBUG
22 bool "Debug BeFS"
23 depends on BEFS_FS
24 help
25 If you say Y here, you can use the 'debug' mount option to enable
26 debugging output from the driver.
diff --git a/fs/bfs/Kconfig b/fs/bfs/Kconfig
new file mode 100644
index 000000000000..c2336c62024f
--- /dev/null
+++ b/fs/bfs/Kconfig
@@ -0,0 +1,19 @@
1config BFS_FS
2 tristate "BFS file system support (EXPERIMENTAL)"
3 depends on BLOCK && EXPERIMENTAL
4 help
5 Boot File System (BFS) is a file system used under SCO UnixWare to
6 allow the bootloader access to the kernel image and other important
7 files during the boot process. It is usually mounted under /stand
8 and corresponds to the slice marked as "STAND" in the UnixWare
9 partition. You should say Y if you want to read or write the files
10 on your /stand slice from within Linux. You then also need to say Y
11 to "UnixWare slices support", below. More information about the BFS
12 file system is contained in the file
13 <file:Documentation/filesystems/bfs.txt>.
14
15 If you don't know what this is about, say N.
16
17 To compile this as a module, choose M here: the module will be called
18 bfs. Note that the file system of your root partition (the one
19 containing the directory /) cannot be compiled as a module.
diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
new file mode 100644
index 000000000000..f8fcf999ea1b
--- /dev/null
+++ b/fs/btrfs/Kconfig
@@ -0,0 +1,18 @@
1config BTRFS_FS
2 tristate "Btrfs filesystem (EXPERIMENTAL) Unstable disk format"
3 depends on EXPERIMENTAL
4 select LIBCRC32C
5 select ZLIB_INFLATE
6 select ZLIB_DEFLATE
7 help
8 Btrfs is a new filesystem with extents, writable snapshotting,
9 support for multiple devices and many more features.
10
11 Btrfs is highly experimental, and THE DISK FORMAT IS NOT YET
12 FINALIZED. You should say N here unless you are interested in
13 testing Btrfs with non-critical data.
14
15 To compile this file system support as a module, choose M here. The
16 module will be called btrfs.
17
18 If unsure, say N.
diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h
index 78049ea208db..b320b103fa13 100644
--- a/fs/btrfs/ioctl.h
+++ b/fs/btrfs/ioctl.h
@@ -22,13 +22,20 @@
22 22
23#define BTRFS_IOCTL_MAGIC 0x94 23#define BTRFS_IOCTL_MAGIC 0x94
24#define BTRFS_VOL_NAME_MAX 255 24#define BTRFS_VOL_NAME_MAX 255
25#define BTRFS_PATH_NAME_MAX 3072 25#define BTRFS_PATH_NAME_MAX 4087
26 26
27/* this should be 4k */
27struct btrfs_ioctl_vol_args { 28struct btrfs_ioctl_vol_args {
28 __s64 fd; 29 __s64 fd;
29 char name[BTRFS_PATH_NAME_MAX + 1]; 30 char name[BTRFS_PATH_NAME_MAX + 1];
30}; 31};
31 32
33struct btrfs_ioctl_clone_range_args {
34 __s64 src_fd;
35 __u64 src_offset, src_length;
36 __u64 dest_offset;
37};
38
32#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ 39#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \
33 struct btrfs_ioctl_vol_args) 40 struct btrfs_ioctl_vol_args)
34#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \ 41#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \
@@ -52,11 +59,6 @@ struct btrfs_ioctl_vol_args {
52 struct btrfs_ioctl_vol_args) 59 struct btrfs_ioctl_vol_args)
53#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \ 60#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \
54 struct btrfs_ioctl_vol_args) 61 struct btrfs_ioctl_vol_args)
55struct btrfs_ioctl_clone_range_args {
56 __s64 src_fd;
57 __u64 src_offset, src_length;
58 __u64 dest_offset;
59};
60 62
61#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ 63#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \
62 struct btrfs_ioctl_clone_range_args) 64 struct btrfs_ioctl_clone_range_args)
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 0a14b495532f..db9fb3bc1e33 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -38,6 +38,7 @@
38#include <linux/namei.h> 38#include <linux/namei.h>
39#include <linux/miscdevice.h> 39#include <linux/miscdevice.h>
40#include <linux/version.h> 40#include <linux/version.h>
41#include <linux/magic.h>
41#include "compat.h" 42#include "compat.h"
42#include "ctree.h" 43#include "ctree.h"
43#include "disk-io.h" 44#include "disk-io.h"
@@ -51,7 +52,6 @@
51#include "export.h" 52#include "export.h"
52#include "compression.h" 53#include "compression.h"
53 54
54#define BTRFS_SUPER_MAGIC 0x9123683E
55 55
56static struct super_operations btrfs_super_ops; 56static struct super_operations btrfs_super_ops;
57 57
@@ -582,7 +582,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
582{ 582{
583 struct btrfs_ioctl_vol_args *vol; 583 struct btrfs_ioctl_vol_args *vol;
584 struct btrfs_fs_devices *fs_devices; 584 struct btrfs_fs_devices *fs_devices;
585 int ret = 0; 585 int ret = -ENOTTY;
586 int len; 586 int len;
587 587
588 if (!capable(CAP_SYS_ADMIN)) 588 if (!capable(CAP_SYS_ADMIN))
@@ -594,6 +594,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
594 goto out; 594 goto out;
595 } 595 }
596 len = strnlen(vol->name, BTRFS_PATH_NAME_MAX); 596 len = strnlen(vol->name, BTRFS_PATH_NAME_MAX);
597
597 switch (cmd) { 598 switch (cmd) {
598 case BTRFS_IOC_SCAN_DEV: 599 case BTRFS_IOC_SCAN_DEV:
599 ret = btrfs_scan_one_device(vol->name, FMODE_READ, 600 ret = btrfs_scan_one_device(vol->name, FMODE_READ,
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index b187b537888e..3451e1cca2b5 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -220,6 +220,7 @@ loop:
220 tail->bi_next = old_head; 220 tail->bi_next = old_head;
221 else 221 else
222 device->pending_bio_tail = tail; 222 device->pending_bio_tail = tail;
223 device->running_pending = 0;
223 224
224 spin_unlock(&device->io_lock); 225 spin_unlock(&device->io_lock);
225 btrfs_requeue_work(&device->work); 226 btrfs_requeue_work(&device->work);
diff --git a/fs/buffer.c b/fs/buffer.c
index b6e8b8632e2f..b58208f1640a 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -3243,7 +3243,7 @@ void block_sync_page(struct page *page)
3243 * Use of bdflush() is deprecated and will be removed in a future kernel. 3243 * Use of bdflush() is deprecated and will be removed in a future kernel.
3244 * The `pdflush' kernel threads fully replace bdflush daemons and this call. 3244 * The `pdflush' kernel threads fully replace bdflush daemons and this call.
3245 */ 3245 */
3246asmlinkage long sys_bdflush(int func, long data) 3246SYSCALL_DEFINE2(bdflush, int, func, long, data)
3247{ 3247{
3248 static int msg_count; 3248 static int msg_count;
3249 3249
diff --git a/fs/coda/Kconfig b/fs/coda/Kconfig
new file mode 100644
index 000000000000..c0e5a7fad06d
--- /dev/null
+++ b/fs/coda/Kconfig
@@ -0,0 +1,21 @@
1config CODA_FS
2 tristate "Coda file system support (advanced network fs)"
3 depends on INET
4 help
5 Coda is an advanced network file system, similar to NFS in that it
6 enables you to mount file systems of a remote server and access them
7 with regular Unix commands as if they were sitting on your hard
8 disk. Coda has several advantages over NFS: support for
9 disconnected operation (e.g. for laptops), read/write server
10 replication, security model for authentication and encryption,
11 persistent client caches and write back caching.
12
13 If you say Y here, your Linux box will be able to act as a Coda
14 *client*. You will need user level code as well, both for the
15 client and server. Servers are currently user level, i.e. they need
16 no kernel support. Please read
17 <file:Documentation/filesystems/coda.txt> and check out the Coda
18 home page <http://www.coda.cs.cmu.edu/>.
19
20 To compile the coda client support as a module, choose M here: the
21 module will be called coda.
diff --git a/fs/compat.c b/fs/compat.c
index 30f2faa22f5c..65a070e705ab 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -1709,7 +1709,7 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp,
1709} 1709}
1710 1710
1711#ifdef HAVE_SET_RESTORE_SIGMASK 1711#ifdef HAVE_SET_RESTORE_SIGMASK
1712asmlinkage long compat_sys_pselect7(int n, compat_ulong_t __user *inp, 1712static long do_compat_pselect(int n, compat_ulong_t __user *inp,
1713 compat_ulong_t __user *outp, compat_ulong_t __user *exp, 1713 compat_ulong_t __user *outp, compat_ulong_t __user *exp,
1714 struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask, 1714 struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask,
1715 compat_size_t sigsetsize) 1715 compat_size_t sigsetsize)
@@ -1775,8 +1775,8 @@ asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp,
1775 (compat_size_t __user *)(sig+sizeof(up)))) 1775 (compat_size_t __user *)(sig+sizeof(up))))
1776 return -EFAULT; 1776 return -EFAULT;
1777 } 1777 }
1778 return compat_sys_pselect7(n, inp, outp, exp, tsp, compat_ptr(up), 1778 return do_compat_pselect(n, inp, outp, exp, tsp, compat_ptr(up),
1779 sigsetsize); 1779 sigsetsize);
1780} 1780}
1781 1781
1782asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds, 1782asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
diff --git a/fs/configfs/Kconfig b/fs/configfs/Kconfig
new file mode 100644
index 000000000000..13587cc97a0b
--- /dev/null
+++ b/fs/configfs/Kconfig
@@ -0,0 +1,11 @@
1config CONFIGFS_FS
2 tristate "Userspace-driven configuration filesystem"
3 depends on SYSFS
4 help
5 configfs is a ram-based filesystem that provides the converse
6 of sysfs's functionality. Where sysfs is a filesystem-based
7 view of kernel objects, configfs is a filesystem-based manager
8 of kernel objects, or config_items.
9
10 Both sysfs and configfs can and should exist together on the
11 same system. One is not a replacement for the other.
diff --git a/fs/cramfs/Kconfig b/fs/cramfs/Kconfig
new file mode 100644
index 000000000000..cd06466f365e
--- /dev/null
+++ b/fs/cramfs/Kconfig
@@ -0,0 +1,19 @@
1config CRAMFS
2 tristate "Compressed ROM file system support (cramfs)"
3 depends on BLOCK
4 select ZLIB_INFLATE
5 help
6 Saying Y here includes support for CramFs (Compressed ROM File
7 System). CramFs is designed to be a simple, small, and compressed
8 file system for ROM based embedded systems. CramFs is read-only,
9 limited to 256MB file systems (with 16MB files), and doesn't support
10 16/32 bits uid/gid, hard links and timestamps.
11
12 See <file:Documentation/filesystems/cramfs.txt> and
13 <file:fs/cramfs/README> for further information.
14
15 To compile this as a module, choose M here: the module will be called
16 cramfs. Note that the root file system (the one containing the
17 directory /) cannot be compiled as a module.
18
19 If unsure, say N.
diff --git a/fs/dcache.c b/fs/dcache.c
index 4547f66884a0..937df0fb0da5 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -2092,7 +2092,7 @@ Elong:
2092 * return NULL; 2092 * return NULL;
2093 * } 2093 * }
2094 */ 2094 */
2095asmlinkage long sys_getcwd(char __user *buf, unsigned long size) 2095SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size)
2096{ 2096{
2097 int error; 2097 int error;
2098 struct path pwd, root; 2098 struct path pwd, root;
diff --git a/fs/dcookies.c b/fs/dcookies.c
index 180e9fec4ad8..a21cabdbd87b 100644
--- a/fs/dcookies.c
+++ b/fs/dcookies.c
@@ -145,7 +145,7 @@ out:
145/* And here is where the userspace process can look up the cookie value 145/* And here is where the userspace process can look up the cookie value
146 * to retrieve the path. 146 * to retrieve the path.
147 */ 147 */
148asmlinkage long sys_lookup_dcookie(u64 cookie64, char __user * buf, size_t len) 148SYSCALL_DEFINE(lookup_dcookie)(u64 cookie64, char __user * buf, size_t len)
149{ 149{
150 unsigned long cookie = (unsigned long)cookie64; 150 unsigned long cookie = (unsigned long)cookie64;
151 int err = -EINVAL; 151 int err = -EINVAL;
@@ -198,7 +198,13 @@ out:
198 mutex_unlock(&dcookie_mutex); 198 mutex_unlock(&dcookie_mutex);
199 return err; 199 return err;
200} 200}
201 201#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
202asmlinkage long SyS_lookup_dcookie(u64 cookie64, long buf, long len)
203{
204 return SYSC_lookup_dcookie(cookie64, (char __user *) buf, (size_t) len);
205}
206SYSCALL_ALIAS(sys_lookup_dcookie, SyS_lookup_dcookie);
207#endif
202 208
203static int dcookie_init(void) 209static int dcookie_init(void)
204{ 210{
diff --git a/fs/dlm/plock.c b/fs/dlm/plock.c
index eba87ff3177b..894a32d438d5 100644
--- a/fs/dlm/plock.c
+++ b/fs/dlm/plock.c
@@ -168,7 +168,7 @@ static int dlm_plock_callback(struct plock_op *op)
168 notify = xop->callback; 168 notify = xop->callback;
169 169
170 if (op->info.rv) { 170 if (op->info.rv) {
171 notify(flc, NULL, op->info.rv); 171 notify(fl, NULL, op->info.rv);
172 goto out; 172 goto out;
173 } 173 }
174 174
@@ -187,7 +187,7 @@ static int dlm_plock_callback(struct plock_op *op)
187 (unsigned long long)op->info.number, file, fl); 187 (unsigned long long)op->info.number, file, fl);
188 } 188 }
189 189
190 rv = notify(flc, NULL, 0); 190 rv = notify(fl, NULL, 0);
191 if (rv) { 191 if (rv) {
192 /* XXX: We need to cancel the fs lock here: */ 192 /* XXX: We need to cancel the fs lock here: */
193 log_print("dlm_plock_callback: lock granted after lock request " 193 log_print("dlm_plock_callback: lock granted after lock request "
@@ -304,7 +304,9 @@ int dlm_posix_get(dlm_lockspace_t *lockspace, u64 number, struct file *file,
304 if (rv == -ENOENT) 304 if (rv == -ENOENT)
305 rv = 0; 305 rv = 0;
306 else if (rv > 0) { 306 else if (rv > 0) {
307 locks_init_lock(fl);
307 fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK; 308 fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK;
309 fl->fl_flags = FL_POSIX;
308 fl->fl_pid = op->info.pid; 310 fl->fl_pid = op->info.pid;
309 fl->fl_start = op->info.start; 311 fl->fl_start = op->info.start;
310 fl->fl_end = op->info.end; 312 fl->fl_end = op->info.end;
diff --git a/fs/dquot.c b/fs/dquot.c
index 48c0571f831d..bca3cac4bee7 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -87,14 +87,17 @@
87#define __DQUOT_PARANOIA 87#define __DQUOT_PARANOIA
88 88
89/* 89/*
90 * There are two quota SMP locks. dq_list_lock protects all lists with quotas 90 * There are three quota SMP locks. dq_list_lock protects all lists with quotas
91 * and quota formats and also dqstats structure containing statistics about the 91 * and quota formats, dqstats structure containing statistics about the lists
92 * lists. dq_data_lock protects data from dq_dqb and also mem_dqinfo structures 92 * dq_data_lock protects data from dq_dqb and also mem_dqinfo structures and
93 * and also guards consistency of dquot->dq_dqb with inode->i_blocks, i_bytes. 93 * also guards consistency of dquot->dq_dqb with inode->i_blocks, i_bytes.
94 * i_blocks and i_bytes updates itself are guarded by i_lock acquired directly 94 * i_blocks and i_bytes updates itself are guarded by i_lock acquired directly
95 * in inode_add_bytes() and inode_sub_bytes(). 95 * in inode_add_bytes() and inode_sub_bytes(). dq_state_lock protects
96 * modifications of quota state (on quotaon and quotaoff) and readers who care
97 * about latest values take it as well.
96 * 98 *
97 * The spinlock ordering is hence: dq_data_lock > dq_list_lock > i_lock 99 * The spinlock ordering is hence: dq_data_lock > dq_list_lock > i_lock,
100 * dq_list_lock > dq_state_lock
98 * 101 *
99 * Note that some things (eg. sb pointer, type, id) doesn't change during 102 * Note that some things (eg. sb pointer, type, id) doesn't change during
100 * the life of the dquot structure and so needn't to be protected by a lock 103 * the life of the dquot structure and so needn't to be protected by a lock
@@ -103,12 +106,7 @@
103 * operation is just reading pointers from inode (or not using them at all) the 106 * operation is just reading pointers from inode (or not using them at all) the
104 * read lock is enough. If pointers are altered function must hold write lock 107 * read lock is enough. If pointers are altered function must hold write lock
105 * (these locking rules also apply for S_NOQUOTA flag in the inode - note that 108 * (these locking rules also apply for S_NOQUOTA flag in the inode - note that
106 * for altering the flag i_mutex is also needed). If operation is holding 109 * for altering the flag i_mutex is also needed).
107 * reference to dquot in other way (e.g. quotactl ops) it must be guarded by
108 * dqonoff_mutex.
109 * This locking assures that:
110 * a) update/access to dquot pointers in inode is serialized
111 * b) everyone is guarded against invalidate_dquots()
112 * 110 *
113 * Each dquot has its dq_lock mutex. Locked dquots might not be referenced 111 * Each dquot has its dq_lock mutex. Locked dquots might not be referenced
114 * from inodes (dquot_alloc_space() and such don't check the dq_lock). 112 * from inodes (dquot_alloc_space() and such don't check the dq_lock).
@@ -122,10 +120,17 @@
122 * Lock ordering (including related VFS locks) is the following: 120 * Lock ordering (including related VFS locks) is the following:
123 * i_mutex > dqonoff_sem > journal_lock > dqptr_sem > dquot->dq_lock > 121 * i_mutex > dqonoff_sem > journal_lock > dqptr_sem > dquot->dq_lock >
124 * dqio_mutex 122 * dqio_mutex
123 * The lock ordering of dqptr_sem imposed by quota code is only dqonoff_sem >
124 * dqptr_sem. But filesystem has to count with the fact that functions such as
125 * dquot_alloc_space() acquire dqptr_sem and they usually have to be called
126 * from inside a transaction to keep filesystem consistency after a crash. Also
127 * filesystems usually want to do some IO on dquot from ->mark_dirty which is
128 * called with dqptr_sem held.
125 * i_mutex on quota files is special (it's below dqio_mutex) 129 * i_mutex on quota files is special (it's below dqio_mutex)
126 */ 130 */
127 131
128static DEFINE_SPINLOCK(dq_list_lock); 132static DEFINE_SPINLOCK(dq_list_lock);
133static DEFINE_SPINLOCK(dq_state_lock);
129DEFINE_SPINLOCK(dq_data_lock); 134DEFINE_SPINLOCK(dq_data_lock);
130 135
131static char *quotatypes[] = INITQFNAMES; 136static char *quotatypes[] = INITQFNAMES;
@@ -428,7 +433,7 @@ static inline void do_destroy_dquot(struct dquot *dquot)
428 * quota is disabled and pointers from inodes removed so there cannot be new 433 * quota is disabled and pointers from inodes removed so there cannot be new
429 * quota users. There can still be some users of quotas due to inodes being 434 * quota users. There can still be some users of quotas due to inodes being
430 * just deleted or pruned by prune_icache() (those are not attached to any 435 * just deleted or pruned by prune_icache() (those are not attached to any
431 * list). We have to wait for such users. 436 * list) or parallel quotactl call. We have to wait for such users.
432 */ 437 */
433static void invalidate_dquots(struct super_block *sb, int type) 438static void invalidate_dquots(struct super_block *sb, int type)
434{ 439{
@@ -600,7 +605,6 @@ static struct shrinker dqcache_shrinker = {
600/* 605/*
601 * Put reference to dquot 606 * Put reference to dquot
602 * NOTE: If you change this function please check whether dqput_blocks() works right... 607 * NOTE: If you change this function please check whether dqput_blocks() works right...
603 * MUST be called with either dqptr_sem or dqonoff_mutex held
604 */ 608 */
605void dqput(struct dquot *dquot) 609void dqput(struct dquot *dquot)
606{ 610{
@@ -697,36 +701,30 @@ static struct dquot *get_empty_dquot(struct super_block *sb, int type)
697} 701}
698 702
699/* 703/*
700 * Check whether dquot is in memory.
701 * MUST be called with either dqptr_sem or dqonoff_mutex held
702 */
703int dquot_is_cached(struct super_block *sb, unsigned int id, int type)
704{
705 unsigned int hashent = hashfn(sb, id, type);
706 int ret = 0;
707
708 if (!sb_has_quota_active(sb, type))
709 return 0;
710 spin_lock(&dq_list_lock);
711 if (find_dquot(hashent, sb, id, type) != NODQUOT)
712 ret = 1;
713 spin_unlock(&dq_list_lock);
714 return ret;
715}
716
717/*
718 * Get reference to dquot 704 * Get reference to dquot
719 * MUST be called with either dqptr_sem or dqonoff_mutex held 705 *
706 * Locking is slightly tricky here. We are guarded from parallel quotaoff()
707 * destroying our dquot by:
708 * a) checking for quota flags under dq_list_lock and
709 * b) getting a reference to dquot before we release dq_list_lock
720 */ 710 */
721struct dquot *dqget(struct super_block *sb, unsigned int id, int type) 711struct dquot *dqget(struct super_block *sb, unsigned int id, int type)
722{ 712{
723 unsigned int hashent = hashfn(sb, id, type); 713 unsigned int hashent = hashfn(sb, id, type);
724 struct dquot *dquot, *empty = NODQUOT; 714 struct dquot *dquot = NODQUOT, *empty = NODQUOT;
725 715
726 if (!sb_has_quota_active(sb, type)) 716 if (!sb_has_quota_active(sb, type))
727 return NODQUOT; 717 return NODQUOT;
728we_slept: 718we_slept:
729 spin_lock(&dq_list_lock); 719 spin_lock(&dq_list_lock);
720 spin_lock(&dq_state_lock);
721 if (!sb_has_quota_active(sb, type)) {
722 spin_unlock(&dq_state_lock);
723 spin_unlock(&dq_list_lock);
724 goto out;
725 }
726 spin_unlock(&dq_state_lock);
727
730 if ((dquot = find_dquot(hashent, sb, id, type)) == NODQUOT) { 728 if ((dquot = find_dquot(hashent, sb, id, type)) == NODQUOT) {
731 if (empty == NODQUOT) { 729 if (empty == NODQUOT) {
732 spin_unlock(&dq_list_lock); 730 spin_unlock(&dq_list_lock);
@@ -735,6 +733,7 @@ we_slept:
735 goto we_slept; 733 goto we_slept;
736 } 734 }
737 dquot = empty; 735 dquot = empty;
736 empty = NODQUOT;
738 dquot->dq_id = id; 737 dquot->dq_id = id;
739 /* all dquots go on the inuse_list */ 738 /* all dquots go on the inuse_list */
740 put_inuse(dquot); 739 put_inuse(dquot);
@@ -749,8 +748,6 @@ we_slept:
749 dqstats.cache_hits++; 748 dqstats.cache_hits++;
750 dqstats.lookups++; 749 dqstats.lookups++;
751 spin_unlock(&dq_list_lock); 750 spin_unlock(&dq_list_lock);
752 if (empty)
753 do_destroy_dquot(empty);
754 } 751 }
755 /* Wait for dq_lock - after this we know that either dquot_release() is already 752 /* Wait for dq_lock - after this we know that either dquot_release() is already
756 * finished or it will be canceled due to dq_count > 1 test */ 753 * finished or it will be canceled due to dq_count > 1 test */
@@ -758,11 +755,15 @@ we_slept:
758 /* Read the dquot and instantiate it (everything done only if needed) */ 755 /* Read the dquot and instantiate it (everything done only if needed) */
759 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && sb->dq_op->acquire_dquot(dquot) < 0) { 756 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && sb->dq_op->acquire_dquot(dquot) < 0) {
760 dqput(dquot); 757 dqput(dquot);
761 return NODQUOT; 758 dquot = NODQUOT;
759 goto out;
762 } 760 }
763#ifdef __DQUOT_PARANOIA 761#ifdef __DQUOT_PARANOIA
764 BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */ 762 BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */
765#endif 763#endif
764out:
765 if (empty)
766 do_destroy_dquot(empty);
766 767
767 return dquot; 768 return dquot;
768} 769}
@@ -1198,63 +1199,76 @@ static int info_bdq_free(struct dquot *dquot, qsize_t space)
1198} 1199}
1199/* 1200/*
1200 * Initialize quota pointers in inode 1201 * Initialize quota pointers in inode
1201 * Transaction must be started at entry 1202 * We do things in a bit complicated way but by that we avoid calling
1203 * dqget() and thus filesystem callbacks under dqptr_sem.
1202 */ 1204 */
1203int dquot_initialize(struct inode *inode, int type) 1205int dquot_initialize(struct inode *inode, int type)
1204{ 1206{
1205 unsigned int id = 0; 1207 unsigned int id = 0;
1206 int cnt, ret = 0; 1208 int cnt, ret = 0;
1209 struct dquot *got[MAXQUOTAS] = { NODQUOT, NODQUOT };
1210 struct super_block *sb = inode->i_sb;
1207 1211
1208 /* First test before acquiring mutex - solves deadlocks when we 1212 /* First test before acquiring mutex - solves deadlocks when we
1209 * re-enter the quota code and are already holding the mutex */ 1213 * re-enter the quota code and are already holding the mutex */
1210 if (IS_NOQUOTA(inode)) 1214 if (IS_NOQUOTA(inode))
1211 return 0; 1215 return 0;
1212 down_write(&sb_dqopt(inode->i_sb)->dqptr_sem); 1216
1217 /* First get references to structures we might need. */
1218 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
1219 if (type != -1 && cnt != type)
1220 continue;
1221 switch (cnt) {
1222 case USRQUOTA:
1223 id = inode->i_uid;
1224 break;
1225 case GRPQUOTA:
1226 id = inode->i_gid;
1227 break;
1228 }
1229 got[cnt] = dqget(sb, id, cnt);
1230 }
1231
1232 down_write(&sb_dqopt(sb)->dqptr_sem);
1213 /* Having dqptr_sem we know NOQUOTA flags can't be altered... */ 1233 /* Having dqptr_sem we know NOQUOTA flags can't be altered... */
1214 if (IS_NOQUOTA(inode)) 1234 if (IS_NOQUOTA(inode))
1215 goto out_err; 1235 goto out_err;
1216 for (cnt = 0; cnt < MAXQUOTAS; cnt++) { 1236 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
1217 if (type != -1 && cnt != type) 1237 if (type != -1 && cnt != type)
1218 continue; 1238 continue;
1239 /* Avoid races with quotaoff() */
1240 if (!sb_has_quota_active(sb, cnt))
1241 continue;
1219 if (inode->i_dquot[cnt] == NODQUOT) { 1242 if (inode->i_dquot[cnt] == NODQUOT) {
1220 switch (cnt) { 1243 inode->i_dquot[cnt] = got[cnt];
1221 case USRQUOTA: 1244 got[cnt] = NODQUOT;
1222 id = inode->i_uid;
1223 break;
1224 case GRPQUOTA:
1225 id = inode->i_gid;
1226 break;
1227 }
1228 inode->i_dquot[cnt] = dqget(inode->i_sb, id, cnt);
1229 } 1245 }
1230 } 1246 }
1231out_err: 1247out_err:
1232 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); 1248 up_write(&sb_dqopt(sb)->dqptr_sem);
1249 /* Drop unused references */
1250 for (cnt = 0; cnt < MAXQUOTAS; cnt++)
1251 dqput(got[cnt]);
1233 return ret; 1252 return ret;
1234} 1253}
1235 1254
1236/* 1255/*
1237 * Release all quotas referenced by inode 1256 * Release all quotas referenced by inode
1238 * Transaction must be started at an entry
1239 */ 1257 */
1240int dquot_drop_locked(struct inode *inode) 1258int dquot_drop(struct inode *inode)
1241{ 1259{
1242 int cnt; 1260 int cnt;
1261 struct dquot *put[MAXQUOTAS];
1243 1262
1263 down_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1244 for (cnt = 0; cnt < MAXQUOTAS; cnt++) { 1264 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
1245 if (inode->i_dquot[cnt] != NODQUOT) { 1265 put[cnt] = inode->i_dquot[cnt];
1246 dqput(inode->i_dquot[cnt]); 1266 inode->i_dquot[cnt] = NODQUOT;
1247 inode->i_dquot[cnt] = NODQUOT;
1248 }
1249 } 1267 }
1250 return 0;
1251}
1252
1253int dquot_drop(struct inode *inode)
1254{
1255 down_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1256 dquot_drop_locked(inode);
1257 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); 1268 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1269
1270 for (cnt = 0; cnt < MAXQUOTAS; cnt++)
1271 dqput(put[cnt]);
1258 return 0; 1272 return 0;
1259} 1273}
1260 1274
@@ -1470,8 +1484,9 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr)
1470 qsize_t space; 1484 qsize_t space;
1471 struct dquot *transfer_from[MAXQUOTAS]; 1485 struct dquot *transfer_from[MAXQUOTAS];
1472 struct dquot *transfer_to[MAXQUOTAS]; 1486 struct dquot *transfer_to[MAXQUOTAS];
1473 int cnt, ret = NO_QUOTA, chuid = (iattr->ia_valid & ATTR_UID) && inode->i_uid != iattr->ia_uid, 1487 int cnt, ret = QUOTA_OK;
1474 chgid = (iattr->ia_valid & ATTR_GID) && inode->i_gid != iattr->ia_gid; 1488 int chuid = iattr->ia_valid & ATTR_UID && inode->i_uid != iattr->ia_uid,
1489 chgid = iattr->ia_valid & ATTR_GID && inode->i_gid != iattr->ia_gid;
1475 char warntype_to[MAXQUOTAS]; 1490 char warntype_to[MAXQUOTAS];
1476 char warntype_from_inodes[MAXQUOTAS], warntype_from_space[MAXQUOTAS]; 1491 char warntype_from_inodes[MAXQUOTAS], warntype_from_space[MAXQUOTAS];
1477 1492
@@ -1479,21 +1494,11 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr)
1479 * re-enter the quota code and are already holding the mutex */ 1494 * re-enter the quota code and are already holding the mutex */
1480 if (IS_NOQUOTA(inode)) 1495 if (IS_NOQUOTA(inode))
1481 return QUOTA_OK; 1496 return QUOTA_OK;
1482 /* Clear the arrays */ 1497 /* Initialize the arrays */
1483 for (cnt = 0; cnt < MAXQUOTAS; cnt++) { 1498 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
1484 transfer_to[cnt] = transfer_from[cnt] = NODQUOT; 1499 transfer_from[cnt] = NODQUOT;
1500 transfer_to[cnt] = NODQUOT;
1485 warntype_to[cnt] = QUOTA_NL_NOWARN; 1501 warntype_to[cnt] = QUOTA_NL_NOWARN;
1486 }
1487 down_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1488 /* Now recheck reliably when holding dqptr_sem */
1489 if (IS_NOQUOTA(inode)) { /* File without quota accounting? */
1490 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1491 return QUOTA_OK;
1492 }
1493 /* First build the transfer_to list - here we can block on
1494 * reading/instantiating of dquots. We know that the transaction for
1495 * us was already started so we don't violate lock ranking here */
1496 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
1497 switch (cnt) { 1502 switch (cnt) {
1498 case USRQUOTA: 1503 case USRQUOTA:
1499 if (!chuid) 1504 if (!chuid)
@@ -1507,6 +1512,13 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr)
1507 break; 1512 break;
1508 } 1513 }
1509 } 1514 }
1515
1516 down_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1517 /* Now recheck reliably when holding dqptr_sem */
1518 if (IS_NOQUOTA(inode)) { /* File without quota accounting? */
1519 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1520 goto put_all;
1521 }
1510 spin_lock(&dq_data_lock); 1522 spin_lock(&dq_data_lock);
1511 space = inode_get_bytes(inode); 1523 space = inode_get_bytes(inode);
1512 /* Build the transfer_from list and check the limits */ 1524 /* Build the transfer_from list and check the limits */
@@ -1517,7 +1529,7 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr)
1517 if (check_idq(transfer_to[cnt], 1, warntype_to + cnt) == 1529 if (check_idq(transfer_to[cnt], 1, warntype_to + cnt) ==
1518 NO_QUOTA || check_bdq(transfer_to[cnt], space, 0, 1530 NO_QUOTA || check_bdq(transfer_to[cnt], space, 0,
1519 warntype_to + cnt) == NO_QUOTA) 1531 warntype_to + cnt) == NO_QUOTA)
1520 goto warn_put_all; 1532 goto over_quota;
1521 } 1533 }
1522 1534
1523 /* 1535 /*
@@ -1545,28 +1557,37 @@ int dquot_transfer(struct inode *inode, struct iattr *iattr)
1545 1557
1546 inode->i_dquot[cnt] = transfer_to[cnt]; 1558 inode->i_dquot[cnt] = transfer_to[cnt];
1547 } 1559 }
1548 ret = QUOTA_OK;
1549warn_put_all:
1550 spin_unlock(&dq_data_lock); 1560 spin_unlock(&dq_data_lock);
1561 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1562
1551 /* Dirtify all the dquots - this can block when journalling */ 1563 /* Dirtify all the dquots - this can block when journalling */
1552 for (cnt = 0; cnt < MAXQUOTAS; cnt++) { 1564 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
1553 if (transfer_from[cnt]) 1565 if (transfer_from[cnt])
1554 mark_dquot_dirty(transfer_from[cnt]); 1566 mark_dquot_dirty(transfer_from[cnt]);
1555 if (transfer_to[cnt]) 1567 if (transfer_to[cnt]) {
1556 mark_dquot_dirty(transfer_to[cnt]); 1568 mark_dquot_dirty(transfer_to[cnt]);
1569 /* The reference we got is transferred to the inode */
1570 transfer_to[cnt] = NODQUOT;
1571 }
1557 } 1572 }
1573warn_put_all:
1558 flush_warnings(transfer_to, warntype_to); 1574 flush_warnings(transfer_to, warntype_to);
1559 flush_warnings(transfer_from, warntype_from_inodes); 1575 flush_warnings(transfer_from, warntype_from_inodes);
1560 flush_warnings(transfer_from, warntype_from_space); 1576 flush_warnings(transfer_from, warntype_from_space);
1561 1577put_all:
1562 for (cnt = 0; cnt < MAXQUOTAS; cnt++) { 1578 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
1563 if (ret == QUOTA_OK && transfer_from[cnt] != NODQUOT) 1579 dqput(transfer_from[cnt]);
1564 dqput(transfer_from[cnt]); 1580 dqput(transfer_to[cnt]);
1565 if (ret == NO_QUOTA && transfer_to[cnt] != NODQUOT)
1566 dqput(transfer_to[cnt]);
1567 } 1581 }
1568 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1569 return ret; 1582 return ret;
1583over_quota:
1584 spin_unlock(&dq_data_lock);
1585 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1586 /* Clear dquot pointers we don't want to dqput() */
1587 for (cnt = 0; cnt < MAXQUOTAS; cnt++)
1588 transfer_from[cnt] = NODQUOT;
1589 ret = NO_QUOTA;
1590 goto warn_put_all;
1570} 1591}
1571 1592
1572/* Wrapper for transferring ownership of an inode */ 1593/* Wrapper for transferring ownership of an inode */
@@ -1651,19 +1672,24 @@ int vfs_quota_disable(struct super_block *sb, int type, unsigned int flags)
1651 continue; 1672 continue;
1652 1673
1653 if (flags & DQUOT_SUSPENDED) { 1674 if (flags & DQUOT_SUSPENDED) {
1675 spin_lock(&dq_state_lock);
1654 dqopt->flags |= 1676 dqopt->flags |=
1655 dquot_state_flag(DQUOT_SUSPENDED, cnt); 1677 dquot_state_flag(DQUOT_SUSPENDED, cnt);
1678 spin_unlock(&dq_state_lock);
1656 } else { 1679 } else {
1680 spin_lock(&dq_state_lock);
1657 dqopt->flags &= ~dquot_state_flag(flags, cnt); 1681 dqopt->flags &= ~dquot_state_flag(flags, cnt);
1658 /* Turning off suspended quotas? */ 1682 /* Turning off suspended quotas? */
1659 if (!sb_has_quota_loaded(sb, cnt) && 1683 if (!sb_has_quota_loaded(sb, cnt) &&
1660 sb_has_quota_suspended(sb, cnt)) { 1684 sb_has_quota_suspended(sb, cnt)) {
1661 dqopt->flags &= ~dquot_state_flag( 1685 dqopt->flags &= ~dquot_state_flag(
1662 DQUOT_SUSPENDED, cnt); 1686 DQUOT_SUSPENDED, cnt);
1687 spin_unlock(&dq_state_lock);
1663 iput(dqopt->files[cnt]); 1688 iput(dqopt->files[cnt]);
1664 dqopt->files[cnt] = NULL; 1689 dqopt->files[cnt] = NULL;
1665 continue; 1690 continue;
1666 } 1691 }
1692 spin_unlock(&dq_state_lock);
1667 } 1693 }
1668 1694
1669 /* We still have to keep quota loaded? */ 1695 /* We still have to keep quota loaded? */
@@ -1830,7 +1856,9 @@ static int vfs_load_quota_inode(struct inode *inode, int type, int format_id,
1830 } 1856 }
1831 mutex_unlock(&dqopt->dqio_mutex); 1857 mutex_unlock(&dqopt->dqio_mutex);
1832 mutex_unlock(&inode->i_mutex); 1858 mutex_unlock(&inode->i_mutex);
1859 spin_lock(&dq_state_lock);
1833 dqopt->flags |= dquot_state_flag(flags, type); 1860 dqopt->flags |= dquot_state_flag(flags, type);
1861 spin_unlock(&dq_state_lock);
1834 1862
1835 add_dquot_ref(sb, type); 1863 add_dquot_ref(sb, type);
1836 mutex_unlock(&dqopt->dqonoff_mutex); 1864 mutex_unlock(&dqopt->dqonoff_mutex);
@@ -1872,9 +1900,11 @@ static int vfs_quota_on_remount(struct super_block *sb, int type)
1872 } 1900 }
1873 inode = dqopt->files[type]; 1901 inode = dqopt->files[type];
1874 dqopt->files[type] = NULL; 1902 dqopt->files[type] = NULL;
1903 spin_lock(&dq_state_lock);
1875 flags = dqopt->flags & dquot_state_flag(DQUOT_USAGE_ENABLED | 1904 flags = dqopt->flags & dquot_state_flag(DQUOT_USAGE_ENABLED |
1876 DQUOT_LIMITS_ENABLED, type); 1905 DQUOT_LIMITS_ENABLED, type);
1877 dqopt->flags &= ~dquot_state_flag(DQUOT_STATE_FLAGS, type); 1906 dqopt->flags &= ~dquot_state_flag(DQUOT_STATE_FLAGS, type);
1907 spin_unlock(&dq_state_lock);
1878 mutex_unlock(&dqopt->dqonoff_mutex); 1908 mutex_unlock(&dqopt->dqonoff_mutex);
1879 1909
1880 flags = dquot_generic_flag(flags, type); 1910 flags = dquot_generic_flag(flags, type);
@@ -1952,7 +1982,9 @@ int vfs_quota_enable(struct inode *inode, int type, int format_id,
1952 ret = -EBUSY; 1982 ret = -EBUSY;
1953 goto out_lock; 1983 goto out_lock;
1954 } 1984 }
1985 spin_lock(&dq_state_lock);
1955 sb_dqopt(sb)->flags |= dquot_state_flag(flags, type); 1986 sb_dqopt(sb)->flags |= dquot_state_flag(flags, type);
1987 spin_unlock(&dq_state_lock);
1956out_lock: 1988out_lock:
1957 mutex_unlock(&dqopt->dqonoff_mutex); 1989 mutex_unlock(&dqopt->dqonoff_mutex);
1958 return ret; 1990 return ret;
@@ -2039,14 +2071,12 @@ int vfs_get_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *d
2039{ 2071{
2040 struct dquot *dquot; 2072 struct dquot *dquot;
2041 2073
2042 mutex_lock(&sb_dqopt(sb)->dqonoff_mutex); 2074 dquot = dqget(sb, id, type);
2043 if (!(dquot = dqget(sb, id, type))) { 2075 if (dquot == NODQUOT)
2044 mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex);
2045 return -ESRCH; 2076 return -ESRCH;
2046 }
2047 do_get_dqblk(dquot, di); 2077 do_get_dqblk(dquot, di);
2048 dqput(dquot); 2078 dqput(dquot);
2049 mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex); 2079
2050 return 0; 2080 return 0;
2051} 2081}
2052 2082
@@ -2130,7 +2160,6 @@ int vfs_set_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *d
2130 struct dquot *dquot; 2160 struct dquot *dquot;
2131 int rc; 2161 int rc;
2132 2162
2133 mutex_lock(&sb_dqopt(sb)->dqonoff_mutex);
2134 dquot = dqget(sb, id, type); 2163 dquot = dqget(sb, id, type);
2135 if (!dquot) { 2164 if (!dquot) {
2136 rc = -ESRCH; 2165 rc = -ESRCH;
@@ -2139,7 +2168,6 @@ int vfs_set_dqblk(struct super_block *sb, int type, qid_t id, struct if_dqblk *d
2139 rc = do_set_dqblk(dquot, di); 2168 rc = do_set_dqblk(dquot, di);
2140 dqput(dquot); 2169 dqput(dquot);
2141out: 2170out:
2142 mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex);
2143 return rc; 2171 return rc;
2144} 2172}
2145 2173
@@ -2370,11 +2398,9 @@ EXPORT_SYMBOL(dquot_release);
2370EXPORT_SYMBOL(dquot_mark_dquot_dirty); 2398EXPORT_SYMBOL(dquot_mark_dquot_dirty);
2371EXPORT_SYMBOL(dquot_initialize); 2399EXPORT_SYMBOL(dquot_initialize);
2372EXPORT_SYMBOL(dquot_drop); 2400EXPORT_SYMBOL(dquot_drop);
2373EXPORT_SYMBOL(dquot_drop_locked);
2374EXPORT_SYMBOL(vfs_dq_drop); 2401EXPORT_SYMBOL(vfs_dq_drop);
2375EXPORT_SYMBOL(dqget); 2402EXPORT_SYMBOL(dqget);
2376EXPORT_SYMBOL(dqput); 2403EXPORT_SYMBOL(dqput);
2377EXPORT_SYMBOL(dquot_is_cached);
2378EXPORT_SYMBOL(dquot_alloc_space); 2404EXPORT_SYMBOL(dquot_alloc_space);
2379EXPORT_SYMBOL(dquot_alloc_inode); 2405EXPORT_SYMBOL(dquot_alloc_inode);
2380EXPORT_SYMBOL(dquot_free_space); 2406EXPORT_SYMBOL(dquot_free_space);
diff --git a/fs/ecryptfs/Kconfig b/fs/ecryptfs/Kconfig
new file mode 100644
index 000000000000..0c754e64232b
--- /dev/null
+++ b/fs/ecryptfs/Kconfig
@@ -0,0 +1,11 @@
1config ECRYPT_FS
2 tristate "eCrypt filesystem layer support (EXPERIMENTAL)"
3 depends on EXPERIMENTAL && KEYS && CRYPTO && NET
4 help
5 Encrypted filesystem that operates on the VFS layer. See
6 <file:Documentation/filesystems/ecryptfs.txt> to learn more about
7 eCryptfs. Userspace components are required and can be
8 obtained from <http://ecryptfs.sf.net>.
9
10 To compile this file system support as a module, choose M here: the
11 module will be called ecryptfs.
diff --git a/fs/efs/Kconfig b/fs/efs/Kconfig
new file mode 100644
index 000000000000..6ebfc1c207a8
--- /dev/null
+++ b/fs/efs/Kconfig
@@ -0,0 +1,14 @@
1config EFS_FS
2 tristate "EFS file system support (read only) (EXPERIMENTAL)"
3 depends on BLOCK && EXPERIMENTAL
4 help
5 EFS is an older file system used for non-ISO9660 CD-ROMs and hard
6 disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer
7 uses the XFS file system for hard disk partitions however).
8
9 This implementation only offers read-only access. If you don't know
10 what all this is about, it's safe to say N. For more information
11 about EFS see its home page at <http://aeschi.ch.eu.org/efs/>.
12
13 To compile the EFS file system support as a module, choose M here: the
14 module will be called efs.
diff --git a/fs/eventfd.c b/fs/eventfd.c
index 08bf558d0408..5de2c2db3aa2 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -198,7 +198,7 @@ struct file *eventfd_fget(int fd)
198 return file; 198 return file;
199} 199}
200 200
201asmlinkage long sys_eventfd2(unsigned int count, int flags) 201SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags)
202{ 202{
203 int fd; 203 int fd;
204 struct eventfd_ctx *ctx; 204 struct eventfd_ctx *ctx;
@@ -228,8 +228,7 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags)
228 return fd; 228 return fd;
229} 229}
230 230
231asmlinkage long sys_eventfd(unsigned int count) 231SYSCALL_DEFINE1(eventfd, unsigned int, count)
232{ 232{
233 return sys_eventfd2(count, 0); 233 return sys_eventfd2(count, 0);
234} 234}
235
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 96355d505347..ba2f9ec71192 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1110,7 +1110,7 @@ retry:
1110/* 1110/*
1111 * Open an eventpoll file descriptor. 1111 * Open an eventpoll file descriptor.
1112 */ 1112 */
1113asmlinkage long sys_epoll_create1(int flags) 1113SYSCALL_DEFINE1(epoll_create1, int, flags)
1114{ 1114{
1115 int error, fd = -1; 1115 int error, fd = -1;
1116 struct eventpoll *ep; 1116 struct eventpoll *ep;
@@ -1150,7 +1150,7 @@ error_return:
1150 return fd; 1150 return fd;
1151} 1151}
1152 1152
1153asmlinkage long sys_epoll_create(int size) 1153SYSCALL_DEFINE1(epoll_create, int, size)
1154{ 1154{
1155 if (size < 0) 1155 if (size < 0)
1156 return -EINVAL; 1156 return -EINVAL;
@@ -1163,8 +1163,8 @@ asmlinkage long sys_epoll_create(int size)
1163 * the eventpoll file that enables the insertion/removal/change of 1163 * the eventpoll file that enables the insertion/removal/change of
1164 * file descriptors inside the interest set. 1164 * file descriptors inside the interest set.
1165 */ 1165 */
1166asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, 1166SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
1167 struct epoll_event __user *event) 1167 struct epoll_event __user *, event)
1168{ 1168{
1169 int error; 1169 int error;
1170 struct file *file, *tfile; 1170 struct file *file, *tfile;
@@ -1261,8 +1261,8 @@ error_return:
1261 * Implement the event wait interface for the eventpoll file. It is the kernel 1261 * Implement the event wait interface for the eventpoll file. It is the kernel
1262 * part of the user space epoll_wait(2). 1262 * part of the user space epoll_wait(2).
1263 */ 1263 */
1264asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events, 1264SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events,
1265 int maxevents, int timeout) 1265 int, maxevents, int, timeout)
1266{ 1266{
1267 int error; 1267 int error;
1268 struct file *file; 1268 struct file *file;
@@ -1319,9 +1319,9 @@ error_return:
1319 * Implement the event wait interface for the eventpoll file. It is the kernel 1319 * Implement the event wait interface for the eventpoll file. It is the kernel
1320 * part of the user space epoll_pwait(2). 1320 * part of the user space epoll_pwait(2).
1321 */ 1321 */
1322asmlinkage long sys_epoll_pwait(int epfd, struct epoll_event __user *events, 1322SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events,
1323 int maxevents, int timeout, const sigset_t __user *sigmask, 1323 int, maxevents, int, timeout, const sigset_t __user *, sigmask,
1324 size_t sigsetsize) 1324 size_t, sigsetsize)
1325{ 1325{
1326 int error; 1326 int error;
1327 sigset_t ksigmask, sigsaved; 1327 sigset_t ksigmask, sigsaved;
diff --git a/fs/exec.c b/fs/exec.c
index 71a6efe5d8bd..0dd60a01f1b4 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -99,7 +99,7 @@ static inline void put_binfmt(struct linux_binfmt * fmt)
99 * 99 *
100 * Also note that we take the address to load from from the file itself. 100 * Also note that we take the address to load from from the file itself.
101 */ 101 */
102asmlinkage long sys_uselib(const char __user * library) 102SYSCALL_DEFINE1(uselib, const char __user *, library)
103{ 103{
104 struct file *file; 104 struct file *file;
105 struct nameidata nd; 105 struct nameidata nd;
diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c
index 9a0fc400f91c..2999d72153b7 100644
--- a/fs/ext2/dir.c
+++ b/fs/ext2/dir.c
@@ -95,10 +95,13 @@ static int ext2_commit_chunk(struct page *page, loff_t pos, unsigned len)
95 mark_inode_dirty(dir); 95 mark_inode_dirty(dir);
96 } 96 }
97 97
98 if (IS_DIRSYNC(dir)) 98 if (IS_DIRSYNC(dir)) {
99 err = write_one_page(page, 1); 99 err = write_one_page(page, 1);
100 else 100 if (!err)
101 err = ext2_sync_inode(dir);
102 } else {
101 unlock_page(page); 103 unlock_page(page);
104 }
102 105
103 return err; 106 return err;
104} 107}
diff --git a/fs/fat/Kconfig b/fs/fat/Kconfig
new file mode 100644
index 000000000000..d0a69ff25375
--- /dev/null
+++ b/fs/fat/Kconfig
@@ -0,0 +1,97 @@
1config FAT_FS
2 tristate
3 select NLS
4 help
5 If you want to use one of the FAT-based file systems (the MS-DOS and
6 VFAT (Windows 95) file systems), then you must say Y or M here
7 to include FAT support. You will then be able to mount partitions or
8 diskettes with FAT-based file systems and transparently access the
9 files on them, i.e. MSDOS files will look and behave just like all
10 other Unix files.
11
12 This FAT support is not a file system in itself, it only provides
13 the foundation for the other file systems. You will have to say Y or
14 M to at least one of "MSDOS fs support" or "VFAT fs support" in
15 order to make use of it.
16
17 Another way to read and write MSDOS floppies and hard drive
18 partitions from within Linux (but not transparently) is with the
19 mtools ("man mtools") program suite. You don't need to say Y here in
20 order to do that.
21
22 If you need to move large files on floppies between a DOS and a
23 Linux box, say Y here, mount the floppy under Linux with an MSDOS
24 file system and use GNU tar's M option. GNU tar is a program
25 available for Unix and DOS ("man tar" or "info tar").
26
27 The FAT support will enlarge your kernel by about 37 KB. If unsure,
28 say Y.
29
30 To compile this as a module, choose M here: the module will be called
31 fat. Note that if you compile the FAT support as a module, you
32 cannot compile any of the FAT-based file systems into the kernel
33 -- they will have to be modules as well.
34
35config MSDOS_FS
36 tristate "MSDOS fs support"
37 select FAT_FS
38 help
39 This allows you to mount MSDOS partitions of your hard drive (unless
40 they are compressed; to access compressed MSDOS partitions under
41 Linux, you can either use the DOS emulator DOSEMU, described in the
42 DOSEMU-HOWTO, available from
43 <http://www.tldp.org/docs.html#howto>, or try dmsdosfs in
44 <ftp://ibiblio.org/pub/Linux/system/filesystems/dosfs/>. If you
45 intend to use dosemu with a non-compressed MSDOS partition, say Y
46 here) and MSDOS floppies. This means that file access becomes
47 transparent, i.e. the MSDOS files look and behave just like all
48 other Unix files.
49
50 If you have Windows 95 or Windows NT installed on your MSDOS
51 partitions, you should use the VFAT file system (say Y to "VFAT fs
52 support" below), or you will not be able to see the long filenames
53 generated by Windows 95 / Windows NT.
54
55 This option will enlarge your kernel by about 7 KB. If unsure,
56 answer Y. This will only work if you said Y to "DOS FAT fs support"
57 as well. To compile this as a module, choose M here: the module will
58 be called msdos.
59
60config VFAT_FS
61 tristate "VFAT (Windows-95) fs support"
62 select FAT_FS
63 help
64 This option provides support for normal Windows file systems with
65 long filenames. That includes non-compressed FAT-based file systems
66 used by Windows 95, Windows 98, Windows NT 4.0, and the Unix
67 programs from the mtools package.
68
69 The VFAT support enlarges your kernel by about 10 KB and it only
70 works if you said Y to the "DOS FAT fs support" above. Please read
71 the file <file:Documentation/filesystems/vfat.txt> for details. If
72 unsure, say Y.
73
74 To compile this as a module, choose M here: the module will be called
75 vfat.
76
77config FAT_DEFAULT_CODEPAGE
78 int "Default codepage for FAT"
79 depends on MSDOS_FS || VFAT_FS
80 default 437
81 help
82 This option should be set to the codepage of your FAT filesystems.
83 It can be overridden with the "codepage" mount option.
84 See <file:Documentation/filesystems/vfat.txt> for more information.
85
86config FAT_DEFAULT_IOCHARSET
87 string "Default iocharset for FAT"
88 depends on VFAT_FS
89 default "iso8859-1"
90 help
91 Set this to the default input/output character set you'd
92 like FAT to use. It should probably match the character set
93 that most of your FAT filesystems use, and can be overridden
94 with the "iocharset" mount option for FAT filesystems.
95 Note that "utf8" is not recommended for FAT filesystems.
96 If unsure, you shouldn't set "utf8" here.
97 See <file:Documentation/filesystems/vfat.txt> for more information.
diff --git a/fs/fcntl.c b/fs/fcntl.c
index cdc141946724..bd215cc791da 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -50,7 +50,7 @@ static int get_close_on_exec(unsigned int fd)
50 return res; 50 return res;
51} 51}
52 52
53asmlinkage long sys_dup3(unsigned int oldfd, unsigned int newfd, int flags) 53SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags)
54{ 54{
55 int err = -EBADF; 55 int err = -EBADF;
56 struct file * file, *tofree; 56 struct file * file, *tofree;
@@ -113,7 +113,7 @@ out_unlock:
113 return err; 113 return err;
114} 114}
115 115
116asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd) 116SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd)
117{ 117{
118 if (unlikely(newfd == oldfd)) { /* corner case */ 118 if (unlikely(newfd == oldfd)) { /* corner case */
119 struct files_struct *files = current->files; 119 struct files_struct *files = current->files;
@@ -126,7 +126,7 @@ asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd)
126 return sys_dup3(oldfd, newfd, 0); 126 return sys_dup3(oldfd, newfd, 0);
127} 127}
128 128
129asmlinkage long sys_dup(unsigned int fildes) 129SYSCALL_DEFINE1(dup, unsigned int, fildes)
130{ 130{
131 int ret = -EBADF; 131 int ret = -EBADF;
132 struct file *file = fget(fildes); 132 struct file *file = fget(fildes);
@@ -335,7 +335,7 @@ static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
335 return err; 335 return err;
336} 336}
337 337
338asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg) 338SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
339{ 339{
340 struct file *filp; 340 struct file *filp;
341 long err = -EBADF; 341 long err = -EBADF;
@@ -358,7 +358,8 @@ out:
358} 358}
359 359
360#if BITS_PER_LONG == 32 360#if BITS_PER_LONG == 32
361asmlinkage long sys_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg) 361SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
362 unsigned long, arg)
362{ 363{
363 struct file * filp; 364 struct file * filp;
364 long err; 365 long err;
diff --git a/fs/filesystems.c b/fs/filesystems.c
index d488dcd7f2bb..1aa70260e6d1 100644
--- a/fs/filesystems.c
+++ b/fs/filesystems.c
@@ -179,7 +179,7 @@ static int fs_maxindex(void)
179/* 179/*
180 * Whee.. Weird sysv syscall. 180 * Whee.. Weird sysv syscall.
181 */ 181 */
182asmlinkage long sys_sysfs(int option, unsigned long arg1, unsigned long arg2) 182SYSCALL_DEFINE3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2)
183{ 183{
184 int retval = -EINVAL; 184 int retval = -EINVAL;
185 185
diff --git a/fs/freevxfs/Kconfig b/fs/freevxfs/Kconfig
new file mode 100644
index 000000000000..8dc1cd5c1efe
--- /dev/null
+++ b/fs/freevxfs/Kconfig
@@ -0,0 +1,16 @@
1config VXFS_FS
2 tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
3 depends on BLOCK
4 help
5 FreeVxFS is a file system driver that support the VERITAS VxFS(TM)
6 file system format. VERITAS VxFS(TM) is the standard file system
7 of SCO UnixWare (and possibly others) and optionally available
8 for Sunsoft Solaris, HP-UX and many other operating systems.
9 Currently only readonly access is supported.
10
11 NOTE: the file system type as used by mount(1), mount(2) and
12 fstab(5) is 'vxfs' as it describes the file system format, not
13 the actual driver.
14
15 To compile this as a module, choose M here: the module will be
16 called freevxfs. If unsure, say N.
diff --git a/fs/fuse/Kconfig b/fs/fuse/Kconfig
new file mode 100644
index 000000000000..0cf160a94eda
--- /dev/null
+++ b/fs/fuse/Kconfig
@@ -0,0 +1,15 @@
1config FUSE_FS
2 tristate "FUSE (Filesystem in Userspace) support"
3 help
4 With FUSE it is possible to implement a fully functional filesystem
5 in a userspace program.
6
7 There's also companion library: libfuse. This library along with
8 utilities is available from the FUSE homepage:
9 <http://fuse.sourceforge.net/>
10
11 See <file:Documentation/filesystems/fuse.txt> for more information.
12 See <file:Documentation/Changes> for needed library/utility version.
13
14 If you want to develop a userspace FS, or if you want to use
15 a filesystem based on FUSE, answer Y or M.
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index e0c7ada08a1f..ba76b68c52ff 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -281,7 +281,8 @@ __releases(&fc->lock)
281 fc->blocked = 0; 281 fc->blocked = 0;
282 wake_up_all(&fc->blocked_waitq); 282 wake_up_all(&fc->blocked_waitq);
283 } 283 }
284 if (fc->num_background == FUSE_CONGESTION_THRESHOLD) { 284 if (fc->num_background == FUSE_CONGESTION_THRESHOLD &&
285 fc->connected) {
285 clear_bdi_congested(&fc->bdi, READ); 286 clear_bdi_congested(&fc->bdi, READ);
286 clear_bdi_congested(&fc->bdi, WRITE); 287 clear_bdi_congested(&fc->bdi, WRITE);
287 } 288 }
@@ -825,16 +826,21 @@ static int fuse_notify_poll(struct fuse_conn *fc, unsigned int size,
825 struct fuse_copy_state *cs) 826 struct fuse_copy_state *cs)
826{ 827{
827 struct fuse_notify_poll_wakeup_out outarg; 828 struct fuse_notify_poll_wakeup_out outarg;
828 int err; 829 int err = -EINVAL;
829 830
830 if (size != sizeof(outarg)) 831 if (size != sizeof(outarg))
831 return -EINVAL; 832 goto err;
832 833
833 err = fuse_copy_one(cs, &outarg, sizeof(outarg)); 834 err = fuse_copy_one(cs, &outarg, sizeof(outarg));
834 if (err) 835 if (err)
835 return err; 836 goto err;
836 837
838 fuse_copy_finish(cs);
837 return fuse_notify_poll_wakeup(fc, &outarg); 839 return fuse_notify_poll_wakeup(fc, &outarg);
840
841err:
842 fuse_copy_finish(cs);
843 return err;
838} 844}
839 845
840static int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code, 846static int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code,
@@ -845,6 +851,7 @@ static int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code,
845 return fuse_notify_poll(fc, size, cs); 851 return fuse_notify_poll(fc, size, cs);
846 852
847 default: 853 default:
854 fuse_copy_finish(cs);
848 return -EINVAL; 855 return -EINVAL;
849 } 856 }
850} 857}
@@ -923,7 +930,6 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
923 */ 930 */
924 if (!oh.unique) { 931 if (!oh.unique) {
925 err = fuse_notify(fc, oh.error, nbytes - sizeof(oh), &cs); 932 err = fuse_notify(fc, oh.error, nbytes - sizeof(oh), &cs);
926 fuse_copy_finish(&cs);
927 return err ? err : nbytes; 933 return err ? err : nbytes;
928 } 934 }
929 935
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index e8162646a9b5..d9fdb7cec538 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -54,7 +54,7 @@ struct fuse_file *fuse_file_alloc(struct fuse_conn *fc)
54 ff->reserved_req = fuse_request_alloc(); 54 ff->reserved_req = fuse_request_alloc();
55 if (!ff->reserved_req) { 55 if (!ff->reserved_req) {
56 kfree(ff); 56 kfree(ff);
57 ff = NULL; 57 return NULL;
58 } else { 58 } else {
59 INIT_LIST_HEAD(&ff->write_entry); 59 INIT_LIST_HEAD(&ff->write_entry);
60 atomic_set(&ff->count, 0); 60 atomic_set(&ff->count, 0);
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 47c96fdca1ac..459b73dd45e1 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -292,6 +292,7 @@ static void fuse_put_super(struct super_block *sb)
292 list_del(&fc->entry); 292 list_del(&fc->entry);
293 fuse_ctl_remove_conn(fc); 293 fuse_ctl_remove_conn(fc);
294 mutex_unlock(&fuse_mutex); 294 mutex_unlock(&fuse_mutex);
295 bdi_destroy(&fc->bdi);
295 fuse_conn_put(fc); 296 fuse_conn_put(fc);
296} 297}
297 298
@@ -532,7 +533,6 @@ void fuse_conn_put(struct fuse_conn *fc)
532 if (fc->destroy_req) 533 if (fc->destroy_req)
533 fuse_request_free(fc->destroy_req); 534 fuse_request_free(fc->destroy_req);
534 mutex_destroy(&fc->inst_mutex); 535 mutex_destroy(&fc->inst_mutex);
535 bdi_destroy(&fc->bdi);
536 fc->release(fc); 536 fc->release(fc);
537 } 537 }
538} 538}
@@ -805,16 +805,18 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
805 int err; 805 int err;
806 int is_bdev = sb->s_bdev != NULL; 806 int is_bdev = sb->s_bdev != NULL;
807 807
808 err = -EINVAL;
808 if (sb->s_flags & MS_MANDLOCK) 809 if (sb->s_flags & MS_MANDLOCK)
809 return -EINVAL; 810 goto err;
810 811
811 if (!parse_fuse_opt((char *) data, &d, is_bdev)) 812 if (!parse_fuse_opt((char *) data, &d, is_bdev))
812 return -EINVAL; 813 goto err;
813 814
814 if (is_bdev) { 815 if (is_bdev) {
815#ifdef CONFIG_BLOCK 816#ifdef CONFIG_BLOCK
817 err = -EINVAL;
816 if (!sb_set_blocksize(sb, d.blksize)) 818 if (!sb_set_blocksize(sb, d.blksize))
817 return -EINVAL; 819 goto err;
818#endif 820#endif
819 } else { 821 } else {
820 sb->s_blocksize = PAGE_CACHE_SIZE; 822 sb->s_blocksize = PAGE_CACHE_SIZE;
@@ -826,20 +828,22 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
826 sb->s_export_op = &fuse_export_operations; 828 sb->s_export_op = &fuse_export_operations;
827 829
828 file = fget(d.fd); 830 file = fget(d.fd);
831 err = -EINVAL;
829 if (!file) 832 if (!file)
830 return -EINVAL; 833 goto err;
831 834
832 if (file->f_op != &fuse_dev_operations) 835 if (file->f_op != &fuse_dev_operations)
833 return -EINVAL; 836 goto err_fput;
834 837
835 fc = kmalloc(sizeof(*fc), GFP_KERNEL); 838 fc = kmalloc(sizeof(*fc), GFP_KERNEL);
839 err = -ENOMEM;
836 if (!fc) 840 if (!fc)
837 return -ENOMEM; 841 goto err_fput;
838 842
839 err = fuse_conn_init(fc, sb); 843 err = fuse_conn_init(fc, sb);
840 if (err) { 844 if (err) {
841 kfree(fc); 845 kfree(fc);
842 return err; 846 goto err_fput;
843 } 847 }
844 848
845 fc->release = fuse_free_conn; 849 fc->release = fuse_free_conn;
@@ -854,12 +858,12 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
854 err = -ENOMEM; 858 err = -ENOMEM;
855 root = fuse_get_root_inode(sb, d.rootmode); 859 root = fuse_get_root_inode(sb, d.rootmode);
856 if (!root) 860 if (!root)
857 goto err; 861 goto err_put_conn;
858 862
859 root_dentry = d_alloc_root(root); 863 root_dentry = d_alloc_root(root);
860 if (!root_dentry) { 864 if (!root_dentry) {
861 iput(root); 865 iput(root);
862 goto err; 866 goto err_put_conn;
863 } 867 }
864 868
865 init_req = fuse_request_alloc(); 869 init_req = fuse_request_alloc();
@@ -903,9 +907,11 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
903 fuse_request_free(init_req); 907 fuse_request_free(init_req);
904 err_put_root: 908 err_put_root:
905 dput(root_dentry); 909 dput(root_dentry);
906 err: 910 err_put_conn:
907 fput(file);
908 fuse_conn_put(fc); 911 fuse_conn_put(fc);
912 err_fput:
913 fput(file);
914 err:
909 return err; 915 return err;
910} 916}
911 917
diff --git a/fs/hfs/Kconfig b/fs/hfs/Kconfig
new file mode 100644
index 000000000000..b77c5bc20f8a
--- /dev/null
+++ b/fs/hfs/Kconfig
@@ -0,0 +1,12 @@
1config HFS_FS
2 tristate "Apple Macintosh file system support (EXPERIMENTAL)"
3 depends on BLOCK && EXPERIMENTAL
4 select NLS
5 help
6 If you say Y here, you will be able to mount Macintosh-formatted
7 floppy disks and hard drive partitions with full read-write access.
8 Please read <file:Documentation/filesystems/hfs.txt> to learn about
9 the available mount options.
10
11 To compile this file system support as a module, choose M here: the
12 module will be called hfs.
diff --git a/fs/hfsplus/Kconfig b/fs/hfsplus/Kconfig
new file mode 100644
index 000000000000..a63371815aab
--- /dev/null
+++ b/fs/hfsplus/Kconfig
@@ -0,0 +1,13 @@
1config HFSPLUS_FS
2 tristate "Apple Extended HFS file system support"
3 depends on BLOCK
4 select NLS
5 select NLS_UTF8
6 help
7 If you say Y here, you will be able to mount extended format
8 Macintosh-formatted hard drive partitions with full read-write access.
9
10 This file system is often called HFS+ and was introduced with
11 MacOS 8. It includes all Mac specific filesystem data such as
12 data forks and creator codes, but it also has several UNIX
13 style features such as file ownership and permissions.
diff --git a/fs/hpfs/Kconfig b/fs/hpfs/Kconfig
new file mode 100644
index 000000000000..56bd15c5bf6c
--- /dev/null
+++ b/fs/hpfs/Kconfig
@@ -0,0 +1,14 @@
1config HPFS_FS
2 tristate "OS/2 HPFS file system support"
3 depends on BLOCK
4 help
5 OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS
6 is the file system used for organizing files on OS/2 hard disk
7 partitions. Say Y if you want to be able to read files from and
8 write files to an OS/2 HPFS partition on your hard drive. OS/2
9 floppies however are in regular MSDOS format, so you don't need this
10 option in order to be able to read them. Read
11 <file:Documentation/filesystems/hpfs.txt>.
12
13 To compile this file system support as a module, choose M here: the
14 module will be called hpfs. If unsure, say N.
diff --git a/fs/ioctl.c b/fs/ioctl.c
index 20b0a8a24c6b..240ec63984cb 100644
--- a/fs/ioctl.c
+++ b/fs/ioctl.c
@@ -542,7 +542,7 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
542 return error; 542 return error;
543} 543}
544 544
545asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg) 545SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
546{ 546{
547 struct file *filp; 547 struct file *filp;
548 int error = -EBADF; 548 int error = -EBADF;
diff --git a/fs/ioprio.c b/fs/ioprio.c
index 1a39ac370942..c7c0b28d7d21 100644
--- a/fs/ioprio.c
+++ b/fs/ioprio.c
@@ -72,7 +72,7 @@ int set_task_ioprio(struct task_struct *task, int ioprio)
72} 72}
73EXPORT_SYMBOL_GPL(set_task_ioprio); 73EXPORT_SYMBOL_GPL(set_task_ioprio);
74 74
75asmlinkage long sys_ioprio_set(int which, int who, int ioprio) 75SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio)
76{ 76{
77 int class = IOPRIO_PRIO_CLASS(ioprio); 77 int class = IOPRIO_PRIO_CLASS(ioprio);
78 int data = IOPRIO_PRIO_DATA(ioprio); 78 int data = IOPRIO_PRIO_DATA(ioprio);
@@ -188,7 +188,7 @@ int ioprio_best(unsigned short aprio, unsigned short bprio)
188 return aprio; 188 return aprio;
189} 189}
190 190
191asmlinkage long sys_ioprio_get(int which, int who) 191SYSCALL_DEFINE2(ioprio_get, int, which, int, who)
192{ 192{
193 struct task_struct *g, *p; 193 struct task_struct *g, *p;
194 struct user_struct *user; 194 struct user_struct *user;
@@ -252,4 +252,3 @@ asmlinkage long sys_ioprio_get(int which, int who)
252 read_unlock(&tasklist_lock); 252 read_unlock(&tasklist_lock);
253 return ret; 253 return ret;
254} 254}
255
diff --git a/fs/isofs/Kconfig b/fs/isofs/Kconfig
new file mode 100644
index 000000000000..8ab9878e3671
--- /dev/null
+++ b/fs/isofs/Kconfig
@@ -0,0 +1,39 @@
1config ISO9660_FS
2 tristate "ISO 9660 CDROM file system support"
3 help
4 This is the standard file system used on CD-ROMs. It was previously
5 known as "High Sierra File System" and is called "hsfs" on other
6 Unix systems. The so-called Rock-Ridge extensions which allow for
7 long Unix filenames and symbolic links are also supported by this
8 driver. If you have a CD-ROM drive and want to do more with it than
9 just listen to audio CDs and watch its LEDs, say Y (and read
10 <file:Documentation/filesystems/isofs.txt> and the CD-ROM-HOWTO,
11 available from <http://www.tldp.org/docs.html#howto>), thereby
12 enlarging your kernel by about 27 KB; otherwise say N.
13
14 To compile this file system support as a module, choose M here: the
15 module will be called isofs.
16
17config JOLIET
18 bool "Microsoft Joliet CDROM extensions"
19 depends on ISO9660_FS
20 select NLS
21 help
22 Joliet is a Microsoft extension for the ISO 9660 CD-ROM file system
23 which allows for long filenames in unicode format (unicode is the
24 new 16 bit character code, successor to ASCII, which encodes the
25 characters of almost all languages of the world; see
26 <http://www.unicode.org/> for more information). Say Y here if you
27 want to be able to read Joliet CD-ROMs under Linux.
28
29config ZISOFS
30 bool "Transparent decompression extension"
31 depends on ISO9660_FS
32 select ZLIB_INFLATE
33 help
34 This is a Linux-specific extension to RockRidge which lets you store
35 data in compressed form on a CD-ROM and have it transparently
36 decompressed when the CD-ROM is accessed. See
37 <http://www.kernel.org/pub/linux/utils/fs/zisofs/> for the tools
38 necessary to create such a filesystem. Say Y here if you want to be
39 able to read such compressed CD-ROMs.
diff --git a/fs/jfs/Kconfig b/fs/jfs/Kconfig
new file mode 100644
index 000000000000..9ff619a6f9cc
--- /dev/null
+++ b/fs/jfs/Kconfig
@@ -0,0 +1,49 @@
1config JFS_FS
2 tristate "JFS filesystem support"
3 select NLS
4 help
5 This is a port of IBM's Journaled Filesystem . More information is
6 available in the file <file:Documentation/filesystems/jfs.txt>.
7
8 If you do not intend to use the JFS filesystem, say N.
9
10config JFS_POSIX_ACL
11 bool "JFS POSIX Access Control Lists"
12 depends on JFS_FS
13 select FS_POSIX_ACL
14 help
15 Posix Access Control Lists (ACLs) support permissions for users and
16 groups beyond the owner/group/world scheme.
17
18 To learn more about Access Control Lists, visit the Posix ACLs for
19 Linux website <http://acl.bestbits.at/>.
20
21 If you don't know what Access Control Lists are, say N
22
23config JFS_SECURITY
24 bool "JFS Security Labels"
25 depends on JFS_FS
26 help
27 Security labels support alternative access control models
28 implemented by security modules like SELinux. This option
29 enables an extended attribute handler for file security
30 labels in the jfs filesystem.
31
32 If you are not using a security module that requires using
33 extended attributes for file security labels, say N.
34
35config JFS_DEBUG
36 bool "JFS debugging"
37 depends on JFS_FS
38 help
39 If you are experiencing any problems with the JFS filesystem, say
40 Y here. This will result in additional debugging messages to be
41 written to the system log. Under normal circumstances, this
42 results in very little overhead.
43
44config JFS_STATISTICS
45 bool "JFS statistics"
46 depends on JFS_FS
47 help
48 Enabling this option will cause statistics from the JFS file system
49 to be made available to the user in the /proc/fs/jfs/ directory.
diff --git a/fs/locks.c b/fs/locks.c
index 46a2e12f7d42..ec3deea29e37 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -1564,7 +1564,7 @@ EXPORT_SYMBOL(flock_lock_file_wait);
1564 * %LOCK_MAND can be combined with %LOCK_READ or %LOCK_WRITE to allow other 1564 * %LOCK_MAND can be combined with %LOCK_READ or %LOCK_WRITE to allow other
1565 * processes read and write access respectively. 1565 * processes read and write access respectively.
1566 */ 1566 */
1567asmlinkage long sys_flock(unsigned int fd, unsigned int cmd) 1567SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd)
1568{ 1568{
1569 struct file *filp; 1569 struct file *filp;
1570 struct file_lock *lock; 1570 struct file_lock *lock;
diff --git a/fs/minix/Kconfig b/fs/minix/Kconfig
new file mode 100644
index 000000000000..0fd7ca994264
--- /dev/null
+++ b/fs/minix/Kconfig
@@ -0,0 +1,17 @@
1config MINIX_FS
2 tristate "Minix file system support"
3 depends on BLOCK
4 help
5 Minix is a simple operating system used in many classes about OS's.
6 The minix file system (method to organize files on a hard disk
7 partition or a floppy disk) was the original file system for Linux,
8 but has been superseded by the second extended file system ext2fs.
9 You don't want to use the minix file system on your hard disk
10 because of certain built-in restrictions, but it is sometimes found
11 on older Linux floppy disks. This option will enlarge your kernel
12 by about 28 KB. If unsure, say N.
13
14 To compile this file system support as a module, choose M here: the
15 module will be called minix. Note that the file system of your root
16 partition (the one containing the directory /) cannot be compiled as
17 a module.
diff --git a/fs/namei.c b/fs/namei.c
index f05bed242422..bbc15c237558 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1962,8 +1962,8 @@ static int may_mknod(mode_t mode)
1962 } 1962 }
1963} 1963}
1964 1964
1965asmlinkage long sys_mknodat(int dfd, const char __user *filename, int mode, 1965SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode,
1966 unsigned dev) 1966 unsigned, dev)
1967{ 1967{
1968 int error; 1968 int error;
1969 char *tmp; 1969 char *tmp;
@@ -2017,7 +2017,7 @@ out_unlock:
2017 return error; 2017 return error;
2018} 2018}
2019 2019
2020asmlinkage long sys_mknod(const char __user *filename, int mode, unsigned dev) 2020SYSCALL_DEFINE3(mknod, const char __user *, filename, int, mode, unsigned, dev)
2021{ 2021{
2022 return sys_mknodat(AT_FDCWD, filename, mode, dev); 2022 return sys_mknodat(AT_FDCWD, filename, mode, dev);
2023} 2023}
@@ -2044,7 +2044,7 @@ int vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
2044 return error; 2044 return error;
2045} 2045}
2046 2046
2047asmlinkage long sys_mkdirat(int dfd, const char __user *pathname, int mode) 2047SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int, mode)
2048{ 2048{
2049 int error = 0; 2049 int error = 0;
2050 char * tmp; 2050 char * tmp;
@@ -2081,7 +2081,7 @@ out_err:
2081 return error; 2081 return error;
2082} 2082}
2083 2083
2084asmlinkage long sys_mkdir(const char __user *pathname, int mode) 2084SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode)
2085{ 2085{
2086 return sys_mkdirat(AT_FDCWD, pathname, mode); 2086 return sys_mkdirat(AT_FDCWD, pathname, mode);
2087} 2087}
@@ -2195,7 +2195,7 @@ exit1:
2195 return error; 2195 return error;
2196} 2196}
2197 2197
2198asmlinkage long sys_rmdir(const char __user *pathname) 2198SYSCALL_DEFINE1(rmdir, const char __user *, pathname)
2199{ 2199{
2200 return do_rmdir(AT_FDCWD, pathname); 2200 return do_rmdir(AT_FDCWD, pathname);
2201} 2201}
@@ -2291,7 +2291,7 @@ slashes:
2291 goto exit2; 2291 goto exit2;
2292} 2292}
2293 2293
2294asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag) 2294SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int, flag)
2295{ 2295{
2296 if ((flag & ~AT_REMOVEDIR) != 0) 2296 if ((flag & ~AT_REMOVEDIR) != 0)
2297 return -EINVAL; 2297 return -EINVAL;
@@ -2302,7 +2302,7 @@ asmlinkage long sys_unlinkat(int dfd, const char __user *pathname, int flag)
2302 return do_unlinkat(dfd, pathname); 2302 return do_unlinkat(dfd, pathname);
2303} 2303}
2304 2304
2305asmlinkage long sys_unlink(const char __user *pathname) 2305SYSCALL_DEFINE1(unlink, const char __user *, pathname)
2306{ 2306{
2307 return do_unlinkat(AT_FDCWD, pathname); 2307 return do_unlinkat(AT_FDCWD, pathname);
2308} 2308}
@@ -2328,8 +2328,8 @@ int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
2328 return error; 2328 return error;
2329} 2329}
2330 2330
2331asmlinkage long sys_symlinkat(const char __user *oldname, 2331SYSCALL_DEFINE3(symlinkat, const char __user *, oldname,
2332 int newdfd, const char __user *newname) 2332 int, newdfd, const char __user *, newname)
2333{ 2333{
2334 int error; 2334 int error;
2335 char *from; 2335 char *from;
@@ -2370,7 +2370,7 @@ out_putname:
2370 return error; 2370 return error;
2371} 2371}
2372 2372
2373asmlinkage long sys_symlink(const char __user *oldname, const char __user *newname) 2373SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *, newname)
2374{ 2374{
2375 return sys_symlinkat(oldname, AT_FDCWD, newname); 2375 return sys_symlinkat(oldname, AT_FDCWD, newname);
2376} 2376}
@@ -2422,9 +2422,8 @@ int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_de
2422 * with linux 2.0, and to avoid hard-linking to directories 2422 * with linux 2.0, and to avoid hard-linking to directories
2423 * and other special files. --ADM 2423 * and other special files. --ADM
2424 */ 2424 */
2425asmlinkage long sys_linkat(int olddfd, const char __user *oldname, 2425SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
2426 int newdfd, const char __user *newname, 2426 int, newdfd, const char __user *, newname, int, flags)
2427 int flags)
2428{ 2427{
2429 struct dentry *new_dentry; 2428 struct dentry *new_dentry;
2430 struct nameidata nd; 2429 struct nameidata nd;
@@ -2473,7 +2472,7 @@ out:
2473 return error; 2472 return error;
2474} 2473}
2475 2474
2476asmlinkage long sys_link(const char __user *oldname, const char __user *newname) 2475SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname)
2477{ 2476{
2478 return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0); 2477 return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
2479} 2478}
@@ -2624,8 +2623,8 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
2624 return error; 2623 return error;
2625} 2624}
2626 2625
2627asmlinkage long sys_renameat(int olddfd, const char __user *oldname, 2626SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
2628 int newdfd, const char __user *newname) 2627 int, newdfd, const char __user *, newname)
2629{ 2628{
2630 struct dentry *old_dir, *new_dir; 2629 struct dentry *old_dir, *new_dir;
2631 struct dentry *old_dentry, *new_dentry; 2630 struct dentry *old_dentry, *new_dentry;
@@ -2718,7 +2717,7 @@ exit:
2718 return error; 2717 return error;
2719} 2718}
2720 2719
2721asmlinkage long sys_rename(const char __user *oldname, const char __user *newname) 2720SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname)
2722{ 2721{
2723 return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname); 2722 return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname);
2724} 2723}
diff --git a/fs/namespace.c b/fs/namespace.c
index a40685d800a8..228d8c4bfd18 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1128,7 +1128,7 @@ static int do_umount(struct vfsmount *mnt, int flags)
1128 * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD 1128 * unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
1129 */ 1129 */
1130 1130
1131asmlinkage long sys_umount(char __user * name, int flags) 1131SYSCALL_DEFINE2(umount, char __user *, name, int, flags)
1132{ 1132{
1133 struct path path; 1133 struct path path;
1134 int retval; 1134 int retval;
@@ -1160,7 +1160,7 @@ out:
1160/* 1160/*
1161 * The 2.0 compatible umount. No flags. 1161 * The 2.0 compatible umount. No flags.
1162 */ 1162 */
1163asmlinkage long sys_oldumount(char __user * name) 1163SYSCALL_DEFINE1(oldumount, char __user *, name)
1164{ 1164{
1165 return sys_umount(name, 0); 1165 return sys_umount(name, 0);
1166} 1166}
@@ -2045,9 +2045,8 @@ struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
2045 return new_ns; 2045 return new_ns;
2046} 2046}
2047 2047
2048asmlinkage long sys_mount(char __user * dev_name, char __user * dir_name, 2048SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,
2049 char __user * type, unsigned long flags, 2049 char __user *, type, unsigned long, flags, void __user *, data)
2050 void __user * data)
2051{ 2050{
2052 int retval; 2051 int retval;
2053 unsigned long data_page; 2052 unsigned long data_page;
@@ -2172,8 +2171,8 @@ static void chroot_fs_refs(struct path *old_root, struct path *new_root)
2172 * though, so you may need to say mount --bind /nfs/my_root /nfs/my_root 2171 * though, so you may need to say mount --bind /nfs/my_root /nfs/my_root
2173 * first. 2172 * first.
2174 */ 2173 */
2175asmlinkage long sys_pivot_root(const char __user * new_root, 2174SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
2176 const char __user * put_old) 2175 const char __user *, put_old)
2177{ 2176{
2178 struct vfsmount *tmp; 2177 struct vfsmount *tmp;
2179 struct path new, old, parent_path, root_parent, root; 2178 struct path new, old, parent_path, root_parent, root;
diff --git a/fs/ncpfs/Kconfig b/fs/ncpfs/Kconfig
index 142808427b25..c931cf22a1f6 100644
--- a/fs/ncpfs/Kconfig
+++ b/fs/ncpfs/Kconfig
@@ -1,6 +1,27 @@
1# 1#
2# NCP Filesystem configuration 2# NCP Filesystem configuration
3# 3#
4config NCP_FS
5 tristate "NCP file system support (to mount NetWare volumes)"
6 depends on IPX!=n || INET
7 help
8 NCP (NetWare Core Protocol) is a protocol that runs over IPX and is
9 used by Novell NetWare clients to talk to file servers. It is to
10 IPX what NFS is to TCP/IP, if that helps. Saying Y here allows you
11 to mount NetWare file server volumes and to access them just like
12 any other Unix directory. For details, please read the file
13 <file:Documentation/filesystems/ncpfs.txt> in the kernel source and
14 the IPX-HOWTO from <http://www.tldp.org/docs.html#howto>.
15
16 You do not have to say Y here if you want your Linux box to act as a
17 file *server* for Novell NetWare clients.
18
19 General information about how to connect Linux, Windows machines and
20 Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>.
21
22 To compile this as a module, choose M here: the module will be called
23 ncpfs. Say N unless you are connected to a Novell network.
24
4config NCPFS_PACKET_SIGNING 25config NCPFS_PACKET_SIGNING
5 bool "Packet signatures" 26 bool "Packet signatures"
6 depends on NCP_FS 27 depends on NCP_FS
diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
new file mode 100644
index 000000000000..36fe20d6eba2
--- /dev/null
+++ b/fs/nfs/Kconfig
@@ -0,0 +1,86 @@
1config NFS_FS
2 tristate "NFS client support"
3 depends on INET
4 select LOCKD
5 select SUNRPC
6 select NFS_ACL_SUPPORT if NFS_V3_ACL
7 help
8 Choose Y here if you want to access files residing on other
9 computers using Sun's Network File System protocol. To compile
10 this file system support as a module, choose M here: the module
11 will be called nfs.
12
13 To mount file systems exported by NFS servers, you also need to
14 install the user space mount.nfs command which can be found in
15 the Linux nfs-utils package, available from http://linux-nfs.org/.
16 Information about using the mount command is available in the
17 mount(8) man page. More detail about the Linux NFS client
18 implementation is available via the nfs(5) man page.
19
20 Below you can choose which versions of the NFS protocol are
21 available in the kernel to mount NFS servers. Support for NFS
22 version 2 (RFC 1094) is always available when NFS_FS is selected.
23
24 To configure a system which mounts its root file system via NFS
25 at boot time, say Y here, select "Kernel level IP
26 autoconfiguration" in the NETWORK menu, and select "Root file
27 system on NFS" below. You cannot compile this file system as a
28 module in this case.
29
30 If unsure, say N.
31
32config NFS_V3
33 bool "NFS client support for NFS version 3"
34 depends on NFS_FS
35 help
36 This option enables support for version 3 of the NFS protocol
37 (RFC 1813) in the kernel's NFS client.
38
39 If unsure, say Y.
40
41config NFS_V3_ACL
42 bool "NFS client support for the NFSv3 ACL protocol extension"
43 depends on NFS_V3
44 help
45 Some NFS servers support an auxiliary NFSv3 ACL protocol that
46 Sun added to Solaris but never became an official part of the
47 NFS version 3 protocol. This protocol extension allows
48 applications on NFS clients to manipulate POSIX Access Control
49 Lists on files residing on NFS servers. NFS servers enforce
50 ACLs on local files whether this protocol is available or not.
51
52 Choose Y here if your NFS server supports the Solaris NFSv3 ACL
53 protocol extension and you want your NFS client to allow
54 applications to access and modify ACLs on files on the server.
55
56 Most NFS servers don't support the Solaris NFSv3 ACL protocol
57 extension. You can choose N here or specify the "noacl" mount
58 option to prevent your NFS client from trying to use the NFSv3
59 ACL protocol.
60
61 If unsure, say N.
62
63config NFS_V4
64 bool "NFS client support for NFS version 4 (EXPERIMENTAL)"
65 depends on NFS_FS && EXPERIMENTAL
66 select RPCSEC_GSS_KRB5
67 help
68 This option enables support for version 4 of the NFS protocol
69 (RFC 3530) in the kernel's NFS client.
70
71 To mount NFS servers using NFSv4, you also need to install user
72 space programs which can be found in the Linux nfs-utils package,
73 available from http://linux-nfs.org/.
74
75 If unsure, say N.
76
77config ROOT_NFS
78 bool "Root file system on NFS"
79 depends on NFS_FS=y && IP_PNP
80 help
81 If you want your system to mount its root file system via NFS,
82 choose Y here. This is common practice for managing systems
83 without local permanent storage. For details, read
84 <file:Documentation/filesystems/nfsroot.txt>.
85
86 Most people say N here.
diff --git a/fs/nfsctl.c b/fs/nfsctl.c
index b27451909dff..8f9a20556f79 100644
--- a/fs/nfsctl.c
+++ b/fs/nfsctl.c
@@ -86,8 +86,8 @@ static struct {
86 }, 86 },
87}; 87};
88 88
89long 89SYSCALL_DEFINE3(nfsservctl, int, cmd, struct nfsctl_arg __user *, arg,
90asmlinkage sys_nfsservctl(int cmd, struct nfsctl_arg __user *arg, void __user *res) 90 void __user *, res)
91{ 91{
92 struct file *file; 92 struct file *file;
93 void __user *p = &arg->u; 93 void __user *p = &arg->u;
diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig
new file mode 100644
index 000000000000..44d7d04dab95
--- /dev/null
+++ b/fs/nfsd/Kconfig
@@ -0,0 +1,80 @@
1config NFSD
2 tristate "NFS server support"
3 depends on INET
4 select LOCKD
5 select SUNRPC
6 select EXPORTFS
7 select NFS_ACL_SUPPORT if NFSD_V2_ACL
8 help
9 Choose Y here if you want to allow other computers to access
10 files residing on this system using Sun's Network File System
11 protocol. To compile the NFS server support as a module,
12 choose M here: the module will be called nfsd.
13
14 You may choose to use a user-space NFS server instead, in which
15 case you can choose N here.
16
17 To export local file systems using NFS, you also need to install
18 user space programs which can be found in the Linux nfs-utils
19 package, available from http://linux-nfs.org/. More detail about
20 the Linux NFS server implementation is available via the
21 exports(5) man page.
22
23 Below you can choose which versions of the NFS protocol are
24 available to clients mounting the NFS server on this system.
25 Support for NFS version 2 (RFC 1094) is always available when
26 CONFIG_NFSD is selected.
27
28 If unsure, say N.
29
30config NFSD_V2_ACL
31 bool
32 depends on NFSD
33
34config NFSD_V3
35 bool "NFS server support for NFS version 3"
36 depends on NFSD
37 help
38 This option enables support in your system's NFS server for
39 version 3 of the NFS protocol (RFC 1813).
40
41 If unsure, say Y.
42
43config NFSD_V3_ACL
44 bool "NFS server support for the NFSv3 ACL protocol extension"
45 depends on NFSD_V3
46 select NFSD_V2_ACL
47 help
48 Solaris NFS servers support an auxiliary NFSv3 ACL protocol that
49 never became an official part of the NFS version 3 protocol.
50 This protocol extension allows applications on NFS clients to
51 manipulate POSIX Access Control Lists on files residing on NFS
52 servers. NFS servers enforce POSIX ACLs on local files whether
53 this protocol is available or not.
54
55 This option enables support in your system's NFS server for the
56 NFSv3 ACL protocol extension allowing NFS clients to manipulate
57 POSIX ACLs on files exported by your system's NFS server. NFS
58 clients which support the Solaris NFSv3 ACL protocol can then
59 access and modify ACLs on your NFS server.
60
61 To store ACLs on your NFS server, you also need to enable ACL-
62 related CONFIG options for your local file systems of choice.
63
64 If unsure, say N.
65
66config NFSD_V4
67 bool "NFS server support for NFS version 4 (EXPERIMENTAL)"
68 depends on NFSD && PROC_FS && EXPERIMENTAL
69 select NFSD_V3
70 select FS_POSIX_ACL
71 select RPCSEC_GSS_KRB5
72 help
73 This option enables support in your system's NFS server for
74 version 4 of the NFS protocol (RFC 3530).
75
76 To export files using NFSv4, you need to install additional user
77 space programs which can be found in the Linux nfs-utils package,
78 available from http://linux-nfs.org/.
79
80 If unsure, say N.
diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c
index 81b8644b0136..bed766e435b5 100644
--- a/fs/notify/inotify/inotify_user.c
+++ b/fs/notify/inotify/inotify_user.c
@@ -427,10 +427,61 @@ static unsigned int inotify_poll(struct file *file, poll_table *wait)
427 return ret; 427 return ret;
428} 428}
429 429
430/*
431 * Get an inotify_kernel_event if one exists and is small
432 * enough to fit in "count". Return an error pointer if
433 * not large enough.
434 *
435 * Called with the device ev_mutex held.
436 */
437static struct inotify_kernel_event *get_one_event(struct inotify_device *dev,
438 size_t count)
439{
440 size_t event_size = sizeof(struct inotify_event);
441 struct inotify_kernel_event *kevent;
442
443 if (list_empty(&dev->events))
444 return NULL;
445
446 kevent = inotify_dev_get_event(dev);
447 if (kevent->name)
448 event_size += kevent->event.len;
449
450 if (event_size > count)
451 return ERR_PTR(-EINVAL);
452
453 remove_kevent(dev, kevent);
454 return kevent;
455}
456
457/*
458 * Copy an event to user space, returning how much we copied.
459 *
460 * We already checked that the event size is smaller than the
461 * buffer we had in "get_one_event()" above.
462 */
463static ssize_t copy_event_to_user(struct inotify_kernel_event *kevent,
464 char __user *buf)
465{
466 size_t event_size = sizeof(struct inotify_event);
467
468 if (copy_to_user(buf, &kevent->event, event_size))
469 return -EFAULT;
470
471 if (kevent->name) {
472 buf += event_size;
473
474 if (copy_to_user(buf, kevent->name, kevent->event.len))
475 return -EFAULT;
476
477 event_size += kevent->event.len;
478 }
479 return event_size;
480}
481
430static ssize_t inotify_read(struct file *file, char __user *buf, 482static ssize_t inotify_read(struct file *file, char __user *buf,
431 size_t count, loff_t *pos) 483 size_t count, loff_t *pos)
432{ 484{
433 size_t event_size = sizeof (struct inotify_event);
434 struct inotify_device *dev; 485 struct inotify_device *dev;
435 char __user *start; 486 char __user *start;
436 int ret; 487 int ret;
@@ -440,81 +491,43 @@ static ssize_t inotify_read(struct file *file, char __user *buf,
440 dev = file->private_data; 491 dev = file->private_data;
441 492
442 while (1) { 493 while (1) {
494 struct inotify_kernel_event *kevent;
443 495
444 prepare_to_wait(&dev->wq, &wait, TASK_INTERRUPTIBLE); 496 prepare_to_wait(&dev->wq, &wait, TASK_INTERRUPTIBLE);
445 497
446 mutex_lock(&dev->ev_mutex); 498 mutex_lock(&dev->ev_mutex);
447 if (!list_empty(&dev->events)) { 499 kevent = get_one_event(dev, count);
448 ret = 0;
449 break;
450 }
451 mutex_unlock(&dev->ev_mutex); 500 mutex_unlock(&dev->ev_mutex);
452 501
453 if (file->f_flags & O_NONBLOCK) { 502 if (kevent) {
454 ret = -EAGAIN; 503 ret = PTR_ERR(kevent);
455 break; 504 if (IS_ERR(kevent))
456 } 505 break;
457 506 ret = copy_event_to_user(kevent, buf);
458 if (signal_pending(current)) { 507 free_kevent(kevent);
459 ret = -EINTR; 508 if (ret < 0)
460 break; 509 break;
510 buf += ret;
511 count -= ret;
512 continue;
461 } 513 }
462 514
463 schedule(); 515 ret = -EAGAIN;
464 } 516 if (file->f_flags & O_NONBLOCK)
465
466 finish_wait(&dev->wq, &wait);
467 if (ret)
468 return ret;
469
470 while (1) {
471 struct inotify_kernel_event *kevent;
472
473 ret = buf - start;
474 if (list_empty(&dev->events))
475 break; 517 break;
476 518 ret = -EINTR;
477 kevent = inotify_dev_get_event(dev); 519 if (signal_pending(current))
478 if (event_size + kevent->event.len > count) {
479 if (ret == 0 && count > 0) {
480 /*
481 * could not get a single event because we
482 * didn't have enough buffer space.
483 */
484 ret = -EINVAL;
485 }
486 break; 520 break;
487 }
488 remove_kevent(dev, kevent);
489 521
490 /* 522 if (start != buf)
491 * Must perform the copy_to_user outside the mutex in order
492 * to avoid a lock order reversal with mmap_sem.
493 */
494 mutex_unlock(&dev->ev_mutex);
495
496 if (copy_to_user(buf, &kevent->event, event_size)) {
497 ret = -EFAULT;
498 break; 523 break;
499 }
500 buf += event_size;
501 count -= event_size;
502
503 if (kevent->name) {
504 if (copy_to_user(buf, kevent->name, kevent->event.len)){
505 ret = -EFAULT;
506 break;
507 }
508 buf += kevent->event.len;
509 count -= kevent->event.len;
510 }
511
512 free_kevent(kevent);
513 524
514 mutex_lock(&dev->ev_mutex); 525 schedule();
515 } 526 }
516 mutex_unlock(&dev->ev_mutex);
517 527
528 finish_wait(&dev->wq, &wait);
529 if (start != buf && ret != -EFAULT)
530 ret = buf - start;
518 return ret; 531 return ret;
519} 532}
520 533
@@ -576,7 +589,7 @@ static const struct inotify_operations inotify_user_ops = {
576 .destroy_watch = free_inotify_user_watch, 589 .destroy_watch = free_inotify_user_watch,
577}; 590};
578 591
579asmlinkage long sys_inotify_init1(int flags) 592SYSCALL_DEFINE1(inotify_init1, int, flags)
580{ 593{
581 struct inotify_device *dev; 594 struct inotify_device *dev;
582 struct inotify_handle *ih; 595 struct inotify_handle *ih;
@@ -655,12 +668,13 @@ out_put_fd:
655 return ret; 668 return ret;
656} 669}
657 670
658asmlinkage long sys_inotify_init(void) 671SYSCALL_DEFINE0(inotify_init)
659{ 672{
660 return sys_inotify_init1(0); 673 return sys_inotify_init1(0);
661} 674}
662 675
663asmlinkage long sys_inotify_add_watch(int fd, const char __user *pathname, u32 mask) 676SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
677 u32, mask)
664{ 678{
665 struct inode *inode; 679 struct inode *inode;
666 struct inotify_device *dev; 680 struct inotify_device *dev;
@@ -704,7 +718,7 @@ fput_and_out:
704 return ret; 718 return ret;
705} 719}
706 720
707asmlinkage long sys_inotify_rm_watch(int fd, __s32 wd) 721SYSCALL_DEFINE2(inotify_rm_watch, int, fd, __s32, wd)
708{ 722{
709 struct file *filp; 723 struct file *filp;
710 struct inotify_device *dev; 724 struct inotify_device *dev;
diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig
new file mode 100644
index 000000000000..f5a868cc9152
--- /dev/null
+++ b/fs/ntfs/Kconfig
@@ -0,0 +1,78 @@
1config NTFS_FS
2 tristate "NTFS file system support"
3 select NLS
4 help
5 NTFS is the file system of Microsoft Windows NT, 2000, XP and 2003.
6
7 Saying Y or M here enables read support. There is partial, but
8 safe, write support available. For write support you must also
9 say Y to "NTFS write support" below.
10
11 There are also a number of user-space tools available, called
12 ntfsprogs. These include ntfsundelete and ntfsresize, that work
13 without NTFS support enabled in the kernel.
14
15 This is a rewrite from scratch of Linux NTFS support and replaced
16 the old NTFS code starting with Linux 2.5.11. A backport to
17 the Linux 2.4 kernel series is separately available as a patch
18 from the project web site.
19
20 For more information see <file:Documentation/filesystems/ntfs.txt>
21 and <http://www.linux-ntfs.org/>.
22
23 To compile this file system support as a module, choose M here: the
24 module will be called ntfs.
25
26 If you are not using Windows NT, 2000, XP or 2003 in addition to
27 Linux on your computer it is safe to say N.
28
29config NTFS_DEBUG
30 bool "NTFS debugging support"
31 depends on NTFS_FS
32 help
33 If you are experiencing any problems with the NTFS file system, say
34 Y here. This will result in additional consistency checks to be
35 performed by the driver as well as additional debugging messages to
36 be written to the system log. Note that debugging messages are
37 disabled by default. To enable them, supply the option debug_msgs=1
38 at the kernel command line when booting the kernel or as an option
39 to insmod when loading the ntfs module. Once the driver is active,
40 you can enable debugging messages by doing (as root):
41 echo 1 > /proc/sys/fs/ntfs-debug
42 Replacing the "1" with "0" would disable debug messages.
43
44 If you leave debugging messages disabled, this results in little
45 overhead, but enabling debug messages results in very significant
46 slowdown of the system.
47
48 When reporting bugs, please try to have available a full dump of
49 debugging messages while the misbehaviour was occurring.
50
51config NTFS_RW
52 bool "NTFS write support"
53 depends on NTFS_FS
54 help
55 This enables the partial, but safe, write support in the NTFS driver.
56
57 The only supported operation is overwriting existing files, without
58 changing the file length. No file or directory creation, deletion or
59 renaming is possible. Note only non-resident files can be written to
60 so you may find that some very small files (<500 bytes or so) cannot
61 be written to.
62
63 While we cannot guarantee that it will not damage any data, we have
64 so far not received a single report where the driver would have
65 damaged someones data so we assume it is perfectly safe to use.
66
67 Note: While write support is safe in this version (a rewrite from
68 scratch of the NTFS support), it should be noted that the old NTFS
69 write support, included in Linux 2.5.10 and before (since 1997),
70 is not safe.
71
72 This is currently useful with TopologiLinux. TopologiLinux is run
73 on top of any DOS/Microsoft Windows system without partitioning your
74 hard disk. Unlike other Linux distributions TopologiLinux does not
75 need its own partition. For more information see
76 <http://topologi-linux.sourceforge.net/>
77
78 It is perfectly safe to say N here.
diff --git a/fs/ocfs2/Kconfig b/fs/ocfs2/Kconfig
new file mode 100644
index 000000000000..701b7a3a872e
--- /dev/null
+++ b/fs/ocfs2/Kconfig
@@ -0,0 +1,85 @@
1config OCFS2_FS
2 tristate "OCFS2 file system support"
3 depends on NET && SYSFS
4 select CONFIGFS_FS
5 select JBD2
6 select CRC32
7 select QUOTA
8 select QUOTA_TREE
9 help
10 OCFS2 is a general purpose extent based shared disk cluster file
11 system with many similarities to ext3. It supports 64 bit inode
12 numbers, and has automatically extending metadata groups which may
13 also make it attractive for non-clustered use.
14
15 You'll want to install the ocfs2-tools package in order to at least
16 get "mount.ocfs2".
17
18 Project web page: http://oss.oracle.com/projects/ocfs2
19 Tools web page: http://oss.oracle.com/projects/ocfs2-tools
20 OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/
21
22 For more information on OCFS2, see the file
23 <file:Documentation/filesystems/ocfs2.txt>.
24
25config OCFS2_FS_O2CB
26 tristate "O2CB Kernelspace Clustering"
27 depends on OCFS2_FS
28 default y
29 help
30 OCFS2 includes a simple kernelspace clustering package, the OCFS2
31 Cluster Base. It only requires a very small userspace component
32 to configure it. This comes with the standard ocfs2-tools package.
33 O2CB is limited to maintaining a cluster for OCFS2 file systems.
34 It cannot manage any other cluster applications.
35
36 It is always safe to say Y here, as the clustering method is
37 run-time selectable.
38
39config OCFS2_FS_USERSPACE_CLUSTER
40 tristate "OCFS2 Userspace Clustering"
41 depends on OCFS2_FS && DLM
42 default y
43 help
44 This option will allow OCFS2 to use userspace clustering services
45 in conjunction with the DLM in fs/dlm. If you are using a
46 userspace cluster manager, say Y here.
47
48 It is safe to say Y, as the clustering method is run-time
49 selectable.
50
51config OCFS2_FS_STATS
52 bool "OCFS2 statistics"
53 depends on OCFS2_FS
54 default y
55 help
56 This option allows some fs statistics to be captured. Enabling
57 this option may increase the memory consumption.
58
59config OCFS2_DEBUG_MASKLOG
60 bool "OCFS2 logging support"
61 depends on OCFS2_FS
62 default y
63 help
64 The ocfs2 filesystem has an extensive logging system. The system
65 allows selection of events to log via files in /sys/o2cb/logmask/.
66 This option will enlarge your kernel, but it allows debugging of
67 ocfs2 filesystem issues.
68
69config OCFS2_DEBUG_FS
70 bool "OCFS2 expensive checks"
71 depends on OCFS2_FS
72 default n
73 help
74 This option will enable expensive consistency checks. Enable
75 this option for debugging only as it is likely to decrease
76 performance of the filesystem.
77
78config OCFS2_FS_POSIX_ACL
79 bool "OCFS2 POSIX Access Control Lists"
80 depends on OCFS2_FS
81 select FS_POSIX_ACL
82 default n
83 help
84 Posix Access Control Lists (ACLs) support permissions for users and
85 groups beyond the owner/group/world scheme.
diff --git a/fs/ocfs2/quota_global.c b/fs/ocfs2/quota_global.c
index 6aff8f2d3e49..f4efa89baee5 100644
--- a/fs/ocfs2/quota_global.c
+++ b/fs/ocfs2/quota_global.c
@@ -810,171 +810,6 @@ out:
810 return status; 810 return status;
811} 811}
812 812
813/* This is difficult. We have to lock quota inode and start transaction
814 * in this function but we don't want to take the penalty of exlusive
815 * quota file lock when we are just going to use cached structures. So
816 * we just take read lock check whether we have dquot cached and if so,
817 * we don't have to take the write lock... */
818static int ocfs2_dquot_initialize(struct inode *inode, int type)
819{
820 handle_t *handle = NULL;
821 int status = 0;
822 struct super_block *sb = inode->i_sb;
823 struct ocfs2_mem_dqinfo *oinfo;
824 int exclusive = 0;
825 int cnt;
826 qid_t id;
827
828 mlog_entry_void();
829
830 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
831 if (type != -1 && cnt != type)
832 continue;
833 if (!sb_has_quota_active(sb, cnt))
834 continue;
835 oinfo = sb_dqinfo(sb, cnt)->dqi_priv;
836 status = ocfs2_lock_global_qf(oinfo, 0);
837 if (status < 0)
838 goto out;
839 /* This is just a performance optimization not a reliable test.
840 * Since we hold an inode lock, noone can actually release
841 * the structure until we are finished with initialization. */
842 if (inode->i_dquot[cnt] != NODQUOT) {
843 ocfs2_unlock_global_qf(oinfo, 0);
844 continue;
845 }
846 /* When we have inode lock, we know that no dquot_release() can
847 * run and thus we can safely check whether we need to
848 * read+modify global file to get quota information or whether
849 * our node already has it. */
850 if (cnt == USRQUOTA)
851 id = inode->i_uid;
852 else if (cnt == GRPQUOTA)
853 id = inode->i_gid;
854 else
855 BUG();
856 /* Obtain exclusion from quota off... */
857 down_write(&sb_dqopt(sb)->dqptr_sem);
858 exclusive = !dquot_is_cached(sb, id, cnt);
859 up_write(&sb_dqopt(sb)->dqptr_sem);
860 if (exclusive) {
861 status = ocfs2_lock_global_qf(oinfo, 1);
862 if (status < 0) {
863 exclusive = 0;
864 mlog_errno(status);
865 goto out_ilock;
866 }
867 handle = ocfs2_start_trans(OCFS2_SB(sb),
868 ocfs2_calc_qinit_credits(sb, cnt));
869 if (IS_ERR(handle)) {
870 status = PTR_ERR(handle);
871 mlog_errno(status);
872 goto out_ilock;
873 }
874 }
875 dquot_initialize(inode, cnt);
876 if (exclusive) {
877 ocfs2_commit_trans(OCFS2_SB(sb), handle);
878 ocfs2_unlock_global_qf(oinfo, 1);
879 }
880 ocfs2_unlock_global_qf(oinfo, 0);
881 }
882 mlog_exit(0);
883 return 0;
884out_ilock:
885 if (exclusive)
886 ocfs2_unlock_global_qf(oinfo, 1);
887 ocfs2_unlock_global_qf(oinfo, 0);
888out:
889 mlog_exit(status);
890 return status;
891}
892
893static int ocfs2_dquot_drop_slow(struct inode *inode)
894{
895 int status = 0;
896 int cnt;
897 int got_lock[MAXQUOTAS] = {0, 0};
898 handle_t *handle;
899 struct super_block *sb = inode->i_sb;
900 struct ocfs2_mem_dqinfo *oinfo;
901
902 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
903 if (!sb_has_quota_active(sb, cnt))
904 continue;
905 oinfo = sb_dqinfo(sb, cnt)->dqi_priv;
906 status = ocfs2_lock_global_qf(oinfo, 1);
907 if (status < 0)
908 goto out;
909 got_lock[cnt] = 1;
910 }
911 handle = ocfs2_start_trans(OCFS2_SB(sb),
912 ocfs2_calc_qinit_credits(sb, USRQUOTA) +
913 ocfs2_calc_qinit_credits(sb, GRPQUOTA));
914 if (IS_ERR(handle)) {
915 status = PTR_ERR(handle);
916 mlog_errno(status);
917 goto out;
918 }
919 dquot_drop(inode);
920 ocfs2_commit_trans(OCFS2_SB(sb), handle);
921out:
922 for (cnt = 0; cnt < MAXQUOTAS; cnt++)
923 if (got_lock[cnt]) {
924 oinfo = sb_dqinfo(sb, cnt)->dqi_priv;
925 ocfs2_unlock_global_qf(oinfo, 1);
926 }
927 return status;
928}
929
930/* See the comment before ocfs2_dquot_initialize. */
931static int ocfs2_dquot_drop(struct inode *inode)
932{
933 int status = 0;
934 struct super_block *sb = inode->i_sb;
935 struct ocfs2_mem_dqinfo *oinfo;
936 int exclusive = 0;
937 int cnt;
938 int got_lock[MAXQUOTAS] = {0, 0};
939
940 mlog_entry_void();
941 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
942 if (!sb_has_quota_active(sb, cnt))
943 continue;
944 oinfo = sb_dqinfo(sb, cnt)->dqi_priv;
945 status = ocfs2_lock_global_qf(oinfo, 0);
946 if (status < 0)
947 goto out;
948 got_lock[cnt] = 1;
949 }
950 /* Lock against anyone releasing references so that when when we check
951 * we know we are not going to be last ones to release dquot */
952 down_write(&sb_dqopt(sb)->dqptr_sem);
953 /* Urgh, this is a terrible hack :( */
954 for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
955 if (inode->i_dquot[cnt] != NODQUOT &&
956 atomic_read(&inode->i_dquot[cnt]->dq_count) > 1) {
957 exclusive = 1;
958 break;
959 }
960 }
961 if (!exclusive)
962 dquot_drop_locked(inode);
963 up_write(&sb_dqopt(sb)->dqptr_sem);
964out:
965 for (cnt = 0; cnt < MAXQUOTAS; cnt++)
966 if (got_lock[cnt]) {
967 oinfo = sb_dqinfo(sb, cnt)->dqi_priv;
968 ocfs2_unlock_global_qf(oinfo, 0);
969 }
970 /* In case we bailed out because we had to do expensive locking
971 * do it now... */
972 if (exclusive)
973 status = ocfs2_dquot_drop_slow(inode);
974 mlog_exit(status);
975 return status;
976}
977
978static struct dquot *ocfs2_alloc_dquot(struct super_block *sb, int type) 813static struct dquot *ocfs2_alloc_dquot(struct super_block *sb, int type)
979{ 814{
980 struct ocfs2_dquot *dquot = 815 struct ocfs2_dquot *dquot =
@@ -991,8 +826,8 @@ static void ocfs2_destroy_dquot(struct dquot *dquot)
991} 826}
992 827
993struct dquot_operations ocfs2_quota_operations = { 828struct dquot_operations ocfs2_quota_operations = {
994 .initialize = ocfs2_dquot_initialize, 829 .initialize = dquot_initialize,
995 .drop = ocfs2_dquot_drop, 830 .drop = dquot_drop,
996 .alloc_space = dquot_alloc_space, 831 .alloc_space = dquot_alloc_space,
997 .alloc_inode = dquot_alloc_inode, 832 .alloc_inode = dquot_alloc_inode,
998 .free_space = dquot_free_space, 833 .free_space = dquot_free_space,
diff --git a/fs/omfs/Kconfig b/fs/omfs/Kconfig
new file mode 100644
index 000000000000..b1b9a0aba6fd
--- /dev/null
+++ b/fs/omfs/Kconfig
@@ -0,0 +1,13 @@
1config OMFS_FS
2 tristate "SonicBlue Optimized MPEG File System support"
3 depends on BLOCK
4 select CRC_ITU_T
5 help
6 This is the proprietary file system used by the Rio Karma music
7 player and ReplayTV DVR. Despite the name, this filesystem is not
8 more efficient than a standard FS for MPEG files, in fact likely
9 the opposite is true. Say Y if you have either of these devices
10 and wish to mount its disk.
11
12 To compile this file system support as a module, choose M here: the
13 module will be called omfs. If unsure, say N.
diff --git a/fs/open.c b/fs/open.c
index d882fd2351d6..a3a78ceb2a2b 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -122,7 +122,7 @@ static int vfs_statfs64(struct dentry *dentry, struct statfs64 *buf)
122 return 0; 122 return 0;
123} 123}
124 124
125asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * buf) 125SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct statfs __user *, buf)
126{ 126{
127 struct path path; 127 struct path path;
128 int error; 128 int error;
@@ -138,8 +138,7 @@ asmlinkage long sys_statfs(const char __user *pathname, struct statfs __user * b
138 return error; 138 return error;
139} 139}
140 140
141 141SYSCALL_DEFINE3(statfs64, const char __user *, pathname, size_t, sz, struct statfs64 __user *, buf)
142asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct statfs64 __user *buf)
143{ 142{
144 struct path path; 143 struct path path;
145 long error; 144 long error;
@@ -157,8 +156,7 @@ asmlinkage long sys_statfs64(const char __user *pathname, size_t sz, struct stat
157 return error; 156 return error;
158} 157}
159 158
160 159SYSCALL_DEFINE2(fstatfs, unsigned int, fd, struct statfs __user *, buf)
161asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user * buf)
162{ 160{
163 struct file * file; 161 struct file * file;
164 struct statfs tmp; 162 struct statfs tmp;
@@ -176,7 +174,7 @@ out:
176 return error; 174 return error;
177} 175}
178 176
179asmlinkage long sys_fstatfs64(unsigned int fd, size_t sz, struct statfs64 __user *buf) 177SYSCALL_DEFINE3(fstatfs64, unsigned int, fd, size_t, sz, struct statfs64 __user *, buf)
180{ 178{
181 struct file * file; 179 struct file * file;
182 struct statfs64 tmp; 180 struct statfs64 tmp;
@@ -289,7 +287,7 @@ out:
289 return error; 287 return error;
290} 288}
291 289
292asmlinkage long sys_truncate(const char __user * path, unsigned long length) 290SYSCALL_DEFINE2(truncate, const char __user *, path, unsigned long, length)
293{ 291{
294 /* on 32-bit boxen it will cut the range 2^31--2^32-1 off */ 292 /* on 32-bit boxen it will cut the range 2^31--2^32-1 off */
295 return do_sys_truncate(path, (long)length); 293 return do_sys_truncate(path, (long)length);
@@ -341,7 +339,7 @@ out:
341 return error; 339 return error;
342} 340}
343 341
344asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length) 342SYSCALL_DEFINE2(ftruncate, unsigned int, fd, unsigned long, length)
345{ 343{
346 long ret = do_sys_ftruncate(fd, length, 1); 344 long ret = do_sys_ftruncate(fd, length, 1);
347 /* avoid REGPARM breakage on x86: */ 345 /* avoid REGPARM breakage on x86: */
@@ -351,21 +349,35 @@ asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
351 349
352/* LFS versions of truncate are only needed on 32 bit machines */ 350/* LFS versions of truncate are only needed on 32 bit machines */
353#if BITS_PER_LONG == 32 351#if BITS_PER_LONG == 32
354asmlinkage long sys_truncate64(const char __user * path, loff_t length) 352SYSCALL_DEFINE(truncate64)(const char __user * path, loff_t length)
355{ 353{
356 return do_sys_truncate(path, length); 354 return do_sys_truncate(path, length);
357} 355}
356#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
357asmlinkage long SyS_truncate64(long path, loff_t length)
358{
359 return SYSC_truncate64((const char __user *) path, length);
360}
361SYSCALL_ALIAS(sys_truncate64, SyS_truncate64);
362#endif
358 363
359asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length) 364SYSCALL_DEFINE(ftruncate64)(unsigned int fd, loff_t length)
360{ 365{
361 long ret = do_sys_ftruncate(fd, length, 0); 366 long ret = do_sys_ftruncate(fd, length, 0);
362 /* avoid REGPARM breakage on x86: */ 367 /* avoid REGPARM breakage on x86: */
363 asmlinkage_protect(2, ret, fd, length); 368 asmlinkage_protect(2, ret, fd, length);
364 return ret; 369 return ret;
365} 370}
371#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
372asmlinkage long SyS_ftruncate64(long fd, loff_t length)
373{
374 return SYSC_ftruncate64((unsigned int) fd, length);
375}
376SYSCALL_ALIAS(sys_ftruncate64, SyS_ftruncate64);
366#endif 377#endif
378#endif /* BITS_PER_LONG == 32 */
367 379
368asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len) 380SYSCALL_DEFINE(fallocate)(int fd, int mode, loff_t offset, loff_t len)
369{ 381{
370 struct file *file; 382 struct file *file;
371 struct inode *inode; 383 struct inode *inode;
@@ -422,13 +434,20 @@ out_fput:
422out: 434out:
423 return ret; 435 return ret;
424} 436}
437#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
438asmlinkage long SyS_fallocate(long fd, long mode, loff_t offset, loff_t len)
439{
440 return SYSC_fallocate((int)fd, (int)mode, offset, len);
441}
442SYSCALL_ALIAS(sys_fallocate, SyS_fallocate);
443#endif
425 444
426/* 445/*
427 * access() needs to use the real uid/gid, not the effective uid/gid. 446 * access() needs to use the real uid/gid, not the effective uid/gid.
428 * We do this by temporarily clearing all FS-related capabilities and 447 * We do this by temporarily clearing all FS-related capabilities and
429 * switching the fsuid/fsgid around to the real ones. 448 * switching the fsuid/fsgid around to the real ones.
430 */ 449 */
431asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode) 450SYSCALL_DEFINE3(faccessat, int, dfd, const char __user *, filename, int, mode)
432{ 451{
433 const struct cred *old_cred; 452 const struct cred *old_cred;
434 struct cred *override_cred; 453 struct cred *override_cred;
@@ -498,12 +517,12 @@ out:
498 return res; 517 return res;
499} 518}
500 519
501asmlinkage long sys_access(const char __user *filename, int mode) 520SYSCALL_DEFINE2(access, const char __user *, filename, int, mode)
502{ 521{
503 return sys_faccessat(AT_FDCWD, filename, mode); 522 return sys_faccessat(AT_FDCWD, filename, mode);
504} 523}
505 524
506asmlinkage long sys_chdir(const char __user * filename) 525SYSCALL_DEFINE1(chdir, const char __user *, filename)
507{ 526{
508 struct path path; 527 struct path path;
509 int error; 528 int error;
@@ -524,7 +543,7 @@ out:
524 return error; 543 return error;
525} 544}
526 545
527asmlinkage long sys_fchdir(unsigned int fd) 546SYSCALL_DEFINE1(fchdir, unsigned int, fd)
528{ 547{
529 struct file *file; 548 struct file *file;
530 struct inode *inode; 549 struct inode *inode;
@@ -550,7 +569,7 @@ out:
550 return error; 569 return error;
551} 570}
552 571
553asmlinkage long sys_chroot(const char __user * filename) 572SYSCALL_DEFINE1(chroot, const char __user *, filename)
554{ 573{
555 struct path path; 574 struct path path;
556 int error; 575 int error;
@@ -575,7 +594,7 @@ out:
575 return error; 594 return error;
576} 595}
577 596
578asmlinkage long sys_fchmod(unsigned int fd, mode_t mode) 597SYSCALL_DEFINE2(fchmod, unsigned int, fd, mode_t, mode)
579{ 598{
580 struct inode * inode; 599 struct inode * inode;
581 struct dentry * dentry; 600 struct dentry * dentry;
@@ -609,8 +628,7 @@ out:
609 return err; 628 return err;
610} 629}
611 630
612asmlinkage long sys_fchmodat(int dfd, const char __user *filename, 631SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, mode_t, mode)
613 mode_t mode)
614{ 632{
615 struct path path; 633 struct path path;
616 struct inode *inode; 634 struct inode *inode;
@@ -639,7 +657,7 @@ out:
639 return error; 657 return error;
640} 658}
641 659
642asmlinkage long sys_chmod(const char __user *filename, mode_t mode) 660SYSCALL_DEFINE2(chmod, const char __user *, filename, mode_t, mode)
643{ 661{
644 return sys_fchmodat(AT_FDCWD, filename, mode); 662 return sys_fchmodat(AT_FDCWD, filename, mode);
645} 663}
@@ -669,7 +687,7 @@ static int chown_common(struct dentry * dentry, uid_t user, gid_t group)
669 return error; 687 return error;
670} 688}
671 689
672asmlinkage long sys_chown(const char __user * filename, uid_t user, gid_t group) 690SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)
673{ 691{
674 struct path path; 692 struct path path;
675 int error; 693 int error;
@@ -688,8 +706,8 @@ out:
688 return error; 706 return error;
689} 707}
690 708
691asmlinkage long sys_fchownat(int dfd, const char __user *filename, uid_t user, 709SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user,
692 gid_t group, int flag) 710 gid_t, group, int, flag)
693{ 711{
694 struct path path; 712 struct path path;
695 int error = -EINVAL; 713 int error = -EINVAL;
@@ -713,7 +731,7 @@ out:
713 return error; 731 return error;
714} 732}
715 733
716asmlinkage long sys_lchown(const char __user * filename, uid_t user, gid_t group) 734SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group)
717{ 735{
718 struct path path; 736 struct path path;
719 int error; 737 int error;
@@ -732,8 +750,7 @@ out:
732 return error; 750 return error;
733} 751}
734 752
735 753SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
736asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group)
737{ 754{
738 struct file * file; 755 struct file * file;
739 int error = -EBADF; 756 int error = -EBADF;
@@ -1029,7 +1046,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
1029 return fd; 1046 return fd;
1030} 1047}
1031 1048
1032asmlinkage long sys_open(const char __user *filename, int flags, int mode) 1049SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)
1033{ 1050{
1034 long ret; 1051 long ret;
1035 1052
@@ -1042,8 +1059,8 @@ asmlinkage long sys_open(const char __user *filename, int flags, int mode)
1042 return ret; 1059 return ret;
1043} 1060}
1044 1061
1045asmlinkage long sys_openat(int dfd, const char __user *filename, int flags, 1062SYSCALL_DEFINE4(openat, int, dfd, const char __user *, filename, int, flags,
1046 int mode) 1063 int, mode)
1047{ 1064{
1048 long ret; 1065 long ret;
1049 1066
@@ -1062,7 +1079,7 @@ asmlinkage long sys_openat(int dfd, const char __user *filename, int flags,
1062 * For backward compatibility? Maybe this should be moved 1079 * For backward compatibility? Maybe this should be moved
1063 * into arch/i386 instead? 1080 * into arch/i386 instead?
1064 */ 1081 */
1065asmlinkage long sys_creat(const char __user * pathname, int mode) 1082SYSCALL_DEFINE2(creat, const char __user *, pathname, int, mode)
1066{ 1083{
1067 return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode); 1084 return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);
1068} 1085}
@@ -1098,7 +1115,7 @@ EXPORT_SYMBOL(filp_close);
1098 * releasing the fd. This ensures that one clone task can't release 1115 * releasing the fd. This ensures that one clone task can't release
1099 * an fd while another clone is opening it. 1116 * an fd while another clone is opening it.
1100 */ 1117 */
1101asmlinkage long sys_close(unsigned int fd) 1118SYSCALL_DEFINE1(close, unsigned int, fd)
1102{ 1119{
1103 struct file * filp; 1120 struct file * filp;
1104 struct files_struct *files = current->files; 1121 struct files_struct *files = current->files;
@@ -1131,14 +1148,13 @@ out_unlock:
1131 spin_unlock(&files->file_lock); 1148 spin_unlock(&files->file_lock);
1132 return -EBADF; 1149 return -EBADF;
1133} 1150}
1134
1135EXPORT_SYMBOL(sys_close); 1151EXPORT_SYMBOL(sys_close);
1136 1152
1137/* 1153/*
1138 * This routine simulates a hangup on the tty, to arrange that users 1154 * This routine simulates a hangup on the tty, to arrange that users
1139 * are given clean terminals at login time. 1155 * are given clean terminals at login time.
1140 */ 1156 */
1141asmlinkage long sys_vhangup(void) 1157SYSCALL_DEFINE0(vhangup)
1142{ 1158{
1143 if (capable(CAP_SYS_TTY_CONFIG)) { 1159 if (capable(CAP_SYS_TTY_CONFIG)) {
1144 tty_vhangup_self(); 1160 tty_vhangup_self();
diff --git a/fs/pipe.c b/fs/pipe.c
index 891697112f66..3a48ba5179d5 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -1043,7 +1043,7 @@ int do_pipe(int *fd)
1043 * sys_pipe() is the normal C calling standard for creating 1043 * sys_pipe() is the normal C calling standard for creating
1044 * a pipe. It's not the way Unix traditionally does this, though. 1044 * a pipe. It's not the way Unix traditionally does this, though.
1045 */ 1045 */
1046asmlinkage long __weak sys_pipe2(int __user *fildes, int flags) 1046SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags)
1047{ 1047{
1048 int fd[2]; 1048 int fd[2];
1049 int error; 1049 int error;
@@ -1059,7 +1059,7 @@ asmlinkage long __weak sys_pipe2(int __user *fildes, int flags)
1059 return error; 1059 return error;
1060} 1060}
1061 1061
1062asmlinkage long __weak sys_pipe(int __user *fildes) 1062SYSCALL_DEFINE1(pipe, int __user *, fildes)
1063{ 1063{
1064 return sys_pipe2(fildes, 0); 1064 return sys_pipe2(fildes, 0);
1065} 1065}
diff --git a/fs/qnx4/Kconfig b/fs/qnx4/Kconfig
new file mode 100644
index 000000000000..be8e0e1445b6
--- /dev/null
+++ b/fs/qnx4/Kconfig
@@ -0,0 +1,25 @@
1config QNX4FS_FS
2 tristate "QNX4 file system support (read only)"
3 depends on BLOCK
4 help
5 This is the file system used by the real-time operating systems
6 QNX 4 and QNX 6 (the latter is also called QNX RTP).
7 Further information is available at <http://www.qnx.com/>.
8 Say Y if you intend to mount QNX hard disks or floppies.
9 Unless you say Y to "QNX4FS read-write support" below, you will
10 only be able to read these file systems.
11
12 To compile this file system support as a module, choose M here: the
13 module will be called qnx4.
14
15 If you don't know whether you need it, then you don't need it:
16 answer N.
17
18config QNX4FS_RW
19 bool "QNX4FS write support (DANGEROUS)"
20 depends on QNX4FS_FS && EXPERIMENTAL && BROKEN
21 help
22 Say Y if you want to test write support for QNX4 file systems.
23
24 It's currently broken, so for now:
25 answer N.
diff --git a/fs/quota.c b/fs/quota.c
index 4a8c94f05f76..d76ada914f98 100644
--- a/fs/quota.c
+++ b/fs/quota.c
@@ -371,7 +371,8 @@ static inline struct super_block *quotactl_block(const char __user *special)
371 * calls. Maybe we need to add the process quotas etc. in the future, 371 * calls. Maybe we need to add the process quotas etc. in the future,
372 * but we probably should use rlimits for that. 372 * but we probably should use rlimits for that.
373 */ 373 */
374asmlinkage long sys_quotactl(unsigned int cmd, const char __user *special, qid_t id, void __user *addr) 374SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special,
375 qid_t, id, void __user *, addr)
375{ 376{
376 uint cmds, type; 377 uint cmds, type;
377 struct super_block *sb = NULL; 378 struct super_block *sb = NULL;
diff --git a/fs/read_write.c b/fs/read_write.c
index 5cc6924eb158..400fe81c973e 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -147,7 +147,7 @@ loff_t vfs_llseek(struct file *file, loff_t offset, int origin)
147} 147}
148EXPORT_SYMBOL(vfs_llseek); 148EXPORT_SYMBOL(vfs_llseek);
149 149
150asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin) 150SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, origin)
151{ 151{
152 off_t retval; 152 off_t retval;
153 struct file * file; 153 struct file * file;
@@ -171,9 +171,9 @@ bad:
171} 171}
172 172
173#ifdef __ARCH_WANT_SYS_LLSEEK 173#ifdef __ARCH_WANT_SYS_LLSEEK
174asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high, 174SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high,
175 unsigned long offset_low, loff_t __user * result, 175 unsigned long, offset_low, loff_t __user *, result,
176 unsigned int origin) 176 unsigned int, origin)
177{ 177{
178 int retval; 178 int retval;
179 struct file * file; 179 struct file * file;
@@ -369,7 +369,7 @@ static inline void file_pos_write(struct file *file, loff_t pos)
369 file->f_pos = pos; 369 file->f_pos = pos;
370} 370}
371 371
372asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count) 372SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
373{ 373{
374 struct file *file; 374 struct file *file;
375 ssize_t ret = -EBADF; 375 ssize_t ret = -EBADF;
@@ -386,7 +386,8 @@ asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count)
386 return ret; 386 return ret;
387} 387}
388 388
389asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t count) 389SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf,
390 size_t, count)
390{ 391{
391 struct file *file; 392 struct file *file;
392 ssize_t ret = -EBADF; 393 ssize_t ret = -EBADF;
@@ -403,8 +404,8 @@ asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t co
403 return ret; 404 return ret;
404} 405}
405 406
406asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf, 407SYSCALL_DEFINE(pread64)(unsigned int fd, char __user *buf,
407 size_t count, loff_t pos) 408 size_t count, loff_t pos)
408{ 409{
409 struct file *file; 410 struct file *file;
410 ssize_t ret = -EBADF; 411 ssize_t ret = -EBADF;
@@ -423,9 +424,17 @@ asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf,
423 424
424 return ret; 425 return ret;
425} 426}
427#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
428asmlinkage long SyS_pread64(long fd, long buf, long count, loff_t pos)
429{
430 return SYSC_pread64((unsigned int) fd, (char __user *) buf,
431 (size_t) count, pos);
432}
433SYSCALL_ALIAS(sys_pread64, SyS_pread64);
434#endif
426 435
427asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf, 436SYSCALL_DEFINE(pwrite64)(unsigned int fd, const char __user *buf,
428 size_t count, loff_t pos) 437 size_t count, loff_t pos)
429{ 438{
430 struct file *file; 439 struct file *file;
431 ssize_t ret = -EBADF; 440 ssize_t ret = -EBADF;
@@ -444,6 +453,14 @@ asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf,
444 453
445 return ret; 454 return ret;
446} 455}
456#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
457asmlinkage long SyS_pwrite64(long fd, long buf, long count, loff_t pos)
458{
459 return SYSC_pwrite64((unsigned int) fd, (const char __user *) buf,
460 (size_t) count, pos);
461}
462SYSCALL_ALIAS(sys_pwrite64, SyS_pwrite64);
463#endif
447 464
448/* 465/*
449 * Reduce an iovec's length in-place. Return the resulting number of segments 466 * Reduce an iovec's length in-place. Return the resulting number of segments
@@ -672,8 +689,8 @@ ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
672 689
673EXPORT_SYMBOL(vfs_writev); 690EXPORT_SYMBOL(vfs_writev);
674 691
675asmlinkage ssize_t 692SYSCALL_DEFINE3(readv, unsigned long, fd, const struct iovec __user *, vec,
676sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) 693 unsigned long, vlen)
677{ 694{
678 struct file *file; 695 struct file *file;
679 ssize_t ret = -EBADF; 696 ssize_t ret = -EBADF;
@@ -693,8 +710,8 @@ sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen)
693 return ret; 710 return ret;
694} 711}
695 712
696asmlinkage ssize_t 713SYSCALL_DEFINE3(writev, unsigned long, fd, const struct iovec __user *, vec,
697sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) 714 unsigned long, vlen)
698{ 715{
699 struct file *file; 716 struct file *file;
700 ssize_t ret = -EBADF; 717 ssize_t ret = -EBADF;
@@ -812,7 +829,7 @@ out:
812 return retval; 829 return retval;
813} 830}
814 831
815asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, size_t count) 832SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, off_t __user *, offset, size_t, count)
816{ 833{
817 loff_t pos; 834 loff_t pos;
818 off_t off; 835 off_t off;
@@ -831,7 +848,7 @@ asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, siz
831 return do_sendfile(out_fd, in_fd, NULL, count, 0); 848 return do_sendfile(out_fd, in_fd, NULL, count, 0);
832} 849}
833 850
834asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t __user *offset, size_t count) 851SYSCALL_DEFINE4(sendfile64, int, out_fd, int, in_fd, loff_t __user *, offset, size_t, count)
835{ 852{
836 loff_t pos; 853 loff_t pos;
837 ssize_t ret; 854 ssize_t ret;
diff --git a/fs/readdir.c b/fs/readdir.c
index b318d9b5af2e..7723401f8d8b 100644
--- a/fs/readdir.c
+++ b/fs/readdir.c
@@ -102,7 +102,8 @@ efault:
102 return -EFAULT; 102 return -EFAULT;
103} 103}
104 104
105asmlinkage long old_readdir(unsigned int fd, struct old_linux_dirent __user * dirent, unsigned int count) 105SYSCALL_DEFINE3(old_readdir, unsigned int, fd,
106 struct old_linux_dirent __user *, dirent, unsigned int, count)
106{ 107{
107 int error; 108 int error;
108 struct file * file; 109 struct file * file;
@@ -187,7 +188,8 @@ efault:
187 return -EFAULT; 188 return -EFAULT;
188} 189}
189 190
190asmlinkage long sys_getdents(unsigned int fd, struct linux_dirent __user * dirent, unsigned int count) 191SYSCALL_DEFINE3(getdents, unsigned int, fd,
192 struct linux_dirent __user *, dirent, unsigned int, count)
191{ 193{
192 struct file * file; 194 struct file * file;
193 struct linux_dirent __user * lastdirent; 195 struct linux_dirent __user * lastdirent;
@@ -268,7 +270,8 @@ efault:
268 return -EFAULT; 270 return -EFAULT;
269} 271}
270 272
271asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count) 273SYSCALL_DEFINE3(getdents64, unsigned int, fd,
274 struct linux_dirent64 __user *, dirent, unsigned int, count)
272{ 275{
273 struct file * file; 276 struct file * file;
274 struct linux_dirent64 __user * lastdirent; 277 struct linux_dirent64 __user * lastdirent;
diff --git a/fs/reiserfs/Kconfig b/fs/reiserfs/Kconfig
new file mode 100644
index 000000000000..949b8c6addc8
--- /dev/null
+++ b/fs/reiserfs/Kconfig
@@ -0,0 +1,85 @@
1config REISERFS_FS
2 tristate "Reiserfs support"
3 help
4 Stores not just filenames but the files themselves in a balanced
5 tree. Uses journalling.
6
7 Balanced trees are more efficient than traditional file system
8 architectural foundations.
9
10 In general, ReiserFS is as fast as ext2, but is very efficient with
11 large directories and small files. Additional patches are needed
12 for NFS and quotas, please see <http://www.namesys.com/> for links.
13
14 It is more easily extended to have features currently found in
15 database and keyword search systems than block allocation based file
16 systems are. The next version will be so extended, and will support
17 plugins consistent with our motto ``It takes more than a license to
18 make source code open.''
19
20 Read <http://www.namesys.com/> to learn more about reiserfs.
21
22 Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com.
23
24 If you like it, you can pay us to add new features to it that you
25 need, buy a support contract, or pay us to port it to another OS.
26
27config REISERFS_CHECK
28 bool "Enable reiserfs debug mode"
29 depends on REISERFS_FS
30 help
31 If you set this to Y, then ReiserFS will perform every check it can
32 possibly imagine of its internal consistency throughout its
33 operation. It will also go substantially slower. More than once we
34 have forgotten that this was on, and then gone despondent over the
35 latest benchmarks.:-) Use of this option allows our team to go all
36 out in checking for consistency when debugging without fear of its
37 effect on end users. If you are on the verge of sending in a bug
38 report, say Y and you might get a useful error message. Almost
39 everyone should say N.
40
41config REISERFS_PROC_INFO
42 bool "Stats in /proc/fs/reiserfs"
43 depends on REISERFS_FS && PROC_FS
44 help
45 Create under /proc/fs/reiserfs a hierarchy of files, displaying
46 various ReiserFS statistics and internal data at the expense of
47 making your kernel or module slightly larger (+8 KB). This also
48 increases the amount of kernel memory required for each mount.
49 Almost everyone but ReiserFS developers and people fine-tuning
50 reiserfs or tracing problems should say N.
51
52config REISERFS_FS_XATTR
53 bool "ReiserFS extended attributes"
54 depends on REISERFS_FS
55 help
56 Extended attributes are name:value pairs associated with inodes by
57 the kernel or by users (see the attr(5) manual page, or visit
58 <http://acl.bestbits.at/> for details).
59
60 If unsure, say N.
61
62config REISERFS_FS_POSIX_ACL
63 bool "ReiserFS POSIX Access Control Lists"
64 depends on REISERFS_FS_XATTR
65 select FS_POSIX_ACL
66 help
67 Posix Access Control Lists (ACLs) support permissions for users and
68 groups beyond the owner/group/world scheme.
69
70 To learn more about Access Control Lists, visit the Posix ACLs for
71 Linux website <http://acl.bestbits.at/>.
72
73 If you don't know what Access Control Lists are, say N
74
75config REISERFS_FS_SECURITY
76 bool "ReiserFS Security Labels"
77 depends on REISERFS_FS_XATTR
78 help
79 Security labels support alternative access control models
80 implemented by security modules like SELinux. This option
81 enables an extended attribute handler for file security
82 labels in the ReiserFS filesystem.
83
84 If you are not using a security module that requires using
85 extended attributes for file security labels, say N.
diff --git a/fs/romfs/Kconfig b/fs/romfs/Kconfig
new file mode 100644
index 000000000000..1a17020f9faf
--- /dev/null
+++ b/fs/romfs/Kconfig
@@ -0,0 +1,16 @@
1config ROMFS_FS
2 tristate "ROM file system support"
3 depends on BLOCK
4 ---help---
5 This is a very small read-only file system mainly intended for
6 initial ram disks of installation disks, but it could be used for
7 other read-only media as well. Read
8 <file:Documentation/filesystems/romfs.txt> for details.
9
10 To compile this file system support as a module, choose M here: the
11 module will be called romfs. Note that the file system of your
12 root partition (the one containing the directory /) cannot be a
13 module.
14
15 If you don't know whether you need it, then you don't need it:
16 answer N.
diff --git a/fs/select.c b/fs/select.c
index b0cf1f0896d9..0fe0e1469df3 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -557,8 +557,8 @@ out_nofds:
557 return ret; 557 return ret;
558} 558}
559 559
560asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, 560SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp,
561 fd_set __user *exp, struct timeval __user *tvp) 561 fd_set __user *, exp, struct timeval __user *, tvp)
562{ 562{
563 struct timespec end_time, *to = NULL; 563 struct timespec end_time, *to = NULL;
564 struct timeval tv; 564 struct timeval tv;
@@ -582,9 +582,9 @@ asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp,
582} 582}
583 583
584#ifdef HAVE_SET_RESTORE_SIGMASK 584#ifdef HAVE_SET_RESTORE_SIGMASK
585asmlinkage long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp, 585static long do_pselect(int n, fd_set __user *inp, fd_set __user *outp,
586 fd_set __user *exp, struct timespec __user *tsp, 586 fd_set __user *exp, struct timespec __user *tsp,
587 const sigset_t __user *sigmask, size_t sigsetsize) 587 const sigset_t __user *sigmask, size_t sigsetsize)
588{ 588{
589 sigset_t ksigmask, sigsaved; 589 sigset_t ksigmask, sigsaved;
590 struct timespec ts, end_time, *to = NULL; 590 struct timespec ts, end_time, *to = NULL;
@@ -636,8 +636,9 @@ asmlinkage long sys_pselect7(int n, fd_set __user *inp, fd_set __user *outp,
636 * which has a pointer to the sigset_t itself followed by a size_t containing 636 * which has a pointer to the sigset_t itself followed by a size_t containing
637 * the sigset size. 637 * the sigset size.
638 */ 638 */
639asmlinkage long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp, 639SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp,
640 fd_set __user *exp, struct timespec __user *tsp, void __user *sig) 640 fd_set __user *, exp, struct timespec __user *, tsp,
641 void __user *, sig)
641{ 642{
642 size_t sigsetsize = 0; 643 size_t sigsetsize = 0;
643 sigset_t __user *up = NULL; 644 sigset_t __user *up = NULL;
@@ -650,7 +651,7 @@ asmlinkage long sys_pselect6(int n, fd_set __user *inp, fd_set __user *outp,
650 return -EFAULT; 651 return -EFAULT;
651 } 652 }
652 653
653 return sys_pselect7(n, inp, outp, exp, tsp, up, sigsetsize); 654 return do_pselect(n, inp, outp, exp, tsp, up, sigsetsize);
654} 655}
655#endif /* HAVE_SET_RESTORE_SIGMASK */ 656#endif /* HAVE_SET_RESTORE_SIGMASK */
656 657
@@ -854,8 +855,8 @@ static long do_restart_poll(struct restart_block *restart_block)
854 return ret; 855 return ret;
855} 856}
856 857
857asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds, 858SYSCALL_DEFINE3(poll, struct pollfd __user *, ufds, unsigned int, nfds,
858 long timeout_msecs) 859 long, timeout_msecs)
859{ 860{
860 struct timespec end_time, *to = NULL; 861 struct timespec end_time, *to = NULL;
861 int ret; 862 int ret;
@@ -889,9 +890,9 @@ asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds,
889} 890}
890 891
891#ifdef HAVE_SET_RESTORE_SIGMASK 892#ifdef HAVE_SET_RESTORE_SIGMASK
892asmlinkage long sys_ppoll(struct pollfd __user *ufds, unsigned int nfds, 893SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, unsigned int, nfds,
893 struct timespec __user *tsp, const sigset_t __user *sigmask, 894 struct timespec __user *, tsp, const sigset_t __user *, sigmask,
894 size_t sigsetsize) 895 size_t, sigsetsize)
895{ 896{
896 sigset_t ksigmask, sigsaved; 897 sigset_t ksigmask, sigsaved;
897 struct timespec ts, end_time, *to = NULL; 898 struct timespec ts, end_time, *to = NULL;
diff --git a/fs/signalfd.c b/fs/signalfd.c
index 9c39bc7f8431..b07565c94386 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -205,8 +205,8 @@ static const struct file_operations signalfd_fops = {
205 .read = signalfd_read, 205 .read = signalfd_read,
206}; 206};
207 207
208asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask, 208SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
209 size_t sizemask, int flags) 209 size_t, sizemask, int, flags)
210{ 210{
211 sigset_t sigmask; 211 sigset_t sigmask;
212 struct signalfd_ctx *ctx; 212 struct signalfd_ctx *ctx;
@@ -259,8 +259,8 @@ asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask,
259 return ufd; 259 return ufd;
260} 260}
261 261
262asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask, 262SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask,
263 size_t sizemask) 263 size_t, sizemask)
264{ 264{
265 return sys_signalfd4(ufd, user_mask, sizemask, 0); 265 return sys_signalfd4(ufd, user_mask, sizemask, 0);
266} 266}
diff --git a/fs/smbfs/Kconfig b/fs/smbfs/Kconfig
new file mode 100644
index 000000000000..e668127c8b2e
--- /dev/null
+++ b/fs/smbfs/Kconfig
@@ -0,0 +1,55 @@
1config SMB_FS
2 tristate "SMB file system support (OBSOLETE, please use CIFS)"
3 depends on INET
4 select NLS
5 help
6 SMB (Server Message Block) is the protocol Windows for Workgroups
7 (WfW), Windows 95/98, Windows NT and OS/2 Lan Manager use to share
8 files and printers over local networks. Saying Y here allows you to
9 mount their file systems (often called "shares" in this context) and
10 access them just like any other Unix directory. Currently, this
11 works only if the Windows machines use TCP/IP as the underlying
12 transport protocol, and not NetBEUI. For details, read
13 <file:Documentation/filesystems/smbfs.txt> and the SMB-HOWTO,
14 available from <http://www.tldp.org/docs.html#howto>.
15
16 Note: if you just want your box to act as an SMB *server* and make
17 files and printing services available to Windows clients (which need
18 to have a TCP/IP stack), you don't need to say Y here; you can use
19 the program SAMBA (available from <ftp://ftp.samba.org/pub/samba/>)
20 for that.
21
22 General information about how to connect Linux, Windows machines and
23 Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>.
24
25 To compile the SMB support as a module, choose M here:
26 the module will be called smbfs. Most people say N, however.
27
28config SMB_NLS_DEFAULT
29 bool "Use a default NLS"
30 depends on SMB_FS
31 help
32 Enabling this will make smbfs use nls translations by default. You
33 need to specify the local charset (CONFIG_NLS_DEFAULT) in the nls
34 settings and you need to give the default nls for the SMB server as
35 CONFIG_SMB_NLS_REMOTE.
36
37 The nls settings can be changed at mount time, if your smbmount
38 supports that, using the codepage and iocharset parameters.
39
40 smbmount from samba 2.2.0 or later supports this.
41
42config SMB_NLS_REMOTE
43 string "Default Remote NLS Option"
44 depends on SMB_NLS_DEFAULT
45 default "cp437"
46 help
47 This setting allows you to specify a default value for which
48 codepage the server uses. If this field is left blank no
49 translations will be done by default. The local codepage/charset
50 default to CONFIG_NLS_DEFAULT.
51
52 The nls settings can be changed at mount time, if your smbmount
53 supports that, using the codepage and iocharset parameters.
54
55 smbmount from samba 2.2.0 or later supports this.
diff --git a/fs/splice.c b/fs/splice.c
index a54b3e3f10a7..4ed0ba44a966 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1435,8 +1435,8 @@ static long vmsplice_to_pipe(struct file *file, const struct iovec __user *iov,
1435 * Currently we punt and implement it as a normal copy, see pipe_to_user(). 1435 * Currently we punt and implement it as a normal copy, see pipe_to_user().
1436 * 1436 *
1437 */ 1437 */
1438asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov, 1438SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, iov,
1439 unsigned long nr_segs, unsigned int flags) 1439 unsigned long, nr_segs, unsigned int, flags)
1440{ 1440{
1441 struct file *file; 1441 struct file *file;
1442 long error; 1442 long error;
@@ -1461,9 +1461,9 @@ asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
1461 return error; 1461 return error;
1462} 1462}
1463 1463
1464asmlinkage long sys_splice(int fd_in, loff_t __user *off_in, 1464SYSCALL_DEFINE6(splice, int, fd_in, loff_t __user *, off_in,
1465 int fd_out, loff_t __user *off_out, 1465 int, fd_out, loff_t __user *, off_out,
1466 size_t len, unsigned int flags) 1466 size_t, len, unsigned int, flags)
1467{ 1467{
1468 long error; 1468 long error;
1469 struct file *in, *out; 1469 struct file *in, *out;
@@ -1685,7 +1685,7 @@ static long do_tee(struct file *in, struct file *out, size_t len,
1685 return ret; 1685 return ret;
1686} 1686}
1687 1687
1688asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags) 1688SYSCALL_DEFINE4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags)
1689{ 1689{
1690 struct file *in; 1690 struct file *in;
1691 int error, fput_in; 1691 int error, fput_in;
diff --git a/fs/squashfs/Kconfig b/fs/squashfs/Kconfig
new file mode 100644
index 000000000000..25a00d19d686
--- /dev/null
+++ b/fs/squashfs/Kconfig
@@ -0,0 +1,51 @@
1config SQUASHFS
2 tristate "SquashFS 4.0 - Squashed file system support"
3 depends on BLOCK
4 select ZLIB_INFLATE
5 help
6 Saying Y here includes support for SquashFS 4.0 (a Compressed
7 Read-Only File System). Squashfs is a highly compressed read-only
8 filesystem for Linux. It uses zlib compression to compress both
9 files, inodes and directories. Inodes in the system are very small
10 and all blocks are packed to minimise data overhead. Block sizes
11 greater than 4K are supported up to a maximum of 1 Mbytes (default
12 block size 128K). SquashFS 4.0 supports 64 bit filesystems and files
13 (larger than 4GB), full uid/gid information, hard links and
14 timestamps.
15
16 Squashfs is intended for general read-only filesystem use, for
17 archival use (i.e. in cases where a .tar.gz file may be used), and in
18 embedded systems where low overhead is needed. Further information
19 and tools are available from http://squashfs.sourceforge.net.
20
21 If you want to compile this as a module ( = code which can be
22 inserted in and removed from the running kernel whenever you want),
23 say M here and read <file:Documentation/modules.txt>. The module
24 will be called squashfs. Note that the root file system (the one
25 containing the directory /) cannot be compiled as a module.
26
27 If unsure, say N.
28
29config SQUASHFS_EMBEDDED
30
31 bool "Additional option for memory-constrained systems"
32 depends on SQUASHFS
33 default n
34 help
35 Saying Y here allows you to specify cache size.
36
37 If unsure, say N.
38
39config SQUASHFS_FRAGMENT_CACHE_SIZE
40 int "Number of fragments cached" if SQUASHFS_EMBEDDED
41 depends on SQUASHFS
42 default "3"
43 help
44 By default SquashFS caches the last 3 fragments read from
45 the filesystem. Increasing this amount may mean SquashFS
46 has to re-read fragments less often from disk, at the expense
47 of extra system memory. Decreasing this amount will mean
48 SquashFS uses less memory at the expense of extra reads from disk.
49
50 Note there must be at least one cached fragment. Anything
51 much more than three will probably not make much difference.
diff --git a/fs/squashfs/squashfs_fs.h b/fs/squashfs/squashfs_fs.h
index 6840da1bf21e..283daafc568e 100644
--- a/fs/squashfs/squashfs_fs.h
+++ b/fs/squashfs/squashfs_fs.h
@@ -26,7 +26,6 @@
26#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE 26#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
27#define SQUASHFS_MAJOR 4 27#define SQUASHFS_MAJOR 4
28#define SQUASHFS_MINOR 0 28#define SQUASHFS_MINOR 0
29#define SQUASHFS_MAGIC 0x73717368
30#define SQUASHFS_START 0 29#define SQUASHFS_START 0
31 30
32/* size of metadata (inode and directory) blocks */ 31/* size of metadata (inode and directory) blocks */
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c
index a0466d7467b2..071df5b5b491 100644
--- a/fs/squashfs/super.c
+++ b/fs/squashfs/super.c
@@ -35,6 +35,7 @@
35#include <linux/init.h> 35#include <linux/init.h>
36#include <linux/module.h> 36#include <linux/module.h>
37#include <linux/zlib.h> 37#include <linux/zlib.h>
38#include <linux/magic.h>
38 39
39#include "squashfs_fs.h" 40#include "squashfs_fs.h"
40#include "squashfs_fs_sb.h" 41#include "squashfs_fs_sb.h"
diff --git a/fs/stat.c b/fs/stat.c
index 7e12a6f82795..2db740a0cfb5 100644
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -152,7 +152,7 @@ static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat __user * sta
152 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 152 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
153} 153}
154 154
155asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user * statbuf) 155SYSCALL_DEFINE2(stat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
156{ 156{
157 struct kstat stat; 157 struct kstat stat;
158 int error = vfs_stat_fd(AT_FDCWD, filename, &stat); 158 int error = vfs_stat_fd(AT_FDCWD, filename, &stat);
@@ -162,7 +162,8 @@ asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user
162 162
163 return error; 163 return error;
164} 164}
165asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __user * statbuf) 165
166SYSCALL_DEFINE2(lstat, char __user *, filename, struct __old_kernel_stat __user *, statbuf)
166{ 167{
167 struct kstat stat; 168 struct kstat stat;
168 int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); 169 int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
@@ -172,7 +173,8 @@ asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __use
172 173
173 return error; 174 return error;
174} 175}
175asmlinkage long sys_fstat(unsigned int fd, struct __old_kernel_stat __user * statbuf) 176
177SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf)
176{ 178{
177 struct kstat stat; 179 struct kstat stat;
178 int error = vfs_fstat(fd, &stat); 180 int error = vfs_fstat(fd, &stat);
@@ -235,7 +237,7 @@ static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf)
235 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 237 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
236} 238}
237 239
238asmlinkage long sys_newstat(char __user *filename, struct stat __user *statbuf) 240SYSCALL_DEFINE2(newstat, char __user *, filename, struct stat __user *, statbuf)
239{ 241{
240 struct kstat stat; 242 struct kstat stat;
241 int error = vfs_stat_fd(AT_FDCWD, filename, &stat); 243 int error = vfs_stat_fd(AT_FDCWD, filename, &stat);
@@ -246,7 +248,7 @@ asmlinkage long sys_newstat(char __user *filename, struct stat __user *statbuf)
246 return error; 248 return error;
247} 249}
248 250
249asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf) 251SYSCALL_DEFINE2(newlstat, char __user *, filename, struct stat __user *, statbuf)
250{ 252{
251 struct kstat stat; 253 struct kstat stat;
252 int error = vfs_lstat_fd(AT_FDCWD, filename, &stat); 254 int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);
@@ -258,8 +260,8 @@ asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf)
258} 260}
259 261
260#if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT) 262#if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT)
261asmlinkage long sys_newfstatat(int dfd, char __user *filename, 263SYSCALL_DEFINE4(newfstatat, int, dfd, char __user *, filename,
262 struct stat __user *statbuf, int flag) 264 struct stat __user *, statbuf, int, flag)
263{ 265{
264 struct kstat stat; 266 struct kstat stat;
265 int error = -EINVAL; 267 int error = -EINVAL;
@@ -280,7 +282,7 @@ out:
280} 282}
281#endif 283#endif
282 284
283asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf) 285SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf)
284{ 286{
285 struct kstat stat; 287 struct kstat stat;
286 int error = vfs_fstat(fd, &stat); 288 int error = vfs_fstat(fd, &stat);
@@ -291,8 +293,8 @@ asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf)
291 return error; 293 return error;
292} 294}
293 295
294asmlinkage long sys_readlinkat(int dfd, const char __user *pathname, 296SYSCALL_DEFINE4(readlinkat, int, dfd, const char __user *, pathname,
295 char __user *buf, int bufsiz) 297 char __user *, buf, int, bufsiz)
296{ 298{
297 struct path path; 299 struct path path;
298 int error; 300 int error;
@@ -318,8 +320,8 @@ asmlinkage long sys_readlinkat(int dfd, const char __user *pathname,
318 return error; 320 return error;
319} 321}
320 322
321asmlinkage long sys_readlink(const char __user *path, char __user *buf, 323SYSCALL_DEFINE3(readlink, const char __user *, path, char __user *, buf,
322 int bufsiz) 324 int, bufsiz)
323{ 325{
324 return sys_readlinkat(AT_FDCWD, path, buf, bufsiz); 326 return sys_readlinkat(AT_FDCWD, path, buf, bufsiz);
325} 327}
@@ -365,7 +367,7 @@ static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf)
365 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; 367 return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
366} 368}
367 369
368asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbuf) 370SYSCALL_DEFINE2(stat64, char __user *, filename, struct stat64 __user *, statbuf)
369{ 371{
370 struct kstat stat; 372 struct kstat stat;
371 int error = vfs_stat(filename, &stat); 373 int error = vfs_stat(filename, &stat);
@@ -375,7 +377,8 @@ asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbu
375 377
376 return error; 378 return error;
377} 379}
378asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statbuf) 380
381SYSCALL_DEFINE2(lstat64, char __user *, filename, struct stat64 __user *, statbuf)
379{ 382{
380 struct kstat stat; 383 struct kstat stat;
381 int error = vfs_lstat(filename, &stat); 384 int error = vfs_lstat(filename, &stat);
@@ -385,7 +388,8 @@ asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statb
385 388
386 return error; 389 return error;
387} 390}
388asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf) 391
392SYSCALL_DEFINE2(fstat64, unsigned long, fd, struct stat64 __user *, statbuf)
389{ 393{
390 struct kstat stat; 394 struct kstat stat;
391 int error = vfs_fstat(fd, &stat); 395 int error = vfs_fstat(fd, &stat);
@@ -396,8 +400,8 @@ asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf)
396 return error; 400 return error;
397} 401}
398 402
399asmlinkage long sys_fstatat64(int dfd, char __user *filename, 403SYSCALL_DEFINE4(fstatat64, int, dfd, char __user *, filename,
400 struct stat64 __user *statbuf, int flag) 404 struct stat64 __user *, statbuf, int, flag)
401{ 405{
402 struct kstat stat; 406 struct kstat stat;
403 int error = -EINVAL; 407 int error = -EINVAL;
diff --git a/fs/super.c b/fs/super.c
index ed080c417167..645e5403f2a0 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -544,7 +544,7 @@ rescan:
544 return NULL; 544 return NULL;
545} 545}
546 546
547asmlinkage long sys_ustat(unsigned dev, struct ustat __user * ubuf) 547SYSCALL_DEFINE2(ustat, unsigned, dev, struct ustat __user *, ubuf)
548{ 548{
549 struct super_block *s; 549 struct super_block *s;
550 struct ustat tmp; 550 struct ustat tmp;
diff --git a/fs/sync.c b/fs/sync.c
index ac02b56548bc..a16d53e5fe9d 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -36,7 +36,7 @@ static void do_sync(unsigned long wait)
36 laptop_sync_completion(); 36 laptop_sync_completion();
37} 37}
38 38
39asmlinkage long sys_sync(void) 39SYSCALL_DEFINE0(sync)
40{ 40{
41 do_sync(1); 41 do_sync(1);
42 return 0; 42 return 0;
@@ -144,12 +144,12 @@ static int do_fsync(unsigned int fd, int datasync)
144 return ret; 144 return ret;
145} 145}
146 146
147asmlinkage long sys_fsync(unsigned int fd) 147SYSCALL_DEFINE1(fsync, unsigned int, fd)
148{ 148{
149 return do_fsync(fd, 0); 149 return do_fsync(fd, 0);
150} 150}
151 151
152asmlinkage long sys_fdatasync(unsigned int fd) 152SYSCALL_DEFINE1(fdatasync, unsigned int, fd)
153{ 153{
154 return do_fsync(fd, 1); 154 return do_fsync(fd, 1);
155} 155}
@@ -201,8 +201,8 @@ asmlinkage long sys_fdatasync(unsigned int fd)
201 * already-instantiated disk blocks, there are no guarantees here that the data 201 * already-instantiated disk blocks, there are no guarantees here that the data
202 * will be available after a crash. 202 * will be available after a crash.
203 */ 203 */
204asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes, 204SYSCALL_DEFINE(sync_file_range)(int fd, loff_t offset, loff_t nbytes,
205 unsigned int flags) 205 unsigned int flags)
206{ 206{
207 int ret; 207 int ret;
208 struct file *file; 208 struct file *file;
@@ -262,14 +262,32 @@ out_put:
262out: 262out:
263 return ret; 263 return ret;
264} 264}
265#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
266asmlinkage long SyS_sync_file_range(long fd, loff_t offset, loff_t nbytes,
267 long flags)
268{
269 return SYSC_sync_file_range((int) fd, offset, nbytes,
270 (unsigned int) flags);
271}
272SYSCALL_ALIAS(sys_sync_file_range, SyS_sync_file_range);
273#endif
265 274
266/* It would be nice if people remember that not all the world's an i386 275/* It would be nice if people remember that not all the world's an i386
267 when they introduce new system calls */ 276 when they introduce new system calls */
268asmlinkage long sys_sync_file_range2(int fd, unsigned int flags, 277SYSCALL_DEFINE(sync_file_range2)(int fd, unsigned int flags,
269 loff_t offset, loff_t nbytes) 278 loff_t offset, loff_t nbytes)
270{ 279{
271 return sys_sync_file_range(fd, offset, nbytes, flags); 280 return sys_sync_file_range(fd, offset, nbytes, flags);
272} 281}
282#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
283asmlinkage long SyS_sync_file_range2(long fd, long flags,
284 loff_t offset, loff_t nbytes)
285{
286 return SYSC_sync_file_range2((int) fd, (unsigned int) flags,
287 offset, nbytes);
288}
289SYSCALL_ALIAS(sys_sync_file_range2, SyS_sync_file_range2);
290#endif
273 291
274/* 292/*
275 * `endbyte' is inclusive 293 * `endbyte' is inclusive
diff --git a/fs/sysfs/Kconfig b/fs/sysfs/Kconfig
new file mode 100644
index 000000000000..f4b67588b9d6
--- /dev/null
+++ b/fs/sysfs/Kconfig
@@ -0,0 +1,23 @@
1config SYSFS
2 bool "sysfs file system support" if EMBEDDED
3 default y
4 help
5 The sysfs filesystem is a virtual filesystem that the kernel uses to
6 export internal kernel objects, their attributes, and their
7 relationships to one another.
8
9 Users can use sysfs to ascertain useful information about the running
10 kernel, such as the devices the kernel has discovered on each bus and
11 which driver each is bound to. sysfs can also be used to tune devices
12 and other kernel subsystems.
13
14 Some system agents rely on the information in sysfs to operate.
15 /sbin/hotplug uses device and object attributes in sysfs to assist in
16 delegating policy decisions, like persistently naming devices.
17
18 sysfs is currently used by the block subsystem to mount the root
19 partition. If sysfs is disabled you must specify the boot device on
20 the kernel boot command line via its major and minor numbers. For
21 example, "root=03:01" for /dev/hda1.
22
23 Designers of embedded systems may wish to say N here to conserve space.
diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c
index 66f6e58a7e4b..f2c478c3424e 100644
--- a/fs/sysfs/bin.c
+++ b/fs/sysfs/bin.c
@@ -63,6 +63,9 @@ read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)
63 int count = min_t(size_t, bytes, PAGE_SIZE); 63 int count = min_t(size_t, bytes, PAGE_SIZE);
64 char *temp; 64 char *temp;
65 65
66 if (!bytes)
67 return 0;
68
66 if (size) { 69 if (size) {
67 if (offs > size) 70 if (offs > size)
68 return 0; 71 return 0;
@@ -131,6 +134,9 @@ static ssize_t write(struct file *file, const char __user *userbuf,
131 int count = min_t(size_t, bytes, PAGE_SIZE); 134 int count = min_t(size_t, bytes, PAGE_SIZE);
132 char *temp; 135 char *temp;
133 136
137 if (!bytes)
138 return 0;
139
134 if (size) { 140 if (size) {
135 if (offs > size) 141 if (offs > size)
136 return 0; 142 return 0;
diff --git a/fs/sysv/Kconfig b/fs/sysv/Kconfig
new file mode 100644
index 000000000000..33aeb4b75db1
--- /dev/null
+++ b/fs/sysv/Kconfig
@@ -0,0 +1,36 @@
1config SYSV_FS
2 tristate "System V/Xenix/V7/Coherent file system support"
3 depends on BLOCK
4 help
5 SCO, Xenix and Coherent are commercial Unix systems for Intel
6 machines, and Version 7 was used on the DEC PDP-11. Saying Y
7 here would allow you to read from their floppies and hard disk
8 partitions.
9
10 If you have floppies or hard disk partitions like that, it is likely
11 that they contain binaries from those other Unix systems; in order
12 to run these binaries, you will want to install linux-abi which is
13 a set of kernel modules that lets you run SCO, Xenix, Wyse,
14 UnixWare, Dell Unix and System V programs under Linux. It is
15 available via FTP (user: ftp) from
16 <ftp://ftp.openlinux.org/pub/people/hch/linux-abi/>).
17 NOTE: that will work only for binaries from Intel-based systems;
18 PDP ones will have to wait until somebody ports Linux to -11 ;-)
19
20 If you only intend to mount files from some other Unix over the
21 network using NFS, you don't need the System V file system support
22 (but you need NFS file system support obviously).
23
24 Note that this option is generally not needed for floppies, since a
25 good portable way to transport files and directories between unixes
26 (and even other operating systems) is given by the tar program ("man
27 tar" or preferably "info tar"). Note also that this option has
28 nothing whatsoever to do with the option "System V IPC". Read about
29 the System V file system in
30 <file:Documentation/filesystems/sysv-fs.txt>.
31 Saying Y here will enlarge your kernel by about 27 KB.
32
33 To compile this as a module, choose M here: the module will be called
34 sysv.
35
36 If you haven't heard about all of this before, it's safe to say N.
diff --git a/fs/timerfd.c b/fs/timerfd.c
index 0862f0e49d0c..6a123b8ff3f5 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c
@@ -177,7 +177,7 @@ static struct file *timerfd_fget(int fd)
177 return file; 177 return file;
178} 178}
179 179
180asmlinkage long sys_timerfd_create(int clockid, int flags) 180SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
181{ 181{
182 int ufd; 182 int ufd;
183 struct timerfd_ctx *ctx; 183 struct timerfd_ctx *ctx;
@@ -208,9 +208,9 @@ asmlinkage long sys_timerfd_create(int clockid, int flags)
208 return ufd; 208 return ufd;
209} 209}
210 210
211asmlinkage long sys_timerfd_settime(int ufd, int flags, 211SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags,
212 const struct itimerspec __user *utmr, 212 const struct itimerspec __user *, utmr,
213 struct itimerspec __user *otmr) 213 struct itimerspec __user *, otmr)
214{ 214{
215 struct file *file; 215 struct file *file;
216 struct timerfd_ctx *ctx; 216 struct timerfd_ctx *ctx;
@@ -265,7 +265,7 @@ asmlinkage long sys_timerfd_settime(int ufd, int flags,
265 return 0; 265 return 0;
266} 266}
267 267
268asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr) 268SYSCALL_DEFINE2(timerfd_gettime, int, ufd, struct itimerspec __user *, otmr)
269{ 269{
270 struct file *file; 270 struct file *file;
271 struct timerfd_ctx *ctx; 271 struct timerfd_ctx *ctx;
diff --git a/fs/udf/Kconfig b/fs/udf/Kconfig
new file mode 100644
index 000000000000..0e0e99bd6bce
--- /dev/null
+++ b/fs/udf/Kconfig
@@ -0,0 +1,18 @@
1config UDF_FS
2 tristate "UDF file system support"
3 select CRC_ITU_T
4 help
5 This is the new file system used on some CD-ROMs and DVDs. Say Y if
6 you intend to mount DVD discs or CDRW's written in packet mode, or
7 if written to by other UDF utilities, such as DirectCD.
8 Please read <file:Documentation/filesystems/udf.txt>.
9
10 To compile this file system support as a module, choose M here: the
11 module will be called udf.
12
13 If unsure, say N.
14
15config UDF_NLS
16 bool
17 default y
18 depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y)
diff --git a/fs/ufs/Kconfig b/fs/ufs/Kconfig
new file mode 100644
index 000000000000..e4f10a40768a
--- /dev/null
+++ b/fs/ufs/Kconfig
@@ -0,0 +1,43 @@
1config UFS_FS
2 tristate "UFS file system support (read only)"
3 depends on BLOCK
4 help
5 BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD,
6 OpenBSD and NeXTstep) use a file system called UFS. Some System V
7 Unixes can create and mount hard disk partitions and diskettes using
8 this file system as well. Saying Y here will allow you to read from
9 these partitions; if you also want to write to them, say Y to the
10 experimental "UFS file system write support", below. Please read the
11 file <file:Documentation/filesystems/ufs.txt> for more information.
12
13 The recently released UFS2 variant (used in FreeBSD 5.x) is
14 READ-ONLY supported.
15
16 Note that this option is generally not needed for floppies, since a
17 good portable way to transport files and directories between unixes
18 (and even other operating systems) is given by the tar program ("man
19 tar" or preferably "info tar").
20
21 When accessing NeXTstep files, you may need to convert them from the
22 NeXT character set to the Latin1 character set; use the program
23 recode ("info recode") for this purpose.
24
25 To compile the UFS file system support as a module, choose M here: the
26 module will be called ufs.
27
28 If you haven't heard about all of this before, it's safe to say N.
29
30config UFS_FS_WRITE
31 bool "UFS file system write support (DANGEROUS)"
32 depends on UFS_FS && EXPERIMENTAL
33 help
34 Say Y here if you want to try writing to UFS partitions. This is
35 experimental, so you should back up your UFS partitions beforehand.
36
37config UFS_DEBUG
38 bool "UFS debugging"
39 depends on UFS_FS
40 help
41 If you are experiencing any problems with the UFS filesystem, say
42 Y here. This will result in _many_ additional debugging messages to be
43 written to the system log.
diff --git a/fs/utimes.c b/fs/utimes.c
index 6929e3e91d05..e4c75db5d373 100644
--- a/fs/utimes.c
+++ b/fs/utimes.c
@@ -24,7 +24,7 @@
24 * must be owner or have write permission. 24 * must be owner or have write permission.
25 * Else, update from *times, must be owner or super user. 25 * Else, update from *times, must be owner or super user.
26 */ 26 */
27asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times) 27SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
28{ 28{
29 struct timespec tv[2]; 29 struct timespec tv[2];
30 30
@@ -170,7 +170,8 @@ out:
170 return error; 170 return error;
171} 171}
172 172
173asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags) 173SYSCALL_DEFINE4(utimensat, int, dfd, char __user *, filename,
174 struct timespec __user *, utimes, int, flags)
174{ 175{
175 struct timespec tstimes[2]; 176 struct timespec tstimes[2];
176 177
@@ -187,7 +188,8 @@ asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __
187 return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags); 188 return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags);
188} 189}
189 190
190asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __user *utimes) 191SYSCALL_DEFINE3(futimesat, int, dfd, char __user *, filename,
192 struct timeval __user *, utimes)
191{ 193{
192 struct timeval times[2]; 194 struct timeval times[2];
193 struct timespec tstimes[2]; 195 struct timespec tstimes[2];
@@ -214,7 +216,8 @@ asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __u
214 return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0); 216 return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
215} 217}
216 218
217asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes) 219SYSCALL_DEFINE2(utimes, char __user *, filename,
220 struct timeval __user *, utimes)
218{ 221{
219 return sys_futimesat(AT_FDCWD, filename, utimes); 222 return sys_futimesat(AT_FDCWD, filename, utimes);
220} 223}
diff --git a/fs/xattr.c b/fs/xattr.c
index 237804cd6b56..197c4fcac032 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
@@ -251,9 +251,9 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
251 return error; 251 return error;
252} 252}
253 253
254asmlinkage long 254SYSCALL_DEFINE5(setxattr, const char __user *, pathname,
255sys_setxattr(const char __user *pathname, const char __user *name, 255 const char __user *, name, const void __user *, value,
256 const void __user *value, size_t size, int flags) 256 size_t, size, int, flags)
257{ 257{
258 struct path path; 258 struct path path;
259 int error; 259 int error;
@@ -270,9 +270,9 @@ sys_setxattr(const char __user *pathname, const char __user *name,
270 return error; 270 return error;
271} 271}
272 272
273asmlinkage long 273SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
274sys_lsetxattr(const char __user *pathname, const char __user *name, 274 const char __user *, name, const void __user *, value,
275 const void __user *value, size_t size, int flags) 275 size_t, size, int, flags)
276{ 276{
277 struct path path; 277 struct path path;
278 int error; 278 int error;
@@ -289,9 +289,8 @@ sys_lsetxattr(const char __user *pathname, const char __user *name,
289 return error; 289 return error;
290} 290}
291 291
292asmlinkage long 292SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
293sys_fsetxattr(int fd, const char __user *name, const void __user *value, 293 const void __user *,value, size_t, size, int, flags)
294 size_t size, int flags)
295{ 294{
296 struct file *f; 295 struct file *f;
297 struct dentry *dentry; 296 struct dentry *dentry;
@@ -349,9 +348,8 @@ getxattr(struct dentry *d, const char __user *name, void __user *value,
349 return error; 348 return error;
350} 349}
351 350
352asmlinkage ssize_t 351SYSCALL_DEFINE4(getxattr, const char __user *, pathname,
353sys_getxattr(const char __user *pathname, const char __user *name, 352 const char __user *, name, void __user *, value, size_t, size)
354 void __user *value, size_t size)
355{ 353{
356 struct path path; 354 struct path path;
357 ssize_t error; 355 ssize_t error;
@@ -364,9 +362,8 @@ sys_getxattr(const char __user *pathname, const char __user *name,
364 return error; 362 return error;
365} 363}
366 364
367asmlinkage ssize_t 365SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname,
368sys_lgetxattr(const char __user *pathname, const char __user *name, void __user *value, 366 const char __user *, name, void __user *, value, size_t, size)
369 size_t size)
370{ 367{
371 struct path path; 368 struct path path;
372 ssize_t error; 369 ssize_t error;
@@ -379,8 +376,8 @@ sys_lgetxattr(const char __user *pathname, const char __user *name, void __user
379 return error; 376 return error;
380} 377}
381 378
382asmlinkage ssize_t 379SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
383sys_fgetxattr(int fd, const char __user *name, void __user *value, size_t size) 380 void __user *, value, size_t, size)
384{ 381{
385 struct file *f; 382 struct file *f;
386 ssize_t error = -EBADF; 383 ssize_t error = -EBADF;
@@ -424,8 +421,8 @@ listxattr(struct dentry *d, char __user *list, size_t size)
424 return error; 421 return error;
425} 422}
426 423
427asmlinkage ssize_t 424SYSCALL_DEFINE3(listxattr, const char __user *, pathname, char __user *, list,
428sys_listxattr(const char __user *pathname, char __user *list, size_t size) 425 size_t, size)
429{ 426{
430 struct path path; 427 struct path path;
431 ssize_t error; 428 ssize_t error;
@@ -438,8 +435,8 @@ sys_listxattr(const char __user *pathname, char __user *list, size_t size)
438 return error; 435 return error;
439} 436}
440 437
441asmlinkage ssize_t 438SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list,
442sys_llistxattr(const char __user *pathname, char __user *list, size_t size) 439 size_t, size)
443{ 440{
444 struct path path; 441 struct path path;
445 ssize_t error; 442 ssize_t error;
@@ -452,8 +449,7 @@ sys_llistxattr(const char __user *pathname, char __user *list, size_t size)
452 return error; 449 return error;
453} 450}
454 451
455asmlinkage ssize_t 452SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
456sys_flistxattr(int fd, char __user *list, size_t size)
457{ 453{
458 struct file *f; 454 struct file *f;
459 ssize_t error = -EBADF; 455 ssize_t error = -EBADF;
@@ -485,8 +481,8 @@ removexattr(struct dentry *d, const char __user *name)
485 return vfs_removexattr(d, kname); 481 return vfs_removexattr(d, kname);
486} 482}
487 483
488asmlinkage long 484SYSCALL_DEFINE2(removexattr, const char __user *, pathname,
489sys_removexattr(const char __user *pathname, const char __user *name) 485 const char __user *, name)
490{ 486{
491 struct path path; 487 struct path path;
492 int error; 488 int error;
@@ -503,8 +499,8 @@ sys_removexattr(const char __user *pathname, const char __user *name)
503 return error; 499 return error;
504} 500}
505 501
506asmlinkage long 502SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,
507sys_lremovexattr(const char __user *pathname, const char __user *name) 503 const char __user *, name)
508{ 504{
509 struct path path; 505 struct path path;
510 int error; 506 int error;
@@ -521,8 +517,7 @@ sys_lremovexattr(const char __user *pathname, const char __user *name)
521 return error; 517 return error;
522} 518}
523 519
524asmlinkage long 520SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
525sys_fremovexattr(int fd, const char __user *name)
526{ 521{
527 struct file *f; 522 struct file *f;
528 struct dentry *dentry; 523 struct dentry *dentry;
diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig
index 3f53dd101f99..29228f5899cd 100644
--- a/fs/xfs/Kconfig
+++ b/fs/xfs/Kconfig
@@ -1,6 +1,7 @@
1config XFS_FS 1config XFS_FS
2 tristate "XFS filesystem support" 2 tristate "XFS filesystem support"
3 depends on BLOCK 3 depends on BLOCK
4 select EXPORTFS
4 help 5 help
5 XFS is a high performance journaling filesystem which originated 6 XFS is a high performance journaling filesystem which originated
6 on the SGI IRIX platform. It is completely multi-threaded, can 7 on the SGI IRIX platform. It is completely multi-threaded, can
diff --git a/fs/xfs/linux-2.6/xfs_aops.h b/fs/xfs/linux-2.6/xfs_aops.h
index 7b26f5ff9692..1dd528849755 100644
--- a/fs/xfs/linux-2.6/xfs_aops.h
+++ b/fs/xfs/linux-2.6/xfs_aops.h
@@ -21,8 +21,6 @@
21extern struct workqueue_struct *xfsdatad_workqueue; 21extern struct workqueue_struct *xfsdatad_workqueue;
22extern mempool_t *xfs_ioend_pool; 22extern mempool_t *xfs_ioend_pool;
23 23
24typedef void (*xfs_ioend_func_t)(void *);
25
26/* 24/*
27 * xfs_ioend struct manages large extent writes for XFS. 25 * xfs_ioend struct manages large extent writes for XFS.
28 * It can manage several multi-page bio's at once. 26 * It can manage several multi-page bio's at once.
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c
index cb329edc925b..d71dc44e21ed 100644
--- a/fs/xfs/linux-2.6/xfs_buf.c
+++ b/fs/xfs/linux-2.6/xfs_buf.c
@@ -166,75 +166,6 @@ test_page_region(
166} 166}
167 167
168/* 168/*
169 * Mapping of multi-page buffers into contiguous virtual space
170 */
171
172typedef struct a_list {
173 void *vm_addr;
174 struct a_list *next;
175} a_list_t;
176
177static a_list_t *as_free_head;
178static int as_list_len;
179static DEFINE_SPINLOCK(as_lock);
180
181/*
182 * Try to batch vunmaps because they are costly.
183 */
184STATIC void
185free_address(
186 void *addr)
187{
188 a_list_t *aentry;
189
190#ifdef CONFIG_XEN
191 /*
192 * Xen needs to be able to make sure it can get an exclusive
193 * RO mapping of pages it wants to turn into a pagetable. If
194 * a newly allocated page is also still being vmap()ed by xfs,
195 * it will cause pagetable construction to fail. This is a
196 * quick workaround to always eagerly unmap pages so that Xen
197 * is happy.
198 */
199 vunmap(addr);
200 return;
201#endif
202
203 aentry = kmalloc(sizeof(a_list_t), GFP_NOWAIT);
204 if (likely(aentry)) {
205 spin_lock(&as_lock);
206 aentry->next = as_free_head;
207 aentry->vm_addr = addr;
208 as_free_head = aentry;
209 as_list_len++;
210 spin_unlock(&as_lock);
211 } else {
212 vunmap(addr);
213 }
214}
215
216STATIC void
217purge_addresses(void)
218{
219 a_list_t *aentry, *old;
220
221 if (as_free_head == NULL)
222 return;
223
224 spin_lock(&as_lock);
225 aentry = as_free_head;
226 as_free_head = NULL;
227 as_list_len = 0;
228 spin_unlock(&as_lock);
229
230 while ((old = aentry) != NULL) {
231 vunmap(aentry->vm_addr);
232 aentry = aentry->next;
233 kfree(old);
234 }
235}
236
237/*
238 * Internal xfs_buf_t object manipulation 169 * Internal xfs_buf_t object manipulation
239 */ 170 */
240 171
@@ -333,7 +264,7 @@ xfs_buf_free(
333 uint i; 264 uint i;
334 265
335 if ((bp->b_flags & XBF_MAPPED) && (bp->b_page_count > 1)) 266 if ((bp->b_flags & XBF_MAPPED) && (bp->b_page_count > 1))
336 free_address(bp->b_addr - bp->b_offset); 267 vm_unmap_ram(bp->b_addr - bp->b_offset, bp->b_page_count);
337 268
338 for (i = 0; i < bp->b_page_count; i++) { 269 for (i = 0; i < bp->b_page_count; i++) {
339 struct page *page = bp->b_pages[i]; 270 struct page *page = bp->b_pages[i];
@@ -455,10 +386,8 @@ _xfs_buf_map_pages(
455 bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset; 386 bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset;
456 bp->b_flags |= XBF_MAPPED; 387 bp->b_flags |= XBF_MAPPED;
457 } else if (flags & XBF_MAPPED) { 388 } else if (flags & XBF_MAPPED) {
458 if (as_list_len > 64) 389 bp->b_addr = vm_map_ram(bp->b_pages, bp->b_page_count,
459 purge_addresses(); 390 -1, PAGE_KERNEL);
460 bp->b_addr = vmap(bp->b_pages, bp->b_page_count,
461 VM_MAP, PAGE_KERNEL);
462 if (unlikely(bp->b_addr == NULL)) 391 if (unlikely(bp->b_addr == NULL))
463 return -ENOMEM; 392 return -ENOMEM;
464 bp->b_addr += bp->b_offset; 393 bp->b_addr += bp->b_offset;
@@ -1743,8 +1672,6 @@ xfsbufd(
1743 count++; 1672 count++;
1744 } 1673 }
1745 1674
1746 if (as_list_len > 0)
1747 purge_addresses();
1748 if (count) 1675 if (count)
1749 blk_run_address_space(target->bt_mapping); 1676 blk_run_address_space(target->bt_mapping);
1750 1677
diff --git a/fs/xfs/linux-2.6/xfs_export.c b/fs/xfs/linux-2.6/xfs_export.c
index 595751f78350..87b8cbd23d4b 100644
--- a/fs/xfs/linux-2.6/xfs_export.c
+++ b/fs/xfs/linux-2.6/xfs_export.c
@@ -126,11 +126,26 @@ xfs_nfs_get_inode(
126 if (ino == 0) 126 if (ino == 0)
127 return ERR_PTR(-ESTALE); 127 return ERR_PTR(-ESTALE);
128 128
129 error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); 129 /*
130 if (error) 130 * The XFS_IGET_BULKSTAT means that an invalid inode number is just
131 * fine and not an indication of a corrupted filesystem. Because
132 * clients can send any kind of invalid file handle, e.g. after
133 * a restore on the server we have to deal with this case gracefully.
134 */
135 error = xfs_iget(mp, NULL, ino, XFS_IGET_BULKSTAT,
136 XFS_ILOCK_SHARED, &ip, 0);
137 if (error) {
138 /*
139 * EINVAL means the inode cluster doesn't exist anymore.
140 * This implies the filehandle is stale, so we should
141 * translate it here.
142 * We don't use ESTALE directly down the chain to not
143 * confuse applications using bulkstat that expect EINVAL.
144 */
145 if (error == EINVAL)
146 error = ESTALE;
131 return ERR_PTR(-error); 147 return ERR_PTR(-error);
132 if (!ip) 148 }
133 return ERR_PTR(-EIO);
134 149
135 if (ip->i_d.di_gen != generation) { 150 if (ip->i_d.di_gen != generation) {
136 xfs_iput_new(ip, XFS_ILOCK_SHARED); 151 xfs_iput_new(ip, XFS_ILOCK_SHARED);
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c
index e5be1e0be802..4bd112313f33 100644
--- a/fs/xfs/linux-2.6/xfs_ioctl.c
+++ b/fs/xfs/linux-2.6/xfs_ioctl.c
@@ -50,12 +50,14 @@
50#include "xfs_vnodeops.h" 50#include "xfs_vnodeops.h"
51#include "xfs_quota.h" 51#include "xfs_quota.h"
52#include "xfs_inode_item.h" 52#include "xfs_inode_item.h"
53#include "xfs_export.h"
53 54
54#include <linux/capability.h> 55#include <linux/capability.h>
55#include <linux/dcache.h> 56#include <linux/dcache.h>
56#include <linux/mount.h> 57#include <linux/mount.h>
57#include <linux/namei.h> 58#include <linux/namei.h>
58#include <linux/pagemap.h> 59#include <linux/pagemap.h>
60#include <linux/exportfs.h>
59 61
60/* 62/*
61 * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to 63 * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to
@@ -164,97 +166,69 @@ xfs_find_handle(
164 return 0; 166 return 0;
165} 167}
166 168
167
168/* 169/*
169 * Convert userspace handle data into inode. 170 * No need to do permission checks on the various pathname components
170 * 171 * as the handle operations are privileged.
171 * We use the fact that all the fsop_handlereq ioctl calls have a data
172 * structure argument whose first component is always a xfs_fsop_handlereq_t,
173 * so we can pass that sub structure into this handy, shared routine.
174 *
175 * If no error, caller must always iput the returned inode.
176 */ 172 */
177STATIC int 173STATIC int
178xfs_vget_fsop_handlereq( 174xfs_handle_acceptable(
179 xfs_mount_t *mp, 175 void *context,
180 struct inode *parinode, /* parent inode pointer */ 176 struct dentry *dentry)
181 xfs_fsop_handlereq_t *hreq, 177{
182 struct inode **inode) 178 return 1;
179}
180
181/*
182 * Convert userspace handle data into a dentry.
183 */
184struct dentry *
185xfs_handle_to_dentry(
186 struct file *parfilp,
187 void __user *uhandle,
188 u32 hlen)
183{ 189{
184 void __user *hanp;
185 size_t hlen;
186 xfs_fid_t *xfid;
187 xfs_handle_t *handlep;
188 xfs_handle_t handle; 190 xfs_handle_t handle;
189 xfs_inode_t *ip; 191 struct xfs_fid64 fid;
190 xfs_ino_t ino;
191 __u32 igen;
192 int error;
193 192
194 /* 193 /*
195 * Only allow handle opens under a directory. 194 * Only allow handle opens under a directory.
196 */ 195 */
197 if (!S_ISDIR(parinode->i_mode)) 196 if (!S_ISDIR(parfilp->f_path.dentry->d_inode->i_mode))
198 return XFS_ERROR(ENOTDIR); 197 return ERR_PTR(-ENOTDIR);
199 198
200 hanp = hreq->ihandle; 199 if (hlen != sizeof(xfs_handle_t))
201 hlen = hreq->ihandlen; 200 return ERR_PTR(-EINVAL);
202 handlep = &handle; 201 if (copy_from_user(&handle, uhandle, hlen))
203 202 return ERR_PTR(-EFAULT);
204 if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep)) 203 if (handle.ha_fid.fid_len !=
205 return XFS_ERROR(EINVAL); 204 sizeof(handle.ha_fid) - sizeof(handle.ha_fid.fid_len))
206 if (copy_from_user(handlep, hanp, hlen)) 205 return ERR_PTR(-EINVAL);
207 return XFS_ERROR(EFAULT); 206
208 if (hlen < sizeof(*handlep)) 207 memset(&fid, 0, sizeof(struct fid));
209 memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); 208 fid.ino = handle.ha_fid.fid_ino;
210 if (hlen > sizeof(handlep->ha_fsid)) { 209 fid.gen = handle.ha_fid.fid_gen;
211 if (handlep->ha_fid.fid_len != 210
212 (hlen - sizeof(handlep->ha_fsid) - 211 return exportfs_decode_fh(parfilp->f_path.mnt, (struct fid *)&fid, 3,
213 sizeof(handlep->ha_fid.fid_len)) || 212 FILEID_INO32_GEN | XFS_FILEID_TYPE_64FLAG,
214 handlep->ha_fid.fid_pad) 213 xfs_handle_acceptable, NULL);
215 return XFS_ERROR(EINVAL); 214}
216 }
217
218 /*
219 * Crack the handle, obtain the inode # & generation #
220 */
221 xfid = (struct xfs_fid *)&handlep->ha_fid;
222 if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) {
223 ino = xfid->fid_ino;
224 igen = xfid->fid_gen;
225 } else {
226 return XFS_ERROR(EINVAL);
227 }
228
229 /*
230 * Get the XFS inode, building a Linux inode to go with it.
231 */
232 error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0);
233 if (error)
234 return error;
235 if (ip == NULL)
236 return XFS_ERROR(EIO);
237 if (ip->i_d.di_gen != igen) {
238 xfs_iput_new(ip, XFS_ILOCK_SHARED);
239 return XFS_ERROR(ENOENT);
240 }
241
242 xfs_iunlock(ip, XFS_ILOCK_SHARED);
243 215
244 *inode = VFS_I(ip); 216STATIC struct dentry *
245 return 0; 217xfs_handlereq_to_dentry(
218 struct file *parfilp,
219 xfs_fsop_handlereq_t *hreq)
220{
221 return xfs_handle_to_dentry(parfilp, hreq->ihandle, hreq->ihandlen);
246} 222}
247 223
248int 224int
249xfs_open_by_handle( 225xfs_open_by_handle(
250 xfs_mount_t *mp,
251 xfs_fsop_handlereq_t *hreq,
252 struct file *parfilp, 226 struct file *parfilp,
253 struct inode *parinode) 227 xfs_fsop_handlereq_t *hreq)
254{ 228{
255 const struct cred *cred = current_cred(); 229 const struct cred *cred = current_cred();
256 int error; 230 int error;
257 int new_fd; 231 int fd;
258 int permflag; 232 int permflag;
259 struct file *filp; 233 struct file *filp;
260 struct inode *inode; 234 struct inode *inode;
@@ -263,19 +237,21 @@ xfs_open_by_handle(
263 if (!capable(CAP_SYS_ADMIN)) 237 if (!capable(CAP_SYS_ADMIN))
264 return -XFS_ERROR(EPERM); 238 return -XFS_ERROR(EPERM);
265 239
266 error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); 240 dentry = xfs_handlereq_to_dentry(parfilp, hreq);
267 if (error) 241 if (IS_ERR(dentry))
268 return -error; 242 return PTR_ERR(dentry);
243 inode = dentry->d_inode;
269 244
270 /* Restrict xfs_open_by_handle to directories & regular files. */ 245 /* Restrict xfs_open_by_handle to directories & regular files. */
271 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode))) { 246 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode))) {
272 iput(inode); 247 error = -XFS_ERROR(EPERM);
273 return -XFS_ERROR(EINVAL); 248 goto out_dput;
274 } 249 }
275 250
276#if BITS_PER_LONG != 32 251#if BITS_PER_LONG != 32
277 hreq->oflags |= O_LARGEFILE; 252 hreq->oflags |= O_LARGEFILE;
278#endif 253#endif
254
279 /* Put open permission in namei format. */ 255 /* Put open permission in namei format. */
280 permflag = hreq->oflags; 256 permflag = hreq->oflags;
281 if ((permflag+1) & O_ACCMODE) 257 if ((permflag+1) & O_ACCMODE)
@@ -285,50 +261,45 @@ xfs_open_by_handle(
285 261
286 if ((!(permflag & O_APPEND) || (permflag & O_TRUNC)) && 262 if ((!(permflag & O_APPEND) || (permflag & O_TRUNC)) &&
287 (permflag & FMODE_WRITE) && IS_APPEND(inode)) { 263 (permflag & FMODE_WRITE) && IS_APPEND(inode)) {
288 iput(inode); 264 error = -XFS_ERROR(EPERM);
289 return -XFS_ERROR(EPERM); 265 goto out_dput;
290 } 266 }
291 267
292 if ((permflag & FMODE_WRITE) && IS_IMMUTABLE(inode)) { 268 if ((permflag & FMODE_WRITE) && IS_IMMUTABLE(inode)) {
293 iput(inode); 269 error = -XFS_ERROR(EACCES);
294 return -XFS_ERROR(EACCES); 270 goto out_dput;
295 } 271 }
296 272
297 /* Can't write directories. */ 273 /* Can't write directories. */
298 if ( S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { 274 if (S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) {
299 iput(inode); 275 error = -XFS_ERROR(EISDIR);
300 return -XFS_ERROR(EISDIR); 276 goto out_dput;
301 } 277 }
302 278
303 if ((new_fd = get_unused_fd()) < 0) { 279 fd = get_unused_fd();
304 iput(inode); 280 if (fd < 0) {
305 return new_fd; 281 error = fd;
282 goto out_dput;
306 } 283 }
307 284
308 dentry = d_obtain_alias(inode); 285 filp = dentry_open(dentry, mntget(parfilp->f_path.mnt),
309 if (IS_ERR(dentry)) { 286 hreq->oflags, cred);
310 put_unused_fd(new_fd);
311 return PTR_ERR(dentry);
312 }
313
314 /* Ensure umount returns EBUSY on umounts while this file is open. */
315 mntget(parfilp->f_path.mnt);
316
317 /* Create file pointer. */
318 filp = dentry_open(dentry, parfilp->f_path.mnt, hreq->oflags, cred);
319 if (IS_ERR(filp)) { 287 if (IS_ERR(filp)) {
320 put_unused_fd(new_fd); 288 put_unused_fd(fd);
321 return -XFS_ERROR(-PTR_ERR(filp)); 289 return PTR_ERR(filp);
322 } 290 }
323 291
324 if (inode->i_mode & S_IFREG) { 292 if (inode->i_mode & S_IFREG) {
325 /* invisible operation should not change atime */
326 filp->f_flags |= O_NOATIME; 293 filp->f_flags |= O_NOATIME;
327 filp->f_mode |= FMODE_NOCMTIME; 294 filp->f_mode |= FMODE_NOCMTIME;
328 } 295 }
329 296
330 fd_install(new_fd, filp); 297 fd_install(fd, filp);
331 return new_fd; 298 return fd;
299
300 out_dput:
301 dput(dentry);
302 return error;
332} 303}
333 304
334/* 305/*
@@ -359,11 +330,10 @@ do_readlink(
359 330
360int 331int
361xfs_readlink_by_handle( 332xfs_readlink_by_handle(
362 xfs_mount_t *mp, 333 struct file *parfilp,
363 xfs_fsop_handlereq_t *hreq, 334 xfs_fsop_handlereq_t *hreq)
364 struct inode *parinode)
365{ 335{
366 struct inode *inode; 336 struct dentry *dentry;
367 __u32 olen; 337 __u32 olen;
368 void *link; 338 void *link;
369 int error; 339 int error;
@@ -371,26 +341,28 @@ xfs_readlink_by_handle(
371 if (!capable(CAP_SYS_ADMIN)) 341 if (!capable(CAP_SYS_ADMIN))
372 return -XFS_ERROR(EPERM); 342 return -XFS_ERROR(EPERM);
373 343
374 error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); 344 dentry = xfs_handlereq_to_dentry(parfilp, hreq);
375 if (error) 345 if (IS_ERR(dentry))
376 return -error; 346 return PTR_ERR(dentry);
377 347
378 /* Restrict this handle operation to symlinks only. */ 348 /* Restrict this handle operation to symlinks only. */
379 if (!S_ISLNK(inode->i_mode)) { 349 if (!S_ISLNK(dentry->d_inode->i_mode)) {
380 error = -XFS_ERROR(EINVAL); 350 error = -XFS_ERROR(EINVAL);
381 goto out_iput; 351 goto out_dput;
382 } 352 }
383 353
384 if (copy_from_user(&olen, hreq->ohandlen, sizeof(__u32))) { 354 if (copy_from_user(&olen, hreq->ohandlen, sizeof(__u32))) {
385 error = -XFS_ERROR(EFAULT); 355 error = -XFS_ERROR(EFAULT);
386 goto out_iput; 356 goto out_dput;
387 } 357 }
388 358
389 link = kmalloc(MAXPATHLEN+1, GFP_KERNEL); 359 link = kmalloc(MAXPATHLEN+1, GFP_KERNEL);
390 if (!link) 360 if (!link) {
391 goto out_iput; 361 error = -XFS_ERROR(ENOMEM);
362 goto out_dput;
363 }
392 364
393 error = -xfs_readlink(XFS_I(inode), link); 365 error = -xfs_readlink(XFS_I(dentry->d_inode), link);
394 if (error) 366 if (error)
395 goto out_kfree; 367 goto out_kfree;
396 error = do_readlink(hreq->ohandle, olen, link); 368 error = do_readlink(hreq->ohandle, olen, link);
@@ -399,32 +371,31 @@ xfs_readlink_by_handle(
399 371
400 out_kfree: 372 out_kfree:
401 kfree(link); 373 kfree(link);
402 out_iput: 374 out_dput:
403 iput(inode); 375 dput(dentry);
404 return error; 376 return error;
405} 377}
406 378
407STATIC int 379STATIC int
408xfs_fssetdm_by_handle( 380xfs_fssetdm_by_handle(
409 xfs_mount_t *mp, 381 struct file *parfilp,
410 void __user *arg, 382 void __user *arg)
411 struct inode *parinode)
412{ 383{
413 int error; 384 int error;
414 struct fsdmidata fsd; 385 struct fsdmidata fsd;
415 xfs_fsop_setdm_handlereq_t dmhreq; 386 xfs_fsop_setdm_handlereq_t dmhreq;
416 struct inode *inode; 387 struct dentry *dentry;
417 388
418 if (!capable(CAP_MKNOD)) 389 if (!capable(CAP_MKNOD))
419 return -XFS_ERROR(EPERM); 390 return -XFS_ERROR(EPERM);
420 if (copy_from_user(&dmhreq, arg, sizeof(xfs_fsop_setdm_handlereq_t))) 391 if (copy_from_user(&dmhreq, arg, sizeof(xfs_fsop_setdm_handlereq_t)))
421 return -XFS_ERROR(EFAULT); 392 return -XFS_ERROR(EFAULT);
422 393
423 error = xfs_vget_fsop_handlereq(mp, parinode, &dmhreq.hreq, &inode); 394 dentry = xfs_handlereq_to_dentry(parfilp, &dmhreq.hreq);
424 if (error) 395 if (IS_ERR(dentry))
425 return -error; 396 return PTR_ERR(dentry);
426 397
427 if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { 398 if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) {
428 error = -XFS_ERROR(EPERM); 399 error = -XFS_ERROR(EPERM);
429 goto out; 400 goto out;
430 } 401 }
@@ -434,24 +405,23 @@ xfs_fssetdm_by_handle(
434 goto out; 405 goto out;
435 } 406 }
436 407
437 error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, 408 error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask,
438 fsd.fsd_dmstate); 409 fsd.fsd_dmstate);
439 410
440 out: 411 out:
441 iput(inode); 412 dput(dentry);
442 return error; 413 return error;
443} 414}
444 415
445STATIC int 416STATIC int
446xfs_attrlist_by_handle( 417xfs_attrlist_by_handle(
447 xfs_mount_t *mp, 418 struct file *parfilp,
448 void __user *arg, 419 void __user *arg)
449 struct inode *parinode)
450{ 420{
451 int error; 421 int error = -ENOMEM;
452 attrlist_cursor_kern_t *cursor; 422 attrlist_cursor_kern_t *cursor;
453 xfs_fsop_attrlist_handlereq_t al_hreq; 423 xfs_fsop_attrlist_handlereq_t al_hreq;
454 struct inode *inode; 424 struct dentry *dentry;
455 char *kbuf; 425 char *kbuf;
456 426
457 if (!capable(CAP_SYS_ADMIN)) 427 if (!capable(CAP_SYS_ADMIN))
@@ -467,16 +437,16 @@ xfs_attrlist_by_handle(
467 if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) 437 if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE))
468 return -XFS_ERROR(EINVAL); 438 return -XFS_ERROR(EINVAL);
469 439
470 error = xfs_vget_fsop_handlereq(mp, parinode, &al_hreq.hreq, &inode); 440 dentry = xfs_handlereq_to_dentry(parfilp, &al_hreq.hreq);
471 if (error) 441 if (IS_ERR(dentry))
472 goto out; 442 return PTR_ERR(dentry);
473 443
474 kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); 444 kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL);
475 if (!kbuf) 445 if (!kbuf)
476 goto out_vn_rele; 446 goto out_dput;
477 447
478 cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; 448 cursor = (attrlist_cursor_kern_t *)&al_hreq.pos;
479 error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, 449 error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen,
480 al_hreq.flags, cursor); 450 al_hreq.flags, cursor);
481 if (error) 451 if (error)
482 goto out_kfree; 452 goto out_kfree;
@@ -486,10 +456,9 @@ xfs_attrlist_by_handle(
486 456
487 out_kfree: 457 out_kfree:
488 kfree(kbuf); 458 kfree(kbuf);
489 out_vn_rele: 459 out_dput:
490 iput(inode); 460 dput(dentry);
491 out: 461 return error;
492 return -error;
493} 462}
494 463
495int 464int
@@ -564,15 +533,13 @@ xfs_attrmulti_attr_remove(
564 533
565STATIC int 534STATIC int
566xfs_attrmulti_by_handle( 535xfs_attrmulti_by_handle(
567 xfs_mount_t *mp,
568 void __user *arg,
569 struct file *parfilp, 536 struct file *parfilp,
570 struct inode *parinode) 537 void __user *arg)
571{ 538{
572 int error; 539 int error;
573 xfs_attr_multiop_t *ops; 540 xfs_attr_multiop_t *ops;
574 xfs_fsop_attrmulti_handlereq_t am_hreq; 541 xfs_fsop_attrmulti_handlereq_t am_hreq;
575 struct inode *inode; 542 struct dentry *dentry;
576 unsigned int i, size; 543 unsigned int i, size;
577 char *attr_name; 544 char *attr_name;
578 545
@@ -581,19 +548,19 @@ xfs_attrmulti_by_handle(
581 if (copy_from_user(&am_hreq, arg, sizeof(xfs_fsop_attrmulti_handlereq_t))) 548 if (copy_from_user(&am_hreq, arg, sizeof(xfs_fsop_attrmulti_handlereq_t)))
582 return -XFS_ERROR(EFAULT); 549 return -XFS_ERROR(EFAULT);
583 550
584 error = xfs_vget_fsop_handlereq(mp, parinode, &am_hreq.hreq, &inode); 551 dentry = xfs_handlereq_to_dentry(parfilp, &am_hreq.hreq);
585 if (error) 552 if (IS_ERR(dentry))
586 goto out; 553 return PTR_ERR(dentry);
587 554
588 error = E2BIG; 555 error = E2BIG;
589 size = am_hreq.opcount * sizeof(xfs_attr_multiop_t); 556 size = am_hreq.opcount * sizeof(xfs_attr_multiop_t);
590 if (!size || size > 16 * PAGE_SIZE) 557 if (!size || size > 16 * PAGE_SIZE)
591 goto out_vn_rele; 558 goto out_dput;
592 559
593 error = ENOMEM; 560 error = ENOMEM;
594 ops = kmalloc(size, GFP_KERNEL); 561 ops = kmalloc(size, GFP_KERNEL);
595 if (!ops) 562 if (!ops)
596 goto out_vn_rele; 563 goto out_dput;
597 564
598 error = EFAULT; 565 error = EFAULT;
599 if (copy_from_user(ops, am_hreq.ops, size)) 566 if (copy_from_user(ops, am_hreq.ops, size))
@@ -615,25 +582,28 @@ xfs_attrmulti_by_handle(
615 582
616 switch (ops[i].am_opcode) { 583 switch (ops[i].am_opcode) {
617 case ATTR_OP_GET: 584 case ATTR_OP_GET:
618 ops[i].am_error = xfs_attrmulti_attr_get(inode, 585 ops[i].am_error = xfs_attrmulti_attr_get(
619 attr_name, ops[i].am_attrvalue, 586 dentry->d_inode, attr_name,
620 &ops[i].am_length, ops[i].am_flags); 587 ops[i].am_attrvalue, &ops[i].am_length,
588 ops[i].am_flags);
621 break; 589 break;
622 case ATTR_OP_SET: 590 case ATTR_OP_SET:
623 ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); 591 ops[i].am_error = mnt_want_write(parfilp->f_path.mnt);
624 if (ops[i].am_error) 592 if (ops[i].am_error)
625 break; 593 break;
626 ops[i].am_error = xfs_attrmulti_attr_set(inode, 594 ops[i].am_error = xfs_attrmulti_attr_set(
627 attr_name, ops[i].am_attrvalue, 595 dentry->d_inode, attr_name,
628 ops[i].am_length, ops[i].am_flags); 596 ops[i].am_attrvalue, ops[i].am_length,
597 ops[i].am_flags);
629 mnt_drop_write(parfilp->f_path.mnt); 598 mnt_drop_write(parfilp->f_path.mnt);
630 break; 599 break;
631 case ATTR_OP_REMOVE: 600 case ATTR_OP_REMOVE:
632 ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); 601 ops[i].am_error = mnt_want_write(parfilp->f_path.mnt);
633 if (ops[i].am_error) 602 if (ops[i].am_error)
634 break; 603 break;
635 ops[i].am_error = xfs_attrmulti_attr_remove(inode, 604 ops[i].am_error = xfs_attrmulti_attr_remove(
636 attr_name, ops[i].am_flags); 605 dentry->d_inode, attr_name,
606 ops[i].am_flags);
637 mnt_drop_write(parfilp->f_path.mnt); 607 mnt_drop_write(parfilp->f_path.mnt);
638 break; 608 break;
639 default: 609 default:
@@ -647,9 +617,8 @@ xfs_attrmulti_by_handle(
647 kfree(attr_name); 617 kfree(attr_name);
648 out_kfree_ops: 618 out_kfree_ops:
649 kfree(ops); 619 kfree(ops);
650 out_vn_rele: 620 out_dput:
651 iput(inode); 621 dput(dentry);
652 out:
653 return -error; 622 return -error;
654} 623}
655 624
@@ -1440,23 +1409,23 @@ xfs_file_ioctl(
1440 1409
1441 if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) 1410 if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t)))
1442 return -XFS_ERROR(EFAULT); 1411 return -XFS_ERROR(EFAULT);
1443 return xfs_open_by_handle(mp, &hreq, filp, inode); 1412 return xfs_open_by_handle(filp, &hreq);
1444 } 1413 }
1445 case XFS_IOC_FSSETDM_BY_HANDLE: 1414 case XFS_IOC_FSSETDM_BY_HANDLE:
1446 return xfs_fssetdm_by_handle(mp, arg, inode); 1415 return xfs_fssetdm_by_handle(filp, arg);
1447 1416
1448 case XFS_IOC_READLINK_BY_HANDLE: { 1417 case XFS_IOC_READLINK_BY_HANDLE: {
1449 xfs_fsop_handlereq_t hreq; 1418 xfs_fsop_handlereq_t hreq;
1450 1419
1451 if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) 1420 if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t)))
1452 return -XFS_ERROR(EFAULT); 1421 return -XFS_ERROR(EFAULT);
1453 return xfs_readlink_by_handle(mp, &hreq, inode); 1422 return xfs_readlink_by_handle(filp, &hreq);
1454 } 1423 }
1455 case XFS_IOC_ATTRLIST_BY_HANDLE: 1424 case XFS_IOC_ATTRLIST_BY_HANDLE:
1456 return xfs_attrlist_by_handle(mp, arg, inode); 1425 return xfs_attrlist_by_handle(filp, arg);
1457 1426
1458 case XFS_IOC_ATTRMULTI_BY_HANDLE: 1427 case XFS_IOC_ATTRMULTI_BY_HANDLE:
1459 return xfs_attrmulti_by_handle(mp, arg, filp, inode); 1428 return xfs_attrmulti_by_handle(filp, arg);
1460 1429
1461 case XFS_IOC_SWAPEXT: { 1430 case XFS_IOC_SWAPEXT: {
1462 struct xfs_swapext sxp; 1431 struct xfs_swapext sxp;
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.h b/fs/xfs/linux-2.6/xfs_ioctl.h
index 8c16bf2d7e03..7bd7c6afc1eb 100644
--- a/fs/xfs/linux-2.6/xfs_ioctl.h
+++ b/fs/xfs/linux-2.6/xfs_ioctl.h
@@ -34,16 +34,13 @@ xfs_find_handle(
34 34
35extern int 35extern int
36xfs_open_by_handle( 36xfs_open_by_handle(
37 xfs_mount_t *mp,
38 xfs_fsop_handlereq_t *hreq,
39 struct file *parfilp, 37 struct file *parfilp,
40 struct inode *parinode); 38 xfs_fsop_handlereq_t *hreq);
41 39
42extern int 40extern int
43xfs_readlink_by_handle( 41xfs_readlink_by_handle(
44 xfs_mount_t *mp, 42 struct file *parfilp,
45 xfs_fsop_handlereq_t *hreq, 43 xfs_fsop_handlereq_t *hreq);
46 struct inode *parinode);
47 44
48extern int 45extern int
49xfs_attrmulti_attr_get( 46xfs_attrmulti_attr_get(
@@ -67,6 +64,12 @@ xfs_attrmulti_attr_remove(
67 char *name, 64 char *name,
68 __uint32_t flags); 65 __uint32_t flags);
69 66
67extern struct dentry *
68xfs_handle_to_dentry(
69 struct file *parfilp,
70 void __user *uhandle,
71 u32 hlen);
72
70extern long 73extern long
71xfs_file_ioctl( 74xfs_file_ioctl(
72 struct file *filp, 75 struct file *filp,
diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.c b/fs/xfs/linux-2.6/xfs_ioctl32.c
index 50903ad3182e..c70c4e3db790 100644
--- a/fs/xfs/linux-2.6/xfs_ioctl32.c
+++ b/fs/xfs/linux-2.6/xfs_ioctl32.c
@@ -17,6 +17,7 @@
17 */ 17 */
18#include <linux/compat.h> 18#include <linux/compat.h>
19#include <linux/ioctl.h> 19#include <linux/ioctl.h>
20#include <linux/mount.h>
20#include <asm/uaccess.h> 21#include <asm/uaccess.h>
21#include "xfs.h" 22#include "xfs.h"
22#include "xfs_fs.h" 23#include "xfs_fs.h"
@@ -340,96 +341,24 @@ xfs_compat_handlereq_copyin(
340 return 0; 341 return 0;
341} 342}
342 343
343/* 344STATIC struct dentry *
344 * Convert userspace handle data into inode. 345xfs_compat_handlereq_to_dentry(
345 * 346 struct file *parfilp,
346 * We use the fact that all the fsop_handlereq ioctl calls have a data 347 compat_xfs_fsop_handlereq_t *hreq)
347 * structure argument whose first component is always a xfs_fsop_handlereq_t,
348 * so we can pass that sub structure into this handy, shared routine.
349 *
350 * If no error, caller must always iput the returned inode.
351 */
352STATIC int
353xfs_vget_fsop_handlereq_compat(
354 xfs_mount_t *mp,
355 struct inode *parinode, /* parent inode pointer */
356 compat_xfs_fsop_handlereq_t *hreq,
357 struct inode **inode)
358{ 348{
359 void __user *hanp; 349 return xfs_handle_to_dentry(parfilp,
360 size_t hlen; 350 compat_ptr(hreq->ihandle), hreq->ihandlen);
361 xfs_fid_t *xfid;
362 xfs_handle_t *handlep;
363 xfs_handle_t handle;
364 xfs_inode_t *ip;
365 xfs_ino_t ino;
366 __u32 igen;
367 int error;
368
369 /*
370 * Only allow handle opens under a directory.
371 */
372 if (!S_ISDIR(parinode->i_mode))
373 return XFS_ERROR(ENOTDIR);
374
375 hanp = compat_ptr(hreq->ihandle);
376 hlen = hreq->ihandlen;
377 handlep = &handle;
378
379 if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep))
380 return XFS_ERROR(EINVAL);
381 if (copy_from_user(handlep, hanp, hlen))
382 return XFS_ERROR(EFAULT);
383 if (hlen < sizeof(*handlep))
384 memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen);
385 if (hlen > sizeof(handlep->ha_fsid)) {
386 if (handlep->ha_fid.fid_len !=
387 (hlen - sizeof(handlep->ha_fsid) -
388 sizeof(handlep->ha_fid.fid_len)) ||
389 handlep->ha_fid.fid_pad)
390 return XFS_ERROR(EINVAL);
391 }
392
393 /*
394 * Crack the handle, obtain the inode # & generation #
395 */
396 xfid = (struct xfs_fid *)&handlep->ha_fid;
397 if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) {
398 ino = xfid->fid_ino;
399 igen = xfid->fid_gen;
400 } else {
401 return XFS_ERROR(EINVAL);
402 }
403
404 /*
405 * Get the XFS inode, building a Linux inode to go with it.
406 */
407 error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0);
408 if (error)
409 return error;
410 if (ip == NULL)
411 return XFS_ERROR(EIO);
412 if (ip->i_d.di_gen != igen) {
413 xfs_iput_new(ip, XFS_ILOCK_SHARED);
414 return XFS_ERROR(ENOENT);
415 }
416
417 xfs_iunlock(ip, XFS_ILOCK_SHARED);
418
419 *inode = VFS_I(ip);
420 return 0;
421} 351}
422 352
423STATIC int 353STATIC int
424xfs_compat_attrlist_by_handle( 354xfs_compat_attrlist_by_handle(
425 xfs_mount_t *mp, 355 struct file *parfilp,
426 void __user *arg, 356 void __user *arg)
427 struct inode *parinode)
428{ 357{
429 int error; 358 int error;
430 attrlist_cursor_kern_t *cursor; 359 attrlist_cursor_kern_t *cursor;
431 compat_xfs_fsop_attrlist_handlereq_t al_hreq; 360 compat_xfs_fsop_attrlist_handlereq_t al_hreq;
432 struct inode *inode; 361 struct dentry *dentry;
433 char *kbuf; 362 char *kbuf;
434 363
435 if (!capable(CAP_SYS_ADMIN)) 364 if (!capable(CAP_SYS_ADMIN))
@@ -446,17 +375,17 @@ xfs_compat_attrlist_by_handle(
446 if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) 375 if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE))
447 return -XFS_ERROR(EINVAL); 376 return -XFS_ERROR(EINVAL);
448 377
449 error = xfs_vget_fsop_handlereq_compat(mp, parinode, &al_hreq.hreq, 378 dentry = xfs_compat_handlereq_to_dentry(parfilp, &al_hreq.hreq);
450 &inode); 379 if (IS_ERR(dentry))
451 if (error) 380 return PTR_ERR(dentry);
452 goto out;
453 381
382 error = -ENOMEM;
454 kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); 383 kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL);
455 if (!kbuf) 384 if (!kbuf)
456 goto out_vn_rele; 385 goto out_dput;
457 386
458 cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; 387 cursor = (attrlist_cursor_kern_t *)&al_hreq.pos;
459 error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, 388 error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen,
460 al_hreq.flags, cursor); 389 al_hreq.flags, cursor);
461 if (error) 390 if (error)
462 goto out_kfree; 391 goto out_kfree;
@@ -466,22 +395,20 @@ xfs_compat_attrlist_by_handle(
466 395
467 out_kfree: 396 out_kfree:
468 kfree(kbuf); 397 kfree(kbuf);
469 out_vn_rele: 398 out_dput:
470 iput(inode); 399 dput(dentry);
471 out: 400 return error;
472 return -error;
473} 401}
474 402
475STATIC int 403STATIC int
476xfs_compat_attrmulti_by_handle( 404xfs_compat_attrmulti_by_handle(
477 xfs_mount_t *mp, 405 struct file *parfilp,
478 void __user *arg, 406 void __user *arg)
479 struct inode *parinode)
480{ 407{
481 int error; 408 int error;
482 compat_xfs_attr_multiop_t *ops; 409 compat_xfs_attr_multiop_t *ops;
483 compat_xfs_fsop_attrmulti_handlereq_t am_hreq; 410 compat_xfs_fsop_attrmulti_handlereq_t am_hreq;
484 struct inode *inode; 411 struct dentry *dentry;
485 unsigned int i, size; 412 unsigned int i, size;
486 char *attr_name; 413 char *attr_name;
487 414
@@ -491,20 +418,19 @@ xfs_compat_attrmulti_by_handle(
491 sizeof(compat_xfs_fsop_attrmulti_handlereq_t))) 418 sizeof(compat_xfs_fsop_attrmulti_handlereq_t)))
492 return -XFS_ERROR(EFAULT); 419 return -XFS_ERROR(EFAULT);
493 420
494 error = xfs_vget_fsop_handlereq_compat(mp, parinode, &am_hreq.hreq, 421 dentry = xfs_compat_handlereq_to_dentry(parfilp, &am_hreq.hreq);
495 &inode); 422 if (IS_ERR(dentry))
496 if (error) 423 return PTR_ERR(dentry);
497 goto out;
498 424
499 error = E2BIG; 425 error = E2BIG;
500 size = am_hreq.opcount * sizeof(compat_xfs_attr_multiop_t); 426 size = am_hreq.opcount * sizeof(compat_xfs_attr_multiop_t);
501 if (!size || size > 16 * PAGE_SIZE) 427 if (!size || size > 16 * PAGE_SIZE)
502 goto out_vn_rele; 428 goto out_dput;
503 429
504 error = ENOMEM; 430 error = ENOMEM;
505 ops = kmalloc(size, GFP_KERNEL); 431 ops = kmalloc(size, GFP_KERNEL);
506 if (!ops) 432 if (!ops)
507 goto out_vn_rele; 433 goto out_dput;
508 434
509 error = EFAULT; 435 error = EFAULT;
510 if (copy_from_user(ops, compat_ptr(am_hreq.ops), size)) 436 if (copy_from_user(ops, compat_ptr(am_hreq.ops), size))
@@ -527,20 +453,29 @@ xfs_compat_attrmulti_by_handle(
527 453
528 switch (ops[i].am_opcode) { 454 switch (ops[i].am_opcode) {
529 case ATTR_OP_GET: 455 case ATTR_OP_GET:
530 ops[i].am_error = xfs_attrmulti_attr_get(inode, 456 ops[i].am_error = xfs_attrmulti_attr_get(
531 attr_name, 457 dentry->d_inode, attr_name,
532 compat_ptr(ops[i].am_attrvalue), 458 compat_ptr(ops[i].am_attrvalue),
533 &ops[i].am_length, ops[i].am_flags); 459 &ops[i].am_length, ops[i].am_flags);
534 break; 460 break;
535 case ATTR_OP_SET: 461 case ATTR_OP_SET:
536 ops[i].am_error = xfs_attrmulti_attr_set(inode, 462 ops[i].am_error = mnt_want_write(parfilp->f_path.mnt);
537 attr_name, 463 if (ops[i].am_error)
464 break;
465 ops[i].am_error = xfs_attrmulti_attr_set(
466 dentry->d_inode, attr_name,
538 compat_ptr(ops[i].am_attrvalue), 467 compat_ptr(ops[i].am_attrvalue),
539 ops[i].am_length, ops[i].am_flags); 468 ops[i].am_length, ops[i].am_flags);
469 mnt_drop_write(parfilp->f_path.mnt);
540 break; 470 break;
541 case ATTR_OP_REMOVE: 471 case ATTR_OP_REMOVE:
542 ops[i].am_error = xfs_attrmulti_attr_remove(inode, 472 ops[i].am_error = mnt_want_write(parfilp->f_path.mnt);
543 attr_name, ops[i].am_flags); 473 if (ops[i].am_error)
474 break;
475 ops[i].am_error = xfs_attrmulti_attr_remove(
476 dentry->d_inode, attr_name,
477 ops[i].am_flags);
478 mnt_drop_write(parfilp->f_path.mnt);
544 break; 479 break;
545 default: 480 default:
546 ops[i].am_error = EINVAL; 481 ops[i].am_error = EINVAL;
@@ -553,22 +488,20 @@ xfs_compat_attrmulti_by_handle(
553 kfree(attr_name); 488 kfree(attr_name);
554 out_kfree_ops: 489 out_kfree_ops:
555 kfree(ops); 490 kfree(ops);
556 out_vn_rele: 491 out_dput:
557 iput(inode); 492 dput(dentry);
558 out:
559 return -error; 493 return -error;
560} 494}
561 495
562STATIC int 496STATIC int
563xfs_compat_fssetdm_by_handle( 497xfs_compat_fssetdm_by_handle(
564 xfs_mount_t *mp, 498 struct file *parfilp,
565 void __user *arg, 499 void __user *arg)
566 struct inode *parinode)
567{ 500{
568 int error; 501 int error;
569 struct fsdmidata fsd; 502 struct fsdmidata fsd;
570 compat_xfs_fsop_setdm_handlereq_t dmhreq; 503 compat_xfs_fsop_setdm_handlereq_t dmhreq;
571 struct inode *inode; 504 struct dentry *dentry;
572 505
573 if (!capable(CAP_MKNOD)) 506 if (!capable(CAP_MKNOD))
574 return -XFS_ERROR(EPERM); 507 return -XFS_ERROR(EPERM);
@@ -576,12 +509,11 @@ xfs_compat_fssetdm_by_handle(
576 sizeof(compat_xfs_fsop_setdm_handlereq_t))) 509 sizeof(compat_xfs_fsop_setdm_handlereq_t)))
577 return -XFS_ERROR(EFAULT); 510 return -XFS_ERROR(EFAULT);
578 511
579 error = xfs_vget_fsop_handlereq_compat(mp, parinode, &dmhreq.hreq, 512 dentry = xfs_compat_handlereq_to_dentry(parfilp, &dmhreq.hreq);
580 &inode); 513 if (IS_ERR(dentry))
581 if (error) 514 return PTR_ERR(dentry);
582 return -error;
583 515
584 if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { 516 if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) {
585 error = -XFS_ERROR(EPERM); 517 error = -XFS_ERROR(EPERM);
586 goto out; 518 goto out;
587 } 519 }
@@ -591,11 +523,11 @@ xfs_compat_fssetdm_by_handle(
591 goto out; 523 goto out;
592 } 524 }
593 525
594 error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, 526 error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask,
595 fsd.fsd_dmstate); 527 fsd.fsd_dmstate);
596 528
597out: 529out:
598 iput(inode); 530 dput(dentry);
599 return error; 531 return error;
600} 532}
601 533
@@ -722,21 +654,21 @@ xfs_file_compat_ioctl(
722 654
723 if (xfs_compat_handlereq_copyin(&hreq, arg)) 655 if (xfs_compat_handlereq_copyin(&hreq, arg))
724 return -XFS_ERROR(EFAULT); 656 return -XFS_ERROR(EFAULT);
725 return xfs_open_by_handle(mp, &hreq, filp, inode); 657 return xfs_open_by_handle(filp, &hreq);
726 } 658 }
727 case XFS_IOC_READLINK_BY_HANDLE_32: { 659 case XFS_IOC_READLINK_BY_HANDLE_32: {
728 struct xfs_fsop_handlereq hreq; 660 struct xfs_fsop_handlereq hreq;
729 661
730 if (xfs_compat_handlereq_copyin(&hreq, arg)) 662 if (xfs_compat_handlereq_copyin(&hreq, arg))
731 return -XFS_ERROR(EFAULT); 663 return -XFS_ERROR(EFAULT);
732 return xfs_readlink_by_handle(mp, &hreq, inode); 664 return xfs_readlink_by_handle(filp, &hreq);
733 } 665 }
734 case XFS_IOC_ATTRLIST_BY_HANDLE_32: 666 case XFS_IOC_ATTRLIST_BY_HANDLE_32:
735 return xfs_compat_attrlist_by_handle(mp, arg, inode); 667 return xfs_compat_attrlist_by_handle(filp, arg);
736 case XFS_IOC_ATTRMULTI_BY_HANDLE_32: 668 case XFS_IOC_ATTRMULTI_BY_HANDLE_32:
737 return xfs_compat_attrmulti_by_handle(mp, arg, inode); 669 return xfs_compat_attrmulti_by_handle(filp, arg);
738 case XFS_IOC_FSSETDM_BY_HANDLE_32: 670 case XFS_IOC_FSSETDM_BY_HANDLE_32:
739 return xfs_compat_fssetdm_by_handle(mp, arg, inode); 671 return xfs_compat_fssetdm_by_handle(filp, arg);
740 default: 672 default:
741 return -XFS_ERROR(ENOIOCTLCMD); 673 return -XFS_ERROR(ENOIOCTLCMD);
742 } 674 }
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
index 95a971080368..c71e226da7f5 100644
--- a/fs/xfs/linux-2.6/xfs_super.c
+++ b/fs/xfs/linux-2.6/xfs_super.c
@@ -1197,6 +1197,7 @@ xfs_fs_remount(
1197 struct xfs_mount *mp = XFS_M(sb); 1197 struct xfs_mount *mp = XFS_M(sb);
1198 substring_t args[MAX_OPT_ARGS]; 1198 substring_t args[MAX_OPT_ARGS];
1199 char *p; 1199 char *p;
1200 int error;
1200 1201
1201 while ((p = strsep(&options, ",")) != NULL) { 1202 while ((p = strsep(&options, ",")) != NULL) {
1202 int token; 1203 int token;
@@ -1247,11 +1248,25 @@ xfs_fs_remount(
1247 } 1248 }
1248 } 1249 }
1249 1250
1250 /* rw/ro -> rw */ 1251 /* ro -> rw */
1251 if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) { 1252 if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) {
1252 mp->m_flags &= ~XFS_MOUNT_RDONLY; 1253 mp->m_flags &= ~XFS_MOUNT_RDONLY;
1253 if (mp->m_flags & XFS_MOUNT_BARRIER) 1254 if (mp->m_flags & XFS_MOUNT_BARRIER)
1254 xfs_mountfs_check_barriers(mp); 1255 xfs_mountfs_check_barriers(mp);
1256
1257 /*
1258 * If this is the first remount to writeable state we
1259 * might have some superblock changes to update.
1260 */
1261 if (mp->m_update_flags) {
1262 error = xfs_mount_log_sb(mp, mp->m_update_flags);
1263 if (error) {
1264 cmn_err(CE_WARN,
1265 "XFS: failed to write sb changes");
1266 return error;
1267 }
1268 mp->m_update_flags = 0;
1269 }
1255 } 1270 }
1256 1271
1257 /* rw -> ro */ 1272 /* rw -> ro */
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c
index 591ca6602bfb..6543c0b29753 100644
--- a/fs/xfs/quota/xfs_dquot.c
+++ b/fs/xfs/quota/xfs_dquot.c
@@ -73,6 +73,8 @@ int xfs_dqreq_num;
73int xfs_dqerror_mod = 33; 73int xfs_dqerror_mod = 33;
74#endif 74#endif
75 75
76static struct lock_class_key xfs_dquot_other_class;
77
76/* 78/*
77 * Allocate and initialize a dquot. We don't always allocate fresh memory; 79 * Allocate and initialize a dquot. We don't always allocate fresh memory;
78 * we try to reclaim a free dquot if the number of incore dquots are above 80 * we try to reclaim a free dquot if the number of incore dquots are above
@@ -139,7 +141,15 @@ xfs_qm_dqinit(
139 ASSERT(dqp->q_trace); 141 ASSERT(dqp->q_trace);
140 xfs_dqtrace_entry(dqp, "DQRECLAIMED_INIT"); 142 xfs_dqtrace_entry(dqp, "DQRECLAIMED_INIT");
141#endif 143#endif
142 } 144 }
145
146 /*
147 * In either case we need to make sure group quotas have a different
148 * lock class than user quotas, to make sure lockdep knows we can
149 * locks of one of each at the same time.
150 */
151 if (!(type & XFS_DQ_USER))
152 lockdep_set_class(&dqp->q_qlock, &xfs_dquot_other_class);
143 153
144 /* 154 /*
145 * log item gets initialized later 155 * log item gets initialized later
@@ -421,7 +431,7 @@ xfs_qm_dqalloc(
421 /* 431 /*
422 * Initialize the bmap freelist prior to calling bmapi code. 432 * Initialize the bmap freelist prior to calling bmapi code.
423 */ 433 */
424 XFS_BMAP_INIT(&flist, &firstblock); 434 xfs_bmap_init(&flist, &firstblock);
425 xfs_ilock(quotip, XFS_ILOCK_EXCL); 435 xfs_ilock(quotip, XFS_ILOCK_EXCL);
426 /* 436 /*
427 * Return if this type of quotas is turned off while we didn't 437 * Return if this type of quotas is turned off while we didn't
@@ -1383,6 +1393,12 @@ xfs_dqunlock_nonotify(
1383 mutex_unlock(&(dqp->q_qlock)); 1393 mutex_unlock(&(dqp->q_qlock));
1384} 1394}
1385 1395
1396/*
1397 * Lock two xfs_dquot structures.
1398 *
1399 * To avoid deadlocks we always lock the quota structure with
1400 * the lowerd id first.
1401 */
1386void 1402void
1387xfs_dqlock2( 1403xfs_dqlock2(
1388 xfs_dquot_t *d1, 1404 xfs_dquot_t *d1,
@@ -1392,18 +1408,16 @@ xfs_dqlock2(
1392 ASSERT(d1 != d2); 1408 ASSERT(d1 != d2);
1393 if (be32_to_cpu(d1->q_core.d_id) > 1409 if (be32_to_cpu(d1->q_core.d_id) >
1394 be32_to_cpu(d2->q_core.d_id)) { 1410 be32_to_cpu(d2->q_core.d_id)) {
1395 xfs_dqlock(d2); 1411 mutex_lock(&d2->q_qlock);
1396 xfs_dqlock(d1); 1412 mutex_lock_nested(&d1->q_qlock, XFS_QLOCK_NESTED);
1397 } else { 1413 } else {
1398 xfs_dqlock(d1); 1414 mutex_lock(&d1->q_qlock);
1399 xfs_dqlock(d2); 1415 mutex_lock_nested(&d2->q_qlock, XFS_QLOCK_NESTED);
1400 }
1401 } else {
1402 if (d1) {
1403 xfs_dqlock(d1);
1404 } else if (d2) {
1405 xfs_dqlock(d2);
1406 } 1416 }
1417 } else if (d1) {
1418 mutex_lock(&d1->q_qlock);
1419 } else if (d2) {
1420 mutex_lock(&d2->q_qlock);
1407 } 1421 }
1408} 1422}
1409 1423
diff --git a/fs/xfs/quota/xfs_dquot.h b/fs/xfs/quota/xfs_dquot.h
index 7e455337e2ba..d443e93b4331 100644
--- a/fs/xfs/quota/xfs_dquot.h
+++ b/fs/xfs/quota/xfs_dquot.h
@@ -97,6 +97,16 @@ typedef struct xfs_dquot {
97#define dq_hashlist q_lists.dqm_hashlist 97#define dq_hashlist q_lists.dqm_hashlist
98#define dq_flags q_lists.dqm_flags 98#define dq_flags q_lists.dqm_flags
99 99
100/*
101 * Lock hierachy for q_qlock:
102 * XFS_QLOCK_NORMAL is the implicit default,
103 * XFS_QLOCK_NESTED is the dquot with the higher id in xfs_dqlock2
104 */
105enum {
106 XFS_QLOCK_NORMAL = 0,
107 XFS_QLOCK_NESTED,
108};
109
100#define XFS_DQHOLD(dqp) ((dqp)->q_nrefs++) 110#define XFS_DQHOLD(dqp) ((dqp)->q_nrefs++)
101 111
102#ifdef DEBUG 112#ifdef DEBUG
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c
index 6b13960cf318..7a2beb64314f 100644
--- a/fs/xfs/quota/xfs_qm.c
+++ b/fs/xfs/quota/xfs_qm.c
@@ -1070,6 +1070,13 @@ xfs_qm_sync(
1070 return 0; 1070 return 0;
1071} 1071}
1072 1072
1073/*
1074 * The hash chains and the mplist use the same xfs_dqhash structure as
1075 * their list head, but we can take the mplist qh_lock and one of the
1076 * hash qh_locks at the same time without any problem as they aren't
1077 * related.
1078 */
1079static struct lock_class_key xfs_quota_mplist_class;
1073 1080
1074/* 1081/*
1075 * This initializes all the quota information that's kept in the 1082 * This initializes all the quota information that's kept in the
@@ -1105,6 +1112,8 @@ xfs_qm_init_quotainfo(
1105 } 1112 }
1106 1113
1107 xfs_qm_list_init(&qinf->qi_dqlist, "mpdqlist", 0); 1114 xfs_qm_list_init(&qinf->qi_dqlist, "mpdqlist", 0);
1115 lockdep_set_class(&qinf->qi_dqlist.qh_lock, &xfs_quota_mplist_class);
1116
1108 qinf->qi_dqreclaims = 0; 1117 qinf->qi_dqreclaims = 0;
1109 1118
1110 /* mutex used to serialize quotaoffs */ 1119 /* mutex used to serialize quotaoffs */
diff --git a/fs/xfs/xfs_acl.h b/fs/xfs/xfs_acl.h
index a4e293b93efa..642f1db4def4 100644
--- a/fs/xfs/xfs_acl.h
+++ b/fs/xfs/xfs_acl.h
@@ -22,7 +22,6 @@
22 * Access Control Lists 22 * Access Control Lists
23 */ 23 */
24typedef __uint16_t xfs_acl_perm_t; 24typedef __uint16_t xfs_acl_perm_t;
25typedef __int32_t xfs_acl_type_t;
26typedef __int32_t xfs_acl_tag_t; 25typedef __int32_t xfs_acl_tag_t;
27typedef __int32_t xfs_acl_id_t; 26typedef __int32_t xfs_acl_id_t;
28 27
diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h
index f2e21817a226..143d63ecb20a 100644
--- a/fs/xfs/xfs_ag.h
+++ b/fs/xfs/xfs_ag.h
@@ -231,7 +231,7 @@ typedef struct xfs_perag
231#define XFS_FSB_TO_AGNO(mp,fsbno) \ 231#define XFS_FSB_TO_AGNO(mp,fsbno) \
232 ((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog)) 232 ((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog))
233#define XFS_FSB_TO_AGBNO(mp,fsbno) \ 233#define XFS_FSB_TO_AGBNO(mp,fsbno) \
234 ((xfs_agblock_t)((fsbno) & XFS_MASK32LO((mp)->m_sb.sb_agblklog))) 234 ((xfs_agblock_t)((fsbno) & xfs_mask32lo((mp)->m_sb.sb_agblklog)))
235#define XFS_AGB_TO_DADDR(mp,agno,agbno) \ 235#define XFS_AGB_TO_DADDR(mp,agno,agbno) \
236 ((xfs_daddr_t)XFS_FSB_TO_BB(mp, \ 236 ((xfs_daddr_t)XFS_FSB_TO_BB(mp, \
237 (xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno))) 237 (xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno)))
@@ -244,8 +244,8 @@ typedef struct xfs_perag
244#define XFS_AG_CHECK_DADDR(mp,d,len) \ 244#define XFS_AG_CHECK_DADDR(mp,d,len) \
245 ((len) == 1 ? \ 245 ((len) == 1 ? \
246 ASSERT((d) == XFS_SB_DADDR || \ 246 ASSERT((d) == XFS_SB_DADDR || \
247 XFS_DADDR_TO_AGBNO(mp, d) != XFS_SB_DADDR) : \ 247 xfs_daddr_to_agbno(mp, d) != XFS_SB_DADDR) : \
248 ASSERT(XFS_DADDR_TO_AGNO(mp, d) == \ 248 ASSERT(xfs_daddr_to_agno(mp, d) == \
249 XFS_DADDR_TO_AGNO(mp, (d) + (len) - 1))) 249 xfs_daddr_to_agno(mp, (d) + (len) - 1)))
250 250
251#endif /* __XFS_AG_H__ */ 251#endif /* __XFS_AG_H__ */
diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c
index 733cb75a8c5d..c10c3a292d30 100644
--- a/fs/xfs/xfs_alloc_btree.c
+++ b/fs/xfs/xfs_alloc_btree.c
@@ -115,7 +115,7 @@ xfs_allocbt_free_block(
115 xfs_agblock_t bno; 115 xfs_agblock_t bno;
116 int error; 116 int error;
117 117
118 bno = XFS_DADDR_TO_AGBNO(cur->bc_mp, XFS_BUF_ADDR(bp)); 118 bno = xfs_daddr_to_agbno(cur->bc_mp, XFS_BUF_ADDR(bp));
119 error = xfs_alloc_put_freelist(cur->bc_tp, agbp, NULL, bno, 1); 119 error = xfs_alloc_put_freelist(cur->bc_tp, agbp, NULL, bno, 1);
120 if (error) 120 if (error)
121 return error; 121 return error;
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c
index f7cdc28aff41..5fde1654b430 100644
--- a/fs/xfs/xfs_attr.c
+++ b/fs/xfs/xfs_attr.c
@@ -374,7 +374,7 @@ xfs_attr_set_int(xfs_inode_t *dp, struct xfs_name *name,
374 * It won't fit in the shortform, transform to a leaf block. 374 * It won't fit in the shortform, transform to a leaf block.
375 * GROT: another possible req'mt for a double-split btree op. 375 * GROT: another possible req'mt for a double-split btree op.
376 */ 376 */
377 XFS_BMAP_INIT(args.flist, args.firstblock); 377 xfs_bmap_init(args.flist, args.firstblock);
378 error = xfs_attr_shortform_to_leaf(&args); 378 error = xfs_attr_shortform_to_leaf(&args);
379 if (!error) { 379 if (!error) {
380 error = xfs_bmap_finish(&args.trans, args.flist, 380 error = xfs_bmap_finish(&args.trans, args.flist,
@@ -956,7 +956,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
956 * Commit that transaction so that the node_addname() call 956 * Commit that transaction so that the node_addname() call
957 * can manage its own transactions. 957 * can manage its own transactions.
958 */ 958 */
959 XFS_BMAP_INIT(args->flist, args->firstblock); 959 xfs_bmap_init(args->flist, args->firstblock);
960 error = xfs_attr_leaf_to_node(args); 960 error = xfs_attr_leaf_to_node(args);
961 if (!error) { 961 if (!error) {
962 error = xfs_bmap_finish(&args->trans, args->flist, 962 error = xfs_bmap_finish(&args->trans, args->flist,
@@ -1057,7 +1057,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
1057 * If the result is small enough, shrink it all into the inode. 1057 * If the result is small enough, shrink it all into the inode.
1058 */ 1058 */
1059 if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { 1059 if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) {
1060 XFS_BMAP_INIT(args->flist, args->firstblock); 1060 xfs_bmap_init(args->flist, args->firstblock);
1061 error = xfs_attr_leaf_to_shortform(bp, args, forkoff); 1061 error = xfs_attr_leaf_to_shortform(bp, args, forkoff);
1062 /* bp is gone due to xfs_da_shrink_inode */ 1062 /* bp is gone due to xfs_da_shrink_inode */
1063 if (!error) { 1063 if (!error) {
@@ -1135,7 +1135,7 @@ xfs_attr_leaf_removename(xfs_da_args_t *args)
1135 * If the result is small enough, shrink it all into the inode. 1135 * If the result is small enough, shrink it all into the inode.
1136 */ 1136 */
1137 if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { 1137 if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) {
1138 XFS_BMAP_INIT(args->flist, args->firstblock); 1138 xfs_bmap_init(args->flist, args->firstblock);
1139 error = xfs_attr_leaf_to_shortform(bp, args, forkoff); 1139 error = xfs_attr_leaf_to_shortform(bp, args, forkoff);
1140 /* bp is gone due to xfs_da_shrink_inode */ 1140 /* bp is gone due to xfs_da_shrink_inode */
1141 if (!error) { 1141 if (!error) {
@@ -1290,7 +1290,7 @@ restart:
1290 * have been a b-tree. 1290 * have been a b-tree.
1291 */ 1291 */
1292 xfs_da_state_free(state); 1292 xfs_da_state_free(state);
1293 XFS_BMAP_INIT(args->flist, args->firstblock); 1293 xfs_bmap_init(args->flist, args->firstblock);
1294 error = xfs_attr_leaf_to_node(args); 1294 error = xfs_attr_leaf_to_node(args);
1295 if (!error) { 1295 if (!error) {
1296 error = xfs_bmap_finish(&args->trans, 1296 error = xfs_bmap_finish(&args->trans,
@@ -1331,7 +1331,7 @@ restart:
1331 * in the index/blkno/rmtblkno/rmtblkcnt fields and 1331 * in the index/blkno/rmtblkno/rmtblkcnt fields and
1332 * in the index2/blkno2/rmtblkno2/rmtblkcnt2 fields. 1332 * in the index2/blkno2/rmtblkno2/rmtblkcnt2 fields.
1333 */ 1333 */
1334 XFS_BMAP_INIT(args->flist, args->firstblock); 1334 xfs_bmap_init(args->flist, args->firstblock);
1335 error = xfs_da_split(state); 1335 error = xfs_da_split(state);
1336 if (!error) { 1336 if (!error) {
1337 error = xfs_bmap_finish(&args->trans, args->flist, 1337 error = xfs_bmap_finish(&args->trans, args->flist,
@@ -1443,7 +1443,7 @@ restart:
1443 * Check to see if the tree needs to be collapsed. 1443 * Check to see if the tree needs to be collapsed.
1444 */ 1444 */
1445 if (retval && (state->path.active > 1)) { 1445 if (retval && (state->path.active > 1)) {
1446 XFS_BMAP_INIT(args->flist, args->firstblock); 1446 xfs_bmap_init(args->flist, args->firstblock);
1447 error = xfs_da_join(state); 1447 error = xfs_da_join(state);
1448 if (!error) { 1448 if (!error) {
1449 error = xfs_bmap_finish(&args->trans, 1449 error = xfs_bmap_finish(&args->trans,
@@ -1579,7 +1579,7 @@ xfs_attr_node_removename(xfs_da_args_t *args)
1579 * Check to see if the tree needs to be collapsed. 1579 * Check to see if the tree needs to be collapsed.
1580 */ 1580 */
1581 if (retval && (state->path.active > 1)) { 1581 if (retval && (state->path.active > 1)) {
1582 XFS_BMAP_INIT(args->flist, args->firstblock); 1582 xfs_bmap_init(args->flist, args->firstblock);
1583 error = xfs_da_join(state); 1583 error = xfs_da_join(state);
1584 if (!error) { 1584 if (!error) {
1585 error = xfs_bmap_finish(&args->trans, args->flist, 1585 error = xfs_bmap_finish(&args->trans, args->flist,
@@ -1630,7 +1630,7 @@ xfs_attr_node_removename(xfs_da_args_t *args)
1630 == XFS_ATTR_LEAF_MAGIC); 1630 == XFS_ATTR_LEAF_MAGIC);
1631 1631
1632 if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { 1632 if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) {
1633 XFS_BMAP_INIT(args->flist, args->firstblock); 1633 xfs_bmap_init(args->flist, args->firstblock);
1634 error = xfs_attr_leaf_to_shortform(bp, args, forkoff); 1634 error = xfs_attr_leaf_to_shortform(bp, args, forkoff);
1635 /* bp is gone due to xfs_da_shrink_inode */ 1635 /* bp is gone due to xfs_da_shrink_inode */
1636 if (!error) { 1636 if (!error) {
@@ -2069,7 +2069,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)
2069 /* 2069 /*
2070 * Allocate a single extent, up to the size of the value. 2070 * Allocate a single extent, up to the size of the value.
2071 */ 2071 */
2072 XFS_BMAP_INIT(args->flist, args->firstblock); 2072 xfs_bmap_init(args->flist, args->firstblock);
2073 nmap = 1; 2073 nmap = 1;
2074 error = xfs_bmapi(args->trans, dp, (xfs_fileoff_t)lblkno, 2074 error = xfs_bmapi(args->trans, dp, (xfs_fileoff_t)lblkno,
2075 blkcnt, 2075 blkcnt,
@@ -2123,7 +2123,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)
2123 /* 2123 /*
2124 * Try to remember where we decided to put the value. 2124 * Try to remember where we decided to put the value.
2125 */ 2125 */
2126 XFS_BMAP_INIT(args->flist, args->firstblock); 2126 xfs_bmap_init(args->flist, args->firstblock);
2127 nmap = 1; 2127 nmap = 1;
2128 error = xfs_bmapi(NULL, dp, (xfs_fileoff_t)lblkno, 2128 error = xfs_bmapi(NULL, dp, (xfs_fileoff_t)lblkno,
2129 args->rmtblkcnt, 2129 args->rmtblkcnt,
@@ -2188,7 +2188,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)
2188 /* 2188 /*
2189 * Try to remember where we decided to put the value. 2189 * Try to remember where we decided to put the value.
2190 */ 2190 */
2191 XFS_BMAP_INIT(args->flist, args->firstblock); 2191 xfs_bmap_init(args->flist, args->firstblock);
2192 nmap = 1; 2192 nmap = 1;
2193 error = xfs_bmapi(NULL, args->dp, (xfs_fileoff_t)lblkno, 2193 error = xfs_bmapi(NULL, args->dp, (xfs_fileoff_t)lblkno,
2194 args->rmtblkcnt, 2194 args->rmtblkcnt,
@@ -2229,7 +2229,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)
2229 blkcnt = args->rmtblkcnt; 2229 blkcnt = args->rmtblkcnt;
2230 done = 0; 2230 done = 0;
2231 while (!done) { 2231 while (!done) {
2232 XFS_BMAP_INIT(args->flist, args->firstblock); 2232 xfs_bmap_init(args->flist, args->firstblock);
2233 error = xfs_bunmapi(args->trans, args->dp, lblkno, blkcnt, 2233 error = xfs_bunmapi(args->trans, args->dp, lblkno, blkcnt,
2234 XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, 2234 XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA,
2235 1, args->firstblock, args->flist, 2235 1, args->firstblock, args->flist,
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c
index 79da6b2ea99e..6c323f8a4cd1 100644
--- a/fs/xfs/xfs_attr_leaf.c
+++ b/fs/xfs/xfs_attr_leaf.c
@@ -736,7 +736,7 @@ xfs_attr_shortform_allfit(xfs_dabuf_t *bp, xfs_inode_t *dp)
736 continue; /* don't copy partial entries */ 736 continue; /* don't copy partial entries */
737 if (!(entry->flags & XFS_ATTR_LOCAL)) 737 if (!(entry->flags & XFS_ATTR_LOCAL))
738 return(0); 738 return(0);
739 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); 739 name_loc = xfs_attr_leaf_name_local(leaf, i);
740 if (name_loc->namelen >= XFS_ATTR_SF_ENTSIZE_MAX) 740 if (name_loc->namelen >= XFS_ATTR_SF_ENTSIZE_MAX)
741 return(0); 741 return(0);
742 if (be16_to_cpu(name_loc->valuelen) >= XFS_ATTR_SF_ENTSIZE_MAX) 742 if (be16_to_cpu(name_loc->valuelen) >= XFS_ATTR_SF_ENTSIZE_MAX)
@@ -823,7 +823,7 @@ xfs_attr_leaf_to_shortform(xfs_dabuf_t *bp, xfs_da_args_t *args, int forkoff)
823 if (!entry->nameidx) 823 if (!entry->nameidx)
824 continue; 824 continue;
825 ASSERT(entry->flags & XFS_ATTR_LOCAL); 825 ASSERT(entry->flags & XFS_ATTR_LOCAL);
826 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); 826 name_loc = xfs_attr_leaf_name_local(leaf, i);
827 nargs.name = (char *)name_loc->nameval; 827 nargs.name = (char *)name_loc->nameval;
828 nargs.namelen = name_loc->namelen; 828 nargs.namelen = name_loc->namelen;
829 nargs.value = (char *)&name_loc->nameval[nargs.namelen]; 829 nargs.value = (char *)&name_loc->nameval[nargs.namelen];
@@ -1141,14 +1141,14 @@ xfs_attr_leaf_add_work(xfs_dabuf_t *bp, xfs_da_args_t *args, int mapindex)
1141 * as part of this transaction (a split operation for example). 1141 * as part of this transaction (a split operation for example).
1142 */ 1142 */
1143 if (entry->flags & XFS_ATTR_LOCAL) { 1143 if (entry->flags & XFS_ATTR_LOCAL) {
1144 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); 1144 name_loc = xfs_attr_leaf_name_local(leaf, args->index);
1145 name_loc->namelen = args->namelen; 1145 name_loc->namelen = args->namelen;
1146 name_loc->valuelen = cpu_to_be16(args->valuelen); 1146 name_loc->valuelen = cpu_to_be16(args->valuelen);
1147 memcpy((char *)name_loc->nameval, args->name, args->namelen); 1147 memcpy((char *)name_loc->nameval, args->name, args->namelen);
1148 memcpy((char *)&name_loc->nameval[args->namelen], args->value, 1148 memcpy((char *)&name_loc->nameval[args->namelen], args->value,
1149 be16_to_cpu(name_loc->valuelen)); 1149 be16_to_cpu(name_loc->valuelen));
1150 } else { 1150 } else {
1151 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); 1151 name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);
1152 name_rmt->namelen = args->namelen; 1152 name_rmt->namelen = args->namelen;
1153 memcpy((char *)name_rmt->name, args->name, args->namelen); 1153 memcpy((char *)name_rmt->name, args->name, args->namelen);
1154 entry->flags |= XFS_ATTR_INCOMPLETE; 1154 entry->flags |= XFS_ATTR_INCOMPLETE;
@@ -1159,7 +1159,7 @@ xfs_attr_leaf_add_work(xfs_dabuf_t *bp, xfs_da_args_t *args, int mapindex)
1159 args->rmtblkcnt = XFS_B_TO_FSB(mp, args->valuelen); 1159 args->rmtblkcnt = XFS_B_TO_FSB(mp, args->valuelen);
1160 } 1160 }
1161 xfs_da_log_buf(args->trans, bp, 1161 xfs_da_log_buf(args->trans, bp,
1162 XFS_DA_LOGRANGE(leaf, XFS_ATTR_LEAF_NAME(leaf, args->index), 1162 XFS_DA_LOGRANGE(leaf, xfs_attr_leaf_name(leaf, args->index),
1163 xfs_attr_leaf_entsize(leaf, args->index))); 1163 xfs_attr_leaf_entsize(leaf, args->index)));
1164 1164
1165 /* 1165 /*
@@ -1749,10 +1749,10 @@ xfs_attr_leaf_remove(xfs_dabuf_t *bp, xfs_da_args_t *args)
1749 /* 1749 /*
1750 * Compress the remaining entries and zero out the removed stuff. 1750 * Compress the remaining entries and zero out the removed stuff.
1751 */ 1751 */
1752 memset(XFS_ATTR_LEAF_NAME(leaf, args->index), 0, entsize); 1752 memset(xfs_attr_leaf_name(leaf, args->index), 0, entsize);
1753 be16_add_cpu(&hdr->usedbytes, -entsize); 1753 be16_add_cpu(&hdr->usedbytes, -entsize);
1754 xfs_da_log_buf(args->trans, bp, 1754 xfs_da_log_buf(args->trans, bp,
1755 XFS_DA_LOGRANGE(leaf, XFS_ATTR_LEAF_NAME(leaf, args->index), 1755 XFS_DA_LOGRANGE(leaf, xfs_attr_leaf_name(leaf, args->index),
1756 entsize)); 1756 entsize));
1757 1757
1758 tmp = (be16_to_cpu(hdr->count) - args->index) 1758 tmp = (be16_to_cpu(hdr->count) - args->index)
@@ -1985,7 +1985,7 @@ xfs_attr_leaf_lookup_int(xfs_dabuf_t *bp, xfs_da_args_t *args)
1985 continue; 1985 continue;
1986 } 1986 }
1987 if (entry->flags & XFS_ATTR_LOCAL) { 1987 if (entry->flags & XFS_ATTR_LOCAL) {
1988 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, probe); 1988 name_loc = xfs_attr_leaf_name_local(leaf, probe);
1989 if (name_loc->namelen != args->namelen) 1989 if (name_loc->namelen != args->namelen)
1990 continue; 1990 continue;
1991 if (memcmp(args->name, (char *)name_loc->nameval, args->namelen) != 0) 1991 if (memcmp(args->name, (char *)name_loc->nameval, args->namelen) != 0)
@@ -1995,7 +1995,7 @@ xfs_attr_leaf_lookup_int(xfs_dabuf_t *bp, xfs_da_args_t *args)
1995 args->index = probe; 1995 args->index = probe;
1996 return(XFS_ERROR(EEXIST)); 1996 return(XFS_ERROR(EEXIST));
1997 } else { 1997 } else {
1998 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, probe); 1998 name_rmt = xfs_attr_leaf_name_remote(leaf, probe);
1999 if (name_rmt->namelen != args->namelen) 1999 if (name_rmt->namelen != args->namelen)
2000 continue; 2000 continue;
2001 if (memcmp(args->name, (char *)name_rmt->name, 2001 if (memcmp(args->name, (char *)name_rmt->name,
@@ -2035,7 +2035,7 @@ xfs_attr_leaf_getvalue(xfs_dabuf_t *bp, xfs_da_args_t *args)
2035 2035
2036 entry = &leaf->entries[args->index]; 2036 entry = &leaf->entries[args->index];
2037 if (entry->flags & XFS_ATTR_LOCAL) { 2037 if (entry->flags & XFS_ATTR_LOCAL) {
2038 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); 2038 name_loc = xfs_attr_leaf_name_local(leaf, args->index);
2039 ASSERT(name_loc->namelen == args->namelen); 2039 ASSERT(name_loc->namelen == args->namelen);
2040 ASSERT(memcmp(args->name, name_loc->nameval, args->namelen) == 0); 2040 ASSERT(memcmp(args->name, name_loc->nameval, args->namelen) == 0);
2041 valuelen = be16_to_cpu(name_loc->valuelen); 2041 valuelen = be16_to_cpu(name_loc->valuelen);
@@ -2050,7 +2050,7 @@ xfs_attr_leaf_getvalue(xfs_dabuf_t *bp, xfs_da_args_t *args)
2050 args->valuelen = valuelen; 2050 args->valuelen = valuelen;
2051 memcpy(args->value, &name_loc->nameval[args->namelen], valuelen); 2051 memcpy(args->value, &name_loc->nameval[args->namelen], valuelen);
2052 } else { 2052 } else {
2053 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); 2053 name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);
2054 ASSERT(name_rmt->namelen == args->namelen); 2054 ASSERT(name_rmt->namelen == args->namelen);
2055 ASSERT(memcmp(args->name, name_rmt->name, args->namelen) == 0); 2055 ASSERT(memcmp(args->name, name_rmt->name, args->namelen) == 0);
2056 valuelen = be32_to_cpu(name_rmt->valuelen); 2056 valuelen = be32_to_cpu(name_rmt->valuelen);
@@ -2143,7 +2143,7 @@ xfs_attr_leaf_moveents(xfs_attr_leafblock_t *leaf_s, int start_s,
2143 * off for 6.2, should be revisited later. 2143 * off for 6.2, should be revisited later.
2144 */ 2144 */
2145 if (entry_s->flags & XFS_ATTR_INCOMPLETE) { /* skip partials? */ 2145 if (entry_s->flags & XFS_ATTR_INCOMPLETE) { /* skip partials? */
2146 memset(XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), 0, tmp); 2146 memset(xfs_attr_leaf_name(leaf_s, start_s + i), 0, tmp);
2147 be16_add_cpu(&hdr_s->usedbytes, -tmp); 2147 be16_add_cpu(&hdr_s->usedbytes, -tmp);
2148 be16_add_cpu(&hdr_s->count, -1); 2148 be16_add_cpu(&hdr_s->count, -1);
2149 entry_d--; /* to compensate for ++ in loop hdr */ 2149 entry_d--; /* to compensate for ++ in loop hdr */
@@ -2160,11 +2160,11 @@ xfs_attr_leaf_moveents(xfs_attr_leafblock_t *leaf_s, int start_s,
2160 entry_d->flags = entry_s->flags; 2160 entry_d->flags = entry_s->flags;
2161 ASSERT(be16_to_cpu(entry_d->nameidx) + tmp 2161 ASSERT(be16_to_cpu(entry_d->nameidx) + tmp
2162 <= XFS_LBSIZE(mp)); 2162 <= XFS_LBSIZE(mp));
2163 memmove(XFS_ATTR_LEAF_NAME(leaf_d, desti), 2163 memmove(xfs_attr_leaf_name(leaf_d, desti),
2164 XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), tmp); 2164 xfs_attr_leaf_name(leaf_s, start_s + i), tmp);
2165 ASSERT(be16_to_cpu(entry_s->nameidx) + tmp 2165 ASSERT(be16_to_cpu(entry_s->nameidx) + tmp
2166 <= XFS_LBSIZE(mp)); 2166 <= XFS_LBSIZE(mp));
2167 memset(XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), 0, tmp); 2167 memset(xfs_attr_leaf_name(leaf_s, start_s + i), 0, tmp);
2168 be16_add_cpu(&hdr_s->usedbytes, -tmp); 2168 be16_add_cpu(&hdr_s->usedbytes, -tmp);
2169 be16_add_cpu(&hdr_d->usedbytes, tmp); 2169 be16_add_cpu(&hdr_d->usedbytes, tmp);
2170 be16_add_cpu(&hdr_s->count, -1); 2170 be16_add_cpu(&hdr_s->count, -1);
@@ -2276,12 +2276,12 @@ xfs_attr_leaf_entsize(xfs_attr_leafblock_t *leaf, int index)
2276 2276
2277 ASSERT(be16_to_cpu(leaf->hdr.info.magic) == XFS_ATTR_LEAF_MAGIC); 2277 ASSERT(be16_to_cpu(leaf->hdr.info.magic) == XFS_ATTR_LEAF_MAGIC);
2278 if (leaf->entries[index].flags & XFS_ATTR_LOCAL) { 2278 if (leaf->entries[index].flags & XFS_ATTR_LOCAL) {
2279 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, index); 2279 name_loc = xfs_attr_leaf_name_local(leaf, index);
2280 size = XFS_ATTR_LEAF_ENTSIZE_LOCAL(name_loc->namelen, 2280 size = xfs_attr_leaf_entsize_local(name_loc->namelen,
2281 be16_to_cpu(name_loc->valuelen)); 2281 be16_to_cpu(name_loc->valuelen));
2282 } else { 2282 } else {
2283 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, index); 2283 name_rmt = xfs_attr_leaf_name_remote(leaf, index);
2284 size = XFS_ATTR_LEAF_ENTSIZE_REMOTE(name_rmt->namelen); 2284 size = xfs_attr_leaf_entsize_remote(name_rmt->namelen);
2285 } 2285 }
2286 return(size); 2286 return(size);
2287} 2287}
@@ -2297,13 +2297,13 @@ xfs_attr_leaf_newentsize(int namelen, int valuelen, int blocksize, int *local)
2297{ 2297{
2298 int size; 2298 int size;
2299 2299
2300 size = XFS_ATTR_LEAF_ENTSIZE_LOCAL(namelen, valuelen); 2300 size = xfs_attr_leaf_entsize_local(namelen, valuelen);
2301 if (size < XFS_ATTR_LEAF_ENTSIZE_LOCAL_MAX(blocksize)) { 2301 if (size < xfs_attr_leaf_entsize_local_max(blocksize)) {
2302 if (local) { 2302 if (local) {
2303 *local = 1; 2303 *local = 1;
2304 } 2304 }
2305 } else { 2305 } else {
2306 size = XFS_ATTR_LEAF_ENTSIZE_REMOTE(namelen); 2306 size = xfs_attr_leaf_entsize_remote(namelen);
2307 if (local) { 2307 if (local) {
2308 *local = 0; 2308 *local = 0;
2309 } 2309 }
@@ -2372,7 +2372,7 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, xfs_attr_list_context_t *context)
2372 2372
2373 if (entry->flags & XFS_ATTR_LOCAL) { 2373 if (entry->flags & XFS_ATTR_LOCAL) {
2374 xfs_attr_leaf_name_local_t *name_loc = 2374 xfs_attr_leaf_name_local_t *name_loc =
2375 XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); 2375 xfs_attr_leaf_name_local(leaf, i);
2376 2376
2377 retval = context->put_listent(context, 2377 retval = context->put_listent(context,
2378 entry->flags, 2378 entry->flags,
@@ -2384,7 +2384,7 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, xfs_attr_list_context_t *context)
2384 return retval; 2384 return retval;
2385 } else { 2385 } else {
2386 xfs_attr_leaf_name_remote_t *name_rmt = 2386 xfs_attr_leaf_name_remote_t *name_rmt =
2387 XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); 2387 xfs_attr_leaf_name_remote(leaf, i);
2388 2388
2389 int valuelen = be32_to_cpu(name_rmt->valuelen); 2389 int valuelen = be32_to_cpu(name_rmt->valuelen);
2390 2390
@@ -2468,11 +2468,11 @@ xfs_attr_leaf_clearflag(xfs_da_args_t *args)
2468 2468
2469#ifdef DEBUG 2469#ifdef DEBUG
2470 if (entry->flags & XFS_ATTR_LOCAL) { 2470 if (entry->flags & XFS_ATTR_LOCAL) {
2471 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); 2471 name_loc = xfs_attr_leaf_name_local(leaf, args->index);
2472 namelen = name_loc->namelen; 2472 namelen = name_loc->namelen;
2473 name = (char *)name_loc->nameval; 2473 name = (char *)name_loc->nameval;
2474 } else { 2474 } else {
2475 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); 2475 name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);
2476 namelen = name_rmt->namelen; 2476 namelen = name_rmt->namelen;
2477 name = (char *)name_rmt->name; 2477 name = (char *)name_rmt->name;
2478 } 2478 }
@@ -2487,7 +2487,7 @@ xfs_attr_leaf_clearflag(xfs_da_args_t *args)
2487 2487
2488 if (args->rmtblkno) { 2488 if (args->rmtblkno) {
2489 ASSERT((entry->flags & XFS_ATTR_LOCAL) == 0); 2489 ASSERT((entry->flags & XFS_ATTR_LOCAL) == 0);
2490 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); 2490 name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);
2491 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); 2491 name_rmt->valueblk = cpu_to_be32(args->rmtblkno);
2492 name_rmt->valuelen = cpu_to_be32(args->valuelen); 2492 name_rmt->valuelen = cpu_to_be32(args->valuelen);
2493 xfs_da_log_buf(args->trans, bp, 2493 xfs_da_log_buf(args->trans, bp,
@@ -2534,7 +2534,7 @@ xfs_attr_leaf_setflag(xfs_da_args_t *args)
2534 xfs_da_log_buf(args->trans, bp, 2534 xfs_da_log_buf(args->trans, bp,
2535 XFS_DA_LOGRANGE(leaf, entry, sizeof(*entry))); 2535 XFS_DA_LOGRANGE(leaf, entry, sizeof(*entry)));
2536 if ((entry->flags & XFS_ATTR_LOCAL) == 0) { 2536 if ((entry->flags & XFS_ATTR_LOCAL) == 0) {
2537 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); 2537 name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);
2538 name_rmt->valueblk = 0; 2538 name_rmt->valueblk = 0;
2539 name_rmt->valuelen = 0; 2539 name_rmt->valuelen = 0;
2540 xfs_da_log_buf(args->trans, bp, 2540 xfs_da_log_buf(args->trans, bp,
@@ -2607,20 +2607,20 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *args)
2607 2607
2608#ifdef DEBUG 2608#ifdef DEBUG
2609 if (entry1->flags & XFS_ATTR_LOCAL) { 2609 if (entry1->flags & XFS_ATTR_LOCAL) {
2610 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf1, args->index); 2610 name_loc = xfs_attr_leaf_name_local(leaf1, args->index);
2611 namelen1 = name_loc->namelen; 2611 namelen1 = name_loc->namelen;
2612 name1 = (char *)name_loc->nameval; 2612 name1 = (char *)name_loc->nameval;
2613 } else { 2613 } else {
2614 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf1, args->index); 2614 name_rmt = xfs_attr_leaf_name_remote(leaf1, args->index);
2615 namelen1 = name_rmt->namelen; 2615 namelen1 = name_rmt->namelen;
2616 name1 = (char *)name_rmt->name; 2616 name1 = (char *)name_rmt->name;
2617 } 2617 }
2618 if (entry2->flags & XFS_ATTR_LOCAL) { 2618 if (entry2->flags & XFS_ATTR_LOCAL) {
2619 name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf2, args->index2); 2619 name_loc = xfs_attr_leaf_name_local(leaf2, args->index2);
2620 namelen2 = name_loc->namelen; 2620 namelen2 = name_loc->namelen;
2621 name2 = (char *)name_loc->nameval; 2621 name2 = (char *)name_loc->nameval;
2622 } else { 2622 } else {
2623 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf2, args->index2); 2623 name_rmt = xfs_attr_leaf_name_remote(leaf2, args->index2);
2624 namelen2 = name_rmt->namelen; 2624 namelen2 = name_rmt->namelen;
2625 name2 = (char *)name_rmt->name; 2625 name2 = (char *)name_rmt->name;
2626 } 2626 }
@@ -2637,7 +2637,7 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *args)
2637 XFS_DA_LOGRANGE(leaf1, entry1, sizeof(*entry1))); 2637 XFS_DA_LOGRANGE(leaf1, entry1, sizeof(*entry1)));
2638 if (args->rmtblkno) { 2638 if (args->rmtblkno) {
2639 ASSERT((entry1->flags & XFS_ATTR_LOCAL) == 0); 2639 ASSERT((entry1->flags & XFS_ATTR_LOCAL) == 0);
2640 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf1, args->index); 2640 name_rmt = xfs_attr_leaf_name_remote(leaf1, args->index);
2641 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); 2641 name_rmt->valueblk = cpu_to_be32(args->rmtblkno);
2642 name_rmt->valuelen = cpu_to_be32(args->valuelen); 2642 name_rmt->valuelen = cpu_to_be32(args->valuelen);
2643 xfs_da_log_buf(args->trans, bp1, 2643 xfs_da_log_buf(args->trans, bp1,
@@ -2648,7 +2648,7 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *args)
2648 xfs_da_log_buf(args->trans, bp2, 2648 xfs_da_log_buf(args->trans, bp2,
2649 XFS_DA_LOGRANGE(leaf2, entry2, sizeof(*entry2))); 2649 XFS_DA_LOGRANGE(leaf2, entry2, sizeof(*entry2)));
2650 if ((entry2->flags & XFS_ATTR_LOCAL) == 0) { 2650 if ((entry2->flags & XFS_ATTR_LOCAL) == 0) {
2651 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf2, args->index2); 2651 name_rmt = xfs_attr_leaf_name_remote(leaf2, args->index2);
2652 name_rmt->valueblk = 0; 2652 name_rmt->valueblk = 0;
2653 name_rmt->valuelen = 0; 2653 name_rmt->valuelen = 0;
2654 xfs_da_log_buf(args->trans, bp2, 2654 xfs_da_log_buf(args->trans, bp2,
@@ -2855,7 +2855,7 @@ xfs_attr_leaf_inactive(xfs_trans_t **trans, xfs_inode_t *dp, xfs_dabuf_t *bp)
2855 for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) { 2855 for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) {
2856 if (be16_to_cpu(entry->nameidx) && 2856 if (be16_to_cpu(entry->nameidx) &&
2857 ((entry->flags & XFS_ATTR_LOCAL) == 0)) { 2857 ((entry->flags & XFS_ATTR_LOCAL) == 0)) {
2858 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); 2858 name_rmt = xfs_attr_leaf_name_remote(leaf, i);
2859 if (name_rmt->valueblk) 2859 if (name_rmt->valueblk)
2860 count++; 2860 count++;
2861 } 2861 }
@@ -2883,7 +2883,7 @@ xfs_attr_leaf_inactive(xfs_trans_t **trans, xfs_inode_t *dp, xfs_dabuf_t *bp)
2883 for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) { 2883 for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) {
2884 if (be16_to_cpu(entry->nameidx) && 2884 if (be16_to_cpu(entry->nameidx) &&
2885 ((entry->flags & XFS_ATTR_LOCAL) == 0)) { 2885 ((entry->flags & XFS_ATTR_LOCAL) == 0)) {
2886 name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); 2886 name_rmt = xfs_attr_leaf_name_remote(leaf, i);
2887 if (name_rmt->valueblk) { 2887 if (name_rmt->valueblk) {
2888 lp->valueblk = be32_to_cpu(name_rmt->valueblk); 2888 lp->valueblk = be32_to_cpu(name_rmt->valueblk);
2889 lp->valuelen = XFS_B_TO_FSB(dp->i_mount, 2889 lp->valuelen = XFS_B_TO_FSB(dp->i_mount,
diff --git a/fs/xfs/xfs_attr_leaf.h b/fs/xfs/xfs_attr_leaf.h
index 83e9af417ca2..9c7d22fdcf4d 100644
--- a/fs/xfs/xfs_attr_leaf.h
+++ b/fs/xfs/xfs_attr_leaf.h
@@ -151,8 +151,6 @@ typedef struct xfs_attr_leafblock {
151/* 151/*
152 * Cast typed pointers for "local" and "remote" name/value structs. 152 * Cast typed pointers for "local" and "remote" name/value structs.
153 */ 153 */
154#define XFS_ATTR_LEAF_NAME_REMOTE(leafp,idx) \
155 xfs_attr_leaf_name_remote(leafp,idx)
156static inline xfs_attr_leaf_name_remote_t * 154static inline xfs_attr_leaf_name_remote_t *
157xfs_attr_leaf_name_remote(xfs_attr_leafblock_t *leafp, int idx) 155xfs_attr_leaf_name_remote(xfs_attr_leafblock_t *leafp, int idx)
158{ 156{
@@ -160,8 +158,6 @@ xfs_attr_leaf_name_remote(xfs_attr_leafblock_t *leafp, int idx)
160 &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)]; 158 &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)];
161} 159}
162 160
163#define XFS_ATTR_LEAF_NAME_LOCAL(leafp,idx) \
164 xfs_attr_leaf_name_local(leafp,idx)
165static inline xfs_attr_leaf_name_local_t * 161static inline xfs_attr_leaf_name_local_t *
166xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx) 162xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx)
167{ 163{
@@ -169,8 +165,6 @@ xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx)
169 &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)]; 165 &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)];
170} 166}
171 167
172#define XFS_ATTR_LEAF_NAME(leafp,idx) \
173 xfs_attr_leaf_name(leafp,idx)
174static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx) 168static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx)
175{ 169{
176 return &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)]; 170 return &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)];
@@ -181,24 +175,18 @@ static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx)
181 * a "local" name/value structure, a "remote" name/value structure, and 175 * a "local" name/value structure, a "remote" name/value structure, and
182 * a pointer which might be either. 176 * a pointer which might be either.
183 */ 177 */
184#define XFS_ATTR_LEAF_ENTSIZE_REMOTE(nlen) \
185 xfs_attr_leaf_entsize_remote(nlen)
186static inline int xfs_attr_leaf_entsize_remote(int nlen) 178static inline int xfs_attr_leaf_entsize_remote(int nlen)
187{ 179{
188 return ((uint)sizeof(xfs_attr_leaf_name_remote_t) - 1 + (nlen) + \ 180 return ((uint)sizeof(xfs_attr_leaf_name_remote_t) - 1 + (nlen) + \
189 XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1); 181 XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1);
190} 182}
191 183
192#define XFS_ATTR_LEAF_ENTSIZE_LOCAL(nlen,vlen) \
193 xfs_attr_leaf_entsize_local(nlen,vlen)
194static inline int xfs_attr_leaf_entsize_local(int nlen, int vlen) 184static inline int xfs_attr_leaf_entsize_local(int nlen, int vlen)
195{ 185{
196 return ((uint)sizeof(xfs_attr_leaf_name_local_t) - 1 + (nlen) + (vlen) + 186 return ((uint)sizeof(xfs_attr_leaf_name_local_t) - 1 + (nlen) + (vlen) +
197 XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1); 187 XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1);
198} 188}
199 189
200#define XFS_ATTR_LEAF_ENTSIZE_LOCAL_MAX(bsize) \
201 xfs_attr_leaf_entsize_local_max(bsize)
202static inline int xfs_attr_leaf_entsize_local_max(int bsize) 190static inline int xfs_attr_leaf_entsize_local_max(int bsize)
203{ 191{
204 return (((bsize) >> 1) + ((bsize) >> 2)); 192 return (((bsize) >> 1) + ((bsize) >> 2));
diff --git a/fs/xfs/xfs_bit.h b/fs/xfs/xfs_bit.h
index bca7b243c319..f1e3c907044d 100644
--- a/fs/xfs/xfs_bit.h
+++ b/fs/xfs/xfs_bit.h
@@ -23,24 +23,16 @@
23 */ 23 */
24 24
25/* 25/*
26 * masks with n high/low bits set, 32-bit values & 64-bit values 26 * masks with n high/low bits set, 64-bit values
27 */ 27 */
28#define XFS_MASK32HI(n) xfs_mask32hi(n)
29static inline __uint32_t xfs_mask32hi(int n)
30{
31 return (__uint32_t)-1 << (32 - (n));
32}
33#define XFS_MASK64HI(n) xfs_mask64hi(n)
34static inline __uint64_t xfs_mask64hi(int n) 28static inline __uint64_t xfs_mask64hi(int n)
35{ 29{
36 return (__uint64_t)-1 << (64 - (n)); 30 return (__uint64_t)-1 << (64 - (n));
37} 31}
38#define XFS_MASK32LO(n) xfs_mask32lo(n)
39static inline __uint32_t xfs_mask32lo(int n) 32static inline __uint32_t xfs_mask32lo(int n)
40{ 33{
41 return ((__uint32_t)1 << (n)) - 1; 34 return ((__uint32_t)1 << (n)) - 1;
42} 35}
43#define XFS_MASK64LO(n) xfs_mask64lo(n)
44static inline __uint64_t xfs_mask64lo(int n) 36static inline __uint64_t xfs_mask64lo(int n)
45{ 37{
46 return ((__uint64_t)1 << (n)) - 1; 38 return ((__uint64_t)1 << (n)) - 1;
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
index 138308e70d14..c852cd65aaea 100644
--- a/fs/xfs/xfs_bmap.c
+++ b/fs/xfs/xfs_bmap.c
@@ -595,9 +595,9 @@ xfs_bmap_add_extent(
595 xfs_iext_insert(ifp, 0, 1, new); 595 xfs_iext_insert(ifp, 0, 1, new);
596 ASSERT(cur == NULL); 596 ASSERT(cur == NULL);
597 ifp->if_lastex = 0; 597 ifp->if_lastex = 0;
598 if (!ISNULLSTARTBLOCK(new->br_startblock)) { 598 if (!isnullstartblock(new->br_startblock)) {
599 XFS_IFORK_NEXT_SET(ip, whichfork, 1); 599 XFS_IFORK_NEXT_SET(ip, whichfork, 1);
600 logflags = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); 600 logflags = XFS_ILOG_CORE | xfs_ilog_fext(whichfork);
601 } else 601 } else
602 logflags = 0; 602 logflags = 0;
603 /* DELTA: single new extent */ 603 /* DELTA: single new extent */
@@ -613,7 +613,7 @@ xfs_bmap_add_extent(
613 /* 613 /*
614 * Any kind of new delayed allocation goes here. 614 * Any kind of new delayed allocation goes here.
615 */ 615 */
616 else if (ISNULLSTARTBLOCK(new->br_startblock)) { 616 else if (isnullstartblock(new->br_startblock)) {
617 if (cur) 617 if (cur)
618 ASSERT((cur->bc_private.b.flags & 618 ASSERT((cur->bc_private.b.flags &
619 XFS_BTCUR_BPRV_WASDEL) == 0); 619 XFS_BTCUR_BPRV_WASDEL) == 0);
@@ -644,11 +644,11 @@ xfs_bmap_add_extent(
644 * in a delayed or unwritten allocation with a real one, or 644 * in a delayed or unwritten allocation with a real one, or
645 * converting real back to unwritten. 645 * converting real back to unwritten.
646 */ 646 */
647 if (!ISNULLSTARTBLOCK(new->br_startblock) && 647 if (!isnullstartblock(new->br_startblock) &&
648 new->br_startoff + new->br_blockcount > prev.br_startoff) { 648 new->br_startoff + new->br_blockcount > prev.br_startoff) {
649 if (prev.br_state != XFS_EXT_UNWRITTEN && 649 if (prev.br_state != XFS_EXT_UNWRITTEN &&
650 ISNULLSTARTBLOCK(prev.br_startblock)) { 650 isnullstartblock(prev.br_startblock)) {
651 da_old = STARTBLOCKVAL(prev.br_startblock); 651 da_old = startblockval(prev.br_startblock);
652 if (cur) 652 if (cur)
653 ASSERT(cur->bc_private.b.flags & 653 ASSERT(cur->bc_private.b.flags &
654 XFS_BTCUR_BPRV_WASDEL); 654 XFS_BTCUR_BPRV_WASDEL);
@@ -803,7 +803,7 @@ xfs_bmap_add_extent_delay_real(
803 */ 803 */
804 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { 804 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) {
805 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); 805 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT);
806 STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(LEFT.br_startblock)); 806 STATE_SET(LEFT_DELAY, isnullstartblock(LEFT.br_startblock));
807 } 807 }
808 STATE_SET(LEFT_CONTIG, 808 STATE_SET(LEFT_CONTIG,
809 STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && 809 STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) &&
@@ -820,7 +820,7 @@ xfs_bmap_add_extent_delay_real(
820 idx < 820 idx <
821 ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { 821 ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) {
822 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); 822 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT);
823 STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(RIGHT.br_startblock)); 823 STATE_SET(RIGHT_DELAY, isnullstartblock(RIGHT.br_startblock));
824 } 824 }
825 STATE_SET(RIGHT_CONTIG, 825 STATE_SET(RIGHT_CONTIG,
826 STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && 826 STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) &&
@@ -1019,8 +1019,8 @@ xfs_bmap_add_extent_delay_real(
1019 goto done; 1019 goto done;
1020 } 1020 }
1021 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), 1021 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
1022 STARTBLOCKVAL(PREV.br_startblock)); 1022 startblockval(PREV.br_startblock));
1023 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 1023 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
1024 XFS_BMAP_TRACE_POST_UPDATE("LF|LC", ip, idx, XFS_DATA_FORK); 1024 XFS_BMAP_TRACE_POST_UPDATE("LF|LC", ip, idx, XFS_DATA_FORK);
1025 *dnew = temp; 1025 *dnew = temp;
1026 /* DELTA: The boundary between two in-core extents moved. */ 1026 /* DELTA: The boundary between two in-core extents moved. */
@@ -1067,10 +1067,10 @@ xfs_bmap_add_extent_delay_real(
1067 goto done; 1067 goto done;
1068 } 1068 }
1069 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), 1069 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
1070 STARTBLOCKVAL(PREV.br_startblock) - 1070 startblockval(PREV.br_startblock) -
1071 (cur ? cur->bc_private.b.allocated : 0)); 1071 (cur ? cur->bc_private.b.allocated : 0));
1072 ep = xfs_iext_get_ext(ifp, idx + 1); 1072 ep = xfs_iext_get_ext(ifp, idx + 1);
1073 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 1073 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
1074 XFS_BMAP_TRACE_POST_UPDATE("LF", ip, idx + 1, XFS_DATA_FORK); 1074 XFS_BMAP_TRACE_POST_UPDATE("LF", ip, idx + 1, XFS_DATA_FORK);
1075 *dnew = temp; 1075 *dnew = temp;
1076 /* DELTA: One in-core extent is split in two. */ 1076 /* DELTA: One in-core extent is split in two. */
@@ -1110,8 +1110,8 @@ xfs_bmap_add_extent_delay_real(
1110 goto done; 1110 goto done;
1111 } 1111 }
1112 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), 1112 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
1113 STARTBLOCKVAL(PREV.br_startblock)); 1113 startblockval(PREV.br_startblock));
1114 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 1114 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
1115 XFS_BMAP_TRACE_POST_UPDATE("RF|RC", ip, idx, XFS_DATA_FORK); 1115 XFS_BMAP_TRACE_POST_UPDATE("RF|RC", ip, idx, XFS_DATA_FORK);
1116 *dnew = temp; 1116 *dnew = temp;
1117 /* DELTA: The boundary between two in-core extents moved. */ 1117 /* DELTA: The boundary between two in-core extents moved. */
@@ -1157,10 +1157,10 @@ xfs_bmap_add_extent_delay_real(
1157 goto done; 1157 goto done;
1158 } 1158 }
1159 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), 1159 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
1160 STARTBLOCKVAL(PREV.br_startblock) - 1160 startblockval(PREV.br_startblock) -
1161 (cur ? cur->bc_private.b.allocated : 0)); 1161 (cur ? cur->bc_private.b.allocated : 0));
1162 ep = xfs_iext_get_ext(ifp, idx); 1162 ep = xfs_iext_get_ext(ifp, idx);
1163 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 1163 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
1164 XFS_BMAP_TRACE_POST_UPDATE("RF", ip, idx, XFS_DATA_FORK); 1164 XFS_BMAP_TRACE_POST_UPDATE("RF", ip, idx, XFS_DATA_FORK);
1165 *dnew = temp; 1165 *dnew = temp;
1166 /* DELTA: One in-core extent is split in two. */ 1166 /* DELTA: One in-core extent is split in two. */
@@ -1213,7 +1213,7 @@ xfs_bmap_add_extent_delay_real(
1213 } 1213 }
1214 temp = xfs_bmap_worst_indlen(ip, temp); 1214 temp = xfs_bmap_worst_indlen(ip, temp);
1215 temp2 = xfs_bmap_worst_indlen(ip, temp2); 1215 temp2 = xfs_bmap_worst_indlen(ip, temp2);
1216 diff = (int)(temp + temp2 - STARTBLOCKVAL(PREV.br_startblock) - 1216 diff = (int)(temp + temp2 - startblockval(PREV.br_startblock) -
1217 (cur ? cur->bc_private.b.allocated : 0)); 1217 (cur ? cur->bc_private.b.allocated : 0));
1218 if (diff > 0 && 1218 if (diff > 0 &&
1219 xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) { 1219 xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) {
@@ -1241,11 +1241,11 @@ xfs_bmap_add_extent_delay_real(
1241 } 1241 }
1242 } 1242 }
1243 ep = xfs_iext_get_ext(ifp, idx); 1243 ep = xfs_iext_get_ext(ifp, idx);
1244 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 1244 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
1245 XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx, XFS_DATA_FORK); 1245 XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx, XFS_DATA_FORK);
1246 XFS_BMAP_TRACE_PRE_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); 1246 XFS_BMAP_TRACE_PRE_UPDATE("0", ip, idx + 2, XFS_DATA_FORK);
1247 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx + 2), 1247 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx + 2),
1248 NULLSTARTBLOCK((int)temp2)); 1248 nullstartblock((int)temp2));
1249 XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); 1249 XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx + 2, XFS_DATA_FORK);
1250 *dnew = temp + temp2; 1250 *dnew = temp + temp2;
1251 /* DELTA: One in-core extent is split in three. */ 1251 /* DELTA: One in-core extent is split in three. */
@@ -1365,7 +1365,7 @@ xfs_bmap_add_extent_unwritten_real(
1365 */ 1365 */
1366 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { 1366 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) {
1367 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); 1367 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT);
1368 STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(LEFT.br_startblock)); 1368 STATE_SET(LEFT_DELAY, isnullstartblock(LEFT.br_startblock));
1369 } 1369 }
1370 STATE_SET(LEFT_CONTIG, 1370 STATE_SET(LEFT_CONTIG,
1371 STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && 1371 STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) &&
@@ -1382,7 +1382,7 @@ xfs_bmap_add_extent_unwritten_real(
1382 idx < 1382 idx <
1383 ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { 1383 ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) {
1384 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); 1384 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT);
1385 STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(RIGHT.br_startblock)); 1385 STATE_SET(RIGHT_DELAY, isnullstartblock(RIGHT.br_startblock));
1386 } 1386 }
1387 STATE_SET(RIGHT_CONTIG, 1387 STATE_SET(RIGHT_CONTIG,
1388 STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && 1388 STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) &&
@@ -1889,13 +1889,13 @@ xfs_bmap_add_extent_hole_delay(
1889 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); 1889 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
1890 ep = xfs_iext_get_ext(ifp, idx); 1890 ep = xfs_iext_get_ext(ifp, idx);
1891 state = 0; 1891 state = 0;
1892 ASSERT(ISNULLSTARTBLOCK(new->br_startblock)); 1892 ASSERT(isnullstartblock(new->br_startblock));
1893 /* 1893 /*
1894 * Check and set flags if this segment has a left neighbor 1894 * Check and set flags if this segment has a left neighbor
1895 */ 1895 */
1896 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { 1896 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) {
1897 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); 1897 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left);
1898 STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(left.br_startblock)); 1898 STATE_SET(LEFT_DELAY, isnullstartblock(left.br_startblock));
1899 } 1899 }
1900 /* 1900 /*
1901 * Check and set flags if the current (right) segment exists. 1901 * Check and set flags if the current (right) segment exists.
@@ -1905,7 +1905,7 @@ xfs_bmap_add_extent_hole_delay(
1905 idx < 1905 idx <
1906 ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { 1906 ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) {
1907 xfs_bmbt_get_all(ep, &right); 1907 xfs_bmbt_get_all(ep, &right);
1908 STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(right.br_startblock)); 1908 STATE_SET(RIGHT_DELAY, isnullstartblock(right.br_startblock));
1909 } 1909 }
1910 /* 1910 /*
1911 * Set contiguity flags on the left and right neighbors. 1911 * Set contiguity flags on the left and right neighbors.
@@ -1938,12 +1938,12 @@ xfs_bmap_add_extent_hole_delay(
1938 XFS_BMAP_TRACE_PRE_UPDATE("LC|RC", ip, idx - 1, 1938 XFS_BMAP_TRACE_PRE_UPDATE("LC|RC", ip, idx - 1,
1939 XFS_DATA_FORK); 1939 XFS_DATA_FORK);
1940 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); 1940 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp);
1941 oldlen = STARTBLOCKVAL(left.br_startblock) + 1941 oldlen = startblockval(left.br_startblock) +
1942 STARTBLOCKVAL(new->br_startblock) + 1942 startblockval(new->br_startblock) +
1943 STARTBLOCKVAL(right.br_startblock); 1943 startblockval(right.br_startblock);
1944 newlen = xfs_bmap_worst_indlen(ip, temp); 1944 newlen = xfs_bmap_worst_indlen(ip, temp);
1945 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), 1945 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1),
1946 NULLSTARTBLOCK((int)newlen)); 1946 nullstartblock((int)newlen));
1947 XFS_BMAP_TRACE_POST_UPDATE("LC|RC", ip, idx - 1, 1947 XFS_BMAP_TRACE_POST_UPDATE("LC|RC", ip, idx - 1,
1948 XFS_DATA_FORK); 1948 XFS_DATA_FORK);
1949 XFS_BMAP_TRACE_DELETE("LC|RC", ip, idx, 1, XFS_DATA_FORK); 1949 XFS_BMAP_TRACE_DELETE("LC|RC", ip, idx, 1, XFS_DATA_FORK);
@@ -1964,11 +1964,11 @@ xfs_bmap_add_extent_hole_delay(
1964 XFS_BMAP_TRACE_PRE_UPDATE("LC", ip, idx - 1, 1964 XFS_BMAP_TRACE_PRE_UPDATE("LC", ip, idx - 1,
1965 XFS_DATA_FORK); 1965 XFS_DATA_FORK);
1966 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); 1966 xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp);
1967 oldlen = STARTBLOCKVAL(left.br_startblock) + 1967 oldlen = startblockval(left.br_startblock) +
1968 STARTBLOCKVAL(new->br_startblock); 1968 startblockval(new->br_startblock);
1969 newlen = xfs_bmap_worst_indlen(ip, temp); 1969 newlen = xfs_bmap_worst_indlen(ip, temp);
1970 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), 1970 xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1),
1971 NULLSTARTBLOCK((int)newlen)); 1971 nullstartblock((int)newlen));
1972 XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, 1972 XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1,
1973 XFS_DATA_FORK); 1973 XFS_DATA_FORK);
1974 ip->i_df.if_lastex = idx - 1; 1974 ip->i_df.if_lastex = idx - 1;
@@ -1985,11 +1985,11 @@ xfs_bmap_add_extent_hole_delay(
1985 */ 1985 */
1986 XFS_BMAP_TRACE_PRE_UPDATE("RC", ip, idx, XFS_DATA_FORK); 1986 XFS_BMAP_TRACE_PRE_UPDATE("RC", ip, idx, XFS_DATA_FORK);
1987 temp = new->br_blockcount + right.br_blockcount; 1987 temp = new->br_blockcount + right.br_blockcount;
1988 oldlen = STARTBLOCKVAL(new->br_startblock) + 1988 oldlen = startblockval(new->br_startblock) +
1989 STARTBLOCKVAL(right.br_startblock); 1989 startblockval(right.br_startblock);
1990 newlen = xfs_bmap_worst_indlen(ip, temp); 1990 newlen = xfs_bmap_worst_indlen(ip, temp);
1991 xfs_bmbt_set_allf(ep, new->br_startoff, 1991 xfs_bmbt_set_allf(ep, new->br_startoff,
1992 NULLSTARTBLOCK((int)newlen), temp, right.br_state); 1992 nullstartblock((int)newlen), temp, right.br_state);
1993 XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, XFS_DATA_FORK); 1993 XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, XFS_DATA_FORK);
1994 ip->i_df.if_lastex = idx; 1994 ip->i_df.if_lastex = idx;
1995 /* DELTA: One in-core extent grew into a hole. */ 1995 /* DELTA: One in-core extent grew into a hole. */
@@ -2085,7 +2085,7 @@ xfs_bmap_add_extent_hole_real(
2085 */ 2085 */
2086 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { 2086 if (STATE_SET_TEST(LEFT_VALID, idx > 0)) {
2087 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); 2087 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left);
2088 STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(left.br_startblock)); 2088 STATE_SET(LEFT_DELAY, isnullstartblock(left.br_startblock));
2089 } 2089 }
2090 /* 2090 /*
2091 * Check and set flags if this segment has a current value. 2091 * Check and set flags if this segment has a current value.
@@ -2095,7 +2095,7 @@ xfs_bmap_add_extent_hole_real(
2095 idx < 2095 idx <
2096 ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { 2096 ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) {
2097 xfs_bmbt_get_all(ep, &right); 2097 xfs_bmbt_get_all(ep, &right);
2098 STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(right.br_startblock)); 2098 STATE_SET(RIGHT_DELAY, isnullstartblock(right.br_startblock));
2099 } 2099 }
2100 /* 2100 /*
2101 * We're inserting a real allocation between "left" and "right". 2101 * We're inserting a real allocation between "left" and "right".
@@ -2143,7 +2143,7 @@ xfs_bmap_add_extent_hole_real(
2143 XFS_IFORK_NEXT_SET(ip, whichfork, 2143 XFS_IFORK_NEXT_SET(ip, whichfork,
2144 XFS_IFORK_NEXTENTS(ip, whichfork) - 1); 2144 XFS_IFORK_NEXTENTS(ip, whichfork) - 1);
2145 if (cur == NULL) { 2145 if (cur == NULL) {
2146 rval = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); 2146 rval = XFS_ILOG_CORE | xfs_ilog_fext(whichfork);
2147 } else { 2147 } else {
2148 rval = XFS_ILOG_CORE; 2148 rval = XFS_ILOG_CORE;
2149 if ((error = xfs_bmbt_lookup_eq(cur, 2149 if ((error = xfs_bmbt_lookup_eq(cur,
@@ -2185,7 +2185,7 @@ xfs_bmap_add_extent_hole_real(
2185 XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, whichfork); 2185 XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, whichfork);
2186 ifp->if_lastex = idx - 1; 2186 ifp->if_lastex = idx - 1;
2187 if (cur == NULL) { 2187 if (cur == NULL) {
2188 rval = XFS_ILOG_FEXT(whichfork); 2188 rval = xfs_ilog_fext(whichfork);
2189 } else { 2189 } else {
2190 rval = 0; 2190 rval = 0;
2191 if ((error = xfs_bmbt_lookup_eq(cur, 2191 if ((error = xfs_bmbt_lookup_eq(cur,
@@ -2220,7 +2220,7 @@ xfs_bmap_add_extent_hole_real(
2220 XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, whichfork); 2220 XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, whichfork);
2221 ifp->if_lastex = idx; 2221 ifp->if_lastex = idx;
2222 if (cur == NULL) { 2222 if (cur == NULL) {
2223 rval = XFS_ILOG_FEXT(whichfork); 2223 rval = xfs_ilog_fext(whichfork);
2224 } else { 2224 } else {
2225 rval = 0; 2225 rval = 0;
2226 if ((error = xfs_bmbt_lookup_eq(cur, 2226 if ((error = xfs_bmbt_lookup_eq(cur,
@@ -2254,7 +2254,7 @@ xfs_bmap_add_extent_hole_real(
2254 XFS_IFORK_NEXT_SET(ip, whichfork, 2254 XFS_IFORK_NEXT_SET(ip, whichfork,
2255 XFS_IFORK_NEXTENTS(ip, whichfork) + 1); 2255 XFS_IFORK_NEXTENTS(ip, whichfork) + 1);
2256 if (cur == NULL) { 2256 if (cur == NULL) {
2257 rval = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); 2257 rval = XFS_ILOG_CORE | xfs_ilog_fext(whichfork);
2258 } else { 2258 } else {
2259 rval = XFS_ILOG_CORE; 2259 rval = XFS_ILOG_CORE;
2260 if ((error = xfs_bmbt_lookup_eq(cur, 2260 if ((error = xfs_bmbt_lookup_eq(cur,
@@ -2482,7 +2482,7 @@ xfs_bmap_adjacent(
2482 * try to use it's last block as our starting point. 2482 * try to use it's last block as our starting point.
2483 */ 2483 */
2484 if (ap->eof && ap->prevp->br_startoff != NULLFILEOFF && 2484 if (ap->eof && ap->prevp->br_startoff != NULLFILEOFF &&
2485 !ISNULLSTARTBLOCK(ap->prevp->br_startblock) && 2485 !isnullstartblock(ap->prevp->br_startblock) &&
2486 ISVALID(ap->prevp->br_startblock + ap->prevp->br_blockcount, 2486 ISVALID(ap->prevp->br_startblock + ap->prevp->br_blockcount,
2487 ap->prevp->br_startblock)) { 2487 ap->prevp->br_startblock)) {
2488 ap->rval = ap->prevp->br_startblock + ap->prevp->br_blockcount; 2488 ap->rval = ap->prevp->br_startblock + ap->prevp->br_blockcount;
@@ -2511,7 +2511,7 @@ xfs_bmap_adjacent(
2511 * start block based on it. 2511 * start block based on it.
2512 */ 2512 */
2513 if (ap->prevp->br_startoff != NULLFILEOFF && 2513 if (ap->prevp->br_startoff != NULLFILEOFF &&
2514 !ISNULLSTARTBLOCK(ap->prevp->br_startblock) && 2514 !isnullstartblock(ap->prevp->br_startblock) &&
2515 (prevbno = ap->prevp->br_startblock + 2515 (prevbno = ap->prevp->br_startblock +
2516 ap->prevp->br_blockcount) && 2516 ap->prevp->br_blockcount) &&
2517 ISVALID(prevbno, ap->prevp->br_startblock)) { 2517 ISVALID(prevbno, ap->prevp->br_startblock)) {
@@ -2552,7 +2552,7 @@ xfs_bmap_adjacent(
2552 * If there's a following (right) block, select a requested 2552 * If there's a following (right) block, select a requested
2553 * start block based on it. 2553 * start block based on it.
2554 */ 2554 */
2555 if (!ISNULLSTARTBLOCK(ap->gotp->br_startblock)) { 2555 if (!isnullstartblock(ap->gotp->br_startblock)) {
2556 /* 2556 /*
2557 * Calculate gap to start of next block. 2557 * Calculate gap to start of next block.
2558 */ 2558 */
@@ -3082,7 +3082,7 @@ xfs_bmap_btree_to_extents(
3082 ASSERT(ifp->if_broot == NULL); 3082 ASSERT(ifp->if_broot == NULL);
3083 ASSERT((ifp->if_flags & XFS_IFBROOT) == 0); 3083 ASSERT((ifp->if_flags & XFS_IFBROOT) == 0);
3084 XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_EXTENTS); 3084 XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_EXTENTS);
3085 *logflagsp = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); 3085 *logflagsp = XFS_ILOG_CORE | xfs_ilog_fext(whichfork);
3086 return 0; 3086 return 0;
3087} 3087}
3088 3088
@@ -3136,8 +3136,8 @@ xfs_bmap_del_extent(
3136 del_endoff = del->br_startoff + del->br_blockcount; 3136 del_endoff = del->br_startoff + del->br_blockcount;
3137 got_endoff = got.br_startoff + got.br_blockcount; 3137 got_endoff = got.br_startoff + got.br_blockcount;
3138 ASSERT(got_endoff >= del_endoff); 3138 ASSERT(got_endoff >= del_endoff);
3139 delay = ISNULLSTARTBLOCK(got.br_startblock); 3139 delay = isnullstartblock(got.br_startblock);
3140 ASSERT(ISNULLSTARTBLOCK(del->br_startblock) == delay); 3140 ASSERT(isnullstartblock(del->br_startblock) == delay);
3141 flags = 0; 3141 flags = 0;
3142 qfield = 0; 3142 qfield = 0;
3143 error = 0; 3143 error = 0;
@@ -3189,7 +3189,7 @@ xfs_bmap_del_extent(
3189 } 3189 }
3190 da_old = da_new = 0; 3190 da_old = da_new = 0;
3191 } else { 3191 } else {
3192 da_old = STARTBLOCKVAL(got.br_startblock); 3192 da_old = startblockval(got.br_startblock);
3193 da_new = 0; 3193 da_new = 0;
3194 nblks = 0; 3194 nblks = 0;
3195 do_fx = 0; 3195 do_fx = 0;
@@ -3213,7 +3213,7 @@ xfs_bmap_del_extent(
3213 XFS_IFORK_NEXTENTS(ip, whichfork) - 1); 3213 XFS_IFORK_NEXTENTS(ip, whichfork) - 1);
3214 flags |= XFS_ILOG_CORE; 3214 flags |= XFS_ILOG_CORE;
3215 if (!cur) { 3215 if (!cur) {
3216 flags |= XFS_ILOG_FEXT(whichfork); 3216 flags |= xfs_ilog_fext(whichfork);
3217 break; 3217 break;
3218 } 3218 }
3219 if ((error = xfs_btree_delete(cur, &i))) 3219 if ((error = xfs_btree_delete(cur, &i)))
@@ -3233,7 +3233,7 @@ xfs_bmap_del_extent(
3233 if (delay) { 3233 if (delay) {
3234 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), 3234 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
3235 da_old); 3235 da_old);
3236 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 3236 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
3237 XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, 3237 XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx,
3238 whichfork); 3238 whichfork);
3239 da_new = temp; 3239 da_new = temp;
@@ -3242,7 +3242,7 @@ xfs_bmap_del_extent(
3242 xfs_bmbt_set_startblock(ep, del_endblock); 3242 xfs_bmbt_set_startblock(ep, del_endblock);
3243 XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, whichfork); 3243 XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, whichfork);
3244 if (!cur) { 3244 if (!cur) {
3245 flags |= XFS_ILOG_FEXT(whichfork); 3245 flags |= xfs_ilog_fext(whichfork);
3246 break; 3246 break;
3247 } 3247 }
3248 if ((error = xfs_bmbt_update(cur, del_endoff, del_endblock, 3248 if ((error = xfs_bmbt_update(cur, del_endoff, del_endblock,
@@ -3262,7 +3262,7 @@ xfs_bmap_del_extent(
3262 if (delay) { 3262 if (delay) {
3263 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), 3263 temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
3264 da_old); 3264 da_old);
3265 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 3265 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
3266 XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, 3266 XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx,
3267 whichfork); 3267 whichfork);
3268 da_new = temp; 3268 da_new = temp;
@@ -3270,7 +3270,7 @@ xfs_bmap_del_extent(
3270 } 3270 }
3271 XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, whichfork); 3271 XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, whichfork);
3272 if (!cur) { 3272 if (!cur) {
3273 flags |= XFS_ILOG_FEXT(whichfork); 3273 flags |= xfs_ilog_fext(whichfork);
3274 break; 3274 break;
3275 } 3275 }
3276 if ((error = xfs_bmbt_update(cur, got.br_startoff, 3276 if ((error = xfs_bmbt_update(cur, got.br_startoff,
@@ -3345,22 +3345,22 @@ xfs_bmap_del_extent(
3345 } 3345 }
3346 XFS_WANT_CORRUPTED_GOTO(i == 1, done); 3346 XFS_WANT_CORRUPTED_GOTO(i == 1, done);
3347 } else 3347 } else
3348 flags |= XFS_ILOG_FEXT(whichfork); 3348 flags |= xfs_ilog_fext(whichfork);
3349 XFS_IFORK_NEXT_SET(ip, whichfork, 3349 XFS_IFORK_NEXT_SET(ip, whichfork,
3350 XFS_IFORK_NEXTENTS(ip, whichfork) + 1); 3350 XFS_IFORK_NEXTENTS(ip, whichfork) + 1);
3351 } else { 3351 } else {
3352 ASSERT(whichfork == XFS_DATA_FORK); 3352 ASSERT(whichfork == XFS_DATA_FORK);
3353 temp = xfs_bmap_worst_indlen(ip, temp); 3353 temp = xfs_bmap_worst_indlen(ip, temp);
3354 xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); 3354 xfs_bmbt_set_startblock(ep, nullstartblock((int)temp));
3355 temp2 = xfs_bmap_worst_indlen(ip, temp2); 3355 temp2 = xfs_bmap_worst_indlen(ip, temp2);
3356 new.br_startblock = NULLSTARTBLOCK((int)temp2); 3356 new.br_startblock = nullstartblock((int)temp2);
3357 da_new = temp + temp2; 3357 da_new = temp + temp2;
3358 while (da_new > da_old) { 3358 while (da_new > da_old) {
3359 if (temp) { 3359 if (temp) {
3360 temp--; 3360 temp--;
3361 da_new--; 3361 da_new--;
3362 xfs_bmbt_set_startblock(ep, 3362 xfs_bmbt_set_startblock(ep,
3363 NULLSTARTBLOCK((int)temp)); 3363 nullstartblock((int)temp));
3364 } 3364 }
3365 if (da_new == da_old) 3365 if (da_new == da_old)
3366 break; 3366 break;
@@ -3368,7 +3368,7 @@ xfs_bmap_del_extent(
3368 temp2--; 3368 temp2--;
3369 da_new--; 3369 da_new--;
3370 new.br_startblock = 3370 new.br_startblock =
3371 NULLSTARTBLOCK((int)temp2); 3371 nullstartblock((int)temp2);
3372 } 3372 }
3373 } 3373 }
3374 } 3374 }
@@ -3545,7 +3545,7 @@ xfs_bmap_extents_to_btree(
3545 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); 3545 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t);
3546 for (cnt = i = 0; i < nextents; i++) { 3546 for (cnt = i = 0; i < nextents; i++) {
3547 ep = xfs_iext_get_ext(ifp, i); 3547 ep = xfs_iext_get_ext(ifp, i);
3548 if (!ISNULLSTARTBLOCK(xfs_bmbt_get_startblock(ep))) { 3548 if (!isnullstartblock(xfs_bmbt_get_startblock(ep))) {
3549 arp->l0 = cpu_to_be64(ep->l0); 3549 arp->l0 = cpu_to_be64(ep->l0);
3550 arp->l1 = cpu_to_be64(ep->l1); 3550 arp->l1 = cpu_to_be64(ep->l1);
3551 arp++; cnt++; 3551 arp++; cnt++;
@@ -3572,7 +3572,7 @@ xfs_bmap_extents_to_btree(
3572 xfs_btree_log_recs(cur, abp, 1, be16_to_cpu(ablock->bb_numrecs)); 3572 xfs_btree_log_recs(cur, abp, 1, be16_to_cpu(ablock->bb_numrecs));
3573 ASSERT(*curp == NULL); 3573 ASSERT(*curp == NULL);
3574 *curp = cur; 3574 *curp = cur;
3575 *logflagsp = XFS_ILOG_CORE | XFS_ILOG_FBROOT(whichfork); 3575 *logflagsp = XFS_ILOG_CORE | xfs_ilog_fbroot(whichfork);
3576 return 0; 3576 return 0;
3577} 3577}
3578 3578
@@ -3676,7 +3676,7 @@ xfs_bmap_local_to_extents(
3676 ip->i_d.di_nblocks = 1; 3676 ip->i_d.di_nblocks = 1;
3677 XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip, 3677 XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip,
3678 XFS_TRANS_DQ_BCOUNT, 1L); 3678 XFS_TRANS_DQ_BCOUNT, 1L);
3679 flags |= XFS_ILOG_FEXT(whichfork); 3679 flags |= xfs_ilog_fext(whichfork);
3680 } else { 3680 } else {
3681 ASSERT(XFS_IFORK_NEXTENTS(ip, whichfork) == 0); 3681 ASSERT(XFS_IFORK_NEXTENTS(ip, whichfork) == 0);
3682 xfs_bmap_forkoff_reset(ip->i_mount, ip, whichfork); 3682 xfs_bmap_forkoff_reset(ip->i_mount, ip, whichfork);
@@ -4082,7 +4082,7 @@ xfs_bmap_add_attrfork(
4082 XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); 4082 XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t);
4083 ip->i_afp->if_flags = XFS_IFEXTENTS; 4083 ip->i_afp->if_flags = XFS_IFEXTENTS;
4084 logflags = 0; 4084 logflags = 0;
4085 XFS_BMAP_INIT(&flist, &firstblock); 4085 xfs_bmap_init(&flist, &firstblock);
4086 switch (ip->i_d.di_format) { 4086 switch (ip->i_d.di_format) {
4087 case XFS_DINODE_FMT_LOCAL: 4087 case XFS_DINODE_FMT_LOCAL:
4088 error = xfs_bmap_add_attrfork_local(tp, ip, &firstblock, &flist, 4088 error = xfs_bmap_add_attrfork_local(tp, ip, &firstblock, &flist,
@@ -4162,7 +4162,7 @@ xfs_bmap_add_free(
4162 ASSERT(bno != NULLFSBLOCK); 4162 ASSERT(bno != NULLFSBLOCK);
4163 ASSERT(len > 0); 4163 ASSERT(len > 0);
4164 ASSERT(len <= MAXEXTLEN); 4164 ASSERT(len <= MAXEXTLEN);
4165 ASSERT(!ISNULLSTARTBLOCK(bno)); 4165 ASSERT(!isnullstartblock(bno));
4166 agno = XFS_FSB_TO_AGNO(mp, bno); 4166 agno = XFS_FSB_TO_AGNO(mp, bno);
4167 agbno = XFS_FSB_TO_AGBNO(mp, bno); 4167 agbno = XFS_FSB_TO_AGBNO(mp, bno);
4168 ASSERT(agno < mp->m_sb.sb_agcount); 4168 ASSERT(agno < mp->m_sb.sb_agcount);
@@ -4909,7 +4909,7 @@ xfs_bmapi(
4909 got.br_startoff = end; 4909 got.br_startoff = end;
4910 inhole = eof || got.br_startoff > bno; 4910 inhole = eof || got.br_startoff > bno;
4911 wasdelay = wr && !inhole && !(flags & XFS_BMAPI_DELAY) && 4911 wasdelay = wr && !inhole && !(flags & XFS_BMAPI_DELAY) &&
4912 ISNULLSTARTBLOCK(got.br_startblock); 4912 isnullstartblock(got.br_startblock);
4913 /* 4913 /*
4914 * First, deal with the hole before the allocated space 4914 * First, deal with the hole before the allocated space
4915 * that we found, if any. 4915 * that we found, if any.
@@ -5028,7 +5028,7 @@ xfs_bmapi(
5028 } 5028 }
5029 5029
5030 ip->i_delayed_blks += alen; 5030 ip->i_delayed_blks += alen;
5031 abno = NULLSTARTBLOCK(indlen); 5031 abno = nullstartblock(indlen);
5032 } else { 5032 } else {
5033 /* 5033 /*
5034 * If first time, allocate and fill in 5034 * If first time, allocate and fill in
@@ -5144,8 +5144,8 @@ xfs_bmapi(
5144 aoff + alen); 5144 aoff + alen);
5145#ifdef DEBUG 5145#ifdef DEBUG
5146 if (flags & XFS_BMAPI_DELAY) { 5146 if (flags & XFS_BMAPI_DELAY) {
5147 ASSERT(ISNULLSTARTBLOCK(got.br_startblock)); 5147 ASSERT(isnullstartblock(got.br_startblock));
5148 ASSERT(STARTBLOCKVAL(got.br_startblock) > 0); 5148 ASSERT(startblockval(got.br_startblock) > 0);
5149 } 5149 }
5150 ASSERT(got.br_state == XFS_EXT_NORM || 5150 ASSERT(got.br_state == XFS_EXT_NORM ||
5151 got.br_state == XFS_EXT_UNWRITTEN); 5151 got.br_state == XFS_EXT_UNWRITTEN);
@@ -5179,7 +5179,7 @@ xfs_bmapi(
5179 ASSERT((bno >= obno) || (n == 0)); 5179 ASSERT((bno >= obno) || (n == 0));
5180 ASSERT(bno < end); 5180 ASSERT(bno < end);
5181 mval->br_startoff = bno; 5181 mval->br_startoff = bno;
5182 if (ISNULLSTARTBLOCK(got.br_startblock)) { 5182 if (isnullstartblock(got.br_startblock)) {
5183 ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); 5183 ASSERT(!wr || (flags & XFS_BMAPI_DELAY));
5184 mval->br_startblock = DELAYSTARTBLOCK; 5184 mval->br_startblock = DELAYSTARTBLOCK;
5185 } else 5185 } else
@@ -5201,7 +5201,7 @@ xfs_bmapi(
5201 ASSERT(mval->br_blockcount <= len); 5201 ASSERT(mval->br_blockcount <= len);
5202 } else { 5202 } else {
5203 *mval = got; 5203 *mval = got;
5204 if (ISNULLSTARTBLOCK(mval->br_startblock)) { 5204 if (isnullstartblock(mval->br_startblock)) {
5205 ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); 5205 ASSERT(!wr || (flags & XFS_BMAPI_DELAY));
5206 mval->br_startblock = DELAYSTARTBLOCK; 5206 mval->br_startblock = DELAYSTARTBLOCK;
5207 } 5207 }
@@ -5329,12 +5329,12 @@ error0:
5329 * Log everything. Do this after conversion, there's no point in 5329 * Log everything. Do this after conversion, there's no point in
5330 * logging the extent records if we've converted to btree format. 5330 * logging the extent records if we've converted to btree format.
5331 */ 5331 */
5332 if ((logflags & XFS_ILOG_FEXT(whichfork)) && 5332 if ((logflags & xfs_ilog_fext(whichfork)) &&
5333 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) 5333 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS)
5334 logflags &= ~XFS_ILOG_FEXT(whichfork); 5334 logflags &= ~xfs_ilog_fext(whichfork);
5335 else if ((logflags & XFS_ILOG_FBROOT(whichfork)) && 5335 else if ((logflags & xfs_ilog_fbroot(whichfork)) &&
5336 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) 5336 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE)
5337 logflags &= ~XFS_ILOG_FBROOT(whichfork); 5337 logflags &= ~xfs_ilog_fbroot(whichfork);
5338 /* 5338 /*
5339 * Log whatever the flags say, even if error. Otherwise we might miss 5339 * Log whatever the flags say, even if error. Otherwise we might miss
5340 * detecting a case where the data is changed, there's an error, 5340 * detecting a case where the data is changed, there's an error,
@@ -5411,7 +5411,7 @@ xfs_bmapi_single(
5411 *fsb = NULLFSBLOCK; 5411 *fsb = NULLFSBLOCK;
5412 return 0; 5412 return 0;
5413 } 5413 }
5414 ASSERT(!ISNULLSTARTBLOCK(got.br_startblock)); 5414 ASSERT(!isnullstartblock(got.br_startblock));
5415 ASSERT(bno < got.br_startoff + got.br_blockcount); 5415 ASSERT(bno < got.br_startoff + got.br_blockcount);
5416 *fsb = got.br_startblock + (bno - got.br_startoff); 5416 *fsb = got.br_startblock + (bno - got.br_startoff);
5417 ifp->if_lastex = lastx; 5417 ifp->if_lastex = lastx;
@@ -5543,7 +5543,7 @@ xfs_bunmapi(
5543 */ 5543 */
5544 ASSERT(ep != NULL); 5544 ASSERT(ep != NULL);
5545 del = got; 5545 del = got;
5546 wasdel = ISNULLSTARTBLOCK(del.br_startblock); 5546 wasdel = isnullstartblock(del.br_startblock);
5547 if (got.br_startoff < start) { 5547 if (got.br_startoff < start) {
5548 del.br_startoff = start; 5548 del.br_startoff = start;
5549 del.br_blockcount -= start - got.br_startoff; 5549 del.br_blockcount -= start - got.br_startoff;
@@ -5638,7 +5638,7 @@ xfs_bunmapi(
5638 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, 5638 xfs_bmbt_get_all(xfs_iext_get_ext(ifp,
5639 lastx - 1), &prev); 5639 lastx - 1), &prev);
5640 ASSERT(prev.br_state == XFS_EXT_NORM); 5640 ASSERT(prev.br_state == XFS_EXT_NORM);
5641 ASSERT(!ISNULLSTARTBLOCK(prev.br_startblock)); 5641 ASSERT(!isnullstartblock(prev.br_startblock));
5642 ASSERT(del.br_startblock == 5642 ASSERT(del.br_startblock ==
5643 prev.br_startblock + prev.br_blockcount); 5643 prev.br_startblock + prev.br_blockcount);
5644 if (prev.br_startoff < start) { 5644 if (prev.br_startoff < start) {
@@ -5666,7 +5666,7 @@ xfs_bunmapi(
5666 } 5666 }
5667 } 5667 }
5668 if (wasdel) { 5668 if (wasdel) {
5669 ASSERT(STARTBLOCKVAL(del.br_startblock) > 0); 5669 ASSERT(startblockval(del.br_startblock) > 0);
5670 /* Update realtime/data freespace, unreserve quota */ 5670 /* Update realtime/data freespace, unreserve quota */
5671 if (isrt) { 5671 if (isrt) {
5672 xfs_filblks_t rtexts; 5672 xfs_filblks_t rtexts;
@@ -5782,12 +5782,12 @@ error0:
5782 * Log everything. Do this after conversion, there's no point in 5782 * Log everything. Do this after conversion, there's no point in
5783 * logging the extent records if we've converted to btree format. 5783 * logging the extent records if we've converted to btree format.
5784 */ 5784 */
5785 if ((logflags & XFS_ILOG_FEXT(whichfork)) && 5785 if ((logflags & xfs_ilog_fext(whichfork)) &&
5786 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) 5786 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS)
5787 logflags &= ~XFS_ILOG_FEXT(whichfork); 5787 logflags &= ~xfs_ilog_fext(whichfork);
5788 else if ((logflags & XFS_ILOG_FBROOT(whichfork)) && 5788 else if ((logflags & xfs_ilog_fbroot(whichfork)) &&
5789 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) 5789 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE)
5790 logflags &= ~XFS_ILOG_FBROOT(whichfork); 5790 logflags &= ~xfs_ilog_fbroot(whichfork);
5791 /* 5791 /*
5792 * Log inode even in the error case, if the transaction 5792 * Log inode even in the error case, if the transaction
5793 * is dirty we'll need to shut down the filesystem. 5793 * is dirty we'll need to shut down the filesystem.
@@ -5838,7 +5838,7 @@ xfs_getbmapx_fix_eof_hole(
5838 if (startblock == DELAYSTARTBLOCK) 5838 if (startblock == DELAYSTARTBLOCK)
5839 out->bmv_block = -2; 5839 out->bmv_block = -2;
5840 else 5840 else
5841 out->bmv_block = XFS_FSB_TO_DB(ip, startblock); 5841 out->bmv_block = xfs_fsb_to_db(ip, startblock);
5842 fileblock = XFS_BB_TO_FSB(ip->i_mount, out->bmv_offset); 5842 fileblock = XFS_BB_TO_FSB(ip->i_mount, out->bmv_offset);
5843 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); 5843 ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
5844 if (xfs_iext_bno_to_ext(ifp, fileblock, &lastx) && 5844 if (xfs_iext_bno_to_ext(ifp, fileblock, &lastx) &&
@@ -5979,7 +5979,7 @@ xfs_getbmap(
5979 if (nex > XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1) 5979 if (nex > XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1)
5980 nex = XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1; 5980 nex = XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1;
5981 5981
5982 bmapi_flags = XFS_BMAPI_AFLAG(whichfork) | 5982 bmapi_flags = xfs_bmapi_aflag(whichfork) |
5983 ((iflags & BMV_IF_PREALLOC) ? 0 : XFS_BMAPI_IGSTATE); 5983 ((iflags & BMV_IF_PREALLOC) ? 0 : XFS_BMAPI_IGSTATE);
5984 5984
5985 /* 5985 /*
@@ -6098,7 +6098,7 @@ xfs_bmap_isaeof(
6098 */ 6098 */
6099 *aeof = (off >= s.br_startoff && 6099 *aeof = (off >= s.br_startoff &&
6100 off < s.br_startoff + s.br_blockcount && 6100 off < s.br_startoff + s.br_blockcount &&
6101 ISNULLSTARTBLOCK(s.br_startblock)) || 6101 isnullstartblock(s.br_startblock)) ||
6102 off >= s.br_startoff + s.br_blockcount; 6102 off >= s.br_startoff + s.br_blockcount;
6103 return 0; 6103 return 0;
6104} 6104}
diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h
index 284571c05ed0..be2979d88d32 100644
--- a/fs/xfs/xfs_bmap.h
+++ b/fs/xfs/xfs_bmap.h
@@ -95,7 +95,6 @@ typedef struct xfs_bmap_free
95 /* need write cache flushing and no */ 95 /* need write cache flushing and no */
96 /* additional allocation alignments */ 96 /* additional allocation alignments */
97 97
98#define XFS_BMAPI_AFLAG(w) xfs_bmapi_aflag(w)
99static inline int xfs_bmapi_aflag(int w) 98static inline int xfs_bmapi_aflag(int w)
100{ 99{
101 return (w == XFS_ATTR_FORK ? XFS_BMAPI_ATTRFORK : 0); 100 return (w == XFS_ATTR_FORK ? XFS_BMAPI_ATTRFORK : 0);
@@ -107,7 +106,6 @@ static inline int xfs_bmapi_aflag(int w)
107#define DELAYSTARTBLOCK ((xfs_fsblock_t)-1LL) 106#define DELAYSTARTBLOCK ((xfs_fsblock_t)-1LL)
108#define HOLESTARTBLOCK ((xfs_fsblock_t)-2LL) 107#define HOLESTARTBLOCK ((xfs_fsblock_t)-2LL)
109 108
110#define XFS_BMAP_INIT(flp,fbp) xfs_bmap_init(flp,fbp)
111static inline void xfs_bmap_init(xfs_bmap_free_t *flp, xfs_fsblock_t *fbp) 109static inline void xfs_bmap_init(xfs_bmap_free_t *flp, xfs_fsblock_t *fbp)
112{ 110{
113 ((flp)->xbf_first = NULL, (flp)->xbf_count = 0, \ 111 ((flp)->xbf_first = NULL, (flp)->xbf_count = 0, \
diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c
index 8f1ec73725d3..0760d352586f 100644
--- a/fs/xfs/xfs_bmap_btree.c
+++ b/fs/xfs/xfs_bmap_btree.c
@@ -110,25 +110,25 @@ __xfs_bmbt_get_all(
110 110
111 ext_flag = (int)(l0 >> (64 - BMBT_EXNTFLAG_BITLEN)); 111 ext_flag = (int)(l0 >> (64 - BMBT_EXNTFLAG_BITLEN));
112 s->br_startoff = ((xfs_fileoff_t)l0 & 112 s->br_startoff = ((xfs_fileoff_t)l0 &
113 XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; 113 xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;
114#if XFS_BIG_BLKNOS 114#if XFS_BIG_BLKNOS
115 s->br_startblock = (((xfs_fsblock_t)l0 & XFS_MASK64LO(9)) << 43) | 115 s->br_startblock = (((xfs_fsblock_t)l0 & xfs_mask64lo(9)) << 43) |
116 (((xfs_fsblock_t)l1) >> 21); 116 (((xfs_fsblock_t)l1) >> 21);
117#else 117#else
118#ifdef DEBUG 118#ifdef DEBUG
119 { 119 {
120 xfs_dfsbno_t b; 120 xfs_dfsbno_t b;
121 121
122 b = (((xfs_dfsbno_t)l0 & XFS_MASK64LO(9)) << 43) | 122 b = (((xfs_dfsbno_t)l0 & xfs_mask64lo(9)) << 43) |
123 (((xfs_dfsbno_t)l1) >> 21); 123 (((xfs_dfsbno_t)l1) >> 21);
124 ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); 124 ASSERT((b >> 32) == 0 || isnulldstartblock(b));
125 s->br_startblock = (xfs_fsblock_t)b; 125 s->br_startblock = (xfs_fsblock_t)b;
126 } 126 }
127#else /* !DEBUG */ 127#else /* !DEBUG */
128 s->br_startblock = (xfs_fsblock_t)(((xfs_dfsbno_t)l1) >> 21); 128 s->br_startblock = (xfs_fsblock_t)(((xfs_dfsbno_t)l1) >> 21);
129#endif /* DEBUG */ 129#endif /* DEBUG */
130#endif /* XFS_BIG_BLKNOS */ 130#endif /* XFS_BIG_BLKNOS */
131 s->br_blockcount = (xfs_filblks_t)(l1 & XFS_MASK64LO(21)); 131 s->br_blockcount = (xfs_filblks_t)(l1 & xfs_mask64lo(21));
132 /* This is xfs_extent_state() in-line */ 132 /* This is xfs_extent_state() in-line */
133 if (ext_flag) { 133 if (ext_flag) {
134 ASSERT(s->br_blockcount != 0); /* saved for DMIG */ 134 ASSERT(s->br_blockcount != 0); /* saved for DMIG */
@@ -153,7 +153,7 @@ xfs_filblks_t
153xfs_bmbt_get_blockcount( 153xfs_bmbt_get_blockcount(
154 xfs_bmbt_rec_host_t *r) 154 xfs_bmbt_rec_host_t *r)
155{ 155{
156 return (xfs_filblks_t)(r->l1 & XFS_MASK64LO(21)); 156 return (xfs_filblks_t)(r->l1 & xfs_mask64lo(21));
157} 157}
158 158
159/* 159/*
@@ -164,15 +164,15 @@ xfs_bmbt_get_startblock(
164 xfs_bmbt_rec_host_t *r) 164 xfs_bmbt_rec_host_t *r)
165{ 165{
166#if XFS_BIG_BLKNOS 166#if XFS_BIG_BLKNOS
167 return (((xfs_fsblock_t)r->l0 & XFS_MASK64LO(9)) << 43) | 167 return (((xfs_fsblock_t)r->l0 & xfs_mask64lo(9)) << 43) |
168 (((xfs_fsblock_t)r->l1) >> 21); 168 (((xfs_fsblock_t)r->l1) >> 21);
169#else 169#else
170#ifdef DEBUG 170#ifdef DEBUG
171 xfs_dfsbno_t b; 171 xfs_dfsbno_t b;
172 172
173 b = (((xfs_dfsbno_t)r->l0 & XFS_MASK64LO(9)) << 43) | 173 b = (((xfs_dfsbno_t)r->l0 & xfs_mask64lo(9)) << 43) |
174 (((xfs_dfsbno_t)r->l1) >> 21); 174 (((xfs_dfsbno_t)r->l1) >> 21);
175 ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); 175 ASSERT((b >> 32) == 0 || isnulldstartblock(b));
176 return (xfs_fsblock_t)b; 176 return (xfs_fsblock_t)b;
177#else /* !DEBUG */ 177#else /* !DEBUG */
178 return (xfs_fsblock_t)(((xfs_dfsbno_t)r->l1) >> 21); 178 return (xfs_fsblock_t)(((xfs_dfsbno_t)r->l1) >> 21);
@@ -188,7 +188,7 @@ xfs_bmbt_get_startoff(
188 xfs_bmbt_rec_host_t *r) 188 xfs_bmbt_rec_host_t *r)
189{ 189{
190 return ((xfs_fileoff_t)r->l0 & 190 return ((xfs_fileoff_t)r->l0 &
191 XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; 191 xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;
192} 192}
193 193
194xfs_exntst_t 194xfs_exntst_t
@@ -219,7 +219,7 @@ xfs_filblks_t
219xfs_bmbt_disk_get_blockcount( 219xfs_bmbt_disk_get_blockcount(
220 xfs_bmbt_rec_t *r) 220 xfs_bmbt_rec_t *r)
221{ 221{
222 return (xfs_filblks_t)(be64_to_cpu(r->l1) & XFS_MASK64LO(21)); 222 return (xfs_filblks_t)(be64_to_cpu(r->l1) & xfs_mask64lo(21));
223} 223}
224 224
225/* 225/*
@@ -230,7 +230,7 @@ xfs_bmbt_disk_get_startoff(
230 xfs_bmbt_rec_t *r) 230 xfs_bmbt_rec_t *r)
231{ 231{
232 return ((xfs_fileoff_t)be64_to_cpu(r->l0) & 232 return ((xfs_fileoff_t)be64_to_cpu(r->l0) &
233 XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; 233 xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;
234} 234}
235 235
236 236
@@ -248,33 +248,33 @@ xfs_bmbt_set_allf(
248 int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1; 248 int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1;
249 249
250 ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); 250 ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN);
251 ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); 251 ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0);
252 ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); 252 ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0);
253 253
254#if XFS_BIG_BLKNOS 254#if XFS_BIG_BLKNOS
255 ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); 255 ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0);
256 256
257 r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | 257 r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |
258 ((xfs_bmbt_rec_base_t)startoff << 9) | 258 ((xfs_bmbt_rec_base_t)startoff << 9) |
259 ((xfs_bmbt_rec_base_t)startblock >> 43); 259 ((xfs_bmbt_rec_base_t)startblock >> 43);
260 r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) | 260 r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) |
261 ((xfs_bmbt_rec_base_t)blockcount & 261 ((xfs_bmbt_rec_base_t)blockcount &
262 (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); 262 (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
263#else /* !XFS_BIG_BLKNOS */ 263#else /* !XFS_BIG_BLKNOS */
264 if (ISNULLSTARTBLOCK(startblock)) { 264 if (isnullstartblock(startblock)) {
265 r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | 265 r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |
266 ((xfs_bmbt_rec_base_t)startoff << 9) | 266 ((xfs_bmbt_rec_base_t)startoff << 9) |
267 (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); 267 (xfs_bmbt_rec_base_t)xfs_mask64lo(9);
268 r->l1 = XFS_MASK64HI(11) | 268 r->l1 = xfs_mask64hi(11) |
269 ((xfs_bmbt_rec_base_t)startblock << 21) | 269 ((xfs_bmbt_rec_base_t)startblock << 21) |
270 ((xfs_bmbt_rec_base_t)blockcount & 270 ((xfs_bmbt_rec_base_t)blockcount &
271 (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); 271 (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
272 } else { 272 } else {
273 r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | 273 r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |
274 ((xfs_bmbt_rec_base_t)startoff << 9); 274 ((xfs_bmbt_rec_base_t)startoff << 9);
275 r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) | 275 r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) |
276 ((xfs_bmbt_rec_base_t)blockcount & 276 ((xfs_bmbt_rec_base_t)blockcount &
277 (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); 277 (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
278 } 278 }
279#endif /* XFS_BIG_BLKNOS */ 279#endif /* XFS_BIG_BLKNOS */
280} 280}
@@ -306,11 +306,11 @@ xfs_bmbt_disk_set_allf(
306 int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1; 306 int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1;
307 307
308 ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); 308 ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN);
309 ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); 309 ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0);
310 ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); 310 ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0);
311 311
312#if XFS_BIG_BLKNOS 312#if XFS_BIG_BLKNOS
313 ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); 313 ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0);
314 314
315 r->l0 = cpu_to_be64( 315 r->l0 = cpu_to_be64(
316 ((xfs_bmbt_rec_base_t)extent_flag << 63) | 316 ((xfs_bmbt_rec_base_t)extent_flag << 63) |
@@ -319,17 +319,17 @@ xfs_bmbt_disk_set_allf(
319 r->l1 = cpu_to_be64( 319 r->l1 = cpu_to_be64(
320 ((xfs_bmbt_rec_base_t)startblock << 21) | 320 ((xfs_bmbt_rec_base_t)startblock << 21) |
321 ((xfs_bmbt_rec_base_t)blockcount & 321 ((xfs_bmbt_rec_base_t)blockcount &
322 (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); 322 (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));
323#else /* !XFS_BIG_BLKNOS */ 323#else /* !XFS_BIG_BLKNOS */
324 if (ISNULLSTARTBLOCK(startblock)) { 324 if (isnullstartblock(startblock)) {
325 r->l0 = cpu_to_be64( 325 r->l0 = cpu_to_be64(
326 ((xfs_bmbt_rec_base_t)extent_flag << 63) | 326 ((xfs_bmbt_rec_base_t)extent_flag << 63) |
327 ((xfs_bmbt_rec_base_t)startoff << 9) | 327 ((xfs_bmbt_rec_base_t)startoff << 9) |
328 (xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); 328 (xfs_bmbt_rec_base_t)xfs_mask64lo(9));
329 r->l1 = cpu_to_be64(XFS_MASK64HI(11) | 329 r->l1 = cpu_to_be64(xfs_mask64hi(11) |
330 ((xfs_bmbt_rec_base_t)startblock << 21) | 330 ((xfs_bmbt_rec_base_t)startblock << 21) |
331 ((xfs_bmbt_rec_base_t)blockcount & 331 ((xfs_bmbt_rec_base_t)blockcount &
332 (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); 332 (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));
333 } else { 333 } else {
334 r->l0 = cpu_to_be64( 334 r->l0 = cpu_to_be64(
335 ((xfs_bmbt_rec_base_t)extent_flag << 63) | 335 ((xfs_bmbt_rec_base_t)extent_flag << 63) |
@@ -337,7 +337,7 @@ xfs_bmbt_disk_set_allf(
337 r->l1 = cpu_to_be64( 337 r->l1 = cpu_to_be64(
338 ((xfs_bmbt_rec_base_t)startblock << 21) | 338 ((xfs_bmbt_rec_base_t)startblock << 21) |
339 ((xfs_bmbt_rec_base_t)blockcount & 339 ((xfs_bmbt_rec_base_t)blockcount &
340 (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); 340 (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));
341 } 341 }
342#endif /* XFS_BIG_BLKNOS */ 342#endif /* XFS_BIG_BLKNOS */
343} 343}
@@ -362,9 +362,9 @@ xfs_bmbt_set_blockcount(
362 xfs_bmbt_rec_host_t *r, 362 xfs_bmbt_rec_host_t *r,
363 xfs_filblks_t v) 363 xfs_filblks_t v)
364{ 364{
365 ASSERT((v & XFS_MASK64HI(43)) == 0); 365 ASSERT((v & xfs_mask64hi(43)) == 0);
366 r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(43)) | 366 r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64hi(43)) |
367 (xfs_bmbt_rec_base_t)(v & XFS_MASK64LO(21)); 367 (xfs_bmbt_rec_base_t)(v & xfs_mask64lo(21));
368} 368}
369 369
370/* 370/*
@@ -376,21 +376,21 @@ xfs_bmbt_set_startblock(
376 xfs_fsblock_t v) 376 xfs_fsblock_t v)
377{ 377{
378#if XFS_BIG_BLKNOS 378#if XFS_BIG_BLKNOS
379 ASSERT((v & XFS_MASK64HI(12)) == 0); 379 ASSERT((v & xfs_mask64hi(12)) == 0);
380 r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(55)) | 380 r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64hi(55)) |
381 (xfs_bmbt_rec_base_t)(v >> 43); 381 (xfs_bmbt_rec_base_t)(v >> 43);
382 r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)) | 382 r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)) |
383 (xfs_bmbt_rec_base_t)(v << 21); 383 (xfs_bmbt_rec_base_t)(v << 21);
384#else /* !XFS_BIG_BLKNOS */ 384#else /* !XFS_BIG_BLKNOS */
385 if (ISNULLSTARTBLOCK(v)) { 385 if (isnullstartblock(v)) {
386 r->l0 |= (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); 386 r->l0 |= (xfs_bmbt_rec_base_t)xfs_mask64lo(9);
387 r->l1 = (xfs_bmbt_rec_base_t)XFS_MASK64HI(11) | 387 r->l1 = (xfs_bmbt_rec_base_t)xfs_mask64hi(11) |
388 ((xfs_bmbt_rec_base_t)v << 21) | 388 ((xfs_bmbt_rec_base_t)v << 21) |
389 (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); 389 (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
390 } else { 390 } else {
391 r->l0 &= ~(xfs_bmbt_rec_base_t)XFS_MASK64LO(9); 391 r->l0 &= ~(xfs_bmbt_rec_base_t)xfs_mask64lo(9);
392 r->l1 = ((xfs_bmbt_rec_base_t)v << 21) | 392 r->l1 = ((xfs_bmbt_rec_base_t)v << 21) |
393 (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); 393 (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21));
394 } 394 }
395#endif /* XFS_BIG_BLKNOS */ 395#endif /* XFS_BIG_BLKNOS */
396} 396}
@@ -403,10 +403,10 @@ xfs_bmbt_set_startoff(
403 xfs_bmbt_rec_host_t *r, 403 xfs_bmbt_rec_host_t *r,
404 xfs_fileoff_t v) 404 xfs_fileoff_t v)
405{ 405{
406 ASSERT((v & XFS_MASK64HI(9)) == 0); 406 ASSERT((v & xfs_mask64hi(9)) == 0);
407 r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) XFS_MASK64HI(1)) | 407 r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) xfs_mask64hi(1)) |
408 ((xfs_bmbt_rec_base_t)v << 9) | 408 ((xfs_bmbt_rec_base_t)v << 9) |
409 (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); 409 (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64lo(9));
410} 410}
411 411
412/* 412/*
@@ -419,9 +419,9 @@ xfs_bmbt_set_state(
419{ 419{
420 ASSERT(v == XFS_EXT_NORM || v == XFS_EXT_UNWRITTEN); 420 ASSERT(v == XFS_EXT_NORM || v == XFS_EXT_UNWRITTEN);
421 if (v == XFS_EXT_NORM) 421 if (v == XFS_EXT_NORM)
422 r->l0 &= XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN); 422 r->l0 &= xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN);
423 else 423 else
424 r->l0 |= XFS_MASK64HI(BMBT_EXNTFLAG_BITLEN); 424 r->l0 |= xfs_mask64hi(BMBT_EXNTFLAG_BITLEN);
425} 425}
426 426
427/* 427/*
diff --git a/fs/xfs/xfs_bmap_btree.h b/fs/xfs/xfs_bmap_btree.h
index a4555abb6622..0e8df007615e 100644
--- a/fs/xfs/xfs_bmap_btree.h
+++ b/fs/xfs/xfs_bmap_btree.h
@@ -76,26 +76,22 @@ typedef struct xfs_bmbt_rec_host {
76#define DSTARTBLOCKMASK \ 76#define DSTARTBLOCKMASK \
77 (((((xfs_dfsbno_t)1) << DSTARTBLOCKMASKBITS) - 1) << STARTBLOCKVALBITS) 77 (((((xfs_dfsbno_t)1) << DSTARTBLOCKMASKBITS) - 1) << STARTBLOCKVALBITS)
78 78
79#define ISNULLSTARTBLOCK(x) isnullstartblock(x)
80static inline int isnullstartblock(xfs_fsblock_t x) 79static inline int isnullstartblock(xfs_fsblock_t x)
81{ 80{
82 return ((x) & STARTBLOCKMASK) == STARTBLOCKMASK; 81 return ((x) & STARTBLOCKMASK) == STARTBLOCKMASK;
83} 82}
84 83
85#define ISNULLDSTARTBLOCK(x) isnulldstartblock(x)
86static inline int isnulldstartblock(xfs_dfsbno_t x) 84static inline int isnulldstartblock(xfs_dfsbno_t x)
87{ 85{
88 return ((x) & DSTARTBLOCKMASK) == DSTARTBLOCKMASK; 86 return ((x) & DSTARTBLOCKMASK) == DSTARTBLOCKMASK;
89} 87}
90 88
91#define NULLSTARTBLOCK(k) nullstartblock(k)
92static inline xfs_fsblock_t nullstartblock(int k) 89static inline xfs_fsblock_t nullstartblock(int k)
93{ 90{
94 ASSERT(k < (1 << STARTBLOCKVALBITS)); 91 ASSERT(k < (1 << STARTBLOCKVALBITS));
95 return STARTBLOCKMASK | (k); 92 return STARTBLOCKMASK | (k);
96} 93}
97 94
98#define STARTBLOCKVAL(x) startblockval(x)
99static inline xfs_filblks_t startblockval(xfs_fsblock_t x) 95static inline xfs_filblks_t startblockval(xfs_fsblock_t x)
100{ 96{
101 return (xfs_filblks_t)((x) & ~STARTBLOCKMASK); 97 return (xfs_filblks_t)((x) & ~STARTBLOCKMASK);
diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c
index 7ed59267420d..e73c332eb23f 100644
--- a/fs/xfs/xfs_btree.c
+++ b/fs/xfs/xfs_btree.c
@@ -730,8 +730,8 @@ xfs_btree_readahead_lblock(
730 struct xfs_btree_block *block) 730 struct xfs_btree_block *block)
731{ 731{
732 int rval = 0; 732 int rval = 0;
733 xfs_fsblock_t left = be64_to_cpu(block->bb_u.l.bb_leftsib); 733 xfs_dfsbno_t left = be64_to_cpu(block->bb_u.l.bb_leftsib);
734 xfs_fsblock_t right = be64_to_cpu(block->bb_u.l.bb_rightsib); 734 xfs_dfsbno_t right = be64_to_cpu(block->bb_u.l.bb_rightsib);
735 735
736 if ((lr & XFS_BTCUR_LEFTRA) && left != NULLDFSBNO) { 736 if ((lr & XFS_BTCUR_LEFTRA) && left != NULLDFSBNO) {
737 xfs_btree_reada_bufl(cur->bc_mp, left, 1); 737 xfs_btree_reada_bufl(cur->bc_mp, left, 1);
@@ -843,7 +843,7 @@ xfs_btree_ptr_is_null(
843 union xfs_btree_ptr *ptr) 843 union xfs_btree_ptr *ptr)
844{ 844{
845 if (cur->bc_flags & XFS_BTREE_LONG_PTRS) 845 if (cur->bc_flags & XFS_BTREE_LONG_PTRS)
846 return be64_to_cpu(ptr->l) == NULLFSBLOCK; 846 return be64_to_cpu(ptr->l) == NULLDFSBNO;
847 else 847 else
848 return be32_to_cpu(ptr->s) == NULLAGBLOCK; 848 return be32_to_cpu(ptr->s) == NULLAGBLOCK;
849} 849}
@@ -854,7 +854,7 @@ xfs_btree_set_ptr_null(
854 union xfs_btree_ptr *ptr) 854 union xfs_btree_ptr *ptr)
855{ 855{
856 if (cur->bc_flags & XFS_BTREE_LONG_PTRS) 856 if (cur->bc_flags & XFS_BTREE_LONG_PTRS)
857 ptr->l = cpu_to_be64(NULLFSBLOCK); 857 ptr->l = cpu_to_be64(NULLDFSBNO);
858 else 858 else
859 ptr->s = cpu_to_be32(NULLAGBLOCK); 859 ptr->s = cpu_to_be32(NULLAGBLOCK);
860} 860}
@@ -918,8 +918,8 @@ xfs_btree_init_block(
918 new->bb_numrecs = cpu_to_be16(numrecs); 918 new->bb_numrecs = cpu_to_be16(numrecs);
919 919
920 if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { 920 if (cur->bc_flags & XFS_BTREE_LONG_PTRS) {
921 new->bb_u.l.bb_leftsib = cpu_to_be64(NULLFSBLOCK); 921 new->bb_u.l.bb_leftsib = cpu_to_be64(NULLDFSBNO);
922 new->bb_u.l.bb_rightsib = cpu_to_be64(NULLFSBLOCK); 922 new->bb_u.l.bb_rightsib = cpu_to_be64(NULLDFSBNO);
923 } else { 923 } else {
924 new->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK); 924 new->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK);
925 new->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK); 925 new->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK);
@@ -960,7 +960,7 @@ xfs_btree_buf_to_ptr(
960 ptr->l = cpu_to_be64(XFS_DADDR_TO_FSB(cur->bc_mp, 960 ptr->l = cpu_to_be64(XFS_DADDR_TO_FSB(cur->bc_mp,
961 XFS_BUF_ADDR(bp))); 961 XFS_BUF_ADDR(bp)));
962 else { 962 else {
963 ptr->s = cpu_to_be32(XFS_DADDR_TO_AGBNO(cur->bc_mp, 963 ptr->s = cpu_to_be32(xfs_daddr_to_agbno(cur->bc_mp,
964 XFS_BUF_ADDR(bp))); 964 XFS_BUF_ADDR(bp)));
965 } 965 }
966} 966}
@@ -971,7 +971,7 @@ xfs_btree_ptr_to_daddr(
971 union xfs_btree_ptr *ptr) 971 union xfs_btree_ptr *ptr)
972{ 972{
973 if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { 973 if (cur->bc_flags & XFS_BTREE_LONG_PTRS) {
974 ASSERT(be64_to_cpu(ptr->l) != NULLFSBLOCK); 974 ASSERT(be64_to_cpu(ptr->l) != NULLDFSBNO);
975 975
976 return XFS_FSB_TO_DADDR(cur->bc_mp, be64_to_cpu(ptr->l)); 976 return XFS_FSB_TO_DADDR(cur->bc_mp, be64_to_cpu(ptr->l));
977 } else { 977 } else {
@@ -2454,7 +2454,7 @@ xfs_btree_new_iroot(
2454 xfs_btree_log_ptrs(cur, cbp, 1, be16_to_cpu(cblock->bb_numrecs)); 2454 xfs_btree_log_ptrs(cur, cbp, 1, be16_to_cpu(cblock->bb_numrecs));
2455 2455
2456 *logflags |= 2456 *logflags |=
2457 XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork); 2457 XFS_ILOG_CORE | xfs_ilog_fbroot(cur->bc_private.b.whichfork);
2458 *stat = 1; 2458 *stat = 1;
2459 XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT); 2459 XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT);
2460 return 0; 2460 return 0;
@@ -3048,7 +3048,7 @@ xfs_btree_kill_iroot(
3048 cur->bc_bufs[level - 1] = NULL; 3048 cur->bc_bufs[level - 1] = NULL;
3049 be16_add_cpu(&block->bb_level, -1); 3049 be16_add_cpu(&block->bb_level, -1);
3050 xfs_trans_log_inode(cur->bc_tp, ip, 3050 xfs_trans_log_inode(cur->bc_tp, ip,
3051 XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); 3051 XFS_ILOG_CORE | xfs_ilog_fbroot(cur->bc_private.b.whichfork));
3052 cur->bc_nlevels--; 3052 cur->bc_nlevels--;
3053out0: 3053out0:
3054 XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT); 3054 XFS_BTREE_TRACE_CURSOR(cur, XBT_EXIT);
diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c
index a11a8390bf6c..c45f74ff1a5b 100644
--- a/fs/xfs/xfs_da_btree.c
+++ b/fs/xfs/xfs_da_btree.c
@@ -1597,7 +1597,7 @@ xfs_da_grow_inode(xfs_da_args_t *args, xfs_dablk_t *new_blkno)
1597 nmap = 1; 1597 nmap = 1;
1598 ASSERT(args->firstblock != NULL); 1598 ASSERT(args->firstblock != NULL);
1599 if ((error = xfs_bmapi(tp, dp, bno, count, 1599 if ((error = xfs_bmapi(tp, dp, bno, count,
1600 XFS_BMAPI_AFLAG(w)|XFS_BMAPI_WRITE|XFS_BMAPI_METADATA| 1600 xfs_bmapi_aflag(w)|XFS_BMAPI_WRITE|XFS_BMAPI_METADATA|
1601 XFS_BMAPI_CONTIG, 1601 XFS_BMAPI_CONTIG,
1602 args->firstblock, args->total, &map, &nmap, 1602 args->firstblock, args->total, &map, &nmap,
1603 args->flist, NULL))) { 1603 args->flist, NULL))) {
@@ -1618,7 +1618,7 @@ xfs_da_grow_inode(xfs_da_args_t *args, xfs_dablk_t *new_blkno)
1618 nmap = MIN(XFS_BMAP_MAX_NMAP, count); 1618 nmap = MIN(XFS_BMAP_MAX_NMAP, count);
1619 c = (int)(bno + count - b); 1619 c = (int)(bno + count - b);
1620 if ((error = xfs_bmapi(tp, dp, b, c, 1620 if ((error = xfs_bmapi(tp, dp, b, c,
1621 XFS_BMAPI_AFLAG(w)|XFS_BMAPI_WRITE| 1621 xfs_bmapi_aflag(w)|XFS_BMAPI_WRITE|
1622 XFS_BMAPI_METADATA, 1622 XFS_BMAPI_METADATA,
1623 args->firstblock, args->total, 1623 args->firstblock, args->total,
1624 &mapp[mapi], &nmap, args->flist, 1624 &mapp[mapi], &nmap, args->flist,
@@ -1882,7 +1882,7 @@ xfs_da_shrink_inode(xfs_da_args_t *args, xfs_dablk_t dead_blkno,
1882 * the last block to the place we want to kill. 1882 * the last block to the place we want to kill.
1883 */ 1883 */
1884 if ((error = xfs_bunmapi(tp, dp, dead_blkno, count, 1884 if ((error = xfs_bunmapi(tp, dp, dead_blkno, count,
1885 XFS_BMAPI_AFLAG(w)|XFS_BMAPI_METADATA, 1885 xfs_bmapi_aflag(w)|XFS_BMAPI_METADATA,
1886 0, args->firstblock, args->flist, NULL, 1886 0, args->firstblock, args->flist, NULL,
1887 &done)) == ENOSPC) { 1887 &done)) == ENOSPC) {
1888 if (w != XFS_DATA_FORK) 1888 if (w != XFS_DATA_FORK)
@@ -1987,7 +1987,7 @@ xfs_da_do_buf(
1987 if ((error = xfs_bmapi(trans, dp, (xfs_fileoff_t)bno, 1987 if ((error = xfs_bmapi(trans, dp, (xfs_fileoff_t)bno,
1988 nfsb, 1988 nfsb,
1989 XFS_BMAPI_METADATA | 1989 XFS_BMAPI_METADATA |
1990 XFS_BMAPI_AFLAG(whichfork), 1990 xfs_bmapi_aflag(whichfork),
1991 NULL, 0, mapp, &nmap, NULL, NULL))) 1991 NULL, 0, mapp, &nmap, NULL, NULL)))
1992 goto exit0; 1992 goto exit0;
1993 } 1993 }
diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c
index e2fa0a1d8e96..e1f0a06aaf04 100644
--- a/fs/xfs/xfs_dir2_block.c
+++ b/fs/xfs/xfs_dir2_block.c
@@ -517,9 +517,9 @@ xfs_dir2_block_getdents(
517 /* 517 /*
518 * If it didn't fit, set the final offset to here & return. 518 * If it didn't fit, set the final offset to here & return.
519 */ 519 */
520 if (filldir(dirent, dep->name, dep->namelen, cook, 520 if (filldir(dirent, dep->name, dep->namelen, cook & 0x7fffffff,
521 ino, DT_UNKNOWN)) { 521 ino, DT_UNKNOWN)) {
522 *offset = cook; 522 *offset = cook & 0x7fffffff;
523 xfs_da_brelse(NULL, bp); 523 xfs_da_brelse(NULL, bp);
524 return 0; 524 return 0;
525 } 525 }
@@ -529,7 +529,8 @@ xfs_dir2_block_getdents(
529 * Reached the end of the block. 529 * Reached the end of the block.
530 * Set the offset to a non-existent block 1 and return. 530 * Set the offset to a non-existent block 1 and return.
531 */ 531 */
532 *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); 532 *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) &
533 0x7fffffff;
533 xfs_da_brelse(NULL, bp); 534 xfs_da_brelse(NULL, bp);
534 return 0; 535 return 0;
535} 536}
diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c
index 93535992cb60..ef805a374eec 100644
--- a/fs/xfs/xfs_dir2_leaf.c
+++ b/fs/xfs/xfs_dir2_leaf.c
@@ -1092,7 +1092,7 @@ xfs_dir2_leaf_getdents(
1092 * Won't fit. Return to caller. 1092 * Won't fit. Return to caller.
1093 */ 1093 */
1094 if (filldir(dirent, dep->name, dep->namelen, 1094 if (filldir(dirent, dep->name, dep->namelen,
1095 xfs_dir2_byte_to_dataptr(mp, curoff), 1095 xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff,
1096 ino, DT_UNKNOWN)) 1096 ino, DT_UNKNOWN))
1097 break; 1097 break;
1098 1098
@@ -1108,9 +1108,9 @@ xfs_dir2_leaf_getdents(
1108 * All done. Set output offset value to current offset. 1108 * All done. Set output offset value to current offset.
1109 */ 1109 */
1110 if (curoff > xfs_dir2_dataptr_to_byte(mp, XFS_DIR2_MAX_DATAPTR)) 1110 if (curoff > xfs_dir2_dataptr_to_byte(mp, XFS_DIR2_MAX_DATAPTR))
1111 *offset = XFS_DIR2_MAX_DATAPTR; 1111 *offset = XFS_DIR2_MAX_DATAPTR & 0x7fffffff;
1112 else 1112 else
1113 *offset = xfs_dir2_byte_to_dataptr(mp, curoff); 1113 *offset = xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff;
1114 kmem_free(map); 1114 kmem_free(map);
1115 if (bp) 1115 if (bp)
1116 xfs_da_brelse(NULL, bp); 1116 xfs_da_brelse(NULL, bp);
diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c
index b46af0013ec9..a8a8a6efad5b 100644
--- a/fs/xfs/xfs_dir2_sf.c
+++ b/fs/xfs/xfs_dir2_sf.c
@@ -752,8 +752,8 @@ xfs_dir2_sf_getdents(
752#if XFS_BIG_INUMS 752#if XFS_BIG_INUMS
753 ino += mp->m_inoadd; 753 ino += mp->m_inoadd;
754#endif 754#endif
755 if (filldir(dirent, ".", 1, dot_offset, ino, DT_DIR)) { 755 if (filldir(dirent, ".", 1, dot_offset & 0x7fffffff, ino, DT_DIR)) {
756 *offset = dot_offset; 756 *offset = dot_offset & 0x7fffffff;
757 return 0; 757 return 0;
758 } 758 }
759 } 759 }
@@ -766,8 +766,8 @@ xfs_dir2_sf_getdents(
766#if XFS_BIG_INUMS 766#if XFS_BIG_INUMS
767 ino += mp->m_inoadd; 767 ino += mp->m_inoadd;
768#endif 768#endif
769 if (filldir(dirent, "..", 2, dotdot_offset, ino, DT_DIR)) { 769 if (filldir(dirent, "..", 2, dotdot_offset & 0x7fffffff, ino, DT_DIR)) {
770 *offset = dotdot_offset; 770 *offset = dotdot_offset & 0x7fffffff;
771 return 0; 771 return 0;
772 } 772 }
773 } 773 }
@@ -791,14 +791,15 @@ xfs_dir2_sf_getdents(
791#endif 791#endif
792 792
793 if (filldir(dirent, sfep->name, sfep->namelen, 793 if (filldir(dirent, sfep->name, sfep->namelen,
794 off, ino, DT_UNKNOWN)) { 794 off & 0x7fffffff, ino, DT_UNKNOWN)) {
795 *offset = off; 795 *offset = off & 0x7fffffff;
796 return 0; 796 return 0;
797 } 797 }
798 sfep = xfs_dir2_sf_nextentry(sfp, sfep); 798 sfep = xfs_dir2_sf_nextentry(sfp, sfep);
799 } 799 }
800 800
801 *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); 801 *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) &
802 0x7fffffff;
802 return 0; 803 return 0;
803} 804}
804 805
diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c
index e6ebbaeb4dc6..ab016e5ae7be 100644
--- a/fs/xfs/xfs_ialloc.c
+++ b/fs/xfs/xfs_ialloc.c
@@ -357,7 +357,7 @@ xfs_ialloc_ag_alloc(
357 int ioffset = i << args.mp->m_sb.sb_inodelog; 357 int ioffset = i << args.mp->m_sb.sb_inodelog;
358 uint isize = sizeof(struct xfs_dinode); 358 uint isize = sizeof(struct xfs_dinode);
359 359
360 free = XFS_MAKE_IPTR(args.mp, fbuf, i); 360 free = xfs_make_iptr(args.mp, fbuf, i);
361 free->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); 361 free->di_magic = cpu_to_be16(XFS_DINODE_MAGIC);
362 free->di_version = version; 362 free->di_version = version;
363 free->di_gen = cpu_to_be32(gen); 363 free->di_gen = cpu_to_be32(gen);
@@ -937,7 +937,7 @@ nextag:
937 } 937 }
938 } 938 }
939 } 939 }
940 offset = XFS_IALLOC_FIND_FREE(&rec.ir_free); 940 offset = xfs_ialloc_find_free(&rec.ir_free);
941 ASSERT(offset >= 0); 941 ASSERT(offset >= 0);
942 ASSERT(offset < XFS_INODES_PER_CHUNK); 942 ASSERT(offset < XFS_INODES_PER_CHUNK);
943 ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % 943 ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) %
@@ -1279,7 +1279,7 @@ xfs_imap(
1279 offset = XFS_INO_TO_OFFSET(mp, ino); 1279 offset = XFS_INO_TO_OFFSET(mp, ino);
1280 ASSERT(offset < mp->m_sb.sb_inopblock); 1280 ASSERT(offset < mp->m_sb.sb_inopblock);
1281 1281
1282 cluster_agbno = XFS_DADDR_TO_AGBNO(mp, imap->im_blkno); 1282 cluster_agbno = xfs_daddr_to_agbno(mp, imap->im_blkno);
1283 offset += (agbno - cluster_agbno) * mp->m_sb.sb_inopblock; 1283 offset += (agbno - cluster_agbno) * mp->m_sb.sb_inopblock;
1284 1284
1285 imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); 1285 imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster);
diff --git a/fs/xfs/xfs_ialloc.h b/fs/xfs/xfs_ialloc.h
index 50f558a4e0a8..aeee8278f92c 100644
--- a/fs/xfs/xfs_ialloc.h
+++ b/fs/xfs/xfs_ialloc.h
@@ -39,7 +39,6 @@ struct xfs_trans;
39/* 39/*
40 * Make an inode pointer out of the buffer/offset. 40 * Make an inode pointer out of the buffer/offset.
41 */ 41 */
42#define XFS_MAKE_IPTR(mp,b,o) xfs_make_iptr(mp,b,o)
43static inline struct xfs_dinode * 42static inline struct xfs_dinode *
44xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o) 43xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o)
45{ 44{
@@ -50,7 +49,6 @@ xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o)
50/* 49/*
51 * Find a free (set) bit in the inode bitmask. 50 * Find a free (set) bit in the inode bitmask.
52 */ 51 */
53#define XFS_IALLOC_FIND_FREE(fp) xfs_ialloc_find_free(fp)
54static inline int xfs_ialloc_find_free(xfs_inofree_t *fp) 52static inline int xfs_ialloc_find_free(xfs_inofree_t *fp)
55{ 53{
56 return xfs_lowbit64(*fp); 54 return xfs_lowbit64(*fp);
diff --git a/fs/xfs/xfs_ialloc_btree.h b/fs/xfs/xfs_ialloc_btree.h
index 37e5dd01a577..5580e255ff06 100644
--- a/fs/xfs/xfs_ialloc_btree.h
+++ b/fs/xfs/xfs_ialloc_btree.h
@@ -36,7 +36,6 @@ typedef __uint64_t xfs_inofree_t;
36#define XFS_INODES_PER_CHUNK_LOG (XFS_NBBYLOG + 3) 36#define XFS_INODES_PER_CHUNK_LOG (XFS_NBBYLOG + 3)
37#define XFS_INOBT_ALL_FREE ((xfs_inofree_t)-1) 37#define XFS_INOBT_ALL_FREE ((xfs_inofree_t)-1)
38 38
39#define XFS_INOBT_MASKN(i,n) xfs_inobt_maskn(i,n)
40static inline xfs_inofree_t xfs_inobt_maskn(int i, int n) 39static inline xfs_inofree_t xfs_inobt_maskn(int i, int n)
41{ 40{
42 return (((n) >= XFS_INODES_PER_CHUNK ? \ 41 return (((n) >= XFS_INODES_PER_CHUNK ? \
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index 5a5e035e5d38..e7ae08d1df48 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -424,6 +424,19 @@ xfs_iformat(
424 case XFS_DINODE_FMT_LOCAL: 424 case XFS_DINODE_FMT_LOCAL:
425 atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); 425 atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip);
426 size = be16_to_cpu(atp->hdr.totsize); 426 size = be16_to_cpu(atp->hdr.totsize);
427
428 if (unlikely(size < sizeof(struct xfs_attr_sf_hdr))) {
429 xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount,
430 "corrupt inode %Lu "
431 "(bad attr fork size %Ld).",
432 (unsigned long long) ip->i_ino,
433 (long long) size);
434 XFS_CORRUPTION_ERROR("xfs_iformat(8)",
435 XFS_ERRLEVEL_LOW,
436 ip->i_mount, dip);
437 return XFS_ERROR(EFSCORRUPTED);
438 }
439
427 error = xfs_iformat_local(ip, dip, XFS_ATTR_FORK, size); 440 error = xfs_iformat_local(ip, dip, XFS_ATTR_FORK, size);
428 break; 441 break;
429 case XFS_DINODE_FMT_EXTENTS: 442 case XFS_DINODE_FMT_EXTENTS:
@@ -1601,10 +1614,10 @@ xfs_itruncate_finish(
1601 * in this file with garbage in them once recovery 1614 * in this file with garbage in them once recovery
1602 * runs. 1615 * runs.
1603 */ 1616 */
1604 XFS_BMAP_INIT(&free_list, &first_block); 1617 xfs_bmap_init(&free_list, &first_block);
1605 error = xfs_bunmapi(ntp, ip, 1618 error = xfs_bunmapi(ntp, ip,
1606 first_unmap_block, unmap_len, 1619 first_unmap_block, unmap_len,
1607 XFS_BMAPI_AFLAG(fork) | 1620 xfs_bmapi_aflag(fork) |
1608 (sync ? 0 : XFS_BMAPI_ASYNC), 1621 (sync ? 0 : XFS_BMAPI_ASYNC),
1609 XFS_ITRUNC_MAX_EXTENTS, 1622 XFS_ITRUNC_MAX_EXTENTS,
1610 &first_block, &free_list, 1623 &first_block, &free_list,
@@ -2557,7 +2570,7 @@ xfs_iextents_copy(
2557 for (i = 0; i < nrecs; i++) { 2570 for (i = 0; i < nrecs; i++) {
2558 xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i); 2571 xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i);
2559 start_block = xfs_bmbt_get_startblock(ep); 2572 start_block = xfs_bmbt_get_startblock(ep);
2560 if (ISNULLSTARTBLOCK(start_block)) { 2573 if (isnullstartblock(start_block)) {
2561 /* 2574 /*
2562 * It's a delayed allocation extent, so skip it. 2575 * It's a delayed allocation extent, so skip it.
2563 */ 2576 */
diff --git a/fs/xfs/xfs_inode_item.h b/fs/xfs/xfs_inode_item.h
index 1ff04cc323ad..9957d0602d54 100644
--- a/fs/xfs/xfs_inode_item.h
+++ b/fs/xfs/xfs_inode_item.h
@@ -111,20 +111,16 @@ typedef struct xfs_inode_log_format_64 {
111 111
112#define XFS_ILI_IOLOCKED_ANY (XFS_ILI_IOLOCKED_EXCL | XFS_ILI_IOLOCKED_SHARED) 112#define XFS_ILI_IOLOCKED_ANY (XFS_ILI_IOLOCKED_EXCL | XFS_ILI_IOLOCKED_SHARED)
113 113
114
115#define XFS_ILOG_FBROOT(w) xfs_ilog_fbroot(w)
116static inline int xfs_ilog_fbroot(int w) 114static inline int xfs_ilog_fbroot(int w)
117{ 115{
118 return (w == XFS_DATA_FORK ? XFS_ILOG_DBROOT : XFS_ILOG_ABROOT); 116 return (w == XFS_DATA_FORK ? XFS_ILOG_DBROOT : XFS_ILOG_ABROOT);
119} 117}
120 118
121#define XFS_ILOG_FEXT(w) xfs_ilog_fext(w)
122static inline int xfs_ilog_fext(int w) 119static inline int xfs_ilog_fext(int w)
123{ 120{
124 return (w == XFS_DATA_FORK ? XFS_ILOG_DEXT : XFS_ILOG_AEXT); 121 return (w == XFS_DATA_FORK ? XFS_ILOG_DEXT : XFS_ILOG_AEXT);
125} 122}
126 123
127#define XFS_ILOG_FDATA(w) xfs_ilog_fdata(w)
128static inline int xfs_ilog_fdata(int w) 124static inline int xfs_ilog_fdata(int w)
129{ 125{
130 return (w == XFS_DATA_FORK ? XFS_ILOG_DDATA : XFS_ILOG_ADATA); 126 return (w == XFS_DATA_FORK ? XFS_ILOG_DDATA : XFS_ILOG_ADATA);
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 911062cf73a6..08ce72316bfe 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -155,7 +155,7 @@ xfs_imap_to_bmap(
155 iomapp->iomap_bn = IOMAP_DADDR_NULL; 155 iomapp->iomap_bn = IOMAP_DADDR_NULL;
156 iomapp->iomap_flags |= IOMAP_DELAY; 156 iomapp->iomap_flags |= IOMAP_DELAY;
157 } else { 157 } else {
158 iomapp->iomap_bn = XFS_FSB_TO_DB(ip, start_block); 158 iomapp->iomap_bn = xfs_fsb_to_db(ip, start_block);
159 if (ISUNWRITTEN(imap)) 159 if (ISUNWRITTEN(imap))
160 iomapp->iomap_flags |= IOMAP_UNWRITTEN; 160 iomapp->iomap_flags |= IOMAP_UNWRITTEN;
161 } 161 }
@@ -261,7 +261,7 @@ xfs_iomap(
261 xfs_iunlock(ip, lockmode); 261 xfs_iunlock(ip, lockmode);
262 lockmode = 0; 262 lockmode = 0;
263 263
264 if (nimaps && !ISNULLSTARTBLOCK(imap.br_startblock)) { 264 if (nimaps && !isnullstartblock(imap.br_startblock)) {
265 xfs_iomap_map_trace(XFS_IOMAP_WRITE_MAP, ip, 265 xfs_iomap_map_trace(XFS_IOMAP_WRITE_MAP, ip,
266 offset, count, iomapp, &imap, flags); 266 offset, count, iomapp, &imap, flags);
267 break; 267 break;
@@ -491,7 +491,7 @@ xfs_iomap_write_direct(
491 /* 491 /*
492 * Issue the xfs_bmapi() call to allocate the blocks 492 * Issue the xfs_bmapi() call to allocate the blocks
493 */ 493 */
494 XFS_BMAP_INIT(&free_list, &firstfsb); 494 xfs_bmap_init(&free_list, &firstfsb);
495 nimaps = 1; 495 nimaps = 1;
496 error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, bmapi_flag, 496 error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, bmapi_flag,
497 &firstfsb, 0, &imap, &nimaps, &free_list, NULL); 497 &firstfsb, 0, &imap, &nimaps, &free_list, NULL);
@@ -751,7 +751,7 @@ xfs_iomap_write_allocate(
751 xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); 751 xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
752 xfs_trans_ihold(tp, ip); 752 xfs_trans_ihold(tp, ip);
753 753
754 XFS_BMAP_INIT(&free_list, &first_block); 754 xfs_bmap_init(&free_list, &first_block);
755 755
756 /* 756 /*
757 * it is possible that the extents have changed since 757 * it is possible that the extents have changed since
@@ -911,7 +911,7 @@ xfs_iomap_write_unwritten(
911 /* 911 /*
912 * Modify the unwritten extent state of the buffer. 912 * Modify the unwritten extent state of the buffer.
913 */ 913 */
914 XFS_BMAP_INIT(&free_list, &firstfsb); 914 xfs_bmap_init(&free_list, &firstfsb);
915 nimaps = 1; 915 nimaps = 1;
916 error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, 916 error = xfs_bmapi(tp, ip, offset_fsb, count_fsb,
917 XFS_BMAPI_WRITE|XFS_BMAPI_CONVERT, &firstfsb, 917 XFS_BMAPI_WRITE|XFS_BMAPI_CONVERT, &firstfsb,
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c
index e19d0a8d5618..cf98a805ec90 100644
--- a/fs/xfs/xfs_itable.c
+++ b/fs/xfs/xfs_itable.c
@@ -453,7 +453,7 @@ xfs_bulkstat(
453 (chunkidx = agino - gino + 1) < 453 (chunkidx = agino - gino + 1) <
454 XFS_INODES_PER_CHUNK && 454 XFS_INODES_PER_CHUNK &&
455 /* there are some left allocated */ 455 /* there are some left allocated */
456 XFS_INOBT_MASKN(chunkidx, 456 xfs_inobt_maskn(chunkidx,
457 XFS_INODES_PER_CHUNK - chunkidx) & ~gfree) { 457 XFS_INODES_PER_CHUNK - chunkidx) & ~gfree) {
458 /* 458 /*
459 * Grab the chunk record. Mark all the 459 * Grab the chunk record. Mark all the
@@ -464,7 +464,7 @@ xfs_bulkstat(
464 if (XFS_INOBT_MASK(i) & ~gfree) 464 if (XFS_INOBT_MASK(i) & ~gfree)
465 gcnt++; 465 gcnt++;
466 } 466 }
467 gfree |= XFS_INOBT_MASKN(0, chunkidx); 467 gfree |= xfs_inobt_maskn(0, chunkidx);
468 irbp->ir_startino = gino; 468 irbp->ir_startino = gino;
469 irbp->ir_freecount = gcnt; 469 irbp->ir_freecount = gcnt;
470 irbp->ir_free = gfree; 470 irbp->ir_free = gfree;
@@ -535,7 +535,7 @@ xfs_bulkstat(
535 chunkidx < XFS_INODES_PER_CHUNK; 535 chunkidx < XFS_INODES_PER_CHUNK;
536 chunkidx += nicluster, 536 chunkidx += nicluster,
537 agbno += nbcluster) { 537 agbno += nbcluster) {
538 if (XFS_INOBT_MASKN(chunkidx, 538 if (xfs_inobt_maskn(chunkidx,
539 nicluster) & ~gfree) 539 nicluster) & ~gfree)
540 xfs_btree_reada_bufs(mp, agno, 540 xfs_btree_reada_bufs(mp, agno,
541 agbno, nbcluster); 541 agbno, nbcluster);
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 3c97c6463a4e..35300250e86d 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -45,7 +45,6 @@
45#include "xfs_fsops.h" 45#include "xfs_fsops.h"
46#include "xfs_utils.h" 46#include "xfs_utils.h"
47 47
48STATIC int xfs_mount_log_sb(xfs_mount_t *, __int64_t);
49STATIC int xfs_uuid_mount(xfs_mount_t *); 48STATIC int xfs_uuid_mount(xfs_mount_t *);
50STATIC void xfs_unmountfs_wait(xfs_mount_t *); 49STATIC void xfs_unmountfs_wait(xfs_mount_t *);
51 50
@@ -682,7 +681,7 @@ xfs_initialize_perag_data(xfs_mount_t *mp, xfs_agnumber_t agcount)
682 * Update alignment values based on mount options and sb values 681 * Update alignment values based on mount options and sb values
683 */ 682 */
684STATIC int 683STATIC int
685xfs_update_alignment(xfs_mount_t *mp, __uint64_t *update_flags) 684xfs_update_alignment(xfs_mount_t *mp)
686{ 685{
687 xfs_sb_t *sbp = &(mp->m_sb); 686 xfs_sb_t *sbp = &(mp->m_sb);
688 687
@@ -736,11 +735,11 @@ xfs_update_alignment(xfs_mount_t *mp, __uint64_t *update_flags)
736 if (xfs_sb_version_hasdalign(sbp)) { 735 if (xfs_sb_version_hasdalign(sbp)) {
737 if (sbp->sb_unit != mp->m_dalign) { 736 if (sbp->sb_unit != mp->m_dalign) {
738 sbp->sb_unit = mp->m_dalign; 737 sbp->sb_unit = mp->m_dalign;
739 *update_flags |= XFS_SB_UNIT; 738 mp->m_update_flags |= XFS_SB_UNIT;
740 } 739 }
741 if (sbp->sb_width != mp->m_swidth) { 740 if (sbp->sb_width != mp->m_swidth) {
742 sbp->sb_width = mp->m_swidth; 741 sbp->sb_width = mp->m_swidth;
743 *update_flags |= XFS_SB_WIDTH; 742 mp->m_update_flags |= XFS_SB_WIDTH;
744 } 743 }
745 } 744 }
746 } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN && 745 } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN &&
@@ -905,7 +904,6 @@ xfs_mountfs(
905 xfs_sb_t *sbp = &(mp->m_sb); 904 xfs_sb_t *sbp = &(mp->m_sb);
906 xfs_inode_t *rip; 905 xfs_inode_t *rip;
907 __uint64_t resblks; 906 __uint64_t resblks;
908 __int64_t update_flags = 0LL;
909 uint quotamount, quotaflags; 907 uint quotamount, quotaflags;
910 int uuid_mounted = 0; 908 int uuid_mounted = 0;
911 int error = 0; 909 int error = 0;
@@ -933,7 +931,7 @@ xfs_mountfs(
933 "XFS: correcting sb_features alignment problem"); 931 "XFS: correcting sb_features alignment problem");
934 sbp->sb_features2 |= sbp->sb_bad_features2; 932 sbp->sb_features2 |= sbp->sb_bad_features2;
935 sbp->sb_bad_features2 = sbp->sb_features2; 933 sbp->sb_bad_features2 = sbp->sb_features2;
936 update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2; 934 mp->m_update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2;
937 935
938 /* 936 /*
939 * Re-check for ATTR2 in case it was found in bad_features2 937 * Re-check for ATTR2 in case it was found in bad_features2
@@ -947,11 +945,11 @@ xfs_mountfs(
947 if (xfs_sb_version_hasattr2(&mp->m_sb) && 945 if (xfs_sb_version_hasattr2(&mp->m_sb) &&
948 (mp->m_flags & XFS_MOUNT_NOATTR2)) { 946 (mp->m_flags & XFS_MOUNT_NOATTR2)) {
949 xfs_sb_version_removeattr2(&mp->m_sb); 947 xfs_sb_version_removeattr2(&mp->m_sb);
950 update_flags |= XFS_SB_FEATURES2; 948 mp->m_update_flags |= XFS_SB_FEATURES2;
951 949
952 /* update sb_versionnum for the clearing of the morebits */ 950 /* update sb_versionnum for the clearing of the morebits */
953 if (!sbp->sb_features2) 951 if (!sbp->sb_features2)
954 update_flags |= XFS_SB_VERSIONNUM; 952 mp->m_update_flags |= XFS_SB_VERSIONNUM;
955 } 953 }
956 954
957 /* 955 /*
@@ -960,7 +958,7 @@ xfs_mountfs(
960 * allocator alignment is within an ag, therefore ag has 958 * allocator alignment is within an ag, therefore ag has
961 * to be aligned at stripe boundary. 959 * to be aligned at stripe boundary.
962 */ 960 */
963 error = xfs_update_alignment(mp, &update_flags); 961 error = xfs_update_alignment(mp);
964 if (error) 962 if (error)
965 goto error1; 963 goto error1;
966 964
@@ -1137,10 +1135,12 @@ xfs_mountfs(
1137 } 1135 }
1138 1136
1139 /* 1137 /*
1140 * If fs is not mounted readonly, then update the superblock changes. 1138 * If this is a read-only mount defer the superblock updates until
1139 * the next remount into writeable mode. Otherwise we would never
1140 * perform the update e.g. for the root filesystem.
1141 */ 1141 */
1142 if (update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) { 1142 if (mp->m_update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) {
1143 error = xfs_mount_log_sb(mp, update_flags); 1143 error = xfs_mount_log_sb(mp, mp->m_update_flags);
1144 if (error) { 1144 if (error) {
1145 cmn_err(CE_WARN, "XFS: failed to write sb changes"); 1145 cmn_err(CE_WARN, "XFS: failed to write sb changes");
1146 goto error4; 1146 goto error4;
@@ -1820,7 +1820,7 @@ xfs_uuid_mount(
1820 * be altered by the mount options, as well as any potential sb_features2 1820 * be altered by the mount options, as well as any potential sb_features2
1821 * fixup. Only the first superblock is updated. 1821 * fixup. Only the first superblock is updated.
1822 */ 1822 */
1823STATIC int 1823int
1824xfs_mount_log_sb( 1824xfs_mount_log_sb(
1825 xfs_mount_t *mp, 1825 xfs_mount_t *mp,
1826 __int64_t fields) 1826 __int64_t fields)
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
index c1e028467327..f5e9937f9bdb 100644
--- a/fs/xfs/xfs_mount.h
+++ b/fs/xfs/xfs_mount.h
@@ -44,9 +44,9 @@ typedef struct xfs_trans_reservations {
44 44
45#ifndef __KERNEL__ 45#ifndef __KERNEL__
46 46
47#define XFS_DADDR_TO_AGNO(mp,d) \ 47#define xfs_daddr_to_agno(mp,d) \
48 ((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks)) 48 ((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks))
49#define XFS_DADDR_TO_AGBNO(mp,d) \ 49#define xfs_daddr_to_agbno(mp,d) \
50 ((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks)) 50 ((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks))
51 51
52#else /* __KERNEL__ */ 52#else /* __KERNEL__ */
@@ -327,6 +327,8 @@ typedef struct xfs_mount {
327 spinlock_t m_sync_lock; /* work item list lock */ 327 spinlock_t m_sync_lock; /* work item list lock */
328 int m_sync_seq; /* sync thread generation no. */ 328 int m_sync_seq; /* sync thread generation no. */
329 wait_queue_head_t m_wait_single_sync_task; 329 wait_queue_head_t m_wait_single_sync_task;
330 __int64_t m_update_flags; /* sb flags we need to update
331 on the next remount,rw */
330} xfs_mount_t; 332} xfs_mount_t;
331 333
332/* 334/*
@@ -439,7 +441,6 @@ void xfs_do_force_shutdown(struct xfs_mount *mp, int flags, char *fname,
439 */ 441 */
440#define XFS_MFSI_QUIET 0x40 /* Be silent if mount errors found */ 442#define XFS_MFSI_QUIET 0x40 /* Be silent if mount errors found */
441 443
442#define XFS_DADDR_TO_AGNO(mp,d) xfs_daddr_to_agno(mp,d)
443static inline xfs_agnumber_t 444static inline xfs_agnumber_t
444xfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d) 445xfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d)
445{ 446{
@@ -448,7 +449,6 @@ xfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d)
448 return (xfs_agnumber_t) ld; 449 return (xfs_agnumber_t) ld;
449} 450}
450 451
451#define XFS_DADDR_TO_AGBNO(mp,d) xfs_daddr_to_agbno(mp,d)
452static inline xfs_agblock_t 452static inline xfs_agblock_t
453xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) 453xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d)
454{ 454{
@@ -514,6 +514,7 @@ extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t,
514 int64_t, int); 514 int64_t, int);
515extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, 515extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *,
516 uint, int); 516 uint, int);
517extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t);
517extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); 518extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int);
518extern int xfs_readsb(xfs_mount_t *, int); 519extern int xfs_readsb(xfs_mount_t *, int);
519extern void xfs_freesb(xfs_mount_t *); 520extern void xfs_freesb(xfs_mount_t *);
diff --git a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c
index 86471bb40fd4..58f85e9cd11d 100644
--- a/fs/xfs/xfs_rename.c
+++ b/fs/xfs/xfs_rename.c
@@ -147,7 +147,7 @@ xfs_rename(
147 xfs_sort_for_rename(src_dp, target_dp, src_ip, target_ip, 147 xfs_sort_for_rename(src_dp, target_dp, src_ip, target_ip,
148 inodes, &num_inodes); 148 inodes, &num_inodes);
149 149
150 XFS_BMAP_INIT(&free_list, &first_block); 150 xfs_bmap_init(&free_list, &first_block);
151 tp = xfs_trans_alloc(mp, XFS_TRANS_RENAME); 151 tp = xfs_trans_alloc(mp, XFS_TRANS_RENAME);
152 cancel_flags = XFS_TRANS_RELEASE_LOG_RES; 152 cancel_flags = XFS_TRANS_RELEASE_LOG_RES;
153 spaceres = XFS_RENAME_SPACE_RES(mp, target_name->len); 153 spaceres = XFS_RENAME_SPACE_RES(mp, target_name->len);
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index edf12c7b834c..c5bb86f3ec05 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -120,7 +120,7 @@ xfs_growfs_rt_alloc(
120 if ((error = xfs_trans_iget(mp, tp, ino, 0, 120 if ((error = xfs_trans_iget(mp, tp, ino, 0,
121 XFS_ILOCK_EXCL, &ip))) 121 XFS_ILOCK_EXCL, &ip)))
122 goto error_cancel; 122 goto error_cancel;
123 XFS_BMAP_INIT(&flist, &firstblock); 123 xfs_bmap_init(&flist, &firstblock);
124 /* 124 /*
125 * Allocate blocks to the bitmap file. 125 * Allocate blocks to the bitmap file.
126 */ 126 */
diff --git a/fs/xfs/xfs_rw.h b/fs/xfs/xfs_rw.h
index f87db5344ce6..f76c003ec55d 100644
--- a/fs/xfs/xfs_rw.h
+++ b/fs/xfs/xfs_rw.h
@@ -28,7 +28,6 @@ struct xfs_mount;
28 * file is a real time file or not, because the bmap code 28 * file is a real time file or not, because the bmap code
29 * does. 29 * does.
30 */ 30 */
31#define XFS_FSB_TO_DB(ip,fsb) xfs_fsb_to_db(ip,fsb)
32static inline xfs_daddr_t 31static inline xfs_daddr_t
33xfs_fsb_to_db(struct xfs_inode *ip, xfs_fsblock_t fsb) 32xfs_fsb_to_db(struct xfs_inode *ip, xfs_fsblock_t fsb)
34{ 33{
diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h
index 1ed71916e4c9..1b017c657494 100644
--- a/fs/xfs/xfs_sb.h
+++ b/fs/xfs/xfs_sb.h
@@ -505,7 +505,7 @@ static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp)
505 505
506#define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d)) 506#define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d))
507#define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \ 507#define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \
508 XFS_DADDR_TO_AGNO(mp,d), XFS_DADDR_TO_AGBNO(mp,d)) 508 xfs_daddr_to_agno(mp,d), xfs_daddr_to_agbno(mp,d))
509#define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \ 509#define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \
510 XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno)) 510 XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno))
511 511
diff --git a/fs/xfs/xfs_types.h b/fs/xfs/xfs_types.h
index 0f5191644ab2..b2f724502f1b 100644
--- a/fs/xfs/xfs_types.h
+++ b/fs/xfs/xfs_types.h
@@ -45,7 +45,7 @@ typedef __uint32_t prid_t; /* project ID */
45typedef __uint32_t inst_t; /* an instruction */ 45typedef __uint32_t inst_t; /* an instruction */
46 46
47typedef __s64 xfs_off_t; /* <file offset> type */ 47typedef __s64 xfs_off_t; /* <file offset> type */
48typedef __u64 xfs_ino_t; /* <inode> type */ 48typedef unsigned long long xfs_ino_t; /* <inode> type */
49typedef __s64 xfs_daddr_t; /* <disk address> type */ 49typedef __s64 xfs_daddr_t; /* <disk address> type */
50typedef char * xfs_caddr_t; /* <core address> type */ 50typedef char * xfs_caddr_t; /* <core address> type */
51typedef __u32 xfs_dev_t; 51typedef __u32 xfs_dev_t;
@@ -111,8 +111,6 @@ typedef __uint64_t xfs_fileoff_t; /* block number in a file */
111typedef __int64_t xfs_sfiloff_t; /* signed block number in a file */ 111typedef __int64_t xfs_sfiloff_t; /* signed block number in a file */
112typedef __uint64_t xfs_filblks_t; /* number of blocks in a file */ 112typedef __uint64_t xfs_filblks_t; /* number of blocks in a file */
113 113
114typedef __uint8_t xfs_arch_t; /* architecture of an xfs fs */
115
116/* 114/*
117 * Null values for the types. 115 * Null values for the types.
118 */ 116 */
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
index f07bf8768c3a..0e55c5d7db5f 100644
--- a/fs/xfs/xfs_vnodeops.c
+++ b/fs/xfs/xfs_vnodeops.c
@@ -862,7 +862,7 @@ xfs_inactive_symlink_rmt(
862 * Find the block(s) so we can inval and unmap them. 862 * Find the block(s) so we can inval and unmap them.
863 */ 863 */
864 done = 0; 864 done = 0;
865 XFS_BMAP_INIT(&free_list, &first_block); 865 xfs_bmap_init(&free_list, &first_block);
866 nmaps = ARRAY_SIZE(mval); 866 nmaps = ARRAY_SIZE(mval);
867 if ((error = xfs_bmapi(tp, ip, 0, XFS_B_TO_FSB(mp, size), 867 if ((error = xfs_bmapi(tp, ip, 0, XFS_B_TO_FSB(mp, size),
868 XFS_BMAPI_METADATA, &first_block, 0, mval, &nmaps, 868 XFS_BMAPI_METADATA, &first_block, 0, mval, &nmaps,
@@ -1288,7 +1288,7 @@ xfs_inactive(
1288 /* 1288 /*
1289 * Free the inode. 1289 * Free the inode.
1290 */ 1290 */
1291 XFS_BMAP_INIT(&free_list, &first_block); 1291 xfs_bmap_init(&free_list, &first_block);
1292 error = xfs_ifree(tp, ip, &free_list); 1292 error = xfs_ifree(tp, ip, &free_list);
1293 if (error) { 1293 if (error) {
1294 /* 1294 /*
@@ -1461,7 +1461,7 @@ xfs_create(
1461 xfs_ilock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT); 1461 xfs_ilock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT);
1462 unlock_dp_on_error = B_TRUE; 1462 unlock_dp_on_error = B_TRUE;
1463 1463
1464 XFS_BMAP_INIT(&free_list, &first_block); 1464 xfs_bmap_init(&free_list, &first_block);
1465 1465
1466 ASSERT(ip == NULL); 1466 ASSERT(ip == NULL);
1467 1467
@@ -1879,7 +1879,7 @@ xfs_remove(
1879 } 1879 }
1880 } 1880 }
1881 1881
1882 XFS_BMAP_INIT(&free_list, &first_block); 1882 xfs_bmap_init(&free_list, &first_block);
1883 error = xfs_dir_removename(tp, dp, name, ip->i_ino, 1883 error = xfs_dir_removename(tp, dp, name, ip->i_ino,
1884 &first_block, &free_list, resblks); 1884 &first_block, &free_list, resblks);
1885 if (error) { 1885 if (error) {
@@ -2059,7 +2059,7 @@ xfs_link(
2059 if (error) 2059 if (error)
2060 goto error_return; 2060 goto error_return;
2061 2061
2062 XFS_BMAP_INIT(&free_list, &first_block); 2062 xfs_bmap_init(&free_list, &first_block);
2063 2063
2064 error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino, 2064 error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino,
2065 &first_block, &free_list, resblks); 2065 &first_block, &free_list, resblks);
@@ -2231,7 +2231,7 @@ xfs_mkdir(
2231 xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL); 2231 xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL);
2232 unlock_dp_on_error = B_FALSE; 2232 unlock_dp_on_error = B_FALSE;
2233 2233
2234 XFS_BMAP_INIT(&free_list, &first_block); 2234 xfs_bmap_init(&free_list, &first_block);
2235 2235
2236 error = xfs_dir_createname(tp, dp, dir_name, cdp->i_ino, 2236 error = xfs_dir_createname(tp, dp, dir_name, cdp->i_ino,
2237 &first_block, &free_list, resblks ? 2237 &first_block, &free_list, resblks ?
@@ -2438,7 +2438,7 @@ xfs_symlink(
2438 * Initialize the bmap freelist prior to calling either 2438 * Initialize the bmap freelist prior to calling either
2439 * bmapi or the directory create code. 2439 * bmapi or the directory create code.
2440 */ 2440 */
2441 XFS_BMAP_INIT(&free_list, &first_block); 2441 xfs_bmap_init(&free_list, &first_block);
2442 2442
2443 /* 2443 /*
2444 * Allocate an inode for the symlink. 2444 * Allocate an inode for the symlink.
@@ -2860,7 +2860,7 @@ retry:
2860 /* 2860 /*
2861 * Issue the xfs_bmapi() call to allocate the blocks 2861 * Issue the xfs_bmapi() call to allocate the blocks
2862 */ 2862 */
2863 XFS_BMAP_INIT(&free_list, &firstfsb); 2863 xfs_bmap_init(&free_list, &firstfsb);
2864 error = xfs_bmapi(tp, ip, startoffset_fsb, 2864 error = xfs_bmapi(tp, ip, startoffset_fsb,
2865 allocatesize_fsb, bmapi_flag, 2865 allocatesize_fsb, bmapi_flag,
2866 &firstfsb, 0, imapp, &nimaps, 2866 &firstfsb, 0, imapp, &nimaps,
@@ -2980,7 +2980,7 @@ xfs_zero_remaining_bytes(
2980 XFS_BUF_UNDONE(bp); 2980 XFS_BUF_UNDONE(bp);
2981 XFS_BUF_UNWRITE(bp); 2981 XFS_BUF_UNWRITE(bp);
2982 XFS_BUF_READ(bp); 2982 XFS_BUF_READ(bp);
2983 XFS_BUF_SET_ADDR(bp, XFS_FSB_TO_DB(ip, imap.br_startblock)); 2983 XFS_BUF_SET_ADDR(bp, xfs_fsb_to_db(ip, imap.br_startblock));
2984 xfsbdstrat(mp, bp); 2984 xfsbdstrat(mp, bp);
2985 error = xfs_iowait(bp); 2985 error = xfs_iowait(bp);
2986 if (error) { 2986 if (error) {
@@ -3186,7 +3186,7 @@ xfs_free_file_space(
3186 /* 3186 /*
3187 * issue the bunmapi() call to free the blocks 3187 * issue the bunmapi() call to free the blocks
3188 */ 3188 */
3189 XFS_BMAP_INIT(&free_list, &firstfsb); 3189 xfs_bmap_init(&free_list, &firstfsb);
3190 error = xfs_bunmapi(tp, ip, startoffset_fsb, 3190 error = xfs_bunmapi(tp, ip, startoffset_fsb,
3191 endoffset_fsb - startoffset_fsb, 3191 endoffset_fsb - startoffset_fsb,
3192 0, 2, &firstfsb, &free_list, NULL, &done); 3192 0, 2, &firstfsb, &free_list, NULL, &done);
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h
index 813e4b6c2c0d..bf8d4cfd8cf5 100644
--- a/include/acpi/actbl.h
+++ b/include/acpi/actbl.h
@@ -245,7 +245,7 @@ struct acpi_table_fadt {
245#define ACPI_FADT_POWER_BUTTON (1<<4) /* 04: Power button is handled as a generic feature */ 245#define ACPI_FADT_POWER_BUTTON (1<<4) /* 04: Power button is handled as a generic feature */
246#define ACPI_FADT_SLEEP_BUTTON (1<<5) /* 05: Sleep button is handled as a generic feature, or not present */ 246#define ACPI_FADT_SLEEP_BUTTON (1<<5) /* 05: Sleep button is handled as a generic feature, or not present */
247#define ACPI_FADT_FIXED_RTC (1<<6) /* 06: RTC wakeup stat not in fixed register space */ 247#define ACPI_FADT_FIXED_RTC (1<<6) /* 06: RTC wakeup stat not in fixed register space */
248#define ACPI_FADT_S4_RTC_WAKE (1<<7) /* 07: RTC wakeup stat not possible from S4 */ 248#define ACPI_FADT_S4_RTC_WAKE (1<<7) /* 07: RTC wakeup possible from S4 */
249#define ACPI_FADT_32BIT_TIMER (1<<8) /* 08: tmr_val is 32 bits 0=24-bits */ 249#define ACPI_FADT_32BIT_TIMER (1<<8) /* 08: tmr_val is 32 bits 0=24-bits */
250#define ACPI_FADT_DOCKING_SUPPORTED (1<<9) /* 09: Docking supported */ 250#define ACPI_FADT_DOCKING_SUPPORTED (1<<9) /* 09: Docking supported */
251#define ACPI_FADT_RESET_REGISTER (1<<10) /* 10: System reset via the FADT RESET_REG supported */ 251#define ACPI_FADT_RESET_REGISTER (1<<10) /* 10: System reset via the FADT RESET_REG supported */
diff --git a/include/asm-frv/Kbuild b/include/asm-frv/Kbuild
index 1f44e7c76995..0f8956def738 100644
--- a/include/asm-frv/Kbuild
+++ b/include/asm-frv/Kbuild
@@ -3,4 +3,3 @@ include include/asm-generic/Kbuild.asm
3header-y += registers.h 3header-y += registers.h
4 4
5unifdef-y += termios.h 5unifdef-y += termios.h
6unifdef-y += swab.h
diff --git a/include/asm-frv/byteorder.h b/include/asm-frv/byteorder.h
index 1187e51ecd13..f29b7593e088 100644
--- a/include/asm-frv/byteorder.h
+++ b/include/asm-frv/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _ASM_BYTEORDER_H 1#ifndef _ASM_BYTEORDER_H
2#define _ASM_BYTEORDER_H 2#define _ASM_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/big_endian.h> 4#include <linux/byteorder/big_endian.h>
6 5
7#endif /* _ASM_BYTEORDER_H */ 6#endif /* _ASM_BYTEORDER_H */
diff --git a/include/asm-generic/Kbuild.asm b/include/asm-generic/Kbuild.asm
index 1870d5e05f1c..70d185534b9d 100644
--- a/include/asm-generic/Kbuild.asm
+++ b/include/asm-generic/Kbuild.asm
@@ -31,6 +31,7 @@ unifdef-y += socket.h
31unifdef-y += sockios.h 31unifdef-y += sockios.h
32unifdef-y += stat.h 32unifdef-y += stat.h
33unifdef-y += statfs.h 33unifdef-y += statfs.h
34unifdef-y += swab.h
34unifdef-y += termbits.h 35unifdef-y += termbits.h
35unifdef-y += termios.h 36unifdef-y += termios.h
36unifdef-y += types.h 37unifdef-y += types.h
diff --git a/include/asm-generic/bitops/__ffs.h b/include/asm-generic/bitops/__ffs.h
index 9a3274aecf83..937d7c435575 100644
--- a/include/asm-generic/bitops/__ffs.h
+++ b/include/asm-generic/bitops/__ffs.h
@@ -9,7 +9,7 @@
9 * 9 *
10 * Undefined if no bit exists, so code should check against 0 first. 10 * Undefined if no bit exists, so code should check against 0 first.
11 */ 11 */
12static inline unsigned long __ffs(unsigned long word) 12static __always_inline unsigned long __ffs(unsigned long word)
13{ 13{
14 int num = 0; 14 int num = 0;
15 15
diff --git a/include/asm-generic/bitops/__fls.h b/include/asm-generic/bitops/__fls.h
index be24465403d6..a60a7ccb6782 100644
--- a/include/asm-generic/bitops/__fls.h
+++ b/include/asm-generic/bitops/__fls.h
@@ -9,7 +9,7 @@
9 * 9 *
10 * Undefined if no set bit exists, so code should check against 0 first. 10 * Undefined if no set bit exists, so code should check against 0 first.
11 */ 11 */
12static inline unsigned long __fls(unsigned long word) 12static __always_inline unsigned long __fls(unsigned long word)
13{ 13{
14 int num = BITS_PER_LONG - 1; 14 int num = BITS_PER_LONG - 1;
15 15
diff --git a/include/asm-generic/bitops/fls.h b/include/asm-generic/bitops/fls.h
index 850859bc5069..0576d1f42f43 100644
--- a/include/asm-generic/bitops/fls.h
+++ b/include/asm-generic/bitops/fls.h
@@ -9,7 +9,7 @@
9 * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. 9 * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
10 */ 10 */
11 11
12static inline int fls(int x) 12static __always_inline int fls(int x)
13{ 13{
14 int r = 32; 14 int r = 32;
15 15
diff --git a/include/asm-generic/bitops/fls64.h b/include/asm-generic/bitops/fls64.h
index 86d403f8b256..b097cf8444e3 100644
--- a/include/asm-generic/bitops/fls64.h
+++ b/include/asm-generic/bitops/fls64.h
@@ -15,7 +15,7 @@
15 * at position 64. 15 * at position 64.
16 */ 16 */
17#if BITS_PER_LONG == 32 17#if BITS_PER_LONG == 32
18static inline int fls64(__u64 x) 18static __always_inline int fls64(__u64 x)
19{ 19{
20 __u32 h = x >> 32; 20 __u32 h = x >> 32;
21 if (h) 21 if (h)
@@ -23,7 +23,7 @@ static inline int fls64(__u64 x)
23 return fls(x); 23 return fls(x);
24} 24}
25#elif BITS_PER_LONG == 64 25#elif BITS_PER_LONG == 64
26static inline int fls64(__u64 x) 26static __always_inline int fls64(__u64 x)
27{ 27{
28 if (x == 0) 28 if (x == 0)
29 return 0; 29 return 0;
diff --git a/include/asm-generic/rtc.h b/include/asm-generic/rtc.h
index 89061c1a67d4..763e3b060f43 100644
--- a/include/asm-generic/rtc.h
+++ b/include/asm-generic/rtc.h
@@ -42,7 +42,7 @@ static inline unsigned char rtc_is_updating(void)
42 return uip; 42 return uip;
43} 43}
44 44
45static inline unsigned int get_rtc_time(struct rtc_time *time) 45static inline unsigned int __get_rtc_time(struct rtc_time *time)
46{ 46{
47 unsigned char ctrl; 47 unsigned char ctrl;
48 unsigned long flags; 48 unsigned long flags;
@@ -108,8 +108,12 @@ static inline unsigned int get_rtc_time(struct rtc_time *time)
108 return RTC_24H; 108 return RTC_24H;
109} 109}
110 110
111#ifndef get_rtc_time
112#define get_rtc_time __get_rtc_time
113#endif
114
111/* Set the current date and time in the real time clock. */ 115/* Set the current date and time in the real time clock. */
112static inline int set_rtc_time(struct rtc_time *time) 116static inline int __set_rtc_time(struct rtc_time *time)
113{ 117{
114 unsigned long flags; 118 unsigned long flags;
115 unsigned char mon, day, hrs, min, sec; 119 unsigned char mon, day, hrs, min, sec;
@@ -190,11 +194,15 @@ static inline int set_rtc_time(struct rtc_time *time)
190 return 0; 194 return 0;
191} 195}
192 196
197#ifndef set_rtc_time
198#define set_rtc_time __set_rtc_time
199#endif
200
193static inline unsigned int get_rtc_ss(void) 201static inline unsigned int get_rtc_ss(void)
194{ 202{
195 struct rtc_time h; 203 struct rtc_time h;
196 204
197 get_rtc_time(&h); 205 __get_rtc_time(&h);
198 return h.tm_sec; 206 return h.tm_sec;
199} 207}
200 208
diff --git a/include/asm-m32r/Kbuild b/include/asm-m32r/Kbuild
index 27b108a86b39..c68e1680da01 100644
--- a/include/asm-m32r/Kbuild
+++ b/include/asm-m32r/Kbuild
@@ -1,2 +1 @@
1include include/asm-generic/Kbuild.asm include include/asm-generic/Kbuild.asm
2unifdef-y += swab.h
diff --git a/include/asm-m32r/byteorder.h b/include/asm-m32r/byteorder.h
index 61ff9cfd8451..21855d8b028b 100644
--- a/include/asm-m32r/byteorder.h
+++ b/include/asm-m32r/byteorder.h
@@ -1,8 +1,6 @@
1#ifndef _ASM_M32R_BYTEORDER_H 1#ifndef _ASM_M32R_BYTEORDER_H
2#define _ASM_M32R_BYTEORDER_H 2#define _ASM_M32R_BYTEORDER_H
3 3
4#include <asm/swab.h>
5
6#if defined(__LITTLE_ENDIAN__) 4#if defined(__LITTLE_ENDIAN__)
7# include <linux/byteorder/little_endian.h> 5# include <linux/byteorder/little_endian.h>
8#else 6#else
diff --git a/include/asm-m68k/auxvec.h b/include/asm-m68k/auxvec.h
deleted file mode 100644
index 844d6d52204b..000000000000
--- a/include/asm-m68k/auxvec.h
+++ /dev/null
@@ -1,4 +0,0 @@
1#ifndef __ASMm68k_AUXVEC_H
2#define __ASMm68k_AUXVEC_H
3
4#endif
diff --git a/include/asm-m68k/device.h b/include/asm-m68k/device.h
deleted file mode 100644
index d8f9872b0e2d..000000000000
--- a/include/asm-m68k/device.h
+++ /dev/null
@@ -1,7 +0,0 @@
1/*
2 * Arch specific extensions to struct device
3 *
4 * This file is released under the GPLv2
5 */
6#include <asm-generic/device.h>
7
diff --git a/include/asm-m68k/emergency-restart.h b/include/asm-m68k/emergency-restart.h
deleted file mode 100644
index 108d8c48e42e..000000000000
--- a/include/asm-m68k/emergency-restart.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef _ASM_EMERGENCY_RESTART_H
2#define _ASM_EMERGENCY_RESTART_H
3
4#include <asm-generic/emergency-restart.h>
5
6#endif /* _ASM_EMERGENCY_RESTART_H */
diff --git a/include/asm-m68k/futex.h b/include/asm-m68k/futex.h
deleted file mode 100644
index 6a332a9f099c..000000000000
--- a/include/asm-m68k/futex.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef _ASM_FUTEX_H
2#define _ASM_FUTEX_H
3
4#include <asm-generic/futex.h>
5
6#endif
diff --git a/include/asm-m68k/ioctl.h b/include/asm-m68k/ioctl.h
deleted file mode 100644
index b279fe06dfe5..000000000000
--- a/include/asm-m68k/ioctl.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-generic/ioctl.h>
diff --git a/include/asm-m68k/irq_regs.h b/include/asm-m68k/irq_regs.h
deleted file mode 100644
index 3dd9c0b70270..000000000000
--- a/include/asm-m68k/irq_regs.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-generic/irq_regs.h>
diff --git a/include/asm-m68k/kdebug.h b/include/asm-m68k/kdebug.h
deleted file mode 100644
index 6ece1b037665..000000000000
--- a/include/asm-m68k/kdebug.h
+++ /dev/null
@@ -1 +0,0 @@
1#include <asm-generic/kdebug.h>
diff --git a/include/asm-m68k/mutex.h b/include/asm-m68k/mutex.h
deleted file mode 100644
index 458c1f7fbc18..000000000000
--- a/include/asm-m68k/mutex.h
+++ /dev/null
@@ -1,9 +0,0 @@
1/*
2 * Pull in the generic implementation for the mutex fastpath.
3 *
4 * TODO: implement optimized primitives instead, or leave the generic
5 * implementation in place, or pick the atomic_xchg() based generic
6 * implementation. (see asm-generic/mutex-xchg.h for details)
7 */
8
9#include <asm-generic/mutex-dec.h>
diff --git a/include/asm-m68k/topology.h b/include/asm-m68k/topology.h
deleted file mode 100644
index ca173e9f26ff..000000000000
--- a/include/asm-m68k/topology.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef _ASM_M68K_TOPOLOGY_H
2#define _ASM_M68K_TOPOLOGY_H
3
4#include <asm-generic/topology.h>
5
6#endif /* _ASM_M68K_TOPOLOGY_H */
diff --git a/include/asm-mn10300/Kbuild b/include/asm-mn10300/Kbuild
index 27b108a86b39..c68e1680da01 100644
--- a/include/asm-mn10300/Kbuild
+++ b/include/asm-mn10300/Kbuild
@@ -1,2 +1 @@
1include include/asm-generic/Kbuild.asm include include/asm-generic/Kbuild.asm
2unifdef-y += swab.h
diff --git a/include/asm-mn10300/byteorder.h b/include/asm-mn10300/byteorder.h
index 45b18ded19e6..5dd0bdd9feee 100644
--- a/include/asm-mn10300/byteorder.h
+++ b/include/asm-mn10300/byteorder.h
@@ -1,7 +1,6 @@
1#ifndef _ASM_BYTEORDER_H 1#ifndef _ASM_BYTEORDER_H
2#define _ASM_BYTEORDER_H 2#define _ASM_BYTEORDER_H
3 3
4#include <asm/swab.h>
5#include <linux/byteorder/little_endian.h> 4#include <linux/byteorder/little_endian.h>
6 5
7#endif /* _ASM_BYTEORDER_H */ 6#endif /* _ASM_BYTEORDER_H */
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 0acb07f31fa4..d54de24bf371 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -395,7 +395,7 @@ struct drm_connector_funcs {
395 void (*save)(struct drm_connector *connector); 395 void (*save)(struct drm_connector *connector);
396 void (*restore)(struct drm_connector *connector); 396 void (*restore)(struct drm_connector *connector);
397 enum drm_connector_status (*detect)(struct drm_connector *connector); 397 enum drm_connector_status (*detect)(struct drm_connector *connector);
398 void (*fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height); 398 int (*fill_modes)(struct drm_connector *connector, uint32_t max_width, uint32_t max_height);
399 int (*set_property)(struct drm_connector *connector, struct drm_property *property, 399 int (*set_property)(struct drm_connector *connector, struct drm_property *property,
400 uint64_t val); 400 uint64_t val);
401 void (*destroy)(struct drm_connector *connector); 401 void (*destroy)(struct drm_connector *connector);
@@ -528,7 +528,8 @@ struct drm_mode_group {
528 * 528 *
529 */ 529 */
530struct drm_mode_config { 530struct drm_mode_config {
531 struct mutex mutex; /* protects configuration and IDR */ 531 struct mutex mutex; /* protects configuration (mode lists etc.) */
532 struct mutex idr_mutex; /* for IDR management */
532 struct idr crtc_idr; /* use this idr for all IDs, fb, crtc, connector, modes - just makes life easier */ 533 struct idr crtc_idr; /* use this idr for all IDs, fb, crtc, connector, modes - just makes life easier */
533 /* this is limited to one for now */ 534 /* this is limited to one for now */
534 int num_fb; 535 int num_fb;
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
index 4bc04cf460a7..0c6f0e11b41b 100644
--- a/include/drm/drm_crtc_helper.h
+++ b/include/drm/drm_crtc_helper.h
@@ -88,7 +88,7 @@ struct drm_connector_helper_funcs {
88 struct drm_encoder *(*best_encoder)(struct drm_connector *connector); 88 struct drm_encoder *(*best_encoder)(struct drm_connector *connector);
89}; 89};
90 90
91extern void drm_helper_probe_single_connector_modes(struct drm_connector *connector, uint32_t maxX, uint32_t maxY); 91extern int drm_helper_probe_single_connector_modes(struct drm_connector *connector, uint32_t maxX, uint32_t maxY);
92extern void drm_helper_disable_unused_functions(struct drm_device *dev); 92extern void drm_helper_disable_unused_functions(struct drm_device *dev);
93extern int drm_helper_hotplug_stage_two(struct drm_device *dev); 93extern int drm_helper_hotplug_stage_two(struct drm_device *dev);
94extern bool drm_helper_initial_config(struct drm_device *dev, bool can_grow); 94extern bool drm_helper_initial_config(struct drm_device *dev, bool can_grow);
diff --git a/include/linux/agpgart.h b/include/linux/agpgart.h
index c8fdb6e658e1..110c600c885f 100644
--- a/include/linux/agpgart.h
+++ b/include/linux/agpgart.h
@@ -52,7 +52,6 @@
52 52
53#ifndef __KERNEL__ 53#ifndef __KERNEL__
54#include <linux/types.h> 54#include <linux/types.h>
55#include <asm/types.h>
56 55
57struct agp_version { 56struct agp_version {
58 __u16 major; 57 __u16 major;
diff --git a/include/linux/atm_idt77105.h b/include/linux/atm_idt77105.h
index 05621cf20709..8b724000aa50 100644
--- a/include/linux/atm_idt77105.h
+++ b/include/linux/atm_idt77105.h
@@ -7,7 +7,7 @@
7#ifndef LINUX_ATM_IDT77105_H 7#ifndef LINUX_ATM_IDT77105_H
8#define LINUX_ATM_IDT77105_H 8#define LINUX_ATM_IDT77105_H
9 9
10#include <asm/types.h> 10#include <linux/types.h>
11#include <linux/atmioc.h> 11#include <linux/atmioc.h>
12#include <linux/atmdev.h> 12#include <linux/atmdev.h>
13 13
diff --git a/include/linux/capi.h b/include/linux/capi.h
index fdebaaa9f66e..65100d6cb89b 100644
--- a/include/linux/capi.h
+++ b/include/linux/capi.h
@@ -12,7 +12,7 @@
12#ifndef __LINUX_CAPI_H__ 12#ifndef __LINUX_CAPI_H__
13#define __LINUX_CAPI_H__ 13#define __LINUX_CAPI_H__
14 14
15#include <asm/types.h> 15#include <linux/types.h>
16#include <linux/ioctl.h> 16#include <linux/ioctl.h>
17#ifndef __KERNEL__ 17#ifndef __KERNEL__
18#include <linux/kernelcapi.h> 18#include <linux/kernelcapi.h>
diff --git a/include/linux/compat.h b/include/linux/compat.h
index e88f3ecf38b4..3fd2194ff573 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -280,5 +280,18 @@ asmlinkage long compat_sys_timerfd_settime(int ufd, int flags,
280asmlinkage long compat_sys_timerfd_gettime(int ufd, 280asmlinkage long compat_sys_timerfd_gettime(int ufd,
281 struct compat_itimerspec __user *otmr); 281 struct compat_itimerspec __user *otmr);
282 282
283asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
284 __u32 __user *pages,
285 const int __user *nodes,
286 int __user *status,
287 int flags);
288asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename,
289 struct compat_timeval __user *t);
290asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
291 struct compat_stat __user *statbuf,
292 int flag);
293asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
294 int flags, int mode);
295
283#endif /* CONFIG_COMPAT */ 296#endif /* CONFIG_COMPAT */
284#endif /* _LINUX_COMPAT_H */ 297#endif /* _LINUX_COMPAT_H */
diff --git a/include/linux/connector.h b/include/linux/connector.h
index 5c7f9468f753..34f2789d9b9b 100644
--- a/include/linux/connector.h
+++ b/include/linux/connector.h
@@ -22,7 +22,7 @@
22#ifndef __CONNECTOR_H 22#ifndef __CONNECTOR_H
23#define __CONNECTOR_H 23#define __CONNECTOR_H
24 24
25#include <asm/types.h> 25#include <linux/types.h>
26 26
27#define CN_IDX_CONNECTOR 0xffffffff 27#define CN_IDX_CONNECTOR 0xffffffff
28#define CN_VAL_CONNECTOR 0xffffffff 28#define CN_VAL_CONNECTOR 0xffffffff
diff --git a/include/linux/cyclades.h b/include/linux/cyclades.h
index 2d3d1e04ba92..d06fbf286346 100644
--- a/include/linux/cyclades.h
+++ b/include/linux/cyclades.h
@@ -150,8 +150,6 @@ struct CYZ_BOOT_CTRL {
150 * architectures and compilers. 150 * architectures and compilers.
151 */ 151 */
152 152
153#include <asm/types.h>
154
155typedef __u64 ucdouble; /* 64 bits, unsigned */ 153typedef __u64 ucdouble; /* 64 bits, unsigned */
156typedef __u32 uclong; /* 32 bits, unsigned */ 154typedef __u32 uclong; /* 32 bits, unsigned */
157typedef __u16 ucshort; /* 16 bits, unsigned */ 155typedef __u16 ucshort; /* 16 bits, unsigned */
diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h
index 23936b16426b..0f5c33b0bd3e 100644
--- a/include/linux/debugfs.h
+++ b/include/linux/debugfs.h
@@ -162,6 +162,13 @@ static inline struct dentry *debugfs_create_x32(const char *name, mode_t mode,
162 return ERR_PTR(-ENODEV); 162 return ERR_PTR(-ENODEV);
163} 163}
164 164
165struct dentry *debugfs_create_size_t(const char *name, mode_t mode,
166 struct dentry *parent,
167 size_t *value)
168{
169 return ERR_PTR(-ENODEV);
170}
171
165static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode, 172static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode,
166 struct dentry *parent, 173 struct dentry *parent,
167 u32 *value) 174 u32 *value)
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
index c73f1e2b59b7..3e0f64c335c8 100644
--- a/include/linux/dmaengine.h
+++ b/include/linux/dmaengine.h
@@ -297,6 +297,11 @@ static inline void async_tx_ack(struct dma_async_tx_descriptor *tx)
297 tx->flags |= DMA_CTRL_ACK; 297 tx->flags |= DMA_CTRL_ACK;
298} 298}
299 299
300static inline void async_tx_clear_ack(struct dma_async_tx_descriptor *tx)
301{
302 tx->flags &= ~DMA_CTRL_ACK;
303}
304
300static inline bool async_tx_test_ack(struct dma_async_tx_descriptor *tx) 305static inline bool async_tx_test_ack(struct dma_async_tx_descriptor *tx)
301{ 306{
302 return (tx->flags & DMA_CTRL_ACK) == DMA_CTRL_ACK; 307 return (tx->flags & DMA_CTRL_ACK) == DMA_CTRL_ACK;
@@ -400,11 +405,16 @@ static inline enum dma_status dma_async_is_complete(dma_cookie_t cookie,
400enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie); 405enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie);
401#ifdef CONFIG_DMA_ENGINE 406#ifdef CONFIG_DMA_ENGINE
402enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx); 407enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx);
408void dma_issue_pending_all(void);
403#else 409#else
404static inline enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx) 410static inline enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx)
405{ 411{
406 return DMA_SUCCESS; 412 return DMA_SUCCESS;
407} 413}
414static inline void dma_issue_pending_all(void)
415{
416 do { } while (0);
417}
408#endif 418#endif
409 419
410/* --- DMA device --- */ 420/* --- DMA device --- */
@@ -413,7 +423,6 @@ int dma_async_device_register(struct dma_device *device);
413void dma_async_device_unregister(struct dma_device *device); 423void dma_async_device_unregister(struct dma_device *device);
414void dma_run_dependencies(struct dma_async_tx_descriptor *tx); 424void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
415struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type); 425struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type);
416void dma_issue_pending_all(void);
417#define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y) 426#define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)
418struct dma_chan *__dma_request_channel(dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param); 427struct dma_chan *__dma_request_channel(dma_cap_mask_t *mask, dma_filter_fn fn, void *fn_param);
419void dma_release_channel(struct dma_chan *chan); 428void dma_release_channel(struct dma_chan *chan);
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 1ee63df5be92..818fe21257e8 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -1,7 +1,7 @@
1#ifndef _LINUX_FB_H 1#ifndef _LINUX_FB_H
2#define _LINUX_FB_H 2#define _LINUX_FB_H
3 3
4#include <asm/types.h> 4#include <linux/types.h>
5#include <linux/i2c.h> 5#include <linux/i2c.h>
6 6
7struct dentry; 7struct dentry;
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 3644f6323384..194da5a4b0d6 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -871,7 +871,7 @@ struct ide_host {
871 ide_hwif_t *cur_port; /* for hosts requiring serialization */ 871 ide_hwif_t *cur_port; /* for hosts requiring serialization */
872 872
873 /* used for hosts requiring serialization */ 873 /* used for hosts requiring serialization */
874 volatile long host_busy; 874 volatile unsigned long host_busy;
875}; 875};
876 876
877#define IDE_HOST_BUSY 0 877#define IDE_HOST_BUSY 0
diff --git a/include/linux/if_frad.h b/include/linux/if_frad.h
index 5c34240de746..60e16a551dd6 100644
--- a/include/linux/if_frad.h
+++ b/include/linux/if_frad.h
@@ -26,8 +26,6 @@
26 26
27#include <linux/if.h> 27#include <linux/if.h>
28 28
29#if defined(CONFIG_DLCI) || defined(CONFIG_DLCI_MODULE)
30
31/* Structures and constants associated with the DLCI device driver */ 29/* Structures and constants associated with the DLCI device driver */
32 30
33struct dlci_add 31struct dlci_add
@@ -127,6 +125,8 @@ struct frad_conf
127 125
128#ifdef __KERNEL__ 126#ifdef __KERNEL__
129 127
128#if defined(CONFIG_DLCI) || defined(CONFIG_DLCI_MODULE)
129
130/* these are the fields of an RFC 1490 header */ 130/* these are the fields of an RFC 1490 header */
131struct frhdr 131struct frhdr
132{ 132{
@@ -190,12 +190,10 @@ struct frad_local
190 int buffer; /* current buffer for S508 firmware */ 190 int buffer; /* current buffer for S508 firmware */
191}; 191};
192 192
193#endif /* __KERNEL__ */
194
195#endif /* CONFIG_DLCI || CONFIG_DLCI_MODULE */ 193#endif /* CONFIG_DLCI || CONFIG_DLCI_MODULE */
196 194
197#ifdef __KERNEL__
198extern void dlci_ioctl_set(int (*hook)(unsigned int, void __user *)); 195extern void dlci_ioctl_set(int (*hook)(unsigned int, void __user *));
199#endif 196
197#endif /* __KERNEL__ */
200 198
201#endif 199#endif
diff --git a/include/linux/if_pppol2tp.h b/include/linux/if_pppol2tp.h
index a7d6a2234b31..c7a66882b6d0 100644
--- a/include/linux/if_pppol2tp.h
+++ b/include/linux/if_pppol2tp.h
@@ -15,7 +15,7 @@
15#ifndef __LINUX_IF_PPPOL2TP_H 15#ifndef __LINUX_IF_PPPOL2TP_H
16#define __LINUX_IF_PPPOL2TP_H 16#define __LINUX_IF_PPPOL2TP_H
17 17
18#include <asm/types.h> 18#include <linux/types.h>
19 19
20#ifdef __KERNEL__ 20#ifdef __KERNEL__
21#include <linux/in.h> 21#include <linux/in.h>
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
index 6fb7f1788570..30c88b2245ff 100644
--- a/include/linux/if_pppox.h
+++ b/include/linux/if_pppox.h
@@ -17,7 +17,7 @@
17#define __LINUX_IF_PPPOX_H 17#define __LINUX_IF_PPPOX_H
18 18
19 19
20#include <asm/types.h> 20#include <linux/types.h>
21#include <asm/byteorder.h> 21#include <asm/byteorder.h>
22 22
23#ifdef __KERNEL__ 23#ifdef __KERNEL__
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index 2f3c2d4ef73b..ea0ea1a4c36f 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -48,6 +48,12 @@ extern struct fs_struct init_fs;
48 .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \ 48 .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \
49 .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \ 49 .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \
50 .rlim = INIT_RLIMITS, \ 50 .rlim = INIT_RLIMITS, \
51 .cputime = { .totals = { \
52 .utime = cputime_zero, \
53 .stime = cputime_zero, \
54 .sum_exec_runtime = 0, \
55 .lock = __SPIN_LOCK_UNLOCKED(sig.cputime.totals.lock), \
56 }, }, \
51} 57}
52 58
53extern struct nsproxy init_nsproxy; 59extern struct nsproxy init_nsproxy;
diff --git a/include/linux/input.h b/include/linux/input.h
index 9a6355f74db2..1249a0c20a38 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -16,7 +16,7 @@
16#include <sys/time.h> 16#include <sys/time.h>
17#include <sys/ioctl.h> 17#include <sys/ioctl.h>
18#include <sys/types.h> 18#include <sys/types.h>
19#include <asm/types.h> 19#include <linux/types.h>
20#endif 20#endif
21 21
22/* 22/*
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index f6bb2ca8e3ba..32e4b2f72294 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -143,7 +143,8 @@ static inline unsigned long resource_type(struct resource *res)
143 143
144extern struct resource * __request_region(struct resource *, 144extern struct resource * __request_region(struct resource *,
145 resource_size_t start, 145 resource_size_t start,
146 resource_size_t n, const char *name, int relaxed); 146 resource_size_t n,
147 const char *name, int flags);
147 148
148/* Compatibility cruft */ 149/* Compatibility cruft */
149#define release_region(start,n) __release_region(&ioport_resource, (start), (n)) 150#define release_region(start,n) __release_region(&ioport_resource, (start), (n))
diff --git a/include/linux/jbd.h b/include/linux/jbd.h
index 6384b19efe64..64246dce5663 100644
--- a/include/linux/jbd.h
+++ b/include/linux/jbd.h
@@ -614,6 +614,8 @@ struct transaction_s
614 * @j_wbufsize: maximum number of buffer_heads allowed in j_wbuf, the 614 * @j_wbufsize: maximum number of buffer_heads allowed in j_wbuf, the
615 * number that will fit in j_blocksize 615 * number that will fit in j_blocksize
616 * @j_last_sync_writer: most recent pid which did a synchronous write 616 * @j_last_sync_writer: most recent pid which did a synchronous write
617 * @j_average_commit_time: the average amount of time in nanoseconds it
618 * takes to commit a transaction to the disk.
617 * @j_private: An opaque pointer to fs-private information. 619 * @j_private: An opaque pointer to fs-private information.
618 */ 620 */
619 621
diff --git a/include/linux/joystick.h b/include/linux/joystick.h
index b5e051295a67..9e20c29c1e14 100644
--- a/include/linux/joystick.h
+++ b/include/linux/joystick.h
@@ -27,7 +27,7 @@
27 * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic 27 * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
28 */ 28 */
29 29
30#include <asm/types.h> 30#include <linux/types.h>
31#include <linux/input.h> 31#include <linux/input.h>
32 32
33/* 33/*
diff --git a/include/linux/klist.h b/include/linux/klist.h
index d5a27af9dba5..e91a4e59b771 100644
--- a/include/linux/klist.h
+++ b/include/linux/klist.h
@@ -22,7 +22,7 @@ struct klist {
22 struct list_head k_list; 22 struct list_head k_list;
23 void (*get)(struct klist_node *); 23 void (*get)(struct klist_node *);
24 void (*put)(struct klist_node *); 24 void (*put)(struct klist_node *);
25}; 25} __attribute__ ((aligned (4)));
26 26
27#define KLIST_INIT(_name, _get, _put) \ 27#define KLIST_INIT(_name, _get, _put) \
28 { .k_lock = __SPIN_LOCK_UNLOCKED(_name.k_lock), \ 28 { .k_lock = __SPIN_LOCK_UNLOCKED(_name.k_lock), \
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index 35525ac63337..5715f1907601 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -7,7 +7,7 @@
7 * Note: you must update KVM_API_VERSION if you change this interface. 7 * Note: you must update KVM_API_VERSION if you change this interface.
8 */ 8 */
9 9
10#include <asm/types.h> 10#include <linux/types.h>
11#include <linux/compiler.h> 11#include <linux/compiler.h>
12#include <linux/ioctl.h> 12#include <linux/ioctl.h>
13#include <asm/kvm.h> 13#include <asm/kvm.h>
diff --git a/include/linux/libata.h b/include/linux/libata.h
index b6b8a7f3ec66..2c6bd66209ff 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -401,12 +401,14 @@ enum {
401 ATA_TIMING_CYC8B, 401 ATA_TIMING_CYC8B,
402 ATA_TIMING_ACTIVE = (1 << 4), 402 ATA_TIMING_ACTIVE = (1 << 4),
403 ATA_TIMING_RECOVER = (1 << 5), 403 ATA_TIMING_RECOVER = (1 << 5),
404 ATA_TIMING_CYCLE = (1 << 6), 404 ATA_TIMING_DMACK_HOLD = (1 << 6),
405 ATA_TIMING_UDMA = (1 << 7), 405 ATA_TIMING_CYCLE = (1 << 7),
406 ATA_TIMING_UDMA = (1 << 8),
406 ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B | 407 ATA_TIMING_ALL = ATA_TIMING_SETUP | ATA_TIMING_ACT8B |
407 ATA_TIMING_REC8B | ATA_TIMING_CYC8B | 408 ATA_TIMING_REC8B | ATA_TIMING_CYC8B |
408 ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER | 409 ATA_TIMING_ACTIVE | ATA_TIMING_RECOVER |
409 ATA_TIMING_CYCLE | ATA_TIMING_UDMA, 410 ATA_TIMING_DMACK_HOLD | ATA_TIMING_CYCLE |
411 ATA_TIMING_UDMA,
410}; 412};
411 413
412enum ata_xfer_mask { 414enum ata_xfer_mask {
@@ -866,6 +868,7 @@ struct ata_timing {
866 unsigned short cyc8b; /* t0 for 8-bit I/O */ 868 unsigned short cyc8b; /* t0 for 8-bit I/O */
867 unsigned short active; /* t2 or tD */ 869 unsigned short active; /* t2 or tD */
868 unsigned short recover; /* t2i or tK */ 870 unsigned short recover; /* t2i or tK */
871 unsigned short dmack_hold; /* tj */
869 unsigned short cycle; /* t0 */ 872 unsigned short cycle; /* t0 */
870 unsigned short udma; /* t2CYCTYP/2 */ 873 unsigned short udma; /* t2CYCTYP/2 */
871}; 874};
@@ -927,6 +930,8 @@ extern void ata_host_init(struct ata_host *, struct device *,
927extern int ata_scsi_detect(struct scsi_host_template *sht); 930extern int ata_scsi_detect(struct scsi_host_template *sht);
928extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); 931extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
929extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); 932extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *));
933extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev,
934 int cmd, void __user *arg);
930extern void ata_sas_port_destroy(struct ata_port *); 935extern void ata_sas_port_destroy(struct ata_port *);
931extern struct ata_port *ata_sas_port_alloc(struct ata_host *, 936extern struct ata_port *ata_sas_port_alloc(struct ata_host *,
932 struct ata_port_info *, struct Scsi_Host *); 937 struct ata_port_info *, struct Scsi_Host *);
diff --git a/include/linux/loop.h b/include/linux/loop.h
index 46169a7b559b..6ffd6db5bb0d 100644
--- a/include/linux/loop.h
+++ b/include/linux/loop.h
@@ -80,7 +80,7 @@ enum {
80}; 80};
81 81
82#include <asm/posix_types.h> /* for __kernel_old_dev_t */ 82#include <asm/posix_types.h> /* for __kernel_old_dev_t */
83#include <asm/types.h> /* for __u64 */ 83#include <linux/types.h> /* for __u64 */
84 84
85/* Backwards compatibility version */ 85/* Backwards compatibility version */
86struct loop_info { 86struct loop_info {
diff --git a/include/linux/magic.h b/include/linux/magic.h
index 439f6f3cb0c4..0b4df7eba852 100644
--- a/include/linux/magic.h
+++ b/include/linux/magic.h
@@ -10,11 +10,13 @@
10#define SYSFS_MAGIC 0x62656572 10#define SYSFS_MAGIC 0x62656572
11#define SECURITYFS_MAGIC 0x73636673 11#define SECURITYFS_MAGIC 0x73636673
12#define TMPFS_MAGIC 0x01021994 12#define TMPFS_MAGIC 0x01021994
13#define SQUASHFS_MAGIC 0x73717368
13#define EFS_SUPER_MAGIC 0x414A53 14#define EFS_SUPER_MAGIC 0x414A53
14#define EXT2_SUPER_MAGIC 0xEF53 15#define EXT2_SUPER_MAGIC 0xEF53
15#define EXT3_SUPER_MAGIC 0xEF53 16#define EXT3_SUPER_MAGIC 0xEF53
16#define XENFS_SUPER_MAGIC 0xabba1974 17#define XENFS_SUPER_MAGIC 0xabba1974
17#define EXT4_SUPER_MAGIC 0xEF53 18#define EXT4_SUPER_MAGIC 0xEF53
19#define BTRFS_SUPER_MAGIC 0x9123683E
18#define HPFS_SUPER_MAGIC 0xf995e849 20#define HPFS_SUPER_MAGIC 0xf995e849
19#define ISOFS_SUPER_MAGIC 0x9660 21#define ISOFS_SUPER_MAGIC 0x9660
20#define JFFS2_SUPER_MAGIC 0x72b6 22#define JFFS2_SUPER_MAGIC 0x72b6
diff --git a/include/linux/matroxfb.h b/include/linux/matroxfb.h
index ae5b09493062..404f678e734b 100644
--- a/include/linux/matroxfb.h
+++ b/include/linux/matroxfb.h
@@ -2,7 +2,7 @@
2#define __LINUX_MATROXFB_H__ 2#define __LINUX_MATROXFB_H__
3 3
4#include <asm/ioctl.h> 4#include <asm/ioctl.h>
5#include <asm/types.h> 5#include <linux/types.h>
6#include <linux/videodev2.h> 6#include <linux/videodev2.h>
7 7
8struct matroxioc_output_mode { 8struct matroxioc_output_mode {
diff --git a/include/linux/mm.h b/include/linux/mm.h
index b91a73fd1bcc..e8ddc98b8405 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -260,7 +260,6 @@ static inline int put_page_testzero(struct page *page)
260 */ 260 */
261static inline int get_page_unless_zero(struct page *page) 261static inline int get_page_unless_zero(struct page *page)
262{ 262{
263 VM_BUG_ON(PageTail(page));
264 return atomic_inc_not_zero(&page->_count); 263 return atomic_inc_not_zero(&page->_count);
265} 264}
266 265
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index f24556813375..ec54785d34f9 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -467,7 +467,7 @@ struct netdev_queue {
467 * This function is called when network device transistions to the down 467 * This function is called when network device transistions to the down
468 * state. 468 * state.
469 * 469 *
470 * int (*ndo_hard_start_xmit)(struct sk_buff *skb, struct net_device *dev); 470 * int (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev);
471 * Called when a packet needs to be transmitted. 471 * Called when a packet needs to be transmitted.
472 * Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED, 472 * Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED,
473 * Required can not be NULL. 473 * Required can not be NULL.
@@ -795,6 +795,7 @@ struct net_device
795 NETREG_UNREGISTERING, /* called unregister_netdevice */ 795 NETREG_UNREGISTERING, /* called unregister_netdevice */
796 NETREG_UNREGISTERED, /* completed unregister todo */ 796 NETREG_UNREGISTERED, /* completed unregister todo */
797 NETREG_RELEASED, /* called free_netdev */ 797 NETREG_RELEASED, /* called free_netdev */
798 NETREG_DUMMY, /* dummy device for NAPI poll */
798 } reg_state; 799 } reg_state;
799 800
800 /* Called from unregister, can be used to call free_netdev */ 801 /* Called from unregister, can be used to call free_netdev */
@@ -1077,6 +1078,8 @@ extern void free_netdev(struct net_device *dev);
1077extern void synchronize_net(void); 1078extern void synchronize_net(void);
1078extern int register_netdevice_notifier(struct notifier_block *nb); 1079extern int register_netdevice_notifier(struct notifier_block *nb);
1079extern int unregister_netdevice_notifier(struct notifier_block *nb); 1080extern int unregister_netdevice_notifier(struct notifier_block *nb);
1081extern int init_dummy_netdev(struct net_device *dev);
1082
1080extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev); 1083extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
1081extern struct net_device *dev_get_by_index(struct net *net, int ifindex); 1084extern struct net_device *dev_get_by_index(struct net *net, int ifindex);
1082extern struct net_device *__dev_get_by_index(struct net *net, int ifindex); 1085extern struct net_device *__dev_get_by_index(struct net *net, int ifindex);
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
index e52ce475d19f..c7ee8744d26b 100644
--- a/include/linux/netfilter/x_tables.h
+++ b/include/linux/netfilter/x_tables.h
@@ -270,6 +270,7 @@ struct xt_match
270 struct list_head list; 270 struct list_head list;
271 271
272 const char name[XT_FUNCTION_MAXNAMELEN-1]; 272 const char name[XT_FUNCTION_MAXNAMELEN-1];
273 u_int8_t revision;
273 274
274 /* Return true or false: return FALSE and set *hotdrop = 1 to 275 /* Return true or false: return FALSE and set *hotdrop = 1 to
275 force immediate packet drop. */ 276 force immediate packet drop. */
@@ -302,7 +303,6 @@ struct xt_match
302 unsigned short proto; 303 unsigned short proto;
303 304
304 unsigned short family; 305 unsigned short family;
305 u_int8_t revision;
306}; 306};
307 307
308/* Registration hooks for targets. */ 308/* Registration hooks for targets. */
diff --git a/include/linux/of_i2c.h b/include/linux/of_i2c.h
index bd2a870ec296..34974b5a76f7 100644
--- a/include/linux/of_i2c.h
+++ b/include/linux/of_i2c.h
@@ -17,4 +17,7 @@
17void of_register_i2c_devices(struct i2c_adapter *adap, 17void of_register_i2c_devices(struct i2c_adapter *adap,
18 struct device_node *adap_node); 18 struct device_node *adap_node);
19 19
20/* must call put_device() when done with returned i2c_client device */
21struct i2c_client *of_find_i2c_device_by_node(struct device_node *node);
22
20#endif /* __LINUX_OF_I2C_H */ 23#endif /* __LINUX_OF_I2C_H */
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 80f8b8b65fde..48890cf3f96e 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -117,6 +117,10 @@ typedef int __bitwise pci_power_t;
117#define PCI_UNKNOWN ((pci_power_t __force) 5) 117#define PCI_UNKNOWN ((pci_power_t __force) 5)
118#define PCI_POWER_ERROR ((pci_power_t __force) -1) 118#define PCI_POWER_ERROR ((pci_power_t __force) -1)
119 119
120#define PCI_PM_D2_DELAY 200
121#define PCI_PM_D3_WAIT 10
122#define PCI_PM_BUS_WAIT 50
123
120/** The pci_channel state describes connectivity between the CPU and 124/** The pci_channel state describes connectivity between the CPU and
121 * the pci device. If some PCI bus between here and the pci device 125 * the pci device. If some PCI bus between here and the pci device
122 * has crashed or locked up, this info is reflected here. 126 * has crashed or locked up, this info is reflected here.
@@ -252,6 +256,7 @@ struct pci_dev {
252 unsigned int ari_enabled:1; /* ARI forwarding */ 256 unsigned int ari_enabled:1; /* ARI forwarding */
253 unsigned int is_managed:1; 257 unsigned int is_managed:1;
254 unsigned int is_pcie:1; 258 unsigned int is_pcie:1;
259 unsigned int state_saved:1;
255 pci_dev_flags_t dev_flags; 260 pci_dev_flags_t dev_flags;
256 atomic_t enable_cnt; /* pci_enable_device has been called */ 261 atomic_t enable_cnt; /* pci_enable_device has been called */
257 262
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index d543365518ab..d56ad9c21c09 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2174,6 +2174,7 @@
2174#define PCI_DEVICE_ID_RDC_R6040 0x6040 2174#define PCI_DEVICE_ID_RDC_R6040 0x6040
2175#define PCI_DEVICE_ID_RDC_R6060 0x6060 2175#define PCI_DEVICE_ID_RDC_R6060 0x6060
2176#define PCI_DEVICE_ID_RDC_R6061 0x6061 2176#define PCI_DEVICE_ID_RDC_R6061 0x6061
2177#define PCI_DEVICE_ID_RDC_D1010 0x1010
2177 2178
2178#define PCI_VENDOR_ID_LENOVO 0x17aa 2179#define PCI_VENDOR_ID_LENOVO 0x17aa
2179 2180
diff --git a/include/linux/phantom.h b/include/linux/phantom.h
index 02268c54c250..94dd6645c60a 100644
--- a/include/linux/phantom.h
+++ b/include/linux/phantom.h
@@ -10,7 +10,7 @@
10#ifndef __PHANTOM_H 10#ifndef __PHANTOM_H
11#define __PHANTOM_H 11#define __PHANTOM_H
12 12
13#include <asm/types.h> 13#include <linux/types.h>
14 14
15/* PHN_(G/S)ET_REG param */ 15/* PHN_(G/S)ET_REG param */
16struct phm_reg { 16struct phm_reg {
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index 21b781a3350f..0b35b3a1be05 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -24,10 +24,8 @@ void sync_dquots(struct super_block *sb, int type);
24 24
25int dquot_initialize(struct inode *inode, int type); 25int dquot_initialize(struct inode *inode, int type);
26int dquot_drop(struct inode *inode); 26int dquot_drop(struct inode *inode);
27int dquot_drop_locked(struct inode *inode);
28struct dquot *dqget(struct super_block *sb, unsigned int id, int type); 27struct dquot *dqget(struct super_block *sb, unsigned int id, int type);
29void dqput(struct dquot *dquot); 28void dqput(struct dquot *dquot);
30int dquot_is_cached(struct super_block *sb, unsigned int id, int type);
31int dquot_scan_active(struct super_block *sb, 29int dquot_scan_active(struct super_block *sb,
32 int (*fn)(struct dquot *dquot, unsigned long priv), 30 int (*fn)(struct dquot *dquot, unsigned long priv),
33 unsigned long priv); 31 unsigned long priv);
diff --git a/include/linux/radeonfb.h b/include/linux/radeonfb.h
index 5bd8975ed78e..8c4bbdecc44f 100644
--- a/include/linux/radeonfb.h
+++ b/include/linux/radeonfb.h
@@ -2,7 +2,7 @@
2#define __LINUX_RADEONFB_H__ 2#define __LINUX_RADEONFB_H__
3 3
4#include <asm/ioctl.h> 4#include <asm/ioctl.h>
5#include <asm/types.h> 5#include <linux/types.h>
6 6
7#define ATY_RADEON_LCD_ON 0x00000001 7#define ATY_RADEON_LCD_ON 0x00000001
8#define ATY_RADEON_CRT_ON 0x00000002 8#define ATY_RADEON_CRT_ON 0x00000002
diff --git a/include/linux/res_counter.h b/include/linux/res_counter.h
index dede0a2cfc45..4c5bcf6ca7e8 100644
--- a/include/linux/res_counter.h
+++ b/include/linux/res_counter.h
@@ -9,7 +9,7 @@
9 * 9 *
10 * Author: Pavel Emelianov <xemul@openvz.org> 10 * Author: Pavel Emelianov <xemul@openvz.org>
11 * 11 *
12 * See Documentation/controllers/resource_counter.txt for more 12 * See Documentation/cgroups/resource_counter.txt for more
13 * info about what this counter is. 13 * info about what this counter is.
14 */ 14 */
15 15
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 4cae9b81a1f8..02e16d207304 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -293,6 +293,9 @@ extern void sched_show_task(struct task_struct *p);
293extern void softlockup_tick(void); 293extern void softlockup_tick(void);
294extern void touch_softlockup_watchdog(void); 294extern void touch_softlockup_watchdog(void);
295extern void touch_all_softlockup_watchdogs(void); 295extern void touch_all_softlockup_watchdogs(void);
296extern int proc_dosoftlockup_thresh(struct ctl_table *table, int write,
297 struct file *filp, void __user *buffer,
298 size_t *lenp, loff_t *ppos);
296extern unsigned int softlockup_panic; 299extern unsigned int softlockup_panic;
297extern unsigned long sysctl_hung_task_check_count; 300extern unsigned long sysctl_hung_task_check_count;
298extern unsigned long sysctl_hung_task_timeout_secs; 301extern unsigned long sysctl_hung_task_timeout_secs;
@@ -450,6 +453,7 @@ struct task_cputime {
450 cputime_t utime; 453 cputime_t utime;
451 cputime_t stime; 454 cputime_t stime;
452 unsigned long long sum_exec_runtime; 455 unsigned long long sum_exec_runtime;
456 spinlock_t lock;
453}; 457};
454/* Alternate field names when used to cache expirations. */ 458/* Alternate field names when used to cache expirations. */
455#define prof_exp stime 459#define prof_exp stime
@@ -465,7 +469,7 @@ struct task_cputime {
465 * used for thread group CPU clock calculations. 469 * used for thread group CPU clock calculations.
466 */ 470 */
467struct thread_group_cputime { 471struct thread_group_cputime {
468 struct task_cputime *totals; 472 struct task_cputime totals;
469}; 473};
470 474
471/* 475/*
@@ -2180,24 +2184,30 @@ static inline int spin_needbreak(spinlock_t *lock)
2180 * Thread group CPU time accounting. 2184 * Thread group CPU time accounting.
2181 */ 2185 */
2182 2186
2183extern int thread_group_cputime_alloc(struct task_struct *); 2187static inline
2184extern void thread_group_cputime(struct task_struct *, struct task_cputime *); 2188void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times)
2185
2186static inline void thread_group_cputime_init(struct signal_struct *sig)
2187{ 2189{
2188 sig->cputime.totals = NULL; 2190 struct task_cputime *totals = &tsk->signal->cputime.totals;
2191 unsigned long flags;
2192
2193 spin_lock_irqsave(&totals->lock, flags);
2194 *times = *totals;
2195 spin_unlock_irqrestore(&totals->lock, flags);
2189} 2196}
2190 2197
2191static inline int thread_group_cputime_clone_thread(struct task_struct *curr) 2198static inline void thread_group_cputime_init(struct signal_struct *sig)
2192{ 2199{
2193 if (curr->signal->cputime.totals) 2200 sig->cputime.totals = (struct task_cputime){
2194 return 0; 2201 .utime = cputime_zero,
2195 return thread_group_cputime_alloc(curr); 2202 .stime = cputime_zero,
2203 .sum_exec_runtime = 0,
2204 };
2205
2206 spin_lock_init(&sig->cputime.totals.lock);
2196} 2207}
2197 2208
2198static inline void thread_group_cputime_free(struct signal_struct *sig) 2209static inline void thread_group_cputime_free(struct signal_struct *sig)
2199{ 2210{
2200 free_percpu(sig->cputime.totals);
2201} 2211}
2202 2212
2203/* 2213/*
diff --git a/include/linux/swab.h b/include/linux/swab.h
index be5284d4a053..ea0c02fd5163 100644
--- a/include/linux/swab.h
+++ b/include/linux/swab.h
@@ -3,7 +3,7 @@
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/compiler.h> 5#include <linux/compiler.h>
6#include <asm/byteorder.h> 6#include <asm/swab.h>
7 7
8/* 8/*
9 * casts are necessary for constants, because we never know how for sure 9 * casts are necessary for constants, because we never know how for sure
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 18d0a243a7b3..16875f89e6a7 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -54,6 +54,7 @@ struct compat_stat;
54struct compat_timeval; 54struct compat_timeval;
55struct robust_list_head; 55struct robust_list_head;
56struct getcpu_cache; 56struct getcpu_cache;
57struct old_linux_dirent;
57 58
58#include <linux/types.h> 59#include <linux/types.h>
59#include <linux/aio_abi.h> 60#include <linux/aio_abi.h>
@@ -65,6 +66,74 @@ struct getcpu_cache;
65#include <linux/quota.h> 66#include <linux/quota.h>
66#include <linux/key.h> 67#include <linux/key.h>
67 68
69#define __SC_DECL1(t1, a1) t1 a1
70#define __SC_DECL2(t2, a2, ...) t2 a2, __SC_DECL1(__VA_ARGS__)
71#define __SC_DECL3(t3, a3, ...) t3 a3, __SC_DECL2(__VA_ARGS__)
72#define __SC_DECL4(t4, a4, ...) t4 a4, __SC_DECL3(__VA_ARGS__)
73#define __SC_DECL5(t5, a5, ...) t5 a5, __SC_DECL4(__VA_ARGS__)
74#define __SC_DECL6(t6, a6, ...) t6 a6, __SC_DECL5(__VA_ARGS__)
75
76#define __SC_LONG1(t1, a1) long a1
77#define __SC_LONG2(t2, a2, ...) long a2, __SC_LONG1(__VA_ARGS__)
78#define __SC_LONG3(t3, a3, ...) long a3, __SC_LONG2(__VA_ARGS__)
79#define __SC_LONG4(t4, a4, ...) long a4, __SC_LONG3(__VA_ARGS__)
80#define __SC_LONG5(t5, a5, ...) long a5, __SC_LONG4(__VA_ARGS__)
81#define __SC_LONG6(t6, a6, ...) long a6, __SC_LONG5(__VA_ARGS__)
82
83#define __SC_CAST1(t1, a1) (t1) a1
84#define __SC_CAST2(t2, a2, ...) (t2) a2, __SC_CAST1(__VA_ARGS__)
85#define __SC_CAST3(t3, a3, ...) (t3) a3, __SC_CAST2(__VA_ARGS__)
86#define __SC_CAST4(t4, a4, ...) (t4) a4, __SC_CAST3(__VA_ARGS__)
87#define __SC_CAST5(t5, a5, ...) (t5) a5, __SC_CAST4(__VA_ARGS__)
88#define __SC_CAST6(t6, a6, ...) (t6) a6, __SC_CAST5(__VA_ARGS__)
89
90#define __SC_TEST(type) BUILD_BUG_ON(sizeof(type) > sizeof(long))
91#define __SC_TEST1(t1, a1) __SC_TEST(t1)
92#define __SC_TEST2(t2, a2, ...) __SC_TEST(t2); __SC_TEST1(__VA_ARGS__)
93#define __SC_TEST3(t3, a3, ...) __SC_TEST(t3); __SC_TEST2(__VA_ARGS__)
94#define __SC_TEST4(t4, a4, ...) __SC_TEST(t4); __SC_TEST3(__VA_ARGS__)
95#define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__)
96#define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
97
98#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
99#define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__)
100#define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__)
101#define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__)
102#define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__)
103#define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__)
104#define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__)
105
106#ifdef CONFIG_PPC64
107#define SYSCALL_ALIAS(alias, name) \
108 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
109 "\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
110#else
111#define SYSCALL_ALIAS(alias, name) \
112 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name)
113#endif
114
115#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
116
117#define SYSCALL_DEFINE(name) static inline long SYSC_##name
118#define SYSCALL_DEFINEx(x, name, ...) \
119 asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \
120 static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \
121 asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \
122 { \
123 __SC_TEST##x(__VA_ARGS__); \
124 return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \
125 } \
126 SYSCALL_ALIAS(sys_##name, SyS_##name); \
127 static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__))
128
129#else /* CONFIG_HAVE_SYSCALL_WRAPPERS */
130
131#define SYSCALL_DEFINE(name) asmlinkage long sys_##name
132#define SYSCALL_DEFINEx(x, name, ...) \
133 asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__))
134
135#endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */
136
68asmlinkage long sys_time(time_t __user *tloc); 137asmlinkage long sys_time(time_t __user *tloc);
69asmlinkage long sys_stime(time_t __user *tptr); 138asmlinkage long sys_stime(time_t __user *tptr);
70asmlinkage long sys_gettimeofday(struct timeval __user *tv, 139asmlinkage long sys_gettimeofday(struct timeval __user *tv,
@@ -77,7 +146,7 @@ asmlinkage long sys_times(struct tms __user *tbuf);
77 146
78asmlinkage long sys_gettid(void); 147asmlinkage long sys_gettid(void);
79asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp); 148asmlinkage long sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp);
80asmlinkage unsigned long sys_alarm(unsigned int seconds); 149asmlinkage long sys_alarm(unsigned int seconds);
81asmlinkage long sys_getpid(void); 150asmlinkage long sys_getpid(void);
82asmlinkage long sys_getppid(void); 151asmlinkage long sys_getppid(void);
83asmlinkage long sys_getuid(void); 152asmlinkage long sys_getuid(void);
@@ -166,7 +235,7 @@ asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments,
166 unsigned long flags); 235 unsigned long flags);
167 236
168asmlinkage long sys_exit(int error_code); 237asmlinkage long sys_exit(int error_code);
169asmlinkage void sys_exit_group(int error_code); 238asmlinkage long sys_exit_group(int error_code);
170asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr, 239asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr,
171 int options, struct rusage __user *ru); 240 int options, struct rusage __user *ru);
172asmlinkage long sys_waitid(int which, pid_t pid, 241asmlinkage long sys_waitid(int which, pid_t pid,
@@ -196,7 +265,7 @@ asmlinkage long sys_tkill(int pid, int sig);
196asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo); 265asmlinkage long sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo);
197asmlinkage long sys_sgetmask(void); 266asmlinkage long sys_sgetmask(void);
198asmlinkage long sys_ssetmask(int newmask); 267asmlinkage long sys_ssetmask(int newmask);
199asmlinkage unsigned long sys_signal(int sig, __sighandler_t handler); 268asmlinkage long sys_signal(int sig, __sighandler_t handler);
200asmlinkage long sys_pause(void); 269asmlinkage long sys_pause(void);
201 270
202asmlinkage long sys_sync(void); 271asmlinkage long sys_sync(void);
@@ -246,29 +315,29 @@ asmlinkage long sys_lsetxattr(const char __user *path, const char __user *name,
246 const void __user *value, size_t size, int flags); 315 const void __user *value, size_t size, int flags);
247asmlinkage long sys_fsetxattr(int fd, const char __user *name, 316asmlinkage long sys_fsetxattr(int fd, const char __user *name,
248 const void __user *value, size_t size, int flags); 317 const void __user *value, size_t size, int flags);
249asmlinkage ssize_t sys_getxattr(const char __user *path, const char __user *name, 318asmlinkage long sys_getxattr(const char __user *path, const char __user *name,
250 void __user *value, size_t size); 319 void __user *value, size_t size);
251asmlinkage ssize_t sys_lgetxattr(const char __user *path, const char __user *name, 320asmlinkage long sys_lgetxattr(const char __user *path, const char __user *name,
252 void __user *value, size_t size); 321 void __user *value, size_t size);
253asmlinkage ssize_t sys_fgetxattr(int fd, const char __user *name, 322asmlinkage long sys_fgetxattr(int fd, const char __user *name,
254 void __user *value, size_t size); 323 void __user *value, size_t size);
255asmlinkage ssize_t sys_listxattr(const char __user *path, char __user *list, 324asmlinkage long sys_listxattr(const char __user *path, char __user *list,
256 size_t size); 325 size_t size);
257asmlinkage ssize_t sys_llistxattr(const char __user *path, char __user *list, 326asmlinkage long sys_llistxattr(const char __user *path, char __user *list,
258 size_t size); 327 size_t size);
259asmlinkage ssize_t sys_flistxattr(int fd, char __user *list, size_t size); 328asmlinkage long sys_flistxattr(int fd, char __user *list, size_t size);
260asmlinkage long sys_removexattr(const char __user *path, 329asmlinkage long sys_removexattr(const char __user *path,
261 const char __user *name); 330 const char __user *name);
262asmlinkage long sys_lremovexattr(const char __user *path, 331asmlinkage long sys_lremovexattr(const char __user *path,
263 const char __user *name); 332 const char __user *name);
264asmlinkage long sys_fremovexattr(int fd, const char __user *name); 333asmlinkage long sys_fremovexattr(int fd, const char __user *name);
265 334
266asmlinkage unsigned long sys_brk(unsigned long brk); 335asmlinkage long sys_brk(unsigned long brk);
267asmlinkage long sys_mprotect(unsigned long start, size_t len, 336asmlinkage long sys_mprotect(unsigned long start, size_t len,
268 unsigned long prot); 337 unsigned long prot);
269asmlinkage unsigned long sys_mremap(unsigned long addr, 338asmlinkage long sys_mremap(unsigned long addr,
270 unsigned long old_len, unsigned long new_len, 339 unsigned long old_len, unsigned long new_len,
271 unsigned long flags, unsigned long new_addr); 340 unsigned long flags, unsigned long new_addr);
272asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, 341asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
273 unsigned long prot, unsigned long pgoff, 342 unsigned long prot, unsigned long pgoff,
274 unsigned long flags); 343 unsigned long flags);
@@ -321,10 +390,10 @@ asmlinkage long sys_io_submit(aio_context_t, long,
321 struct iocb __user * __user *); 390 struct iocb __user * __user *);
322asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb, 391asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
323 struct io_event __user *result); 392 struct io_event __user *result);
324asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, 393asmlinkage long sys_sendfile(int out_fd, int in_fd,
325 off_t __user *offset, size_t count); 394 off_t __user *offset, size_t count);
326asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, 395asmlinkage long sys_sendfile64(int out_fd, int in_fd,
327 loff_t __user *offset, size_t count); 396 loff_t __user *offset, size_t count);
328asmlinkage long sys_readlink(const char __user *path, 397asmlinkage long sys_readlink(const char __user *path,
329 char __user *buf, int bufsiz); 398 char __user *buf, int bufsiz);
330asmlinkage long sys_creat(const char __user *pathname, int mode); 399asmlinkage long sys_creat(const char __user *pathname, int mode);
@@ -368,26 +437,25 @@ asmlinkage long sys_utime(char __user *filename,
368 struct utimbuf __user *times); 437 struct utimbuf __user *times);
369asmlinkage long sys_utimes(char __user *filename, 438asmlinkage long sys_utimes(char __user *filename,
370 struct timeval __user *utimes); 439 struct timeval __user *utimes);
371asmlinkage off_t sys_lseek(unsigned int fd, off_t offset, 440asmlinkage long sys_lseek(unsigned int fd, off_t offset,
372 unsigned int origin); 441 unsigned int origin);
373asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high, 442asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high,
374 unsigned long offset_low, loff_t __user *result, 443 unsigned long offset_low, loff_t __user *result,
375 unsigned int origin); 444 unsigned int origin);
376asmlinkage ssize_t sys_read(unsigned int fd, char __user *buf, 445asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count);
377 size_t count); 446asmlinkage long sys_readahead(int fd, loff_t offset, size_t count);
378asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count); 447asmlinkage long sys_readv(unsigned long fd,
379asmlinkage ssize_t sys_readv(unsigned long fd, 448 const struct iovec __user *vec,
380 const struct iovec __user *vec, 449 unsigned long vlen);
381 unsigned long vlen); 450asmlinkage long sys_write(unsigned int fd, const char __user *buf,
382asmlinkage ssize_t sys_write(unsigned int fd, const char __user *buf, 451 size_t count);
383 size_t count); 452asmlinkage long sys_writev(unsigned long fd,
384asmlinkage ssize_t sys_writev(unsigned long fd, 453 const struct iovec __user *vec,
385 const struct iovec __user *vec, 454 unsigned long vlen);
386 unsigned long vlen); 455asmlinkage long sys_pread64(unsigned int fd, char __user *buf,
387asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf, 456 size_t count, loff_t pos);
388 size_t count, loff_t pos); 457asmlinkage long sys_pwrite64(unsigned int fd, const char __user *buf,
389asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf, 458 size_t count, loff_t pos);
390 size_t count, loff_t pos);
391asmlinkage long sys_getcwd(char __user *buf, unsigned long size); 459asmlinkage long sys_getcwd(char __user *buf, unsigned long size);
392asmlinkage long sys_mkdir(const char __user *pathname, int mode); 460asmlinkage long sys_mkdir(const char __user *pathname, int mode);
393asmlinkage long sys_chdir(const char __user *filename); 461asmlinkage long sys_chdir(const char __user *filename);
@@ -476,7 +544,7 @@ asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf);
476asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr); 544asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr);
477asmlinkage long sys_mq_unlink(const char __user *name); 545asmlinkage long sys_mq_unlink(const char __user *name);
478asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec __user *abs_timeout); 546asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *msg_ptr, size_t msg_len, unsigned int msg_prio, const struct timespec __user *abs_timeout);
479asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout); 547asmlinkage long sys_mq_timedreceive(mqd_t mqdes, char __user *msg_ptr, size_t msg_len, unsigned int __user *msg_prio, const struct timespec __user *abs_timeout);
480asmlinkage long sys_mq_notify(mqd_t mqdes, const struct sigevent __user *notification); 548asmlinkage long sys_mq_notify(mqd_t mqdes, const struct sigevent __user *notification);
481asmlinkage long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr __user *mqstat, struct mq_attr __user *omqstat); 549asmlinkage long sys_mq_getsetattr(mqd_t mqdes, const struct mq_attr __user *mqstat, struct mq_attr __user *omqstat);
482 550
@@ -530,11 +598,6 @@ asmlinkage long sys_move_pages(pid_t pid, unsigned long nr_pages,
530 const int __user *nodes, 598 const int __user *nodes,
531 int __user *status, 599 int __user *status,
532 int flags); 600 int flags);
533asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page,
534 __u32 __user *pages,
535 const int __user *nodes,
536 int __user *status,
537 int flags);
538asmlinkage long sys_mbind(unsigned long start, unsigned long len, 601asmlinkage long sys_mbind(unsigned long start, unsigned long len,
539 unsigned long mode, 602 unsigned long mode,
540 unsigned long __user *nmask, 603 unsigned long __user *nmask,
@@ -583,13 +646,6 @@ asmlinkage long sys_readlinkat(int dfd, const char __user *path, char __user *bu
583 int bufsiz); 646 int bufsiz);
584asmlinkage long sys_utimensat(int dfd, char __user *filename, 647asmlinkage long sys_utimensat(int dfd, char __user *filename,
585 struct timespec __user *utimes, int flags); 648 struct timespec __user *utimes, int flags);
586asmlinkage long compat_sys_futimesat(unsigned int dfd, char __user *filename,
587 struct compat_timeval __user *t);
588asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
589 struct compat_stat __user *statbuf,
590 int flag);
591asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
592 int flags, int mode);
593asmlinkage long sys_unshare(unsigned long unshare_flags); 649asmlinkage long sys_unshare(unsigned long unshare_flags);
594 650
595asmlinkage long sys_splice(int fd_in, loff_t __user *off_in, 651asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
@@ -621,6 +677,15 @@ asmlinkage long sys_timerfd_gettime(int ufd, struct itimerspec __user *otmr);
621asmlinkage long sys_eventfd(unsigned int count); 677asmlinkage long sys_eventfd(unsigned int count);
622asmlinkage long sys_eventfd2(unsigned int count, int flags); 678asmlinkage long sys_eventfd2(unsigned int count, int flags);
623asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len); 679asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len);
680asmlinkage long sys_old_readdir(unsigned int, struct old_linux_dirent __user *, unsigned int);
681asmlinkage long sys_pselect6(int, fd_set __user *, fd_set __user *,
682 fd_set __user *, struct timespec __user *,
683 void __user *);
684asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int,
685 struct timespec __user *, const sigset_t __user *,
686 size_t);
687asmlinkage long sys_pipe2(int __user *, int);
688asmlinkage long sys_pipe(int __user *);
624 689
625int kernel_execve(const char *filename, char *const argv[], char *const envp[]); 690int kernel_execve(const char *filename, char *const argv[], char *const envp[]);
626 691
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
index ba09fe88adda..7d3822243074 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
@@ -197,7 +197,9 @@ extern int usbnet_nway_reset(struct net_device *net);
197#define devdbg(usbnet, fmt, arg...) \ 197#define devdbg(usbnet, fmt, arg...) \
198 printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , ## arg) 198 printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , ## arg)
199#else 199#else
200#define devdbg(usbnet, fmt, arg...) do {} while(0) 200#define devdbg(usbnet, fmt, arg...) \
201 ({ if (0) printk(KERN_DEBUG "%s: " fmt "\n" , (usbnet)->net->name , \
202 ## arg); 0; })
201#endif 203#endif
202 204
203#define deverr(usbnet, fmt, arg...) \ 205#define deverr(usbnet, fmt, arg...) \
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index b36291130f22..3cd51e579ab1 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -118,12 +118,24 @@ struct execute_work {
118 init_timer(&(_work)->timer); \ 118 init_timer(&(_work)->timer); \
119 } while (0) 119 } while (0)
120 120
121#define INIT_DELAYED_WORK_ON_STACK(_work, _func) \
122 do { \
123 INIT_WORK(&(_work)->work, (_func)); \
124 init_timer_on_stack(&(_work)->timer); \
125 } while (0)
126
121#define INIT_DELAYED_WORK_DEFERRABLE(_work, _func) \ 127#define INIT_DELAYED_WORK_DEFERRABLE(_work, _func) \
122 do { \ 128 do { \
123 INIT_WORK(&(_work)->work, (_func)); \ 129 INIT_WORK(&(_work)->work, (_func)); \
124 init_timer_deferrable(&(_work)->timer); \ 130 init_timer_deferrable(&(_work)->timer); \
125 } while (0) 131 } while (0)
126 132
133#define INIT_DELAYED_WORK_ON_STACK(_work, _func) \
134 do { \
135 INIT_WORK(&(_work)->work, (_func)); \
136 init_timer_on_stack(&(_work)->timer); \
137 } while (0)
138
127/** 139/**
128 * work_pending - Find out whether a work item is currently pending 140 * work_pending - Find out whether a work item is currently pending
129 * @work: The work item in question 141 * @work: The work item in question
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index b3bd00a9d992..559422fc0943 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -322,7 +322,6 @@ struct ieee80211_tx_rate {
322 * @control: union for control data 322 * @control: union for control data
323 * @status: union for status data 323 * @status: union for status data
324 * @driver_data: array of driver_data pointers 324 * @driver_data: array of driver_data pointers
325 * @retry_count: number of retries
326 * @ampdu_ack_len: number of aggregated frames. 325 * @ampdu_ack_len: number of aggregated frames.
327 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 326 * relevant only if IEEE80211_TX_STATUS_AMPDU was set.
328 * @ampdu_ack_map: block ack bit map for the aggregation. 327 * @ampdu_ack_map: block ack bit map for the aggregation.
diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h
index b799fb21519a..2fec3c366e81 100644
--- a/include/net/sctp/checksum.h
+++ b/include/net/sctp/checksum.h
@@ -79,5 +79,5 @@ static inline __be32 sctp_update_cksum(__u8 *buffer, __u16 length, __be32 crc32)
79 79
80static inline __be32 sctp_end_cksum(__be32 crc32) 80static inline __be32 sctp_end_cksum(__be32 crc32)
81{ 81{
82 return ~crc32; 82 return (__force __be32)~cpu_to_le32((__force u32)crc32);
83} 83}
diff --git a/include/scsi/libiscsi_tcp.h b/include/scsi/libiscsi_tcp.h
index 83e32f6d7859..9e3182e659db 100644
--- a/include/scsi/libiscsi_tcp.h
+++ b/include/scsi/libiscsi_tcp.h
@@ -39,6 +39,7 @@ struct iscsi_segment {
39 unsigned int total_copied; 39 unsigned int total_copied;
40 40
41 struct hash_desc *hash; 41 struct hash_desc *hash;
42 unsigned char padbuf[ISCSI_PAD_LEN];
42 unsigned char recv_digest[ISCSI_DIGEST_SIZE]; 43 unsigned char recv_digest[ISCSI_DIGEST_SIZE];
43 unsigned char digest[ISCSI_DIGEST_SIZE]; 44 unsigned char digest[ISCSI_DIGEST_SIZE];
44 unsigned int digest_len; 45 unsigned int digest_len;
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 93a4edb148b5..dfa804958820 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -108,7 +108,7 @@
108#define SND_SOC_DAPM_SWITCH_E(wname, wreg, wshift, winvert, wcontrols, \ 108#define SND_SOC_DAPM_SWITCH_E(wname, wreg, wshift, winvert, wcontrols, \
109 wevent, wflags) \ 109 wevent, wflags) \
110{ .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \ 110{ .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \
111 .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1 \ 111 .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1, \
112 .event = wevent, .event_flags = wflags} 112 .event = wevent, .event_flags = wflags}
113#define SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, \ 113#define SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, \
114 wevent, wflags) \ 114 wevent, wflags) \
diff --git a/init/Kconfig b/init/Kconfig
index 0e9924743a17..f068071fcc5d 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -238,6 +238,98 @@ config AUDIT_TREE
238 def_bool y 238 def_bool y
239 depends on AUDITSYSCALL && INOTIFY 239 depends on AUDITSYSCALL && INOTIFY
240 240
241menu "RCU Subsystem"
242
243choice
244 prompt "RCU Implementation"
245 default CLASSIC_RCU
246
247config CLASSIC_RCU
248 bool "Classic RCU"
249 help
250 This option selects the classic RCU implementation that is
251 designed for best read-side performance on non-realtime
252 systems.
253
254 Select this option if you are unsure.
255
256config TREE_RCU
257 bool "Tree-based hierarchical RCU"
258 help
259 This option selects the RCU implementation that is
260 designed for very large SMP system with hundreds or
261 thousands of CPUs.
262
263config PREEMPT_RCU
264 bool "Preemptible RCU"
265 depends on PREEMPT
266 help
267 This option reduces the latency of the kernel by making certain
268 RCU sections preemptible. Normally RCU code is non-preemptible, if
269 this option is selected then read-only RCU sections become
270 preemptible. This helps latency, but may expose bugs due to
271 now-naive assumptions about each RCU read-side critical section
272 remaining on a given CPU through its execution.
273
274endchoice
275
276config RCU_TRACE
277 bool "Enable tracing for RCU"
278 depends on TREE_RCU || PREEMPT_RCU
279 help
280 This option provides tracing in RCU which presents stats
281 in debugfs for debugging RCU implementation.
282
283 Say Y here if you want to enable RCU tracing
284 Say N if you are unsure.
285
286config RCU_FANOUT
287 int "Tree-based hierarchical RCU fanout value"
288 range 2 64 if 64BIT
289 range 2 32 if !64BIT
290 depends on TREE_RCU
291 default 64 if 64BIT
292 default 32 if !64BIT
293 help
294 This option controls the fanout of hierarchical implementations
295 of RCU, allowing RCU to work efficiently on machines with
296 large numbers of CPUs. This value must be at least the cube
297 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
298 systems and up to 262,144 for 64-bit systems.
299
300 Select a specific number if testing RCU itself.
301 Take the default if unsure.
302
303config RCU_FANOUT_EXACT
304 bool "Disable tree-based hierarchical RCU auto-balancing"
305 depends on TREE_RCU
306 default n
307 help
308 This option forces use of the exact RCU_FANOUT value specified,
309 regardless of imbalances in the hierarchy. This is useful for
310 testing RCU itself, and might one day be useful on systems with
311 strong NUMA behavior.
312
313 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
314
315 Say N if unsure.
316
317config TREE_RCU_TRACE
318 def_bool RCU_TRACE && TREE_RCU
319 select DEBUG_FS
320 help
321 This option provides tracing for the TREE_RCU implementation,
322 permitting Makefile to trivially select kernel/rcutree_trace.c.
323
324config PREEMPT_RCU_TRACE
325 def_bool RCU_TRACE && PREEMPT_RCU
326 select DEBUG_FS
327 help
328 This option provides tracing for the PREEMPT_RCU implementation,
329 permitting Makefile to trivially select kernel/rcupreempt_trace.c.
330
331endmenu # "RCU Subsystem"
332
241config IKCONFIG 333config IKCONFIG
242 tristate "Kernel .config support" 334 tristate "Kernel .config support"
243 ---help--- 335 ---help---
@@ -323,26 +415,26 @@ config CGROUP_SCHED
323 This option allows you to create arbitrary task groups 415 This option allows you to create arbitrary task groups
324 using the "cgroup" pseudo filesystem and control 416 using the "cgroup" pseudo filesystem and control
325 the cpu bandwidth allocated to each such task group. 417 the cpu bandwidth allocated to each such task group.
326 Refer to Documentation/cgroups.txt for more information 418 Refer to Documentation/cgroups/cgroups.txt for more
327 on "cgroup" pseudo filesystem. 419 information on "cgroup" pseudo filesystem.
328 420
329endchoice 421endchoice
330 422
331menu "Control Group support" 423menuconfig CGROUPS
332config CGROUPS 424 boolean "Control Group support"
333 bool "Control Group support"
334 help 425 help
335 This option add support for grouping sets of processes together, for 426 This option adds support for grouping sets of processes together, for
336 use with process control subsystems such as Cpusets, CFS, memory 427 use with process control subsystems such as Cpusets, CFS, memory
337 controls or device isolation. 428 controls or device isolation.
338 See 429 See
339 - Documentation/cpusets.txt (Cpusets)
340 - Documentation/scheduler/sched-design-CFS.txt (CFS) 430 - Documentation/scheduler/sched-design-CFS.txt (CFS)
341 - Documentation/cgroups/ (features for grouping, isolation) 431 - Documentation/cgroups/ (features for grouping, isolation
342 - Documentation/controllers/ (features for resource control) 432 and resource control)
343 433
344 Say N if unsure. 434 Say N if unsure.
345 435
436if CGROUPS
437
346config CGROUP_DEBUG 438config CGROUP_DEBUG
347 bool "Example debug cgroup subsystem" 439 bool "Example debug cgroup subsystem"
348 depends on CGROUPS 440 depends on CGROUPS
@@ -350,24 +442,24 @@ config CGROUP_DEBUG
350 help 442 help
351 This option enables a simple cgroup subsystem that 443 This option enables a simple cgroup subsystem that
352 exports useful debugging information about the cgroups 444 exports useful debugging information about the cgroups
353 framework 445 framework.
354 446
355 Say N if unsure 447 Say N if unsure.
356 448
357config CGROUP_NS 449config CGROUP_NS
358 bool "Namespace cgroup subsystem" 450 bool "Namespace cgroup subsystem"
359 depends on CGROUPS 451 depends on CGROUPS
360 help 452 help
361 Provides a simple namespace cgroup subsystem to 453 Provides a simple namespace cgroup subsystem to
362 provide hierarchical naming of sets of namespaces, 454 provide hierarchical naming of sets of namespaces,
363 for instance virtual servers and checkpoint/restart 455 for instance virtual servers and checkpoint/restart
364 jobs. 456 jobs.
365 457
366config CGROUP_FREEZER 458config CGROUP_FREEZER
367 bool "control group freezer subsystem" 459 bool "Freezer cgroup subsystem"
368 depends on CGROUPS 460 depends on CGROUPS
369 help 461 help
370 Provides a way to freeze and unfreeze all tasks in a 462 Provides a way to freeze and unfreeze all tasks in a
371 cgroup. 463 cgroup.
372 464
373config CGROUP_DEVICE 465config CGROUP_DEVICE
@@ -388,18 +480,23 @@ config CPUSETS
388 480
389 Say N if unsure. 481 Say N if unsure.
390 482
483config PROC_PID_CPUSET
484 bool "Include legacy /proc/<pid>/cpuset file"
485 depends on CPUSETS
486 default y
487
391config CGROUP_CPUACCT 488config CGROUP_CPUACCT
392 bool "Simple CPU accounting cgroup subsystem" 489 bool "Simple CPU accounting cgroup subsystem"
393 depends on CGROUPS 490 depends on CGROUPS
394 help 491 help
395 Provides a simple Resource Controller for monitoring the 492 Provides a simple Resource Controller for monitoring the
396 total CPU consumed by the tasks in a cgroup 493 total CPU consumed by the tasks in a cgroup.
397 494
398config RESOURCE_COUNTERS 495config RESOURCE_COUNTERS
399 bool "Resource counters" 496 bool "Resource counters"
400 help 497 help
401 This option enables controller independent resource accounting 498 This option enables controller independent resource accounting
402 infrastructure that works with cgroups 499 infrastructure that works with cgroups.
403 depends on CGROUPS 500 depends on CGROUPS
404 501
405config CGROUP_MEM_RES_CTLR 502config CGROUP_MEM_RES_CTLR
@@ -425,9 +522,6 @@ config CGROUP_MEM_RES_CTLR
425 This config option also selects MM_OWNER config option, which 522 This config option also selects MM_OWNER config option, which
426 could in turn add some fork/exit overhead. 523 could in turn add some fork/exit overhead.
427 524
428config MM_OWNER
429 bool
430
431config CGROUP_MEM_RES_CTLR_SWAP 525config CGROUP_MEM_RES_CTLR_SWAP
432 bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)" 526 bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)"
433 depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL 527 depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL
@@ -444,8 +538,10 @@ config CGROUP_MEM_RES_CTLR_SWAP
444 there will be no overhead from this. Even when you set this config=y, 538 there will be no overhead from this. Even when you set this config=y,
445 if boot option "noswapaccount" is set, swap will not be accounted. 539 if boot option "noswapaccount" is set, swap will not be accounted.
446 540
541endif # CGROUPS
447 542
448endmenu 543config MM_OWNER
544 bool
449 545
450config SYSFS_DEPRECATED 546config SYSFS_DEPRECATED
451 bool 547 bool
@@ -483,11 +579,6 @@ config SYSFS_DEPRECATED_V2
483 if the original kernel, that came with your distribution, has 579 if the original kernel, that came with your distribution, has
484 this option set to N. 580 this option set to N.
485 581
486config PROC_PID_CPUSET
487 bool "Include legacy /proc/<pid>/cpuset file"
488 depends on CPUSETS
489 default y
490
491config RELAY 582config RELAY
492 bool "Kernel->user space relay support (formerly relayfs)" 583 bool "Kernel->user space relay support (formerly relayfs)"
493 help 584 help
@@ -542,6 +633,14 @@ config PID_NS
542 Unless you want to work with an experimental feature 633 Unless you want to work with an experimental feature
543 say N here. 634 say N here.
544 635
636config NET_NS
637 bool "Network namespace"
638 default n
639 depends on NAMESPACES && EXPERIMENTAL && NET
640 help
641 Allow user space to create what appear to be multiple instances
642 of the network stack.
643
545config BLK_DEV_INITRD 644config BLK_DEV_INITRD
546 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 645 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
547 depends on BROKEN || !FRV 646 depends on BROKEN || !FRV
@@ -966,90 +1065,3 @@ source "block/Kconfig"
966config PREEMPT_NOTIFIERS 1065config PREEMPT_NOTIFIERS
967 bool 1066 bool
968 1067
969choice
970 prompt "RCU Implementation"
971 default CLASSIC_RCU
972
973config CLASSIC_RCU
974 bool "Classic RCU"
975 help
976 This option selects the classic RCU implementation that is
977 designed for best read-side performance on non-realtime
978 systems.
979
980 Select this option if you are unsure.
981
982config TREE_RCU
983 bool "Tree-based hierarchical RCU"
984 help
985 This option selects the RCU implementation that is
986 designed for very large SMP system with hundreds or
987 thousands of CPUs.
988
989config PREEMPT_RCU
990 bool "Preemptible RCU"
991 depends on PREEMPT
992 help
993 This option reduces the latency of the kernel by making certain
994 RCU sections preemptible. Normally RCU code is non-preemptible, if
995 this option is selected then read-only RCU sections become
996 preemptible. This helps latency, but may expose bugs due to
997 now-naive assumptions about each RCU read-side critical section
998 remaining on a given CPU through its execution.
999
1000endchoice
1001
1002config RCU_TRACE
1003 bool "Enable tracing for RCU"
1004 depends on TREE_RCU || PREEMPT_RCU
1005 help
1006 This option provides tracing in RCU which presents stats
1007 in debugfs for debugging RCU implementation.
1008
1009 Say Y here if you want to enable RCU tracing
1010 Say N if you are unsure.
1011
1012config RCU_FANOUT
1013 int "Tree-based hierarchical RCU fanout value"
1014 range 2 64 if 64BIT
1015 range 2 32 if !64BIT
1016 depends on TREE_RCU
1017 default 64 if 64BIT
1018 default 32 if !64BIT
1019 help
1020 This option controls the fanout of hierarchical implementations
1021 of RCU, allowing RCU to work efficiently on machines with
1022 large numbers of CPUs. This value must be at least the cube
1023 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
1024 systems and up to 262,144 for 64-bit systems.
1025
1026 Select a specific number if testing RCU itself.
1027 Take the default if unsure.
1028
1029config RCU_FANOUT_EXACT
1030 bool "Disable tree-based hierarchical RCU auto-balancing"
1031 depends on TREE_RCU
1032 default n
1033 help
1034 This option forces use of the exact RCU_FANOUT value specified,
1035 regardless of imbalances in the hierarchy. This is useful for
1036 testing RCU itself, and might one day be useful on systems with
1037 strong NUMA behavior.
1038
1039 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
1040
1041 Say N if unsure.
1042
1043config TREE_RCU_TRACE
1044 def_bool RCU_TRACE && TREE_RCU
1045 select DEBUG_FS
1046 help
1047 This option provides tracing for the TREE_RCU implementation,
1048 permitting Makefile to trivially select kernel/rcutree_trace.c.
1049
1050config PREEMPT_RCU_TRACE
1051 def_bool RCU_TRACE && PREEMPT_RCU
1052 select DEBUG_FS
1053 help
1054 This option provides tracing for the PREEMPT_RCU implementation,
1055 permitting Makefile to trivially select kernel/rcupreempt_trace.c.
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 23fdb8492b8e..54b4077fed79 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -650,8 +650,8 @@ static struct file *do_open(struct dentry *dentry, int oflag)
650 return dentry_open(dentry, mqueue_mnt, oflag, cred); 650 return dentry_open(dentry, mqueue_mnt, oflag, cred);
651} 651}
652 652
653asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode, 653SYSCALL_DEFINE4(mq_open, const char __user *, u_name, int, oflag, mode_t, mode,
654 struct mq_attr __user *u_attr) 654 struct mq_attr __user *, u_attr)
655{ 655{
656 struct dentry *dentry; 656 struct dentry *dentry;
657 struct file *filp; 657 struct file *filp;
@@ -721,7 +721,7 @@ out_putname:
721 return fd; 721 return fd;
722} 722}
723 723
724asmlinkage long sys_mq_unlink(const char __user *u_name) 724SYSCALL_DEFINE1(mq_unlink, const char __user *, u_name)
725{ 725{
726 int err; 726 int err;
727 char *name; 727 char *name;
@@ -814,9 +814,9 @@ static inline void pipelined_receive(struct mqueue_inode_info *info)
814 sender->state = STATE_READY; 814 sender->state = STATE_READY;
815} 815}
816 816
817asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr, 817SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr,
818 size_t msg_len, unsigned int msg_prio, 818 size_t, msg_len, unsigned int, msg_prio,
819 const struct timespec __user *u_abs_timeout) 819 const struct timespec __user *, u_abs_timeout)
820{ 820{
821 struct file *filp; 821 struct file *filp;
822 struct inode *inode; 822 struct inode *inode;
@@ -907,9 +907,9 @@ out:
907 return ret; 907 return ret;
908} 908}
909 909
910asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr, 910SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr,
911 size_t msg_len, unsigned int __user *u_msg_prio, 911 size_t, msg_len, unsigned int __user *, u_msg_prio,
912 const struct timespec __user *u_abs_timeout) 912 const struct timespec __user *, u_abs_timeout)
913{ 913{
914 long timeout; 914 long timeout;
915 ssize_t ret; 915 ssize_t ret;
@@ -997,8 +997,8 @@ out:
997 * and he isn't currently owner of notification, will be silently discarded. 997 * and he isn't currently owner of notification, will be silently discarded.
998 * It isn't explicitly defined in the POSIX. 998 * It isn't explicitly defined in the POSIX.
999 */ 999 */
1000asmlinkage long sys_mq_notify(mqd_t mqdes, 1000SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes,
1001 const struct sigevent __user *u_notification) 1001 const struct sigevent __user *, u_notification)
1002{ 1002{
1003 int ret; 1003 int ret;
1004 struct file *filp; 1004 struct file *filp;
@@ -1123,9 +1123,9 @@ out:
1123 return ret; 1123 return ret;
1124} 1124}
1125 1125
1126asmlinkage long sys_mq_getsetattr(mqd_t mqdes, 1126SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes,
1127 const struct mq_attr __user *u_mqstat, 1127 const struct mq_attr __user *, u_mqstat,
1128 struct mq_attr __user *u_omqstat) 1128 struct mq_attr __user *, u_omqstat)
1129{ 1129{
1130 int ret; 1130 int ret;
1131 struct mq_attr mqstat, omqstat; 1131 struct mq_attr mqstat, omqstat;
diff --git a/ipc/msg.c b/ipc/msg.c
index b4eee1c6101d..2ceab7f12fcb 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -309,7 +309,7 @@ static inline int msg_security(struct kern_ipc_perm *ipcp, int msgflg)
309 return security_msg_queue_associate(msq, msgflg); 309 return security_msg_queue_associate(msq, msgflg);
310} 310}
311 311
312asmlinkage long sys_msgget(key_t key, int msgflg) 312SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg)
313{ 313{
314 struct ipc_namespace *ns; 314 struct ipc_namespace *ns;
315 struct ipc_ops msg_ops; 315 struct ipc_ops msg_ops;
@@ -466,7 +466,7 @@ out_up:
466 return err; 466 return err;
467} 467}
468 468
469asmlinkage long sys_msgctl(int msqid, int cmd, struct msqid_ds __user *buf) 469SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
470{ 470{
471 struct msg_queue *msq; 471 struct msg_queue *msq;
472 int err, version; 472 int err, version;
@@ -723,8 +723,8 @@ out_free:
723 return err; 723 return err;
724} 724}
725 725
726asmlinkage long 726SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
727sys_msgsnd(int msqid, struct msgbuf __user *msgp, size_t msgsz, int msgflg) 727 int, msgflg)
728{ 728{
729 long mtype; 729 long mtype;
730 730
@@ -904,8 +904,8 @@ out_unlock:
904 return msgsz; 904 return msgsz;
905} 905}
906 906
907asmlinkage long sys_msgrcv(int msqid, struct msgbuf __user *msgp, size_t msgsz, 907SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz,
908 long msgtyp, int msgflg) 908 long, msgtyp, int, msgflg)
909{ 909{
910 long err, mtype; 910 long err, mtype;
911 911
diff --git a/ipc/sem.c b/ipc/sem.c
index c68cd3f8f0c9..16a2189e96f9 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -308,7 +308,7 @@ static inline int sem_more_checks(struct kern_ipc_perm *ipcp,
308 return 0; 308 return 0;
309} 309}
310 310
311asmlinkage long sys_semget(key_t key, int nsems, int semflg) 311SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg)
312{ 312{
313 struct ipc_namespace *ns; 313 struct ipc_namespace *ns;
314 struct ipc_ops sem_ops; 314 struct ipc_ops sem_ops;
@@ -887,7 +887,7 @@ out_up:
887 return err; 887 return err;
888} 888}
889 889
890asmlinkage long sys_semctl (int semid, int semnum, int cmd, union semun arg) 890SYSCALL_DEFINE(semctl)(int semid, int semnum, int cmd, union semun arg)
891{ 891{
892 int err = -EINVAL; 892 int err = -EINVAL;
893 int version; 893 int version;
@@ -923,6 +923,13 @@ asmlinkage long sys_semctl (int semid, int semnum, int cmd, union semun arg)
923 return -EINVAL; 923 return -EINVAL;
924 } 924 }
925} 925}
926#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
927asmlinkage long SyS_semctl(int semid, int semnum, int cmd, union semun arg)
928{
929 return SYSC_semctl((int) semid, (int) semnum, (int) cmd, arg);
930}
931SYSCALL_ALIAS(sys_semctl, SyS_semctl);
932#endif
926 933
927/* If the task doesn't already have a undo_list, then allocate one 934/* If the task doesn't already have a undo_list, then allocate one
928 * here. We guarantee there is only one thread using this undo list, 935 * here. We guarantee there is only one thread using this undo list,
@@ -1048,8 +1055,8 @@ out:
1048 return un; 1055 return un;
1049} 1056}
1050 1057
1051asmlinkage long sys_semtimedop(int semid, struct sembuf __user *tsops, 1058SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops,
1052 unsigned nsops, const struct timespec __user *timeout) 1059 unsigned, nsops, const struct timespec __user *, timeout)
1053{ 1060{
1054 int error = -EINVAL; 1061 int error = -EINVAL;
1055 struct sem_array *sma; 1062 struct sem_array *sma;
@@ -1225,7 +1232,8 @@ out_free:
1225 return error; 1232 return error;
1226} 1233}
1227 1234
1228asmlinkage long sys_semop (int semid, struct sembuf __user *tsops, unsigned nsops) 1235SYSCALL_DEFINE3(semop, int, semid, struct sembuf __user *, tsops,
1236 unsigned, nsops)
1229{ 1237{
1230 return sys_semtimedop(semid, tsops, nsops, NULL); 1238 return sys_semtimedop(semid, tsops, nsops, NULL);
1231} 1239}
diff --git a/ipc/shm.c b/ipc/shm.c
index d0ab5527bf45..a9e09ad2263e 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -440,7 +440,7 @@ static inline int shm_more_checks(struct kern_ipc_perm *ipcp,
440 return 0; 440 return 0;
441} 441}
442 442
443asmlinkage long sys_shmget (key_t key, size_t size, int shmflg) 443SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg)
444{ 444{
445 struct ipc_namespace *ns; 445 struct ipc_namespace *ns;
446 struct ipc_ops shm_ops; 446 struct ipc_ops shm_ops;
@@ -621,7 +621,7 @@ out_up:
621 return err; 621 return err;
622} 622}
623 623
624asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf) 624SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf)
625{ 625{
626 struct shmid_kernel *shp; 626 struct shmid_kernel *shp;
627 int err, version; 627 int err, version;
@@ -939,7 +939,7 @@ out_put_dentry:
939 goto out_nattch; 939 goto out_nattch;
940} 940}
941 941
942asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg) 942SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg)
943{ 943{
944 unsigned long ret; 944 unsigned long ret;
945 long err; 945 long err;
@@ -955,7 +955,7 @@ asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg)
955 * detach and kill segment if marked destroyed. 955 * detach and kill segment if marked destroyed.
956 * The work is done in shm_close. 956 * The work is done in shm_close.
957 */ 957 */
958asmlinkage long sys_shmdt(char __user *shmaddr) 958SYSCALL_DEFINE1(shmdt, char __user *, shmaddr)
959{ 959{
960 struct mm_struct *mm = current->mm; 960 struct mm_struct *mm = current->mm;
961 struct vm_area_struct *vma, *next; 961 struct vm_area_struct *vma, *next;
diff --git a/kernel/Makefile b/kernel/Makefile
index 2aebc4cd7878..170a9213c1b6 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -40,9 +40,8 @@ obj-$(CONFIG_RT_MUTEXES) += rtmutex.o
40obj-$(CONFIG_DEBUG_RT_MUTEXES) += rtmutex-debug.o 40obj-$(CONFIG_DEBUG_RT_MUTEXES) += rtmutex-debug.o
41obj-$(CONFIG_RT_MUTEX_TESTER) += rtmutex-tester.o 41obj-$(CONFIG_RT_MUTEX_TESTER) += rtmutex-tester.o
42obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o 42obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
43ifeq ($(CONFIG_USE_GENERIC_SMP_HELPERS),y) 43obj-$(CONFIG_USE_GENERIC_SMP_HELPERS) += smp.o
44obj-y += smp.o 44ifneq ($(CONFIG_SMP),y)
45else
46obj-y += up.o 45obj-y += up.o
47endif 46endif
48obj-$(CONFIG_SMP) += spinlock.o 47obj-$(CONFIG_SMP) += spinlock.o
diff --git a/kernel/acct.c b/kernel/acct.c
index d57b7cbb98b6..7afa31564162 100644
--- a/kernel/acct.c
+++ b/kernel/acct.c
@@ -277,7 +277,7 @@ static int acct_on(char *name)
277 * should be written. If the filename is NULL, accounting will be 277 * should be written. If the filename is NULL, accounting will be
278 * shutdown. 278 * shutdown.
279 */ 279 */
280asmlinkage long sys_acct(const char __user *name) 280SYSCALL_DEFINE1(acct, const char __user *, name)
281{ 281{
282 int error; 282 int error;
283 283
diff --git a/kernel/capability.c b/kernel/capability.c
index 688926e496be..4e17041963f5 100644
--- a/kernel/capability.c
+++ b/kernel/capability.c
@@ -161,7 +161,7 @@ static inline int cap_get_target_pid(pid_t pid, kernel_cap_t *pEp,
161 * 161 *
162 * Returns 0 on success and < 0 on error. 162 * Returns 0 on success and < 0 on error.
163 */ 163 */
164asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr) 164SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
165{ 165{
166 int ret = 0; 166 int ret = 0;
167 pid_t pid; 167 pid_t pid;
@@ -235,7 +235,7 @@ asmlinkage long sys_capget(cap_user_header_t header, cap_user_data_t dataptr)
235 * 235 *
236 * Returns 0 on success and < 0 on error. 236 * Returns 0 on success and < 0 on error.
237 */ 237 */
238asmlinkage long sys_capset(cap_user_header_t header, const cap_user_data_t data) 238SYSCALL_DEFINE2(capset, cap_user_header_t, header, const cap_user_data_t, data)
239{ 239{
240 struct __user_cap_data_struct kdata[_KERNEL_CAPABILITY_U32S]; 240 struct __user_cap_data_struct kdata[_KERNEL_CAPABILITY_U32S];
241 unsigned i, tocopy; 241 unsigned i, tocopy;
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 647c77a88fcb..a85678865c5e 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -568,7 +568,7 @@ update_domain_attr_tree(struct sched_domain_attr *dattr, struct cpuset *c)
568 * load balancing domains (sched domains) as specified by that partial 568 * load balancing domains (sched domains) as specified by that partial
569 * partition. 569 * partition.
570 * 570 *
571 * See "What is sched_load_balance" in Documentation/cpusets.txt 571 * See "What is sched_load_balance" in Documentation/cgroups/cpusets.txt
572 * for a background explanation of this. 572 * for a background explanation of this.
573 * 573 *
574 * Does not return errors, on the theory that the callers of this 574 * Does not return errors, on the theory that the callers of this
diff --git a/kernel/dma-coherent.c b/kernel/dma-coherent.c
index 038707404b76..962a3b574f21 100644
--- a/kernel/dma-coherent.c
+++ b/kernel/dma-coherent.c
@@ -98,7 +98,7 @@ EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
98 * @size: size of requested memory area 98 * @size: size of requested memory area
99 * @dma_handle: This will be filled with the correct dma handle 99 * @dma_handle: This will be filled with the correct dma handle
100 * @ret: This pointer will be filled with the virtual address 100 * @ret: This pointer will be filled with the virtual address
101 * to allocated area. 101 * to allocated area.
102 * 102 *
103 * This function should be only called from per-arch dma_alloc_coherent() 103 * This function should be only called from per-arch dma_alloc_coherent()
104 * to support allocation from per-device coherent memory pools. 104 * to support allocation from per-device coherent memory pools.
@@ -118,31 +118,32 @@ int dma_alloc_from_coherent(struct device *dev, ssize_t size,
118 mem = dev->dma_mem; 118 mem = dev->dma_mem;
119 if (!mem) 119 if (!mem)
120 return 0; 120 return 0;
121 if (unlikely(size > mem->size)) 121
122 return 0; 122 *ret = NULL;
123
124 if (unlikely(size > (mem->size << PAGE_SHIFT)))
125 goto err;
123 126
124 pageno = bitmap_find_free_region(mem->bitmap, mem->size, order); 127 pageno = bitmap_find_free_region(mem->bitmap, mem->size, order);
125 if (pageno >= 0) { 128 if (unlikely(pageno < 0))
126 /* 129 goto err;
127 * Memory was found in the per-device arena. 130
128 */ 131 /*
129 *dma_handle = mem->device_base + (pageno << PAGE_SHIFT); 132 * Memory was found in the per-device area.
130 *ret = mem->virt_base + (pageno << PAGE_SHIFT); 133 */
131 memset(*ret, 0, size); 134 *dma_handle = mem->device_base + (pageno << PAGE_SHIFT);
132 } else if (mem->flags & DMA_MEMORY_EXCLUSIVE) { 135 *ret = mem->virt_base + (pageno << PAGE_SHIFT);
133 /* 136 memset(*ret, 0, size);
134 * The per-device arena is exhausted and we are not 137
135 * permitted to fall back to generic memory.
136 */
137 *ret = NULL;
138 } else {
139 /*
140 * The per-device arena is exhausted and we are
141 * permitted to fall back to generic memory.
142 */
143 return 0;
144 }
145 return 1; 138 return 1;
139
140err:
141 /*
142 * In the case where the allocation can not be satisfied from the
143 * per-device area, try to fall back to generic memory if the
144 * constraints allow it.
145 */
146 return mem->flags & DMA_MEMORY_EXCLUSIVE;
146} 147}
147EXPORT_SYMBOL(dma_alloc_from_coherent); 148EXPORT_SYMBOL(dma_alloc_from_coherent);
148 149
diff --git a/kernel/exec_domain.c b/kernel/exec_domain.c
index 0511716e9424..667c841c2952 100644
--- a/kernel/exec_domain.c
+++ b/kernel/exec_domain.c
@@ -209,8 +209,7 @@ static int __init proc_execdomains_init(void)
209module_init(proc_execdomains_init); 209module_init(proc_execdomains_init);
210#endif 210#endif
211 211
212asmlinkage long 212SYSCALL_DEFINE1(personality, u_long, personality)
213sys_personality(u_long personality)
214{ 213{
215 u_long old = current->personality; 214 u_long old = current->personality;
216 215
diff --git a/kernel/exit.c b/kernel/exit.c
index c7740fa3252c..f80dec3f1875 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -1141,7 +1141,7 @@ NORET_TYPE void complete_and_exit(struct completion *comp, long code)
1141 1141
1142EXPORT_SYMBOL(complete_and_exit); 1142EXPORT_SYMBOL(complete_and_exit);
1143 1143
1144asmlinkage long sys_exit(int error_code) 1144SYSCALL_DEFINE1(exit, int, error_code)
1145{ 1145{
1146 do_exit((error_code&0xff)<<8); 1146 do_exit((error_code&0xff)<<8);
1147} 1147}
@@ -1182,9 +1182,11 @@ do_group_exit(int exit_code)
1182 * wait4()-ing process will get the correct exit code - even if this 1182 * wait4()-ing process will get the correct exit code - even if this
1183 * thread is not the thread group leader. 1183 * thread is not the thread group leader.
1184 */ 1184 */
1185asmlinkage void sys_exit_group(int error_code) 1185SYSCALL_DEFINE1(exit_group, int, error_code)
1186{ 1186{
1187 do_group_exit((error_code & 0xff) << 8); 1187 do_group_exit((error_code & 0xff) << 8);
1188 /* NOTREACHED */
1189 return 0;
1188} 1190}
1189 1191
1190static struct pid *task_pid_type(struct task_struct *task, enum pid_type type) 1192static struct pid *task_pid_type(struct task_struct *task, enum pid_type type)
@@ -1752,9 +1754,8 @@ end:
1752 return retval; 1754 return retval;
1753} 1755}
1754 1756
1755asmlinkage long sys_waitid(int which, pid_t upid, 1757SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
1756 struct siginfo __user *infop, int options, 1758 infop, int, options, struct rusage __user *, ru)
1757 struct rusage __user *ru)
1758{ 1759{
1759 struct pid *pid = NULL; 1760 struct pid *pid = NULL;
1760 enum pid_type type; 1761 enum pid_type type;
@@ -1793,8 +1794,8 @@ asmlinkage long sys_waitid(int which, pid_t upid,
1793 return ret; 1794 return ret;
1794} 1795}
1795 1796
1796asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr, 1797SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr,
1797 int options, struct rusage __user *ru) 1798 int, options, struct rusage __user *, ru)
1798{ 1799{
1799 struct pid *pid = NULL; 1800 struct pid *pid = NULL;
1800 enum pid_type type; 1801 enum pid_type type;
@@ -1831,7 +1832,7 @@ asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr,
1831 * sys_waitpid() remains for compatibility. waitpid() should be 1832 * sys_waitpid() remains for compatibility. waitpid() should be
1832 * implemented by calling sys_wait4() from libc.a. 1833 * implemented by calling sys_wait4() from libc.a.
1833 */ 1834 */
1834asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options) 1835SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options)
1835{ 1836{
1836 return sys_wait4(pid, stat_addr, options, NULL); 1837 return sys_wait4(pid, stat_addr, options, NULL);
1837} 1838}
diff --git a/kernel/fork.c b/kernel/fork.c
index 1d68f1255dd8..242a706e7721 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -817,17 +817,17 @@ static void posix_cpu_timers_init_group(struct signal_struct *sig)
817static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) 817static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
818{ 818{
819 struct signal_struct *sig; 819 struct signal_struct *sig;
820 int ret;
821 820
822 if (clone_flags & CLONE_THREAD) { 821 if (clone_flags & CLONE_THREAD) {
823 ret = thread_group_cputime_clone_thread(current); 822 atomic_inc(&current->signal->count);
824 if (likely(!ret)) { 823 atomic_inc(&current->signal->live);
825 atomic_inc(&current->signal->count); 824 return 0;
826 atomic_inc(&current->signal->live);
827 }
828 return ret;
829 } 825 }
830 sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL); 826 sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
827
828 if (sig)
829 posix_cpu_timers_init_group(sig);
830
831 tsk->signal = sig; 831 tsk->signal = sig;
832 if (!sig) 832 if (!sig)
833 return -ENOMEM; 833 return -ENOMEM;
@@ -864,8 +864,6 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
864 memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim); 864 memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim);
865 task_unlock(current->group_leader); 865 task_unlock(current->group_leader);
866 866
867 posix_cpu_timers_init_group(sig);
868
869 acct_init_pacct(&sig->pacct); 867 acct_init_pacct(&sig->pacct);
870 868
871 tty_audit_fork(sig); 869 tty_audit_fork(sig);
@@ -901,7 +899,7 @@ static void copy_flags(unsigned long clone_flags, struct task_struct *p)
901 clear_freeze_flag(p); 899 clear_freeze_flag(p);
902} 900}
903 901
904asmlinkage long sys_set_tid_address(int __user *tidptr) 902SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
905{ 903{
906 current->clear_child_tid = tidptr; 904 current->clear_child_tid = tidptr;
907 905
@@ -1603,7 +1601,7 @@ static int unshare_fd(unsigned long unshare_flags, struct files_struct **new_fdp
1603 * constructed. Here we are modifying the current, active, 1601 * constructed. Here we are modifying the current, active,
1604 * task_struct. 1602 * task_struct.
1605 */ 1603 */
1606asmlinkage long sys_unshare(unsigned long unshare_flags) 1604SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
1607{ 1605{
1608 int err = 0; 1606 int err = 0;
1609 struct fs_struct *fs, *new_fs = NULL; 1607 struct fs_struct *fs, *new_fs = NULL;
diff --git a/kernel/futex.c b/kernel/futex.c
index 002aa189eb09..f89d373a9c6d 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1733,9 +1733,8 @@ pi_faulted:
1733 * @head: pointer to the list-head 1733 * @head: pointer to the list-head
1734 * @len: length of the list-head, as userspace expects 1734 * @len: length of the list-head, as userspace expects
1735 */ 1735 */
1736asmlinkage long 1736SYSCALL_DEFINE2(set_robust_list, struct robust_list_head __user *, head,
1737sys_set_robust_list(struct robust_list_head __user *head, 1737 size_t, len)
1738 size_t len)
1739{ 1738{
1740 if (!futex_cmpxchg_enabled) 1739 if (!futex_cmpxchg_enabled)
1741 return -ENOSYS; 1740 return -ENOSYS;
@@ -1756,9 +1755,9 @@ sys_set_robust_list(struct robust_list_head __user *head,
1756 * @head_ptr: pointer to a list-head pointer, the kernel fills it in 1755 * @head_ptr: pointer to a list-head pointer, the kernel fills it in
1757 * @len_ptr: pointer to a length field, the kernel fills in the header size 1756 * @len_ptr: pointer to a length field, the kernel fills in the header size
1758 */ 1757 */
1759asmlinkage long 1758SYSCALL_DEFINE3(get_robust_list, int, pid,
1760sys_get_robust_list(int pid, struct robust_list_head __user * __user *head_ptr, 1759 struct robust_list_head __user * __user *, head_ptr,
1761 size_t __user *len_ptr) 1760 size_t __user *, len_ptr)
1762{ 1761{
1763 struct robust_list_head __user *head; 1762 struct robust_list_head __user *head;
1764 unsigned long ret; 1763 unsigned long ret;
@@ -1978,9 +1977,9 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
1978} 1977}
1979 1978
1980 1979
1981asmlinkage long sys_futex(u32 __user *uaddr, int op, u32 val, 1980SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
1982 struct timespec __user *utime, u32 __user *uaddr2, 1981 struct timespec __user *, utime, u32 __user *, uaddr2,
1983 u32 val3) 1982 u32, val3)
1984{ 1983{
1985 struct timespec ts; 1984 struct timespec ts;
1986 ktime_t t, *tp = NULL; 1985 ktime_t t, *tp = NULL;
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index 1455b7651b6b..f33afb0407bc 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -614,7 +614,9 @@ void clock_was_set(void)
614 */ 614 */
615void hres_timers_resume(void) 615void hres_timers_resume(void)
616{ 616{
617 /* Retrigger the CPU local events: */ 617 WARN_ONCE(!irqs_disabled(),
618 KERN_INFO "hres_timers_resume() called with IRQs enabled!");
619
618 retrigger_next_event(NULL); 620 retrigger_next_event(NULL);
619} 621}
620 622
@@ -1467,8 +1469,8 @@ out:
1467 return ret; 1469 return ret;
1468} 1470}
1469 1471
1470asmlinkage long 1472SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
1471sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp) 1473 struct timespec __user *, rmtp)
1472{ 1474{
1473 struct timespec tu; 1475 struct timespec tu;
1474 1476
diff --git a/kernel/itimer.c b/kernel/itimer.c
index db7c358b9a02..6a5fe93dd8bd 100644
--- a/kernel/itimer.c
+++ b/kernel/itimer.c
@@ -100,7 +100,7 @@ int do_getitimer(int which, struct itimerval *value)
100 return 0; 100 return 0;
101} 101}
102 102
103asmlinkage long sys_getitimer(int which, struct itimerval __user *value) 103SYSCALL_DEFINE2(getitimer, int, which, struct itimerval __user *, value)
104{ 104{
105 int error = -EFAULT; 105 int error = -EFAULT;
106 struct itimerval get_buffer; 106 struct itimerval get_buffer;
@@ -260,9 +260,8 @@ unsigned int alarm_setitimer(unsigned int seconds)
260 return it_old.it_value.tv_sec; 260 return it_old.it_value.tv_sec;
261} 261}
262 262
263asmlinkage long sys_setitimer(int which, 263SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value,
264 struct itimerval __user *value, 264 struct itimerval __user *, ovalue)
265 struct itimerval __user *ovalue)
266{ 265{
267 struct itimerval set_buffer, get_buffer; 266 struct itimerval set_buffer, get_buffer;
268 int error; 267 int error;
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 3fb855ad6aa0..8a6d7b08864e 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -934,9 +934,8 @@ struct kimage *kexec_crash_image;
934 934
935static DEFINE_MUTEX(kexec_mutex); 935static DEFINE_MUTEX(kexec_mutex);
936 936
937asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments, 937SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
938 struct kexec_segment __user *segments, 938 struct kexec_segment __user *, segments, unsigned long, flags)
939 unsigned long flags)
940{ 939{
941 struct kimage **dest_image, *image; 940 struct kimage **dest_image, *image;
942 int result; 941 int result;
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 1b9cbdc0127a..7ba8cd9845cb 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -123,7 +123,7 @@ static int collect_garbage_slots(void);
123static int __kprobes check_safety(void) 123static int __kprobes check_safety(void)
124{ 124{
125 int ret = 0; 125 int ret = 0;
126#if defined(CONFIG_PREEMPT) && defined(CONFIG_PM) 126#if defined(CONFIG_PREEMPT) && defined(CONFIG_FREEZER)
127 ret = freeze_processes(); 127 ret = freeze_processes();
128 if (ret == 0) { 128 if (ret == 0) {
129 struct task_struct *p, *q; 129 struct task_struct *p, *q;
diff --git a/kernel/module.c b/kernel/module.c
index c9332c90d5a0..e8b51d41dd72 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -743,8 +743,8 @@ static void wait_for_zero_refcount(struct module *mod)
743 mutex_lock(&module_mutex); 743 mutex_lock(&module_mutex);
744} 744}
745 745
746asmlinkage long 746SYSCALL_DEFINE2(delete_module, const char __user *, name_user,
747sys_delete_module(const char __user *name_user, unsigned int flags) 747 unsigned int, flags)
748{ 748{
749 struct module *mod; 749 struct module *mod;
750 char name[MODULE_NAME_LEN]; 750 char name[MODULE_NAME_LEN];
@@ -2296,10 +2296,8 @@ static noinline struct module *load_module(void __user *umod,
2296} 2296}
2297 2297
2298/* This is where the real work happens */ 2298/* This is where the real work happens */
2299asmlinkage long 2299SYSCALL_DEFINE3(init_module, void __user *, umod,
2300sys_init_module(void __user *umod, 2300 unsigned long, len, const char __user *, uargs)
2301 unsigned long len,
2302 const char __user *uargs)
2303{ 2301{
2304 struct module *mod; 2302 struct module *mod;
2305 int ret = 0; 2303 int ret = 0;
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index 157de3a47832..fa07da94d7be 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -10,76 +10,6 @@
10#include <linux/kernel_stat.h> 10#include <linux/kernel_stat.h>
11 11
12/* 12/*
13 * Allocate the thread_group_cputime structure appropriately and fill in the
14 * current values of the fields. Called from copy_signal() via
15 * thread_group_cputime_clone_thread() when adding a second or subsequent
16 * thread to a thread group. Assumes interrupts are enabled when called.
17 */
18int thread_group_cputime_alloc(struct task_struct *tsk)
19{
20 struct signal_struct *sig = tsk->signal;
21 struct task_cputime *cputime;
22
23 /*
24 * If we have multiple threads and we don't already have a
25 * per-CPU task_cputime struct (checked in the caller), allocate
26 * one and fill it in with the times accumulated so far. We may
27 * race with another thread so recheck after we pick up the sighand
28 * lock.
29 */
30 cputime = alloc_percpu(struct task_cputime);
31 if (cputime == NULL)
32 return -ENOMEM;
33 spin_lock_irq(&tsk->sighand->siglock);
34 if (sig->cputime.totals) {
35 spin_unlock_irq(&tsk->sighand->siglock);
36 free_percpu(cputime);
37 return 0;
38 }
39 sig->cputime.totals = cputime;
40 cputime = per_cpu_ptr(sig->cputime.totals, smp_processor_id());
41 cputime->utime = tsk->utime;
42 cputime->stime = tsk->stime;
43 cputime->sum_exec_runtime = tsk->se.sum_exec_runtime;
44 spin_unlock_irq(&tsk->sighand->siglock);
45 return 0;
46}
47
48/**
49 * thread_group_cputime - Sum the thread group time fields across all CPUs.
50 *
51 * @tsk: The task we use to identify the thread group.
52 * @times: task_cputime structure in which we return the summed fields.
53 *
54 * Walk the list of CPUs to sum the per-CPU time fields in the thread group
55 * time structure.
56 */
57void thread_group_cputime(
58 struct task_struct *tsk,
59 struct task_cputime *times)
60{
61 struct task_cputime *totals, *tot;
62 int i;
63
64 totals = tsk->signal->cputime.totals;
65 if (!totals) {
66 times->utime = tsk->utime;
67 times->stime = tsk->stime;
68 times->sum_exec_runtime = tsk->se.sum_exec_runtime;
69 return;
70 }
71
72 times->stime = times->utime = cputime_zero;
73 times->sum_exec_runtime = 0;
74 for_each_possible_cpu(i) {
75 tot = per_cpu_ptr(totals, i);
76 times->utime = cputime_add(times->utime, tot->utime);
77 times->stime = cputime_add(times->stime, tot->stime);
78 times->sum_exec_runtime += tot->sum_exec_runtime;
79 }
80}
81
82/*
83 * Called after updating RLIMIT_CPU to set timer expiration if necessary. 13 * Called after updating RLIMIT_CPU to set timer expiration if necessary.
84 */ 14 */
85void update_rlimit_cpu(unsigned long rlim_new) 15void update_rlimit_cpu(unsigned long rlim_new)
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
index 887c63787de6..052ec4d195c7 100644
--- a/kernel/posix-timers.c
+++ b/kernel/posix-timers.c
@@ -477,10 +477,9 @@ static void release_posix_timer(struct k_itimer *tmr, int it_id_set)
477 477
478/* Create a POSIX.1b interval timer. */ 478/* Create a POSIX.1b interval timer. */
479 479
480asmlinkage long 480SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock,
481sys_timer_create(const clockid_t which_clock, 481 struct sigevent __user *, timer_event_spec,
482 struct sigevent __user *timer_event_spec, 482 timer_t __user *, created_timer_id)
483 timer_t __user * created_timer_id)
484{ 483{
485 struct k_itimer *new_timer; 484 struct k_itimer *new_timer;
486 int error, new_timer_id; 485 int error, new_timer_id;
@@ -661,8 +660,8 @@ common_timer_get(struct k_itimer *timr, struct itimerspec *cur_setting)
661} 660}
662 661
663/* Get the time remaining on a POSIX.1b interval timer. */ 662/* Get the time remaining on a POSIX.1b interval timer. */
664asmlinkage long 663SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
665sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting) 664 struct itimerspec __user *, setting)
666{ 665{
667 struct k_itimer *timr; 666 struct k_itimer *timr;
668 struct itimerspec cur_setting; 667 struct itimerspec cur_setting;
@@ -691,8 +690,7 @@ sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting)
691 * the call back to do_schedule_next_timer(). So all we need to do is 690 * the call back to do_schedule_next_timer(). So all we need to do is
692 * to pick up the frozen overrun. 691 * to pick up the frozen overrun.
693 */ 692 */
694asmlinkage long 693SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id)
695sys_timer_getoverrun(timer_t timer_id)
696{ 694{
697 struct k_itimer *timr; 695 struct k_itimer *timr;
698 int overrun; 696 int overrun;
@@ -760,10 +758,9 @@ common_timer_set(struct k_itimer *timr, int flags,
760} 758}
761 759
762/* Set a POSIX.1b interval timer */ 760/* Set a POSIX.1b interval timer */
763asmlinkage long 761SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
764sys_timer_settime(timer_t timer_id, int flags, 762 const struct itimerspec __user *, new_setting,
765 const struct itimerspec __user *new_setting, 763 struct itimerspec __user *, old_setting)
766 struct itimerspec __user *old_setting)
767{ 764{
768 struct k_itimer *timr; 765 struct k_itimer *timr;
769 struct itimerspec new_spec, old_spec; 766 struct itimerspec new_spec, old_spec;
@@ -816,8 +813,7 @@ static inline int timer_delete_hook(struct k_itimer *timer)
816} 813}
817 814
818/* Delete a POSIX.1b interval timer. */ 815/* Delete a POSIX.1b interval timer. */
819asmlinkage long 816SYSCALL_DEFINE1(timer_delete, timer_t, timer_id)
820sys_timer_delete(timer_t timer_id)
821{ 817{
822 struct k_itimer *timer; 818 struct k_itimer *timer;
823 unsigned long flags; 819 unsigned long flags;
@@ -903,8 +899,8 @@ int do_posix_clock_nonanosleep(const clockid_t clock, int flags,
903} 899}
904EXPORT_SYMBOL_GPL(do_posix_clock_nonanosleep); 900EXPORT_SYMBOL_GPL(do_posix_clock_nonanosleep);
905 901
906asmlinkage long sys_clock_settime(const clockid_t which_clock, 902SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock,
907 const struct timespec __user *tp) 903 const struct timespec __user *, tp)
908{ 904{
909 struct timespec new_tp; 905 struct timespec new_tp;
910 906
@@ -916,8 +912,8 @@ asmlinkage long sys_clock_settime(const clockid_t which_clock,
916 return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp)); 912 return CLOCK_DISPATCH(which_clock, clock_set, (which_clock, &new_tp));
917} 913}
918 914
919asmlinkage long 915SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock,
920sys_clock_gettime(const clockid_t which_clock, struct timespec __user *tp) 916 struct timespec __user *,tp)
921{ 917{
922 struct timespec kernel_tp; 918 struct timespec kernel_tp;
923 int error; 919 int error;
@@ -933,8 +929,8 @@ sys_clock_gettime(const clockid_t which_clock, struct timespec __user *tp)
933 929
934} 930}
935 931
936asmlinkage long 932SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock,
937sys_clock_getres(const clockid_t which_clock, struct timespec __user *tp) 933 struct timespec __user *, tp)
938{ 934{
939 struct timespec rtn_tp; 935 struct timespec rtn_tp;
940 int error; 936 int error;
@@ -963,10 +959,9 @@ static int common_nsleep(const clockid_t which_clock, int flags,
963 which_clock); 959 which_clock);
964} 960}
965 961
966asmlinkage long 962SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags,
967sys_clock_nanosleep(const clockid_t which_clock, int flags, 963 const struct timespec __user *, rqtp,
968 const struct timespec __user *rqtp, 964 struct timespec __user *, rmtp)
969 struct timespec __user *rmtp)
970{ 965{
971 struct timespec t; 966 struct timespec t;
972 967
diff --git a/kernel/power/Makefile b/kernel/power/Makefile
index 597823b5b700..d7a10167a25b 100644
--- a/kernel/power/Makefile
+++ b/kernel/power/Makefile
@@ -4,7 +4,8 @@ EXTRA_CFLAGS += -DDEBUG
4endif 4endif
5 5
6obj-y := main.o 6obj-y := main.o
7obj-$(CONFIG_PM_SLEEP) += process.o console.o 7obj-$(CONFIG_PM_SLEEP) += console.o
8obj-$(CONFIG_FREEZER) += process.o
8obj-$(CONFIG_HIBERNATION) += swsusp.o disk.o snapshot.o swap.o user.o 9obj-$(CONFIG_HIBERNATION) += swsusp.o disk.o snapshot.o swap.o user.o
9 10
10obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o 11obj-$(CONFIG_MAGIC_SYSRQ) += poweroff.o
diff --git a/kernel/printk.c b/kernel/printk.c
index 7015733793e8..69188f226a93 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -382,7 +382,7 @@ out:
382 return error; 382 return error;
383} 383}
384 384
385asmlinkage long sys_syslog(int type, char __user *buf, int len) 385SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len)
386{ 386{
387 return do_syslog(type, buf, len); 387 return do_syslog(type, buf, len);
388} 388}
@@ -742,11 +742,6 @@ EXPORT_SYMBOL(vprintk);
742 742
743#else 743#else
744 744
745asmlinkage long sys_syslog(int type, char __user *buf, int len)
746{
747 return -ENOSYS;
748}
749
750static void call_console_drivers(unsigned start, unsigned end) 745static void call_console_drivers(unsigned start, unsigned end)
751{ 746{
752} 747}
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 29dc700e198c..c9cf48b21f05 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -574,7 +574,7 @@ struct task_struct *ptrace_get_task_struct(pid_t pid)
574#define arch_ptrace_attach(child) do { } while (0) 574#define arch_ptrace_attach(child) do { } while (0)
575#endif 575#endif
576 576
577asmlinkage long sys_ptrace(long request, long pid, long addr, long data) 577SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
578{ 578{
579 struct task_struct *child; 579 struct task_struct *child;
580 long ret; 580 long ret;
diff --git a/kernel/rcuclassic.c b/kernel/rcuclassic.c
index 490934fc7ac3..bd5a9003497c 100644
--- a/kernel/rcuclassic.c
+++ b/kernel/rcuclassic.c
@@ -716,7 +716,7 @@ void rcu_check_callbacks(int cpu, int user)
716 raise_rcu_softirq(); 716 raise_rcu_softirq();
717} 717}
718 718
719static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, 719static void __cpuinit rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp,
720 struct rcu_data *rdp) 720 struct rcu_data *rdp)
721{ 721{
722 unsigned long flags; 722 unsigned long flags;
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index f2d8638e6c60..b2fd602a6f6f 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1314,7 +1314,7 @@ int rcu_needs_cpu(int cpu)
1314 * access due to the fact that this CPU cannot possibly have any RCU 1314 * access due to the fact that this CPU cannot possibly have any RCU
1315 * callbacks in flight yet. 1315 * callbacks in flight yet.
1316 */ 1316 */
1317static void 1317static void __cpuinit
1318rcu_init_percpu_data(int cpu, struct rcu_state *rsp) 1318rcu_init_percpu_data(int cpu, struct rcu_state *rsp)
1319{ 1319{
1320 unsigned long flags; 1320 unsigned long flags;
diff --git a/kernel/relay.c b/kernel/relay.c
index 09ac2008f77b..9d79b7854fa6 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -663,8 +663,10 @@ int relay_late_setup_files(struct rchan *chan,
663 663
664 mutex_lock(&relay_channels_mutex); 664 mutex_lock(&relay_channels_mutex);
665 /* Is chan already set up? */ 665 /* Is chan already set up? */
666 if (unlikely(chan->has_base_filename)) 666 if (unlikely(chan->has_base_filename)) {
667 mutex_unlock(&relay_channels_mutex);
667 return -EEXIST; 668 return -EEXIST;
669 }
668 chan->has_base_filename = 1; 670 chan->has_base_filename = 1;
669 chan->parent = parent; 671 chan->parent = parent;
670 curr_cpu = get_cpu(); 672 curr_cpu = get_cpu();
diff --git a/kernel/resource.c b/kernel/resource.c
index ca6a1536b205..fd5d7d574bb9 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -620,6 +620,7 @@ resource_size_t resource_alignment(struct resource *res)
620 * @start: resource start address 620 * @start: resource start address
621 * @n: resource region size 621 * @n: resource region size
622 * @name: reserving caller's ID string 622 * @name: reserving caller's ID string
623 * @flags: IO resource flags
623 */ 624 */
624struct resource * __request_region(struct resource *parent, 625struct resource * __request_region(struct resource *parent,
625 resource_size_t start, resource_size_t n, 626 resource_size_t start, resource_size_t n,
diff --git a/kernel/sched.c b/kernel/sched.c
index 8be2c13b50d0..52bbf1c842a8 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1323,8 +1323,8 @@ static inline void update_load_sub(struct load_weight *lw, unsigned long dec)
1323 * slice expiry etc. 1323 * slice expiry etc.
1324 */ 1324 */
1325 1325
1326#define WEIGHT_IDLEPRIO 2 1326#define WEIGHT_IDLEPRIO 3
1327#define WMULT_IDLEPRIO (1 << 31) 1327#define WMULT_IDLEPRIO 1431655765
1328 1328
1329/* 1329/*
1330 * Nice levels are multiplicative, with a gentle 10% change for every 1330 * Nice levels are multiplicative, with a gentle 10% change for every
@@ -4440,7 +4440,7 @@ void __kprobes sub_preempt_count(int val)
4440 /* 4440 /*
4441 * Underflow? 4441 * Underflow?
4442 */ 4442 */
4443 if (DEBUG_LOCKS_WARN_ON(val > preempt_count() - (!!kernel_locked()))) 4443 if (DEBUG_LOCKS_WARN_ON(val > preempt_count()))
4444 return; 4444 return;
4445 /* 4445 /*
4446 * Is the spinlock portion underflowing? 4446 * Is the spinlock portion underflowing?
@@ -5126,7 +5126,7 @@ int can_nice(const struct task_struct *p, const int nice)
5126 * sys_setpriority is a more generic, but much slower function that 5126 * sys_setpriority is a more generic, but much slower function that
5127 * does similar things. 5127 * does similar things.
5128 */ 5128 */
5129asmlinkage long sys_nice(int increment) 5129SYSCALL_DEFINE1(nice, int, increment)
5130{ 5130{
5131 long nice, retval; 5131 long nice, retval;
5132 5132
@@ -5433,8 +5433,8 @@ do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
5433 * @policy: new policy. 5433 * @policy: new policy.
5434 * @param: structure containing the new RT priority. 5434 * @param: structure containing the new RT priority.
5435 */ 5435 */
5436asmlinkage long 5436SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy,
5437sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param) 5437 struct sched_param __user *, param)
5438{ 5438{
5439 /* negative values for policy are not valid */ 5439 /* negative values for policy are not valid */
5440 if (policy < 0) 5440 if (policy < 0)
@@ -5448,7 +5448,7 @@ sys_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
5448 * @pid: the pid in question. 5448 * @pid: the pid in question.
5449 * @param: structure containing the new RT priority. 5449 * @param: structure containing the new RT priority.
5450 */ 5450 */
5451asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param) 5451SYSCALL_DEFINE2(sched_setparam, pid_t, pid, struct sched_param __user *, param)
5452{ 5452{
5453 return do_sched_setscheduler(pid, -1, param); 5453 return do_sched_setscheduler(pid, -1, param);
5454} 5454}
@@ -5457,7 +5457,7 @@ asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param)
5457 * sys_sched_getscheduler - get the policy (scheduling class) of a thread 5457 * sys_sched_getscheduler - get the policy (scheduling class) of a thread
5458 * @pid: the pid in question. 5458 * @pid: the pid in question.
5459 */ 5459 */
5460asmlinkage long sys_sched_getscheduler(pid_t pid) 5460SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid)
5461{ 5461{
5462 struct task_struct *p; 5462 struct task_struct *p;
5463 int retval; 5463 int retval;
@@ -5482,7 +5482,7 @@ asmlinkage long sys_sched_getscheduler(pid_t pid)
5482 * @pid: the pid in question. 5482 * @pid: the pid in question.
5483 * @param: structure containing the RT priority. 5483 * @param: structure containing the RT priority.
5484 */ 5484 */
5485asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param __user *param) 5485SYSCALL_DEFINE2(sched_getparam, pid_t, pid, struct sched_param __user *, param)
5486{ 5486{
5487 struct sched_param lp; 5487 struct sched_param lp;
5488 struct task_struct *p; 5488 struct task_struct *p;
@@ -5600,8 +5600,8 @@ static int get_user_cpu_mask(unsigned long __user *user_mask_ptr, unsigned len,
5600 * @len: length in bytes of the bitmask pointed to by user_mask_ptr 5600 * @len: length in bytes of the bitmask pointed to by user_mask_ptr
5601 * @user_mask_ptr: user-space pointer to the new cpu mask 5601 * @user_mask_ptr: user-space pointer to the new cpu mask
5602 */ 5602 */
5603asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len, 5603SYSCALL_DEFINE3(sched_setaffinity, pid_t, pid, unsigned int, len,
5604 unsigned long __user *user_mask_ptr) 5604 unsigned long __user *, user_mask_ptr)
5605{ 5605{
5606 cpumask_var_t new_mask; 5606 cpumask_var_t new_mask;
5607 int retval; 5607 int retval;
@@ -5648,8 +5648,8 @@ out_unlock:
5648 * @len: length in bytes of the bitmask pointed to by user_mask_ptr 5648 * @len: length in bytes of the bitmask pointed to by user_mask_ptr
5649 * @user_mask_ptr: user-space pointer to hold the current cpu mask 5649 * @user_mask_ptr: user-space pointer to hold the current cpu mask
5650 */ 5650 */
5651asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len, 5651SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len,
5652 unsigned long __user *user_mask_ptr) 5652 unsigned long __user *, user_mask_ptr)
5653{ 5653{
5654 int ret; 5654 int ret;
5655 cpumask_var_t mask; 5655 cpumask_var_t mask;
@@ -5678,7 +5678,7 @@ asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len,
5678 * This function yields the current CPU to other tasks. If there are no 5678 * This function yields the current CPU to other tasks. If there are no
5679 * other threads running on this CPU then this function will return. 5679 * other threads running on this CPU then this function will return.
5680 */ 5680 */
5681asmlinkage long sys_sched_yield(void) 5681SYSCALL_DEFINE0(sched_yield)
5682{ 5682{
5683 struct rq *rq = this_rq_lock(); 5683 struct rq *rq = this_rq_lock();
5684 5684
@@ -5819,7 +5819,7 @@ long __sched io_schedule_timeout(long timeout)
5819 * this syscall returns the maximum rt_priority that can be used 5819 * this syscall returns the maximum rt_priority that can be used
5820 * by a given scheduling class. 5820 * by a given scheduling class.
5821 */ 5821 */
5822asmlinkage long sys_sched_get_priority_max(int policy) 5822SYSCALL_DEFINE1(sched_get_priority_max, int, policy)
5823{ 5823{
5824 int ret = -EINVAL; 5824 int ret = -EINVAL;
5825 5825
@@ -5844,7 +5844,7 @@ asmlinkage long sys_sched_get_priority_max(int policy)
5844 * this syscall returns the minimum rt_priority that can be used 5844 * this syscall returns the minimum rt_priority that can be used
5845 * by a given scheduling class. 5845 * by a given scheduling class.
5846 */ 5846 */
5847asmlinkage long sys_sched_get_priority_min(int policy) 5847SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
5848{ 5848{
5849 int ret = -EINVAL; 5849 int ret = -EINVAL;
5850 5850
@@ -5869,8 +5869,8 @@ asmlinkage long sys_sched_get_priority_min(int policy)
5869 * this syscall writes the default timeslice value of a given process 5869 * this syscall writes the default timeslice value of a given process
5870 * into the user-space timespec buffer. A value of '0' means infinity. 5870 * into the user-space timespec buffer. A value of '0' means infinity.
5871 */ 5871 */
5872asmlinkage 5872SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid,
5873long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval) 5873 struct timespec __user *, interval)
5874{ 5874{
5875 struct task_struct *p; 5875 struct task_struct *p;
5876 unsigned int time_slice; 5876 unsigned int time_slice;
@@ -9050,6 +9050,13 @@ static int tg_schedulable(struct task_group *tg, void *data)
9050 runtime = d->rt_runtime; 9050 runtime = d->rt_runtime;
9051 } 9051 }
9052 9052
9053#ifdef CONFIG_USER_SCHED
9054 if (tg == &root_task_group) {
9055 period = global_rt_period();
9056 runtime = global_rt_runtime();
9057 }
9058#endif
9059
9053 /* 9060 /*
9054 * Cannot have more runtime than the period. 9061 * Cannot have more runtime than the period.
9055 */ 9062 */
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 8e1352c75557..5cc1c162044f 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -283,7 +283,7 @@ static void update_min_vruntime(struct cfs_rq *cfs_rq)
283 struct sched_entity, 283 struct sched_entity,
284 run_node); 284 run_node);
285 285
286 if (vruntime == cfs_rq->min_vruntime) 286 if (!cfs_rq->curr)
287 vruntime = se->vruntime; 287 vruntime = se->vruntime;
288 else 288 else
289 vruntime = min_vruntime(vruntime, se->vruntime); 289 vruntime = min_vruntime(vruntime, se->vruntime);
@@ -429,7 +429,10 @@ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se)
429 u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); 429 u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq);
430 430
431 for_each_sched_entity(se) { 431 for_each_sched_entity(se) {
432 struct load_weight *load = &cfs_rq->load; 432 struct load_weight *load;
433
434 cfs_rq = cfs_rq_of(se);
435 load = &cfs_rq->load;
433 436
434 if (unlikely(!se->on_rq)) { 437 if (unlikely(!se->on_rq)) {
435 struct load_weight lw = cfs_rq->load; 438 struct load_weight lw = cfs_rq->load;
@@ -677,9 +680,13 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial)
677 unsigned long thresh = sysctl_sched_latency; 680 unsigned long thresh = sysctl_sched_latency;
678 681
679 /* 682 /*
680 * convert the sleeper threshold into virtual time 683 * Convert the sleeper threshold into virtual time.
684 * SCHED_IDLE is a special sub-class. We care about
685 * fairness only relative to other SCHED_IDLE tasks,
686 * all of which have the same weight.
681 */ 687 */
682 if (sched_feat(NORMALIZED_SLEEPER)) 688 if (sched_feat(NORMALIZED_SLEEPER) &&
689 task_of(se)->policy != SCHED_IDLE)
683 thresh = calc_delta_fair(thresh, se); 690 thresh = calc_delta_fair(thresh, se);
684 691
685 vruntime -= thresh; 692 vruntime -= thresh;
@@ -1340,14 +1347,18 @@ wakeup_preempt_entity(struct sched_entity *curr, struct sched_entity *se)
1340 1347
1341static void set_last_buddy(struct sched_entity *se) 1348static void set_last_buddy(struct sched_entity *se)
1342{ 1349{
1343 for_each_sched_entity(se) 1350 if (likely(task_of(se)->policy != SCHED_IDLE)) {
1344 cfs_rq_of(se)->last = se; 1351 for_each_sched_entity(se)
1352 cfs_rq_of(se)->last = se;
1353 }
1345} 1354}
1346 1355
1347static void set_next_buddy(struct sched_entity *se) 1356static void set_next_buddy(struct sched_entity *se)
1348{ 1357{
1349 for_each_sched_entity(se) 1358 if (likely(task_of(se)->policy != SCHED_IDLE)) {
1350 cfs_rq_of(se)->next = se; 1359 for_each_sched_entity(se)
1360 cfs_rq_of(se)->next = se;
1361 }
1351} 1362}
1352 1363
1353/* 1364/*
@@ -1393,12 +1404,18 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int sync)
1393 return; 1404 return;
1394 1405
1395 /* 1406 /*
1396 * Batch tasks do not preempt (their preemption is driven by 1407 * Batch and idle tasks do not preempt (their preemption is driven by
1397 * the tick): 1408 * the tick):
1398 */ 1409 */
1399 if (unlikely(p->policy == SCHED_BATCH)) 1410 if (unlikely(p->policy != SCHED_NORMAL))
1400 return; 1411 return;
1401 1412
1413 /* Idle tasks are by definition preempted by everybody. */
1414 if (unlikely(curr->policy == SCHED_IDLE)) {
1415 resched_task(curr);
1416 return;
1417 }
1418
1402 if (!sched_feat(WAKEUP_PREEMPT)) 1419 if (!sched_feat(WAKEUP_PREEMPT))
1403 return; 1420 return;
1404 1421
diff --git a/kernel/sched_stats.h b/kernel/sched_stats.h
index f2773b5d1226..8ab0cef8ecab 100644
--- a/kernel/sched_stats.h
+++ b/kernel/sched_stats.h
@@ -296,6 +296,7 @@ sched_info_switch(struct task_struct *prev, struct task_struct *next)
296static inline void account_group_user_time(struct task_struct *tsk, 296static inline void account_group_user_time(struct task_struct *tsk,
297 cputime_t cputime) 297 cputime_t cputime)
298{ 298{
299 struct task_cputime *times;
299 struct signal_struct *sig; 300 struct signal_struct *sig;
300 301
301 /* tsk == current, ensure it is safe to use ->signal */ 302 /* tsk == current, ensure it is safe to use ->signal */
@@ -303,13 +304,11 @@ static inline void account_group_user_time(struct task_struct *tsk,
303 return; 304 return;
304 305
305 sig = tsk->signal; 306 sig = tsk->signal;
306 if (sig->cputime.totals) { 307 times = &sig->cputime.totals;
307 struct task_cputime *times;
308 308
309 times = per_cpu_ptr(sig->cputime.totals, get_cpu()); 309 spin_lock(&times->lock);
310 times->utime = cputime_add(times->utime, cputime); 310 times->utime = cputime_add(times->utime, cputime);
311 put_cpu_no_resched(); 311 spin_unlock(&times->lock);
312 }
313} 312}
314 313
315/** 314/**
@@ -325,6 +324,7 @@ static inline void account_group_user_time(struct task_struct *tsk,
325static inline void account_group_system_time(struct task_struct *tsk, 324static inline void account_group_system_time(struct task_struct *tsk,
326 cputime_t cputime) 325 cputime_t cputime)
327{ 326{
327 struct task_cputime *times;
328 struct signal_struct *sig; 328 struct signal_struct *sig;
329 329
330 /* tsk == current, ensure it is safe to use ->signal */ 330 /* tsk == current, ensure it is safe to use ->signal */
@@ -332,13 +332,11 @@ static inline void account_group_system_time(struct task_struct *tsk,
332 return; 332 return;
333 333
334 sig = tsk->signal; 334 sig = tsk->signal;
335 if (sig->cputime.totals) { 335 times = &sig->cputime.totals;
336 struct task_cputime *times;
337 336
338 times = per_cpu_ptr(sig->cputime.totals, get_cpu()); 337 spin_lock(&times->lock);
339 times->stime = cputime_add(times->stime, cputime); 338 times->stime = cputime_add(times->stime, cputime);
340 put_cpu_no_resched(); 339 spin_unlock(&times->lock);
341 }
342} 340}
343 341
344/** 342/**
@@ -354,6 +352,7 @@ static inline void account_group_system_time(struct task_struct *tsk,
354static inline void account_group_exec_runtime(struct task_struct *tsk, 352static inline void account_group_exec_runtime(struct task_struct *tsk,
355 unsigned long long ns) 353 unsigned long long ns)
356{ 354{
355 struct task_cputime *times;
357 struct signal_struct *sig; 356 struct signal_struct *sig;
358 357
359 sig = tsk->signal; 358 sig = tsk->signal;
@@ -362,11 +361,9 @@ static inline void account_group_exec_runtime(struct task_struct *tsk,
362 if (unlikely(!sig)) 361 if (unlikely(!sig))
363 return; 362 return;
364 363
365 if (sig->cputime.totals) { 364 times = &sig->cputime.totals;
366 struct task_cputime *times;
367 365
368 times = per_cpu_ptr(sig->cputime.totals, get_cpu()); 366 spin_lock(&times->lock);
369 times->sum_exec_runtime += ns; 367 times->sum_exec_runtime += ns;
370 put_cpu_no_resched(); 368 spin_unlock(&times->lock);
371 }
372} 369}
diff --git a/kernel/signal.c b/kernel/signal.c
index 3152ac3b62e2..e73759783dc8 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1961,7 +1961,7 @@ EXPORT_SYMBOL(unblock_all_signals);
1961 * System call entry points. 1961 * System call entry points.
1962 */ 1962 */
1963 1963
1964asmlinkage long sys_restart_syscall(void) 1964SYSCALL_DEFINE0(restart_syscall)
1965{ 1965{
1966 struct restart_block *restart = &current_thread_info()->restart_block; 1966 struct restart_block *restart = &current_thread_info()->restart_block;
1967 return restart->fn(restart); 1967 return restart->fn(restart);
@@ -2014,8 +2014,8 @@ int sigprocmask(int how, sigset_t *set, sigset_t *oldset)
2014 return error; 2014 return error;
2015} 2015}
2016 2016
2017asmlinkage long 2017SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, set,
2018sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize) 2018 sigset_t __user *, oset, size_t, sigsetsize)
2019{ 2019{
2020 int error = -EINVAL; 2020 int error = -EINVAL;
2021 sigset_t old_set, new_set; 2021 sigset_t old_set, new_set;
@@ -2074,8 +2074,7 @@ out:
2074 return error; 2074 return error;
2075} 2075}
2076 2076
2077asmlinkage long 2077SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, set, size_t, sigsetsize)
2078sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize)
2079{ 2078{
2080 return do_sigpending(set, sigsetsize); 2079 return do_sigpending(set, sigsetsize);
2081} 2080}
@@ -2146,11 +2145,9 @@ int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from)
2146 2145
2147#endif 2146#endif
2148 2147
2149asmlinkage long 2148SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese,
2150sys_rt_sigtimedwait(const sigset_t __user *uthese, 2149 siginfo_t __user *, uinfo, const struct timespec __user *, uts,
2151 siginfo_t __user *uinfo, 2150 size_t, sigsetsize)
2152 const struct timespec __user *uts,
2153 size_t sigsetsize)
2154{ 2151{
2155 int ret, sig; 2152 int ret, sig;
2156 sigset_t these; 2153 sigset_t these;
@@ -2223,8 +2220,7 @@ sys_rt_sigtimedwait(const sigset_t __user *uthese,
2223 return ret; 2220 return ret;
2224} 2221}
2225 2222
2226asmlinkage long 2223SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)
2227sys_kill(pid_t pid, int sig)
2228{ 2224{
2229 struct siginfo info; 2225 struct siginfo info;
2230 2226
@@ -2283,7 +2279,7 @@ static int do_tkill(pid_t tgid, pid_t pid, int sig)
2283 * exists but it's not belonging to the target process anymore. This 2279 * exists but it's not belonging to the target process anymore. This
2284 * method solves the problem of threads exiting and PIDs getting reused. 2280 * method solves the problem of threads exiting and PIDs getting reused.
2285 */ 2281 */
2286asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig) 2282SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
2287{ 2283{
2288 /* This is only valid for single tasks */ 2284 /* This is only valid for single tasks */
2289 if (pid <= 0 || tgid <= 0) 2285 if (pid <= 0 || tgid <= 0)
@@ -2295,8 +2291,7 @@ asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig)
2295/* 2291/*
2296 * Send a signal to only one task, even if it's a CLONE_THREAD task. 2292 * Send a signal to only one task, even if it's a CLONE_THREAD task.
2297 */ 2293 */
2298asmlinkage long 2294SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig)
2299sys_tkill(pid_t pid, int sig)
2300{ 2295{
2301 /* This is only valid for single tasks */ 2296 /* This is only valid for single tasks */
2302 if (pid <= 0) 2297 if (pid <= 0)
@@ -2305,8 +2300,8 @@ sys_tkill(pid_t pid, int sig)
2305 return do_tkill(0, pid, sig); 2300 return do_tkill(0, pid, sig);
2306} 2301}
2307 2302
2308asmlinkage long 2303SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig,
2309sys_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t __user *uinfo) 2304 siginfo_t __user *, uinfo)
2310{ 2305{
2311 siginfo_t info; 2306 siginfo_t info;
2312 2307
@@ -2434,8 +2429,7 @@ out:
2434 2429
2435#ifdef __ARCH_WANT_SYS_SIGPENDING 2430#ifdef __ARCH_WANT_SYS_SIGPENDING
2436 2431
2437asmlinkage long 2432SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
2438sys_sigpending(old_sigset_t __user *set)
2439{ 2433{
2440 return do_sigpending(set, sizeof(*set)); 2434 return do_sigpending(set, sizeof(*set));
2441} 2435}
@@ -2446,8 +2440,8 @@ sys_sigpending(old_sigset_t __user *set)
2446/* Some platforms have their own version with special arguments others 2440/* Some platforms have their own version with special arguments others
2447 support only sys_rt_sigprocmask. */ 2441 support only sys_rt_sigprocmask. */
2448 2442
2449asmlinkage long 2443SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, set,
2450sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset) 2444 old_sigset_t __user *, oset)
2451{ 2445{
2452 int error; 2446 int error;
2453 old_sigset_t old_set, new_set; 2447 old_sigset_t old_set, new_set;
@@ -2497,11 +2491,10 @@ out:
2497#endif /* __ARCH_WANT_SYS_SIGPROCMASK */ 2491#endif /* __ARCH_WANT_SYS_SIGPROCMASK */
2498 2492
2499#ifdef __ARCH_WANT_SYS_RT_SIGACTION 2493#ifdef __ARCH_WANT_SYS_RT_SIGACTION
2500asmlinkage long 2494SYSCALL_DEFINE4(rt_sigaction, int, sig,
2501sys_rt_sigaction(int sig, 2495 const struct sigaction __user *, act,
2502 const struct sigaction __user *act, 2496 struct sigaction __user *, oact,
2503 struct sigaction __user *oact, 2497 size_t, sigsetsize)
2504 size_t sigsetsize)
2505{ 2498{
2506 struct k_sigaction new_sa, old_sa; 2499 struct k_sigaction new_sa, old_sa;
2507 int ret = -EINVAL; 2500 int ret = -EINVAL;
@@ -2531,15 +2524,13 @@ out:
2531/* 2524/*
2532 * For backwards compatibility. Functionality superseded by sigprocmask. 2525 * For backwards compatibility. Functionality superseded by sigprocmask.
2533 */ 2526 */
2534asmlinkage long 2527SYSCALL_DEFINE0(sgetmask)
2535sys_sgetmask(void)
2536{ 2528{
2537 /* SMP safe */ 2529 /* SMP safe */
2538 return current->blocked.sig[0]; 2530 return current->blocked.sig[0];
2539} 2531}
2540 2532
2541asmlinkage long 2533SYSCALL_DEFINE1(ssetmask, int, newmask)
2542sys_ssetmask(int newmask)
2543{ 2534{
2544 int old; 2535 int old;
2545 2536
@@ -2559,8 +2550,7 @@ sys_ssetmask(int newmask)
2559/* 2550/*
2560 * For backwards compatibility. Functionality superseded by sigaction. 2551 * For backwards compatibility. Functionality superseded by sigaction.
2561 */ 2552 */
2562asmlinkage unsigned long 2553SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler)
2563sys_signal(int sig, __sighandler_t handler)
2564{ 2554{
2565 struct k_sigaction new_sa, old_sa; 2555 struct k_sigaction new_sa, old_sa;
2566 int ret; 2556 int ret;
@@ -2577,8 +2567,7 @@ sys_signal(int sig, __sighandler_t handler)
2577 2567
2578#ifdef __ARCH_WANT_SYS_PAUSE 2568#ifdef __ARCH_WANT_SYS_PAUSE
2579 2569
2580asmlinkage long 2570SYSCALL_DEFINE0(pause)
2581sys_pause(void)
2582{ 2571{
2583 current->state = TASK_INTERRUPTIBLE; 2572 current->state = TASK_INTERRUPTIBLE;
2584 schedule(); 2573 schedule();
@@ -2588,7 +2577,7 @@ sys_pause(void)
2588#endif 2577#endif
2589 2578
2590#ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND 2579#ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
2591asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) 2580SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize)
2592{ 2581{
2593 sigset_t newset; 2582 sigset_t newset;
2594 2583
diff --git a/kernel/softlockup.c b/kernel/softlockup.c
index d9188c66278a..85d5a2455103 100644
--- a/kernel/softlockup.c
+++ b/kernel/softlockup.c
@@ -16,6 +16,7 @@
16#include <linux/lockdep.h> 16#include <linux/lockdep.h>
17#include <linux/notifier.h> 17#include <linux/notifier.h>
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/sysctl.h>
19 20
20#include <asm/irq_regs.h> 21#include <asm/irq_regs.h>
21 22
@@ -88,6 +89,14 @@ void touch_all_softlockup_watchdogs(void)
88} 89}
89EXPORT_SYMBOL(touch_all_softlockup_watchdogs); 90EXPORT_SYMBOL(touch_all_softlockup_watchdogs);
90 91
92int proc_dosoftlockup_thresh(struct ctl_table *table, int write,
93 struct file *filp, void __user *buffer,
94 size_t *lenp, loff_t *ppos)
95{
96 touch_all_softlockup_watchdogs();
97 return proc_dointvec_minmax(table, write, filp, buffer, lenp, ppos);
98}
99
91/* 100/*
92 * This callback runs from the timer interrupt, and checks 101 * This callback runs from the timer interrupt, and checks
93 * whether the watchdog thread has hung or not: 102 * whether the watchdog thread has hung or not:
diff --git a/kernel/sys.c b/kernel/sys.c
index 763c3c17ded3..e7dc0e10a485 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -143,7 +143,7 @@ out:
143 return error; 143 return error;
144} 144}
145 145
146asmlinkage long sys_setpriority(int which, int who, int niceval) 146SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval)
147{ 147{
148 struct task_struct *g, *p; 148 struct task_struct *g, *p;
149 struct user_struct *user; 149 struct user_struct *user;
@@ -208,7 +208,7 @@ out:
208 * has been offset by 20 (ie it returns 40..1 instead of -20..19) 208 * has been offset by 20 (ie it returns 40..1 instead of -20..19)
209 * to stay compatible. 209 * to stay compatible.
210 */ 210 */
211asmlinkage long sys_getpriority(int which, int who) 211SYSCALL_DEFINE2(getpriority, int, which, int, who)
212{ 212{
213 struct task_struct *g, *p; 213 struct task_struct *g, *p;
214 struct user_struct *user; 214 struct user_struct *user;
@@ -355,7 +355,8 @@ EXPORT_SYMBOL_GPL(kernel_power_off);
355 * 355 *
356 * reboot doesn't sync: do that yourself before calling this. 356 * reboot doesn't sync: do that yourself before calling this.
357 */ 357 */
358asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void __user * arg) 358SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
359 void __user *, arg)
359{ 360{
360 char buffer[256]; 361 char buffer[256];
361 362
@@ -478,7 +479,7 @@ void ctrl_alt_del(void)
478 * SMP: There are not races, the GIDs are checked only by filesystem 479 * SMP: There are not races, the GIDs are checked only by filesystem
479 * operations (as far as semantic preservation is concerned). 480 * operations (as far as semantic preservation is concerned).
480 */ 481 */
481asmlinkage long sys_setregid(gid_t rgid, gid_t egid) 482SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
482{ 483{
483 const struct cred *old; 484 const struct cred *old;
484 struct cred *new; 485 struct cred *new;
@@ -529,7 +530,7 @@ error:
529 * 530 *
530 * SMP: Same implicit races as above. 531 * SMP: Same implicit races as above.
531 */ 532 */
532asmlinkage long sys_setgid(gid_t gid) 533SYSCALL_DEFINE1(setgid, gid_t, gid)
533{ 534{
534 const struct cred *old; 535 const struct cred *old;
535 struct cred *new; 536 struct cred *new;
@@ -597,7 +598,7 @@ static int set_user(struct cred *new)
597 * 100% compatible with BSD. A program which uses just setuid() will be 598 * 100% compatible with BSD. A program which uses just setuid() will be
598 * 100% compatible with POSIX with saved IDs. 599 * 100% compatible with POSIX with saved IDs.
599 */ 600 */
600asmlinkage long sys_setreuid(uid_t ruid, uid_t euid) 601SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid)
601{ 602{
602 const struct cred *old; 603 const struct cred *old;
603 struct cred *new; 604 struct cred *new;
@@ -661,7 +662,7 @@ error:
661 * will allow a root program to temporarily drop privileges and be able to 662 * will allow a root program to temporarily drop privileges and be able to
662 * regain them by swapping the real and effective uid. 663 * regain them by swapping the real and effective uid.
663 */ 664 */
664asmlinkage long sys_setuid(uid_t uid) 665SYSCALL_DEFINE1(setuid, uid_t, uid)
665{ 666{
666 const struct cred *old; 667 const struct cred *old;
667 struct cred *new; 668 struct cred *new;
@@ -705,7 +706,7 @@ error:
705 * This function implements a generic ability to update ruid, euid, 706 * This function implements a generic ability to update ruid, euid,
706 * and suid. This allows you to implement the 4.4 compatible seteuid(). 707 * and suid. This allows you to implement the 4.4 compatible seteuid().
707 */ 708 */
708asmlinkage long sys_setresuid(uid_t ruid, uid_t euid, uid_t suid) 709SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid)
709{ 710{
710 const struct cred *old; 711 const struct cred *old;
711 struct cred *new; 712 struct cred *new;
@@ -756,7 +757,7 @@ error:
756 return retval; 757 return retval;
757} 758}
758 759
759asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __user *suid) 760SYSCALL_DEFINE3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid)
760{ 761{
761 const struct cred *cred = current_cred(); 762 const struct cred *cred = current_cred();
762 int retval; 763 int retval;
@@ -771,7 +772,7 @@ asmlinkage long sys_getresuid(uid_t __user *ruid, uid_t __user *euid, uid_t __us
771/* 772/*
772 * Same as above, but for rgid, egid, sgid. 773 * Same as above, but for rgid, egid, sgid.
773 */ 774 */
774asmlinkage long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid) 775SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
775{ 776{
776 const struct cred *old; 777 const struct cred *old;
777 struct cred *new; 778 struct cred *new;
@@ -814,7 +815,7 @@ error:
814 return retval; 815 return retval;
815} 816}
816 817
817asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __user *sgid) 818SYSCALL_DEFINE3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid)
818{ 819{
819 const struct cred *cred = current_cred(); 820 const struct cred *cred = current_cred();
820 int retval; 821 int retval;
@@ -833,7 +834,7 @@ asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __us
833 * whatever uid it wants to). It normally shadows "euid", except when 834 * whatever uid it wants to). It normally shadows "euid", except when
834 * explicitly set by setfsuid() or for access.. 835 * explicitly set by setfsuid() or for access..
835 */ 836 */
836asmlinkage long sys_setfsuid(uid_t uid) 837SYSCALL_DEFINE1(setfsuid, uid_t, uid)
837{ 838{
838 const struct cred *old; 839 const struct cred *old;
839 struct cred *new; 840 struct cred *new;
@@ -870,7 +871,7 @@ change_okay:
870/* 871/*
871 * Samma på svenska.. 872 * Samma på svenska..
872 */ 873 */
873asmlinkage long sys_setfsgid(gid_t gid) 874SYSCALL_DEFINE1(setfsgid, gid_t, gid)
874{ 875{
875 const struct cred *old; 876 const struct cred *old;
876 struct cred *new; 877 struct cred *new;
@@ -919,7 +920,7 @@ void do_sys_times(struct tms *tms)
919 tms->tms_cstime = cputime_to_clock_t(cstime); 920 tms->tms_cstime = cputime_to_clock_t(cstime);
920} 921}
921 922
922asmlinkage long sys_times(struct tms __user * tbuf) 923SYSCALL_DEFINE1(times, struct tms __user *, tbuf)
923{ 924{
924 if (tbuf) { 925 if (tbuf) {
925 struct tms tmp; 926 struct tms tmp;
@@ -944,7 +945,7 @@ asmlinkage long sys_times(struct tms __user * tbuf)
944 * Auch. Had to add the 'did_exec' flag to conform completely to POSIX. 945 * Auch. Had to add the 'did_exec' flag to conform completely to POSIX.
945 * LBT 04.03.94 946 * LBT 04.03.94
946 */ 947 */
947asmlinkage long sys_setpgid(pid_t pid, pid_t pgid) 948SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid)
948{ 949{
949 struct task_struct *p; 950 struct task_struct *p;
950 struct task_struct *group_leader = current->group_leader; 951 struct task_struct *group_leader = current->group_leader;
@@ -1015,7 +1016,7 @@ out:
1015 return err; 1016 return err;
1016} 1017}
1017 1018
1018asmlinkage long sys_getpgid(pid_t pid) 1019SYSCALL_DEFINE1(getpgid, pid_t, pid)
1019{ 1020{
1020 struct task_struct *p; 1021 struct task_struct *p;
1021 struct pid *grp; 1022 struct pid *grp;
@@ -1045,14 +1046,14 @@ out:
1045 1046
1046#ifdef __ARCH_WANT_SYS_GETPGRP 1047#ifdef __ARCH_WANT_SYS_GETPGRP
1047 1048
1048asmlinkage long sys_getpgrp(void) 1049SYSCALL_DEFINE0(getpgrp)
1049{ 1050{
1050 return sys_getpgid(0); 1051 return sys_getpgid(0);
1051} 1052}
1052 1053
1053#endif 1054#endif
1054 1055
1055asmlinkage long sys_getsid(pid_t pid) 1056SYSCALL_DEFINE1(getsid, pid_t, pid)
1056{ 1057{
1057 struct task_struct *p; 1058 struct task_struct *p;
1058 struct pid *sid; 1059 struct pid *sid;
@@ -1080,7 +1081,7 @@ out:
1080 return retval; 1081 return retval;
1081} 1082}
1082 1083
1083asmlinkage long sys_setsid(void) 1084SYSCALL_DEFINE0(setsid)
1084{ 1085{
1085 struct task_struct *group_leader = current->group_leader; 1086 struct task_struct *group_leader = current->group_leader;
1086 struct pid *sid = task_pid(group_leader); 1087 struct pid *sid = task_pid(group_leader);
@@ -1311,7 +1312,7 @@ int set_current_groups(struct group_info *group_info)
1311 1312
1312EXPORT_SYMBOL(set_current_groups); 1313EXPORT_SYMBOL(set_current_groups);
1313 1314
1314asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist) 1315SYSCALL_DEFINE2(getgroups, int, gidsetsize, gid_t __user *, grouplist)
1315{ 1316{
1316 const struct cred *cred = current_cred(); 1317 const struct cred *cred = current_cred();
1317 int i; 1318 int i;
@@ -1340,7 +1341,7 @@ out:
1340 * without another task interfering. 1341 * without another task interfering.
1341 */ 1342 */
1342 1343
1343asmlinkage long sys_setgroups(int gidsetsize, gid_t __user *grouplist) 1344SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist)
1344{ 1345{
1345 struct group_info *group_info; 1346 struct group_info *group_info;
1346 int retval; 1347 int retval;
@@ -1394,7 +1395,7 @@ EXPORT_SYMBOL(in_egroup_p);
1394 1395
1395DECLARE_RWSEM(uts_sem); 1396DECLARE_RWSEM(uts_sem);
1396 1397
1397asmlinkage long sys_newuname(struct new_utsname __user * name) 1398SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name)
1398{ 1399{
1399 int errno = 0; 1400 int errno = 0;
1400 1401
@@ -1405,7 +1406,7 @@ asmlinkage long sys_newuname(struct new_utsname __user * name)
1405 return errno; 1406 return errno;
1406} 1407}
1407 1408
1408asmlinkage long sys_sethostname(char __user *name, int len) 1409SYSCALL_DEFINE2(sethostname, char __user *, name, int, len)
1409{ 1410{
1410 int errno; 1411 int errno;
1411 char tmp[__NEW_UTS_LEN]; 1412 char tmp[__NEW_UTS_LEN];
@@ -1429,7 +1430,7 @@ asmlinkage long sys_sethostname(char __user *name, int len)
1429 1430
1430#ifdef __ARCH_WANT_SYS_GETHOSTNAME 1431#ifdef __ARCH_WANT_SYS_GETHOSTNAME
1431 1432
1432asmlinkage long sys_gethostname(char __user *name, int len) 1433SYSCALL_DEFINE2(gethostname, char __user *, name, int, len)
1433{ 1434{
1434 int i, errno; 1435 int i, errno;
1435 struct new_utsname *u; 1436 struct new_utsname *u;
@@ -1454,7 +1455,7 @@ asmlinkage long sys_gethostname(char __user *name, int len)
1454 * Only setdomainname; getdomainname can be implemented by calling 1455 * Only setdomainname; getdomainname can be implemented by calling
1455 * uname() 1456 * uname()
1456 */ 1457 */
1457asmlinkage long sys_setdomainname(char __user *name, int len) 1458SYSCALL_DEFINE2(setdomainname, char __user *, name, int, len)
1458{ 1459{
1459 int errno; 1460 int errno;
1460 char tmp[__NEW_UTS_LEN]; 1461 char tmp[__NEW_UTS_LEN];
@@ -1477,7 +1478,7 @@ asmlinkage long sys_setdomainname(char __user *name, int len)
1477 return errno; 1478 return errno;
1478} 1479}
1479 1480
1480asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim) 1481SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim)
1481{ 1482{
1482 if (resource >= RLIM_NLIMITS) 1483 if (resource >= RLIM_NLIMITS)
1483 return -EINVAL; 1484 return -EINVAL;
@@ -1496,7 +1497,8 @@ asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim)
1496 * Back compatibility for getrlimit. Needed for some apps. 1497 * Back compatibility for getrlimit. Needed for some apps.
1497 */ 1498 */
1498 1499
1499asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *rlim) 1500SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource,
1501 struct rlimit __user *, rlim)
1500{ 1502{
1501 struct rlimit x; 1503 struct rlimit x;
1502 if (resource >= RLIM_NLIMITS) 1504 if (resource >= RLIM_NLIMITS)
@@ -1514,7 +1516,7 @@ asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *r
1514 1516
1515#endif 1517#endif
1516 1518
1517asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim) 1519SYSCALL_DEFINE2(setrlimit, unsigned int, resource, struct rlimit __user *, rlim)
1518{ 1520{
1519 struct rlimit new_rlim, *old_rlim; 1521 struct rlimit new_rlim, *old_rlim;
1520 int retval; 1522 int retval;
@@ -1687,7 +1689,7 @@ int getrusage(struct task_struct *p, int who, struct rusage __user *ru)
1687 return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0; 1689 return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
1688} 1690}
1689 1691
1690asmlinkage long sys_getrusage(int who, struct rusage __user *ru) 1692SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru)
1691{ 1693{
1692 if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN && 1694 if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN &&
1693 who != RUSAGE_THREAD) 1695 who != RUSAGE_THREAD)
@@ -1695,14 +1697,14 @@ asmlinkage long sys_getrusage(int who, struct rusage __user *ru)
1695 return getrusage(current, who, ru); 1697 return getrusage(current, who, ru);
1696} 1698}
1697 1699
1698asmlinkage long sys_umask(int mask) 1700SYSCALL_DEFINE1(umask, int, mask)
1699{ 1701{
1700 mask = xchg(&current->fs->umask, mask & S_IRWXUGO); 1702 mask = xchg(&current->fs->umask, mask & S_IRWXUGO);
1701 return mask; 1703 return mask;
1702} 1704}
1703 1705
1704asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3, 1706SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
1705 unsigned long arg4, unsigned long arg5) 1707 unsigned long, arg4, unsigned long, arg5)
1706{ 1708{
1707 struct task_struct *me = current; 1709 struct task_struct *me = current;
1708 unsigned char comm[sizeof(me->comm)]; 1710 unsigned char comm[sizeof(me->comm)];
@@ -1815,8 +1817,8 @@ asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3,
1815 return error; 1817 return error;
1816} 1818}
1817 1819
1818asmlinkage long sys_getcpu(unsigned __user *cpup, unsigned __user *nodep, 1820SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep,
1819 struct getcpu_cache __user *unused) 1821 struct getcpu_cache __user *, unused)
1820{ 1822{
1821 int err = 0; 1823 int err = 0;
1822 int cpu = raw_smp_processor_id(); 1824 int cpu = raw_smp_processor_id();
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index e14a23281707..27dad2967387 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -131,6 +131,7 @@ cond_syscall(sys_io_destroy);
131cond_syscall(sys_io_submit); 131cond_syscall(sys_io_submit);
132cond_syscall(sys_io_cancel); 132cond_syscall(sys_io_cancel);
133cond_syscall(sys_io_getevents); 133cond_syscall(sys_io_getevents);
134cond_syscall(sys_syslog);
134 135
135/* arch-specific weak syscall entries */ 136/* arch-specific weak syscall entries */
136cond_syscall(sys_pciconfig_read); 137cond_syscall(sys_pciconfig_read);
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 89d74436318c..790f9d785663 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -144,6 +144,7 @@ extern int acct_parm[];
144 144
145#ifdef CONFIG_IA64 145#ifdef CONFIG_IA64
146extern int no_unaligned_warning; 146extern int no_unaligned_warning;
147extern int unaligned_dump_stack;
147#endif 148#endif
148 149
149#ifdef CONFIG_RT_MUTEXES 150#ifdef CONFIG_RT_MUTEXES
@@ -781,6 +782,14 @@ static struct ctl_table kern_table[] = {
781 .mode = 0644, 782 .mode = 0644,
782 .proc_handler = &proc_dointvec, 783 .proc_handler = &proc_dointvec,
783 }, 784 },
785 {
786 .ctl_name = CTL_UNNUMBERED,
787 .procname = "unaligned-dump-stack",
788 .data = &unaligned_dump_stack,
789 .maxlen = sizeof (int),
790 .mode = 0644,
791 .proc_handler = &proc_dointvec,
792 },
784#endif 793#endif
785#ifdef CONFIG_DETECT_SOFTLOCKUP 794#ifdef CONFIG_DETECT_SOFTLOCKUP
786 { 795 {
@@ -800,7 +809,7 @@ static struct ctl_table kern_table[] = {
800 .data = &softlockup_thresh, 809 .data = &softlockup_thresh,
801 .maxlen = sizeof(int), 810 .maxlen = sizeof(int),
802 .mode = 0644, 811 .mode = 0644,
803 .proc_handler = &proc_dointvec_minmax, 812 .proc_handler = &proc_dosoftlockup_thresh,
804 .strategy = &sysctl_intvec, 813 .strategy = &sysctl_intvec,
805 .extra1 = &neg_one, 814 .extra1 = &neg_one,
806 .extra2 = &sixty, 815 .extra2 = &sixty,
@@ -1688,7 +1697,7 @@ int do_sysctl(int __user *name, int nlen, void __user *oldval, size_t __user *ol
1688 return error; 1697 return error;
1689} 1698}
1690 1699
1691asmlinkage long sys_sysctl(struct __sysctl_args __user *args) 1700SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
1692{ 1701{
1693 struct __sysctl_args tmp; 1702 struct __sysctl_args tmp;
1694 int error; 1703 int error;
@@ -2989,7 +2998,7 @@ int sysctl_ms_jiffies(struct ctl_table *table,
2989#else /* CONFIG_SYSCTL_SYSCALL */ 2998#else /* CONFIG_SYSCTL_SYSCALL */
2990 2999
2991 3000
2992asmlinkage long sys_sysctl(struct __sysctl_args __user *args) 3001SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args)
2993{ 3002{
2994 struct __sysctl_args tmp; 3003 struct __sysctl_args tmp;
2995 int error; 3004 int error;
diff --git a/kernel/time.c b/kernel/time.c
index 4886e3ce83a4..29511943871a 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -60,7 +60,7 @@ EXPORT_SYMBOL(sys_tz);
60 * why not move it into the appropriate arch directory (for those 60 * why not move it into the appropriate arch directory (for those
61 * architectures that need it). 61 * architectures that need it).
62 */ 62 */
63asmlinkage long sys_time(time_t __user * tloc) 63SYSCALL_DEFINE1(time, time_t __user *, tloc)
64{ 64{
65 time_t i = get_seconds(); 65 time_t i = get_seconds();
66 66
@@ -79,7 +79,7 @@ asmlinkage long sys_time(time_t __user * tloc)
79 * architectures that need it). 79 * architectures that need it).
80 */ 80 */
81 81
82asmlinkage long sys_stime(time_t __user *tptr) 82SYSCALL_DEFINE1(stime, time_t __user *, tptr)
83{ 83{
84 struct timespec tv; 84 struct timespec tv;
85 int err; 85 int err;
@@ -99,8 +99,8 @@ asmlinkage long sys_stime(time_t __user *tptr)
99 99
100#endif /* __ARCH_WANT_SYS_TIME */ 100#endif /* __ARCH_WANT_SYS_TIME */
101 101
102asmlinkage long sys_gettimeofday(struct timeval __user *tv, 102SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv,
103 struct timezone __user *tz) 103 struct timezone __user *, tz)
104{ 104{
105 if (likely(tv != NULL)) { 105 if (likely(tv != NULL)) {
106 struct timeval ktv; 106 struct timeval ktv;
@@ -184,8 +184,8 @@ int do_sys_settimeofday(struct timespec *tv, struct timezone *tz)
184 return 0; 184 return 0;
185} 185}
186 186
187asmlinkage long sys_settimeofday(struct timeval __user *tv, 187SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv,
188 struct timezone __user *tz) 188 struct timezone __user *, tz)
189{ 189{
190 struct timeval user_tv; 190 struct timeval user_tv;
191 struct timespec new_ts; 191 struct timespec new_ts;
@@ -205,7 +205,7 @@ asmlinkage long sys_settimeofday(struct timeval __user *tv,
205 return do_sys_settimeofday(tv ? &new_ts : NULL, tz ? &new_tz : NULL); 205 return do_sys_settimeofday(tv ? &new_ts : NULL, tz ? &new_tz : NULL);
206} 206}
207 207
208asmlinkage long sys_adjtimex(struct timex __user *txc_p) 208SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p)
209{ 209{
210 struct timex txc; /* Local copy of parameter */ 210 struct timex txc; /* Local copy of parameter */
211 int ret; 211 int ret;
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 1b6c05bd0d0a..d3f1ef4d5cbe 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -134,7 +134,7 @@ __setup("nohz=", setup_tick_nohz);
134 * value. We do this unconditionally on any cpu, as we don't know whether the 134 * value. We do this unconditionally on any cpu, as we don't know whether the
135 * cpu, which has the update task assigned is in a long sleep. 135 * cpu, which has the update task assigned is in a long sleep.
136 */ 136 */
137void tick_nohz_update_jiffies(void) 137static void tick_nohz_update_jiffies(void)
138{ 138{
139 int cpu = smp_processor_id(); 139 int cpu = smp_processor_id();
140 struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); 140 struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu);
diff --git a/kernel/timer.c b/kernel/timer.c
index dee3f641a7a7..13dd64fe143d 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -1129,7 +1129,7 @@ void do_timer(unsigned long ticks)
1129 * For backwards compatibility? This can be done in libc so Alpha 1129 * For backwards compatibility? This can be done in libc so Alpha
1130 * and all newer ports shouldn't need it. 1130 * and all newer ports shouldn't need it.
1131 */ 1131 */
1132asmlinkage unsigned long sys_alarm(unsigned int seconds) 1132SYSCALL_DEFINE1(alarm, unsigned int, seconds)
1133{ 1133{
1134 return alarm_setitimer(seconds); 1134 return alarm_setitimer(seconds);
1135} 1135}
@@ -1152,7 +1152,7 @@ asmlinkage unsigned long sys_alarm(unsigned int seconds)
1152 * 1152 *
1153 * This is SMP safe as current->tgid does not change. 1153 * This is SMP safe as current->tgid does not change.
1154 */ 1154 */
1155asmlinkage long sys_getpid(void) 1155SYSCALL_DEFINE0(getpid)
1156{ 1156{
1157 return task_tgid_vnr(current); 1157 return task_tgid_vnr(current);
1158} 1158}
@@ -1163,7 +1163,7 @@ asmlinkage long sys_getpid(void)
1163 * value of ->real_parent under rcu_read_lock(), see 1163 * value of ->real_parent under rcu_read_lock(), see
1164 * release_task()->call_rcu(delayed_put_task_struct). 1164 * release_task()->call_rcu(delayed_put_task_struct).
1165 */ 1165 */
1166asmlinkage long sys_getppid(void) 1166SYSCALL_DEFINE0(getppid)
1167{ 1167{
1168 int pid; 1168 int pid;
1169 1169
@@ -1174,25 +1174,25 @@ asmlinkage long sys_getppid(void)
1174 return pid; 1174 return pid;
1175} 1175}
1176 1176
1177asmlinkage long sys_getuid(void) 1177SYSCALL_DEFINE0(getuid)
1178{ 1178{
1179 /* Only we change this so SMP safe */ 1179 /* Only we change this so SMP safe */
1180 return current_uid(); 1180 return current_uid();
1181} 1181}
1182 1182
1183asmlinkage long sys_geteuid(void) 1183SYSCALL_DEFINE0(geteuid)
1184{ 1184{
1185 /* Only we change this so SMP safe */ 1185 /* Only we change this so SMP safe */
1186 return current_euid(); 1186 return current_euid();
1187} 1187}
1188 1188
1189asmlinkage long sys_getgid(void) 1189SYSCALL_DEFINE0(getgid)
1190{ 1190{
1191 /* Only we change this so SMP safe */ 1191 /* Only we change this so SMP safe */
1192 return current_gid(); 1192 return current_gid();
1193} 1193}
1194 1194
1195asmlinkage long sys_getegid(void) 1195SYSCALL_DEFINE0(getegid)
1196{ 1196{
1197 /* Only we change this so SMP safe */ 1197 /* Only we change this so SMP safe */
1198 return current_egid(); 1198 return current_egid();
@@ -1308,7 +1308,7 @@ signed long __sched schedule_timeout_uninterruptible(signed long timeout)
1308EXPORT_SYMBOL(schedule_timeout_uninterruptible); 1308EXPORT_SYMBOL(schedule_timeout_uninterruptible);
1309 1309
1310/* Thread ID - the internal kernel "pid" */ 1310/* Thread ID - the internal kernel "pid" */
1311asmlinkage long sys_gettid(void) 1311SYSCALL_DEFINE0(gettid)
1312{ 1312{
1313 return task_pid_vnr(current); 1313 return task_pid_vnr(current);
1314} 1314}
@@ -1400,7 +1400,7 @@ out:
1400 return 0; 1400 return 0;
1401} 1401}
1402 1402
1403asmlinkage long sys_sysinfo(struct sysinfo __user *info) 1403SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info)
1404{ 1404{
1405 struct sysinfo val; 1405 struct sysinfo val;
1406 1406
diff --git a/kernel/uid16.c b/kernel/uid16.c
index 2460c3199b5a..0314501688b9 100644
--- a/kernel/uid16.c
+++ b/kernel/uid16.c
@@ -17,7 +17,7 @@
17 17
18#include <asm/uaccess.h> 18#include <asm/uaccess.h>
19 19
20asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gid_t group) 20SYSCALL_DEFINE3(chown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
21{ 21{
22 long ret = sys_chown(filename, low2highuid(user), low2highgid(group)); 22 long ret = sys_chown(filename, low2highuid(user), low2highgid(group));
23 /* avoid REGPARM breakage on x86: */ 23 /* avoid REGPARM breakage on x86: */
@@ -25,7 +25,7 @@ asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gi
25 return ret; 25 return ret;
26} 26}
27 27
28asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_gid_t group) 28SYSCALL_DEFINE3(lchown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
29{ 29{
30 long ret = sys_lchown(filename, low2highuid(user), low2highgid(group)); 30 long ret = sys_lchown(filename, low2highuid(user), low2highgid(group));
31 /* avoid REGPARM breakage on x86: */ 31 /* avoid REGPARM breakage on x86: */
@@ -33,7 +33,7 @@ asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_g
33 return ret; 33 return ret;
34} 34}
35 35
36asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group) 36SYSCALL_DEFINE3(fchown16, unsigned int, fd, old_uid_t, user, old_gid_t, group)
37{ 37{
38 long ret = sys_fchown(fd, low2highuid(user), low2highgid(group)); 38 long ret = sys_fchown(fd, low2highuid(user), low2highgid(group));
39 /* avoid REGPARM breakage on x86: */ 39 /* avoid REGPARM breakage on x86: */
@@ -41,7 +41,7 @@ asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)
41 return ret; 41 return ret;
42} 42}
43 43
44asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid) 44SYSCALL_DEFINE2(setregid16, old_gid_t, rgid, old_gid_t, egid)
45{ 45{
46 long ret = sys_setregid(low2highgid(rgid), low2highgid(egid)); 46 long ret = sys_setregid(low2highgid(rgid), low2highgid(egid));
47 /* avoid REGPARM breakage on x86: */ 47 /* avoid REGPARM breakage on x86: */
@@ -49,7 +49,7 @@ asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid)
49 return ret; 49 return ret;
50} 50}
51 51
52asmlinkage long sys_setgid16(old_gid_t gid) 52SYSCALL_DEFINE1(setgid16, old_gid_t, gid)
53{ 53{
54 long ret = sys_setgid(low2highgid(gid)); 54 long ret = sys_setgid(low2highgid(gid));
55 /* avoid REGPARM breakage on x86: */ 55 /* avoid REGPARM breakage on x86: */
@@ -57,7 +57,7 @@ asmlinkage long sys_setgid16(old_gid_t gid)
57 return ret; 57 return ret;
58} 58}
59 59
60asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid) 60SYSCALL_DEFINE2(setreuid16, old_uid_t, ruid, old_uid_t, euid)
61{ 61{
62 long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid)); 62 long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid));
63 /* avoid REGPARM breakage on x86: */ 63 /* avoid REGPARM breakage on x86: */
@@ -65,7 +65,7 @@ asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid)
65 return ret; 65 return ret;
66} 66}
67 67
68asmlinkage long sys_setuid16(old_uid_t uid) 68SYSCALL_DEFINE1(setuid16, old_uid_t, uid)
69{ 69{
70 long ret = sys_setuid(low2highuid(uid)); 70 long ret = sys_setuid(low2highuid(uid));
71 /* avoid REGPARM breakage on x86: */ 71 /* avoid REGPARM breakage on x86: */
@@ -73,7 +73,7 @@ asmlinkage long sys_setuid16(old_uid_t uid)
73 return ret; 73 return ret;
74} 74}
75 75
76asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid) 76SYSCALL_DEFINE3(setresuid16, old_uid_t, ruid, old_uid_t, euid, old_uid_t, suid)
77{ 77{
78 long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid), 78 long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid),
79 low2highuid(suid)); 79 low2highuid(suid));
@@ -82,7 +82,7 @@ asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
82 return ret; 82 return ret;
83} 83}
84 84
85asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid) 85SYSCALL_DEFINE3(getresuid16, old_uid_t __user *, ruid, old_uid_t __user *, euid, old_uid_t __user *, suid)
86{ 86{
87 const struct cred *cred = current_cred(); 87 const struct cred *cred = current_cred();
88 int retval; 88 int retval;
@@ -94,7 +94,7 @@ asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid,
94 return retval; 94 return retval;
95} 95}
96 96
97asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid) 97SYSCALL_DEFINE3(setresgid16, old_gid_t, rgid, old_gid_t, egid, old_gid_t, sgid)
98{ 98{
99 long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid), 99 long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid),
100 low2highgid(sgid)); 100 low2highgid(sgid));
@@ -103,7 +103,8 @@ asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
103 return ret; 103 return ret;
104} 104}
105 105
106asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid) 106
107SYSCALL_DEFINE3(getresgid16, old_gid_t __user *, rgid, old_gid_t __user *, egid, old_gid_t __user *, sgid)
107{ 108{
108 const struct cred *cred = current_cred(); 109 const struct cred *cred = current_cred();
109 int retval; 110 int retval;
@@ -115,7 +116,7 @@ asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid,
115 return retval; 116 return retval;
116} 117}
117 118
118asmlinkage long sys_setfsuid16(old_uid_t uid) 119SYSCALL_DEFINE1(setfsuid16, old_uid_t, uid)
119{ 120{
120 long ret = sys_setfsuid(low2highuid(uid)); 121 long ret = sys_setfsuid(low2highuid(uid));
121 /* avoid REGPARM breakage on x86: */ 122 /* avoid REGPARM breakage on x86: */
@@ -123,7 +124,7 @@ asmlinkage long sys_setfsuid16(old_uid_t uid)
123 return ret; 124 return ret;
124} 125}
125 126
126asmlinkage long sys_setfsgid16(old_gid_t gid) 127SYSCALL_DEFINE1(setfsgid16, old_gid_t, gid)
127{ 128{
128 long ret = sys_setfsgid(low2highgid(gid)); 129 long ret = sys_setfsgid(low2highgid(gid));
129 /* avoid REGPARM breakage on x86: */ 130 /* avoid REGPARM breakage on x86: */
@@ -161,7 +162,7 @@ static int groups16_from_user(struct group_info *group_info,
161 return 0; 162 return 0;
162} 163}
163 164
164asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist) 165SYSCALL_DEFINE2(getgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
165{ 166{
166 const struct cred *cred = current_cred(); 167 const struct cred *cred = current_cred();
167 int i; 168 int i;
@@ -184,7 +185,7 @@ out:
184 return i; 185 return i;
185} 186}
186 187
187asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist) 188SYSCALL_DEFINE2(setgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
188{ 189{
189 struct group_info *group_info; 190 struct group_info *group_info;
190 int retval; 191 int retval;
@@ -209,22 +210,22 @@ asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
209 return retval; 210 return retval;
210} 211}
211 212
212asmlinkage long sys_getuid16(void) 213SYSCALL_DEFINE0(getuid16)
213{ 214{
214 return high2lowuid(current_uid()); 215 return high2lowuid(current_uid());
215} 216}
216 217
217asmlinkage long sys_geteuid16(void) 218SYSCALL_DEFINE0(geteuid16)
218{ 219{
219 return high2lowuid(current_euid()); 220 return high2lowuid(current_euid());
220} 221}
221 222
222asmlinkage long sys_getgid16(void) 223SYSCALL_DEFINE0(getgid16)
223{ 224{
224 return high2lowgid(current_gid()); 225 return high2lowgid(current_gid());
225} 226}
226 227
227asmlinkage long sys_getegid16(void) 228SYSCALL_DEFINE0(getegid16)
228{ 229{
229 return high2lowgid(current_egid()); 230 return high2lowgid(current_egid());
230} 231}
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 2f445833ae37..1f0c509b40d3 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -971,6 +971,8 @@ undo:
971} 971}
972 972
973#ifdef CONFIG_SMP 973#ifdef CONFIG_SMP
974static struct workqueue_struct *work_on_cpu_wq __read_mostly;
975
974struct work_for_cpu { 976struct work_for_cpu {
975 struct work_struct work; 977 struct work_struct work;
976 long (*fn)(void *); 978 long (*fn)(void *);
@@ -991,8 +993,8 @@ static void do_work_for_cpu(struct work_struct *w)
991 * @fn: the function to run 993 * @fn: the function to run
992 * @arg: the function arg 994 * @arg: the function arg
993 * 995 *
994 * This will return -EINVAL in the cpu is not online, or the return value 996 * This will return the value @fn returns.
995 * of @fn otherwise. 997 * It is up to the caller to ensure that the cpu doesn't go offline.
996 */ 998 */
997long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) 999long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg)
998{ 1000{
@@ -1001,14 +1003,8 @@ long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg)
1001 INIT_WORK(&wfc.work, do_work_for_cpu); 1003 INIT_WORK(&wfc.work, do_work_for_cpu);
1002 wfc.fn = fn; 1004 wfc.fn = fn;
1003 wfc.arg = arg; 1005 wfc.arg = arg;
1004 get_online_cpus(); 1006 queue_work_on(cpu, work_on_cpu_wq, &wfc.work);
1005 if (unlikely(!cpu_online(cpu))) 1007 flush_work(&wfc.work);
1006 wfc.ret = -EINVAL;
1007 else {
1008 schedule_work_on(cpu, &wfc.work);
1009 flush_work(&wfc.work);
1010 }
1011 put_online_cpus();
1012 1008
1013 return wfc.ret; 1009 return wfc.ret;
1014} 1010}
@@ -1025,4 +1021,8 @@ void __init init_workqueues(void)
1025 hotcpu_notifier(workqueue_cpu_callback, 0); 1021 hotcpu_notifier(workqueue_cpu_callback, 0);
1026 keventd_wq = create_workqueue("events"); 1022 keventd_wq = create_workqueue("events");
1027 BUG_ON(!keventd_wq); 1023 BUG_ON(!keventd_wq);
1024#ifdef CONFIG_SMP
1025 work_on_cpu_wq = create_workqueue("work_on_cpu");
1026 BUG_ON(!work_on_cpu_wq);
1027#endif
1028} 1028}
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 4c9ae6085c75..29044f500269 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -570,6 +570,15 @@ config DEBUG_NOTIFIERS
570 This is a relatively cheap check but if you care about maximum 570 This is a relatively cheap check but if you care about maximum
571 performance, say N. 571 performance, say N.
572 572
573#
574# Select this config option from the architecture Kconfig, if it
575# it is preferred to always offer frame pointers as a config
576# option on the architecture (regardless of KERNEL_DEBUG):
577#
578config ARCH_WANT_FRAME_POINTERS
579 bool
580 help
581
573config FRAME_POINTER 582config FRAME_POINTER
574 bool "Compile the kernel with frame pointers" 583 bool "Compile the kernel with frame pointers"
575 depends on DEBUG_KERNEL && \ 584 depends on DEBUG_KERNEL && \
@@ -633,19 +642,6 @@ config RCU_TORTURE_TEST_RUNNABLE
633 642
634config RCU_CPU_STALL_DETECTOR 643config RCU_CPU_STALL_DETECTOR
635 bool "Check for stalled CPUs delaying RCU grace periods" 644 bool "Check for stalled CPUs delaying RCU grace periods"
636 depends on CLASSIC_RCU
637 default n
638 help
639 This option causes RCU to printk information on which
640 CPUs are delaying the current grace period, but only when
641 the grace period extends for excessive time periods.
642
643 Say Y if you want RCU to perform such checks.
644
645 Say N if you are unsure.
646
647config RCU_CPU_STALL_DETECTOR
648 bool "Check for stalled CPUs delaying RCU grace periods"
649 depends on CLASSIC_RCU || TREE_RCU 645 depends on CLASSIC_RCU || TREE_RCU
650 default n 646 default n
651 help 647 help
diff --git a/lib/idr.c b/lib/idr.c
index 1c4f9281f412..c11c5765cdef 100644
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -121,7 +121,7 @@ int idr_pre_get(struct idr *idp, gfp_t gfp_mask)
121{ 121{
122 while (idp->id_free_cnt < IDR_FREE_MAX) { 122 while (idp->id_free_cnt < IDR_FREE_MAX) {
123 struct idr_layer *new; 123 struct idr_layer *new;
124 new = kmem_cache_alloc(idr_layer_cache, gfp_mask); 124 new = kmem_cache_zalloc(idr_layer_cache, gfp_mask);
125 if (new == NULL) 125 if (new == NULL)
126 return (0); 126 return (0);
127 move_to_free_list(idp, new); 127 move_to_free_list(idp, new);
@@ -292,7 +292,7 @@ static int idr_get_new_above_int(struct idr *idp, void *ptr, int starting_id)
292 * and go back to the idr_pre_get() call. If the idr is full, it will 292 * and go back to the idr_pre_get() call. If the idr is full, it will
293 * return -ENOSPC. 293 * return -ENOSPC.
294 * 294 *
295 * @id returns a value in the range 0 ... 0x7fffffff 295 * @id returns a value in the range @starting_id ... 0x7fffffff
296 */ 296 */
297int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id) 297int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id)
298{ 298{
@@ -623,16 +623,10 @@ void *idr_replace(struct idr *idp, void *ptr, int id)
623} 623}
624EXPORT_SYMBOL(idr_replace); 624EXPORT_SYMBOL(idr_replace);
625 625
626static void idr_cache_ctor(void *idr_layer)
627{
628 memset(idr_layer, 0, sizeof(struct idr_layer));
629}
630
631void __init idr_init_cache(void) 626void __init idr_init_cache(void)
632{ 627{
633 idr_layer_cache = kmem_cache_create("idr_layer_cache", 628 idr_layer_cache = kmem_cache_create("idr_layer_cache",
634 sizeof(struct idr_layer), 0, SLAB_PANIC, 629 sizeof(struct idr_layer), 0, SLAB_PANIC, NULL);
635 idr_cache_ctor);
636} 630}
637 631
638/** 632/**
@@ -723,7 +717,7 @@ EXPORT_SYMBOL(ida_pre_get);
723 * and go back to the ida_pre_get() call. If the ida is full, it will 717 * and go back to the ida_pre_get() call. If the ida is full, it will
724 * return -ENOSPC. 718 * return -ENOSPC.
725 * 719 *
726 * @p_id returns a value in the range 0 ... 0x7fffffff. 720 * @p_id returns a value in the range @starting_id ... 0x7fffffff.
727 */ 721 */
728int ida_get_new_above(struct ida *ida, int starting_id, int *p_id) 722int ida_get_new_above(struct ida *ida, int starting_id, int *p_id)
729{ 723{
diff --git a/mm/fadvise.c b/mm/fadvise.c
index a1da969bd980..54a0f8040afa 100644
--- a/mm/fadvise.c
+++ b/mm/fadvise.c
@@ -24,7 +24,7 @@
24 * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could 24 * POSIX_FADV_WILLNEED could set PG_Referenced, and POSIX_FADV_NOREUSE could
25 * deactivate the pages and clear PG_Referenced. 25 * deactivate the pages and clear PG_Referenced.
26 */ 26 */
27asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice) 27SYSCALL_DEFINE(fadvise64_64)(int fd, loff_t offset, loff_t len, int advice)
28{ 28{
29 struct file *file = fget(fd); 29 struct file *file = fget(fd);
30 struct address_space *mapping; 30 struct address_space *mapping;
@@ -126,12 +126,26 @@ out:
126 fput(file); 126 fput(file);
127 return ret; 127 return ret;
128} 128}
129#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
130asmlinkage long SyS_fadvise64_64(long fd, loff_t offset, loff_t len, long advice)
131{
132 return SYSC_fadvise64_64((int) fd, offset, len, (int) advice);
133}
134SYSCALL_ALIAS(sys_fadvise64_64, SyS_fadvise64_64);
135#endif
129 136
130#ifdef __ARCH_WANT_SYS_FADVISE64 137#ifdef __ARCH_WANT_SYS_FADVISE64
131 138
132asmlinkage long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) 139SYSCALL_DEFINE(fadvise64)(int fd, loff_t offset, size_t len, int advice)
133{ 140{
134 return sys_fadvise64_64(fd, offset, len, advice); 141 return sys_fadvise64_64(fd, offset, len, advice);
135} 142}
143#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
144asmlinkage long SyS_fadvise64(long fd, loff_t offset, long len, long advice)
145{
146 return SYSC_fadvise64((int) fd, offset, (size_t)len, (int)advice);
147}
148SYSCALL_ALIAS(sys_fadvise64, SyS_fadvise64);
149#endif
136 150
137#endif 151#endif
diff --git a/mm/filemap.c b/mm/filemap.c
index ceba0bd03662..23acefe51808 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1374,7 +1374,7 @@ do_readahead(struct address_space *mapping, struct file *filp,
1374 return 0; 1374 return 0;
1375} 1375}
1376 1376
1377asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count) 1377SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
1378{ 1378{
1379 ssize_t ret; 1379 ssize_t ret;
1380 struct file *file; 1380 struct file *file;
@@ -1393,6 +1393,13 @@ asmlinkage ssize_t sys_readahead(int fd, loff_t offset, size_t count)
1393 } 1393 }
1394 return ret; 1394 return ret;
1395} 1395}
1396#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
1397asmlinkage long SyS_readahead(long fd, loff_t offset, long count)
1398{
1399 return SYSC_readahead((int) fd, offset, (size_t) count);
1400}
1401SYSCALL_ALIAS(sys_readahead, SyS_readahead);
1402#endif
1396 1403
1397#ifdef CONFIG_MMU 1404#ifdef CONFIG_MMU
1398/** 1405/**
diff --git a/mm/fremap.c b/mm/fremap.c
index 62d5bbda921a..736ba7f3306a 100644
--- a/mm/fremap.c
+++ b/mm/fremap.c
@@ -120,8 +120,8 @@ static int populate_range(struct mm_struct *mm, struct vm_area_struct *vma,
120 * and the vma's default protection is used. Arbitrary protections 120 * and the vma's default protection is used. Arbitrary protections
121 * might be implemented in the future. 121 * might be implemented in the future.
122 */ 122 */
123asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, 123SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
124 unsigned long prot, unsigned long pgoff, unsigned long flags) 124 unsigned long, prot, unsigned long, pgoff, unsigned long, flags)
125{ 125{
126 struct mm_struct *mm = current->mm; 126 struct mm_struct *mm = current->mm;
127 struct address_space *mapping; 127 struct address_space *mapping;
diff --git a/mm/madvise.c b/mm/madvise.c
index f9349c18a1b5..b9ce574827c8 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -281,7 +281,7 @@ madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev,
281 * -EBADF - map exists, but area maps something that isn't a file. 281 * -EBADF - map exists, but area maps something that isn't a file.
282 * -EAGAIN - a kernel resource was temporarily unavailable. 282 * -EAGAIN - a kernel resource was temporarily unavailable.
283 */ 283 */
284asmlinkage long sys_madvise(unsigned long start, size_t len_in, int behavior) 284SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
285{ 285{
286 unsigned long end, tmp; 286 unsigned long end, tmp;
287 struct vm_area_struct * vma, *prev; 287 struct vm_area_struct * vma, *prev;
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index e2996b80601f..4d0ea3ceba6d 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -358,6 +358,10 @@ void mem_cgroup_rotate_lru_list(struct page *page, enum lru_list lru)
358 return; 358 return;
359 359
360 pc = lookup_page_cgroup(page); 360 pc = lookup_page_cgroup(page);
361 /*
362 * Used bit is set without atomic ops but after smp_wmb().
363 * For making pc->mem_cgroup visible, insert smp_rmb() here.
364 */
361 smp_rmb(); 365 smp_rmb();
362 /* unused page is not rotated. */ 366 /* unused page is not rotated. */
363 if (!PageCgroupUsed(pc)) 367 if (!PageCgroupUsed(pc))
@@ -374,7 +378,10 @@ void mem_cgroup_add_lru_list(struct page *page, enum lru_list lru)
374 if (mem_cgroup_disabled()) 378 if (mem_cgroup_disabled())
375 return; 379 return;
376 pc = lookup_page_cgroup(page); 380 pc = lookup_page_cgroup(page);
377 /* barrier to sync with "charge" */ 381 /*
382 * Used bit is set without atomic ops but after smp_wmb().
383 * For making pc->mem_cgroup visible, insert smp_rmb() here.
384 */
378 smp_rmb(); 385 smp_rmb();
379 if (!PageCgroupUsed(pc)) 386 if (!PageCgroupUsed(pc))
380 return; 387 return;
@@ -559,6 +566,14 @@ mem_cgroup_get_reclaim_stat_from_page(struct page *page)
559 return NULL; 566 return NULL;
560 567
561 pc = lookup_page_cgroup(page); 568 pc = lookup_page_cgroup(page);
569 /*
570 * Used bit is set without atomic ops but after smp_wmb().
571 * For making pc->mem_cgroup visible, insert smp_rmb() here.
572 */
573 smp_rmb();
574 if (!PageCgroupUsed(pc))
575 return NULL;
576
562 mz = page_cgroup_zoneinfo(pc); 577 mz = page_cgroup_zoneinfo(pc);
563 if (!mz) 578 if (!mz)
564 return NULL; 579 return NULL;
@@ -618,7 +633,7 @@ unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
618 * called with hierarchy_mutex held 633 * called with hierarchy_mutex held
619 */ 634 */
620static struct mem_cgroup * 635static struct mem_cgroup *
621mem_cgroup_get_next_node(struct mem_cgroup *curr, struct mem_cgroup *root_mem) 636__mem_cgroup_get_next_node(struct mem_cgroup *curr, struct mem_cgroup *root_mem)
622{ 637{
623 struct cgroup *cgroup, *curr_cgroup, *root_cgroup; 638 struct cgroup *cgroup, *curr_cgroup, *root_cgroup;
624 639
@@ -629,19 +644,16 @@ mem_cgroup_get_next_node(struct mem_cgroup *curr, struct mem_cgroup *root_mem)
629 /* 644 /*
630 * Walk down to children 645 * Walk down to children
631 */ 646 */
632 mem_cgroup_put(curr);
633 cgroup = list_entry(curr_cgroup->children.next, 647 cgroup = list_entry(curr_cgroup->children.next,
634 struct cgroup, sibling); 648 struct cgroup, sibling);
635 curr = mem_cgroup_from_cont(cgroup); 649 curr = mem_cgroup_from_cont(cgroup);
636 mem_cgroup_get(curr);
637 goto done; 650 goto done;
638 } 651 }
639 652
640visit_parent: 653visit_parent:
641 if (curr_cgroup == root_cgroup) { 654 if (curr_cgroup == root_cgroup) {
642 mem_cgroup_put(curr); 655 /* caller handles NULL case */
643 curr = root_mem; 656 curr = NULL;
644 mem_cgroup_get(curr);
645 goto done; 657 goto done;
646 } 658 }
647 659
@@ -649,11 +661,9 @@ visit_parent:
649 * Goto next sibling 661 * Goto next sibling
650 */ 662 */
651 if (curr_cgroup->sibling.next != &curr_cgroup->parent->children) { 663 if (curr_cgroup->sibling.next != &curr_cgroup->parent->children) {
652 mem_cgroup_put(curr);
653 cgroup = list_entry(curr_cgroup->sibling.next, struct cgroup, 664 cgroup = list_entry(curr_cgroup->sibling.next, struct cgroup,
654 sibling); 665 sibling);
655 curr = mem_cgroup_from_cont(cgroup); 666 curr = mem_cgroup_from_cont(cgroup);
656 mem_cgroup_get(curr);
657 goto done; 667 goto done;
658 } 668 }
659 669
@@ -664,7 +674,6 @@ visit_parent:
664 goto visit_parent; 674 goto visit_parent;
665 675
666done: 676done:
667 root_mem->last_scanned_child = curr;
668 return curr; 677 return curr;
669} 678}
670 679
@@ -674,40 +683,46 @@ done:
674 * that to reclaim free pages from. 683 * that to reclaim free pages from.
675 */ 684 */
676static struct mem_cgroup * 685static struct mem_cgroup *
677mem_cgroup_get_first_node(struct mem_cgroup *root_mem) 686mem_cgroup_get_next_node(struct mem_cgroup *root_mem)
678{ 687{
679 struct cgroup *cgroup; 688 struct cgroup *cgroup;
680 struct mem_cgroup *ret; 689 struct mem_cgroup *orig, *next;
681 bool obsolete; 690 bool obsolete;
682 691
683 obsolete = mem_cgroup_is_obsolete(root_mem->last_scanned_child);
684
685 /* 692 /*
686 * Scan all children under the mem_cgroup mem 693 * Scan all children under the mem_cgroup mem
687 */ 694 */
688 mutex_lock(&mem_cgroup_subsys.hierarchy_mutex); 695 mutex_lock(&mem_cgroup_subsys.hierarchy_mutex);
696
697 orig = root_mem->last_scanned_child;
698 obsolete = mem_cgroup_is_obsolete(orig);
699
689 if (list_empty(&root_mem->css.cgroup->children)) { 700 if (list_empty(&root_mem->css.cgroup->children)) {
690 ret = root_mem; 701 /*
702 * root_mem might have children before and last_scanned_child
703 * may point to one of them. We put it later.
704 */
705 if (orig)
706 VM_BUG_ON(!obsolete);
707 next = NULL;
691 goto done; 708 goto done;
692 } 709 }
693 710
694 if (!root_mem->last_scanned_child || obsolete) { 711 if (!orig || obsolete) {
695
696 if (obsolete && root_mem->last_scanned_child)
697 mem_cgroup_put(root_mem->last_scanned_child);
698
699 cgroup = list_first_entry(&root_mem->css.cgroup->children, 712 cgroup = list_first_entry(&root_mem->css.cgroup->children,
700 struct cgroup, sibling); 713 struct cgroup, sibling);
701 ret = mem_cgroup_from_cont(cgroup); 714 next = mem_cgroup_from_cont(cgroup);
702 mem_cgroup_get(ret);
703 } else 715 } else
704 ret = mem_cgroup_get_next_node(root_mem->last_scanned_child, 716 next = __mem_cgroup_get_next_node(orig, root_mem);
705 root_mem);
706 717
707done: 718done:
708 root_mem->last_scanned_child = ret; 719 if (next)
720 mem_cgroup_get(next);
721 root_mem->last_scanned_child = next;
722 if (orig)
723 mem_cgroup_put(orig);
709 mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex); 724 mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex);
710 return ret; 725 return (next) ? next : root_mem;
711} 726}
712 727
713static bool mem_cgroup_check_under_limit(struct mem_cgroup *mem) 728static bool mem_cgroup_check_under_limit(struct mem_cgroup *mem)
@@ -758,28 +773,25 @@ static int mem_cgroup_hierarchical_reclaim(struct mem_cgroup *root_mem,
758 * but there might be left over accounting, even after children 773 * but there might be left over accounting, even after children
759 * have left. 774 * have left.
760 */ 775 */
761 ret = try_to_free_mem_cgroup_pages(root_mem, gfp_mask, noswap, 776 ret += try_to_free_mem_cgroup_pages(root_mem, gfp_mask, noswap,
762 get_swappiness(root_mem)); 777 get_swappiness(root_mem));
763 if (mem_cgroup_check_under_limit(root_mem)) 778 if (mem_cgroup_check_under_limit(root_mem))
764 return 0; 779 return 1; /* indicate reclaim has succeeded */
765 if (!root_mem->use_hierarchy) 780 if (!root_mem->use_hierarchy)
766 return ret; 781 return ret;
767 782
768 next_mem = mem_cgroup_get_first_node(root_mem); 783 next_mem = mem_cgroup_get_next_node(root_mem);
769 784
770 while (next_mem != root_mem) { 785 while (next_mem != root_mem) {
771 if (mem_cgroup_is_obsolete(next_mem)) { 786 if (mem_cgroup_is_obsolete(next_mem)) {
772 mem_cgroup_put(next_mem); 787 next_mem = mem_cgroup_get_next_node(root_mem);
773 next_mem = mem_cgroup_get_first_node(root_mem);
774 continue; 788 continue;
775 } 789 }
776 ret = try_to_free_mem_cgroup_pages(next_mem, gfp_mask, noswap, 790 ret += try_to_free_mem_cgroup_pages(next_mem, gfp_mask, noswap,
777 get_swappiness(next_mem)); 791 get_swappiness(next_mem));
778 if (mem_cgroup_check_under_limit(root_mem)) 792 if (mem_cgroup_check_under_limit(root_mem))
779 return 0; 793 return 1; /* indicate reclaim has succeeded */
780 mutex_lock(&mem_cgroup_subsys.hierarchy_mutex); 794 next_mem = mem_cgroup_get_next_node(root_mem);
781 next_mem = mem_cgroup_get_next_node(next_mem, root_mem);
782 mutex_unlock(&mem_cgroup_subsys.hierarchy_mutex);
783 } 795 }
784 return ret; 796 return ret;
785} 797}
@@ -863,6 +875,8 @@ static int __mem_cgroup_try_charge(struct mm_struct *mm,
863 875
864 ret = mem_cgroup_hierarchical_reclaim(mem_over_limit, gfp_mask, 876 ret = mem_cgroup_hierarchical_reclaim(mem_over_limit, gfp_mask,
865 noswap); 877 noswap);
878 if (ret)
879 continue;
866 880
867 /* 881 /*
868 * try_to_free_mem_cgroup_pages() might not give us a full 882 * try_to_free_mem_cgroup_pages() might not give us a full
@@ -979,14 +993,15 @@ static int mem_cgroup_move_account(struct page_cgroup *pc,
979 if (pc->mem_cgroup != from) 993 if (pc->mem_cgroup != from)
980 goto out; 994 goto out;
981 995
982 css_put(&from->css);
983 res_counter_uncharge(&from->res, PAGE_SIZE); 996 res_counter_uncharge(&from->res, PAGE_SIZE);
984 mem_cgroup_charge_statistics(from, pc, false); 997 mem_cgroup_charge_statistics(from, pc, false);
985 if (do_swap_account) 998 if (do_swap_account)
986 res_counter_uncharge(&from->memsw, PAGE_SIZE); 999 res_counter_uncharge(&from->memsw, PAGE_SIZE);
1000 css_put(&from->css);
1001
1002 css_get(&to->css);
987 pc->mem_cgroup = to; 1003 pc->mem_cgroup = to;
988 mem_cgroup_charge_statistics(to, pc, true); 1004 mem_cgroup_charge_statistics(to, pc, true);
989 css_get(&to->css);
990 ret = 0; 1005 ret = 0;
991out: 1006out:
992 unlock_page_cgroup(pc); 1007 unlock_page_cgroup(pc);
@@ -1019,8 +1034,10 @@ static int mem_cgroup_move_parent(struct page_cgroup *pc,
1019 if (ret || !parent) 1034 if (ret || !parent)
1020 return ret; 1035 return ret;
1021 1036
1022 if (!get_page_unless_zero(page)) 1037 if (!get_page_unless_zero(page)) {
1023 return -EBUSY; 1038 ret = -EBUSY;
1039 goto uncharge;
1040 }
1024 1041
1025 ret = isolate_lru_page(page); 1042 ret = isolate_lru_page(page);
1026 1043
@@ -1029,19 +1046,23 @@ static int mem_cgroup_move_parent(struct page_cgroup *pc,
1029 1046
1030 ret = mem_cgroup_move_account(pc, child, parent); 1047 ret = mem_cgroup_move_account(pc, child, parent);
1031 1048
1032 /* drop extra refcnt by try_charge() (move_account increment one) */
1033 css_put(&parent->css);
1034 putback_lru_page(page); 1049 putback_lru_page(page);
1035 if (!ret) { 1050 if (!ret) {
1036 put_page(page); 1051 put_page(page);
1052 /* drop extra refcnt by try_charge() */
1053 css_put(&parent->css);
1037 return 0; 1054 return 0;
1038 } 1055 }
1039 /* uncharge if move fails */ 1056
1040cancel: 1057cancel:
1058 put_page(page);
1059uncharge:
1060 /* drop extra refcnt by try_charge() */
1061 css_put(&parent->css);
1062 /* uncharge if move fails */
1041 res_counter_uncharge(&parent->res, PAGE_SIZE); 1063 res_counter_uncharge(&parent->res, PAGE_SIZE);
1042 if (do_swap_account) 1064 if (do_swap_account)
1043 res_counter_uncharge(&parent->memsw, PAGE_SIZE); 1065 res_counter_uncharge(&parent->memsw, PAGE_SIZE);
1044 put_page(page);
1045 return ret; 1066 return ret;
1046} 1067}
1047 1068
@@ -1971,6 +1992,7 @@ static int mem_cgroup_swappiness_write(struct cgroup *cgrp, struct cftype *cft,
1971{ 1992{
1972 struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp); 1993 struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp);
1973 struct mem_cgroup *parent; 1994 struct mem_cgroup *parent;
1995
1974 if (val > 100) 1996 if (val > 100)
1975 return -EINVAL; 1997 return -EINVAL;
1976 1998
@@ -1978,15 +2000,22 @@ static int mem_cgroup_swappiness_write(struct cgroup *cgrp, struct cftype *cft,
1978 return -EINVAL; 2000 return -EINVAL;
1979 2001
1980 parent = mem_cgroup_from_cont(cgrp->parent); 2002 parent = mem_cgroup_from_cont(cgrp->parent);
2003
2004 cgroup_lock();
2005
1981 /* If under hierarchy, only empty-root can set this value */ 2006 /* If under hierarchy, only empty-root can set this value */
1982 if ((parent->use_hierarchy) || 2007 if ((parent->use_hierarchy) ||
1983 (memcg->use_hierarchy && !list_empty(&cgrp->children))) 2008 (memcg->use_hierarchy && !list_empty(&cgrp->children))) {
2009 cgroup_unlock();
1984 return -EINVAL; 2010 return -EINVAL;
2011 }
1985 2012
1986 spin_lock(&memcg->reclaim_param_lock); 2013 spin_lock(&memcg->reclaim_param_lock);
1987 memcg->swappiness = val; 2014 memcg->swappiness = val;
1988 spin_unlock(&memcg->reclaim_param_lock); 2015 spin_unlock(&memcg->reclaim_param_lock);
1989 2016
2017 cgroup_unlock();
2018
1990 return 0; 2019 return 0;
1991} 2020}
1992 2021
@@ -2181,7 +2210,7 @@ static void __init enable_swap_cgroup(void)
2181} 2210}
2182#endif 2211#endif
2183 2212
2184static struct cgroup_subsys_state * 2213static struct cgroup_subsys_state * __ref
2185mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont) 2214mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont)
2186{ 2215{
2187 struct mem_cgroup *mem, *parent; 2216 struct mem_cgroup *mem, *parent;
@@ -2232,7 +2261,14 @@ static void mem_cgroup_pre_destroy(struct cgroup_subsys *ss,
2232static void mem_cgroup_destroy(struct cgroup_subsys *ss, 2261static void mem_cgroup_destroy(struct cgroup_subsys *ss,
2233 struct cgroup *cont) 2262 struct cgroup *cont)
2234{ 2263{
2235 mem_cgroup_put(mem_cgroup_from_cont(cont)); 2264 struct mem_cgroup *mem = mem_cgroup_from_cont(cont);
2265 struct mem_cgroup *last_scanned_child = mem->last_scanned_child;
2266
2267 if (last_scanned_child) {
2268 VM_BUG_ON(!mem_cgroup_is_obsolete(last_scanned_child));
2269 mem_cgroup_put(last_scanned_child);
2270 }
2271 mem_cgroup_put(mem);
2236} 2272}
2237 2273
2238static int mem_cgroup_populate(struct cgroup_subsys *ss, 2274static int mem_cgroup_populate(struct cgroup_subsys *ss,
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index e412ffa8e52e..3eb4a6fdc043 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -1068,10 +1068,9 @@ static int copy_nodes_to_user(unsigned long __user *mask, unsigned long maxnode,
1068 return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0; 1068 return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0;
1069} 1069}
1070 1070
1071asmlinkage long sys_mbind(unsigned long start, unsigned long len, 1071SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len,
1072 unsigned long mode, 1072 unsigned long, mode, unsigned long __user *, nmask,
1073 unsigned long __user *nmask, unsigned long maxnode, 1073 unsigned long, maxnode, unsigned, flags)
1074 unsigned flags)
1075{ 1074{
1076 nodemask_t nodes; 1075 nodemask_t nodes;
1077 int err; 1076 int err;
@@ -1091,8 +1090,8 @@ asmlinkage long sys_mbind(unsigned long start, unsigned long len,
1091} 1090}
1092 1091
1093/* Set the process memory policy */ 1092/* Set the process memory policy */
1094asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask, 1093SYSCALL_DEFINE3(set_mempolicy, int, mode, unsigned long __user *, nmask,
1095 unsigned long maxnode) 1094 unsigned long, maxnode)
1096{ 1095{
1097 int err; 1096 int err;
1098 nodemask_t nodes; 1097 nodemask_t nodes;
@@ -1110,9 +1109,9 @@ asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
1110 return do_set_mempolicy(mode, flags, &nodes); 1109 return do_set_mempolicy(mode, flags, &nodes);
1111} 1110}
1112 1111
1113asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode, 1112SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
1114 const unsigned long __user *old_nodes, 1113 const unsigned long __user *, old_nodes,
1115 const unsigned long __user *new_nodes) 1114 const unsigned long __user *, new_nodes)
1116{ 1115{
1117 const struct cred *cred = current_cred(), *tcred; 1116 const struct cred *cred = current_cred(), *tcred;
1118 struct mm_struct *mm; 1117 struct mm_struct *mm;
@@ -1185,10 +1184,9 @@ out:
1185 1184
1186 1185
1187/* Retrieve NUMA policy */ 1186/* Retrieve NUMA policy */
1188asmlinkage long sys_get_mempolicy(int __user *policy, 1187SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
1189 unsigned long __user *nmask, 1188 unsigned long __user *, nmask, unsigned long, maxnode,
1190 unsigned long maxnode, 1189 unsigned long, addr, unsigned long, flags)
1191 unsigned long addr, unsigned long flags)
1192{ 1190{
1193 int err; 1191 int err;
1194 int uninitialized_var(pval); 1192 int uninitialized_var(pval);
diff --git a/mm/migrate.c b/mm/migrate.c
index a30ea5fcf9f1..2bb4e1d63520 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1055,10 +1055,10 @@ out:
1055 * Move a list of pages in the address space of the currently executing 1055 * Move a list of pages in the address space of the currently executing
1056 * process. 1056 * process.
1057 */ 1057 */
1058asmlinkage long sys_move_pages(pid_t pid, unsigned long nr_pages, 1058SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
1059 const void __user * __user *pages, 1059 const void __user * __user *, pages,
1060 const int __user *nodes, 1060 const int __user *, nodes,
1061 int __user *status, int flags) 1061 int __user *, status, int, flags)
1062{ 1062{
1063 const struct cred *cred = current_cred(), *tcred; 1063 const struct cred *cred = current_cred(), *tcred;
1064 struct task_struct *task; 1064 struct task_struct *task;
diff --git a/mm/mincore.c b/mm/mincore.c
index 5178800bc129..8cb508f84ea4 100644
--- a/mm/mincore.c
+++ b/mm/mincore.c
@@ -177,8 +177,8 @@ none_mapped:
177 * mapped 177 * mapped
178 * -EAGAIN - A kernel resource was temporarily unavailable. 178 * -EAGAIN - A kernel resource was temporarily unavailable.
179 */ 179 */
180asmlinkage long sys_mincore(unsigned long start, size_t len, 180SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len,
181 unsigned char __user * vec) 181 unsigned char __user *, vec)
182{ 182{
183 long retval; 183 long retval;
184 unsigned long pages; 184 unsigned long pages;
diff --git a/mm/mlock.c b/mm/mlock.c
index e125156c664e..2904a347e476 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -530,7 +530,7 @@ static int do_mlock(unsigned long start, size_t len, int on)
530 return error; 530 return error;
531} 531}
532 532
533asmlinkage long sys_mlock(unsigned long start, size_t len) 533SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len)
534{ 534{
535 unsigned long locked; 535 unsigned long locked;
536 unsigned long lock_limit; 536 unsigned long lock_limit;
@@ -558,7 +558,7 @@ asmlinkage long sys_mlock(unsigned long start, size_t len)
558 return error; 558 return error;
559} 559}
560 560
561asmlinkage long sys_munlock(unsigned long start, size_t len) 561SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)
562{ 562{
563 int ret; 563 int ret;
564 564
@@ -595,7 +595,7 @@ out:
595 return 0; 595 return 0;
596} 596}
597 597
598asmlinkage long sys_mlockall(int flags) 598SYSCALL_DEFINE1(mlockall, int, flags)
599{ 599{
600 unsigned long lock_limit; 600 unsigned long lock_limit;
601 int ret = -EINVAL; 601 int ret = -EINVAL;
@@ -623,7 +623,7 @@ out:
623 return ret; 623 return ret;
624} 624}
625 625
626asmlinkage long sys_munlockall(void) 626SYSCALL_DEFINE0(munlockall)
627{ 627{
628 int ret; 628 int ret;
629 629
diff --git a/mm/mmap.c b/mm/mmap.c
index 749623196cb9..8d95902e9a38 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -245,7 +245,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
245 return next; 245 return next;
246} 246}
247 247
248asmlinkage unsigned long sys_brk(unsigned long brk) 248SYSCALL_DEFINE1(brk, unsigned long, brk)
249{ 249{
250 unsigned long rlim, retval; 250 unsigned long rlim, retval;
251 unsigned long newbrk, oldbrk; 251 unsigned long newbrk, oldbrk;
@@ -1948,7 +1948,7 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
1948 1948
1949EXPORT_SYMBOL(do_munmap); 1949EXPORT_SYMBOL(do_munmap);
1950 1950
1951asmlinkage long sys_munmap(unsigned long addr, size_t len) 1951SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
1952{ 1952{
1953 int ret; 1953 int ret;
1954 struct mm_struct *mm = current->mm; 1954 struct mm_struct *mm = current->mm;
diff --git a/mm/mprotect.c b/mm/mprotect.c
index d0f6e7ce09f1..abe2694e13f4 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -217,8 +217,8 @@ fail:
217 return error; 217 return error;
218} 218}
219 219
220asmlinkage long 220SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
221sys_mprotect(unsigned long start, size_t len, unsigned long prot) 221 unsigned long, prot)
222{ 222{
223 unsigned long vm_flags, nstart, end, tmp, reqprot; 223 unsigned long vm_flags, nstart, end, tmp, reqprot;
224 struct vm_area_struct *vma, *prev; 224 struct vm_area_struct *vma, *prev;
diff --git a/mm/mremap.c b/mm/mremap.c
index 646de959aa58..a39b7b91be46 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -420,9 +420,9 @@ out_nc:
420 return ret; 420 return ret;
421} 421}
422 422
423asmlinkage unsigned long sys_mremap(unsigned long addr, 423SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
424 unsigned long old_len, unsigned long new_len, 424 unsigned long, new_len, unsigned long, flags,
425 unsigned long flags, unsigned long new_addr) 425 unsigned long, new_addr)
426{ 426{
427 unsigned long ret; 427 unsigned long ret;
428 428
diff --git a/mm/msync.c b/mm/msync.c
index 07dae08cf31c..4083209b7f02 100644
--- a/mm/msync.c
+++ b/mm/msync.c
@@ -28,7 +28,7 @@
28 * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to 28 * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to
29 * applications. 29 * applications.
30 */ 30 */
31asmlinkage long sys_msync(unsigned long start, size_t len, int flags) 31SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags)
32{ 32{
33 unsigned long end; 33 unsigned long end;
34 struct mm_struct *mm = current->mm; 34 struct mm_struct *mm = current->mm;
diff --git a/mm/nommu.c b/mm/nommu.c
index 60ed8375c986..0c3e7d2114f6 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -10,7 +10,7 @@
10 * Copyright (c) 2000-2003 David McCullough <davidm@snapgear.com> 10 * Copyright (c) 2000-2003 David McCullough <davidm@snapgear.com>
11 * Copyright (c) 2000-2001 D Jeff Dionne <jeff@uClinux.org> 11 * Copyright (c) 2000-2001 D Jeff Dionne <jeff@uClinux.org>
12 * Copyright (c) 2002 Greg Ungerer <gerg@snapgear.com> 12 * Copyright (c) 2002 Greg Ungerer <gerg@snapgear.com>
13 * Copyright (c) 2007-2008 Paul Mundt <lethal@linux-sh.org> 13 * Copyright (c) 2007-2009 Paul Mundt <lethal@linux-sh.org>
14 */ 14 */
15 15
16#include <linux/module.h> 16#include <linux/module.h>
@@ -394,6 +394,24 @@ void vunmap(const void *addr)
394} 394}
395EXPORT_SYMBOL(vunmap); 395EXPORT_SYMBOL(vunmap);
396 396
397void *vm_map_ram(struct page **pages, unsigned int count, int node, pgprot_t prot)
398{
399 BUG();
400 return NULL;
401}
402EXPORT_SYMBOL(vm_map_ram);
403
404void vm_unmap_ram(const void *mem, unsigned int count)
405{
406 BUG();
407}
408EXPORT_SYMBOL(vm_unmap_ram);
409
410void vm_unmap_aliases(void)
411{
412}
413EXPORT_SYMBOL_GPL(vm_unmap_aliases);
414
397/* 415/*
398 * Implement a stub for vmalloc_sync_all() if the architecture chose not to 416 * Implement a stub for vmalloc_sync_all() if the architecture chose not to
399 * have one. 417 * have one.
@@ -416,7 +434,7 @@ EXPORT_SYMBOL(vm_insert_page);
416 * to a regular file. in this case, the unmapping will need 434 * to a regular file. in this case, the unmapping will need
417 * to invoke file system routines that need the global lock. 435 * to invoke file system routines that need the global lock.
418 */ 436 */
419asmlinkage unsigned long sys_brk(unsigned long brk) 437SYSCALL_DEFINE1(brk, unsigned long, brk)
420{ 438{
421 struct mm_struct *mm = current->mm; 439 struct mm_struct *mm = current->mm;
422 440
@@ -1573,7 +1591,7 @@ erase_whole_vma:
1573} 1591}
1574EXPORT_SYMBOL(do_munmap); 1592EXPORT_SYMBOL(do_munmap);
1575 1593
1576asmlinkage long sys_munmap(unsigned long addr, size_t len) 1594SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
1577{ 1595{
1578 int ret; 1596 int ret;
1579 struct mm_struct *mm = current->mm; 1597 struct mm_struct *mm = current->mm;
@@ -1657,10 +1675,9 @@ unsigned long do_mremap(unsigned long addr,
1657} 1675}
1658EXPORT_SYMBOL(do_mremap); 1676EXPORT_SYMBOL(do_mremap);
1659 1677
1660asmlinkage 1678SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
1661unsigned long sys_mremap(unsigned long addr, 1679 unsigned long, new_len, unsigned long, flags,
1662 unsigned long old_len, unsigned long new_len, 1680 unsigned long, new_addr)
1663 unsigned long flags, unsigned long new_addr)
1664{ 1681{
1665 unsigned long ret; 1682 unsigned long ret;
1666 1683
diff --git a/mm/swapfile.c b/mm/swapfile.c
index da422c47e2ee..f48b831e5e5c 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1377,7 +1377,7 @@ out:
1377 return ret; 1377 return ret;
1378} 1378}
1379 1379
1380asmlinkage long sys_swapoff(const char __user * specialfile) 1380SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
1381{ 1381{
1382 struct swap_info_struct * p = NULL; 1382 struct swap_info_struct * p = NULL;
1383 unsigned short *swap_map; 1383 unsigned short *swap_map;
@@ -1633,7 +1633,7 @@ late_initcall(max_swapfiles_check);
1633 * 1633 *
1634 * The swapon system call 1634 * The swapon system call
1635 */ 1635 */
1636asmlinkage long sys_swapon(const char __user * specialfile, int swap_flags) 1636SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
1637{ 1637{
1638 struct swap_info_struct * p; 1638 struct swap_info_struct * p;
1639 char *name = NULL; 1639 char *name = NULL;
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index c5db9a7264d9..75f49d312e8c 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -14,7 +14,6 @@
14#include <linux/highmem.h> 14#include <linux/highmem.h>
15#include <linux/slab.h> 15#include <linux/slab.h>
16#include <linux/spinlock.h> 16#include <linux/spinlock.h>
17#include <linux/mutex.h>
18#include <linux/interrupt.h> 17#include <linux/interrupt.h>
19#include <linux/proc_fs.h> 18#include <linux/proc_fs.h>
20#include <linux/seq_file.h> 19#include <linux/seq_file.h>
@@ -24,6 +23,7 @@
24#include <linux/rbtree.h> 23#include <linux/rbtree.h>
25#include <linux/radix-tree.h> 24#include <linux/radix-tree.h>
26#include <linux/rcupdate.h> 25#include <linux/rcupdate.h>
26#include <linux/bootmem.h>
27 27
28#include <asm/atomic.h> 28#include <asm/atomic.h>
29#include <asm/uaccess.h> 29#include <asm/uaccess.h>
@@ -495,7 +495,7 @@ static atomic_t vmap_lazy_nr = ATOMIC_INIT(0);
495static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end, 495static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
496 int sync, int force_flush) 496 int sync, int force_flush)
497{ 497{
498 static DEFINE_MUTEX(purge_lock); 498 static DEFINE_SPINLOCK(purge_lock);
499 LIST_HEAD(valist); 499 LIST_HEAD(valist);
500 struct vmap_area *va; 500 struct vmap_area *va;
501 int nr = 0; 501 int nr = 0;
@@ -506,10 +506,10 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
506 * the case that isn't actually used at the moment anyway. 506 * the case that isn't actually used at the moment anyway.
507 */ 507 */
508 if (!sync && !force_flush) { 508 if (!sync && !force_flush) {
509 if (!mutex_trylock(&purge_lock)) 509 if (!spin_trylock(&purge_lock))
510 return; 510 return;
511 } else 511 } else
512 mutex_lock(&purge_lock); 512 spin_lock(&purge_lock);
513 513
514 rcu_read_lock(); 514 rcu_read_lock();
515 list_for_each_entry_rcu(va, &vmap_area_list, list) { 515 list_for_each_entry_rcu(va, &vmap_area_list, list) {
@@ -541,7 +541,7 @@ static void __purge_vmap_area_lazy(unsigned long *start, unsigned long *end,
541 __free_vmap_area(va); 541 __free_vmap_area(va);
542 spin_unlock(&vmap_area_lock); 542 spin_unlock(&vmap_area_lock);
543 } 543 }
544 mutex_unlock(&purge_lock); 544 spin_unlock(&purge_lock);
545} 545}
546 546
547/* 547/*
@@ -984,6 +984,8 @@ EXPORT_SYMBOL(vm_map_ram);
984 984
985void __init vmalloc_init(void) 985void __init vmalloc_init(void)
986{ 986{
987 struct vmap_area *va;
988 struct vm_struct *tmp;
987 int i; 989 int i;
988 990
989 for_each_possible_cpu(i) { 991 for_each_possible_cpu(i) {
@@ -996,6 +998,14 @@ void __init vmalloc_init(void)
996 vbq->nr_dirty = 0; 998 vbq->nr_dirty = 0;
997 } 999 }
998 1000
1001 /* Import existing vmlist entries. */
1002 for (tmp = vmlist; tmp; tmp = tmp->next) {
1003 va = alloc_bootmem(sizeof(struct vmap_area));
1004 va->flags = tmp->flags | VM_VM_AREA;
1005 va->va_start = (unsigned long)tmp->addr;
1006 va->va_end = va->va_start + tmp->size;
1007 __insert_vmap_area(va);
1008 }
999 vmap_initialized = true; 1009 vmap_initialized = true;
1000} 1010}
1001 1011
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c
index 6c1323940263..e9db889d6222 100644
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -62,13 +62,13 @@ struct net_device *vlan_dev_real_dev(const struct net_device *dev)
62{ 62{
63 return vlan_dev_info(dev)->real_dev; 63 return vlan_dev_info(dev)->real_dev;
64} 64}
65EXPORT_SYMBOL_GPL(vlan_dev_real_dev); 65EXPORT_SYMBOL(vlan_dev_real_dev);
66 66
67u16 vlan_dev_vlan_id(const struct net_device *dev) 67u16 vlan_dev_vlan_id(const struct net_device *dev)
68{ 68{
69 return vlan_dev_info(dev)->vlan_id; 69 return vlan_dev_info(dev)->vlan_id;
70} 70}
71EXPORT_SYMBOL_GPL(vlan_dev_vlan_id); 71EXPORT_SYMBOL(vlan_dev_vlan_id);
72 72
73static int vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp, 73static int vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp,
74 unsigned int vlan_tci, struct sk_buff *skb) 74 unsigned int vlan_tci, struct sk_buff *skb)
diff --git a/net/9p/Kconfig b/net/9p/Kconfig
index 0663f99e977a..7ed75c7bd5d1 100644
--- a/net/9p/Kconfig
+++ b/net/9p/Kconfig
@@ -23,7 +23,7 @@ config NET_9P_VIRTIO
23 guest partitions and a host partition. 23 guest partitions and a host partition.
24 24
25config NET_9P_RDMA 25config NET_9P_RDMA
26 depends on INET && INFINIBAND && EXPERIMENTAL 26 depends on INET && INFINIBAND && INFINIBAND_ADDR_TRANS && EXPERIMENTAL
27 tristate "9P RDMA Transport (Experimental)" 27 tristate "9P RDMA Transport (Experimental)"
28 help 28 help
29 This builds support for an RDMA transport. 29 This builds support for an RDMA transport.
diff --git a/net/9p/client.c b/net/9p/client.c
index 821f1ec0b2c3..1eb580c38fbb 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -618,7 +618,7 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt)
618 return ERR_PTR(-ENOMEM); 618 return ERR_PTR(-ENOMEM);
619 619
620 ret = p9_idpool_get(clnt->fidpool); 620 ret = p9_idpool_get(clnt->fidpool);
621 if (fid->fid < 0) { 621 if (ret < 0) {
622 ret = -ENOSPC; 622 ret = -ENOSPC;
623 goto error; 623 goto error;
624 } 624 }
diff --git a/net/Kconfig b/net/Kconfig
index bf2776018f71..cdb8fdef6c4a 100644
--- a/net/Kconfig
+++ b/net/Kconfig
@@ -24,14 +24,6 @@ if NET
24 24
25menu "Networking options" 25menu "Networking options"
26 26
27config NET_NS
28 bool "Network namespace support"
29 default n
30 depends on EXPERIMENTAL && NAMESPACES
31 help
32 Allow user space to create what appear to be multiple instances
33 of the network stack.
34
35config COMPAT_NET_DEV_OPS 27config COMPAT_NET_DEV_OPS
36 def_bool y 28 def_bool y
37 29
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index a65e43a17fbb..cf754ace0b75 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -58,11 +58,11 @@ static struct ctl_table_header *brnf_sysctl_header;
58static int brnf_call_iptables __read_mostly = 1; 58static int brnf_call_iptables __read_mostly = 1;
59static int brnf_call_ip6tables __read_mostly = 1; 59static int brnf_call_ip6tables __read_mostly = 1;
60static int brnf_call_arptables __read_mostly = 1; 60static int brnf_call_arptables __read_mostly = 1;
61static int brnf_filter_vlan_tagged __read_mostly = 1; 61static int brnf_filter_vlan_tagged __read_mostly = 0;
62static int brnf_filter_pppoe_tagged __read_mostly = 1; 62static int brnf_filter_pppoe_tagged __read_mostly = 0;
63#else 63#else
64#define brnf_filter_vlan_tagged 1 64#define brnf_filter_vlan_tagged 0
65#define brnf_filter_pppoe_tagged 1 65#define brnf_filter_pppoe_tagged 0
66#endif 66#endif
67 67
68static inline __be16 vlan_proto(const struct sk_buff *skb) 68static inline __be16 vlan_proto(const struct sk_buff *skb)
@@ -686,8 +686,11 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff *skb,
686 if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) || 686 if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) ||
687 IS_PPPOE_IP(skb)) 687 IS_PPPOE_IP(skb))
688 pf = PF_INET; 688 pf = PF_INET;
689 else 689 else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) ||
690 IS_PPPOE_IPV6(skb))
690 pf = PF_INET6; 691 pf = PF_INET6;
692 else
693 return NF_ACCEPT;
691 694
692 nf_bridge_pull_encap_header(skb); 695 nf_bridge_pull_encap_header(skb);
693 696
@@ -828,8 +831,11 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff *skb,
828 if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) || 831 if (skb->protocol == htons(ETH_P_IP) || IS_VLAN_IP(skb) ||
829 IS_PPPOE_IP(skb)) 832 IS_PPPOE_IP(skb))
830 pf = PF_INET; 833 pf = PF_INET;
831 else 834 else if (skb->protocol == htons(ETH_P_IPV6) || IS_VLAN_IPV6(skb) ||
835 IS_PPPOE_IPV6(skb))
832 pf = PF_INET6; 836 pf = PF_INET6;
837 else
838 return NF_ACCEPT;
833 839
834#ifdef CONFIG_NETFILTER_DEBUG 840#ifdef CONFIG_NETFILTER_DEBUG
835 if (skb->dst == NULL) { 841 if (skb->dst == NULL) {
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
index 8a8743d7d6e7..820252aee81f 100644
--- a/net/bridge/netfilter/ebtables.c
+++ b/net/bridge/netfilter/ebtables.c
@@ -79,7 +79,7 @@ static inline int ebt_do_match (struct ebt_entry_match *m,
79{ 79{
80 par->match = m->u.match; 80 par->match = m->u.match;
81 par->matchinfo = m->data; 81 par->matchinfo = m->data;
82 return m->u.match->match(skb, par); 82 return m->u.match->match(skb, par) ? EBT_MATCH : EBT_NOMATCH;
83} 83}
84 84
85static inline int ebt_dev_check(char *entry, const struct net_device *device) 85static inline int ebt_dev_check(char *entry, const struct net_device *device)
diff --git a/net/can/bcm.c b/net/can/bcm.c
index 1649c8ab2c2f..b7c7d4651136 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -347,51 +347,54 @@ static void bcm_tx_timeout_tsklet(unsigned long data)
347 struct bcm_op *op = (struct bcm_op *)data; 347 struct bcm_op *op = (struct bcm_op *)data;
348 struct bcm_msg_head msg_head; 348 struct bcm_msg_head msg_head;
349 349
350 /* create notification to user */
351 msg_head.opcode = TX_EXPIRED;
352 msg_head.flags = op->flags;
353 msg_head.count = op->count;
354 msg_head.ival1 = op->ival1;
355 msg_head.ival2 = op->ival2;
356 msg_head.can_id = op->can_id;
357 msg_head.nframes = 0;
358
359 bcm_send_to_user(op, &msg_head, NULL, 0);
360}
361
362/*
363 * bcm_tx_timeout_handler - performes cyclic CAN frame transmissions
364 */
365static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer)
366{
367 struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer);
368 enum hrtimer_restart ret = HRTIMER_NORESTART;
369
370 if (op->kt_ival1.tv64 && (op->count > 0)) { 350 if (op->kt_ival1.tv64 && (op->count > 0)) {
371 351
372 op->count--; 352 op->count--;
373 if (!op->count && (op->flags & TX_COUNTEVT)) 353 if (!op->count && (op->flags & TX_COUNTEVT)) {
374 tasklet_schedule(&op->tsklet); 354
355 /* create notification to user */
356 msg_head.opcode = TX_EXPIRED;
357 msg_head.flags = op->flags;
358 msg_head.count = op->count;
359 msg_head.ival1 = op->ival1;
360 msg_head.ival2 = op->ival2;
361 msg_head.can_id = op->can_id;
362 msg_head.nframes = 0;
363
364 bcm_send_to_user(op, &msg_head, NULL, 0);
365 }
375 } 366 }
376 367
377 if (op->kt_ival1.tv64 && (op->count > 0)) { 368 if (op->kt_ival1.tv64 && (op->count > 0)) {
378 369
379 /* send (next) frame */ 370 /* send (next) frame */
380 bcm_can_tx(op); 371 bcm_can_tx(op);
381 hrtimer_forward(hrtimer, ktime_get(), op->kt_ival1); 372 hrtimer_start(&op->timer,
382 ret = HRTIMER_RESTART; 373 ktime_add(ktime_get(), op->kt_ival1),
374 HRTIMER_MODE_ABS);
383 375
384 } else { 376 } else {
385 if (op->kt_ival2.tv64) { 377 if (op->kt_ival2.tv64) {
386 378
387 /* send (next) frame */ 379 /* send (next) frame */
388 bcm_can_tx(op); 380 bcm_can_tx(op);
389 hrtimer_forward(hrtimer, ktime_get(), op->kt_ival2); 381 hrtimer_start(&op->timer,
390 ret = HRTIMER_RESTART; 382 ktime_add(ktime_get(), op->kt_ival2),
383 HRTIMER_MODE_ABS);
391 } 384 }
392 } 385 }
386}
393 387
394 return ret; 388/*
389 * bcm_tx_timeout_handler - performes cyclic CAN frame transmissions
390 */
391static enum hrtimer_restart bcm_tx_timeout_handler(struct hrtimer *hrtimer)
392{
393 struct bcm_op *op = container_of(hrtimer, struct bcm_op, timer);
394
395 tasklet_schedule(&op->tsklet);
396
397 return HRTIMER_NORESTART;
395} 398}
396 399
397/* 400/*
diff --git a/net/core/dev.c b/net/core/dev.c
index b715a55cccc4..5379b0c1190a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1534,7 +1534,19 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)
1534 skb->mac_len = skb->network_header - skb->mac_header; 1534 skb->mac_len = skb->network_header - skb->mac_header;
1535 __skb_pull(skb, skb->mac_len); 1535 __skb_pull(skb, skb->mac_len);
1536 1536
1537 if (WARN_ON(skb->ip_summed != CHECKSUM_PARTIAL)) { 1537 if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
1538 struct net_device *dev = skb->dev;
1539 struct ethtool_drvinfo info = {};
1540
1541 if (dev && dev->ethtool_ops && dev->ethtool_ops->get_drvinfo)
1542 dev->ethtool_ops->get_drvinfo(dev, &info);
1543
1544 WARN(1, "%s: caps=(0x%lx, 0x%lx) len=%d data_len=%d "
1545 "ip_summed=%d",
1546 info.driver, dev ? dev->features : 0L,
1547 skb->sk ? skb->sk->sk_route_caps : 0L,
1548 skb->len, skb->data_len, skb->ip_summed);
1549
1538 if (skb_header_cloned(skb) && 1550 if (skb_header_cloned(skb) &&
1539 (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) 1551 (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC)))
1540 return ERR_PTR(err); 1552 return ERR_PTR(err);
@@ -2392,6 +2404,9 @@ int dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
2392 if (!(skb->dev->features & NETIF_F_GRO)) 2404 if (!(skb->dev->features & NETIF_F_GRO))
2393 goto normal; 2405 goto normal;
2394 2406
2407 if (skb_is_gso(skb) || skb_shinfo(skb)->frag_list)
2408 goto normal;
2409
2395 rcu_read_lock(); 2410 rcu_read_lock();
2396 list_for_each_entry_rcu(ptype, head, list) { 2411 list_for_each_entry_rcu(ptype, head, list) {
2397 struct sk_buff *p; 2412 struct sk_buff *p;
@@ -2488,12 +2503,6 @@ EXPORT_SYMBOL(napi_gro_receive);
2488 2503
2489void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) 2504void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb)
2490{ 2505{
2491 skb_shinfo(skb)->nr_frags = 0;
2492
2493 skb->len -= skb->data_len;
2494 skb->truesize -= skb->data_len;
2495 skb->data_len = 0;
2496
2497 __skb_pull(skb, skb_headlen(skb)); 2506 __skb_pull(skb, skb_headlen(skb));
2498 skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb)); 2507 skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb));
2499 2508
@@ -2527,6 +2536,7 @@ struct sk_buff *napi_fraginfo_skb(struct napi_struct *napi,
2527 2536
2528 if (!pskb_may_pull(skb, ETH_HLEN)) { 2537 if (!pskb_may_pull(skb, ETH_HLEN)) {
2529 napi_reuse_skb(napi, skb); 2538 napi_reuse_skb(napi, skb);
2539 skb = NULL;
2530 goto out; 2540 goto out;
2531 } 2541 }
2532 2542
@@ -4434,6 +4444,45 @@ err_uninit:
4434} 4444}
4435 4445
4436/** 4446/**
4447 * init_dummy_netdev - init a dummy network device for NAPI
4448 * @dev: device to init
4449 *
4450 * This takes a network device structure and initialize the minimum
4451 * amount of fields so it can be used to schedule NAPI polls without
4452 * registering a full blown interface. This is to be used by drivers
4453 * that need to tie several hardware interfaces to a single NAPI
4454 * poll scheduler due to HW limitations.
4455 */
4456int init_dummy_netdev(struct net_device *dev)
4457{
4458 /* Clear everything. Note we don't initialize spinlocks
4459 * are they aren't supposed to be taken by any of the
4460 * NAPI code and this dummy netdev is supposed to be
4461 * only ever used for NAPI polls
4462 */
4463 memset(dev, 0, sizeof(struct net_device));
4464
4465 /* make sure we BUG if trying to hit standard
4466 * register/unregister code path
4467 */
4468 dev->reg_state = NETREG_DUMMY;
4469
4470 /* initialize the ref count */
4471 atomic_set(&dev->refcnt, 1);
4472
4473 /* NAPI wants this */
4474 INIT_LIST_HEAD(&dev->napi_list);
4475
4476 /* a dummy interface is started by default */
4477 set_bit(__LINK_STATE_PRESENT, &dev->state);
4478 set_bit(__LINK_STATE_START, &dev->state);
4479
4480 return 0;
4481}
4482EXPORT_SYMBOL_GPL(init_dummy_netdev);
4483
4484
4485/**
4437 * register_netdev - register a network device 4486 * register_netdev - register a network device
4438 * @dev: device to register 4487 * @dev: device to register
4439 * 4488 *
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 55cffad2f328..55151faaf90c 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -341,8 +341,8 @@ again:
341 rv = register_pernet_operations(first_device, ops); 341 rv = register_pernet_operations(first_device, ops);
342 if (rv < 0) 342 if (rv < 0)
343 ida_remove(&net_generic_ids, *id); 343 ida_remove(&net_generic_ids, *id);
344 mutex_unlock(&net_mutex);
345out: 344out:
345 mutex_unlock(&net_mutex);
346 return rv; 346 return rv;
347} 347}
348EXPORT_SYMBOL_GPL(register_pernet_gen_subsys); 348EXPORT_SYMBOL_GPL(register_pernet_gen_subsys);
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 5110b359c758..2e5f2ca3bdcd 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -73,17 +73,13 @@ static struct kmem_cache *skbuff_fclone_cache __read_mostly;
73static void sock_pipe_buf_release(struct pipe_inode_info *pipe, 73static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
74 struct pipe_buffer *buf) 74 struct pipe_buffer *buf)
75{ 75{
76 struct sk_buff *skb = (struct sk_buff *) buf->private; 76 put_page(buf->page);
77
78 kfree_skb(skb);
79} 77}
80 78
81static void sock_pipe_buf_get(struct pipe_inode_info *pipe, 79static void sock_pipe_buf_get(struct pipe_inode_info *pipe,
82 struct pipe_buffer *buf) 80 struct pipe_buffer *buf)
83{ 81{
84 struct sk_buff *skb = (struct sk_buff *) buf->private; 82 get_page(buf->page);
85
86 skb_get(skb);
87} 83}
88 84
89static int sock_pipe_buf_steal(struct pipe_inode_info *pipe, 85static int sock_pipe_buf_steal(struct pipe_inode_info *pipe,
@@ -1334,9 +1330,19 @@ fault:
1334 */ 1330 */
1335static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i) 1331static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i)
1336{ 1332{
1337 struct sk_buff *skb = (struct sk_buff *) spd->partial[i].private; 1333 put_page(spd->pages[i]);
1334}
1338 1335
1339 kfree_skb(skb); 1336static inline struct page *linear_to_page(struct page *page, unsigned int len,
1337 unsigned int offset)
1338{
1339 struct page *p = alloc_pages(GFP_KERNEL, 0);
1340
1341 if (!p)
1342 return NULL;
1343 memcpy(page_address(p) + offset, page_address(page) + offset, len);
1344
1345 return p;
1340} 1346}
1341 1347
1342/* 1348/*
@@ -1344,16 +1350,23 @@ static void sock_spd_release(struct splice_pipe_desc *spd, unsigned int i)
1344 */ 1350 */
1345static inline int spd_fill_page(struct splice_pipe_desc *spd, struct page *page, 1351static inline int spd_fill_page(struct splice_pipe_desc *spd, struct page *page,
1346 unsigned int len, unsigned int offset, 1352 unsigned int len, unsigned int offset,
1347 struct sk_buff *skb) 1353 struct sk_buff *skb, int linear)
1348{ 1354{
1349 if (unlikely(spd->nr_pages == PIPE_BUFFERS)) 1355 if (unlikely(spd->nr_pages == PIPE_BUFFERS))
1350 return 1; 1356 return 1;
1351 1357
1358 if (linear) {
1359 page = linear_to_page(page, len, offset);
1360 if (!page)
1361 return 1;
1362 } else
1363 get_page(page);
1364
1352 spd->pages[spd->nr_pages] = page; 1365 spd->pages[spd->nr_pages] = page;
1353 spd->partial[spd->nr_pages].len = len; 1366 spd->partial[spd->nr_pages].len = len;
1354 spd->partial[spd->nr_pages].offset = offset; 1367 spd->partial[spd->nr_pages].offset = offset;
1355 spd->partial[spd->nr_pages].private = (unsigned long) skb_get(skb);
1356 spd->nr_pages++; 1368 spd->nr_pages++;
1369
1357 return 0; 1370 return 0;
1358} 1371}
1359 1372
@@ -1369,7 +1382,7 @@ static inline void __segment_seek(struct page **page, unsigned int *poff,
1369static inline int __splice_segment(struct page *page, unsigned int poff, 1382static inline int __splice_segment(struct page *page, unsigned int poff,
1370 unsigned int plen, unsigned int *off, 1383 unsigned int plen, unsigned int *off,
1371 unsigned int *len, struct sk_buff *skb, 1384 unsigned int *len, struct sk_buff *skb,
1372 struct splice_pipe_desc *spd) 1385 struct splice_pipe_desc *spd, int linear)
1373{ 1386{
1374 if (!*len) 1387 if (!*len)
1375 return 1; 1388 return 1;
@@ -1392,7 +1405,7 @@ static inline int __splice_segment(struct page *page, unsigned int poff,
1392 /* the linear region may spread across several pages */ 1405 /* the linear region may spread across several pages */
1393 flen = min_t(unsigned int, flen, PAGE_SIZE - poff); 1406 flen = min_t(unsigned int, flen, PAGE_SIZE - poff);
1394 1407
1395 if (spd_fill_page(spd, page, flen, poff, skb)) 1408 if (spd_fill_page(spd, page, flen, poff, skb, linear))
1396 return 1; 1409 return 1;
1397 1410
1398 __segment_seek(&page, &poff, &plen, flen); 1411 __segment_seek(&page, &poff, &plen, flen);
@@ -1419,7 +1432,7 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset,
1419 if (__splice_segment(virt_to_page(skb->data), 1432 if (__splice_segment(virt_to_page(skb->data),
1420 (unsigned long) skb->data & (PAGE_SIZE - 1), 1433 (unsigned long) skb->data & (PAGE_SIZE - 1),
1421 skb_headlen(skb), 1434 skb_headlen(skb),
1422 offset, len, skb, spd)) 1435 offset, len, skb, spd, 1))
1423 return 1; 1436 return 1;
1424 1437
1425 /* 1438 /*
@@ -1429,7 +1442,7 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset,
1429 const skb_frag_t *f = &skb_shinfo(skb)->frags[seg]; 1442 const skb_frag_t *f = &skb_shinfo(skb)->frags[seg];
1430 1443
1431 if (__splice_segment(f->page, f->page_offset, f->size, 1444 if (__splice_segment(f->page, f->page_offset, f->size,
1432 offset, len, skb, spd)) 1445 offset, len, skb, spd, 0))
1433 return 1; 1446 return 1;
1434 } 1447 }
1435 1448
@@ -1442,7 +1455,7 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset,
1442 * the frag list, if such a thing exists. We'd probably need to recurse to 1455 * the frag list, if such a thing exists. We'd probably need to recurse to
1443 * handle that cleanly. 1456 * handle that cleanly.
1444 */ 1457 */
1445int skb_splice_bits(struct sk_buff *__skb, unsigned int offset, 1458int skb_splice_bits(struct sk_buff *skb, unsigned int offset,
1446 struct pipe_inode_info *pipe, unsigned int tlen, 1459 struct pipe_inode_info *pipe, unsigned int tlen,
1447 unsigned int flags) 1460 unsigned int flags)
1448{ 1461{
@@ -1455,16 +1468,6 @@ int skb_splice_bits(struct sk_buff *__skb, unsigned int offset,
1455 .ops = &sock_pipe_buf_ops, 1468 .ops = &sock_pipe_buf_ops,
1456 .spd_release = sock_spd_release, 1469 .spd_release = sock_spd_release,
1457 }; 1470 };
1458 struct sk_buff *skb;
1459
1460 /*
1461 * I'd love to avoid the clone here, but tcp_read_sock()
1462 * ignores reference counts and unconditonally kills the sk_buff
1463 * on return from the actor.
1464 */
1465 skb = skb_clone(__skb, GFP_KERNEL);
1466 if (unlikely(!skb))
1467 return -ENOMEM;
1468 1471
1469 /* 1472 /*
1470 * __skb_splice_bits() only fails if the output has no room left, 1473 * __skb_splice_bits() only fails if the output has no room left,
@@ -1488,15 +1491,9 @@ int skb_splice_bits(struct sk_buff *__skb, unsigned int offset,
1488 } 1491 }
1489 1492
1490done: 1493done:
1491 /*
1492 * drop our reference to the clone, the pipe consumption will
1493 * drop the rest.
1494 */
1495 kfree_skb(skb);
1496
1497 if (spd.nr_pages) { 1494 if (spd.nr_pages) {
1495 struct sock *sk = skb->sk;
1498 int ret; 1496 int ret;
1499 struct sock *sk = __skb->sk;
1500 1497
1501 /* 1498 /*
1502 * Drop the socket lock, otherwise we have reverse 1499 * Drop the socket lock, otherwise we have reverse
@@ -2588,8 +2585,9 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
2588 struct sk_buff *nskb; 2585 struct sk_buff *nskb;
2589 unsigned int headroom; 2586 unsigned int headroom;
2590 unsigned int hlen = p->data - skb_mac_header(p); 2587 unsigned int hlen = p->data - skb_mac_header(p);
2588 unsigned int len = skb->len;
2591 2589
2592 if (hlen + p->len + skb->len >= 65536) 2590 if (hlen + p->len + len >= 65536)
2593 return -E2BIG; 2591 return -E2BIG;
2594 2592
2595 if (skb_shinfo(p)->frag_list) 2593 if (skb_shinfo(p)->frag_list)
@@ -2602,6 +2600,12 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
2602 skb_shinfo(skb)->nr_frags * sizeof(skb_frag_t)); 2600 skb_shinfo(skb)->nr_frags * sizeof(skb_frag_t));
2603 2601
2604 skb_shinfo(p)->nr_frags += skb_shinfo(skb)->nr_frags; 2602 skb_shinfo(p)->nr_frags += skb_shinfo(skb)->nr_frags;
2603 skb_shinfo(skb)->nr_frags = 0;
2604
2605 skb->truesize -= skb->data_len;
2606 skb->len -= skb->data_len;
2607 skb->data_len = 0;
2608
2605 NAPI_GRO_CB(skb)->free = 1; 2609 NAPI_GRO_CB(skb)->free = 1;
2606 goto done; 2610 goto done;
2607 } 2611 }
@@ -2645,9 +2649,9 @@ merge:
2645 2649
2646done: 2650done:
2647 NAPI_GRO_CB(p)->count++; 2651 NAPI_GRO_CB(p)->count++;
2648 p->data_len += skb->len; 2652 p->data_len += len;
2649 p->truesize += skb->len; 2653 p->truesize += len;
2650 p->len += skb->len; 2654 p->len += len;
2651 2655
2652 NAPI_GRO_CB(skb)->same_flow = 1; 2656 NAPI_GRO_CB(skb)->same_flow = 1;
2653 return 0; 2657 return 0;
diff --git a/net/ipv4/netfilter/iptable_filter.c b/net/ipv4/netfilter/iptable_filter.c
index c9224310ebae..52cb6939d093 100644
--- a/net/ipv4/netfilter/iptable_filter.c
+++ b/net/ipv4/netfilter/iptable_filter.c
@@ -93,13 +93,8 @@ ipt_local_out_hook(unsigned int hook,
93{ 93{
94 /* root is playing with raw sockets. */ 94 /* root is playing with raw sockets. */
95 if (skb->len < sizeof(struct iphdr) || 95 if (skb->len < sizeof(struct iphdr) ||
96 ip_hdrlen(skb) < sizeof(struct iphdr)) { 96 ip_hdrlen(skb) < sizeof(struct iphdr))
97 if (net_ratelimit())
98 printk("iptable_filter: ignoring short SOCK_RAW "
99 "packet.\n");
100 return NF_ACCEPT; 97 return NF_ACCEPT;
101 }
102
103 return ipt_do_table(skb, hook, in, out, 98 return ipt_do_table(skb, hook, in, out,
104 dev_net(out)->ipv4.iptable_filter); 99 dev_net(out)->ipv4.iptable_filter);
105} 100}
diff --git a/net/ipv4/netfilter/iptable_mangle.c b/net/ipv4/netfilter/iptable_mangle.c
index 69f2c4287146..3929d20b9e45 100644
--- a/net/ipv4/netfilter/iptable_mangle.c
+++ b/net/ipv4/netfilter/iptable_mangle.c
@@ -132,12 +132,8 @@ ipt_local_hook(unsigned int hook,
132 132
133 /* root is playing with raw sockets. */ 133 /* root is playing with raw sockets. */
134 if (skb->len < sizeof(struct iphdr) 134 if (skb->len < sizeof(struct iphdr)
135 || ip_hdrlen(skb) < sizeof(struct iphdr)) { 135 || ip_hdrlen(skb) < sizeof(struct iphdr))
136 if (net_ratelimit())
137 printk("iptable_mangle: ignoring short SOCK_RAW "
138 "packet.\n");
139 return NF_ACCEPT; 136 return NF_ACCEPT;
140 }
141 137
142 /* Save things which could affect route */ 138 /* Save things which could affect route */
143 mark = skb->mark; 139 mark = skb->mark;
diff --git a/net/ipv4/netfilter/iptable_raw.c b/net/ipv4/netfilter/iptable_raw.c
index 8faebfe638f1..7f65d18333e3 100644
--- a/net/ipv4/netfilter/iptable_raw.c
+++ b/net/ipv4/netfilter/iptable_raw.c
@@ -65,12 +65,8 @@ ipt_local_hook(unsigned int hook,
65{ 65{
66 /* root is playing with raw sockets. */ 66 /* root is playing with raw sockets. */
67 if (skb->len < sizeof(struct iphdr) || 67 if (skb->len < sizeof(struct iphdr) ||
68 ip_hdrlen(skb) < sizeof(struct iphdr)) { 68 ip_hdrlen(skb) < sizeof(struct iphdr))
69 if (net_ratelimit())
70 printk("iptable_raw: ignoring short SOCK_RAW "
71 "packet.\n");
72 return NF_ACCEPT; 69 return NF_ACCEPT;
73 }
74 return ipt_do_table(skb, hook, in, out, 70 return ipt_do_table(skb, hook, in, out,
75 dev_net(out)->ipv4.iptable_raw); 71 dev_net(out)->ipv4.iptable_raw);
76} 72}
diff --git a/net/ipv4/netfilter/iptable_security.c b/net/ipv4/netfilter/iptable_security.c
index 36f3be3cc428..a52a35f4a584 100644
--- a/net/ipv4/netfilter/iptable_security.c
+++ b/net/ipv4/netfilter/iptable_security.c
@@ -96,12 +96,8 @@ ipt_local_out_hook(unsigned int hook,
96{ 96{
97 /* Somebody is playing with raw sockets. */ 97 /* Somebody is playing with raw sockets. */
98 if (skb->len < sizeof(struct iphdr) 98 if (skb->len < sizeof(struct iphdr)
99 || ip_hdrlen(skb) < sizeof(struct iphdr)) { 99 || ip_hdrlen(skb) < sizeof(struct iphdr))
100 if (net_ratelimit())
101 printk(KERN_INFO "iptable_security: ignoring short "
102 "SOCK_RAW packet.\n");
103 return NF_ACCEPT; 100 return NF_ACCEPT;
104 }
105 return ipt_do_table(skb, hook, in, out, 101 return ipt_do_table(skb, hook, in, out,
106 dev_net(out)->ipv4.iptable_security); 102 dev_net(out)->ipv4.iptable_security);
107} 103}
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
index b2141e11575e..4beb04fac588 100644
--- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
+++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
@@ -145,11 +145,8 @@ static unsigned int ipv4_conntrack_local(unsigned int hooknum,
145{ 145{
146 /* root is playing with raw sockets. */ 146 /* root is playing with raw sockets. */
147 if (skb->len < sizeof(struct iphdr) || 147 if (skb->len < sizeof(struct iphdr) ||
148 ip_hdrlen(skb) < sizeof(struct iphdr)) { 148 ip_hdrlen(skb) < sizeof(struct iphdr))
149 if (net_ratelimit())
150 printk("ipt_hook: happy cracking.\n");
151 return NF_ACCEPT; 149 return NF_ACCEPT;
152 }
153 return nf_conntrack_in(dev_net(out), PF_INET, hooknum, skb); 150 return nf_conntrack_in(dev_net(out), PF_INET, hooknum, skb);
154} 151}
155 152
diff --git a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
index 1fd3ef7718b6..2a8bee26f43d 100644
--- a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
+++ b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
@@ -20,7 +20,7 @@
20#include <net/netfilter/nf_conntrack_core.h> 20#include <net/netfilter/nf_conntrack_core.h>
21#include <net/netfilter/nf_log.h> 21#include <net/netfilter/nf_log.h>
22 22
23static unsigned long nf_ct_icmp_timeout __read_mostly = 30*HZ; 23static unsigned int nf_ct_icmp_timeout __read_mostly = 30*HZ;
24 24
25static bool icmp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff, 25static bool icmp_pkt_to_tuple(const struct sk_buff *skb, unsigned int dataoff,
26 struct nf_conntrack_tuple *tuple) 26 struct nf_conntrack_tuple *tuple)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index ce572f9dff02..0cd71b84e483 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -522,8 +522,12 @@ static int tcp_splice_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb,
522 unsigned int offset, size_t len) 522 unsigned int offset, size_t len)
523{ 523{
524 struct tcp_splice_state *tss = rd_desc->arg.data; 524 struct tcp_splice_state *tss = rd_desc->arg.data;
525 int ret;
525 526
526 return skb_splice_bits(skb, offset, tss->pipe, tss->len, tss->flags); 527 ret = skb_splice_bits(skb, offset, tss->pipe, rd_desc->count, tss->flags);
528 if (ret > 0)
529 rd_desc->count -= ret;
530 return ret;
527} 531}
528 532
529static int __tcp_splice_read(struct sock *sk, struct tcp_splice_state *tss) 533static int __tcp_splice_read(struct sock *sk, struct tcp_splice_state *tss)
@@ -531,6 +535,7 @@ static int __tcp_splice_read(struct sock *sk, struct tcp_splice_state *tss)
531 /* Store TCP splice context information in read_descriptor_t. */ 535 /* Store TCP splice context information in read_descriptor_t. */
532 read_descriptor_t rd_desc = { 536 read_descriptor_t rd_desc = {
533 .arg.data = tss, 537 .arg.data = tss,
538 .count = tss->len,
534 }; 539 };
535 540
536 return tcp_read_sock(sk, &rd_desc, tcp_splice_data_recv); 541 return tcp_read_sock(sk, &rd_desc, tcp_splice_data_recv);
@@ -611,11 +616,13 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,
611 tss.len -= ret; 616 tss.len -= ret;
612 spliced += ret; 617 spliced += ret;
613 618
619 if (!timeo)
620 break;
614 release_sock(sk); 621 release_sock(sk);
615 lock_sock(sk); 622 lock_sock(sk);
616 623
617 if (sk->sk_err || sk->sk_state == TCP_CLOSE || 624 if (sk->sk_err || sk->sk_state == TCP_CLOSE ||
618 (sk->sk_shutdown & RCV_SHUTDOWN) || !timeo || 625 (sk->sk_shutdown & RCV_SHUTDOWN) ||
619 signal_pending(current)) 626 signal_pending(current))
620 break; 627 break;
621 } 628 }
@@ -2382,7 +2389,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features)
2382 unsigned int seq; 2389 unsigned int seq;
2383 __be32 delta; 2390 __be32 delta;
2384 unsigned int oldlen; 2391 unsigned int oldlen;
2385 unsigned int len; 2392 unsigned int mss;
2386 2393
2387 if (!pskb_may_pull(skb, sizeof(*th))) 2394 if (!pskb_may_pull(skb, sizeof(*th)))
2388 goto out; 2395 goto out;
@@ -2398,10 +2405,13 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features)
2398 oldlen = (u16)~skb->len; 2405 oldlen = (u16)~skb->len;
2399 __skb_pull(skb, thlen); 2406 __skb_pull(skb, thlen);
2400 2407
2408 mss = skb_shinfo(skb)->gso_size;
2409 if (unlikely(skb->len <= mss))
2410 goto out;
2411
2401 if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) { 2412 if (skb_gso_ok(skb, features | NETIF_F_GSO_ROBUST)) {
2402 /* Packet is from an untrusted source, reset gso_segs. */ 2413 /* Packet is from an untrusted source, reset gso_segs. */
2403 int type = skb_shinfo(skb)->gso_type; 2414 int type = skb_shinfo(skb)->gso_type;
2404 int mss;
2405 2415
2406 if (unlikely(type & 2416 if (unlikely(type &
2407 ~(SKB_GSO_TCPV4 | 2417 ~(SKB_GSO_TCPV4 |
@@ -2412,7 +2422,6 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features)
2412 !(type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)))) 2422 !(type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))))
2413 goto out; 2423 goto out;
2414 2424
2415 mss = skb_shinfo(skb)->gso_size;
2416 skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss); 2425 skb_shinfo(skb)->gso_segs = DIV_ROUND_UP(skb->len, mss);
2417 2426
2418 segs = NULL; 2427 segs = NULL;
@@ -2423,8 +2432,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features)
2423 if (IS_ERR(segs)) 2432 if (IS_ERR(segs))
2424 goto out; 2433 goto out;
2425 2434
2426 len = skb_shinfo(skb)->gso_size; 2435 delta = htonl(oldlen + (thlen + mss));
2427 delta = htonl(oldlen + (thlen + len));
2428 2436
2429 skb = segs; 2437 skb = segs;
2430 th = tcp_hdr(skb); 2438 th = tcp_hdr(skb);
@@ -2440,7 +2448,7 @@ struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features)
2440 csum_fold(csum_partial(skb_transport_header(skb), 2448 csum_fold(csum_partial(skb_transport_header(skb),
2441 thlen, skb->csum)); 2449 thlen, skb->csum));
2442 2450
2443 seq += len; 2451 seq += mss;
2444 skb = skb->next; 2452 skb = skb->next;
2445 th = tcp_hdr(skb); 2453 th = tcp_hdr(skb);
2446 2454
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 94f74f5b0cbf..c802bc1658a8 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -797,6 +797,7 @@ static struct sk_buff **ipv6_gro_receive(struct sk_buff **head,
797 unsigned int nlen; 797 unsigned int nlen;
798 int flush = 1; 798 int flush = 1;
799 int proto; 799 int proto;
800 __wsum csum;
800 801
801 if (unlikely(!pskb_may_pull(skb, sizeof(*iph)))) 802 if (unlikely(!pskb_may_pull(skb, sizeof(*iph))))
802 goto out; 803 goto out;
@@ -808,6 +809,7 @@ static struct sk_buff **ipv6_gro_receive(struct sk_buff **head,
808 809
809 rcu_read_lock(); 810 rcu_read_lock();
810 proto = ipv6_gso_pull_exthdrs(skb, iph->nexthdr); 811 proto = ipv6_gso_pull_exthdrs(skb, iph->nexthdr);
812 iph = ipv6_hdr(skb);
811 IPV6_GRO_CB(skb)->proto = proto; 813 IPV6_GRO_CB(skb)->proto = proto;
812 ops = rcu_dereference(inet6_protos[proto]); 814 ops = rcu_dereference(inet6_protos[proto]);
813 if (!ops || !ops->gro_receive) 815 if (!ops || !ops->gro_receive)
@@ -839,8 +841,13 @@ static struct sk_buff **ipv6_gro_receive(struct sk_buff **head,
839 841
840 NAPI_GRO_CB(skb)->flush |= flush; 842 NAPI_GRO_CB(skb)->flush |= flush;
841 843
844 csum = skb->csum;
845 skb_postpull_rcsum(skb, iph, skb_network_header_len(skb));
846
842 pp = ops->gro_receive(head, skb); 847 pp = ops->gro_receive(head, skb);
843 848
849 skb->csum = csum;
850
844out_unlock: 851out_unlock:
845 rcu_read_unlock(); 852 rcu_read_unlock();
846 853
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index 29c7c99e69f7..52ee1dced2ff 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -298,6 +298,10 @@ static void fib6_dump_end(struct netlink_callback *cb)
298 struct fib6_walker_t *w = (void*)cb->args[2]; 298 struct fib6_walker_t *w = (void*)cb->args[2];
299 299
300 if (w) { 300 if (w) {
301 if (cb->args[4]) {
302 cb->args[4] = 0;
303 fib6_walker_unlink(w);
304 }
301 cb->args[2] = 0; 305 cb->args[2] = 0;
302 kfree(w); 306 kfree(w);
303 } 307 }
@@ -330,15 +334,12 @@ static int fib6_dump_table(struct fib6_table *table, struct sk_buff *skb,
330 read_lock_bh(&table->tb6_lock); 334 read_lock_bh(&table->tb6_lock);
331 res = fib6_walk_continue(w); 335 res = fib6_walk_continue(w);
332 read_unlock_bh(&table->tb6_lock); 336 read_unlock_bh(&table->tb6_lock);
333 if (res != 0) { 337 if (res <= 0) {
334 if (res < 0) 338 fib6_walker_unlink(w);
335 fib6_walker_unlink(w); 339 cb->args[4] = 0;
336 goto end;
337 } 340 }
338 fib6_walker_unlink(w);
339 cb->args[4] = 0;
340 } 341 }
341end: 342
342 return res; 343 return res;
343} 344}
344 345
diff --git a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
index bd52151d31e9..c455cf4ee756 100644
--- a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
+++ b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
@@ -26,7 +26,7 @@
26#include <net/netfilter/ipv6/nf_conntrack_icmpv6.h> 26#include <net/netfilter/ipv6/nf_conntrack_icmpv6.h>
27#include <net/netfilter/nf_log.h> 27#include <net/netfilter/nf_log.h>
28 28
29static unsigned long nf_ct_icmpv6_timeout __read_mostly = 30*HZ; 29static unsigned int nf_ct_icmpv6_timeout __read_mostly = 30*HZ;
30 30
31static bool icmpv6_pkt_to_tuple(const struct sk_buff *skb, 31static bool icmpv6_pkt_to_tuple(const struct sk_buff *skb,
32 unsigned int dataoff, 32 unsigned int dataoff,
diff --git a/net/key/af_key.c b/net/key/af_key.c
index f8bd8df5e257..7dcbde3ea7d9 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1285,6 +1285,7 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net,
1285 ext_hdrs[SADB_X_EXT_NAT_T_DPORT-1]; 1285 ext_hdrs[SADB_X_EXT_NAT_T_DPORT-1];
1286 natt->encap_dport = n_port->sadb_x_nat_t_port_port; 1286 natt->encap_dport = n_port->sadb_x_nat_t_port_port;
1287 } 1287 }
1288 memset(&natt->encap_oa, 0, sizeof(natt->encap_oa));
1288 } 1289 }
1289 1290
1290 err = xfrm_init_state(x); 1291 err = xfrm_init_state(x);
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
index 5f510a13b9f0..c5c0c5271096 100644
--- a/net/mac80211/ht.c
+++ b/net/mac80211/ht.c
@@ -469,7 +469,7 @@ int ieee80211_start_tx_ba_session(struct ieee80211_hw *hw, u8 *ra, u16 tid)
469 struct ieee80211_sub_if_data *sdata; 469 struct ieee80211_sub_if_data *sdata;
470 u16 start_seq_num; 470 u16 start_seq_num;
471 u8 *state; 471 u8 *state;
472 int ret; 472 int ret = 0;
473 473
474 if ((tid >= STA_TID_NUM) || !(hw->flags & IEEE80211_HW_AMPDU_AGGREGATION)) 474 if ((tid >= STA_TID_NUM) || !(hw->flags & IEEE80211_HW_AMPDU_AGGREGATION))
475 return -EINVAL; 475 return -EINVAL;
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 5abbc3f07dd6..b9074824862a 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -699,7 +699,8 @@ int ieee80211_if_change_type(struct ieee80211_sub_if_data *sdata,
699 return 0; 699 return 0;
700 700
701 /* Setting ad-hoc mode on non-IBSS channel is not supported. */ 701 /* Setting ad-hoc mode on non-IBSS channel is not supported. */
702 if (sdata->local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS) 702 if (sdata->local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS &&
703 type == NL80211_IFTYPE_ADHOC)
703 return -EOPNOTSUPP; 704 return -EOPNOTSUPP;
704 705
705 /* 706 /*
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
index 929ba542fd72..1159bdb4119c 100644
--- a/net/mac80211/mesh_plink.c
+++ b/net/mac80211/mesh_plink.c
@@ -107,6 +107,7 @@ static struct sta_info *mesh_plink_alloc(struct ieee80211_sub_if_data *sdata,
107 107
108 sta->flags = WLAN_STA_AUTHORIZED; 108 sta->flags = WLAN_STA_AUTHORIZED;
109 sta->sta.supp_rates[local->hw.conf.channel->band] = rates; 109 sta->sta.supp_rates[local->hw.conf.channel->band] = rates;
110 rate_control_rate_init(sta);
110 111
111 return sta; 112 return sta;
112} 113}
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 5ba721b6a399..2b890af01ba4 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -620,8 +620,8 @@ static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata,
620 if (use_short_slot != bss_conf->use_short_slot) { 620 if (use_short_slot != bss_conf->use_short_slot) {
621#ifdef CONFIG_MAC80211_VERBOSE_DEBUG 621#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
622 if (net_ratelimit()) { 622 if (net_ratelimit()) {
623 printk(KERN_DEBUG "%s: switched to %s slot" 623 printk(KERN_DEBUG "%s: switched to %s slot time"
624 " (BSSID=%s)\n", 624 " (BSSID=%pM)\n",
625 sdata->dev->name, 625 sdata->dev->name,
626 use_short_slot ? "short" : "long", 626 use_short_slot ? "short" : "long",
627 ifsta->bssid); 627 ifsta->bssid);
diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c
index 2b3b490a6073..3824990d340b 100644
--- a/net/mac80211/rc80211_minstrel.c
+++ b/net/mac80211/rc80211_minstrel.c
@@ -395,13 +395,15 @@ minstrel_rate_init(void *priv, struct ieee80211_supported_band *sband,
395{ 395{
396 struct minstrel_sta_info *mi = priv_sta; 396 struct minstrel_sta_info *mi = priv_sta;
397 struct minstrel_priv *mp = priv; 397 struct minstrel_priv *mp = priv;
398 struct minstrel_rate *mr_ctl; 398 struct ieee80211_local *local = hw_to_local(mp->hw);
399 struct ieee80211_rate *ctl_rate;
399 unsigned int i, n = 0; 400 unsigned int i, n = 0;
400 unsigned int t_slot = 9; /* FIXME: get real slot time */ 401 unsigned int t_slot = 9; /* FIXME: get real slot time */
401 402
402 mi->lowest_rix = rate_lowest_index(sband, sta); 403 mi->lowest_rix = rate_lowest_index(sband, sta);
403 mr_ctl = &mi->r[rix_to_ndx(mi, mi->lowest_rix)]; 404 ctl_rate = &sband->bitrates[mi->lowest_rix];
404 mi->sp_ack_dur = mr_ctl->ack_time; 405 mi->sp_ack_dur = ieee80211_frame_duration(local, 10, ctl_rate->bitrate,
406 !!(ctl_rate->flags & IEEE80211_RATE_ERP_G), 1);
405 407
406 for (i = 0; i < sband->n_bitrates; i++) { 408 for (i = 0; i < sband->n_bitrates; i++) {
407 struct minstrel_rate *mr = &mi->r[n]; 409 struct minstrel_rate *mr = &mi->r[n];
@@ -416,7 +418,7 @@ minstrel_rate_init(void *priv, struct ieee80211_supported_band *sband,
416 418
417 mr->rix = i; 419 mr->rix = i;
418 mr->bitrate = sband->bitrates[i].bitrate / 5; 420 mr->bitrate = sband->bitrates[i].bitrate / 5;
419 calc_rate_durations(mi, hw_to_local(mp->hw), mr, 421 calc_rate_durations(mi, local, mr,
420 &sband->bitrates[i]); 422 &sband->bitrates[i]);
421 423
422 /* calculate maximum number of retransmissions before 424 /* calculate maximum number of retransmissions before
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index dc2606d0ae77..e49a5b99cf10 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -195,7 +195,6 @@ struct sta_ampdu_mlme {
195 * @tx_packets: number of RX/TX MSDUs 195 * @tx_packets: number of RX/TX MSDUs
196 * @tx_bytes: number of bytes transmitted to this STA 196 * @tx_bytes: number of bytes transmitted to this STA
197 * @tx_fragments: number of transmitted MPDUs 197 * @tx_fragments: number of transmitted MPDUs
198 * @last_txrate: description of the last used transmit rate
199 * @tid_seq: per-TID sequence numbers for sending to this STA 198 * @tid_seq: per-TID sequence numbers for sending to this STA
200 * @ampdu_mlme: A-MPDU state machine state 199 * @ampdu_mlme: A-MPDU state machine state
201 * @timer_to_tid: identity mapping to ID timers 200 * @timer_to_tid: identity mapping to ID timers
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index a4af3a124cce..4278e545638f 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1307,8 +1307,10 @@ int ieee80211_master_start_xmit(struct sk_buff *skb, struct net_device *dev)
1307 if (is_multicast_ether_addr(hdr->addr3)) 1307 if (is_multicast_ether_addr(hdr->addr3))
1308 memcpy(hdr->addr1, hdr->addr3, ETH_ALEN); 1308 memcpy(hdr->addr1, hdr->addr3, ETH_ALEN);
1309 else 1309 else
1310 if (mesh_nexthop_lookup(skb, osdata)) 1310 if (mesh_nexthop_lookup(skb, osdata)) {
1311 return 0; 1311 dev_put(odev);
1312 return 0;
1313 }
1312 if (memcmp(odev->dev_addr, hdr->addr4, ETH_ALEN) != 0) 1314 if (memcmp(odev->dev_addr, hdr->addr4, ETH_ALEN) != 0)
1313 IEEE80211_IFSTA_MESH_CTR_INC(&osdata->u.mesh, 1315 IEEE80211_IFSTA_MESH_CTR_INC(&osdata->u.mesh,
1314 fwded_frames); 1316 fwded_frames);
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 7e83f74cd5de..90ce9ddb9451 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -469,7 +469,7 @@ struct nf_conn *nf_conntrack_alloc(struct net *net,
469 const struct nf_conntrack_tuple *repl, 469 const struct nf_conntrack_tuple *repl,
470 gfp_t gfp) 470 gfp_t gfp)
471{ 471{
472 struct nf_conn *ct = NULL; 472 struct nf_conn *ct;
473 473
474 if (unlikely(!nf_conntrack_hash_rnd_initted)) { 474 if (unlikely(!nf_conntrack_hash_rnd_initted)) {
475 get_random_bytes(&nf_conntrack_hash_rnd, 4); 475 get_random_bytes(&nf_conntrack_hash_rnd, 4);
@@ -551,7 +551,7 @@ init_conntrack(struct net *net,
551 } 551 }
552 552
553 ct = nf_conntrack_alloc(net, tuple, &repl_tuple, GFP_ATOMIC); 553 ct = nf_conntrack_alloc(net, tuple, &repl_tuple, GFP_ATOMIC);
554 if (ct == NULL || IS_ERR(ct)) { 554 if (IS_ERR(ct)) {
555 pr_debug("Can't allocate conntrack.\n"); 555 pr_debug("Can't allocate conntrack.\n");
556 return (struct nf_conntrack_tuple_hash *)ct; 556 return (struct nf_conntrack_tuple_hash *)ct;
557 } 557 }
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index 00e8c27130ff..c32a7e8e3a1b 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -831,13 +831,16 @@ ctnetlink_parse_nat_setup(struct nf_conn *ct,
831 if (!parse_nat_setup) { 831 if (!parse_nat_setup) {
832#ifdef CONFIG_MODULES 832#ifdef CONFIG_MODULES
833 rcu_read_unlock(); 833 rcu_read_unlock();
834 spin_unlock_bh(&nf_conntrack_lock);
834 nfnl_unlock(); 835 nfnl_unlock();
835 if (request_module("nf-nat-ipv4") < 0) { 836 if (request_module("nf-nat-ipv4") < 0) {
836 nfnl_lock(); 837 nfnl_lock();
838 spin_lock_bh(&nf_conntrack_lock);
837 rcu_read_lock(); 839 rcu_read_lock();
838 return -EOPNOTSUPP; 840 return -EOPNOTSUPP;
839 } 841 }
840 nfnl_lock(); 842 nfnl_lock();
843 spin_lock_bh(&nf_conntrack_lock);
841 rcu_read_lock(); 844 rcu_read_lock();
842 if (nfnetlink_parse_nat_setup_hook) 845 if (nfnetlink_parse_nat_setup_hook)
843 return -EAGAIN; 846 return -EAGAIN;
@@ -1134,7 +1137,7 @@ ctnetlink_create_conntrack(struct nlattr *cda[],
1134 struct nf_conntrack_helper *helper; 1137 struct nf_conntrack_helper *helper;
1135 1138
1136 ct = nf_conntrack_alloc(&init_net, otuple, rtuple, GFP_ATOMIC); 1139 ct = nf_conntrack_alloc(&init_net, otuple, rtuple, GFP_ATOMIC);
1137 if (ct == NULL || IS_ERR(ct)) 1140 if (IS_ERR(ct))
1138 return -ENOMEM; 1141 return -ENOMEM;
1139 1142
1140 if (!cda[CTA_TIMEOUT]) 1143 if (!cda[CTA_TIMEOUT])
diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c
index 89837a4eef76..bfbf521f6ea5 100644
--- a/net/netfilter/x_tables.c
+++ b/net/netfilter/x_tables.c
@@ -273,6 +273,10 @@ static int match_revfn(u8 af, const char *name, u8 revision, int *bestp)
273 have_rev = 1; 273 have_rev = 1;
274 } 274 }
275 } 275 }
276
277 if (af != NFPROTO_UNSPEC && !have_rev)
278 return match_revfn(NFPROTO_UNSPEC, name, revision, bestp);
279
276 return have_rev; 280 return have_rev;
277} 281}
278 282
@@ -289,6 +293,10 @@ static int target_revfn(u8 af, const char *name, u8 revision, int *bestp)
289 have_rev = 1; 293 have_rev = 1;
290 } 294 }
291 } 295 }
296
297 if (af != NFPROTO_UNSPEC && !have_rev)
298 return target_revfn(NFPROTO_UNSPEC, name, revision, bestp);
299
292 return have_rev; 300 return have_rev;
293} 301}
294 302
diff --git a/net/netfilter/xt_time.c b/net/netfilter/xt_time.c
index 29375ba8db73..93acaa59d108 100644
--- a/net/netfilter/xt_time.c
+++ b/net/netfilter/xt_time.c
@@ -243,6 +243,17 @@ static struct xt_match xt_time_mt_reg __read_mostly = {
243 243
244static int __init time_mt_init(void) 244static int __init time_mt_init(void)
245{ 245{
246 int minutes = sys_tz.tz_minuteswest;
247
248 if (minutes < 0) /* east of Greenwich */
249 printk(KERN_INFO KBUILD_MODNAME
250 ": kernel timezone is +%02d%02d\n",
251 -minutes / 60, -minutes % 60);
252 else /* west of Greenwich */
253 printk(KERN_INFO KBUILD_MODNAME
254 ": kernel timezone is -%02d%02d\n",
255 minutes / 60, minutes % 60);
256
246 return xt_register_match(&xt_time_mt_reg); 257 return xt_register_match(&xt_time_mt_reg);
247} 258}
248 259
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 5070643ce534..2f0f0b04d3fb 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -661,12 +661,13 @@ static void htb_charge_class(struct htb_sched *q, struct htb_class *cl,
661 * next pending event (0 for no event in pq). 661 * next pending event (0 for no event in pq).
662 * Note: Applied are events whose have cl->pq_key <= q->now. 662 * Note: Applied are events whose have cl->pq_key <= q->now.
663 */ 663 */
664static psched_time_t htb_do_events(struct htb_sched *q, int level) 664static psched_time_t htb_do_events(struct htb_sched *q, int level,
665 unsigned long start)
665{ 666{
666 /* don't run for longer than 2 jiffies; 2 is used instead of 667 /* don't run for longer than 2 jiffies; 2 is used instead of
667 1 to simplify things when jiffy is going to be incremented 668 1 to simplify things when jiffy is going to be incremented
668 too soon */ 669 too soon */
669 unsigned long stop_at = jiffies + 2; 670 unsigned long stop_at = start + 2;
670 while (time_before(jiffies, stop_at)) { 671 while (time_before(jiffies, stop_at)) {
671 struct htb_class *cl; 672 struct htb_class *cl;
672 long diff; 673 long diff;
@@ -685,8 +686,8 @@ static psched_time_t htb_do_events(struct htb_sched *q, int level)
685 if (cl->cmode != HTB_CAN_SEND) 686 if (cl->cmode != HTB_CAN_SEND)
686 htb_add_to_wait_tree(q, cl, diff); 687 htb_add_to_wait_tree(q, cl, diff);
687 } 688 }
688 /* too much load - let's continue on next jiffie */ 689 /* too much load - let's continue on next jiffie (including above) */
689 return q->now + PSCHED_TICKS_PER_SEC / HZ; 690 return q->now + 2 * PSCHED_TICKS_PER_SEC / HZ;
690} 691}
691 692
692/* Returns class->node+prio from id-tree where classe's id is >= id. NULL 693/* Returns class->node+prio from id-tree where classe's id is >= id. NULL
@@ -845,6 +846,7 @@ static struct sk_buff *htb_dequeue(struct Qdisc *sch)
845 struct htb_sched *q = qdisc_priv(sch); 846 struct htb_sched *q = qdisc_priv(sch);
846 int level; 847 int level;
847 psched_time_t next_event; 848 psched_time_t next_event;
849 unsigned long start_at;
848 850
849 /* try to dequeue direct packets as high prio (!) to minimize cpu work */ 851 /* try to dequeue direct packets as high prio (!) to minimize cpu work */
850 skb = __skb_dequeue(&q->direct_queue); 852 skb = __skb_dequeue(&q->direct_queue);
@@ -857,6 +859,7 @@ static struct sk_buff *htb_dequeue(struct Qdisc *sch)
857 if (!sch->q.qlen) 859 if (!sch->q.qlen)
858 goto fin; 860 goto fin;
859 q->now = psched_get_time(); 861 q->now = psched_get_time();
862 start_at = jiffies;
860 863
861 next_event = q->now + 5 * PSCHED_TICKS_PER_SEC; 864 next_event = q->now + 5 * PSCHED_TICKS_PER_SEC;
862 865
@@ -866,14 +869,14 @@ static struct sk_buff *htb_dequeue(struct Qdisc *sch)
866 psched_time_t event; 869 psched_time_t event;
867 870
868 if (q->now >= q->near_ev_cache[level]) { 871 if (q->now >= q->near_ev_cache[level]) {
869 event = htb_do_events(q, level); 872 event = htb_do_events(q, level, start_at);
870 if (!event) 873 if (!event)
871 event = q->now + PSCHED_TICKS_PER_SEC; 874 event = q->now + PSCHED_TICKS_PER_SEC;
872 q->near_ev_cache[level] = event; 875 q->near_ev_cache[level] = event;
873 } else 876 } else
874 event = q->near_ev_cache[level]; 877 event = q->near_ev_cache[level];
875 878
876 if (event && next_event > event) 879 if (next_event > event)
877 next_event = event; 880 next_event = event;
878 881
879 m = ~q->row_mask[level]; 882 m = ~q->row_mask[level];
diff --git a/net/sctp/input.c b/net/sctp/input.c
index bf612d954d41..2e4a8646dbc3 100644
--- a/net/sctp/input.c
+++ b/net/sctp/input.c
@@ -249,6 +249,19 @@ int sctp_rcv(struct sk_buff *skb)
249 */ 249 */
250 sctp_bh_lock_sock(sk); 250 sctp_bh_lock_sock(sk);
251 251
252 if (sk != rcvr->sk) {
253 /* Our cached sk is different from the rcvr->sk. This is
254 * because migrate()/accept() may have moved the association
255 * to a new socket and released all the sockets. So now we
256 * are holding a lock on the old socket while the user may
257 * be doing something with the new socket. Switch our veiw
258 * of the current sk.
259 */
260 sctp_bh_unlock_sock(sk);
261 sk = rcvr->sk;
262 sctp_bh_lock_sock(sk);
263 }
264
252 if (sock_owned_by_user(sk)) { 265 if (sock_owned_by_user(sk)) {
253 SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG); 266 SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG);
254 sctp_add_backlog(sk, skb); 267 sctp_add_backlog(sk, skb);
diff --git a/net/sctp/output.c b/net/sctp/output.c
index c3f417f7ec6e..73639355157e 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -324,14 +324,16 @@ append:
324 switch (chunk->chunk_hdr->type) { 324 switch (chunk->chunk_hdr->type) {
325 case SCTP_CID_DATA: 325 case SCTP_CID_DATA:
326 retval = sctp_packet_append_data(packet, chunk); 326 retval = sctp_packet_append_data(packet, chunk);
327 if (SCTP_XMIT_OK != retval)
328 goto finish;
327 /* Disallow SACK bundling after DATA. */ 329 /* Disallow SACK bundling after DATA. */
328 packet->has_sack = 1; 330 packet->has_sack = 1;
329 /* Disallow AUTH bundling after DATA */ 331 /* Disallow AUTH bundling after DATA */
330 packet->has_auth = 1; 332 packet->has_auth = 1;
331 /* Let it be knows that packet has DATA in it */ 333 /* Let it be knows that packet has DATA in it */
332 packet->has_data = 1; 334 packet->has_data = 1;
333 if (SCTP_XMIT_OK != retval) 335 /* timestamp the chunk for rtx purposes */
334 goto finish; 336 chunk->sent_at = jiffies;
335 break; 337 break;
336 case SCTP_CID_COOKIE_ECHO: 338 case SCTP_CID_COOKIE_ECHO:
337 packet->has_cookie_echo = 1; 339 packet->has_cookie_echo = 1;
@@ -470,7 +472,6 @@ int sctp_packet_transmit(struct sctp_packet *packet)
470 } else 472 } else
471 chunk->resent = 1; 473 chunk->resent = 1;
472 474
473 chunk->sent_at = jiffies;
474 has_data = 1; 475 has_data = 1;
475 } 476 }
476 477
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index 247ebc95c1e5..bc411c896216 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -929,7 +929,6 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout)
929 } 929 }
930 930
931 /* Finally, transmit new packets. */ 931 /* Finally, transmit new packets. */
932 start_timer = 0;
933 while ((chunk = sctp_outq_dequeue_data(q)) != NULL) { 932 while ((chunk = sctp_outq_dequeue_data(q)) != NULL) {
934 /* RFC 2960 6.5 Every DATA chunk MUST carry a valid 933 /* RFC 2960 6.5 Every DATA chunk MUST carry a valid
935 * stream identifier. 934 * stream identifier.
@@ -1028,7 +1027,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout)
1028 list_add_tail(&chunk->transmitted_list, 1027 list_add_tail(&chunk->transmitted_list,
1029 &transport->transmitted); 1028 &transport->transmitted);
1030 1029
1031 sctp_transport_reset_timers(transport, start_timer-1); 1030 sctp_transport_reset_timers(transport, 0);
1032 1031
1033 q->empty = 0; 1032 q->empty = 0;
1034 1033
diff --git a/net/socket.c b/net/socket.c
index 06603d73c411..35dd7371752a 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -1214,7 +1214,7 @@ int sock_create_kern(int family, int type, int protocol, struct socket **res)
1214 return __sock_create(&init_net, family, type, protocol, res, 1); 1214 return __sock_create(&init_net, family, type, protocol, res, 1);
1215} 1215}
1216 1216
1217asmlinkage long sys_socket(int family, int type, int protocol) 1217SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
1218{ 1218{
1219 int retval; 1219 int retval;
1220 struct socket *sock; 1220 struct socket *sock;
@@ -1255,8 +1255,8 @@ out_release:
1255 * Create a pair of connected sockets. 1255 * Create a pair of connected sockets.
1256 */ 1256 */
1257 1257
1258asmlinkage long sys_socketpair(int family, int type, int protocol, 1258SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,
1259 int __user *usockvec) 1259 int __user *, usockvec)
1260{ 1260{
1261 struct socket *sock1, *sock2; 1261 struct socket *sock1, *sock2;
1262 int fd1, fd2, err; 1262 int fd1, fd2, err;
@@ -1356,7 +1356,7 @@ out_fd1:
1356 * the protocol layer (having also checked the address is ok). 1356 * the protocol layer (having also checked the address is ok).
1357 */ 1357 */
1358 1358
1359asmlinkage long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen) 1359SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
1360{ 1360{
1361 struct socket *sock; 1361 struct socket *sock;
1362 struct sockaddr_storage address; 1362 struct sockaddr_storage address;
@@ -1385,7 +1385,7 @@ asmlinkage long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
1385 * ready for listening. 1385 * ready for listening.
1386 */ 1386 */
1387 1387
1388asmlinkage long sys_listen(int fd, int backlog) 1388SYSCALL_DEFINE2(listen, int, fd, int, backlog)
1389{ 1389{
1390 struct socket *sock; 1390 struct socket *sock;
1391 int err, fput_needed; 1391 int err, fput_needed;
@@ -1418,8 +1418,8 @@ asmlinkage long sys_listen(int fd, int backlog)
1418 * clean when we restucture accept also. 1418 * clean when we restucture accept also.
1419 */ 1419 */
1420 1420
1421asmlinkage long sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr, 1421SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
1422 int __user *upeer_addrlen, int flags) 1422 int __user *, upeer_addrlen, int, flags)
1423{ 1423{
1424 struct socket *sock, *newsock; 1424 struct socket *sock, *newsock;
1425 struct file *newfile; 1425 struct file *newfile;
@@ -1502,8 +1502,8 @@ out_fd:
1502 goto out_put; 1502 goto out_put;
1503} 1503}
1504 1504
1505asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr, 1505SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr,
1506 int __user *upeer_addrlen) 1506 int __user *, upeer_addrlen)
1507{ 1507{
1508 return sys_accept4(fd, upeer_sockaddr, upeer_addrlen, 0); 1508 return sys_accept4(fd, upeer_sockaddr, upeer_addrlen, 0);
1509} 1509}
@@ -1520,8 +1520,8 @@ asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr,
1520 * include the -EINPROGRESS status for such sockets. 1520 * include the -EINPROGRESS status for such sockets.
1521 */ 1521 */
1522 1522
1523asmlinkage long sys_connect(int fd, struct sockaddr __user *uservaddr, 1523SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr,
1524 int addrlen) 1524 int, addrlen)
1525{ 1525{
1526 struct socket *sock; 1526 struct socket *sock;
1527 struct sockaddr_storage address; 1527 struct sockaddr_storage address;
@@ -1552,8 +1552,8 @@ out:
1552 * name to user space. 1552 * name to user space.
1553 */ 1553 */
1554 1554
1555asmlinkage long sys_getsockname(int fd, struct sockaddr __user *usockaddr, 1555SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr,
1556 int __user *usockaddr_len) 1556 int __user *, usockaddr_len)
1557{ 1557{
1558 struct socket *sock; 1558 struct socket *sock;
1559 struct sockaddr_storage address; 1559 struct sockaddr_storage address;
@@ -1583,8 +1583,8 @@ out:
1583 * name to user space. 1583 * name to user space.
1584 */ 1584 */
1585 1585
1586asmlinkage long sys_getpeername(int fd, struct sockaddr __user *usockaddr, 1586SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr,
1587 int __user *usockaddr_len) 1587 int __user *, usockaddr_len)
1588{ 1588{
1589 struct socket *sock; 1589 struct socket *sock;
1590 struct sockaddr_storage address; 1590 struct sockaddr_storage address;
@@ -1615,9 +1615,9 @@ asmlinkage long sys_getpeername(int fd, struct sockaddr __user *usockaddr,
1615 * the protocol. 1615 * the protocol.
1616 */ 1616 */
1617 1617
1618asmlinkage long sys_sendto(int fd, void __user *buff, size_t len, 1618SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
1619 unsigned flags, struct sockaddr __user *addr, 1619 unsigned, flags, struct sockaddr __user *, addr,
1620 int addr_len) 1620 int, addr_len)
1621{ 1621{
1622 struct socket *sock; 1622 struct socket *sock;
1623 struct sockaddr_storage address; 1623 struct sockaddr_storage address;
@@ -1660,7 +1660,8 @@ out:
1660 * Send a datagram down a socket. 1660 * Send a datagram down a socket.
1661 */ 1661 */
1662 1662
1663asmlinkage long sys_send(int fd, void __user *buff, size_t len, unsigned flags) 1663SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len,
1664 unsigned, flags)
1664{ 1665{
1665 return sys_sendto(fd, buff, len, flags, NULL, 0); 1666 return sys_sendto(fd, buff, len, flags, NULL, 0);
1666} 1667}
@@ -1671,9 +1672,9 @@ asmlinkage long sys_send(int fd, void __user *buff, size_t len, unsigned flags)
1671 * sender address from kernel to user space. 1672 * sender address from kernel to user space.
1672 */ 1673 */
1673 1674
1674asmlinkage long sys_recvfrom(int fd, void __user *ubuf, size_t size, 1675SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
1675 unsigned flags, struct sockaddr __user *addr, 1676 unsigned, flags, struct sockaddr __user *, addr,
1676 int __user *addr_len) 1677 int __user *, addr_len)
1677{ 1678{
1678 struct socket *sock; 1679 struct socket *sock;
1679 struct iovec iov; 1680 struct iovec iov;
@@ -1725,8 +1726,8 @@ asmlinkage long sys_recv(int fd, void __user *ubuf, size_t size,
1725 * to pass the user mode parameter for the protocols to sort out. 1726 * to pass the user mode parameter for the protocols to sort out.
1726 */ 1727 */
1727 1728
1728asmlinkage long sys_setsockopt(int fd, int level, int optname, 1729SYSCALL_DEFINE5(setsockopt, int, fd, int, level, int, optname,
1729 char __user *optval, int optlen) 1730 char __user *, optval, int, optlen)
1730{ 1731{
1731 int err, fput_needed; 1732 int err, fput_needed;
1732 struct socket *sock; 1733 struct socket *sock;
@@ -1759,8 +1760,8 @@ out_put:
1759 * to pass a user mode parameter for the protocols to sort out. 1760 * to pass a user mode parameter for the protocols to sort out.
1760 */ 1761 */
1761 1762
1762asmlinkage long sys_getsockopt(int fd, int level, int optname, 1763SYSCALL_DEFINE5(getsockopt, int, fd, int, level, int, optname,
1763 char __user *optval, int __user *optlen) 1764 char __user *, optval, int __user *, optlen)
1764{ 1765{
1765 int err, fput_needed; 1766 int err, fput_needed;
1766 struct socket *sock; 1767 struct socket *sock;
@@ -1789,7 +1790,7 @@ out_put:
1789 * Shutdown a socket. 1790 * Shutdown a socket.
1790 */ 1791 */
1791 1792
1792asmlinkage long sys_shutdown(int fd, int how) 1793SYSCALL_DEFINE2(shutdown, int, fd, int, how)
1793{ 1794{
1794 int err, fput_needed; 1795 int err, fput_needed;
1795 struct socket *sock; 1796 struct socket *sock;
@@ -1815,7 +1816,7 @@ asmlinkage long sys_shutdown(int fd, int how)
1815 * BSD sendmsg interface 1816 * BSD sendmsg interface
1816 */ 1817 */
1817 1818
1818asmlinkage long sys_sendmsg(int fd, struct msghdr __user *msg, unsigned flags) 1819SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned, flags)
1819{ 1820{
1820 struct compat_msghdr __user *msg_compat = 1821 struct compat_msghdr __user *msg_compat =
1821 (struct compat_msghdr __user *)msg; 1822 (struct compat_msghdr __user *)msg;
@@ -1921,8 +1922,8 @@ out:
1921 * BSD recvmsg interface 1922 * BSD recvmsg interface
1922 */ 1923 */
1923 1924
1924asmlinkage long sys_recvmsg(int fd, struct msghdr __user *msg, 1925SYSCALL_DEFINE3(recvmsg, int, fd, struct msghdr __user *, msg,
1925 unsigned int flags) 1926 unsigned int, flags)
1926{ 1927{
1927 struct compat_msghdr __user *msg_compat = 1928 struct compat_msghdr __user *msg_compat =
1928 (struct compat_msghdr __user *)msg; 1929 (struct compat_msghdr __user *)msg;
@@ -2045,7 +2046,7 @@ static const unsigned char nargs[19]={
2045 * it is set by the callees. 2046 * it is set by the callees.
2046 */ 2047 */
2047 2048
2048asmlinkage long sys_socketcall(int call, unsigned long __user *args) 2049SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args)
2049{ 2050{
2050 unsigned long a[6]; 2051 unsigned long a[6];
2051 unsigned long a0, a1; 2052 unsigned long a0, a1;
diff --git a/net/sunrpc/Kconfig b/net/sunrpc/Kconfig
new file mode 100644
index 000000000000..eda4a7aee596
--- /dev/null
+++ b/net/sunrpc/Kconfig
@@ -0,0 +1,79 @@
1config SUNRPC
2 tristate
3
4config SUNRPC_GSS
5 tristate
6
7config SUNRPC_XPRT_RDMA
8 tristate
9 depends on SUNRPC && INFINIBAND && EXPERIMENTAL
10 default SUNRPC && INFINIBAND
11 help
12 This option enables an RPC client transport capability that
13 allows the NFS client to mount servers via an RDMA-enabled
14 transport.
15
16 To compile RPC client RDMA transport support as a module,
17 choose M here: the module will be called xprtrdma.
18
19 If unsure, say N.
20
21config SUNRPC_REGISTER_V4
22 bool "Register local RPC services via rpcbind v4 (EXPERIMENTAL)"
23 depends on SUNRPC && EXPERIMENTAL
24 default n
25 help
26 Sun added support for registering RPC services at an IPv6
27 address by creating two new versions of the rpcbind protocol
28 (RFC 1833).
29
30 This option enables support in the kernel RPC server for
31 registering kernel RPC services via version 4 of the rpcbind
32 protocol. If you enable this option, you must run a portmapper
33 daemon that supports rpcbind protocol version 4.
34
35 Serving NFS over IPv6 from knfsd (the kernel's NFS server)
36 requires that you enable this option and use a portmapper that
37 supports rpcbind version 4.
38
39 If unsure, say N to get traditional behavior (register kernel
40 RPC services using only rpcbind version 2). Distributions
41 using the legacy Linux portmapper daemon must say N here.
42
43config RPCSEC_GSS_KRB5
44 tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)"
45 depends on SUNRPC && EXPERIMENTAL
46 select SUNRPC_GSS
47 select CRYPTO
48 select CRYPTO_MD5
49 select CRYPTO_DES
50 select CRYPTO_CBC
51 help
52 Choose Y here to enable Secure RPC using the Kerberos version 5
53 GSS-API mechanism (RFC 1964).
54
55 Secure RPC calls with Kerberos require an auxiliary user-space
56 daemon which may be found in the Linux nfs-utils package
57 available from http://linux-nfs.org/. In addition, user-space
58 Kerberos support should be installed.
59
60 If unsure, say N.
61
62config RPCSEC_GSS_SPKM3
63 tristate "Secure RPC: SPKM3 mechanism (EXPERIMENTAL)"
64 depends on SUNRPC && EXPERIMENTAL
65 select SUNRPC_GSS
66 select CRYPTO
67 select CRYPTO_MD5
68 select CRYPTO_DES
69 select CRYPTO_CAST5
70 select CRYPTO_CBC
71 help
72 Choose Y here to enable Secure RPC using the SPKM3 public key
73 GSS-API mechansim (RFC 2025).
74
75 Secure RPC calls with SPKM3 require an auxiliary userspace
76 daemon which may be found in the Linux nfs-utils package
77 available from http://linux-nfs.org/.
78
79 If unsure, say N.
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 4f877535e666..bc494cef2102 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -421,6 +421,31 @@ static u32 freq_max_bandwidth(const struct ieee80211_freq_range *freq_range,
421 return 0; 421 return 0;
422} 422}
423 423
424/**
425 * freq_in_rule_band - tells us if a frequency is in a frequency band
426 * @freq_range: frequency rule we want to query
427 * @freq_khz: frequency we are inquiring about
428 *
429 * This lets us know if a specific frequency rule is or is not relevant to
430 * a specific frequency's band. Bands are device specific and artificial
431 * definitions (the "2.4 GHz band" and the "5 GHz band"), however it is
432 * safe for now to assume that a frequency rule should not be part of a
433 * frequency's band if the start freq or end freq are off by more than 2 GHz.
434 * This resolution can be lowered and should be considered as we add
435 * regulatory rule support for other "bands".
436 **/
437static bool freq_in_rule_band(const struct ieee80211_freq_range *freq_range,
438 u32 freq_khz)
439{
440#define ONE_GHZ_IN_KHZ 1000000
441 if (abs(freq_khz - freq_range->start_freq_khz) <= (2 * ONE_GHZ_IN_KHZ))
442 return true;
443 if (abs(freq_khz - freq_range->end_freq_khz) <= (2 * ONE_GHZ_IN_KHZ))
444 return true;
445 return false;
446#undef ONE_GHZ_IN_KHZ
447}
448
424/* Converts a country IE to a regulatory domain. A regulatory domain 449/* Converts a country IE to a regulatory domain. A regulatory domain
425 * structure has a lot of information which the IE doesn't yet have, 450 * structure has a lot of information which the IE doesn't yet have,
426 * so for the other values we use upper max values as we will intersect 451 * so for the other values we use upper max values as we will intersect
@@ -538,6 +563,7 @@ static struct ieee80211_regdomain *country_ie_2_rd(
538 563
539 /* This time around we fill in the rd */ 564 /* This time around we fill in the rd */
540 while (country_ie_len >= 3) { 565 while (country_ie_len >= 3) {
566 int end_channel = 0;
541 struct ieee80211_country_ie_triplet *triplet = 567 struct ieee80211_country_ie_triplet *triplet =
542 (struct ieee80211_country_ie_triplet *) country_ie; 568 (struct ieee80211_country_ie_triplet *) country_ie;
543 struct ieee80211_reg_rule *reg_rule = NULL; 569 struct ieee80211_reg_rule *reg_rule = NULL;
@@ -559,6 +585,23 @@ static struct ieee80211_regdomain *country_ie_2_rd(
559 585
560 reg_rule->flags = flags; 586 reg_rule->flags = flags;
561 587
588 /* 2 GHz */
589 if (triplet->chans.first_channel <= 14)
590 end_channel = triplet->chans.first_channel +
591 triplet->chans.num_channels;
592 else
593 /*
594 * 5 GHz -- For example in country IEs if the first
595 * channel given is 36 and the number of channels is 4
596 * then the individual channel numbers defined for the
597 * 5 GHz PHY by these parameters are: 36, 40, 44, and 48
598 * and not 36, 37, 38, 39.
599 *
600 * See: http://tinyurl.com/11d-clarification
601 */
602 end_channel = triplet->chans.first_channel +
603 (4 * (triplet->chans.num_channels - 1));
604
562 /* The +10 is since the regulatory domain expects 605 /* The +10 is since the regulatory domain expects
563 * the actual band edge, not the center of freq for 606 * the actual band edge, not the center of freq for
564 * its start and end freqs, assuming 20 MHz bandwidth on 607 * its start and end freqs, assuming 20 MHz bandwidth on
@@ -568,8 +611,7 @@ static struct ieee80211_regdomain *country_ie_2_rd(
568 triplet->chans.first_channel) - 10); 611 triplet->chans.first_channel) - 10);
569 freq_range->end_freq_khz = 612 freq_range->end_freq_khz =
570 MHZ_TO_KHZ(ieee80211_channel_to_frequency( 613 MHZ_TO_KHZ(ieee80211_channel_to_frequency(
571 triplet->chans.first_channel + 614 end_channel) + 10);
572 triplet->chans.num_channels) + 10);
573 615
574 /* Large arbitrary values, we intersect later */ 616 /* Large arbitrary values, we intersect later */
575 /* Increment this if we ever support >= 40 MHz channels 617 /* Increment this if we ever support >= 40 MHz channels
@@ -748,12 +790,23 @@ static u32 map_regdom_flags(u32 rd_flags)
748 * this value to the maximum allowed bandwidth. 790 * this value to the maximum allowed bandwidth.
749 * @reg_rule: the regulatory rule which we have for this frequency 791 * @reg_rule: the regulatory rule which we have for this frequency
750 * 792 *
751 * Use this function to get the regulatory rule for a specific frequency. 793 * Use this function to get the regulatory rule for a specific frequency on
794 * a given wireless device. If the device has a specific regulatory domain
795 * it wants to follow we respect that unless a country IE has been received
796 * and processed already.
797 *
798 * Returns 0 if it was able to find a valid regulatory rule which does
799 * apply to the given center_freq otherwise it returns non-zero. It will
800 * also return -ERANGE if we determine the given center_freq does not even have
801 * a regulatory rule for a frequency range in the center_freq's band. See
802 * freq_in_rule_band() for our current definition of a band -- this is purely
803 * subjective and right now its 802.11 specific.
752 */ 804 */
753static int freq_reg_info(u32 center_freq, u32 *bandwidth, 805static int freq_reg_info(u32 center_freq, u32 *bandwidth,
754 const struct ieee80211_reg_rule **reg_rule) 806 const struct ieee80211_reg_rule **reg_rule)
755{ 807{
756 int i; 808 int i;
809 bool band_rule_found = false;
757 u32 max_bandwidth = 0; 810 u32 max_bandwidth = 0;
758 811
759 if (!cfg80211_regdomain) 812 if (!cfg80211_regdomain)
@@ -767,7 +820,15 @@ static int freq_reg_info(u32 center_freq, u32 *bandwidth,
767 rr = &cfg80211_regdomain->reg_rules[i]; 820 rr = &cfg80211_regdomain->reg_rules[i];
768 fr = &rr->freq_range; 821 fr = &rr->freq_range;
769 pr = &rr->power_rule; 822 pr = &rr->power_rule;
823
824 /* We only need to know if one frequency rule was
825 * was in center_freq's band, that's enough, so lets
826 * not overwrite it once found */
827 if (!band_rule_found)
828 band_rule_found = freq_in_rule_band(fr, center_freq);
829
770 max_bandwidth = freq_max_bandwidth(fr, center_freq); 830 max_bandwidth = freq_max_bandwidth(fr, center_freq);
831
771 if (max_bandwidth && *bandwidth <= max_bandwidth) { 832 if (max_bandwidth && *bandwidth <= max_bandwidth) {
772 *reg_rule = rr; 833 *reg_rule = rr;
773 *bandwidth = max_bandwidth; 834 *bandwidth = max_bandwidth;
@@ -775,23 +836,64 @@ static int freq_reg_info(u32 center_freq, u32 *bandwidth,
775 } 836 }
776 } 837 }
777 838
839 if (!band_rule_found)
840 return -ERANGE;
841
778 return !max_bandwidth; 842 return !max_bandwidth;
779} 843}
780 844
781static void handle_channel(struct ieee80211_channel *chan) 845static void handle_channel(struct wiphy *wiphy, enum ieee80211_band band,
846 unsigned int chan_idx)
782{ 847{
783 int r; 848 int r;
784 u32 flags = chan->orig_flags; 849 u32 flags;
785 u32 max_bandwidth = 0; 850 u32 max_bandwidth = 0;
786 const struct ieee80211_reg_rule *reg_rule = NULL; 851 const struct ieee80211_reg_rule *reg_rule = NULL;
787 const struct ieee80211_power_rule *power_rule = NULL; 852 const struct ieee80211_power_rule *power_rule = NULL;
853 struct ieee80211_supported_band *sband;
854 struct ieee80211_channel *chan;
855
856 sband = wiphy->bands[band];
857 BUG_ON(chan_idx >= sband->n_channels);
858 chan = &sband->channels[chan_idx];
859
860 flags = chan->orig_flags;
788 861
789 r = freq_reg_info(MHZ_TO_KHZ(chan->center_freq), 862 r = freq_reg_info(MHZ_TO_KHZ(chan->center_freq),
790 &max_bandwidth, &reg_rule); 863 &max_bandwidth, &reg_rule);
791 864
792 if (r) { 865 if (r) {
793 flags |= IEEE80211_CHAN_DISABLED; 866 /* This means no regulatory rule was found in the country IE
794 chan->flags = flags; 867 * with a frequency range on the center_freq's band, since
868 * IEEE-802.11 allows for a country IE to have a subset of the
869 * regulatory information provided in a country we ignore
870 * disabling the channel unless at least one reg rule was
871 * found on the center_freq's band. For details see this
872 * clarification:
873 *
874 * http://tinyurl.com/11d-clarification
875 */
876 if (r == -ERANGE &&
877 last_request->initiator == REGDOM_SET_BY_COUNTRY_IE) {
878#ifdef CONFIG_CFG80211_REG_DEBUG
879 printk(KERN_DEBUG "cfg80211: Leaving channel %d MHz "
880 "intact on %s - no rule found in band on "
881 "Country IE\n",
882 chan->center_freq, wiphy_name(wiphy));
883#endif
884 } else {
885 /* In this case we know the country IE has at least one reg rule
886 * for the band so we respect its band definitions */
887#ifdef CONFIG_CFG80211_REG_DEBUG
888 if (last_request->initiator == REGDOM_SET_BY_COUNTRY_IE)
889 printk(KERN_DEBUG "cfg80211: Disabling "
890 "channel %d MHz on %s due to "
891 "Country IE\n",
892 chan->center_freq, wiphy_name(wiphy));
893#endif
894 flags |= IEEE80211_CHAN_DISABLED;
895 chan->flags = flags;
896 }
795 return; 897 return;
796 } 898 }
797 899
@@ -808,12 +910,16 @@ static void handle_channel(struct ieee80211_channel *chan)
808 chan->max_power = (int) MBM_TO_DBM(power_rule->max_eirp); 910 chan->max_power = (int) MBM_TO_DBM(power_rule->max_eirp);
809} 911}
810 912
811static void handle_band(struct ieee80211_supported_band *sband) 913static void handle_band(struct wiphy *wiphy, enum ieee80211_band band)
812{ 914{
813 int i; 915 unsigned int i;
916 struct ieee80211_supported_band *sband;
917
918 BUG_ON(!wiphy->bands[band]);
919 sband = wiphy->bands[band];
814 920
815 for (i = 0; i < sband->n_channels; i++) 921 for (i = 0; i < sband->n_channels; i++)
816 handle_channel(&sband->channels[i]); 922 handle_channel(wiphy, band, i);
817} 923}
818 924
819static bool ignore_reg_update(struct wiphy *wiphy, enum reg_set_by setby) 925static bool ignore_reg_update(struct wiphy *wiphy, enum reg_set_by setby)
@@ -840,7 +946,7 @@ void wiphy_update_regulatory(struct wiphy *wiphy, enum reg_set_by setby)
840 enum ieee80211_band band; 946 enum ieee80211_band band;
841 for (band = 0; band < IEEE80211_NUM_BANDS; band++) { 947 for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
842 if (wiphy->bands[band]) 948 if (wiphy->bands[band])
843 handle_band(wiphy->bands[band]); 949 handle_band(wiphy, band);
844 if (wiphy->reg_notifier) 950 if (wiphy->reg_notifier)
845 wiphy->reg_notifier(wiphy, setby); 951 wiphy->reg_notifier(wiphy, setby);
846 } 952 }
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7bed4ed2c519..45eb0ae98eba 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -10,7 +10,7 @@ use strict;
10my $P = $0; 10my $P = $0;
11$P =~ s@.*/@@g; 11$P =~ s@.*/@@g;
12 12
13my $V = '0.26'; 13my $V = '0.27';
14 14
15use Getopt::Long qw(:config no_auto_abbrev); 15use Getopt::Long qw(:config no_auto_abbrev);
16 16
@@ -411,13 +411,15 @@ sub ctx_statement_block {
411 411
412 my $type = ''; 412 my $type = '';
413 my $level = 0; 413 my $level = 0;
414 my @stack = ([$type, $level]); 414 my @stack = ();
415 my $p; 415 my $p;
416 my $c; 416 my $c;
417 my $len = 0; 417 my $len = 0;
418 418
419 my $remainder; 419 my $remainder;
420 while (1) { 420 while (1) {
421 @stack = (['', 0]) if ($#stack == -1);
422
421 #warn "CSB: blk<$blk> remain<$remain>\n"; 423 #warn "CSB: blk<$blk> remain<$remain>\n";
422 # If we are about to drop off the end, pull in more 424 # If we are about to drop off the end, pull in more
423 # context. 425 # context.
@@ -1663,7 +1665,7 @@ sub process {
1663 # Should not end with a space. 1665 # Should not end with a space.
1664 $to =~ s/\s+$//; 1666 $to =~ s/\s+$//;
1665 # '*'s should not have spaces between. 1667 # '*'s should not have spaces between.
1666 while ($to =~ s/(.)\s\*/$1\*/) { 1668 while ($to =~ s/\*\s+\*/\*\*/) {
1667 } 1669 }
1668 1670
1669 #print "from<$from> to<$to>\n"; 1671 #print "from<$from> to<$to>\n";
@@ -1678,7 +1680,7 @@ sub process {
1678 # Should not end with a space. 1680 # Should not end with a space.
1679 $to =~ s/\s+$//; 1681 $to =~ s/\s+$//;
1680 # '*'s should not have spaces between. 1682 # '*'s should not have spaces between.
1681 while ($to =~ s/(.)\s\*/$1\*/) { 1683 while ($to =~ s/\*\s+\*/\*\*/) {
1682 } 1684 }
1683 # Modifiers should have spaces. 1685 # Modifiers should have spaces.
1684 $to =~ s/(\b$Modifier$)/$1 /; 1686 $to =~ s/(\b$Modifier$)/$1 /;
@@ -2014,7 +2016,11 @@ sub process {
2014 2016
2015 # Flatten any parentheses 2017 # Flatten any parentheses
2016 $value =~ s/\)\(/\) \(/g; 2018 $value =~ s/\)\(/\) \(/g;
2017 while ($value !~ /(?:$Ident|-?$Constant)\s*$Compare\s*(?:$Ident|-?$Constant)/ && $value =~ s/\([^\(\)]*\)/1/) { 2019 while ($value =~ s/\[[^\{\}]*\]/1/ ||
2020 $value !~ /(?:$Ident|-?$Constant)\s*
2021 $Compare\s*
2022 (?:$Ident|-?$Constant)/x &&
2023 $value =~ s/\([^\(\)]*\)/1/) {
2018 } 2024 }
2019 2025
2020 if ($value =~ /^(?:$Ident|-?$Constant)$/) { 2026 if ($value =~ /^(?:$Ident|-?$Constant)$/) {
@@ -2102,6 +2108,11 @@ sub process {
2102 ERROR("trailing statements should be on next line\n" . $herecurr); 2108 ERROR("trailing statements should be on next line\n" . $herecurr);
2103 } 2109 }
2104 } 2110 }
2111# if should not continue a brace
2112 if ($line =~ /}\s*if\b/) {
2113 ERROR("trailing statements should be on next line\n" .
2114 $herecurr);
2115 }
2105# case and default should not have general statements after them 2116# case and default should not have general statements after them
2106 if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g && 2117 if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g &&
2107 $line !~ /\G(?: 2118 $line !~ /\G(?:
@@ -2516,9 +2527,10 @@ sub process {
2516 WARN("please use device_initcall() instead of __initcall()\n" . $herecurr); 2527 WARN("please use device_initcall() instead of __initcall()\n" . $herecurr);
2517 } 2528 }
2518# check for struct file_operations, ensure they are const. 2529# check for struct file_operations, ensure they are const.
2519 if ($line =~ /\bstruct\s+file_operations\b/ && 2530 if ($line !~ /\bconst\b/ &&
2520 $line !~ /\bconst\b/) { 2531 $line =~ /\bstruct\s+(file_operations|seq_operations)\b/) {
2521 WARN("struct file_operations should normally be const\n" . $herecurr); 2532 WARN("struct $1 should normally be const\n" .
2533 $herecurr);
2522 } 2534 }
2523 2535
2524# use of NR_CPUS is usually wrong 2536# use of NR_CPUS is usually wrong
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index d4dc222a74f3..491b8b1b6abf 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -366,11 +366,17 @@ static void do_pnp_device_entry(void *symval, unsigned long size,
366 366
367 for (i = 0; i < count; i++) { 367 for (i = 0; i < count; i++) {
368 const char *id = (char *)devs[i].id; 368 const char *id = (char *)devs[i].id;
369 char acpi_id[sizeof(devs[0].id)];
370 int j;
369 371
370 buf_printf(&mod->dev_table_buf, 372 buf_printf(&mod->dev_table_buf,
371 "MODULE_ALIAS(\"pnp:d%s*\");\n", id); 373 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
374
375 /* fix broken pnp bus lowercasing */
376 for (j = 0; j < sizeof(acpi_id); j++)
377 acpi_id[j] = toupper(id[j]);
372 buf_printf(&mod->dev_table_buf, 378 buf_printf(&mod->dev_table_buf,
373 "MODULE_ALIAS(\"acpi*:%s:*\");\n", id); 379 "MODULE_ALIAS(\"acpi*:%s:*\");\n", acpi_id);
374 } 380 }
375} 381}
376 382
@@ -416,10 +422,17 @@ static void do_pnp_card_entries(void *symval, unsigned long size,
416 422
417 /* add an individual alias for every device entry */ 423 /* add an individual alias for every device entry */
418 if (!dup) { 424 if (!dup) {
425 char acpi_id[sizeof(card->devs[0].id)];
426 int k;
427
419 buf_printf(&mod->dev_table_buf, 428 buf_printf(&mod->dev_table_buf,
420 "MODULE_ALIAS(\"pnp:d%s*\");\n", id); 429 "MODULE_ALIAS(\"pnp:d%s*\");\n", id);
430
431 /* fix broken pnp bus lowercasing */
432 for (k = 0; k < sizeof(acpi_id); k++)
433 acpi_id[k] = toupper(id[k]);
421 buf_printf(&mod->dev_table_buf, 434 buf_printf(&mod->dev_table_buf,
422 "MODULE_ALIAS(\"acpi*:%s:*\");\n", id); 435 "MODULE_ALIAS(\"acpi*:%s:*\");\n", acpi_id);
423 } 436 }
424 } 437 }
425 } 438 }
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
index 09796797d122..b1ec3b4ee17d 100644
--- a/security/keys/keyctl.c
+++ b/security/keys/keyctl.c
@@ -54,11 +54,11 @@ static int key_get_type_from_user(char *type,
54 * - returns the new key's serial number 54 * - returns the new key's serial number
55 * - implements add_key() 55 * - implements add_key()
56 */ 56 */
57asmlinkage long sys_add_key(const char __user *_type, 57SYSCALL_DEFINE5(add_key, const char __user *, _type,
58 const char __user *_description, 58 const char __user *, _description,
59 const void __user *_payload, 59 const void __user *, _payload,
60 size_t plen, 60 size_t, plen,
61 key_serial_t ringid) 61 key_serial_t, ringid)
62{ 62{
63 key_ref_t keyring_ref, key_ref; 63 key_ref_t keyring_ref, key_ref;
64 char type[32], *description; 64 char type[32], *description;
@@ -146,10 +146,10 @@ asmlinkage long sys_add_key(const char __user *_type,
146 * - if the _callout_info string is empty, it will be rendered as "-" 146 * - if the _callout_info string is empty, it will be rendered as "-"
147 * - implements request_key() 147 * - implements request_key()
148 */ 148 */
149asmlinkage long sys_request_key(const char __user *_type, 149SYSCALL_DEFINE4(request_key, const char __user *, _type,
150 const char __user *_description, 150 const char __user *, _description,
151 const char __user *_callout_info, 151 const char __user *, _callout_info,
152 key_serial_t destringid) 152 key_serial_t, destringid)
153{ 153{
154 struct key_type *ktype; 154 struct key_type *ktype;
155 struct key *key; 155 struct key *key;
@@ -270,6 +270,7 @@ long keyctl_join_session_keyring(const char __user *_name)
270 270
271 /* join the session */ 271 /* join the session */
272 ret = join_session_keyring(name); 272 ret = join_session_keyring(name);
273 kfree(name);
273 274
274 error: 275 error:
275 return ret; 276 return ret;
@@ -1216,8 +1217,8 @@ long keyctl_get_security(key_serial_t keyid,
1216/* 1217/*
1217 * the key control system call 1218 * the key control system call
1218 */ 1219 */
1219asmlinkage long sys_keyctl(int option, unsigned long arg2, unsigned long arg3, 1220SYSCALL_DEFINE5(keyctl, int, option, unsigned long, arg2, unsigned long, arg3,
1220 unsigned long arg4, unsigned long arg5) 1221 unsigned long, arg4, unsigned long, arg5)
1221{ 1222{
1222 switch (option) { 1223 switch (option) {
1223 case KEYCTL_GET_KEYRING_ID: 1224 case KEYCTL_GET_KEYRING_ID:
diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
index 6e3a1848447c..82b9bddcdcd6 100644
--- a/sound/pci/Kconfig
+++ b/sound/pci/Kconfig
@@ -744,8 +744,8 @@ config SND_VIRTUOSO
744 select SND_OXYGEN_LIB 744 select SND_OXYGEN_LIB
745 help 745 help
746 Say Y here to include support for sound cards based on the 746 Say Y here to include support for sound cards based on the
747 Asus AV100/AV200 chips, i.e., Xonar D1, DX, D2, D2X and 747 Asus AV100/AV200 chips, i.e., Xonar D1, DX, D2 and D2X.
748 HDAV1.3 (Deluxe). 748 Support for the HDAV1.3 (Deluxe) is very experimental.
749 749
750 To compile this driver as a module, choose M here: the module 750 To compile this driver as a module, choose M here: the module
751 will be called snd-virtuoso. 751 will be called snd-virtuoso.
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 3c596da2b9b5..b7bba7dc7cf1 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -2724,6 +2724,67 @@ int snd_hda_check_board_config(struct hda_codec *codec,
2724EXPORT_SYMBOL_HDA(snd_hda_check_board_config); 2724EXPORT_SYMBOL_HDA(snd_hda_check_board_config);
2725 2725
2726/** 2726/**
2727 * snd_hda_check_board_codec_sid_config - compare the current codec
2728 subsystem ID with the
2729 config table
2730
2731 This is important for Gateway notebooks with SB450 HDA Audio
2732 where the vendor ID of the PCI device is:
2733 ATI Technologies Inc SB450 HDA Audio [1002:437b]
2734 and the vendor/subvendor are found only at the codec.
2735
2736 * @codec: the HDA codec
2737 * @num_configs: number of config enums
2738 * @models: array of model name strings
2739 * @tbl: configuration table, terminated by null entries
2740 *
2741 * Compares the modelname or PCI subsystem id of the current codec with the
2742 * given configuration table. If a matching entry is found, returns its
2743 * config value (supposed to be 0 or positive).
2744 *
2745 * If no entries are matching, the function returns a negative value.
2746 */
2747int snd_hda_check_board_codec_sid_config(struct hda_codec *codec,
2748 int num_configs, const char **models,
2749 const struct snd_pci_quirk *tbl)
2750{
2751 const struct snd_pci_quirk *q;
2752
2753 /* Search for codec ID */
2754 for (q = tbl; q->subvendor; q++) {
2755 unsigned long vendorid = (q->subdevice) | (q->subvendor << 16);
2756
2757 if (vendorid == codec->subsystem_id)
2758 break;
2759 }
2760
2761 if (!q->subvendor)
2762 return -1;
2763
2764 tbl = q;
2765
2766 if (tbl->value >= 0 && tbl->value < num_configs) {
2767#ifdef CONFIG_SND_DEBUG_DETECT
2768 char tmp[10];
2769 const char *model = NULL;
2770 if (models)
2771 model = models[tbl->value];
2772 if (!model) {
2773 sprintf(tmp, "#%d", tbl->value);
2774 model = tmp;
2775 }
2776 snd_printdd(KERN_INFO "hda_codec: model '%s' is selected "
2777 "for config %x:%x (%s)\n",
2778 model, tbl->subvendor, tbl->subdevice,
2779 (tbl->name ? tbl->name : "Unknown device"));
2780#endif
2781 return tbl->value;
2782 }
2783 return -1;
2784}
2785EXPORT_SYMBOL_HDA(snd_hda_check_board_codec_sid_config);
2786
2787/**
2727 * snd_hda_add_new_ctls - create controls from the array 2788 * snd_hda_add_new_ctls - create controls from the array
2728 * @codec: the HDA codec 2789 * @codec: the HDA codec
2729 * @knew: the array of struct snd_kcontrol_new 2790 * @knew: the array of struct snd_kcontrol_new
@@ -2815,7 +2876,7 @@ void snd_hda_power_down(struct hda_codec *codec)
2815 return; 2876 return;
2816 if (power_save(codec)) { 2877 if (power_save(codec)) {
2817 codec->power_transition = 1; /* avoid reentrance */ 2878 codec->power_transition = 1; /* avoid reentrance */
2818 schedule_delayed_work(&codec->power_work, 2879 queue_delayed_work(codec->bus->workq, &codec->power_work,
2819 msecs_to_jiffies(power_save(codec) * 1000)); 2880 msecs_to_jiffies(power_save(codec) * 1000));
2820 } 2881 }
2821} 2882}
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
index 6f2fe0f9fdd8..1dd8716c387f 100644
--- a/sound/pci/hda/hda_local.h
+++ b/sound/pci/hda/hda_local.h
@@ -296,6 +296,9 @@ void snd_print_pcm_bits(int pcm, char *buf, int buflen);
296int snd_hda_check_board_config(struct hda_codec *codec, int num_configs, 296int snd_hda_check_board_config(struct hda_codec *codec, int num_configs,
297 const char **modelnames, 297 const char **modelnames,
298 const struct snd_pci_quirk *pci_list); 298 const struct snd_pci_quirk *pci_list);
299int snd_hda_check_board_codec_sid_config(struct hda_codec *codec,
300 int num_configs, const char **models,
301 const struct snd_pci_quirk *tbl);
299int snd_hda_add_new_ctls(struct hda_codec *codec, 302int snd_hda_add_new_ctls(struct hda_codec *codec,
300 struct snd_kcontrol_new *knew); 303 struct snd_kcontrol_new *knew);
301 304
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c
index 96952a37d884..d57d8132a06e 100644
--- a/sound/pci/hda/patch_nvhdmi.c
+++ b/sound/pci/hda/patch_nvhdmi.c
@@ -160,6 +160,7 @@ static int patch_nvhdmi(struct hda_codec *codec)
160 */ 160 */
161static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { 161static struct hda_codec_preset snd_hda_preset_nvhdmi[] = {
162 { .id = 0x10de0002, .name = "MCP78 HDMI", .patch = patch_nvhdmi }, 162 { .id = 0x10de0002, .name = "MCP78 HDMI", .patch = patch_nvhdmi },
163 { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi },
163 { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi }, 164 { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi },
164 { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi }, 165 { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi },
165 { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi }, 166 { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi },
@@ -167,6 +168,7 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = {
167}; 168};
168 169
169MODULE_ALIAS("snd-hda-codec-id:10de0002"); 170MODULE_ALIAS("snd-hda-codec-id:10de0002");
171MODULE_ALIAS("snd-hda-codec-id:10de0006");
170MODULE_ALIAS("snd-hda-codec-id:10de0007"); 172MODULE_ALIAS("snd-hda-codec-id:10de0007");
171MODULE_ALIAS("snd-hda-codec-id:10de0067"); 173MODULE_ALIAS("snd-hda-codec-id:10de0067");
172MODULE_ALIAS("snd-hda-codec-id:10de8001"); 174MODULE_ALIAS("snd-hda-codec-id:10de8001");
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index ea4c88fe05c4..5d249a547fbf 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -8478,6 +8478,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
8478 SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_ASUS_EEE1601), 8478 SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_ASUS_EEE1601),
8479 SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG), 8479 SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG),
8480 SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), 8480 SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG),
8481 SND_PCI_QUIRK(0x1071, 0x8227, "Mitac 82801H", ALC883_MITAC),
8481 SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), 8482 SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC),
8482 SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), 8483 SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD),
8483 SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL), 8484 SND_PCI_QUIRK(0x10f1, 0x2350, "TYAN-S2350", ALC888_6ST_DELL),
@@ -8526,6 +8527,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
8526 SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66), 8527 SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66),
8527 SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL), 8528 SND_PCI_QUIRK(0x8086, 0x0001, "DG33BUC", ALC883_3ST_6ch_INTEL),
8528 SND_PCI_QUIRK(0x8086, 0x0002, "DG33FBC", ALC883_3ST_6ch_INTEL), 8529 SND_PCI_QUIRK(0x8086, 0x0002, "DG33FBC", ALC883_3ST_6ch_INTEL),
8530 SND_PCI_QUIRK(0x8086, 0x2503, "82801H", ALC883_MITAC),
8529 SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL), 8531 SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL),
8530 SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), 8532 SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch),
8531 {} 8533 {}
@@ -10573,6 +10575,7 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = {
10573 SND_PCI_QUIRK(0x10cf, 0x142d, "Fujitsu Lifebook E8410", ALC262_FUJITSU), 10575 SND_PCI_QUIRK(0x10cf, 0x142d, "Fujitsu Lifebook E8410", ALC262_FUJITSU),
10574 SND_PCI_QUIRK(0x144d, 0xc032, "Samsung Q1 Ultra", ALC262_ULTRA), 10576 SND_PCI_QUIRK(0x144d, 0xc032, "Samsung Q1 Ultra", ALC262_ULTRA),
10575 SND_PCI_QUIRK(0x144d, 0xc039, "Samsung Q1U EL", ALC262_ULTRA), 10577 SND_PCI_QUIRK(0x144d, 0xc039, "Samsung Q1U EL", ALC262_ULTRA),
10578 SND_PCI_QUIRK(0x144d, 0xc510, "Samsung Q45", ALC262_HIPPO),
10576 SND_PCI_QUIRK(0x17aa, 0x384e, "Lenovo 3000 y410", ALC262_LENOVO_3000), 10579 SND_PCI_QUIRK(0x17aa, 0x384e, "Lenovo 3000 y410", ALC262_LENOVO_3000),
10577 SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8), 10580 SND_PCI_QUIRK(0x17ff, 0x0560, "Benq ED8", ALC262_BENQ_ED8),
10578 SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", ALC262_BENQ_T31), 10581 SND_PCI_QUIRK(0x17ff, 0x058d, "Benq T31-16", ALC262_BENQ_T31),
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 35b83dc6e19e..3dd4eee70b7c 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -55,7 +55,8 @@ enum {
55 STAC_9200_DELL_M25, 55 STAC_9200_DELL_M25,
56 STAC_9200_DELL_M26, 56 STAC_9200_DELL_M26,
57 STAC_9200_DELL_M27, 57 STAC_9200_DELL_M27,
58 STAC_9200_GATEWAY, 58 STAC_9200_M4,
59 STAC_9200_M4_2,
59 STAC_9200_PANASONIC, 60 STAC_9200_PANASONIC,
60 STAC_9200_MODELS 61 STAC_9200_MODELS
61}; 62};
@@ -80,6 +81,7 @@ enum {
80 81
81enum { 82enum {
82 STAC_92HD83XXX_REF, 83 STAC_92HD83XXX_REF,
84 STAC_92HD83XXX_PWR_REF,
83 STAC_92HD83XXX_MODELS 85 STAC_92HD83XXX_MODELS
84}; 86};
85 87
@@ -89,14 +91,19 @@ enum {
89 STAC_DELL_M4_2, 91 STAC_DELL_M4_2,
90 STAC_DELL_M4_3, 92 STAC_DELL_M4_3,
91 STAC_HP_M4, 93 STAC_HP_M4,
94 STAC_HP_DV5,
92 STAC_92HD71BXX_MODELS 95 STAC_92HD71BXX_MODELS
93}; 96};
94 97
95enum { 98enum {
96 STAC_925x_REF, 99 STAC_925x_REF,
100 STAC_M1,
101 STAC_M1_2,
102 STAC_M2,
97 STAC_M2_2, 103 STAC_M2_2,
98 STAC_MA6, 104 STAC_M3,
99 STAC_PA6, 105 STAC_M5,
106 STAC_M6,
100 STAC_925x_MODELS 107 STAC_925x_MODELS
101}; 108};
102 109
@@ -328,7 +335,11 @@ static hda_nid_t stac92hd83xxx_slave_dig_outs[2] = {
328}; 335};
329 336
330static unsigned int stac92hd83xxx_pwr_mapping[4] = { 337static unsigned int stac92hd83xxx_pwr_mapping[4] = {
331 0x03, 0x0c, 0x10, 0x40, 338 0x03, 0x0c, 0x20, 0x40,
339};
340
341static hda_nid_t stac92hd83xxx_amp_nids[1] = {
342 0xc,
332}; 343};
333 344
334static hda_nid_t stac92hd71bxx_pwr_nids[3] = { 345static hda_nid_t stac92hd71bxx_pwr_nids[3] = {
@@ -831,10 +842,6 @@ static struct hda_verb stac92hd73xx_10ch_core_init[] = {
831}; 842};
832 843
833static struct hda_verb stac92hd83xxx_core_init[] = { 844static struct hda_verb stac92hd83xxx_core_init[] = {
834 /* start of config #1 */
835 { 0xe, AC_VERB_SET_CONNECT_SEL, 0x3},
836
837 /* start of config #2 */
838 { 0xa, AC_VERB_SET_CONNECT_SEL, 0x0}, 845 { 0xa, AC_VERB_SET_CONNECT_SEL, 0x0},
839 { 0xb, AC_VERB_SET_CONNECT_SEL, 0x0}, 846 { 0xb, AC_VERB_SET_CONNECT_SEL, 0x0},
840 { 0xd, AC_VERB_SET_CONNECT_SEL, 0x1}, 847 { 0xd, AC_VERB_SET_CONNECT_SEL, 0x1},
@@ -875,6 +882,8 @@ static struct hda_verb stac92hd71bxx_analog_core_init[] = {
875static struct hda_verb stac925x_core_init[] = { 882static struct hda_verb stac925x_core_init[] = {
876 /* set dac0mux for dac converter */ 883 /* set dac0mux for dac converter */
877 { 0x06, AC_VERB_SET_CONNECT_SEL, 0x00}, 884 { 0x06, AC_VERB_SET_CONNECT_SEL, 0x00},
885 /* mute the master volume */
886 { 0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE },
878 {} 887 {}
879}; 888};
880 889
@@ -1126,6 +1135,8 @@ static struct snd_kcontrol_new stac92hd71bxx_mixer[] = {
1126}; 1135};
1127 1136
1128static struct snd_kcontrol_new stac925x_mixer[] = { 1137static struct snd_kcontrol_new stac925x_mixer[] = {
1138 HDA_CODEC_VOLUME("Master Playback Volume", 0x0e, 0, HDA_OUTPUT),
1139 HDA_CODEC_MUTE("Master Playback Switch", 0x0e, 0, HDA_OUTPUT),
1129 STAC_INPUT_SOURCE(1), 1140 STAC_INPUT_SOURCE(1),
1130 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), 1141 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT),
1131 HDA_CODEC_MUTE("Capture Switch", 0x14, 0, HDA_OUTPUT), 1142 HDA_CODEC_MUTE("Capture Switch", 0x14, 0, HDA_OUTPUT),
@@ -1334,7 +1345,16 @@ static unsigned int ref9200_pin_configs[8] = {
1334 0x02a19020, 0x01a19021, 0x90100140, 0x01813122, 1345 0x02a19020, 0x01a19021, 0x90100140, 0x01813122,
1335}; 1346};
1336 1347
1337/* 1348static unsigned int gateway9200_m4_pin_configs[8] = {
1349 0x400000fe, 0x404500f4, 0x400100f0, 0x90110010,
1350 0x400100f1, 0x02a1902e, 0x500000f2, 0x500000f3,
1351};
1352static unsigned int gateway9200_m4_2_pin_configs[8] = {
1353 0x400000fe, 0x404500f4, 0x400100f0, 0x90110010,
1354 0x400100f1, 0x02a1902e, 0x500000f2, 0x500000f3,
1355};
1356
1357/*
1338 STAC 9200 pin configs for 1358 STAC 9200 pin configs for
1339 102801A8 1359 102801A8
1340 102801DE 1360 102801DE
@@ -1464,6 +1484,8 @@ static unsigned int *stac9200_brd_tbl[STAC_9200_MODELS] = {
1464 [STAC_9200_DELL_M25] = dell9200_m25_pin_configs, 1484 [STAC_9200_DELL_M25] = dell9200_m25_pin_configs,
1465 [STAC_9200_DELL_M26] = dell9200_m26_pin_configs, 1485 [STAC_9200_DELL_M26] = dell9200_m26_pin_configs,
1466 [STAC_9200_DELL_M27] = dell9200_m27_pin_configs, 1486 [STAC_9200_DELL_M27] = dell9200_m27_pin_configs,
1487 [STAC_9200_M4] = gateway9200_m4_pin_configs,
1488 [STAC_9200_M4_2] = gateway9200_m4_2_pin_configs,
1467 [STAC_9200_PANASONIC] = ref9200_pin_configs, 1489 [STAC_9200_PANASONIC] = ref9200_pin_configs,
1468}; 1490};
1469 1491
@@ -1480,7 +1502,8 @@ static const char *stac9200_models[STAC_9200_MODELS] = {
1480 [STAC_9200_DELL_M25] = "dell-m25", 1502 [STAC_9200_DELL_M25] = "dell-m25",
1481 [STAC_9200_DELL_M26] = "dell-m26", 1503 [STAC_9200_DELL_M26] = "dell-m26",
1482 [STAC_9200_DELL_M27] = "dell-m27", 1504 [STAC_9200_DELL_M27] = "dell-m27",
1483 [STAC_9200_GATEWAY] = "gateway", 1505 [STAC_9200_M4] = "gateway-m4",
1506 [STAC_9200_M4_2] = "gateway-m4-2",
1484 [STAC_9200_PANASONIC] = "panasonic", 1507 [STAC_9200_PANASONIC] = "panasonic",
1485}; 1508};
1486 1509
@@ -1550,11 +1573,9 @@ static struct snd_pci_quirk stac9200_cfg_tbl[] = {
1550 /* Panasonic */ 1573 /* Panasonic */
1551 SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-74", STAC_9200_PANASONIC), 1574 SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-74", STAC_9200_PANASONIC),
1552 /* Gateway machines needs EAPD to be set on resume */ 1575 /* Gateway machines needs EAPD to be set on resume */
1553 SND_PCI_QUIRK(0x107b, 0x0205, "Gateway S-7110M", STAC_9200_GATEWAY), 1576 SND_PCI_QUIRK(0x107b, 0x0205, "Gateway S-7110M", STAC_9200_M4),
1554 SND_PCI_QUIRK(0x107b, 0x0317, "Gateway MT3423, MX341*", 1577 SND_PCI_QUIRK(0x107b, 0x0317, "Gateway MT3423, MX341*", STAC_9200_M4_2),
1555 STAC_9200_GATEWAY), 1578 SND_PCI_QUIRK(0x107b, 0x0318, "Gateway ML3019, MT3707", STAC_9200_M4_2),
1556 SND_PCI_QUIRK(0x107b, 0x0318, "Gateway ML3019, MT3707",
1557 STAC_9200_GATEWAY),
1558 /* OQO Mobile */ 1579 /* OQO Mobile */
1559 SND_PCI_QUIRK(0x1106, 0x3288, "OQO Model 2", STAC_9200_OQO), 1580 SND_PCI_QUIRK(0x1106, 0x3288, "OQO Model 2", STAC_9200_OQO),
1560 {} /* terminator */ 1581 {} /* terminator */
@@ -1565,44 +1586,85 @@ static unsigned int ref925x_pin_configs[8] = {
1565 0x90a70320, 0x02214210, 0x01019020, 0x9033032e, 1586 0x90a70320, 0x02214210, 0x01019020, 0x9033032e,
1566}; 1587};
1567 1588
1568static unsigned int stac925x_MA6_pin_configs[8] = { 1589static unsigned int stac925xM1_pin_configs[8] = {
1569 0x40c003f0, 0x424503f2, 0x01813022, 0x02a19021, 1590 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020,
1570 0x90a70320, 0x90100211, 0x400003f1, 0x9033032e, 1591 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e,
1571}; 1592};
1572 1593
1573static unsigned int stac925x_PA6_pin_configs[8] = { 1594static unsigned int stac925xM1_2_pin_configs[8] = {
1574 0x40c003f0, 0x424503f2, 0x01813022, 0x02a19021, 1595 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020,
1575 0x50a103f0, 0x90100211, 0x400003f1, 0x9033032e, 1596 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e,
1597};
1598
1599static unsigned int stac925xM2_pin_configs[8] = {
1600 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020,
1601 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e,
1576}; 1602};
1577 1603
1578static unsigned int stac925xM2_2_pin_configs[8] = { 1604static unsigned int stac925xM2_2_pin_configs[8] = {
1579 0x40c003f3, 0x424503f2, 0x04180011, 0x02a19020, 1605 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020,
1580 0x50a103f0, 0x90100212, 0x400003f1, 0x9033032e, 1606 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e,
1607};
1608
1609static unsigned int stac925xM3_pin_configs[8] = {
1610 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020,
1611 0x40a000f0, 0x90100210, 0x400003f1, 0x503303f3,
1612};
1613
1614static unsigned int stac925xM5_pin_configs[8] = {
1615 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020,
1616 0x40a000f0, 0x90100210, 0x400003f1, 0x9033032e,
1617};
1618
1619static unsigned int stac925xM6_pin_configs[8] = {
1620 0x40c003f4, 0x424503f2, 0x400000f3, 0x02a19020,
1621 0x40a000f0, 0x90100210, 0x400003f1, 0x90330320,
1581}; 1622};
1582 1623
1583static unsigned int *stac925x_brd_tbl[STAC_925x_MODELS] = { 1624static unsigned int *stac925x_brd_tbl[STAC_925x_MODELS] = {
1584 [STAC_REF] = ref925x_pin_configs, 1625 [STAC_REF] = ref925x_pin_configs,
1626 [STAC_M1] = stac925xM1_pin_configs,
1627 [STAC_M1_2] = stac925xM1_2_pin_configs,
1628 [STAC_M2] = stac925xM2_pin_configs,
1585 [STAC_M2_2] = stac925xM2_2_pin_configs, 1629 [STAC_M2_2] = stac925xM2_2_pin_configs,
1586 [STAC_MA6] = stac925x_MA6_pin_configs, 1630 [STAC_M3] = stac925xM3_pin_configs,
1587 [STAC_PA6] = stac925x_PA6_pin_configs, 1631 [STAC_M5] = stac925xM5_pin_configs,
1632 [STAC_M6] = stac925xM6_pin_configs,
1588}; 1633};
1589 1634
1590static const char *stac925x_models[STAC_925x_MODELS] = { 1635static const char *stac925x_models[STAC_925x_MODELS] = {
1591 [STAC_REF] = "ref", 1636 [STAC_REF] = "ref",
1637 [STAC_M1] = "m1",
1638 [STAC_M1_2] = "m1-2",
1639 [STAC_M2] = "m2",
1592 [STAC_M2_2] = "m2-2", 1640 [STAC_M2_2] = "m2-2",
1593 [STAC_MA6] = "m6", 1641 [STAC_M3] = "m3",
1594 [STAC_PA6] = "pa6", 1642 [STAC_M5] = "m5",
1643 [STAC_M6] = "m6",
1644};
1645
1646static struct snd_pci_quirk stac925x_codec_id_cfg_tbl[] = {
1647 SND_PCI_QUIRK(0x107b, 0x0316, "Gateway M255", STAC_M2),
1648 SND_PCI_QUIRK(0x107b, 0x0366, "Gateway MP6954", STAC_M5),
1649 SND_PCI_QUIRK(0x107b, 0x0461, "Gateway NX560XL", STAC_M1),
1650 SND_PCI_QUIRK(0x107b, 0x0681, "Gateway NX860", STAC_M2),
1651 SND_PCI_QUIRK(0x107b, 0x0367, "Gateway MX6453", STAC_M1_2),
1652 /* Not sure about the brand name for those */
1653 SND_PCI_QUIRK(0x107b, 0x0281, "Gateway mobile", STAC_M1),
1654 SND_PCI_QUIRK(0x107b, 0x0507, "Gateway mobile", STAC_M3),
1655 SND_PCI_QUIRK(0x107b, 0x0281, "Gateway mobile", STAC_M6),
1656 SND_PCI_QUIRK(0x107b, 0x0685, "Gateway mobile", STAC_M2_2),
1657 {} /* terminator */
1595}; 1658};
1596 1659
1597static struct snd_pci_quirk stac925x_cfg_tbl[] = { 1660static struct snd_pci_quirk stac925x_cfg_tbl[] = {
1598 /* SigmaTel reference board */ 1661 /* SigmaTel reference board */
1599 SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, "DFI LanParty", STAC_REF), 1662 SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, "DFI LanParty", STAC_REF),
1600 SND_PCI_QUIRK(0x8384, 0x7632, "Stac9202 Reference Board", STAC_REF), 1663 SND_PCI_QUIRK(0x8384, 0x7632, "Stac9202 Reference Board", STAC_REF),
1601 SND_PCI_QUIRK(0x107b, 0x0316, "Gateway M255", STAC_REF), 1664
1602 SND_PCI_QUIRK(0x107b, 0x0366, "Gateway MP6954", STAC_REF), 1665 /* Default table for unknown ID */
1603 SND_PCI_QUIRK(0x107b, 0x0461, "Gateway NX560XL", STAC_MA6), 1666 SND_PCI_QUIRK(0x1002, 0x437b, "Gateway mobile", STAC_M2_2),
1604 SND_PCI_QUIRK(0x107b, 0x0681, "Gateway NX860", STAC_PA6), 1667
1605 SND_PCI_QUIRK(0x1002, 0x437b, "Gateway MX6453", STAC_M2_2),
1606 {} /* terminator */ 1668 {} /* terminator */
1607}; 1669};
1608 1670
@@ -1673,16 +1735,18 @@ static unsigned int ref92hd83xxx_pin_configs[14] = {
1673 1735
1674static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = { 1736static unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = {
1675 [STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs, 1737 [STAC_92HD83XXX_REF] = ref92hd83xxx_pin_configs,
1738 [STAC_92HD83XXX_PWR_REF] = ref92hd83xxx_pin_configs,
1676}; 1739};
1677 1740
1678static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { 1741static const char *stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = {
1679 [STAC_92HD83XXX_REF] = "ref", 1742 [STAC_92HD83XXX_REF] = "ref",
1743 [STAC_92HD83XXX_PWR_REF] = "mic-ref",
1680}; 1744};
1681 1745
1682static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { 1746static struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
1683 /* SigmaTel reference board */ 1747 /* SigmaTel reference board */
1684 SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668, 1748 SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x2668,
1685 "DFI LanParty", STAC_92HD71BXX_REF), 1749 "DFI LanParty", STAC_92HD83XXX_REF),
1686 {} /* terminator */ 1750 {} /* terminator */
1687}; 1751};
1688 1752
@@ -1716,6 +1780,7 @@ static unsigned int *stac92hd71bxx_brd_tbl[STAC_92HD71BXX_MODELS] = {
1716 [STAC_DELL_M4_2] = dell_m4_2_pin_configs, 1780 [STAC_DELL_M4_2] = dell_m4_2_pin_configs,
1717 [STAC_DELL_M4_3] = dell_m4_3_pin_configs, 1781 [STAC_DELL_M4_3] = dell_m4_3_pin_configs,
1718 [STAC_HP_M4] = NULL, 1782 [STAC_HP_M4] = NULL,
1783 [STAC_HP_DV5] = NULL,
1719}; 1784};
1720 1785
1721static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = { 1786static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = {
@@ -1724,6 +1789,7 @@ static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = {
1724 [STAC_DELL_M4_2] = "dell-m4-2", 1789 [STAC_DELL_M4_2] = "dell-m4-2",
1725 [STAC_DELL_M4_3] = "dell-m4-3", 1790 [STAC_DELL_M4_3] = "dell-m4-3",
1726 [STAC_HP_M4] = "hp-m4", 1791 [STAC_HP_M4] = "hp-m4",
1792 [STAC_HP_DV5] = "hp-dv5",
1727}; 1793};
1728 1794
1729static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = { 1795static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
@@ -1734,8 +1800,12 @@ static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
1734 "HP dv5", STAC_HP_M4), 1800 "HP dv5", STAC_HP_M4),
1735 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f4, 1801 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f4,
1736 "HP dv7", STAC_HP_M4), 1802 "HP dv7", STAC_HP_M4),
1803 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f7,
1804 "HP dv4", STAC_HP_DV5),
1737 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fc, 1805 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fc,
1738 "HP dv7", STAC_HP_M4), 1806 "HP dv7", STAC_HP_M4),
1807 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3603,
1808 "HP dv5", STAC_HP_DV5),
1739 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x361a, 1809 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x361a,
1740 "unknown HP", STAC_HP_M4), 1810 "unknown HP", STAC_HP_M4),
1741 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233, 1811 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233,
@@ -3506,13 +3576,12 @@ static int stac92xx_parse_auto_config(struct hda_codec *codec, hda_nid_t dig_out
3506 err = stac92xx_auto_fill_dac_nids(codec); 3576 err = stac92xx_auto_fill_dac_nids(codec);
3507 if (err < 0) 3577 if (err < 0)
3508 return err; 3578 return err;
3579 err = stac92xx_auto_create_multi_out_ctls(codec,
3580 &spec->autocfg);
3581 if (err < 0)
3582 return err;
3509 } 3583 }
3510 3584
3511 err = stac92xx_auto_create_multi_out_ctls(codec, &spec->autocfg);
3512
3513 if (err < 0)
3514 return err;
3515
3516 /* setup analog beep controls */ 3585 /* setup analog beep controls */
3517 if (spec->anabeep_nid > 0) { 3586 if (spec->anabeep_nid > 0) {
3518 err = stac92xx_auto_create_beep_ctls(codec, 3587 err = stac92xx_auto_create_beep_ctls(codec,
@@ -4163,8 +4232,19 @@ static void stac92xx_hp_detect(struct hda_codec *codec)
4163 continue; 4232 continue;
4164 if (presence) 4233 if (presence)
4165 stac92xx_set_pinctl(codec, cfg->hp_pins[i], val); 4234 stac92xx_set_pinctl(codec, cfg->hp_pins[i], val);
4235#if 0 /* FIXME */
4236/* Resetting the pinctl like below may lead to (a sort of) regressions
4237 * on some devices since they use the HP pin actually for line/speaker
4238 * outs although the default pin config shows a different pin (that is
4239 * wrong and useless).
4240 *
4241 * So, it's basically a problem of default pin configs, likely a BIOS issue.
4242 * But, disabling the code below just works around it, and I'm too tired of
4243 * bug reports with such devices...
4244 */
4166 else 4245 else
4167 stac92xx_reset_pinctl(codec, cfg->hp_pins[i], val); 4246 stac92xx_reset_pinctl(codec, cfg->hp_pins[i], val);
4247#endif /* FIXME */
4168 } 4248 }
4169} 4249}
4170 4250
@@ -4390,7 +4470,8 @@ static int patch_stac9200(struct hda_codec *codec)
4390 spec->num_adcs = 1; 4470 spec->num_adcs = 1;
4391 spec->num_pwrs = 0; 4471 spec->num_pwrs = 0;
4392 4472
4393 if (spec->board_config == STAC_9200_GATEWAY || 4473 if (spec->board_config == STAC_9200_M4 ||
4474 spec->board_config == STAC_9200_M4_2 ||
4394 spec->board_config == STAC_9200_OQO) 4475 spec->board_config == STAC_9200_OQO)
4395 spec->init = stac9200_eapd_init; 4476 spec->init = stac9200_eapd_init;
4396 else 4477 else
@@ -4408,6 +4489,12 @@ static int patch_stac9200(struct hda_codec *codec)
4408 return err; 4489 return err;
4409 } 4490 }
4410 4491
4492 /* CF-74 has no headphone detection, and the driver should *NOT*
4493 * do detection and HP/speaker toggle because the hardware does it.
4494 */
4495 if (spec->board_config == STAC_9200_PANASONIC)
4496 spec->hp_detect = 0;
4497
4411 codec->patch_ops = stac92xx_patch_ops; 4498 codec->patch_ops = stac92xx_patch_ops;
4412 4499
4413 return 0; 4500 return 0;
@@ -4425,12 +4512,22 @@ static int patch_stac925x(struct hda_codec *codec)
4425 codec->spec = spec; 4512 codec->spec = spec;
4426 spec->num_pins = ARRAY_SIZE(stac925x_pin_nids); 4513 spec->num_pins = ARRAY_SIZE(stac925x_pin_nids);
4427 spec->pin_nids = stac925x_pin_nids; 4514 spec->pin_nids = stac925x_pin_nids;
4428 spec->board_config = snd_hda_check_board_config(codec, STAC_925x_MODELS, 4515
4516 /* Check first for codec ID */
4517 spec->board_config = snd_hda_check_board_codec_sid_config(codec,
4518 STAC_925x_MODELS,
4519 stac925x_models,
4520 stac925x_codec_id_cfg_tbl);
4521
4522 /* Now checks for PCI ID, if codec ID is not found */
4523 if (spec->board_config < 0)
4524 spec->board_config = snd_hda_check_board_config(codec,
4525 STAC_925x_MODELS,
4429 stac925x_models, 4526 stac925x_models,
4430 stac925x_cfg_tbl); 4527 stac925x_cfg_tbl);
4431 again: 4528 again:
4432 if (spec->board_config < 0) { 4529 if (spec->board_config < 0) {
4433 snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x," 4530 snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC925x,"
4434 "using BIOS defaults\n"); 4531 "using BIOS defaults\n");
4435 err = stac92xx_save_bios_config_regs(codec); 4532 err = stac92xx_save_bios_config_regs(codec);
4436 } else 4533 } else
@@ -4658,7 +4755,9 @@ static struct hda_input_mux stac92hd83xxx_dmux = {
4658static int patch_stac92hd83xxx(struct hda_codec *codec) 4755static int patch_stac92hd83xxx(struct hda_codec *codec)
4659{ 4756{
4660 struct sigmatel_spec *spec; 4757 struct sigmatel_spec *spec;
4758 hda_nid_t conn[STAC92HD83_DAC_COUNT + 1];
4661 int err; 4759 int err;
4760 int num_dacs;
4662 4761
4663 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 4762 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
4664 if (spec == NULL) 4763 if (spec == NULL)
@@ -4672,23 +4771,26 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
4672 spec->dmux_nids = stac92hd83xxx_dmux_nids; 4771 spec->dmux_nids = stac92hd83xxx_dmux_nids;
4673 spec->adc_nids = stac92hd83xxx_adc_nids; 4772 spec->adc_nids = stac92hd83xxx_adc_nids;
4674 spec->pwr_nids = stac92hd83xxx_pwr_nids; 4773 spec->pwr_nids = stac92hd83xxx_pwr_nids;
4774 spec->amp_nids = stac92hd83xxx_amp_nids;
4675 spec->pwr_mapping = stac92hd83xxx_pwr_mapping; 4775 spec->pwr_mapping = stac92hd83xxx_pwr_mapping;
4676 spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids); 4776 spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids);
4677 spec->multiout.dac_nids = spec->dac_nids; 4777 spec->multiout.dac_nids = spec->dac_nids;
4678 4778
4679 spec->init = stac92hd83xxx_core_init;
4680 switch (codec->vendor_id) {
4681 case 0x111d7605:
4682 break;
4683 default:
4684 spec->num_pwrs--;
4685 spec->init++; /* switch to config #2 */
4686 }
4687 4779
4780 /* set port 0xe to select the last DAC
4781 */
4782 num_dacs = snd_hda_get_connections(codec, 0x0e,
4783 conn, STAC92HD83_DAC_COUNT + 1) - 1;
4784
4785 snd_hda_codec_write_cache(codec, 0xe, 0,
4786 AC_VERB_SET_CONNECT_SEL, num_dacs);
4787
4788 spec->init = stac92hd83xxx_core_init;
4688 spec->mixer = stac92hd83xxx_mixer; 4789 spec->mixer = stac92hd83xxx_mixer;
4689 spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids); 4790 spec->num_pins = ARRAY_SIZE(stac92hd83xxx_pin_nids);
4690 spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids); 4791 spec->num_dmuxes = ARRAY_SIZE(stac92hd83xxx_dmux_nids);
4691 spec->num_adcs = ARRAY_SIZE(stac92hd83xxx_adc_nids); 4792 spec->num_adcs = ARRAY_SIZE(stac92hd83xxx_adc_nids);
4793 spec->num_amps = ARRAY_SIZE(stac92hd83xxx_amp_nids);
4692 spec->num_dmics = STAC92HD83XXX_NUM_DMICS; 4794 spec->num_dmics = STAC92HD83XXX_NUM_DMICS;
4693 spec->dinput_mux = &stac92hd83xxx_dmux; 4795 spec->dinput_mux = &stac92hd83xxx_dmux;
4694 spec->pin_nids = stac92hd83xxx_pin_nids; 4796 spec->pin_nids = stac92hd83xxx_pin_nids;
@@ -4709,6 +4811,15 @@ again:
4709 return err; 4811 return err;
4710 } 4812 }
4711 4813
4814 switch (codec->vendor_id) {
4815 case 0x111d7604:
4816 case 0x111d7605:
4817 if (spec->board_config == STAC_92HD83XXX_PWR_REF)
4818 break;
4819 spec->num_pwrs = 0;
4820 break;
4821 }
4822
4712 err = stac92xx_parse_auto_config(codec, 0x1d, 0); 4823 err = stac92xx_parse_auto_config(codec, 0x1d, 0);
4713 if (!err) { 4824 if (!err) {
4714 if (spec->board_config < 0) { 4825 if (spec->board_config < 0) {
diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c
index 98c6a8c65d81..18c7c91786bc 100644
--- a/sound/pci/oxygen/virtuoso.c
+++ b/sound/pci/oxygen/virtuoso.c
@@ -26,7 +26,7 @@
26 * SPI 0 -> 1st PCM1796 (front) 26 * SPI 0 -> 1st PCM1796 (front)
27 * SPI 1 -> 2nd PCM1796 (surround) 27 * SPI 1 -> 2nd PCM1796 (surround)
28 * SPI 2 -> 3rd PCM1796 (center/LFE) 28 * SPI 2 -> 3rd PCM1796 (center/LFE)
29 * SPI 4 -> 4th PCM1796 (back) 29 * SPI 4 -> 4th PCM1796 (back) and EEPROM self-destruct (do not use!)
30 * 30 *
31 * GPIO 2 -> M0 of CS5381 31 * GPIO 2 -> M0 of CS5381
32 * GPIO 3 -> M1 of CS5381 32 * GPIO 3 -> M1 of CS5381
@@ -207,6 +207,12 @@ static void xonar_gpio_changed(struct oxygen *chip);
207static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec, 207static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec,
208 u8 reg, u8 value) 208 u8 reg, u8 value)
209{ 209{
210 /*
211 * We don't want to do writes on SPI 4 because the EEPROM, which shares
212 * the same pin, might get confused and broken. We'd better take care
213 * that the driver works with the default register values ...
214 */
215#if 0
210 /* maps ALSA channel pair number to SPI output */ 216 /* maps ALSA channel pair number to SPI output */
211 static const u8 codec_map[4] = { 217 static const u8 codec_map[4] = {
212 0, 1, 2, 4 218 0, 1, 2, 4
@@ -217,6 +223,7 @@ static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec,
217 (codec_map[codec] << OXYGEN_SPI_CODEC_SHIFT) | 223 (codec_map[codec] << OXYGEN_SPI_CODEC_SHIFT) |
218 OXYGEN_SPI_CEN_LATCH_CLOCK_HI, 224 OXYGEN_SPI_CEN_LATCH_CLOCK_HI,
219 (reg << 8) | value); 225 (reg << 8) | value);
226#endif
220} 227}
221 228
222static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec, 229static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec,
@@ -676,7 +683,7 @@ static void xonar_hdav_uart_input(struct oxygen *chip)
676 if (chip->uart_input_count >= 2 && 683 if (chip->uart_input_count >= 2 &&
677 chip->uart_input[chip->uart_input_count - 2] == 'O' && 684 chip->uart_input[chip->uart_input_count - 2] == 'O' &&
678 chip->uart_input[chip->uart_input_count - 1] == 'K') { 685 chip->uart_input[chip->uart_input_count - 1] == 'K') {
679 printk(KERN_DEBUG "message from Xonar HDAV HDMI chip received:"); 686 printk(KERN_DEBUG "message from Xonar HDAV HDMI chip received:\n");
680 print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, 687 print_hex_dump_bytes("", DUMP_PREFIX_OFFSET,
681 chip->uart_input, chip->uart_input_count); 688 chip->uart_input, chip->uart_input_count);
682 chip->uart_input_count = 0; 689 chip->uart_input_count = 0;
@@ -750,6 +757,9 @@ static const DECLARE_TLV_DB_SCALE(cs4362a_db_scale, -12700, 100, 0);
750 757
751static int xonar_d2_control_filter(struct snd_kcontrol_new *template) 758static int xonar_d2_control_filter(struct snd_kcontrol_new *template)
752{ 759{
760 if (!strncmp(template->name, "Master Playback ", 16))
761 /* disable volume/mute because they would require SPI writes */
762 return 1;
753 if (!strncmp(template->name, "CD Capture ", 11)) 763 if (!strncmp(template->name, "CD Capture ", 11))
754 /* CD in is actually connected to the video in pin */ 764 /* CD in is actually connected to the video in pin */
755 template->private_value ^= AC97_CD ^ AC97_VIDEO; 765 template->private_value ^= AC97_CD ^ AC97_VIDEO;
@@ -840,9 +850,8 @@ static const struct oxygen_model model_xonar_d2 = {
840 .dac_volume_min = 0x0f, 850 .dac_volume_min = 0x0f,
841 .dac_volume_max = 0xff, 851 .dac_volume_max = 0xff,
842 .misc_flags = OXYGEN_MISC_MIDI, 852 .misc_flags = OXYGEN_MISC_MIDI,
843 .function_flags = OXYGEN_FUNCTION_SPI | 853 .function_flags = OXYGEN_FUNCTION_SPI,
844 OXYGEN_FUNCTION_ENABLE_SPI_4_5, 854 .dac_i2s_format = OXYGEN_I2S_FORMAT_I2S,
845 .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
846 .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, 855 .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
847}; 856};
848 857
@@ -899,6 +908,7 @@ static const struct oxygen_model model_xonar_hdav = {
899 .dac_channels = 8, 908 .dac_channels = 8,
900 .dac_volume_min = 0x0f, 909 .dac_volume_min = 0x0f,
901 .dac_volume_max = 0xff, 910 .dac_volume_max = 0xff,
911 .misc_flags = OXYGEN_MISC_MIDI,
902 .function_flags = OXYGEN_FUNCTION_2WIRE, 912 .function_flags = OXYGEN_FUNCTION_2WIRE,
903 .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST, 913 .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
904 .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, 914 .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
diff --git a/sound/ppc/snd_ps3.c b/sound/ppc/snd_ps3.c
index 8f9e3859c37c..ff321110ec02 100644
--- a/sound/ppc/snd_ps3.c
+++ b/sound/ppc/snd_ps3.c
@@ -477,7 +477,7 @@ static int snd_ps3_pcm_prepare(struct snd_pcm_substream *substream)
477 card->dma_start_bus_addr[SND_PS3_CH_R] = 477 card->dma_start_bus_addr[SND_PS3_CH_R] =
478 runtime->dma_addr + (runtime->dma_bytes / 2); 478 runtime->dma_addr + (runtime->dma_bytes / 2);
479 479
480 pr_debug("%s: vaddr=%p bus=%#lx\n", __func__, 480 pr_debug("%s: vaddr=%p bus=%#llx\n", __func__,
481 card->dma_start_vaddr[SND_PS3_CH_L], 481 card->dma_start_vaddr[SND_PS3_CH_L],
482 card->dma_start_bus_addr[SND_PS3_CH_L]); 482 card->dma_start_bus_addr[SND_PS3_CH_L]);
483 483
@@ -1030,7 +1030,7 @@ static int __init snd_ps3_driver_probe(struct ps3_system_bus_device *dev)
1030 pr_info("%s: nullbuffer alloc failed\n", __func__); 1030 pr_info("%s: nullbuffer alloc failed\n", __func__);
1031 goto clean_preallocate; 1031 goto clean_preallocate;
1032 } 1032 }
1033 pr_debug("%s: null vaddr=%p dma=%#lx\n", __func__, 1033 pr_debug("%s: null vaddr=%p dma=%#llx\n", __func__,
1034 the_card.null_buffer_start_vaddr, 1034 the_card.null_buffer_start_vaddr,
1035 the_card.null_buffer_start_dma_addr); 1035 the_card.null_buffer_start_dma_addr);
1036 /* set default sample rate/word width */ 1036 /* set default sample rate/word width */
diff --git a/sound/soc/atmel/atmel-pcm.c b/sound/soc/atmel/atmel-pcm.c
index 1fac5efd285b..3dcdc4e3cfa0 100644
--- a/sound/soc/atmel/atmel-pcm.c
+++ b/sound/soc/atmel/atmel-pcm.c
@@ -44,8 +44,6 @@
44#include <sound/pcm_params.h> 44#include <sound/pcm_params.h>
45#include <sound/soc.h> 45#include <sound/soc.h>
46 46
47#include <mach/hardware.h>
48
49#include "atmel-pcm.h" 47#include "atmel-pcm.h"
50 48
51 49
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c
index bcec3f60bad9..acf39a646b2f 100644
--- a/sound/soc/fsl/mpc8610_hpcd.c
+++ b/sound/soc/fsl/mpc8610_hpcd.c
@@ -183,16 +183,6 @@ static struct snd_soc_ops mpc8610_hpcd_ops = {
183}; 183};
184 184
185/** 185/**
186 * mpc8610_hpcd_machine: ASoC machine data
187 */
188static struct snd_soc_card mpc8610_hpcd_machine = {
189 .probe = mpc8610_hpcd_machine_probe,
190 .remove = mpc8610_hpcd_machine_remove,
191 .name = "MPC8610 HPCD",
192 .num_links = 1,
193};
194
195/**
196 * mpc8610_hpcd_probe: OF probe function for the fabric driver 186 * mpc8610_hpcd_probe: OF probe function for the fabric driver
197 * 187 *
198 * This function gets called when an SSI node is found in the device tree. 188 * This function gets called when an SSI node is found in the device tree.
@@ -455,7 +445,11 @@ static int mpc8610_hpcd_probe(struct of_device *ofdev,
455 machine_data->dai.codec_dai = &cs4270_dai; /* The codec_dai we want */ 445 machine_data->dai.codec_dai = &cs4270_dai; /* The codec_dai we want */
456 machine_data->dai.ops = &mpc8610_hpcd_ops; 446 machine_data->dai.ops = &mpc8610_hpcd_ops;
457 447
458 mpc8610_hpcd_machine.dai_link = &machine_data->dai; 448 machine_data->machine.probe = mpc8610_hpcd_machine_probe;
449 machine_data->machine.remove = mpc8610_hpcd_machine_remove;
450 machine_data->machine.name = "MPC8610 HPCD";
451 machine_data->machine.num_links = 1;
452 machine_data->machine.dai_link = &machine_data->dai;
459 453
460 /* Allocate a new audio platform device structure */ 454 /* Allocate a new audio platform device structure */
461 sound_device = platform_device_alloc("soc-audio", -1); 455 sound_device = platform_device_alloc("soc-audio", -1);
@@ -465,7 +459,7 @@ static int mpc8610_hpcd_probe(struct of_device *ofdev,
465 goto error; 459 goto error;
466 } 460 }
467 461
468 machine_data->sound_devdata.card = &mpc8610_hpcd_machine; 462 machine_data->sound_devdata.card = &machine_data->machine;
469 machine_data->sound_devdata.codec_dev = &soc_codec_device_cs4270; 463 machine_data->sound_devdata.codec_dev = &soc_codec_device_cs4270;
470 machine_data->machine.platform = &fsl_soc_platform; 464 machine_data->machine.platform = &fsl_soc_platform;
471 465
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 493a4e8aa273..a2f1da8b4646 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -720,7 +720,8 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
720 struct snd_soc_dapm_path *path; 720 struct snd_soc_dapm_path *path;
721 int found = 0; 721 int found = 0;
722 722
723 if (widget->id != snd_soc_dapm_mux) 723 if (widget->id != snd_soc_dapm_mux &&
724 widget->id != snd_soc_dapm_value_mux)
724 return -ENODEV; 725 return -ENODEV;
725 726
726 if (!snd_soc_test_bits(widget->codec, e->reg, mask, val)) 727 if (!snd_soc_test_bits(widget->codec, e->reg, mask, val))
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h
index 92115755d98e..5d8ef09b9dcc 100644
--- a/sound/usb/usbquirks.h
+++ b/sound/usb/usbquirks.h
@@ -128,6 +128,14 @@
128 .bInterfaceClass = USB_CLASS_AUDIO, 128 .bInterfaceClass = USB_CLASS_AUDIO,
129 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL 129 .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL
130}, 130},
131{
132 USB_DEVICE(0x046d, 0x0990),
133 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
134 .vendor_name = "Logitech, Inc.",
135 .product_name = "QuickCam Pro 9000",
136 .ifnum = QUIRK_NO_INTERFACE
137 }
138},
131 139
132/* 140/*
133 * Yamaha devices 141 * Yamaha devices